X-Git-Url: https://git.dogcows.com/gitweb?p=chaz%2Fvimcoder;a=blobdiff_plain;f=src%2Fcom%2Fdogcows%2FVimCoder.java;h=427fc33fc4c164640705dcd8a981b7d59e93ea0f;hp=658bae13051ddc080a266bd9610cec8bf721929e;hb=0f3861847fb53a0b64c08ad1f4c8d9893f072527;hpb=28c8fae03b2294d6486233cd62f4d4d9d11603ca diff --git a/src/com/dogcows/VimCoder.java b/src/com/dogcows/VimCoder.java index 658bae1..427fc33 100644 --- a/src/com/dogcows/VimCoder.java +++ b/src/com/dogcows/VimCoder.java @@ -2,13 +2,12 @@ package com.dogcows; import java.awt.*; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; -import java.beans.PropertyChangeListener; +import java.awt.event.*; import java.io.*; import java.text.SimpleDateFormat; import java.util.*; import javax.swing.*; +import javax.swing.border.*; import com.topcoder.client.contestApplet.common.Common; import com.topcoder.client.contestApplet.common.LocalPreferences; @@ -28,23 +27,23 @@ public class VimCoder /** * The name and version of this plugin. */ - public final static String version = "VimCoder 0.3"; + public final static String version = "VimCoder 0.3.2"; /** * The website of the plugin project. */ - public final static String website = "http://www.dogcows.com/vimcoder"; + public final static String website = "http://www.dogcows.com/vimcoder"; /** * The first part of the command used to invoke the Vim server. */ - private static String vimCommand = "gvim"; + private static String vimCommand = "gvim"; /** * The path to the main VimCoder directory. */ - private static File rootDir; + private static File rootDir; static { if (System.getProperty("os.name").toLowerCase().equals("win")) @@ -52,29 +51,29 @@ public class VimCoder vimCommand = "C:\\WINDOWS\\gvim.bat"; } rootDir = new File(System.getProperty("user.home") + - System.getProperty("file.separator") + ".vimcoder"); + System.getProperty("file.separator") + ".vimcoder"); } /** * The panel given to the Arena applet when it is requested. */ - private JPanel panel; + private JPanel panel; /** * The text widget where log messages are appended. */ - private JTextArea logArea; + private JTextArea logArea; /** * The current editor object (or null if there is none). */ - private Editor editor; + private Editor editor; /** * The configuration panel. */ - private JDialog configDialog; + private JDialog configDialog; /** @@ -187,8 +186,7 @@ public class VimCoder } catch (Exception exception) { - logError("Failed to get source code: " + - exception.getLocalizedMessage()); + logError("Failed to get source code: " + exception.getLocalizedMessage()); throw exception; } } @@ -207,7 +205,7 @@ public class VimCoder catch (Exception exception) { logError("Failed to save the source given by the server: " + - exception.getLocalizedMessage()); + exception.getLocalizedMessage()); return; } } @@ -221,8 +219,7 @@ public class VimCoder * statement. */ public void setProblemComponent(ProblemComponentModel component, - Language language, - Renderer renderer) + Language language, Renderer renderer) { try { @@ -231,7 +228,7 @@ public class VimCoder catch (Exception exception) { logError("An error occured while loading the problem: " + - exception.getLocalizedMessage()); + exception.getLocalizedMessage()); } } @@ -240,65 +237,76 @@ public class VimCoder */ public void configure() { + final int border = 10; + final int inset = 2; + loadConfiguration(); configDialog = new JDialog(); - Container pane = configDialog.getContentPane(); + Container container = configDialog.getContentPane(); + container.setForeground(Common.FG_COLOR); + container.setBackground(Common.WPB_COLOR); + + JPanel pane = new JPanel(); + container.add(pane); + + BoxLayout boxLayout = new BoxLayout(pane, BoxLayout.Y_AXIS); + pane.setLayout(boxLayout); + pane.setBorder(BorderFactory.createEmptyBorder(border, border, border, border)); + + JPanel fieldPanel = new JPanel(new GridBagLayout()); + pane.add(fieldPanel); + pane.add(Box.createRigidArea(new Dimension(0, border))); - pane.setPreferredSize(new Dimension(550, 135)); - pane.setLayout(new GridBagLayout()); - pane.setForeground(Common.FG_COLOR); - pane.setBackground(Common.WPB_COLOR); GridBagConstraints c = new GridBagConstraints(); + c.fill = GridBagConstraints.HORIZONTAL; + c.insets = new Insets(inset, inset, inset, inset); - JLabel rootDirLabel = new JLabel("Storage Directory:", SwingConstants.RIGHT); + JLabel rootDirLabel = new JLabel("Storage Directory:"); rootDirLabel.setForeground(Common.FG_COLOR); - c.fill = GridBagConstraints.HORIZONTAL; - c.insets = new Insets(5, 5, 5, 5); c.gridx = 0; c.gridy = 0; c.gridwidth = 1; - pane.add(rootDirLabel, c); + fieldPanel.add(rootDirLabel, c); - final JTextField rootDirField = new JTextField(rootDir.getPath(), 25); + final JTextField rootDirField = new JTextField(rootDir.getPath()); + rootDirField.setPreferredSize(new Dimension(0, 24)); c.gridx = 1; c.gridy = 0; - pane.add(rootDirField, c); + c.weightx = 1.0; + fieldPanel.add(rootDirField, c); JButton browseButton = new JButton("Browse"); c.gridx = 2; c.gridy = 0; + c.weightx = 0.0; c.anchor = GridBagConstraints.BASELINE_LEADING; - pane.add(browseButton, c); + fieldPanel.add(browseButton, c); - JLabel vimCommandLabel = new JLabel("Vim Command:", SwingConstants.RIGHT); + JLabel vimCommandLabel = new JLabel("Vim Command:"); vimCommandLabel.setForeground(Common.FG_COLOR); - c.fill = GridBagConstraints.HORIZONTAL; c.gridx = 0; c.gridy = 1; - pane.add(vimCommandLabel, c); + fieldPanel.add(vimCommandLabel, c); - final JTextField vimCommandField = new JTextField(vimCommand, 25); + final JTextField vimCommandField = new JTextField(vimCommand); + vimCommandField.setPreferredSize(new Dimension(0, 24)); c.gridx = 1; c.gridy = 1; + c.weightx = 1.0; c.gridwidth = 2; - pane.add(vimCommandField, c); + fieldPanel.add(vimCommandField, c); - JButton closeButton = new JButton("Cancel"); - c.fill = GridBagConstraints.NONE; - c.gridx = 1; - c.gridy = 2; - c.gridwidth = 1; - c.anchor = GridBagConstraints.EAST; - pane.add(closeButton, c); + JPanel buttonPanel = new JPanel(new FlowLayout(FlowLayout.TRAILING, inset, inset)); + buttonPanel.setPreferredSize(new Dimension(400, 24 + 2 * inset)); + pane.add(buttonPanel); JButton saveButton = new JButton("Save"); - c.fill = GridBagConstraints.HORIZONTAL; - c.gridx = 2; - c.gridy = 2; - c.anchor = GridBagConstraints.EAST; - pane.add(saveButton, c); - configDialog.getRootPane().setDefaultButton(saveButton); + buttonPanel.add(saveButton); + buttonPanel.add(Box.createRigidArea(new Dimension(1, 0))); + + JButton closeButton = new JButton("Close"); + buttonPanel.add(closeButton); browseButton.addActionListener(new ActionListener() { @@ -331,13 +339,13 @@ public class VimCoder { prefs.setProperty(VIMCOMMAND, vimCommandField.getText()); prefs.setProperty(ROOTDIR, rootDirField.getText()); - configDialog.dispose(); + JOptionPane.showMessageDialog(null, "Preferences were saved successfully."); } }); configDialog.setTitle("VimCoder Preferences"); configDialog.pack(); - configDialog.setLocationByPlatform(true); + configDialog.setLocationRelativeTo(null); // Center dialog in screen. configDialog.setModalityType(Dialog.DEFAULT_MODALITY_TYPE); configDialog.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); configDialog.setVisible(true);