我正在使用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
的任何方法?
答案 0 :(得分:0)
扩展SelectionEditPolicy
是正确的方法,应该正常工作(在您的代码中,它只会改变所选图形的颜色)。
问题可能是图形没有背景颜色,因此改变背景颜色并没有太大作用。尝试更改前景色。