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.SwingUtilities;
import javax.swing.SwingWorker;
import java.awt.event.HierarchyEvent;
import java.awt.event.HierarchyListener;
public class Guide {
private String id;
@ -101,7 +103,7 @@ public class Guide {
}
GuideManager.getInstance().setCurrentGuide(this);
guideView.showLoading();
guideView.addHierarchyListener(loadingHierarchyListener);
new SwingWorker<Boolean, Void>() {
@Override
protected Boolean doInBackground() {
@ -135,6 +137,9 @@ public class Guide {
public void start() {
guideView.hideLoading();
}
private void startScene() {
if (scene != null) {
guideView.setScene(scene);
guideView.showGuide();
@ -161,6 +166,7 @@ public class Guide {
if (lifecycle != null) {
lifecycle.onTerminate();
}
guideView.removeHierarchyListener(loadingHierarchyListener);
end();
}
@ -186,4 +192,12 @@ public class Guide {
public void removeGuideLifecycle() {
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.JComponent;
import javax.swing.JPanel;
import javax.swing.JPopupMenu;
import javax.swing.SwingUtilities;
import java.awt.AWTException;
import java.awt.AlphaComposite;
@ -75,13 +76,16 @@ public abstract class AbstractGuideScene extends JPanel implements GuideScene {
if (component instanceof JComponent) {
JComponent jComponent = (JComponent) component;
image = ScreenImage.createImage(jComponent);
highlightList.add(getTargetComponentWithImage(image, rectangle, !(component.getParent() instanceof JPopupMenu)));
} else if (component instanceof Window) {
image = ScreenImage.createImage(component);
highlightList.add(getTargetComponentWithImage(image, rectangle, false));
} else {
image = captureImage(component);
highlightList.add(getTargetComponentWithImage(image, rectangle,true));
}
targetList.add(component);
highlightList.add(getTargetComponentWithImage(image, rectangle));
return true;
} catch (AWTException e) {
e.printStackTrace();
@ -99,7 +103,7 @@ public abstract class AbstractGuideScene extends JPanel implements GuideScene {
try {
targetList.add(null);
BufferedImage image = captureImage(rectangle);
highlightList.add(getTargetComponentWithImage(image, rectangle));
highlightList.add(getTargetComponentWithImage(image, rectangle, true));
return true;
} catch (AWTException e) {
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);
}
targetList.add(component);
highlightList.add(getTargetComponentWithImage(image, rectangle));
highlightList.add(getTargetComponentWithImage(image, rectangle, true));
return true;
} catch (AWTException e) {
e.printStackTrace();
@ -170,22 +174,29 @@ public abstract class AbstractGuideScene extends JPanel implements GuideScene {
return highlightList;
}
private UILabel getTargetComponentWithImage(BufferedImage image, Rectangle rectangle) {
private UILabel getTargetComponentWithImage(BufferedImage image, Rectangle rectangle, boolean showBorder) {
ImageIcon ic = new ImageIcon(image);
UILabel label = new UILabel(ic){
@Override
public Insets getInsets() {
return DEFAULT_HIGHLIGHT_INSETS;
}
};
label.setBackground(Color.WHITE);
label.setOpaque(true);
label.setBounds(new Rectangle(
rectangle.x - DEFAULT_HIGHLIGHT_INSETS.left,
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
));
UILabel label;
if (showBorder) {
label = new UILabel(ic){
@Override
public Insets getInsets() {
return DEFAULT_HIGHLIGHT_INSETS;
}
};
label.setBackground(Color.WHITE);
label.setOpaque(true);
label.setBounds(new Rectangle(
rectangle.x - DEFAULT_HIGHLIGHT_INSETS.left,
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;
}

Loading…
Cancel
Save