/*
* SK's Minecraft Launcher
* Copyright (C) 2010-2014 Albert Pham <http://www.sk89q.com> and contributors
* Please see LICENSE.txt for license information.
*/
package com.skcraft.launcher.creator.dialog;
import com.jidesoft.swing.SearchableUtils;
import com.jidesoft.swing.TableSearchable;
import com.skcraft.launcher.creator.Creator;
import com.skcraft.launcher.swing.DefaultTable;
import com.skcraft.launcher.swing.SwingHelper;
import com.skcraft.launcher.swing.TableColumnAdjuster;
import lombok.Getter;
import net.miginfocom.swing.MigLayout;
import javax.swing.*;
import java.awt.*;
import java.awt.event.KeyEvent;
public class PackManagerFrame extends JFrame {
@Getter private final JButton newPackButton = new JButton("New Pack", SwingHelper.createIcon(Creator.class, "new.png"));
@Getter private final JButton importButton = new JButton("Add Existing", SwingHelper.createIcon(Creator.class, "import.png"));
@Getter private final JButton editConfigButton = new JButton("Modify", SwingHelper.createIcon(Creator.class, "edit.png"));
@Getter private final JButton openFolderButton = new JButton("Open", SwingHelper.createIcon(Creator.class, "open_folder.png"));
@Getter private final JButton checkProblemsButton = new JButton("Check", SwingHelper.createIcon(Creator.class, "check.png"));
@Getter private final JButton testButton = new JButton("Test", SwingHelper.createIcon(Creator.class, "test.png"));
@Getter private final JButton buildButton = new JButton("Build", SwingHelper.createIcon(Creator.class, "build.png"));
@Getter private final JMenuItem newPackMenuItem = new JMenuItem("New Pack...");
@Getter private final JMenuItem newPackAtLocationMenuItem = new JMenuItem("New Pack at Location...");
@Getter private final JMenuItem importPackMenuItem = new JMenuItem("Add Existing Pack...");
@Getter private final JMenuItem changePackLocationMenuItem = new JMenuItem("Change Pack Location...");
@Getter private final JMenuItem refreshMenuItem = new JMenuItem("Reload Workspace");
@Getter private final JMenuItem removePackItem = new JMenuItem("Remove Pack...");
@Getter private final JMenuItem deletePackItem = new JMenuItem("Delete Pack Forever...");
@Getter private final JMenuItem quitMenuItem = new JMenuItem("Exit");
@Getter private final JMenuItem editConfigMenuItem = new JMenuItem("Edit modpack.json...");
@Getter private final JMenuItem openFolderMenuItem = new JMenuItem("Open Directory");
@Getter private final JMenuItem checkProblemsMenuItem = new JMenuItem("Scan for Problems...");
@Getter private final JMenuItem testMenuItem = new JMenuItem("Test");
@Getter private final JMenuItem testOnlineMenuItem = new JMenuItem("Test Online");
@Getter private final JMenuItem optionsMenuItem = new JMenuItem("Test Launcher Options...");
@Getter private final JMenuItem clearInstanceMenuItem = new JMenuItem("Delete Test Launcher Instances");
@Getter private final JMenuItem clearWebRootMenuItem = new JMenuItem("Empty Test Web Server");
@Getter private final JMenuItem buildMenuItem = new JMenuItem("Build Pack...");
@Getter private final JMenuItem deployServerMenuItem = new JMenuItem("Deploy Server...");
@Getter private final JMenuItem generatePackagesMenuItem = new JMenuItem("Generate packages.json...");
@Getter private final JMenuItem openOutputFolderMenuItem = new JMenuItem("Open Upload Folder");
@Getter private final JMenuItem versionCheckMenuItem = new JMenuItem("Check for Mod Updates");
@Getter private final JMenuItem openWorkspaceFolderMenuItem = new JMenuItem("Open Workspace Folder");
@Getter private final JMenuItem openLauncherFolderMenuItem = new JMenuItem("Open Test Launcher Folder");
@Getter private final JMenuItem openWebRootMenuItem = new JMenuItem("Open Test Web Server Folder");
@Getter private final JMenuItem openConsoleMenuItem = new JMenuItem("Open Console");
@Getter private final JMenuItem docsMenuItem = new JMenuItem("Documentation");
@Getter private final JMenuItem aboutMenuItem = new JMenuItem("About");
@Getter private final JTable packTable = new DefaultTable();
public PackManagerFrame() {
super("Modpack Creator");
setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
initComponents();
initMenu();
pack();
setLocationRelativeTo(null);
SwingHelper.setFrameIcon(this, Creator.class, "icon.png");
}
private void initComponents() {
TableColumnAdjuster adjuster = new TableColumnAdjuster(packTable);
adjuster.adjustColumns();
adjuster.setDynamicAdjustment(true);
packTable.setAutoResizeMode(JTable.AUTO_RESIZE_LAST_COLUMN);
packTable.setAutoCreateRowSorter(true);
JPanel container = new JPanel();
container.setLayout(new MigLayout("fill, wrap 1"));
container.add(createToolbar(), "dock north");
container.add(SwingHelper.wrapScrollPane(packTable), "grow, span, w null:800:null");
TableSearchable tableSearchable = SearchableUtils.installSearchable(packTable);
tableSearchable.setMainIndex(-1);
add(container, BorderLayout.CENTER);
}
private JToolBar createToolbar() {
JToolBar toolBar = new JToolBar("Toolbar");
toolBar.setFloatable(false);
toolBar.add(newPackButton);
toolBar.add(importButton);
toolBar.addSeparator();
toolBar.add(editConfigButton);
toolBar.add(openFolderButton);
toolBar.add(checkProblemsButton);
toolBar.addSeparator();
toolBar.add(testButton);
toolBar.add(buildButton);
return toolBar;
}
private void initMenu() {
int ctrlKeyMask = Toolkit.getDefaultToolkit().getMenuShortcutKeyMask();
newPackMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N, ctrlKeyMask));
newPackAtLocationMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N, ctrlKeyMask | Event.SHIFT_MASK));
editConfigMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_E, ctrlKeyMask));
openFolderMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O, ctrlKeyMask | Event.SHIFT_MASK));
testMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F5, 0));
testOnlineMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F6, 0));
buildMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F10, Event.SHIFT_MASK));
deployServerMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F9, Event.SHIFT_MASK));
docsMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F1, 0));
JMenuBar menuBar;
JMenu menu;
menuBar = new JMenuBar();
menuBar.setBorder(BorderFactory.createEmptyBorder());
Insets menuInset = new Insets(2, 2, 2, 2);
menu = new JMenu("File");
menu.setMargin(menuInset);
menu.setMnemonic('f');
menuBar.add(menu);
menu.add(newPackMenuItem);
menu.add(newPackAtLocationMenuItem);
menu.add(importPackMenuItem);
menu.addSeparator();
menu.add(changePackLocationMenuItem);
menu.add(removePackItem);
menu.add(deletePackItem);
menu.addSeparator();
menu.add(refreshMenuItem);
menu.addSeparator();
menu.add(quitMenuItem);
menu = new JMenu("Edit");
menu.setMargin(menuInset);
menu.setMnemonic('e');
menuBar.add(menu);
menu.add(editConfigMenuItem);
menu.add(openFolderMenuItem);
menu.addSeparator();
menu.add(checkProblemsMenuItem);
menu = new JMenu("Test");
menu.setMargin(menuInset);
menu.setMnemonic('t');
menuBar.add(menu);
menu.add(testMenuItem);
menu.add(testOnlineMenuItem);
menu.addSeparator();
menu.add(optionsMenuItem);
menu.addSeparator();
menu.add(clearInstanceMenuItem);
menu.add(clearWebRootMenuItem);
menu = new JMenu("Build");
menu.setMargin(menuInset);
menu.setMnemonic('b');
menuBar.add(menu);
menu.add(buildMenuItem);
menu.add(deployServerMenuItem);
menu.addSeparator();
menu.add(generatePackagesMenuItem);
menu.addSeparator();
menu.add(openOutputFolderMenuItem);
menu = new JMenu("Tools");
menu.setMargin(menuInset);
menu.setMnemonic('t');
menuBar.add(menu);
menu.add(versionCheckMenuItem);
menu.addSeparator();
menu.add(openWorkspaceFolderMenuItem);
menu.add(openLauncherFolderMenuItem);
menu.add(openWebRootMenuItem);
menu.addSeparator();
menu.add(openConsoleMenuItem);
menu = new JMenu("Help");
menu.setMargin(menuInset);
menu.setMnemonic('h');
menuBar.add(menu);
menu.add(docsMenuItem);
menu.addSeparator();
menu.add(aboutMenuItem);
setJMenuBar(menuBar);
}
}