blob: b3fdb254d48623dbe50c6706eec1f8cc3792bb0f [file] [log] [blame]
//------------------------------------------------------------------------------
// 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;
import java.util.Collection;
import java.util.List;
import org.eclipse.emf.common.command.Command;
import org.eclipse.emf.common.notify.AdapterFactory;
import org.eclipse.emf.common.notify.Notification;
import org.eclipse.emf.edit.domain.EditingDomain;
import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
import org.eclipse.emf.edit.provider.IWrapperItemProvider;
import org.eclipse.epf.library.edit.command.IResourceAwareCommand;
import org.eclipse.epf.library.edit.process.command.WBSDragAndDropCommand;
import org.eclipse.epf.library.edit.process.command.WBSDropCommand;
import org.eclipse.epf.library.edit.util.ExposedAdapterFactory;
import org.eclipse.epf.library.edit.util.ProcessUtil;
import com.ibm.uma.Activity;
import com.ibm.uma.Descriptor;
import com.ibm.uma.Milestone;
import com.ibm.uma.Process;
import com.ibm.uma.TaskDescriptor;
import com.ibm.uma.UmaFactory;
import com.ibm.uma.UmaPackage;
/**
* @author Phong Nguyen Le
* @since 1.0
*/
public class WBSActivityItemProvider extends BSActivityItemProvider {
/**
* @param adapterFactory
*/
public WBSActivityItemProvider(AdapterFactory adapterFactory) {
super(adapterFactory);
}
/*
* (non-Javadoc)
*
* @see com.ibm.library.edit.process.BSActivityItemProvider#collectNewChildDescriptors(java.util.Collection,
* java.lang.Object)
*/
protected void collectNewChildDescriptors(Collection newChildDescriptors,
Object object) {
// Activity act = (Activity) object;
// if(hasChildDescriptor(act)) {
// newChildDescriptors.add
// (createChildParameter
// (UmaPackage.eINSTANCE.getActivity_BreakdownElements(),
// UmaFactory.eINSTANCE.createTaskDescriptor()));
// }
// else {
newChildDescriptors.add(createChildParameter(UmaPackage.eINSTANCE
.getActivity_BreakdownElements(), UmaFactory.eINSTANCE
.createPhase()));
newChildDescriptors.add(createChildParameter(UmaPackage.eINSTANCE
.getActivity_BreakdownElements(), UmaFactory.eINSTANCE
.createIteration()));
newChildDescriptors.add(createChildParameter(UmaPackage.eINSTANCE
.getActivity_BreakdownElements(), UmaFactory.eINSTANCE
.createActivity()));
// if(act.getBreakdownElements().isEmpty()) {
newChildDescriptors.add(createChildParameter(UmaPackage.eINSTANCE
.getActivity_BreakdownElements(), UmaFactory.eINSTANCE
.createTaskDescriptor()));
// }
// }
newChildDescriptors.add(createChildParameter(UmaPackage.eINSTANCE
.getActivity_BreakdownElements(), UmaFactory.eINSTANCE
.createMilestone()));
}
/*
* (non-Javadoc)
*
* @see com.ibm.uma.tng.process.BSActivityItemProvider#acceptAsChild(java.lang.Object)
*/
protected boolean acceptAsChild(Object child) {
if (!super.acceptAsChild(child))
return false;
// if(isRolledUp()) {
// return child instanceof TaskDescriptor;
// }
return child instanceof Activity || child instanceof TaskDescriptor
|| child instanceof Milestone;
}
// /* (non-Javadoc)
// * @see
// com.ibm.library.edit.process.BSActivityItemProvider#getChildren(java.lang.Object)
// */
// public Collection getChildren(Object object) {
// Object parent = getParent(object);
// if(parent instanceof Activity) {
// Activity act = (Activity) parent;
// Object baseAct = act.getVariabilityBasedOnElement();
// if(baseAct instanceof Activity) {
// VariabilityType extendType = act.getVariabilityType();
// if(extendType == VariabilityType.EXTENDS_LITERAL) {
// ItemProviderAdapter adapter = (ItemProviderAdapter)
// TngUtil.getBestAdapterFactory(adapterFactory).adapt(baseAct,
// ITreeItemContentProvider.class);
// return adapter.getChildren(baseAct);
// }
// else {
// Collection myChildren = super.getChildren(object);
// if(extendType == VariabilityType.REPLACES_LITERAL) {
// return myChildren;
// }
// else if(extendType == VariabilityType.CONTRIBUTES_LITERAL) {
// ItemProviderAdapter adapter = (ItemProviderAdapter)
// TngUtil.getBestAdapterFactory(adapterFactory).adapt(baseAct,
// ITreeItemContentProvider.class);
// ArrayList allChildren = new ArrayList(adapter.getChildren(baseAct));
// // go thru own children list and insert it to the combined child list at
// the right place.
// //
// for (Iterator iter = myChildren.iterator(); iter
// .hasNext();) {
// BreakdownElement element = (BreakdownElement) iter.next();
// addTo(allChildren, element);
// }
// return allChildren;
// }
// }
// }
// }
//
// return super.getChildren(object);
// }
/*
* (non-Javadoc)
*
* @see com.ibm.library.edit.process.BSActivityItemProvider#getObject(com.ibm.uma.Descriptor)
*/
protected Object getObject(Descriptor descriptor) {
return ((TaskDescriptor) descriptor).getTask();
}
protected Command createDragAndDropCommand(EditingDomain domain,
Object owner, float location, int operations, int operation,
Collection collection) {
// System.out.println("ENTER:
// com.ibm.library.edit.process.WBSActivityItemProvider#createDragAndDropCommand(domain,
// owner, location, operations, operation, collection)");
Command cmd = new WBSDragAndDropCommand(domain, owner, location,
operations, operation, collection);
// System.out.println(" can execute: " + cmd.canExecute());
// System.out.println(" owner: " + owner);
// System.out.println(" collection: " + collection);
// System.out.println(" location: " + location);
// System.out.println(" operations: " + operations);
// System.out.println(" operation: " + operation);
//
// System.out
// .println("EXIT:
// com.ibm.library.edit.process.WBSActivityItemProvider#createDragAndDropCommand(domain,
// owner, location, operations, operation, collection)");
return cmd;
}
/*
* (non-Javadoc)
*
* @see com.ibm.library.edit.process.BSActivityItemProvider#createDropCommand(java.lang.Object,
* java.util.List)
*/
public IResourceAwareCommand createDropCommand(Object owner,
List dropElements) {
return new WBSDropCommand((Activity) owner, dropElements);
}
/*
* (non-Javadoc)
*
* @see com.ibm.library.edit.process.BSActivityItemProvider#acceptAsRolledUpChild(java.lang.Object)
*/
protected boolean acceptAsRolledUpChild(Object child) {
if (!super.acceptAsRolledUpChild(child))
return false;
Object obj;
if (child instanceof IWrapperItemProvider) {
obj = ((IWrapperItemProvider) child).getValue();
} else {
obj = child;
}
return obj instanceof TaskDescriptor;
}
// /* (non-Javadoc)
// * @see
// com.ibm.library.edit.process.BSActivityItemProvider#getColumnImage(java.lang.Object,
// int)
// */
// public Object getColumnImage(Object object, int columnIndex) {
// BreakdownElement e = (BreakdownElement)object;
// String property = (String) columnIndexToNameMap.get(new
// Integer(columnIndex));
// Boolean b = null;
// if(property == IBSItemProvider.COL_IS_EVENT_DRIVEN) {
// b = e.getIsEventDriven();
// }
// else if(property == IBSItemProvider.COL_IS_ONGOING) {
// b = e.getIsOngoing();
// }
// else if(property == IBSItemProvider.COL_IS_REPEATABLE) {
// b = e.getIsRepeatable();
// }
// if(b != null) {
// if(b.booleanValue()) {
// return TngEditPlugin.INSTANCE.getImage("checked_box");
// }
// else {
// return TngEditPlugin.INSTANCE.getImage("unchecked_box");
// }
// }
// return super.getColumnImage(object, columnIndex);
// }
public Collection getEClasses() {
return ProcessUtil.getWBSEclasses();
}
/*
* (non-Javadoc)
*
* @see com.ibm.library.edit.process.BSActivityItemProvider#refreshChildrenData(org.eclipse.emf.common.notify.Notification,
* java.util.List)
*/
protected boolean refreshChildrenData(Notification notification,
List affectedChildren) {
// recalculate the IDs of breakdown elements and refresh them
//
Process topAct = (Process) getTopItem();
AdapterFactory rootAdapterFactory = getRootAdapterFactory();
ProcessUtil.updateIDs(rootAdapterFactory, topAct);
return true;
}
/*
* (non-Javadoc)
*
* @see com.ibm.library.edit.process.BSActivityItemProvider#doRefreshAffectedViewers()
*/
protected void doRefreshAffectedViewers() {
Object proc = getTopItem();
Object itemProvider = adapterFactory.adapt(proc,
ITreeItemContentProvider.class);
if (itemProvider instanceof BSActivityItemProvider) {
((BSActivityItemProvider) itemProvider)
.setRefreshAllIDsRequired(true);
}
ProcessUtil
.refreshIDsInViewers((ExposedAdapterFactory) getRootAdapterFactory());
}
}