Changeset 59 in tmcsimulator for trunk/src/tmcsim/simulationmanager/model


Ignore:
Timestamp:
03/15/2017 10:20:21 AM (9 years ago)
Author:
jdalbey
Message:

Merge CAD Client updates for multiple incident view windows.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/tmcsim/simulationmanager/model/LogEntryCellRenderer.java

    r2 r59  
    11package tmcsim.simulationmanager.model; 
    22 
     3import java.awt.Color; 
    34import java.awt.Component; 
    45import java.util.Enumeration; 
     
    67import java.util.Iterator; 
    78import java.util.Map; 
    8  
    99import javax.swing.JTable; 
    1010import javax.swing.JTextArea; 
     
    1616/** 
    1717 * TableCellRender to display a multi-line cell. 
    18  *  
     18 * 
    1919 * http://www.roseindia.net/javatutorials/JTable_in_JDK.shtml 
     20 * 
    2021 * @author Dr. Heinz M. Kabutz 
    2122 */ 
    2223@SuppressWarnings("serial") 
    2324public class LogEntryCellRenderer extends JTextArea implements 
    24         TableCellRenderer { 
    25  
    26     /** DefaultTableCellRenderer for displaying multi line cells*/ 
     25        TableCellRenderer 
     26{ 
     27    /** 
     28     * DefaultTableCellRenderer for displaying multi line cells 
     29     */ 
    2730    private final DefaultTableCellRenderer adaptee; 
    28  
    29     /** map from table to map of rows to map of column heights */ 
     31    /** 
     32     * map from table to map of rows to map of column heights 
     33     */ 
    3034    private final Map<JTable, Map<Integer, Map<Integer, Integer>>> cellSizes; 
    3135 
    32     public LogEntryCellRenderer() { 
     36    public LogEntryCellRenderer() 
     37    { 
    3338 
    34         adaptee   = new DefaultTableCellRenderer(); 
     39        adaptee = new DefaultTableCellRenderer(); 
    3540        cellSizes = new HashMap<JTable, Map<Integer, Map<Integer, Integer>>>(); 
    36          
     41 
    3742        setLineWrap(true); 
    3843        setWrapStyleWord(true); 
     
    4045 
    4146    public Component getTableCellRendererComponent(JTable table, Object obj, 
    42             boolean isSelected, boolean hasFocus, int row, int column) { 
     47            boolean isSelected, boolean hasFocus, int row, int column) 
     48    { 
    4349 
    4450        // set the colours, etc. using the standard for that platform 
    4551        adaptee.getTableCellRendererComponent(table, obj, isSelected, hasFocus, 
    4652                row, column); 
    47         setForeground(adaptee.getForeground()); 
    48         setBackground(adaptee.getBackground()); 
     53        // FIXES defect where cell text disappears when selected 
     54        // TODO: Better would be to make table not selectable 
     55        // http://stackoverflow.com/questions/8291329/set-all-jtable-cells-unselectable 
     56        if (isSelected) 
     57        { 
     58            setForeground(Color.WHITE); 
     59            setBackground(Color.GRAY); 
     60        } 
     61        else 
     62        { 
     63            setForeground(adaptee.getForeground()); 
     64            setBackground(adaptee.getBackground()); 
     65        } 
    4966        setBorder(adaptee.getBorder()); 
    5067        setFont(adaptee.getFont()); 
     
    5774        addSize(table, row, column, height_wanted); 
    5875        height_wanted = findTotalMaximumRowSize(table, row); 
    59         if (height_wanted != table.getRowHeight(row)) { 
     76        if (height_wanted != table.getRowHeight(row)) 
     77        { 
    6078            table.setRowHeight(row, height_wanted); 
    6179        } 
    62          
     80 
    6381        return this; 
    6482    } 
    6583 
    66     private void addSize(JTable table, int row, int column, int height) { 
     84    private void addSize(JTable table, int row, int column, int height) 
     85    { 
    6786        Map<Integer, Map<Integer, Integer>> rows = cellSizes.get(table); 
    68         if (rows == null) { 
     87        if (rows == null) 
     88        { 
    6989            cellSizes.put(table, rows = new HashMap<Integer, Map<Integer, Integer>>()); 
    7090        } 
    71          
     91 
    7292        Map<Integer, Integer> rowheights = rows.get(new Integer(row)); 
    73         if (rowheights == null) { 
     93        if (rowheights == null) 
     94        { 
    7495            rows.put(new Integer(row), rowheights = new HashMap<Integer, Integer>()); 
    7596        } 
     
    7899 
    79100    /** 
    80      * Look through all columns and get the renderer.  If it is 
    81      * also a TextAreaRenderer, we look at the maximum height in 
    82      * its hash table for this row. 
     101     * Look through all columns and get the renderer. If it is also a 
     102     * TextAreaRenderer, we look at the maximum height in its hash table for 
     103     * this row. 
    83104     */ 
    84     private int findTotalMaximumRowSize(JTable table, int row) { 
     105    private int findTotalMaximumRowSize(JTable table, int row) 
     106    { 
    85107        int maximum_height = 0; 
    86108        Enumeration columns = table.getColumnModel().getColumns(); 
    87         while (columns.hasMoreElements()) { 
     109        while (columns.hasMoreElements()) 
     110        { 
    88111            TableColumn tc = (TableColumn) columns.nextElement(); 
    89112            TableCellRenderer cellRenderer = tc.getCellRenderer(); 
    90             if (cellRenderer instanceof LogEntryCellRenderer) { 
     113            if (cellRenderer instanceof LogEntryCellRenderer) 
     114            { 
    91115                LogEntryCellRenderer tar = (LogEntryCellRenderer) cellRenderer; 
    92116                maximum_height = Math.max(maximum_height, tar 
     
    97121    } 
    98122 
    99     private int findMaximumRowSize(JTable table, int row) { 
     123    private int findMaximumRowSize(JTable table, int row) 
     124    { 
    100125        Map<Integer, Map<Integer, Integer>> rows = cellSizes.get(table); 
    101126        if (rows == null) 
     127        { 
    102128            return 0; 
    103          
     129        } 
     130 
    104131        Map<Integer, Integer> rowheights = rows.get(new Integer(row)); 
    105132        if (rowheights == null) 
     133        { 
    106134            return 0; 
     135        } 
    107136        int maximum_height = 0; 
    108          
    109         for (Iterator it = rowheights.entrySet().iterator(); it.hasNext();) { 
     137 
     138        for (Iterator it = rowheights.entrySet().iterator(); it.hasNext();) 
     139        { 
    110140            Map.Entry entry = (Map.Entry) it.next(); 
    111141            int cellHeight = ((Integer) entry.getValue()).intValue(); 
Note: See TracChangeset for help on using the changeset viewer.