source: main/trunk/greenstone3/src/java/org/greenstone/server/BaseServerControl.java@ 24369

Last change on this file since 24369 was 24369, checked in by ak19, 13 years ago

Icon for greenstone server interface.

File size: 8.4 KB
Line 
1package org.greenstone.server;
2
3import java.awt.*;
4import java.awt.event.*;
5import java.io.File;
6import java.util.ArrayList;
7import javax.swing.*;
8import javax.swing.border.*;
9
10import org.apache.log4j.*;
11/**
12 * Base class to help start or restart the library server
13 *
14 */
15public abstract class BaseServerControl extends JFrame {
16
17 static Logger logger = Logger.getLogger(BaseServerControl.class.getName());
18
19 /** The dimension of the frame */
20 static final private Dimension FRAME_SIZE = new Dimension(350, 250);
21
22 Color bg_color = Color.white;
23
24 /** some components we need to refer to later */
25 protected JLabel info_label;
26 protected JButton enter_button;
27 protected JMenu fMenu;
28 protected BaseServer server;
29 protected JFrame thisframe;
30
31 public BaseServerControl(BaseServer server,String frame_title)
32 {
33 super(frame_title);
34
35 this.server = server;
36 thisframe = this;
37
38 setSize(FRAME_SIZE);
39 setDefaultCloseOperation(EXIT_ON_CLOSE);
40
41 // set the icon for the Greenstone Server Interface
42 try {
43 ImageIcon image = new ImageIcon(getClass().getResource("/images/servericon.png"));
44 if (image != null) {
45 this.setIconImage(image.getImage());
46 }
47 }
48 catch (Exception exception) {
49 System.err.println("Error: Could not load servericon.png");
50 logger.error("Error: Could not load servericon.png");
51 }
52
53 Dimension screen_size = Toolkit.getDefaultToolkit().getScreenSize();
54 setLocation((screen_size.width - FRAME_SIZE.width) / 2,
55 (screen_size.height - FRAME_SIZE.height) / 2);
56 setBackground(Color.white);
57 addWindowListener(new MyAdapter());
58
59 JPanel title_panel = new JPanel();
60 title_panel.setLayout(new BorderLayout());
61
62 JLabel title_label = new JLabel();
63
64
65 String title = BaseServer.dictionary.get(BaseServer.Property.SERVER_CONTROL+".Title");
66 title_label.setText(stringToHTML(title));
67 title_label.setOpaque(false);
68 title_label.setHorizontalAlignment(SwingConstants.CENTER);
69 title_label.setFont(new Font("SansSerif",Font.PLAIN,18));
70
71
72 JLabel version_label = new JLabel();
73 String version = BaseServer.dictionary.get(BaseServer.Property.SERVER_CONTROL+".Version").toLowerCase();
74
75 version_label.setText(stringToHTML(version));
76 version_label.setOpaque(false);
77 version_label.setHorizontalAlignment(SwingConstants.CENTER);
78 version_label.setFont(new Font("SansSerif",Font.PLAIN,14));
79
80 title_panel.add(title_label,BorderLayout.CENTER);
81 title_panel.add(version_label,BorderLayout.SOUTH);
82 title_panel.setBackground(bg_color);
83 title_panel.setBorder(BorderFactory.createEmptyBorder(5,10,5,10));
84
85 info_label = new JLabel();
86 info_label.setOpaque(false);
87 info_label.setHorizontalAlignment(SwingConstants.LEFT);
88 info_label.setVerticalAlignment(SwingConstants.CENTER);
89 info_label.setFont(new Font("SansSerif",Font.PLAIN,14));
90 info_label.setBorder(BorderFactory.createEmptyBorder(5,10,5,10));
91
92 JPanel button_panel = new JPanel(new FlowLayout(FlowLayout.CENTER));
93 enter_button = new JButton();
94 enter_button.setEnabled(false);
95 enter_button.addActionListener(new EnterButtonListener());
96 enter_button.setText(BaseServer.dictionary.get("ServerControl.EnterLibrary"));
97 button_panel.add(enter_button);
98 button_panel.setBackground(bg_color);
99 button_panel.setBorder(BorderFactory.createEmptyBorder(5,10,5,10));
100 getRootPane().setDefaultButton(enter_button); // button gets the focus for enterpress
101
102 getContentPane().setLayout(new BorderLayout());
103 getContentPane().add(title_panel,BorderLayout.NORTH);
104 getContentPane().add(info_label,BorderLayout.CENTER);
105 getContentPane().add(button_panel,BorderLayout.SOUTH);
106 getContentPane().setBackground(bg_color);
107 setJMenuBar(createMenu());
108 setVisible(true);
109 }
110
111 protected abstract JMenuBar createMenu();
112
113 protected JMenuBar createMenu(JMenuItem iConf) {
114 JMenuBar menuBar = new JMenuBar();
115 fMenu = new JMenu(BaseServer.dictionary.get("ServerControl.Menu.File"));
116 JMenuItem iExit = new JMenuItem(BaseServer.dictionary.get("ServerControl.Menu.Exit"));
117 iExit.setBackground(Color.white);
118 iExit.addActionListener(new ActionListener() {
119 public void actionPerformed(ActionEvent ae) {
120 /*Thread runInThread = new Thread(new Runnable(){
121 public void run(){
122 server.stop();
123
124 }
125 },"stop server");
126 try{
127 runInThread.start();
128
129 }
130 catch(Exception e){
131 logger.error(e);
132 }*/
133 thisframe.dispose();
134 server.stop();
135 System.exit(0);
136 }
137 });
138
139 fMenu.add(iConf);
140 fMenu.add(iExit);
141 fMenu.setEnabled(false);
142 menuBar.add(fMenu);
143 menuBar.setBorder(new BevelBorder(BevelBorder.RAISED));
144 return menuBar;
145 }
146
147 public void updateControl(){
148 switch (server.getServerState()){
149 case BaseServer.START_SERVER:
150 {
151 info_label.setText(stringToHTML(BaseServer.dictionary.get("ServerControl.Help_EnterLibrary")));
152 enter_button.setText(stringToHTML(BaseServer.dictionary.get("ServerControl.EnterLibrary")));
153 enter_button.setEnabled(true);
154 fMenu.setEnabled(true);
155 break;
156 }
157 case BaseServer.SERVER_STARTED:
158 {
159 info_label.setText(stringToHTML(BaseServer.dictionary.get("ServerControl.Help_RestartLibrary")));
160 enter_button.setText(stringToHTML(BaseServer.dictionary.get("ServerControl.RestartLibrary")));
161 enter_button.setEnabled(true);
162 fMenu.setEnabled(true);
163 break;
164 }
165 case BaseServer.SERVER_START_FAILED:
166 {
167 enter_button.setText(stringToHTML(BaseServer.dictionary.get("ServerControl.StartServer")));
168 enter_button.setEnabled(true);
169 fMenu.setEnabled(true);
170 break;
171 }
172 case BaseServer.BROWSER_LAUNCHED:
173 {
174 info_label.setText(stringToHTML(BaseServer.dictionary.get("ServerControl.BrowserLaunched",new String[]{server.getBrowserURL()})
175 + BaseServer.dictionary.get("ServerControl.Help_RestartLibrary")));
176 enter_button.setText(stringToHTML(BaseServer.dictionary.get("ServerControl.RestartLibrary")));
177 thisframe.setState(Frame.ICONIFIED);
178 enter_button.setEnabled(true);
179 fMenu.setEnabled(true);
180 break;
181 }
182 case BaseServer.BROWSER_LAUNCH_FAILED:
183 {
184 info_label.setText(stringToHTML(BaseServer.dictionary.get("ServerControl.BrowserLaunchFailed",new String[]{server.getBrowserURL()})));
185 enter_button.setText(stringToHTML(BaseServer.dictionary.get("ServerControl.EnterLibrary")));
186 enter_button.setEnabled(true);
187 fMenu.setEnabled(true);
188 break;
189 }
190 default:
191 {
192 enter_button.setText(BaseServer.dictionary.get("ServerControl.EnterLibrary"));
193 enter_button.setEnabled(false);
194 fMenu.setEnabled(false);
195 }
196 }
197 }
198
199
200 public void displayMessage(String message){
201 info_label.setText(stringToHTML("<br>"+message));
202 }
203
204 private class MyAdapter extends WindowAdapter{
205 public void windowClosing(WindowEvent env){
206 /* Thread runInThread = new Thread(new Runnable(){
207 public void run(){
208 server.stop();
209
210 }
211 },"stop server");
212 try{
213 runInThread.start();
214 }
215 catch(Exception e){
216 logger.error(e);
217 }
218 thisframe.dispose();
219 */
220 thisframe.dispose();
221 server.stop();
222 System.exit(0);
223 }
224 }
225
226 private String stringToHTML(String s){
227 return "<html><body>"+s+"</body></html>";
228 }
229
230 private class EnterButtonListener
231 implements ActionListener {
232
233 public void actionPerformed(ActionEvent ev) {
234 switch (server.getServerState()){
235 case BaseServer.START_SERVER:
236 {
237 Thread runInThread = new Thread(new Runnable(){
238 public void run(){
239 server.start();
240 server.launchBrowser();
241 }
242 },"start server and launch browser");
243
244 runInThread.start();
245 break;
246 }
247 case BaseServer.SERVER_STARTED:
248 {
249 Thread runInThread = new Thread(new Runnable(){
250 public void run(){
251 server.launchBrowser();
252 }
253 },"launch browser");
254
255 runInThread.start();
256 break;
257 }
258 case BaseServer.SERVER_START_FAILED:
259 {
260 Thread runInThread = new Thread(new Runnable(){
261 public void run(){
262 server.start();
263 }
264 },"start server");
265 runInThread.start();
266 break;
267 }
268 case BaseServer.BROWSER_LAUNCHED: case BaseServer.BROWSER_LAUNCH_FAILED:
269 {
270 Thread runInThread = new Thread(new Runnable(){
271 public void run(){
272 server.restart();
273
274 }
275 },"restart server");
276 runInThread.start();
277 }
278 }
279
280 }
281 }
282}
Note: See TracBrowser for help on using the repository browser.