diff --git a/designer-base/src/main/java/com/fr/design/mainframe/JDashboard.java b/designer-base/src/main/java/com/fr/design/mainframe/JDashboard.java index d2b45f4ea1..e4e4e9be93 100644 --- a/designer-base/src/main/java/com/fr/design/mainframe/JDashboard.java +++ b/designer-base/src/main/java/com/fr/design/mainframe/JDashboard.java @@ -1,5 +1,9 @@ package com.fr.design.mainframe; +import com.fr.report.worksheet.FormElementCase; + +import java.awt.Rectangle; + /** * @author Starryi * @version 1.0 @@ -7,4 +11,6 @@ package com.fr.design.mainframe; */ public interface JDashboard { void switchToDashBoardEditor(); + + Rectangle getElementCaseRectangle(FormElementCase elementCase); } diff --git a/designer-base/src/main/java/com/fr/design/utils/ColorUtils.java b/designer-base/src/main/java/com/fr/design/utils/ColorUtils.java index 739d394720..7c0daa111f 100644 --- a/designer-base/src/main/java/com/fr/design/utils/ColorUtils.java +++ b/designer-base/src/main/java/com/fr/design/utils/ColorUtils.java @@ -27,4 +27,15 @@ public class ColorUtils { } } } + + public static boolean isDarkColor(Color color) { + if(color == null) { + return false; + } + int red = color.getRed(); + int green = color.getGreen(); + int blue = color.getBlue(); + int greyLevel = (int)(red * 0.299 + green * 0.587 + blue * 0.114); + return greyLevel < 192; + } } diff --git a/designer-form/src/main/java/com/fr/design/mainframe/JForm.java b/designer-form/src/main/java/com/fr/design/mainframe/JForm.java index b58932c8a7..a142ee297c 100644 --- a/designer-form/src/main/java/com/fr/design/mainframe/JForm.java +++ b/designer-form/src/main/java/com/fr/design/mainframe/JForm.java @@ -41,6 +41,7 @@ import com.fr.design.event.TargetModifiedEvent; import com.fr.design.event.TargetModifiedListener; import com.fr.design.file.HistoryTemplateListCache; import com.fr.design.fit.FormFitAttrAction; +import com.fr.design.fit.common.FormDesignerUtil; import com.fr.design.fun.PreviewProvider; import com.fr.design.fun.PropertyItemPaneProvider; import com.fr.design.gui.frpane.HyperlinkGroupPane; @@ -109,12 +110,7 @@ import javax.swing.JComponent; import javax.swing.JPanel; import javax.swing.SwingConstants; import javax.swing.tree.TreePath; -import java.awt.BorderLayout; -import java.awt.CardLayout; -import java.awt.Color; -import java.awt.Component; -import java.awt.Dimension; -import java.awt.Font; +import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.image.BufferedImage; @@ -1307,4 +1303,25 @@ public class JForm extends JTemplate implements BaseJForm template = HistoryTemplateListCache.getInstance().getCurrentEditingTemplate(); - if (!(template instanceof JForm)) { - return rectangle; + if (!(template instanceof JDashboard)) { + return new Rectangle(); } - - FormDesigner designer = ((JForm) template).getFormDesign(); - if (designer == null) { - return rectangle; + try { + return ((JDashboard)template).getElementCaseRectangle((FormElementCase)elementCase); + } catch (Throwable e) { + // 兼容旧插件 + return new Rectangle(); } - XElementCase xElementCase = FormDesignerUtil.getXelementCase(designer.getRootComponent(), (FormElementCase) elementCase); - if (xElementCase != null) { - rectangle.setBounds(xElementCase.getBounds()); - - //减去内边距的宽和高 - Insets insets = xElementCase.getInsets(); - rectangle.width -= insets.left + insets.right; - rectangle.height -= insets.top + insets.bottom; - - } - return rectangle; } diff --git a/designer-realize/src/main/java/com/fr/grid/GridUI.java b/designer-realize/src/main/java/com/fr/grid/GridUI.java index 6234acc953..7ae22a51fa 100644 --- a/designer-realize/src/main/java/com/fr/grid/GridUI.java +++ b/designer-realize/src/main/java/com/fr/grid/GridUI.java @@ -18,6 +18,7 @@ import com.fr.design.mainframe.DesignerUIModeConfig; import com.fr.design.mainframe.ElementCasePane; import com.fr.design.mainframe.JTemplate; import com.fr.design.roleAuthority.ReportAndFSManagePane; +import com.fr.design.utils.ColorUtils; import com.fr.design.utils.gui.AdjustWorkBookDefaultStyleUtils; import com.fr.general.Background; import com.fr.general.ComparatorUtils; @@ -1196,13 +1197,13 @@ public class GridUI extends ComponentUI { } //绘制吸附辅助线 - paintAdsorbLines(g2d, grid); + paintAdsorbLines(g2d, grid, elementCase); grid.ajustEditorComponentBounds(); // refresh size } //绘制吸附辅助线 - private void paintAdsorbLines(Graphics2D g2d, Grid grid) { + private void paintAdsorbLines(Graphics2D g2d, Grid grid, TemplateElementCase elementcase) { int verticalValue = grid.getVerticalValue(); int horizontalValue = grid.getHorizontalValue(); if (grid.getAdsorbWidth() <= 0 || grid.getAdsorbHeight() <= 0) { @@ -1212,13 +1213,18 @@ public class GridUI extends ComponentUI { - columnWidthList.getRangeValue(0, horizontalValue).toPixI(resolution)); int height = (int) (grid.getAdsorbHeight() * (resolution * 1.0D / DesignerUIModeConfig.getInstance().getScreenResolution()) - rowHeightList.getRangeValue(0, verticalValue).toPixI(resolution)); - drawBoundsLine(g2d, width, height); + drawBoundsLine(g2d, width, height, elementcase); } - private void drawBoundsLine(Graphics2D g2d, int width, int height) { + private void drawBoundsLine(Graphics2D g2d, int width, int height, TemplateElementCase elementcase) { Paint oldPaint = g2d.getPaint(); Stroke oldStroke = g2d.getStroke(); - g2d.setPaint(Color.black); + Color backgroundColor = AdjustWorkBookDefaultStyleUtils.adjustBack(Color.WHITE); + if(ColorUtils.isDarkColor(backgroundColor)) { + g2d.setPaint(Color.white); + } else { + g2d.setPaint(Color.black); + } g2d.setStroke(GraphDrawHelper.getStroke(Constants.LINE_DASH_DOT)); g2d.drawLine(0, height, width, height); g2d.drawLine(width, 0, width, height);