把GEF放在ViewPart里
其实可以放在任何Composite上,当然也就可以放在视图里了。关键任务是创建GraphicalViewer、RootEditPart、EditDomain和EditPartFactory这些对象,下面的代码是我从别处拷来的,稍微修改了一下。
public class TestView extends ViewPart {
ScrollingGraphicalViewer graphicalViewer;
FigureCanvas canvas;
Diagram diagram;
public void createPartControl(Composite parent) {
graphicalViewer = new ScrollingGraphicalViewer();
canvas = (FigureCanvas) graphicalViewer.createControl(parent);
ScalableFreeformRootEditPart root = new ScalableFreeformRootEditPart();
graphicalViewer.setRootEditPart(root);
graphicalViewer.setEditDomain(new EditDomain());
graphicalViewer.setEditPartFactory(new PartFactory());
graphicalViewer.setContents(diagram);
}
}
ScrollingGraphicalViewer graphicalViewer;
FigureCanvas canvas;
Diagram diagram;
public void createPartControl(Composite parent) {
graphicalViewer = new ScrollingGraphicalViewer();
canvas = (FigureCanvas) graphicalViewer.createControl(parent);
ScalableFreeformRootEditPart root = new ScalableFreeformRootEditPart();
graphicalViewer.setRootEditPart(root);
graphicalViewer.setEditDomain(new EditDomain());
graphicalViewer.setEditPartFactory(new PartFactory());
graphicalViewer.setContents(diagram);
}
}
运行结果如下,这个基本上只有视图的功能,也可以增加编辑功能,例如对GraphicalViewer加一个DropTargetListener就可以从调色板里拉对象上来了,等等。这个代码有点问题,就是打开View后要调整一下大小才能显示出图形,该怎么解决呢……
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步