Browse Source

Pull request #6333: REPORT-61299 弹窗类面板高亮区域不加白边

Merge in DESIGN/design from ~TOMMY/design:final/11.0 to final/11.0

* commit '7ace9cb7ebff3d6f527f5d29fbdbcb63f20744d0':
  REPORT-60896 mac目录蒙层结束后有遗留透明块
  REPORT-61299 popupMenu的子组件高亮不需要弹窗
  REPORT-61299 弹窗类面板高亮区域不加白边
new-design
Tommy 3 years ago
parent
commit
225d19cb23
  1. 16
      designer-base/src/main/java/com/fr/design/mainframe/guide/base/Guide.java
  2. 47
      designer-base/src/main/java/com/fr/design/mainframe/guide/scene/AbstractGuideScene.java

16
designer-base/src/main/java/com/fr/design/mainframe/guide/base/Guide.java

@ -10,6 +10,8 @@ import com.fr.stable.StringUtils;
import javax.swing.JFrame; import javax.swing.JFrame;
import javax.swing.SwingUtilities; import javax.swing.SwingUtilities;
import javax.swing.SwingWorker; import javax.swing.SwingWorker;
import java.awt.event.HierarchyEvent;
import java.awt.event.HierarchyListener;
public class Guide { public class Guide {
private String id; private String id;
@ -101,7 +103,7 @@ public class Guide {
} }
GuideManager.getInstance().setCurrentGuide(this); GuideManager.getInstance().setCurrentGuide(this);
guideView.showLoading(); guideView.showLoading();
guideView.addHierarchyListener(loadingHierarchyListener);
new SwingWorker<Boolean, Void>() { new SwingWorker<Boolean, Void>() {
@Override @Override
protected Boolean doInBackground() { protected Boolean doInBackground() {
@ -135,6 +137,9 @@ public class Guide {
public void start() { public void start() {
guideView.hideLoading(); guideView.hideLoading();
}
private void startScene() {
if (scene != null) { if (scene != null) {
guideView.setScene(scene); guideView.setScene(scene);
guideView.showGuide(); guideView.showGuide();
@ -161,6 +166,7 @@ public class Guide {
if (lifecycle != null) { if (lifecycle != null) {
lifecycle.onTerminate(); lifecycle.onTerminate();
} }
guideView.removeHierarchyListener(loadingHierarchyListener);
end(); end();
} }
@ -186,4 +192,12 @@ public class Guide {
public void removeGuideLifecycle() { public void removeGuideLifecycle() {
this.lifecycle = null; this.lifecycle = null;
} }
private HierarchyListener loadingHierarchyListener = new HierarchyListener() {
@Override
public void hierarchyChanged(HierarchyEvent e) {
guideView.removeHierarchyListener(loadingHierarchyListener);
startScene();
}
};
} }

47
designer-base/src/main/java/com/fr/design/mainframe/guide/scene/AbstractGuideScene.java

@ -13,6 +13,7 @@ import javax.swing.BorderFactory;
import javax.swing.ImageIcon; import javax.swing.ImageIcon;
import javax.swing.JComponent; import javax.swing.JComponent;
import javax.swing.JPanel; import javax.swing.JPanel;
import javax.swing.JPopupMenu;
import javax.swing.SwingUtilities; import javax.swing.SwingUtilities;
import java.awt.AWTException; import java.awt.AWTException;
import java.awt.AlphaComposite; import java.awt.AlphaComposite;
@ -75,13 +76,16 @@ public abstract class AbstractGuideScene extends JPanel implements GuideScene {
if (component instanceof JComponent) { if (component instanceof JComponent) {
JComponent jComponent = (JComponent) component; JComponent jComponent = (JComponent) component;
image = ScreenImage.createImage(jComponent); image = ScreenImage.createImage(jComponent);
highlightList.add(getTargetComponentWithImage(image, rectangle, !(component.getParent() instanceof JPopupMenu)));
} else if (component instanceof Window) { } else if (component instanceof Window) {
image = ScreenImage.createImage(component); image = ScreenImage.createImage(component);
highlightList.add(getTargetComponentWithImage(image, rectangle, false));
} else { } else {
image = captureImage(component); image = captureImage(component);
highlightList.add(getTargetComponentWithImage(image, rectangle,true));
} }
targetList.add(component); targetList.add(component);
highlightList.add(getTargetComponentWithImage(image, rectangle));
return true; return true;
} catch (AWTException e) { } catch (AWTException e) {
e.printStackTrace(); e.printStackTrace();
@ -99,7 +103,7 @@ public abstract class AbstractGuideScene extends JPanel implements GuideScene {
try { try {
targetList.add(null); targetList.add(null);
BufferedImage image = captureImage(rectangle); BufferedImage image = captureImage(rectangle);
highlightList.add(getTargetComponentWithImage(image, rectangle)); highlightList.add(getTargetComponentWithImage(image, rectangle, true));
return true; return true;
} catch (AWTException e) { } catch (AWTException e) {
e.printStackTrace(); e.printStackTrace();
@ -133,7 +137,7 @@ public abstract class AbstractGuideScene extends JPanel implements GuideScene {
image = ScreenImage.createImage(component).getSubimage(origin.x, origin.y, origin.width, origin.height); image = ScreenImage.createImage(component).getSubimage(origin.x, origin.y, origin.width, origin.height);
} }
targetList.add(component); targetList.add(component);
highlightList.add(getTargetComponentWithImage(image, rectangle)); highlightList.add(getTargetComponentWithImage(image, rectangle, true));
return true; return true;
} catch (AWTException e) { } catch (AWTException e) {
e.printStackTrace(); e.printStackTrace();
@ -170,22 +174,29 @@ public abstract class AbstractGuideScene extends JPanel implements GuideScene {
return highlightList; return highlightList;
} }
private UILabel getTargetComponentWithImage(BufferedImage image, Rectangle rectangle) { private UILabel getTargetComponentWithImage(BufferedImage image, Rectangle rectangle, boolean showBorder) {
ImageIcon ic = new ImageIcon(image); ImageIcon ic = new ImageIcon(image);
UILabel label = new UILabel(ic){ UILabel label;
@Override if (showBorder) {
public Insets getInsets() { label = new UILabel(ic){
return DEFAULT_HIGHLIGHT_INSETS; @Override
} public Insets getInsets() {
}; return DEFAULT_HIGHLIGHT_INSETS;
label.setBackground(Color.WHITE); }
label.setOpaque(true); };
label.setBounds(new Rectangle( label.setBackground(Color.WHITE);
rectangle.x - DEFAULT_HIGHLIGHT_INSETS.left, label.setOpaque(true);
rectangle.y - DEFAULT_HIGHLIGHT_INSETS.top, label.setBounds(new Rectangle(
rectangle.width + DEFAULT_HIGHLIGHT_INSETS.left + DEFAULT_HIGHLIGHT_INSETS.right, rectangle.x - DEFAULT_HIGHLIGHT_INSETS.left,
rectangle.height + DEFAULT_HIGHLIGHT_INSETS.top + DEFAULT_HIGHLIGHT_INSETS.bottom rectangle.y - DEFAULT_HIGHLIGHT_INSETS.top,
)); rectangle.width + DEFAULT_HIGHLIGHT_INSETS.left + DEFAULT_HIGHLIGHT_INSETS.right,
rectangle.height + DEFAULT_HIGHLIGHT_INSETS.top + DEFAULT_HIGHLIGHT_INSETS.bottom
));
} else {
label = new UILabel(ic);
label.setBounds(rectangle);
}
return label; return label;
} }

Loading…
Cancel
Save