use of better icons, create a new validation file for csv

This commit is contained in:
2016-07-22 23:51:08 +02:00
parent 3aa9303b3e
commit 328c1b0b88
9 changed files with 172 additions and 79 deletions

View File

@@ -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'

View File

@@ -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,8 +276,12 @@ public class SmartCSVController extends FXMLController {
@FXML @FXML
public void saveConfig(ActionEvent actionEvent) { public void saveConfig(ActionEvent actionEvent) {
if (currentConfigFile.getFile() == null) {
saveAsConfig(actionEvent);
} else {
useSaveFileService(currentConfigFile); useSaveFileService(currentConfigFile);
} }
}
@FXML @FXML
public void saveAsConfig(ActionEvent actionEvent) { public void saveAsConfig(ActionEvent actionEvent) {
@@ -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;

View File

@@ -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;

View File

@@ -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;
}
} }

View File

@@ -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");
} }

View File

@@ -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;

View File

@@ -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,32 +32,47 @@
<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>
@@ -66,8 +81,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>
@@ -76,13 +91,13 @@
<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>

View File

@@ -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

View File

@@ -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