source: greenstone3/trunk/src/java/org/greenstone/admin/gui/ExtensionInstallation.java@ 18257

Last change on this file since 18257 was 18257, checked in by cc108, 15 years ago

add a method to insert gsdl home path to Mat extension

File size: 5.9 KB
Line 
1package org.greenstone.admin.gui;
2
3import java.awt.BorderLayout;
4import java.awt.Color;
5import java.awt.Component;
6import java.awt.Dimension;
7import java.awt.GridLayout;
8
9import java.awt.event.ActionEvent;
10import java.awt.event.ActionListener;
11import java.awt.event.ItemEvent;
12import java.awt.event.ItemListener;
13import java.io.BufferedReader;
14import java.io.BufferedWriter;
15import java.io.File;
16import java.io.FileInputStream;
17import java.io.FileOutputStream;
18import java.io.IOException;
19import java.io.InputStreamReader;
20import java.io.OutputStreamWriter;
21import java.io.Writer;
22
23import javax.swing.*;
24import javax.xml.parsers.DocumentBuilder;
25import javax.xml.parsers.DocumentBuilderFactory;
26import javax.xml.transform.OutputKeys;
27import javax.xml.transform.Transformer;
28import javax.xml.transform.TransformerFactory;
29import javax.xml.transform.dom.DOMSource;
30import javax.xml.transform.stream.StreamResult;
31
32import org.greenstone.gsdl3.util.GSPath;
33import org.greenstone.gsdl3.util.GlobalProperties;
34
35
36import org.w3c.dom.Document;
37import org.w3c.dom.Element;
38import org.w3c.dom.Node;
39import org.w3c.dom.NodeList;
40import org.w3c.dom.Text;
41
42import java.text.SimpleDateFormat;
43import java.util.ArrayList;
44import java.util.Calendar;
45import java.util.Iterator;
46import java.util.Properties;
47import java.util.Set;
48
49import java.awt.BorderLayout;
50import javax.swing.JFrame;
51import javax.swing.JScrollPane;
52import javax.swing.JTextArea;
53import javax.swing.text.BadLocationException;
54import javax.swing.text.DefaultStyledDocument;
55import javax.swing.text.SimpleAttributeSet;
56import javax.swing.text.Style;
57import javax.swing.text.StyleConstants;
58import javax.swing.text.StyleContext;
59import javax.swing.text.StyledDocument;
60import java.io.DataInputStream;
61import java.io.*;
62import java.awt.Insets;
63
64class ExtensionInstallation extends Thread {
65
66 Mat adaptee;
67
68 public ExtensionInstallation (Mat m){
69 adaptee = m;
70 }
71
72 public void run() {
73 try{
74
75 String gsdl3Home = adaptee.get_GSDL3HOME();
76 String fileSeparator = File.separator;
77
78 File wd = new File(adaptee.extension_path);
79 Process proc = null;
80
81 try {
82
83 if(adaptee.os_type.toLowerCase().indexOf("windows")!=-1){
84 String[] arrays = {"ant.bat", "compile"};
85 proc = Runtime.getRuntime().exec(arrays, null, wd);
86 }
87
88 else{
89 proc = Runtime.getRuntime().exec("ant compile", null, wd);
90 }
91
92 BufferedReader stdInput = new BufferedReader(new InputStreamReader(proc.getInputStream()));
93 BufferedReader errInput = new BufferedReader(new InputStreamReader(proc.getErrorStream()));
94 String s= "";
95
96 ExtPane.message_textarea.setText("");
97
98 while ((s = stdInput.readLine()) != null) {
99 ExtPane.message_textarea.append(s+"\n");
100 ExtPane.message_textarea.setSelectionEnd(ExtPane.message_textarea.getDocument().getLength());
101 }
102
103 while ((s = errInput.readLine()) != null) {
104 ExtPane.message_textarea.append(s+"\n");
105 JOptionPane.showMessageDialog(new JFrame(),adaptee.InstallErrorMsg);
106 return;
107 }
108
109 ExtPane.message_textarea.append(adaptee.InstallCompleteMsg+"\n");
110
111 Calendar cl;
112 SimpleDateFormat sdf;
113 cl=Calendar.getInstance();
114 sdf = new SimpleDateFormat("dd/MMM/yyyy 'at' HH:mm:ss z 'GMT'Z");
115 String timestamp = sdf.format(cl.getTime());
116
117 ExtPane.message_textarea.append(timestamp);
118 proc.waitFor();
119 JTextPaneStyle msgpane = new JTextPaneStyle(adaptee.extension_path,adaptee.web_xml_path);
120 msgpane.display();
121
122 ExtPane.updateExtensionContentPane();
123
124 } catch (Exception e) {
125 JOptionPane.showMessageDialog(new JFrame(),adaptee.InstallErrorMsg);
126 }
127
128 }catch(Exception ex){
129 ex.printStackTrace();
130 }
131 }
132}
133
134
135class JTextPaneStyle implements ActionListener{
136
137 private static String message ="";
138
139 JFrame frame = new JFrame("The extension (Mat) has been installed!!!");
140 private String filePath;
141 private String webPath;
142 public JTextPaneStyle (String path, String web_xml_path){
143 filePath = path + "README.txt";
144 webPath = web_xml_path;
145 loadReadMe();
146 }
147
148 public void loadReadMe(){
149 message = new String();
150
151 try{
152
153 FileInputStream fstream = new FileInputStream(filePath);
154 DataInputStream in = new DataInputStream(fstream);
155 BufferedReader br = new BufferedReader(new InputStreamReader(in));
156 String strLine;
157
158 while ((strLine = br.readLine()) != null) {
159 if(strLine.indexOf("web@xml@path")!=-1){
160 webPath = webPath.replaceAll("\\\\","/");
161 strLine = strLine.replaceAll("web@xml@path",webPath);
162 strLine = strLine.replaceAll("/","\\\\");
163 }
164 message = message+ "\n "+ strLine;
165 }
166
167 in.close();
168 }catch (Exception e){
169 System.err.println("Error: " + e.getMessage());
170 }
171 }
172
173 public void display() {
174
175 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
176 frame.setSize(new Dimension(550, 450));
177 JPanel mainPane = new JPanel(new BorderLayout());
178 JTextArea textPane = new JTextArea(message);
179 textPane.setEditable(false);
180 textPane.setLineWrap(true);
181 textPane.setWrapStyleWord(true);
182 textPane.setMargin(new Insets(0,ExtPane.left_padding,0,0));
183 JScrollPane scrollPane = new JScrollPane(textPane);
184 mainPane.add(scrollPane,BorderLayout.CENTER);
185 JPanel button_pane = new JPanel(new GridLayout(1,3));
186
187
188 JButton jbutton = new JButton("ok");
189
190 button_pane.add(Box.createRigidArea(new Dimension(18,5)));
191 button_pane.add(jbutton);
192 button_pane.add(Box.createRigidArea(new Dimension(18,5)));
193
194 jbutton.addActionListener(this);
195 mainPane.add(button_pane,BorderLayout.SOUTH);
196 frame.getContentPane().add(mainPane, BorderLayout.CENTER);
197 frame.setVisible(true);
198 }
199
200 public void actionPerformed(ActionEvent e) {
201 writeReadMe();
202 frame.dispose();
203 }
204
205
206
207 public void writeReadMe(){
208 try{
209 FileWriter fstream = new FileWriter(filePath);
210 BufferedWriter br = new BufferedWriter(fstream);
211 br.write(message);
212 br.close();
213 }catch (Exception e){
214 System.err.println("Error: " + e.getMessage());
215 }
216 }
217}
218
219
Note: See TracBrowser for help on using the repository browser.