OSDN Git Service

fixed import
[stigmata/stigmata.git] / src / main / java / jp / naist / se / stigmata / ui / swing / actions / ShowTextAction.java
1 package jp.naist.se.stigmata.ui.swing.actions;\r
2 \r
3 /*\r
4  * $Id$\r
5  */\r
6 \r
7 import java.awt.BorderLayout;\r
8 import java.awt.Component;\r
9 import java.awt.Dimension;\r
10 import java.awt.event.ActionEvent;\r
11 import java.io.BufferedReader;\r
12 import java.io.IOException;\r
13 import java.io.InputStreamReader;\r
14 import java.io.PrintWriter;\r
15 import java.io.StringWriter;\r
16 import java.net.URL;\r
17 \r
18 import javax.swing.AbstractAction;\r
19 import javax.swing.JEditorPane;\r
20 import javax.swing.JOptionPane;\r
21 import javax.swing.JPanel;\r
22 import javax.swing.JScrollPane;\r
23 \r
24 /**\r
25  * \r
26  * @author Haruaki TAMADA\r
27  * @version $Revision$ $Date$\r
28  */\r
29 abstract class ShowTextAction extends AbstractAction{\r
30     private Component parent;\r
31 \r
32     public ShowTextAction(Component parent){\r
33         this.parent = parent;\r
34     }\r
35 \r
36     public abstract String getMessage();\r
37 \r
38     protected void updatePanel(JPanel panel){\r
39     }\r
40 \r
41     public abstract String getTitle();\r
42 \r
43     public boolean isHtmlDocument(){\r
44         return false;\r
45     }\r
46 \r
47     public void actionPerformed(ActionEvent e){\r
48         String message = getMessage();\r
49         JPanel panel = new JPanel(new BorderLayout());\r
50         JScrollPane scroll = new JScrollPane();\r
51         String mimeType = "text/plain";\r
52         if(isHtmlDocument()){\r
53             mimeType = "text/html";\r
54         }\r
55         JEditorPane text = new JEditorPane(mimeType, message);\r
56         text.addHyperlinkListener(new LinkFollower());\r
57 \r
58         text.setEditable(false);\r
59         text.setCaretPosition(0);\r
60         text.setBackground(panel.getBackground());\r
61         scroll.setViewportView(text);\r
62 \r
63         panel.add(scroll, BorderLayout.CENTER);\r
64         panel.setPreferredSize(new Dimension(500, 300));\r
65 \r
66         updatePanel(panel);\r
67 \r
68         JOptionPane.showMessageDialog(\r
69             parent, panel, getTitle(),\r
70             JOptionPane.INFORMATION_MESSAGE\r
71         );\r
72     }\r
73 \r
74     protected String loadStringFromFile(URL url){\r
75         try{\r
76             String line;\r
77             BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));\r
78             StringWriter writer = new StringWriter();\r
79             PrintWriter out = new PrintWriter(writer);\r
80             while((line = in.readLine()) != null){\r
81                 out.print(line);\r
82                 out.println();\r
83             }\r
84             out.close();\r
85             in.close();\r
86 \r
87             return writer.toString();\r
88         }catch(IOException e){\r
89             e.printStackTrace();\r
90         }\r
91         return null;\r
92     }\r
93 }\r