我目前正在研究eclipse e4 RCP應用程序,並且我有一個作爲工作管理器的部分,用戶可以在其中看到所有活動作業及其進度,在日食。現在的問題是,用戶可以通過雙擊工具欄打開進度部分,他也應該能夠隨時關閉進度部分,而不是處理我想讓它不可見的部分。 起初我認爲這不應該是一個問題,因爲我可以設置該部分不可見,但問題是如何捕捉關閉事件並按照我的方式處理它。是否有任何事件,接口或偵聽器可以實現以捕捉關閉事件並防止該部件被丟棄?捕捉零件的關閉事件(Eclipse e4 RCP)
1
A
回答
1
您可以實現一個CustomSaveHandler並用一個處理器替換Default Eclipse Save Handler。在該SaveHandler中,您可以控制零件是否關閉。所以你可以不關閉它並使其不可見。
ExampleCode:
public class ReplaceSaveHandlerProcessor {
@Named("your.id.to.window")
@Inject
MWindow window;
@Inject
IEventBroker eventBroker;
@Execute
void installIntoContext() {
eventBroker.subscribe(UIEvents.Context.TOPIC_CONTEXT, new EventHandler() {
@Override
public void handleEvent(final Event event) {
if (UIEvents.isSET(event)) {
if (window.equals(event.getProperty("ChangedElement")) && (window.getContext() != null)) {
window.getContext().runAndTrack(new RunAndTrack() {
private final ISaveHandler saveHandler = new CustomSaveHandler();
@Override
public boolean changed(final IEclipseContext context) {
Object getSaveHandlerValue = context.get(ISaveHandler.class);
if (!saveHandler.equals(getSaveHandlerValue)) { // prevents endless loop
ContextInjectionFactory.inject(saveHandler, window.getContext());
context.set(ISaveHandler.class, saveHandler);
}
return true; // ture keeps tracking and the saveHandler as the only opportunity
}
});
}
}
}
});
}
}
你必須定義ExtentionPoint org.eclipse.e4.workbench.model一個Extention 與你ReplaceSaveHandlerProcessor。 (您必須聲明窗口ID在本extention「元素」(新增截圖:)
的CustomSaveHandler必須實現ISaveHandler接口在其方法YPU可以說,如果部分應該真的被關閉
。public class CustomSaveHandler implements ISaveHandler {
@Override
public boolean save(MPart dirtyPart, boolean confirm) {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean saveParts(Collection<MPart> dirtyParts, boolean confirm) {
// TODO Auto-generated method stub
return false;
}
@Override
public Save promptToSave(MPart dirtyPart) {
// TODO Auto-generated method stub
return null;
}
@Override
public Save[] promptToSave(Collection<MPart> dirtyParts) {
// TODO Auto-generated method stub
return null;
}
}
相關問題
- 1. RCP e4隱藏零件
- 2. eclipse e4 - 如何識別eclipse e4視圖(零件)?
- 3. Eclipse e4 RCP BundleActivator
- 4. SearchView:無法捕捉關閉事件
- 5. 如何捕捉「關閉」點擊事件?
- 6. 如何捕捉窗口關閉事件?
- 7. 捕捉瀏覽器關閉事件
- 8. Eclipse RCP E4零件框格容器默認最小值
- 9. Eclipse E4 RCP - 創建零件後獲取IEventBroker對象
- 10. 關閉Eclipse RCP中的零件時的自定義消息4
- 11. 在模態關閉後捕捉Angular Bootstrap UI $ uibModal關閉事件
- 12. 捕捉瀏覽器關閉事件沒有刷新事件
- 13. 的Eclipse RCP E4部分激活事件多次發送
- 14. 捕捉事件
- 15. 捕捉事件
- 16. Eclipse e4零件工具欄僅在零件位於零件堆棧時顯示?
- 17. Eclipse RCP workbench.xmi控制保存的零件
- 18. RCP E4 @UIEventTopic不叫
- 19. 捕獲tabpage關閉事件
- 20. 我如何捕捉Android中的彈出關閉事件
- 21. 在Unity,Ubuntu中捕捉關閉事件的方法13.04
- 22. 如何在不捕捉關閉事件或更改url事件的情況下捕獲僅刷新事件?
- 23. 從動作腳本/閃光燈捕捉窗口關閉事件
- 24. 如何在java swing中捕捉關閉事件
- 25. 控制檯捕捉關閉事件線程
- 26. 在Web瀏覽器中捕捉選項卡關閉事件?
- 27. 如何在電話顯示關閉時捕捉按鈕事件
- 28. 如何捕捉控制檯關閉事件?
- 29. 在Firefox擴展中捕捉關閉選項卡事件
- 30. Flash(AS2) - 捕捉Flash電影關閉事件
你是問關於E4應用程序(使用Application.e4xmi)或3.x的兼容模式RCP? – 2014-10-20 17:46:29
是的,我想諮詢一下使用Application.e4xmi的E4應用.. – tom1991te 2014-10-20 17:48:13
'EPartService.addPartListener'會告訴你關閉,但我不知道anywa你停止關閉發生。 – 2014-10-20 20:09:08