    001// License: GPL. For details, see LICENSE file.
    002package org.openstreetmap.josm.plugins.streetside.gui;
    003
    004import java.awt.BorderLayout;
    005import java.awt.Component;
    006import java.util.List;
    007
    008import org.openstreetmap.josm.gui.SideButton;
    009import org.openstreetmap.josm.gui.dialogs.ToggleDialog;
    010import org.openstreetmap.josm.plugins.streetside.gui.imageinfo.StreetsideViewerPanel;
    011
    012/**
    013 * Toggle dialog that shows an image and some buttons.
    014 *
    015 * @author nokutu
    016 */
    017
    018public final class StreetsideViewerDialog extends ToggleDialog
    019                 {
    020
    021        private static final long serialVersionUID = -8983900297628236197L;
    022
    023        private static final String BASE_TITLE = "360° Streetside Viewer";
    024
    025        private static StreetsideViewerDialog instance;
    026
    027        /**
    028         * Object containing the shown image and that handles zoom and drag
    029         */
    030        private StreetsideViewerPanel streetsideViewerPanel;
    031
    032        private StreetsideViewerDialog() {
    033          // TODO: I18n support in all languages?
    034          super(StreetsideViewerDialog.BASE_TITLE, "streetside-viewer", "Open Streetside Viewer window",
    035                                null, 200, true, StreetsidePreferenceSetting.class);
    036                streetsideViewerPanel = new StreetsideViewerPanel();
    037                createLayout(streetsideViewerPanel, true, null);
    038        }
    039
    040        /**
    041         * Returns the unique instance of the class.
    042         *
    043         * @return The unique instance of the class.
    044         */
    045        public static synchronized StreetsideViewerDialog getInstance() {
    046                if (StreetsideViewerDialog.instance == null) {
    047                        StreetsideViewerDialog.instance = new StreetsideViewerDialog();
    048                }
    049                return StreetsideViewerDialog.instance;
    050        }
    051
    052        /**
    053         * @return true, iff the singleton instance is present
    054         */
    055        public static boolean hasInstance() {
    056                return StreetsideViewerDialog.instance != null;
    057        }
    058
    059        /**
    060         * Destroys the unique instance of the class.
    061         */
    062        public static synchronized void destroyInstance() {
    063                StreetsideViewerDialog.instance = null;
    064        }
    065
    066        /**
    067         * Creates the layout of the dialog.
    068         *
    069         * @param data
    070         *            The content of the dialog
    071         * @param buttons
    072         *            The buttons where you can click
    073         */
    074        public void createLayout(Component data, List<SideButton> buttons) {
    075                removeAll();
    076                createLayout(data, true, buttons);
    077                add(titleBar, BorderLayout.NORTH);
    078        }
    079
    080        public StreetsideViewerPanel getStreetsideViewerPanel() {
    081                return streetsideViewerPanel;
    082        }
    083
    084}