[英]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.