Search in sources :

Example 1 with MapObjectPanel

use of de.gurkenlabs.utiliti.swing.panels.MapObjectPanel in project litiengine by gurkenlabs.

the class Program method setupInterface.

private static void setupInterface() {
    MenuBar menuBar = new MenuBar();
    JFrame window = ((JFrame) Game.getScreenManager());
    Game.onTerminating(s -> {
        boolean terminate = notifyPendingChanges();
        if (terminate) {
            getUserPreferences().setFrameState(((JFrame) Game.getScreenManager()).getExtendedState());
        }
        return terminate;
    });
    window.setResizable(true);
    window.setMenuBar(menuBar);
    if (userPreferences.getWidth() != 0 && userPreferences.getHeight() != 0) {
        window.setSize(userPreferences.getWidth(), userPreferences.getHeight());
    }
    if (userPreferences.getFrameState() != JFrame.ICONIFIED && userPreferences.getFrameState() != JFrame.NORMAL) {
        window.setExtendedState(userPreferences.getFrameState());
    }
    Canvas canvas = Game.getScreenManager().getRenderComponent();
    canvas.setFocusable(true);
    canvas.setSize((int) (window.getSize().width * 0.75), window.getSize().height);
    window.remove(canvas);
    JPanel renderPane = new JPanel(new BorderLayout());
    renderPane.add(canvas);
    renderPane.setMinimumSize(new Dimension(300, 0));
    initCanvasPopupMenu(canvas);
    JPanel contentPane = new JPanel(new BorderLayout());
    window.setContentPane(contentPane);
    horizontalScroll = new JScrollBar(JScrollBar.HORIZONTAL);
    renderPane.add(horizontalScroll, BorderLayout.SOUTH);
    verticalScroll = new JScrollBar(JScrollBar.VERTICAL);
    renderPane.add(verticalScroll, BorderLayout.EAST);
    horizontalScroll.addAdjustmentListener(e -> {
        if (EditorScreen.instance().getMapComponent().isLoading()) {
            return;
        }
        Point2D newFocus = new Point2D.Double(horizontalScroll.getValue(), Game.getCamera().getFocus().getY());
        Game.getCamera().setFocus(newFocus);
    });
    verticalScroll.addAdjustmentListener(e -> {
        if (EditorScreen.instance().getMapComponent().isLoading()) {
            return;
        }
        Point2D newFocus = new Point2D.Double(Game.getCamera().getFocus().getX(), verticalScroll.getValue());
        Game.getCamera().setFocus(newFocus);
    });
    MapObjectPanel mapEditorPanel = new MapObjectPanel();
    MapSelectionPanel mapSelectionPanel = new MapSelectionPanel();
    JSplitPane mapWrap = new JSplitPane(JSplitPane.VERTICAL_SPLIT);
    mapWrap.setMinimumSize(new Dimension(300, 0));
    mapWrap.setBottomComponent(mapEditorPanel);
    mapWrap.setTopComponent(mapSelectionPanel);
    mapWrap.addPropertyChangeListener(JSplitPane.DIVIDER_LOCATION_PROPERTY, evt -> userPreferences.setSelectionEditSplitter(mapWrap.getDividerLocation()));
    if (userPreferences.getSelectionEditSplitter() != 0) {
        mapWrap.setDividerLocation(userPreferences.getSelectionEditSplitter());
    }
    JPanel bottomPanel = new JPanel(new BorderLayout());
    JTabbedPane bottomTab = new JTabbedPane();
    bottomTab.addTab(Resources.get("assettree_assets"), initAssetsComponent());
    bottomTab.addTab("Console", initConsole());
    bottomTab.setIconAt(0, new ImageIcon(Resources.getImage("asset.png")));
    bottomTab.setIconAt(1, new ImageIcon(Resources.getImage("console.png")));
    bottomPanel.add(bottomTab, BorderLayout.CENTER);
    statusBar = new JLabel("");
    statusBar.setPreferredSize(new Dimension(0, 16));
    statusBar.setFont(new Font(ConsoleLogHandler.CONSOLE_FONT, Font.PLAIN, 10));
    bottomPanel.add(statusBar, BorderLayout.SOUTH);
    EditorScreen.instance().getMapComponent().onSelectionChanged(selection -> {
        if (selection.isEmpty()) {
            statusBar.setText("");
        } else {
            statusBar.setText(" " + selection.size() + " selected objects");
        }
    });
    JSplitPane rendersplit = new JSplitPane(JSplitPane.VERTICAL_SPLIT, renderPane, bottomPanel);
    if (userPreferences.getBottomSplitter() != 0) {
        rendersplit.setDividerLocation(userPreferences.getBottomSplitter());
    } else {
        rendersplit.setDividerLocation((int) (window.getSize().height * 0.75));
    }
    rendersplit.addPropertyChangeListener(JSplitPane.DIVIDER_LOCATION_PROPERTY, evt -> userPreferences.setBottomSplitter(rendersplit.getDividerLocation()));
    rendersplit.setContinuousLayout(true);
    JSplitPane split = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, rendersplit, mapWrap);
    split.setContinuousLayout(true);
    split.addComponentListener(new ComponentAdapter() {

        @Override
        public void componentResized(ComponentEvent e) {
            userPreferences.setWidth(window.getWidth());
            userPreferences.setHeight(window.getHeight());
        }
    });
    split.addPropertyChangeListener(JSplitPane.DIVIDER_LOCATION_PROPERTY, evt -> userPreferences.setMainSplitter(split.getDividerLocation()));
    contentPane.add(split, BorderLayout.CENTER);
    split.setDividerLocation(userPreferences.getMainSplitterPosition() != 0 ? userPreferences.getMainSplitterPosition() : (int) (window.getSize().width * 0.75));
    JToolBar toolbar = initToolBar();
    contentPane.add(toolbar, BorderLayout.NORTH);
    EditorScreen.instance().setMapEditorPanel(mapEditorPanel);
    EditorScreen.instance().setMapSelectionPanel(mapSelectionPanel);
    Menu mnFile = initFileMenu();
    menuBar.add(mnFile);
    Menu mnView = initViewMenu();
    menuBar.add(mnView);
    Menu mnProject = initProjectMenu();
    menuBar.add(mnProject);
    Menu mnMap = initMapMenu();
    menuBar.add(mnMap);
}
Also used : JPanel(javax.swing.JPanel) ImageIcon(javax.swing.ImageIcon) Canvas(java.awt.Canvas) JTabbedPane(javax.swing.JTabbedPane) MenuBar(java.awt.MenuBar) MapObjectPanel(de.gurkenlabs.utiliti.swing.panels.MapObjectPanel) JLabel(javax.swing.JLabel) Dimension(java.awt.Dimension) JToolBar(javax.swing.JToolBar) Font(java.awt.Font) JScrollBar(javax.swing.JScrollBar) BorderLayout(java.awt.BorderLayout) JFrame(javax.swing.JFrame) Point2D(java.awt.geom.Point2D) ComponentEvent(java.awt.event.ComponentEvent) PopupMenu(java.awt.PopupMenu) Menu(java.awt.Menu) JPopupMenu(javax.swing.JPopupMenu) JSplitPane(javax.swing.JSplitPane) ComponentAdapter(java.awt.event.ComponentAdapter)

Aggregations

MapObjectPanel (de.gurkenlabs.utiliti.swing.panels.MapObjectPanel)1 BorderLayout (java.awt.BorderLayout)1 Canvas (java.awt.Canvas)1 Dimension (java.awt.Dimension)1 Font (java.awt.Font)1 Menu (java.awt.Menu)1 MenuBar (java.awt.MenuBar)1 PopupMenu (java.awt.PopupMenu)1 ComponentAdapter (java.awt.event.ComponentAdapter)1 ComponentEvent (java.awt.event.ComponentEvent)1 Point2D (java.awt.geom.Point2D)1 ImageIcon (javax.swing.ImageIcon)1 JFrame (javax.swing.JFrame)1 JLabel (javax.swing.JLabel)1 JPanel (javax.swing.JPanel)1 JPopupMenu (javax.swing.JPopupMenu)1 JScrollBar (javax.swing.JScrollBar)1 JSplitPane (javax.swing.JSplitPane)1 JTabbedPane (javax.swing.JTabbedPane)1 JToolBar (javax.swing.JToolBar)1