package call.gui; import java.awt.Font; import java.io.PrintStream; import javax.swing.JComponent; import javax.swing.JScrollPane; import javax.swing.JTextArea; import javax.swing.text.DefaultCaret; import call.AbstractId; import call.Config; import call.Config.Option; import call.ConfigListener; import call.Id; import call.Util; public class ConsoleTab extends AbstractId implements ConfigListener { private final MainWindow main; private final JTextArea area; private final JScrollPane areaPane; public ConsoleTab(MainWindow main) { this.main = main; // area area = new JTextArea(); Font font = Resources.FONT_CONSOLE; area.setFont(font); area.setEditable(false); DefaultCaret caret = (DefaultCaret) area.getCaret(); caret.setUpdatePolicy(DefaultCaret.ALWAYS_UPDATE); areaPane = new JScrollPane(area); // system output PrintStream windowStream = new PrintStream(new JTextAreaOutputStream(area)); Util.setOutAndErr(windowStream); // config listener Config.addConfigListener(this); Config.notifyConfigListener(this); } public JComponent getComponent() { return areaPane; } private void showConsoleTab() { main.getTabs().removeTab(Resources.TABNAME_CONSOLE); main.getTabs().addTab(Resources.TABNAME_CONSOLE, areaPane, Resources.ICON_CONSOLE); } private void hideConsoleTab() { main.getTabs().removeTab(Resources.TABNAME_CONSOLE); } @Override public void onConfigUpdate(Option option, float value) {} @Override public void onConfigUpdate(Option option, int value) {} @Override public void onConfigUpdate(Option option, boolean value) { if (option.equals(Config.SHOW_CONSOLE)) { if (value) showConsoleTab(); else hideConsoleTab(); } } @Override public void onConfigUpdate(Option option, String value) {} @Override public void onConfigUpdate(Option option, Id value) {} @Override public String getId() { return "ConsoleTab"; } }