DELETE and SPACE buttons works on TableView level as expected
Mouse selection on Tale level re-implemented with pain Multiple selection in Table now possible
This commit is contained in:
parent
f5c37c3771
commit
5a8f52a3d7
1 changed files with 46 additions and 4 deletions
|
@ -13,6 +13,10 @@ import javafx.fxml.Initializable;
|
||||||
import javafx.scene.control.*;
|
import javafx.scene.control.*;
|
||||||
import javafx.scene.control.cell.CheckBoxTableCell;
|
import javafx.scene.control.cell.CheckBoxTableCell;
|
||||||
import javafx.scene.control.cell.PropertyValueFactory;
|
import javafx.scene.control.cell.PropertyValueFactory;
|
||||||
|
import javafx.scene.input.KeyCode;
|
||||||
|
import javafx.scene.input.KeyEvent;
|
||||||
|
import javafx.scene.input.MouseButton;
|
||||||
|
import javafx.scene.input.MouseEvent;
|
||||||
import javafx.util.Callback;
|
import javafx.util.Callback;
|
||||||
import nsusbloader.MediatorControl;
|
import nsusbloader.MediatorControl;
|
||||||
import nsusbloader.NSLDataTypes.EFileStatus;
|
import nsusbloader.NSLDataTypes.EFileStatus;
|
||||||
|
@ -35,12 +39,40 @@ public class NSTableViewController implements Initializable {
|
||||||
rowsObsLst = FXCollections.observableArrayList();
|
rowsObsLst = FXCollections.observableArrayList();
|
||||||
|
|
||||||
table.setPlaceholder(new Label());
|
table.setPlaceholder(new Label());
|
||||||
|
table.setEditable(false); // At least with hacks it works as expected. Otherwise - null pointer exception
|
||||||
|
table.getSelectionModel().setSelectionMode(SelectionMode.MULTIPLE);
|
||||||
table.setColumnResizePolicy(TableView.CONSTRAINED_RESIZE_POLICY);
|
table.setColumnResizePolicy(TableView.CONSTRAINED_RESIZE_POLICY);
|
||||||
|
table.setOnKeyPressed(new EventHandler<KeyEvent>() {
|
||||||
|
@Override
|
||||||
|
public void handle(KeyEvent keyEvent) {
|
||||||
|
if (!rowsObsLst.isEmpty()) {
|
||||||
|
if (keyEvent.getCode() == KeyCode.DELETE) {
|
||||||
|
rowsObsLst.removeAll(table.getSelectionModel().getSelectedItems());
|
||||||
|
if (rowsObsLst.isEmpty())
|
||||||
|
MediatorControl.getInstance().getContoller().disableUploadStopBtn(); // TODO: change to something better
|
||||||
|
table.refresh();
|
||||||
|
} else if (keyEvent.getCode() == KeyCode.SPACE) {
|
||||||
|
for (NSLRowModel item : table.getSelectionModel().getSelectedItems()) {
|
||||||
|
item.setMarkForUpload(!item.isMarkForUpload());
|
||||||
|
restrictSelection(item);
|
||||||
|
}
|
||||||
|
table.refresh();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
keyEvent.consume();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
TableColumn<NSLRowModel, String> statusColumn = new TableColumn<>(resourceBundle.getString("tableStatusLbl"));
|
TableColumn<NSLRowModel, String> statusColumn = new TableColumn<>(resourceBundle.getString("tableStatusLbl"));
|
||||||
TableColumn<NSLRowModel, String> fileNameColumn = new TableColumn<>(resourceBundle.getString("tableFileNameLbl"));
|
TableColumn<NSLRowModel, String> fileNameColumn = new TableColumn<>(resourceBundle.getString("tableFileNameLbl"));
|
||||||
TableColumn<NSLRowModel, String> fileSizeColumn = new TableColumn<>(resourceBundle.getString("tableSizeLbl"));
|
TableColumn<NSLRowModel, String> fileSizeColumn = new TableColumn<>(resourceBundle.getString("tableSizeLbl"));
|
||||||
TableColumn<NSLRowModel, Boolean> uploadColumn = new TableColumn<>(resourceBundle.getString("tableUploadLbl"));
|
TableColumn<NSLRowModel, Boolean> uploadColumn = new TableColumn<>(resourceBundle.getString("tableUploadLbl"));
|
||||||
|
|
||||||
|
statusColumn.setEditable(false);
|
||||||
|
fileNameColumn.setEditable(false);
|
||||||
|
fileSizeColumn.setEditable(false);
|
||||||
|
uploadColumn.setEditable(true);
|
||||||
|
|
||||||
// See https://bugs.openjdk.java.net/browse/JDK-8157687
|
// See https://bugs.openjdk.java.net/browse/JDK-8157687
|
||||||
statusColumn.setMinWidth(100.0);
|
statusColumn.setMinWidth(100.0);
|
||||||
statusColumn.setPrefWidth(100.0);
|
statusColumn.setPrefWidth(100.0);
|
||||||
|
@ -77,7 +109,6 @@ public class NSTableViewController implements Initializable {
|
||||||
restrictSelection(model);
|
restrictSelection(model);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
return booleanProperty;
|
return booleanProperty;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -101,7 +132,7 @@ public class NSTableViewController implements Initializable {
|
||||||
public void handle(ActionEvent actionEvent) {
|
public void handle(ActionEvent actionEvent) {
|
||||||
rowsObsLst.remove(row.getItem());
|
rowsObsLst.remove(row.getItem());
|
||||||
if (rowsObsLst.isEmpty())
|
if (rowsObsLst.isEmpty())
|
||||||
MediatorControl.getInstance().getContoller().disableUploadStopBtn();
|
MediatorControl.getInstance().getContoller().disableUploadStopBtn(); // TODO: change to something better
|
||||||
table.refresh();
|
table.refresh();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -110,7 +141,7 @@ public class NSTableViewController implements Initializable {
|
||||||
@Override
|
@Override
|
||||||
public void handle(ActionEvent actionEvent) {
|
public void handle(ActionEvent actionEvent) {
|
||||||
rowsObsLst.clear();
|
rowsObsLst.clear();
|
||||||
MediatorControl.getInstance().getContoller().disableUploadStopBtn();
|
MediatorControl.getInstance().getContoller().disableUploadStopBtn(); // TODO: change to something better
|
||||||
table.refresh();
|
table.refresh();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -124,6 +155,17 @@ public class NSTableViewController implements Initializable {
|
||||||
.then(MediatorControl.getInstance().getTransferActive()?(ContextMenu)null:contextMenu)
|
.then(MediatorControl.getInstance().getTransferActive()?(ContextMenu)null:contextMenu)
|
||||||
.otherwise((ContextMenu) null)
|
.otherwise((ContextMenu) null)
|
||||||
);
|
);
|
||||||
|
row.setOnMouseClicked(new EventHandler<MouseEvent>() { // Just.. don't ask..
|
||||||
|
@Override
|
||||||
|
public void handle(MouseEvent mouseEvent) {
|
||||||
|
if (!row.isEmpty() && mouseEvent.getButton() == MouseButton.PRIMARY){
|
||||||
|
NSLRowModel thisItem = row.getItem();
|
||||||
|
thisItem.setMarkForUpload(!thisItem.isMarkForUpload());
|
||||||
|
restrictSelection(thisItem);
|
||||||
|
}
|
||||||
|
mouseEvent.consume();
|
||||||
|
}
|
||||||
|
});
|
||||||
return row;
|
return row;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -140,8 +182,8 @@ public class NSTableViewController implements Initializable {
|
||||||
if (model != modelChecked)
|
if (model != modelChecked)
|
||||||
model.setMarkForUpload(false);
|
model.setMarkForUpload(false);
|
||||||
}
|
}
|
||||||
table.refresh();
|
|
||||||
}
|
}
|
||||||
|
table.refresh();
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* Add files when user selected them
|
* Add files when user selected them
|
||||||
|
|
Loading…
Reference in a new issue