diff --git a/designer_form/src/com/fr/design/designer/beans/adapters/layout/FRBorderLayoutAdapter.java b/designer_form/src/com/fr/design/designer/beans/adapters/layout/FRBorderLayoutAdapter.java index 7ebc872025..6cbc3c7650 100644 --- a/designer_form/src/com/fr/design/designer/beans/adapters/layout/FRBorderLayoutAdapter.java +++ b/designer_form/src/com/fr/design/designer/beans/adapters/layout/FRBorderLayoutAdapter.java @@ -3,8 +3,6 @@ package com.fr.design.designer.beans.adapters.layout; import java.awt.BorderLayout; import java.awt.Component; import java.awt.Dimension; - -import com.fr.design.designer.creator.cardlayout.XWCardTagLayout; import com.fr.general.ComparatorUtils; import com.fr.design.designer.beans.ConstraintsGroupModel; import com.fr.design.designer.beans.HoverPainter; @@ -36,9 +34,6 @@ public class FRBorderLayoutAdapter extends AbstractLayoutAdapter { * @param creator 组件 */ public void fix(XCreator creator) { - if(creator.acceptType(XWCardTagLayout.class)){ - creator = (XCreator) creator.getParent(); - } FRBorderLayout layout = (FRBorderLayout)container.getFRLayout(); Object constraints = layout.getConstraints(creator); if (ComparatorUtils.equals(constraints, BorderLayout.NORTH)) { diff --git a/designer_form/src/com/fr/design/designer/beans/adapters/layout/FRCardMainBorderLayoutAdapter.java b/designer_form/src/com/fr/design/designer/beans/adapters/layout/FRCardMainBorderLayoutAdapter.java new file mode 100644 index 0000000000..4b17ffaedb --- /dev/null +++ b/designer_form/src/com/fr/design/designer/beans/adapters/layout/FRCardMainBorderLayoutAdapter.java @@ -0,0 +1,62 @@ +package com.fr.design.designer.beans.adapters.layout; + +import com.fr.design.designer.creator.XCreator; +import com.fr.design.designer.creator.XLayoutContainer; +import com.fr.design.designer.creator.cardlayout.XWCardTagLayout; +import com.fr.design.form.layout.FRBorderLayout; +import com.fr.general.ComparatorUtils; +import com.fr.general.Inter; + +import javax.swing.JOptionPane; +import java.awt.BorderLayout; +import java.awt.Rectangle; + +/** + * cardMainBorderLayout适配器 + * + * @author kerry + * @date 2019/1/4 + */ +public class FRCardMainBorderLayoutAdapter extends FRBorderLayoutAdapter { + + public FRCardMainBorderLayoutAdapter(XLayoutContainer container) { + super(container); + } + + /** + * CardMainBorderLayout的title部分不能超出layout边界 + * + * @param creator 组件 + */ + @Override + public void fix(XCreator creator) { + if (creator.acceptType(XWCardTagLayout.class)) { + creator = (XCreator) creator.getParent(); + } + boolean beyondBounds = calculateBeyondBounds(creator); + if (!beyondBounds) { + super.fix(creator); + } + } + + private boolean calculateBeyondBounds(XCreator creator) { + FRBorderLayout layout = (FRBorderLayout) container.getFRLayout(); + Object constraints = layout.getConstraints(creator); + Rectangle rectangle = creator.getBounds(); + //不能超出控件边界 + if (ComparatorUtils.equals(constraints, BorderLayout.NORTH) || ComparatorUtils.equals(constraints, BorderLayout.SOUTH)) { + int containerHeight = container.getHeight(); + if (rectangle.height > containerHeight) { + JOptionPane.showMessageDialog(null, Inter.getLocText("FR-Designer-Beyond_Tablayout_Bounds")); + return true; + } + } else if (ComparatorUtils.equals(constraints, BorderLayout.EAST) || ComparatorUtils.equals(constraints, BorderLayout.WEST)) { + int containerWidth = container.getWidth(); + if (rectangle.width > containerWidth) { + JOptionPane.showMessageDialog(null, Inter.getLocText("FR-Designer-Beyond_Tablayout_Bounds")); + return true; + } + } + return false; + } +} 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 828c7f6c8b..6915ca0121 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 @@ -5,6 +5,8 @@ package com.fr.design.designer.creator.cardlayout; import com.fr.design.designer.beans.AdapterBus; import com.fr.design.designer.beans.ComponentAdapter; +import com.fr.design.designer.beans.LayoutAdapter; +import com.fr.design.designer.beans.adapters.layout.FRCardMainBorderLayoutAdapter; import com.fr.design.designer.beans.models.SelectionModel; import com.fr.design.designer.creator.XCreator; import com.fr.design.designer.creator.XCreatorUtils; @@ -366,4 +368,9 @@ public class XWCardMainBorderLayout extends XWBorderLayout{ this.addCardPart((XWCardLayout)this.getComponent(0)); } + @Override + public LayoutAdapter getLayoutAdapter() { + return new FRCardMainBorderLayoutAdapter(this); + } + } \ No newline at end of file diff --git a/designer_form/src/com/fr/design/designer/creator/cardlayout/XWCardTagLayout.java b/designer_form/src/com/fr/design/designer/creator/cardlayout/XWCardTagLayout.java index 7a8ed5440e..8f71b08be7 100644 --- a/designer_form/src/com/fr/design/designer/creator/cardlayout/XWCardTagLayout.java +++ b/designer_form/src/com/fr/design/designer/creator/cardlayout/XWCardTagLayout.java @@ -19,7 +19,6 @@ import com.fr.design.gui.ilable.UILabel; import com.fr.design.gui.imenu.UIPopupMenu; import com.fr.design.mainframe.EditingMouseListener; import com.fr.design.mainframe.FormDesigner; -import com.fr.design.mainframe.WidgetPropertyPane; import com.fr.form.ui.CardSwitchButton; import com.fr.form.ui.Widget; import com.fr.form.ui.container.WCardLayout; @@ -378,13 +377,6 @@ public class XWCardTagLayout extends XWHorizontalBoxLayout { XCardSwitchButton temp = (XCardSwitchButton) this.getComponent(i); setTabBtnSize(cardWidth, cardHeight, temp); } - - FormDesigner formDesigner = WidgetPropertyPane.getInstance().getEditingFormDesigner(); - LayoutAdapter layoutAdapter = AdapterBus.searchLayoutAdapter(formDesigner, parent); - if (layoutAdapter != null) { - parent.setBackupBound(parent.getBounds()); - layoutAdapter.fix(parent); - } } public void setTabBtnSize(int cardWidth, int cardHeight, XCardSwitchButton temp){ @@ -427,12 +419,6 @@ public class XWCardTagLayout extends XWHorizontalBoxLayout { setTabBtnSize(cardWidth, cardHeight, temp); } - FormDesigner formDesigner = WidgetPropertyPane.getInstance().getEditingFormDesigner(); - LayoutAdapter layoutAdapter = AdapterBus.searchLayoutAdapter(formDesigner, parent); - if (layoutAdapter != null) { - parent.setBackupBound(parent.getBounds()); - layoutAdapter.fix(parent); - } } } \ No newline at end of file diff --git a/designer_form/src/com/fr/design/designer/creator/cardlayout/XWTabFitLayout.java b/designer_form/src/com/fr/design/designer/creator/cardlayout/XWTabFitLayout.java index ecdf55e84b..7f80f94870 100644 --- a/designer_form/src/com/fr/design/designer/creator/cardlayout/XWTabFitLayout.java +++ b/designer_form/src/com/fr/design/designer/creator/cardlayout/XWTabFitLayout.java @@ -456,12 +456,28 @@ public class XWTabFitLayout extends XWFitLayout { @Override public Component getParentShow(){ XCardSwitchButton cardSwitchButton = this.getxCardSwitchButton(); + if(cardSwitchButton == null){ + initRelateSwitchButton(); + } //控件树上显示其taglayout层 if ((cardSwitchButton != null)) { return cardSwitchButton.getTagLayout(); } return super.getParentShow(); } + + public void initRelateSwitchButton(){ + //先确定此tabFitLayout所处位置 + XLayoutContainer parentContainer = this.getBackupParent(); + int index = parentContainer.getIndexOfChild(this); + XWCardMainBorderLayout cardMainBorderLayout = (XWCardMainBorderLayout) this.getTopLayout(); + XWCardTitleLayout titleLayout = cardMainBorderLayout.getTitlePart(); + XWCardTagLayout tagLayout = titleLayout.getTagPart(); + XCreator xCreator = tagLayout.getXCreator(index); + if(xCreator != null){ + this.setxCardSwitchButton((XCardSwitchButton)xCreator); + } + } /** * 去除原有的间隔 @@ -607,5 +623,4 @@ public class XWTabFitLayout extends XWFitLayout { xCardSwitchButton.setPreferredSize(new Dimension(width, xCardSwitchButton.getHeight())); } - } \ No newline at end of file