Major Addition of GUI code, Non-Functional at the moment.

This commit is contained in:
Morlok8k 2012-10-04 00:07:45 -07:00
parent ca0c96b204
commit c6ff9d4c03
2 changed files with 638 additions and 16 deletions

View File

@ -1,35 +1,655 @@
package morlok8k.MinecraftLandGenerator.GUI;
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.InputEvent;
import java.awt.event.KeyEvent;
import java.text.NumberFormat;
import javax.swing.BorderFactory;
import javax.swing.Box;
import javax.swing.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JCheckBoxMenuItem;
import javax.swing.JFormattedTextField;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JProgressBar;
import javax.swing.JRadioButton;
import javax.swing.JSeparator;
import javax.swing.KeyStroke;
import javax.swing.SwingConstants;
import javax.swing.border.EmptyBorder;
import javax.swing.UIManager;
import javax.swing.plaf.metal.MetalLookAndFeel;
import javax.swing.plaf.metal.OceanTheme;
/**
*
* @author morlok8k
*/
public class MLG_GUI extends JFrame {
public class MLG_GUI {
private static final long serialVersionUID = -8791419906463664152L; //auto generated
private final JPanel contentPane;
final Font arial = new Font("Arial", Font.PLAIN, 12);
final Font arialBold = new Font("Arial", Font.BOLD, 12);
public JFrame frameMLG_GUI;
JButton btnStart;
JButton btnStop;
JFormattedTextField txtSizeX;
JFormattedTextField txtSizeZ;
JFormattedTextField txtCPX;
JFormattedTextField txtCPZ;
JProgressBar pgbTotPer;
JProgressBar pgbCurPer;
JLabel lblTotPer;
JLabel lblCurPer;
JRadioButton rdbtnSizeSquarify;
JRadioButton rdbtnSizeCustomSize;
JRadioButton rdbtnAlignRegions;
JRadioButton rdbtnAlignChunks;
JRadioButton rdbtnCenterSpawnPoint;
JRadioButton rdbtnCenterOther;
JLabel lblTimeRem;
JLabel lblCurLoc;
JLabel lblCurStatus;
JLabel lblSizeZ;
JLabel lblSizeX;
JLabel lblCPX;
JLabel lblCPZ;
JMenuItem mntmStart;
JMenuItem mntmStop;
JCheckBoxMenuItem chckbxmntmImportCustomList;
/**
* Create the frame.
* Create the application.
*/
public MLG_GUI() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 450, 300);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
contentPane.setLayout(new BorderLayout(0, 0));
setContentPane(contentPane);
final JLabel lblHelloWorld = new JLabel("Hello World");
lblHelloWorld.setHorizontalAlignment(SwingConstants.CENTER);
contentPane.add(lblHelloWorld, BorderLayout.CENTER);
// Program-wide UI stuff here...
MetalLookAndFeel.setCurrentTheme(new OceanTheme());
try {
UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName());
} catch (final Exception e) {
e.printStackTrace();
}
UIManager.put("Button.font", arial);
UIManager.put("ToggleButton.font", arial);
UIManager.put("RadioButton.font", arial);
UIManager.put("CheckBox.font", arial);
UIManager.put("ColorChooser.font", arial);
UIManager.put("ComboBox.font", arial);
UIManager.put("Label.font", arial);
UIManager.put("List.font", arial);
UIManager.put("MenuBar.font", arial);
UIManager.put("MenuItem.font", arial);
UIManager.put("RadioButtonMenuItem.font", arial);
UIManager.put("CheckBoxMenuItem.font", arial);
UIManager.put("Menu.font", arial);
UIManager.put("PopupMenu.font", arial);
UIManager.put("OptionPane.font", arial);
UIManager.put("Panel.font", arial);
UIManager.put("ProgressBar.font", arial);
UIManager.put("ScrollPane.font", arial);
UIManager.put("Viewport.font", arial);
UIManager.put("TabbedPane.font", arial);
UIManager.put("Table.font", arial);
UIManager.put("TableHeader.font", arial);
UIManager.put("TextField.font", arial);
UIManager.put("PasswordField.font", arial);
UIManager.put("TextArea.font", arial);
UIManager.put("TextPane.font", arial);
UIManager.put("EditorPane.font", arial);
UIManager.put("TitledBorder.font", arial);
UIManager.put("ToolBar.font", arial);
UIManager.put("ToolTip.font", arial);
UIManager.put("Tree.font", arial);
// End Look and Feel code
initialize();
}
/**
* Initialize the contents of the frame.
*/
private void initialize() {
// Frame:
frameMLG_GUI = new JFrame();
frameMLG_GUI.setResizable(false);
frameMLG_GUI.setBounds(100, 100, 475, 400);
frameMLG_GUI.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frameMLG_GUI.setVisible(true);
// Menu Bar:
final JMenuBar menuBar = new JMenuBar();
frameMLG_GUI.setJMenuBar(menuBar);
// Top Level Menus:
final JMenu mnFile = new JMenu("File");
final JMenu mnInfo = new JMenu("Info");
final JMenu mnHelp = new JMenu("Help");
// File Menu Objects:
mntmStart = new JMenuItem("Start");
mntmStart.addActionListener(new ActionListener() {
@Override
public void actionPerformed(final ActionEvent arg0) {
start_GUI();
}
});
mntmStop = new JMenuItem("Stop");
mntmStop.setEnabled(false);
mntmStop.addActionListener(new ActionListener() {
@Override
public void actionPerformed(final ActionEvent e) {
stop_GUI();
}
});
final JSeparator hzlFile1 = new JSeparator();
chckbxmntmImportCustomList = new JCheckBoxMenuItem("Import Custom List");
chckbxmntmImportCustomList.addActionListener(new ActionListener() {
@Override
public void actionPerformed(final ActionEvent e) {
// TODO: add Import Custom List
// TODO: disable/enable size objects
}
});
chckbxmntmImportCustomList.setEnabled(false);
final JSeparator hzlFile2 = new JSeparator();
final JMenuItem mntmExit = new JMenuItem("Exit");
mntmExit.addActionListener(new ActionListener() {
@Override
public void actionPerformed(final ActionEvent arg0) {
// TODO: Make sure everything has finished...
// Lets Exit!
System.exit(0);
}
});
mntmExit.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F4, InputEvent.ALT_MASK));
// Info Menu Objects:
final JMenuItem mntmMapInfo = new JMenuItem("Map Info");
mntmMapInfo.addActionListener(new ActionListener() {
@Override
public void actionPerformed(final ActionEvent e) {
// TODO
}
});
// Help Menu Objects:
final JMenuItem mntmAboutMlg = new JMenuItem("About MLG");
mntmAboutMlg.addActionListener(new ActionListener() {
@Override
public void actionPerformed(final ActionEvent e) {
// TODO
}
});
final JSeparator hzlHelp1 = new JSeparator();
final JMenuItem mntmUpdateMlg = new JMenuItem("Update MLG");
mntmUpdateMlg.addActionListener(new ActionListener() {
@Override
public void actionPerformed(final ActionEvent e) {
// TODO
}
});
// Create Menu Bar:
menuBar.add(mnFile);
menuBar.add(mnInfo);
menuBar.add(mnHelp);
// File:
mnFile.add(mntmStart);
mnFile.add(mntmStop);
mnFile.add(hzlFile1);
mnFile.add(chckbxmntmImportCustomList);
mnFile.add(hzlFile2);
mnFile.add(mntmExit);
// Info:
mnInfo.add(mntmMapInfo);
// Help:
mnHelp.add(mntmAboutMlg);
mnHelp.add(hzlHelp1);
mnHelp.add(mntmUpdateMlg);
final NumberFormat nfSizeInt = NumberFormat.getIntegerInstance();
nfSizeInt.setParseIntegerOnly(true);
final NumberFormat nfCPInt = NumberFormat.getIntegerInstance();
nfCPInt.setParseIntegerOnly(true);
frameMLG_GUI.getContentPane().setLayout(new BorderLayout(0, 0));
// create Main Panels
final JPanel mainWest = new JPanel(new BorderLayout());
final JPanel mainEast = new JPanel(new BorderLayout());
final JPanel mainSouth = new JPanel(new BorderLayout());
final JPanel mainNorth = new JPanel(new BorderLayout());
mainSouth.setBorder(BorderFactory.createCompoundBorder(
BorderFactory.createTitledBorder("Progress:"),
BorderFactory.createEmptyBorder(5, 5, 5, 5)));
// Create Interior Panels
final JPanel pnlStartStop = new JPanel(new BorderLayout());
final JPanel pnlStatus = new JPanel();
pnlStatus.setBorder(BorderFactory.createCompoundBorder(
BorderFactory.createTitledBorder("Status:"),
BorderFactory.createEmptyBorder(5, 5, 5, 5)));
btnStart = new JButton("Start");
btnStart.addActionListener(new ActionListener() {
@Override
public void actionPerformed(final ActionEvent e) {
start_GUI();
}
});
btnStop = new JButton("Stop");
btnStop.addActionListener(new ActionListener() {
@Override
public void actionPerformed(final ActionEvent e) {
stop_GUI();
}
});
btnStop.setEnabled(false);
final JLabel lblMinecraftLandGenerator = new JLabel("Minecraft Land Generator");
lblMinecraftLandGenerator.setFont(new Font("Arial", Font.BOLD, 14));
lblMinecraftLandGenerator.setHorizontalAlignment(SwingConstants.CENTER);
// Add Objects to interior panels
mainNorth.add(lblMinecraftLandGenerator, BorderLayout.CENTER);
pnlStartStop.add(btnStart, BorderLayout.LINE_START);
pnlStartStop.add(btnStop, BorderLayout.LINE_END);
// Add interior panels to Main panels
mainWest.add(pnlStartStop, BorderLayout.NORTH);
final Component horizontalStrutStartStop = Box.createHorizontalStrut(25);
pnlStartStop.add(horizontalStrutStartStop, BorderLayout.CENTER);
mainWest.add(pnlStatus, BorderLayout.CENTER);
pnlStatus.setLayout(null);
final JLabel lblCurrentStatus = new JLabel("Current Status:");
lblCurrentStatus.setBounds(12, 12, 118, 15);
pnlStatus.add(lblCurrentStatus);
lblCurrentStatus.setFont(arialBold);
lblCurStatus = new JLabel("Idle");
lblCurStatus.setBounds(12, 24, 118, 15);
pnlStatus.add(lblCurStatus);
lblCurStatus.setHorizontalAlignment(SwingConstants.RIGHT);
final JLabel lblCurrentLocation = new JLabel("Current Location:");
lblCurrentLocation.setBounds(12, 48, 118, 15);
pnlStatus.add(lblCurrentLocation);
lblCurrentLocation.setFont(arialBold);
lblCurLoc = new JLabel("[0,0,0]");
lblCurLoc.setBounds(12, 60, 118, 15);
pnlStatus.add(lblCurLoc);
lblCurLoc.setHorizontalAlignment(SwingConstants.RIGHT);
final JLabel lblTimeRemaining = new JLabel("Time Remaining:");
lblTimeRemaining.setBounds(12, 84, 118, 15);
pnlStatus.add(lblTimeRemaining);
lblTimeRemaining.setFont(arialBold);
lblTimeRem = new JLabel("0 Seconds");
lblTimeRem.setBounds(12, 96, 118, 15);
pnlStatus.add(lblTimeRem);
lblTimeRem.setHorizontalAlignment(SwingConstants.RIGHT);
// add Main panels to Top-Level Panel
frameMLG_GUI.getContentPane().add(mainNorth, BorderLayout.NORTH);
frameMLG_GUI.getContentPane().add(mainWest, BorderLayout.WEST);
frameMLG_GUI.getContentPane().add(mainEast, BorderLayout.EAST);
final JPanel pnlOptions = new JPanel();
mainEast.add(pnlOptions, BorderLayout.CENTER);
pnlOptions.setBorder(BorderFactory.createCompoundBorder(
BorderFactory.createTitledBorder("Options:"),
BorderFactory.createEmptyBorder(5, 5, 5, 5)));
pnlOptions.setLayout(new BorderLayout(0, 0));
final JPanel pnlSize = new JPanel();
pnlSize.setBorder(BorderFactory.createCompoundBorder(
BorderFactory.createTitledBorder("Size:"),
BorderFactory.createEmptyBorder(5, 5, 5, 5)));
pnlOptions.add(pnlSize, BorderLayout.NORTH);
pnlSize.setLayout(new BorderLayout(0, 0));
final JPanel pnlSizeX = new JPanel();
pnlSize.add(pnlSizeX, BorderLayout.WEST);
pnlSizeX.setLayout(new BorderLayout(0, 0));
lblSizeX = new JLabel("X: ");
pnlSizeX.add(lblSizeX, BorderLayout.WEST);
txtSizeX = new JFormattedTextField(nfSizeInt);
txtSizeX.setFont(arial);
txtSizeX.setText("1000");
pnlSizeX.add(txtSizeX, BorderLayout.EAST);
txtSizeX.setColumns(7);
final JPanel pnlSizeZ = new JPanel();
pnlSize.add(pnlSizeZ, BorderLayout.EAST);
pnlSizeZ.setLayout(new BorderLayout(0, 0));
lblSizeZ = new JLabel(" Z: ");
pnlSizeZ.add(lblSizeZ, BorderLayout.WEST);
txtSizeZ = new JFormattedTextField(nfSizeInt);
txtSizeZ.setFont(arial);
txtSizeZ.setText("1000");
txtSizeZ.setColumns(7);
pnlSizeZ.add(txtSizeZ, BorderLayout.EAST);
final JPanel pnlSizeXZ = new JPanel();
pnlSize.add(pnlSizeXZ, BorderLayout.NORTH);
pnlSizeXZ.setLayout(new BorderLayout(0, 0));
rdbtnSizeCustomSize = new JRadioButton("Custom Size:");
rdbtnSizeCustomSize.addActionListener(new ActionListener() {
@Override
public void actionPerformed(final ActionEvent e) {
txtSizeX.setEnabled(true);
txtSizeZ.setEnabled(true);
lblSizeX.setEnabled(true);
lblSizeZ.setEnabled(true);
}
});
rdbtnSizeCustomSize.setSelected(true);
pnlSizeXZ.add(rdbtnSizeCustomSize, BorderLayout.CENTER);
final JPanel pnlSizeSquarify = new JPanel();
pnlSize.add(pnlSizeSquarify, BorderLayout.SOUTH);
pnlSizeSquarify.setLayout(new BorderLayout(0, 0));
rdbtnSizeSquarify = new JRadioButton("Squarify Existing Land");
rdbtnSizeSquarify.addActionListener(new ActionListener() {
@Override
public void actionPerformed(final ActionEvent e) {
txtSizeX.setEnabled(false);
txtSizeZ.setEnabled(false);
lblSizeX.setEnabled(false);
lblSizeZ.setEnabled(false);
}
});
pnlSizeSquarify.add(rdbtnSizeSquarify, BorderLayout.CENTER);
final JPanel pnlCenterPoint = new JPanel();
pnlCenterPoint.setBorder(BorderFactory.createCompoundBorder(
BorderFactory.createTitledBorder("Center Point:"),
BorderFactory.createEmptyBorder(5, 5, 5, 5)));
pnlOptions.add(pnlCenterPoint, BorderLayout.CENTER);
pnlCenterPoint.setLayout(new BorderLayout(0, 0));
final JPanel pnlCPrb = new JPanel();
pnlCenterPoint.add(pnlCPrb, BorderLayout.NORTH);
pnlCPrb.setLayout(new BorderLayout(0, 0));
rdbtnCenterSpawnPoint = new JRadioButton("Spawn Point");
rdbtnCenterSpawnPoint.addActionListener(new ActionListener() {
@Override
public void actionPerformed(final ActionEvent e) {
txtCPX.setEnabled(false);
txtCPZ.setEnabled(false);
lblCPX.setEnabled(false);
lblCPZ.setEnabled(false);
}
});
rdbtnCenterSpawnPoint.setSelected(true);
pnlCPrb.add(rdbtnCenterSpawnPoint, BorderLayout.WEST);
rdbtnCenterOther = new JRadioButton("Other:");
rdbtnCenterOther.addActionListener(new ActionListener() {
@Override
public void actionPerformed(final ActionEvent e) {
txtCPX.setEnabled(true);
txtCPZ.setEnabled(true);
lblCPX.setEnabled(true);
lblCPZ.setEnabled(true);
}
});
pnlCPrb.add(rdbtnCenterOther, BorderLayout.EAST);
final ButtonGroup bgCenterPoint = new ButtonGroup();
bgCenterPoint.add(rdbtnCenterSpawnPoint);
bgCenterPoint.add(rdbtnCenterOther);
final JPanel pnlCPSelection = new JPanel();
pnlCenterPoint.add(pnlCPSelection, BorderLayout.SOUTH);
pnlCPSelection.setLayout(new BorderLayout(0, 0));
final JPanel pnlCPx = new JPanel();
pnlCPSelection.add(pnlCPx, BorderLayout.WEST);
pnlCPx.setLayout(new BorderLayout(0, 0));
lblCPX = new JLabel("X: ");
lblCPX.setEnabled(false);
pnlCPx.add(lblCPX, BorderLayout.WEST);
txtCPX = new JFormattedTextField(nfCPInt);
txtCPX.setFont(arial);
txtCPX.setEnabled(false);
txtCPX.setText("0");
pnlCPx.add(txtCPX, BorderLayout.EAST);
txtCPX.setColumns(7);
final JPanel pnlCPz = new JPanel();
pnlCPSelection.add(pnlCPz, BorderLayout.EAST);
pnlCPz.setLayout(new BorderLayout(0, 0));
lblCPZ = new JLabel("Z: ");
lblCPZ.setEnabled(false);
pnlCPz.add(lblCPZ, BorderLayout.WEST);
txtCPZ = new JFormattedTextField(nfCPInt);
txtCPZ.setEnabled(false);
txtCPZ.setFont(arial);
txtCPZ.setText("0");
pnlCPz.add(txtCPZ, BorderLayout.EAST);
txtCPZ.setColumns(7);
final JPanel pnlAlignment = new JPanel();
pnlAlignment.setBorder(BorderFactory.createCompoundBorder(
BorderFactory.createTitledBorder("Alignment:"),
BorderFactory.createEmptyBorder(5, 5, 5, 5)));
pnlOptions.add(pnlAlignment, BorderLayout.SOUTH);
pnlAlignment.setLayout(new BorderLayout(0, 0));
// JRadioButton rdbtnBlocks = new JRadioButton("Blocks");
// pnlAlignment.add(rdbtnBlocks, BorderLayout.WEST);
rdbtnAlignChunks = new JRadioButton("Chunks");
rdbtnAlignChunks.setSelected(true);
pnlAlignment.add(rdbtnAlignChunks, BorderLayout.WEST);
rdbtnAlignRegions = new JRadioButton("Regions");
pnlAlignment.add(rdbtnAlignRegions, BorderLayout.EAST);
final ButtonGroup bgAlignment = new ButtonGroup();
// bgAlignment.add(rdbtnBlocks);
bgAlignment.add(rdbtnAlignChunks);
bgAlignment.add(rdbtnAlignRegions);
final ButtonGroup bgSize = new ButtonGroup();
bgSize.add(rdbtnSizeCustomSize);
bgSize.add(rdbtnSizeSquarify);
frameMLG_GUI.getContentPane().add(mainSouth, BorderLayout.SOUTH);
final JPanel pnlCurPrg = new JPanel();
mainSouth.add(pnlCurPrg, BorderLayout.NORTH);
pnlCurPrg.setLayout(new BorderLayout(0, 0));
final JLabel lblCurrentProgress = new JLabel("Current Progress: ");
pnlCurPrg.add(lblCurrentProgress, BorderLayout.WEST);
lblCurPer = new JLabel("100%");
pnlCurPrg.add(lblCurPer, BorderLayout.EAST);
pgbCurPer = new JProgressBar();
pnlCurPrg.add(pgbCurPer, BorderLayout.CENTER);
final JPanel pnlTotPrg = new JPanel();
mainSouth.add(pnlTotPrg, BorderLayout.SOUTH);
pnlTotPrg.setLayout(new BorderLayout(0, 0));
final JLabel lblTotalProgress = new JLabel("Total Progress: ");
pnlTotPrg.add(lblTotalProgress, BorderLayout.WEST);
lblTotPer = new JLabel("100%");
pnlTotPrg.add(lblTotPer, BorderLayout.EAST);
pgbTotPer = new JProgressBar();
pnlTotPrg.add(pgbTotPer, BorderLayout.CENTER);
frameMLG_GUI.pack();
frameMLG_GUI.setLocationRelativeTo(null);
}
void start_GUI() {
// TODO: add additional start code
btnStop.setEnabled(true);
btnStart.setEnabled(false);
mntmStop.setEnabled(true);
mntmStart.setEnabled(false);
txtSizeX.setEnabled(false);
txtSizeZ.setEnabled(false);
lblSizeX.setEnabled(false);
lblSizeZ.setEnabled(false);
txtCPX.setEnabled(false);
txtCPZ.setEnabled(false);
lblCPX.setEnabled(false);
lblCPZ.setEnabled(false);
rdbtnSizeSquarify.setEnabled(false);
rdbtnSizeCustomSize.setEnabled(false);
rdbtnAlignRegions.setEnabled(false);
rdbtnAlignChunks.setEnabled(false);
rdbtnCenterSpawnPoint.setEnabled(false);
rdbtnCenterOther.setEnabled(false);
}
void stop_GUI() {
// TODO: add additional start code
if (rdbtnSizeCustomSize.isSelected()) {
txtSizeX.setEnabled(true);
txtSizeZ.setEnabled(true);
lblSizeX.setEnabled(true);
lblSizeZ.setEnabled(true);
} else {
txtSizeX.setEnabled(false);
txtSizeZ.setEnabled(false);
lblSizeX.setEnabled(false);
lblSizeZ.setEnabled(false);
}
if (rdbtnCenterSpawnPoint.isSelected()) {
txtCPX.setEnabled(false);
txtCPZ.setEnabled(false);
lblCPX.setEnabled(false);
lblCPZ.setEnabled(false);
} else {
txtCPX.setEnabled(true);
txtCPZ.setEnabled(true);
lblCPX.setEnabled(true);
lblCPZ.setEnabled(true);
}
rdbtnSizeSquarify.setEnabled(true);
rdbtnSizeCustomSize.setEnabled(true);
rdbtnAlignRegions.setEnabled(true);
rdbtnAlignChunks.setEnabled(true);
rdbtnCenterSpawnPoint.setEnabled(true);
rdbtnCenterOther.setEnabled(true);
mntmStop.setEnabled(false);
mntmStart.setEnabled(true);
btnStart.setEnabled(true);
btnStop.setEnabled(false);
}
}

View File

@ -104,11 +104,13 @@ public class Main {
// Launch MLG_GUI
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
try {
final MLG_GUI frame = new MLG_GUI();
frame.setVisible(true);
final MLG_GUI window = new MLG_GUI();
window.frameMLG_GUI.setVisible(true);
} catch (final Exception e) {
e.printStackTrace();
}