首页 > 代码库 > 6.16 initial与configure(未完)

6.16 initial与configure(未完)

 1 protected void initializeGraphicalViewer() { 2         // TODO Auto-generated method stub 3  4         viewer.setContents(diagram);(2) 5         //添加资源监听器 6         resourceChangeListener = new ResourceChangeListener(this); 7         ResourcesPlugin.getWorkspace().addResourceChangeListener( 8                 resourceChangeListener); 9         //添加editorpart监听器10         editorListener = new EditorPartListener(this);11         getSite().getWorkbenchWindow().getPartService().addPartListener(12                 editorListener);13         //添加拖曳监听器14         viewer.addDropTargetListener(new EditorDropListener());15 16     }

所以初始化中就是把需要的listener添加进去么?

ps:有关(1)(2)的作用:下面就要在 DiagramEditor 中创建 Viewer 了,用来显示 HelloEditorPart 中绘制的图形的。我们这里创建的是一个 GraphicalViewer。在 GraphicalViewer 通过其 initializeGraphicalViewer()函数接收到内容前,我们要先配置一下 GraphicalViewer。而 configureGraphicalViewer()函数中是配置 GraphicalViewer的好地方。配置 GraphicalViewer 包括为 DiagramEditor 选择合适的 RootEditPart(决定了 editor 的工作区,例如 GEF 包括可缩放 zoomable 和可卷动 scrollable 的工作区,以后会谈到)和 EditPartFactory(我们例子中就是 PartFactory)。我们可以看到配置 GraphicalViewer 就是把模型和控制器在视图 GraphicalViewer 中连接起来。配 置 好 GraphicalViewer 后 , 我 们 就 可 以 设 置 GraphicalViewer 中 显 示 的 内 容 了 , 就 是 在initializeGraphicalViewer()中用 setContents()函数。

 1 protected void configureGraphicalViewer() { 2         super.configureGraphicalViewer(); 3  4         viewer = getGraphicalViewer(); 5         ScalableRootEditPart rootEditPart = new ScalableRootEditPart(); 6         viewer.setRootEditPart(rootEditPart);(1) 7  8         ZoomManager zoomManager = rootEditPart.getZoomManager(); 9         IAction action = new ZoomInAction(zoomManager);10         getActionRegistry().registerAction(action);11         action = new ZoomOutAction(zoomManager);12         getActionRegistry().registerAction(action);13 14         viewer.setEditPartFactory(new GraphicalPartFactory());(1)15 16         ContextMenuProvider provider = new DiagramContextMenuProvider(viewer,17                 getActionRegistry());18         viewer.setContextMenu(provider);19         getSite().registerContextMenu(provider, viewer);20 21         KeyHandler keyHandler = new KeyHandler();22         keyHandler.put(KeyStroke.getPressed(SWT.DEL, 127, 0),23                 getActionRegistry().getAction(ActionFactory.DELETE.getId()));24         getGraphicalViewer().setKeyHandler(25                 new GraphicalViewerKeyHandler(getGraphicalViewer())26                         .setParent(keyHandler));27 28     }