Package org.uispec4j

Source Code of org.uispec4j.Window$JDialogAdapter

package org.uispec4j;

import org.uispec4j.assertion.Assertion;
import org.uispec4j.assertion.UISpecAssert;
import org.uispec4j.assertion.testlibrairies.AssertAdapter;
import org.uispec4j.xml.XmlWriter;

import javax.swing.*;
import java.awt.*;

/**
* Wrapper for window components such as JFrame, JDialog, JInternalFrame.
*/
public class Window extends Panel {

  public static final String TYPE_NAME = "Window";
  public static final Class[] SWING_CLASSES = {JFrame.class,
                                               JDialog.class,
                                               JInternalFrame.class,
                                               Frame.class,
                                               java.awt.Window.class};
  private final Adapter adapter;

  public Window(JFrame frame) {
    super(frame);
    this.adapter = new JFrameAdapter(frame);
  }

  public Window(JDialog dialog) {
    super(dialog);
    this.adapter = new JDialogAdapter(dialog);
  }

  public Window(JInternalFrame frame) {
    super(frame);
    this.adapter = new JInternalFrameAdapter(frame);
  }

  public Window(Frame frame) {
    super(frame);
    this.adapter = new FrameAdapter(frame);
  }

  public Window(java.awt.Window window) {
    super(window);
    this.adapter = new WindowAdapter(window);
  }

  public String getDescriptionTypeName() {
    return "window";
  }

  protected void addAttributes(Component component, XmlWriter.Tag tag) {
    tag.addAttribute("title", adapter.getTitle());
  }

  public Assertion containsMenuBar() {
    return new Assertion() {
      public void check() {
        if (adapter.getJMenuBar() == null) {
          AssertAdapter.fail("No menuBar available");
        }
      }
    };
  }

  public MenuBar getMenuBar() {
    return new MenuBar(adapter.getJMenuBar());
  }

  public String getTitle() {
    return adapter.getTitle();
  }

  public Assertion titleEquals(final String expected) {
    return new Assertion() {
      public void check() {
        AssertAdapter.assertEquals("Unexpected title -", expected, getTitle());
      }
    };
  }

  public Assertion titleContains(final String expected) {
    return new Assertion() {
      public void check() {
        AssertAdapter.assertTrue("expected to contain:<" + expected + "> but was:<" + getTitle() + ">",
                                  getTitle().contains(expected));
      }
    };
  }

  /** @deprecated
   * @see #titleEquals(String) */
  public void assertTitleEquals(String expected) {
    UISpecAssert.assertTrue(titleEquals(expected));
  }

  /** @deprecated
   * @see #titleContains(String) */
  public void assertTitleContains(String expected) {
    UISpecAssert.assertTrue(titleContains(expected));
  }

  protected void getSubDescription(Container container, XmlWriter.Tag tag) {
    Container internalAwtContainer = adapter.getInternalAwtContainer();
    Panel contentPane = new Panel(internalAwtContainer);
    contentPane.getSubDescription(internalAwtContainer, tag);
  }

  public Container getInternalAwtContainer() {
    return adapter.getInternalAwtContainer();
  }

  public Assertion isModal() {
    return new Assertion() {
      public void check() {
        AssertAdapter.assertTrue(adapter.isModal());
      }
    };
  }

  /** Closes the window by calling its internal <code>dispose()</code> method. This is mainly used for unit
   * tests, when there is no "functional" way to close the window (for instance a "Close" button) */
  public void dispose() {
    adapter.dispose();
  }

  static interface Adapter {
    JMenuBar getJMenuBar();

    String getTitle();

    boolean isModal();

    Container getInternalAwtContainer();

    void dispose();
  }

  private static class JInternalFrameAdapter implements Adapter {
    private final JInternalFrame frame;

    JInternalFrameAdapter(JInternalFrame frame) {
      this.frame = frame;
    }

    public JMenuBar getJMenuBar() {
      return frame.getJMenuBar();
    }

    public String getTitle() {
      return frame.getTitle();
    }

    public boolean isModal() {
      return false;
    }

    public Container getInternalAwtContainer() {
      return frame.getContentPane();
    }

    public void dispose() {
      frame.dispose();
    }
  }

  private static class JFrameAdapter implements Adapter {
    private final JFrame frame;

    JFrameAdapter(JFrame frame) {
      this.frame = frame;
    }

    public JMenuBar getJMenuBar() {
      return frame.getJMenuBar();
    }

    public String getTitle() {
      return frame.getTitle();
    }

    public boolean isModal() {
      return false;
    }

    public Container getInternalAwtContainer() {
      return frame.getContentPane();
    }

    public void dispose() {
      frame.dispose();
    }
  }

  private static class JDialogAdapter implements Adapter {
    private final JDialog dialog;

    JDialogAdapter(JDialog dialog) {
      this.dialog = dialog;
    }

    public JMenuBar getJMenuBar() {
      return dialog.getJMenuBar();
    }

    public String getTitle() {
      return dialog.getTitle();
    }

    public boolean isModal() {
      return dialog.isModal();
    }

    public Container getInternalAwtContainer() {
      return dialog.getContentPane();
    }

    public void dispose() {
      dialog.dispose();
    }
  }

  private static class FrameAdapter implements Adapter {
    Frame frame;

    public FrameAdapter(Frame frame) {
      this.frame = frame;
    }

    public JMenuBar getJMenuBar() {
      AssertAdapter.fail("This component has no menu bar");
      return null;
    }

    public String getTitle() {
      return frame.getTitle();
    }

    public boolean isModal() {
      return false;
    }

    public Container getInternalAwtContainer() {
      return frame;
    }

    public void dispose() {
      frame.dispose();
    }
  }

  private static class WindowAdapter implements Adapter {

    private java.awt.Window window;

    public WindowAdapter(java.awt.Window window) {
      this.window = window;
    }

    public JMenuBar getJMenuBar() {
      AssertAdapter.fail("This component has no menu bar");
      return null;
    }

    public String getTitle() {
      return "";
    }

    public boolean isModal() {
      return false;
    }

    public Container getInternalAwtContainer() {
      return window;
    }

    public void dispose() {
      window.dispose();
    }
  }
}
TOP

Related Classes of org.uispec4j.Window$JDialogAdapter

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.