package edu.oregonstate.cartography.app;
import edu.oregonstate.cartography.grid.Model;
import edu.oregonstate.cartography.gui.SettingsDialog;
import java.awt.Dimension;
import java.awt.GraphicsEnvironment;
import java.awt.Rectangle;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
/**
* Main entry point for GUI version of Terrain Sculptor. This main method is
* launched in a separate JVM to maximize available heap memory.
* @author Bernhard Jenny, Cartography and Geovisualization Group, Oregon State
* University
*/
public class MainGUI {
public static void main(String[] args) {
// on Mac OS X: take the menu bar out of the window and put it on top
// of the main screen.
System.setProperty("com.apple.mrj.application.apple.menu.about.name", "Pyramid Shader");
System.setProperty("apple.laf.useScreenMenuBar", "true");
// use the standard look and feel
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (ClassNotFoundException | IllegalAccessException | InstantiationException | UnsupportedLookAndFeelException e) {
}
// Create and display the main window
java.awt.EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
// create model object, main window and settings dialog
Model model = new Model();
edu.oregonstate.cartography.gui.MainWindow mainWindow = new edu.oregonstate.cartography.gui.MainWindow(model);
SettingsDialog settingsDialog = new SettingsDialog(mainWindow, false);
settingsDialog.setModel(model);
mainWindow.getProgressPanel().removeCancelButton();
mainWindow.getProgressPanel().removeMessageField();
mainWindow.getProgressPanel().horizontalDesign();
mainWindow.setSettingsDialog(settingsDialog);
settingsDialog.setProgressPanel(mainWindow.getProgressPanel());
// find available screen real estate (without taskbar, etc.)
Rectangle screen = GraphicsEnvironment.
getLocalGraphicsEnvironment().getMaximumWindowBounds();
Dimension dlgDim = settingsDialog.getPreferredSize();
// position settings dialog in top-right corner
settingsDialog.pack();
int x = (int) (screen.getMaxX() - dlgDim.getWidth() - 5);
int y = (int) mainWindow.getLocation().getY();
settingsDialog.setLocation(x, y);
// use rest of screen space for main frame
int frameWidth = (int) (screen.getWidth() - dlgDim.getWidth() - 2 * 5);
mainWindow.setSize(frameWidth, (int) screen.getHeight());
mainWindow.setLocation((int) screen.getMinX(), (int) screen.getMinY());
// show windows and open terrain model
mainWindow.setVisible(true);
settingsDialog.setVisible(true);
mainWindow.openGrid();
}
});
}
}