systemfigure.java
来自「mywork是rcp开发的很好的例子」· Java 代码 · 共 82 行
JAVA
82 行
package net.sf.freenote.uml.figure;
import net.sf.freenote.directedit.DirectEditable;
import org.eclipse.draw2d.ColorConstants;
import org.eclipse.draw2d.Figure;
import org.eclipse.draw2d.FigureUtilities;
import org.eclipse.draw2d.FreeformLayer;
import org.eclipse.draw2d.FreeformLayout;
import org.eclipse.draw2d.FreeformViewport;
import org.eclipse.draw2d.Graphics;
import org.eclipse.draw2d.GroupBoxBorder;
import org.eclipse.draw2d.IFigure;
import org.eclipse.draw2d.LabeledBorder;
import org.eclipse.draw2d.ScrollPane;
import org.eclipse.draw2d.StackLayout;
import org.eclipse.draw2d.geometry.Dimension;
import org.eclipse.draw2d.geometry.Insets;
import org.eclipse.draw2d.geometry.Rectangle;
/**
* 系统边界的视图
* @author levin
* @since 2008-2-3 下午10:18:08
*/
public class SystemFigure extends Figure implements DirectEditable{
private IFigure pane;
private LabeledBorder title;
public SystemFigure() {
title=new GroupBoxBorder(""){
public void paint(IFigure figure, Graphics g, Insets insets) {
tempRect.setBounds(getPaintRectangle(figure, insets));
Rectangle r = tempRect;
if (r.isEmpty())
return;
Dimension textExtents2 = getTextExtents(figure);
Rectangle textLoc = new Rectangle(r.getTopLeft(), textExtents2);
r.crop(new Insets(textExtents2.height / 2));
FigureUtilities.paintEtchedBorder(g, r);
//文字放在右边
textLoc.x += r.width - textExtents2.width - getInsets(figure).left;
g.setFont(getFont(figure));
g.setForegroundColor(getTextColor());
g.clipRect(textLoc);
g.fillText(getLabel(), textLoc.getTopLeft());
}
};
setBorder(title);
ScrollPane scrollpane = new ScrollPane();
pane = new FreeformLayer();
pane.setLayoutManager(new FreeformLayout());
setLayoutManager(new StackLayout());
add(scrollpane);
scrollpane.setViewport(new FreeformViewport());
scrollpane.setContents(pane);
setOpaque(true);
}
public IFigure getContentsPane(){
return pane;
}
public Dimension getPreferredSize(int w, int h) {
Dimension prefSize = super.getPreferredSize(w, h);
Dimension defaultSize = new Dimension(100,100);
prefSize.union(defaultSize);
return prefSize;
}
protected boolean useLocalCoordinates(){
return true;
}
@Override
public String getDesc() {
return title.getLabel();
}
@Override
public void setDesc(String desc) {
title.setLabel(desc);
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?