Ignore:
Timestamp:
2011-11-20T18:08:10+01:00 (12 years ago)
Author:
bastiK
Message:

history panel: new column indicating CT status of the user

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/gui/history/VersionTable.java

    r4598 r4601  
    55
    66import java.awt.Component;
     7import java.awt.Dimension;
     8import java.awt.Rectangle;
    79import java.awt.event.ActionEvent;
    810import java.awt.event.ItemEvent;
     
    1618import javax.swing.DefaultListSelectionModel;
    1719import javax.swing.JCheckBox;
     20import javax.swing.JLabel;
    1821import javax.swing.JPopupMenu;
    1922import javax.swing.JRadioButton;
     
    2124import javax.swing.ListSelectionModel;
    2225import javax.swing.SwingConstants;
     26import javax.swing.UIManager;
    2327import javax.swing.event.ListSelectionEvent;
    2428import javax.swing.event.ListSelectionListener;
    2529import javax.swing.event.TableModelEvent;
     30import javax.swing.event.TableModelListener;
    2631import javax.swing.table.TableCellRenderer;
    2732
     
    3843
    3944    protected void build() {
     45        getTableHeader().setFont(getTableHeader().getFont().deriveFont(9f));
    4046        setRowSelectionAllowed(false);
     47        setShowGrid(false);
     48        setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
     49        setBackground(UIManager.getColor("Button.background"));
     50        setIntercellSpacing(new Dimension(6, 0));
     51        putClientProperty("terminateEditOnFocusLost", true);
    4152        popupMenu = new VersionTablePopupMenu();
    4253        addMouseListener(new PopupMenuTrigger());
     54        getModel().addTableModelListener(new TableModelListener() {
     55            @Override
     56            public void tableChanged(TableModelEvent e) {
     57                adjustColumnWidth(VersionTable.this, 0);
     58                adjustColumnWidth(VersionTable.this, 4);
     59                adjustColumnWidth(VersionTable.this, 5);
     60            }
     61        });
    4362    }
    4463
     
    4766        model.addObserver(this);
    4867        build();
     68    }
     69
     70    // some kind of hack to prevent the table from scrolling to the
     71    // right when clicking on the cells
     72    @Override
     73    public void scrollRectToVisible(Rectangle aRect) {
     74        super.scrollRectToVisible(new Rectangle(0, aRect.y, aRect.width, aRect.height));
    4975    }
    5076
     
    135161
    136162        public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus,int row,int column) {
    137             HistoryBrowserModel.VersionTableModel model = (HistoryBrowserModel.VersionTableModel)table.getModel();
    138163            setSelected(value != null && (Boolean)value);
    139164            setHorizontalAlignment(SwingConstants.CENTER);
     
    169194        }
    170195    }
     196
     197    public static class LabelRenderer implements TableCellRenderer {
     198        public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus,int row,int column) {
     199            return (Component) value;
     200        }
     201    }
     202
     203    public static class AlignedRenderer extends JLabel implements TableCellRenderer {
     204        public AlignedRenderer(int hAlignment) {
     205            setHorizontalAlignment(hAlignment);
     206        }
     207        public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus,int row,int column) {
     208            String v = value.toString();
     209            setText(v);
     210            return this;
     211        }
     212    }
     213
     214    private static void adjustColumnWidth(JTable tbl, int col) {
     215        int maxwidth = 0;
     216
     217        for (int row=0; row<tbl.getRowCount(); row++) {
     218            TableCellRenderer tcr = tbl.getCellRenderer(row, col);
     219            Object val = tbl.getValueAt(row, col);
     220            Component comp = tcr.getTableCellRendererComponent(tbl, val, false, false, row, col);
     221            maxwidth = Math.max(comp.getPreferredSize().width, maxwidth);
     222        }
     223        TableCellRenderer tcr = tbl.getTableHeader().getDefaultRenderer();
     224        Object val = tbl.getColumnModel().getColumn(col).getHeaderValue();
     225        Component comp = tcr.getTableCellRendererComponent(tbl, val, false, false, -1, col);
     226        maxwidth = Math.max(comp.getPreferredSize().width, maxwidth);
     227
     228        int spacing = tbl.getIntercellSpacing().width;
     229        tbl.getColumnModel().getColumn(col).setPreferredWidth(maxwidth + spacing);
     230    }
     231
    171232}
Note: See TracChangeset for help on using the changeset viewer.