umlshapeeditpart.java

来自「mywork是rcp开发的很好的例子」· Java 代码 · 共 70 行

JAVA
70
字号
package net.sf.freenote.uml;

import net.sf.freenote.directedit.DirectEditable;
import net.sf.freenote.directedit.LabelCellEditorLocator;
import net.sf.freenote.directedit.ShapeDirectEditManager;
import net.sf.freenote.directedit.ShapeCellEditorLocator;
import net.sf.freenote.parts.ShapeEditPart;
import net.sf.freenote.uml.figure.ClassFigure;
import net.sf.freenote.uml.figure.UseCaseFigure;
import net.sf.freenote.uml.figure.UserRoleFigure;
import net.sf.freenote.uml.model.ClassShape;
import net.sf.freenote.uml.model.UseCaseShape;
import net.sf.freenote.uml.model.UserRoleShape;

import org.eclipse.draw2d.ChopboxAnchor;
import org.eclipse.draw2d.ConnectionAnchor;
import org.eclipse.draw2d.EllipseAnchor;
import org.eclipse.draw2d.IFigure;
import org.eclipse.gef.Request;
import org.eclipse.gef.RequestConstants;
/**
 * umlshape的控制器
 * @author levin
 * @since 2008-1-29 下午02:49:45
 */
public class UmlShapeEditPart extends ShapeEditPart {
	@Override
	protected IFigure createFigureForModel() {
		IFigure figure=null;
		if(getModel() instanceof UseCaseShape){
			figure=new UseCaseFigure();
		}else if(getModel() instanceof UserRoleShape){
			figure=new UserRoleFigure();
		}else if(getModel() instanceof ClassShape){
			figure=new ClassFigure();
		}
		if(figure instanceof DirectEditable && getModel() instanceof DirectEditable)
			((DirectEditable)figure).setDesc(((DirectEditable)getModel()).getDesc());
		return figure;
	}

	@Override
	protected ConnectionAnchor getConnectionAnchor() {
		if (anchor == null){
			if(getModel() instanceof UseCaseShape)
				anchor = new EllipseAnchor(getFigure());
			if(getModel() instanceof UserRoleShape)
				anchor = new ChopboxAnchor(getFigure());
			if(getModel() instanceof ClassShape)
				anchor = new ChopboxAnchor(getFigure());
		}
		return anchor;	
	}

	@Override
	public void performRequest(Request req) {
		if (req.getType() == RequestConstants.REQ_DIRECT_EDIT){
			if(getModel() instanceof UseCaseShape){
				new ShapeDirectEditManager(this,new ShapeCellEditorLocator(getFigure(),true)).show();
			}
			if(getModel() instanceof UserRoleShape){
				new ShapeDirectEditManager(this,new LabelCellEditorLocator(((UserRoleFigure)getFigure()).getDescLabel())).show();
			}
			if(getModel() instanceof ClassShape){
				new ShapeDirectEditManager(this,new ShapeCellEditorLocator(getFigure())).show();
			}
		}
	}
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?