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

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

Removed unused imports

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