|
Re: JFace App - how to handle close event? [message #449469 is a reply to message #449464] |
Tue, 25 January 2005 06:00 |
Konstantin Scheglov Messages: 555 Registered: July 2009 |
Senior Member |
|
|
Bill Ewing:
In short: Window.canHandleShellCloseEvent()
See full example below.
Do you still want to handle shell events in Designer? ;-)
import org.eclipse.jface.action.MenuManager;
import org.eclipse.jface.action.StatusLineManager;
import org.eclipse.jface.action.ToolBarManager;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.window.ApplicationWindow;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Shell;
/**
* @author scheglov_ke
*/
public class ConfirmCloseTest extends ApplicationWindow {
public ConfirmCloseTest() {
super(null);
createActions();
addToolBar(SWT.FLAT | SWT.WRAP);
addMenuBar();
addStatusLine();
}
protected Control createContents(Composite parent) {
Composite container = new Composite(parent, SWT.NONE);
container.setLayout(new GridLayout());
return container;
}
private void createActions() {
}
protected MenuManager createMenuManager() {
MenuManager result = new MenuManager("menu");
return result;
}
protected ToolBarManager createToolBarManager(int style) {
ToolBarManager toolBarManager = new ToolBarManager(style);
return toolBarManager;
}
protected StatusLineManager createStatusLineManager() {
StatusLineManager statusLineManager = new StatusLineManager();
statusLineManager.setMessage(null, "");
return statusLineManager;
}
public static void main(String args[]) {
try {
ConfirmCloseTest window = new ConfirmCloseTest();
window.setBlockOnOpen(true);
window.open();
} catch (Exception e) {
e.printStackTrace();
}
}
protected void configureShell(Shell newShell) {
super.configureShell(newShell);
newShell.setText("New Application");
}
protected Point getInitialSize() {
return new Point(425, 350);
}
protected boolean canHandleShellCloseEvent() {
if (!MessageDialog.openQuestion(getShell(), "Confirm", "Do you really
want close window?")) {
return false;
}
return super.canHandleShellCloseEvent();
}
}
> The following snippet shows how to have a message box query the user
> before exiting an SWT app. It allows the user to decide whether to exit
> or not. It is quite straightforward.
>
> http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.swt.sni ppets/src/org/eclipse/swt/snippets/Snippet99.java?rev=HEAD&a mp;content-type=text/vnd.viewcvs-markup
>
>
> But, has anyone ever done this in a JFace app?
>
> We have tried many ways and failed. It seems like JFace was so intent
> on hiding details in the name of abstraction and elegance that we now
> cannot access those details.
> Our next step would be to download the source and seriously hack
> ApplicationWindow to get this to work.
> All comments and suggestions appreciated!
>
>
--
SY, Konstantin.
Advanced Eclipse SWT Designer (http://www.swt-designer.com)
Konstantin Scheglov,
Google, Inc.
|
|
|
Powered by
FUDForum. Page generated in 0.03036 seconds