From 6637e623faaf97a3c083d2d6251f6a610a8f2884 Mon Sep 17 00:00:00 2001 From: Brendan Robert Date: Mon, 24 Feb 2020 09:04:19 -0600 Subject: [PATCH] Added better control over sort direction in sheet editor --- .../outlaweditor/ui/SheetEditorController.java | 12 ++++-------- .../ui/impl/SheetEditorControllerImpl.java | 18 ++++++++++++++---- 2 files changed, 18 insertions(+), 12 deletions(-) diff --git a/OutlawEditor/src/main/java/org/badvision/outlaweditor/ui/SheetEditorController.java b/OutlawEditor/src/main/java/org/badvision/outlaweditor/ui/SheetEditorController.java index f023f9e1..58f57da3 100644 --- a/OutlawEditor/src/main/java/org/badvision/outlaweditor/ui/SheetEditorController.java +++ b/OutlawEditor/src/main/java/org/badvision/outlaweditor/ui/SheetEditorController.java @@ -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'."; diff --git a/OutlawEditor/src/main/java/org/badvision/outlaweditor/ui/impl/SheetEditorControllerImpl.java b/OutlawEditor/src/main/java/org/badvision/outlaweditor/ui/impl/SheetEditorControllerImpl.java index f0148a7d..74931eaa 100644 --- a/OutlawEditor/src/main/java/org/badvision/outlaweditor/ui/impl/SheetEditorControllerImpl.java +++ b/OutlawEditor/src/main/java/org/badvision/outlaweditor/ui/impl/SheetEditorControllerImpl.java @@ -51,8 +51,14 @@ public class SheetEditorControllerImpl extends SheetEditorController { private SheetEditor editor; private ObservableList> tableData; - private int lastEditRow = 0; - private int lastEditCol = 0; + + private static Object getCellFromRow(ObservableList 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))); }) ); }