import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
+ import javax.swing.SwingUtilities;
import javax.swing.border.Border;
import javax.swing.text.DefaultCaret;
+import jalview.bin.Cache;
import jalview.log.JLoggerI.LogLevel;
import jalview.log.JLoggerLog4j;
import jalview.log.JalviewAppender;
private JComboBox<LogLevel> logLevelCombo = new JComboBox<LogLevel>();
- protected LogLevel startingLogLevel = LogLevel.INFO;
+ protected LogLevel startingLogLevel = null;
public Console()
{
scrollPane.setBorder(noBorder);
textArea.addMouseListener(new MouseAdapter()
{
+ @Override
public void mouseClicked(MouseEvent e)
{
if (e.getButton() == MouseEvent.BUTTON1)
MessageManager.getString("label.copy_to_clipboard"));
copyToClipboardButton.addActionListener(new ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
copyConsoleTextToClipboard();
private Color fg = textArea.getForeground();
+ @Override
public void mousePressed(MouseEvent e)
{
textArea.setBackground(textArea.getSelectionColor());
textArea.setForeground(textArea.getSelectedTextColor());
}
+ @Override
public void mouseReleased(MouseEvent e)
{
textArea.setBackground(bg);
// logLevelCombo.addItem(LogLevel.ERROR);
// logLevelCombo.addItem(LogLevel.OFF);
// set startingLogLevel
- startingLogLevel = jalview.bin.Console.log == null ? LogLevel.INFO
- : jalview.bin.Console.log.getLevel();
+
+ if (jalview.bin.Console.getLogger() == null)
+ {
+ startingLogLevel = jalview.bin.Console.getCachedLogLevel();
+ }
+ else
+ {
+ startingLogLevel = jalview.bin.Console.getLogger().getLevel();
+ }
setChosenLogLevelCombo();
logLevelCombo.addActionListener(new ActionListener()
{
+ @Override
public void actionPerformed(ActionEvent e)
{
if (jalview.bin.Console.log != null)
boolean added = false;
for (int i = 0; i < logLevelCombo.getItemCount(); i++)
{
- LogLevel l = (LogLevel) logLevelCombo.getItemAt(i);
+ LogLevel l = logLevelCombo.getItemAt(i);
if (l.compareTo(setLogLevel) >= 0)
{
logLevelCombo.insertItemAt(setLogLevel, i);
*/
public Console(Desktop desktop)
{
- this(desktop, true);
- }
-
- /**
- * attach a console to the desktop - the desktop will open it if requested.
- *
- * @param desktop
- * @param showjconsole
- * - if true, then redirect stdout immediately
- */
- public Console(Desktop desktop, boolean showjconsole)
- {
parent = desktop;
// window name - get x,y,width, height possibly scaled
- Rectangle bounds = desktop.getLastKnownDimensions("JAVA_CONSOLE_");
- if (bounds == null)
+ Rectangle bounds = parent == null ? null
+ : parent.getLastKnownDimensions("JAVA_CONSOLE_");
+ if (bounds != null)
{
frame = initFrame(
ChannelProperties.getProperty("app_name") + " Java Console",
- desktop.getWidth() / 2, desktop.getHeight() / 4,
- desktop.getX(), desktop.getY());
+ bounds.width, bounds.height, bounds.x, bounds.y);
+ }
+ else if (parent != null && parent.getWidth() > 0
+ && parent.getHeight() > 0)
+ {
+ frame = initFrame(
+ ChannelProperties.getProperty("app_name") + " Java Console",
+ parent.getWidth() / 2, parent.getHeight() / 4, parent.getX(),
+ parent.getY());
}
else
{
frame = initFrame(
ChannelProperties.getProperty("app_name") + " Java Console",
- bounds.width, bounds.height, bounds.x, bounds.y);
+ MIN_WIDTH, MIN_HEIGHT, 10, 10);
}
frame.setMinimumSize(new Dimension(MIN_WIDTH, MIN_HEIGHT));
- // desktop.add(frame);
+ // parent.add(frame);
initConsole(false);
LogLevel level = (LogLevel) logLevelCombo.getSelectedItem();
if (!Platform.isJS())
pin.close();
} catch (Exception e)
{
+ jalview.bin.Console.debug("pin.close() error", e);
}
try
{
pin2.close();
} catch (Exception e)
{
+ jalview.bin.Console.debug("pin2.close() error", e);
}
try
{
textAppender.join(10);
} catch (Exception e)
{
+ jalview.bin.Console.debug("textAppender.join(10) error", e);
}
}
/*
{
try
{
- this.wait(100); // ##### implicated BLOCKED
- if (pin.available() == 0)
- {
- trimBuffer(false);
- }
+ this.wait(100);
-// if (pin.available() == 0)
-// {
-// trimBuffer(false);
-// }
} catch (InterruptedException ie)
{
+ jalview.bin.Console.debug("pin.available() error", ie);
}
}
{
try
{
- this.wait(100);
+ this.wait(100); // ##### implicated BLOCKED
if (pin2.available() == 0)
{
trimBuffer(false);
}
} catch (InterruptedException ie)
{
+ jalview.bin.Console.debug("pin.available() error", ie);
}
}
while (pin2.available() != 0)
// check string buffer - if greater than console, clear console and
// replace with last segment of content, otherwise, append all to
// content.
- long count;
while (displayPipe.length() > 0)
{
- count = 0;
StringBuffer tmp = new StringBuffer(), replace;
synchronized (displayPipe)
{
replace = displayPipe;
displayPipe = tmp;
}
- // simply append whole buffer
- synchronized (textArea.getDocument())
+ // Append formatted message to textarea using the Swing Thread.
+ SwingUtilities.invokeLater(new Runnable()
{
- textArea.append(replace.toString()); // ##### implicated BLOCKED
- count += replace.length();
- if (count > byteslim)
+ public void run()
{
+ textArea.append(replace.toString());
trimBuffer(false);
}
- }
-
+ });
}
if (displayPipe.length() == 0)
{
this.wait(100);
if (displayPipe.length() == 0)
{
- trimBuffer(false);
+ // post a trim on Swing Thread.
+ SwingUtilities.invokeLater(new Runnable()
+ {
+ public void run()
+ {
+ trimBuffer(false);
+ }
+ });
}
} catch (InterruptedException e)
{
+ jalview.bin.Console.debug("displayPipe.length() error", e);
}
}
}
this.wait(100);
} catch (InterruptedException e)
{
-
+ jalview.bin.Console.debug("this.wait(100) error", e);
}
}
if (quit)
this.wait(1000);
} catch (InterruptedException ie)
{
+ jalview.bin.Console.debug("this.wait(1000) error", ie);
}
throw new NullPointerException(
MessageManager.getString("exception.application_test_npe"));
@Override
public void run()
{
- displayPipe.append(input); // change to stringBuffer
- // displayPipe.flush();
-
+ displayPipe.append(input);
}
});
// stderr.println("Time taken to Spawnappend:\t" + (System.nanoTime() -
+ "\nTruncated...\n";
} catch (Exception e)
{
- e.printStackTrace();
+ jalview.bin.Console.warn("textArea Exception", e);
}
}
// trim the buffer
}
} catch (Exception e)
{
- e.printStackTrace();
+ jalview.bin.Console.warn("textArea Exception", e);
}
// lines = textArea.getLineCount();
}