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 + -
显示快捷键?