Use StatePersistingTableView for RecordedModels and RecordLater
This commit is contained in:
parent
abf65b1cc2
commit
4cbb21bdb6
|
@ -7,6 +7,7 @@ import java.util.Map;
|
||||||
|
|
||||||
import ctbrec.Config;
|
import ctbrec.Config;
|
||||||
import ctbrec.Settings;
|
import ctbrec.Settings;
|
||||||
|
import ctbrec.StringUtil;
|
||||||
import javafx.scene.control.TableColumn.SortType;
|
import javafx.scene.control.TableColumn.SortType;
|
||||||
|
|
||||||
public class SettingTableViewStateStore implements TableViewStateStore {
|
public class SettingTableViewStateStore implements TableViewStateStore {
|
||||||
|
@ -51,7 +52,12 @@ public class SettingTableViewStateStore implements TableViewStateStore {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public SortType loadSortType() {
|
public SortType loadSortType() {
|
||||||
return SortType.valueOf(loadSetting(sortTypeSetting));
|
String sortType = loadSetting(sortTypeSetting);
|
||||||
|
if (StringUtil.isBlank(sortType)) {
|
||||||
|
return SortType.ASCENDING;
|
||||||
|
} else {
|
||||||
|
return SortType.valueOf(sortType);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
package ctbrec.ui.tabs.recorded;
|
package ctbrec.ui.tabs.recorded;
|
||||||
|
|
||||||
|
import static ctbrec.ui.action.AbstractPortraitAction.*;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.FileInputStream;
|
import java.io.FileInputStream;
|
||||||
import java.io.FileNotFoundException;
|
import java.io.FileNotFoundException;
|
||||||
|
@ -32,7 +34,6 @@ import ctbrec.ui.PreviewPopupHandler;
|
||||||
import ctbrec.ui.action.AbstractPortraitAction.PortraitChangedEvent;
|
import ctbrec.ui.action.AbstractPortraitAction.PortraitChangedEvent;
|
||||||
import ctbrec.ui.action.MarkForLaterRecordingAction;
|
import ctbrec.ui.action.MarkForLaterRecordingAction;
|
||||||
import ctbrec.ui.action.PlayAction;
|
import ctbrec.ui.action.PlayAction;
|
||||||
import ctbrec.ui.action.SetPortraitAction;
|
|
||||||
import ctbrec.ui.action.StartRecordingAction;
|
import ctbrec.ui.action.StartRecordingAction;
|
||||||
import ctbrec.ui.controls.CustomMouseBehaviorContextMenu;
|
import ctbrec.ui.controls.CustomMouseBehaviorContextMenu;
|
||||||
import ctbrec.ui.controls.DateTimeCellFactory;
|
import ctbrec.ui.controls.DateTimeCellFactory;
|
||||||
|
@ -40,6 +41,8 @@ import ctbrec.ui.controls.Dialogs;
|
||||||
import ctbrec.ui.controls.SearchBox;
|
import ctbrec.ui.controls.SearchBox;
|
||||||
import ctbrec.ui.controls.autocomplete.AutoFillTextField;
|
import ctbrec.ui.controls.autocomplete.AutoFillTextField;
|
||||||
import ctbrec.ui.controls.autocomplete.ObservableListSuggester;
|
import ctbrec.ui.controls.autocomplete.ObservableListSuggester;
|
||||||
|
import ctbrec.ui.controls.table.SettingTableViewStateStore;
|
||||||
|
import ctbrec.ui.controls.table.StatePersistingTableView;
|
||||||
import ctbrec.ui.menu.ModelMenuContributor;
|
import ctbrec.ui.menu.ModelMenuContributor;
|
||||||
import ctbrec.ui.tabs.TabSelectionListener;
|
import ctbrec.ui.tabs.TabSelectionListener;
|
||||||
import javafx.application.Platform;
|
import javafx.application.Platform;
|
||||||
|
@ -50,11 +53,9 @@ import javafx.collections.FXCollections;
|
||||||
import javafx.collections.ObservableList;
|
import javafx.collections.ObservableList;
|
||||||
import javafx.event.ActionEvent;
|
import javafx.event.ActionEvent;
|
||||||
import javafx.geometry.Insets;
|
import javafx.geometry.Insets;
|
||||||
import javafx.geometry.Point2D;
|
|
||||||
import javafx.geometry.Pos;
|
import javafx.geometry.Pos;
|
||||||
import javafx.scene.control.Alert;
|
import javafx.scene.control.Alert;
|
||||||
import javafx.scene.control.Button;
|
import javafx.scene.control.Button;
|
||||||
import javafx.scene.control.CheckMenuItem;
|
|
||||||
import javafx.scene.control.ContextMenu;
|
import javafx.scene.control.ContextMenu;
|
||||||
import javafx.scene.control.Label;
|
import javafx.scene.control.Label;
|
||||||
import javafx.scene.control.ScrollPane;
|
import javafx.scene.control.ScrollPane;
|
||||||
|
@ -62,9 +63,7 @@ import javafx.scene.control.SelectionMode;
|
||||||
import javafx.scene.control.Tab;
|
import javafx.scene.control.Tab;
|
||||||
import javafx.scene.control.TableCell;
|
import javafx.scene.control.TableCell;
|
||||||
import javafx.scene.control.TableColumn;
|
import javafx.scene.control.TableColumn;
|
||||||
import javafx.scene.control.TableColumn.SortType;
|
|
||||||
import javafx.scene.control.TableRow;
|
import javafx.scene.control.TableRow;
|
||||||
import javafx.scene.control.TableView;
|
|
||||||
import javafx.scene.control.TextField;
|
import javafx.scene.control.TextField;
|
||||||
import javafx.scene.control.Tooltip;
|
import javafx.scene.control.Tooltip;
|
||||||
import javafx.scene.control.cell.PropertyValueFactory;
|
import javafx.scene.control.cell.PropertyValueFactory;
|
||||||
|
@ -89,7 +88,8 @@ public abstract class AbstractRecordedModelsTab extends Tab implements TabSelect
|
||||||
protected ObservableList<JavaFxModel> observableModels = FXCollections.observableArrayList();
|
protected ObservableList<JavaFxModel> observableModels = FXCollections.observableArrayList();
|
||||||
protected ObservableList<JavaFxModel> filteredModels = FXCollections.observableArrayList();
|
protected ObservableList<JavaFxModel> filteredModels = FXCollections.observableArrayList();
|
||||||
|
|
||||||
protected TableView<JavaFxModel> table = new TableView<>();
|
protected SettingTableViewStateStore tableStateStore;
|
||||||
|
protected StatePersistingTableView<JavaFxModel> table;
|
||||||
protected List<TableColumn<JavaFxModel, ?>> columns = new ArrayList<>();
|
protected List<TableColumn<JavaFxModel, ?>> columns = new ArrayList<>();
|
||||||
protected LoadingCache<Model, Image> portraitCache = CacheBuilder.newBuilder()
|
protected LoadingCache<Model, Image> portraitCache = CacheBuilder.newBuilder()
|
||||||
.expireAfterAccess(1, TimeUnit.DAYS)
|
.expireAfterAccess(1, TimeUnit.DAYS)
|
||||||
|
@ -113,9 +113,11 @@ public abstract class AbstractRecordedModelsTab extends Tab implements TabSelect
|
||||||
|
|
||||||
protected Config config;
|
protected Config config;
|
||||||
|
|
||||||
AbstractRecordedModelsTab(String text) {
|
AbstractRecordedModelsTab(String text, String stateStorePrefix) {
|
||||||
super(text);
|
super(text);
|
||||||
config = Config.getInstance();
|
config = Config.getInstance();
|
||||||
|
tableStateStore = new SettingTableViewStateStore(config, stateStorePrefix);
|
||||||
|
table = new StatePersistingTableView<>(tableStateStore);
|
||||||
registerPortraitListener();
|
registerPortraitListener();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -215,13 +217,7 @@ public abstract class AbstractRecordedModelsTab extends Tab implements TabSelect
|
||||||
});
|
});
|
||||||
filter.getStyleClass().remove("search-box-icon");
|
filter.getStyleClass().remove("search-box-icon");
|
||||||
|
|
||||||
var columnSelection = new Button("⚙");
|
filterContainer.getChildren().addAll(filter);
|
||||||
columnSelection.setOnAction(this::showColumnSelection);
|
|
||||||
columnSelection.setTooltip(new Tooltip("Select columns"));
|
|
||||||
columnSelection.prefHeightProperty().bind(filter.prefHeightProperty());
|
|
||||||
columnSelection.prefWidthProperty().bind(columnSelection.prefHeightProperty());
|
|
||||||
|
|
||||||
filterContainer.getChildren().addAll(columnSelection, filter);
|
|
||||||
addModelBox.getChildren().add(filterContainer);
|
addModelBox.getChildren().add(filterContainer);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -229,9 +225,6 @@ public abstract class AbstractRecordedModelsTab extends Tab implements TabSelect
|
||||||
TableColumn<JavaFxModel, String> preview = addTableColumn("preview", "🎥", columnIdx, 35);
|
TableColumn<JavaFxModel, String> preview = addTableColumn("preview", "🎥", columnIdx, 35);
|
||||||
preview.setCellValueFactory(cdf -> new SimpleStringProperty(" ▶ "));
|
preview.setCellValueFactory(cdf -> new SimpleStringProperty(" ▶ "));
|
||||||
preview.setEditable(false);
|
preview.setEditable(false);
|
||||||
if (!Config.getInstance().getSettings().livePreviews) {
|
|
||||||
preview.setVisible(false);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void addPortraitColumn(int columnIdx) {
|
protected void addPortraitColumn(int columnIdx) {
|
||||||
|
@ -311,16 +304,10 @@ public abstract class AbstractRecordedModelsTab extends Tab implements TabSelect
|
||||||
tc.setPrefWidth(width);
|
tc.setPrefWidth(width);
|
||||||
tc.setStyle("-fx-alignment: CENTER-LEFT;");
|
tc.setStyle("-fx-alignment: CENTER-LEFT;");
|
||||||
columns.add(tc);
|
columns.add(tc);
|
||||||
addTableColumnIfEnabled(tc);
|
table.getColumns().add(tc);
|
||||||
return tc;
|
return tc;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void addTableColumnIfEnabled(TableColumn<JavaFxModel, ?> tc) {
|
|
||||||
if(isColumnEnabled(tc)) {
|
|
||||||
table.getColumns().add(tc);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
protected ContextMenu createContextMenu() {
|
protected ContextMenu createContextMenu() {
|
||||||
List<Model> selectedModels = table.getSelectionModel().getSelectedItems().stream().map(JavaFxModel::getDelegate).collect(Collectors.toList());
|
List<Model> selectedModels = table.getSelectionModel().getSelectedItems().stream().map(JavaFxModel::getDelegate).collect(Collectors.toList());
|
||||||
if (selectedModels.isEmpty()) {
|
if (selectedModels.isEmpty()) {
|
||||||
|
@ -486,74 +473,14 @@ public abstract class AbstractRecordedModelsTab extends Tab implements TabSelect
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
abstract String getSortColumn();
|
|
||||||
abstract void setSortColumn(String column);
|
|
||||||
abstract String getSortType();
|
|
||||||
abstract void setSortType(String sortType);
|
|
||||||
abstract String[] getColumnIds();
|
|
||||||
abstract void setColumnIds(String[] ids);
|
|
||||||
abstract double[] getColumnWidths();
|
|
||||||
abstract void setColumnWidths(double[] widths);
|
|
||||||
abstract List<String> getDisabledColumns();
|
|
||||||
|
|
||||||
public void saveState() {
|
public void saveState() {
|
||||||
if (!table.getSortOrder().isEmpty()) {
|
table.saveState();
|
||||||
TableColumn<JavaFxModel, ?> col = table.getSortOrder().get(0);
|
|
||||||
setSortColumn(col.getText());
|
|
||||||
setSortType(col.getSortType().toString());
|
|
||||||
}
|
|
||||||
int tableColumns = table.getColumns().size();
|
|
||||||
var columnWidths = new double[tableColumns];
|
|
||||||
var columnIds = new String[tableColumns];
|
|
||||||
for (var i = 0; i < columnWidths.length; i++) {
|
|
||||||
columnWidths[i] = table.getColumns().get(i).getWidth();
|
|
||||||
columnIds[i] = table.getColumns().get(i).getId();
|
|
||||||
}
|
|
||||||
setColumnWidths(columnWidths);
|
|
||||||
setColumnIds(columnIds);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void restoreState() {
|
protected void restoreState() {
|
||||||
restoreColumnOrder();
|
table.restoreState();
|
||||||
restoreColumnWidths();
|
if (!config.getSettings().livePreviews) {
|
||||||
restoreSorting();
|
table.getColumns().stream().filter(tc -> Objects.equals(tc.getId(), "preview")).findFirst().ifPresent(tc -> tc.setVisible(false));
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
private void restoreSorting() {
|
|
||||||
String sortCol = getSortColumn();
|
|
||||||
if (StringUtil.isNotBlank(sortCol)) {
|
|
||||||
for (TableColumn<JavaFxModel, ?> col : table.getColumns()) {
|
|
||||||
if (Objects.equals(sortCol, col.getText())) {
|
|
||||||
col.setSortType(SortType.valueOf(getSortType()));
|
|
||||||
table.getSortOrder().clear();
|
|
||||||
table.getSortOrder().add(col);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void restoreColumnOrder() {
|
|
||||||
String[] columnIds = getColumnIds();
|
|
||||||
ObservableList<TableColumn<JavaFxModel,?>> tableColumns = table.getColumns();
|
|
||||||
for (var i = 0; i < columnIds.length; i++) {
|
|
||||||
for (var j = 0; j < table.getColumns().size(); j++) {
|
|
||||||
if(Objects.equals(columnIds[i], tableColumns.get(j).getId())) {
|
|
||||||
TableColumn<JavaFxModel, ?> col = tableColumns.get(j);
|
|
||||||
tableColumns.remove(j); // NOSONAR
|
|
||||||
tableColumns.add(Math.min(i, tableColumns.size()), col);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void restoreColumnWidths() {
|
|
||||||
double[] columnWidths = getColumnWidths();
|
|
||||||
if (columnWidths != null && columnWidths.length == table.getColumns().size()) {
|
|
||||||
for (var i = 0; i < columnWidths.length; i++) {
|
|
||||||
table.getColumns().get(i).setPrefWidth(columnWidths[i]);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -584,7 +511,7 @@ public abstract class AbstractRecordedModelsTab extends Tab implements TabSelect
|
||||||
if (StringUtil.isNotBlank(portraitId)) {
|
if (StringUtil.isNotBlank(portraitId)) {
|
||||||
File configDir = Config.getInstance().getConfigDir();
|
File configDir = Config.getInstance().getConfigDir();
|
||||||
File portraitDir = new File(configDir, "portraits");
|
File portraitDir = new File(configDir, "portraits");
|
||||||
File portraitFile = new File(portraitDir, portraitId + '.' + SetPortraitAction.FORMAT);
|
File portraitFile = new File(portraitDir, portraitId + '.' + FORMAT);
|
||||||
try {
|
try {
|
||||||
return new Image(new FileInputStream(portraitFile));
|
return new Image(new FileInputStream(portraitFile));
|
||||||
} catch (FileNotFoundException e) {
|
} catch (FileNotFoundException e) {
|
||||||
|
@ -593,51 +520,4 @@ public abstract class AbstractRecordedModelsTab extends Tab implements TabSelect
|
||||||
}
|
}
|
||||||
return SILHOUETTE;
|
return SILHOUETTE;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void showColumnSelection(ActionEvent evt) {
|
|
||||||
ContextMenu menu = new CustomMouseBehaviorContextMenu();
|
|
||||||
for (TableColumn<JavaFxModel, ?> tc : columns) {
|
|
||||||
var item = new CheckMenuItem(tc.getText());
|
|
||||||
item.setSelected(isColumnEnabled(tc));
|
|
||||||
menu.getItems().add(item);
|
|
||||||
item.setOnAction(e -> {
|
|
||||||
try {
|
|
||||||
if (item.isSelected()) {
|
|
||||||
getDisabledColumns().remove(tc.getText());
|
|
||||||
boolean added = false;
|
|
||||||
for (int i = table.getColumns().size() - 1; i >= 0; i--) {
|
|
||||||
TableColumn<JavaFxModel, ?> other = table.getColumns().get(i);
|
|
||||||
if (!other.isVisible()) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
int idx = (int) tc.getUserData();
|
|
||||||
int otherIdx = (int) other.getUserData();
|
|
||||||
if (otherIdx < idx) {
|
|
||||||
table.getColumns().add(i + 1, tc);
|
|
||||||
added = true;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (!added) {
|
|
||||||
table.getColumns().add(0, tc);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
getDisabledColumns().add(tc.getText());
|
|
||||||
table.getColumns().remove(tc);
|
|
||||||
}
|
|
||||||
} catch (Exception ex) {
|
|
||||||
LOG.error("Couldn't activate column {}", tc, ex);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
Button src = (Button) evt.getSource();
|
|
||||||
Point2D location = src.localToScreen(src.getTranslateX(), src.getTranslateY());
|
|
||||||
menu.show(getTabPane().getScene().getWindow(), location.getX(), location.getY() + src.getHeight() + 5);
|
|
||||||
}
|
|
||||||
|
|
||||||
private boolean isColumnEnabled(TableColumn<JavaFxModel, ?> tc) {
|
|
||||||
return !getDisabledColumns().contains(tc.getText());
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -37,7 +37,7 @@ public class RecordLaterTab extends AbstractRecordedModelsTab implements TabSele
|
||||||
private ScheduledService<List<JavaFxModel>> updateService;
|
private ScheduledService<List<JavaFxModel>> updateService;
|
||||||
|
|
||||||
public RecordLaterTab(String title, Recorder recorder, List<Site> sites) {
|
public RecordLaterTab(String title, Recorder recorder, List<Site> sites) {
|
||||||
super(title);
|
super(title, "recordLaterTable");
|
||||||
this.recorder = recorder;
|
this.recorder = recorder;
|
||||||
this.sites = sites;
|
this.sites = sites;
|
||||||
createGui();
|
createGui();
|
||||||
|
@ -179,51 +179,6 @@ public class RecordLaterTab extends AbstractRecordedModelsTab implements TabSele
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
String getSortColumn() {
|
|
||||||
return Config.getInstance().getSettings().recordLaterSortColumn;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
void setSortColumn(String column) {
|
|
||||||
Config.getInstance().getSettings().recordLaterSortColumn = column;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
String getSortType() {
|
|
||||||
return Config.getInstance().getSettings().recordLaterSortType;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
void setSortType(String sortType) {
|
|
||||||
Config.getInstance().getSettings().recordLaterSortType = sortType;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
String[] getColumnIds() {
|
|
||||||
return Config.getInstance().getSettings().recordLaterColumnIds;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
void setColumnIds(String[] columnIds) {
|
|
||||||
Config.getInstance().getSettings().recordLaterColumnIds = columnIds;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
double[] getColumnWidths() {
|
|
||||||
return Config.getInstance().getSettings().recordLaterColumnWidths;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
void setColumnWidths(double[] widths) {
|
|
||||||
Config.getInstance().getSettings().recordLaterColumnWidths = widths;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
List<String> getDisabledColumns() {
|
|
||||||
return Config.getInstance().getSettings().recordLaterDisabledColumns;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
boolean getMarkModelsForLaterRecording() {
|
boolean getMarkModelsForLaterRecording() {
|
||||||
return true;
|
return true;
|
||||||
|
|
|
@ -67,7 +67,7 @@ public class RecordedModelsTab extends AbstractRecordedModelsTab implements TabS
|
||||||
ToggleButton toggleRecording = new ToggleButton("Pause Recording");
|
ToggleButton toggleRecording = new ToggleButton("Pause Recording");
|
||||||
|
|
||||||
public RecordedModelsTab(String title, Recorder recorder, List<Site> sites) {
|
public RecordedModelsTab(String title, Recorder recorder, List<Site> sites) {
|
||||||
super(title);
|
super(title, "recordedModelsTable");
|
||||||
this.recorder = recorder;
|
this.recorder = recorder;
|
||||||
this.sites = sites;
|
this.sites = sites;
|
||||||
createGui();
|
createGui();
|
||||||
|
@ -95,7 +95,7 @@ public class RecordedModelsTab extends AbstractRecordedModelsTab implements TabS
|
||||||
online.setUserData(idx++);
|
online.setUserData(idx++);
|
||||||
online.setStyle(STYLE_ALIGN_CENTER);
|
online.setStyle(STYLE_ALIGN_CENTER);
|
||||||
columns.add(online);
|
columns.add(online);
|
||||||
addTableColumnIfEnabled(online);
|
table.getColumns().add(online);
|
||||||
TableColumn<JavaFxModel, Boolean> recording = new TableColumn<>("Recording");
|
TableColumn<JavaFxModel, Boolean> recording = new TableColumn<>("Recording");
|
||||||
recording.setCellValueFactory(cdf -> cdf.getValue().getRecordingProperty());
|
recording.setCellValueFactory(cdf -> cdf.getValue().getRecordingProperty());
|
||||||
recording.setCellFactory(tc -> new RecordingTableCell());
|
recording.setCellFactory(tc -> new RecordingTableCell());
|
||||||
|
@ -105,7 +105,7 @@ public class RecordedModelsTab extends AbstractRecordedModelsTab implements TabS
|
||||||
recording.setUserData(idx++);
|
recording.setUserData(idx++);
|
||||||
recording.setStyle(STYLE_ALIGN_CENTER);
|
recording.setStyle(STYLE_ALIGN_CENTER);
|
||||||
columns.add(recording);
|
columns.add(recording);
|
||||||
addTableColumnIfEnabled(recording);
|
table.getColumns().add(recording);
|
||||||
TableColumn<JavaFxModel, Boolean> paused = new TableColumn<>("Paused");
|
TableColumn<JavaFxModel, Boolean> paused = new TableColumn<>("Paused");
|
||||||
paused.setCellValueFactory(cdf -> cdf.getValue().getPausedProperty());
|
paused.setCellValueFactory(cdf -> cdf.getValue().getPausedProperty());
|
||||||
paused.setCellFactory(CheckBoxTableCell.forTableColumn(paused));
|
paused.setCellFactory(CheckBoxTableCell.forTableColumn(paused));
|
||||||
|
@ -115,7 +115,7 @@ public class RecordedModelsTab extends AbstractRecordedModelsTab implements TabS
|
||||||
paused.setUserData(idx++);
|
paused.setUserData(idx++);
|
||||||
paused.setStyle(STYLE_ALIGN_CENTER);
|
paused.setStyle(STYLE_ALIGN_CENTER);
|
||||||
columns.add(paused);
|
columns.add(paused);
|
||||||
addTableColumnIfEnabled(paused);
|
table.getColumns().add(paused);
|
||||||
TableColumn<JavaFxModel, Number> priority = new TableColumn<>("Priority");
|
TableColumn<JavaFxModel, Number> priority = new TableColumn<>("Priority");
|
||||||
priority.setCellValueFactory(param -> param.getValue().getPriorityProperty());
|
priority.setCellValueFactory(param -> param.getValue().getPriorityProperty());
|
||||||
priority.setCellFactory(new PriorityCellFactory());
|
priority.setCellFactory(new PriorityCellFactory());
|
||||||
|
@ -127,7 +127,7 @@ public class RecordedModelsTab extends AbstractRecordedModelsTab implements TabS
|
||||||
priority.setId("priority");
|
priority.setId("priority");
|
||||||
priority.setUserData(idx++);
|
priority.setUserData(idx++);
|
||||||
columns.add(priority);
|
columns.add(priority);
|
||||||
addTableColumnIfEnabled(priority);
|
table.getColumns().add(priority);
|
||||||
TableColumn<JavaFxModel, Instant> lastSeen = new TableColumn<>("last seen");
|
TableColumn<JavaFxModel, Instant> lastSeen = new TableColumn<>("last seen");
|
||||||
lastSeen.setCellValueFactory(cdf -> cdf.getValue().lastSeenProperty());
|
lastSeen.setCellValueFactory(cdf -> cdf.getValue().lastSeenProperty());
|
||||||
lastSeen.setCellFactory(new DateTimeCellFactory<>());
|
lastSeen.setCellFactory(new DateTimeCellFactory<>());
|
||||||
|
@ -137,7 +137,7 @@ public class RecordedModelsTab extends AbstractRecordedModelsTab implements TabS
|
||||||
lastSeen.setUserData(idx++);
|
lastSeen.setUserData(idx++);
|
||||||
lastSeen.setStyle(STYLE_ALIGN_CENTER);
|
lastSeen.setStyle(STYLE_ALIGN_CENTER);
|
||||||
columns.add(lastSeen);
|
columns.add(lastSeen);
|
||||||
addTableColumnIfEnabled(lastSeen);
|
table.getColumns().add(lastSeen);
|
||||||
TableColumn<JavaFxModel, Instant> lastRecorded = new TableColumn<>("last recorded");
|
TableColumn<JavaFxModel, Instant> lastRecorded = new TableColumn<>("last recorded");
|
||||||
lastRecorded.setCellValueFactory(cdf -> cdf.getValue().lastRecordedProperty());
|
lastRecorded.setCellValueFactory(cdf -> cdf.getValue().lastRecordedProperty());
|
||||||
lastRecorded.setCellFactory(new DateTimeCellFactory<>());
|
lastRecorded.setCellFactory(new DateTimeCellFactory<>());
|
||||||
|
@ -147,7 +147,7 @@ public class RecordedModelsTab extends AbstractRecordedModelsTab implements TabS
|
||||||
lastRecorded.setUserData(idx++);
|
lastRecorded.setUserData(idx++);
|
||||||
lastRecorded.setStyle(STYLE_ALIGN_CENTER);
|
lastRecorded.setStyle(STYLE_ALIGN_CENTER);
|
||||||
columns.add(lastRecorded);
|
columns.add(lastRecorded);
|
||||||
addTableColumnIfEnabled(lastRecorded);
|
table.getColumns().add(lastRecorded);
|
||||||
|
|
||||||
addAddedTimestampColumn(idx++);
|
addAddedTimestampColumn(idx++);
|
||||||
addNotesColumn(idx);
|
addNotesColumn(idx);
|
||||||
|
@ -409,49 +409,4 @@ public class RecordedModelsTab extends AbstractRecordedModelsTab implements TabS
|
||||||
boolean getMarkModelsForLaterRecording() {
|
boolean getMarkModelsForLaterRecording() {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
String getSortColumn() {
|
|
||||||
return Config.getInstance().getSettings().recordedModelsSortColumn;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
void setSortColumn(String column) {
|
|
||||||
Config.getInstance().getSettings().recordedModelsSortColumn = column;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
String getSortType() {
|
|
||||||
return Config.getInstance().getSettings().recordedModelsSortType;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
void setSortType(String sortType) {
|
|
||||||
Config.getInstance().getSettings().recordedModelsSortType = sortType;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
String[] getColumnIds() {
|
|
||||||
return Config.getInstance().getSettings().recordedModelsColumnIds;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
void setColumnIds(String[] ids) {
|
|
||||||
Config.getInstance().getSettings().recordedModelsColumnIds = ids;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
double[] getColumnWidths() {
|
|
||||||
return Config.getInstance().getSettings().recordedModelsColumnWidths;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
void setColumnWidths(double[] widths) {
|
|
||||||
Config.getInstance().getSettings().recordedModelsColumnWidths = widths;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
List<String> getDisabledColumns() {
|
|
||||||
return Config.getInstance().getSettings().recordedModelsDisabledTableColumns;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -138,16 +138,16 @@ public class Settings {
|
||||||
public ProxyType proxyType = ProxyType.DIRECT;
|
public ProxyType proxyType = ProxyType.DIRECT;
|
||||||
public String proxyUser;
|
public String proxyUser;
|
||||||
public boolean recentlyWatched = true;
|
public boolean recentlyWatched = true;
|
||||||
public double[] recordLaterColumnWidths = new double[0];
|
public List<String> recordLaterTableColumnOrder = new ArrayList<>();
|
||||||
public String[] recordLaterColumnIds = new String[0];
|
public Map<String, Boolean> recordLaterTableColumnVisibility = new HashMap<>();
|
||||||
public List<String> recordLaterDisabledColumns = new ArrayList<>();
|
public Map<String, Double> recordLaterTableColumnWidth = new HashMap<>();
|
||||||
public String recordLaterSortColumn = "";
|
public String recordLaterTableSortColumn = "";
|
||||||
public String recordLaterSortType = "";
|
public String recordLaterTableSortType = "";
|
||||||
public double[] recordedModelsColumnWidths = new double[0];
|
public List<String> recordedModelsTableColumnOrder = new ArrayList<>();
|
||||||
public String[] recordedModelsColumnIds = new String[0];
|
public Map<String, Boolean> recordedModelsTableColumnVisibility = new HashMap<>();
|
||||||
public List<String> recordedModelsDisabledTableColumns = new ArrayList<>();
|
public Map<String, Double> recordedModelsTableColumnWidth = new HashMap<>();
|
||||||
public String recordedModelsSortColumn = "";
|
public String recordedModelsTableSortColumn = "";
|
||||||
public String recordedModelsSortType = "";
|
public String recordedModelsTableSortType = "";
|
||||||
public List<String> recordingsTableColumnOrder = new ArrayList<>();
|
public List<String> recordingsTableColumnOrder = new ArrayList<>();
|
||||||
public Map<String, Boolean> recordingsTableColumnVisibility = new HashMap<>();
|
public Map<String, Boolean> recordingsTableColumnVisibility = new HashMap<>();
|
||||||
public Map<String, Double> recordingsTableColumnWidth = new HashMap<>();
|
public Map<String, Double> recordingsTableColumnWidth = new HashMap<>();
|
||||||
|
|
Loading…
Reference in New Issue