public void selectTool(final String actionId) { Object root = myTree.getModel().getRoot(); if (root == null || !(root instanceof CheckedTreeNode)) { return; } final List<CheckedTreeNode> nodes = new ArrayList<CheckedTreeNode>(); new Object() { @SuppressWarnings("unchecked") public void collect(CheckedTreeNode node) { if (node.isLeaf()) { Object userObject = node.getUserObject(); if (userObject instanceof Tool && actionId.equals(((Tool) userObject).getActionId())) { nodes.add(node); } } else { for (int i = 0; i < node.getChildCount(); i++) { final TreeNode child = node.getChildAt(i); if (child instanceof CheckedTreeNode) { collect((CheckedTreeNode) child); } } } } }.collect((CheckedTreeNode) root); if (nodes.isEmpty()) { return; } myTree.getSelectionModel().setSelectionPath(new TreePath(nodes.get(0).getPath())); }
private void insertNewTool(final Tool newTool, boolean setSelection) { CheckedTreeNode groupNode = findGroupNode(newTool.getGroup()); if (groupNode == null) { groupNode = insertNewGroup(new ToolsGroup(newTool.getGroup())); nodeWasInserted(groupNode); } CheckedTreeNode tool = insertNewTool(groupNode, newTool); if (setSelection) { TreePath treePath = new TreePath(tool.getPath()); myTree.expandPath(treePath); myTree.getSelectionModel().setSelectionPath(treePath); } myIsModified = true; }
private void moveNode(final Direction direction) { CheckedTreeNode node = getSelectedNode(); if (node != null) { if (isMovingAvailable(node, direction)) { moveNode(node, direction); if (node.getUserObject() instanceof Tool) { ToolsGroup group = (ToolsGroup) (((CheckedTreeNode) node.getParent()).getUserObject()); Tool tool = (Tool) node.getUserObject(); moveElementInsideGroup(tool, group, direction); } TreePath path = new TreePath(node.getPath()); myTree.getSelectionModel().setSelectionPath(path); myTree.expandPath(path); myTree.requestFocus(); } } }
void reset() { ToolsGroup[] groups = ToolManager.getInstance().getGroups(); for (ToolsGroup group : groups) { insertNewGroup((ToolsGroup) group.copy()); } if ((getTreeRoot()).getChildCount() > 0) { myTree.setSelectionInterval(0, 0); } else { myTree.getSelectionModel().clearSelection(); } (getModel()).nodeStructureChanged(null); TreeUtil.expand(myTree, 5); myIsModified = false; update(); }
ToolsPanel() { myTree = new CheckboxTree( new CheckboxTree.CheckboxTreeCellRenderer() { public void customizeRenderer( final JTree tree, final Object value, final boolean selected, final boolean expanded, final boolean leaf, final int row, final boolean hasFocus) { if (!(value instanceof CheckedTreeNode)) return; Object object = ((CheckedTreeNode) value).getUserObject(); if (object instanceof ToolsGroup) { final String groupName = ((ToolsGroup) object).getName(); if (groupName != null) { getTextRenderer() .append(groupName, SimpleTextAttributes.REGULAR_BOLD_ATTRIBUTES); } else { getTextRenderer() .append("[unnamed group]", SimpleTextAttributes.REGULAR_BOLD_ATTRIBUTES); } } else if (object instanceof Tool) { getTextRenderer() .append( ((Tool) object).getName(), SimpleTextAttributes.REGULAR_BOLD_ATTRIBUTES); } } }, new CheckedTreeNode(null)) { @Override protected void onDoubleClick(final CheckedTreeNode node) { editSelected(); } @Override protected void onNodeStateChanged(final CheckedTreeNode node) { myIsModified = true; } }; myTree.setRootVisible(false); myTree.getEmptyText().setText(ToolsBundle.message("tools.not.configured")); myTree.setSelectionModel(new DefaultTreeSelectionModel()); myTree.getSelectionModel().setSelectionMode(TreeSelectionModel.DISCONTIGUOUS_TREE_SELECTION); setLayout(new BorderLayout()); add( ToolbarDecorator.createDecorator(myTree) .setAddAction( new AnActionButtonRunnable() { @Override public void run(AnActionButton button) { ToolEditorDialog dlg = new ToolEditorDialog(ToolsPanel.this); Tool tool = new Tool(); tool.setUseConsole(true); tool.setFilesSynchronizedAfterRun(true); tool.setShownInMainMenu(true); tool.setShownInEditor(true); tool.setShownInProjectViews(true); tool.setShownInSearchResultsPopup(true); tool.setEnabled(true); dlg.setData(tool, getGroups()); dlg.show(); if (dlg.isOK()) { insertNewTool(dlg.getData(), true); } myTree.requestFocus(); } }) .setRemoveAction( new AnActionButtonRunnable() { @Override public void run(AnActionButton button) { removeSelected(); } }) .setEditAction( new AnActionButtonRunnable() { @Override public void run(AnActionButton button) { editSelected(); myTree.requestFocus(); } }) .setMoveUpAction( new AnActionButtonRunnable() { @Override public void run(AnActionButton button) { moveNode(Direction.UP); myIsModified = true; } }) .setMoveDownAction( new AnActionButtonRunnable() { @Override public void run(AnActionButton button) { moveNode(Direction.DOWN); myIsModified = true; } }) .addExtraAction( myCopyButton = new AnActionButton( ToolsBundle.message("tools.copy.button"), PlatformIcons.COPY_ICON) { @Override public void actionPerformed(AnActionEvent e) { Tool originalTool = getSelectedTool(); if (originalTool != null) { ToolEditorDialog dlg = new ToolEditorDialog(ToolsPanel.this); Tool toolCopy = new Tool(); toolCopy.copyFrom(originalTool); dlg.setData(toolCopy, getGroups()); dlg.show(); if (dlg.isOK()) { insertNewTool(dlg.getData(), true); } myTree.requestFocus(); } } }) .setButtonComparator("Add", "Copy", "Edit", "Remove", "Up", "Down") .createPanel(), BorderLayout.CENTER); myAddButton = ToolbarDecorator.findAddButton(this); myEditButton = ToolbarDecorator.findEditButton(this); myRemoveButton = ToolbarDecorator.findRemoveButton(this); myMoveUpButton = ToolbarDecorator.findUpButton(this); myMoveDownButton = ToolbarDecorator.findDownButton(this); // TODO check edit and delete myTree .getSelectionModel() .addTreeSelectionListener( new TreeSelectionListener() { public void valueChanged(TreeSelectionEvent e) { update(); } }); }
void addSelectionListener(TreeSelectionListener listener) { myTree.getSelectionModel().addTreeSelectionListener(listener); }
/** * Constructs new dialog. Loads settings, registers listeners. * * @param project the project * @param vcsRoots the vcs roots * @param roots the loaded information about roots */ private GitPushActiveBranchesDialog( final Project project, List<VirtualFile> vcsRoots, List<Root> roots) { super(project, true); myVcs = GitVcs.getInstance(project); myProject = project; myVcsRoots = vcsRoots; myGeneralSettings = GeneralSettings.getInstance(); myProjectManager = ProjectManagerEx.getInstanceEx(); updateTree(roots, null); updateUI(); final GitVcsSettings settings = GitVcsSettings.getInstance(project); if (settings != null) { UpdatePolicyUtils.updatePolicyItem( settings.getPushActiveBranchesRebaseSavePolicy(), myStashRadioButton, myShelveRadioButton); } ChangeListener listener = new ChangeListener() { public void stateChanged(ChangeEvent e) { if (settings != null) { settings.setPushActiveBranchesRebaseSavePolicy( UpdatePolicyUtils.getUpdatePolicy(myStashRadioButton, myShelveRadioButton)); } } }; myStashRadioButton.addChangeListener(listener); myShelveRadioButton.addChangeListener(listener); myCommitTree .getSelectionModel() .addTreeSelectionListener( new TreeSelectionListener() { public void valueChanged(TreeSelectionEvent e) { TreePath path = myCommitTree.getSelectionModel().getSelectionPath(); if (path == null) { myViewButton.setEnabled(false); return; } DefaultMutableTreeNode node = (DefaultMutableTreeNode) path.getLastPathComponent(); myViewButton.setEnabled( node != null && myCommitTree.getSelectionCount() == 1 && node.getUserObject() instanceof Commit); } }); myViewButton.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent e) { TreePath path = myCommitTree.getSelectionModel().getSelectionPath(); if (path == null) { return; } DefaultMutableTreeNode node = (DefaultMutableTreeNode) path.getLastPathComponent(); if (node == null || !(node.getUserObject() instanceof Commit)) { return; } Commit c = (Commit) node.getUserObject(); GitShowAllSubmittedFilesAction.showSubmittedFiles( project, c.revision.asString(), c.root.root); } }); myFetchButton.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent e) { fetch(); } }); myRebaseButton.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent e) { rebase(); } }); myPushButton.addActionListener( new ActionListener() { @Override public void actionPerformed(ActionEvent e) { push(); } }); setTitle(GitBundle.getString("push.active.title")); setOKButtonText(GitBundle.getString("push.active.rebase.and.push")); setCancelButtonText(GitBundle.getString("git.push.active.close")); init(); }