package org.freeplane.plugin.workspace.model; import org.freeplane.core.io.IElementDOMHandler; import org.freeplane.n3.nanoxml.XMLElement; import org.freeplane.plugin.workspace.WorkspaceUtils; import org.freeplane.plugin.workspace.nodes.WorkspaceRoot; public abstract class AWorkspaceNodeCreator implements IElementDOMHandler { abstract public AWorkspaceTreeNode getNode(final XMLElement data); public AWorkspaceNodeCreator() { } public Object createElement(final Object parent, final String tag, final XMLElement attributes) { if (attributes == null) { return null; } AWorkspaceTreeNode node = getNode(attributes); if (node == null) { return null; } node.setParent((AWorkspaceTreeNode) parent); node.setMandatoryAttributes(attributes); node.initializePopup(); if (!WorkspaceUtils.getModel().containsNode(node.getKey())) { if(node instanceof WorkspaceRoot) { WorkspaceUtils.getModel().setRoot(node); } else { WorkspaceUtils.getModel().addNodeTo(node, (AWorkspaceTreeNode) parent); } } return node; } public void endElement(final Object parent, final String tag, final Object userObject, final XMLElement lastBuiltElement) { } }