mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
cleanup: BaseTableView on the way to limbus
This commit is contained in:
@@ -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() {
|
||||
|
||||
Reference in New Issue
Block a user