From fc3ff14763a58eb335c8374cd417f686379a23e6 Mon Sep 17 00:00:00 2001 From: kuangshuai Date: Mon, 11 Oct 2021 14:50:51 +0800 Subject: [PATCH] =?UTF-8?q?REPORT-60485=20=E8=A7=A3=E5=86=B3=E5=BC=95?= =?UTF-8?q?=E5=AF=BC=E9=A1=B5=E4=B8=AD=E6=A8=A1=E6=9D=BF=E4=BF=9D=E5=AD=98?= =?UTF-8?q?=E7=82=B9=E5=8F=96=E6=B6=88=E4=B9=9F=E6=98=BE=E7=A4=BA=E5=AE=8C?= =?UTF-8?q?=E6=88=90=E5=BC=B9=E7=AA=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fr/design/mainframe/guide/base/Guide.java | 13 -------- .../guide/scene/AbstractGuideScene.java | 5 +-- .../guide/scene/GuideSceneLifecycle.java | 7 +++-- .../scene/GuideSceneLifecycleAdaptor.java | 4 +-- .../guide/creator/GuideSceneHelper.java | 31 ++++++++++++++++--- .../layout/ChangeLayoutComponentGuide.java | 3 +- .../layout/UseLayoutAndComponentGuide.java | 9 ++++-- .../theme/DownloadComponentPackageGuide.java | 9 ++++-- .../guide/creator/theme/ThemeToggleGuide.java | 9 ++++-- 9 files changed, 55 insertions(+), 35 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/mainframe/guide/base/Guide.java b/designer-base/src/main/java/com/fr/design/mainframe/guide/base/Guide.java index 7f34950ad..5bc37889d 100644 --- a/designer-base/src/main/java/com/fr/design/mainframe/guide/base/Guide.java +++ b/designer-base/src/main/java/com/fr/design/mainframe/guide/base/Guide.java @@ -10,14 +10,10 @@ import javax.swing.SwingUtilities; import javax.swing.SwingWorker; public class Guide { - public enum GuideState { - NONE, DONE - } private String id; private String name; private String description; private String completeMessage; - private GuideState state; private GuideView guideView; private GuideLifecycle lifecycle; private boolean isComplete; @@ -31,7 +27,6 @@ public class Guide { this.id = id; this.name = name; this.description = description; - this.state = GuideState.NONE; } public String getId() { @@ -69,14 +64,6 @@ public class Guide { this.completeMessage = completeMessage; } - public GuideState getState() { - return state; - } - - public void setState(GuideState state) { - this.state = state; - } - public void setGuideView(GuideView guideView) { this.guideView = guideView; } diff --git a/designer-base/src/main/java/com/fr/design/mainframe/guide/scene/AbstractGuideScene.java b/designer-base/src/main/java/com/fr/design/mainframe/guide/scene/AbstractGuideScene.java index 55c7511f4..f0d74789d 100644 --- a/designer-base/src/main/java/com/fr/design/mainframe/guide/scene/AbstractGuideScene.java +++ b/designer-base/src/main/java/com/fr/design/mainframe/guide/scene/AbstractGuideScene.java @@ -321,8 +321,9 @@ public abstract class AbstractGuideScene extends JPanel implements GuideScene { public void complete() { container.getLayeredPane().remove(this); container.repaint(); - if (lifecycle != null) { - lifecycle.onComplete(); + + if (lifecycle != null && !lifecycle.onComplete()) { + return; } if (sceneFilter != null) { nextScene = sceneFilter.getFilterScene(); diff --git a/designer-base/src/main/java/com/fr/design/mainframe/guide/scene/GuideSceneLifecycle.java b/designer-base/src/main/java/com/fr/design/mainframe/guide/scene/GuideSceneLifecycle.java index 9b9e07278..36734a619 100644 --- a/designer-base/src/main/java/com/fr/design/mainframe/guide/scene/GuideSceneLifecycle.java +++ b/designer-base/src/main/java/com/fr/design/mainframe/guide/scene/GuideSceneLifecycle.java @@ -4,7 +4,7 @@ public interface GuideSceneLifecycle { /** * 引导场景准备工作 * 给 scene 添加 target 应该在这个阶段处理 - * @return + * @return 返回true自动执行scene, 返回false需要手动触发 */ boolean prepared(); @@ -14,7 +14,8 @@ public interface GuideSceneLifecycle { void onShow(); /** - * scene 完成后 + * scene 交互完成后处理 + * @return 返回true自动进入下一个scene,返回false需要手动触发 */ - void onComplete(); + boolean onComplete(); } diff --git a/designer-base/src/main/java/com/fr/design/mainframe/guide/scene/GuideSceneLifecycleAdaptor.java b/designer-base/src/main/java/com/fr/design/mainframe/guide/scene/GuideSceneLifecycleAdaptor.java index 06c40ad11..1ed99dca6 100644 --- a/designer-base/src/main/java/com/fr/design/mainframe/guide/scene/GuideSceneLifecycleAdaptor.java +++ b/designer-base/src/main/java/com/fr/design/mainframe/guide/scene/GuideSceneLifecycleAdaptor.java @@ -12,7 +12,7 @@ public abstract class GuideSceneLifecycleAdaptor implements GuideSceneLifecycle } @Override - public void onComplete() { - + public boolean onComplete() { + return true; } } diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/guide/creator/GuideSceneHelper.java b/designer-realize/src/main/java/com/fr/design/mainframe/guide/creator/GuideSceneHelper.java index ac366b064..ff80efcf9 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/guide/creator/GuideSceneHelper.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/guide/creator/GuideSceneHelper.java @@ -7,6 +7,7 @@ import com.fr.design.i18n.Toolkit; import com.fr.design.mainframe.CenterRegionContainerPane; import com.fr.design.mainframe.DesignerContext; import com.fr.design.mainframe.FormDesigner; +import com.fr.design.mainframe.JTemplate; import com.fr.design.mainframe.guide.base.GuideManager; import com.fr.design.mainframe.guide.scene.ClickScene; import com.fr.design.mainframe.guide.scene.DisplayScene; @@ -15,6 +16,8 @@ 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.utils.ComponentUtils; +import com.fr.design.worker.save.CallbackSaveWorker; +import com.fr.design.worker.save.EmptyCallBackSaveWorker; import java.awt.Window; @@ -43,9 +46,28 @@ public class GuideSceneHelper { } @Override - public void onComplete() { + public boolean onComplete() { GuideManager.getInstance().getCurrentGuide().getGuideView().dismissGuide(); - WebPreviewUtils.preview(DesignerContext.getDesignerFrame().getSelectedJTemplate()); + JTemplate jt = DesignerContext.getDesignerFrame().getSelectedJTemplate(); + jt.stopEditing(); + if (!jt.isSaved()) { + CallbackSaveWorker worker = jt.save2Env(); + if (worker instanceof EmptyCallBackSaveWorker) { + GuideManager.getInstance().getCurrentGuide().terminate(); + } else { + worker.addSuccessCallback(new Runnable() { + @Override + public void run() { + WebPreviewUtils.preview(jt); + GuideManager.getInstance().getCurrentGuide().complete(); + } + }); + } + worker.start(jt.getRuntimeId()); + return false; + } + WebPreviewUtils.preview(jt); + return true; } }); return scene; @@ -56,7 +78,6 @@ public class GuideSceneHelper { scene.registerLifecycle(new GuideSceneLifecycleAdaptor() { @Override public boolean prepared() { - XCreator xCreator = GuideCreateUtils.getXCreatorFormDesigner(widgetName); scene.addClickTarget(GuideCreateUtils.getFormDesigner(), GuideCreateUtils.getXCreatorBoundsRelative2FormDesigner(xCreator), ClickScene.ClickType.LEFT); scene.addBubbleTip(Toolkit.i18nText("Fine-Design_Guide_Scene_Base_Tip_Select_Widget"), BubbleTip.Direction.BOTTOM); @@ -64,12 +85,12 @@ public class GuideSceneHelper { } @Override - public void onComplete() { - super.onComplete(); + public boolean onComplete() { FormDesigner designer = GuideCreateUtils.getFormDesigner(); XCreator xCreator = GuideCreateUtils.getXCreatorFormDesigner(widgetName); designer.getSelectionModel().reset(); designer.getSelectionModel().selectACreator(xCreator); + return true; } }); return scene; diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/guide/creator/layout/ChangeLayoutComponentGuide.java b/designer-realize/src/main/java/com/fr/design/mainframe/guide/creator/layout/ChangeLayoutComponentGuide.java index c3c736ae1..335837196 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/guide/creator/layout/ChangeLayoutComponentGuide.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/guide/creator/layout/ChangeLayoutComponentGuide.java @@ -141,7 +141,7 @@ public class ChangeLayoutComponentGuide { } @Override - public void onComplete() { + public boolean onComplete() { FormDesigner formDesigner = GuideCreateUtils.getFormDesigner(); XCreator from = GuideCreateUtils.getXCreatorFormDesigner(TARGET_FROM_NAME); @@ -152,6 +152,7 @@ public class ChangeLayoutComponentGuide { GuideCreateUtils.addXCreatorToXLayoutContainer(from, (XLayoutContainer) GuideCreateUtils.getXCreatorFormDesigner("box1"), true); GuideCreateUtils.addXCreatorToXLayoutContainer(to, (XLayoutContainer) GuideCreateUtils.getXCreatorFormDesigner("box0"), true); + return true; } }); return scene; diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/guide/creator/layout/UseLayoutAndComponentGuide.java b/designer-realize/src/main/java/com/fr/design/mainframe/guide/creator/layout/UseLayoutAndComponentGuide.java index aae059f2c..6234ea790 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/guide/creator/layout/UseLayoutAndComponentGuide.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/guide/creator/layout/UseLayoutAndComponentGuide.java @@ -115,9 +115,10 @@ public class UseLayoutAndComponentGuide { } @Override - public void onComplete() { + public boolean onComplete() { newFormPane = new NewFormPane(); GuideCreateUtils.showDialogWithoutModal(newFormPane.getWindow()); + return true; } }); return scene; @@ -174,9 +175,10 @@ public class UseLayoutAndComponentGuide { } @Override - public void onComplete() { + public boolean onComplete() { newFormPane.createLayoutForm(); newFormPane.getWindow().dispose(); + return true; } }); return scene; @@ -209,11 +211,12 @@ public class UseLayoutAndComponentGuide { } @Override - public void onComplete() { + public boolean onComplete() { LocalWidgetBlock block = getLocalWidgetBlock(shareID); XCreator xCreator = block.transformXCreator(block); XOccupiedLayout xOccupiedLayout = getXOccupiedLayout(name); GuideCreateUtils.addXCreatorToXLayoutContainer(xCreator, xOccupiedLayout, false); + return true; } }); return scene; 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 330580356..d36506c94 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 @@ -157,8 +157,9 @@ public class DownloadComponentPackageGuide { } @Override - public void onComplete() { + public boolean onComplete() { FormWidgetDetailPane.getInstance().swich2Online(); + return true; } }); return scene; @@ -221,13 +222,14 @@ public class DownloadComponentPackageGuide { } @Override - public void onComplete() { + public boolean onComplete() { downLoadTheme(); themeConfirmDialog = GuideCreateUtils.showConfirmDialog( DesignerContext.getDesignerFrame(), Toolkit.i18nText("Fine-Design_Share_Apply_Suitable_Theme_Tip"), Toolkit.i18nText("Fine-Design_Basic_Confirm"), FineJOptionPane.OK_CANCEL_OPTION); + return true; } }); return scene; @@ -264,12 +266,13 @@ public class DownloadComponentPackageGuide { } @Override - public void onComplete() { + public boolean onComplete() { closeConfirmDialog(); JTemplate template = HistoryTemplateListCache.getInstance().getCurrentEditingTemplate(); TemplateThemeConfig config = template.getUsingTemplateThemeConfig(); TemplateTheme theme = config.cachedFetch(downloadThemeName); template.setTemplateTheme(theme); + return true; } }); return scene; 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 1d573cf2b..177fecc4b 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 @@ -86,8 +86,9 @@ public class ThemeToggleGuide { } @Override - public void onComplete() { + public boolean onComplete() { showTemplateThemeUsingDialog(); + return true; } }); @@ -142,8 +143,9 @@ public class ThemeToggleGuide { } @Override - public void onComplete() { + public boolean onComplete() { GuideCreateUtils.selectXCreatorByWidgetName(TARGET_XCREATOR_NAME); + return true; } }); return scene; @@ -179,10 +181,11 @@ public class ThemeToggleGuide { } @Override - public void onComplete() { + public boolean onComplete() { if (uiButtonGroup[0] != null) { uiButtonGroup[0].setSelectedIndex(0); } + return true; } }); return scene;