diff --git a/designer/src/com/fr/design/mainframe/ElementCasePaneDelegate.java b/designer/src/com/fr/design/mainframe/ElementCasePaneDelegate.java index 3529ebcd0..b358b5302 100644 --- a/designer/src/com/fr/design/mainframe/ElementCasePaneDelegate.java +++ b/designer/src/com/fr/design/mainframe/ElementCasePaneDelegate.java @@ -56,7 +56,11 @@ public class ElementCasePaneDelegate extends ElementCasePane { this.addTargetModifiedListener(new TargetModifiedListener() { @Override public void targetModified(TargetModifiedEvent e) { - refreshPropertyPanes(); + if (DesignerContext.isRefreshOnTargetModifiedEnabled()) { + refreshPropertyPanes(); + } else { + CellElementPropertyPane.getInstance().populate(ElementCasePaneDelegate.this); + } } }); } diff --git a/designer/src/com/fr/design/mainframe/form/FormElementCasePaneDelegate.java b/designer/src/com/fr/design/mainframe/form/FormElementCasePaneDelegate.java index 5ddd8efb5..8da52f9a5 100644 --- a/designer/src/com/fr/design/mainframe/form/FormElementCasePaneDelegate.java +++ b/designer/src/com/fr/design/mainframe/form/FormElementCasePaneDelegate.java @@ -42,7 +42,11 @@ public class FormElementCasePaneDelegate extends ElementCasePane { @Override public void targetModified(TargetModifiedEvent e) { designer.fireTargetModified(); - resetSelectionAndChooseState(); + if (DesignerContext.isRefreshOnTargetModifiedEnabled()) { + resetSelectionAndChooseState(); + } } }); } diff --git a/designer_base/src/com/fr/design/actions/TemplateComponentAction.java b/designer_base/src/com/fr/design/actions/TemplateComponentAction.java index 2194c7a79..9637bad2e 100644 --- a/designer_base/src/com/fr/design/actions/TemplateComponentAction.java +++ b/designer_base/src/com/fr/design/actions/TemplateComponentAction.java @@ -2,6 +2,7 @@ package com.fr.design.actions; import com.fr.design.designer.TargetComponent; +import com.fr.design.mainframe.DesignerContext; public abstract class TemplateComponentAction extends UndoableAction implements TemplateComponentActionInterface { private T t; @@ -24,6 +25,7 @@ public abstract class TemplateComponentAction extends @Override public void prepare4Undo() { + DesignerContext.enableRefreshOnTargetModified(); this.getEditingComponent().fireTargetModified(); T component = getEditingComponent(); if (component == null) { diff --git a/designer_base/src/com/fr/design/mainframe/DesignerContext.java b/designer_base/src/com/fr/design/mainframe/DesignerContext.java index dddb56027..1bf541f3a 100644 --- a/designer_base/src/com/fr/design/mainframe/DesignerContext.java +++ b/designer_base/src/com/fr/design/mainframe/DesignerContext.java @@ -36,7 +36,8 @@ public class DesignerContext { private static Hashtable prop = new Hashtable(); private static Hashtable beans = new Hashtable(); - ; + + private static boolean refreshOnTargetModified = false; /** * Return the main design frame from context @@ -136,4 +137,20 @@ public class DesignerContext { public static void setReportWritePane(BasicDialog dlg){ reportWriteThread.set(dlg); } + + /** + * 在修改 Target 时,刷新右侧属性面板 + */ + public static void enableRefreshOnTargetModified() { + refreshOnTargetModified = true; + } + + /** + * 在修改 Target 时,是否刷新右侧属性面板。仅可刷新一次,取值后重置为 false + */ + public static boolean isRefreshOnTargetModifiedEnabled() { + boolean isRefresh = refreshOnTargetModified; + refreshOnTargetModified = false; + return isRefresh; + } } \ No newline at end of file