From 776c38aa4e32a939675de8f5e5639a7ffd0ad810 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=96=B9=E7=A3=8A?= <294531121@qq.com> Date: Thu, 17 Feb 2022 14:08:18 +0800 Subject: [PATCH 01/11] =?UTF-8?q?REPORT-66884=20=E4=BF=AE=E6=AD=A3?= =?UTF-8?q?=E6=8B=96=E6=8B=BD=E7=BB=84=E4=BB=B6=E6=97=B6=E5=80=99=E5=A4=87?= =?UTF-8?q?=E4=BB=BD=E7=BB=84=E4=BB=B6=E7=9A=84=E6=97=B6=E6=9C=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../designer/beans/models/DraggingModel.java | 10 ---------- .../mainframe/FormCreatorDropTarget.java | 6 +----- .../com/fr/design/mainframe/FormDesigner.java | 20 +++++++------------ .../guide/creator/GuideCreateUtils.java | 7 ++++--- 4 files changed, 12 insertions(+), 31 deletions(-) diff --git a/designer-form/src/main/java/com/fr/design/designer/beans/models/DraggingModel.java b/designer-form/src/main/java/com/fr/design/designer/beans/models/DraggingModel.java index 6308ff70b..95e003faf 100644 --- a/designer-form/src/main/java/com/fr/design/designer/beans/models/DraggingModel.java +++ b/designer-form/src/main/java/com/fr/design/designer/beans/models/DraggingModel.java @@ -14,7 +14,6 @@ public class DraggingModel { private MouseEvent currentDragEvent; private int creatorLeftTopX = -999; // 隐藏 private int creatorLeftTopY = -999; // 隐藏 - private boolean dragNewWidget; // 是否正在拖拽一个新的组件下来 public DraggingModel() { @@ -40,11 +39,6 @@ public class DraggingModel { return this; } - public DraggingModel dragNewWidget(boolean dragNewWidget) { - this.dragNewWidget = dragNewWidget; - return this; - } - public FormDesigner getDesigner() { return designer; } @@ -79,10 +73,6 @@ public class DraggingModel { return creatorLeftTopY; } - public boolean isDragNewWidget() { - return dragNewWidget; - } - public void moveTo(int x, int y) { XLayoutContainer container = designer.getDraggingHotspotLayout(); LayoutAdapter adapter = container.getLayoutAdapter(); diff --git a/designer-form/src/main/java/com/fr/design/mainframe/FormCreatorDropTarget.java b/designer-form/src/main/java/com/fr/design/mainframe/FormCreatorDropTarget.java index aa58d713e..62e256379 100644 --- a/designer-form/src/main/java/com/fr/design/mainframe/FormCreatorDropTarget.java +++ b/designer-form/src/main/java/com/fr/design/mainframe/FormCreatorDropTarget.java @@ -264,11 +264,7 @@ public class FormCreatorDropTarget extends DropTarget { Point loc = dtde.getLocation(); int x = designer.getRelativeX(loc.x); int y = designer.getRelativeY(loc.y); - if (model.isDragNewWidget()) { - designer.addNewWidget(creator, x, y); - } else { - designer.changeWidgetPlace(creator, x, y); - } + designer.addWidgetToForm(creator, x, y); // 放到事件末尾执行 SwingUtilities.invokeLater(new Runnable() { @Override diff --git a/designer-form/src/main/java/com/fr/design/mainframe/FormDesigner.java b/designer-form/src/main/java/com/fr/design/mainframe/FormDesigner.java index a703512ab..0e28ef3b6 100644 --- a/designer-form/src/main/java/com/fr/design/mainframe/FormDesigner.java +++ b/designer-form/src/main/java/com/fr/design/mainframe/FormDesigner.java @@ -1252,12 +1252,12 @@ public class FormDesigner extends TargetComponent
implements TreeSelection return; } + instantiateCreator(xCreator); draggingModel = new DraggingModel() .designer(this) .creator(xCreator) .startDragEvent(startDragEvent) - .currentDragEvent(currentDragEvent) - .dragNewWidget(true); + .currentDragEvent(currentDragEvent); this.setDropTarget(new FormCreatorDropTarget(this, xCreator)); repaint(); } @@ -1273,12 +1273,12 @@ public class FormDesigner extends TargetComponent implements TreeSelection if (currentDragEvent == null || this.getDropTarget() != null) { return; } + backUpCreator(xCreator); draggingModel = new DraggingModel() .designer(this) .creator(xCreator) .startDragEvent(startDragEvent) - .currentDragEvent(currentDragEvent) - .dragNewWidget(false); + .currentDragEvent(currentDragEvent); XLayoutContainer container = this.getDraggingHotspotLayout(); LayoutAdapter adapter = container.getLayoutAdapter(); adapter.dragging(this.getDraggingModel()); @@ -1990,7 +1990,7 @@ public class FormDesigner extends TargetComponent implements TreeSelection return spacingLineDrawer; } - private void instantiateCreator(XCreator creator) { + public void instantiateCreator(XCreator creator) { ModelUtil.renameWidgetName(this.getTarget(), creator); creator.addNotify(); @@ -1999,18 +1999,12 @@ public class FormDesigner extends TargetComponent implements TreeSelection creator.putClientProperty(AdapterBus.CLIENT_PROPERTIES, adapter); } - public void addNewWidget(XCreator creator, int x, int y) { - instantiateCreator(creator); - addWidgetToForm(creator, x, y); - } - - public void changeWidgetPlace(XCreator creator, int x, int y) { + public void backUpCreator(XCreator creator) { creator.backupCurrentSize(); creator.backupParent(); - addWidgetToForm(creator, x, y); } - private void addWidgetToForm(XCreator creator, int x, int y) { + public void addWidgetToForm(XCreator creator, int x, int y) { if(creator == null) { return; } diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/guide/creator/GuideCreateUtils.java b/designer-realize/src/main/java/com/fr/design/mainframe/guide/creator/GuideCreateUtils.java index bb2120874..bb651cce9 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/guide/creator/GuideCreateUtils.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/guide/creator/GuideCreateUtils.java @@ -130,12 +130,13 @@ public class GuideCreateUtils { return; } FormDesigner designer = GuideCreateUtils.getFormDesigner(); - designer.getSelectionModel().selectACreator(xLayoutContainer); if (dragNewComponent) { - designer.addNewWidget(xCreator, xLayoutContainer.getX(), xLayoutContainer.getY()); + designer.instantiateCreator(xCreator); } else { - designer.changeWidgetPlace(xCreator, xLayoutContainer.getX(), xLayoutContainer.getY()); + designer.backUpCreator(xCreator); } + designer.getSelectionModel().selectACreator(xLayoutContainer); + designer.addWidgetToForm(xCreator, xLayoutContainer.getX(), xLayoutContainer.getY()); designer.getSelectionModel().selectACreator(xCreator); } From ea6418f46c3fde3215be95fd700306f36d4ef6be Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=96=B9=E7=A3=8A?= <294531121@qq.com> Date: Thu, 17 Feb 2022 14:19:10 +0800 Subject: [PATCH 02/11] REPORT-66884 --- .../com/fr/design/mainframe/FormDesigner.java | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/designer-form/src/main/java/com/fr/design/mainframe/FormDesigner.java b/designer-form/src/main/java/com/fr/design/mainframe/FormDesigner.java index 0e28ef3b6..2b43265f9 100644 --- a/designer-form/src/main/java/com/fr/design/mainframe/FormDesigner.java +++ b/designer-form/src/main/java/com/fr/design/mainframe/FormDesigner.java @@ -1991,17 +1991,21 @@ public class FormDesigner extends TargetComponent implements TreeSelection } public void instantiateCreator(XCreator creator) { - ModelUtil.renameWidgetName(this.getTarget(), creator); - creator.addNotify(); + if (creator != null) { + ModelUtil.renameWidgetName(this.getTarget(), creator); + creator.addNotify(); - ComponentAdapter adapter = new CompositeComponentAdapter(this, creator); - adapter.initialize(); - creator.putClientProperty(AdapterBus.CLIENT_PROPERTIES, adapter); + ComponentAdapter adapter = new CompositeComponentAdapter(this, creator); + adapter.initialize(); + creator.putClientProperty(AdapterBus.CLIENT_PROPERTIES, adapter); + } } public void backUpCreator(XCreator creator) { - creator.backupCurrentSize(); - creator.backupParent(); + if (creator != null) { + creator.backupCurrentSize(); + creator.backupParent(); + } } public void addWidgetToForm(XCreator creator, int x, int y) { From dcc0f0ad2a85c4dfee77c3b732435a10c4569023 Mon Sep 17 00:00:00 2001 From: Starryi Date: Thu, 17 Feb 2022 14:47:16 +0800 Subject: [PATCH 03/11] =?UTF-8?q?REPORT-66930=20=E3=80=90=E7=BB=84?= =?UTF-8?q?=E4=BB=B6=E5=95=86=E5=9F=8E=E9=A3=8E=E6=A0=BC=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E3=80=91=E7=BD=91=E6=85=A2=E6=97=B6=E5=A4=9A=E6=AC=A1=E7=82=B9?= =?UTF-8?q?=E5=87=BB=E4=B8=8B=E8=BD=BD=E5=87=BA=E7=8E=B0=E5=A4=9A=E4=B8=AA?= =?UTF-8?q?=E5=BC=B9=E7=AA=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 【问题原因】 存在任务重复创建和执行的问题 【改动思路】 同上 --- .../mini/bridge/NativeProductBridge.java | 73 ++++++++++++++----- .../online/mini/bridge/NativeTaskBridge.java | 6 ++ 2 files changed, 62 insertions(+), 17 deletions(-) diff --git a/designer-form/src/main/java/com/fr/design/mainframe/share/ui/online/mini/bridge/NativeProductBridge.java b/designer-form/src/main/java/com/fr/design/mainframe/share/ui/online/mini/bridge/NativeProductBridge.java index 0da415a5d..e6a4f720c 100644 --- a/designer-form/src/main/java/com/fr/design/mainframe/share/ui/online/mini/bridge/NativeProductBridge.java +++ b/designer-form/src/main/java/com/fr/design/mainframe/share/ui/online/mini/bridge/NativeProductBridge.java @@ -37,10 +37,15 @@ import java.util.Set; * Created by Starryi on 2021/12/20 */ public class NativeProductBridge { + private static final Map createdComponentInstallationTasks = new HashMap<>(); + private static final Map createdComponentsPackageInstallationTasks = new HashMap<>(); + private static final Map createdTemplateThemeInstallationTasks = new HashMap<>(); + + private static final Map startedComponentInstallationTasks = new HashMap<>(); + private static final Map startedComponentsPackageInstallationTasks = new HashMap<>(); + private static final Map startedTemplateThemeInstallationTasks = new HashMap<>(); + private final Object window; - private static final Map executingComponentInstallationTasks = new HashMap<>(); - private static final Map executingComponentsPackageInstallationTasks = new HashMap<>(); - private static final Map executingTemplateThemeInstallationTasks = new HashMap<>(); private final Map> componentDownloadTaskStartListeners = new HashMap<>(); private final Map> componentsPackageDownloadTaskStartListeners = new HashMap<>(); @@ -115,7 +120,7 @@ public class NativeProductBridge { boolean isPackage = widget.isWidgetPackage(); Map executingDownloadTask = - isPackage ? executingComponentsPackageInstallationTasks : executingComponentInstallationTasks; + isPackage ? startedComponentsPackageInstallationTasks : startedComponentInstallationTasks; NativeTaskBridge task = executingDownloadTask.get(uuid); if (task != null) { task.checkJSEnvChange(this.window); @@ -131,9 +136,22 @@ public class NativeProductBridge { OnlineShareWidget widget = OnlineShareWidget.parseFromJSONObject(object); int childrenCount = object.optInt("pkgsize", 0); if (childrenCount > 0) { - return new ComponentsPackageInstallationTask(this, window, widget, childrenCount); + if (createdComponentsPackageInstallationTasks.containsKey(widget.getUuid())) { + return createdComponentsPackageInstallationTasks.get(widget.getUuid()); + } else { + ComponentsPackageInstallationTask task = new ComponentsPackageInstallationTask(this, window, widget, childrenCount); + createdComponentsPackageInstallationTasks.put(widget.getUuid(), task); + return task; + } + } else { - return new ComponentInstallationTask(this, window, widget); + if (createdComponentInstallationTasks.containsKey(widget.getUuid())) { + return createdComponentInstallationTasks.get(widget.getUuid()); + } else { + ComponentInstallationTask task = new ComponentInstallationTask(this, window, widget); + createdComponentInstallationTasks.put(widget.getUuid(), task); + return task; + } } } @@ -165,7 +183,7 @@ public class NativeProductBridge { @JsAccessible @JSBridge public Object getExecutingThemeDownloadTask(String themePath) { - NativeTaskBridge task = (NativeTaskBridge) executingTemplateThemeInstallationTasks.get(themePath); + NativeTaskBridge task = startedTemplateThemeInstallationTasks.get(themePath); if (task != null) { task.checkJSEnvChange(this.window); } @@ -176,7 +194,13 @@ public class NativeProductBridge { @JsAccessible @JSBridge public Object createTemplateThemeDownloadTask(String themePath) { - return new TemplateThemeInstallationTask(this, window, themePath); + if (createdTemplateThemeInstallationTasks.containsKey(themePath)) { + return createdTemplateThemeInstallationTasks.get(themePath); + } else { + TemplateThemeInstallationTask task = new TemplateThemeInstallationTask(this, window, themePath); + createdTemplateThemeInstallationTasks.put(themePath, task); + return task; + } } public static class ComponentInstallationTask extends NativeTaskBridge { @@ -217,6 +241,9 @@ public class NativeProductBridge { @JSBridge @Override public void execute() { + if (isExecuting) { + return; + } super.execute(); SwingUtilities.invokeLater(new Runnable() { @Override @@ -257,7 +284,7 @@ public class NativeProductBridge { @Override protected void fireStartEvent(String event) { - executingComponentInstallationTasks.put(widget.getUuid(), this); + startedComponentInstallationTasks.put(widget.getUuid(), this); Set startListeners = env.componentDownloadTaskStartListeners.get(widget.getUuid()); SafeJSFunctionInvoker.invoke(startListeners, env.window); super.fireStartEvent(event); @@ -265,13 +292,15 @@ public class NativeProductBridge { @Override protected void fireFailureEvent(String event) { - executingComponentInstallationTasks.remove(widget.getUuid()); + startedComponentInstallationTasks.remove(widget.getUuid()); + createdComponentInstallationTasks.remove(widget.getUuid()); super.fireFailureEvent(event); } @Override protected void fireSuccessEvent(String event) { - executingComponentInstallationTasks.remove(widget.getUuid()); + startedComponentInstallationTasks.remove(widget.getUuid()); + createdComponentInstallationTasks.remove(widget.getUuid()); super.fireSuccessEvent(event); } } @@ -317,6 +346,9 @@ public class NativeProductBridge { @JSBridge @Override public void execute() { + if (isExecuting) { + return; + } super.execute(); SwingUtilities.invokeLater(new Runnable() { @Override @@ -373,7 +405,7 @@ public class NativeProductBridge { @Override protected void fireStartEvent(String event) { - executingComponentsPackageInstallationTasks.put(widget.getUuid(), this); + startedComponentsPackageInstallationTasks.put(widget.getUuid(), this); super.fireStartEvent(event); Set startListeners = env.componentsPackageDownloadTaskStartListeners.get(widget.getUuid()); @@ -382,13 +414,15 @@ public class NativeProductBridge { @Override protected void fireFailureEvent(String event) { - executingComponentsPackageInstallationTasks.remove(widget.getUuid()); + startedComponentsPackageInstallationTasks.remove(widget.getUuid()); + createdComponentsPackageInstallationTasks.remove(widget.getUuid()); super.fireFailureEvent(event); } @Override protected void fireSuccessEvent(String event) { - executingComponentsPackageInstallationTasks.remove(widget.getUuid()); + startedComponentsPackageInstallationTasks.remove(widget.getUuid()); + createdComponentsPackageInstallationTasks.remove(widget.getUuid()); super.fireSuccessEvent(event); } } @@ -426,6 +460,9 @@ public class NativeProductBridge { @JSBridge @Override public void execute() { + if (isExecuting) { + return; + } super.execute(); SwingUtilities.invokeLater(new Runnable() { @Override @@ -452,7 +489,7 @@ public class NativeProductBridge { @Override protected void fireStartEvent(String event) { - executingTemplateThemeInstallationTasks.put(themePath, this); + startedTemplateThemeInstallationTasks.put(themePath, this); Set startListeners = env.themeDownloadTaskStartListeners.get(themePath); SafeJSFunctionInvoker.invoke(startListeners, env.window); super.fireStartEvent(event); @@ -460,13 +497,15 @@ public class NativeProductBridge { @Override protected void fireFailureEvent(String event) { - executingTemplateThemeInstallationTasks.remove(themePath); + startedTemplateThemeInstallationTasks.remove(themePath); + createdTemplateThemeInstallationTasks.remove(themePath); super.fireFailureEvent(event); } @Override protected void fireSuccessEvent(String event) { - executingTemplateThemeInstallationTasks.remove(themePath); + startedTemplateThemeInstallationTasks.remove(themePath); + createdTemplateThemeInstallationTasks.remove(themePath); super.fireSuccessEvent(event); } } diff --git a/designer-form/src/main/java/com/fr/design/mainframe/share/ui/online/mini/bridge/NativeTaskBridge.java b/designer-form/src/main/java/com/fr/design/mainframe/share/ui/online/mini/bridge/NativeTaskBridge.java index 06c26c018..2929a3540 100644 --- a/designer-form/src/main/java/com/fr/design/mainframe/share/ui/online/mini/bridge/NativeTaskBridge.java +++ b/designer-form/src/main/java/com/fr/design/mainframe/share/ui/online/mini/bridge/NativeTaskBridge.java @@ -18,6 +18,7 @@ public class NativeTaskBridge implements MiniShopNativeTask { private Object window; protected final Set statusCbs = new HashSet<>(); + protected boolean isExecuting = false; public NativeTaskBridge(Object window) { this.window = window; @@ -49,6 +50,9 @@ public class NativeTaskBridge implements MiniShopNativeTask { @JsAccessible @Override public void execute() { + if (!isExecuting) { + isExecuting = true; + } } @JSBridge @@ -68,10 +72,12 @@ public class NativeTaskBridge implements MiniShopNativeTask { SafeJSFunctionInvoker.invoke(statusCbs, window, "PROGRESS", event); } protected void fireSuccessEvent(String event) { + isExecuting = false; MiniShopNativeTaskManager.getInstance().removeCompletedTask(this); SafeJSFunctionInvoker.invoke(statusCbs, window, "SUCCESS", event); } protected void fireFailureEvent(String event) { + isExecuting = false; MiniShopNativeTaskManager.getInstance().removeCompletedTask(this); SafeJSFunctionInvoker.invoke(statusCbs, window, "FAILURE", event); } From 360daa5c1af55643ed8a4f2998b9f38b8d4b006e Mon Sep 17 00:00:00 2001 From: Starryi Date: Thu, 17 Feb 2022 14:50:00 +0800 Subject: [PATCH 04/11] =?UTF-8?q?REPORT-66254=20=E3=80=90=E7=BB=84?= =?UTF-8?q?=E4=BB=B6=E5=95=86=E5=9F=8E=E9=A3=8E=E6=A0=BC=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E3=80=91=E6=89=93=E5=BC=80=E5=95=86=E5=9F=8E=E7=AA=97=E5=8F=A3?= =?UTF-8?q?=E5=88=B0=E5=95=86=E5=9F=8E=E5=86=85=E5=AE=B9=E6=98=BE=E7=A4=BA?= =?UTF-8?q?=E5=87=BA=E6=9D=A5=EF=BC=8C=E6=9C=9F=E9=97=B4=E5=A4=A7=E6=A6=82?= =?UTF-8?q?=E6=9C=895=E7=A7=92=E7=A9=BA=E7=99=BD=E7=8A=B6=E6=80=81?= =?UTF-8?q?=EF=BC=8C=E9=9C=80=E8=A6=81=E4=BC=98=E5=8C=96=E4=B8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 【问题原因】 补一下因为REPORT-66254优化改动,导致的在线组件库禁用提示面板显示不正常 的问题。优化后,再次打开Mini商城窗口不会重新创建Window,只会执行 setVisible,所以windowOpened回调方法没有执行。 【改动思路】 补充下windowOpened回调方法执行逻辑 同上 --- .../share/ui/online/mini/MiniComponentShopDialog.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/designer-form/src/main/java/com/fr/design/mainframe/share/ui/online/mini/MiniComponentShopDialog.java b/designer-form/src/main/java/com/fr/design/mainframe/share/ui/online/mini/MiniComponentShopDialog.java index ab17b0de3..be2d72466 100644 --- a/designer-form/src/main/java/com/fr/design/mainframe/share/ui/online/mini/MiniComponentShopDialog.java +++ b/designer-form/src/main/java/com/fr/design/mainframe/share/ui/online/mini/MiniComponentShopDialog.java @@ -106,6 +106,11 @@ public class MiniComponentShopDialog { if (frame == null) { frame = createFrame(); } + if (!frame.isVisible()) { + for (WindowListener listener: windowListeners) { + listener.windowOpened(null); + } + } frame.setVisible(true); } From 3d4902ed344f8e7c8f1b4158719004fd9f1b98d1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=96=B9=E7=A3=8A?= <294531121@qq.com> Date: Thu, 17 Feb 2022 15:18:27 +0800 Subject: [PATCH 05/11] =?UTF-8?q?REPORT-66886=20=E9=BC=A0=E6=A0=87?= =?UTF-8?q?=E6=82=AC=E6=B5=AEn=E7=A7=92=E5=90=8E=E9=87=8A=E6=94=BE?= =?UTF-8?q?=EF=BC=8C=E6=B2=A1=E6=9C=89=E5=B0=86=E7=BB=84=E4=BB=B6=E6=94=BE?= =?UTF-8?q?=E5=85=A5tab=E4=B8=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../beans/events/AddingWidgetListenerTable.java | 14 ++------------ 1 file changed, 2 insertions(+), 12 deletions(-) diff --git a/designer-form/src/main/java/com/fr/design/designer/beans/events/AddingWidgetListenerTable.java b/designer-form/src/main/java/com/fr/design/designer/beans/events/AddingWidgetListenerTable.java index 4825e8888..5d0889c35 100644 --- a/designer-form/src/main/java/com/fr/design/designer/beans/events/AddingWidgetListenerTable.java +++ b/designer-form/src/main/java/com/fr/design/designer/beans/events/AddingWidgetListenerTable.java @@ -28,23 +28,13 @@ public class AddingWidgetListenerTable { public void beforeAdded() { for (final AddingWidgetListener listener : listeners) { - SwingUtilities.invokeLater(new Runnable() { - @Override - public void run() { - listener.beforeAdded(); - } - }); + listener.beforeAdded(); } } public void afterAdded(boolean addResult) { for (final AddingWidgetListener listener : listeners) { - SwingUtilities.invokeLater(new Runnable() { - @Override - public void run() { - listener.afterAdded(addResult); - } - }); + listener.afterAdded(addResult); } } From 458cdf7a61439d11de5396283cf8368000ac4378 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=96=B9=E7=A3=8A?= <294531121@qq.com> Date: Thu, 17 Feb 2022 17:07:14 +0800 Subject: [PATCH 06/11] REPORT-66827&REPORT-66947&REPORT-66946 --- .../main/java/com/fr/design/mainframe/EditingMouseListener.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/designer-form/src/main/java/com/fr/design/mainframe/EditingMouseListener.java b/designer-form/src/main/java/com/fr/design/mainframe/EditingMouseListener.java index f48b60320..0555cf172 100644 --- a/designer-form/src/main/java/com/fr/design/mainframe/EditingMouseListener.java +++ b/designer-form/src/main/java/com/fr/design/mainframe/EditingMouseListener.java @@ -459,13 +459,11 @@ public class EditingMouseListener extends MouseInputAdapter { if (isSelectionDrag()) { stateModel.changeSelection(e); - return; } // 调整大小这边单独提出来,不跟后面拖组件混在一起,实在不好管理 if (stateModel.isDraggingSize()) { stateModel.dragging(e); - return; } designer.startDraggingFormWidget(lastXCreator, lastPressEvent, e); From fafc8e71ff4af176736cdbc932f61783afcd019c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=96=B9=E7=A3=8A?= <294531121@qq.com> Date: Thu, 17 Feb 2022 17:08:00 +0800 Subject: [PATCH 07/11] REPORT-66947 --- .../com/fr/design/mainframe/FormDesignerUI.java | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/designer-form/src/main/java/com/fr/design/mainframe/FormDesignerUI.java b/designer-form/src/main/java/com/fr/design/mainframe/FormDesignerUI.java index 1d641dece..8307e945f 100644 --- a/designer-form/src/main/java/com/fr/design/mainframe/FormDesignerUI.java +++ b/designer-form/src/main/java/com/fr/design/mainframe/FormDesignerUI.java @@ -116,8 +116,8 @@ public class FormDesignerUI extends ComponentUI { designer.getPainter().paint(g, designer.getArea().getHorizontalValue(), designer.getArea().getVerticalValue() + designer.getParaHeight()); } - DraggingModel draggingModel = designer.getDraggingModel(); - if (draggingModel != null && draggingModel.getCreator() != null) { + + if (needPaintDraggingBean()) { // 当前正在添加的组件 paintDraggingBean(g); } @@ -217,6 +217,19 @@ public class FormDesignerUI extends ComponentUI { ComponentUtils.resetBuffer(dbcomponents); } + private boolean needPaintDraggingBean() { + DraggingModel draggingModel = designer.getDraggingModel(); + if (draggingModel == null || draggingModel.getCreator() == null) { + return false; + } + + XCreator creator = draggingModel.getCreator(); + int leftTopX = draggingModel.getCreatorLeftTopX(); + int leftTopY = draggingModel.getCreatorLeftTopY(); + + return leftTopX + creator.getWidth() > 0 && leftTopY + creator.getHeight() > 0; + } + private void paintAuthorityCreator(Graphics2D g2d, Rectangle creatorBounds) { back_or_selection_rect.setRect(creatorBounds.getX(), creatorBounds.getY(), From a8572a9e0c37099316dff36c069459918b5d316b Mon Sep 17 00:00:00 2001 From: Starryi Date: Thu, 17 Feb 2022 18:09:15 +0800 Subject: [PATCH 08/11] =?UTF-8?q?REPORT-66306=20=E7=BB=84=E4=BB=B6?= =?UTF-8?q?=E5=8C=85=E4=B8=8B=E8=BD=BD=E9=9D=A2=E6=9D=BF=E6=97=A0=E9=81=AE?= =?UTF-8?q?=E7=BD=A9=E9=98=B4=E5=BD=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 【问题原因】 swing中两个组件上下层叠时,重绘底层组件,会将其内容会知道上方,遮挡上层组件, 因此也需要手动重新绘制上层组件。 【改动思路】 主动调用下阴影层的重绘方法 --- .../share/ui/block/OnlineWidgetBlock.java | 67 ++++++++++--------- .../ui/online/OnlineDownloadPackagePane.java | 8 +++ .../share/ui/online/OnlineWidgetTabPane.java | 11 ++- .../OnlineWidgetPackagesShowPane.java | 15 +++-- 4 files changed, 63 insertions(+), 38 deletions(-) diff --git a/designer-form/src/main/java/com/fr/design/mainframe/share/ui/block/OnlineWidgetBlock.java b/designer-form/src/main/java/com/fr/design/mainframe/share/ui/block/OnlineWidgetBlock.java index 3eacc5226..61c913201 100644 --- a/designer-form/src/main/java/com/fr/design/mainframe/share/ui/block/OnlineWidgetBlock.java +++ b/designer-form/src/main/java/com/fr/design/mainframe/share/ui/block/OnlineWidgetBlock.java @@ -337,41 +337,42 @@ public class OnlineWidgetBlock extends AbstractOnlineWidgetBlock { null, this ); - return; - } - //如果鼠标移动到布局内且布局不可编辑,画出编辑蒙层 - if (!isRightClickPopupMenuVisible() && (isMouseEnter || downloading)) { - Graphics2D g2d = (Graphics2D) g; - Composite oldComposite = g2d.getComposite(); - //画白色的编辑层 - g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 20 / 100.0F)); - g2d.setColor(COVER_COLOR); - g2d.fillRect(x, y, w, h); - g2d.setComposite(oldComposite); - //画编辑按钮图标 - BufferedImage image = (process > 0 || downloading) ? WIDGET_DOWNLOADING_ICON : WIDGET_DOWNLOAD_ICON; - g2d.drawImage( - image, - (x + w / 2 - 12), - (y + h / 2 - 16), - image.getWidth(), - image.getHeight(), - null, - this - ); - Stroke oldStroke = g2d.getStroke(); - g2d.setStroke(XCreatorConstants.STROKE); - g2d.setColor(Color.decode("#419BF9")); - double arcAngle = downloading ? (36 + 360 * 0.9 * process) : 0.0; - g2d.drawArc(x + w / 2 - 12, y + h / 2 - 16, 24, 24, 90, -(int) arcAngle); - g2d.setColor(Color.WHITE); - g2d.setStroke(oldStroke); - } + } else { + //如果鼠标移动到布局内且布局不可编辑,画出编辑蒙层 + if (!isRightClickPopupMenuVisible() && (isMouseEnter || downloading)) { + Graphics2D g2d = (Graphics2D) g; + Composite oldComposite = g2d.getComposite(); + //画白色的编辑层 + g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 20 / 100.0F)); + g2d.setColor(COVER_COLOR); + g2d.fillRect(x, y, w, h); + g2d.setComposite(oldComposite); + //画编辑按钮图标 + BufferedImage image = (process > 0 || downloading) ? WIDGET_DOWNLOADING_ICON : WIDGET_DOWNLOAD_ICON; + g2d.drawImage( + image, + (x + w / 2 - 12), + (y + h / 2 - 16), + image.getWidth(), + image.getHeight(), + null, + this + ); + Stroke oldStroke = g2d.getStroke(); + g2d.setStroke(XCreatorConstants.STROKE); + g2d.setColor(Color.decode("#419BF9")); + double arcAngle = downloading ? (36 + 360 * 0.9 * process) : 0.0; + g2d.drawArc(x + w / 2 - 12, y + h / 2 - 16, 24, 24, 90, -(int) arcAngle); + g2d.setColor(Color.WHITE); + g2d.setStroke(oldStroke); + } - boolean isUnusable = !getWidget().isCompatibleWithCurrentEnv(); - if (isUnusable) { - paintUnusableMask((Graphics2D) g); + boolean isUnusable = !getWidget().isCompatibleWithCurrentEnv(); + if (isUnusable) { + paintUnusableMask((Graphics2D) g); + } } + if (this.parentPane != null) { this.parentPane.refreshShowPaneUI(); } diff --git a/designer-form/src/main/java/com/fr/design/mainframe/share/ui/online/OnlineDownloadPackagePane.java b/designer-form/src/main/java/com/fr/design/mainframe/share/ui/online/OnlineDownloadPackagePane.java index 987cfface..1d4990c7d 100644 --- a/designer-form/src/main/java/com/fr/design/mainframe/share/ui/online/OnlineDownloadPackagePane.java +++ b/designer-form/src/main/java/com/fr/design/mainframe/share/ui/online/OnlineDownloadPackagePane.java @@ -256,4 +256,12 @@ public class OnlineDownloadPackagePane extends OnlineWidgetSelectPane { } } } + + @Override + public void refreshShowPaneUI() { + if (downloadProgressPane != null && downloadProgressPane.isShowing()) { + downloadProgressPane.invalidate(); + downloadProgressPane.repaint(); + } + } } diff --git a/designer-form/src/main/java/com/fr/design/mainframe/share/ui/online/OnlineWidgetTabPane.java b/designer-form/src/main/java/com/fr/design/mainframe/share/ui/online/OnlineWidgetTabPane.java index cfa5d799f..ca0e8aa6a 100644 --- a/designer-form/src/main/java/com/fr/design/mainframe/share/ui/online/OnlineWidgetTabPane.java +++ b/designer-form/src/main/java/com/fr/design/mainframe/share/ui/online/OnlineWidgetTabPane.java @@ -16,6 +16,7 @@ import com.fr.form.share.bean.OnlineShareWidget; import javax.swing.BorderFactory; import javax.swing.JButton; +import javax.swing.JComponent; import javax.swing.JPanel; import javax.swing.plaf.basic.BasicButtonUI; import java.awt.BorderLayout; @@ -44,6 +45,7 @@ public class OnlineWidgetTabPane extends JPanel { private boolean packagePaneCreated = false; private final List tabChangeListeners; private OnlineEmbedFilterShowPane embedFilterShowPane; + private OnlineWidgetPackagesShowPane widgetPackagesShowPane; public OnlineWidgetTabPane(OnlineShareWidget[] sharableWidgets, OnlineShareWidget[] sharableWidgetPackage) { tabChangeListeners = new ArrayList<>(); @@ -70,7 +72,8 @@ public class OnlineWidgetTabPane extends JPanel { ComponentCollector.getInstance().collectCmpPktClick(); //延迟组件包面板的初始化,防止组件面板里组件和缩略图和组件包面板里组件的缩略图一起加载 if (!packagePaneCreated) { - centerPane.add(new OnlineWidgetPackagesShowPane(sharableWidgetPackages), COMPONENT_PACKAGE); + widgetPackagesShowPane = new OnlineWidgetPackagesShowPane(sharableWidgetPackages); + centerPane.add(widgetPackagesShowPane, COMPONENT_PACKAGE); packagePaneCreated = true; } cardLayout.show(centerPane, COMPONENT_PACKAGE); @@ -89,6 +92,8 @@ public class OnlineWidgetTabPane extends JPanel { this.add(centerPane, BorderLayout.CENTER); } + + private JPanel createMiniShopEntryPane() { JPanel container = FRGUIPaneFactory.createBorderLayout_S_Pane(); container.setBorder(BorderFactory.createEmptyBorder(10, 0, 0, 0)); @@ -136,6 +141,10 @@ public class OnlineWidgetTabPane extends JPanel { if (embedFilterShowPane != null) { this.embedFilterShowPane.refreshUI(); } + + if (headGroup.getSelectedIndex() == COMPONENT_PACKAGE_TAB_INDEX && widgetPackagesShowPane != null) { + widgetPackagesShowPane.refreshShowPaneUI(); + } } diff --git a/designer-form/src/main/java/com/fr/design/mainframe/share/ui/online/widgetpackage/OnlineWidgetPackagesShowPane.java b/designer-form/src/main/java/com/fr/design/mainframe/share/ui/online/widgetpackage/OnlineWidgetPackagesShowPane.java index 169759362..d133cd058 100644 --- a/designer-form/src/main/java/com/fr/design/mainframe/share/ui/online/widgetpackage/OnlineWidgetPackagesShowPane.java +++ b/designer-form/src/main/java/com/fr/design/mainframe/share/ui/online/widgetpackage/OnlineWidgetPackagesShowPane.java @@ -48,6 +48,7 @@ public class OnlineWidgetPackagesShowPane extends AbstractOnlineWidgetShowPane { private JPanel detailPane; private String currentPackageId; private OnlineWidgetSelectPane onlineWidgetSelectPane; + private OnlineDownloadPackagePane onlineDownloadPackagePane; private UILabel downloadLabel; private final Map cachePanelMap = new HashMap<>(); @@ -109,15 +110,15 @@ public class OnlineWidgetPackagesShowPane extends AbstractOnlineWidgetShowPane { private void downLoadPackage() { downloadLabel.setVisible(false); detailPane.removeAll(); - OnlineDownloadPackagePane widgetSelectPane = new OnlineDownloadPackagePane(this, onlineWidgetSelectPane.getSharableWidgetProviders(), 50); - detailPane.add(widgetSelectPane, BorderLayout.CENTER); + onlineDownloadPackagePane = new OnlineDownloadPackagePane(this, onlineWidgetSelectPane.getSharableWidgetProviders(), 50); + detailPane.add(onlineDownloadPackagePane, BorderLayout.CENTER); cardLayout.show(centerPane, WIDGET_DETAIL); - cachePanelMap.put(currentPackageId, widgetSelectPane); + cachePanelMap.put(currentPackageId, onlineDownloadPackagePane); for (OnlineShareWidget onlineShareWidget : getSharableWidgetProviders()) { if (StringUtils.equals(onlineShareWidget.getId(), currentPackageId)) { - widgetSelectPane.downloadWidget(onlineShareWidget); + onlineDownloadPackagePane.downloadWidget(onlineShareWidget); break; } } @@ -193,4 +194,10 @@ public class OnlineWidgetPackagesShowPane extends AbstractOnlineWidgetShowPane { protected FilterPane createFilterPane() { return FilterPane.createOnlinePackageFilterPane(); } + + public void refreshShowPaneUI() { + if (onlineDownloadPackagePane != null && onlineDownloadPackagePane.isShowing()) { + onlineDownloadPackagePane.refreshShowPaneUI(); + } + } } From 173e2ee7e75f3dbb540a48871abbfc48818aebb2 Mon Sep 17 00:00:00 2001 From: vito Date: Thu, 17 Feb 2022 18:23:28 +0800 Subject: [PATCH 09/11] =?UTF-8?q?REPORT-66274=E3=80=90=E5=85=AC=E5=BC=8F?= =?UTF-8?q?=E6=8A=A5=E9=94=99=E4=BC=98=E5=8C=96=E3=80=91windows=E4=B8=8B?= =?UTF-8?q?=E4=BB=8E=E6=97=A5=E5=BF=97=E5=AE=9A=E4=BD=8D=E4=BC=9A=E5=86=8D?= =?UTF-8?q?=E6=89=93=E5=BC=80=E4=B8=80=E6=AC=A1=E6=A8=A1=E6=9D=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/fr/design/mainframe/loghandler/DesignerLogHandler.java | 3 +-- designer-base/src/main/java/com/fr/file/FILEFactory.java | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/mainframe/loghandler/DesignerLogHandler.java b/designer-base/src/main/java/com/fr/design/mainframe/loghandler/DesignerLogHandler.java index 88e064fe0..621956ce6 100644 --- a/designer-base/src/main/java/com/fr/design/mainframe/loghandler/DesignerLogHandler.java +++ b/designer-base/src/main/java/com/fr/design/mainframe/loghandler/DesignerLogHandler.java @@ -51,7 +51,6 @@ import java.awt.event.ItemListener; import java.awt.event.KeyEvent; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; -import java.io.File; import java.io.IOException; import java.text.SimpleDateFormat; import java.util.ArrayDeque; @@ -259,7 +258,7 @@ public class DesignerLogHandler { return; } TRL trl = new TRL(href); - DesignerContext.getDesignerFrame().openTemplate(FILEFactory.createFILE(ProjectConstants.REPORTLETS_NAME + File.separator + trl.getTemplatePath())); + DesignerContext.getDesignerFrame().openTemplate(FILEFactory.createFILE(ProjectConstants.REPORTLETS_NAME + FILEFactory.SEPARATOR + trl.getTemplatePath())); JTemplate currentEditingTemplate = HistoryTemplateListCache.getInstance().getCurrentEditingTemplate(); if (currentEditingTemplate != null) { currentEditingTemplate.navigate(trl); diff --git a/designer-base/src/main/java/com/fr/file/FILEFactory.java b/designer-base/src/main/java/com/fr/file/FILEFactory.java index 3d48bab34..d55848378 100644 --- a/designer-base/src/main/java/com/fr/file/FILEFactory.java +++ b/designer-base/src/main/java/com/fr/file/FILEFactory.java @@ -1,6 +1,5 @@ package com.fr.file; -import com.fr.base.FRContext; import com.fr.design.file.NodeAuthProcessor; import com.fr.file.filetree.FileNode; import com.fr.workspace.WorkContext; @@ -10,6 +9,7 @@ public class FILEFactory { public static final String FILE_PREFIX = "file://"; public static final String ENV_PREFIX = "env://"; public static final String WEBREPORT_PREFIX = "webreport://"; + public static final String SEPARATOR = "/"; private FILEFactory() { } From 94679a83332eedf6bf71cb8286212ebd51ea3b49 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=96=B9=E7=A3=8A?= <294531121@qq.com> Date: Thu, 17 Feb 2022 19:55:33 +0800 Subject: [PATCH 10/11] =?UTF-8?q?CHART-22936=20=E5=9B=BE=E8=A1=A8=E5=88=87?= =?UTF-8?q?=E6=8D=A2=E6=8E=A7=E4=BB=B6=E6=A0=87=E9=A2=98=E8=AE=BE=E7=BD=AE?= =?UTF-8?q?=E5=85=AC=E5=BC=8F=E6=97=A0=E6=95=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mainframe/chart/gui/ChangeConfigPane.java | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/designer-chart/src/main/java/com/fr/design/mainframe/chart/gui/ChangeConfigPane.java b/designer-chart/src/main/java/com/fr/design/mainframe/chart/gui/ChangeConfigPane.java index f053b09d6..a04acb83d 100644 --- a/designer-chart/src/main/java/com/fr/design/mainframe/chart/gui/ChangeConfigPane.java +++ b/designer-chart/src/main/java/com/fr/design/mainframe/chart/gui/ChangeConfigPane.java @@ -10,6 +10,7 @@ import com.fr.chart.base.AttrChangeConfig; import com.fr.chart.base.AttrChangeType; import com.fr.chart.chartattr.Chart; import com.fr.chart.chartattr.ChartCollection; +import com.fr.chart.chartattr.SwitchTitle; import com.fr.design.beans.BasicBeanPane; import com.fr.design.dialog.AttrScrollPane; import com.fr.design.foldablepane.UIExpandablePane; @@ -238,13 +239,14 @@ public class ChangeConfigPane extends BasicBeanPane { private void populateSwitchTitlePane(int chartIndex, ChartCollection collection) { Chart chart = collection.getChart(chartIndex, Chart.class); - Object switchTitle = chart.getSwitchTitle(); + SwitchTitle switchTitle = chart.getSwitchTitle(); + Object content = switchTitle.getContent(); String result = StringUtils.EMPTY; - if (switchTitle != null) { - if (switchTitle instanceof BaseFormula) { - result = ((BaseFormula) switchTitle).getContent(); + if (content != null) { + if (content instanceof BaseFormula) { + result = ((BaseFormula) content).getContent(); } else { - result = Utils.objectToString(switchTitle); + result = Utils.objectToString(content); } } TinyFormulaPane title = new TinyFormulaPane(); @@ -345,7 +347,7 @@ public class ChangeConfigPane extends BasicBeanPane { } else { titleObj = titleString; } - collection.getChart(i, Chart.class).setSwitchTitle(titleObj); + collection.getChart(i, Chart.class).setSwitchTitle(new SwitchTitle(titleObj)); } } From 40192acd81c796cdf979584b6d96ad1cc5bb781a Mon Sep 17 00:00:00 2001 From: kerry Date: Fri, 18 Feb 2022 10:46:45 +0800 Subject: [PATCH 11/11] =?UTF-8?q?REPORT-66966=20FR11=E5=86=B3=E7=AD=96?= =?UTF-8?q?=E6=8A=A5=E8=A1=A8-=E6=94=BE=E5=9C=A8=E6=8E=A8=E8=8D=90?= =?UTF-8?q?=E5=B8=83=E5=B1=80=E5=8D=A0=E4=BD=8D=E5=9D=97=E9=87=8C=E7=9A=84?= =?UTF-8?q?=E6=8A=A5=E8=A1=A8=E5=9D=97=E7=BB=84=E4=BB=B6=EF=BC=8C=E6=8B=96?= =?UTF-8?q?=E6=8B=BD=E8=B0=83=E6=95=B4=E5=B0=BA=E5=AF=B8=EF=BC=8C=E4=BF=9D?= =?UTF-8?q?=E5=AD=98=E6=A8=A1=E6=9D=BF=E5=86=8D=E6=89=93=E5=BC=80=E6=A8=A1?= =?UTF-8?q?=E6=9D=BF=EF=BC=8C=E5=86=8D=E6=8B=96=E6=8B=BD=E8=B0=83=E6=95=B4?= =?UTF-8?q?=E6=8A=A5=E8=A1=A8=E5=9D=97=E7=BB=84=E4=BB=B6=E5=B0=BA=E5=AF=B8?= =?UTF-8?q?=EF=BC=8C=E4=BC=9A=E5=87=BA=E7=8E=B0=E5=92=8C=E7=A9=BA=E7=99=BD?= =?UTF-8?q?=E5=9D=97=E9=87=8D=E5=8F=A0=E9=94=99=E4=B9=B1=E7=9A=84=E7=8E=B0?= =?UTF-8?q?=E8=B1=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/fr/design/fit/NewJForm.java | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/designer-form/src/main/java/com/fr/design/fit/NewJForm.java b/designer-form/src/main/java/com/fr/design/fit/NewJForm.java index 60bd8d542..660a5c483 100644 --- a/designer-form/src/main/java/com/fr/design/fit/NewJForm.java +++ b/designer-form/src/main/java/com/fr/design/fit/NewJForm.java @@ -179,11 +179,13 @@ public class NewJForm extends JForm { FRFitLayoutAdapter layoutAdapter = (FRFitLayoutAdapter) adapter; layoutAdapter.setEdit(true); layoutAdapter.calculateBounds(backupBounds, xwTitleLayout.getBounds(), xwTitleLayout, row, difference); + } else { + XLayoutContainer parent = XCreatorUtils.getParentXLayoutContainer(xwTitleLayout); + if (parent != null && parent.toData() != null) { + parent.toData().setBounds(xwTitleLayout.toData(), xwTitleLayout.getBounds()); + } } - XLayoutContainer parent = XCreatorUtils.getParentXLayoutContainer(xwTitleLayout); - if (parent != null && parent.toData() != null) { - parent.toData().setBounds(xwTitleLayout.toData(), xwTitleLayout.getBounds()); - } + }