X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FConsole.java;h=d9d729ab93a3ae0fed7d348ce704e493a608af58;hb=cb8e52fbbc5f725e3f7f48c672cdddb0690bd978;hp=c0063c70d86af89d805c3b1ef397038cd64935ff;hpb=aba23b6b2938680b90cb7a7dbf1169b8c2e6760b;p=jalview.git diff --git a/src/jalview/gui/Console.java b/src/jalview/gui/Console.java index c0063c7..d9d729a 100644 --- a/src/jalview/gui/Console.java +++ b/src/jalview/gui/Console.java @@ -42,6 +42,7 @@ import java.io.PipedInputStream; import java.io.PipedOutputStream; import java.io.PrintStream; +import javax.swing.BorderFactory; import javax.swing.JButton; import javax.swing.JComboBox; import javax.swing.JFrame; @@ -49,12 +50,15 @@ import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTextArea; +import javax.swing.border.Border; +import javax.swing.text.DefaultCaret; -import org.apache.log4j.Level; -import org.apache.log4j.SimpleLayout; - -import jalview.bin.Cache; +import jalview.log.JLoggerI.LogLevel; +import jalview.log.JLoggerLog4j; +import jalview.log.JalviewAppender; +import jalview.util.ChannelProperties; import jalview.util.MessageManager; +import jalview.util.Platform; /** * Simple Jalview Java Console. Version 1 - allows viewing of console output @@ -100,7 +104,9 @@ public class Console extends WindowAdapter private int MIN_HEIGHT = 250; - private JComboBox logLevelCombo = new JComboBox(); + private JComboBox logLevelCombo = new JComboBox(); + + protected LogLevel startingLogLevel = LogLevel.INFO; public Console() { @@ -129,6 +135,36 @@ public class Console extends WindowAdapter // textArea = cpt.getTextArea(); textArea = new JTextArea(); textArea.setEditable(false); + // autoscroll + DefaultCaret caret = (DefaultCaret) textArea.getCaret(); + caret.setUpdatePolicy(DefaultCaret.ALWAYS_UPDATE); + // toggle autoscroll by clicking on the text area + Border pausedBorder = BorderFactory.createMatteBorder(2, 2, 2, 2, + textArea.getForeground()); + Border noBorder = BorderFactory.createEmptyBorder(2, 2, 2, 2); + JScrollPane scrollPane = new JScrollPane(textArea); + scrollPane.setBorder(noBorder); + textArea.addMouseListener(new MouseAdapter() + { + public void mouseClicked(MouseEvent e) + { + if (e.getButton() == MouseEvent.BUTTON1) + { + if (caret.getUpdatePolicy() == DefaultCaret.ALWAYS_UPDATE) + { + caret.setUpdatePolicy(DefaultCaret.NEVER_UPDATE); + scrollPane.setBorder(pausedBorder); + } + else + { + caret.setUpdatePolicy(DefaultCaret.ALWAYS_UPDATE); + textArea.setCaretPosition(textArea.getDocument().getLength()); + scrollPane.setBorder(noBorder); + } + } + } + }); + JButton clearButton = new JButton( MessageManager.getString("action.clear")); JButton copyToClipboardButton = new JButton( @@ -144,14 +180,18 @@ public class Console extends WindowAdapter { private Color bg = textArea.getBackground(); + private Color fg = textArea.getForeground(); + public void mousePressed(MouseEvent e) { textArea.setBackground(textArea.getSelectionColor()); + textArea.setForeground(textArea.getSelectedTextColor()); } public void mouseReleased(MouseEvent e) { textArea.setBackground(bg); + textArea.setForeground(fg); } }); @@ -161,22 +201,26 @@ public class Console extends WindowAdapter JLabel logLevelLabel = new JLabel( MessageManager.getString("label.log_level") + ":"); - // logLevelCombo.addItem(Level.ALL); - logLevelCombo.addItem(Level.DEBUG); - logLevelCombo.addItem(Level.INFO); - logLevelCombo.addItem(Level.WARN); - // logLevelCombo.addItem(Level.ERROR); - // logLevelCombo.addItem(Level.FATAL); - // logLevelCombo.addItem(Level.OFF); - // logLevelCombo.addItem(Level.TRACE); + // logLevelCombo.addItem(LogLevel.ALL); + logLevelCombo.addItem(LogLevel.TRACE); + logLevelCombo.addItem(LogLevel.DEBUG); + logLevelCombo.addItem(LogLevel.INFO); + logLevelCombo.addItem(LogLevel.WARN); + // logLevelCombo.addItem(LogLevel.ERROR); + // logLevelCombo.addItem(LogLevel.FATAL); + // logLevelCombo.addItem(LogLevel.ERROR); + // logLevelCombo.addItem(LogLevel.OFF); + // set startingLogLevel + startingLogLevel = jalview.bin.Console.log == null ? LogLevel.INFO + : jalview.bin.Console.log.getLevel(); setChosenLogLevelCombo(); logLevelCombo.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { - if (Cache.log != null) + if (jalview.bin.Console.log != null) { - Cache.log.setLevel((Level) logLevelCombo.getSelectedItem()); + jalview.bin.Console.log.setLevel((LogLevel) logLevelCombo.getSelectedItem()); } } @@ -184,8 +228,7 @@ public class Console extends WindowAdapter // frame = cpt; frame.getContentPane().setLayout(new BorderLayout()); - frame.getContentPane().add(new JScrollPane(textArea), - BorderLayout.CENTER); + frame.getContentPane().add(scrollPane, BorderLayout.CENTER); JPanel southPanel = new JPanel(); southPanel.setLayout(new GridBagLayout()); @@ -193,10 +236,10 @@ public class Console extends WindowAdapter logLevelPanel.setAlignmentX(JPanel.LEFT_ALIGNMENT); logLevelPanel.add(logLevelLabel); logLevelPanel.add(logLevelCombo); - logLevelLabel.setToolTipText( - MessageManager.getString("label.log_level_tooltip")); - logLevelCombo.setToolTipText( - MessageManager.getString("label.log_level_tooltip")); + String logLevelTooltip = MessageManager.formatMessage( + "label.log_level_tooltip", startingLogLevel.toString()); + logLevelLabel.setToolTipText(logLevelTooltip); + logLevelCombo.setToolTipText(logLevelTooltip); GridBagConstraints gbc = new GridBagConstraints(); gbc.gridx = 0; @@ -246,16 +289,47 @@ public class Console extends WindowAdapter textAppender = new Thread(this); textAppender.setDaemon(true); textAppender.start(); + + // set icons + frame.setIconImages(ChannelProperties.getIconList()); } private void setChosenLogLevelCombo() { - Level currentLogLevel = Cache.log == null ? Level.INFO - : Cache.log.getLevel(); - logLevelCombo.setSelectedItem(currentLogLevel); - if (!logLevelCombo.getSelectedItem().equals(currentLogLevel)) + setChosenLogLevelCombo(startingLogLevel); + } + + private void setChosenLogLevelCombo(LogLevel setLogLevel) + { + logLevelCombo.setSelectedItem(setLogLevel); + if (!logLevelCombo.getSelectedItem().equals(setLogLevel)) { - logLevelCombo.setSelectedItem(Level.INFO); + // setLogLevel not (yet) in list + if (setLogLevel != null && setLogLevel instanceof LogLevel) + { + // add new item to list (might be set via .jalview_properties) + boolean added = false; + for (int i = 0; i < logLevelCombo.getItemCount(); i++) + { + LogLevel l = (LogLevel) logLevelCombo.getItemAt(i); + if (l.compareTo(setLogLevel) >= 0) + { + logLevelCombo.insertItemAt(setLogLevel, i); + added = true; + break; + } + } + if (!added) // lower priority than others or some confusion -- add to + // end of list + { + logLevelCombo.addItem(setLogLevel); + } + logLevelCombo.setSelectedItem(setLogLevel); + } + else + { + logLevelCombo.setSelectedItem(LogLevel.INFO); + } } } @@ -267,11 +341,6 @@ public class Console extends WindowAdapter cb.setContents(consoleTextSelection, null); } - private void setLogLevel() - { - - } - PipedOutputStream pout = null, perr = null; public void redirectStreams() @@ -421,21 +490,31 @@ public class Console extends WindowAdapter Rectangle bounds = desktop.getLastKnownDimensions("JAVA_CONSOLE_"); if (bounds == null) { - frame = initFrame("Jalview Java Console", desktop.getWidth() / 2, - desktop.getHeight() / 4, desktop.getX(), desktop.getY()); + frame = initFrame( + ChannelProperties.getProperty("app_name") + " Java Console", + desktop.getWidth() / 2, desktop.getHeight() / 4, + desktop.getX(), desktop.getY()); } else { - frame = initFrame("Jalview Java Console", bounds.width, bounds.height, - bounds.x, bounds.y); + frame = initFrame( + ChannelProperties.getProperty("app_name") + " Java Console", + bounds.width, bounds.height, bounds.x, bounds.y); } frame.setMinimumSize(new Dimension(MIN_WIDTH, MIN_HEIGHT)); // desktop.add(frame); initConsole(false); - JalviewAppender jappender = new JalviewAppender(); - jappender.setLayout(new SimpleLayout()); - JalviewAppender.setTextArea(textArea); - org.apache.log4j.Logger.getRootLogger().addAppender(jappender); + LogLevel level = (LogLevel) logLevelCombo.getSelectedItem(); + if (!Platform.isJS()) + { + JalviewAppender jappender = new JalviewAppender(level); + JalviewAppender.setTextArea(textArea); + jappender.start(); + if (jalview.bin.Console.log != null && jalview.bin.Console.log instanceof JLoggerLog4j) + { + JLoggerLog4j.addAppender(jalview.bin.Console.log, jappender); + } + } } public synchronized void stopConsole() @@ -775,12 +854,10 @@ public class Console extends WindowAdapter } else { - // reset log level to user preference - if (Cache.log != null) + // reset log level to what it was before + if (jalview.bin.Console.log != null) { - String userLogLevel = Cache.getDefault("logs.Jalview.level", - Level.INFO.toString()); - Cache.log.setLevel(Level.toLevel(userLogLevel)); + jalview.bin.Console.log.setLevel(startingLogLevel); } unredirectStreams();