JAL-3253 code tidies and tweaks to Desktop
[jalview.git] / src / jalview / gui / Console.java
index 603d418..f44dae1 100644 (file)
@@ -1,26 +1,46 @@
 /*
- * Jalview - A Sequence Alignment Editor and Viewer (Version 2.7)
- * Copyright (C) 2011 J Procter, AM Waterhouse, J Engelhardt, LM Lui, G Barton, M Clamp, S Searle
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
  * 
  * This file is part of Jalview.
  * 
  * Jalview is free software: you can redistribute it and/or
  * modify it under the terms of the GNU General Public License 
- * as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
- * 
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
+ *  
  * Jalview is distributed in the hope that it will be useful, but 
  * WITHOUT ANY WARRANTY; without even the implied warranty 
  * of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
  * PURPOSE.  See the GNU General Public License for more details.
  * 
- * You should have received a copy of the GNU General Public License along with Jalview.  If not, see <http://www.gnu.org/licenses/>.
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview.  If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
  */
 package jalview.gui;
 
-import java.io.*;
-import java.awt.*;
-import java.awt.event.*;
-import javax.swing.*;
+import jalview.util.MessageManager;
+
+import java.awt.BorderLayout;
+import java.awt.Dimension;
+import java.awt.GraphicsEnvironment;
+import java.awt.Rectangle;
+import java.awt.Toolkit;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
+import java.awt.event.WindowListener;
+import java.io.IOException;
+import java.io.PipedInputStream;
+import java.io.PipedOutputStream;
+import java.io.PrintStream;
+
+import javax.swing.JButton;
+import javax.swing.JFrame;
+import javax.swing.JScrollPane;
+import javax.swing.JTextArea;
 
 import org.apache.log4j.SimpleLayout;
 
@@ -33,8 +53,8 @@ import org.apache.log4j.SimpleLayout;
  * own applications RJHM van den Bergh , rvdb@comweb.nl
  */
 
-public class Console extends WindowAdapter implements WindowListener,
-        ActionListener, Runnable
+public class Console extends WindowAdapter
+        implements WindowListener, ActionListener, Runnable
 {
   private JFrame frame;
 
@@ -64,6 +84,10 @@ public class Console extends WindowAdapter implements WindowListener,
   // are we attached to some parent Desktop
   Desktop parent = null;
 
+  private int MIN_WIDTH = 300;
+
+  private int MIN_HEIGHT = 250;
+
   public Console()
   {
     // create all components and add them
@@ -91,7 +115,7 @@ public class Console extends WindowAdapter implements WindowListener,
     // textArea = cpt.getTextArea();
     textArea = new JTextArea();
     textArea.setEditable(false);
-    JButton button = new JButton("clear");
+    JButton button = new JButton(MessageManager.getString("action.clear"));
 
     // frame = cpt;
     frame.getContentPane().setLayout(new BorderLayout());
@@ -112,7 +136,7 @@ public class Console extends WindowAdapter implements WindowListener,
     }
     quit = false; // signals the Threads that they should exit
 
-    // Starting two seperate threads to read from the PipedInputStreams
+    // Starting two separate threads to read from the PipedInputStreams
     //
     reader = new Thread(this);
     reader.setDaemon(true);
@@ -223,7 +247,9 @@ public class Console extends WindowAdapter implements WindowListener,
             .getLocalGraphicsEnvironment();
     String[] fontNames = ge.getAvailableFontFamilyNames();
     for (int n = 0; n < fontNames.length; n++)
+    {
       System.out.println(fontNames[n]);
+    }
     // Testing part: simple an error thrown anywhere in this JVM will be printed
     // on the Console
     // We do it with a seperate Thread becasue we don't wan't to break a Thread
@@ -239,9 +265,13 @@ public class Console extends WindowAdapter implements WindowListener,
     JFrame frame = new JFrame(string);
     frame.setName(string);
     if (x == -1)
-      x = (int) (i / 2);
+    {
+      x = i / 2;
+    }
     if (y == -1)
-      y = (int) (j / 2);
+    {
+      y = j / 2;
+    }
     frame.setBounds(x, y, i, j);
     return frame;
   }
@@ -275,14 +305,16 @@ public class Console extends WindowAdapter implements WindowListener,
     }
     else
     {
-      frame = initFrame("Jalview Java Console", bounds.width,
-              bounds.height, bounds.x, bounds.y);
+      frame = initFrame("Jalview 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);
+    // BH 2019 JalviewAppender.setTextArea(textArea);
+    jappender.setTextArea(textArea);
     org.apache.log4j.Logger.getRootLogger().addAppender(jappender);
   }
 
@@ -325,6 +357,7 @@ public class Console extends WindowAdapter implements WindowListener,
     // System.exit(0);
   }
 
+  @Override
   public synchronized void windowClosed(WindowEvent evt)
   {
     frame.setVisible(false);
@@ -345,6 +378,7 @@ public class Console extends WindowAdapter implements WindowListener,
     }
   }
 
+  @Override
   public synchronized void windowClosing(WindowEvent evt)
   {
     frame.setVisible(false); // default behaviour of JFrame
@@ -353,12 +387,14 @@ public class Console extends WindowAdapter implements WindowListener,
     // frame.dispose();
   }
 
+  @Override
   public synchronized void actionPerformed(ActionEvent evt)
   {
     trimBuffer(true);
     // textArea.setText("");
   }
 
+  @Override
   public synchronized void run()
   {
     try
@@ -390,7 +426,9 @@ public class Console extends WindowAdapter implements WindowListener,
           // lines++;
         }
         if (quit)
+        {
           return;
+        }
       }
 
       while (Thread.currentThread() == reader2)
@@ -419,7 +457,9 @@ public class Console extends WindowAdapter implements WindowListener,
           // lines++;
         }
         if (quit)
+        {
           return;
+        }
       }
       while (Thread.currentThread() == textAppender)
       {
@@ -458,7 +498,6 @@ public class Console extends WindowAdapter implements WindowListener,
             } catch (InterruptedException e)
             {
             }
-            ;
           }
         }
         else
@@ -483,8 +522,8 @@ public class Console extends WindowAdapter implements WindowListener,
       textArea.append("The error is: " + e.getMessage());
       // Need to uncomment this to ensure that line tally is synched.
       // lines += 2;
-      stderr.println("Console reports an Internal error.\nThe error is: "
-              + e);
+      stderr.println(
+              "Console reports an Internal error.\nThe error is: " + e);
     }
 
     // just for testing (Throw a Nullpointer after 1 second)
@@ -497,7 +536,7 @@ public class Console extends WindowAdapter implements WindowListener,
       {
       }
       throw new NullPointerException(
-              "Application test: throwing an NullPointerException It should arrive at the console");
+              MessageManager.getString("exception.application_test_npe"));
     }
   }
 
@@ -511,6 +550,7 @@ public class Console extends WindowAdapter implements WindowListener,
     long time = System.nanoTime();
     javax.swing.SwingUtilities.invokeLater(new Runnable()
     {
+      @Override
       public void run()
       {
         displayPipe.append(input); // change to stringBuffer
@@ -578,7 +618,9 @@ public class Console extends WindowAdapter implements WindowListener,
     {
       int available = in.available();
       if (available == 0)
+      {
         break;
+      }
       byte b[] = new byte[available];
       in.read(b);
       input = input + new String(b, 0, b.length);
@@ -591,6 +633,10 @@ public class Console extends WindowAdapter implements WindowListener,
     return input;
   }
 
+  /**
+   * @j2sIgnore
+   * @param arg
+   */
   public static void main(String[] arg)
   {
     new Console().test(); // create console with not reference