Eclipse rcp Eclipse GEF-捕捉到网格不工作
我正在尝试对GEF查看器使用“捕捉到网格”功能。我现在正在学习教程。本教程主要讨论安装必要的编辑策略和覆盖Eclipse rcp Eclipse GEF-捕捉到网格不工作,eclipse-rcp,jface,eclipse-gef,Eclipse Rcp,Jface,Eclipse Gef,我正在尝试对GEF查看器使用“捕捉到网格”功能。我现在正在学习教程。本教程主要讨论安装必要的编辑策略和覆盖getAdapter方法,如下所示: @Override public Object getAdapter(Class key) { System.out.println("snapping..." + key); if (key == SnapToHelper.class) { List<SnapToHelper> helpe
getAdapter
方法,如下所示:
@Override
public Object getAdapter(Class key) {
System.out.println("snapping..." + key);
if (key == SnapToHelper.class) {
List<SnapToHelper> helpers = new ArrayList<SnapToHelper>();
if (Boolean.TRUE.equals(getViewer().getProperty(
SnapToGeometry.PROPERTY_SNAP_ENABLED))) {
helpers.add(new SnapToGeometry(this));
}
if (Boolean.TRUE.equals(getViewer().getProperty(
SnapToGrid.PROPERTY_GRID_ENABLED))) {
helpers.add(new SnapToGrid(this));
}
if (helpers.size() == 0) {
return null;
} else {
return new CompoundSnapToHelper(
helpers.toArray(new SnapToHelper[0]));
}
}
return super.getAdapter(key);
}
@覆盖
公共对象getAdapter(类密钥){
System.out.println(“捕捉…”+键);
if(key==SnapToHelper.class){
List helpers=new ArrayList();
if(Boolean.TRUE.equals)(getViewer().getProperty(
SnapToGeometry.PROPERTY_SNAP_ENABLED))){
添加(新的捕捉几何(this));
}
if(Boolean.TRUE.equals)(getViewer().getProperty(
SnapToGrid.PROPERTY(已启用网格){
添加(新SnapToGrid(此));
}
if(helpers.size()==0){
返回null;
}否则{
返回新的CompoundSnapToHelper(
toArray(新的SnapToHelper[0]);
}
}
返回super.getAdapter(键);
}
但是,在运行时,getAdapter
方法从未使用SnapToHelper
实例调用,我通过放置println
方法确认了这一点。
我错过了什么吗?经过研究,我知道我犯了一个小错误,花了我好几天时间才弄清楚。典型的
TopEditPart
的createFigure
方法的代码片段如下:
protected IFigure createFigure() {
Figure f = new FreeformLayer();
f.setLayoutManager(new FreeformLayout());
f.setBorder(new MarginBorder(1));
// Create a layout for the graphical screen
f.setOpaque(true);
helpers = new ArrayList<SnapToHelper>();
helpers.add(new SnapToGrid(this));
CompoundSnapToHelper h = new CompoundSnapToHelper(
helpers.toArray(new SnapToHelper[0]));
return f;
}
受保护的IFigure createFigure(){
图f=新的FreeformLayer();
f、 setLayoutManager(新的FreeformLayout());
f、 新订单(新订单(1));
//为图形屏幕创建布局
f、 set不透明(true);
helpers=newarraylist();
添加(新SnapToGrid(此));
CompoundSnapToHelper h=新的CompoundSnapToHelper(
toArray(新的SnapToHelper[0]);
返回f;
}
在上述方法中,使用
f.setOpaque(true)代码>一直隐藏着网格,花了我好几天的时间才弄清楚。我现在将其更改为f.setOpaque(false)代码>现在我可以看到网格了。希望许多人能因为这个答案节省时间。您安装了编辑策略吗?是否将按钮添加到工具栏以激活此功能?是的,我在根editpart和节点editpart上安装了编辑策略。将按钮添加到工具栏时遇到一些问题。因此,将操作添加到上下文菜单中