From c8eea04ce7946cb73a86d6399c7e418eb01fe9dd Mon Sep 17 00:00:00 2001 From: Harrison Date: Tue, 9 Jun 2020 16:41:04 +0800 Subject: [PATCH] =?UTF-8?q?REPORT-32149=E3=80=90=E7=BB=84=E4=BB=B6?= =?UTF-8?q?=E5=8A=A0=E5=AF=86=E3=80=91@harrison=E4=B8=A4=E4=B8=AA=E7=BB=84?= =?UTF-8?q?=E4=BB=B6=E8=BF=9B=E8=A1=8C=E6=8B=96=E5=85=A5=EF=BC=8C=E6=A8=A1?= =?UTF-8?q?=E6=9D=BF=E9=A2=84=E8=A7=88=E5=BE=88=E5=A5=87=E6=80=AA=20?= =?UTF-8?q?=E8=80=83=E8=99=91=E4=B8=93=E5=B1=9E=E5=AE=B9=E5=99=A8=20+=20ca?= =?UTF-8?q?rdLayout?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../designer/beans/models/ModelUtil.java | 22 ++++++-- .../beans/models/AddingModelTest.java | 53 ++++++++++++++++++- 2 files changed, 69 insertions(+), 6 deletions(-) diff --git a/designer-form/src/main/java/com/fr/design/designer/beans/models/ModelUtil.java b/designer-form/src/main/java/com/fr/design/designer/beans/models/ModelUtil.java index e1efd31416..ddd9e0e31b 100644 --- a/designer-form/src/main/java/com/fr/design/designer/beans/models/ModelUtil.java +++ b/designer-form/src/main/java/com/fr/design/designer/beans/models/ModelUtil.java @@ -21,14 +21,24 @@ abstract class ModelUtil { } private static void recursiveRenameWidgetName(Form form, XCreator xCreator, Set duplicated) { - + //有可能并不需要对自己处理,而是对其他的组件处理。所以要找到目标值 XCreator target = xCreator.getXCreator(); String uniqueName = uniqueName(form, target, duplicated); - target.toData().setWidgetName(uniqueName); - //将名字加入重复集合中 - duplicated.add(uniqueName); - + + int componentCount = target.getComponentCount(); + //如果没有子类,说明是刚创建的,直接对自己处理就好啦 + if (componentCount == 0) { + target.toData().setWidgetName(uniqueName); + return; + } + //专属容器,直接返回啦 + if (target.isDedicateContainer()) { + target.resetCreatorName(uniqueName); + return; + } + target.resetCreatorName(uniqueName); + int count = target.getComponentCount(); for (int a = 0; a < count; a++) { if (target.getComponent(a) instanceof XCreator) { @@ -54,6 +64,8 @@ abstract class ModelUtil { widgetName = raw + i; i++; } + //将名字加入重复集合中 + duplicated.add(widgetName); return widgetName; } diff --git a/designer-form/src/test/java/com/fr/design/designer/beans/models/AddingModelTest.java b/designer-form/src/test/java/com/fr/design/designer/beans/models/AddingModelTest.java index e7eca1c036..689044fe9e 100644 --- a/designer-form/src/test/java/com/fr/design/designer/beans/models/AddingModelTest.java +++ b/designer-form/src/test/java/com/fr/design/designer/beans/models/AddingModelTest.java @@ -1,15 +1,25 @@ package com.fr.design.designer.beans.models; +import com.fr.config.dao.DaoContext; +import com.fr.config.dao.impl.LocalClassHelperDao; +import com.fr.config.dao.impl.LocalEntityDao; +import com.fr.config.dao.impl.LocalXmlEntityDao; import com.fr.design.designer.creator.CRPropertyDescriptor; import com.fr.design.designer.creator.XCreator; +import com.fr.design.designer.creator.XLayoutContainer; +import com.fr.design.designer.creator.XWTitleLayout; +import com.fr.design.designer.creator.cardlayout.XWCardLayout; import com.fr.design.mainframe.FormDesigner; import com.fr.form.main.Form; import com.fr.form.ui.ChartEditor; import com.fr.form.ui.Widget; import com.fr.form.ui.container.WAbsoluteLayout; +import com.fr.form.ui.container.WCardLayout; import com.fr.form.ui.container.WTitleLayout; import org.easymock.EasyMock; +import org.junit.After; import org.junit.Assert; +import org.junit.Before; import org.junit.Test; import javax.swing.JComponent; @@ -19,6 +29,20 @@ import java.beans.IntrospectionException; public class AddingModelTest { + @Before + public void setUp() { + DaoContext.setXmlEntityDao(new LocalXmlEntityDao()); + DaoContext.setClassHelperDao(new LocalClassHelperDao()); + DaoContext.setEntityDao(new LocalEntityDao()); + } + + @After + public void tearDown() { + DaoContext.setXmlEntityDao(null); + DaoContext.setClassHelperDao(null); + DaoContext.setEntityDao(null); + } + @Test public void testInstantiateCreator() throws Exception { @@ -37,7 +61,9 @@ public class AddingModelTest { WAbsoluteLayout.BoundsWidget boundsWidget = new WAbsoluteLayout.BoundsWidget(chartEditor3, new Rectangle(dimension)); WTitleLayout wTitleLayout03 = new WTitleLayout(); wTitleLayout03.addWidget(boundsWidget); - DemoCreator xCreator3 = new DemoCreator(wTitleLayout03, dimension, "test03"); + //需要和内部的 widget 一样 + wTitleLayout03.setWidgetName("test03"); + XWTitleLayout xCreator3 = new XWTitleLayout(wTitleLayout03, dimension); xCreator1.add(xCreator3); AddingModel addingModel = new AddingModel(xCreator1, 20, 20); @@ -61,6 +87,31 @@ public class AddingModelTest { Assert.assertEquals("test030", xCreator3.toData().getWidgetName()); } + @Test + public void testInstantiateCreator_cardLayout() throws Exception { + + Form form = EasyMock.mock(Form.class); + EasyMock.expect(form.isNameExist("cardlayout")).andReturn(true).once(); + EasyMock.expect(form.isNameExist(EasyMock.anyString())).andReturn(false).anyTimes(); + EasyMock.replay(form); + + FormDesigner mock = EasyMock.mock(FormDesigner.class); + EasyMock.expect(mock.getTarget()).andReturn(form).anyTimes(); + EasyMock.replay(mock); + + WCardLayout wCardLayout = new WCardLayout(20, 20); + XWCardLayout xwCardLayout = new XWCardLayout(wCardLayout, new Dimension(20, 20)); + AddingModel addingModel = new AddingModel(mock, xwCardLayout); + Assert.assertEquals("cardlayout1", xwCardLayout.toData().getWidgetName()); + + //依赖于 cardlayout 创建 container + XLayoutContainer parentLayOut = xwCardLayout.initCreatorWrapper(20); + AddingModel parentModel = new AddingModel(mock, parentLayOut); + Assert.assertEquals("tablayout1", parentLayOut.toData().getWidgetName()); + Assert.assertEquals("tabpane1", ((XCreator) (parentLayOut.getComponent(0))).getXCreator().toData().getWidgetName()); + + } + private static class DemoCreator extends XCreator { private String widgetName;