package org.freeplane.plugin.workspace.model; import org.freeplane.core.io.IElementDOMHandler; import org.freeplane.core.util.LogUtils; import org.freeplane.n3.nanoxml.XMLElement; public abstract class AWorkspaceNodeCreator implements IElementDOMHandler { private IResultProcessor resultProcessor; 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(); processResult((AWorkspaceTreeNode) parent, node); return node; } public void endElement(final Object parent, final String tag, final Object userObject, final XMLElement lastBuiltElement) { } public void setResultProcessor(IResultProcessor processor) { this.resultProcessor = processor; } public IResultProcessor getResultProcessor() { return this.resultProcessor; } private void processResult(AWorkspaceTreeNode parent, AWorkspaceTreeNode node) { if(getResultProcessor() == null) { LogUtils.warn("Missing ResultProcessor for node "+ node.getClass().getName()); return; } getResultProcessor().process(parent, node); } }