blob: 0ead8171a674cbf3e0017dcf01fe8ae03ed62797 [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.navigator;
import java.util.ArrayList;
import java.util.Collection;
import org.eclipse.emf.common.notify.AdapterFactory;
import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
import org.eclipse.epf.library.edit.LibraryEditPlugin;
import org.eclipse.epf.library.edit.util.ModelStructure;
import org.eclipse.epf.library.edit.util.TngUtil;
import org.eclipse.epf.uma.MethodPlugin;
import org.eclipse.epf.uma.ProcessPackage;
import org.eclipse.epf.uma.UmaPackage;
import org.eclipse.epf.uma.util.UmaUtil;
/**
* The item provider adapter for the "Processes" folder in the Library view.
*
* @author Phong Nguyen Le
* @author Kelvin Low
* @since 1.0
*/
public class ProcessesItemProvider extends AbstractProcessesItemProvider {
private static final String PROCESS_CONTRIBUTIONS_LABEL = LibraryEditPlugin.INSTANCE
.getString("_UI_ProcessContributions_text"); //$NON-NLS-1$
private MethodPlugin plugin;
private ProcessPackage processContributionsPackage;
private ProcessPackage capabilityPatternPackage;
private ProcessPackage deliveryProcessPackage;
/**
* Creates a new instance.
*/
public ProcessesItemProvider(AdapterFactory adapterFactory,
MethodPlugin plugin, ModelStructure modelStruct) {
super(adapterFactory, modelStruct);
this.plugin = plugin;
}
public Collection getChildren(Object object) {
if (children == null) {
children = new ArrayList();
org.eclipse.epf.uma.ProcessPackage pkg = (org.eclipse.epf.uma.ProcessPackage) UmaUtil
.findMethodPackage(plugin,
modelStruct.capabilityPatternPath);
capabilityPatternPackage = pkg;
if (pkg != null) {
ProcessPackageItemProvider adapter = (ProcessPackageItemProvider) TngUtil
.getBestAdapterFactory(adapterFactory).adapt(pkg,
ITreeItemContentProvider.class);
adapter.setProcessType(UmaPackage.eINSTANCE
.getCapabilityPattern());
adapter.setLabel(LibraryEditPlugin.INSTANCE
.getString("_UI_CapabilityPatterns_text")); //$NON-NLS-1$
adapter.setParent(this);
children.add(pkg);
}
pkg = (org.eclipse.epf.uma.ProcessPackage) UmaUtil
.findMethodPackage(plugin, modelStruct.deliveryProcessPath);
deliveryProcessPackage = deliveryProcessPackage;
if (pkg != null) {
ProcessPackageItemProvider adapter = (ProcessPackageItemProvider) TngUtil
.getBestAdapterFactory(adapterFactory).adapt(pkg,
ITreeItemContentProvider.class);
adapter.setProcessType(UmaPackage.eINSTANCE
.getDeliveryProcess());
adapter.setLabel(LibraryEditPlugin.INSTANCE
.getString("_UI_DeliveryProcesses_text")); //$NON-NLS-1$
adapter.setParent(this);
children.add(pkg);
}
if (processContributionEnabled) {
children.add(getProcessContributionsPackage());
}
// groupItemProviderMap = new HashMap();
// String name =
// LibraryEditPlugin.INSTANCE.getString("_UI_PlanningTemplates_group");
// Object child = new TransientGroupItemProvider(adapterFactory,
// plugin, name);
// children.add(child);
// groupItemProviderMap.put(name, child);
// comment out the planning templates for TNG release one at
// 2005-05-09
// pkg = (org.eclipse.epf.uma.ProcessPackage)
// UmaUtil.findMethodPackage(plugin,
// modelStruct.processPlanningTemplatePath);
// if(pkg == null) {
// pkg =
// ModelStructure.createProcessPlanningTemplatePackage(plugin);
// }
// adapter = (ProcessPackageItemProvider)
// TngUtil.getBestAdapterFactory(adapterFactory).adapt(pkg,
// ITreeItemContentProvider.class);
// adapter.setProcessType(UmaPackage.eINSTANCE.getProcessPlanningTemplate());
// adapter.setLabel(LibraryEditPlugin.INSTANCE.getString("_UI_PlanningTemplates_text"));
// children.add(pkg);
} else {
if (processContributionEnabled) {
ProcessPackage pkg = getProcessContributionsPackage();
if (!children.contains(pkg)) {
children.add(pkg);
}
} else {
ProcessPackage pkg = getProcessContributionsPackage();
children.remove(pkg);
}
}
return children;
}
private ProcessPackage getProcessContributionsPackage() {
if (processContributionsPackage == null) {
processContributionsPackage = (org.eclipse.epf.uma.ProcessPackage) UmaUtil
.findMethodPackage(plugin,
modelStruct.processContributionPath);
if (processContributionsPackage == null) {
processContributionsPackage = ModelStructure
.createProcessContributionPackage(plugin);
}
ProcessPackageItemProvider adapter = (ProcessPackageItemProvider) getRootAdapterFactory()
.adapt(processContributionsPackage,
ITreeItemContentProvider.class);
adapter.setLabel(PROCESS_CONTRIBUTIONS_LABEL);
adapter.setParent(this);
}
return processContributionsPackage;
}
public Object getParent(Object object) {
return plugin;
}
public ProcessPackage getCapabilityPatternPackage() {
return capabilityPatternPackage;
}
public ProcessPackage getDeliveryProcessPackage() {
return deliveryProcessPackage;
}
}