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);
}
Aggregations