OSDN Git Service

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