Package org.fest.swing.test.swing

Source Code of org.fest.swing.test.swing.TestMdiWindow

/*
* Created on Oct 25, 2007
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
* an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
* specific language governing permissions and limitations under the License.
*
* Copyright @2007-2013 the original author or authors.
*/
package org.fest.swing.test.swing;

import static org.fest.swing.edt.GuiActionRunner.execute;
import static org.fest.util.Strings.concat;

import java.awt.Dimension;

import javax.swing.JDesktopPane;
import javax.swing.JInternalFrame;

import org.fest.swing.annotation.RunsInCurrentThread;
import org.fest.swing.annotation.RunsInEDT;
import org.fest.swing.edt.GuiQuery;

/**
* An MDI frame.
*
* @author Alex Ruiz
*/
public class TestMdiWindow extends TestWindow {
  private static int internalFrameCounter;

  /**
   * Creates a new {@link TestMdiWindow} and displays it on the screen. The default size of the created window is 500 x
   * 300. This method is executed in the event dispatch thread (EDT.)
   *
   * @param testClass the class of the test where the window to create will be used. The simple name of the given class
   *          will be used as the title of the created window.
   * @return the created window.
   */
  @RunsInEDT
  public static TestMdiWindow createAndShowNewWindow(final Class<?> testClass) {
    return execute(new GuiQuery<TestMdiWindow>() {
      @Override
      protected TestMdiWindow executeInEDT() {
        TestMdiWindow window = createInCurrentThread(testClass);
        TestWindow.display(window, new Dimension(500, 300));
        return window;
      }
    });
  }

  /**
   * Creates a new {@link TestMdiWindow}. This method is executed in the event dispatch thread (EDT.)
   *
   * @param testClass the class of the test where the window to create will be used. The simple name of the given class
   *          will be used as the title of the created window.
   * @return the created window.
   */
  @RunsInEDT
  public static TestMdiWindow createNewWindow(final Class<?> testClass) {
    return execute(new GuiQuery<TestMdiWindow>() {
      @Override
      protected TestMdiWindow executeInEDT() {
        return createInCurrentThread(testClass);
      }
    });
  }

  private final JDesktopPane desktop;
  private final JInternalFrame internalFrame;

  @RunsInCurrentThread
  private static TestMdiWindow createInCurrentThread(Class<?> testClass) {
    return new TestMdiWindow(testClass);
  }

  /**
   * Creates a new {@link TestMdiWindow}.
   *
   * @param testClass the class of the test where the window to create will be used. The simple name of the given class
   *          will be used as the title of the created window.
   */
  @RunsInCurrentThread
  protected TestMdiWindow(Class<?> testClass) {
    super(testClass);
    desktop = new JDesktopPane();
    internalFrame = createInternalFrame();
    desktop.add(internalFrame);
    setContentPane(desktop);
    setPreferredSize(new Dimension(500, 300));
  }

  /**
   * Creates a new {@code JInternalFrame} with a size of 200 x 100. The title of the created internal frame includes the
   * value of a counter that is automatically increased every time a new internal frame is created. This method is
   * {@code not} executed in the event dispatch thread (EDT.)
   *
   * @return the created frame.
   */
  @RunsInCurrentThread
  protected static JInternalFrame createInternalFrame() {
    // TODO: should be create and add
    JInternalFrame internalFrame = new JInternalFrame(concat("Internal Frame ", ++internalFrameCounter));
    internalFrame.setIconifiable(true);
    internalFrame.setMaximizable(true);
    internalFrame.setResizable(true);
    internalFrame.setSize(new Dimension(200, 100));
    internalFrame.setVisible(true);
    return internalFrame;
  }

  /**
   * Returns the container containing multiple documents (internal frames.)
   *
   * @return the container containing multiple documents (internal frames.)
   */
  public JDesktopPane desktop() {
    return desktop;
  }

  /**
   * Returns the internal frame created by default.
   *
   * @return the internal frame created by default.
   */
  public JInternalFrame internalFrame() {
    return internalFrame;
  }
}
TOP

Related Classes of org.fest.swing.test.swing.TestMdiWindow

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.