source: trunk/gsdl3/src/java/org/greenstone/server/ServerControl.java@ 13561

Last change on this file since 13561 was 13561, checked in by shaoqun, 17 years ago

removed the starting and launcnging process to the Server class

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