package org.eclipse.uml2.diagram.common.part;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import org.eclipse.gef.Tool;
import org.eclipse.gef.palette.ToolEntry;
import org.eclipse.gmf.runtime.diagram.ui.tools.UnspecifiedTypeCreationTool;
import org.eclipse.gmf.runtime.emf.type.core.IElementType;
public class NodeToolEntry extends ToolEntry {
private final List<IElementType> elementTypes;
public NodeToolEntry(String title, String description, List<?> elementTypes) {
super(title, description, null, null);
this.elementTypes = filterElementTypes(elementTypes);
}
@Override
public Tool createTool() {
Tool tool = super.createTool();
if (tool != null) {
return tool;
}
tool = new UnspecifiedTypeCreationTool(elementTypes);
tool.setProperties(getToolProperties());
return tool;
}
public List<IElementType> getElementTypes() {
return elementTypes;
}
public static List<IElementType> filterElementTypes(List<?> list) {
if (list == null || list.isEmpty()) {
return Collections.emptyList();
}
ArrayList<IElementType> result = new ArrayList<IElementType>(list.size());
for (Object next : list) {
if (next instanceof IElementType) {
result.add((IElementType) next);
}
}
return result;
}
}