/** * Add a tabbed pane for the specified case. * * @param refinement The case. * @param newPane True to add the pane prior to the last pane. * @return The pane. */ private JGraph _addTabbedPane(Refinement refinement, boolean newPane) { GraphPane pane = _createGraphPane(refinement); pane.getForegroundLayer().setPickHalo(2); pane.getForegroundEventLayer().setConsuming(false); pane.getForegroundEventLayer().setEnabled(true); pane.getForegroundEventLayer() .addLayerListener( new LayerAdapter() { /** Invoked when the mouse is pressed on a layer or figure. */ public void mousePressed(LayerEvent event) { Component component = event.getComponent(); if (!component.hasFocus()) { component.requestFocus(); } } }); JGraph jgraph = new JGraph(pane); String name = refinement.getName(); jgraph.setName(name); int index = _tabbedPane.getComponentCount(); // Put before the default pane, unless this is the default. if (newPane) { index--; } _tabbedPane.add(jgraph, index); jgraph.setBackground(BACKGROUND_COLOR); // Create a drop target for the jgraph. // FIXME: Should override _setDropIntoEnabled to modify all the drop targets created. new EditorDropTarget(jgraph); return jgraph; }
/** * Construct a Unit Solver Dialog. * * @param dialogTableau The DialogTableau. * @param owner The object that, per the user, appears to be generating the dialog. * @param target The object whose units are being solved. * @param configuration The configuration to use to open the help screen. */ public UnitSolverDialog( DialogTableau dialogTableau, Frame owner, Entity target, Configuration configuration) { super("Solve units for " + target.getName(), dialogTableau, owner, target, configuration); SelectionRenderer tempSelectionRenderer = null; _tableau = ((TableauFrame) owner).getTableau(); _model = (TypedCompositeActor) target; // ((TypedCompositeActor) (((PtolemyEffigy) (_tableau.getContainer())) // .getModel())); BasicGraphFrame parent = (BasicGraphFrame) (_tableau.getFrame()); JGraph jGraph = parent.getJGraph(); GraphPane graphPane = jGraph.getGraphPane(); _controller = graphPane.getGraphController(); _selectionModel = _controller.getSelectionModel(); Interactor interactor = _controller.getEdgeController(new Object()).getEdgeInteractor(); _graphModel = (AbstractBasicGraphModel) _controller.getGraphModel(); _selectionInteractor = (SelectionInteractor) interactor; _defaultSelectionRenderer = _selectionInteractor.getSelectionRenderer(); tempSelectionRenderer = new BasicSelectionRenderer(new BasicEdgeHighlighter()); if (_model == getTarget()) { _entities = _getSelectedNodes(); _relations = _getSelectedRelations(); if (_entities.isEmpty() && _relations.isEmpty()) { _entities = new Vector(_model.entityList(ComponentEntity.class)); _relations = new Vector(_model.relationList()); } } else { _entities = new Vector(); _entities.add(getTarget()); _relations = new Vector(); } _selectionModel.clearSelection(); _selectionInteractor.setSelectionRenderer(tempSelectionRenderer); _showComponents(); _selectionModel.addSelectionListener(this); JPanel fullSolverPanel = new JPanel(); fullSolverPanel.setLayout(new BoxLayout(fullSolverPanel, BoxLayout.Y_AXIS)); fullSolverPanel.setBorder( BorderFactory.createCompoundBorder( BorderFactory.createTitledBorder("Full Solution"), BorderFactory.createEmptyBorder(5, 5, 5, 5))); _runFullSolverButton.addActionListener(this); fullSolverPanel.add(_runFullSolverButton); _fullSolutionResult.setOpaque(true); _fullSolutionResult.setBackground(Color.white); fullSolverPanel.add(_fullSolutionResult); JPanel componentsPanel = new JPanel(); componentsPanel.setLayout(new BoxLayout(componentsPanel, BoxLayout.Y_AXIS)); componentsPanel.setBorder( BorderFactory.createCompoundBorder( BorderFactory.createTitledBorder("Components"), BorderFactory.createEmptyBorder(5, 5, 5, 5))); _setToSelectedButton.setEnabled(false); componentsPanel.add(_setToSelectedButton); _setToSelectedButton.addActionListener(this); componentsPanel.add(_showComponentsButton); _showComponentsButton.addActionListener(this); JPanel topPanel = new JPanel(); topPanel.setLayout(new BoxLayout(topPanel, BoxLayout.X_AXIS)); topPanel.add(fullSolverPanel); topPanel.add(componentsPanel); JPanel minimalSpanPanel = new JPanel(new BorderLayout()); minimalSpanPanel.setBorder( BorderFactory.createCompoundBorder( BorderFactory.createTitledBorder("Minimal Spanning Solutions"), BorderFactory.createEmptyBorder(5, 5, 5, 5))); minimalSpanPanel.add(_runMinimalSpanSolverButton, BorderLayout.NORTH); _runMinimalSpanSolverButton.addActionListener(this); _solutionsListModel = new SolutionListModel(); _solutionsList = new JList(_solutionsListModel); _solutionsList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); _solutionsList.addListSelectionListener(this); JScrollPane scrollPane = new JScrollPane(_solutionsList); minimalSpanPanel.add(scrollPane, BorderLayout.CENTER); JPanel mainPane = new JPanel(); mainPane.setLayout(new BoxLayout(mainPane, BoxLayout.Y_AXIS)); mainPane.add(topPanel); mainPane.add(minimalSpanPanel); setContents(mainPane); }