From a32e451dee863a236cba3686e611015cd7208d36 Mon Sep 17 00:00:00 2001 From: kuangshuai Date: Mon, 11 Oct 2021 10:58:44 +0800 Subject: [PATCH] =?UTF-8?q?REPORT-60513=20=E5=8A=9F=E8=83=BD=E5=85=A5?= =?UTF-8?q?=E5=8F=A3=E6=8F=90=E7=A4=BA=E5=A2=9E=E5=8A=A0=E9=81=AE=E7=BD=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mainframe/guide/ui/BubbleHintDialog.java | 47 -------------- .../mainframe/guide/entry/GuideEntryHint.java | 63 +++++++++++++++++++ .../mainframe/guide/entry/GuideEntryPane.java | 7 +-- 3 files changed, 64 insertions(+), 53 deletions(-) delete mode 100644 designer-base/src/main/java/com/fr/design/mainframe/guide/ui/BubbleHintDialog.java create mode 100644 designer-realize/src/main/java/com/fr/design/mainframe/guide/entry/GuideEntryHint.java diff --git a/designer-base/src/main/java/com/fr/design/mainframe/guide/ui/BubbleHintDialog.java b/designer-base/src/main/java/com/fr/design/mainframe/guide/ui/BubbleHintDialog.java deleted file mode 100644 index 5a7b55c81..000000000 --- a/designer-base/src/main/java/com/fr/design/mainframe/guide/ui/BubbleHintDialog.java +++ /dev/null @@ -1,47 +0,0 @@ -package com.fr.design.mainframe.guide.ui; - -import com.fr.design.mainframe.DesignerContext; -import com.fr.design.mainframe.DesignerFrame; -import com.fr.design.mainframe.guide.collect.GuideCollector; - -import javax.swing.JDialog; -import java.awt.Color; -import java.awt.Point; -import java.awt.Window; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; - -public class BubbleHintDialog extends JDialog { - private static final int DIALOG_WIDTH = 220; - private static final int DIALOG_HEIGHT = 140; - private static BubbleHintDialog dialog; - - public static BubbleHintDialog getInstance(){ - if (dialog == null) { - dialog = new BubbleHintDialog(DesignerContext.getDesignerFrame()); - } - return dialog; - } - - public BubbleHintDialog(Window parent) { - super(parent); - setUndecorated(true); - this.setBackground(new Color(0,0,0,0)); - setSize(DIALOG_WIDTH, DIALOG_HEIGHT); - BubbleHint bubbleHint = new BubbleHint(); - bubbleHint.addConfirmAction(new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - setVisible(false); - dispose(); - GuideCollector.getInstance().setShowHint(true); - } - }); - this.setContentPane(bubbleHint); - } - - public void showDialog(Point location) { - dialog.setLocation(location); - dialog.setVisible(true); - } -} diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/guide/entry/GuideEntryHint.java b/designer-realize/src/main/java/com/fr/design/mainframe/guide/entry/GuideEntryHint.java new file mode 100644 index 000000000..c1e361ec2 --- /dev/null +++ b/designer-realize/src/main/java/com/fr/design/mainframe/guide/entry/GuideEntryHint.java @@ -0,0 +1,63 @@ +package com.fr.design.mainframe.guide.entry; + +import com.fr.design.mainframe.DesignerContext; +import com.fr.design.mainframe.guide.base.GuideView; +import com.fr.design.mainframe.guide.collect.GuideCollector; +import com.fr.design.mainframe.guide.scene.AbstractGuideScene; +import com.fr.design.mainframe.guide.scene.GuideSceneLifecycleAdaptor; +import com.fr.design.mainframe.guide.ui.BubbleHint; + +import javax.swing.SwingUtilities; +import java.awt.Dimension; +import java.awt.Point; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; + +public class GuideEntryHint { + private static GuideEntryHint hint; + private GuideView guideView; + + public static GuideEntryHint getInstance() { + if (hint == null) { + hint = new GuideEntryHint(); + } + return hint; + } + + public GuideEntryHint() { + AbstractGuideScene scene = new AbstractGuideScene(){}; + BubbleHint bubbleHint = new BubbleHint(); + guideView = new GuideView(DesignerContext.getDesignerFrame()); + + bubbleHint.addConfirmAction(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + GuideCollector.getInstance().setShowHint(true); + guideView.dismissGuide(); + } + }); + + scene.registerLifecycle(new GuideSceneLifecycleAdaptor() { + @Override + public boolean prepared() { + scene.addTarget(GuideEntryPane.getGuideEntryPane()); + scene.addCustomTarget(bubbleHint, getBubbleLocation()); + return true; + } + }); + + guideView.setScene(scene); + } + + public void show() { + if (!guideView.isVisible()) { + guideView.showGuide(); + } + } + + private Point getBubbleLocation() { + Point point = SwingUtilities.convertPoint(GuideEntryPane.getGuideEntryPane(),0,0, guideView.getRootPane()); + Dimension size = GuideEntryPane.getGuideEntryPane().getSize(); + return new Point(point.x - 187,point.y + size.height); + } +} diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/guide/entry/GuideEntryPane.java b/designer-realize/src/main/java/com/fr/design/mainframe/guide/entry/GuideEntryPane.java index ce43fef6e..9353570a3 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/guide/entry/GuideEntryPane.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/guide/entry/GuideEntryPane.java @@ -5,7 +5,6 @@ import com.fr.design.dialog.BasicPane; import com.fr.design.gui.ibutton.UIButton; import com.fr.design.i18n.Toolkit; import com.fr.design.mainframe.guide.collect.GuideCollector; -import com.fr.design.mainframe.guide.ui.BubbleHintDialog; import com.fr.design.mainframe.guide.ui.GuideManageDialog; import com.fr.general.IOUtils; @@ -13,7 +12,6 @@ import javax.swing.event.AncestorEvent; import javax.swing.event.AncestorListener; import java.awt.BorderLayout; import java.awt.Dimension; -import java.awt.Point; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; @@ -53,10 +51,7 @@ public class GuideEntryPane extends BasicPane { @Override public void ancestorAdded(AncestorEvent event) { if (!GuideCollector.getInstance().isShowHint()) { - BubbleHintDialog dialog = BubbleHintDialog.getInstance(); - Point point = getLocationOnScreen(); - Dimension size = getSize(); - dialog.showDialog(new Point(point.x - 187,point.y + size.height)); + GuideEntryHint.getInstance().show(); } }