| /******************************************************************************* |
| * Copyright (c) 2011, 2015 THALES GLOBAL SERVICES and others |
| * All rights reserved. This program and the accompanying materials |
| * are made available under the terms of the Eclipse Public License v1.0 |
| * which accompanies this distribution, and is available at |
| * http://www.eclipse.org/legal/epl-v10.html |
| * |
| * Contributors: |
| * Obeo - initial API and implementation |
| *******************************************************************************/ |
| package org.eclipse.sirius.tree.business.api.command; |
| |
| import java.text.MessageFormat; |
| |
| import org.eclipse.core.runtime.IProgressMonitor; |
| import org.eclipse.core.runtime.NullProgressMonitor; |
| import org.eclipse.emf.transaction.RecordingCommand; |
| import org.eclipse.emf.transaction.TransactionalEditingDomain; |
| import org.eclipse.sirius.tree.DTreeItem; |
| import org.eclipse.sirius.tree.business.api.interaction.DTreeItemUserInteraction; |
| import org.eclipse.sirius.tree.business.internal.dialect.common.viewpoint.GlobalContext; |
| import org.eclipse.sirius.tree.tools.internal.Messages; |
| |
| /** |
| * EMF Command to expand/collapse a {@link DTreeItem}. |
| * |
| * @author <a href="mailto:esteban.dugueperoux@obeo.fr">Esteban Dugueperoux</a> |
| */ |
| public class DTreeItemExpansionChangeCommand extends RecordingCommand { |
| |
| private GlobalContext globalContext; |
| |
| private DTreeItem dTreeItem; |
| |
| private boolean expand; |
| |
| private IProgressMonitor monitor; |
| |
| /** |
| * Default constructor. |
| * |
| * @param globalContext |
| * the {@link GlobalContext} to synchronize the model. |
| * @param domain |
| * the {@link TransactionalEditingDomain} on which execute this |
| * command |
| * @param dTreeItem |
| * the {@link DTreeItem} to expand/collapse |
| * @param expand |
| * true to expand, false to collapse |
| */ |
| public DTreeItemExpansionChangeCommand(GlobalContext globalContext, TransactionalEditingDomain domain, DTreeItem dTreeItem, boolean expand) { |
| super(domain, MessageFormat.format(expand ? Messages.DTreeItemExpansionChangeCommand_expandItem : Messages.DTreeItemExpansionChangeCommand_collapseItem, dTreeItem.getName())); |
| this.globalContext = globalContext; |
| this.dTreeItem = dTreeItem; |
| this.expand = expand; |
| this.monitor = new NullProgressMonitor(); |
| } |
| |
| /** |
| * Default constructor. |
| * |
| * @param globalContext |
| * the {@link GlobalContext} to synchronize the model. |
| * @param domain |
| * the {@link TransactionalEditingDomain} on which execute this |
| * command |
| * @param dTreeItem |
| * the {@link DTreeItem} to expand/collapse |
| * @param expand |
| * true to expand, false to collapse |
| * @param monitor |
| * a {@link IProgressMonitor} to give progression |
| */ |
| public DTreeItemExpansionChangeCommand(GlobalContext globalContext, TransactionalEditingDomain domain, DTreeItem dTreeItem, IProgressMonitor monitor, boolean expand) { |
| super(domain, MessageFormat.format(expand ? Messages.DTreeItemExpansionChangeCommand_expandItem : Messages.DTreeItemExpansionChangeCommand_collapseItem, dTreeItem.getName())); |
| this.globalContext = globalContext; |
| this.dTreeItem = dTreeItem; |
| this.expand = expand; |
| this.monitor = monitor; |
| } |
| |
| @Override |
| protected void doExecute() { |
| if (expand) { |
| new DTreeItemUserInteraction(dTreeItem, globalContext).expand(monitor); |
| } else { |
| new DTreeItemUserInteraction(dTreeItem, globalContext).collapse(monitor); |
| } |
| } |
| } |