void refreshGraphIfNeeded() { if (cell != null) { String label = graphComponent.getGraph().getLabel(cell); int istart = label.indexOf("<i>s=") + 5; String labelNoStart = label.substring(istart); String oldStart = label.substring(istart, istart + labelNoStart.indexOf("</i>")); String newStart = jtflStart.getText(); if (!oldStart.equalsIgnoreCase(newStart)) { String newLabel = getNewLabel(AngleItem.START, newStart); graphComponent.getGraph().cellLabelChanged(cell, newLabel, false); } int iEnd = label.indexOf("<i>e=") + 5; String labelNoEnd = label.substring(iEnd); String oldEnd = label.substring(iEnd, iEnd + labelNoEnd.indexOf("</i>")); String newEnd = jtflEnd.getText(); if (!oldEnd.equalsIgnoreCase(newEnd)) { String newLabel = getNewLabel(AngleItem.END, newEnd); graphComponent.getGraph().cellLabelChanged(cell, newLabel, false); } int iInc = label.indexOf("<i>s=") + 5; String labelNoInc = label.substring(iInc); String oldInc = label.substring(iInc, iInc + labelNoInc.indexOf("</i>")); String newInc = jtflInc.getText(); if (!oldInc.equalsIgnoreCase(newInc)) { String newLabel = getNewLabel(AngleItem.INC, newInc); graphComponent.getGraph().cellLabelChanged(cell, newLabel, false); } } }
public CellSelector(final mxGraphComponent gc, final boolean withScroll) { this.gc = gc; this.graph = gc.getGraph(); this.view = graph.getView(); this.model = graph.getModel(); this.withScroll = withScroll; mxIEventListener updateListener = new mxIEventListener() { @Override public void invoke(Object sender, mxEventObject evt) { // System.out.println("Updating marker because of event: "+evt.getName()+" change: // "+evt.getProperties()); Object changes = evt.getProperty("changes"); if (changes != null && changes instanceof List) { for (Object change : ((List) changes)) { if (change != null && change instanceof mxStyleChange) { Object cell = ((mxStyleChange) change).getCell(); mxCellState state = view.getState(cell, false); if (currentSelectedCells.containsKey(cell)) { mxCellMarker thisCellSelector = currentSelectedCells.get(cell); thisCellSelector.unmark(); thisCellSelector.process( state, thisCellSelector.getMarkerColor(null, state, selectSetAsValid), selectSetAsValid); thisCellSelector.mark(); } } } } for (Entry<mxCell, mxCellMarker> el : currentSelectedCells.entrySet()) { el.getValue().unmark(); el.getValue().mark(); } } }; view.addListener(mxEvent.SCALE_AND_TRANSLATE, updateListener); view.addListener(mxEvent.SCALE, updateListener); view.addListener(mxEvent.TRANSLATE, updateListener); model.addListener(mxEvent.CHANGE, updateListener); }
@SuppressWarnings("serial") public JTableRenderer(final Object cell, final mxGraphComponent graphContainer) { this.cell = cell; this.graphContainer = graphContainer; this.graph = graphContainer.getGraph(); setLayout(new BorderLayout()); setBorder( BorderFactory.createCompoundBorder( ShadowBorder.getSharedInstance(), BorderFactory.createBevelBorder(BevelBorder.RAISED))); JPanel title = new JPanel(); title.setBackground(new Color(149, 173, 239)); title.setOpaque(true); title.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 1)); title.setLayout(new BorderLayout()); JLabel icon = new JLabel(new ImageIcon(JTableRenderer.class.getResource(IMAGE_PATH + "preferences.gif"))); icon.setBorder(BorderFactory.createEmptyBorder(0, 2, 0, 1)); title.add(icon, BorderLayout.WEST); JLabel label = new JLabel(String.valueOf(graph.getLabel(cell))); label.setForeground(Color.WHITE); label.setFont(title.getFont().deriveFont(Font.BOLD, 11)); label.setBorder(BorderFactory.createEmptyBorder(0, 1, 0, 2)); title.add(label, BorderLayout.CENTER); JPanel toolBar2 = new JPanel(); toolBar2.setLayout(new FlowLayout(FlowLayout.LEFT, 1, 2)); toolBar2.setOpaque(false); JButton button = new JButton( new AbstractAction( "", new ImageIcon(JTableRenderer.class.getResource(IMAGE_PATH + "minimize.gif"))) { public void actionPerformed(ActionEvent e) { graph.foldCells(graph.isCellCollapsed(cell), false, new Object[] {cell}); ((JButton) e.getSource()) .setIcon( new ImageIcon( JTableRenderer.class.getResource( IMAGE_PATH + ((graph.isCellCollapsed(cell)) ? "maximize.gif" : "minimize.gif")))); } }); button.setPreferredSize(new Dimension(16, 16)); button.setCursor(new Cursor(Cursor.DEFAULT_CURSOR)); button.setToolTipText("Collapse/Expand"); button.setOpaque(false); toolBar2.add(button); title.add(toolBar2, BorderLayout.EAST); add(title, BorderLayout.NORTH); // CellStyle style = // graph.getStylesheet().getCellStyle(graph.getModel(), // cell); // if (style.getStyleClass() == null) { table = new MyTable(); JScrollPane scrollPane = new JScrollPane(table); scrollPane.setCursor(new Cursor(Cursor.DEFAULT_CURSOR)); if (graph.getModel().getChildCount(cell) == 0) { scrollPane.getViewport().setBackground(Color.WHITE); setOpaque(true); add(scrollPane, BorderLayout.CENTER); } scrollPane .getVerticalScrollBar() .addAdjustmentListener( new AdjustmentListener() { public void adjustmentValueChanged(AdjustmentEvent e) { graphContainer.refresh(); } }); label = new JLabel(new ImageIcon(JTableRenderer.class.getResource(IMAGE_PATH + "resize.gif"))); label.setCursor(new Cursor(Cursor.NW_RESIZE_CURSOR)); JPanel panel = new JPanel(); panel.setLayout(new BorderLayout()); panel.add(label, BorderLayout.EAST); add(panel, BorderLayout.SOUTH); ResizeHandler resizeHandler = new ResizeHandler(); label.addMouseListener(resizeHandler); label.addMouseMotionListener(resizeHandler); setMinimumSize(new Dimension(20, 30)); }