blob: 1238eeaecc43411470606d7f15b63e1d29c83849 [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.HashSet;
import java.util.Iterator;
import java.util.Set;
import org.eclipse.emf.common.notify.Adapter;
import org.eclipse.emf.common.notify.Notifier;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.edit.provider.IDisposable;
import org.eclipse.emf.edit.provider.ItemProviderAdapter;
import org.eclipse.epf.library.edit.IReferencer;
import org.eclipse.epf.library.edit.IStatefulItemProvider;
import org.eclipse.epf.library.edit.breakdownelement.ActivityItemProvider;
import org.eclipse.epf.library.edit.breakdownelement.MilestoneItemProvider;
import org.eclipse.epf.library.edit.category.CustomCategoryItemProvider;
import org.eclipse.epf.library.edit.category.DisciplineCategoryItemProvider;
import org.eclipse.epf.library.edit.category.DisciplineItemProvider;
import org.eclipse.epf.library.edit.category.DomainItemProvider;
import org.eclipse.epf.library.edit.category.RoleSetCategoryItemProvider;
import org.eclipse.epf.library.edit.category.RoleSetItemProvider;
import org.eclipse.epf.library.edit.category.ToolItemProvider;
import org.eclipse.epf.library.edit.category.WorkProductTypeItemProvider;
import org.eclipse.epf.library.edit.element.ArtifactItemProvider;
import org.eclipse.epf.library.edit.element.ContentDescriptionItemProvider;
import org.eclipse.epf.library.edit.element.ContentPackageItemProvider;
import org.eclipse.epf.library.edit.element.GuidanceItemProvider;
import org.eclipse.epf.library.edit.element.RoleItemProvider;
import org.eclipse.epf.library.edit.element.SectionItemProvider;
import org.eclipse.epf.library.edit.element.TaskItemProvider;
import org.eclipse.epf.library.edit.element.WorkProductItemProvider;
import org.eclipse.epf.library.edit.util.ModelStructure;
import org.eclipse.epf.library.edit.util.TngUtil;
import org.eclipse.epf.uma.provider.UmaItemProviderAdapterFactory;
/**
* The item provider adapter factory for the Library view.
*
* @author Phong Nguyen Le
* @author Kelvin Low
* @since 1.0
*/
public class ItemProviderAdapterFactory extends UmaItemProviderAdapterFactory
implements IReferencer {
protected WorkProductItemProvider workProductItemProvider;
protected ArtifactItemProvider myArtifactItemProvider;
protected GuidanceItemProvider guidanceItemProvider;
protected WorkProductItemProvider myOutcomeItemProvider;
protected WorkProductItemProvider myDeliverableItemProvider;
/**
* References to stateful adapters created by this adapter factory
*/
protected Set disposableAdapters = new HashSet();
// protected Collection adapters = new ArrayList();
/*
* (non-Javadoc)
*
* @see org.eclipse.epf.uma.provider.UmaItemProviderAdapterFactory#adapt(org.eclipse.emf.common.notify.Notifier,
* java.lang.Object)
*/
public Adapter adapt(Notifier notifier, Object type) {
Adapter adapter = super.adapt(notifier, type);
if (adapter instanceof IStatefulItemProvider
&& notifier instanceof EObject
&& ((EObject) notifier).eContainer() != null) {
disposableAdapters.add(adapter);
}
return adapter;
}
/*
* (non-Javadoc)
*
* @see org.eclipse.epf.uma.util.CorecontentAdapterFactory#createRoleAdapter()
*/
public Adapter createRoleAdapter() {
if (roleItemProvider == null) {
roleItemProvider = new RoleItemProvider(this);
}
return roleItemProvider;
}
/*
* (non-Javadoc)
*
* @see org.eclipse.epf.uma.util.CorecontentAdapterFactory#createTaskAdapter()
*/
public Adapter createTaskAdapter() {
if (taskItemProvider == null) {
taskItemProvider = new TaskItemProvider(this);
}
return taskItemProvider;
}
/*
* (non-Javadoc)
*
* @see org.eclipse.epf.uma.util.WorkproductsAdapterFactory#createArtifactAdapter()
*/
public Adapter createArtifactAdapter() {
if (myArtifactItemProvider == null) {
myArtifactItemProvider = new ArtifactItemProvider(this);
}
return myArtifactItemProvider;
}
public Adapter createWorkProductAdapter() {
if (workProductItemProvider == null) {
workProductItemProvider = new WorkProductItemProvider(this);
}
return workProductItemProvider;
}
/*
* (non-Javadoc)
*
* @see org.eclipse.epf.uma.util.WorkproductsAdapterFactory#createDeliverableAdapter()
*/
public Adapter createDeliverableAdapter() {
if (myDeliverableItemProvider == null) {
myDeliverableItemProvider = new WorkProductItemProvider(this,
(ItemProviderAdapter) super.createDeliverableAdapter());
}
return myDeliverableItemProvider;
}
/*
* (non-Javadoc)
*
* @see org.eclipse.epf.uma.util.WorkproductsAdapterFactory#createOutcomeAdapter()
*/
public Adapter createOutcomeAdapter() {
if (myOutcomeItemProvider == null) {
myOutcomeItemProvider = new WorkProductItemProvider(this,
(ItemProviderAdapter) super.createOutcomeAdapter());
}
return myOutcomeItemProvider;
}
/*
* (non-Javadoc)
*
* @see org.eclipse.epf.uma.provider.UmaItemProviderAdapterFactory#createMethodConfigurationAdapter()
*/
public Adapter createMethodConfigurationAdapter() {
if (methodConfigurationItemProvider == null) {
methodConfigurationItemProvider = new MethodConfigurationItemProvider(
this);
}
return methodConfigurationItemProvider;
}
/*
* (non-Javadoc)
*
* @see org.eclipse.epf.uma.provider.UmaItemProviderAdapterFactory#createMethodLibraryAdapter()
*/
public Adapter createMethodLibraryAdapter() {
Adapter adapter = new MethodLibraryItemProvider(this);
// adapters.add(adapter);
return adapter;
}
/*
* (non-Javadoc)
*
* @see org.eclipse.epf.uma.provider.UmaItemProviderAdapterFactory#createProcessFamilyAdapter()
*/
/*
public Adapter createProcessFamilyAdapter() {
if (processFamilyItemProvider == null) {
processFamilyItemProvider = new ProcessFamilyItemProvider(this);
}
return processFamilyItemProvider;
}
*/
public Adapter createContentPackageAdapter() {
Adapter adapter = new ContentPackageItemProvider(this);
// adapters.add(adapter);
return adapter;
}
public Adapter createMethodPluginAdapter() {
MethodPluginItemProvider adapter = new MethodPluginItemProvider(this);
adapter.setModelStructure(ModelStructure.DEFAULT);
// adapters.add(adapter);
return adapter;
}
/*
* (non-Javadoc)
*
* @see org.eclipse.epf.uma.util.MethodmodelsAdapterFactory#createProcessComponentAdapter()
*/
public Adapter createProcessComponentAdapter() {
if (processComponentItemProvider == null) {
processComponentItemProvider = new ProcessComponentItemProvider(
this);
}
return processComponentItemProvider;
}
/*
* (non-Javadoc)
*
* @see org.eclipse.epf.uma.util.MethodmodelsAdapterFactory#createProcessPackageAdapter()
*/
public Adapter createProcessPackageAdapter() {
Adapter adapter = new ProcessPackageItemProvider(this);
// adapters.add(adapter);
return adapter;
}
/*
* (non-Javadoc)
*
* @see org.eclipse.epf.uma.util.ContentcategoriesAdapterFactory#createDisciplineGroupingAdapter()
*/
public Adapter createDisciplineGroupingAdapter() {
if (disciplineGroupingItemProvider == null) {
disciplineGroupingItemProvider = new DisciplineCategoryItemProvider(
this);
}
return disciplineGroupingItemProvider;
}
/*
* (non-Javadoc)
*
* @see org.eclipse.epf.uma.util.ContentcategoriesAdapterFactory#createDomainAdapter()
*/
public Adapter createDomainAdapter() {
if (domainItemProvider == null) {
domainItemProvider = new DomainItemProvider(this);
}
return domainItemProvider;
}
public Adapter createRoleSetGroupingAdapter() {
Adapter adapter = new RoleSetCategoryItemProvider(this);
// adapters.add(adapter);
return adapter;
}
/*
* (non-Javadoc)
*
* @see org.eclipse.epf.uma.util.ContentcategoriesAdapterFactory#createDisciplineAdapter()
*/
public Adapter createDisciplineAdapter() {
// if (disciplineItemProvider == null) {
// disciplineItemProvider = new DisciplineItemProvider(this);
// }
//
// return disciplineItemProvider;
Adapter adapter = new DisciplineItemProvider(this);
// adapters.add(adapter);
return adapter;
}
/*
* (non-Javadoc)
*
* @see org.eclipse.epf.uma.util.ContentcategoriesAdapterFactory#createRoleSetAdapter()
*/
public Adapter createRoleSetAdapter() {
// if (roleSetItemProvider == null) {
// roleSetItemProvider = new RoleSetItemProvider(this);
// }
//
// return roleSetItemProvider;
Adapter adapter = new RoleSetItemProvider(this);
// adapters.add(adapter);
return adapter;
}
/*
* (non-Javadoc)
*
* @see org.eclipse.epf.uma.provider.ContentcategoriesItemProviderAdapterFactory#createToolAdapter()
*/
public Adapter createToolAdapter() {
Adapter adapter = new ToolItemProvider(this);
// adapters.add(adapter);
return adapter;
}
/*
* (non-Javadoc)
*
* @see org.eclipse.epf.uma.provider.ContentcategoriesItemProviderAdapterFactory#createWorkProductTypeAdapter()
*/
public Adapter createWorkProductTypeAdapter() {
Adapter adapter = new WorkProductTypeItemProvider(this);
// adapters.add(adapter);
return adapter;
}
/*
* (non-Javadoc)
*
* @see org.eclipse.epf.uma.util.UmaAdapterFactory#createGuidanceAdapter()
*/
public Adapter createGuidanceAdapter() {
if (guidanceItemProvider == null) {
guidanceItemProvider = new GuidanceItemProvider(this);
}
return guidanceItemProvider;
}
/*
* (non-Javadoc)
*
* @see org.eclipse.epf.uma.provider.UmaItemProviderAdapterFactory#createChecklistAdapter()
*/
public Adapter createChecklistAdapter() {
return createGuidanceAdapter();
}
/*
* (non-Javadoc)
*
* @see org.eclipse.epf.uma.provider.UmaItemProviderAdapterFactory#createConceptAdapter()
*/
public Adapter createConceptAdapter() {
return createGuidanceAdapter();
}
/*
* (non-Javadoc)
*
* @see org.eclipse.epf.uma.provider.UmaItemProviderAdapterFactory#createEstimateAdapter()
*/
public Adapter createEstimateAdapter() {
return createGuidanceAdapter();
}
/*
* (non-Javadoc)
*
* @see org.eclipse.epf.uma.provider.UmaItemProviderAdapterFactory#createEstimationConsiderations
* Adapter()
*/
public Adapter createEstimationConsiderationsAdapter() {
return createGuidanceAdapter();
}
/*
* (non-Javadoc)
*
* @see org.eclipse.epf.uma.provider.UmaItemProviderAdapterFactory#createEstimatingMetricAdapter()
*/
public Adapter createEstimatingMetricAdapter() {
return createGuidanceAdapter();
}
/*
* (non-Javadoc)
*
* @see org.eclipse.epf.uma.provider.UmaItemProviderAdapterFactory#createExampleAdapter()
*/
public Adapter createExampleAdapter() {
return createGuidanceAdapter();
}
/*
* (non-Javadoc)
*
* @see org.eclipse.epf.uma.provider.UmaItemProviderAdapterFactory#createPracticeAdapter()
*/
public Adapter createPracticeAdapter() {
if (practiceItemProvider == null) {
practiceItemProvider = new PracticeItemProvider(this);
}
return practiceItemProvider;
}
/*
* (non-Javadoc)
*
* @see org.eclipse.epf.uma.provider.UmaItemProviderAdapterFactory#createReportAdapter()
*/
public Adapter createReportAdapter() {
return createGuidanceAdapter();
}
/*
* (non-Javadoc)
*
* @see org.eclipse.epf.uma.provider.UmaItemProviderAdapterFactory#createRoadmapAdapter()
*/
public Adapter createRoadmapAdapter() {
return createGuidanceAdapter();
}
/*
* (non-Javadoc)
*
* @see org.eclipse.epf.uma.provider.UmaItemProviderAdapterFactory#createReusableAssetAdapter()
*/
public Adapter createReusableAssetAdapter() {
return createGuidanceAdapter();
}
/*
* (non-Javadoc)
*
* @see org.eclipse.epf.uma.provider.UmaItemProviderAdapterFactory#createSupportingMaterialAdapter()
*/
public Adapter createSupportingMaterialAdapter() {
return createGuidanceAdapter();
}
/*
* (non-Javadoc)
*
* @see org.eclipse.epf.uma.provider.UmaItemProviderAdapterFactory#createTechniqueAdapter()
*/
public Adapter createTechniqueAdapter() {
return createGuidanceAdapter();
}
/*
* (non-Javadoc)
*
* @see org.eclipse.epf.uma.provider.UmaItemProviderAdapterFactory#createTemplateAdapter()
*/
public Adapter createTemplateAdapter() {
return createGuidanceAdapter();
}
/*
* (non-Javadoc)
*
* @see org.eclipse.epf.uma.provider.UmaItemProviderAdapterFactory#createTermDefinitionAdapter()
*/
public Adapter createTermDefinitionAdapter() {
return createGuidanceAdapter();
}
/*
* (non-Javadoc)
*
* @see org.eclipse.epf.uma.provider.UmaItemProviderAdapterFactory#createToolMentorAdapter()
*/
public Adapter createToolMentorAdapter() {
return createGuidanceAdapter();
}
/*
* (non-Javadoc)
*
* @see org.eclipse.epf.uma.provider.UmaItemProviderAdapterFactory#createWorkProductGuidelineAdapter()
*/
public Adapter createWorkProductGuidelineAdapter() {
return createGuidanceAdapter();
}
public Adapter createSectionAdapter() {
if (sectionItemProvider == null) {
sectionItemProvider = new SectionItemProvider(this);
}
return sectionItemProvider;
}
/*
* (non-Javadoc)
*
* @see org.eclipse.epf.uma.provider.UmaItemProviderAdapterFactory#createCustomCategoryAdapter()
*/
public Adapter createCustomCategoryAdapter() {
if (customCategoryItemProvider == null) {
customCategoryItemProvider = new CustomCategoryItemProvider(this);
}
return customCategoryItemProvider;
}
public Adapter createWhitepaperAdapter() {
// if (whitepaperItemProvider == null) {
// whitepaperItemProvider = new WhitepaperItemProvider(this);
// }
//
// return whitepaperItemProvider;
return createGuidanceAdapter();
}
public Adapter createCapabilityPatternAdapter() {
if (capabilityPatternItemProvider == null) {
capabilityPatternItemProvider = new CapabilityPatternItemProvider(
this);
}
return capabilityPatternItemProvider;
}
public Adapter createDeliveryProcessAdapter() {
if (deliveryProcessItemProvider == null) {
deliveryProcessItemProvider = new DeliveryProcessItemProvider(this);
}
return deliveryProcessItemProvider;
}
/*
* (non-Javadoc)
*
* @see org.eclipse.epf.uma.provider.UmaItemProviderAdapterFactory#createGuidelineAdapter()
*/
public Adapter createGuidelineAdapter() {
return createGuidanceAdapter();
}
public Adapter createContentDescriptionAdapter() {
if (contentDescriptionItemProvider == null) {
contentDescriptionItemProvider = new ContentDescriptionItemProvider(
this);
}
return contentDescriptionItemProvider;
}
/*
* (non-Javadoc)
*
* @see org.eclipse.epf.uma.provider.UmaItemProviderAdapterFactory#createActivityDescriptionAdapter()
*/
public Adapter createActivityDescriptionAdapter() {
return createContentDescriptionAdapter();
}
/*
* (non-Javadoc)
*
* @see org.eclipse.epf.uma.provider.UmaItemProviderAdapterFactory#createArtifactDescriptionAdapter()
*/
public Adapter createArtifactDescriptionAdapter() {
return createContentDescriptionAdapter();
}
/*
* (non-Javadoc)
*
* @see org.eclipse.epf.uma.provider.UmaItemProviderAdapterFactory#createBreakdownElementDescriptionAdapter()
*/
public Adapter createBreakdownElementDescriptionAdapter() {
return createContentDescriptionAdapter();
}
/*
* (non-Javadoc)
*
* @see org.eclipse.epf.uma.provider.UmaItemProviderAdapterFactory#createDeliverableDescriptionAdapter()
*/
public Adapter createDeliverableDescriptionAdapter() {
return createContentDescriptionAdapter();
}
/*
* (non-Javadoc)
*
* @see org.eclipse.epf.uma.provider.UmaItemProviderAdapterFactory#createDeliveryProcessDescriptionAdapter()
*/
public Adapter createDeliveryProcessDescriptionAdapter() {
return createContentDescriptionAdapter();
}
/*
* (non-Javadoc)
*
* @see org.eclipse.epf.uma.provider.UmaItemProviderAdapterFactory#createDescriptorDescriptionAdapter()
*/
public Adapter createDescriptorDescriptionAdapter() {
return createContentDescriptionAdapter();
}
/*
* (non-Javadoc)
*
* @see org.eclipse.epf.uma.provider.UmaItemProviderAdapterFactory#createGuidanceDescriptionAdapter()
*/
public Adapter createGuidanceDescriptionAdapter() {
return createContentDescriptionAdapter();
}
/*
* (non-Javadoc)
*
* @see org.eclipse.epf.uma.provider.UmaItemProviderAdapterFactory#createPracticeDescriptionAdapter()
*/
public Adapter createPracticeDescriptionAdapter() {
return createContentDescriptionAdapter();
}
/*
* (non-Javadoc)
*
* @see org.eclipse.epf.uma.provider.UmaItemProviderAdapterFactory#createProcessDescriptionAdapter()
*/
public Adapter createProcessDescriptionAdapter() {
return createContentDescriptionAdapter();
}
/*
* (non-Javadoc)
*
* @see org.eclipse.epf.uma.provider.UmaItemProviderAdapterFactory#createRoleDescriptionAdapter()
*/
public Adapter createRoleDescriptionAdapter() {
return createContentDescriptionAdapter();
}
/*
* (non-Javadoc)
*
* @see org.eclipse.epf.uma.provider.UmaItemProviderAdapterFactory#createTaskDescriptionAdapter()
*/
public Adapter createTaskDescriptionAdapter() {
return createContentDescriptionAdapter();
}
/*
* (non-Javadoc)
*
* @see org.eclipse.epf.uma.provider.UmaItemProviderAdapterFactory#createWorkProductDescriptionAdapter()
*/
public Adapter createWorkProductDescriptionAdapter() {
return createContentDescriptionAdapter();
}
/**
* This creates an adapter for a {@link org.eclipse.epf.uma.Milestone}.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public Adapter createMilestoneAdapter() {
if (milestoneItemProvider == null) {
milestoneItemProvider = new MilestoneItemProvider(this);
}
return milestoneItemProvider;
}
@Override
public Adapter createActivityAdapter() {
return new ActivityItemProvider(this);
}
@Override
public Adapter createPhaseAdapter() {
return new ActivityItemProvider(this);
}
@Override
public Adapter createIterationAdapter() {
return createActivityAdapter();
}
/*
* (non-Javadoc)
*
* @see org.eclipse.epf.uma.provider.UmaItemProviderAdapterFactory#dispose()
*/
public void dispose() {
if (guidanceItemProvider != null) {
guidanceItemProvider.dispose();
guidanceItemProvider = null;
}
if (myArtifactItemProvider != null) {
myArtifactItemProvider.dispose();
myArtifactItemProvider = null;
}
if (myDeliverableItemProvider != null) {
myDeliverableItemProvider.dispose();
myDeliverableItemProvider = null;
}
if (myOutcomeItemProvider != null) {
myOutcomeItemProvider.dispose();
myOutcomeItemProvider = null;
}
if (workProductItemProvider != null) {
workProductItemProvider.dispose();
workProductItemProvider = null;
}
// for (Iterator iter = new ArrayList(adapters).iterator();
// iter.hasNext();) {
// Object adapter = iter.next();
// if(adapter instanceof IDisposable) {
// ((IDisposable)adapter).dispose();
// }
// }
// adapters.clear();
if (!disposableAdapters.isEmpty()) {
for (Iterator iter = disposableAdapters.iterator(); iter.hasNext();) {
IDisposable adapter = (IDisposable) iter.next();
adapter.dispose();
}
disposableAdapters.clear();
}
super.dispose();
}
/*
* (non-Javadoc)
*
* @see com.ibm.library.edit.IReferencer#remove(java.lang.Object)
*/
public boolean remove(Object ref) {
return disposableAdapters.remove(ref);
}
/*
* (non-Javadoc)
*
* @see org.eclipse.epf.library.edit.IReferencer#cleanUp()
*/
public void cleanUp() {
ArrayList adaptersToRemove = new ArrayList();
for (Iterator iter = new ArrayList(disposableAdapters).iterator(); iter
.hasNext();) {
Adapter adapter = (Adapter) iter.next();
if (adapter instanceof IStatefulItemProvider
&& adapter.getTarget() == null) {
adaptersToRemove.add(adapter);
}
}
if (TngUtil.DEBUG) {
System.out
.println("ItemProviderAdapterFactory.cleanUp(): number of adapters to remove: " //$NON-NLS-1$
+ adaptersToRemove.size());
}
disposableAdapters.removeAll(adaptersToRemove);
}
}