From 9c59ee303d761ff0d58787b02abfa4b555a95f35 Mon Sep 17 00:00:00 2001 From: kerry Date: Fri, 5 Jan 2018 09:37:02 +0800 Subject: [PATCH] =?UTF-8?q?REPORT-6249=20=E4=B9=8B=E5=89=8D=E7=9A=84?= =?UTF-8?q?=E6=A8=A1=E6=9D=BF=E9=9A=90=E8=97=8F=E4=BA=86tab=E6=A0=87?= =?UTF-8?q?=E9=A2=98=E6=97=B6=EF=BC=8C=E7=8E=B0=E5=9C=A8=E7=9A=84=E5=85=BC?= =?UTF-8?q?=E5=AE=B9=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/fr/design/gui/ispinner/UISpinner.java | 2 +- .../designer/beans/models/StateModel.java | 3 +++ .../fr/design/designer/creator/XCreator.java | 20 +++++++++----- .../cardlayout/XWCardMainBorderLayout.java | 27 +++++++++++++++++++ .../creator/cardlayout/XWCardTitleLayout.java | 13 ++++++--- .../fr/design/mainframe/ComponentTree.java | 2 +- 6 files changed, 55 insertions(+), 12 deletions(-) diff --git a/designer_base/src/com/fr/design/gui/ispinner/UISpinner.java b/designer_base/src/com/fr/design/gui/ispinner/UISpinner.java index 361619ae29..fc594c6e98 100644 --- a/designer_base/src/com/fr/design/gui/ispinner/UISpinner.java +++ b/designer_base/src/com/fr/design/gui/ispinner/UISpinner.java @@ -23,7 +23,7 @@ import java.awt.event.*; public class UISpinner extends JPanel implements UIObserver, GlobalNameObserver { - protected double value; + protected double value = -1; private static final int SIZE = 20; private static final int LEN = 13; private static final int WIDTH = 13; diff --git a/designer_form/src/com/fr/design/designer/beans/models/StateModel.java b/designer_form/src/com/fr/design/designer/beans/models/StateModel.java index d089e282f6..c44b16965e 100644 --- a/designer_form/src/com/fr/design/designer/beans/models/StateModel.java +++ b/designer_form/src/com/fr/design/designer/beans/models/StateModel.java @@ -434,6 +434,9 @@ public class StateModel { // 拖拽时画依附线用到的painter private void setDependLinePainter(MouseEvent e) { XCreator comp = designer.getComponentAt(e.getX(), e.getY(), selectionModel.getSelection().getSelectedCreators()); + if(comp ==null){ + return; + } XLayoutContainer container = XCreatorUtils.getHotspotContainer(comp); XCreator creator = selectionModel.getSelection().getSelectedCreator(); HoverPainter painter = AdapterBus.getContainerPainter(designer, container); diff --git a/designer_form/src/com/fr/design/designer/creator/XCreator.java b/designer_form/src/com/fr/design/designer/creator/XCreator.java index f337ea14ff..d934ecf57f 100644 --- a/designer_form/src/com/fr/design/designer/creator/XCreator.java +++ b/designer_form/src/com/fr/design/designer/creator/XCreator.java @@ -60,13 +60,7 @@ public abstract class XCreator extends JPanel implements XComponent, XCreatorToo this.setLayout(FRGUIPaneFactory.createBorderLayout()); add(editor, BorderLayout.CENTER); } - - if (initSize.width == 0) { - initSize.width = this.initEditorSize().width; - } - if (initSize.height == 0) { - initSize.height = this.initEditorSize().height; - } + setInitSize(initSize); this.setPreferredSize(initSize); this.setSize(initSize); this.setMaximumSize(initSize); @@ -90,6 +84,18 @@ public abstract class XCreator extends JPanel implements XComponent, XCreatorToo } } + /** + * 初始化组件大小 + */ + public void setInitSize(Dimension initSize) { + if (initSize.width == 0) { + initSize.width = this.initEditorSize().width; + } + if (initSize.height == 0) { + initSize.height = this.initEditorSize().height; + } + } + /** * 备份当前大小 */ diff --git a/designer_form/src/com/fr/design/designer/creator/cardlayout/XWCardMainBorderLayout.java b/designer_form/src/com/fr/design/designer/creator/cardlayout/XWCardMainBorderLayout.java index 6915ca0121..c326cec11f 100644 --- a/designer_form/src/com/fr/design/designer/creator/cardlayout/XWCardMainBorderLayout.java +++ b/designer_form/src/com/fr/design/designer/creator/cardlayout/XWCardMainBorderLayout.java @@ -12,9 +12,11 @@ import com.fr.design.designer.creator.XCreator; import com.fr.design.designer.creator.XCreatorUtils; import com.fr.design.designer.creator.XLayoutContainer; import com.fr.design.designer.creator.XWBorderLayout; +import com.fr.design.designer.creator.XWidgetCreator; import com.fr.design.icon.IconPathConstants; import com.fr.design.mainframe.EditingMouseListener; import com.fr.design.mainframe.FormDesigner; +import com.fr.form.ui.Widget; import com.fr.form.ui.container.WAbsoluteLayout.BoundsWidget; import com.fr.form.ui.container.WBorderLayout; import com.fr.form.ui.container.WTabDisplayPosition; @@ -102,6 +104,31 @@ public class XWCardMainBorderLayout extends XWBorderLayout{ } + /** + * 将WLayout转换为XLayoutContainer + */ + @Override + public void convert() { + isRefreshing = true; + WBorderLayout wb = this.toData(); + this.removeAll(); + String[] arrs = {WBorderLayout.NORTH, WBorderLayout.SOUTH, WBorderLayout.EAST, WBorderLayout.WEST, WBorderLayout.CENTER}; + for (int i = 0; i < arrs.length; i++) { + Widget wgt = wb.getLayoutWidget(arrs[i]); + //用来兼容之前titlePart设置不可见 + if (wgt != null && ComparatorUtils.equals(arrs[i], WBorderLayout.NORTH) && !wgt.isVisible()) { + wgt.setVisible(true); + this.toData().setNorthSize(0); + } + if (wgt != null) { + XWidgetCreator comp = (XWidgetCreator) XCreatorUtils.createXCreator(wgt, calculatePreferredSize(wgt)); + this.add(comp, arrs[i]); + comp.setBackupParent(this); + } + } + isRefreshing = false; + } + /** * 切换到非添加状态 * diff --git a/designer_form/src/com/fr/design/designer/creator/cardlayout/XWCardTitleLayout.java b/designer_form/src/com/fr/design/designer/creator/cardlayout/XWCardTitleLayout.java index d1797f92b8..bd6f9128bc 100644 --- a/designer_form/src/com/fr/design/designer/creator/cardlayout/XWCardTitleLayout.java +++ b/designer_form/src/com/fr/design/designer/creator/cardlayout/XWCardTitleLayout.java @@ -54,6 +54,14 @@ public class XWCardTitleLayout extends XWBorderLayout { super(widget, initSize); } + /** + * 初始化组件大小,titlePart的宽高可能为0 + */ + @Override + public void setInitSize(Dimension initSize){ + return; + } + public WTabDisplayPosition getDisplayPosition(){ return ((WCardTagLayout)this.getTagPart().toData()).getDisplayPosition(); @@ -87,8 +95,7 @@ public class XWCardTitleLayout extends XWBorderLayout { public void convert(){ isRefreshing = true; WCardTitleLayout titleLayout = (WCardTitleLayout)this.toData(); - this.setVisible(titleLayout.isVisible()); - this.removeAll(); + this.removeAll(); String[] arrs = {WBorderLayout.NORTH, WBorderLayout.SOUTH, WBorderLayout.EAST, WBorderLayout.WEST, WBorderLayout.CENTER}; for (int i = 0; i < arrs.length; i++) { Widget wgt = titleLayout.getLayoutWidget(arrs[i]); @@ -222,5 +229,5 @@ public class XWCardTitleLayout extends XWBorderLayout { public XCreator getXCreator() { return (XCreator)this.getComponent(1); } - + } \ No newline at end of file diff --git a/designer_form/src/com/fr/design/mainframe/ComponentTree.java b/designer_form/src/com/fr/design/mainframe/ComponentTree.java index 9c0bf05bcb..c7b2412518 100644 --- a/designer_form/src/com/fr/design/mainframe/ComponentTree.java +++ b/designer_form/src/com/fr/design/mainframe/ComponentTree.java @@ -240,7 +240,7 @@ public class ComponentTree extends JTree { previewPane.setVisible(false); } - if (!previewPane.isVisible()) { + if (!previewPane.isVisible() && comp.getWidth() != 0 && comp.getHeight() != 0) { previewPane.setComp(comp); int popupPosY = popupPosYOnScreen - FormHierarchyTreePane.getInstance().getLocationOnScreen().y; GUICoreUtils.showPopupMenu(previewPane, FormHierarchyTreePane.getInstance(), -previewPane.getPreferredSize().width, popupPosY);