//This product is provided under the terms of EPL (Eclipse Public License)
//version 1.0.
//
//The full license text can be read from: http://www.eclipse.org/org/documents/epl-v10.php
package org.dtangler.swingui.windowmanager.impl;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertSame;
import static org.junit.Assert.assertTrue;
import java.awt.Dimension;
import java.awt.GraphicsEnvironment;
import java.awt.Point;
import java.awt.Window;
import javax.swing.JComponent;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenuBar;
import org.dtangler.swingui.windowmanager.SwingView;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
public class SwingWindowManagerTest {
private SwingWindowManager windowManager;
private Window lastOpenedWindow;
private static boolean isHeadless;
@BeforeClass
public static void checkHeadless() {
isHeadless = GraphicsEnvironment.isHeadless();
}
@Before
public void setUp() {
windowManager = new SwingWindowManager() {
protected void showWindow(Window window) {
lastOpenedWindow = window;
// do not actually do this in tests, since it only slows them
// down
}
};
}
private boolean isHeadless() {
if (isHeadless) {
String warning = "Warning: cannot run tests from SwingWindowManagerTest because host is headless";
System.out.println(warning);
System.err.println(warning);
}
return isHeadless;
}
@Test
public void testShowMainView() {
if (isHeadless())
return;
JComponent cmp = new JLabel();
JMenuBar menu = new JMenuBar();
SwingView mainView = new MockSwingView("myTitle", cmp, new Dimension(
50, 30), menu);
windowManager.showMainView(mainView);
assertNotNull(lastOpenedWindow);
JFrame frame = (JFrame) lastOpenedWindow;
assertEquals("myTitle", frame.getTitle());
assertSame(cmp, frame.getContentPane().getComponent(0));
assertSame(menu, frame.getJMenuBar());
assertEquals(JFrame.EXIT_ON_CLOSE, frame.getDefaultCloseOperation());
}
@Test
public void testShowModal() {
if (isHeadless())
return;
windowManager.showMainView(new MockSwingView("", new JLabel(),
new Dimension(10, 10)));
Window mainWindow = lastOpenedWindow;
JComponent cmp = new JLabel();
SwingView mainView = new MockSwingView("myTitle", cmp, new Dimension(
50, 30));
windowManager.showModal(mainView);
assertNotNull(lastOpenedWindow);
JDialog dlg = (JDialog) lastOpenedWindow;
assertTrue(dlg.isModal());
assertSame(mainWindow, dlg.getParent());
assertEquals("myTitle", dlg.getTitle());
assertSame(cmp, dlg.getContentPane().getComponent(0));
assertEquals(JDialog.DISPOSE_ON_CLOSE, dlg.getDefaultCloseOperation());
}
@Test
public void testCenterWithoutOffset() {
if (isHeadless())
return;
Window dlg = new JDialog();
dlg.setSize(100, 100);
windowManager.center(dlg, new Dimension(400, 200), new Point(0, 0));
assertEquals(new Point(150, 50), dlg.getLocation());
}
@Test
public void testCenterWithOffSet() {
if (isHeadless())
return;
Window dlg = new JDialog();
dlg.setSize(100, 100);
windowManager.center(dlg, new Dimension(400, 200), new Point(50, 50));
assertEquals(new Point(200, 100), dlg.getLocation());
}
}