blob: 6b6957a6ee57609a2e2e9bcfb46195a060f5e8fa [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.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;
}
};
}
}