blob: b12ad359f76e5955ab03db1313bb4db494718855 [file] [log] [blame]
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();
}
}