//------------------------------------------------------------------------------ // 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 java.util.Collections; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import org.eclipse.emf.common.notify.AdapterFactory; import org.eclipse.emf.common.notify.Notifier; import org.eclipse.emf.edit.domain.EditingDomain; import org.eclipse.emf.edit.provider.IDisposable; import org.eclipse.emf.edit.provider.IEditingDomainItemProvider; import org.eclipse.emf.edit.provider.IItemLabelProvider; import org.eclipse.emf.edit.provider.IItemPropertySource; import org.eclipse.emf.edit.provider.IStructuredItemContentProvider; import org.eclipse.emf.edit.provider.ITreeItemContentProvider; import org.eclipse.emf.edit.provider.ItemProviderAdapter; import org.eclipse.epf.library.edit.IGroupContainer; import org.eclipse.epf.library.edit.ILibraryItemProvider; import org.eclipse.epf.library.edit.LibraryEditPlugin; import org.eclipse.epf.library.edit.category.StandardCategoriesItemProvider; import org.eclipse.epf.library.edit.element.IElementItemProvider; import org.eclipse.epf.library.edit.util.ModelStructure; import org.eclipse.epf.library.edit.util.TngUtil; import org.eclipse.epf.uma.ContentPackage; import org.eclipse.epf.uma.CustomCategory; import org.eclipse.epf.uma.MethodPlugin; import org.eclipse.epf.uma.util.UmaUtil; /** * The item provider adapter for the "Method Content" folder in the Library * view. * <p> * This class will be renamed as "MethodContentItemProvider" in EPF M5. * * @author Phong Nguyen Le * @author Kelvin Low * @since 1.0 */ public class ContentItemProvider extends ItemProviderAdapter implements IEditingDomainItemProvider, IStructuredItemContentProvider, ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource, IElementItemProvider, IGroupContainer { protected MethodPlugin plugin; protected ModelStructure modelStruct; protected Map groupItemProviderMap; protected ArrayList children; protected ContentPackage coreContentPkg; /** * Creates a new instance. */ public ContentItemProvider(AdapterFactory adapterFactory, MethodPlugin plugin, ModelStructure modelStruct) { super(adapterFactory); this.plugin = plugin; this.modelStruct = modelStruct; } public ContentPackage getCoreContentPackage() { return coreContentPkg; } public Notifier getTarget() { return coreContentPkg; } public Collection getChildren(Object object) { if (children == null) { children = new ArrayList(); groupItemProviderMap = new HashMap(); String name; ILibraryItemProvider child; // find core content package ContentPackage contentPkg = UmaUtil.findContentPackage(plugin, modelStruct.coreContentPath); coreContentPkg = contentPkg; if (contentPkg != null) { name = LibraryEditPlugin.INSTANCE .getString("_UI_MethodContent_group"); //$NON-NLS-1$ child = new MethodPackagesItemProvider(adapterFactory, contentPkg, name); child.setParent(this); children.add(child); groupItemProviderMap.put(name, child); // contentPkg = UmaUtil.findContentPackage(plugin, // modelStruct.disciplineDefinitionPath); // if(contentPkg != null) { // name = // LibraryEditPlugin.INSTANCE.getString("_UI_Disciplines_group"); // child = new DisciplineCategoriesItemProvider(adapterFactory, // contentPkg, name); // child.setParent(this); // children.add(child); // groupItemProviderMap.put(name, child); // } // // contentPkg = UmaUtil.findContentPackage(plugin, // modelStruct.domainPath); // if(contentPkg != null) { // name = // LibraryEditPlugin.INSTANCE.getString("_UI_Domains_group"); // child = new DomainsItemProvider(adapterFactory, contentPkg, // name); // child.setParent(this); // children.add(child); // groupItemProviderMap.put(name, child); // } // // contentPkg = UmaUtil.findContentPackage(plugin, // modelStruct.workProductTypePath); // if(contentPkg != null) { // name = // LibraryEditPlugin.INSTANCE.getString("_UI_WorkProductTypes_group"); // child = new WorkProductTypesItemProvider(adapterFactory, // contentPkg, name); // child.setParent(this); // children.add(child); // groupItemProviderMap.put(name, child); // } // // contentPkg = UmaUtil.findContentPackage(plugin, // modelStruct.roleSetPath); // if(contentPkg != null) { // name = // LibraryEditPlugin.INSTANCE.getString("_UI_Role_Sets_group"); // child = new RoleSetsItemProvider(adapterFactory, contentPkg, // name); // child.setParent(this); // children.add(child); // groupItemProviderMap.put(name, child); // } // // contentPkg = UmaUtil.findContentPackage(plugin, // modelStruct.toolPath); // if(contentPkg != null) { // name = // LibraryEditPlugin.INSTANCE.getString("_UI_Tools_group"); // child = new ToolsItemProvider(adapterFactory, contentPkg, // name); // child.setParent(this); // children.add(child); // groupItemProviderMap.put(name, child); // } // create the standard categories folder contentPkg = UmaUtil.findContentPackage(plugin, modelStruct.standardCategoryPath); if (contentPkg != null) { name = LibraryEditPlugin.INSTANCE .getString("_UI_Standard_Categories_group"); //$NON-NLS-1$ child = new StandardCategoriesItemProvider(adapterFactory, contentPkg, name); child.setParent(this); children.add(child); groupItemProviderMap.put(name, child); } // create the custome categories folder // contentPkg = UmaUtil.findContentPackage(plugin, // modelStruct.customCategoryPath); // if(contentPkg != null) { // name = // LibraryEditPlugin.INSTANCE.getString("_UI_Custom_Categories_group"); // child = new CustomCategoriesItemProvider(adapterFactory, // contentPkg, name); // child.setParent(this); // children.add(child); // groupItemProviderMap.put(name, child); // } CustomCategory rootCustomCategory = TngUtil .getRootCustomCategory(plugin); if (rootCustomCategory != null) { boolean notify = rootCustomCategory.eDeliver(); try { rootCustomCategory.eSetDeliver(false); rootCustomCategory.setName(LibraryEditPlugin.INSTANCE .getString("_UI_Custom_Categories_group")); //$NON-NLS-1$ } finally { rootCustomCategory.eSetDeliver(notify); } children.add(rootCustomCategory); } // IConfigurable adapter = (IConfigurable) // TngUtil.getBestAdapterFactory(adapterFactory).adapt(contentPkg, // ITreeItemContentProvider.class); // adapter.setLabel(LibraryEditPlugin.INSTANCE.getString("_UI_MethodContent_group")); // children.add(contentPkg); } } return children; } public Object getImage(Object object) { return LibraryEditPlugin.INSTANCE.getImage("full/obj16/Content"); //$NON-NLS-1$ } public String getText(Object object) { return LibraryEditPlugin.INSTANCE.getString("_UI_Content_group"); //$NON-NLS-1$ } /* * (non-Javadoc) * * @see com.ibm.library.edit.IGroupContainer#getGroupItemProvider(java.lang.String) */ public Object getGroupItemProvider(String name) { return groupItemProviderMap != null ? groupItemProviderMap.get(name) : null; } public Collection getNewChildDescriptors(Object object, EditingDomain editingDomain, Object sibling) { return Collections.EMPTY_LIST; } public Object getParent(Object object) { return plugin; } /* * (non-Javadoc) * * @see org.eclipse.emf.edit.provider.ItemProviderAdapter#dispose() */ public void dispose() { if (groupItemProviderMap != null) { for (Iterator iter = groupItemProviderMap.values().iterator(); iter .hasNext();) { Object adapter = iter.next(); if (adapter instanceof IDisposable) { ((IDisposable) adapter).dispose(); } } groupItemProviderMap.clear(); groupItemProviderMap = null; } if(children != null) { children.clear(); } plugin = null; coreContentPkg = null; super.dispose(); } }