diff --git a/platform/platform-api/src/com/intellij/ui/table/BaseTableView.java b/platform/platform-api/src/com/intellij/ui/table/BaseTableView.java index b8a61611308d..67a63dbc61f6 100644 --- a/platform/platform-api/src/com/intellij/ui/table/BaseTableView.java +++ b/platform/platform-api/src/com/intellij/ui/table/BaseTableView.java @@ -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 diff --git a/platform/platform-api/src/com/intellij/ui/table/TableView.java b/platform/platform-api/src/com/intellij/ui/table/TableView.java index ce0862170b02..3fcfd98ad7f3 100644 --- a/platform/platform-api/src/com/intellij/ui/table/TableView.java +++ b/platform/platform-api/src/com/intellij/ui/table/TableView.java @@ -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 extends BaseTableView implements ItemsProvider, Sel public TableView(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); + } + } + }); + } 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 model) { super.setModel(model); final JTableHeader header = getTableHeader(); @@ -50,13 +85,12 @@ public class TableView extends BaseTableView implements ItemsProvider, Sel updateColumnSizes(); } - @Override public ListTableModel getListTableModel() { return (ListTableModel)super.getModel(); } public TableCellRenderer getCellRenderer(int row, int column) { - ColumnInfo columnInfo = getListTableModel().getColumnInfos()[convertColumnIndexToModel(column)]; + final ColumnInfo 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 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 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 getItems() { - return ((ListTableModel)getModel()).getItems(); + public List getItems() { + return getListTableModel().getItems(); } public void resortKeepSelection() {