From 055935a364628583e8613a0067849a3e71ba815d Mon Sep 17 00:00:00 2001 From: "Destiny.Lin" Date: Fri, 19 May 2023 16:33:25 +0800 Subject: [PATCH 1/8] =?UTF-8?q?REPORT-89867=20=E3=80=90=E9=99=8D=E6=9C=AC?= =?UTF-8?q?=E5=A2=9E=E6=95=88=E3=80=91=E6=8F=92=E4=BB=B6=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../extra/PluginBatchModifyDetailPane.java | 173 ++++++++++++++++++ .../fr/design/extra/PluginOperateUtils.java | 83 ++++++--- .../callback/BatchModifyStatusCallback.java | 139 ++++++++++++++ .../java/com/fr/design/upm/UpmBridge.java | 13 ++ 4 files changed, 387 insertions(+), 21 deletions(-) create mode 100644 designer-base/src/main/java/com/fr/design/extra/PluginBatchModifyDetailPane.java create mode 100644 designer-base/src/main/java/com/fr/design/extra/exe/callback/BatchModifyStatusCallback.java diff --git a/designer-base/src/main/java/com/fr/design/extra/PluginBatchModifyDetailPane.java b/designer-base/src/main/java/com/fr/design/extra/PluginBatchModifyDetailPane.java new file mode 100644 index 0000000000..41f5400387 --- /dev/null +++ b/designer-base/src/main/java/com/fr/design/extra/PluginBatchModifyDetailPane.java @@ -0,0 +1,173 @@ +package com.fr.design.extra; + +import com.fr.design.gui.ibutton.UIButton; +import com.fr.design.gui.ilable.UILabel; +import com.fr.design.i18n.Toolkit; + + +import javax.swing.BorderFactory; +import javax.swing.BoxLayout; +import javax.swing.JDialog; +import javax.swing.JPanel; +import javax.swing.JScrollPane; +import javax.swing.JTextArea; +import javax.swing.SwingUtilities; +import javax.swing.UIManager; +import java.awt.BorderLayout; +import java.awt.Color; +import java.awt.Cursor; +import java.awt.Dialog; +import java.awt.Dimension; +import java.awt.FlowLayout; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; + +/** + * 插件批量处理弹窗面板 + * + * @author Destiny.Lin + * @since 11.0 + * Created on 2023/5/19 + */ +public class PluginBatchModifyDetailPane { + private UILabel message = new UILabel(); + private UIButton cancelButton = new UIButton(Toolkit.i18nText("Fine-Design_Report_OK")); + private UILabel uiLabel = new UILabel(); + private UILabel directUiLabel = new UILabel(); + private UILabel detailLabel = new UILabel(); + + private JPanel upPane; + private JPanel midPane; + private JPanel downPane; + private JPanel hiddenPanel; + private JTextArea jta; + private JDialog dialog; + + public PluginBatchModifyDetailPane(Dialog parent) { + init(parent); + } + + private void init(Dialog parent) { + message.setBorder(BorderFactory.createEmptyBorder(8, 5, 0, 0)); + dialog = new JDialog(parent, Toolkit.i18nText("Fine-Design_Basic_Plugin_Manager"), true); + dialog.setSize(new Dimension(380, 150)); + JPanel jp = new JPanel(); + initUpPane(); + initDownPane(); + initMidPane(); + initHiddenPanel(); + initListener(); + jp.setLayout(new BoxLayout(jp, BoxLayout.Y_AXIS)); + jp.add(upPane); + jp.add(midPane); + jp.add(hiddenPanel); + jp.add(downPane); + hiddenPanel.setVisible(false); + dialog.add(jp); + dialog.setResizable(false); + dialog.setLocationRelativeTo(SwingUtilities.getWindowAncestor(parent)); + } + + private void initDownPane() { + downPane = new JPanel(); + downPane.setLayout(new FlowLayout(FlowLayout.RIGHT, 15, 9)); + downPane.add(cancelButton); + } + + private void initUpPane() { + upPane = new JPanel(); + uiLabel = new UILabel(UIManager.getIcon("OptionPane.errorIcon")); + upPane.setLayout(new FlowLayout(FlowLayout.LEFT, 10, 10)); + upPane.add(uiLabel); + upPane.add(message); + } + + private void initMidPane() { + midPane = new JPanel(); + midPane.add(directUiLabel); + midPane.add(detailLabel); + midPane.setLayout(new FlowLayout(FlowLayout.LEFT, 10, 0)); + detailLabel.setText(Toolkit.i18nText("Fine_Designer_Look_Detail")); + detailLabel.setForeground(Color.BLUE); + detailLabel.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR)); + directUiLabel.setIcon(UIManager.getIcon("OptionPane.narrow.right")); + } + + private void initHiddenPanel() { + hiddenPanel = new JPanel(); + hiddenPanel.setLayout(new BorderLayout(2, 0)); + hiddenPanel.add(new JPanel(), BorderLayout.WEST); + hiddenPanel.add(new JPanel(), BorderLayout.EAST); + JPanel borderPanel = new JPanel(); + borderPanel.setLayout(new BorderLayout()); + jta = new JTextArea(); + JScrollPane jsp = new JScrollPane(jta); + jsp.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED); + jsp.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED); + jta.setEditable(false); + borderPanel.add(jsp, BorderLayout.CENTER); + hiddenPanel.add(borderPanel); + } + + public void updateDetailArea(String message) { + jta.append(message + "\n"); + } + + private void initListener() { + detailLabel.addMouseListener(new MouseAdapter() { + @Override + public void mouseClicked(MouseEvent e) { + if (hiddenPanel.isVisible()) { + hiddenPanel.setVisible(false); + dialog.setSize(new Dimension(380, 150)); + detailLabel.setText(Toolkit.i18nText("Fine_Designer_Look_Detail")); + directUiLabel.setIcon(UIManager.getIcon("OptionPane.narrow.right")); + } else { + dialog.setSize(new Dimension(380, 270)); + hiddenPanel.setVisible(true); + detailLabel.setText(Toolkit.i18nText("Fine_Designer_Hide_Detail")); + directUiLabel.setIcon(UIManager.getIcon("OptionPane.narrow.down")); + } + } + + }); + cancelButton.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + hiddenPanel.removeAll(); + dialog.dispose(); + } + }); + } + + /** + * 更新标题(启用插件还是禁用插件) + * @param isActive 是否启用 + */ + public void updateTitle(boolean isActive) { + if (isActive) { + dialog.setTitle(Toolkit.i18nText("Fine-Design_Basic_Plugin_Stop")); + } else { + dialog.setTitle(Toolkit.i18nText("Fine-Design_Basic_Plugin_Start")); + } + } + + /** + * 更新展示信息 + * + * @param failedCount 处理失败个数 + * @param successCount 处理成功个数 + */ + public void updateMessage(int failedCount, int successCount) { + message.setText(Toolkit.i18nText("Fine-Design_Basic_Plugin_Batch_Modify_Info", failedCount, successCount)); + } + + /** + * 显示面板 + */ + public void show() { + dialog.setVisible(true); + } +} diff --git a/designer-base/src/main/java/com/fr/design/extra/PluginOperateUtils.java b/designer-base/src/main/java/com/fr/design/extra/PluginOperateUtils.java index 379daab28e..b6b86f11ff 100644 --- a/designer-base/src/main/java/com/fr/design/extra/PluginOperateUtils.java +++ b/designer-base/src/main/java/com/fr/design/extra/PluginOperateUtils.java @@ -3,6 +3,7 @@ package com.fr.design.extra; import com.fr.design.DesignerEnvManager; import com.fr.design.bridge.exec.JSCallback; import com.fr.design.dialog.FineJOptionPane; +import com.fr.design.extra.exe.callback.BatchModifyStatusCallback; import com.fr.design.extra.exe.callback.InstallFromDiskCallback; import com.fr.design.extra.exe.callback.InstallOnlineCallback; import com.fr.design.extra.exe.callback.ModifyStatusCallback; @@ -28,11 +29,13 @@ import com.fr.plugin.view.PluginView; import com.fr.plugin.xml.PluginElementName; import com.fr.plugin.xml.PluginXmlElement; import com.fr.stable.StringUtils; +import com.teamdev.jxbrowser.chromium.JSArray; import javax.swing.JOptionPane; import javax.swing.SwingUtilities; import java.io.File; import java.net.HttpURLConnection; +import java.util.ArrayList; import java.util.List; @@ -92,6 +95,64 @@ public class PluginOperateUtils { } + /** + * 批量启用或禁用插件 + * + * @param pluginIDs 要处理的插件信息 + * @param jsCallback 回调函数 + */ + public static void setPluginActive(JSArray pluginIDs, JSCallback jsCallback) { + SwingUtilities.invokeLater(new Runnable() { + + @Override + public void run() { + List pluginInfos = new ArrayList<>(); + for (int i = 0, len = pluginIDs.length(); i < len; i++) { + String pluginInfo = pluginIDs.get(i).asString().getValue(); + pluginInfos.add(pluginInfo); + + } + BatchModifyStatusCallback modifyStatusCallback = new BatchModifyStatusCallback(jsCallback, pluginIDs.length()); + for (String pluginInfo : pluginInfos) { + PluginMarker pluginMarker = PluginUtils.createPluginMarker(pluginInfo); + dealWithPluginActive(pluginMarker, modifyStatusCallback); + } + } + }); + } + + private static void dealWithPluginActive(PluginMarker pluginMarker, BatchModifyStatusCallback modifyStatusCallback) { + PluginContext plugin = PluginManager.getContext(pluginMarker); + boolean isRunning = plugin.isRunning(); + modifyStatusCallback.setActive(isRunning); + changePluginActive(isRunning, pluginMarker, modifyStatusCallback, plugin); + + } + + private static void changePluginActive(boolean isRunning, PluginMarker pluginMarker, PluginTaskCallback modifyStatusCallback, PluginContext plugin) { + if (isRunning) { + PluginXmlElement forbidReminder = plugin.getXml().getElement(PluginElementName.ForbidReminder); + if (forbidReminder != null && forbidReminder.getContent() != null) { + // 禁用前提示 + int rv = FineJOptionPane.showConfirmDialog( + null, + forbidReminder.getContent(), + com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Plugin_Warning"), + JOptionPane.OK_CANCEL_OPTION, + JOptionPane.WARNING_MESSAGE + ); + if (rv == JOptionPane.OK_OPTION) { + PluginManager.getController().forbidPersistently(pluginMarker, modifyStatusCallback); + } + } else { + // 正常禁用 + PluginManager.getController().forbidPersistently(pluginMarker, modifyStatusCallback); + } + } else { + PluginManager.getController().enablePersistently(pluginMarker, modifyStatusCallback); + } + } + public static void setPluginActive(String pluginInfo, JSCallback jsCallback) { SwingUtilities.invokeLater(new Runnable() { @@ -101,27 +162,7 @@ public class PluginOperateUtils { PluginContext plugin = PluginManager.getContext(pluginMarker); boolean isRunning = plugin.isRunning(); PluginTaskCallback modifyStatusCallback = new ModifyStatusCallback(isRunning, jsCallback); - if (isRunning) { - PluginXmlElement forbidReminder = plugin.getXml().getElement(PluginElementName.ForbidReminder); - if (forbidReminder != null && forbidReminder.getContent() != null) { - // 禁用前提示 - int rv = FineJOptionPane.showConfirmDialog( - null, - forbidReminder.getContent(), - com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Plugin_Warning"), - JOptionPane.OK_CANCEL_OPTION, - JOptionPane.WARNING_MESSAGE - ); - if (rv == JOptionPane.OK_OPTION) { - PluginManager.getController().forbidPersistently(pluginMarker, modifyStatusCallback); - } - } else { - // 正常禁用 - PluginManager.getController().forbidPersistently(pluginMarker, modifyStatusCallback); - } - } else { - PluginManager.getController().enablePersistently(pluginMarker, modifyStatusCallback); - } + changePluginActive(isRunning, pluginMarker, modifyStatusCallback, plugin); } }); } diff --git a/designer-base/src/main/java/com/fr/design/extra/exe/callback/BatchModifyStatusCallback.java b/designer-base/src/main/java/com/fr/design/extra/exe/callback/BatchModifyStatusCallback.java new file mode 100644 index 0000000000..a815a8e369 --- /dev/null +++ b/designer-base/src/main/java/com/fr/design/extra/exe/callback/BatchModifyStatusCallback.java @@ -0,0 +1,139 @@ +package com.fr.design.extra.exe.callback; + + +import com.fr.design.bridge.exec.JSCallback; +import com.fr.design.bridge.exec.JSExecutor; + +import com.fr.design.dialog.FineJOptionPane; +import com.fr.design.extra.PluginBatchModifyDetailPane; +import com.fr.design.extra.PluginOperateUtils; + +import com.fr.design.i18n.Toolkit; +import com.fr.design.plugin.DesignerPluginContext; +import com.fr.log.FineLoggerFactory; +import com.fr.plugin.context.PluginContext; +import com.fr.plugin.context.PluginMarker; +import com.fr.plugin.context.PluginMarkerAdapter; +import com.fr.plugin.manage.PluginManager; +import com.fr.plugin.manage.control.PluginTask; +import com.fr.plugin.manage.control.PluginTaskCallback; +import com.fr.plugin.manage.control.PluginTaskResult; +import com.fr.stable.StringUtils; + +import javax.swing.JOptionPane; +import java.util.HashMap; +import java.util.Map; + +/** + * 批量处理Callback + * + * @author Destiny.Lin + * @since 11.0 + * Created on 2023/5/18 + */ +public class BatchModifyStatusCallback implements PluginTaskCallback { + private boolean isActive; + private JSCallback jsCallback = new JSCallback(JSExecutor.DEFAULT); + private Map resultMap = new HashMap<>(); + private int pluginCount = 0; + private int allPluginCount = 0; + private int successCount = 0; + private int failedCount = 0; + + + public BatchModifyStatusCallback(boolean isActive) { + this.isActive = isActive; + } + + public BatchModifyStatusCallback(boolean isActive, JSCallback jsCallback) { + this.isActive = isActive; + this.jsCallback = jsCallback; + } + + public BatchModifyStatusCallback(JSCallback jsCallback, int size) { + this.jsCallback = jsCallback; + allPluginCount = size; + } + + @Override + public void done(PluginTaskResult result) { + String pluginInfo = PluginOperateUtils.getSuccessInfo(result); + if (result.isSuccess()) { + successCount++; + String modifyMessage = isActive ? + pluginInfo + Toolkit.i18nText("Fine-Design_Basic_Plugin_Has_Been_Disabled_Duplicate") : + pluginInfo + Toolkit.i18nText("Fine-Design_Plugin_Has_Been_Actived_Duplicate"); + FineLoggerFactory.getLogger().info(modifyMessage); + updateMapAndCheckDone(); + } else { + failedCount++; + resultMap.put(getPluginName(result), pluginInfo); + updateMapAndCheckDone(); + } + } + + /** + * 更新当前Map状态,如果全部都更新完了就回调 + */ + public void updateMapAndCheckDone() { + pluginCount++; + if (pluginCount == allPluginCount) { + jsCallback.execute("success"); + showMessageDialog(); + } + } + + /** + * 获取插件名 + * + * @param result 任务结果 + * @return 插件名 + */ + public String getPluginName(PluginTaskResult result) { + PluginTask pluginTask = result.getCurrentTask(); + if (pluginTask != null) { + PluginMarker pluginMarker = pluginTask.getToMarker(); + PluginContext pluginContext = PluginManager.getContext(pluginMarker.getPluginID()); + if (pluginContext != null) { + return pluginContext.getName(); + } else if (pluginMarker instanceof PluginMarkerAdapter) { + return ((PluginMarkerAdapter) pluginMarker).getPluginName(); + } + return pluginMarker.getPluginID(); + } + return StringUtils.EMPTY; + } + + /** + * 展示信息面板 + */ + public void showMessageDialog() { + if (failedCount == 0) { + if (isActive) { + FineJOptionPane.showMessageDialog(DesignerPluginContext.getPluginDialog(), + Toolkit.i18nText("Fine-Design_Basic_Plugin_Batch_Modify_Stop_Success"), + Toolkit.i18nText("Fine-Design_Basic_Plugin_Stop"), + JOptionPane.INFORMATION_MESSAGE); + } else { + FineJOptionPane.showMessageDialog(DesignerPluginContext.getPluginDialog(), + Toolkit.i18nText("Fine-Design_Basic_Plugin_Batch_Modify_Start_Success"), + Toolkit.i18nText("Fine-Design_Basic_Plugin_Start"), + JOptionPane.INFORMATION_MESSAGE); + } + } else { + PluginBatchModifyDetailPane detailPane = new PluginBatchModifyDetailPane(DesignerPluginContext.getPluginDialog()); + for (String key : resultMap.keySet()) { + detailPane.updateDetailArea(resultMap.get(key)); + } + detailPane.updateMessage(failedCount, successCount); + detailPane.updateTitle(isActive); + detailPane.show(); + } + } + + public void setActive(boolean active) { + isActive = active; + } + + +} diff --git a/designer-base/src/main/java/com/fr/design/upm/UpmBridge.java b/designer-base/src/main/java/com/fr/design/upm/UpmBridge.java index 01369116d7..11079561ab 100644 --- a/designer-base/src/main/java/com/fr/design/upm/UpmBridge.java +++ b/designer-base/src/main/java/com/fr/design/upm/UpmBridge.java @@ -40,6 +40,7 @@ import com.teamdev.jxbrowser.chromium.Browser; import com.teamdev.jxbrowser.chromium.JSArray; import com.teamdev.jxbrowser.chromium.JSFunction; import com.teamdev.jxbrowser.chromium.JSObject; +import com.teamdev.jxbrowser.chromium.JSValue; import java.awt.Desktop; import javax.swing.JFileChooser; @@ -291,6 +292,18 @@ public class UpmBridge { PluginOperateUtils.setPluginActive(pluginID, jsCallback); } + /** + * 批量修改选中的插件的活跃状态 + * + * @param pluginIDs 要处理的插件ID + * @param callback 回调函数 + */ + @JSBridge + public void setAllPluginActive(JSArray pluginIDs, final JSFunction callback) { + JSCallback jsCallback = new JSCallback(UpmBrowserExecutor.create(window, callback)); + PluginOperateUtils.setPluginActive(pluginIDs, jsCallback); + } + /** * 选择文件对话框 * From 649224ca52bad1ab089296641bfa566d33c12859 Mon Sep 17 00:00:00 2001 From: "Destiny.Lin" Date: Fri, 19 May 2023 16:35:40 +0800 Subject: [PATCH 2/8] =?UTF-8?q?REPORT-89867=20=E3=80=90=E9=99=8D=E6=9C=AC?= =?UTF-8?q?=E5=A2=9E=E6=95=88=E3=80=91=E6=8F=92=E4=BB=B6=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/fr/design/extra/PluginBatchModifyDetailPane.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/designer-base/src/main/java/com/fr/design/extra/PluginBatchModifyDetailPane.java b/designer-base/src/main/java/com/fr/design/extra/PluginBatchModifyDetailPane.java index 41f5400387..5f29293913 100644 --- a/designer-base/src/main/java/com/fr/design/extra/PluginBatchModifyDetailPane.java +++ b/designer-base/src/main/java/com/fr/design/extra/PluginBatchModifyDetailPane.java @@ -111,6 +111,11 @@ public class PluginBatchModifyDetailPane { hiddenPanel.add(borderPanel); } + /** + * 补充更详细的报错信息 + * + * @param message 信息 + */ public void updateDetailArea(String message) { jta.append(message + "\n"); } From a03030630c1b36a76f0be2d0659da5019dee28d7 Mon Sep 17 00:00:00 2001 From: "Destiny.Lin" Date: Fri, 19 May 2023 16:40:44 +0800 Subject: [PATCH 3/8] =?UTF-8?q?REPORT-89867=20=E3=80=90=E9=99=8D=E6=9C=AC?= =?UTF-8?q?=E5=A2=9E=E6=95=88=E3=80=91=E6=8F=92=E4=BB=B6=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/fr/design/extra/PluginOperateUtils.java | 6 +++--- .../exe/callback/BatchModifyStatusCallback.java | 14 +++++++------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/extra/PluginOperateUtils.java b/designer-base/src/main/java/com/fr/design/extra/PluginOperateUtils.java index b6b86f11ff..e2324d1c08 100644 --- a/designer-base/src/main/java/com/fr/design/extra/PluginOperateUtils.java +++ b/designer-base/src/main/java/com/fr/design/extra/PluginOperateUtils.java @@ -123,9 +123,9 @@ public class PluginOperateUtils { private static void dealWithPluginActive(PluginMarker pluginMarker, BatchModifyStatusCallback modifyStatusCallback) { PluginContext plugin = PluginManager.getContext(pluginMarker); - boolean isRunning = plugin.isRunning(); - modifyStatusCallback.setActive(isRunning); - changePluginActive(isRunning, pluginMarker, modifyStatusCallback, plugin); + boolean running = plugin.isRunning(); + modifyStatusCallback.setActive(running); + changePluginActive(running, pluginMarker, modifyStatusCallback, plugin); } diff --git a/designer-base/src/main/java/com/fr/design/extra/exe/callback/BatchModifyStatusCallback.java b/designer-base/src/main/java/com/fr/design/extra/exe/callback/BatchModifyStatusCallback.java index a815a8e369..2e36590a56 100644 --- a/designer-base/src/main/java/com/fr/design/extra/exe/callback/BatchModifyStatusCallback.java +++ b/designer-base/src/main/java/com/fr/design/extra/exe/callback/BatchModifyStatusCallback.java @@ -32,7 +32,7 @@ import java.util.Map; * Created on 2023/5/18 */ public class BatchModifyStatusCallback implements PluginTaskCallback { - private boolean isActive; + private boolean active; private JSCallback jsCallback = new JSCallback(JSExecutor.DEFAULT); private Map resultMap = new HashMap<>(); private int pluginCount = 0; @@ -42,11 +42,11 @@ public class BatchModifyStatusCallback implements PluginTaskCallback { public BatchModifyStatusCallback(boolean isActive) { - this.isActive = isActive; + this.active = isActive; } public BatchModifyStatusCallback(boolean isActive, JSCallback jsCallback) { - this.isActive = isActive; + this.active = isActive; this.jsCallback = jsCallback; } @@ -60,7 +60,7 @@ public class BatchModifyStatusCallback implements PluginTaskCallback { String pluginInfo = PluginOperateUtils.getSuccessInfo(result); if (result.isSuccess()) { successCount++; - String modifyMessage = isActive ? + String modifyMessage = active ? pluginInfo + Toolkit.i18nText("Fine-Design_Basic_Plugin_Has_Been_Disabled_Duplicate") : pluginInfo + Toolkit.i18nText("Fine-Design_Plugin_Has_Been_Actived_Duplicate"); FineLoggerFactory.getLogger().info(modifyMessage); @@ -109,7 +109,7 @@ public class BatchModifyStatusCallback implements PluginTaskCallback { */ public void showMessageDialog() { if (failedCount == 0) { - if (isActive) { + if (active) { FineJOptionPane.showMessageDialog(DesignerPluginContext.getPluginDialog(), Toolkit.i18nText("Fine-Design_Basic_Plugin_Batch_Modify_Stop_Success"), Toolkit.i18nText("Fine-Design_Basic_Plugin_Stop"), @@ -126,13 +126,13 @@ public class BatchModifyStatusCallback implements PluginTaskCallback { detailPane.updateDetailArea(resultMap.get(key)); } detailPane.updateMessage(failedCount, successCount); - detailPane.updateTitle(isActive); + detailPane.updateTitle(active); detailPane.show(); } } public void setActive(boolean active) { - isActive = active; + this.active = active; } From bd2d5847fb954dbd8693a4bc73f83d9f1b4594dd Mon Sep 17 00:00:00 2001 From: "Destiny.Lin" Date: Tue, 6 Jun 2023 17:10:40 +0800 Subject: [PATCH 4/8] =?UTF-8?q?REPORT-89867=20=E3=80=90=E9=99=8D=E6=9C=AC?= =?UTF-8?q?=E5=A2=9E=E6=95=88=E3=80=91=E6=8F=92=E4=BB=B6=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../extra/PluginBatchModifyDetailPane.java | 12 +- .../fr/design/extra/PluginOperateUtils.java | 21 ++- .../AbstractBatchModifyStatusCallback.java | 128 ++++++++++++++++++ .../callback/BatchModifyStatusCallback.java | 126 ++--------------- .../callback/BatchUpdateOnlineCallback.java | 77 +++++++++++ 5 files changed, 240 insertions(+), 124 deletions(-) create mode 100644 designer-base/src/main/java/com/fr/design/extra/exe/callback/AbstractBatchModifyStatusCallback.java create mode 100644 designer-base/src/main/java/com/fr/design/extra/exe/callback/BatchUpdateOnlineCallback.java diff --git a/designer-base/src/main/java/com/fr/design/extra/PluginBatchModifyDetailPane.java b/designer-base/src/main/java/com/fr/design/extra/PluginBatchModifyDetailPane.java index 5f29293913..31117a93c2 100644 --- a/designer-base/src/main/java/com/fr/design/extra/PluginBatchModifyDetailPane.java +++ b/designer-base/src/main/java/com/fr/design/extra/PluginBatchModifyDetailPane.java @@ -148,15 +148,11 @@ public class PluginBatchModifyDetailPane { } /** - * 更新标题(启用插件还是禁用插件) - * @param isActive 是否启用 + * 更新标题 + * @param title 标题 */ - public void updateTitle(boolean isActive) { - if (isActive) { - dialog.setTitle(Toolkit.i18nText("Fine-Design_Basic_Plugin_Stop")); - } else { - dialog.setTitle(Toolkit.i18nText("Fine-Design_Basic_Plugin_Start")); - } + public void updateTitle(String title) { + dialog.setTitle(title); } /** diff --git a/designer-base/src/main/java/com/fr/design/extra/PluginOperateUtils.java b/designer-base/src/main/java/com/fr/design/extra/PluginOperateUtils.java index e2324d1c08..bc0239eda6 100644 --- a/designer-base/src/main/java/com/fr/design/extra/PluginOperateUtils.java +++ b/designer-base/src/main/java/com/fr/design/extra/PluginOperateUtils.java @@ -4,6 +4,7 @@ import com.fr.design.DesignerEnvManager; import com.fr.design.bridge.exec.JSCallback; import com.fr.design.dialog.FineJOptionPane; import com.fr.design.extra.exe.callback.BatchModifyStatusCallback; +import com.fr.design.extra.exe.callback.BatchUpdateOnlineCallback; import com.fr.design.extra.exe.callback.InstallFromDiskCallback; import com.fr.design.extra.exe.callback.InstallOnlineCallback; import com.fr.design.extra.exe.callback.ModifyStatusCallback; @@ -68,12 +69,14 @@ public class PluginOperateUtils { public static void updatePluginOnline(List pluginMarkerList, JSCallback jsCallback) { - for (int i = 0; i < pluginMarkerList.size(); i++) { - updatePluginOnline(pluginMarkerList.get(i), jsCallback); + int size = pluginMarkerList.size(); + BatchUpdateOnlineCallback batchUpdateOnlineCallback = new BatchUpdateOnlineCallback(jsCallback, size); + for (int i = 0; i < size; i++) { + updatePluginOnline(pluginMarkerList.get(i), jsCallback, batchUpdateOnlineCallback); } } - public static void updatePluginOnline(PluginMarker pluginMarker, JSCallback jsCallback) { + private static void updatePluginOnline(PluginMarker pluginMarker, JSCallback jsCallback, BatchUpdateOnlineCallback batchUpdateOnlineCallback) { try { JSONObject latestPluginInfo = PluginUtils.getLatestPluginInfo(pluginMarker.getPluginID()); String latestPluginVersion = latestPluginInfo.getString("version"); @@ -82,11 +85,19 @@ public class PluginOperateUtils { //当前已经安装的相同ID插件marker PluginMarker currentMarker = PluginMarkerAdapter.create(PluginUtils.getInstalledPluginMarkerByID(pluginMarker.getPluginID()), pluginName); PluginTask pluginTask = PluginTask.updateTask(currentMarker, toPluginMarker); - PluginControllerHelper.updateOnline(currentMarker, toPluginMarker, new UpdateOnlineCallback(pluginTask, jsCallback), PluginExtraInfo.newBuilder().username(DesignerEnvManager.getEnvManager().getDesignerLoginUsername()).build()); + if (!batchUpdateOnlineCallback.equals(BatchUpdateOnlineCallback.NONE)) { + batchUpdateOnlineCallback.createInnerPreTaskCallback(pluginTask, jsCallback); + PluginControllerHelper.updateOnline(currentMarker, toPluginMarker, batchUpdateOnlineCallback.getInnerPreTaskCallback(), PluginExtraInfo.newBuilder().username(DesignerEnvManager.getEnvManager().getDesignerLoginUsername()).build()); + } else { + PluginControllerHelper.updateOnline(currentMarker, toPluginMarker, new UpdateOnlineCallback(pluginTask, jsCallback), PluginExtraInfo.newBuilder().username(DesignerEnvManager.getEnvManager().getDesignerLoginUsername()).build()); + } } catch (Exception e) { FineLoggerFactory.getLogger().error(e.getMessage(), e); } + } + public static void updatePluginOnline(PluginMarker pluginMarker, JSCallback jsCallback) { + updatePluginOnline(pluginMarker, jsCallback, BatchUpdateOnlineCallback.NONE); } @@ -124,7 +135,7 @@ public class PluginOperateUtils { private static void dealWithPluginActive(PluginMarker pluginMarker, BatchModifyStatusCallback modifyStatusCallback) { PluginContext plugin = PluginManager.getContext(pluginMarker); boolean running = plugin.isRunning(); - modifyStatusCallback.setActive(running); + modifyStatusCallback.updateActiveStatus(running); changePluginActive(running, pluginMarker, modifyStatusCallback, plugin); } diff --git a/designer-base/src/main/java/com/fr/design/extra/exe/callback/AbstractBatchModifyStatusCallback.java b/designer-base/src/main/java/com/fr/design/extra/exe/callback/AbstractBatchModifyStatusCallback.java new file mode 100644 index 0000000000..2aaef96b22 --- /dev/null +++ b/designer-base/src/main/java/com/fr/design/extra/exe/callback/AbstractBatchModifyStatusCallback.java @@ -0,0 +1,128 @@ +package com.fr.design.extra.exe.callback; + +import com.fr.design.bridge.exec.JSCallback; +import com.fr.design.dialog.FineJOptionPane; +import com.fr.design.extra.PluginBatchModifyDetailPane; +import com.fr.design.extra.PluginOperateUtils; +import com.fr.design.i18n.Toolkit; +import com.fr.design.plugin.DesignerPluginContext; +import com.fr.log.FineLoggerFactory; +import com.fr.plugin.context.PluginMarker; +import com.fr.plugin.manage.control.PluginTask; +import com.fr.plugin.manage.control.PluginTaskResult; +import com.fr.plugin.manage.control.ProgressCallback; +import com.fr.stable.StringUtils; + +import javax.swing.JOptionPane; +import java.util.HashMap; +import java.util.Map; + +/** + * 带进度条的批量处理的callback + *
  • content与title是处理完成后弹出的面板的内容与标题,子类需要在done之前设定好对应的信息 + *
  • 进度条是以 当前完成任务数/总任务数 来计算的 + * + * @author Destiny.Lin + * @since 11.0 + * Created on 2023/6/6 + */ +public abstract class AbstractBatchModifyStatusCallback implements ProgressCallback { + protected JSCallback jsCallback; + protected Map resultMap = new HashMap<>(); + protected String content = StringUtils.EMPTY; + protected String title = StringUtils.EMPTY; + public int pluginCount = 0; + public int allPluginCount = 0; + public int successCount = 0; + public int failedCount = 0; + public static final int HUNDRED_PERCENT = 100; + public static final String PERCENT = "%"; + public static final String DEFAULT = "default"; + + public AbstractBatchModifyStatusCallback() { + } + + public AbstractBatchModifyStatusCallback(JSCallback jsCallback, int size) { + this.jsCallback = jsCallback; + this.allPluginCount = size; + } + + @Override + public void done(PluginTaskResult result) { + String pluginInfo = PluginOperateUtils.getSuccessInfo(result); + if (result.isSuccess()) { + successCount++; + String modifyMessage = updateMessage(pluginInfo); + FineLoggerFactory.getLogger().info(modifyMessage); + } else { + failedCount++; + resultMap.put(getPluginName(result), pluginInfo); + } + updateProgressAndCheckCompletion(); + } + + + /** + * 获取插件名 + * + * @param result 任务结果 + * @return 插件名 + */ + public String getPluginName(PluginTaskResult result) { + PluginTask pluginTask = result.getCurrentTask(); + if (pluginTask != null) { + PluginMarker pluginMarker = pluginTask.getToMarker(); + if (pluginMarker != null) { + return pluginMarker.getPluginID(); + } + } + return DEFAULT; + } + + + /** + * 更新当前Map状态,进度条,如果全部都更新完了就回调 + */ + public void updateProgressAndCheckCompletion() { + pluginCount++; + updateProgress(StringUtils.EMPTY, (double) pluginCount / allPluginCount); + FineLoggerFactory.getLogger().error("(double) pluginCount / allPluginCount:{}", (double) pluginCount / allPluginCount); + if (pluginCount == allPluginCount) { + jsCallback.execute("success"); + showMessageDialog(); + } + } + + /** + * 展示信息面板 + */ + public void showMessageDialog() { + if (failedCount == 0) { + FineJOptionPane.showMessageDialog(DesignerPluginContext.getPluginDialog(), + content, + title, + JOptionPane.INFORMATION_MESSAGE); + } else { + PluginBatchModifyDetailPane detailPane = new PluginBatchModifyDetailPane(DesignerPluginContext.getPluginDialog()); + for (String key : resultMap.keySet()) { + detailPane.updateDetailArea(resultMap.get(key)); + } + detailPane.updateMessage(failedCount, successCount); + detailPane.updateTitle(title); + detailPane.show(); + } + } + + + @Override + public void updateProgress(String description, double progress) { + jsCallback.execute(progress * HUNDRED_PERCENT + PERCENT); + } + + /** + * 更新处理成功返回的日志信息 + * + * @return 返回的日志信息 + */ + abstract public String updateMessage(String pluginInfo); +} diff --git a/designer-base/src/main/java/com/fr/design/extra/exe/callback/BatchModifyStatusCallback.java b/designer-base/src/main/java/com/fr/design/extra/exe/callback/BatchModifyStatusCallback.java index 2e36590a56..00c0e8b07a 100644 --- a/designer-base/src/main/java/com/fr/design/extra/exe/callback/BatchModifyStatusCallback.java +++ b/designer-base/src/main/java/com/fr/design/extra/exe/callback/BatchModifyStatusCallback.java @@ -2,138 +2,42 @@ package com.fr.design.extra.exe.callback; import com.fr.design.bridge.exec.JSCallback; -import com.fr.design.bridge.exec.JSExecutor; - -import com.fr.design.dialog.FineJOptionPane; -import com.fr.design.extra.PluginBatchModifyDetailPane; -import com.fr.design.extra.PluginOperateUtils; import com.fr.design.i18n.Toolkit; -import com.fr.design.plugin.DesignerPluginContext; -import com.fr.log.FineLoggerFactory; -import com.fr.plugin.context.PluginContext; -import com.fr.plugin.context.PluginMarker; -import com.fr.plugin.context.PluginMarkerAdapter; -import com.fr.plugin.manage.PluginManager; -import com.fr.plugin.manage.control.PluginTask; -import com.fr.plugin.manage.control.PluginTaskCallback; -import com.fr.plugin.manage.control.PluginTaskResult; -import com.fr.stable.StringUtils; -import javax.swing.JOptionPane; -import java.util.HashMap; -import java.util.Map; /** - * 批量处理Callback + * 批量启用/禁用插件的Callback * * @author Destiny.Lin * @since 11.0 * Created on 2023/5/18 */ -public class BatchModifyStatusCallback implements PluginTaskCallback { +public class BatchModifyStatusCallback extends AbstractBatchModifyStatusCallback { private boolean active; - private JSCallback jsCallback = new JSCallback(JSExecutor.DEFAULT); - private Map resultMap = new HashMap<>(); - private int pluginCount = 0; - private int allPluginCount = 0; - private int successCount = 0; - private int failedCount = 0; - - - public BatchModifyStatusCallback(boolean isActive) { - this.active = isActive; - } - - public BatchModifyStatusCallback(boolean isActive, JSCallback jsCallback) { - this.active = isActive; - this.jsCallback = jsCallback; - } + private boolean operatorFlag = false; public BatchModifyStatusCallback(JSCallback jsCallback, int size) { - this.jsCallback = jsCallback; - allPluginCount = size; + super(jsCallback, size); } - @Override - public void done(PluginTaskResult result) { - String pluginInfo = PluginOperateUtils.getSuccessInfo(result); - if (result.isSuccess()) { - successCount++; - String modifyMessage = active ? - pluginInfo + Toolkit.i18nText("Fine-Design_Basic_Plugin_Has_Been_Disabled_Duplicate") : - pluginInfo + Toolkit.i18nText("Fine-Design_Plugin_Has_Been_Actived_Duplicate"); - FineLoggerFactory.getLogger().info(modifyMessage); - updateMapAndCheckDone(); - } else { - failedCount++; - resultMap.put(getPluginName(result), pluginInfo); - updateMapAndCheckDone(); - } - } - /** - * 更新当前Map状态,如果全部都更新完了就回调 - */ - public void updateMapAndCheckDone() { - pluginCount++; - if (pluginCount == allPluginCount) { - jsCallback.execute("success"); - showMessageDialog(); - } + @Override + public String updateMessage(String pluginInfo) { + return active ? pluginInfo + Toolkit.i18nText("Fine-Design_Basic_Plugin_Has_Been_Disabled_Duplicate") : pluginInfo + Toolkit.i18nText("Fine-Design_Plugin_Has_Been_Actived_Duplicate"); } /** - * 获取插件名 + * 更新启用/禁用信息 * - * @param result 任务结果 - * @return 插件名 + * @param active */ - public String getPluginName(PluginTaskResult result) { - PluginTask pluginTask = result.getCurrentTask(); - if (pluginTask != null) { - PluginMarker pluginMarker = pluginTask.getToMarker(); - PluginContext pluginContext = PluginManager.getContext(pluginMarker.getPluginID()); - if (pluginContext != null) { - return pluginContext.getName(); - } else if (pluginMarker instanceof PluginMarkerAdapter) { - return ((PluginMarkerAdapter) pluginMarker).getPluginName(); - } - return pluginMarker.getPluginID(); + public void updateActiveStatus(boolean active) { + if (!operatorFlag) { + this.active = active; + this.operatorFlag = true; + this.title = active ? Toolkit.i18nText("Fine-Design_Basic_Plugin_Stop") : Toolkit.i18nText("Fine-Design_Basic_Plugin_Start"); + this.content = active ? Toolkit.i18nText("Fine-Design_Basic_Plugin_Batch_Modify_Stop_Success") : Toolkit.i18nText("Fine-Design_Basic_Plugin_Batch_Modify_Start_Success"); } - return StringUtils.EMPTY; } - - /** - * 展示信息面板 - */ - public void showMessageDialog() { - if (failedCount == 0) { - if (active) { - FineJOptionPane.showMessageDialog(DesignerPluginContext.getPluginDialog(), - Toolkit.i18nText("Fine-Design_Basic_Plugin_Batch_Modify_Stop_Success"), - Toolkit.i18nText("Fine-Design_Basic_Plugin_Stop"), - JOptionPane.INFORMATION_MESSAGE); - } else { - FineJOptionPane.showMessageDialog(DesignerPluginContext.getPluginDialog(), - Toolkit.i18nText("Fine-Design_Basic_Plugin_Batch_Modify_Start_Success"), - Toolkit.i18nText("Fine-Design_Basic_Plugin_Start"), - JOptionPane.INFORMATION_MESSAGE); - } - } else { - PluginBatchModifyDetailPane detailPane = new PluginBatchModifyDetailPane(DesignerPluginContext.getPluginDialog()); - for (String key : resultMap.keySet()) { - detailPane.updateDetailArea(resultMap.get(key)); - } - detailPane.updateMessage(failedCount, successCount); - detailPane.updateTitle(active); - detailPane.show(); - } - } - - public void setActive(boolean active) { - this.active = active; - } - - } diff --git a/designer-base/src/main/java/com/fr/design/extra/exe/callback/BatchUpdateOnlineCallback.java b/designer-base/src/main/java/com/fr/design/extra/exe/callback/BatchUpdateOnlineCallback.java new file mode 100644 index 0000000000..6d93ac1a10 --- /dev/null +++ b/designer-base/src/main/java/com/fr/design/extra/exe/callback/BatchUpdateOnlineCallback.java @@ -0,0 +1,77 @@ +package com.fr.design.extra.exe.callback; + + +import com.fr.design.bridge.exec.JSCallback; +import com.fr.design.i18n.Toolkit; +import com.fr.log.FineLoggerFactory; +import com.fr.plugin.manage.control.PluginTask; +import com.fr.plugin.manage.control.PluginTaskResult; + + +/** + * 批量更新的callback + * + * @author Destiny.Lin + * @since 11.0 + * Created on 2023/6/6 + */ +public class BatchUpdateOnlineCallback extends AbstractBatchModifyStatusCallback{ + public static final BatchUpdateOnlineCallback NONE = new BatchUpdateOnlineCallback(); + + /** + * 可自动处理前置任务的callback,用来处理实际更新逻辑 + */ + private InnerUpdateCallback innerPreTaskCallback; + + public BatchUpdateOnlineCallback() { + } + + public BatchUpdateOnlineCallback(JSCallback jsCallback, int size) { + super(jsCallback, size); + this.title = Toolkit.i18nText("Fine-Design_Basic_Plugin_Update"); + this.content = Toolkit.i18nText("Fine-Design_Basic_Plugin_Update_Success"); + } + + /** + * 更新任务 + * + * @param pluginTask 任务 + * @param jsCallback callback + */ + public void createInnerPreTaskCallback(PluginTask pluginTask, JSCallback jsCallback) { + innerPreTaskCallback = new InnerUpdateCallback(pluginTask, jsCallback); + } + + + + public InnerUpdateCallback getInnerPreTaskCallback() { + return innerPreTaskCallback; + } + + @Override + public String updateMessage(String pluginInfo) { + return pluginInfo + Toolkit.i18nText("Fine-Design_Basic_Plugin_Update_Success"); + } + + /** + * 可自动处理前置任务的callback,用来处理实际更新逻辑 + */ + public class InnerUpdateCallback extends UpdateOnlineCallback { + + + public InnerUpdateCallback(PluginTask pluginTask, JSCallback jsCallback) { + super(pluginTask, jsCallback); + + } + + @Override + public void updateProgress(String description, double aProgress) { + //不进行处理 + } + + @Override + public void allDone(PluginTaskResult result) { + BatchUpdateOnlineCallback.this.done(result); + } + } +} From da1d66e66388faf758ba462d04e617f93fcaecbc Mon Sep 17 00:00:00 2001 From: "Destiny.Lin" Date: Tue, 6 Jun 2023 17:18:17 +0800 Subject: [PATCH 5/8] =?UTF-8?q?REPORT-89867=20=E3=80=90=E9=99=8D=E6=9C=AC?= =?UTF-8?q?=E5=A2=9E=E6=95=88=E3=80=91=E6=8F=92=E4=BB=B6=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../extra/exe/callback/AbstractBatchModifyStatusCallback.java | 1 - 1 file changed, 1 deletion(-) diff --git a/designer-base/src/main/java/com/fr/design/extra/exe/callback/AbstractBatchModifyStatusCallback.java b/designer-base/src/main/java/com/fr/design/extra/exe/callback/AbstractBatchModifyStatusCallback.java index 2aaef96b22..1b3663a2ba 100644 --- a/designer-base/src/main/java/com/fr/design/extra/exe/callback/AbstractBatchModifyStatusCallback.java +++ b/designer-base/src/main/java/com/fr/design/extra/exe/callback/AbstractBatchModifyStatusCallback.java @@ -86,7 +86,6 @@ public abstract class AbstractBatchModifyStatusCallback implements ProgressCallb public void updateProgressAndCheckCompletion() { pluginCount++; updateProgress(StringUtils.EMPTY, (double) pluginCount / allPluginCount); - FineLoggerFactory.getLogger().error("(double) pluginCount / allPluginCount:{}", (double) pluginCount / allPluginCount); if (pluginCount == allPluginCount) { jsCallback.execute("success"); showMessageDialog(); From f276fa142701590365aff769e0cfe00aa97791cf Mon Sep 17 00:00:00 2001 From: "Destiny.Lin" Date: Wed, 7 Jun 2023 09:31:13 +0800 Subject: [PATCH 6/8] =?UTF-8?q?REPORT-89867=20=E3=80=90=E9=99=8D=E6=9C=AC?= =?UTF-8?q?=E5=A2=9E=E6=95=88=E3=80=91=E6=8F=92=E4=BB=B6=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/fr/design/extra/PluginOperateUtils.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/designer-base/src/main/java/com/fr/design/extra/PluginOperateUtils.java b/designer-base/src/main/java/com/fr/design/extra/PluginOperateUtils.java index bc0239eda6..a5aa14a300 100644 --- a/designer-base/src/main/java/com/fr/design/extra/PluginOperateUtils.java +++ b/designer-base/src/main/java/com/fr/design/extra/PluginOperateUtils.java @@ -96,6 +96,12 @@ public class PluginOperateUtils { } } + /** + * 更新插件 + * + * @param pluginMarker 插件marker + * @param jsCallback 回调 + */ public static void updatePluginOnline(PluginMarker pluginMarker, JSCallback jsCallback) { updatePluginOnline(pluginMarker, jsCallback, BatchUpdateOnlineCallback.NONE); } From c72da02f57af4166037580f9bc47e15745364a45 Mon Sep 17 00:00:00 2001 From: "Destiny.Lin" Date: Wed, 7 Jun 2023 09:50:57 +0800 Subject: [PATCH 7/8] =?UTF-8?q?REPORT-89867=20=E3=80=90=E9=99=8D=E6=9C=AC?= =?UTF-8?q?=E5=A2=9E=E6=95=88=E3=80=91=E6=8F=92=E4=BB=B6=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E4=BC=98=E5=8C=96=20=E5=8E=BB=E9=99=A4=E4=B8=A4=E6=AC=A1for?= =?UTF-8?q?=E5=BE=AA=E7=8E=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/fr/design/extra/PluginOperateUtils.java | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/extra/PluginOperateUtils.java b/designer-base/src/main/java/com/fr/design/extra/PluginOperateUtils.java index a5aa14a300..8baccba847 100644 --- a/designer-base/src/main/java/com/fr/design/extra/PluginOperateUtils.java +++ b/designer-base/src/main/java/com/fr/design/extra/PluginOperateUtils.java @@ -123,14 +123,10 @@ public class PluginOperateUtils { @Override public void run() { - List pluginInfos = new ArrayList<>(); - for (int i = 0, len = pluginIDs.length(); i < len; i++) { + int len = pluginIDs.length(); + BatchModifyStatusCallback modifyStatusCallback = new BatchModifyStatusCallback(jsCallback, len); + for (int i = 0; i < len; i++) { String pluginInfo = pluginIDs.get(i).asString().getValue(); - pluginInfos.add(pluginInfo); - - } - BatchModifyStatusCallback modifyStatusCallback = new BatchModifyStatusCallback(jsCallback, pluginIDs.length()); - for (String pluginInfo : pluginInfos) { PluginMarker pluginMarker = PluginUtils.createPluginMarker(pluginInfo); dealWithPluginActive(pluginMarker, modifyStatusCallback); } @@ -313,8 +309,7 @@ public class PluginOperateUtils { private static String getPluginName(PluginContext pluginContext, PluginMarker pluginMarker) { if (pluginContext != null) { return pluginContext.getName(); - } - else if (pluginMarker instanceof PluginMarkerAdapter) { + } else if (pluginMarker instanceof PluginMarkerAdapter) { return ((PluginMarkerAdapter) pluginMarker).getPluginName(); } return pluginMarker == null ? StringUtils.EMPTY : pluginMarker.getPluginID(); From 609e9ce595488b0da58b4ad326d69b15c217576c Mon Sep 17 00:00:00 2001 From: "Destiny.Lin" Date: Wed, 7 Jun 2023 10:44:59 +0800 Subject: [PATCH 8/8] =?UTF-8?q?REPORT-89867=20=E3=80=90=E9=99=8D=E6=9C=AC?= =?UTF-8?q?=E5=A2=9E=E6=95=88=E3=80=91=E6=8F=92=E4=BB=B6=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E4=BC=98=E5=8C=96=20=E4=BC=98=E5=8C=96=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../extra/PluginBatchModifyDetailPane.java | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/extra/PluginBatchModifyDetailPane.java b/designer-base/src/main/java/com/fr/design/extra/PluginBatchModifyDetailPane.java index 31117a93c2..3c086b7ea8 100644 --- a/designer-base/src/main/java/com/fr/design/extra/PluginBatchModifyDetailPane.java +++ b/designer-base/src/main/java/com/fr/design/extra/PluginBatchModifyDetailPane.java @@ -45,6 +45,16 @@ public class PluginBatchModifyDetailPane { private JTextArea jta; private JDialog dialog; + /** + * 弹窗面板默认大小 + */ + public static final Dimension DEFAULT = new Dimension(380, 150); + + /** + * 弹窗面板展开大小 + */ + public static final Dimension DEFAULT_PRO = new Dimension(380, 270); + public PluginBatchModifyDetailPane(Dialog parent) { init(parent); } @@ -52,7 +62,7 @@ public class PluginBatchModifyDetailPane { private void init(Dialog parent) { message.setBorder(BorderFactory.createEmptyBorder(8, 5, 0, 0)); dialog = new JDialog(parent, Toolkit.i18nText("Fine-Design_Basic_Plugin_Manager"), true); - dialog.setSize(new Dimension(380, 150)); + dialog.setSize(DEFAULT); JPanel jp = new JPanel(); initUpPane(); initDownPane(); @@ -126,11 +136,11 @@ public class PluginBatchModifyDetailPane { public void mouseClicked(MouseEvent e) { if (hiddenPanel.isVisible()) { hiddenPanel.setVisible(false); - dialog.setSize(new Dimension(380, 150)); + dialog.setSize(DEFAULT); detailLabel.setText(Toolkit.i18nText("Fine_Designer_Look_Detail")); directUiLabel.setIcon(UIManager.getIcon("OptionPane.narrow.right")); } else { - dialog.setSize(new Dimension(380, 270)); + dialog.setSize(DEFAULT_PRO); hiddenPanel.setVisible(true); detailLabel.setText(Toolkit.i18nText("Fine_Designer_Hide_Detail")); directUiLabel.setIcon(UIManager.getIcon("OptionPane.narrow.down"));