package statalign.ui; import java.awt.Dimension; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import javax.swing.JDialog; import javax.swing.JEditorPane; import javax.swing.JScrollPane; import javax.swing.SwingUtilities; import statalign.base.Utils; public class TextDlg extends JDialog { private JScrollPane scroll; public TextDlg(String resource, String title) throws IOException { BufferedReader r = new BufferedReader(new InputStreamReader( getClass().getClassLoader().getResource(resource).openStream())); String line; StringBuilder s = new StringBuilder(); s.append("<html><div style='padding: 10px'><tt>"); while((line = r.readLine()) != null) { s.append(line.replace(" ", " ")); s.append("<br>"); } s.append("</tt></div></html>"); JEditorPane pane = new JEditorPane("text/html", s.toString()); pane.setEditable(false); scroll = new JScrollPane(pane); pane.addKeyListener(new ScrollAdapter(scroll.getVerticalScrollBar(), 2, this)); add(scroll); pane.setSize(new Dimension(700, 600)); setTitle(title); setSize(Utils.minMax(pane.getPreferredSize().width+40, 200, 700), 600); setLocationRelativeTo(null); setDefaultCloseOperation(DISPOSE_ON_CLOSE); } @Override public void setVisible(boolean b) { super.setVisible(b); if(b == true) { SwingUtilities.invokeLater(new Runnable() { @Override public void run() { scroll.getVerticalScrollBar().setValue(scroll.getVerticalScrollBar().getMinimum()); } }); } } }