Browse Source

Merge pull request #1561 in BA/design from ~KERRY/design:feature/9.0 to feature/9.0

* commit '3ebf36600c00586d99d15e8922fcb0809ec65150':
  添加Override注解
  添加Override注解
  删除无用import
  REPORT-2615 代码质量修改
  REPORT-2615 tab控件树结构调整
superman 8 years ago
parent
commit
85763b19ed
  1. 14
      designer_form/src/com/fr/design/designer/creator/DedicateLayoutContainer.java
  2. 19
      designer_form/src/com/fr/design/designer/creator/XCreator.java
  3. 9
      designer_form/src/com/fr/design/designer/creator/XCreatorTools.java
  4. 3
      designer_form/src/com/fr/design/designer/creator/XElementCase.java
  5. 4
      designer_form/src/com/fr/design/designer/creator/XLayoutContainer.java
  6. 22
      designer_form/src/com/fr/design/designer/creator/XWAbsoluteBodyLayout.java
  7. 17
      designer_form/src/com/fr/design/designer/creator/cardlayout/XCardSwitchButton.java
  8. 45
      designer_form/src/com/fr/design/designer/creator/cardlayout/XWCardLayout.java
  9. 36
      designer_form/src/com/fr/design/designer/creator/cardlayout/XWCardMainBorderLayout.java
  10. 18
      designer_form/src/com/fr/design/designer/creator/cardlayout/XWCardTagLayout.java
  11. 33
      designer_form/src/com/fr/design/designer/creator/cardlayout/XWCardTitleLayout.java
  12. 42
      designer_form/src/com/fr/design/designer/creator/cardlayout/XWTabFitLayout.java
  13. 6
      designer_form/src/com/fr/design/designer/treeview/ComponentTreeCellRenderer.java
  14. 10
      designer_form/src/com/fr/design/designer/treeview/ComponentTreeModel.java
  15. 21
      designer_form/src/com/fr/design/mainframe/ComponentTree.java

14
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 com.fr.form.ui.container.WLayout;
import java.awt.*; import java.awt.Component;
import java.awt.Dimension;
import java.beans.IntrospectionException; import java.beans.IntrospectionException;
import java.util.ArrayList; import java.util.List;
/** /**
* 一些控件专属的容器如标题容器sclae容器 * 一些控件专属的容器如标题容器sclae容器
@ -27,6 +28,7 @@ public abstract class DedicateLayoutContainer extends XLayoutContainer {
* @return 属性名 * @return 属性名
* @throws IntrospectionException * @throws IntrospectionException
*/ */
@Override
public CRPropertyDescriptor[] supportedDescriptor() throws IntrospectionException { public CRPropertyDescriptor[] supportedDescriptor() throws IntrospectionException {
return new CRPropertyDescriptor[0]; return new CRPropertyDescriptor[0];
} }
@ -50,7 +52,8 @@ public abstract class DedicateLayoutContainer extends XLayoutContainer {
* *
* @param path 控件树list * @param path 控件树list
*/ */
public void notShowInComponentTree(ArrayList<Component> path) { @Override
public void notShowInComponentTree(List<Component> path) {
path.remove(path.size() - 1); path.remove(path.size() - 1);
} }
@ -59,6 +62,7 @@ public abstract class DedicateLayoutContainer extends XLayoutContainer {
* *
* @param name 名称 * @param name 名称
*/ */
@Override
public void resetCreatorName(String name) { public void resetCreatorName(String name) {
super.resetCreatorName(name); super.resetCreatorName(name);
XCreator child = getXCreator(XWScaleLayout.INDEX); XCreator child = getXCreator(XWScaleLayout.INDEX);
@ -70,6 +74,7 @@ public abstract class DedicateLayoutContainer extends XLayoutContainer {
* 重置组件的可见性 * 重置组件的可见性
* @param visible 可见性 * @param visible 可见性
*/ */
@Override
public void resetVisible(boolean visible){ public void resetVisible(boolean visible){
super.resetVisible(visible); super.resetVisible(visible);
XCreator child = getXCreator(XWScaleLayout.INDEX); XCreator child = getXCreator(XWScaleLayout.INDEX);
@ -80,6 +85,7 @@ public abstract class DedicateLayoutContainer extends XLayoutContainer {
* *
* @return 组件 * @return 组件
*/ */
@Override
public XCreator getPropertyDescriptorCreator() { public XCreator getPropertyDescriptorCreator() {
return getXCreator(XWScaleLayout.INDEX); return getXCreator(XWScaleLayout.INDEX);
} }
@ -89,6 +95,7 @@ public abstract class DedicateLayoutContainer extends XLayoutContainer {
* *
* @return 是则返回true * @return 是则返回true
*/ */
@Override
public boolean isComponentTreeLeaf() { public boolean isComponentTreeLeaf() {
return true; return true;
} }
@ -98,6 +105,7 @@ public abstract class DedicateLayoutContainer extends XLayoutContainer {
* *
* @return 是则返回true * @return 是则返回true
*/ */
@Override
public boolean isDedicateContainer() { public boolean isDedicateContainer() {
return true; return true;
} }

19
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 设计界面组件 *@param formEditor 设计界面组件
*@return 工具界面 *@return 工具界面
*/ */
@Override
public JComponent createToolPane(BaseJForm jform, FormDesigner formEditor) { public JComponent createToolPane(BaseJForm jform, FormDesigner formEditor) {
if (!BaseUtils.isAuthorityEditing()) { if (!BaseUtils.isAuthorityEditing()) {
if (isDedicateContainer()) { if (isDedicateContainer()) {
@ -370,14 +371,25 @@ public abstract class XCreator extends JPanel implements XComponent, XCreatorToo
* 控件树不显示此组件 * 控件树不显示此组件
* @param path 控件树list * @param path 控件树list
*/ */
public void notShowInComponentTree(ArrayList<Component> path) { @Override
public void notShowInComponentTree(List<Component> path) {
return; return;
} }
/**
* 获取其在控件树上可见父层
* @return 组件
*/
@Override
public Component getParentShow(){
return this.getParent();
}
/** /**
* 重置组件的名称 * 重置组件的名称
* @param name 名称 * @param name 名称
*/ */
@Override
public void resetCreatorName(String name) { public void resetCreatorName(String name) {
toData().setWidgetName(name); toData().setWidgetName(name);
} }
@ -394,6 +406,7 @@ public abstract class XCreator extends JPanel implements XComponent, XCreatorToo
* 返回编辑的子组件scale为其内部组件 * 返回编辑的子组件scale为其内部组件
* @return 组件 * @return 组件
*/ */
@Override
public XCreator getEditingChildCreator() { public XCreator getEditingChildCreator() {
return this; return this;
} }
@ -402,6 +415,7 @@ public abstract class XCreator extends JPanel implements XComponent, XCreatorToo
* 返回对应属性表的组件scale和title返回其子组件 * 返回对应属性表的组件scale和title返回其子组件
* @return 组件 * @return 组件
*/ */
@Override
public XCreator getPropertyDescriptorCreator() { public XCreator getPropertyDescriptorCreator() {
return this; return this;
} }
@ -410,6 +424,7 @@ public abstract class XCreator extends JPanel implements XComponent, XCreatorToo
* 更新子组件的Bound; 没有不处理 * 更新子组件的Bound; 没有不处理
* @param minHeight 最小高度 * @param minHeight 最小高度
*/ */
@Override
public void updateChildBound(int minHeight) { public void updateChildBound(int minHeight) {
return; return;
} }
@ -418,6 +433,7 @@ public abstract class XCreator extends JPanel implements XComponent, XCreatorToo
* 是否作为控件树的叶子节点 * 是否作为控件树的叶子节点
* @return 是则返回true * @return 是则返回true
*/ */
@Override
public boolean isComponentTreeLeaf() { public boolean isComponentTreeLeaf() {
return true; return true;
} }
@ -426,6 +442,7 @@ public abstract class XCreator extends JPanel implements XComponent, XCreatorToo
* 是否为sclae和title专属容器 * 是否为sclae和title专属容器
* @return 是则返回true * @return 是则返回true
*/ */
@Override
public boolean isDedicateContainer() { public boolean isDedicateContainer() {
return false; return false;
} }

9
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.awt.Component;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List;
/** /**
* @author jim * @author jim
@ -17,7 +18,7 @@ public interface XCreatorTools {
* 控件树不显示此组件 * 控件树不显示此组件
* @param path 控件树list * @param path 控件树list
*/ */
void notShowInComponentTree(ArrayList<Component> path); void notShowInComponentTree(List<Component> path);
/** /**
* 重置组件的名称 * 重置组件的名称
@ -54,5 +55,11 @@ public interface XCreatorTools {
* @return 是则返回true * @return 是则返回true
*/ */
boolean isDedicateContainer(); boolean isDedicateContainer();
/**
* 获取其在控件树上可见父层
* @return 组件
*/
Component getParentShow();
} }

3
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(); ReportFitAttrProvider fitAttr = wbTpl.getFitAttr();
ElementCaseEditor editor = this.toData(); ElementCaseEditor editor = this.toData();
//兼容之前报表块(之前三个选项为:默认 横向 双向 现在是:横向 双向 不自适应) //兼容之前报表块(之前三个选项为:默认 横向 双向 现在是:横向 双向 不自适应)
if (editor.getFitStateInPC() == 0) { if (editor.getFitStateInPC() == 0 || processor.getFitStateInPC(fitAttr) == 0 ) {
editor.setReportFitAttr(null); editor.setReportFitAttr(null);
} }
ReportFitAttrProvider reportFit = editor.getReportFitAttr(); ReportFitAttrProvider reportFit = editor.getReportFitAttr();
if(fitAttr != null){ if(fitAttr != null){
reportFit = fitAttr.fitInBrowser() ? editor.getReportFitAttr() : fitAttr; reportFit = fitAttr.fitInBrowser() ? editor.getReportFitAttr() : fitAttr;

4
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() { public int getXCreatorCount() {
return getComponentCount(); return getComponentCount();
} }

22
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.designer.properties.mobile.BodyMobilePropertyUI;
import com.fr.design.form.util.XCreatorConstants; import com.fr.design.form.util.XCreatorConstants;
import com.fr.design.fun.WidgetPropertyUIProvider; 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.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.form.ui.container.WAbsoluteBodyLayout;
import com.fr.general.ComparatorUtils;
import com.fr.general.Inter; import com.fr.general.Inter;
import com.fr.stable.core.PropertyChangeAdapter; import com.fr.stable.core.PropertyChangeAdapter;
import java.awt.*; import java.awt.Component;
import java.awt.Dimension;
import java.beans.IntrospectionException; 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 @Override
public WidgetPropertyUIProvider[] getWidgetPropertyUIProviders() { public WidgetPropertyUIProvider[] getWidgetPropertyUIProviders() {
return new WidgetPropertyUIProvider[]{ new BodyMobilePropertyUI(this)}; return new WidgetPropertyUIProvider[]{ new BodyMobilePropertyUI(this)};

17
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, public void respondClick(EditingMouseListener editingMouseListener,
MouseEvent e) { MouseEvent e) {
FormDesigner designer = editingMouseListener.getDesigner(); FormDesigner designer = editingMouseListener.getDesigner();
SelectionModel selectionModel = editingMouseListener.getSelectionModel(); SelectionModel selectionModel = editingMouseListener.getSelectionModel();
//关闭重新打开,相关的layout未存到xml中,初始化 //关闭重新打开,相关的layout未存到xml中,初始化
if(cardLayout == null){ if(cardLayout == null){
initRelateLayout(this); initRelateLayout();
} }
//获取当前tab的index //获取当前tab的index
@ -254,7 +255,7 @@ public class XCardSwitchButton extends XButton {
//SwitchButton对应的XWCardLayout和XWCardTagLayout暂未存到xml中,重新打开时根据父子层关系获取 //SwitchButton对应的XWCardLayout和XWCardTagLayout暂未存到xml中,重新打开时根据父子层关系获取
private void initRelateLayout(XCardSwitchButton button){ private void initRelateLayout(){
this.tagLayout = (XWCardTagLayout)this.getBackupParent(); this.tagLayout = (XWCardTagLayout)this.getBackupParent();
XWCardTitleLayout titleLayout = (XWCardTitleLayout) this.tagLayout.getBackupParent(); XWCardTitleLayout titleLayout = (XWCardTitleLayout) this.tagLayout.getBackupParent();
XWCardMainBorderLayout borderLayout = (XWCardMainBorderLayout)titleLayout.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); super.paintComponent(g);
Graphics2D g2d = (Graphics2D) g; Graphics2D g2d = (Graphics2D) g;
drawBackground(); drawBackground();
@ -353,7 +355,7 @@ public class XCardSwitchButton extends XButton {
this.setButtonText(titleText); this.setButtonText(titleText);
if (this.cardLayout == null) { if (this.cardLayout == null) {
initRelateLayout(this); initRelateLayout();
} }
LayoutBorderStyle style = this.cardLayout.toData().getBorderStyle(); LayoutBorderStyle style = this.cardLayout.toData().getBorderStyle();
@ -418,6 +420,10 @@ public class XCardSwitchButton extends XButton {
public XCreator getXCreator() { public XCreator getXCreator() {
//根据index获取对应的tabFitLayout //根据index获取对应的tabFitLayout
int index = ((CardSwitchButton) this.toData()).getIndex(); int index = ((CardSwitchButton) this.toData()).getIndex();
//关闭重新打开,相关的layout未存到xml中,初始化
if(cardLayout == null){
initRelateLayout();
}
return (XCreator) cardLayout.getComponent(index); return (XCreator) cardLayout.getComponent(index);
} }
@ -428,6 +434,7 @@ public class XCardSwitchButton extends XButton {
label = this.getContentLabel(); label = this.getContentLabel();
} }
@Override
public void firePropertyChange() { public void firePropertyChange() {
super.firePropertyChange(); super.firePropertyChange();
tagLayout.setTabsAndAdjust(); tagLayout.setTabsAndAdjust();

45
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 javax.swing.border.Border;
import java.awt.CardLayout; import java.awt.CardLayout;
import java.awt.Color; import java.awt.Color;
import java.awt.Component;
import java.awt.Dimension; import java.awt.Dimension;
import java.awt.event.ContainerEvent; import java.awt.event.ContainerEvent;
import java.beans.IntrospectionException; import java.beans.IntrospectionException;
import java.util.List;
/** /**
* @author richer * @author richer
@ -55,6 +57,9 @@ public class XWCardLayout extends XLayoutContainer {
private static final int NORTH = 0; private static final int NORTH = 0;
private FormDesigner designer; private FormDesigner designer;
private static final int LAYOUT_INDEX = 0;
//默认蓝色标题背景 //默认蓝色标题背景
private static final Color TITLE_COLOR = new Color(51, 132, 240); 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 * @date 2014-11-25-下午6:22:40
* *
*/ */
@Override
public String createDefaultName() { public String createDefaultName() {
return "cardlayout"; return "cardlayout";
} }
@ -89,7 +95,8 @@ public class XWCardLayout extends XLayoutContainer {
* @date 2014-11-25-下午6:22:17 * @date 2014-11-25-下午6:22:17
* *
*/ */
public WCardLayout toData() { @Override
public WCardLayout toData() {
return (WCardLayout) data; return (WCardLayout) data;
} }
@ -97,6 +104,7 @@ public class XWCardLayout extends XLayoutContainer {
* 初始化时默认的组件大小 * 初始化时默认的组件大小
* @return 默认Dimension * @return 默认Dimension
*/ */
@Override
public Dimension initEditorSize() { public Dimension initEditorSize() {
return new Dimension(500, 300); return new Dimension(500, 300);
} }
@ -150,6 +158,7 @@ public class XWCardLayout extends XLayoutContainer {
* @date 2014-11-25-下午4:47:23 * @date 2014-11-25-下午4:47:23
* *
*/ */
@Override
protected XLayoutContainer getCreatorWrapper(String widgetName) { protected XLayoutContainer getCreatorWrapper(String widgetName) {
initStyle(); initStyle();
Dimension dimension = new Dimension(); Dimension dimension = new Dimension();
@ -222,17 +231,28 @@ public class XWCardLayout extends XLayoutContainer {
return xFirstBtn; return xFirstBtn;
} }
/**
* 控件树不显示此组件
* @param path 控件树list
*/
@Override
public void notShowInComponentTree(List<Component> path) {
path.remove(LAYOUT_INDEX);
}
/** /**
* 设置父容器的名字 * 设置父容器的名字
* *
* @param parentPanel 当前父容器 * @param parentPanel 当前父容器
* @param widgetName 当前控件名 * @param widgetName 当前控件名
* *
* *
* @date 2014-11-27-上午9:47:00 * @date 2014-11-27-上午9:47:00
* *
*/ */
@Override
protected void setWrapperName(XLayoutContainer parentPanel, String widgetName) { protected void setWrapperName(XLayoutContainer parentPanel, String widgetName) {
parentPanel.toData().setWidgetName("tablayout" + widgetName.replaceAll(createDefaultName(),"")); parentPanel.toData().setWidgetName("tablayout" + widgetName.replaceAll(createDefaultName(),""));
} }
@ -246,7 +266,8 @@ public class XWCardLayout extends XLayoutContainer {
* @date 2014-11-25-下午4:57:55 * @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); parentPanel.add(this, WBorderLayout.CENTER);
} }
@ -259,7 +280,8 @@ public class XWCardLayout extends XLayoutContainer {
* @date 2014-11-25-下午6:20:10 * @date 2014-11-25-下午6:20:10
* *
*/ */
public void componentAdded(ContainerEvent e) { @Override
public void componentAdded(ContainerEvent e) {
if (isRefreshing) { if (isRefreshing) {
return; return;
} }
@ -284,6 +306,7 @@ public class XWCardLayout extends XLayoutContainer {
* 是否支持标题样式 * 是否支持标题样式
* @return 默认false * @return 默认false
*/ */
@Override
public boolean hasTitleStyle() { public boolean hasTitleStyle() {
return true; return true;
} }
@ -293,6 +316,7 @@ public class XWCardLayout extends XLayoutContainer {
* @return 属性名 * @return 属性名
* @throws IntrospectionException * @throws IntrospectionException
*/ */
@Override
public CRPropertyDescriptor[] supportedDescriptor() throws IntrospectionException { public CRPropertyDescriptor[] supportedDescriptor() throws IntrospectionException {
//嵌套的tab组件,内层的不支持轮播属性,屏蔽属性表 //嵌套的tab组件,内层的不支持轮播属性,屏蔽属性表
if(!isNested()) { if(!isNested()) {
@ -379,7 +403,8 @@ public class XWCardLayout extends XLayoutContainer {
} }
//初始化样式 //初始化样式
protected void initStyle() { @Override
protected void initStyle() {
LayoutBorderStyle style = toData().getBorderStyle(); LayoutBorderStyle style = toData().getBorderStyle();
initBorderTitleStyle(style); initBorderTitleStyle(style);
initBorderStyle(); initBorderStyle();
@ -432,7 +457,8 @@ public class XWCardLayout extends XLayoutContainer {
* @param designer 表单设计器 * @param designer 表单设计器
* *
*/ */
public void deleteRelatedComponent(XCreator creator,FormDesigner designer){ @Override
public void deleteRelatedComponent(XCreator creator, FormDesigner designer){
XWCardMainBorderLayout mainLayout = (XWCardMainBorderLayout) creator.getBackupParent(); XWCardMainBorderLayout mainLayout = (XWCardMainBorderLayout) creator.getBackupParent();
SelectionModel selectionModel = designer.getSelectionModel(); SelectionModel selectionModel = designer.getSelectionModel();
selectionModel.setSelectedCreator(mainLayout); selectionModel.setSelectedCreator(mainLayout);
@ -461,6 +487,7 @@ public class XWCardLayout extends XLayoutContainer {
* data属性改变触发其他操作 * data属性改变触发其他操作
* *
*/ */
@Override
public void firePropertyChange(){ public void firePropertyChange(){
initStyle(); initStyle();
} }

36
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.event.MouseEvent;
import java.awt.image.BufferedImage; import java.awt.image.BufferedImage;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List;
/** /**
* card布局主体框架 * card布局主体框架
@ -44,14 +45,13 @@ public class XWCardMainBorderLayout extends XWBorderLayout{
private static final int CENTER = 1; private static final int CENTER = 1;
private static final int NORTH = 0; 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 TITLE_STYLE = 2;
private static final int NORMAL_STYLE = 1;
private static final int EDIT_BTN_WIDTH = 60; private static final int EDIT_BTN_WIDTH = 60;
private static final int EDIT_BTN_HEIGHT = 24; 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 * @date 2014-12-10-下午1:46:33
* *
*/ */
@Override
public WCardMainBorderLayout toData() { public WCardMainBorderLayout toData() {
return (WCardMainBorderLayout) super.toData(); return (WCardMainBorderLayout) super.toData();
} }
@ -98,11 +99,13 @@ public class XWCardMainBorderLayout extends XWBorderLayout{
super.add(comp, position); super.add(comp, position);
} }
/** /**
* 切换到非添加状态 * 切换到非添加状态
* *
* @return designer 表单设计器 * @return designer 表单设计器
*/ */
@Override
public void stopAddingState(FormDesigner designer){ public void stopAddingState(FormDesigner designer){
designer.stopAddingState(); designer.stopAddingState();
return; return;
@ -151,8 +154,14 @@ public class XWCardMainBorderLayout extends XWBorderLayout{
* 控件树不显示此组件 * 控件树不显示此组件
* @param path 控件树list * @param path 控件树list
*/ */
public void notShowInComponentTree(ArrayList<Component> path) { @Override
path.remove(LAYOUT_INDEX); public void notShowInComponentTree(List<Component> path) {
return;
}
@Override
public int getShowXCreatorCount() {
return CARDMAINLAYOUT_CHILD_COUNT;
} }
@Override @Override
@ -170,7 +179,8 @@ public class XWCardMainBorderLayout extends XWBorderLayout{
* 重新调整子组件的宽度 * 重新调整子组件的宽度
* @param width 宽度 * @param width 宽度
*/ */
public void recalculateChildWidth(int width){ @Override
public void recalculateChildWidth(int width){
ArrayList<?> childrenList = this.getTargetChildrenList(); ArrayList<?> childrenList = this.getTargetChildrenList();
int size = childrenList.size(); int size = childrenList.size();
if (size > 0) { if (size > 0) {
@ -201,7 +211,8 @@ public class XWCardMainBorderLayout extends XWBorderLayout{
* 重新调整子组件的高度 * 重新调整子组件的高度
* @param height 高度 * @param height 高度
*/ */
public void recalculateChildHeight(int height){ @Override
public void recalculateChildHeight(int height){
ArrayList<?> childrenList = this.getTargetChildrenList(); ArrayList<?> childrenList = this.getTargetChildrenList();
int size = childrenList.size(); int size = childrenList.size();
if (size > 0) { if (size > 0) {
@ -233,6 +244,7 @@ public class XWCardMainBorderLayout extends XWBorderLayout{
} }
@Override
public void paint(Graphics g) { public void paint(Graphics g) {
super.paint(g); super.paint(g);
//如果鼠标移动到布局内且布局不可编辑,画出编辑蒙层 //如果鼠标移动到布局内且布局不可编辑,画出编辑蒙层
@ -275,7 +287,8 @@ public class XWCardMainBorderLayout extends XWBorderLayout{
* @param editingMouseListener 鼠标点击位置处理器 * @param editingMouseListener 鼠标点击位置处理器
* @param e 鼠标点击事件 * @param e 鼠标点击事件
*/ */
public void respondClick(EditingMouseListener editingMouseListener,MouseEvent e){ @Override
public void respondClick(EditingMouseListener editingMouseListener, MouseEvent e){
FormDesigner designer = editingMouseListener.getDesigner(); FormDesigner designer = editingMouseListener.getDesigner();
SelectionModel selectionModel = editingMouseListener.getSelectionModel(); SelectionModel selectionModel = editingMouseListener.getSelectionModel();
boolean isEditing = e.getButton() == MouseEvent.BUTTON1 && 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属性改变触发其他操作 * data属性改变触发其他操作
* *
*/ */
@Override
public void firePropertyChange(){ public void firePropertyChange(){
getCardPart().initStyle(); getCardPart().initStyle();
} }

18
designer_form/src/com/fr/design/designer/creator/cardlayout/XWCardTagLayout.java

@ -3,14 +3,12 @@
*/ */
package com.fr.design.designer.creator.cardlayout; package com.fr.design.designer.creator.cardlayout;
import java.awt.Component;
import java.awt.Dimension; import java.awt.Dimension;
import java.awt.Font; import java.awt.Font;
import java.awt.FontMetrics; import java.awt.FontMetrics;
import java.awt.Rectangle; import java.awt.Rectangle;
import java.awt.event.ContainerEvent; import java.awt.event.ContainerEvent;
import java.awt.event.MouseEvent; import java.awt.event.MouseEvent;
import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
@ -119,6 +117,7 @@ public class XWCardTagLayout extends XWHorizontalBoxLayout {
* @param e 事件 * @param e 事件
* @date 2014-11-25-下午6:20:10 * @date 2014-11-25-下午6:20:10
*/ */
@Override
public void componentAdded(ContainerEvent e) { public void componentAdded(ContainerEvent e) {
super.componentAdded(e); super.componentAdded(e);
@ -153,6 +152,7 @@ public class XWCardTagLayout extends XWHorizontalBoxLayout {
/** /**
* 将WLayout转换为XLayoutContainer * 将WLayout转换为XLayoutContainer
*/ */
@Override
public void convert() { public void convert() {
isRefreshing = true; isRefreshing = true;
WCardTagLayout layout = (WCardTagLayout) this.toData(); WCardTagLayout layout = (WCardTagLayout) this.toData();
@ -169,6 +169,7 @@ public class XWCardTagLayout extends XWHorizontalBoxLayout {
isRefreshing = false; isRefreshing = false;
} }
@Override
public String createDefaultName() { public String createDefaultName() {
return "tabpane"; return "tabpane";
} }
@ -178,6 +179,7 @@ public class XWCardTagLayout extends XWHorizontalBoxLayout {
* *
* @return designer 表单设计器 * @return designer 表单设计器
*/ */
@Override
public void stopAddingState(FormDesigner designer) { public void stopAddingState(FormDesigner designer) {
designer.stopAddingState(); designer.stopAddingState();
} }
@ -212,6 +214,7 @@ public class XWCardTagLayout extends XWHorizontalBoxLayout {
* *
* @param * @param
*/ */
@Override
public void setBorder(Border border) { public void setBorder(Border border) {
} }
@ -239,10 +242,12 @@ public class XWCardTagLayout extends XWHorizontalBoxLayout {
} }
} }
@Override
public int[] getDirections() { public int[] getDirections() {
return ((XCreator)getParent()).getDirections(); return ((XCreator)getParent()).getDirections();
} }
@Override
public Rectangle getBounds() { public Rectangle getBounds() {
return this.getParent().getBounds(); return this.getParent().getBounds();
} }
@ -252,10 +257,14 @@ public class XWCardTagLayout extends XWHorizontalBoxLayout {
return this.getBackupParent().getTopLayout(); return this.getBackupParent().getTopLayout();
} }
public void notShowInComponentTree(ArrayList<Component> path) {
path.remove(0); @Override
public int getIndexOfChild(Object child) {
XLayoutContainer cardPart = ((XWCardMainBorderLayout)this.getTopLayout()).getCardPart();
return cardPart.getIndexOfChild(child);
} }
@Override
public boolean isSupportDrag(){ public boolean isSupportDrag(){
return false; return false;
} }
@ -303,6 +312,7 @@ public class XWCardTagLayout extends XWHorizontalBoxLayout {
* data属性改变触发其他操作 * data属性改变触发其他操作
* *
*/ */
@Override
public void firePropertyChange() { public void firePropertyChange() {
WCardTagLayout wCardTagLayout = (WCardTagLayout) this.toData(); WCardTagLayout wCardTagLayout = (WCardTagLayout) this.toData();
((XWCardMainBorderLayout) getTopLayout()).resetTabDisplayPosition(wCardTagLayout.getDisplayPosition()); ((XWCardMainBorderLayout) getTopLayout()).resetTabDisplayPosition(wCardTagLayout.getDisplayPosition());

33
designer_form/src/com/fr/design/designer/creator/cardlayout/XWCardTitleLayout.java

@ -3,8 +3,10 @@
*/ */
package com.fr.design.designer.creator.cardlayout; package com.fr.design.designer.creator.cardlayout;
import java.awt.Component;
import java.awt.Dimension; import java.awt.Dimension;
import java.awt.event.MouseEvent; import java.awt.event.MouseEvent;
import java.util.List;
import javax.swing.border.Border; import javax.swing.border.Border;
@ -33,6 +35,11 @@ public class XWCardTitleLayout extends XWBorderLayout {
private static final int CENTER = 1; 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(){ public WTabDisplayPosition getDisplayPosition(){
return ((WCardTagLayout)this.getTagPart().toData()).getDisplayPosition(); return ((WCardTagLayout)this.getTagPart().toData()).getDisplayPosition();
} }
/**
* 控件树不显示此组件
* @param path 控件树list
*/
@Override
public void notShowInComponentTree(List<Component> 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 * 将WLayout转换为XLayoutContainer
*/ */
@Override
public void convert(){ public void convert(){
isRefreshing = true; isRefreshing = true;
WCardTitleLayout titleLayout = (WCardTitleLayout)this.toData(); WCardTitleLayout titleLayout = (WCardTitleLayout)this.toData();
@ -139,7 +168,8 @@ public class XWCardTitleLayout extends XWBorderLayout {
* *
* @return designer 表单设计器 * @return designer 表单设计器
*/ */
public void stopAddingState(FormDesigner designer){ @Override
public void stopAddingState(FormDesigner designer){
designer.stopAddingState(); designer.stopAddingState();
return; return;
} }
@ -182,6 +212,7 @@ public class XWCardTitleLayout extends XWBorderLayout {
return this.getBackupParent().getTopLayout(); return this.getBackupParent().getTopLayout();
} }
@Override
public String createDefaultName() { public String createDefaultName() {
return "tabpane"; return "tabpane";
} }

42
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 com.fr.stable.core.PropertyChangeAdapter;
import javax.swing.border.Border; 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; import java.beans.IntrospectionException;
@ -103,6 +108,7 @@ public class XWTabFitLayout extends XWFitLayout {
* @return 属性名 * @return 属性名
* @throws IntrospectionException * @throws IntrospectionException
*/ */
@Override
public CRPropertyDescriptor[] supportedDescriptor() throws IntrospectionException { public CRPropertyDescriptor[] supportedDescriptor() throws IntrospectionException {
checkButonType(); checkButonType();
CRPropertyDescriptor[] crp = ((WTabFitLayout) data).isCustomStyle() ? getisCustomStyle() : getisnotCustomStyle(); CRPropertyDescriptor[] crp = ((WTabFitLayout) data).isCustomStyle() ? getisCustomStyle() : getisnotCustomStyle();
@ -245,7 +251,8 @@ public class XWTabFitLayout extends XWFitLayout {
* @param designer 表单设计器 * @param designer 表单设计器
* *
*/ */
public void deleteRelatedComponent(XCreator creator,FormDesigner designer){ @Override
public void deleteRelatedComponent(XCreator creator, FormDesigner designer){
//逐层回溯找出相关的layout和对应的tab按钮 //逐层回溯找出相关的layout和对应的tab按钮
XWTabFitLayout fitLayout = (XWTabFitLayout)creator; XWTabFitLayout fitLayout = (XWTabFitLayout)creator;
WTabFitLayout fit = (WTabFitLayout) fitLayout.toData(); WTabFitLayout fit = (WTabFitLayout) fitLayout.toData();
@ -312,7 +319,8 @@ public class XWTabFitLayout extends XWFitLayout {
* @param comp 当前组件 * @param comp 当前组件
* void * void
*/ */
public void seleteRelatedComponent(XCreator comp){ @Override
public void seleteRelatedComponent(XCreator comp){
XWTabFitLayout fitLayout = (XWTabFitLayout)comp; XWTabFitLayout fitLayout = (XWTabFitLayout)comp;
WTabFitLayout fit = (WTabFitLayout) fitLayout.toData(); WTabFitLayout fit = (WTabFitLayout) fitLayout.toData();
int index = fit.getIndex(); int index = fit.getIndex();
@ -337,7 +345,8 @@ public class XWTabFitLayout extends XWFitLayout {
* @date 2014-12-30-下午3:15:28 * @date 2014-12-30-下午3:15:28
* *
*/ */
public XLayoutContainer findNearestFit(){ @Override
public XLayoutContainer findNearestFit(){
XLayoutContainer parent = this.getBackupParent(); XLayoutContainer parent = this.getBackupParent();
return parent == null ? null : parent.findNearestFit(); return parent == null ? null : parent.findNearestFit();
} }
@ -346,6 +355,7 @@ public class XWTabFitLayout extends XWFitLayout {
* 非顶层自适应布局的缩放 * 非顶层自适应布局的缩放
* @param percent 百分比 * @param percent 百分比
*/ */
@Override
public void adjustCompSize(double percent) { public void adjustCompSize(double percent) {
this.adjustCreatorsWhileSlide(percent); this.adjustCreatorsWhileSlide(percent);
} }
@ -364,6 +374,7 @@ public class XWTabFitLayout extends XWFitLayout {
* *
* @param percent 宽度变化的百分比 * @param percent 宽度变化的百分比
*/ */
@Override
public void adjustCreatorsWidth(double percent) { public void adjustCreatorsWidth(double percent) {
if (this.getComponentCount()==0) { if (this.getComponentCount()==0) {
// 初始化没有拖入控件时,实际宽度依然调整 // 初始化没有拖入控件时,实际宽度依然调整
@ -396,6 +407,7 @@ public class XWTabFitLayout extends XWFitLayout {
* 同时调整容器内的组件们,缩小时需要考虑有的组件高度不满足缩小高度 * 同时调整容器内的组件们,缩小时需要考虑有的组件高度不满足缩小高度
* @param percent 高度变化的百分比 * @param percent 高度变化的百分比
*/ */
@Override
public void adjustCreatorsHeight(double percent) { public void adjustCreatorsHeight(double percent) {
if (this.getComponentCount()==0) { if (this.getComponentCount()==0) {
//调整高度后,wlayout那边记录下 //调整高度后,wlayout那边记录下
@ -420,6 +432,7 @@ public class XWTabFitLayout extends XWFitLayout {
LayoutUtils.layoutContainer(this); LayoutUtils.layoutContainer(this);
} }
@Override
public XLayoutContainer getOuterLayout(){ public XLayoutContainer getOuterLayout(){
XWCardLayout cardLayout = (XWCardLayout) this.getBackupParent(); XWCardLayout cardLayout = (XWCardLayout) this.getBackupParent();
return cardLayout.getBackupParent(); return cardLayout.getBackupParent();
@ -434,12 +447,27 @@ public class XWTabFitLayout extends XWFitLayout {
wgt.setBackupBounds(this.getComponent(m).getBounds()); 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 间隔 * @param gap 间隔
*/ */
public void moveCompInterval(int gap) { @Override
public void moveCompInterval(int gap) {
if (gap == 0) { if (gap == 0) {
return; return;
} }
@ -496,7 +524,8 @@ public class XWTabFitLayout extends XWFitLayout {
* ps:改变布局大小或者拖入删除拉伸都要重新考虑间隔 * ps:改变布局大小或者拖入删除拉伸都要重新考虑间隔
* @param gap 间隔 * @param gap 间隔
*/ */
public void addCompInterval(int gap) { @Override
public void addCompInterval(int gap) {
if (gap == 0) { if (gap == 0) {
return; return;
} }
@ -541,6 +570,7 @@ public class XWTabFitLayout extends XWFitLayout {
return new WidgetPropertyUIProvider[0]; return new WidgetPropertyUIProvider[0];
} }
@Override
public void firePropertyChange(){ public void firePropertyChange(){
checkButonType(); checkButonType();
//根据字体长度设置tab宽度 //根据字体长度设置tab宽度

6
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); super.getTreeCellRendererComponent(tree, value, selected, expanded, leaf, row, hasFocus);
if (value instanceof XCreator) { if (value instanceof XCreator) {
String name = ((XCreator) value).toData().getWidgetName(); 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); setText(name);
Icon icon = XCreatorUtils.getCreatorIcon((XCreator) value); Icon icon = XCreatorUtils.getCreatorIcon((XCreator) value);
if (icon != null) { if (icon != null) {

10
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 javax.swing.tree.TreePath;
import com.fr.base.FRContext; 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.mainframe.FormDesigner;
import com.fr.design.designer.beans.events.DesignerEvent; import com.fr.design.designer.beans.events.DesignerEvent;
import com.fr.form.ui.Widget; import com.fr.form.ui.Widget;
@ -23,6 +27,7 @@ public class ComponentTreeModel implements TreeModel {
private final int ABSOLUTE_AS_BODY_NOT_FOUND = -1; private final int ABSOLUTE_AS_BODY_NOT_FOUND = -1;
public ComponentTreeModel(FormDesigner designer, Component root) { public ComponentTreeModel(FormDesigner designer, Component root) {
this.designer = designer; this.designer = designer;
this.root = root; this.root = root;
@ -60,8 +65,9 @@ public class ComponentTreeModel implements TreeModel {
public int getChildCount(Object parent) { public int getChildCount(Object parent) {
if (parent != null && parent instanceof XLayoutContainer) { if (parent != null && parent instanceof XLayoutContainer) {
XLayoutContainer xlayout = (XLayoutContainer) parent; XLayoutContainer xlayout = (XLayoutContainer) parent;
return xlayout.getXCreatorCount(); return xlayout.getShowXCreatorCount();
} }
return 0; return 0;
} }

21
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.constants.UIConstants;
import com.fr.design.designer.creator.XCreator; import com.fr.design.designer.creator.XCreator;
import com.fr.design.designer.creator.XLayoutContainer; 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.ComponentTreeCellRenderer;
import com.fr.design.designer.treeview.ComponentTreeModel; import com.fr.design.designer.treeview.ComponentTreeModel;
import com.fr.design.gui.itree.UITreeUI; import com.fr.design.gui.itree.UITreeUI;
@ -15,7 +13,13 @@ import javax.swing.*;
import javax.swing.tree.TreeCellRenderer; import javax.swing.tree.TreeCellRenderer;
import javax.swing.tree.TreePath; import javax.swing.tree.TreePath;
import javax.swing.tree.TreeSelectionModel; 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.MouseAdapter;
import java.awt.event.MouseEvent; import java.awt.event.MouseEvent;
import java.awt.image.BufferedImage; import java.awt.image.BufferedImage;
@ -222,16 +226,7 @@ public class ComponentTree extends JTree {
if (creator != comp) { if (creator != comp) {
creator.notShowInComponentTree(path); creator.notShowInComponentTree(path);
} }
//绝对布局作为body的时候不显示自适应布局父层 parent = creator.getParentShow();
if (((XCreator) parent).acceptType(XWAbsoluteBodyLayout.class)) {
if ((parent.getParent() != null)
&& ((XCreator) parent.getParent()).acceptType(XWFitLayout.class)) {
parent = parent.getParent().getParent();
continue;
}
}
parent = parent.getParent();
} }
Object[] components = path.toArray(); Object[] components = path.toArray();
return new TreePath(components); return new TreePath(components);

Loading…
Cancel
Save