示例#1
0
 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);
     }
   }
 }
示例#2
0
  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));
  }