Example #1
0
  public Node buildAgentCtrl() {
    _agentListPanel = new TitledPanel("Agents");
    _agentListPanel.getStyleClass().add("agents-panel");

    Node pane = _agentListPanel.getPane();
    _agentListPanel.setFillWidth(true);
    pane.setOnDragOver(
        e -> {
          DnD.LocalClipboard clipboard = getLocalClipboard();
          if (clipboard.hasContent(DnD.VALUE_FORMAT)) {
            Field field = clipboard.get(DnD.FIELD_FORMAT, Field.class);
            if (_acceptableFields.contains(field.getName())) {
              e.acceptTransferModes(TransferMode.COPY);
              e.consume();
            }
          }
        });

    pane.setOnDragDropped(
        e -> {
          DnD.LocalClipboard clipboard = getLocalClipboard();

          String value = clipboard.get(DnD.VALUE_FORMAT, Object.class).toString();
          String field = clipboard.get(DnD.FIELD_FORMAT, Field.class).getName();

          // ensure we don't already have this field
          for (AgentInfo agent : _agents) {
            if (agent.field.equals(field) && agent.value.equals(value)) {
              e.consume();
              return;
            }
          }

          addAgent(field, value);
          e.setDropCompleted(true);
          e.consume();
        });

    return _agentListPanel;
  }