GMF中的小知识点

原创
2012/02/18 20:34
阅读数 1.3K

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());


展开阅读全文
GMF
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部