Ignore:
Timestamp:
2016-06-08T09:33:20+02:00 (8 years ago)
Author:
Don-vip
Message:

fix #12927 - Move title management and main frame layout to new class (patch by michael2402) - gsoc-core

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/gui/MainApplication.java

    r10296 r10340  
    66
    77import java.awt.Dimension;
    8 import java.awt.Image;
    9 import java.awt.Toolkit;
    10 import java.awt.event.WindowAdapter;
    11 import java.awt.event.WindowEvent;
    128import java.io.File;
    139import java.io.IOException;
     
    3329import java.util.Collection;
    3430import java.util.EnumMap;
    35 import java.util.LinkedList;
    3631import java.util.List;
    3732import java.util.Locale;
     
    4136import java.util.concurrent.Callable;
    4237
    43 import javax.swing.JFrame;
    4438import javax.swing.JOptionPane;
    4539import javax.swing.RepaintManager;
     
    7064import org.openstreetmap.josm.tools.HttpClient;
    7165import org.openstreetmap.josm.tools.I18n;
    72 import org.openstreetmap.josm.tools.ImageProvider;
    7366import org.openstreetmap.josm.tools.OsmUrlToBounds;
    7467import org.openstreetmap.josm.tools.PlatformHookWindows;
    7568import org.openstreetmap.josm.tools.Utils;
     69import org.openstreetmap.josm.tools.WindowGeometry;
    7670import org.openstreetmap.josm.tools.bugreport.BugReportExceptionHandler;
    7771
     
    8680public class MainApplication extends Main {
    8781
     82    private MainFrame mainFrame;
     83
    8884    /**
    89      * Constructs a new {@code MainApplication}.
     85     * Constructs a new {@code MainApplication} without a window.
    9086     */
    9187    public MainApplication() {
    92        // Allow subclassing (see JOSM.java)
     88        // Allow subclassing (see JOSM.java)
     89        this(null);
    9390    }
    9491
     
    9693     * Constructs a main frame, ready sized and operating. Does not display the frame.
    9794     * @param mainFrame The main JFrame of the application
     95     * @since 10340
    9896     */
    99     public MainApplication(JFrame mainFrame) {
    100         addListener();
    101         mainFrame.setContentPane(contentPanePrivate);
    102         mainFrame.setJMenuBar(menu);
    103         geometry.applySafe(mainFrame);
    104         List<Image> l = new LinkedList<>();
    105         l.add(ImageProvider.get("logo_16x16x32").getImage());
    106         l.add(ImageProvider.get("logo_16x16x8").getImage());
    107         l.add(ImageProvider.get("logo_32x32x32").getImage());
    108         l.add(ImageProvider.get("logo_32x32x8").getImage());
    109         l.add(ImageProvider.get("logo_48x48x32").getImage());
    110         l.add(ImageProvider.get("logo_48x48x8").getImage());
    111         l.add(ImageProvider.get("logo").getImage());
    112         mainFrame.setIconImages(l);
    113         mainFrame.addWindowListener(new WindowAdapter() {
    114             @Override
    115             public void windowClosing(final WindowEvent arg0) {
    116                 Main.exitJosm(true, 0);
    117             }
    118         });
    119         mainFrame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
     97    public MainApplication(MainFrame mainFrame) {
     98        this.mainFrame = mainFrame;
     99    }
     100
     101    @Override
     102    protected void initializeMainWindow() {
     103        if (mainFrame != null) {
     104            mainFrame.initialize();
     105
     106            menu = mainFrame.getMenu();
     107        } else {
     108            // required for running some tests.
     109            menu = new MainMenu();
     110        }
     111    }
     112
     113    @Override
     114    protected void shutdown() {
     115        mainFrame.storeState();
     116        super.shutdown();
    120117    }
    121118
     
    397394        I18n.setupLanguageFonts();
    398395
    399         final JFrame mainFrame = new JFrame(tr("Java OpenStreetMap Editor"));
     396        WindowGeometry geometry = WindowGeometry.mainWindow("gui.geometry",
     397                args.containsKey(Option.GEOMETRY) ? args.get(Option.GEOMETRY).iterator().next() : null,
     398                !args.containsKey(Option.NO_MAXIMIZE) && Main.pref.getBoolean("gui.maximized", false));
     399        final MainFrame mainFrame = new MainFrame(contentPanePrivate, geometry);
    400400        Main.parent = mainFrame;
    401401
     
    464464        monitor.indeterminateSubTask(tr("Creating main GUI"));
    465465        final Main main = new MainApplication(mainFrame);
     466        main.initialize();
    466467
    467468        if (!skipLoadingPlugins) {
     
    483484        boolean maximized = Main.pref.getBoolean("gui.maximized", false);
    484485        if ((!args.containsKey(Option.NO_MAXIMIZE) && maximized) || args.containsKey(Option.MAXIMIZE)) {
    485             if (Toolkit.getDefaultToolkit().isFrameStateSupported(JFrame.MAXIMIZED_BOTH)) {
    486                 Main.windowState = JFrame.MAXIMIZED_BOTH;
    487                 mainFrame.setExtendedState(Main.windowState);
    488             } else {
    489                 Main.debug("Main window: maximizing not supported");
    490             }
     486            mainFrame.setMaximized(true);
    491487        }
    492488        if (main.menu.fullscreenToggleAction != null) {
Note: See TracChangeset for help on using the changeset viewer.