前言
很久没写文章了,准备写一系列关于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
}