GMF:如何让网格显示在background,而不是foreground
前言
很久没写文章了,准备写一系列关于Eclipse RCP /Plugin的文章。 这些文章都是trouble shooting性质的,不准备写的很细,当你碰到这样的问题,google到时,能帮你把问题解决了,这就ok了。另外有些问题我也是不求甚解的,哈。
正文
GMF中,Grid,也就是用来对齐的网格,默认是显示在foreground的,这样网格就会覆盖在你的图形上面,看上去很糟糕。解决办法是在Editor中configureGraphicalViewer()方法添加如下代码
protected void configureGraphicalViewer() { super.configureGraphicalViewer(); DiagramEditorContextMenuProvider provider = new DiagramEditorContextMenuProvider(this, getDiagramGraphicalViewer()); getDiagramGraphicalViewer().setContextMenu(provider); getSite().registerContextMenu(ActionIds.DIAGRAM_EDITOR_CONTEXT_MENU, provider, getDiagramGraphicalViewer()); //ADDED START DiagramRootEditPart root = (DiagramRootEditPart) getDiagramGraphicalViewer().getRootEditPart(); Layer printableLayers = (Layer)root.getLayer(LayerConstants.PRINTABLE_LAYERS); Layer gridLayer = (Layer)root.getLayer(LayerConstants.GRID_LAYER); if (printableLayers != null && gridLayer != null){ LayeredPane paneForPrintable = (LayeredPane)printableLayers.getParent(); LayeredPane paneForGrid = (LayeredPane)gridLayer.getParent(); if (paneForGrid == paneForPrintable) { paneForGrid.removeLayer(LayerConstants.GRID_LAYER); paneForGrid.addLayerBefore(gridLayer, LayerConstants.GRID_LAYER, LayerConstants.PRINTABLE_LAYERS); } } //ADDED END }