cleanup: BaseTableView on the way to limbus

This commit is contained in:
Gregory Shrago
2010-08-11 03:27:43 +04:00
parent c4247708a1
commit 04c48c8338
2 changed files with 47 additions and 71 deletions
@@ -17,78 +17,25 @@ package com.intellij.ui.table;
import com.intellij.openapi.diagnostic.Logger;
import com.intellij.util.config.Storage;
import com.intellij.util.ui.ColumnInfo;
import com.intellij.util.ui.ListTableModel;
import com.intellij.util.ui.SortableColumnModel;
import com.intellij.util.ui.Table;
import org.jetbrains.annotations.NonNls;
import javax.swing.*;
import javax.swing.event.TableModelEvent;
import javax.swing.event.TableModelListener;
import javax.swing.table.JTableHeader;
import javax.swing.table.TableColumn;
import javax.swing.table.TableColumnModel;
import javax.swing.table.TableModel;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.ArrayList;
import java.util.Arrays;
/**
* Do NOT add code that assumes that table has same number of rows as model. It isn't true!
*/
public abstract class BaseTableView extends Table {
public class BaseTableView extends Table {
private static final Logger LOG = Logger.getInstance("#com.intellij.ui.table.BaseTableView");
public BaseTableView() {
this(new ListTableModel(ColumnInfo.EMPTY_ARRAY));
}
public BaseTableView(final ListTableModel model) {
super(model);
final JTableHeader tableHeader = getTableHeader();
if (tableHeader != null) {
tableHeader.addMouseListener(new MouseAdapter() {
public void mouseClicked(final MouseEvent e) {
processEvent(e);
}
public void mousePressed(final MouseEvent e) {
processEvent(e);
}
public void mouseReleased(final MouseEvent e) {
processEvent(e);
}
private void processEvent(MouseEvent e) {
final int column = convertColumnIndexToModel(tableHeader.columnAtPoint(e.getPoint()));
if (column > -1) {
onHeaderClicked(column, e);
}
}
});
}
}
protected abstract void onHeaderClicked(int column, MouseEvent e);
protected ListTableModel getListTableModel() {
return (ListTableModel) getModel();
}
public void setModel(final TableModel dataModel) {
LOG.assertTrue(dataModel instanceof SortableColumnModel);
super.setModel(dataModel);
dataModel.addTableModelListener(new TableModelListener() {
public void tableChanged(final TableModelEvent e) {
JTableHeader header = getTableHeader();
if (header != null) {
header.repaint();
}
}
});
}
@NonNls
@@ -24,10 +24,9 @@ import org.jetbrains.annotations.Nullable;
import javax.swing.*;
import javax.swing.event.TableModelEvent;
import javax.swing.table.JTableHeader;
import javax.swing.table.TableCellEditor;
import javax.swing.table.TableCellRenderer;
import javax.swing.table.TableColumn;
import javax.swing.event.TableModelListener;
import javax.swing.table.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.*;
@@ -38,9 +37,45 @@ public class TableView<Item> extends BaseTableView implements ItemsProvider, Sel
public TableView(final ListTableModel<Item> model) {
super(model);
final JTableHeader tableHeader = getTableHeader();
if (tableHeader != null) {
tableHeader.addMouseListener(new MouseAdapter() {
public void mouseClicked(final MouseEvent e) {
processEvent(e);
}
public void mousePressed(final MouseEvent e) {
processEvent(e);
}
public void mouseReleased(final MouseEvent e) {
processEvent(e);
}
private void processEvent(MouseEvent e) {
final int column = convertColumnIndexToModel(tableHeader.columnAtPoint(e.getPoint()));
if (column > -1) {
onHeaderClicked(column, e);
}
}
});
}
setModel(model);
}
public void setModel(final TableModel dataModel) {
assert dataModel instanceof SortableColumnModel : "SortableColumnModel required";
super.setModel(dataModel);
dataModel.addTableModelListener(new TableModelListener() {
public void tableChanged(final TableModelEvent e) {
JTableHeader header = getTableHeader();
if (header != null) {
header.repaint();
}
}
});
}
public void setModel(final ListTableModel<Item> model) {
super.setModel(model);
final JTableHeader header = getTableHeader();
@@ -50,13 +85,12 @@ public class TableView<Item> extends BaseTableView implements ItemsProvider, Sel
updateColumnSizes();
}
@Override
public ListTableModel<Item> getListTableModel() {
return (ListTableModel<Item>)super.getModel();
}
public TableCellRenderer getCellRenderer(int row, int column) {
ColumnInfo columnInfo = getListTableModel().getColumnInfos()[convertColumnIndexToModel(column)];
final ColumnInfo<Item, ?> columnInfo = getListTableModel().getColumnInfos()[convertColumnIndexToModel(column)];
TableCellRenderer renderer = columnInfo.getRenderer(getListTableModel().getItems().get(row));
if (renderer == null) {
return super.getCellRenderer(row, column);
@@ -143,18 +177,13 @@ public class TableView<Item> extends BaseTableView implements ItemsProvider, Sel
}
public TableCellEditor getCellEditor(int row, int column) {
ColumnInfo columnInfo = getListTableModel().getColumnInfos()[convertColumnIndexToModel(column)];
TableCellEditor editor = columnInfo.getEditor(getListTableModel().getItems().get(row));
if (editor == null) {
return super.getCellEditor(row, column);
}
else {
return editor;
}
final ColumnInfo<Item, ?> columnInfo = getListTableModel().getColumnInfos()[convertColumnIndexToModel(column)];
final TableCellEditor editor = columnInfo.getEditor(getListTableModel().getItems().get(row));
return editor == null ? super.getCellEditor(row, column) : editor;
}
public java.util.List<Item> getItems() {
return ((ListTableModel<Item>)getModel()).getItems();
public List<Item> getItems() {
return getListTableModel().getItems();
}
public void resortKeepSelection() {