package org.infoobject.magicmap.components; import net.sf.magicmap.client.gui.MainFrame; import net.sf.magicmap.client.gui.MainGUI; import net.sf.magicmap.client.gui.utils.GUIBuilder; import net.sf.magicmap.client.gui.views.ConsoleView; import net.sf.magicmap.client.gui.views.MapView; import net.sf.magicmap.client.gui.views.OutlineView; import net.sf.magicmap.client.model.node.INodeSelectionModel; import net.sf.magicmap.client.model.outline.OutlineModel; import net.sf.magicmap.client.visualization.NodeCanvas; import org.infoobject.core.components.ComponentFactory; import org.infoobject.core.components.ModelFactory; import org.infoobject.magicmap.infoobject.ui.util.InformationObjectNodeListFactory; import org.infoobject.magicmap.node.ui.CreateInformationObjectNodeView; import org.infoobject.magicmap.node.ui.InformationNodePresenter; import org.infoobject.magicmap.node.ui.action.LoadAction; import org.infoobject.magicmap.node.ui.action.ShowCreateInformationObjectAction; import org.infoobject.magicmap.visualization.application.VisualizationManager; import org.infoobject.magicmap.visualization.ui.VisualizationView; import javax.swing.*; /** * */ public class GuiComponentFactory implements ComponentFactory { private OutlineModel outlineModel; private NodeCanvas nodeCanvas; private MapView mapView; private OutlineView outlineView; private INodeSelectionModel nodeSelectionModel; private ConsoleView consoleView; private MainFrame mainFrame; private JMenu infoMenu; private InformationObjectNodeListFactory informationObjectNodeListFactory; private InformationNodePresenter informationNodePresenter; private VisualizationManager visualizationManager; private CreateInformationObjectNodeView createInformationObjectView; private VisualizationView visualizationView; private final ModelFactory modelFactory; private final PluginManagerFactory managerFactory; public GuiComponentFactory(ModelFactory modelFactory, PluginManagerFactory managerFactory) { this.modelFactory = modelFactory; this.managerFactory = managerFactory; } /** * * @return */ public OutlineModel getOutlineModel() { if (this.outlineModel == null) { outlineModel = getOutlineView().getOutlineModel(); } return outlineModel; } public VisualizationManager getVisualizationManager() { if (visualizationManager == null) { visualizationManager = new VisualizationManager( modelFactory.getInformationObjectNodeGraph(), modelFactory.getInformationObjectNodeModel(), getNodeCanvas()); } return visualizationManager; } /** * * @return */ public OutlineView getOutlineView() { if (outlineView == null){ outlineView = (OutlineView) getMainGUI().getJComponent("outlineView"); } return outlineView; } /** * * @return */ public NodeCanvas getNodeCanvas() { if (nodeCanvas == null) { nodeCanvas = getMapView().getNodeCanvas(); } return nodeCanvas; } public MapView getMapView() { if (mapView == null) { mapView = (MapView) getMainGUI().getJComponent("mapView"); } return mapView; } public MainGUI getMainGUI() { return MainGUI.getInstance(); } public ConsoleView getConsoleView() { if (consoleView == null) { consoleView = (ConsoleView) getMainGUI().getJComponent("consoleView"); } return consoleView; } /** * * @return */ public INodeSelectionModel getNodeSelectionModel() { if (nodeSelectionModel == null) { nodeSelectionModel = getMainGUI().getNodeSelectionModel(); } return nodeSelectionModel; } public MainFrame getMainFrame() { if (mainFrame == null) { mainFrame = getMainGUI().getMainFrame(); } return mainFrame; } public JMenu getInfoObjectMenu() { if (infoMenu == null) { final JMenuBar bar = getMainFrame().getJMenuBar(); infoMenu = new JMenu("Informationsobjekte"); bar.add(infoMenu); } return infoMenu; } public InformationObjectNodeListFactory getInformationObjectNodeListFactory() { if (informationObjectNodeListFactory == null) { informationObjectNodeListFactory = new InformationObjectNodeListFactory( this.modelFactory.getInformationObjectNodeModel(), modelFactory.getInformationObjectModel()); } return informationObjectNodeListFactory; } public InformationNodePresenter getInformationNodePresenter() { if (informationNodePresenter == null) { informationNodePresenter = new InformationNodePresenter(managerFactory.getInformationNodeManager()); } return informationNodePresenter; } public CreateInformationObjectNodeView getCreateInformationObjectView() { if (createInformationObjectView == null) { createInformationObjectView = new CreateInformationObjectNodeView( managerFactory.getInformationObjectManager(), managerFactory.getCrawlerManager(), getInformationObjectNodeListFactory()); } return createInformationObjectView; } public VisualizationView getVisualizationView() { if (visualizationView == null) { visualizationView = new VisualizationView(getVisualizationManager()); } return visualizationView; } public void start() { managerFactory.start(); ShowCreateInformationObjectAction showCreateAction = new ShowCreateInformationObjectAction(getCreateInformationObjectView(), getMainFrame()); getNodeSelectionModel().addNodeModelSelectionListener(showCreateAction); LoadAction loadAction = new LoadAction(managerFactory.getInformationNodeManager()); getNodeSelectionModel().addNodeModelSelectionListener(loadAction); //factory.getMapView().getMenuContainer().addSeperator(); this.getMapView().getMenuContainer().addNodeMenuItem(this, new JMenuItem(showCreateAction)); this.getMapView().getMenuContainer().addNodeMenuItem(this, new JMenuItem(loadAction)); //this.getMapView().getMenuContainer().addNodeMenuItem(presenter, new JMenuItem(deleteAction)); this.getOutlineView().getMenuContainer().addNodeMenuItem(this, new JMenuItem(showCreateAction)); this.getOutlineView().getMenuContainer().addNodeMenuItem(this, new JMenuItem(loadAction)); //this.getOutlineView().getMenuContainer().addNodeMenuItem(presenter, new JMenuItem(deleteAction)); //To change body of implemented methods use File | Settings | File Templates. modelFactory.getInformationObjectModel().addInformationObjectListener(managerFactory.getTaggingRelationManager()); getInfoObjectMenu().add(GUIBuilder.createCheckBoxMenuItem(getInformationNodePresenter().getEnableAutoLoadAction(), true)); // Visualisierung starten getVisualizationManager().start(); getVisualizationView(); } public void stop() { //To change body of implemented methods use File | Settings | File Templates. } }