From 9d2d79d44c3e250131c7c8f63fbd3cde43ed4033 Mon Sep 17 00:00:00 2001 From: kerry Date: Mon, 17 Dec 2018 09:38:46 +0800 Subject: [PATCH 1/2] =?UTF-8?q?REPORT-13548=E3=80=9010.0.2=E5=9B=9E?= =?UTF-8?q?=E5=BD=92=E3=80=91tab=E5=9D=97=E5=A4=8D=E5=88=B6=E7=B2=98?= =?UTF-8?q?=E8=B4=B4=E5=90=8E=E7=82=B9=E5=87=BB=E4=BC=9A=E4=BA=A7=E7=94=9F?= =?UTF-8?q?=E8=81=94=E5=8A=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../creator/cardlayout/XWCardLayout.java | 10 ++++ .../design/mainframe/FormSelectionUtils.java | 58 ++++++++++++------- 2 files changed, 47 insertions(+), 21 deletions(-) diff --git a/designer-form/src/main/java/com/fr/design/designer/creator/cardlayout/XWCardLayout.java b/designer-form/src/main/java/com/fr/design/designer/creator/cardlayout/XWCardLayout.java index 53a72e911..107e31ed1 100644 --- a/designer-form/src/main/java/com/fr/design/designer/creator/cardlayout/XWCardLayout.java +++ b/designer-form/src/main/java/com/fr/design/designer/creator/cardlayout/XWCardLayout.java @@ -106,6 +106,16 @@ public class XWCardLayout extends XLayoutContainer { return new Dimension(500, 300); } + /** + * 重置组件的名称 + * @param name 名称 + */ + public void resetCreatorName(String name) { + super.resetCreatorName(name); + changeRelateSwitchCardName(name); + } + + @Override protected void initLayoutManager() { cardLayout = new FRCardLayout(toData().getHgap(), toData().getVgap()); diff --git a/designer-form/src/main/java/com/fr/design/mainframe/FormSelectionUtils.java b/designer-form/src/main/java/com/fr/design/mainframe/FormSelectionUtils.java index 9a6a5d546..f88b9e540 100644 --- a/designer-form/src/main/java/com/fr/design/mainframe/FormSelectionUtils.java +++ b/designer-form/src/main/java/com/fr/design/mainframe/FormSelectionUtils.java @@ -14,12 +14,11 @@ import com.fr.design.designer.creator.XWScaleLayout; import com.fr.design.designer.creator.XWTitleLayout; import com.fr.design.designer.creator.cardlayout.XWTabFitLayout; import com.fr.design.utils.ComponentUtils; +import com.fr.form.main.Form; import com.fr.form.ui.Widget; import com.fr.form.ui.container.WTitleLayout; import com.fr.general.ComparatorUtils; import com.fr.log.FineLoggerFactory; - - import java.awt.Component; import java.awt.Point; import java.awt.Rectangle; @@ -97,8 +96,7 @@ public class FormSelectionUtils { Rectangle rec = clipboard.getSelctionBounds(); for (XCreator creator : clipboard.getSelectedCreators()) { try { - Widget copied = copyWidget(designer, creator); - XCreator copiedCreator = XCreatorUtils.createXCreator(copied, creator.getSize()); + XCreator copiedCreator = copyXcreator(designer.getTarget(), creator); // 获取位置 Point point = getPasteLocation((AbstractLayoutAdapter) adapter, copiedCreator, @@ -181,8 +179,7 @@ public class FormSelectionUtils { private static void relativePasteXCreator(FormDesigner designer, XCreator creator, LayoutAdapter adapter, Rectangle tabContainerRect, int x, int y) { try { - Widget copied = copyWidget(designer, creator); - XCreator copiedXCreator = XCreatorUtils.createXCreator(copied, creator.getSize()); + XCreator copiedXCreator = copyXcreator(designer.getTarget(), creator); if (adapter.getClass().equals(FRTabFitLayoutAdapter.class)) { if (!adapter.accept(copiedXCreator, x - tabContainerRect.x, y - tabContainerRect.y)) { designer.showMessageDialog(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Form_Too_Small_To_Paste")); @@ -235,33 +232,52 @@ public class FormSelectionUtils { return new Point(x, y); } - /** * 拷贝组件 + * @param form 当前表单 + * @param xCreator 待拷贝的组件 + * @return XCreator 拷贝的组件 */ - private static Widget copyWidget(FormDesigner formDesigner, XCreator xCreator) throws - CloneNotSupportedException { - ArrayList nameSpace = new ArrayList<>(); + public static XCreator copyXcreator(Form form, XCreator xCreator) throws CloneNotSupportedException{ Widget copied = (Widget) xCreator.toData().clone(); - //重命名拷贝的组件 - String name = getCopiedName(formDesigner, copied, nameSpace); - if (copied instanceof WTitleLayout) { - XWTitleLayout xwTitleLayout = new XWTitleLayout((WTitleLayout) copied, xCreator.getSize()); - xwTitleLayout.resetCreatorName(name); - } else { - copied.setWidgetName(name); + XCreator copiedCreator = XCreatorUtils.createXCreator(copied, xCreator.getSize()); + ArrayList nameSpace = new ArrayList<>(); + copyWidgetName(form, nameSpace, copiedCreator); + return copiedCreator; + } + + /** + * 拷贝组件 + * @param form 当前表单 + * @param nameSpace 命名空间 + * @param xCreator 拷贝的组件 + */ + private static void copyWidgetName(Form form, ArrayList nameSpace, XCreator xCreator){ + String copyName = FormSelectionUtils.getCopiedName(form, xCreator.toData(), nameSpace); + if (xCreator.toData() instanceof WTitleLayout) { + XWTitleLayout xwTitleLayout = new XWTitleLayout((WTitleLayout) xCreator.toData(), xCreator.getSize()); + xwTitleLayout.resetCreatorName(copyName); + return; + } + xCreator.resetCreatorName(copyName); + int count = xCreator.getComponentCount(); + for(int a = 0; a nameSpace) { + private static String getCopiedName(Form form, Widget copied, ArrayList nameSpace) { StringBuilder name = new StringBuilder(copied.getWidgetName()); do { name.append(POSTFIX); - } while (formDesigner.getTarget().isNameExist(name.toString()) || nameSpace.contains(name.toString())); + } while (form.isNameExist(name.toString()) || nameSpace.contains(name.toString())); nameSpace.add(name.toString()); return name.toString(); } @@ -308,4 +324,4 @@ public class FormSelectionUtils { } } } -} +} \ No newline at end of file From 0b837ebfb2ef0f8523b5db9655abccc2024b9409 Mon Sep 17 00:00:00 2001 From: kerry Date: Mon, 17 Dec 2018 11:38:40 +0800 Subject: [PATCH 2/2] =?UTF-8?q?REPORT-13626=E3=80=9010.0.2=E5=9B=9E?= =?UTF-8?q?=E5=BD=92=E3=80=91=E4=BF=9D=E5=AD=98=E6=A8=A1=E7=89=88-?= =?UTF-8?q?=E6=96=87=E4=BB=B6=E5=90=8D=E6=B2=A1=E6=9C=89=E5=AE=9E=E6=97=B6?= =?UTF-8?q?=E6=98=BE=E7=A4=BA=E6=90=9C=E7=B4=A2=E7=BB=93=E6=9E=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../gui/itextfield/UIAutoCompletionField.java | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/gui/itextfield/UIAutoCompletionField.java b/designer-base/src/main/java/com/fr/design/gui/itextfield/UIAutoCompletionField.java index de6bccd86..5672a8502 100644 --- a/designer-base/src/main/java/com/fr/design/gui/itextfield/UIAutoCompletionField.java +++ b/designer-base/src/main/java/com/fr/design/gui/itextfield/UIAutoCompletionField.java @@ -1,11 +1,9 @@ package com.fr.design.gui.itextfield; import com.fr.design.gui.imenu.UIListPopup; -import com.fr.design.utils.gui.GUICoreUtils; import com.fr.general.ComparatorUtils; -import com.fr.stable.OperatingSystem; - -import javax.swing.*; +import javax.swing.JList; +import javax.swing.UIManager; import javax.swing.event.DocumentEvent; import javax.swing.event.DocumentListener; import javax.swing.event.ListSelectionEvent; @@ -13,10 +11,12 @@ import javax.swing.event.ListSelectionListener; import javax.swing.text.AbstractDocument; import javax.swing.text.BadLocationException; import javax.swing.text.Document; - -import java.awt.Dimension; -import java.awt.LayoutManager; -import java.awt.event.*; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.KeyEvent; +import java.awt.event.KeyListener; +import java.awt.event.MouseEvent; +import java.awt.event.MouseListener; import java.util.ArrayList; public class UIAutoCompletionField extends UITextField implements DocumentListener, MouseListener, ListSelectionListener, ActionListener, KeyListener { @@ -82,9 +82,6 @@ public class UIAutoCompletionField extends UITextField implements DocumentListen } private void textChanged() { - if (OperatingSystem.isMacOS()) { - return; - } if (!popup.isVisible()) { showPopup(); requestFocus();