| 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.List; |
| import java.util.Map; |
| |
| import org.eclipse.emf.common.notify.AdapterFactory; |
| import org.eclipse.epf.library.edit.element.ContentPackageItemProvider; |
| import org.eclipse.epf.library.edit.util.TngUtil; |
| import org.eclipse.epf.uma.ContentPackage; |
| import org.eclipse.epf.uma.MethodElement; |
| import org.eclipse.epf.uma.MethodPackage; |
| import org.eclipse.epf.uma.MethodPlugin; |
| import org.eclipse.epf.uma.util.UmaUtil; |
| |
| public class ConfigContentPackageItemProvider extends |
| ContentPackageItemProvider { |
| |
| public static boolean oldCode = false; |
| |
| public ConfigContentPackageItemProvider(AdapterFactory adapterFactory) { |
| super(adapterFactory); |
| } |
| |
| private Map<ContentPackage, LeafElementsItemProvider> map = new HashMap<ContentPackage, LeafElementsItemProvider>(); |
| |
| @Override |
| public Collection getChildren(Object object) { |
| if (oldCode) { |
| return super.getChildren(object); |
| } |
| List modifiedChildren = new ArrayList(); |
| if (object instanceof ContentPackage) { |
| ContentPackage pkg = (ContentPackage) object; |
| MethodPlugin plugin = UmaUtil.getMethodPlugin(pkg); |
| if (plugin != null && !TngUtil.getAllSystemPackages(plugin).contains(pkg)) { |
| LeafElementsItemProvider p = map.get(pkg); |
| if (p == null) { |
| p = new LeafElementsItemProvider(pkg, getAdapterFactory()); |
| map.put(pkg, p); |
| } |
| modifiedChildren.add(p); |
| } |
| } |
| |
| Collection children = super.getChildren(object); |
| if (modifiedChildren.isEmpty()) { |
| return children; |
| } |
| modifiedChildren.addAll(children); |
| return modifiedChildren; |
| } |
| |
| public static class LeafElementsItemProvider extends ConfigContentPackageItemProvider { |
| private MethodPackage parentPackage; |
| |
| public LeafElementsItemProvider(MethodPackage parentPackage, AdapterFactory adapterFactory) { |
| super(adapterFactory); |
| this.parentPackage = parentPackage; |
| } |
| |
| @Override |
| public Collection getChildren(Object object) { |
| return Collections.EMPTY_LIST; |
| } |
| |
| public MethodPackage getParentPackage() { |
| return parentPackage; |
| } |
| |
| public List<? extends MethodElement> getElements() { |
| if (parentPackage instanceof ContentPackage) { |
| return ((ContentPackage) parentPackage).getContentElements(); |
| } |
| return Collections.EMPTY_LIST; |
| } |
| |
| } |
| |
| @Override |
| public Object getImage(Object object) { |
| return overlayImage(object, getResourceLocator().getImage( |
| "full/obj16/Element")); //$NON-NLS-1$ |
| } |
| |
| public void dispose() { |
| if (map != null) { |
| map.clear(); |
| map = null; |
| } |
| parent = null; |
| super.dispose(); |
| } |
| |
| |
| } |