Bug 254673 [JFace] Window javadoc hints at overriding createShell() when this is not possible
This is the javadoc of Window's createShell() method: /** * Creates and returns this window's shell. * <p> * The default implementation of this framework method creates * a new shell and configures it using <code/>configureShell</code>. Rather * than override this method, subclasses should instead override * <code/>configureShell</code>. * </p> * * @return the shell */ The statement "Rather than override this method, subclasses should instead override configureShell." somewhat sounds like a warning that the user should do one instead of the other...but you could still go the other way if you so desire. However, overriding createShell() is not actually even possible because it is spec'ed as being final.
bundles/org.eclipse.jface/src/org/eclipse/jface/window/Window.java
* </p>
	 * 
	 * @return whether the window should handle the close event.
	 */
	protected boolean canHandleShellCloseEvent() {
		return true;
	}
	/**
	 * Closes this window, disposes its shell, and removes this window from its
	 * window manager (if it has one).
	 * <p>
	 * This framework method may be extended (<code>super.close</code> must
	 * be called).
	 * </p>
	 * <p>
	 *  Note that in order to prevent recursive calls to this method 
	 *  it does not call <code>Shell#close()</code>. As a result <code>ShellListener</code>s 
	 *  will not receive a <code>shellClosed</code> event.
	 *  </p>
	 * 
	 * @return <code>true</code> if the window is (or was already) closed, and
	 *         <code>false</code> if it is still open
	 */
	public boolean close() {
		
		
		if (fontChangeListener != null) {
			JFaceResources.getFontRegistry().removeListener(fontChangeListener);
			fontChangeListener = null;
		}