Пример #1
0
  public TriggersTree(TriggersConfigurationDialog tcd) {
    super(new GridLayout(1, 0));

    this.tcd = tcd;

    rootNode = new DefaultMutableTreeNode("Root Node");
    treeModel = new DefaultTreeModel(rootNode);

    tree = new JTree(treeModel);
    treeRender = new TriggersTreeRender();
    treeCellEditor = new TriggersTreeCellEditor(tree, treeRender);

    tree.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);
    tree.setShowsRootHandles(false);
    tree.setRootVisible(false);
    tree.setDragEnabled(true);
    tree.setEditable(true);
    tree.addTreeSelectionListener(this);
    tree.setCellEditor(treeCellEditor);

    ToolTipManager.sharedInstance().registerComponent(tree);
    tree.setCellRenderer(treeRender);

    JScrollPane scrollPane = new JScrollPane(tree);
    add(scrollPane);

    reload();

    for (Trigger trigger : Main.getTriggerManager().getTriggers()) {
      setSelectedTrigger(trigger);
      return;
    }
  }
Пример #2
0
  public SwingDnDFrame() {
    setTitle("SwingDnDTest");
    JTabbedPane tabbedPane = new JTabbedPane();

    JList list = SampleComponents.list();
    tabbedPane.addTab("List", list);
    JTable table = SampleComponents.table();
    tabbedPane.addTab("Table", table);
    JTree tree = SampleComponents.tree();
    tabbedPane.addTab("Tree", tree);
    JFileChooser fileChooser = new JFileChooser();
    tabbedPane.addTab("File Chooser", fileChooser);
    JColorChooser colorChooser = new JColorChooser();
    tabbedPane.addTab("Color Chooser", colorChooser);

    final JTextArea textArea = new JTextArea(4, 40);
    JScrollPane scrollPane = new JScrollPane(textArea);
    scrollPane.setBorder(new TitledBorder(new EtchedBorder(), "Drag text here"));

    JTextField textField = new JTextField("Drag color here");
    textField.setTransferHandler(new TransferHandler("background"));

    tabbedPane.addChangeListener(
        new ChangeListener() {
          public void stateChanged(ChangeEvent e) {
            textArea.setText("");
          }
        });

    tree.setDragEnabled(true);
    table.setDragEnabled(true);
    list.setDragEnabled(true);
    fileChooser.setDragEnabled(true);
    colorChooser.setDragEnabled(true);
    textField.setDragEnabled(true);

    add(tabbedPane, BorderLayout.NORTH);
    add(scrollPane, BorderLayout.CENTER);
    add(textField, BorderLayout.SOUTH);
    pack();
  }
  public ObjectInspector(Db4oViewer viewer, Object object) {
    this.viewer = viewer;
    this.object = object;

    this.setPreferredSize(new Dimension(600, 800));
    BorderLayout thisLayout = new BorderLayout();
    getContentPane().setLayout(thisLayout);
    this.setLocation(400, 150);

    {
      jSplitPane1 = new JSplitPane();
      getContentPane().add(jSplitPane1, BorderLayout.NORTH);
      jSplitPane1.setOrientation(JSplitPane.VERTICAL_SPLIT);
      {
        jPanel1 = new JPanel();
        jSplitPane1.add(jPanel1, JSplitPane.BOTTOM);
        BorderLayout jPanel1Layout = new BorderLayout();
        jPanel1.setLayout(jPanel1Layout);
        jPanel1.setPreferredSize(new java.awt.Dimension(590, 191));
        {
          jPanel2 = new JPanel();
          FlowLayout jPanel2Layout = new FlowLayout();
          jPanel1.add(jPanel2, BorderLayout.SOUTH);
          jPanel2.setPreferredSize(new java.awt.Dimension(592, 33));
          jPanel2.setLayout(jPanel2Layout);
          {
            saveButton = new JButton();
            jPanel2.add(saveButton);
            saveButton.setText("Save");
            saveButton.setActionCommand("save");
            saveButton.addActionListener(this);
          }
          {
            deleteButton = new JButton();
            jPanel2.add(deleteButton);
            deleteButton.setText("Delete");
            deleteButton.setActionCommand("delete");
            deleteButton.addActionListener(this);
          }
          {
            refreshButton = new JButton();
            jPanel2.add(refreshButton);
            refreshButton.setText("Refresh");
            refreshButton.setActionCommand("refresh");
            refreshButton.addActionListener(this);
          }
        }
        {
          jPanel3 = new JPanel();
          jPanel1.add(jPanel3, BorderLayout.NORTH);
          FlowLayout jPanel3Layout = new FlowLayout();
          jPanel3.setLayout(jPanel3Layout);
          jPanel3.setPreferredSize(new java.awt.Dimension(592, 114));
          {
            fieldEdit = new JTextArea();
            jPanel3.add(fieldEdit);
            fieldEdit.setPreferredSize(new java.awt.Dimension(324, 92));
            fieldEdit.setBorder(BorderFactory.createEtchedBorder(BevelBorder.LOWERED));
          }
          {
            editApply = new JButton();
            jPanel3.add(editApply);
            editApply.setText("Apply");
            editApply.setActionCommand("apply");
            editApply.addActionListener(this);
          }
        }
      }
      {
        jScrollPane1 = new JScrollPane();
        jSplitPane1.add(jScrollPane1, JSplitPane.TOP);
        {
          jTree1 = new AutoScrollingJTree(new DefaultMutableTreeNode());
          jScrollPane1.setViewportView(jTree1);
          jTree1.setDragEnabled(true);

          TreeDragSource ds = new TreeDragSource(jTree1, DnDConstants.ACTION_COPY_OR_MOVE);
          TreeDropTarget dt = new TreeDropTarget(jTree1);
        }
      }
    }

    if (object != null) {
      this.setTitle(object.toString());
    }

    System.out.println(object);

    buildTree();
    jTree1.addMouseListener(this);

    this.pack();
    this.setVisible(true);
  }
Пример #4
0
  public TreeView(final Model model) {
    super(model, "ProjectView");

    ProjecTreeModel pModel =
        new ProjecTreeModel(model) {

          @Override
          public void valueForPathChanged(TreePath path, Object newValue) {
            Object o = path.getLastPathComponent();

            if (o instanceof TreeNode) {
              model.setName((TreeNode) o, (String) newValue);
            }
          }
        };

    tree =
        new JTree(pModel) {

          @Override
          public boolean isPathEditable(TreePath path) {
            Object p = Model.getParent(path.getLastPathComponent());

            if (p != model.getRoot()) {

              return true;
            }

            return false;
          }

          @Override
          public String getToolTipText(MouseEvent event) {

            TreePath path = tree.getPathForLocation(event.getX(), event.getY());

            if (path != null) {
              Object t = path.getLastPathComponent();

              if (t instanceof TreeNode) {
                return "Id: " + Integer.toString(((TreeNode) t).getId());
              }
            }
            return "";
          };
        };

    ToolTipManager.sharedInstance().registerComponent(tree);

    Renderer r = new Renderer();
    tree.setCellRenderer(r);
    tree.setRootVisible(false);
    tree.setToggleClickCount(1);
    tree.setShowsRootHandles(true);
    tree.setEditable(true);

    DefaultTreeCellRenderer renderer = (DefaultTreeCellRenderer) tree.getCellRenderer();

    JTextField comboBox = new JTextField();
    comboBox.setEditable(true);
    DefaultCellEditor comboEditor = new DefaultCellEditor(comboBox);
    comboEditor.setClickCountToStart(99);

    TreeCellEditor editor = new DefaultTreeCellEditor(tree, renderer, comboEditor);

    tree.setCellEditor(editor);
    tree.addKeyListener(
        new KeyAdapter() {

          @Override
          public void keyReleased(KeyEvent e) {
            if (e.getKeyCode() == KeyEvent.VK_F2) {
              tree.startEditingAtPath(tree.getSelectionPath());
            }
          }
        });

    this.setLayout(new BorderLayout());

    this.add(new JScrollPane(tree), BorderLayout.CENTER);

    tree.setDragEnabled(false);
    //      expandListener();
    drag = new TreeDragSource(tree, DnDConstants.ACTION_COPY_OR_MOVE);
  }
Пример #5
0
    @Override
    public void addGui(PreferenceTabbedPane gui) {
      actionsTree.setCellRenderer(
          new DefaultTreeCellRenderer() {
            @Override
            public Component getTreeCellRendererComponent(
                JTree tree,
                Object value,
                boolean sel,
                boolean expanded,
                boolean leaf,
                int row,
                boolean hasFocus) {
              DefaultMutableTreeNode node = (DefaultMutableTreeNode) value;
              JLabel comp =
                  (JLabel)
                      super.getTreeCellRendererComponent(
                          tree, value, sel, expanded, leaf, row, hasFocus);
              if (node.getUserObject() == null) {
                comp.setText(tr("Separator"));
                comp.setIcon(ImageProvider.get("preferences/separator"));
              } else if (node.getUserObject() instanceof Action) {
                Action action = (Action) node.getUserObject();
                comp.setText((String) action.getValue(Action.NAME));
                comp.setIcon((Icon) action.getValue(Action.SMALL_ICON));
              }
              return comp;
            }
          });

      ListCellRenderer renderer =
          new DefaultListCellRenderer() {
            @Override
            public Component getListCellRendererComponent(
                JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
              String s;
              Icon i;
              ActionDefinition action = (ActionDefinition) value;
              if (!action.isSeparator()) {
                s = action.getDisplayName();
                i = action.getDisplayIcon();
              } else {
                i = ImageProvider.get("preferences/separator");
                s = tr("Separator");
              }
              JLabel l =
                  (JLabel)
                      super.getListCellRendererComponent(list, s, index, isSelected, cellHasFocus);
              l.setIcon(i);
              return l;
            }
          };
      selectedList.setCellRenderer(renderer);
      selectedList.addListSelectionListener(
          new ListSelectionListener() {
            @Override
            public void valueChanged(ListSelectionEvent e) {
              boolean sel = selectedList.getSelectedIndex() != -1;
              if (sel) {
                actionsTree.clearSelection();
                ActionDefinition action =
                    (ActionDefinition) selected.get(selectedList.getSelectedIndex());
                actionParametersModel.setCurrentAction(action);
                actionParametersPanel.setVisible(actionParametersModel.getRowCount() > 0);
              }
              updateEnabledState();
            }
          });

      selectedList.setDragEnabled(true);
      selectedList.setTransferHandler(
          new TransferHandler() {
            @Override
            protected Transferable createTransferable(JComponent c) {
              List<ActionDefinition> actions = new ArrayList<ActionDefinition>();
              for (Object o : ((JList) c).getSelectedValues()) {
                actions.add((ActionDefinition) o);
              }
              return new ActionTransferable(actions);
            }

            @Override
            public int getSourceActions(JComponent c) {
              return TransferHandler.MOVE;
            }

            @Override
            public boolean canImport(JComponent comp, DataFlavor[] transferFlavors) {
              for (DataFlavor f : transferFlavors) {
                if (ACTION_FLAVOR.equals(f)) return true;
              }
              return false;
            }

            @Override
            public void exportAsDrag(JComponent comp, InputEvent e, int action) {
              super.exportAsDrag(comp, e, action);
              movingComponent = "list";
            }

            @Override
            public boolean importData(JComponent comp, Transferable t) {
              try {
                int dropIndex = selectedList.locationToIndex(selectedList.getMousePosition(true));
                List<?> draggedData = (List<?>) t.getTransferData(ACTION_FLAVOR);

                Object leadItem = dropIndex >= 0 ? selected.elementAt(dropIndex) : null;
                int dataLength = draggedData.size();

                if (leadItem != null) {
                  for (Object o : draggedData) {
                    if (leadItem.equals(o)) return false;
                  }
                }

                int dragLeadIndex = -1;
                boolean localDrop = "list".equals(movingComponent);

                if (localDrop) {
                  dragLeadIndex = selected.indexOf(draggedData.get(0));
                  for (Object o : draggedData) {
                    selected.removeElement(o);
                  }
                }
                int[] indices = new int[dataLength];

                if (localDrop) {
                  int adjustedLeadIndex = selected.indexOf(leadItem);
                  int insertionAdjustment = dragLeadIndex <= adjustedLeadIndex ? 1 : 0;
                  for (int i = 0; i < dataLength; i++) {
                    selected.insertElementAt(
                        draggedData.get(i), adjustedLeadIndex + insertionAdjustment + i);
                    indices[i] = adjustedLeadIndex + insertionAdjustment + i;
                  }
                } else {
                  for (int i = 0; i < dataLength; i++) {
                    selected.add(dropIndex, draggedData.get(i));
                    indices[i] = dropIndex + i;
                  }
                }
                selectedList.clearSelection();
                selectedList.setSelectedIndices(indices);
                movingComponent = "";
                return true;
              } catch (Exception e) {
                e.printStackTrace();
              }
              return false;
            }

            @Override
            protected void exportDone(JComponent source, Transferable data, int action) {
              if (movingComponent.equals("list")) {
                try {
                  List<?> draggedData = (List<?>) data.getTransferData(ACTION_FLAVOR);
                  boolean localDrop = selected.contains(draggedData.get(0));
                  if (localDrop) {
                    int[] indices = selectedList.getSelectedIndices();
                    Arrays.sort(indices);
                    for (int i = indices.length - 1; i >= 0; i--) {
                      selected.remove(indices[i]);
                    }
                  }
                } catch (Exception e) {
                  e.printStackTrace();
                }
                movingComponent = "";
              }
            }
          });

      actionsTree.setTransferHandler(
          new TransferHandler() {
            private static final long serialVersionUID = 1L;

            @Override
            public int getSourceActions(JComponent c) {
              return TransferHandler.MOVE;
            }

            @Override
            protected void exportDone(JComponent source, Transferable data, int action) {}

            @Override
            protected Transferable createTransferable(JComponent c) {
              TreePath[] paths = actionsTree.getSelectionPaths();
              List<ActionDefinition> dragActions = new ArrayList<ActionDefinition>();
              for (TreePath path : paths) {
                DefaultMutableTreeNode node = (DefaultMutableTreeNode) path.getLastPathComponent();
                Object obj = node.getUserObject();
                if (obj == null) {
                  dragActions.add(ActionDefinition.getSeparator());
                } else if (obj instanceof Action) {
                  dragActions.add(new ActionDefinition((Action) obj));
                }
              }
              return new ActionTransferable(dragActions);
            }
          });
      actionsTree.setDragEnabled(true);
      actionsTree
          .getSelectionModel()
          .addTreeSelectionListener(
              new TreeSelectionListener() {
                @Override
                public void valueChanged(TreeSelectionEvent e) {
                  updateEnabledState();
                }
              });

      final JPanel left = new JPanel(new GridBagLayout());
      left.add(new JLabel(tr("Toolbar")), GBC.eol());
      left.add(new JScrollPane(selectedList), GBC.std().fill(GBC.BOTH));

      final JPanel right = new JPanel(new GridBagLayout());
      right.add(new JLabel(tr("Available")), GBC.eol());
      right.add(new JScrollPane(actionsTree), GBC.eol().fill(GBC.BOTH));

      final JPanel buttons = new JPanel(new GridLayout(6, 1));
      buttons.add(upButton = createButton("up"));
      buttons.add(addButton = createButton("<"));
      buttons.add(removeButton = createButton(">"));
      buttons.add(downButton = createButton("down"));
      updateEnabledState();

      final JPanel p = new JPanel();
      p.setLayout(
          new LayoutManager() {
            @Override
            public void addLayoutComponent(String name, Component comp) {}

            @Override
            public void removeLayoutComponent(Component comp) {}

            @Override
            public Dimension minimumLayoutSize(Container parent) {
              Dimension l = left.getMinimumSize();
              Dimension r = right.getMinimumSize();
              Dimension b = buttons.getMinimumSize();
              return new Dimension(
                  l.width + b.width + 10 + r.width, l.height + b.height + 10 + r.height);
            }

            @Override
            public Dimension preferredLayoutSize(Container parent) {
              Dimension l = new Dimension(200, 200); // left.getPreferredSize();
              Dimension r = new Dimension(200, 200); // right.getPreferredSize();
              return new Dimension(
                  l.width + r.width + 10 + buttons.getPreferredSize().width,
                  Math.max(l.height, r.height));
            }

            @Override
            public void layoutContainer(Container parent) {
              Dimension d = p.getSize();
              Dimension b = buttons.getPreferredSize();
              int width = (d.width - 10 - b.width) / 2;
              left.setBounds(new Rectangle(0, 0, width, d.height));
              right.setBounds(new Rectangle(width + 10 + b.width, 0, width, d.height));
              buttons.setBounds(
                  new Rectangle(width + 5, d.height / 2 - b.height / 2, b.width, b.height));
            }
          });
      p.add(left);
      p.add(buttons);
      p.add(right);

      actionParametersPanel = new JPanel(new GridBagLayout());
      actionParametersPanel.add(
          new JLabel(tr("Action parameters")), GBC.eol().insets(0, 10, 0, 20));
      actionParametersTable.getColumnModel().getColumn(0).setHeaderValue(tr("Parameter name"));
      actionParametersTable.getColumnModel().getColumn(1).setHeaderValue(tr("Parameter value"));
      actionParametersPanel.add(
          actionParametersTable.getTableHeader(), GBC.eol().fill(GBC.HORIZONTAL));
      actionParametersPanel.add(
          actionParametersTable, GBC.eol().fill(GBC.BOTH).insets(0, 0, 0, 10));
      actionParametersPanel.setVisible(false);

      JPanel panel = gui.createPreferenceTab(this);
      panel.add(p, GBC.eol().fill(GBC.BOTH));
      panel.add(actionParametersPanel, GBC.eol().fill(GBC.HORIZONTAL));
      selected.removeAllElements();
      for (ActionDefinition actionDefinition : getDefinedActions()) {
        selected.addElement(actionDefinition);
      }
    }