EA-59420: use view indices in TableSpeedSearch

This commit is contained in:
Sergey Savenko
2014-08-15 13:48:11 +04:00
parent 94fbe4c75a
commit 81c3faa338
@@ -20,7 +20,6 @@ import com.intellij.util.PairFunction;
import com.intellij.util.containers.Convertor;
import javax.swing.*;
import javax.swing.table.TableModel;
import java.util.ListIterator;
public class TableSpeedSearch extends SpeedSearchBase<JTable> {
@@ -55,9 +54,8 @@ public class TableSpeedSearch extends SpeedSearchBase<JTable> {
@Override
protected boolean isSpeedSearchEnabled() {
JTable table = getComponent();
boolean tableIsNotEmpty = table.getRowCount() != 0 && table.getColumnCount() != 0;
return tableIsNotEmpty && !table.isEditing() && super.isSpeedSearchEnabled();
boolean tableIsNotEmpty = myComponent.getRowCount() != 0 && myComponent.getColumnCount() != 0;
return tableIsNotEmpty && !myComponent.isEditing() && super.isSpeedSearchEnabled();
}
@Override
@@ -67,16 +65,14 @@ public class TableSpeedSearch extends SpeedSearchBase<JTable> {
@Override
protected int getElementCount() {
final TableModel tableModel = myComponent.getModel();
return tableModel.getRowCount() * tableModel.getColumnCount();
return myComponent.getRowCount() * myComponent.getColumnCount();
}
@Override
protected void selectElement(Object element, String selectedText) {
final int index = ((Integer)element).intValue();
final TableModel model = myComponent.getModel();
final int row = index / model.getColumnCount();
final int col = index % model.getColumnCount();
final int row = index / myComponent.getColumnCount();
final int col = index % myComponent.getColumnCount();
myComponent.getSelectionModel().setSelectionInterval(row, row);
myComponent.getColumnModel().getSelectionModel().setSelectionInterval(col, col);
TableUtil.scrollSelectionToVisible(myComponent);
@@ -87,7 +83,7 @@ public class TableSpeedSearch extends SpeedSearchBase<JTable> {
final int row = myComponent.getSelectedRow();
final int col = myComponent.getSelectedColumn();
// selected row is not enough as we want to select specific cell in a large multi-column table
return row > -1 && col > -1 ? row * myComponent.getModel().getColumnCount() + col : -1;
return row > -1 && col > -1 ? row * myComponent.getColumnCount() + col : -1;
}
@Override
@@ -98,10 +94,9 @@ public class TableSpeedSearch extends SpeedSearchBase<JTable> {
@Override
protected String getElementText(Object element) {
final int index = ((Integer)element).intValue();
final TableModel model = myComponent.getModel();
int row = myComponent.convertRowIndexToModel(index / model.getColumnCount());
int col = myComponent.convertColumnIndexToModel(index % model.getColumnCount());
Object value = model.getValueAt(row, col);
int row = index / myComponent.getColumnCount();
int col = index % myComponent.getColumnCount();
Object value = myComponent.getValueAt(row, col);
return myToStringConvertor.fun(value, new Cell(row, col));
}