//------------------------------------------------------------------------------ // 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.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 org.eclipse.epf.library.edit.util.TngUtil; import org.eclipse.epf.uma.Activity; import org.eclipse.epf.uma.Descriptor; import org.eclipse.epf.uma.Milestone; import org.eclipse.epf.uma.Process; import org.eclipse.epf.uma.TaskDescriptor; import org.eclipse.epf.uma.UmaFactory; import org.eclipse.epf.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) { 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())); newChildDescriptors.add(createChildParameter(UmaPackage.eINSTANCE .getActivity_BreakdownElements(), UmaFactory.eINSTANCE .createTaskDescriptor())); newChildDescriptors.add(createChildParameter(UmaPackage.eINSTANCE .getActivity_BreakdownElements(), UmaFactory.eINSTANCE .createMilestone())); } /* * (non-Javadoc) * * @see org.eclipse.epf.uma.tng.process.BSActivityItemProvider#acceptAsChild(java.lang.Object) */ protected boolean acceptAsChild(Object child) { child = TngUtil.unwrap(child); if(child instanceof Activity || child instanceof TaskDescriptor || child instanceof Milestone) { return super.acceptAsChild(child); } return false; } /* * (non-Javadoc) * * @see com.ibm.library.edit.process.BSActivityItemProvider#getObject(org.eclipse.epf.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) { Object obj = TngUtil.unwrap(child); if(obj instanceof TaskDescriptor) { return super.acceptAsRolledUpChild(obj); } return false; } // /* (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()); } /* (non-Javadoc) * @see org.eclipse.epf.library.edit.process.BSActivityItemProvider#getChildren(java.lang.Object) */ public Collection getChildren(Object object) { Collection children = super.getChildren(object); updateCachedChildren(children); return children; } @Override protected boolean isWrappingRollupNeeded(Object object) { if(TngUtil.unwrap(object) instanceof TaskDescriptor) { return true; } return super.isWrappingRollupNeeded(object); } @Override protected Object createRollupWrapper(Object object, Object owner, AdapterFactory adapterFactory) { Object wrapper = super.createRollupWrapper(object, owner, adapterFactory); return new TaskDescriptorWrapperItemProvider(wrapper, owner, adapterFactory); } @Override protected ComposedBreakdownElementWrapperItemProvider createComposedWrapper(Object object, Object owner, AdapterFactory adapterFactory) { return new ComposedBreakdownElementWrapperItemProvider(object, owner, adapterFactory) { @Override protected boolean canMerge(String property) { return property == IBSItemProvider.COL_ID || property == IBSItemProvider.COL_PREDECESSORS || property == IBSItemProvider.COL_MODEL_INFO; } }; } }