Add OptionsPanel
This commit is contained in:
parent
f69ec60557
commit
7cfaf2cd06
122
src/com/annimon/turrets/OptionsPanel.java
Normal file
122
src/com/annimon/turrets/OptionsPanel.java
Normal file
@ -0,0 +1,122 @@
|
||||
package com.annimon.turrets;
|
||||
|
||||
import static com.annimon.turrets.Constants.SCREEN_DIMENSION;
|
||||
import com.annimon.turrets.util.ExceptionHandler;
|
||||
import com.annimon.turrets.util.Prefs;
|
||||
import java.awt.Color;
|
||||
import java.awt.Font;
|
||||
import java.awt.GridBagConstraints;
|
||||
import java.awt.GridBagLayout;
|
||||
import java.awt.Insets;
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.awt.event.ActionListener;
|
||||
import java.net.InetAddress;
|
||||
import java.net.UnknownHostException;
|
||||
import java.text.ParseException;
|
||||
import javax.swing.JButton;
|
||||
import javax.swing.JCheckBox;
|
||||
import javax.swing.JFormattedTextField;
|
||||
import javax.swing.JLabel;
|
||||
import javax.swing.JPanel;
|
||||
import javax.swing.text.DefaultFormatterFactory;
|
||||
import javax.swing.text.MaskFormatter;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author aNNiMON
|
||||
*/
|
||||
public class OptionsPanel extends JPanel {
|
||||
|
||||
private static final Font FONT = new Font("Stencil", 1, 30);
|
||||
private static final int VERT_INSET = 80, HOR_INSET = 50;
|
||||
|
||||
private final JCheckBox soundCheckBox;
|
||||
private final JFormattedTextField ipTextField;
|
||||
private final JButton saveButton;
|
||||
|
||||
public OptionsPanel() {
|
||||
setPreferredSize(SCREEN_DIMENSION);
|
||||
setBackground(Color.BLACK);
|
||||
setLayout(new GridBagLayout());
|
||||
|
||||
final JLabel soundLabel = new JLabel("Sound");
|
||||
soundLabel.setForeground(Color.GRAY);
|
||||
soundLabel.setFont(FONT);
|
||||
GridBagConstraints gbc = new GridBagConstraints();
|
||||
gbc.weightx = 0.4;
|
||||
gbc.insets = new Insets(0, 0, VERT_INSET, HOR_INSET);
|
||||
add(soundLabel, gbc);
|
||||
|
||||
soundCheckBox = new JCheckBox();
|
||||
soundCheckBox.setBorder(null);
|
||||
soundCheckBox.setSelected(Prefs.getInstance().soundEnabled());
|
||||
gbc = new GridBagConstraints();
|
||||
gbc.gridx = 1;
|
||||
gbc.weightx = 0.6;
|
||||
gbc.insets = new Insets(0, 0, VERT_INSET, 0);
|
||||
add(soundCheckBox, gbc);
|
||||
|
||||
final JLabel ipLabel = new JLabel("Server IP");
|
||||
ipLabel.setForeground(Color.GRAY);
|
||||
ipLabel.setFont(FONT);
|
||||
gbc = new GridBagConstraints();
|
||||
gbc.gridy = 1;
|
||||
gbc.weightx = 0.4;
|
||||
gbc.insets = new Insets(0, 0, 0, HOR_INSET);
|
||||
add(ipLabel, gbc);
|
||||
|
||||
ipTextField = new JFormattedTextField();
|
||||
final String pattern = "###.###.###.###";
|
||||
try {
|
||||
ipTextField.setFormatterFactory(new DefaultFormatterFactory(new MaskFormatter(pattern)));
|
||||
} catch (ParseException ex) {
|
||||
ExceptionHandler.handle(ex);
|
||||
}
|
||||
ipTextField.setBackground(Color.BLACK);
|
||||
ipTextField.setForeground(Color.GRAY);
|
||||
ipTextField.setBorder(null);
|
||||
ipTextField.setFont(FONT);
|
||||
ipTextField.setText(Prefs.getInstance().lastIp());
|
||||
gbc = new GridBagConstraints();
|
||||
gbc.gridx = 1;
|
||||
gbc.gridy = 1;
|
||||
gbc.weightx = 0.6;
|
||||
add(ipTextField, gbc);
|
||||
|
||||
saveButton = new JButton("Save");
|
||||
saveButton.setForeground(Color.GRAY);
|
||||
saveButton.setFont(FONT);
|
||||
saveButton.setBorderPainted(false);
|
||||
saveButton.setFocusPainted(false);
|
||||
saveButton.setContentAreaFilled(false);
|
||||
saveButton.addActionListener(saveActionListener);
|
||||
gbc = new GridBagConstraints();
|
||||
gbc.gridy = 2;
|
||||
gbc.gridwidth = 2;
|
||||
gbc.insets = new Insets(VERT_INSET, 0, 0, 0);
|
||||
add(saveButton, gbc);
|
||||
}
|
||||
|
||||
private final ActionListener saveActionListener = new ActionListener() {
|
||||
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
Sound.setEnabled(soundCheckBox.isSelected());
|
||||
Prefs.getInstance().setSoundEnabled(soundCheckBox.isSelected());
|
||||
|
||||
final String ip = ipTextField.getText();
|
||||
if (validateIp(ip)) Prefs.getInstance().setLastIp(ip);
|
||||
Main.getInstance().switchLayout(Main.getInstance().getMainMenu());
|
||||
}
|
||||
};
|
||||
|
||||
private boolean validateIp(String ip) {
|
||||
try {
|
||||
InetAddress.getByName(ip);
|
||||
return true;
|
||||
} catch (UnknownHostException ex) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue
Block a user