package me.escapeNT.pail.GUIComponents;
import com.google.api.translate.Language;
import java.awt.Color;
import java.awt.GridLayout;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.InputStreamReader;
import java.net.URL;
import java.util.HashMap;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JCheckBox;
import javax.swing.JOptionPane;
import javax.swing.LookAndFeel;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import javax.swing.UIManager.LookAndFeelInfo;
import me.escapeNT.pail.Pail;
import me.escapeNT.pail.Util.Localizable;
import me.escapeNT.pail.config.General;
import me.escapeNT.pail.config.PanelConfig;
import me.escapeNT.pail.config.ServerConfigHandler;
import me.escapeNT.pail.Util.UpdateHandler;
import me.escapeNT.pail.Util.Util;
import org.bukkit.Bukkit;
import org.bukkit.GameMode;
import org.bukkit.Server;
import org.bukkit.World;
import org.bukkit.command.ConsoleCommandSender;
/**
* Panel for editing server settings.
* @author escapeNT
*/
public class SettingsPanel extends javax.swing.JPanel implements Localizable {
private WaypointEditPanel waypointEditor;
private boolean sel = true;
/** Creates new form SettingsPanel */
public SettingsPanel() {
initComponents();
// load languages
for(Language l : Language.class.getEnumConstants()) {
if(!l.toString().equals("")) {
language.addItem(l.getFullName());
if(General.getLang().toString().equals(l.toString())) {
language.setSelectedItem(l.getFullName());
}
}
}
waypointEditor = new WaypointEditPanel();
craftVersion.setText(Util.translate("Craftbukkit version: ") + parseCraftVersion());
SwingUtilities.invokeLater(new Runnable() {
public void run() {
parseCraftUpdate();
}
});
pailVersion.setText(Util.translate("Pail version: ") + Pail.PLUGIN_VERSION);
autoUpdate.setSelected(General.isAutoUpdate());
loadConfig();
settingsTabs.add(Util.translate("Waypoints"), waypointEditor);
//settingsTabs.add(Util.translate("Scheduler"), new SchedulerPanel());
autoUpdate.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent e) {
General.setAutoUpdate(autoUpdate.isSelected());
General.save();
if(autoUpdate.isSelected() && UpdateHandler.isUpToDate() != null
&& !UpdateHandler.isUpToDate()) {
new UpdateView().setVisible(true);
}
}
});
for(LookAndFeelInfo laf : UIManager.getInstalledLookAndFeels()) {
try {
Class feel = Class.forName(laf.getClassName());
if(((LookAndFeel)feel.newInstance()).isSupportedLookAndFeel()) {
themes.addItem(laf.getName());
if(laf.getClassName().equals(General.getLookAndFeel())) {
themes.setSelectedItem(laf.getName());
}
}
} catch (Exception ex) {
Logger.getLogger(SettingsPanel.class.getName()).log(Level.SEVERE, null, ex);
}
}
translateComponent();
tabActivationPanel.setLayout(new GridLayout(Util.getInterfaceComponents().keySet().size() / 2, 2));
}
private String parseCraftVersion() {
try {
String v = Bukkit.getServer().getVersion();
return v.substring(v.indexOf("jnks") - 4, v.indexOf("jnks"));
} catch(Exception ex) {
return "0000";
}
}
private void parseCraftUpdate() {
try {
URL url = new URL("http://ci.bukkit.org/job/dev-CraftBukkit/Recommended/buildNumber");
BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));
String v = in.readLine();
in.close();
boolean upToDate = false;
if(Integer.parseInt(parseCraftVersion()) >= Integer.parseInt(v)) {
upToDate = true;
}
if(upToDate) {
update.setText(Util.translate("Latest recommended build: ") + v);
update.setForeground(new Color(13, 190, 17));
}
else {
update.setText(Util.translate("Latest recommended build: ") + v + Util.translate(" - Update required!"));
update.setForeground(Color.red);
}
} catch (Exception ex) {
update.setText(Util.translate("Latest recommended build: Unknown"));
update.setForeground(new Color(255, 200, 33));
}
}
/**
* Loads the stored values from the server configuration.
*/
private void loadConfig() {
// Temporary fix until getMotd and getDifficulty are implemented
String diff = "Easy";
String smotd = "A minecraft server";
try {
BufferedReader in = new BufferedReader(new FileReader("server.properties"));
String str;
while((str = in.readLine()) != null) {
if(str.indexOf("difficulty") != -1) {
int d = Integer.parseInt(str.split("=")[1].trim());
switch(d) {
case 0: diff = "Peaceful"; break;
case 1: diff = "Easy"; break;
case 2: diff = "Normal"; break;
case 3: diff = "Hard"; break;
}
} else if(str.indexOf("motd") != -1) {
smotd = str.split("=")[1].trim();
}
}
in.close();
} catch (Exception e) {}
// End temp fix
Server s = Bukkit.getServer();
World main = s.getWorlds().get(0);
worldName.setText(main.getName());
seed.setText(new Long(main.getSeed()).toString());
ip.setText(s.getIp());
nether.setSelected(s.getAllowNether());
spawnMonsters.setSelected(main.getAllowMonsters());
spawnAnimals.setSelected(main.getAllowAnimals());
flight.setSelected(s.getAllowFlight());
pvp.setSelected(main.getPVP());
online.setSelected(s.getOnlineMode());
whitelist.setSelected(s.hasWhitelist());
viewDistance.setValue(s.getViewDistance());
port.setValue(s.getPort());
maxPlayers.setValue(s.getMaxPlayers());
motd.setText(smotd);
difficulty.setSelectedItem(diff);
boolean c = s.getDefaultGameMode() == GameMode.CREATIVE;
creative.setSelected(c);
survival.setSelected(!c);
}
/** This method is called from within the constructor to
* initialize the form.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {
gameMode = new javax.swing.ButtonGroup();
settingsTabs = new javax.swing.JTabbedPane();
jPanel1 = new javax.swing.JPanel();
jPanel2 = new javax.swing.JPanel();
jLabel1 = new javax.swing.JLabel();
worldName = new javax.swing.JTextField();
jLabel2 = new javax.swing.JLabel();
ip = new javax.swing.JTextField();
nether = new javax.swing.JCheckBox();
spawnMonsters = new javax.swing.JCheckBox();
spawnAnimals = new javax.swing.JCheckBox();
online = new javax.swing.JCheckBox();
pvp = new javax.swing.JCheckBox();
whitelist = new javax.swing.JCheckBox();
flight = new javax.swing.JCheckBox();
viewDistance = new javax.swing.JSpinner();
jLabel3 = new javax.swing.JLabel();
jLabel4 = new javax.swing.JLabel();
port = new javax.swing.JSpinner();
revert = new javax.swing.JButton();
save = new javax.swing.JButton();
jLabel5 = new javax.swing.JLabel();
maxPlayers = new javax.swing.JSpinner();
jLabel6 = new javax.swing.JLabel();
seed = new javax.swing.JTextField();
jLabel9 = new javax.swing.JLabel();
survival = new javax.swing.JRadioButton();
creative = new javax.swing.JRadioButton();
jLabel10 = new javax.swing.JLabel();
difficulty = new javax.swing.JComboBox();
jLabel11 = new javax.swing.JLabel();
motd = new javax.swing.JTextField();
craftVersion = new javax.swing.JLabel();
pailVersion = new javax.swing.JLabel();
update = new javax.swing.JLabel();
jLayeredPane1 = new javax.swing.JLayeredPane();
tabActivationPanel = new me.escapeNT.pail.GUIComponents.TabActivationPanel();
reload = new javax.swing.JButton();
autoUpdate = new javax.swing.JCheckBox();
themes = new javax.swing.JComboBox();
jLabel7 = new javax.swing.JLabel();
jLabel8 = new javax.swing.JLabel();
language = new javax.swing.JComboBox();
applyLang = new javax.swing.JButton();
settingsTabs.setTabLayoutPolicy(javax.swing.JTabbedPane.SCROLL_TAB_LAYOUT);
settingsTabs.setTabPlacement(javax.swing.JTabbedPane.LEFT);
settingsTabs.setFocusable(false);
jPanel1.setFocusable(false);
jPanel2.setBorder(javax.swing.BorderFactory.createTitledBorder(Util.translate("Server Properties")));
jLabel1.setText("World name");
worldName.setToolTipText("The name of the default world on the server");
jLabel2.setText("World seed");
ip.setToolTipText("Set this if you want the server to bind to a particular IP.");
nether.setText("Allow nether");
nether.setToolTipText("Allow portal transport to the nether.");
spawnMonsters.setText("Spawn monsters");
spawnMonsters.setToolTipText("Spawn hostile monsters.");
spawnAnimals.setText("Spawn animals");
spawnAnimals.setToolTipText("Spawn non-hostile animals.");
online.setText("Online mode");
online.setToolTipText("Server checks connecting players against minecraft's account database.");
pvp.setText("Enable PVP");
pvp.setToolTipText("Enable player verses player damage.");
whitelist.setText("Whitelist enabled");
whitelist.setToolTipText("With a whitelist enabled, users not on the list will be unable to connect.");
flight.setText("Allow flight");
flight.setToolTipText("Will allow users to use flight/no-clip on the server.");
viewDistance.setToolTipText("The number of chunks sent to the client. (3-15)");
jLabel3.setText("View distance");
jLabel4.setText("Server port");
port.setToolTipText("Port on which the server is running.");
revert.setText("Revert");
revert.setFocusable(false);
revert.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
revertActionPerformed(evt);
}
});
save.setText("Save");
save.setFocusable(false);
save.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
saveActionPerformed(evt);
}
});
jLabel5.setText("Max players");
jLabel5.setToolTipText("The maximum number of players allowed to connect.");
jLabel6.setText("Server IP");
seed.setToolTipText("The seed used in generating new terrain.");
jLabel9.setText("Game mode");
gameMode.add(survival);
survival.setText("Survival");
gameMode.add(creative);
creative.setText("Creative");
creative.setActionCommand("Creative");
jLabel10.setText("Difficulty");
difficulty.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Peaceful", "Easy", "Normal", "Hard" }));
jLabel11.setText("MOTD");
org.jdesktop.layout.GroupLayout jPanel2Layout = new org.jdesktop.layout.GroupLayout(jPanel2);
jPanel2.setLayout(jPanel2Layout);
jPanel2Layout.setHorizontalGroup(
jPanel2Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(jPanel2Layout.createSequentialGroup()
.add(14, 14, 14)
.add(jLabel1, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 90, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
.add(worldName, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 240, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
.add(jPanel2Layout.createSequentialGroup()
.add(13, 13, 13)
.add(jLabel2, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 80, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
.add(11, 11, 11)
.add(seed, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 240, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
.add(org.jdesktop.layout.GroupLayout.TRAILING, jPanel2Layout.createSequentialGroup()
.add(192, 192, 192)
.add(revert)
.addPreferredGap(org.jdesktop.layout.LayoutStyle.UNRELATED)
.add(save)
.add(42, 42, 42))
.add(jPanel2Layout.createSequentialGroup()
.addContainerGap()
.add(jPanel2Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(jPanel2Layout.createSequentialGroup()
.add(spawnMonsters, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 170, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
.add(online, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 170, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
.add(jPanel2Layout.createSequentialGroup()
.add(spawnAnimals, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 170, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
.add(whitelist, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 170, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
.add(flight, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 310, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
.add(jPanel2Layout.createSequentialGroup()
.add(jLabel3, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 110, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
.add(viewDistance, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 55, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
.add(15, 15, 15)
.add(jLabel5, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 90, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
.add(maxPlayers, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 60, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
.add(jPanel2Layout.createSequentialGroup()
.add(jPanel2Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(jPanel2Layout.createSequentialGroup()
.add(jLabel10, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 94, Short.MAX_VALUE)
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
.add(difficulty, 0, 185, Short.MAX_VALUE))
.add(jPanel2Layout.createSequentialGroup()
.add(jLabel4, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 90, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
.add(port, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 96, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
.add(jPanel2Layout.createSequentialGroup()
.add(jLabel9)
.add(11, 11, 11)
.add(survival, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 99, Short.MAX_VALUE)
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
.add(creative, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 100, Short.MAX_VALUE)))
.add(56, 56, 56))
.add(jPanel2Layout.createSequentialGroup()
.add(nether, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 170, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
.add(pvp, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 170, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
.add(jPanel2Layout.createSequentialGroup()
.add(86, 86, 86)
.add(motd, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 238, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)))
.add(32, 32, 32))
.add(jPanel2Layout.createSequentialGroup()
.add(14, 14, 14)
.add(jPanel2Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(jPanel2Layout.createSequentialGroup()
.add(jLabel11, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE)
.addContainerGap())
.add(jPanel2Layout.createSequentialGroup()
.add(jLabel6, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 90, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
.add(ip, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 240, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))))
);
jPanel2Layout.setVerticalGroup(
jPanel2Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(jPanel2Layout.createSequentialGroup()
.add(jPanel2Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(jPanel2Layout.createSequentialGroup()
.add(6, 6, 6)
.add(jLabel1, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 20, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
.add(worldName, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
.add(12, 12, 12)
.add(jPanel2Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(jPanel2Layout.createSequentialGroup()
.add(6, 6, 6)
.add(jLabel2, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 20, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
.add(seed, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
.add(12, 12, 12)
.add(jPanel2Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(jLabel6, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 30, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
.add(ip, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(org.jdesktop.layout.LayoutStyle.UNRELATED)
.add(jPanel2Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING, false)
.add(jLabel11, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.add(motd))
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED, 14, Short.MAX_VALUE)
.add(jPanel2Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(nether)
.add(pvp))
.add(17, 17, 17)
.add(jPanel2Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(spawnMonsters)
.add(online))
.add(17, 17, 17)
.add(jPanel2Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(spawnAnimals)
.add(whitelist))
.add(17, 17, 17)
.add(flight)
.add(7, 7, 7)
.add(jPanel2Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(jLabel3, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 30, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
.add(viewDistance, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
.add(jLabel5, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 30, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
.add(maxPlayers, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
.add(10, 10, 10)
.add(jPanel2Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(jLabel4, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 30, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
.add(port, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(org.jdesktop.layout.LayoutStyle.UNRELATED)
.add(jPanel2Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
.add(jLabel9)
.add(creative)
.add(survival))
.add(18, 18, 18)
.add(jPanel2Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
.add(jLabel10)
.add(difficulty, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(org.jdesktop.layout.LayoutStyle.UNRELATED)
.add(jPanel2Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
.add(save)
.add(revert))
.addContainerGap())
);
craftVersion.setText("Craftbukkit version:");
pailVersion.setText("Pail version:");
pailVersion.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
pailVersionMouseClicked(evt);
}
});
update.setText("Latest recommended build:");
jLayeredPane1.setBorder(javax.swing.BorderFactory.createTitledBorder(Util.translate("Active Tabs")));
org.jdesktop.layout.GroupLayout tabActivationPanelLayout = new org.jdesktop.layout.GroupLayout(tabActivationPanel);
tabActivationPanel.setLayout(tabActivationPanelLayout);
tabActivationPanelLayout.setHorizontalGroup(
tabActivationPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(0, 400, Short.MAX_VALUE)
);
tabActivationPanelLayout.setVerticalGroup(
tabActivationPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(0, 270, Short.MAX_VALUE)
);
tabActivationPanel.setBounds(10, 20, 400, 270);
jLayeredPane1.add(tabActivationPanel, javax.swing.JLayeredPane.DEFAULT_LAYER);
reload.setText("Save");
reload.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
reloadActionPerformed(evt);
}
});
reload.setBounds(320, 290, 80, 30);
jLayeredPane1.add(reload, javax.swing.JLayeredPane.DEFAULT_LAYER);
autoUpdate.setText("Automatically check for updates");
autoUpdate.setFocusable(false);
themes.setFocusable(false);
themes.addItemListener(new java.awt.event.ItemListener() {
public void itemStateChanged(java.awt.event.ItemEvent evt) {
themesItemStateChanged(evt);
}
});
jLabel7.setText("Skin");
jLabel8.setText("Language");
language.addItemListener(new java.awt.event.ItemListener() {
public void itemStateChanged(java.awt.event.ItemEvent evt) {
languageItemStateChanged(evt);
}
});
applyLang.setText("Apply language");
applyLang.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
applyLangActionPerformed(evt);
}
});
org.jdesktop.layout.GroupLayout jPanel1Layout = new org.jdesktop.layout.GroupLayout(jPanel1);
jPanel1.setLayout(jPanel1Layout);
jPanel1Layout.setHorizontalGroup(
jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(jPanel1Layout.createSequentialGroup()
.addContainerGap()
.add(jPanel2, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 375, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(org.jdesktop.layout.LayoutStyle.UNRELATED)
.add(jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(jLayeredPane1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 430, Short.MAX_VALUE)
.add(jPanel1Layout.createSequentialGroup()
.add(craftVersion, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 420, Short.MAX_VALUE)
.add(10, 10, 10))
.add(jPanel1Layout.createSequentialGroup()
.add(update, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 420, Short.MAX_VALUE)
.add(10, 10, 10))
.add(jPanel1Layout.createSequentialGroup()
.add(160, 160, 160)
.add(autoUpdate, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 270, Short.MAX_VALUE))
.add(jPanel1Layout.createSequentialGroup()
.add(pailVersion, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 140, Short.MAX_VALUE)
.add(290, 290, 290))
.add(org.jdesktop.layout.GroupLayout.TRAILING, applyLang, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 140, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
.add(org.jdesktop.layout.GroupLayout.TRAILING, jPanel1Layout.createSequentialGroup()
.add(jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(jPanel1Layout.createSequentialGroup()
.add(jLabel8, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 72, Short.MAX_VALUE)
.addPreferredGap(org.jdesktop.layout.LayoutStyle.UNRELATED))
.add(jPanel1Layout.createSequentialGroup()
.add(jLabel7, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 38, Short.MAX_VALUE)
.add(45, 45, 45)))
.add(jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.TRAILING)
.add(themes, 0, 336, Short.MAX_VALUE)
.add(language, 0, 336, Short.MAX_VALUE))
.add(11, 11, 11)))
.add(61, 61, 61))
);
jPanel1Layout.setVerticalGroup(
jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(org.jdesktop.layout.GroupLayout.TRAILING, jPanel1Layout.createSequentialGroup()
.addContainerGap()
.add(jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.TRAILING)
.add(org.jdesktop.layout.GroupLayout.LEADING, jPanel1Layout.createSequentialGroup()
.add(craftVersion, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 20, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
.add(update, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 20, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
.add(jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(autoUpdate)
.add(pailVersion, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 20, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
.add(17, 17, 17)
.add(jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
.add(jLabel7, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 20, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
.add(themes, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 20, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
.add(10, 10, 10)
.add(jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
.add(jLabel8, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 20, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
.add(language, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 20, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
.add(10, 10, 10)
.add(applyLang, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 30, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
.add(jLayeredPane1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 362, Short.MAX_VALUE))
.add(jPanel2, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addContainerGap())
);
settingsTabs.addTab("General", jPanel1);
org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(this);
this.setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(settingsTabs, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 946, Short.MAX_VALUE)
);
layout.setVerticalGroup(
layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(settingsTabs, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 604, Short.MAX_VALUE)
);
}// </editor-fold>//GEN-END:initComponents
private void reloadActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_reloadActionPerformed
for(JCheckBox b : tabActivationPanel.getBoxes().values()) {
PanelConfig.getPanelsActivated().put(b.getText(), b.isSelected());
}
PanelConfig.save();
Util.getPlugin().getMainWindow().loadPanels();
}//GEN-LAST:event_reloadActionPerformed
private void pailVersionMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_pailVersionMouseClicked
new AboutView().setVisible(true);
}//GEN-LAST:event_pailVersionMouseClicked
private void saveActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_saveActionPerformed
HashMap<String, String> saveData = new HashMap<String, String>();
saveData.put("server-ip", ip.getText());
saveData.put("level-name", worldName.getText());
saveData.put("level-seed", seed.getText());
saveData.put("motd", motd.getText());
saveData.put("allow-nether", Boolean.toString(nether.isSelected()));
saveData.put("spawn-monsters", Boolean.toString(spawnMonsters.isSelected()));
saveData.put("spawn-animals", Boolean.toString(spawnAnimals.isSelected()));
saveData.put("allow-flight", Boolean.toString(flight.isSelected()));
saveData.put("pvp", Boolean.toString(pvp.isSelected()));
saveData.put("online-mode", Boolean.toString(online.isSelected()));
saveData.put("white-list", Boolean.toString(whitelist.isSelected()));
saveData.put("view-distance", viewDistance.getValue().toString());
saveData.put("server-port", port.getValue().toString());
saveData.put("max-players", maxPlayers.getValue().toString());
saveData.put("difficulty", Integer.toString(diffStringToInt(difficulty.getSelectedItem().toString())));
saveData.put("gamemode", Integer.toString((survival.isSelected() ? 0 : 1)));
ServerConfigHandler.save(saveData);
JOptionPane.showMessageDialog(Util.getPlugin().getMainWindow(),
"Server config saved!\nRestart the server to apply.", "Config Saved", JOptionPane.INFORMATION_MESSAGE);
}//GEN-LAST:event_saveActionPerformed
private void revertActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_revertActionPerformed
loadConfig();
}//GEN-LAST:event_revertActionPerformed
private void themesItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_themesItemStateChanged
if(evt.getStateChange() == ItemEvent.SELECTED && getThemes().getSelectedItem() != null) {
for(final LookAndFeelInfo laf : UIManager.getInstalledLookAndFeels()) {
if(laf.getName().equals((String)getThemes().getSelectedItem())) {
try {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
try {
UIManager.setLookAndFeel((LookAndFeel) Class.forName(laf.getClassName()).newInstance());
} catch(Exception ex) {
Logger.getLogger(SettingsPanel.class.getName()).log(Level.SEVERE, null, ex);
}
UIManager.getLookAndFeelDefaults().put("ClassLoader", getClass().getClassLoader());
Util.getPlugin().getMainWindow().getRootPane().updateUI();
Util.getPlugin().getMainWindow().getJMenuBar().updateUI();
SwingUtilities.updateComponentTreeUI(Util.getPlugin().getMainWindow());
}
});
} catch (Exception ex) {
Logger.getLogger(SettingsPanel.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
}
}//GEN-LAST:event_themesItemStateChanged
private void languageItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_languageItemStateChanged
if(evt.getStateChange() == ItemEvent.SELECTED && !sel) {
General.setLang(Language.fromString((String)language.getSelectedItem()));
} else {
sel = false;
}
}//GEN-LAST:event_languageItemStateChanged
private void applyLangActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_applyLangActionPerformed
Util.getPlugin().saveState();
Bukkit.getServer().dispatchCommand(Util.getConsoleSender(), "reload");
}//GEN-LAST:event_applyLangActionPerformed
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JButton applyLang;
private javax.swing.JCheckBox autoUpdate;
private javax.swing.JLabel craftVersion;
private javax.swing.JRadioButton creative;
private javax.swing.JComboBox difficulty;
private javax.swing.JCheckBox flight;
private javax.swing.ButtonGroup gameMode;
private javax.swing.JTextField ip;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel10;
private javax.swing.JLabel jLabel11;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JLabel jLabel4;
private javax.swing.JLabel jLabel5;
private javax.swing.JLabel jLabel6;
private javax.swing.JLabel jLabel7;
private javax.swing.JLabel jLabel8;
private javax.swing.JLabel jLabel9;
private javax.swing.JLayeredPane jLayeredPane1;
private javax.swing.JPanel jPanel1;
private javax.swing.JPanel jPanel2;
private javax.swing.JComboBox language;
private javax.swing.JSpinner maxPlayers;
private javax.swing.JTextField motd;
private javax.swing.JCheckBox nether;
private javax.swing.JCheckBox online;
private javax.swing.JLabel pailVersion;
private javax.swing.JSpinner port;
private javax.swing.JCheckBox pvp;
private javax.swing.JButton reload;
private javax.swing.JButton revert;
private javax.swing.JButton save;
private javax.swing.JTextField seed;
private javax.swing.JTabbedPane settingsTabs;
private javax.swing.JCheckBox spawnAnimals;
private javax.swing.JCheckBox spawnMonsters;
private javax.swing.JRadioButton survival;
private me.escapeNT.pail.GUIComponents.TabActivationPanel tabActivationPanel;
private javax.swing.JComboBox themes;
private javax.swing.JLabel update;
private javax.swing.JSpinner viewDistance;
private javax.swing.JCheckBox whitelist;
private javax.swing.JTextField worldName;
// End of variables declaration//GEN-END:variables
/**
* @return the waypointEditor
*/
public WaypointEditPanel getWaypointEditor() {
return waypointEditor;
}
/**
* @return the theme
*/
public javax.swing.JComboBox getThemes() {
return themes;
}
public final void translateComponent() {
Util.translateTextComponent(jLabel1);
Util.translateTextComponent(jLabel2);
Util.translateTextComponent(jLabel3);
Util.translateTextComponent(jLabel4);
Util.translateTextComponent(jLabel5);
Util.translateTextComponent(jLabel6);
Util.translateTextComponent(jLabel7);
Util.translateTextComponent(jLabel8);
Util.translateTextComponent(jLabel9);
Util.translateTextComponent(jLabel10);
Util.translateTextComponent(jLabel11);
Util.translateTextComponent(applyLang);
Util.translateTextComponent(autoUpdate);
Util.translateTextComponent(flight);
Util.translateTextComponent(nether);
Util.translateTextComponent(online);
Util.translateTextComponent(pvp);
Util.translateTextComponent(reload);
Util.translateTextComponent(revert);
Util.translateTextComponent(save);
Util.translateTextComponent(spawnAnimals);
Util.translateTextComponent(spawnMonsters);
Util.translateTextComponent(whitelist);
Util.translateTextComponent(creative);
Util.translateTextComponent(survival);
}
private int diffStringToInt(String d) {
Integer diff = null;
if(d.equals("Peaceful")) {
diff = 0;
} else if(d.equals("Easy")) {
return 1;
} else if(d.equals("Normal")) {
return 2;
} else if(d.equals("Hard")) {
return 3;
}
return diff;
}
}