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

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

Logger was referring to old name of this class (ServerControl instead of BaseServerControl) and was causing a compilation error.

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