mirror of
https://github.com/frosch95/SmartCSV.fx.git
synced 2026-04-11 13:38:23 +02:00
use of better icons, create a new validation file for csv
This commit is contained in:
@@ -22,7 +22,10 @@ dependencies {
|
|||||||
compile group: 'org.springframework', name:'spring-context', version: '4.3.1.RELEASE'
|
compile group: 'org.springframework', name:'spring-context', version: '4.3.1.RELEASE'
|
||||||
compile group: 'net.sf.supercsv', name: 'super-csv', version: '2.4.0'
|
compile group: 'net.sf.supercsv', name: 'super-csv', version: '2.4.0'
|
||||||
compile group: 'commons-validator', name: 'commons-validator', version: '1.5.1'
|
compile group: 'commons-validator', name: 'commons-validator', version: '1.5.1'
|
||||||
compile group: 'de.jensd', name: 'fontawesomefx', version: '8.9'
|
compile group: 'de.jensd', name: 'fontawesomefx-commons', version: '8.12'
|
||||||
|
compile group: 'de.jensd', name: 'fontawesomefx-fontawesome', version: '4.6.3'
|
||||||
|
compile group: 'de.jensd', name: 'fontawesomefx-materialdesignfont', version: '1.6.50'
|
||||||
|
compile group: 'de.jensd', name: 'fontawesomefx-materialicons', version: '2.2.0'
|
||||||
compile group: 'org.controlsfx', name: 'controlsfx', version: '8.40.11'
|
compile group: 'org.controlsfx', name: 'controlsfx', version: '8.40.11'
|
||||||
compile group: 'com.google.code.gson', name: 'gson', version: '2.7'
|
compile group: 'com.google.code.gson', name: 'gson', version: '2.7'
|
||||||
compile group: 'org.apache.logging.log4j', name: 'log4j-api', version: '2.6.2'
|
compile group: 'org.apache.logging.log4j', name: 'log4j-api', version: '2.6.2'
|
||||||
|
|||||||
@@ -135,6 +135,9 @@ public class SmartCSVController extends FXMLController {
|
|||||||
@FXML
|
@FXML
|
||||||
private MenuItem saveAsMenuItem;
|
private MenuItem saveAsMenuItem;
|
||||||
|
|
||||||
|
@FXML
|
||||||
|
private MenuItem createConfigMenuItem;
|
||||||
|
|
||||||
@FXML
|
@FXML
|
||||||
private MenuItem loadConfigMenuItem;
|
private MenuItem loadConfigMenuItem;
|
||||||
|
|
||||||
@@ -156,6 +159,9 @@ public class SmartCSVController extends FXMLController {
|
|||||||
@FXML
|
@FXML
|
||||||
private Button saveAsButton;
|
private Button saveAsButton;
|
||||||
|
|
||||||
|
@FXML
|
||||||
|
private Button createConfigButton;
|
||||||
|
|
||||||
@FXML
|
@FXML
|
||||||
private Button loadConfigButton;
|
private Button loadConfigButton;
|
||||||
|
|
||||||
@@ -199,11 +205,11 @@ public class SmartCSVController extends FXMLController {
|
|||||||
setupTableCellFactory();
|
setupTableCellFactory();
|
||||||
setupErrorSideBar(resourceBundle);
|
setupErrorSideBar(resourceBundle);
|
||||||
|
|
||||||
bindMenuItemsToFileExistence(currentCsvFile, saveMenuItem, saveAsMenuItem, addRowMenuItem, loadConfigMenuItem);
|
bindMenuItemsToContentExistence(currentCsvFile, saveMenuItem, saveAsMenuItem, addRowMenuItem, createConfigMenuItem, loadConfigMenuItem);
|
||||||
bindButtonsToFileExistence(currentCsvFile, saveButton, saveAsButton, addRowButton, loadConfigButton);
|
bindButtonsToContentExistence(currentCsvFile, saveButton, saveAsButton, addRowButton, createConfigButton, loadConfigButton);
|
||||||
|
|
||||||
bindMenuItemsToFileExistence(currentConfigFile, saveConfigMenuItem, saveAsConfigMenuItem);
|
bindMenuItemsToContentExistence(currentConfigFile, saveConfigMenuItem, saveAsConfigMenuItem);
|
||||||
bindButtonsToFileExistence(currentConfigFile, saveAsConfigButton, saveConfigButton);
|
bindButtonsToContentExistence(currentConfigFile, saveAsConfigButton, saveConfigButton);
|
||||||
|
|
||||||
bindCsvFileName();
|
bindCsvFileName();
|
||||||
bindConfigFileName();
|
bindConfigFileName();
|
||||||
@@ -251,6 +257,13 @@ public class SmartCSVController extends FXMLController {
|
|||||||
loadFile(JSON_FILTER_TEXT, JSON_FILTER_EXTENSION, "Open Validation Configuration", currentConfigFile);
|
loadFile(JSON_FILTER_TEXT, JSON_FILTER_EXTENSION, "Open Validation Configuration", currentConfigFile);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@FXML
|
||||||
|
public void createConfig(ActionEvent actionEvent) {
|
||||||
|
currentConfigFile.setContent(currentCsvFile.getContent().createValidationConfiguration());
|
||||||
|
currentConfigFile.setFile(null);
|
||||||
|
currentConfigFile.setFileChanged(true);
|
||||||
|
}
|
||||||
|
|
||||||
@FXML
|
@FXML
|
||||||
public void saveCsv(ActionEvent actionEvent) {
|
public void saveCsv(ActionEvent actionEvent) {
|
||||||
useSaveFileService(currentCsvFile);
|
useSaveFileService(currentCsvFile);
|
||||||
@@ -263,7 +276,11 @@ public class SmartCSVController extends FXMLController {
|
|||||||
|
|
||||||
@FXML
|
@FXML
|
||||||
public void saveConfig(ActionEvent actionEvent) {
|
public void saveConfig(ActionEvent actionEvent) {
|
||||||
useSaveFileService(currentConfigFile);
|
if (currentConfigFile.getFile() == null) {
|
||||||
|
saveAsConfig(actionEvent);
|
||||||
|
} else {
|
||||||
|
useSaveFileService(currentConfigFile);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@FXML
|
@FXML
|
||||||
@@ -375,15 +392,15 @@ public class SmartCSVController extends FXMLController {
|
|||||||
tableView.getSelectionModel().select(lastRow);
|
tableView.getSelectionModel().select(lastRow);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void bindMenuItemsToFileExistence(FileStorage file, MenuItem... items) {
|
private void bindMenuItemsToContentExistence(FileStorage file, MenuItem... items) {
|
||||||
for (MenuItem item: items) {
|
for (MenuItem item: items) {
|
||||||
item.disableProperty().bind(isNull(file.fileProperty()));
|
item.disableProperty().bind(isNull(file.contentProperty()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void bindButtonsToFileExistence(FileStorage file, Button... items) {
|
private void bindButtonsToContentExistence(FileStorage file, Button... items) {
|
||||||
for (Button item: items) {
|
for (Button item: items) {
|
||||||
item.disableProperty().bind(isNull(file.fileProperty()));
|
item.disableProperty().bind(isNull(file.contentProperty()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -461,50 +478,45 @@ public class SmartCSVController extends FXMLController {
|
|||||||
File file = fileChooser.showOpenDialog(applicationPane.getScene().getWindow());
|
File file = fileChooser.showOpenDialog(applicationPane.getScene().getWindow());
|
||||||
if (file != null) {
|
if (file != null) {
|
||||||
storageFile.setFile(file);
|
storageFile.setFile(file);
|
||||||
useLoadFileService(storageFile, event -> runLater(() -> {
|
useLoadFileService(storageFile, t -> resetContent());
|
||||||
resetContent();
|
|
||||||
storageFile.setFileChanged(false);
|
|
||||||
}));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private File saveFile(String filterText, String filter, FileStorage initFile) {
|
private File saveFile(String filterText, String filter, FileStorage fileStorage) {
|
||||||
File file = initFile.getFile();
|
File file = fileStorage.getFile();
|
||||||
if (initFile.getContent() != null) {
|
if (fileStorage.getContent() != null) {
|
||||||
final FileChooser fileChooser = new FileChooser();
|
final FileChooser fileChooser = new FileChooser();
|
||||||
|
|
||||||
//Set extension filter
|
//Set extension filter
|
||||||
final FileChooser.ExtensionFilter extFilter = new FileChooser.ExtensionFilter(filterText, filter);
|
final FileChooser.ExtensionFilter extFilter = new FileChooser.ExtensionFilter(filterText, filter);
|
||||||
fileChooser.getExtensionFilters().add(extFilter);
|
fileChooser.getExtensionFilters().add(extFilter);
|
||||||
|
|
||||||
if (initFile.getFile() != null) {
|
if (fileStorage.getFile() != null) {
|
||||||
fileChooser.setInitialDirectory(initFile.getFile().getParentFile());
|
fileChooser.setInitialDirectory(fileStorage.getFile().getParentFile());
|
||||||
fileChooser.setInitialFileName(initFile.getFile().getName());
|
fileChooser.setInitialFileName(fileStorage.getFile().getName());
|
||||||
}
|
}
|
||||||
fileChooser.setTitle("Save File");
|
fileChooser.setTitle("Save File");
|
||||||
|
|
||||||
//Show open file dialog
|
//Show open file dialog
|
||||||
file = fileChooser.showSaveDialog(applicationPane.getScene().getWindow());
|
file = fileChooser.showSaveDialog(applicationPane.getScene().getWindow());
|
||||||
if (file != null) {
|
if (file != null) {
|
||||||
initFile.setFile(file);
|
fileStorage.setFile(file);
|
||||||
useSaveFileService(currentCsvFile);
|
useSaveFileService(fileStorage);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return file;
|
return file;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void useLoadFileService(FileStorage fileStorage, EventHandler<WorkerStateEvent> value) {
|
private void useLoadFileService(FileStorage fileStorage, EventHandler<WorkerStateEvent> onSucceededHandler) {
|
||||||
loadFileService.setFileStorage(fileStorage);
|
loadFileService.setFileStorage(fileStorage);
|
||||||
loadFileService.restart();
|
loadFileService.restart();
|
||||||
loadFileService.setOnSucceeded(value);
|
loadFileService.setOnSucceeded(onSucceededHandler);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void useSaveFileService(FileStorage fileStorage) {
|
private void useSaveFileService(FileStorage fileStorage) {
|
||||||
saveFileService.setFileStorage(fileStorage);
|
saveFileService.setFileStorage(fileStorage);
|
||||||
saveFileService.restart();
|
saveFileService.restart();
|
||||||
saveFileService.setOnSucceeded(event -> runLater(() -> {
|
saveFileService.setOnSucceeded(t -> resetContent());
|
||||||
resetContent();
|
|
||||||
}));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -569,7 +581,7 @@ public class SmartCSVController extends FXMLController {
|
|||||||
private ContextMenu contextMenuForColumn(String header) {
|
private ContextMenu contextMenuForColumn(String header) {
|
||||||
ContextMenu contextMenu = new ContextMenu();
|
ContextMenu contextMenu = new ContextMenu();
|
||||||
MenuItem editColumnRulesMenuItem = new MenuItem(resourceBundle.getString("context.menu.edit.column.rules"));
|
MenuItem editColumnRulesMenuItem = new MenuItem(resourceBundle.getString("context.menu.edit.column.rules"));
|
||||||
bindMenuItemsToFileExistence(currentConfigFile, editColumnRulesMenuItem);
|
bindMenuItemsToContentExistence(currentConfigFile, editColumnRulesMenuItem);
|
||||||
editColumnRulesMenuItem.setOnAction(e -> showValidationEditor(header));
|
editColumnRulesMenuItem.setOnAction(e -> showValidationEditor(header));
|
||||||
contextMenu.getItems().addAll(editColumnRulesMenuItem);
|
contextMenu.getItems().addAll(editColumnRulesMenuItem);
|
||||||
return contextMenu;
|
return contextMenu;
|
||||||
|
|||||||
@@ -126,6 +126,14 @@ public class CSVModel {
|
|||||||
return validator != null && validator.hasConfig();
|
return validator != null && validator.hasConfig();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public ValidationConfiguration createValidationConfiguration() {
|
||||||
|
ValidationConfiguration newValidationConfiguration = new ValidationConfiguration();
|
||||||
|
newValidationConfiguration.setHeaderNames(this.header);
|
||||||
|
this.validator = new Validator(newValidationConfiguration);
|
||||||
|
this.revalidate();
|
||||||
|
return newValidationConfiguration;
|
||||||
|
}
|
||||||
|
|
||||||
private static class RevalidationService extends Service<List<ValidationError>> {
|
private static class RevalidationService extends Service<List<ValidationError>> {
|
||||||
|
|
||||||
private Validator validator;
|
private Validator validator;
|
||||||
|
|||||||
@@ -39,4 +39,8 @@ public class HeaderConfiguration {
|
|||||||
public String[] getNames() {
|
public String[] getNames() {
|
||||||
return names;
|
return names;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setNames(String[] names) {
|
||||||
|
this.names = names;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -48,6 +48,10 @@ public class ValidationConfiguration {
|
|||||||
return headerConfiguration.getNames();
|
return headerConfiguration.getNames();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setHeaderNames(String[] headerNames) {
|
||||||
|
headerConfiguration.setNames(headerNames);
|
||||||
|
}
|
||||||
|
|
||||||
public Boolean getIntegerRuleFor(String column) {
|
public Boolean getIntegerRuleFor(String column) {
|
||||||
return (Boolean)getValue(column, "integer");
|
return (Boolean)getValue(column, "integer");
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,48 +15,68 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.open-icon {
|
.open-icon {
|
||||||
-glyph-name: "FILE_TEXT_ALT";
|
-glyph-name: "FILE_IMPORT";
|
||||||
-glyph-size: 14px;
|
-glyph-size: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.file-document-icon {
|
||||||
|
-glyph-name: "FILE_DOCUMENT";
|
||||||
|
-glyph-size: 16px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.config-icon {
|
.config-icon {
|
||||||
-glyph-name: "CHECK";
|
-glyph-name: "CLIPBOARD";
|
||||||
-glyph-size: 14px;
|
-glyph-size: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.create-config-icon {
|
||||||
|
-glyph-name: "STAR";
|
||||||
|
-glyph-size: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.load-config-icon {
|
||||||
|
-glyph-name: "ARROW_UP_BOLD";
|
||||||
|
-glyph-size: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.save-config-icon {
|
||||||
|
-glyph-name: "ARROW_DOWN_BOLD";
|
||||||
|
-glyph-size: 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.save-icon {
|
.save-icon {
|
||||||
-glyph-name: "FLOPPY_ALT";
|
-glyph-name: "FILE_EXPORT";
|
||||||
-glyph-size: 14px;
|
-glyph-size: 16px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.exit-icon {
|
.exit-icon {
|
||||||
-glyph-name: "SIGN_OUT";
|
-glyph-name: "EXIT_TO_APP";
|
||||||
-glyph-size: 14px;
|
-glyph-size: 16px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.info-icon {
|
.info-icon {
|
||||||
-glyph-name: "INFO";
|
-glyph-name: "INFORMATION_OUTLINE";
|
||||||
-glyph-size: 14px;
|
-glyph-size: 16px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.error-title-icon {
|
.config-check-icon {
|
||||||
-glyph-name: "EXCLAMATION_TRIANGLE";
|
-glyph-name: "CLIPBOARD_CHECK";
|
||||||
-glyph-size: 14px;
|
-glyph-size: 16px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.preferences-icon {
|
.preferences-icon {
|
||||||
-glyph-name: "COG";
|
-glyph-name: "SETTINGS";
|
||||||
-glyph-size: 14px;
|
-glyph-size: 16px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.delete-icon {
|
.delete-icon {
|
||||||
-glyph-name: "MINUS";
|
-glyph-name: "TABLE_ROW_REMOVE";
|
||||||
-glyph-size: 14px;
|
-glyph-size: 16px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.add-icon {
|
.add-icon {
|
||||||
-glyph-name: "PLUS";
|
-glyph-name: "TABLE_ROW_PLUS_AFTER";
|
||||||
-glyph-size: 14px;
|
-glyph-size: 16px;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* toolbar customization based on http://fxexperience.com/2012/02/customized-segmented-toolbar-buttons/ */
|
/* toolbar customization based on http://fxexperience.com/2012/02/customized-segmented-toolbar-buttons/ */
|
||||||
@@ -91,6 +111,13 @@
|
|||||||
-fx-fill: white;
|
-fx-fill: white;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.menu-item .load-config-icon,
|
||||||
|
.menu-item .save-config-icon,
|
||||||
|
.menu-item .create-config-icon
|
||||||
|
{
|
||||||
|
-fx-fill: white;
|
||||||
|
}
|
||||||
|
|
||||||
.tool-bar .save-icon {
|
.tool-bar .save-icon {
|
||||||
-glyph-size: 16px;
|
-glyph-size: 16px;
|
||||||
-fx-fill: white;
|
-fx-fill: white;
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
|
||||||
<?import de.jensd.fx.glyphs.GlyphsStack?>
|
<?import de.jensd.fx.glyphs.GlyphsStack?>
|
||||||
<?import de.jensd.fx.glyphs.fontawesome.FontAwesomeIconView?>
|
|
||||||
<?import java.net.URL?>
|
<?import java.net.URL?>
|
||||||
<?import javafx.geometry.Insets?>
|
<?import javafx.geometry.Insets?>
|
||||||
<?import javafx.scene.control.Button?>
|
<?import javafx.scene.control.Button?>
|
||||||
@@ -22,6 +21,7 @@
|
|||||||
<?import javafx.scene.layout.RowConstraints?>
|
<?import javafx.scene.layout.RowConstraints?>
|
||||||
<?import javafx.scene.layout.VBox?>
|
<?import javafx.scene.layout.VBox?>
|
||||||
|
|
||||||
|
<?import de.jensd.fx.glyphs.materialdesignicons.MaterialDesignIconView?>
|
||||||
<BorderPane fx:id="applicationPane" maxHeight="-Infinity" maxWidth="1000.0" minHeight="700.0" minWidth="-Infinity" prefHeight="700.0" prefWidth="1000.0" xmlns="http://javafx.com/javafx/8.0.65" xmlns:fx="http://javafx.com/fxml/1">
|
<BorderPane fx:id="applicationPane" maxHeight="-Infinity" maxWidth="1000.0" minHeight="700.0" minWidth="-Infinity" prefHeight="700.0" prefWidth="1000.0" xmlns="http://javafx.com/javafx/8.0.65" xmlns:fx="http://javafx.com/fxml/1">
|
||||||
<top>
|
<top>
|
||||||
<VBox id="background" prefWidth="100.0" BorderPane.alignment="CENTER">
|
<VBox id="background" prefWidth="100.0" BorderPane.alignment="CENTER">
|
||||||
@@ -32,57 +32,72 @@
|
|||||||
<items>
|
<items>
|
||||||
<MenuItem mnemonicParsing="false" onAction="#openCsv" text="%menu.open.csv">
|
<MenuItem mnemonicParsing="false" onAction="#openCsv" text="%menu.open.csv">
|
||||||
<graphic>
|
<graphic>
|
||||||
<FontAwesomeIconView styleClass="open-icon" />
|
<MaterialDesignIconView styleClass="open-icon" />
|
||||||
</graphic>
|
</graphic>
|
||||||
</MenuItem>
|
</MenuItem>
|
||||||
<MenuItem fx:id="saveMenuItem" disable="true" mnemonicParsing="false" onAction="#saveCsv" text="%menu.save">
|
<MenuItem fx:id="saveMenuItem" disable="true" mnemonicParsing="false" onAction="#saveCsv" text="%menu.save">
|
||||||
<graphic>
|
<graphic>
|
||||||
<FontAwesomeIconView styleClass="save-icon" />
|
<MaterialDesignIconView styleClass="save-icon" />
|
||||||
</graphic>
|
</graphic>
|
||||||
</MenuItem>
|
</MenuItem>
|
||||||
<MenuItem fx:id="saveAsMenuItem" disable="true" mnemonicParsing="false" onAction="#saveAsCsv" text="%menu.save.as">
|
<MenuItem fx:id="saveAsMenuItem" disable="true" mnemonicParsing="false" onAction="#saveAsCsv" text="%menu.save.as">
|
||||||
<graphic>
|
<graphic>
|
||||||
<FontAwesomeIconView styleClass="save-icon" />
|
<MaterialDesignIconView styleClass="save-icon" />
|
||||||
</graphic>
|
</graphic>
|
||||||
</MenuItem>
|
</MenuItem>
|
||||||
|
|
||||||
<SeparatorMenuItem mnemonicParsing="false" />
|
<SeparatorMenuItem mnemonicParsing="false" />
|
||||||
|
<MenuItem fx:id="createConfigMenuItem" disable="true" mnemonicParsing="false" onAction="#createConfig" text="%menu.create.config">
|
||||||
|
<graphic>
|
||||||
|
<GlyphsStack>
|
||||||
|
<children>
|
||||||
|
<MaterialDesignIconView styleClass="config-icon" />
|
||||||
|
<MaterialDesignIconView style="-fx-opacity: 0.7;" styleClass="create-config-icon" />
|
||||||
|
</children>
|
||||||
|
</GlyphsStack>
|
||||||
|
</graphic>
|
||||||
|
</MenuItem>
|
||||||
<MenuItem fx:id="loadConfigMenuItem" disable="true" mnemonicParsing="false" onAction="#openConfig" text="%menu.open.config">
|
<MenuItem fx:id="loadConfigMenuItem" disable="true" mnemonicParsing="false" onAction="#openConfig" text="%menu.open.config">
|
||||||
<graphic>
|
<graphic>
|
||||||
<FontAwesomeIconView styleClass="config-icon" />
|
<GlyphsStack>
|
||||||
|
<children>
|
||||||
|
<MaterialDesignIconView styleClass="config-icon" />
|
||||||
|
<MaterialDesignIconView style="-fx-opacity: 0.7;" styleClass="load-config-icon" />
|
||||||
|
</children>
|
||||||
|
</GlyphsStack>
|
||||||
</graphic>
|
</graphic>
|
||||||
</MenuItem>
|
</MenuItem>
|
||||||
<MenuItem fx:id="saveConfigMenuItem" disable="true" mnemonicParsing="false" onAction="#saveConfig" text="%menu.save.config">
|
<MenuItem fx:id="saveConfigMenuItem" disable="true" mnemonicParsing="false" onAction="#saveConfig" text="%menu.save.config">
|
||||||
<graphic>
|
<graphic>
|
||||||
<GlyphsStack>
|
<GlyphsStack>
|
||||||
<children>
|
<children>
|
||||||
<FontAwesomeIconView style="-fx-opacity: 0.7;" styleClass="save-icon" />
|
<MaterialDesignIconView styleClass="config-icon" />
|
||||||
<FontAwesomeIconView styleClass="config-icon" />
|
<MaterialDesignIconView style="-fx-opacity: 0.7;" styleClass="save-config-icon" />
|
||||||
</children>
|
</children>
|
||||||
</GlyphsStack>
|
</GlyphsStack>
|
||||||
</graphic>
|
</graphic>
|
||||||
</MenuItem>
|
</MenuItem>
|
||||||
<MenuItem fx:id="saveAsConfigMenuItem" disable="true" mnemonicParsing="false" onAction="#saveAsConfig" text="%menu.save.as.config">
|
<MenuItem fx:id="saveAsConfigMenuItem" disable="true" mnemonicParsing="false" onAction="#saveAsConfig" text="%menu.save.as.config">
|
||||||
<graphic>
|
<graphic>
|
||||||
<GlyphsStack>
|
<GlyphsStack>
|
||||||
<children>
|
<children>
|
||||||
<FontAwesomeIconView style="-fx-opacity: 0.7;" styleClass="save-icon" />
|
<MaterialDesignIconView styleClass="config-icon" />
|
||||||
<FontAwesomeIconView styleClass="config-icon" />
|
<MaterialDesignIconView style="-fx-opacity: 0.7;" styleClass="save-config-icon" />
|
||||||
</children>
|
</children>
|
||||||
</GlyphsStack>
|
</GlyphsStack>
|
||||||
</graphic>
|
</graphic>
|
||||||
</MenuItem>
|
</MenuItem>
|
||||||
|
|
||||||
<SeparatorMenuItem mnemonicParsing="false" />
|
<SeparatorMenuItem mnemonicParsing="false" />
|
||||||
<MenuItem mnemonicParsing="false" onAction="#preferences" text="%menu.preferences">
|
<MenuItem mnemonicParsing="false" onAction="#preferences" text="%menu.preferences">
|
||||||
<graphic>
|
<graphic>
|
||||||
<FontAwesomeIconView styleClass="preferences-icon" />
|
<MaterialDesignIconView styleClass="preferences-icon" />
|
||||||
</graphic>
|
</graphic>
|
||||||
</MenuItem>
|
</MenuItem>
|
||||||
<SeparatorMenuItem mnemonicParsing="false" />
|
<SeparatorMenuItem mnemonicParsing="false" />
|
||||||
<MenuItem mnemonicParsing="false" onAction="#close" text="%menu.close">
|
<MenuItem mnemonicParsing="false" onAction="#close" text="%menu.close">
|
||||||
<graphic>
|
<graphic>
|
||||||
<FontAwesomeIconView styleClass="exit-icon" />
|
<MaterialDesignIconView styleClass="exit-icon" />
|
||||||
</graphic>
|
</graphic>
|
||||||
</MenuItem>
|
</MenuItem>
|
||||||
</items>
|
</items>
|
||||||
@@ -91,12 +106,12 @@
|
|||||||
<items>
|
<items>
|
||||||
<MenuItem fx:id="deleteRowMenuItem" disable="true" mnemonicParsing="false" onAction="#deleteRow" text="%menu.delete.row">
|
<MenuItem fx:id="deleteRowMenuItem" disable="true" mnemonicParsing="false" onAction="#deleteRow" text="%menu.delete.row">
|
||||||
<graphic>
|
<graphic>
|
||||||
<FontAwesomeIconView styleClass="delete-icon" />
|
<MaterialDesignIconView styleClass="delete-icon" />
|
||||||
</graphic>
|
</graphic>
|
||||||
</MenuItem>
|
</MenuItem>
|
||||||
<MenuItem fx:id="addRowMenuItem" disable="true" mnemonicParsing="false" onAction="#addRow" text="%menu.add.row">
|
<MenuItem fx:id="addRowMenuItem" disable="true" mnemonicParsing="false" onAction="#addRow" text="%menu.add.row">
|
||||||
<graphic>
|
<graphic>
|
||||||
<FontAwesomeIconView styleClass="add-icon" />
|
<MaterialDesignIconView styleClass="add-icon" />
|
||||||
</graphic>
|
</graphic>
|
||||||
</MenuItem>
|
</MenuItem>
|
||||||
</items>
|
</items>
|
||||||
@@ -105,7 +120,7 @@
|
|||||||
<items>
|
<items>
|
||||||
<MenuItem mnemonicParsing="false" onAction="#about" text="%menu.about">
|
<MenuItem mnemonicParsing="false" onAction="#about" text="%menu.about">
|
||||||
<graphic>
|
<graphic>
|
||||||
<FontAwesomeIconView styleClass="info-icon" />
|
<MaterialDesignIconView styleClass="info-icon" />
|
||||||
</graphic>
|
</graphic>
|
||||||
</MenuItem>
|
</MenuItem>
|
||||||
</items>
|
</items>
|
||||||
@@ -119,7 +134,7 @@
|
|||||||
<Tooltip text="%menu.open.csv" />
|
<Tooltip text="%menu.open.csv" />
|
||||||
</tooltip>
|
</tooltip>
|
||||||
<graphic>
|
<graphic>
|
||||||
<FontAwesomeIconView styleClass="open-icon" />
|
<MaterialDesignIconView styleClass="open-icon" />
|
||||||
</graphic>
|
</graphic>
|
||||||
</Button>
|
</Button>
|
||||||
<Button fx:id="saveButton" disable="true" mnemonicParsing="false" onAction="#saveCsv">
|
<Button fx:id="saveButton" disable="true" mnemonicParsing="false" onAction="#saveCsv">
|
||||||
@@ -127,7 +142,7 @@
|
|||||||
<Tooltip text="%menu.save" />
|
<Tooltip text="%menu.save" />
|
||||||
</tooltip>
|
</tooltip>
|
||||||
<graphic>
|
<graphic>
|
||||||
<FontAwesomeIconView styleClass="save-icon" />
|
<MaterialDesignIconView styleClass="save-icon" />
|
||||||
</graphic>
|
</graphic>
|
||||||
</Button>
|
</Button>
|
||||||
<Button fx:id="saveAsButton" disable="true" mnemonicParsing="false" onAction="#saveAsCsv" styleClass="last" text="...">
|
<Button fx:id="saveAsButton" disable="true" mnemonicParsing="false" onAction="#saveAsCsv" styleClass="last" text="...">
|
||||||
@@ -135,18 +150,36 @@
|
|||||||
<Tooltip text="%menu.save.as" />
|
<Tooltip text="%menu.save.as" />
|
||||||
</tooltip>
|
</tooltip>
|
||||||
<graphic>
|
<graphic>
|
||||||
<FontAwesomeIconView styleClass="save-icon" />
|
<MaterialDesignIconView styleClass="save-icon" />
|
||||||
</graphic>
|
</graphic>
|
||||||
</Button>
|
</Button>
|
||||||
</HBox>
|
</HBox>
|
||||||
<Region styleClass="spacer" />
|
<Region styleClass="spacer" />
|
||||||
<HBox styleClass="segmented-button-bar">
|
<HBox styleClass="segmented-button-bar">
|
||||||
|
<Button fx:id="createConfigButton" disable="true" mnemonicParsing="false" onAction="#createConfig">
|
||||||
|
<tooltip>
|
||||||
|
<Tooltip text="%menu.create.config" />
|
||||||
|
</tooltip>
|
||||||
|
<graphic>
|
||||||
|
<GlyphsStack>
|
||||||
|
<children>
|
||||||
|
<MaterialDesignIconView styleClass="config-icon" />
|
||||||
|
<MaterialDesignIconView style="-fx-opacity: 0.7;" styleClass="create-config-icon" />
|
||||||
|
</children>
|
||||||
|
</GlyphsStack>
|
||||||
|
</graphic>
|
||||||
|
</Button>
|
||||||
<Button fx:id="loadConfigButton" disable="true" mnemonicParsing="false" onAction="#openConfig">
|
<Button fx:id="loadConfigButton" disable="true" mnemonicParsing="false" onAction="#openConfig">
|
||||||
<tooltip>
|
<tooltip>
|
||||||
<Tooltip text="%menu.open.config" />
|
<Tooltip text="%menu.open.config" />
|
||||||
</tooltip>
|
</tooltip>
|
||||||
<graphic>
|
<graphic>
|
||||||
<FontAwesomeIconView styleClass="config-icon" />
|
<GlyphsStack>
|
||||||
|
<children>
|
||||||
|
<MaterialDesignIconView styleClass="config-icon" />
|
||||||
|
<MaterialDesignIconView style="-fx-opacity: 0.7;" styleClass="load-config-icon" />
|
||||||
|
</children>
|
||||||
|
</GlyphsStack>
|
||||||
</graphic>
|
</graphic>
|
||||||
</Button>
|
</Button>
|
||||||
<Button fx:id="saveConfigButton" disable="true" mnemonicParsing="false" onAction="#saveConfig">
|
<Button fx:id="saveConfigButton" disable="true" mnemonicParsing="false" onAction="#saveConfig">
|
||||||
@@ -156,8 +189,8 @@
|
|||||||
<graphic>
|
<graphic>
|
||||||
<GlyphsStack>
|
<GlyphsStack>
|
||||||
<children>
|
<children>
|
||||||
<FontAwesomeIconView style="-fx-opacity: 0.7;" styleClass="save-icon" />
|
<MaterialDesignIconView styleClass="config-icon" />
|
||||||
<FontAwesomeIconView styleClass="config-icon" />
|
<MaterialDesignIconView style="-fx-opacity: 0.7;" styleClass="save-config-icon" />
|
||||||
</children>
|
</children>
|
||||||
</GlyphsStack>
|
</GlyphsStack>
|
||||||
</graphic>
|
</graphic>
|
||||||
@@ -169,8 +202,8 @@
|
|||||||
<graphic>
|
<graphic>
|
||||||
<GlyphsStack>
|
<GlyphsStack>
|
||||||
<children>
|
<children>
|
||||||
<FontAwesomeIconView style="-fx-opacity: 0.7;" styleClass="save-icon" />
|
<MaterialDesignIconView styleClass="config-icon" />
|
||||||
<FontAwesomeIconView styleClass="config-icon" />
|
<MaterialDesignIconView style="-fx-opacity: 0.7;" styleClass="save-config-icon" />
|
||||||
</children>
|
</children>
|
||||||
</GlyphsStack>
|
</GlyphsStack>
|
||||||
|
|
||||||
@@ -184,7 +217,7 @@
|
|||||||
<Tooltip text="%menu.delete.row" />
|
<Tooltip text="%menu.delete.row" />
|
||||||
</tooltip>
|
</tooltip>
|
||||||
<graphic>
|
<graphic>
|
||||||
<FontAwesomeIconView styleClass="delete-icon" />
|
<MaterialDesignIconView styleClass="delete-icon" />
|
||||||
</graphic>
|
</graphic>
|
||||||
</Button>
|
</Button>
|
||||||
<Button fx:id="addRowButton" disable="true" mnemonicParsing="false" onAction="#addRow" styleClass="last">
|
<Button fx:id="addRowButton" disable="true" mnemonicParsing="false" onAction="#addRow" styleClass="last">
|
||||||
@@ -192,7 +225,7 @@
|
|||||||
<Tooltip text="%menu.add.row" />
|
<Tooltip text="%menu.add.row" />
|
||||||
</tooltip>
|
</tooltip>
|
||||||
<graphic>
|
<graphic>
|
||||||
<FontAwesomeIconView styleClass="add-icon" />
|
<MaterialDesignIconView styleClass="add-icon" />
|
||||||
</graphic>
|
</graphic>
|
||||||
</Button>
|
</Button>
|
||||||
</HBox>
|
</HBox>
|
||||||
@@ -203,7 +236,7 @@
|
|||||||
<Tooltip text="%menu.preferences" />
|
<Tooltip text="%menu.preferences" />
|
||||||
</tooltip>
|
</tooltip>
|
||||||
<graphic>
|
<graphic>
|
||||||
<FontAwesomeIconView styleClass="preferences-icon" />
|
<MaterialDesignIconView styleClass="preferences-icon" />
|
||||||
</graphic>
|
</graphic>
|
||||||
</Button>
|
</Button>
|
||||||
<Button mnemonicParsing="false" onAction="#close" styleClass="last">
|
<Button mnemonicParsing="false" onAction="#close" styleClass="last">
|
||||||
@@ -211,7 +244,7 @@
|
|||||||
<Tooltip text="%menu.close" />
|
<Tooltip text="%menu.close" />
|
||||||
</tooltip>
|
</tooltip>
|
||||||
<graphic>
|
<graphic>
|
||||||
<FontAwesomeIconView styleClass="exit-icon" />
|
<MaterialDesignIconView styleClass="exit-icon" />
|
||||||
</graphic>
|
</graphic>
|
||||||
</Button>
|
</Button>
|
||||||
</HBox>
|
</HBox>
|
||||||
@@ -248,10 +281,10 @@
|
|||||||
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
|
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
|
||||||
</rowConstraints>
|
</rowConstraints>
|
||||||
<children>
|
<children>
|
||||||
<FontAwesomeIconView styleClass="open-icon" GridPane.hgrow="NEVER" />
|
<MaterialDesignIconView styleClass="file-document-icon" GridPane.hgrow="NEVER" />
|
||||||
<Label text="%stateline.csv" GridPane.columnIndex="1" GridPane.hgrow="NEVER" />
|
<Label text="%stateline.csv" GridPane.columnIndex="1" GridPane.hgrow="NEVER" />
|
||||||
<Label fx:id="csvName" GridPane.columnIndex="2" GridPane.hgrow="ALWAYS" />
|
<Label fx:id="csvName" GridPane.columnIndex="2" GridPane.hgrow="ALWAYS" />
|
||||||
<FontAwesomeIconView styleClass="open-icon" GridPane.columnIndex="3" GridPane.hgrow="NEVER" />
|
<MaterialDesignIconView styleClass="config-check-icon" GridPane.columnIndex="3" GridPane.hgrow="NEVER" />
|
||||||
<Label text="%stateline.configuration" GridPane.columnIndex="4" GridPane.hgrow="NEVER" />
|
<Label text="%stateline.configuration" GridPane.columnIndex="4" GridPane.hgrow="NEVER" />
|
||||||
<Label fx:id="configurationName" GridPane.columnIndex="5" GridPane.hgrow="ALWAYS" />
|
<Label fx:id="configurationName" GridPane.columnIndex="5" GridPane.hgrow="ALWAYS" />
|
||||||
</children>
|
</children>
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
menu.open.csv = Open CSV File
|
menu.open.csv = Open CSV File
|
||||||
menu.open.config = Open Validation Config
|
menu.open.config = Open Validation Config
|
||||||
|
menu.create.config = Create Validation Config
|
||||||
menu.save = Save
|
menu.save = Save
|
||||||
menu.save.as = Save As ...
|
menu.save.as = Save As ...
|
||||||
menu.save.config = Save Validation Config
|
menu.save.config = Save Validation Config
|
||||||
|
|||||||
@@ -8,6 +8,7 @@
|
|||||||
|
|
||||||
menu.open.csv = CSV Datei \u00f6ffnen
|
menu.open.csv = CSV Datei \u00f6ffnen
|
||||||
menu.open.config = Pr\u00fcfkonfiguration \u00f6ffnen
|
menu.open.config = Pr\u00fcfkonfiguration \u00f6ffnen
|
||||||
|
menu.create.config = Pr\u00fcfkonfiguration erzeugen
|
||||||
menu.save = Speichern
|
menu.save = Speichern
|
||||||
menu.save.as = Speichern als ...
|
menu.save.as = Speichern als ...
|
||||||
menu.save.config = Pr\u00fcfkonfiguration speichern
|
menu.save.config = Pr\u00fcfkonfiguration speichern
|
||||||
|
|||||||
Reference in New Issue
Block a user