예제 #1
0
 private void removeFigureForNode(InternalNodeLayout internalNode) {
   IFigure figure = internalNode.getNode().getFigure();
   GraphLabel label = (GraphLabel) nodeFigureToLabel.get(figure);
   if (label != null && label.getParent() != null) {
     label.getParent().remove(label);
   }
   nodeFigureToLabel.remove(figure);
 }
예제 #2
0
  void updateNodeLabel(InternalNodeLayout internalNode) {
    if (internalNode.isDisposed()) {
      return;
    }
    IFigure figure = internalNode.getNode().getFigure();
    GraphLabel label = (GraphLabel) nodeFigureToLabel.get(figure);
    IFigure fisheye = getFisheyeFigure(figure);
    if (fisheye != null) {
      figure = fisheye;
    }
    if (label == null) {
      label = new GraphLabel(false);
      label.setForegroundColor(ColorConstants.white);
      label.setBackgroundColor(ColorConstants.red);
      FontData fontData = Display.getDefault().getSystemFont().getFontData()[0];
      fontData.setHeight(6);
      label.setFont(new Font(Display.getCurrent(), fontData));
      figure.addFigureListener(nodeFigureListener);
      addLabelForFigure(figure, label);
      nodeFigureToLabel.put(figure, label);
    }

    GraphNode graphNode = internalNode.getNode();
    if (!graphNode.getGraphModel().canExpand(graphNode)
        || graphNode.getGraphModel().canCollapse(graphNode)
        || internalNode.isPruned()) {
      label.setVisible(false);
    } else {
      NodeLayout[] successors = internalNode.getSuccessingNodes();
      int numberOfHiddenSuccessors = 0;
      for (int i = 0; i < successors.length; i++) {
        if (successors[i].isPruned()) {
          numberOfHiddenSuccessors++;
        }
      }
      String labelText = numberOfHiddenSuccessors > 0 ? "" + numberOfHiddenSuccessors : "";
      if (!labelText.equals(label.getText())) {
        label.setText(labelText);
      }
      label.setVisible(true);
    }

    refreshLabelBounds(figure, label);
  }