From cdf4faaea7ae8e489b36475c805da6262aaabaa3 Mon Sep 17 00:00:00 2001 From: kuangshuai Date: Tue, 12 Oct 2021 19:02:13 +0800 Subject: [PATCH 1/2] =?UTF-8?q?REPORT-57813=20=E4=B8=BB=E9=A2=98=E5=BC=95?= =?UTF-8?q?=E5=AF=BC=E6=98=AF=E6=8F=90=E5=89=8D=E4=B8=8B=E8=BD=BD=E4=B8=80?= =?UTF-8?q?=E9=A1=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../guide/creator/theme/ThemeToggleGuide.java | 39 +++++++++++++++++-- 1 file changed, 35 insertions(+), 4 deletions(-) diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/guide/creator/theme/ThemeToggleGuide.java b/designer-realize/src/main/java/com/fr/design/mainframe/guide/creator/theme/ThemeToggleGuide.java index 2387a470c5..36d34b1248 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/guide/creator/theme/ThemeToggleGuide.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/guide/creator/theme/ThemeToggleGuide.java @@ -1,5 +1,6 @@ package com.fr.design.mainframe.guide.creator.theme; +import com.fr.base.theme.FormTheme; import com.fr.base.theme.FormThemeConfig; import com.fr.base.theme.TemplateTheme; import com.fr.design.file.HistoryTemplateListCache; @@ -12,6 +13,7 @@ import com.fr.design.mainframe.guide.GuideIds; import com.fr.design.mainframe.guide.base.Guide; import com.fr.design.mainframe.guide.base.GuideBuilder; import com.fr.design.mainframe.guide.base.GuideLifecycleAdaptor; +import com.fr.design.mainframe.guide.base.GuideManager; import com.fr.design.mainframe.guide.creator.GuideCreateUtils; import com.fr.design.mainframe.guide.creator.GuideSceneHelper; import com.fr.design.mainframe.guide.scene.ClickScene; @@ -20,6 +22,7 @@ import com.fr.design.mainframe.guide.scene.GuideScene; import com.fr.design.mainframe.guide.scene.GuideSceneLifecycleAdaptor; import com.fr.design.mainframe.guide.tip.BubbleTip; import com.fr.design.mainframe.guide.tip.GuideTip; +import com.fr.design.mainframe.theme.AsyncThemeFetcher; import com.fr.design.mainframe.theme.TemplateThemeBlock; import com.fr.design.mainframe.theme.TemplateThemeGridPagesPane; import com.fr.design.mainframe.theme.dialog.TemplateThemeUsingDialog; @@ -27,12 +30,17 @@ import com.fr.design.utils.ComponentUtils; import javax.swing.SwingUtilities; import java.awt.Component; +import java.util.List; import java.util.TimerTask; public class ThemeToggleGuide { + private static final int PAGE_THEME_COUNT = 9; + private static final int DEFAULT_THEME_INDEX = 4; private static TemplateThemeUsingDialog themeDialog; private static String TARGET_XCREATOR_NAME = "chart00"; private static String filePath; + private static int themeLoadCount; + private static int selectedThemeIndex; public static Guide createGuide() { GuideScene scene1 = createScene1(); @@ -55,15 +63,38 @@ public class ThemeToggleGuide { .registerLifecycle(new GuideLifecycleAdaptor() { @Override public boolean prepared() { - filePath = GuideCreateUtils.openGuideFile("/com/fr/report/guide/template", "toggle_theme", ".frm"); - EastRegionContainerPane.getInstance().switchTabTo(EastRegionContainerPane.KEY_WIDGET_SETTINGS); - return true; + List themeNames = FormThemeConfig.getInstance().getThemeNames(); + themeLoadCount = Math.min(themeNames.size(), PAGE_THEME_COUNT); + if (themeLoadCount == 0) { + GuideManager.getInstance().getCurrentGuide().terminate(); + } + selectedThemeIndex = Math.min(themeLoadCount - 1, DEFAULT_THEME_INDEX); + int lazyCount = themeLoadCount; + AsyncThemeFetcher asyncThemeFetcher = new AsyncThemeFetcher<>(PAGE_THEME_COUNT, FormThemeConfig.getInstance()); + for (int index = 0; index < lazyCount; index++) { + asyncThemeFetcher.submit(themeNames.get(index), new AsyncThemeFetcher.AsyncThemeFetchCallbackAdapter(){ + @Override + public void afterCachedFetch(FormTheme theme) { + themeLoadCount--; + if (themeLoadCount == 0) { + filePath = GuideCreateUtils.openGuideFile("/com/fr/report/guide/template", "toggle_theme", ".frm"); + EastRegionContainerPane.getInstance().switchTabTo(EastRegionContainerPane.KEY_WIDGET_SETTINGS); + asyncThemeFetcher.shutdown(); + GuideManager.getInstance().getCurrentGuide().start(); + } + } + }); + } + return false; } @Override public void onEnd() { closeTemplateThemeUsingDialog(); GuideCreateUtils.deleteGuideFile(filePath); + filePath = null; + themeLoadCount = 0; + selectedThemeIndex = 0; } }) .getGuide(); @@ -118,7 +149,7 @@ public class ThemeToggleGuide { scene.registerLifecycle(new GuideSceneLifecycleAdaptor() { @Override public boolean prepared() { - String name = FormThemeConfig.getInstance().getThemeNames().get(4); + String name = FormThemeConfig.getInstance().getThemeNames().get(selectedThemeIndex); Component component = ComponentUtils.findComponentByName(themeDialog.getContentPane(), name); if (component instanceof TemplateThemeBlock) { scene.addClickTarget(component, ClickScene.ClickType.LEFT, true); From 4b744ae469a3ea4627e24ce1d489ef329ed771a1 Mon Sep 17 00:00:00 2001 From: kuangshuai Date: Tue, 12 Oct 2021 22:26:10 +0800 Subject: [PATCH 2/2] =?UTF-8?q?REPORT-60798=20=E5=9C=A8=E7=BA=BF=E8=8E=B7?= =?UTF-8?q?=E5=8F=96=E4=B8=BB=E9=A2=98=E5=8F=B3=E5=87=BB=E7=BB=84=E4=BB=B6?= =?UTF-8?q?=E5=8C=85=E5=90=8E=E5=BC=82=E5=B8=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../share/ui/block/PreviewWidgetBlock.java | 2 +- .../theme/DownloadComponentPackageGuide.java | 46 +++++++++++++++---- 2 files changed, 39 insertions(+), 9 deletions(-) diff --git a/designer-form/src/main/java/com/fr/design/mainframe/share/ui/block/PreviewWidgetBlock.java b/designer-form/src/main/java/com/fr/design/mainframe/share/ui/block/PreviewWidgetBlock.java index 58dee8945c..65a4294586 100644 --- a/designer-form/src/main/java/com/fr/design/mainframe/share/ui/block/PreviewWidgetBlock.java +++ b/designer-form/src/main/java/com/fr/design/mainframe/share/ui/block/PreviewWidgetBlock.java @@ -58,7 +58,7 @@ public abstract class PreviewWidgetBlock extends JPanel implements MouseListe return null; } - protected JPopupMenu getRightClickPopupMenu() { + public JPopupMenu getRightClickPopupMenu() { return rightClickPopupMenu; } diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/guide/creator/theme/DownloadComponentPackageGuide.java b/designer-realize/src/main/java/com/fr/design/mainframe/guide/creator/theme/DownloadComponentPackageGuide.java index d36506c94c..feb2f02fe2 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/guide/creator/theme/DownloadComponentPackageGuide.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/guide/creator/theme/DownloadComponentPackageGuide.java @@ -40,10 +40,13 @@ import javax.swing.JDialog; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JPopupMenu; +import javax.swing.JScrollPane; +import javax.swing.SwingUtilities; import java.awt.Component; import java.awt.Point; import java.awt.event.ContainerAdapter; import java.awt.event.ContainerEvent; +import java.util.List; import java.util.TimerTask; import java.util.UUID; @@ -170,12 +173,29 @@ public class DownloadComponentPackageGuide { scene.registerLifecycle(new GuideSceneLifecycleAdaptor() { @Override public boolean prepared() { - onlineWidgetPackageBlock = (OnlineWidgetPackageBlock) ComponentUtils.findComponentByClass(EastRegionContainerPane.getInstance(), OnlineWidgetPackageBlock.class); - if (onlineWidgetPackageBlock != null) { - scene.addClickTarget(onlineWidgetPackageBlock, ClickScene.ClickType.RIGHT); - scene.addBubbleTip(Toolkit.i18nText("Fine-Design_Guide_Scene_F002002_Tip_Right_Click_Package"), GuideTip.Direction.LEFT); + List components = ComponentUtils.findComponentsByClass(EastRegionContainerPane.getInstance(), OnlineWidgetPackageBlock.class); + for (int index = 0; index < components.size(); index++) { + OnlineWidgetPackageBlock block = (OnlineWidgetPackageBlock) components.get(index); + if (StringUtils.isNotEmpty(block.getWidget().getThemePath())) { + onlineWidgetPackageBlock = block; + break; + } } - return true; + if (onlineWidgetPackageBlock == null) { + GuideManager.getInstance().getCurrentGuide().terminate(); + } else { + JScrollPane scrollPane = getParentScrollPane(onlineWidgetPackageBlock); + scrollPane.getVerticalScrollBar().setValue(onlineWidgetPackageBlock.getY()); + SwingUtilities.invokeLater(new Runnable() { + @Override + public void run() { + scene.addClickTarget(onlineWidgetPackageBlock, ClickScene.ClickType.RIGHT); + scene.addBubbleTip(Toolkit.i18nText("Fine-Design_Guide_Scene_F002002_Tip_Right_Click_Package"), GuideTip.Direction.LEFT); + scene.showScene(); + } + }); + } + return false; } }); return scene; @@ -187,7 +207,7 @@ public class DownloadComponentPackageGuide { @Override public boolean prepared() { scene.addTarget(onlineWidgetPackageBlock); - JPopupMenu popupMenu = onlineWidgetPackageBlock.getComponentPopupMenu(); + JPopupMenu popupMenu = onlineWidgetPackageBlock.getRightClickPopupMenu(); Point location = getPopupMenuLocation(); scene.addCustomTarget( GuideCreateUtils.createTarget(popupMenu), @@ -204,7 +224,7 @@ public class DownloadComponentPackageGuide { scene.registerLifecycle(new GuideSceneLifecycleAdaptor() { @Override public boolean prepared() { - JPopupMenu popupMenu = onlineWidgetPackageBlock.getComponentPopupMenu(); + JPopupMenu popupMenu = onlineWidgetPackageBlock.getRightClickPopupMenu(); Point location = getPopupMenuLocation(); scene.addCustomTarget( GuideCreateUtils.createModalTarget(popupMenu), @@ -279,7 +299,7 @@ public class DownloadComponentPackageGuide { } private static Point getPopupMenuLocation() { - JPopupMenu popupMenu = onlineWidgetPackageBlock.getComponentPopupMenu(); + JPopupMenu popupMenu = onlineWidgetPackageBlock.getRightClickPopupMenu(); return new Point((onlineWidgetPackageBlock.getWidth() - popupMenu.getWidth()) / 2, (onlineWidgetPackageBlock.getHeight()- popupMenu.getHeight()) / 2); } @@ -289,4 +309,14 @@ public class DownloadComponentPackageGuide { } } + private static JScrollPane getParentScrollPane(Component component) { + if (component.getParent() == null) { + return null; + } + if (component.getParent() instanceof JScrollPane) { + return (JScrollPane) component.getParent(); + } + return getParentScrollPane(component.getParent()); + } + }