[英]Eclipse Scout Tree View Event Handling
我目前正在使用Eclipse Scout Framework编写数据可视化应用程序。 它基于Scout项目模板“概述树和表格形式”。 让我感到困惑的是大纲树中的事件处理。 如您所知,当单击没有任何自定义实现的节点时,树中的不同页面/节点会自动激活/创建并显示。 我想将此行为更改为右键单击节点以在第二步中将其删除时打开上下文菜单的效果。 出于这个原因,我在StandardOutline中覆盖了“ execNodeClick()”方法,如下所示:
@Override
protected void execNodeClick(ITreeNode node, MouseButton mouseButton) throws ProcessingException {
if (mouseButton == MouseButton.Right && node instanceof ConnectionNodePage) {
ConnectionNodePage clickedConnectionNode = (ConnectionNodePage) node;
logger.debug("Right click on ConnectionNode " + node);
List<AbstractMenu> menuList = new ArrayList<>();
menuList.add(new AbstractMenu() {
@Override
protected String getConfiguredText() {
// TODO Auto-generated method stub
return "delete";
}
@Override
protected void execAction() throws ProcessingException {
ServerConfigService serverConfigService = SERVICES.getService(ServerConfigService.class);
serverConfigService.removeServerConnection(clickedConnectionNode.getConnection());
StandardOutline.this.removeChildNode(StandardOutline.this.getRootNode(), clickedConnectionNode);
}
});
clickedConnectionNode.setMenus(menuList);
}
}
我不知道这是否是向树节点动态添加上下文菜单的推荐方法,但是它可以通过某种方式起作用:P但是,这种方法存在服务器问题:
我希望有人向我展示此机制的工作原理,以及在何处进行相应的更改,或者至少提示我必须查看的位置。 提前致谢!
真可惜! 当事情变得复杂时,为什么要保持简单? -.-
要回答我自己的问题并可能帮助其他人,可能会因为树木而错过森林:
Eclipse Scout提供了一个内置选项,可以将上下文菜单添加到页面/节点,而无需实现任何自己的鼠标事件处理。
您只需要添加一个内部类,即可将AbtractMenu / AbstractExtensibleMenu扩展到要为其使用上下文菜单的页面。 Scout会自动计算该内容,以右键单击上下文菜单将其打开到树中的相应节点。
对于最小的菜单实现,您只需要重写AbstractMenu的execAction()方法以在单击后执行操作,并重写getConfiguredText()方法来为新菜单类中的菜单设置所需的显示文本。 这样可以避免我第一种方法发现的奇怪行为。
我希望这个答案可以节省我浪费的时间。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.