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

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

add new text pane to display READNE

File size: 5.6 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.JTextPane;
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;
61
62class ExtensionInstallation extends Thread {
63
64 Mat adaptee;
65
66 public ExtensionInstallation (Mat m){
67 adaptee = m;
68 }
69
70 public void run() {
71 try{
72
73 String gsdl3Home = adaptee.get_GSDL3HOME();
74 String fileSeparator = File.separator;
75
76 File wd = new File(adaptee.extension_path);
77 Process proc = null;
78
79 try {
80
81 if(adaptee.os_type.toLowerCase().indexOf("windows")!=-1){
82 String[] arrays = {"ant.bat", "compile"};
83 proc = Runtime.getRuntime().exec(arrays, null, wd);
84 }
85
86 else{
87 proc = Runtime.getRuntime().exec("ant compile", null, wd);
88 }
89
90 BufferedReader stdInput = new BufferedReader(new InputStreamReader(proc.getInputStream()));
91 BufferedReader errInput = new BufferedReader(new InputStreamReader(proc.getErrorStream()));
92 String s= "";
93
94 ExtPane.message_textarea.setText("");
95
96 while ((s = stdInput.readLine()) != null) {
97 ExtPane.message_textarea.append(s+"\n");
98 ExtPane.message_textarea.setSelectionEnd(ExtPane.message_textarea.getDocument().getLength());
99 }
100
101 while ((s = errInput.readLine()) != null) {
102 ExtPane.message_textarea.append(s+"\n");
103 JOptionPane.showMessageDialog(new JFrame(),adaptee.InstallErrorMsg);
104 return;
105 }
106
107 ExtPane.message_textarea.append(adaptee.InstallCompleteMsg+"\n");
108
109 Calendar cl;
110 SimpleDateFormat sdf;
111 cl=Calendar.getInstance();
112 sdf = new SimpleDateFormat("dd/MMM/yyyy 'at' HH:mm:ss z 'GMT'Z");
113 String timestamp = sdf.format(cl.getTime());
114
115 ExtPane.message_textarea.append(timestamp);
116 proc.waitFor();
117
118 JTextPaneStyle test = new JTextPaneStyle(adaptee.extension_path);
119 test.display();
120 ExtPane.updateExtensionContentPane();
121
122 } catch (Exception e) {
123 JOptionPane.showMessageDialog(new JFrame(),adaptee.InstallErrorMsg);
124 }
125
126 }catch(Exception ex){
127 ex.printStackTrace();
128 }
129 }
130}
131
132
133class JTextPaneStyle implements ActionListener{
134
135 private static String message ="";
136
137 JFrame frame = new JFrame("The extension (Mat) has been installed!!!");
138 private String filePath;
139
140 public JTextPaneStyle (String path){
141 filePath = path + "README.txt";
142 loadReadMe();
143 }
144
145 public void loadReadMe(){
146
147 try{
148
149 FileInputStream fstream = new FileInputStream(filePath);
150 DataInputStream in = new DataInputStream(fstream);
151 BufferedReader br = new BufferedReader(new InputStreamReader(in));
152 String strLine;
153
154 while ((strLine = br.readLine()) != null) {
155 message = message+ "\n "+ strLine;
156 }
157
158 in.close();
159
160 }catch (Exception e){
161 System.err.println("Error: " + e.getMessage());
162 }
163
164 }
165
166 public void display() {
167
168 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
169
170 frame.setSize(new Dimension(550, 450));
171 StyleContext context = new StyleContext();
172 StyledDocument document = new DefaultStyledDocument(context);
173
174 Style style = context.getStyle(StyleContext.DEFAULT_STYLE);
175 StyleConstants.setAlignment(style, StyleConstants.ALIGN_LEFT);
176 StyleConstants.setFontSize(style, 14);
177 StyleConstants.setSpaceAbove(style, 4);
178 StyleConstants.setSpaceBelow(style, 4);
179
180 try {
181 document.insertString(document.getLength(), message, style);
182 } catch (BadLocationException badLocationException) {
183 System.err.println("Oops");
184 }
185
186 JPanel mainPane = new JPanel(new BorderLayout());
187 JTextPane textPane = new JTextPane(document);
188 textPane.setEditable(false);
189 JScrollPane scrollPane = new JScrollPane(textPane);
190 mainPane.add(scrollPane,BorderLayout.CENTER);
191 JButton jbutton = new JButton("ok");
192 jbutton.addActionListener(this);
193 mainPane.add(jbutton,BorderLayout.SOUTH);
194 frame.getContentPane().add(mainPane, BorderLayout.CENTER);
195 frame.setVisible(true);
196 }
197
198 public void actionPerformed(ActionEvent e) {
199 frame.dispose();
200 }
201}
202
203
Note: See TracBrowser for help on using the repository browser.