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