Browse Source

沿用之前的命名规则。

只进行 n 对 n 的匹配。
feature/big-screen
Harrison 4 years ago
parent
commit
c5b4410d9a
  1. 41
      designer-form/src/main/java/com/fr/design/designer/beans/models/AddingModel.java
  2. 23
      designer-form/src/test/java/com/fr/design/designer/beans/models/AddingModelTest.java

41
designer-form/src/main/java/com/fr/design/designer/beans/models/AddingModel.java

@ -6,11 +6,11 @@ import com.fr.design.designer.beans.adapters.component.CompositeComponentAdapter
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.XWAbsoluteLayout; import com.fr.design.designer.creator.XWAbsoluteLayout;
import com.fr.design.designer.creator.XWParameterLayout;
import com.fr.design.designer.creator.XWTitleLayout; import com.fr.design.designer.creator.XWTitleLayout;
import com.fr.design.mainframe.FormDesigner; import com.fr.design.mainframe.FormDesigner;
import com.fr.design.utils.ComponentUtils; import com.fr.design.utils.ComponentUtils;
import com.fr.form.main.Form; import com.fr.form.main.Form;
import com.fr.form.ui.Widget;
import com.fr.form.ui.container.WTitleLayout; import com.fr.form.ui.container.WTitleLayout;
import com.fr.general.ComparatorUtils; import com.fr.general.ComparatorUtils;
@ -23,8 +23,6 @@ import java.util.Set;
*/ */
public class AddingModel { public class AddingModel {
private static final String POSTFIX = "_a";
// 当前要添加的组件 // 当前要添加的组件
private XCreator creator; private XCreator creator;
// 记录当前鼠标的位置信息 // 记录当前鼠标的位置信息
@ -77,41 +75,46 @@ public class AddingModel {
* @param xCreator 创建器 * @param xCreator 创建器
*/ */
private static void renameWidgetName(Form form, XCreator xCreator) { private static void renameWidgetName(Form form, XCreator xCreator) {
Set<String> nameSpace = new HashSet<>(8); Set<String> nameSpace = new HashSet<>();
recursiveRenameWidgetName(form, nameSpace, xCreator); recursiveRenameWidgetName(form, xCreator, nameSpace);
} }
private static void recursiveRenameWidgetName(Form form, Set<String> nameSpace, XCreator xCreator) { private static void recursiveRenameWidgetName(Form form, XCreator xCreator, Set<String> nameSpace) {
String copyName = getAddWidgetName(form, xCreator.toData(), nameSpace); String creatorName = uniqueName(form, xCreator, nameSpace);
if (xCreator.toData() instanceof WTitleLayout) { if (xCreator.toData() instanceof WTitleLayout) {
XWTitleLayout xwTitleLayout = new XWTitleLayout((WTitleLayout) xCreator.toData(), xCreator.getSize()); XWTitleLayout xwTitleLayout = new XWTitleLayout((WTitleLayout) xCreator.toData(), xCreator.getSize());
xwTitleLayout.resetCreatorName(copyName); xwTitleLayout.resetCreatorName(creatorName);
return; return;
} }
xCreator.resetCreatorName(copyName); xCreator.resetCreatorName(creatorName);
int count = xCreator.getComponentCount(); int count = xCreator.getComponentCount();
for (int a = 0; a < count; a++) { for (int a = 0; a < count; a++) {
if (xCreator.getComponent(a) instanceof XCreator) { if (xCreator.getComponent(a) instanceof XCreator) {
XCreator child = (XCreator) xCreator.getComponent(a); XCreator child = (XCreator) xCreator.getComponent(a);
recursiveRenameWidgetName(form, nameSpace, child); recursiveRenameWidgetName(form, child, nameSpace);
} }
} }
} }
/** /**
* 组件拷贝命名规则 * 组件命名规则
*/ */
private static String getAddWidgetName(Form form, Widget added, Set<String> nameSpace) { public static String uniqueName(Form form, XCreator x, Set<String> nameSpace) {
StringBuilder name = new StringBuilder(added.getWidgetName()); String def = x.createDefaultName();
do { if (x.acceptType(XWParameterLayout.class)) {
name.append(POSTFIX); return def;
} while (form.isNameExist(name.toString()) || nameSpace.contains(name.toString())); }
nameSpace.add(name.toString()); int i = 0;
return name.toString(); String name = def + i;
while (form.isNameExist(name) || nameSpace.contains(name)) {
i++;
name = def + i;
}
return name;
} }
public int getCurrentX() { public int getCurrentX() {

23
designer-form/src/test/java/com/fr/design/designer/beans/models/AddingModelTest.java

@ -17,36 +17,41 @@ public class AddingModelTest {
@Test @Test
public void testInstantiateCreator() throws Exception { public void testInstantiateCreator() throws Exception {
ChartEditor chartEditor = new ChartEditor(); ChartEditor chartEditor = new ChartEditor();
chartEditor.setWidgetName("test"); chartEditor.setWidgetName("test01");
XCreator xCreator = new XCreator(chartEditor, new Dimension(20, 20)) { XCreator xCreator = new XCreator(chartEditor, new Dimension(20, 20)) {
@Override @Override
public CRPropertyDescriptor[] supportedDescriptor() throws IntrospectionException { public CRPropertyDescriptor[] supportedDescriptor() throws IntrospectionException {
return new CRPropertyDescriptor[0]; return new CRPropertyDescriptor[0];
} }
@Override @Override
protected JComponent initEditor() { protected JComponent initEditor() {
return null; return null;
} }
@Override @Override
protected void initXCreatorProperties() { protected void initXCreatorProperties() {
} }
@Override
public String createDefaultName() {
return "test";
}
}; };
AddingModel addingModel = new AddingModel(xCreator, 20, 20); AddingModel addingModel = new AddingModel(xCreator, 20, 20);
Form form = EasyMock.mock(Form.class); Form form = EasyMock.mock(Form.class);
EasyMock.expect(form.isNameExist("test_a")).andReturn(true).once(); EasyMock.expect(form.isNameExist("test0")).andReturn(true).once();
EasyMock.expect(form.isNameExist(EasyMock.anyString())).andReturn(false).anyTimes(); EasyMock.expect(form.isNameExist(EasyMock.anyString())).andReturn(false).anyTimes();
EasyMock.replay(form); EasyMock.replay(form);
FormDesigner mock = EasyMock.mock(FormDesigner.class); FormDesigner mock = EasyMock.mock(FormDesigner.class);
EasyMock.expect(mock.getTarget()).andReturn(form).anyTimes(); EasyMock.expect(mock.getTarget()).andReturn(form).anyTimes();
EasyMock.replay(mock); EasyMock.replay(mock);
addingModel.instantiateCreator(mock); addingModel.instantiateCreator(mock);
Assert.assertEquals("test_a_a", xCreator.toData().getWidgetName()); Assert.assertEquals("test1", xCreator.toData().getWidgetName());
} }
} }
Loading…
Cancel
Save