title: JFace ApplicationWindow: createContents isn't working
body: <p>I'm attempting to create a window that is divided into three parts. A non-resizable header and footer and then a content area that expands to fill the remaining area in the window. To get started, I created the following class:</p>
  
  <pre><code>public class MyWindow extends ApplicationWindow {
      Color white;
      Font mainFont;
      Font headerFont;
  
      public MyWindow() {
          super(null);
          }
  
      protected Control createContents(Composite parent) {
          Display currentDisplay = Display.getCurrent();
          white = new Color(currentDisplay, 255, 255, 255);
          mainFont = new Font(currentDisplay, "Tahoma", 8, 0);
          headerFont = new Font(currentDisplay, "Tahoma", 16, 0);
  
          // Main layout Composites and overall FillLayout
          Composite container = new Composite(parent, SWT.NO_RADIO_GROUP);
          Composite header = new Composite(container, SWT.NO_RADIO_GROUP);
          Composite mainContents = new Composite(container, SWT.NO_RADIO_GROUP);;
          Composite footer = new Composite(container, SWT.NO_RADIO_GROUP);;
          FillLayout containerLayout = new FillLayout(SWT.VERTICAL);
          container.setLayout(containerLayout);
  
          // Header
          Label headerLabel = new Label(header, SWT.LEFT);
          headerLabel.setText("Header");
          headerLabel.setFont(headerFont);
  
          // Main contents
          Label contentsLabel = new Label(mainContents, SWT.CENTER);
          contentsLabel.setText("Main Content Here");
          contentsLabel.setFont(mainFont);
  
          // Footer
          Label footerLabel = new Label(footer, SWT.CENTER);
          footerLabel.setText("Footer Here");
          footerLabel.setFont(mainFont);
  
          return container;
      }
  
      public void dispose() {
          cleanUp();
      }
  
      @Override
      protected void finalize() throws Throwable {
          cleanUp();
          super.finalize();
      }
  
      private void cleanUp() {
          if (headerFont != null) {
              headerFont.dispose();
          }
          if (mainFont != null) {
              mainFont.dispose();
          }
          if (white != null) {
              white.dispose();
          }
      }
  }
  </code></pre>
  
  <p>And this results in an empty window when I run it like this:</p>
  
  <pre><code>public static void main(String[] args) {
      MyWindow myWindow = new MyWindow();
      myWindow.setBlockOnOpen(true);
      myWindow.open();
      Display.getCurrent().dispose();
  }
  </code></pre>
  
  <p>What am I doing wrong that I don't see three labels the way I'm trying to display them? The <code>createContents</code> code is definitely being called, I can step through it in Eclipse in debug mode.</p>