List of usage examples for org.apache.commons.collections.primitives FloatIterator next
float next();
From source file:pipeline.GUI_utils.ListOfPointsView.java
@Override
@SuppressWarnings({ "rawtypes" })
public void actionPerformed(ActionEvent event) {
if (event.getActionCommand().equals("Update display in real time")) {
realTimeUpdates = realTimeUpdateCheckbox.isSelected();
} else if (event.getActionCommand().equals("Force display update")) {
updateImage();/* ww w.j a v a2 s . c o m*/
} else if (event.getActionCommand().equals("Save table to file")) {
saveToFile();
} else if (event.getActionCommand().equals("Scatter plot from selected columns")) {
int[] selectedColumns = table.getSelectedColumns();
String name1 = table.getColumnName(selectedColumns[0]);
XYScatterPlotView scv = null;
if (selectedColumns.length == 1) {
// display a histogram rather than a scatter plot
scv = new XYScatterPlotView(1);
scv.setWindowTitle("Histogram of " + name1);
final int columnModelIndex = table.convertColumnIndexToModel(selectedColumns[0]);
int nFilteredRows = table.getNumberFilteredRows();
if (nFilteredRows == 0) {
// No row filtered, so create a plot that should be dynamically updated as
// the underlying PluginIO is updated by the pipeline plugins
ColumnInformation columnInfo = tableModel.columns.get(columnModelIndex);
if (columnInfo.getReturnType().equals(ArrayFloatList.class)) {
// Display histogram of values for the selected cell, NOT a histogram for
// a single value for all cells in table
ArrayFloatList values = (ArrayFloatList) table.getValueAt(table.getSelectedRow(),
selectedColumns[0]);
XYSeriesE series = new XYSeriesE(columnInfo.fieldName);
FloatIterator it = values.iterator();
while (it.hasNext()) {
series.add(it.next(), 0);
}
scv.addSeries(name1, series);
} else {
if (columnInfo.indexInList > -1) {
scv.addSeries(name1,
points.getJFreeChartXYSeries(columnInfo.fieldName, null, columnInfo.indexInList,
-1, tableModel.columns.get(columnModelIndex).getName(), null));
} else
scv.addSeries(name1, points.getJFreeChartXYSeries(name1, null, -1, -1,
tableModel.columns.get(columnModelIndex).getName(), null));
}
} else {
// Some rows are filtered, so we do not want to display everything
// TODO Ideally we would want to dynamically refilter when master list is changed by pipeline plugin
List<@Nullable T> filteredPoints = new ArrayList<>(table.getRowCount());// -nFilteredRows
for (int i = 0; i < tableModel.getRowCount(); i++) {
int rowIndex = table.convertRowIndexToView(i);
if (rowIndex > -1) {
filteredPoints.add(tableModel.getRow(i));
}
}
ColumnInformation columnInfo = tableModel.columns.get(columnModelIndex);
@SuppressWarnings("unchecked")
IPluginIOList<T> subList = (IPluginIOList<T>) points.duplicateStructure();
subList.addAll(filteredPoints);
if (columnInfo.indexInList > -1) {
scv.addSeries(name1,
subList.getJFreeChartXYSeries(columnInfo.fieldName, null, columnInfo.indexInList,
-1, tableModel.columns.get(columnModelIndex).getName(), null));
} else
scv.addSeries(name1, subList.getJFreeChartXYSeries(name1, null, -1, -1,
tableModel.columns.get(columnModelIndex).getName(), null));
}
} else { // display a scatter plot
final int xColumnModelIndex = table.convertColumnIndexToModel(selectedColumns[0]);
final int yColumnModelIndex = table.convertColumnIndexToModel(selectedColumns[1]);
String name2 = table.getColumnName(selectedColumns[1]);
// Utils.log("Creating pairwise plot for columns "+name1+" and "+name2,LogLevel.DEBUG);
// For now just deal with the first two columns
scv = new XYScatterPlotView(0);
scv.setWindowTitle("Scatterplot: " + name2 + " vs " + name1);
int nFilteredRows = table.getNumberFilteredRows();
ColumnInformation xColumnInfo = tableModel.columns.get(xColumnModelIndex);
ColumnInformation yColumnInfo = tableModel.columns.get(yColumnModelIndex);
int xListIndex = xColumnInfo.indexInList;
int yListIndex = yColumnInfo.indexInList;
String xName = xListIndex > -1 ? xColumnInfo.fieldName : name1;
String yName = yListIndex > -1 ? yColumnInfo.fieldName : name2;
if (nFilteredRows == 0) {
// No row filtered, so create a plot that should be dynamically updated as
// the underlying PluginIO is updated by the pipeline plugins
scv.addSeries(name1 + " and " + name2,
points.getJFreeChartXYSeries(xName, yName, xListIndex, yListIndex,
tableModel.columns.get(xColumnModelIndex).getName(),
tableModel.columns.get(yColumnModelIndex).getName()));
} else {
// Some rows are filtered, so we do not want to display everything
// TODO Ideally we would want to dynamically refilter when master list is changed by pipeline plugin
List<@Nullable T> filteredPoints = new ArrayList<>(table.getRowCount());
for (int i = 0; i < tableModel.getRowCount(); i++) {
int rowIndex = table.convertRowIndexToView(i);
if (rowIndex > -1) {
filteredPoints.add(tableModel.getRow(i));
}
}
@SuppressWarnings("unchecked")
IPluginIOList<T> subList = (IPluginIOList<T>) points.duplicateStructure();
subList.addAll(filteredPoints);
scv.addSeries(name1 + " and " + name2,
subList.getJFreeChartXYSeries(xName, yName, xListIndex, yListIndex,
tableModel.columns.get(xColumnModelIndex).getName(),
tableModel.columns.get(yColumnModelIndex).getName()));
}
}
scv.show();
} else if (event.getActionCommand().equals("Extend formula to column")) {
int[] selectedColumns = table.getSelectedColumns();
if ((selectedColumns.length < 1) || (!table.getColumnName(selectedColumns[0]).contains("userCell"))) {
Utils.displayMessage("No user column selected; length is " + selectedColumns.length, true,
LogLevel.ERROR);
return;
}
int[] selectedRows = table.getSelectedRows();
Utils.log("Extending formula in cell " + selectedRows[0] + ", " + selectedColumns[0], LogLevel.DEBUG);
// String formula=((SpreadsheetCell) table.getValueAt(selectedRows[0], selectedColumns[0])).getFormula();
silenceUpdates.incrementAndGet();// for performance reasons
try {
for (int i = 0; i < tableModel.getRowCount(); i++) {
Expr4jAdditions.extendFormula(spreadsheetEngine, selectedRows[0] + 1, selectedColumns[0] + 1,
i + 1, selectedColumns[0] + 1);
String formula = spreadsheetEngine
.getInput(new Range(null, new GridReference(selectedColumns[0] + 1, i + 1)));
if (tableModel.getValueAt(i, selectedColumns[0]) == null) {
SpreadsheetCell cell = new SpreadsheetCell("", "", new Object[] { 0.0, formula }, true,
null, null);
tableModel.setValueAt(cell, i, selectedColumns[0]);
} else {
SpreadsheetCell cell = (SpreadsheetCell) table.getValueAt(i, selectedColumns[0]);
cell.setFormula(formula);
}
}
} catch (Exception excp) {
Utils.printStack(excp);
} finally {
silenceUpdates.decrementAndGet();
}
// the following is to get a histogram displayed for the column we've computed
table.needToInitializeFilterModel = true;
table.initializeFilterModel();
table.updateRangeOfColumn(selectedColumns[0], true, 0, false);
tableModel.fireTableDataChanged();
} else if ("Save user formulas".equals(event.getActionCommand())) {
List<Integer> userColumns = getUserColumnList();
table.saveFilteredRowsToFile(userColumns, true, null);
} else if ("Reload user formulas".equals(event.getActionCommand())) {
reloadUserFormulasFromFile();
} else if ("comboBoxEdited".equals(event.getActionCommand())
|| ("comboBoxChanged".equals(event.getActionCommand()))) {
Object colorSelection = coloringComboBox.getModel().getSelectedItem();
if (colorSelection != null)
points.firePluginIOViewEvent(this, false);
}
}