if (null == _paletteRoot) {
// create root
_paletteRoot = new PaletteRoot();
final List<PaletteContainer> categories = new ArrayList<PaletteContainer>();
// a group of default control tools
final PaletteGroup controls = new PaletteGroup(Messages.MapPalette_Controls);
// the selection tool
final ToolEntry tool = new SelectionToolEntry();
controls.add(tool);
// use selection tool as default entry
_paletteRoot.setDefaultEntry(tool);
// the marquee selection tool
controls.add(new MarqueeToolEntry());
// a separator
final PaletteSeparator separator = new PaletteSeparator(EditUIPlugin.PLUGIN_ID
+ ".palette.seperator"); //$NON-NLS-1$
separator.setUserModificationPermission(PaletteEntry.PERMISSION_NO_MODIFICATION);
controls.add(separator);
// a tool for creating connection
// controls.add(new ConnectionCreationToolEntry("Connections", "Create Connections",
// null, ImageDescriptor.createFromFile(getClass(), "/icons/connection16.gif"),
// ImageDescriptor.createFromFile(getClass(), "/icons/connection24.gif")));
final NodeCreationFactory fac = new NodeCreationFactory();
final ImageDescriptor ico = EditUIPlugin.getImageDescriptor("/icons/village.png"); //$NON-NLS-1$
final CombinedTemplateCreationEntry addNode = new CombinedTemplateCreationEntry(
Messages.MapPalette_Nodes, "Node", fac, fac, ico, ico) { //$NON-NLS-2$
};
addNode.setToolProperty(AbstractTool.PROPERTY_UNLOAD_WHEN_FINISHED, false);
controls.add(addNode);
// add all categroies to root
categories.add(controls);
// create all object templates in groups an add them to the categories
final List<PaletteDrawer> drawers = createObjectTemplates();