Eclipse GEF - Snap to Grid无法正常工作

时间:2015-09-12 15:14:25

标签: eclipse-rcp jface eclipse-gef

我正在尝试为GEF查看器使用“Snap to Grid”功能。我正在this site关注教程。本教程主要讨论如何安装必要的编辑策略并覆盖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实例调用SnapToHelper方法,我通过放置println方法确认该实例。 我错过了什么吗?

1 个答案:

答案 0 :(得分:0)

经过一番研究,我了解到我犯了一个微不足道的错误,花了几天时间弄明白。典型createFigure的{​​{1}}方法的代码段如下:

TopEditPart

在上面的方法中,使用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; } 隐藏了所有这些网格,并花了我几天的时间才弄明白。我现在已将其更改为f.setOpaque(true);,现在我可以看到网格。希望很多人可以节省时间,因为这个答案。