OSDN Git Service

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