JAL-1988 JAL-3416 Using the flatlaf-extras About, Preferences and Quit handler system...
[jalview.git] / src / jalview / gui / Console.java
index c0063c7..050523e 100644 (file)
@@ -54,6 +54,7 @@ import org.apache.log4j.Level;
 import org.apache.log4j.SimpleLayout;
 
 import jalview.bin.Cache;
+import jalview.util.ChannelProperties;
 import jalview.util.MessageManager;
 
 /**
@@ -100,7 +101,9 @@ public class Console extends WindowAdapter
 
   private int MIN_HEIGHT = 250;
 
-  private JComboBox logLevelCombo = new JComboBox();
+  private JComboBox<Level> logLevelCombo = new JComboBox<Level>();
+
+  protected Level startingLogLevel = Level.INFO;
 
   public Console()
   {
@@ -144,14 +147,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);
       }
 
     });
@@ -162,13 +169,16 @@ public class Console extends WindowAdapter
             MessageManager.getString("label.log_level") + ":");
 
     // logLevelCombo.addItem(Level.ALL);
+    logLevelCombo.addItem(Level.TRACE);
     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);
+    // set startingLogLevel
+    startingLogLevel = Cache.log == null ? Level.INFO
+            : Cache.log.getLevel();
     setChosenLogLevelCombo();
     logLevelCombo.addActionListener(new ActionListener()
     {
@@ -193,10 +203,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 +256,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(Level setLogLevel)
+  {
+    logLevelCombo.setSelectedItem(setLogLevel);
+    if (!logLevelCombo.getSelectedItem().equals(setLogLevel))
     {
-      logLevelCombo.setSelectedItem(Level.INFO);
+      // setLogLevel not (yet) in list
+      if (setLogLevel != null && setLogLevel instanceof Level)
+      {
+        // add new item to list (might be set via .jalview_properties)
+        boolean added = false;
+        for (int i = 0; i < logLevelCombo.getItemCount(); i++)
+        {
+          Level l = (Level) logLevelCombo.getItemAt(i);
+          if (l.isGreaterOrEqual(setLogLevel))
+          {
+            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(Level.INFO);
+      }
     }
   }
 
@@ -267,11 +308,6 @@ public class Console extends WindowAdapter
     cb.setContents(consoleTextSelection, null);
   }
 
-  private void setLogLevel()
-  {
-
-  }
-
   PipedOutputStream pout = null, perr = null;
 
   public void redirectStreams()
@@ -421,13 +457,16 @@ 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);
@@ -775,12 +814,10 @@ public class Console extends WindowAdapter
     }
     else
     {
-      // reset log level to user preference
+      // reset log level to what it was before
       if (Cache.log != null)
       {
-        String userLogLevel = Cache.getDefault("logs.Jalview.level",
-                Level.INFO.toString());
-        Cache.log.setLevel(Level.toLevel(userLogLevel));
+        Cache.log.setLevel(startingLogLevel);
       }
 
       unredirectStreams();