Eclipse GEF - 选择数字

时间:2015-08-31 08:22:42

标签: swt eclipse-rcp eclipse-gef

我正在使用GEF框架来显示连接节点的网络。我有一个关于图的topEditPart和一个用于节点及其连接的editPart。该图正确呈现。现在我需要选择一个节点,所有传出连接和连接的节点应该更改为不同的颜色。我开始查看GEF提供的EditPolicies,但我不知道哪个编辑策略用于突出显示数字,即显示选择反馈。在这方面的任何帮助非常感谢。 这就是我的尝试:

我创建了扩展XYLayoutEditPolicy的类并将其安装在rootEditPart

public class BasicXYLayoutEditPolicy extends XYLayoutEditPolicy {
    protected Command createAddCommand(EditPart child, Object constraint) {
        return null;
    }

    protected Command createChangeConstraintCommand(EditPart child, Object constraint) {
        return null;
    }

    protected Command getCreateCommand(CreateRequest request) {
        return null;
    }

    protected EditPolicy createChildEditPolicy(EditPart child) {
        return new NodeResizableEditPolicy(); 
    }

    protected Command getDeleteDependantCommand(Request request) {
        return null;
    }

    public EditPart getTargetEditPart(Request request) {
        EditPart targetEditPart = getHost(); // I guessed that...
        return targetEditPart;
    }
}

安装在Root editpart上

protected void createEditPolicies() {
    installEditPolicy(EditPolicy.LAYOUT_ROLE, new BasicXYLayoutEditPolicy());
}

现在我创建了一个扩展NodeSelectionEditPolicy

的新类SelectionEditPolicy
public class NodeSelectionEditPolicy extends SelectionEditPolicy {

    @Override
    protected void hideSelection() {
        getHostFigure().setBackgroundColor(Display.getDefault().getSystemColor(SWT.COLOR_GREEN));
    }

    @Override
    protected void showSelection() {
        getHostFigure().setBackgroundColor(Display.getDefault().getSystemColor(SWT.COLOR_DARK_RED));
    }
}

接下来,我将此策略安装到节点编辑部分

protected void createEditPolicies() {
    installEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE, new NodeSelectionEditPolicy());
}

当我执行此代码时,似乎没有任何事情发生,即,没有视觉选择反馈发生。我错过了什么吗?我是否需要实施NodeSelectionEditPolicy的任何方法?

1 个答案:

答案 0 :(得分:0)

扩展SelectionEditPolicy是正确的方法,应该正常工作(在您的代码中,它只会改变所选图形的颜色)。

问题可能是图形没有背景颜色,因此改变背景颜色并没有太大作用。尝试更改前景色。