You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
93 lines
2.9 KiB
93 lines
2.9 KiB
package com.fr.design.designer.beans.painters; |
|
|
|
import java.awt.Color; |
|
import java.awt.Graphics; |
|
import java.awt.Graphics2D; |
|
import java.awt.Point; |
|
import java.awt.Rectangle; |
|
import java.awt.Stroke; |
|
|
|
import com.fr.design.designer.beans.HoverPainter; |
|
import com.fr.design.designer.creator.XCreator; |
|
import com.fr.design.designer.creator.XLayoutContainer; |
|
import com.fr.design.form.util.XCreatorConstants; |
|
import com.fr.general.Inter; |
|
|
|
public abstract class AbstractPainter implements HoverPainter { |
|
|
|
protected Point hotspot; |
|
protected Rectangle hotspot_bounds; |
|
protected XLayoutContainer container; |
|
protected XCreator creator; |
|
|
|
/** |
|
* 构造函数 |
|
* @param container 容器 |
|
*/ |
|
public AbstractPainter(XLayoutContainer container) { |
|
this.container = container; |
|
} |
|
|
|
@Override |
|
public void setHotspot(Point p) { |
|
hotspot = p; |
|
} |
|
|
|
/** |
|
* 画初始区域 |
|
* @param g 画图类 |
|
* @param startX 起始x位置 |
|
* @param startY 起始y位置 |
|
*/ |
|
public void paint(Graphics g, int startX, int startY) { |
|
if(hotspot_bounds != null){ |
|
drawHotspot(g, hotspot_bounds.x, hotspot_bounds.y, hotspot_bounds.width, hotspot_bounds.height, Color.lightGray, true, false); |
|
} |
|
} |
|
|
|
/** |
|
* 设置边界 |
|
* @param rect 位置 |
|
*/ |
|
@Override |
|
public void setRenderingBounds(Rectangle rect) { |
|
hotspot_bounds = rect; |
|
} |
|
|
|
@Override |
|
public void setCreator(XCreator component) { |
|
this.creator = component; |
|
} |
|
|
|
protected void drawHotspot(Graphics g, int x, int y, int width, int height, boolean accept) { |
|
Color bColor = accept ? XCreatorConstants.LAYOUT_HOTSPOT_COLOR : XCreatorConstants.LAYOUT_FORBIDDEN_COLOR; |
|
drawHotspot(g, x, y, width, height, bColor, accept, false); |
|
} |
|
|
|
/** |
|
* 自适应布局那边渲染提示,要画整个背景,不是画边框 |
|
*/ |
|
protected void drawRegionBackground(Graphics g, int x, int y, int width, int height, Color bColor, boolean accept) { |
|
drawHotspot(g, x, y, width, height, bColor, accept, true); |
|
} |
|
|
|
protected void drawHotspot(Graphics g, int x, int y, int width, int height, Color bColor, boolean accept, boolean drawBackground) { |
|
Graphics2D g2d = (Graphics2D) g; |
|
Color color = g2d.getColor(); |
|
Stroke backup = g2d.getStroke(); |
|
// 设置线条的样式 |
|
g2d.setStroke(XCreatorConstants.STROKE); |
|
g2d.setColor(bColor); |
|
if (!accept) { |
|
g2d.drawString(Inter.getLocText("Cannot-Add_To_This_Area") + "!", x + width / 3, y + height / 2); |
|
} else if (drawBackground) { |
|
g2d.fillRect(x, y, width, height); |
|
} else { |
|
g2d.drawRect(x, y, width, height); |
|
} |
|
g2d.setStroke(backup); |
|
g2d.setColor(color); |
|
} |
|
|
|
|
|
} |