IDEA-19061 Integrate the Rearranger-plugin into core-IDE
authorDenis.Zhdanov <Denis.Zhdanov@jetbrains.com>
Mon, 12 Nov 2012 11:42:41 +0000 (15:42 +0400)
committerDenis.Zhdanov <Denis.Zhdanov@jetbrains.com>
Mon, 12 Nov 2012 11:43:00 +0000 (15:43 +0400)
Correct multiple selection processing

platform/lang-impl/src/com/intellij/application/options/codeStyle/arrangement/match/ArrangementMatchingRulesControl.java

index 94d56d10743e86e37ff907b51e98edc2a9e1c68f..bf84d873f2b757fefa2691bcf03b6486b96e37f1 100644 (file)
@@ -234,23 +234,10 @@ public class ArrangementMatchingRulesControl extends JBTable {
     }
 
     if (myEditorRow >= 0) {
-      if (myEditorRow == selectedRow) {
-        mySkipSelectionChange = true;
-        try {
-          getSelectionModel().setSelectionInterval(myEditorRow - 1, myEditorRow - 1);
-        }
-        finally {
-          mySkipSelectionChange = false;
-        }
-        return;
-      }
-      else {
-        hideEditor();
-      }
+      hideEditor();
     }
     
     // There is a possible case that there was an active editor in a row before the selected.
-    selectedRow = selectionModel.getMinSelectionIndex();
     ArrangementListRowDecorator toEdit = myComponents.get(selectedRow);
     if (toEdit != null) {
       showEditor(selectedRow);
@@ -266,7 +253,11 @@ public class ArrangementMatchingRulesControl extends JBTable {
     mySkipSelectionChange = true;
     try {
       getModel().removeRow(myEditorRow);
-      getSelectionModel().clearSelection();
+      ListSelectionModel selectionModel = getSelectionModel();
+      if (selectionModel.getMinSelectionIndex() == selectionModel.getMaxSelectionIndex()) {
+        // One row is selected and editor for it is collapsed.
+        selectionModel.clearSelection();
+      }
     }
     finally {
       mySkipSelectionChange = false;
@@ -392,8 +383,9 @@ public class ArrangementMatchingRulesControl extends JBTable {
 
     @Override
     public boolean stopCellEditing() {
+      boolean result = super.stopCellEditing();
       myValue = null;
-      return true;
+      return result;
     }
   }