/******************************************************************************* * Copyright (c) 2015 * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), * to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, * and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER * DEALINGS IN THE SOFTWARE. *******************************************************************************/ package jsettlers.mapcreator.main; import javax.swing.JFrame; import javax.swing.ToolTipManager; import javax.swing.UIManager; import javax.swing.UIManager.LookAndFeelInfo; import jsettlers.common.map.MapLoadException; import jsettlers.common.utils.MainUtils; import jsettlers.common.utils.OptionableProperties; import jsettlers.exceptionhandler.ExceptionHandler; import jsettlers.main.swing.SwingManagedJSettlers; import jsettlers.mapcreator.control.EditorControl; import jsettlers.mapcreator.main.window.EditorFrame; import jsettlers.mapcreator.main.window.NewFilePanel; import jsettlers.mapcreator.main.window.NewOrOpenDialog; import jsettlers.mapcreator.main.window.OpenPanel; /** * Entry point for Map Editor application */ public class MapCreatorApp { /** * Sets the look and feel to "Nimbus", looks the same for all platforms, and should be available on all plattforms */ private static void loadLookAndFeel() { try { for (LookAndFeelInfo info : UIManager.getInstalledLookAndFeels()) { if ("Nimbus".equals(info.getName())) { UIManager.setLookAndFeel(info.getClassName()); break; } } ToolTipManager.sharedInstance().setLightWeightPopupEnabled(false); } catch (Exception e) { // could not be loaded, ignore error } } /** * Display the New or open selection dialog */ private static void startWithSelectionDialog() { // dummy frame for icon, TODO to test on windows, ubuntu does not display the icon... JFrame dummyFrame = new JFrame(); dummyFrame.setIconImage(EditorFrame.APP_ICON); dummyFrame.setLocationRelativeTo(null); NewOrOpenDialog dlg = new NewOrOpenDialog(dummyFrame); dlg.setVisible(true); dummyFrame.dispose(); if (!dlg.isConfirmed()) { return; } if (dlg.isLastUsed()) { OpenPanel openFile = dlg.getLastUsed(); try { EditorControl control = new EditorControl(); control.loadMap(openFile.getSelectedMap()); } catch (MapLoadException e) { ExceptionHandler.displayError(e, "Could not open map!"); } } else if (dlg.isOpenAction()) { OpenPanel openFile = dlg.getOpenPanel(); try { EditorControl control = new EditorControl(); control.loadMap(openFile.getSelectedMap()); } catch (MapLoadException e) { ExceptionHandler.displayError(e, "Could not open map!"); } } else { NewFilePanel newFile = dlg.getNewFilePanel(); EditorControl control = new EditorControl(); control.createNewMap(newFile.getHeader(), newFile.getGroundTypes()); } } /** * Main * * @param args */ public static void main(String[] args) { try { ExceptionHandler.setupDefaultExceptionHandler(); OptionableProperties options = MainUtils.loadOptions(args); SwingManagedJSettlers.setupResourceManagers(options); SwingManagedJSettlers.loadOptionalSettings(options); loadLookAndFeel(); startWithSelectionDialog(); } catch (Exception e) { ExceptionHandler.displayError(e, "Error launching application"); } } }