01: package com.calipso.reportgenerator.userinterface;
02:
03: import com.calipso.reportgenerator.userinterface.PivotTable;
04: import com.calipso.reportgenerator.common.HeaderTableModel;
05:
06: import javax.swing.*;
07: import java.awt.*;
08:
09: /**
10: * Clase que se encarga de buscar el valor
11: * especificado para la dimension correspondiente.
12: */
13:
14: public class DimensionValuesSearcher {
15:
16: private PivotTable pivotTable;
17:
18: /**
19: * Inicializa una instancia de <code>DimensionValuesSearcher</code>
20: * @param pivotTable
21: */
22: public DimensionValuesSearcher(PivotTable pivotTable) {
23: this .pivotTable = pivotTable;
24: }
25:
26: /**
27: * Busca el valor value que recibe por parametro.
28: * @param searchLastIndex posicion del ultimo valor encontrado
29: * @param value valor a buscar de la dimension
30: * @param index indice de la dimension en el array devuelto por model.getValueFrom()
31: * @param byRow si busca por filas o por columnas
32: * @return
33: */
34: public int searchDimensionValues(int searchLastIndex, String value,
35: int index, boolean byRow) {
36: JTable dataTable = pivotTable.getDatajTable();
37: if (byRow) {
38: HeaderTableModel rowModel = (HeaderTableModel) pivotTable
39: .getRowHeaderjTable().getModel();
40: int selectedColumn = dataTable.getSelectedColumn();
41: for (int i = searchLastIndex; i < dataTable.getRowCount(); i++) {
42: Object[] values = rowModel.getValueFrom(i);
43: if (values[index] != null) {
44: if (values[index].toString().indexOf(value) >= 0) {
45: dataTable.setRowSelectionInterval(i, i);
46: dataTable.setColumnSelectionInterval(
47: selectedColumn, selectedColumn);
48: Rectangle cellBounds = dataTable.getCellRect(i,
49: selectedColumn, true);
50: JViewport viewport = (JViewport) dataTable
51: .getParent().getParent();
52: JScrollPane scrollPane = (JScrollPane) viewport
53: .getParent();
54: scrollPane.getVerticalScrollBar().setValue(
55: cellBounds.y);
56: return i + 1;
57: }
58: }
59: }
60: } else {
61: HeaderTableModel columnModel = (HeaderTableModel) pivotTable
62: .getColumnHeaderjTable().getModel();
63: int selectedRow = dataTable.getSelectedRow();
64: for (int i = searchLastIndex; i < dataTable
65: .getColumnCount(); i++) {
66: Object[] values = columnModel.getValueFrom(i);
67: if (values[index] != null) {
68: if (values[index].toString().indexOf(value) >= 0) {
69: dataTable.setRowSelectionInterval(selectedRow,
70: selectedRow);
71: dataTable.setColumnSelectionInterval(i, i);
72: Rectangle cellBounds = dataTable.getCellRect(
73: selectedRow, i, true);
74: JViewport viewport = (JViewport) dataTable
75: .getParent().getParent();
76: JScrollPane scrollPane = (JScrollPane) viewport
77: .getParent();
78: scrollPane.getHorizontalScrollBar().setValue(
79: cellBounds.x);
80: return i + 1;
81: }
82: }
83: }
84: }
85: return -1;
86: }
87: }
|