From e3c0f36f5f53a10319dd63fe9f573ee2cf3eeabf Mon Sep 17 00:00:00 2001 From: Nadya Zabrodina Date: Fri, 7 Nov 2014 12:45:51 +0300 Subject: [PATCH] IDEA-132467 apply target branch modification with Enter or mouse interruption * selection listener from WideSelectionTreeUi modified not to stop edit mode when mouse pressed/release, because BaseTreeUi managed this situation himself according to appropriate flags; (if mouse pressed, then BaseUi starts edit mode, and WideUi stops it immediately - this was strange) * validation added in editor listener --- .../src/com/intellij/dvcs/push/ui/PushLog.java | 12 +++++++++++- .../intellij/util/ui/tree/WideSelectionTreeUI.java | 5 ----- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/platform/dvcs-impl/src/com/intellij/dvcs/push/ui/PushLog.java b/platform/dvcs-impl/src/com/intellij/dvcs/push/ui/PushLog.java index b91aa17e04d5..2e1713e05c89 100644 --- a/platform/dvcs-impl/src/com/intellij/dvcs/push/ui/PushLog.java +++ b/platform/dvcs-impl/src/com/intellij/dvcs/push/ui/PushLog.java @@ -127,7 +127,15 @@ public class PushLog extends JPanel implements TypeSafeDataProvider { public void editingStopped(ChangeEvent e) { DefaultMutableTreeNode node = (DefaultMutableTreeNode)myTree.getLastSelectedPathComponent(); if (node != null && node instanceof EditableTreeNode) { - ((EditableTreeNode)node).fireOnChange(); + JComponent editedComponent = (JComponent)node.getUserObject(); + InputVerifier verifier = editedComponent.getInputVerifier(); + if (verifier != null && !verifier.verify(editedComponent)) { + // if invalid and interrupted, then revert + ((EditableTreeNode)node).fireOnCancel(); + } + else { + ((EditableTreeNode)node).fireOnChange(); + } } myTree.firePropertyChange(PushLogTreeUtil.EDIT_MODE_PROP, true, false); } @@ -141,6 +149,8 @@ public class PushLog extends JPanel implements TypeSafeDataProvider { myTree.firePropertyChange(PushLogTreeUtil.EDIT_MODE_PROP, true, false); } }); + // complete editing when interrupt + myTree.setInvokesStopCellEditing(true); myTree.setRootVisible(false); TreeUtil.collapseAll(myTree, 1); final VcsBranchEditorListener linkMouseListener = new VcsBranchEditorListener(myTreeCellRenderer); diff --git a/platform/util/src/com/intellij/util/ui/tree/WideSelectionTreeUI.java b/platform/util/src/com/intellij/util/ui/tree/WideSelectionTreeUI.java index 9775ddb01be1..93cdf6a01822 100644 --- a/platform/util/src/com/intellij/util/ui/tree/WideSelectionTreeUI.java +++ b/platform/util/src/com/intellij/util/ui/tree/WideSelectionTreeUI.java @@ -122,11 +122,6 @@ public class WideSelectionTreeUI extends BasicTreeUI { private void handle(MouseEvent e) { final JTree tree = (JTree)e.getSource(); if (SwingUtilities.isLeftMouseButton(e) && !e.isPopupTrigger()) { - // if we can't stop any ongoing editing, do nothing - if (isEditing(tree) && tree.getInvokesStopCellEditing() && !stopEditing(tree)) { - return; - } - final TreePath pressedPath = getClosestPathForLocation(tree, e.getX(), e.getY()); if (pressedPath != null) { Rectangle bounds = getPathBounds(tree, pressedPath);