package org.docear.plugin.pdfutilities.features; import org.docear.plugin.pdfutilities.features.DocearNodeMonitoringExtension.DocearExtensionKey; import org.freeplane.core.extension.IExtension; import org.freeplane.core.io.ReadManager; import org.freeplane.core.io.WriteManager; import org.freeplane.features.map.MapController; import org.freeplane.features.map.NodeModel; import org.freeplane.features.mode.Controller; import org.freeplane.features.mode.ModeController; public class DocearNodeMonitoringExtensionController implements IExtension{ public static DocearNodeMonitoringExtensionController getController() { return getController(Controller.getCurrentModeController()); } public static DocearNodeMonitoringExtensionController getController(ModeController modeController) { return (DocearNodeMonitoringExtensionController) modeController.getExtension(DocearNodeMonitoringExtensionController.class); } public static void install( final DocearNodeMonitoringExtensionController docearNodeModelController) { Controller.getCurrentModeController().addExtension(DocearNodeMonitoringExtensionController.class, docearNodeModelController); } public DocearNodeMonitoringExtensionController(final ModeController modeController){ final MapController mapController = Controller.getCurrentModeController().getMapController(); final ReadManager readManager = mapController.getReadManager(); final WriteManager writeManager = mapController.getWriteManager(); DocearNodeMonitoringExtensionXmlBuilder builder = new DocearNodeMonitoringExtensionXmlBuilder(); builder.registerBy(readManager, writeManager); } public static DocearNodeMonitoringExtension getModel(final NodeModel node) { DocearNodeMonitoringExtension docearNodeModel = (DocearNodeMonitoringExtension) node.getExtension(DocearNodeMonitoringExtension.class); return docearNodeModel; } public static void setModel(final NodeModel node, final DocearNodeMonitoringExtension docearNodeModel) { final DocearNodeMonitoringExtension olddocearNodeModel = (DocearNodeMonitoringExtension) node.getExtension(DocearNodeMonitoringExtension.class); if (docearNodeModel != null && olddocearNodeModel == null) { node.addExtension(docearNodeModel); } else if (docearNodeModel == null && olddocearNodeModel != null) { node.removeExtension(DocearNodeMonitoringExtension.class); } } public static boolean containsKey(NodeModel node, DocearExtensionKey key){ DocearNodeMonitoringExtension extension = getModel(node); if(extension != null){ return extension.containsKey(key.toString()); } return false; } public static DocearNodeMonitoringExtension setEntry(NodeModel node, DocearExtensionKey key, Object value){ return setEntry(node, key.toString(), value); } public static DocearNodeMonitoringExtension setEntry(NodeModel node, String key, Object value){ DocearNodeMonitoringExtension extension = getModel(node); if(extension == null){ extension = new DocearNodeMonitoringExtension(); extension.putEntry(key, value); setModel(node, extension); } else{ extension.putEntry(key, value); } return extension; } }