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

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

Changes to server.properties files so that the one for GS2 can be merged with the one for GS3. Corresponding changes in the java code.

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(BaseServer.Property.SERVER_SETTINGS+".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.