package magic.ui.widget.M;
import javax.swing.JComponent;
import javax.swing.JTextArea;
import javax.swing.SwingUtilities;
import magic.ui.FontsAndBorders;
/**
* Displays read-only text using mono-spaced font with built-in scrolling.
*/
@SuppressWarnings("serial")
public class MPlainTextViewer extends MWidget {
private final MScrollPane scrollPane = new MScrollPane();
private final JTextArea textArea = new JTextArea();
public MPlainTextViewer() {
setDefaultProperties();
}
private void setDefaultProperties() {
textArea.setBackground(FontsAndBorders.TEXTAREA_TRANSPARENT_COLOR_HACK);
textArea.setEditable(false);
textArea.setFont(FontsAndBorders.FONT_README);
textArea.setFocusable(false);
scrollPane.setBorder(FontsAndBorders.BLACK_BORDER);
scrollPane.setOpaque(false);
scrollPane.setHScrollBarAsNeeded();
scrollPane.setVScrollBarIncrement(50);
scrollPane.setVScrollBarBlockIncrement(50);
scrollPane.setViewportView(textArea);
}
private void resetVerticalScrollbar() {
SwingUtilities.invokeLater(() -> {
scrollPane.setVScrollBarValue(0);
});
}
public void setText(String text) {
textArea.setText(text);
resetVerticalScrollbar();
}
@Override
public JComponent component() {
return scrollPane.component();
}
}