From 3b29cb9066ae2ecbe300eee37fb03bfe3a6dbcfc Mon Sep 17 00:00:00 2001 From: plough Date: Fri, 19 Jan 2018 11:34:55 +0800 Subject: [PATCH] =?UTF-8?q?REPORT-6558=20=E7=BB=84=E4=BB=B6=E5=8F=A0?= =?UTF-8?q?=E5=8A=A0=E4=BC=98=E5=8C=96=E4=BA=A4=E4=BA=92=E9=AA=8C=E6=94=B6?= =?UTF-8?q?=3D>=E9=A1=B6=E9=83=A8=E5=B7=A5=E5=85=B7=E6=A0=8F=E4=B8=AD?= =?UTF-8?q?=E7=9A=84=E6=8C=89=E9=92=AE=E7=8A=B6=E6=80=81=EF=BC=8C=E4=B8=8E?= =?UTF-8?q?=E5=8F=B3=E4=BE=A7=E6=8E=A7=E4=BB=B6=E6=A0=91=E7=9A=84=E6=8C=89?= =?UTF-8?q?=E9=92=AE=E7=8A=B6=E6=80=81=E4=B8=80=E8=87=B4=EF=BC=9Bform?= =?UTF-8?q?=EF=BC=8Cbody=EF=BC=8C=E4=B8=8D=E5=8F=AF=E7=BC=96=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../design/event/DesignerOpenedListener.java | 13 ++++++++ .../fr/design/mainframe/DesignerFrame.java | 30 +++++++++++++++++++ .../src/com/fr/start/BaseDesigner.java | 4 ++- .../designer/beans/actions/CopyAction.java | 9 ++++++ .../designer/beans/actions/CutAction.java | 10 +++++++ .../beans/actions/FormDeleteAction.java | 10 +++++++ .../com/fr/design/mainframe/FormDesigner.java | 27 +++++++++++++++-- 7 files changed, 99 insertions(+), 4 deletions(-) create mode 100644 designer_base/src/com/fr/design/event/DesignerOpenedListener.java diff --git a/designer_base/src/com/fr/design/event/DesignerOpenedListener.java b/designer_base/src/com/fr/design/event/DesignerOpenedListener.java new file mode 100644 index 0000000000..77c6bcf8f1 --- /dev/null +++ b/designer_base/src/com/fr/design/event/DesignerOpenedListener.java @@ -0,0 +1,13 @@ +package com.fr.design.event; + +import java.util.EventListener; + +/** + * Created by plough on 2018/1/19. + */ +public interface DesignerOpenedListener extends EventListener { + /** + * Invoked when the target of the listener has changed the rpt content. + */ + public void designerOpened(); +} \ No newline at end of file diff --git a/designer_base/src/com/fr/design/mainframe/DesignerFrame.java b/designer_base/src/com/fr/design/mainframe/DesignerFrame.java index 115980e6c7..bec8df3b70 100644 --- a/designer_base/src/com/fr/design/mainframe/DesignerFrame.java +++ b/designer_base/src/com/fr/design/mainframe/DesignerFrame.java @@ -14,6 +14,7 @@ import com.fr.design.actions.core.ActionFactory; import com.fr.design.constants.UIConstants; import com.fr.design.data.DesignTableDataManager; import com.fr.design.data.datapane.TableDataTreePane; +import com.fr.design.event.DesignerOpenedListener; import com.fr.design.event.TargetModifiedEvent; import com.fr.design.event.TargetModifiedListener; import com.fr.design.file.*; @@ -92,6 +93,10 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta private static final Integer TOP_LAYER = new Integer((200)); private static java.util.List> appList = new java.util.ArrayList>(); + private List designerOpenedListenerList = new ArrayList<>(); + + private boolean isDesignerOpened = false; // 加一个标记。可以通过它来判断设计器是否初始化完成 + private ToolBarMenuDock ad; private DesktopCardPane centerTemplateCardPane; @@ -284,6 +289,31 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta } } + /** + * 注册"设计器初始化完成"的监听 + */ + public void addDesignerOpenedListener(DesignerOpenedListener listener) { + designerOpenedListenerList.add(listener); + } + + /** + * 触发"设计器初始化完成"事件 + */ + public void fireDesignerOpened() { + for (DesignerOpenedListener listener : designerOpenedListenerList) { + listener.designerOpened(); + } + isDesignerOpened = true; + } + + /** + * 判断设计器是否初始化完成 + */ + public boolean isDesignerOpened() { + return isDesignerOpened; + } + + protected DesktopCardPane getCenterTemplateCardPane() { return centerTemplateCardPane; } diff --git a/designer_base/src/com/fr/start/BaseDesigner.java b/designer_base/src/com/fr/start/BaseDesigner.java index eb4b2c6f23..65c31a02b4 100644 --- a/designer_base/src/com/fr/start/BaseDesigner.java +++ b/designer_base/src/com/fr/start/BaseDesigner.java @@ -137,7 +137,9 @@ public abstract class BaseDesigner extends ToolBarMenuDock { for (int i = 0; !TemplateTreePane.getInstance().getTemplateFileTree().isTemplateShowing() && i < LOAD_TREE_MAXNUM; i++) { TemplateTreePane.getInstance().getTemplateFileTree().refresh(); } - + + df.fireDesignerOpened(); + splashWindow.setVisible(false); splashWindow.dispose(); diff --git a/designer_form/src/com/fr/design/designer/beans/actions/CopyAction.java b/designer_form/src/com/fr/design/designer/beans/actions/CopyAction.java index a93da2a60d..940bbbca75 100644 --- a/designer_form/src/com/fr/design/designer/beans/actions/CopyAction.java +++ b/designer_form/src/com/fr/design/designer/beans/actions/CopyAction.java @@ -29,4 +29,13 @@ public class CopyAction extends FormWidgetEditAction { return false; } + @Override + public void update() { + FormDesigner designer = getEditingComponent(); + if (designer == null) { + this.setEnabled(false); + return; + } + this.setEnabled(!designer.isRootSelected()); + } } \ No newline at end of file diff --git a/designer_form/src/com/fr/design/designer/beans/actions/CutAction.java b/designer_form/src/com/fr/design/designer/beans/actions/CutAction.java index 39b7ee47d6..3ce0329088 100644 --- a/designer_form/src/com/fr/design/designer/beans/actions/CutAction.java +++ b/designer_form/src/com/fr/design/designer/beans/actions/CutAction.java @@ -30,4 +30,14 @@ public class CutAction extends FormWidgetEditAction { return editPane.cut(); } + @Override + public void update() { + FormDesigner designer = getEditingComponent(); + if (designer == null) { + this.setEnabled(false); + return; + } + this.setEnabled(!designer.isRootSelected()); + } + } \ No newline at end of file diff --git a/designer_form/src/com/fr/design/designer/beans/actions/FormDeleteAction.java b/designer_form/src/com/fr/design/designer/beans/actions/FormDeleteAction.java index 525449eac6..b1bdef9c56 100644 --- a/designer_form/src/com/fr/design/designer/beans/actions/FormDeleteAction.java +++ b/designer_form/src/com/fr/design/designer/beans/actions/FormDeleteAction.java @@ -58,4 +58,14 @@ public class FormDeleteAction extends FormWidgetEditAction { return false; } + + @Override + public void update() { + FormDesigner designer = getEditingComponent(); + if (designer == null) { + this.setEnabled(false); + return; + } + this.setEnabled(!designer.isRootSelected()); + } } \ No newline at end of file diff --git a/designer_form/src/com/fr/design/mainframe/FormDesigner.java b/designer_form/src/com/fr/design/mainframe/FormDesigner.java index c9b311d502..41ff874712 100644 --- a/designer_form/src/com/fr/design/mainframe/FormDesigner.java +++ b/designer_form/src/com/fr/design/mainframe/FormDesigner.java @@ -21,6 +21,7 @@ import com.fr.design.designer.beans.models.SelectionModel; import com.fr.design.designer.beans.models.StateModel; import com.fr.design.designer.creator.*; import com.fr.design.designer.properties.FormWidgetAuthorityEditPane; +import com.fr.design.event.DesignerOpenedListener; import com.fr.design.file.HistoryTemplateListPane; import com.fr.design.form.util.XCreatorConstants; import com.fr.design.mainframe.toolbar.ToolBarMenuDockPlus; @@ -678,6 +679,13 @@ public class FormDesigner extends TargetComponent
implements TreeSelection } }); + + DesignerContext.getDesignerFrame().addDesignerOpenedListener(new DesignerOpenedListener() { + @Override + public void designerOpened() { + setToolbarButtons(); + } + }); } /** @@ -1039,8 +1047,21 @@ public class FormDesigner extends TargetComponent implements TreeSelection showAuthorityEditPane(); } //先选中再检查 - setToolbarButtons(paths.length == 1 && tree.getSelectionPath().getParentPath() == null); + setToolbarButtons(); + } + } + + /** + * 是否选中了自适应布局或底层form + */ + public boolean isRootSelected() { + ComponentTree tree = FormHierarchyTreePane.getInstance().getComponentTree(); + TreePath[] paths = tree.getSelectionPaths(); + if (paths == null) { + return true; } + boolean isForm = paths.length == 1 && tree.getSelectionPath().getParentPath() == null; + return isForm || isRoot(getSelectionModel().getSelection().getSelectedCreator()); } /** @@ -1073,9 +1094,9 @@ public class FormDesigner extends TargetComponent implements TreeSelection } - protected void setToolbarButtons(boolean flag) { + protected void setToolbarButtons() { //自适应布局和底层都不能删除 - DesignerContext.getDesignerFrame().checkCombineUp(!(isRoot(getSelectionModel().getSelection().getSelectedCreator()) || flag), NAME_ARRAY_LIST); + DesignerContext.getDesignerFrame().checkCombineUp(!isRootSelected(), NAME_ARRAY_LIST); } private void invalidateLayout() {