From 0bc2bc65adec362018083821b51cf47d2cef1c5d Mon Sep 17 00:00:00 2001 From: Alexander Lobas Date: Wed, 20 Nov 2013 15:36:02 +0400 Subject: [PATCH] Double sets property value for one change --- .../designer/propertyTable/PropertyTable.java | 16 ++++++++++++---- .../propertyTable/editors/BooleanEditor.java | 2 +- .../propertyTable/editors/TextEditor.java | 2 +- 3 files changed, 14 insertions(+), 6 deletions(-) diff --git a/platform/platform-impl/src/com/intellij/designer/propertyTable/PropertyTable.java b/platform/platform-impl/src/com/intellij/designer/propertyTable/PropertyTable.java index 3470d77047f1..7b3b22b6c756 100644 --- a/platform/platform-impl/src/com/intellij/designer/propertyTable/PropertyTable.java +++ b/platform/platform-impl/src/com/intellij/designer/propertyTable/PropertyTable.java @@ -308,7 +308,13 @@ public abstract class PropertyTable extends JBTable { } public void update(@NotNull List containers, @Nullable Property initialSelection) { - finishEditing(); + update(containers, initialSelection, true); + } + + private void update(@NotNull List containers, @Nullable Property initialSelection, boolean finishEditing) { + if (finishEditing) { + finishEditing(); + } if (mySkipUpdate) { return; @@ -316,7 +322,7 @@ public abstract class PropertyTable extends JBTable { mySkipUpdate = true; try { - if (isEditing()) { + if (finishEditing && isEditing()) { cellEditor.stopCellEditing(); } @@ -841,7 +847,7 @@ public abstract class PropertyTable extends JBTable { if (isSetValue) { if (property.needRefreshPropertyList() || needRefresh[0]) { - update(); + update(myContainers, null, false); } else { myModel.fireTableRowsUpdated(row, row); @@ -1107,7 +1113,9 @@ public abstract class PropertyTable extends JBTable { if (setValueAtRow(editingRow, value)) { if (!continueEditing) { - tableCellEditor.stopCellEditing(); + PropertyEditor editor = myProperties.get(editingRow).getEditor(); + editor.removePropertyEditorListener(myPropertyEditorListener); + removeEditor(); } } else if (closeEditorOnError) { diff --git a/platform/platform-impl/src/com/intellij/designer/propertyTable/editors/BooleanEditor.java b/platform/platform-impl/src/com/intellij/designer/propertyTable/editors/BooleanEditor.java index 984eb245e62f..145f2a9e9b7d 100644 --- a/platform/platform-impl/src/com/intellij/designer/propertyTable/editors/BooleanEditor.java +++ b/platform/platform-impl/src/com/intellij/designer/propertyTable/editors/BooleanEditor.java @@ -40,7 +40,7 @@ public class BooleanEditor extends PropertyEditor { myCheckBox.addActionListener(new ActionListener() { public void actionPerformed(final ActionEvent e) { if (!myInsideChange) { - fireValueCommitted(true, false); + fireValueCommitted(false, true); } } }); diff --git a/platform/platform-impl/src/com/intellij/designer/propertyTable/editors/TextEditor.java b/platform/platform-impl/src/com/intellij/designer/propertyTable/editors/TextEditor.java index 6dbe4057bc81..c6ddc0ae484a 100644 --- a/platform/platform-impl/src/com/intellij/designer/propertyTable/editors/TextEditor.java +++ b/platform/platform-impl/src/com/intellij/designer/propertyTable/editors/TextEditor.java @@ -40,7 +40,7 @@ public class TextEditor extends PropertyEditor { myTextField.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { - fireValueCommitted(true, false); + fireValueCommitted(true, true); } }); myTextField.getDocument().addDocumentListener(