source: greenstone3/trunk/src/java/org/greenstone/server/BaseServerSettings.java@ 18690

Last change on this file since 18690 was 18690, checked in by ak19, 15 years ago

Removed unused imports

File size: 10.1 KB
Line 
1package org.greenstone.server;
2
3import java.awt.*;
4import java.awt.event.*;
5import java.io.File;
6import java.util.ArrayList;
7import java.util.HashMap;
8import javax.swing.*;
9
10import org.w3c.dom.*;
11
12import org.apache.log4j.*;
13
14public abstract class BaseServerSettings extends JDialog
15
16{
17
18 static Logger logger = Logger.getLogger(BaseServerSettings.class.getName());
19 static final int DEFPORT = 8080;
20
21 JCheckBox autoEnter;
22 JComboBox servlet_combobox;
23
24 protected JSpinner portNumber_spinner = null;
25 protected JTextField program_path_field = null;
26 protected JButton browse_button = null;
27 protected JRadioButton default_browser_button = null ;
28 protected JRadioButton other_browser_button = null;
29 protected Dimension screen = Toolkit.getDefaultToolkit().getScreenSize();
30
31 static final private Dimension SIZE = new Dimension(300, 350);
32 static final Color bg_color = Color.white;
33
34 protected int portNum = DEFPORT;
35 protected boolean autoStart = false;
36 protected String servletDefault = null;
37 protected String browserPath = "";
38 protected boolean useDefaultBrowser = true;
39
40 protected HashMap url_mappings = null;
41 protected JDialog self;
42 protected BaseServer server;
43
44 public BaseServerSettings(BaseServer server)
45 {
46 super((Frame)null, "", true);
47 this.self = this;
48 this.server = server;
49
50 try {
51 this.portNum = Integer.parseInt(server.build_properties.getProperty(BaseServer.Property.WEB_PORT));
52 }
53 catch(Exception e){
54 logger.error(e);
55 }
56
57 this.browserPath = server.build_properties.getProperty(BaseServer.Property.BROWSER_PATH);
58
59 if (this.browserPath == null || this.browserPath.equals("")){
60 useDefaultBrowser = true;
61 this.browserPath = "";
62 }
63 else{
64 useDefaultBrowser = false;
65 }
66
67 String auto_start_str = server.build_properties.getProperty(BaseServer.Property.AUTOSTART);
68 if ((auto_start_str.trim()).equals("true")) {
69 this.autoStart = true;
70 } else {
71 this.autoStart = false;
72 }
73
74 this.servletDefault = server.build_properties.getProperty(BaseServer.Property.DEFAULT_SERVLET).replaceAll("/","");
75
76 setSize(SIZE);
77 setTitle(server.dictionary.get("ServerSettings.Title"));
78
79 setLocation((screen.width - SIZE.width) / 2,
80 (screen.height - SIZE.height) / 2);
81 setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
82
83 JLabel port_label = new JLabel(BaseServer.dictionary.get("ServerSettings.Tomcat_Port"));
84
85 portNumber_spinner = new JSpinner(new SpinnerNumberModel(portNum,1,65535,1));
86 portNumber_spinner.setEditor(new JSpinner.NumberEditor(portNumber_spinner, "#####"));
87
88 autoEnter = new JCheckBox(server.dictionary.get("ServerSettings.Auto_Start"));
89
90 if (autoStart) {
91 autoEnter.setSelected(true);
92 } else {
93 autoEnter.setSelected(false);
94 }
95 autoEnter.setBackground(bg_color);
96
97
98 JButton save_button = new JButton(BaseServer.dictionary.get("ServerSettings.OK"));
99 save_button.addActionListener(new SaveActionListener());
100
101 JButton exit_button = new JButton(BaseServer.dictionary.get("ServerSettings.Cancel"));
102 exit_button.addActionListener(new ActionListener() {
103 public void actionPerformed(ActionEvent ev) {
104 self.dispose();
105 }
106 });
107
108 addWindowListener(new WindowAdapter() {
109 public void windowClosing(WindowEvent we) {
110 self.dispose();
111 }
112 });
113
114 JPanel port_panel = new JPanel();
115 port_panel.setLayout(new FlowLayout(FlowLayout.LEFT));
116 port_panel.add(port_label);
117 port_panel.add(portNumber_spinner);
118 port_panel.setBackground(bg_color);
119
120 JPanel comb_panel = createServletPanel();
121 comb_panel.setBackground(bg_color);
122
123 JPanel check_panel = new JPanel();
124 check_panel.setLayout(new FlowLayout(FlowLayout.LEFT));
125 check_panel.add(autoEnter);
126 check_panel.setBackground(bg_color);
127
128 JPanel mid_panel = new JPanel();
129 mid_panel.setLayout(new GridLayout(3,1));
130 mid_panel.add(port_panel);
131 mid_panel.add(check_panel);
132 mid_panel.add(comb_panel);
133 mid_panel.setBackground(bg_color);
134 mid_panel.setBorder(BorderFactory.createEmptyBorder(5,10,5,10));
135
136
137 JPanel browser_panel = new JPanel();
138 browser_panel.setLayout(new GridLayout(4,1));
139 default_browser_button = new JRadioButton(BaseServer.dictionary.get("ServerSettings.DefaultBrowser"));
140 other_browser_button = new JRadioButton(BaseServer.dictionary.get("ServerSettings.OtherBrowser"));
141 other_browser_button.addActionListener(new BrowserSelectionListener());
142 default_browser_button.addActionListener(new BrowserSelectionListener());
143
144 ButtonGroup bg = new ButtonGroup();
145 bg.add(default_browser_button);
146 bg.add(other_browser_button);
147 default_browser_button.setBorder(BorderFactory.createEmptyBorder(5,10,5,0));
148 default_browser_button.setBackground(bg_color);
149 other_browser_button.setBorder(BorderFactory.createEmptyBorder(5,10,5,0));
150 other_browser_button.setBackground(bg_color);
151 JPanel browse_program_panel = new JPanel();
152 browse_program_panel.setLayout(new BorderLayout());
153 program_path_field = new JTextField(this.browserPath);
154 browse_button = new JButton(BaseServer.dictionary.get("ServerSettings.Browse"));
155 browse_program_panel.add(program_path_field,BorderLayout.CENTER);
156 browse_program_panel.add(browse_button,BorderLayout.EAST);
157 browse_program_panel.setBorder(BorderFactory.createEmptyBorder(5,10,5,0));
158 browse_program_panel.setBackground(bg_color);
159 browser_panel.add(new JLabel(BaseServer.dictionary.get("ServerSettings.ChooseBrowser")));
160 browser_panel.add(default_browser_button);
161 browser_panel.add(other_browser_button);
162 browser_panel.add(browse_program_panel);
163 browser_panel.setBorder(BorderFactory.createEmptyBorder(5,10,5,10));
164 browser_panel.setBackground(bg_color);
165 if (useDefaultBrowser){
166 default_browser_button.setSelected(true);
167 program_path_field.setEnabled(false);
168 browse_button.setEnabled(false);
169 }
170 else{
171 other_browser_button.setSelected(true);
172 }
173 browse_button.addActionListener(new BrowseActionListener());
174
175 JPanel down_panel = new JPanel();
176 down_panel.setLayout(new FlowLayout(FlowLayout.CENTER, 5, 5));
177 down_panel.add(save_button);
178 down_panel.add(exit_button);
179 down_panel.setBackground(bg_color);
180 down_panel.setBorder(BorderFactory.createEmptyBorder(5,10,5,10));
181
182 getContentPane().add(mid_panel, BorderLayout.NORTH);
183 getContentPane().add(browser_panel, BorderLayout.CENTER);
184 getContentPane().add(down_panel, BorderLayout.SOUTH);
185 getContentPane().setBackground(bg_color);
186 setVisible(true);
187 }
188
189
190 protected abstract JPanel createServletPanel();
191
192
193 private class BrowseActionListener
194 implements ActionListener {
195
196 public void actionPerformed(ActionEvent ev) {
197 JFileChooser chooser = new JFileChooser();
198 int returnVal = chooser.showOpenDialog(self);
199
200 if(returnVal == JFileChooser.APPROVE_OPTION) {
201 File program_path = chooser.getSelectedFile();
202 program_path_field.setText(program_path.getPath());
203 }
204 }
205
206 }
207
208 private class BrowserSelectionListener
209 implements ActionListener {
210
211 public void actionPerformed(ActionEvent ev) {
212 if (default_browser_button.isSelected()){
213 program_path_field.setEnabled(false);
214 browse_button.setEnabled(false);
215 }
216 else{
217 program_path_field.setEnabled(true);
218 browse_button.setEnabled(true);
219 }
220 }
221
222 }
223
224
225 private class SaveActionListener
226 implements ActionListener {
227
228 public void actionPerformed(ActionEvent ev) {
229 // save everything to build_properties if things have changed
230 boolean has_changed = false;
231 boolean require_restart = false;
232 if (portNum != ((Integer)portNumber_spinner.getValue()).intValue()) {
233 has_changed = true;
234 require_restart = true;
235 server.reconfigRequired();
236 portNum = ((Integer)portNumber_spinner.getValue()).intValue();
237 logger.info("port changed, new port is "+portNumber_spinner.getValue());
238 }
239 if (autoStart != autoEnter.isSelected()) {
240 has_changed = true;
241 }
242 if (!servletDefault.equals(servlet_combobox.getSelectedItem())) {
243 has_changed = true;
244 require_restart = true;
245 }
246 //changed to use other browser
247 if (useDefaultBrowser && other_browser_button.isSelected()){
248 browserPath = program_path_field.getText();
249 has_changed = true;
250 }
251 //the browser path has been changed
252 if ( !useDefaultBrowser && !browserPath.equals(program_path_field.getText())){
253 browserPath = program_path_field.getText();
254 has_changed = true;
255 }
256
257 //changed to use the default browser
258 if ( default_browser_button.isSelected() && !useDefaultBrowser){
259 browserPath = "";
260 has_changed = true;
261 }
262
263
264 if (has_changed) {
265 ArrayList oldFileLines = null;
266 ArrayList newFileLines = null;
267
268 ScriptReadWrite scriptReadWrite = new ScriptReadWrite();
269 oldFileLines = scriptReadWrite.readInFile(BaseServer.build_properties_file);
270
271 newFileLines = scriptReadWrite.queryReplace(oldFileLines, BaseServer.Property.WEB_PORT, portNum+"");
272
273 String newAutoEnter = (new Boolean(autoEnter.isSelected())).toString();
274 newFileLines = scriptReadWrite.queryReplace(newFileLines, BaseServer.Property.AUTOSTART, newAutoEnter);
275
276 String newServletDef = (String) servlet_combobox.getSelectedItem();
277 newFileLines = scriptReadWrite.queryReplace(newFileLines,BaseServer.Property.DEFAULT_SERVLET, (String) url_mappings.get(newServletDef));
278
279 String osName = System.getProperty("os.name");
280 if (osName.startsWith("Windows")){
281 browserPath = browserPath.replaceAll("\\\\","/");
282 }
283 newFileLines = scriptReadWrite.queryReplace(newFileLines,BaseServer.Property.BROWSER_PATH, browserPath);
284
285 scriptReadWrite.writeOutFile(BaseServer.build_properties_file,
286 newFileLines);
287 server.reloadBuildProperties();
288 if (require_restart){
289 JOptionPane.showMessageDialog(null,server.dictionary.get("ServerSetting.SettingChanged"),"Info", JOptionPane.INFORMATION_MESSAGE);
290 }
291 }
292
293 self.dispose();
294 }
295 }
296
297}
Note: See TracBrowser for help on using the repository browser.