//------------------------------------------------------------------------------ // 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.itemsfilter; import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; import java.util.List; import org.eclipse.emf.common.notify.AdapterFactory; import org.eclipse.emf.edit.provider.ITreeItemContentProvider; import org.eclipse.emf.edit.provider.ItemProviderAdapter; import org.eclipse.epf.library.edit.IConfigurable; import org.eclipse.epf.library.edit.IFilter; 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.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 a method plug-in in the method element * selection dialogs. * * @author Shashidhar Kannoori * @since 1.0 */ public class MethodPluginItemProvider extends org.eclipse.epf.uma.provider.MethodPluginItemProvider implements IConfigurable { private IFilter filter; /** * Creates a new instance. */ public MethodPluginItemProvider(AdapterFactory adapterFactory) { super(adapterFactory); } public Collection getChildren(Object object) { List col = new ArrayList(); if (filter instanceof ICategoryFilter) { col.addAll(getCategoryItemProvider(object).getChildren(object)); return col; } else if (filter instanceof IContentFilter) { return getContent(object); } else if (filter instanceof IAllFilter) { return getAllContentElements(object); } else if (filter instanceof ICustomFilter) { return getCustomCategories(object); } else return super.getChildren(object); // TODO: filter } private Collection getCustomCategories(Object object) { CustomCategory rootCustomCategory = TngUtil .getRootCustomCategory((MethodPlugin) object); ITreeItemContentProvider adapter = (ITreeItemContentProvider) adapterFactory .adapt(rootCustomCategory, ITreeItemContentProvider.class); ((IConfigurable) adapter).setFilter(filter); return adapter.getChildren(rootCustomCategory); } private ItemProviderAdapter getCategoryItemProvider(Object object) { ContentPackage pkg = UmaUtil.findContentPackage((MethodPlugin) object, ((ICategoryFilter) filter).getCategoryPackagePath()); ContentCategoryItemProvider contentCategoryItemProvider = new ContentCategoryItemProvider( adapterFactory, pkg, ""); //$NON-NLS-1$ contentCategoryItemProvider.setFilter(filter); contentCategoryItemProvider.setParent(object); return contentCategoryItemProvider; } private Collection getContent(Object object) { ContentPackage pkg = UmaUtil.findContentPackage((MethodPlugin) object, ((IContentFilter) filter).getContentPackagePath()); ItemProviderAdapter adapter = (ItemProviderAdapter) adapterFactory .adapt(pkg, ITreeItemContentProvider.class); ((IConfigurable) adapter).setFilter(filter); return adapter.getChildren(pkg); } // private ItemProviderAdapter getContentElementsItemProvider(Object object) // { // ContentPackage pkg = UmaUtil.findContentPackage((MethodPlugin)object, // ModelStructure.DEFAULT.coreContentPath); // ContentElementsItemProvider contentElementsItemProvider = new // ContentElementsItemProvider(adapterFactory, pkg); // contentElementsItemProvider.setFilter(filter); // return contentElementsItemProvider; // } private Collection getAllContentElements(Object object) { List list = new ArrayList(); String[] coreContentPath = ModelStructure.DEFAULT.coreContentPath; ContentPackage corePkg = UmaUtil.findContentPackage( (MethodPlugin) object, coreContentPath); ItemProviderAdapter contentAdapter = (ItemProviderAdapter) adapterFactory .adapt(corePkg, ITreeItemContentProvider.class); ((IConfigurable) contentAdapter).setFilter(filter); list.addAll(contentAdapter.getChildren(corePkg)); String[][] categoryPaths = new String[][] { ModelStructure.DEFAULT.domainPath, ModelStructure.DEFAULT.disciplineDefinitionPath, ModelStructure.DEFAULT.roleSetPath, ModelStructure.DEFAULT.workProductTypePath, ModelStructure.DEFAULT.toolPath }; for (int i = 0; i < categoryPaths.length; i++) { String[] path = categoryPaths[i]; ContentPackage pkg = UmaUtil.findContentPackage( (MethodPlugin) object, path); ContentCategoriesGroupItemProvider contentCategoriesGroupItemProvider = new ContentCategoriesGroupItemProvider( adapterFactory, pkg, getName(path)); contentCategoriesGroupItemProvider.setFilter(filter); contentCategoriesGroupItemProvider.setImage(getImage(path)); contentCategoriesGroupItemProvider.setParent(object); list.add(contentCategoriesGroupItemProvider); } CustomCategory rootCustomCategory = TngUtil .getRootCustomCategory((MethodPlugin) object); if (rootCustomCategory != null) { list.add(rootCustomCategory); } // String name = // LibraryEditPlugin.INSTANCE.getString("_UI_Processes_group"); // //$NON-NLS-1$ ProcessesItemProvider processItemProvider = new ProcessesItemProvider( adapterFactory, (MethodPlugin) object); processItemProvider.setFilter(filter); processItemProvider.setParent(object); list.add(processItemProvider); for (Iterator iter1 = list.iterator(); iter1.hasNext();) { Object child = iter1.next(); if (!filter.accept(child)) iter1.remove(); } return list; } // private Collection getProcesses(Object object) { // List list = new ArrayList(); // // String name = // // LibraryEditPlugin.INSTANCE.getString("_UI_Processes_group"); // // //$NON-NLS-1$ // ProcessesItemProvider processItemProvider = new ProcessesItemProvider( // adapterFactory, (MethodPlugin) object); // processItemProvider.setFilter(filter); // list.add(processItemProvider); // return list; // } public void setFilter(IFilter filter) { this.filter = filter; } public void setLabel(String label) { } public void setParent(Object parent) { } private Object getImage(String[] path) { if (path == ModelStructure.DEFAULT.disciplineDefinitionPath) { return LibraryEditPlugin.INSTANCE .getImage("full/obj16/Disciplines"); //$NON-NLS-1$ } else if (path == ModelStructure.DEFAULT.domainPath) { return LibraryEditPlugin.INSTANCE.getImage("full/obj16/Domains"); //$NON-NLS-1$ } else if (path == ModelStructure.DEFAULT.workProductTypePath) { return LibraryEditPlugin.INSTANCE .getImage("full/obj16/WorkProductTypes"); //$NON-NLS-1$ } else if (path == ModelStructure.DEFAULT.roleSetPath) { return LibraryEditPlugin.INSTANCE.getImage("full/obj16/Roles"); //$NON-NLS-1$ } else if (path == ModelStructure.DEFAULT.toolPath) { return LibraryEditPlugin.INSTANCE.getImage("full/obj16/Tools"); //$NON-NLS-1$ } return null; } private String getName(String[] path) { if (path == ModelStructure.DEFAULT.disciplineDefinitionPath) { return LibraryEditPlugin.INSTANCE .getString("_UI_Disciplines_group"); //$NON-NLS-1$ } else if (path == ModelStructure.DEFAULT.domainPath) { return LibraryEditPlugin.INSTANCE.getString("_UI_Domains_group"); //$NON-NLS-1$ } else if (path == ModelStructure.DEFAULT.workProductTypePath) { return LibraryEditPlugin.INSTANCE .getString("_UI_WorkProductTypes_group"); //$NON-NLS-1$ } else if (path == ModelStructure.DEFAULT.roleSetPath) { return LibraryEditPlugin.INSTANCE.getString("_UI_Role_Sets_group"); //$NON-NLS-1$ } else if (path == ModelStructure.DEFAULT.toolPath) { return LibraryEditPlugin.INSTANCE.getString("_UI_Tools_group"); //$NON-NLS-1$ } return null; } }