diff --git a/designer_form/src/com/fr/design/designer/creator/DedicateLayoutContainer.java b/designer_form/src/com/fr/design/designer/creator/DedicateLayoutContainer.java index 8c3cd743de..d7f073b451 100644 --- a/designer_form/src/com/fr/design/designer/creator/DedicateLayoutContainer.java +++ b/designer_form/src/com/fr/design/designer/creator/DedicateLayoutContainer.java @@ -5,9 +5,10 @@ package com.fr.design.designer.creator; import com.fr.form.ui.container.WLayout; -import java.awt.*; +import java.awt.Component; +import java.awt.Dimension; import java.beans.IntrospectionException; -import java.util.ArrayList; +import java.util.List; /** * 一些控件专属的容器,如标题容器,sclae容器 @@ -27,6 +28,7 @@ public abstract class DedicateLayoutContainer extends XLayoutContainer { * @return 属性名 * @throws IntrospectionException */ + @Override public CRPropertyDescriptor[] supportedDescriptor() throws IntrospectionException { return new CRPropertyDescriptor[0]; } @@ -50,7 +52,8 @@ public abstract class DedicateLayoutContainer extends XLayoutContainer { * * @param path 控件树list */ - public void notShowInComponentTree(ArrayList path) { + @Override + public void notShowInComponentTree(List path) { path.remove(path.size() - 1); } @@ -59,6 +62,7 @@ public abstract class DedicateLayoutContainer extends XLayoutContainer { * * @param name 名称 */ + @Override public void resetCreatorName(String name) { super.resetCreatorName(name); XCreator child = getXCreator(XWScaleLayout.INDEX); @@ -70,6 +74,7 @@ public abstract class DedicateLayoutContainer extends XLayoutContainer { * 重置组件的可见性 * @param visible 可见性 */ + @Override public void resetVisible(boolean visible){ super.resetVisible(visible); XCreator child = getXCreator(XWScaleLayout.INDEX); @@ -80,6 +85,7 @@ public abstract class DedicateLayoutContainer extends XLayoutContainer { * * @return 组件 */ + @Override public XCreator getPropertyDescriptorCreator() { return getXCreator(XWScaleLayout.INDEX); } @@ -89,6 +95,7 @@ public abstract class DedicateLayoutContainer extends XLayoutContainer { * * @return 是则返回true */ + @Override public boolean isComponentTreeLeaf() { return true; } @@ -98,6 +105,7 @@ public abstract class DedicateLayoutContainer extends XLayoutContainer { * * @return 是则返回true */ + @Override public boolean isDedicateContainer() { return true; } 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 ed234b62ab..7a49657918 100644 --- a/designer_form/src/com/fr/design/designer/creator/XCreator.java +++ b/designer_form/src/com/fr/design/designer/creator/XCreator.java @@ -271,6 +271,7 @@ public abstract class XCreator extends JPanel implements XComponent, XCreatorToo *@param formEditor 设计界面组件 *@return 工具界面 */ + @Override public JComponent createToolPane(BaseJForm jform, FormDesigner formEditor) { if (!BaseUtils.isAuthorityEditing()) { if (isDedicateContainer()) { @@ -370,14 +371,25 @@ public abstract class XCreator extends JPanel implements XComponent, XCreatorToo * 控件树不显示此组件 * @param path 控件树list */ - public void notShowInComponentTree(ArrayList path) { + @Override + public void notShowInComponentTree(List path) { return; } + /** + * 获取其在控件树上可见父层 + * @return 组件 + */ + @Override + public Component getParentShow(){ + return this.getParent(); + } + /** * 重置组件的名称 * @param name 名称 */ + @Override public void resetCreatorName(String name) { toData().setWidgetName(name); } @@ -394,6 +406,7 @@ public abstract class XCreator extends JPanel implements XComponent, XCreatorToo * 返回编辑的子组件,scale为其内部组件 * @return 组件 */ + @Override public XCreator getEditingChildCreator() { return this; } @@ -402,6 +415,7 @@ public abstract class XCreator extends JPanel implements XComponent, XCreatorToo * 返回对应属性表的组件,scale和title返回其子组件 * @return 组件 */ + @Override public XCreator getPropertyDescriptorCreator() { return this; } @@ -410,6 +424,7 @@ public abstract class XCreator extends JPanel implements XComponent, XCreatorToo * 更新子组件的Bound; 没有不处理 * @param minHeight 最小高度 */ + @Override public void updateChildBound(int minHeight) { return; } @@ -418,6 +433,7 @@ public abstract class XCreator extends JPanel implements XComponent, XCreatorToo * 是否作为控件树的叶子节点 * @return 是则返回true */ + @Override public boolean isComponentTreeLeaf() { return true; } @@ -426,6 +442,7 @@ public abstract class XCreator extends JPanel implements XComponent, XCreatorToo * 是否为sclae和title专属容器 * @return 是则返回true */ + @Override public boolean isDedicateContainer() { return false; } diff --git a/designer_form/src/com/fr/design/designer/creator/XCreatorTools.java b/designer_form/src/com/fr/design/designer/creator/XCreatorTools.java index 6434fcc915..2d87633cdc 100644 --- a/designer_form/src/com/fr/design/designer/creator/XCreatorTools.java +++ b/designer_form/src/com/fr/design/designer/creator/XCreatorTools.java @@ -5,6 +5,7 @@ package com.fr.design.designer.creator; import java.awt.Component; import java.util.ArrayList; +import java.util.List; /** * @author jim @@ -17,7 +18,7 @@ public interface XCreatorTools { * 控件树不显示此组件 * @param path 控件树list */ - void notShowInComponentTree(ArrayList path); + void notShowInComponentTree(List path); /** * 重置组件的名称 @@ -54,5 +55,11 @@ public interface XCreatorTools { * @return 是则返回true */ boolean isDedicateContainer(); + + /** + * 获取其在控件树上可见父层 + * @return 组件 + */ + Component getParentShow(); } \ No newline at end of file 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/XLayoutContainer.java b/designer_form/src/com/fr/design/designer/creator/XLayoutContainer.java index 62ae1e2155..e4281174b6 100644 --- a/designer_form/src/com/fr/design/designer/creator/XLayoutContainer.java +++ b/designer_form/src/com/fr/design/designer/creator/XLayoutContainer.java @@ -241,6 +241,10 @@ public abstract class XLayoutContainer extends XBorderStyleWidgetCreator impleme } } + public int getShowXCreatorCount() { + return getXCreatorCount(); + } + public int getXCreatorCount() { return getComponentCount(); } diff --git a/designer_form/src/com/fr/design/designer/creator/XWAbsoluteBodyLayout.java b/designer_form/src/com/fr/design/designer/creator/XWAbsoluteBodyLayout.java index 1c389230b6..127d5deeaf 100644 --- a/designer_form/src/com/fr/design/designer/creator/XWAbsoluteBodyLayout.java +++ b/designer_form/src/com/fr/design/designer/creator/XWAbsoluteBodyLayout.java @@ -5,17 +5,13 @@ import com.fr.design.designer.beans.adapters.layout.FRAbsoluteBodyLayoutAdapter; import com.fr.design.designer.properties.mobile.BodyMobilePropertyUI; import com.fr.design.form.util.XCreatorConstants; import com.fr.design.fun.WidgetPropertyUIProvider; -import com.fr.design.mainframe.widget.editors.PaddingMarginEditor; import com.fr.design.mainframe.widget.editors.WLayoutBorderStyleEditor; -import com.fr.design.mainframe.widget.renderer.LayoutBorderStyleRenderer; -import com.fr.design.mainframe.widget.renderer.PaddingMarginCellRenderer; -import com.fr.form.ui.LayoutBorderStyle; import com.fr.form.ui.container.WAbsoluteBodyLayout; -import com.fr.general.ComparatorUtils; import com.fr.general.Inter; import com.fr.stable.core.PropertyChangeAdapter; -import java.awt.*; +import java.awt.Component; +import java.awt.Dimension; import java.beans.IntrospectionException; /** @@ -89,6 +85,20 @@ public class XWAbsoluteBodyLayout extends XWAbsoluteLayout { }; } + /** + * 获取其在控件树上可见父层 + * @return 组件 + */ + @Override + public Component getParentShow(){ + //绝对布局作为body的时候不显示自适应布局父层 + if ((this.getParent() != null)) { + return ((XCreator) this.getParent()).getParentShow(); + } + return super.getParentShow(); + } + + @Override public WidgetPropertyUIProvider[] getWidgetPropertyUIProviders() { return new WidgetPropertyUIProvider[]{ new BodyMobilePropertyUI(this)}; 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..784fd61fe8 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 @@ -153,14 +153,15 @@ public class XCardSwitchButton extends XButton { * 点击事件 * */ + @Override public void respondClick(EditingMouseListener editingMouseListener, - MouseEvent e) { + MouseEvent e) { FormDesigner designer = editingMouseListener.getDesigner(); SelectionModel selectionModel = editingMouseListener.getSelectionModel(); //关闭重新打开,相关的layout未存到xml中,初始化 if(cardLayout == null){ - initRelateLayout(this); + initRelateLayout(); } //获取当前tab的index @@ -254,7 +255,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(); @@ -310,7 +311,8 @@ public class XCardSwitchButton extends XButton { } } - public void paintComponent(Graphics g) { + @Override + public void paintComponent(Graphics g) { super.paintComponent(g); Graphics2D g2d = (Graphics2D) g; drawBackground(); @@ -353,7 +355,7 @@ public class XCardSwitchButton extends XButton { this.setButtonText(titleText); if (this.cardLayout == null) { - initRelateLayout(this); + initRelateLayout(); } LayoutBorderStyle style = this.cardLayout.toData().getBorderStyle(); @@ -418,6 +420,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); } @@ -428,6 +434,7 @@ public class XCardSwitchButton extends XButton { label = this.getContentLabel(); } + @Override public void firePropertyChange() { super.firePropertyChange(); tagLayout.setTabsAndAdjust(); 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..984aac144c 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.List; /** * @author richer @@ -55,6 +57,9 @@ public class XWCardLayout extends XLayoutContainer { private static final int NORTH = 0; private FormDesigner designer; + private static final int LAYOUT_INDEX = 0; + + //默认蓝色标题背景 private static final Color TITLE_COLOR = new Color(51, 132, 240); @@ -76,6 +81,7 @@ public class XWCardLayout extends XLayoutContainer { * @date 2014-11-25-下午6:22:40 * */ + @Override public String createDefaultName() { return "cardlayout"; } @@ -89,7 +95,8 @@ public class XWCardLayout extends XLayoutContainer { * @date 2014-11-25-下午6:22:17 * */ - public WCardLayout toData() { + @Override + public WCardLayout toData() { return (WCardLayout) data; } @@ -97,6 +104,7 @@ public class XWCardLayout extends XLayoutContainer { * 初始化时默认的组件大小 * @return 默认Dimension */ + @Override public Dimension initEditorSize() { return new Dimension(500, 300); } @@ -150,6 +158,7 @@ public class XWCardLayout extends XLayoutContainer { * @date 2014-11-25-下午4:47:23 * */ + @Override protected XLayoutContainer getCreatorWrapper(String widgetName) { initStyle(); Dimension dimension = new Dimension(); @@ -222,17 +231,28 @@ public class XWCardLayout extends XLayoutContainer { return xFirstBtn; } - + + /** + * 控件树不显示此组件 + * @param path 控件树list + */ + @Override + public void notShowInComponentTree(List path) { + path.remove(LAYOUT_INDEX); + } + + /** * 设置父容器的名字 - * + * * @param parentPanel 当前父容器 * @param widgetName 当前控件名 - * + * * * @date 2014-11-27-上午9:47:00 - * + * */ + @Override protected void setWrapperName(XLayoutContainer parentPanel, String widgetName) { parentPanel.toData().setWidgetName("tablayout" + widgetName.replaceAll(createDefaultName(),"")); } @@ -246,7 +266,8 @@ public class XWCardLayout extends XLayoutContainer { * @date 2014-11-25-下午4:57:55 * */ - protected void addToWrapper(XLayoutContainer parentPanel, int width, int minHeight){ + @Override + protected void addToWrapper(XLayoutContainer parentPanel, int width, int minHeight){ parentPanel.add(this, WBorderLayout.CENTER); } @@ -259,7 +280,8 @@ public class XWCardLayout extends XLayoutContainer { * @date 2014-11-25-下午6:20:10 * */ - public void componentAdded(ContainerEvent e) { + @Override + public void componentAdded(ContainerEvent e) { if (isRefreshing) { return; } @@ -284,6 +306,7 @@ public class XWCardLayout extends XLayoutContainer { * 是否支持标题样式 * @return 默认false */ + @Override public boolean hasTitleStyle() { return true; } @@ -293,6 +316,7 @@ public class XWCardLayout extends XLayoutContainer { * @return 属性名 * @throws IntrospectionException */ + @Override public CRPropertyDescriptor[] supportedDescriptor() throws IntrospectionException { //嵌套的tab组件,内层的不支持轮播属性,屏蔽属性表 if(!isNested()) { @@ -379,7 +403,8 @@ public class XWCardLayout extends XLayoutContainer { } //初始化样式 - protected void initStyle() { + @Override + protected void initStyle() { LayoutBorderStyle style = toData().getBorderStyle(); initBorderTitleStyle(style); initBorderStyle(); @@ -432,7 +457,8 @@ public class XWCardLayout extends XLayoutContainer { * @param designer 表单设计器 * */ - public void deleteRelatedComponent(XCreator creator,FormDesigner designer){ + @Override + public void deleteRelatedComponent(XCreator creator, FormDesigner designer){ XWCardMainBorderLayout mainLayout = (XWCardMainBorderLayout) creator.getBackupParent(); SelectionModel selectionModel = designer.getSelectionModel(); selectionModel.setSelectedCreator(mainLayout); @@ -461,6 +487,7 @@ public class XWCardLayout extends XLayoutContainer { * data属性改变触发其他操作 * */ + @Override public void firePropertyChange(){ initStyle(); } 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..c6b8381472 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 @@ -32,6 +32,7 @@ import java.awt.Rectangle; import java.awt.event.MouseEvent; import java.awt.image.BufferedImage; import java.util.ArrayList; +import java.util.List; /** * card布局主体框架 @@ -44,14 +45,13 @@ public class XWCardMainBorderLayout extends XWBorderLayout{ private static final int CENTER = 1; private static final int NORTH = 0; - public static final Color DEFAULT_BORDER_COLOR = new Color(210,210,210); - private static final int LAYOUT_INDEX = 0; private static final int TITLE_STYLE = 2; - private static final int NORMAL_STYLE = 1; private static final int EDIT_BTN_WIDTH = 60; private static final int EDIT_BTN_HEIGHT = 24; + private final int CARDMAINLAYOUT_CHILD_COUNT = 1; + /** * 构造函数 */ @@ -68,6 +68,7 @@ public class XWCardMainBorderLayout extends XWBorderLayout{ * @date 2014-12-10-下午1:46:33 * */ + @Override public WCardMainBorderLayout toData() { return (WCardMainBorderLayout) super.toData(); } @@ -98,11 +99,13 @@ public class XWCardMainBorderLayout extends XWBorderLayout{ super.add(comp, position); } + /** * 切换到非添加状态 * * @return designer 表单设计器 */ + @Override public void stopAddingState(FormDesigner designer){ designer.stopAddingState(); return; @@ -151,8 +154,14 @@ public class XWCardMainBorderLayout extends XWBorderLayout{ * 控件树不显示此组件 * @param path 控件树list */ - public void notShowInComponentTree(ArrayList path) { - path.remove(LAYOUT_INDEX); + @Override + public void notShowInComponentTree(List path) { + return; + } + + @Override + public int getShowXCreatorCount() { + return CARDMAINLAYOUT_CHILD_COUNT; } @Override @@ -170,7 +179,8 @@ public class XWCardMainBorderLayout extends XWBorderLayout{ * 重新调整子组件的宽度 * @param width 宽度 */ - public void recalculateChildWidth(int width){ + @Override + public void recalculateChildWidth(int width){ ArrayList childrenList = this.getTargetChildrenList(); int size = childrenList.size(); if (size > 0) { @@ -201,7 +211,8 @@ public class XWCardMainBorderLayout extends XWBorderLayout{ * 重新调整子组件的高度 * @param height 高度 */ - public void recalculateChildHeight(int height){ + @Override + public void recalculateChildHeight(int height){ ArrayList childrenList = this.getTargetChildrenList(); int size = childrenList.size(); if (size > 0) { @@ -233,6 +244,7 @@ public class XWCardMainBorderLayout extends XWBorderLayout{ } + @Override public void paint(Graphics g) { super.paint(g); //如果鼠标移动到布局内且布局不可编辑,画出编辑蒙层 @@ -275,7 +287,8 @@ public class XWCardMainBorderLayout extends XWBorderLayout{ * @param editingMouseListener 鼠标点击,位置处理器 * @param e 鼠标点击事件 */ - public void respondClick(EditingMouseListener editingMouseListener,MouseEvent e){ + @Override + public void respondClick(EditingMouseListener editingMouseListener, MouseEvent e){ FormDesigner designer = editingMouseListener.getDesigner(); SelectionModel selectionModel = editingMouseListener.getSelectionModel(); boolean isEditing = e.getButton() == MouseEvent.BUTTON1 && @@ -308,10 +321,17 @@ public class XWCardMainBorderLayout extends XWBorderLayout{ } } + @Override + public int getIndexOfChild(Object child) { + XWCardTitleLayout titlePart = this.getTitlePart(); + return titlePart.getIndexOfChild(child); + } + /** * data属性改变触发其他操作 * */ + @Override public void firePropertyChange(){ getCardPart().initStyle(); } 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..5c3d80de6e 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 @@ -3,14 +3,12 @@ */ package com.fr.design.designer.creator.cardlayout; -import java.awt.Component; import java.awt.Dimension; import java.awt.Font; 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; @@ -119,6 +117,7 @@ public class XWCardTagLayout extends XWHorizontalBoxLayout { * @param e 事件 * @date 2014-11-25-下午6:20:10 */ + @Override public void componentAdded(ContainerEvent e) { super.componentAdded(e); @@ -153,6 +152,7 @@ public class XWCardTagLayout extends XWHorizontalBoxLayout { /** * 将WLayout转换为XLayoutContainer */ + @Override public void convert() { isRefreshing = true; WCardTagLayout layout = (WCardTagLayout) this.toData(); @@ -169,6 +169,7 @@ public class XWCardTagLayout extends XWHorizontalBoxLayout { isRefreshing = false; } + @Override public String createDefaultName() { return "tabpane"; } @@ -178,6 +179,7 @@ public class XWCardTagLayout extends XWHorizontalBoxLayout { * * @return designer 表单设计器 */ + @Override public void stopAddingState(FormDesigner designer) { designer.stopAddingState(); } @@ -212,6 +214,7 @@ public class XWCardTagLayout extends XWHorizontalBoxLayout { * * @param */ + @Override public void setBorder(Border border) { } @@ -239,10 +242,12 @@ public class XWCardTagLayout extends XWHorizontalBoxLayout { } } + @Override public int[] getDirections() { return ((XCreator)getParent()).getDirections(); } + @Override public Rectangle getBounds() { return this.getParent().getBounds(); } @@ -252,10 +257,14 @@ public class XWCardTagLayout extends XWHorizontalBoxLayout { return this.getBackupParent().getTopLayout(); } - public void notShowInComponentTree(ArrayList path) { - path.remove(0); + + @Override + public int getIndexOfChild(Object child) { + XLayoutContainer cardPart = ((XWCardMainBorderLayout)this.getTopLayout()).getCardPart(); + return cardPart.getIndexOfChild(child); } + @Override public boolean isSupportDrag(){ return false; } @@ -303,6 +312,7 @@ public class XWCardTagLayout extends XWHorizontalBoxLayout { * data属性改变触发其他操作 * */ + @Override public void firePropertyChange() { WCardTagLayout wCardTagLayout = (WCardTagLayout) this.toData(); ((XWCardMainBorderLayout) getTopLayout()).resetTabDisplayPosition(wCardTagLayout.getDisplayPosition()); 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..d1797f92b8 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.List; import javax.swing.border.Border; @@ -33,6 +35,11 @@ public class XWCardTitleLayout extends XWBorderLayout { private static final int CENTER = 1; + private static final int LAYOUT_INDEX = 0; + + private static final int POSISIONT_OFFSET = 1; + + /** * 构造函数 */ @@ -51,10 +58,32 @@ public class XWCardTitleLayout extends XWBorderLayout { public WTabDisplayPosition getDisplayPosition(){ return ((WCardTagLayout)this.getTagPart().toData()).getDisplayPosition(); } + + /** + * 控件树不显示此组件 + * @param path 控件树list + */ + @Override + public void notShowInComponentTree(List path) { + path.remove(LAYOUT_INDEX); + } + + @Override + public int getIndexOfChild(Object child) { + int count = getComponentCount(); + for (int i = 0; i < count; i++) { + Component comp = getComponent(i); + if (comp == child) { + return i - POSISIONT_OFFSET; + } + } + return -1; + } /** * 将WLayout转换为XLayoutContainer */ + @Override public void convert(){ isRefreshing = true; WCardTitleLayout titleLayout = (WCardTitleLayout)this.toData(); @@ -139,7 +168,8 @@ public class XWCardTitleLayout extends XWBorderLayout { * * @return designer 表单设计器 */ - public void stopAddingState(FormDesigner designer){ + @Override + public void stopAddingState(FormDesigner designer){ designer.stopAddingState(); return; } @@ -182,6 +212,7 @@ public class XWCardTitleLayout extends XWBorderLayout { return this.getBackupParent().getTopLayout(); } + @Override public String createDefaultName() { return "tabpane"; } 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..90e85b2533 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; @@ -103,6 +108,7 @@ public class XWTabFitLayout extends XWFitLayout { * @return 属性名 * @throws IntrospectionException */ + @Override public CRPropertyDescriptor[] supportedDescriptor() throws IntrospectionException { checkButonType(); CRPropertyDescriptor[] crp = ((WTabFitLayout) data).isCustomStyle() ? getisCustomStyle() : getisnotCustomStyle(); @@ -245,7 +251,8 @@ public class XWTabFitLayout extends XWFitLayout { * @param designer 表单设计器 * */ - public void deleteRelatedComponent(XCreator creator,FormDesigner designer){ + @Override + public void deleteRelatedComponent(XCreator creator, FormDesigner designer){ //逐层回溯找出相关的layout和对应的tab按钮 XWTabFitLayout fitLayout = (XWTabFitLayout)creator; WTabFitLayout fit = (WTabFitLayout) fitLayout.toData(); @@ -312,7 +319,8 @@ public class XWTabFitLayout extends XWFitLayout { * @param comp 当前组件 * void */ - public void seleteRelatedComponent(XCreator comp){ + @Override + public void seleteRelatedComponent(XCreator comp){ XWTabFitLayout fitLayout = (XWTabFitLayout)comp; WTabFitLayout fit = (WTabFitLayout) fitLayout.toData(); int index = fit.getIndex(); @@ -337,7 +345,8 @@ public class XWTabFitLayout extends XWFitLayout { * @date 2014-12-30-下午3:15:28 * */ - public XLayoutContainer findNearestFit(){ + @Override + public XLayoutContainer findNearestFit(){ XLayoutContainer parent = this.getBackupParent(); return parent == null ? null : parent.findNearestFit(); } @@ -346,6 +355,7 @@ public class XWTabFitLayout extends XWFitLayout { * 非顶层自适应布局的缩放 * @param percent 百分比 */ + @Override public void adjustCompSize(double percent) { this.adjustCreatorsWhileSlide(percent); } @@ -364,6 +374,7 @@ public class XWTabFitLayout extends XWFitLayout { * * @param percent 宽度变化的百分比 */ + @Override public void adjustCreatorsWidth(double percent) { if (this.getComponentCount()==0) { // 初始化没有拖入控件时,实际宽度依然调整 @@ -396,6 +407,7 @@ public class XWTabFitLayout extends XWFitLayout { * 同时调整容器内的组件们,缩小时需要考虑有的组件高度不满足缩小高度 * @param percent 高度变化的百分比 */ + @Override public void adjustCreatorsHeight(double percent) { if (this.getComponentCount()==0) { //调整高度后,wlayout那边记录下 @@ -420,6 +432,7 @@ public class XWTabFitLayout extends XWFitLayout { LayoutUtils.layoutContainer(this); } + @Override public XLayoutContainer getOuterLayout(){ XWCardLayout cardLayout = (XWCardLayout) this.getBackupParent(); return cardLayout.getBackupParent(); @@ -434,12 +447,27 @@ public class XWTabFitLayout extends XWFitLayout { wgt.setBackupBounds(this.getComponent(m).getBounds()); } } + + /** + * 获取其在控件树上可见父层 + * @return 组件 + */ + @Override + public Component getParentShow(){ + XCardSwitchButton cardSwitchButton = this.getxCardSwitchButton(); + //控件树上显示其taglayout层 + if ((cardSwitchButton != null)) { + return cardSwitchButton.getTagLayout(); + } + return super.getParentShow(); + } /** * 去除原有的间隔 * @param gap 间隔 */ - public void moveCompInterval(int gap) { + @Override + public void moveCompInterval(int gap) { if (gap == 0) { return; } @@ -496,7 +524,8 @@ public class XWTabFitLayout extends XWFitLayout { * ps:改变布局大小或者拖入、删除、拉伸都要重新考虑间隔 * @param gap 间隔 */ - public void addCompInterval(int gap) { + @Override + public void addCompInterval(int gap) { if (gap == 0) { return; } @@ -541,6 +570,7 @@ public class XWTabFitLayout extends XWFitLayout { return new WidgetPropertyUIProvider[0]; } + @Override public void firePropertyChange(){ checkButonType(); //根据字体长度设置tab宽度 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..68140520e7 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,11 @@ 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.mainframe.FormDesigner; import com.fr.design.designer.beans.events.DesignerEvent; import com.fr.form.ui.Widget; @@ -23,6 +27,7 @@ public class ComponentTreeModel implements TreeModel { private final int ABSOLUTE_AS_BODY_NOT_FOUND = -1; + public ComponentTreeModel(FormDesigner designer, Component root) { this.designer = designer; this.root = root; @@ -60,8 +65,9 @@ public class ComponentTreeModel implements TreeModel { public int getChildCount(Object parent) { if (parent != null && parent instanceof XLayoutContainer) { XLayoutContainer xlayout = (XLayoutContainer) parent; - return xlayout.getXCreatorCount(); + return xlayout.getShowXCreatorCount(); } + 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..9c0bf05bcb 100644 --- a/designer_form/src/com/fr/design/mainframe/ComponentTree.java +++ b/designer_form/src/com/fr/design/mainframe/ComponentTree.java @@ -3,8 +3,6 @@ package com.fr.design.mainframe; import com.fr.design.constants.UIConstants; 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.treeview.ComponentTreeCellRenderer; import com.fr.design.designer.treeview.ComponentTreeModel; import com.fr.design.gui.itree.UITreeUI; @@ -15,7 +13,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; @@ -222,16 +226,7 @@ public class ComponentTree extends JTree { if (creator != comp) { creator.notShowInComponentTree(path); } - //绝对布局作为body的时候不显示自适应布局父层 - if (((XCreator) parent).acceptType(XWAbsoluteBodyLayout.class)) { - if ((parent.getParent() != null) - && ((XCreator) parent.getParent()).acceptType(XWFitLayout.class)) { - parent = parent.getParent().getParent(); - continue; - } - } - - parent = parent.getParent(); + parent = creator.getParentShow(); } Object[] components = path.toArray(); return new TreePath(components);