From: <pat...@us...> - 2010-07-21 03:50:43
|
Revision: 1093 http://cishell.svn.sourceforge.net/cishell/?rev=1093&view=rev Author: pataphil Date: 2010-07-21 03:50:35 +0000 (Wed, 21 Jul 2010) Log Message: ----------- * Added GUIBuilderUtilities.setCancelable(). Modified Paths: -------------- trunk/core/org.cishell.utilities/src/org/cishell/utilities/swt/GUIBuilderUtilities.java Added Paths: ----------- trunk/core/org.cishell.utilities/src/org/cishell/utilities/ObjectContainer.java trunk/core/org.cishell.utilities/src/org/cishell/utilities/swt/GUICanceledException.java Added: trunk/core/org.cishell.utilities/src/org/cishell/utilities/ObjectContainer.java =================================================================== --- trunk/core/org.cishell.utilities/src/org/cishell/utilities/ObjectContainer.java (rev 0) +++ trunk/core/org.cishell.utilities/src/org/cishell/utilities/ObjectContainer.java 2010-07-21 03:50:35 UTC (rev 1093) @@ -0,0 +1,12 @@ +package org.cishell.utilities; + +public class ObjectContainer<T> { + public T object; + + public ObjectContainer() { + } + + public ObjectContainer(T object) { + this.object = object; + } +}; \ No newline at end of file Modified: trunk/core/org.cishell.utilities/src/org/cishell/utilities/swt/GUIBuilderUtilities.java =================================================================== --- trunk/core/org.cishell.utilities/src/org/cishell/utilities/swt/GUIBuilderUtilities.java 2010-07-21 03:49:14 UTC (rev 1092) +++ trunk/core/org.cishell.utilities/src/org/cishell/utilities/swt/GUIBuilderUtilities.java 2010-07-21 03:50:35 UTC (rev 1093) @@ -1,9 +1,14 @@ package org.cishell.utilities.swt; +import org.cishell.utilities.ObjectContainer; import org.eclipse.swt.SWT; +import org.eclipse.swt.events.ShellEvent; +import org.eclipse.swt.events.ShellListener; import org.eclipse.swt.graphics.Point; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Display; +import org.eclipse.swt.widgets.Event; +import org.eclipse.swt.widgets.Listener; import org.eclipse.swt.widgets.Shell; public class GUIBuilderUtilities { @@ -75,4 +80,45 @@ public static void clearSpacing(GridLayout layout) { layout.horizontalSpacing = layout.verticalSpacing = 0; } + + public static void setCancelable( + final Shell shell, final ObjectContainer<GUICanceledException> exceptionThrown) { + shell.addListener(SWT.Traverse, new Listener() { + public void handleEvent(Event event) { + switch (event.detail) { + case SWT.TRAVERSE_ESCAPE: + shell.close(); + event.detail = SWT.TRAVERSE_NONE; + event.doit = false; + +// if (exceptionThrown != null) { +// String exceptionMessage = "Canceled by user."; +// exceptionThrown.object = new GUICanceledException(exceptionMessage); +// } + + break; + } + } + }); + shell.addShellListener(new ShellListener() { + public void shellActivated(ShellEvent event) { + } + + public void shellClosed(ShellEvent event) { + if (exceptionThrown != null) { + String exceptionMessage = "Canceled by user."; + exceptionThrown.object = new GUICanceledException(exceptionMessage); + } + } + + public void shellDeactivated(ShellEvent event) { + } + + public void shellDeiconified(ShellEvent event) { + } + + public void shellIconified(ShellEvent event) { + } + }); + } } \ No newline at end of file Added: trunk/core/org.cishell.utilities/src/org/cishell/utilities/swt/GUICanceledException.java =================================================================== --- trunk/core/org.cishell.utilities/src/org/cishell/utilities/swt/GUICanceledException.java (rev 0) +++ trunk/core/org.cishell.utilities/src/org/cishell/utilities/swt/GUICanceledException.java 2010-07-21 03:50:35 UTC (rev 1093) @@ -0,0 +1,21 @@ +package org.cishell.utilities.swt; + +public class GUICanceledException extends Exception { + private static final long serialVersionUID = 1L; + + public GUICanceledException() { + super(); + } + + public GUICanceledException(String arg0) { + super(arg0); + } + + public GUICanceledException(Throwable arg0) { + super(arg0); + } + + public GUICanceledException(String arg0, Throwable arg1) { + super(arg0, arg1); + } +} \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |