diff --git a/designer_form/src/com/fr/design/designer/creator/XElementCase.java b/designer_form/src/com/fr/design/designer/creator/XElementCase.java index 8ecb2b62ab..514cd12d18 100644 --- a/designer_form/src/com/fr/design/designer/creator/XElementCase.java +++ b/designer_form/src/com/fr/design/designer/creator/XElementCase.java @@ -119,9 +119,10 @@ public class XElementCase extends XBorderStyleWidgetCreator implements FormEleme ReportFitAttrProvider fitAttr = wbTpl.getFitAttr(); ElementCaseEditor editor = this.toData(); //兼容之前报表块(之前三个选项为:默认 横向 双向 现在是:横向 双向 不自适应) - if (editor.getFitStateInPC() == 0) { + if (editor.getFitStateInPC() == 0 || processor.getFitStateInPC(fitAttr) == 0 ) { editor.setReportFitAttr(null); } + ReportFitAttrProvider reportFit = editor.getReportFitAttr(); if(fitAttr != null){ reportFit = fitAttr.fitInBrowser() ? editor.getReportFitAttr() : fitAttr; diff --git a/designer_form/src/com/fr/design/designer/creator/cardlayout/XCardSwitchButton.java b/designer_form/src/com/fr/design/designer/creator/cardlayout/XCardSwitchButton.java index ba2f33f512..a329c3d0ee 100644 --- a/designer_form/src/com/fr/design/designer/creator/cardlayout/XCardSwitchButton.java +++ b/designer_form/src/com/fr/design/designer/creator/cardlayout/XCardSwitchButton.java @@ -160,7 +160,7 @@ public class XCardSwitchButton extends XButton { //关闭重新打开,相关的layout未存到xml中,初始化 if(cardLayout == null){ - initRelateLayout(this); + initRelateLayout(); } //获取当前tab的index @@ -254,7 +254,7 @@ public class XCardSwitchButton extends XButton { //SwitchButton对应的XWCardLayout和XWCardTagLayout暂未存到xml中,重新打开时根据父子层关系获取 - private void initRelateLayout(XCardSwitchButton button){ + private void initRelateLayout(){ this.tagLayout = (XWCardTagLayout)this.getBackupParent(); XWCardTitleLayout titleLayout = (XWCardTitleLayout) this.tagLayout.getBackupParent(); XWCardMainBorderLayout borderLayout = (XWCardMainBorderLayout)titleLayout.getBackupParent(); @@ -353,7 +353,7 @@ public class XCardSwitchButton extends XButton { this.setButtonText(titleText); if (this.cardLayout == null) { - initRelateLayout(this); + initRelateLayout(); } LayoutBorderStyle style = this.cardLayout.toData().getBorderStyle(); @@ -418,6 +418,10 @@ public class XCardSwitchButton extends XButton { public XCreator getXCreator() { //根据index获取对应的tabFitLayout int index = ((CardSwitchButton) this.toData()).getIndex(); + //关闭重新打开,相关的layout未存到xml中,初始化 + if(cardLayout == null){ + initRelateLayout(); + } return (XCreator) cardLayout.getComponent(index); } diff --git a/designer_form/src/com/fr/design/designer/creator/cardlayout/XWCardLayout.java b/designer_form/src/com/fr/design/designer/creator/cardlayout/XWCardLayout.java index 6beadc2920..50c4e7ec74 100644 --- a/designer_form/src/com/fr/design/designer/creator/cardlayout/XWCardLayout.java +++ b/designer_form/src/com/fr/design/designer/creator/cardlayout/XWCardLayout.java @@ -40,9 +40,11 @@ import com.fr.stable.core.PropertyChangeAdapter; import javax.swing.border.Border; import java.awt.CardLayout; import java.awt.Color; +import java.awt.Component; import java.awt.Dimension; import java.awt.event.ContainerEvent; import java.beans.IntrospectionException; +import java.util.ArrayList; /** * @author richer @@ -222,16 +224,25 @@ public class XWCardLayout extends XLayoutContainer { return xFirstBtn; } - + + /** + * 控件树不显示此组件 + * @param path 控件树list + */ + public void notShowInComponentTree(ArrayList path) { + path.remove(0); + } + + /** * 设置父容器的名字 - * + * * @param parentPanel 当前父容器 * @param widgetName 当前控件名 - * + * * * @date 2014-11-27-上午9:47:00 - * + * */ protected void setWrapperName(XLayoutContainer parentPanel, String widgetName) { parentPanel.toData().setWidgetName("tablayout" + widgetName.replaceAll(createDefaultName(),"")); 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 0f262133fd..2c52a2f7de 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 @@ -98,6 +98,7 @@ public class XWCardMainBorderLayout extends XWBorderLayout{ super.add(comp, position); } + /** * 切换到非添加状态 * @@ -152,7 +153,7 @@ public class XWCardMainBorderLayout extends XWBorderLayout{ * @param path 控件树list */ public void notShowInComponentTree(ArrayList path) { - path.remove(LAYOUT_INDEX); + return; } @Override @@ -308,6 +309,13 @@ public class XWCardMainBorderLayout extends XWBorderLayout{ } } + public int getIndexOfChild(Object child) { + if(child instanceof XWCardTagLayout){ + return 0; + } + return -1; + } + /** * data属性改变触发其他操作 * 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 e02b9e2b94..bb77ad2aa7 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 @@ -10,7 +10,6 @@ import java.awt.FontMetrics; import java.awt.Rectangle; import java.awt.event.ContainerEvent; import java.awt.event.MouseEvent; -import java.util.ArrayList; import java.util.HashMap; import java.util.Map; @@ -252,8 +251,17 @@ public class XWCardTagLayout extends XWHorizontalBoxLayout { return this.getBackupParent().getTopLayout(); } - public void notShowInComponentTree(ArrayList path) { - path.remove(0); + + public int getIndexOfChild(Object child) { + XLayoutContainer cardPart = ((XWCardMainBorderLayout)this.getTopLayout()).getCardPart(); + int count = cardPart.getComponentCount(); + for (int i = 0; i < count; i++) { + Component comp = cardPart.getComponent(i); + if (comp == child) { + return i; + } + } + return -1; } public boolean isSupportDrag(){ 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 d835012038..9db9d46a22 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 @@ -3,8 +3,10 @@ */ package com.fr.design.designer.creator.cardlayout; +import java.awt.Component; import java.awt.Dimension; import java.awt.event.MouseEvent; +import java.util.ArrayList; import javax.swing.border.Border; @@ -33,6 +35,9 @@ public class XWCardTitleLayout extends XWBorderLayout { private static final int CENTER = 1; + private static final int LAYOUT_INDEX = 0; + + /** * 构造函数 */ @@ -51,6 +56,14 @@ public class XWCardTitleLayout extends XWBorderLayout { public WTabDisplayPosition getDisplayPosition(){ return ((WCardTagLayout)this.getTagPart().toData()).getDisplayPosition(); } + + /** + * 控件树不显示此组件 + * @param path 控件树list + */ + public void notShowInComponentTree(ArrayList path) { + path.remove(LAYOUT_INDEX); + } /** * 将WLayout转换为XLayoutContainer 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 415d1637ad..567324ae0a 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 @@ -27,7 +27,12 @@ import com.fr.stable.ArrayUtils; import com.fr.stable.core.PropertyChangeAdapter; import javax.swing.border.Border; -import java.awt.*; +import java.awt.Color; +import java.awt.Component; +import java.awt.Dimension; +import java.awt.Font; +import java.awt.FontMetrics; +import java.awt.Rectangle; import java.beans.IntrospectionException; diff --git a/designer_form/src/com/fr/design/designer/treeview/ComponentTreeCellRenderer.java b/designer_form/src/com/fr/design/designer/treeview/ComponentTreeCellRenderer.java index 8ba77b8168..53deb21be7 100644 --- a/designer_form/src/com/fr/design/designer/treeview/ComponentTreeCellRenderer.java +++ b/designer_form/src/com/fr/design/designer/treeview/ComponentTreeCellRenderer.java @@ -25,12 +25,6 @@ public class ComponentTreeCellRenderer extends DefaultTreeCellRenderer { super.getTreeCellRendererComponent(tree, value, selected, expanded, leaf, row, hasFocus); if (value instanceof XCreator) { String name = ((XCreator) value).toData().getWidgetName(); - //树节点上不显示此控件 - if(value instanceof XWCardLayout){ - this.setSize(new Dimension(0, 0)); - this.setPreferredSize(new Dimension(0, 0)); - return this; - } setText(name); Icon icon = XCreatorUtils.getCreatorIcon((XCreator) value); if (icon != null) { diff --git a/designer_form/src/com/fr/design/designer/treeview/ComponentTreeModel.java b/designer_form/src/com/fr/design/designer/treeview/ComponentTreeModel.java index c39ea73b51..ca1b7784b7 100644 --- a/designer_form/src/com/fr/design/designer/treeview/ComponentTreeModel.java +++ b/designer_form/src/com/fr/design/designer/treeview/ComponentTreeModel.java @@ -10,7 +10,12 @@ import javax.swing.tree.TreeModel; import javax.swing.tree.TreePath; import com.fr.base.FRContext; -import com.fr.design.designer.creator.*; +import com.fr.design.designer.creator.XCreator; +import com.fr.design.designer.creator.XLayoutContainer; +import com.fr.design.designer.creator.XWAbsoluteBodyLayout; +import com.fr.design.designer.creator.XWFitLayout; +import com.fr.design.designer.creator.XWidgetCreator; +import com.fr.design.designer.creator.cardlayout.XWCardMainBorderLayout; import com.fr.design.mainframe.FormDesigner; import com.fr.design.designer.beans.events.DesignerEvent; import com.fr.form.ui.Widget; @@ -23,6 +28,8 @@ public class ComponentTreeModel implements TreeModel { private final int ABSOLUTE_AS_BODY_NOT_FOUND = -1; + private final int CARDMAINLAYOUT_CHILD_COUNT = 1; + public ComponentTreeModel(FormDesigner designer, Component root) { this.designer = designer; this.root = root; @@ -58,10 +65,14 @@ public class ComponentTreeModel implements TreeModel { @Override public int getChildCount(Object parent) { + if(parent instanceof XWCardMainBorderLayout){ + return CARDMAINLAYOUT_CHILD_COUNT; + } if (parent != null && parent instanceof XLayoutContainer) { XLayoutContainer xlayout = (XLayoutContainer) parent; return xlayout.getXCreatorCount(); } + return 0; } diff --git a/designer_form/src/com/fr/design/mainframe/ComponentTree.java b/designer_form/src/com/fr/design/mainframe/ComponentTree.java index c676ff8c56..e15b527af3 100644 --- a/designer_form/src/com/fr/design/mainframe/ComponentTree.java +++ b/designer_form/src/com/fr/design/mainframe/ComponentTree.java @@ -5,6 +5,8 @@ import com.fr.design.designer.creator.XCreator; import com.fr.design.designer.creator.XLayoutContainer; import com.fr.design.designer.creator.XWAbsoluteBodyLayout; import com.fr.design.designer.creator.XWFitLayout; +import com.fr.design.designer.creator.cardlayout.XWCardLayout; +import com.fr.design.designer.creator.cardlayout.XWCardMainBorderLayout; import com.fr.design.designer.treeview.ComponentTreeCellRenderer; import com.fr.design.designer.treeview.ComponentTreeModel; import com.fr.design.gui.itree.UITreeUI; @@ -15,7 +17,13 @@ import javax.swing.*; import javax.swing.tree.TreeCellRenderer; import javax.swing.tree.TreePath; import javax.swing.tree.TreeSelectionModel; -import java.awt.*; +import java.awt.BorderLayout; +import java.awt.Color; +import java.awt.Component; +import java.awt.Container; +import java.awt.Dimension; +import java.awt.Graphics; +import java.awt.Point; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.awt.image.BufferedImage; @@ -218,10 +226,12 @@ public class ComponentTree extends JTree { while (parent != null) { XCreator creator = (XCreator) parent; + path.add(0, parent); if (creator != comp) { creator.notShowInComponentTree(path); } + //绝对布局作为body的时候不显示自适应布局父层 if (((XCreator) parent).acceptType(XWAbsoluteBodyLayout.class)) { if ((parent.getParent() != null) @@ -230,6 +240,10 @@ public class ComponentTree extends JTree { continue; } } + if(((XCreator) parent).acceptType(XWCardLayout.class)){ + parent = ((XWCardMainBorderLayout)parent.getParent()).getTitlePart().getTagPart(); + continue; + } parent = parent.getParent(); }