|
|
@ -1,14 +1,27 @@ |
|
|
|
package com.fr.design.gui.icontainer; |
|
|
|
package com.fr.design.gui.icontainer; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import com.fr.base.svg.SVGLoader; |
|
|
|
|
|
|
|
import com.fr.base.svg.SystemScaleUtils; |
|
|
|
import com.fr.base.vcs.DesignerMode; |
|
|
|
import com.fr.base.vcs.DesignerMode; |
|
|
|
import com.fr.design.constants.UIConstants; |
|
|
|
import com.fr.design.constants.UIConstants; |
|
|
|
import com.fr.design.mainframe.DesignerContext; |
|
|
|
import com.fr.design.mainframe.DesignerContext; |
|
|
|
import com.fr.design.utils.SvgPaintUtils; |
|
|
|
import com.fr.design.utils.SvgPaintUtils; |
|
|
|
import com.fr.stable.Constants; |
|
|
|
|
|
|
|
import com.fr.design.utils.gui.GUICoreUtils; |
|
|
|
import com.fr.design.utils.gui.GUICoreUtils; |
|
|
|
|
|
|
|
import com.fr.stable.Constants; |
|
|
|
|
|
|
|
|
|
|
|
import javax.swing.*; |
|
|
|
import javax.swing.JComponent; |
|
|
|
import java.awt.*; |
|
|
|
import javax.swing.JFrame; |
|
|
|
|
|
|
|
import javax.swing.JPanel; |
|
|
|
|
|
|
|
import java.awt.BorderLayout; |
|
|
|
|
|
|
|
import java.awt.Color; |
|
|
|
|
|
|
|
import java.awt.Component; |
|
|
|
|
|
|
|
import java.awt.Container; |
|
|
|
|
|
|
|
import java.awt.Cursor; |
|
|
|
|
|
|
|
import java.awt.Dimension; |
|
|
|
|
|
|
|
import java.awt.Graphics; |
|
|
|
|
|
|
|
import java.awt.Graphics2D; |
|
|
|
|
|
|
|
import java.awt.Image; |
|
|
|
|
|
|
|
import java.awt.LayoutManager; |
|
|
|
import java.awt.event.MouseAdapter; |
|
|
|
import java.awt.event.MouseAdapter; |
|
|
|
import java.awt.event.MouseEvent; |
|
|
|
import java.awt.event.MouseEvent; |
|
|
|
import java.awt.event.MouseMotionListener; |
|
|
|
import java.awt.event.MouseMotionListener; |
|
|
@ -16,6 +29,8 @@ import java.awt.event.MouseMotionListener; |
|
|
|
public class UIResizableContainer extends JPanel { |
|
|
|
public class UIResizableContainer extends JPanel { |
|
|
|
private static final long serialVersionUID = 1854340560790476907L; |
|
|
|
private static final long serialVersionUID = 1854340560790476907L; |
|
|
|
private static final int MAX_PARA_HEIGHT = 240; |
|
|
|
private static final int MAX_PARA_HEIGHT = 240; |
|
|
|
|
|
|
|
private final boolean HI_DPI_SUPPORT = SystemScaleUtils.isJreHiDPIEnabled(); |
|
|
|
|
|
|
|
|
|
|
|
private int containerWidth = 240; |
|
|
|
private int containerWidth = 240; |
|
|
|
private int preferredWidth = 240; |
|
|
|
private int preferredWidth = 240; |
|
|
|
private int toolPaneY = 300; |
|
|
|
private int toolPaneY = 300; |
|
|
@ -412,9 +427,13 @@ public class UIResizableContainer extends JPanel { |
|
|
|
Image downButton = (downModel == UIConstants.MODEL_NORMAL ? UIConstants.DRAG_DOWN_NORMAL : UIConstants.DRAG_DOWN_PRESS); |
|
|
|
Image downButton = (downModel == UIConstants.MODEL_NORMAL ? UIConstants.DRAG_DOWN_NORMAL : UIConstants.DRAG_DOWN_PRESS); |
|
|
|
g.drawImage(UIConstants.DRAG_BAR_LIGHT, 0, 0, getWidth(), getHeight(), null); |
|
|
|
g.drawImage(UIConstants.DRAG_BAR_LIGHT, 0, 0, getWidth(), getHeight(), null); |
|
|
|
SvgPaintUtils.beforePaint((Graphics2D) g); |
|
|
|
SvgPaintUtils.beforePaint((Graphics2D) g); |
|
|
|
g.drawImage(UIConstants.DRAG_LINE, (getWidth() - toolPaneHeight) / 2, 3, null); |
|
|
|
//如果环境支持高清化,在调整缩放比例时绘制svg会影响到位置的变化,若图标无确定裁剪位置,则需要进行调整
|
|
|
|
g.drawImage(upButton, ARROW_MARGIN, 1, null); |
|
|
|
int dragLineX = HI_DPI_SUPPORT ? (int) ((getWidth() - toolPaneHeight) / 2 * SVGLoader.SYSTEM_SCALE) : (getWidth() - toolPaneHeight) / 2; |
|
|
|
g.drawImage(downButton, getWidth() - toolPaneHeight - ARROW_MARGIN, 1, null); |
|
|
|
int dragLineY = HI_DPI_SUPPORT ? (int) (3 * SVGLoader.SYSTEM_SCALE) : 3; |
|
|
|
|
|
|
|
int downButtonX = HI_DPI_SUPPORT ? (int) ((getWidth() - toolPaneHeight - ARROW_MARGIN) * SVGLoader.SYSTEM_SCALE) : (getWidth() - toolPaneHeight - ARROW_MARGIN); |
|
|
|
|
|
|
|
g.drawImage(UIConstants.DRAG_LINE, dragLineX, dragLineY, null); |
|
|
|
|
|
|
|
g.drawImage(upButton, ARROW_MARGIN, 0, null); |
|
|
|
|
|
|
|
g.drawImage(downButton, downButtonX, 0, null); |
|
|
|
SvgPaintUtils.afterPaint((Graphics2D) g); |
|
|
|
SvgPaintUtils.afterPaint((Graphics2D) g); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
@ -512,7 +531,12 @@ public class UIResizableContainer extends JPanel { |
|
|
|
button = UIConstants.DRAG_LEFT_PRESS; |
|
|
|
button = UIConstants.DRAG_LEFT_PRESS; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
g.drawImage(button, -1, ARROW_MARGIN_VERTICAL, this); |
|
|
|
SvgPaintUtils.beforePaint((Graphics2D) g); |
|
|
|
|
|
|
|
//如果环境支持高清化,在调整缩放比例时绘制svg会影响到位置的变化,若图标无确定裁剪位置,则需要进行调整
|
|
|
|
|
|
|
|
int x = HI_DPI_SUPPORT ? (int) (-6 * SVGLoader.SYSTEM_SCALE) : -6; |
|
|
|
|
|
|
|
int y = HI_DPI_SUPPORT ? (int) (ARROW_MARGIN_VERTICAL * SVGLoader.SYSTEM_SCALE) : ARROW_MARGIN_VERTICAL; |
|
|
|
|
|
|
|
g.drawImage(button, x, y, this); |
|
|
|
|
|
|
|
SvgPaintUtils.afterPaint((Graphics2D) g); |
|
|
|
} else { |
|
|
|
} else { |
|
|
|
g.drawImage(UIConstants.DRAG_BAR_LIGHT, 0, 0, toolPaneHeight, getHeight(), null); |
|
|
|
g.drawImage(UIConstants.DRAG_BAR_LIGHT, 0, 0, toolPaneHeight, getHeight(), null); |
|
|
|
if (containerWidth == toolPaneHeight) { |
|
|
|
if (containerWidth == toolPaneHeight) { |
|
|
@ -528,7 +552,8 @@ public class UIResizableContainer extends JPanel { |
|
|
|
button = UIConstants.DRAG_RIGHT_PRESS; |
|
|
|
button = UIConstants.DRAG_RIGHT_PRESS; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
g.drawImage(button, 2, ARROW_MARGIN_VERTICAL, this); |
|
|
|
int x = HI_DPI_SUPPORT ? (int) (10 * SVGLoader.SYSTEM_SCALE) : 10; |
|
|
|
|
|
|
|
g.drawImage(button, x, ARROW_MARGIN_VERTICAL, this); |
|
|
|
} |
|
|
|
} |
|
|
|
if (isLeftRightDragEnabled) { |
|
|
|
if (isLeftRightDragEnabled) { |
|
|
|
g.drawImage(UIConstants.DRAG_DOT_VERTICAL, 2, getHeight() / 2, 5, toolPaneHeight, null); |
|
|
|
g.drawImage(UIConstants.DRAG_DOT_VERTICAL, 2, getHeight() / 2, 5, toolPaneHeight, null); |
|
|
|