public void init() { // Build up a bunch of TreeNodes. We use DefaultMutableTreeNode because // the // DefaultTreeModel can use it to build a complete tree. DefaultMutableTreeNode root = new DefaultMutableTreeNode("Root"); // Build our tree model starting at the root node, and then make a JTree // out // of that. treeModel = new DefaultTreeModel(root); tree = new JTree(treeModel); // Build the tree up from the nodes we created. // createPainToTree(treeModel, root, DataToTest.getPersonCollection()); // createPainToTree2(treeModel, root, DataToTest.getPersonCollection()); createPainToTree3true(treeModel, root, DataToTest.getPersonCollection()); // treeModel.insertNodeInto(subroot, root, 0); // Or, more succinctly: // subroot.add(leaf1); // root.add(leaf2); tree.setRootVisible(true); // Display it. getContentPane().add(new JScrollPane(tree), BorderLayout.CENTER); // MyTreeTableModel myTreeTableModel=new MyTreeTableModel(root); // JTable jTable=new JTable(new TreeTableModelAdapter(myTreeTableModel,tree)); // getContentPane().add(new JScrollPane(jTable), BorderLayout.CENTER); }
public GAGenerationTreePanel(GAObjectMonitor monitor, String parentNodeTitle) { super(); selectedChildrenPaths = new Vector(); generationNumber = 1; saveNumber = 0; generations = new DefaultMutableTreeNode(parentNodeTitle); gaMonitor = monitor; setLayout(new BorderLayout()); tree = new JTree(generations); tree.setShowsRootHandles(true); tree.setRootVisible(true); tree.putClientProperty("JTree.lineStyle", "Angled"); // Add Action Listeners MyTreeSelectionListener listener = new MyTreeSelectionListener(monitor.getSelectionInfoPanel()); MyTreeClickListener mlistener = new MyTreeClickListener(); tree.addTreeSelectionListener(listener); tree.addMouseListener(mlistener); // Add Scroll Plane scrollPane = new JScrollPane(tree); add(scrollPane, BorderLayout.CENTER); // Add Menu Bar Functionality createMenuBar(); add(menuBar, BorderLayout.NORTH); }
private void initTree() { myTree.setRootVisible(false); myTree.setShowsRootHandles(true); SmartExpander.installOn(myTree); TreeUtil.installActions(myTree); EditSourceOnDoubleClickHandler.install(myTree); myTree.addKeyListener( new KeyAdapter() { @Override public void keyPressed(KeyEvent e) { if (KeyEvent.VK_ENTER == e.getKeyCode()) { TreePath leadSelectionPath = myTree.getLeadSelectionPath(); if (leadSelectionPath == null) return; DefaultMutableTreeNode node = (DefaultMutableTreeNode) leadSelectionPath.getLastPathComponent(); if (node instanceof UsageNode) { final Usage usage = ((UsageNode) node).getUsage(); usage.navigate(false); usage.highlightInEditor(); } else if (node.isLeaf()) { Navigatable navigatable = getNavigatableForNode(node); if (navigatable != null && navigatable.canNavigate()) { navigatable.navigate(false); } } } } }); TreeUtil.selectFirstNode(myTree); PopupHandler.installPopupHandler( myTree, IdeActions.GROUP_USAGE_VIEW_POPUP, ActionPlaces.USAGE_VIEW_POPUP); // TODO: install speed search. Not in openapi though. It makes sense to create a common // TreeEnchancer service. }
public JTreeAdapterBreadCrumbTest() { super("BreadCrumb test"); File[] roots = File.listRoots(); FileTreeNode rootTreeNode = new FileTreeNode(roots); JTree tree = new JTree(rootTreeNode); tree.setRootVisible(false); tree.setCellRenderer(new FileTreeCellRenderer()); this.bar = new BreadcrumbTreeAdapterSelector(tree); this.bar .getModel() .addPathListener( new BreadcrumbPathListener() { @Override public void breadcrumbPathEvent(BreadcrumbPathEvent event) { SwingUtilities.invokeLater( new Runnable() { @Override public void run() { final List<BreadcrumbItem<Object>> newPath = bar.getModel().getItems(); System.out.println("New path is "); for (BreadcrumbItem<Object> item : newPath) { FileTreeNode node = (FileTreeNode) item.getData(); if (node.file == null) continue; System.out.println("\t" + node.file.getName()); } if (newPath.size() > 0) { SwingWorker<List<StringValuePair<Object>>, Void> worker = new SwingWorker<List<StringValuePair<Object>>, Void>() { @Override protected List<StringValuePair<Object>> doInBackground() throws Exception { return bar.getCallback().getLeafs(newPath); } @Override protected void done() { try { FileListModel model = new FileListModel(); List<StringValuePair<Object>> leafs = get(); for (StringValuePair<Object> leaf : leafs) { FileTreeNode node = (FileTreeNode) leaf.getValue(); model.add(node.file); } model.sort(); fileList.setModel(model); } catch (Exception exc) { } } }; worker.execute(); } return; } }); } }); this.setLayout(new BorderLayout()); this.add(bar, BorderLayout.NORTH); this.fileList = new JList(); this.fileList.setCellRenderer(new FileListRenderer()); JScrollPane fileListScrollPane = new JScrollPane(this.fileList); fileListScrollPane.setBorder(new TitledBorder("File list")); this.add(fileListScrollPane, BorderLayout.CENTER); }
public CustomizableActionsPanel() { //noinspection HardCodedStringLiteral Group rootGroup = new Group("root", null, null); final DefaultMutableTreeNode root = new DefaultMutableTreeNode(rootGroup); DefaultTreeModel model = new DefaultTreeModel(root); myActionsTree.setModel(model); myActionsTree.setRootVisible(false); myActionsTree.setShowsRootHandles(true); UIUtil.setLineStyleAngled(myActionsTree); myActionsTree.setCellRenderer(new MyTreeCellRenderer()); setButtonsDisabled(); final ActionManager actionManager = ActionManager.getInstance(); myActionsTree .getSelectionModel() .addTreeSelectionListener( new TreeSelectionListener() { public void valueChanged(TreeSelectionEvent e) { final TreePath[] selectionPaths = myActionsTree.getSelectionPaths(); final boolean isSingleSelection = selectionPaths != null && selectionPaths.length == 1; myAddActionButton.setEnabled(isSingleSelection); if (isSingleSelection) { final DefaultMutableTreeNode node = (DefaultMutableTreeNode) selectionPaths[0].getLastPathComponent(); String actionId = getActionId(node); if (actionId != null) { final AnAction action = actionManager.getAction(actionId); myEditIconButton.setEnabled( action != null && action.getTemplatePresentation() != null); } else { myEditIconButton.setEnabled(false); } } else { myEditIconButton.setEnabled(false); } myAddSeparatorButton.setEnabled(isSingleSelection); myRemoveActionButton.setEnabled(selectionPaths != null); if (selectionPaths != null) { for (TreePath selectionPath : selectionPaths) { if (selectionPath.getPath() != null && selectionPath.getPath().length <= 2) { setButtonsDisabled(); return; } } } myMoveActionUpButton.setEnabled(isMoveSupported(myActionsTree, -1)); myMoveActionDownButton.setEnabled(isMoveSupported(myActionsTree, 1)); myRestoreDefaultButton.setEnabled(!findActionsUnderSelection().isEmpty()); } }); myAddActionButton.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent e) { final List<TreePath> expandedPaths = TreeUtil.collectExpandedPaths(myActionsTree); final TreePath selectionPath = myActionsTree.getLeadSelectionPath(); if (selectionPath != null) { DefaultMutableTreeNode node = (DefaultMutableTreeNode) selectionPath.getLastPathComponent(); final FindAvailableActionsDialog dlg = new FindAvailableActionsDialog(); dlg.show(); if (dlg.isOK()) { final Set<Object> toAdd = dlg.getTreeSelectedActionIds(); if (toAdd == null) return; for (final Object o : toAdd) { final ActionUrl url = new ActionUrl( ActionUrl.getGroupPath(new TreePath(node.getPath())), o, ActionUrl.ADDED, node.getParent().getIndex(node) + 1); addCustomizedAction(url); ActionUrl.changePathInActionsTree(myActionsTree, url); if (o instanceof String) { DefaultMutableTreeNode current = new DefaultMutableTreeNode(url.getComponent()); current.setParent((DefaultMutableTreeNode) node.getParent()); editToolbarIcon((String) o, current); } } ((DefaultTreeModel) myActionsTree.getModel()).reload(); } } TreeUtil.restoreExpandedPaths(myActionsTree, expandedPaths); } }); myEditIconButton.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent e) { myRestoreAllDefaultButton.setEnabled(true); final List<TreePath> expandedPaths = TreeUtil.collectExpandedPaths(myActionsTree); final TreePath selectionPath = myActionsTree.getLeadSelectionPath(); if (selectionPath != null) { EditIconDialog dlg = new EditIconDialog((DefaultMutableTreeNode) selectionPath.getLastPathComponent()); dlg.show(); if (dlg.isOK()) { myActionsTree.repaint(); } } TreeUtil.restoreExpandedPaths(myActionsTree, expandedPaths); } }); myAddSeparatorButton.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent e) { final List<TreePath> expandedPaths = TreeUtil.collectExpandedPaths(myActionsTree); final TreePath selectionPath = myActionsTree.getLeadSelectionPath(); if (selectionPath != null) { DefaultMutableTreeNode node = (DefaultMutableTreeNode) selectionPath.getLastPathComponent(); final ActionUrl url = new ActionUrl( ActionUrl.getGroupPath(selectionPath), Separator.getInstance(), ActionUrl.ADDED, node.getParent().getIndex(node) + 1); ActionUrl.changePathInActionsTree(myActionsTree, url); addCustomizedAction(url); ((DefaultTreeModel) myActionsTree.getModel()).reload(); } TreeUtil.restoreExpandedPaths(myActionsTree, expandedPaths); } }); myRemoveActionButton.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent e) { final List<TreePath> expandedPaths = TreeUtil.collectExpandedPaths(myActionsTree); final TreePath[] selectionPath = myActionsTree.getSelectionPaths(); if (selectionPath != null) { for (TreePath treePath : selectionPath) { final ActionUrl url = CustomizationUtil.getActionUrl(treePath, ActionUrl.DELETED); ActionUrl.changePathInActionsTree(myActionsTree, url); addCustomizedAction(url); } ((DefaultTreeModel) myActionsTree.getModel()).reload(); } TreeUtil.restoreExpandedPaths(myActionsTree, expandedPaths); } }); myMoveActionUpButton.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent e) { final List<TreePath> expandedPaths = TreeUtil.collectExpandedPaths(myActionsTree); final TreePath[] selectionPath = myActionsTree.getSelectionPaths(); if (selectionPath != null) { for (TreePath treePath : selectionPath) { final ActionUrl url = CustomizationUtil.getActionUrl(treePath, ActionUrl.MOVE); final int absolutePosition = url.getAbsolutePosition(); url.setInitialPosition(absolutePosition); url.setAbsolutePosition(absolutePosition - 1); ActionUrl.changePathInActionsTree(myActionsTree, url); addCustomizedAction(url); } ((DefaultTreeModel) myActionsTree.getModel()).reload(); TreeUtil.restoreExpandedPaths(myActionsTree, expandedPaths); for (TreePath path : selectionPath) { myActionsTree.addSelectionPath(path); } } } }); myMoveActionDownButton.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent e) { final List<TreePath> expandedPaths = TreeUtil.collectExpandedPaths(myActionsTree); final TreePath[] selectionPath = myActionsTree.getSelectionPaths(); if (selectionPath != null) { for (int i = selectionPath.length - 1; i >= 0; i--) { TreePath treePath = selectionPath[i]; final ActionUrl url = CustomizationUtil.getActionUrl(treePath, ActionUrl.MOVE); final int absolutePosition = url.getAbsolutePosition(); url.setInitialPosition(absolutePosition); url.setAbsolutePosition(absolutePosition + 1); ActionUrl.changePathInActionsTree(myActionsTree, url); addCustomizedAction(url); } ((DefaultTreeModel) myActionsTree.getModel()).reload(); TreeUtil.restoreExpandedPaths(myActionsTree, expandedPaths); for (TreePath path : selectionPath) { myActionsTree.addSelectionPath(path); } } } }); myRestoreAllDefaultButton.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent e) { mySelectedSchema.copyFrom(new CustomActionsSchema()); patchActionsTreeCorrespondingToSchema(root); myRestoreAllDefaultButton.setEnabled(false); } }); myRestoreDefaultButton.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent e) { final List<ActionUrl> otherActions = new ArrayList<ActionUrl>(mySelectedSchema.getActions()); otherActions.removeAll(findActionsUnderSelection()); mySelectedSchema.copyFrom(new CustomActionsSchema()); for (ActionUrl otherAction : otherActions) { mySelectedSchema.addAction(otherAction); } final List<TreePath> treePaths = TreeUtil.collectExpandedPaths(myActionsTree); patchActionsTreeCorrespondingToSchema(root); restorePathsAfterTreeOptimization(treePaths); myRestoreDefaultButton.setEnabled(false); } }); patchActionsTreeCorrespondingToSchema(root); myTreeExpansionMonitor = TreeExpansionMonitor.install(myActionsTree); }
/** * Constructs a X509 certificate panel. * * @param certificates <tt>X509Certificate</tt> objects */ public X509CertificatePanel(Certificate[] certificates) { setLayout(new BorderLayout(5, 5)); // Certificate chain list TransparentPanel topPanel = new TransparentPanel(new BorderLayout()); topPanel.add( new JLabel( "<html><body><b>" + R.getI18NString("service.gui.CERT_INFO_CHAIN") + "</b></body></html>"), BorderLayout.NORTH); DefaultMutableTreeNode top = new DefaultMutableTreeNode(); DefaultMutableTreeNode previous = top; for (int i = certificates.length - 1; i >= 0; i--) { Certificate cert = certificates[i]; DefaultMutableTreeNode next = new DefaultMutableTreeNode(cert); previous.add(next); previous = next; } JTree tree = new JTree(top); tree.setBorder(new BevelBorder(BevelBorder.LOWERED)); tree.setRootVisible(false); tree.setExpandsSelectedPaths(true); tree.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION); tree.setCellRenderer( new DefaultTreeCellRenderer() { @Override public Component getTreeCellRendererComponent( JTree tree, Object value, boolean sel, boolean expanded, boolean leaf, int row, boolean hasFocus) { JLabel component = (JLabel) super.getTreeCellRendererComponent( tree, value, sel, expanded, leaf, row, hasFocus); if (value instanceof DefaultMutableTreeNode) { Object o = ((DefaultMutableTreeNode) value).getUserObject(); if (o instanceof X509Certificate) { component.setText(getSimplifiedName((X509Certificate) o)); } else { // We don't know how to represent this certificate type, // let's use the first 20 characters String text = o.toString(); if (text.length() > 20) { text = text.substring(0, 20); } component.setText(text); } } return component; } }); tree.getSelectionModel() .addTreeSelectionListener( new TreeSelectionListener() { @Override public void valueChanged(TreeSelectionEvent e) { valueChangedPerformed(e); } }); tree.setSelectionPath( new TreePath((((DefaultTreeModel) tree.getModel()).getPathToRoot(previous)))); topPanel.add(tree, BorderLayout.CENTER); add(topPanel, BorderLayout.NORTH); // Certificate details pane Caret caret = infoTextPane.getCaret(); if (caret instanceof DefaultCaret) { ((DefaultCaret) caret).setUpdatePolicy(DefaultCaret.NEVER_UPDATE); } /* * Make JEditorPane respect our default font because we will be using it * to just display text. */ infoTextPane.putClientProperty(JEditorPane.HONOR_DISPLAY_PROPERTIES, true); infoTextPane.setOpaque(false); infoTextPane.setEditable(false); infoTextPane.setContentType("text/html"); infoTextPane.setText(toString(certificates[0])); final JScrollPane certScroll = new JScrollPane(infoTextPane); certScroll.setPreferredSize(new Dimension(300, 500)); add(certScroll, BorderLayout.CENTER); }