1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package org.xnap.plugin.overnet.gui;
21
22 import java.awt.Component;
23 import java.awt.GridBagLayout;
24
25 import javax.swing.*;
26 import javax.swing.JPanel;
27 import javax.swing.JTextField;
28 import javax.swing.event.DocumentEvent;
29 import org.apache.log4j.Logger;
30 import org.xnap.XNap;
31 import org.xnap.gui.AbstractSettingsPanel;
32 import org.xnap.gui.action.EnableAction;
33 import org.xnap.gui.component.*;
34 import org.xnap.gui.component.ValidatedTextField;
35 import org.xnap.gui.component.XNapCheckBox;
36 import org.xnap.gui.util.GUIHelper;
37 import org.xnap.gui.util.GridBagHelper;
38 import org.xnap.plugin.overnet.OvernetPlugin;
39 import org.xnap.plugin.overnet.util.OvernetPreferences;
40
41 public class OvernetPreferencesPanel extends AbstractSettingsPanel
42 {
43
44
45
46
47 private FilePanel fpCoreCommand;
48 private JTextField jteCommandLineOption;
49 private JCheckBox jcbCommandLineOption;
50
51 private JTextField jteCoreHost;
52 private JTextField jteUsername;
53 private JTextField jtePassword;
54 private JTextField jteCorehost;
55 private JCheckBox jcbStartCore;
56 private JCheckBox jcbAutoConnect;
57 private ValidatedTextField jteCorePort;
58 private JCheckBox jcbUseXNapDirs;
59
60
61 private OvernetPreferences prefs = OvernetPreferences.getInstance();
62
63 private static Logger logger = Logger.getLogger(OvernetPreferencesPanel.class);
64
65
66
67 public OvernetPreferencesPanel()
68 {
69 setLayout(new GridBagLayout());
70
71 JPanel jpCommand = new JPanel(new GridBagLayout());
72 jpCommand.setBorder(GUIHelper.createDefaultBorder(XNap.tr("Core Command")));
73 GridBagHelper.add(this, jpCommand);
74
75 fpCoreCommand = new FilePanel(prefs.getCoreCommand(), 20);
76
77 EnableAction acStartCore = new EnableAction
78 (XNap.tr("Launch Core on Startup"),
79 new Component[] { fpCoreCommand },
80 prefs.getStartCore());
81 jcbStartCore = new XNapCheckBox(acStartCore);
82
83 GridBagHelper.addComponent(jpCommand, jcbStartCore);
84 GridBagHelper.add(jpCommand, fpCoreCommand);
85
86 jteCommandLineOption = new ValidatedTextField
87 (prefs.getCommandLineOption(), 5,
88 ValidatedTextField.ALPHA_NUM + "-");
89 acStartCore = new EnableAction
90 (XNap.tr("Custom command line option"),
91 new Component[] { jteCommandLineOption },
92 prefs.getUseCustomCommandLineOption());
93
94 jcbCommandLineOption = new XNapCheckBox(acStartCore);
95
96 GridBagHelper.addComponent(jpCommand, jcbCommandLineOption);
97 GridBagHelper.add(jpCommand, jteCommandLineOption, false);
98
99
100 fpCoreCommand.getTextField().getDocument()
101 .addDocumentListener(new CommandChangedListener());
102
103 JPanel jpAddress = new JPanel(new GridBagLayout());
104 jpAddress.setBorder(GUIHelper.createDefaultBorder(XNap.tr("Core Address")));
105 GridBagHelper.add(this, jpAddress);
106
107 JLabel l = GridBagHelper.addLabel(jpAddress, XNap.tr("Host"));
108 jteCoreHost = new JTextField(prefs.getCoreHost(), 20);
109 l.setLabelFor(jteCoreHost);
110 GridBagHelper.add(jpAddress, jteCoreHost, false);
111
112 l = GridBagHelper.addLabel(jpAddress, XNap.tr("Port"));
113 jteCorePort = new ValidatedTextField(prefs.getCorePort() + "", 5,
114 ValidatedTextField.NUMBERS_INT);
115 l.setLabelFor(jteCorePort);
116 GridBagHelper.add(jpAddress, jteCorePort, false);
117
118 l = GridBagHelper.addLabel(jpAddress, XNap.tr("Admin Name"));
119 jteUsername = new JTextField(prefs.getUsername(), 20);
120 l.setLabelFor(jteUsername);
121 GridBagHelper.add(jpAddress, jteUsername, false);
122
123 l = GridBagHelper.addLabel(jpAddress, XNap.tr("Admin Password"));
124 jtePassword = new JTextField(prefs.getPassword(), 20);
125 l.setLabelFor(jtePassword);
126 GridBagHelper.add(jpAddress, jtePassword, false);
127
128 jcbAutoConnect = new JCheckBox
129 (XNap.tr("Connect to Core on Startup", 1), prefs.getAutoconnect());
130 GridBagHelper.add(jpAddress, jcbAutoConnect);
131
132 jcbUseXNapDirs = new JCheckBox
133 (XNap.tr("Use XNap's download and incomplete directory."),
134 prefs.getUseXNapDownloadDirs());
135
136 GridBagHelper.add(this, jcbUseXNapDirs);
137
138 GridBagHelper.addVerticalSpacer(this);
139 GUIHelper.setMnemonics(this);
140 }
141
142
143
144 public void apply()
145 {
146 prefs.setAutoconnect(jcbAutoConnect.isSelected());
147 prefs.setCommandLineOption(jteCommandLineOption.getText());
148 prefs.setCoreCommand(fpCoreCommand.getFilename());
149 prefs.setCoreHost(jteCoreHost.getText());
150 prefs.setCorePort(jteCorePort.getIntValue());
151 prefs.setStartCore(jcbStartCore.isSelected());
152 prefs.setUsername(jteUsername.getText());
153 prefs.setPassword(jtePassword.getText());
154 prefs.setUseCustomCommandLineOption(jcbCommandLineOption.isSelected());
155 prefs.setUseXNapDownloadDirs(jcbUseXNapDirs.isSelected());
156 }
157
158 public String getTitle()
159 {
160 return OvernetPlugin.getInstance().getName();
161 }
162
163 public String getDescription()
164 {
165 return XNap.tr("Overnet configuration.");
166 }
167
168 private class CommandChangedListener extends DocumentAdapter
169 {
170 public void insertUpdate(DocumentEvent e)
171 {
172 if (!jcbCommandLineOption.isSelected()) {
173 jteCommandLineOption.setText
174 (OvernetPlugin.getCommandLineOptions
175 (fpCoreCommand.getFilename()));
176 }
177 }
178 }
179 }