把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);
}
}

运行结果如下,这个基本上只有视图的功能,也可以增加编辑功能,例如对GraphicalViewer加一个DropTargetListener就可以从调色板里拉对象上来了,等等。这个代码有点问题,就是打开View后要调整一下大小才能显示出图形,该怎么解决呢……

posted @ 2005-10-21 20:26  八进制  阅读(8863)  评论(33编辑  收藏  举报