gpt4 book ai didi

java - 有没有办法阻止 IWorkbenchWindow 关闭?

转载 作者:行者123 更新时间:2023-11-30 08:09:52 25 4
gpt4 key购买 nike

所以我有我的 IWorkbenchWiondow 对象,window
我将这个监听器添加到它:

window.addPageListener(new IPageListener()
{
@Override
public void pageOpened(IWorkbenchPage page)
{
// method stub
}

/**
* Whenever the user tries to close the workbench window, this method gets called.
*/
@Override
public void pageClosed(IWorkbenchPage page)
{
if (MessageDialog.openQuestion(page.getWorkbenchWindow().getShell(), "Question", "Do you really want to close the application?"))
{
// YES, then no problem, close
return;
}
else
{
// NO
System.out.println("Now what?");
}
}

@Override
public void pageActivated(IWorkbenchPage page)
{
// method stub
}
});

如果用户说 No,我如何阻止 window 关闭?
或者我怎样才能达到相同的最终结果?

最佳答案

正如@david 所说,IWorkbenchListener 有一个preShutDown 事件,允许通过返回false 否决关闭整个工作台。

当最后一个工作台窗口关闭时或通过诸如文件 > 退出 之类的操作关闭工作台。

如果您想阻止单个 IWorkbenchWindow 被关闭,您需要向代表工作台窗口的 shell 添加一个close 监听器。

例如:

Shell shell = window.getShell();
shell.addListener( SWT.Close, new Listener() {
public void handleEvent( Event event ) {
MessageBox messageBox = new MessageBox( parentShell, SWT.APPLICATION_MODAL | SWT.YES | SWT.NO );
messageBox.setText( "Confirmation" );
messageBox.setMessage( "Close the window?" );
event.doit = messageBox.open() == SWT.YES;
}
} );

doit 标志设置为 false 将防止 shell 被关闭/处置。

关于java - 有没有办法阻止 IWorkbenchWindow 关闭?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32054382/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com