| //------------------------------------------------------------------------------ |
| // Copyright (c) 2005, 2006 IBM Corporation 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: |
| // IBM Corporation - initial implementation |
| //------------------------------------------------------------------------------ |
| package org.eclipse.epf.library.edit.process.command; |
| |
| import java.util.ArrayList; |
| import java.util.Collection; |
| import java.util.Collections; |
| import java.util.HashSet; |
| import java.util.Iterator; |
| import java.util.List; |
| |
| import org.eclipse.emf.common.command.AbstractCommand; |
| import org.eclipse.emf.ecore.EObject; |
| import org.eclipse.epf.library.edit.IConfigurator; |
| import org.eclipse.epf.library.edit.command.IResourceAwareCommand; |
| import org.eclipse.epf.library.edit.ui.UserInteractionHelper; |
| import org.eclipse.epf.library.edit.util.ProcessUtil; |
| import org.eclipse.epf.uma.MethodConfiguration; |
| import org.eclipse.epf.uma.MethodPackage; |
| import org.eclipse.epf.uma.MethodPlugin; |
| import org.eclipse.epf.uma.Process; |
| |
| |
| /** |
| * Base Command for add method elements to descriptor. |
| * |
| * @author Shilpa Toraskar |
| * @since 1.0 |
| */ |
| public class AddMethodElementCommand extends AbstractCommand implements |
| IResourceAwareCommand { |
| |
| protected List elementsToAddToDefaultConfig; |
| |
| private HashSet addedObjects; |
| |
| private Process process; |
| |
| public AddMethodElementCommand(Process process) { |
| super(); |
| |
| this.process = process; |
| } |
| |
| /** |
| * Checks and adds elements to the default configuration |
| * |
| * @return false if user canceled the operation |
| */ |
| protected boolean addToDefaultConfiguration(List elements) |
| { |
| return addToDefaultConfiguration(elements, null); |
| } |
| |
| |
| /** |
| * Checks and adds elements to the default configuration |
| * |
| * @return false if user canceled the operation |
| */ |
| protected boolean addToDefaultConfiguration(List elements, IConfigurator configurator) { |
| if (elementsToAddToDefaultConfig == null) { |
| elementsToAddToDefaultConfig = new ArrayList(); |
| for (Iterator iter = elements.iterator(); iter.hasNext();) { |
| Object element = iter.next(); |
| |
| switch (UserInteractionHelper.checkAgainstDefaultConfiguration( |
| process, element, configurator)) { |
| case 0: |
| iter.remove(); |
| break; |
| case 2: |
| elementsToAddToDefaultConfig.add(element); |
| break; |
| case -1: |
| return false; |
| } |
| } |
| if (!elementsToAddToDefaultConfig.isEmpty()) { |
| addedObjects = new HashSet(); |
| for (Iterator iter = elementsToAddToDefaultConfig.iterator(); iter |
| .hasNext();) { |
| EObject element = (EObject) iter.next(); |
| ProcessUtil.addToDefaultConfiguration(process, element, |
| addedObjects); |
| } |
| if (!addedObjects.isEmpty()) { |
| getModifiedResources().add( |
| process.getDefaultContext().eResource()); |
| } |
| |
| } |
| } |
| return true; |
| } |
| |
| public void execute() { |
| |
| } |
| |
| public void redo() { |
| |
| } |
| |
| public void undo() { |
| if (addedObjects != null && !addedObjects.isEmpty()) { |
| MethodConfiguration defaultConfig = process.getDefaultContext(); |
| for (Iterator iter = addedObjects.iterator(); iter.hasNext();) { |
| Object element = iter.next(); |
| if (element instanceof MethodPlugin) { |
| defaultConfig.getMethodPluginSelection().remove(element); |
| } else if (element instanceof MethodPackage) { |
| defaultConfig.getMethodPackageSelection().remove(element); |
| } |
| } |
| } |
| } |
| |
| public Collection getModifiedResources() { |
| return Collections.EMPTY_LIST; |
| } |
| } |