1、根据EditPart得到标记模型:editpart.getModel();
2、根据EditPart得到语义模型:((org.eclipse.gmf.runtime.notation.View) editpart.getModel()).getElement();
3、创建图形后禁止改变图形大小:在相应的EditPart中添加或修改代码
/**
* @generated NOT
*/
public EditPolicy getPrimaryDragEditPolicy() {
EditPolicy result = super.getPrimaryDragEditPolicy();
if (result instanceof ResizableEditPolicy) {
ResizableEditPolicy ep = (ResizableEditPolicy) result;
ep.setResizeDirections(PositionConstants.NONE);//创建后不能改变大小
}
return result;
}
4、创建图形后禁止改变图形位置:在相应的EditPart添加或修改代码
/**
* @generated NOT
*/
public EditPolicy getPrimaryDragEditPolicy() {
EditPolicy result = super.getPrimaryDragEditPolicy();
if (result instanceof ResizableEditPolicy) {
ResizableEditPolicy ep = (ResizableEditPolicy) result;
ep.setDragAllowed(false);// 创建后不能拖动
}
return result;
}
5、在GMF项目中获取当前Display或者Shell:PlatformUI.getWorkbench().getDisplay().getActiveShell()
6、为图形添加双击事件:在图形对应的EditPart中重写performRequest(Request req)方法,当req.getType().equals(REQ_OPEN)时表明是双击事件。
public void performRequest(Request req) {
if (req.getType().equals(REQ_OPEN)) {
//说明是双击事件,在这里添加操作
}
super.performRequest(req);
}
7、获得运行时的工作目录:Platform.getInstanceLocation().getURL().getPath()
8、使用扩展点为图形添加右击菜单:http://my.oschina.net/plumsoft/blog/32958
9、过滤右击菜单项:http://my.oschina.net/plumsoft/blog/35167
10、连线的Source图形与Target图形
con.getSourceAnchor().getOwner();
con.getTargetAnchor().getOwner();
11、获取当前的编辑器
XXXDiagramEditor xxxDiagramEditor = (XXXDiagramEditor) PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor();
12、获得当前编辑器的editPart
XXXEditPart xxxEditPart = (XXXEditPart)xxxDiagramEditor.getDiagramEditPart();
13、用代码实现保存
利用11中获得的编辑器,执行save方法,由于save的方法是IProgressMonitor类型,而IProgressMonitor是一个接口,可以自定义一个实现IProgressMonitor接口的对象,如CustomProgressMonitor,执行保存时:
xxxDiagramEditor.doSave(new CustomProgressMonitor());