Index: trunk/src/tmcsim/simulationmanager/model/LogEntryCellRenderer.java
===================================================================
--- trunk/src/tmcsim/simulationmanager/model/LogEntryCellRenderer.java	(revision 2)
+++ trunk/src/tmcsim/simulationmanager/model/LogEntryCellRenderer.java	(revision 59)
@@ -1,4 +1,5 @@
 package tmcsim.simulationmanager.model;
 
+import java.awt.Color;
 import java.awt.Component;
 import java.util.Enumeration;
@@ -6,5 +7,4 @@
 import java.util.Iterator;
 import java.util.Map;
-
 import javax.swing.JTable;
 import javax.swing.JTextArea;
@@ -16,23 +16,28 @@
 /**
  * TableCellRender to display a multi-line cell.
- * 
+ *
  * http://www.roseindia.net/javatutorials/JTable_in_JDK.shtml
+ *
  * @author Dr. Heinz M. Kabutz
  */
 @SuppressWarnings("serial")
 public class LogEntryCellRenderer extends JTextArea implements
-        TableCellRenderer {
-
-    /** DefaultTableCellRenderer for displaying multi line cells*/
+        TableCellRenderer
+{
+    /**
+     * DefaultTableCellRenderer for displaying multi line cells
+     */
     private final DefaultTableCellRenderer adaptee;
-
-    /** map from table to map of rows to map of column heights */
+    /**
+     * map from table to map of rows to map of column heights
+     */
     private final Map<JTable, Map<Integer, Map<Integer, Integer>>> cellSizes;
 
-    public LogEntryCellRenderer() {
+    public LogEntryCellRenderer()
+    {
 
-        adaptee   = new DefaultTableCellRenderer();
+        adaptee = new DefaultTableCellRenderer();
         cellSizes = new HashMap<JTable, Map<Integer, Map<Integer, Integer>>>();
-        
+
         setLineWrap(true);
         setWrapStyleWord(true);
@@ -40,11 +45,23 @@
 
     public Component getTableCellRendererComponent(JTable table, Object obj,
-            boolean isSelected, boolean hasFocus, int row, int column) {
+            boolean isSelected, boolean hasFocus, int row, int column)
+    {
 
         // set the colours, etc. using the standard for that platform
         adaptee.getTableCellRendererComponent(table, obj, isSelected, hasFocus,
                 row, column);
-        setForeground(adaptee.getForeground());
-        setBackground(adaptee.getBackground());
+        // FIXES defect where cell text disappears when selected
+        // TODO: Better would be to make table not selectable
+        // http://stackoverflow.com/questions/8291329/set-all-jtable-cells-unselectable
+        if (isSelected)
+        {
+            setForeground(Color.WHITE);
+            setBackground(Color.GRAY);
+        }
+        else
+        {
+            setForeground(adaptee.getForeground());
+            setBackground(adaptee.getBackground());
+        }
         setBorder(adaptee.getBorder());
         setFont(adaptee.getFont());
@@ -57,19 +74,23 @@
         addSize(table, row, column, height_wanted);
         height_wanted = findTotalMaximumRowSize(table, row);
-        if (height_wanted != table.getRowHeight(row)) {
+        if (height_wanted != table.getRowHeight(row))
+        {
             table.setRowHeight(row, height_wanted);
         }
-        
+
         return this;
     }
 
-    private void addSize(JTable table, int row, int column, int height) {
+    private void addSize(JTable table, int row, int column, int height)
+    {
         Map<Integer, Map<Integer, Integer>> rows = cellSizes.get(table);
-        if (rows == null) {
+        if (rows == null)
+        {
             cellSizes.put(table, rows = new HashMap<Integer, Map<Integer, Integer>>());
         }
-        
+
         Map<Integer, Integer> rowheights = rows.get(new Integer(row));
-        if (rowheights == null) {
+        if (rowheights == null)
+        {
             rows.put(new Integer(row), rowheights = new HashMap<Integer, Integer>());
         }
@@ -78,15 +99,18 @@
 
     /**
-     * Look through all columns and get the renderer.  If it is
-     * also a TextAreaRenderer, we look at the maximum height in
-     * its hash table for this row.
+     * Look through all columns and get the renderer. If it is also a
+     * TextAreaRenderer, we look at the maximum height in its hash table for
+     * this row.
      */
-    private int findTotalMaximumRowSize(JTable table, int row) {
+    private int findTotalMaximumRowSize(JTable table, int row)
+    {
         int maximum_height = 0;
         Enumeration columns = table.getColumnModel().getColumns();
-        while (columns.hasMoreElements()) {
+        while (columns.hasMoreElements())
+        {
             TableColumn tc = (TableColumn) columns.nextElement();
             TableCellRenderer cellRenderer = tc.getCellRenderer();
-            if (cellRenderer instanceof LogEntryCellRenderer) {
+            if (cellRenderer instanceof LogEntryCellRenderer)
+            {
                 LogEntryCellRenderer tar = (LogEntryCellRenderer) cellRenderer;
                 maximum_height = Math.max(maximum_height, tar
@@ -97,15 +121,21 @@
     }
 
-    private int findMaximumRowSize(JTable table, int row) {
+    private int findMaximumRowSize(JTable table, int row)
+    {
         Map<Integer, Map<Integer, Integer>> rows = cellSizes.get(table);
         if (rows == null)
+        {
             return 0;
-        
+        }
+
         Map<Integer, Integer> rowheights = rows.get(new Integer(row));
         if (rowheights == null)
+        {
             return 0;
+        }
         int maximum_height = 0;
-        
-        for (Iterator it = rowheights.entrySet().iterator(); it.hasNext();) {
+
+        for (Iterator it = rowheights.entrySet().iterator(); it.hasNext();)
+        {
             Map.Entry entry = (Map.Entry) it.next();
             int cellHeight = ((Integer) entry.getValue()).intValue();
