Added better control over sort direction in sheet editor

This commit is contained in:
Brendan Robert 2020-02-24 09:04:19 -06:00
parent a134b1cde7
commit 6637e623fa
2 changed files with 18 additions and 12 deletions

View File

@ -18,11 +18,7 @@ import java.util.ResourceBundle;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.control.TextField;
import org.badvision.outlaweditor.data.xml.Rows.Row;
import org.badvision.outlaweditor.data.xml.UserType;
import org.controlsfx.control.spreadsheet.SpreadsheetColumn;
import org.controlsfx.control.spreadsheet.SpreadsheetView;
@ -38,22 +34,22 @@ public abstract class SheetEditorController implements Initializable {
@FXML
protected SpreadsheetColumn addColumn;
@FXML
protected SpreadsheetView table;
@FXML
protected TextField sheetNameField;
@FXML
abstract public void addColumnAction(ActionEvent event);
@FXML
abstract public void addRowAction(ActionEvent event);
@FXML
abstract public void doImport(ActionEvent event);
@FXML
protected void initialize() {
assert addColumn != null : "fx:id=\"addColumn\" was not injected: check your FXML file 'SheetEditor.fxml'.";

View File

@ -51,8 +51,14 @@ public class SheetEditorControllerImpl extends SheetEditorController {
private SheetEditor editor;
private ObservableList<ObservableList<SpreadsheetCell>> tableData;
private int lastEditRow = 0;
private int lastEditCol = 0;
private static Object getCellFromRow(ObservableList<SpreadsheetCell> row, int sortCol) {
if (row.size() > sortCol) {
return row.get(sortCol).getItem();
} else {
return null;
}
}
/**
* Initializes the controller class.
@ -66,9 +72,13 @@ public class SheetEditorControllerImpl extends SheetEditorController {
createMenuItem("Insert Row", () -> insertRow(new Row(), getSelectedRow())),
createMenuItem("Clone Row", () -> cloneRow(editor.getSheet().getRows().getRow().get(getSelectedRow()))),
createMenuItem("Delete Row", () -> deleteRowWithConfirmation(editor.getSheet().getRows().getRow().get(getSelectedRow()))),
createMenuItem("Sort by", () -> {
createMenuItem("Sort ascending", () -> {
int sortCol = table.getSelectionModel().getFocusedCell().getColumn();
table.setComparator((a,b)->compare(a.get(sortCol).getItem(), b.get(sortCol).getItem()));
table.setComparator((a,b)->compare(getCellFromRow(a, sortCol), getCellFromRow(b, sortCol)));
}),
createMenuItem("Sort descending", () -> {
int sortCol = table.getSelectionModel().getFocusedCell().getColumn();
table.setComparator((a,b)->compare(getCellFromRow(b, sortCol), getCellFromRow(a, sortCol)));
})
);
}