5 Commits

Author SHA1 Message Date
02026633ed update to new versions and build system 2026-02-17 19:04:16 +01:00
c4297a4be2 fixed spelling mistakes 2019-01-10 21:54:46 +01:00
fd52d3df6d added yt link for Kurzanleitung 2019-01-09 22:53:07 +01:00
c320ef615d added yt link and fixed some spelling errors 2019-01-09 18:39:47 +01:00
2a20ea7bdb spelling errors fixed 2019-01-06 17:44:25 +01:00
19 changed files with 580 additions and 630 deletions

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
target/

7
.vscode/extensions.json vendored Normal file
View File

@ -0,0 +1,7 @@
{
"recommendations": [
"vscjava.vscode-java-pack",
"vscjava.vscode-maven",
"redhat.java"
]
}

20
.vscode/launch.json vendored Normal file
View File

@ -0,0 +1,20 @@
{
"version": "0.2.0",
"configurations": [
{
"type": "java",
"name": "Run jFxKasse",
"request": "launch",
"mainClass": "com.jFxKasse.application.JavaFX11Main",
"projectName": "jFxKasse",
"vmArgs": "--module-path ${env:PATH_TO_FX} --add-modules javafx.controls,javafx.fxml --add-opens javafx.graphics/com.sun.javafx.scene=ALL-UNNAMED"
},
{
"type": "java",
"name": "Run jFxKasse (Maven)",
"request": "launch",
"mainClass": "com.jFxKasse.application.JavaFX11Main",
"projectName": "jFxKasse"
}
]
}

11
.vscode/settings.json vendored Normal file
View File

@ -0,0 +1,11 @@
{
"java.project.sourcePaths": [
"src/main/java"
],
"java.project.outputPath": "target/classes",
"java.project.referencedLibraries": [],
"java.configuration.updateBuildConfiguration": "automatic",
"java.compile.nullAnalysis.mode": "automatic",
"editor.formatOnSave": true,
"files.encoding": "utf8"
}

51
.vscode/tasks.json vendored Normal file
View File

@ -0,0 +1,51 @@
{
"version": "2.0.0",
"tasks": [
{
"label": "mvn compile",
"type": "shell",
"command": "mvn compile",
"group": "build",
"problemMatcher": [
"$javac"
]
},
{
"label": "mvn package",
"type": "shell",
"command": "mvn package -DskipTests",
"group": {
"kind": "build",
"isDefault": true
},
"problemMatcher": [
"$javac"
]
},
{
"label": "mvn clean",
"type": "shell",
"command": "mvn clean",
"group": "build",
"problemMatcher": []
},
{
"label": "mvn javafx:run",
"type": "shell",
"command": "mvn javafx:run",
"group": "build",
"problemMatcher": [
"$javac"
]
},
{
"label": "mvn test",
"type": "shell",
"command": "mvn test",
"group": "test",
"problemMatcher": [
"$javac"
]
}
]
}

View File

@ -1,33 +1,60 @@
# jFxKasse
easy payment system for small to middel sized events with a sales slip printer
Simples Kassensystem für kleine bis mittlere Veranstalltungen bit Bon-Drucker
Simple POS (Point of Sale) system for small to medium-sized events with receipt printer support.
## Requirements
- Java JDK 17+
- Maven 3.6+
- Display >= 1366x768
## Video Tutorials (German | Deutsch)
[YouTube Video: jFxKasse - Kassensystem - Kurzanleitung](https://www.youtube.com/watch?v=DV9DDESw40I)
[YouTube Video: jFxKasse - Kassensystem - Installieren](https://www.youtube.com/watch?v=IY1bqRjwh0Q)
## Setup (VSCode on openSUSE Tumbleweed)
### 1. Install dependencies
```bash
sudo zypper install java-17-openjdk-devel maven
```
### 2. Install VSCode extensions
Open the project in VSCode. You will be prompted to install the recommended extensions:
- **Extension Pack for Java** (`vscjava.vscode-java-pack`)
- **Maven for Java** (`vscjava.vscode-maven`)
- **Language Support for Java** (`redhat.java`)
### 3. Build & Run
```bash
# Compile
mvn compile
# Run via Maven
mvn javafx:run
# Package as fat JAR
mvn package
java -jar target/jFxKasse-shaded.jar
```
Or use the preconfigured VSCode tasks (`Ctrl+Shift+B`) and launch configurations (`F5`).
## Screenshots
### Main View | Hauptansicht
![](https://git.mosad.xyz/localhorst/jFxKasse/raw/branch/master/screenshots/newjob)
| Main View | Jobs | Positions | Settings |
|-----------|------|-----------|----------|
| ![](screenshots/newjob) | ![](screenshots/jobs) | ![](screenshots/positions) | ![](screenshots/settings) |
### Jobs | Auftäge
![](https://git.mosad.xyz/localhorst/jFxKasse/raw/branch/master/screenshots/jobs)
## Hardware
### Positions | Positionen
![](https://git.mosad.xyz/localhorst/jFxKasse/raw/branch/master/screenshots/positions)
Tested with: [Epson TM T20II](https://www.epson.de/products/sd/pos-printer/epson-tm-t20ii). Other receipt printers should work as well.
### Settings | Einstellungen
![](https://git.mosad.xyz/localhorst/jFxKasse/raw/branch/master/screenshots/settings)
## License
## Requirements | Anforderungen
### Software
* Java JRE 11
* Display/Bildschirm > 1366px X 768px
* Windoofs, Mac, GNU/Linux (openSuse tested)
### Hardware
I used this prtiner: [Epson TM T20II](https://www.epson.de/products/sd/pos-printer/epson-tm-t20ii)
Other sales slip printer are possible.
GPL-3.0

49
pom.xml
View File

@ -1,42 +1,48 @@
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com</groupId>
<artifactId>jFxKasse</artifactId>
<version>0.3.2</version>
<version>0.4.0</version>
<name>jFxKasse</name>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
<javafx.version>21.0.5</javafx.version>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter</artifactId>
<version>5.11.4</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-controls</artifactId>
<version>11</version>
<version>${javafx.version}</version>
</dependency>
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-fxml</artifactId>
<version>11</version>
<version>${javafx.version}</version>
</dependency>
<dependency>
<groupId>com.jfoenix</groupId>
<artifactId>jfoenix</artifactId>
<version>9.0.8</version>
<version>9.0.10</version>
</dependency>
<dependency>
<groupId>org.xerial</groupId>
<artifactId>sqlite-jdbc</artifactId>
<version>3.23.1</version>
<version>3.47.1.0</version>
</dependency>
</dependencies>
@ -46,11 +52,10 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
<version>3.13.0</version>
<configuration>
<source>11</source>
<target>11</target>
<!--<release>11</release> -->
<source>17</source>
<target>17</target>
<showWarnings>true</showWarnings>
<showDeprecation>true</showDeprecation>
</configuration>
@ -59,7 +64,7 @@
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.6.0</version>
<version>3.5.0</version>
<executions>
<execution>
<goals>
@ -75,13 +80,12 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.2.1</version>
<version>3.6.0</version>
<configuration>
<finalName>jFxKasse</finalName>
<shadedArtifactAttached>true</shadedArtifactAttached>
<transformers>
<transformer
implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>com.jFxKasse.application.JavaFX11Main</mainClass>
</transformer>
</transformers>
@ -96,6 +100,15 @@
</executions>
</plugin>
<plugin>
<groupId>org.openjfx</groupId>
<artifactId>javafx-maven-plugin</artifactId>
<version>0.0.8</version>
<configuration>
<mainClass>com.jFxKasse.application.JavaFX11Main</mainClass>
</configuration>
</plugin>
</plugins>
</build>
</project>

View File

@ -20,9 +20,8 @@ import javafx.scene.Scene;
import javafx.scene.input.KeyEvent;
import javafx.scene.layout.AnchorPane;
public class Main extends Application
{
// path to config.xml and the database
public class Main extends Application {
// Path to config.xml and the database
public static String filepath;
private static String osName = System.getProperty("os.name");
@ -42,42 +41,38 @@ public class Main extends Application
private Stage primaryStage;
@Override
public void start(Stage primaryStage)
{
public void start(Stage primaryStage) {
this.primaryStage = primaryStage;
System.out.println("\nstarting jFxKasse\n");
mainWindow();
}
private void mainWindow()
{
private void mainWindow() {
try {
FXMLLoader loader = new FXMLLoader(
getClass().getResource("/fxml/MainWindow.fxml"));
AnchorPane pane = loader.load();
primaryStage.setTitle("jFxKasse"); // Title of window
primaryStage.setTitle("jFxKasse"); // Window title
mwc = loader.getController(); // set the mwc as the JavaFx
// MainWindowController
pc.searchPrinters(); // search for available printers
mwc.setMain(this, dbc, xmlc, pc); // set the created instances to the
// mwc
mwc = loader.getController(); // Set the MainWindowController
pc.searchPrinters(); // Search for available printers
mwc.setMain(this, dbc, xmlc, pc); // Pass instances to the controller
firstStart(); // test if this is the first run
firstStart(); // Check if this is the first run
Scene scene = new Scene(pane);
scene.getStylesheets().add(
Main.class.getResource("/css/application.css").toExternalForm());
primaryStage.setScene(scene);
primaryStage.show(); // shows the stage
primaryStage.show(); // Show the stage
//attach the KeyController
// Attach the KeyController
kc = new KeyController(scene, mwc);
Timeline timeline = new Timeline(
new KeyFrame(Duration.seconds(1), ev -> {
mwc.updateTimeLabel(); // update time label on UI
mwc.updateTimeLabel(); // Update time label on UI
}));
timeline.setCycleCount(Animation.INDEFINITE);
timeline.play();
@ -86,8 +81,7 @@ public class Main extends Application
}
}
public static void main(String[] args)
{
public static void main(String[] args) {
if (osName.contains("Windows")) {
System.out.println("FCK Windows");
filepath = userHome + "/Documents/jFxKasse/";
@ -100,30 +94,29 @@ public class Main extends Application
/**
* Checks if the config.xml is preset.
*/
private void firstStart() throws Exception
{
private void firstStart() throws Exception {
if (xmlc.loadSettings()) {
// config.xml found, app starting normal
System.out.println("XML found!");
mwc.initUI(); // Starting the UI elements
mwc.initUI(); // Initialize the UI elements
mwc.setDBLabel(); // Set database labels
dbc.setDbname(xmlc.getDatabaseName()); // handover database name
dbc.connectDatabase(); // estabishing DB conection
mwc.fillTablePositionen(); // fill TreeTable 'Positionen'
dbc.setDbname(xmlc.getDatabaseName()); // Pass database name
dbc.connectDatabase(); // Establish DB connection
mwc.fillTablePositionen(); // Fill TreeTable 'Positions'
mwc.fillCategory();
mwc.fillPrinterSettings();
mwc.fillTableJobs();
mwc.loadGridButtons();
mwc.getSelectedCat(); // Load DB entries in Chois Box
mwc.getSelectedCat(); // Load DB entries in ChoiceBox
mwc.createNewJob();
} else {
// config.xml NOT found, first start of app
System.out.println("no XML found!");
xmlc.initXML(); // set default values
mwc.blockUI(true); // disable UI elements that need DB
xmlc.initXML(); // Set default values
mwc.blockUI(true); // Disable UI elements that need DB
mwc.blockUnlock();
File dir = new File(filepath);
dir.mkdir(); // Create new Subfolder
dir.mkdir(); // Create new subfolder
}
}
}

View File

@ -16,19 +16,17 @@ import javafx.scene.control.Label;
import javafx.scene.layout.GridPane;
import javafx.util.Pair;
public class PrintJob
{
public class PrintJob {
private TimeDate timedate = new TimeDate();
public void printJob(int jobID, XMLController xmlc, DBController dbc,
PrinterController pc)
{
PrinterController pc) {
if ((xmlc.getPrintername().equals("Drucker auswählen")
|| xmlc.getPrintername() == null)) {
// no printer selected
System.out.println("Kein Drucker eingestellt!!!");
// No printer selected
System.out.println("No printer configured!");
// creates a dialog
Dialog<Pair<String, String>> dialog = new Dialog<>();
@ -52,11 +50,11 @@ public class PrintJob
dialog.showAndWait();
} else {
// printer selected
// Printer selected
pc.selectPrinter(xmlc.getPrintername());
/* Single bill or splitted */
/* Single bill or split by category */
if (xmlc.getCategorySplitted()) {
// split the bills
// Split the bills
PrintDataSplitted pdsplitted = new PrintDataSplitted(
xmlc.getLinebreak(), xmlc.getOffsetHeader(),
@ -78,7 +76,7 @@ public class PrintJob
}
} else {
// one single bills
// Single bill
PrintDataSimple pds = new PrintDataSimple(xmlc.getLinebreak(),
xmlc.getOffsetHeader(), xmlc.getOffsetFooter(),
timedate.getSystemTime() + " " + timedate.getSystemDate(),

View File

@ -11,16 +11,14 @@ import com.jFxKasse.datatypes.tableDataJob;
import com.jFxKasse.datatypes.tableDataPositionen;
import java.io.File;
public class DBController
{
public class DBController {
private Connection connection;
private String DB_PATH;
private String dbname;
public void main()
{
public void main() {
try {
connection = DriverManager
.getConnection("jdbc:sqlite:" + DB_PATH + dbname + ".db");
@ -30,18 +28,15 @@ public class DBController
}
}
public DBController(String path)
{
public DBController(String path) {
this.DB_PATH = path;
}
public void setDbname(String dbname)
{
public void setDbname(String dbname) {
this.dbname = dbname;
}
public void connectDatabase()
{ // connect to database
public void connectDatabase() { // Connect to database
System.out.println("Connecting... DB name: " + dbname);
try {
if (connection != null)
@ -54,8 +49,7 @@ public class DBController
throw new RuntimeException(e);
}
Runtime.getRuntime().addShutdownHook(new Thread() {
public void run()
{
public void run() {
try {
if (!connection.isClosed() && connection != null) {
connection.close();
@ -69,8 +63,7 @@ public class DBController
});
}
public boolean existDB(String pPfad)
{ // does the DB exists?
public boolean existDB(String pPfad) { // Check if the DB exists
File varTmpDir = new File(pPfad);
if (!varTmpDir.exists()) {
return false;
@ -79,8 +72,7 @@ public class DBController
}
}
public String getCategoryNameFromPositionen(int pID)
{
public String getCategoryNameFromPositionen(int pID) {
int catInPos = 0;
try {
Statement stmt = connection.createStatement();
@ -108,9 +100,8 @@ public class DBController
}
// table Position section //
public void createTablePositionen()
{ // create table position
// Table 'Positionen' section //
public void createTablePositionen() { // Create table 'positionen'
System.out.println("Creating table Positionen");
try {
Statement stmt = connection.createStatement();
@ -122,7 +113,7 @@ public class DBController
e.printStackTrace();
}
// create 25 demo/default data entries
// Create 25 demo/default data entries
for (int i = 0; i < 25; i++) {
fillPositionen_Positionen(i + 1, "Noch frei", (float) 0.00, 6,
"#ad0000");
@ -130,8 +121,7 @@ public class DBController
}
public void fillPositionen_Positionen(int pID, String pName, float pValue,
int pCat, String pColor)
{ // create new data in table
int pCat, String pColor) { // Create new entry in table
System.out.println("Creating new positionen entry");
try {
PreparedStatement ps = connection.prepareStatement(
@ -152,8 +142,7 @@ public class DBController
}
}
public String getName_Positionen(int pID)
{
public String getName_Positionen(int pID) {
try {
Statement stmt = connection.createStatement();
ResultSet rs = stmt.executeQuery(
@ -166,8 +155,7 @@ public class DBController
}
}
public String getValue_Positionen(int pID)
{
public String getValue_Positionen(int pID) {
try {
Statement stmt = connection.createStatement();
ResultSet rs = stmt.executeQuery(
@ -181,8 +169,7 @@ public class DBController
}
}
public int getCat_Positionen(int pID)
{
public int getCat_Positionen(int pID) {
try {
Statement stmt = connection.createStatement();
ResultSet rs = stmt.executeQuery(
@ -196,8 +183,7 @@ public class DBController
}
}
public String getColor_Positionen(int pID)
{
public String getColor_Positionen(int pID) {
try {
Statement stmt = connection.createStatement();
ResultSet rs = stmt.executeQuery(
@ -211,8 +197,7 @@ public class DBController
}
}
public void setName_Positionen(int pID, String pName)
{
public void setName_Positionen(int pID, String pName) {
try {
Statement stmt = connection.createStatement();
stmt.executeUpdate("UPDATE positionen SET name = '" + pName
@ -223,8 +208,7 @@ public class DBController
}
}
public void setValue_Positionen(int pID, String pValue)
{
public void setValue_Positionen(int pID, String pValue) {
try {
Statement stmt = connection.createStatement();
stmt.executeUpdate("UPDATE positionen SET value = '" + pValue
@ -235,8 +219,7 @@ public class DBController
}
}
public void setCat_Positionen(int pID, int pCat)
{
public void setCat_Positionen(int pID, int pCat) {
try {
Statement stmt = connection.createStatement();
stmt.executeUpdate("UPDATE positionen SET cat = '" + pCat
@ -247,8 +230,7 @@ public class DBController
}
}
public void setColor_Positionen(int pID, String pColor)
{
public void setColor_Positionen(int pID, String pColor) {
try {
Statement stmt = connection.createStatement();
stmt.executeUpdate("UPDATE positionen SET color = '" + pColor
@ -259,8 +241,7 @@ public class DBController
}
}
public ArrayList<tableDataPositionen> ladeTabellePositionen()
{
public ArrayList<tableDataPositionen> ladeTabellePositionen() {
ArrayList<tableDataPositionen> daten = new ArrayList<>();
try {
Statement stmt = connection.createStatement();
@ -282,8 +263,7 @@ public class DBController
return daten;
}
public void ausgebenSysoPositionen()
{
public void ausgebenSysoPositionen() {
System.out.println("Print positionen");
try {
Statement stmt = connection.createStatement();
@ -302,10 +282,9 @@ public class DBController
}
}
// table Category section //
public void createTableCategory()
{ // create table position
System.out.println("Erstelle Tabelle Kategorie");
// Table 'Category' section //
public void createTableCategory() { // Create table 'category'
System.out.println("Creating table Category");
try {
Statement stmt = connection.createStatement();
stmt.executeUpdate("DROP TABLE IF EXISTS category;");
@ -323,8 +302,7 @@ public class DBController
}
public void setName_Category(int pID, String pName)
{
public void setName_Category(int pID, String pName) {
try {
Statement stmt = connection.createStatement();
stmt.executeUpdate("UPDATE category SET catname = '" + pName
@ -335,10 +313,9 @@ public class DBController
}
}
public void fillCategory_Category(int pID, String pName)
{
public void fillCategory_Category(int pID, String pName) {
System.out.println("Erstelle neuen Kategorie Eintrag");
System.out.println("Creating new category entry");
try {
PreparedStatement ps = connection
.prepareStatement("INSERT INTO category VALUES (?, ?);");
@ -355,8 +332,7 @@ public class DBController
}
public String getName_Category(int pID)
{
public String getName_Category(int pID) {
try {
Statement stmt = connection.createStatement();
ResultSet rs = stmt.executeQuery(
@ -370,9 +346,8 @@ public class DBController
}
}
// table Jobs section //
public void erstelleTabelleJobs()
{ // create table jobs
// Table 'Jobs' section //
public void erstelleTabelleJobs() { // Create table 'jobs'
System.out.println("Creating table Jobs");
try {
Statement stmt = connection.createStatement();
@ -385,8 +360,7 @@ public class DBController
}
}
public int getLatestJobNumber_Job()
{
public int getLatestJobNumber_Job() {
try {
Statement stmt = connection.createStatement();
ResultSet rs = stmt.executeQuery(
@ -400,8 +374,7 @@ public class DBController
return 0;
}
public String getTime_Job(int pID)
{
public String getTime_Job(int pID) {
try {
Statement stmt = connection.createStatement();
ResultSet rs = stmt.executeQuery(
@ -414,8 +387,7 @@ public class DBController
}
}
public String getQuantity_Job(int pID)
{
public String getQuantity_Job(int pID) {
try {
Statement stmt = connection.createStatement();
ResultSet rs = stmt.executeQuery(
@ -429,8 +401,7 @@ public class DBController
}
}
public String getName_Job(int pID)
{
public String getName_Job(int pID) {
try {
Statement stmt = connection.createStatement();
ResultSet rs = stmt.executeQuery(
@ -444,8 +415,7 @@ public class DBController
}
}
public String getValue_Job(int pID)
{
public String getValue_Job(int pID) {
try {
Statement stmt = connection.createStatement();
ResultSet rs = stmt.executeQuery(
@ -459,8 +429,7 @@ public class DBController
}
}
public String getCategory_Job(int pID)
{
public String getCategory_Job(int pID) {
try {
Statement stmt = connection.createStatement();
ResultSet rs = stmt.executeQuery(
@ -474,8 +443,7 @@ public class DBController
}
}
public String getState_Job(int pID)
{
public String getState_Job(int pID) {
try {
Statement stmt = connection.createStatement();
ResultSet rs = stmt.executeQuery(
@ -488,8 +456,7 @@ public class DBController
}
}
public String getJobValue_Job(int pID)
{
public String getJobValue_Job(int pID) {
try {
Statement stmt = connection.createStatement();
ResultSet rs = stmt.executeQuery(
@ -502,8 +469,7 @@ public class DBController
}
}
public String getAllJobValue_Job()
{
public String getAllJobValue_Job() {
try {
Statement stmt = connection.createStatement();
ResultSet rs = stmt.executeQuery(
@ -517,8 +483,7 @@ public class DBController
}
}
public String getJobCount()
{
public String getJobCount() {
try {
Statement stmt = connection.createStatement();
ResultSet rs = stmt.executeQuery(
@ -532,8 +497,7 @@ public class DBController
}
}
public void setStatus_Jobs(int pID, String pStatus)
{
public void setStatus_Jobs(int pID, String pStatus) {
try {
Statement stmt = connection.createStatement();
stmt.executeUpdate("UPDATE jobs SET state = '" + pStatus
@ -544,8 +508,7 @@ public class DBController
}
}
public ArrayList<tableDataJob> loadTableJobs_Job()
{
public ArrayList<tableDataJob> loadTableJobs_Job() {
ArrayList<tableDataJob> tmp = new ArrayList<tableDataJob>();
try {
@ -576,9 +539,8 @@ public class DBController
public void fillJobs_Jobs(int pID, String pTime, String pPositionen_quantity,
String pPositionen_name, String pPositionen_value,
String pPositionen_cat, String pState, String pJobvalue)
{
System.out.println("Create new Job Entry");
String pPositionen_cat, String pState, String pJobvalue) {
System.out.println("Creating new job entry");
try {
PreparedStatement ps = connection.prepareStatement(
"INSERT INTO jobs VALUES (?, ?, ?, ?, ?, ?, ?, ?);");

View File

@ -38,8 +38,7 @@ import com.jFxKasse.datatypes.tableDataCurrentOrder;
import com.jFxKasse.datatypes.tableDataJob;
import com.jFxKasse.datatypes.tableDataPositionen;
public class MainWindowController
{
public class MainWindowController {
@FXML
private AnchorPane mainAnchorpane;
@ -381,8 +380,7 @@ public class MainWindowController
new tableDataPositionen(0, "0", "0", "0", "0"));
@FXML
public void ueberbtnAction(ActionEvent event)
{ // opens the 'Über' dialog
public void ueberbtnAction(ActionEvent event) { // Opens the 'About' dialog
// creates a dialog
Dialog<Pair<String, String>> dialog = new Dialog<>();
@ -413,8 +411,7 @@ public class MainWindowController
}
@FXML
public void btnOpenFolderAction(ActionEvent event) throws IOException
{
public void btnOpenFolderAction(ActionEvent event) throws IOException {
if (System.getProperty("os.name").contains("Windows")) {
System.out.println("FCK Windows");
@ -427,15 +424,14 @@ public class MainWindowController
}
@FXML
public void btnCreateNewDatabaseAction(ActionEvent event) throws Exception
{
public void btnCreateNewDatabaseAction(ActionEvent event) throws Exception {
if (!(tftNewDBName.getText().equals(""))) {
xmlc.setDatabaseName(tftNewDBName.getText());
dbc.setDbname(xmlc.getDatabaseName());
dbc.connectDatabase(); // establish DB connection
dbc.connectDatabase(); // Establish DB connection
dbc.createTablePositionen(); // Create new table
dbc.erstelleTabelleJobs(); // Create new table
dbc.createTableCategory(); // Create new table
@ -446,12 +442,12 @@ public class MainWindowController
// TODO Auto-generated catch block
e.printStackTrace();
}
setDBLabel(); // Set new databese labels
blockUI(false); // unlock UI elements that need DB
fillTablePositionen(); // fill TreeTable 'Positionen'
setDBLabel(); // Set new database labels
blockUI(false); // Unlock UI elements that need DB
fillTablePositionen(); // Fill TreeTable 'Positions'
fillCategory();
fillPrinterSettings();
initUI(); // Starting the UI elements
initUI(); // Initialize the UI elements
getSelectedCat();
createNewJob();
@ -460,42 +456,39 @@ public class MainWindowController
}
@FXML
public void btnSaveEntryAction(ActionEvent event)
{
public void btnSaveEntryAction(ActionEvent event) {
dbc.setName_Positionen(idPositionen, tftNewPosition.getText());
dbc.setValue_Positionen(idPositionen, tftNewValue.getText());
dbc.setColor_Positionen(idPositionen, getColorCodes(selectedColorName));
dbc.setCat_Positionen(idPositionen, getSelectedCat());
fillTablePositionen(); // fill TreeTable 'Positionen'
fillTablePositionen(); // Fill TreeTable 'Positions'
loadGridButtons();
}
@FXML
public void btnClearEntryAction(ActionEvent event)
{
// set default values
public void btnClearEntryAction(ActionEvent event) {
// Set default values
dbc.setName_Positionen(idPositionen, "Noch frei");
dbc.setValue_Positionen(idPositionen, "0.00");
dbc.setColor_Positionen(idPositionen, "#FAF0E6");
dbc.setCat_Positionen(idPositionen, 6);
fillTablePositionen(); // fill TreeTable 'Positionen'
fillTablePositionen(); // Fill TreeTable 'Positions'
}
@FXML
public void btnCalcStatsAction(ActionEvent event)
{
public void btnCalcStatsAction(ActionEvent event) {
int allActiveJobs = Integer.valueOf(dbc.getJobCount());
if (dbc.getAllJobValue_Job() != null) {
// summed up values of all jobs that are active
// Summed up values of all active jobs
float allValue = Float.valueOf(dbc.getAllJobValue_Job());
// count of all jobs that are active
// Count of all active jobs
float avgJobValue = ((float) allValue / allActiveJobs);
@ -507,8 +500,7 @@ public class MainWindowController
}
@FXML
public void btnSavePrinterAction(ActionEvent event)
{
public void btnSavePrinterAction(ActionEvent event) {
System.out.println("btnSavePrinterAction");
xmlc.setPrintername(
@ -530,8 +522,7 @@ public class MainWindowController
}
@FXML
public void btnCancelJobAction(ActionEvent event)
{
public void btnCancelJobAction(ActionEvent event) {
dbc.setStatus_Jobs(selectedJobId + 1, "storniert");
fillTableJobs();
btnCancelJob.setDisable(true);
@ -539,8 +530,7 @@ public class MainWindowController
}
@FXML
public void btnLockAction(ActionEvent event)
{
public void btnLockAction(ActionEvent event) {
lockState = !lockState;
blockUI(lockState);
@ -552,8 +542,7 @@ public class MainWindowController
}
@FXML
public void btnSaveCatAction(ActionEvent event)
{
public void btnSaveCatAction(ActionEvent event) {
dbc.setName_Category(1, tftKat01.getText());
dbc.setName_Category(2, tftKat02.getText());
dbc.setName_Category(3, tftKat03.getText());
@ -566,8 +555,7 @@ public class MainWindowController
}
@FXML
public void btnDeleteSelectedPositionAction(ActionEvent event)
{
public void btnDeleteSelectedPositionAction(ActionEvent event) {
currentJob.deletePosName(currentOrderPosName);
rootCurrentJob.getChildren().remove(0,
rootCurrentJob.getChildren().size());
@ -592,8 +580,7 @@ public class MainWindowController
}
@FXML
public void btnPrintBillAction(ActionEvent event)
{
public void btnPrintBillAction(ActionEvent event) {
btnPrintBill.setDisable(true);
tapPosEdit.setDisable(false);
btnDeleteSelectedPosition.setDisable(true);
@ -626,165 +613,138 @@ public class MainWindowController
}
@FXML
public void btnReprintJobAction(ActionEvent event)
{
public void btnReprintJobAction(ActionEvent event) {
System.out.println("reprint job");
pj.printJob((selectedJobId + 1), xmlc, dbc, pc);
}
@FXML
public void gridButton01Action(ActionEvent event)
{
public void gridButton01Action(ActionEvent event) {
handleGridButtons(1);
}
@FXML
public void gridButton02Action(ActionEvent event)
{
public void gridButton02Action(ActionEvent event) {
handleGridButtons(2);
}
@FXML
public void gridButton03Action(ActionEvent event)
{
public void gridButton03Action(ActionEvent event) {
handleGridButtons(3);
}
@FXML
public void gridButton04Action(ActionEvent event)
{
public void gridButton04Action(ActionEvent event) {
handleGridButtons(4);
}
@FXML
public void gridButton05Action(ActionEvent event)
{
public void gridButton05Action(ActionEvent event) {
handleGridButtons(5);
}
@FXML
public void gridButton06Action(ActionEvent event)
{
public void gridButton06Action(ActionEvent event) {
handleGridButtons(6);
}
@FXML
public void gridButton07Action(ActionEvent event)
{
public void gridButton07Action(ActionEvent event) {
handleGridButtons(7);
}
@FXML
public void gridButton08Action(ActionEvent event)
{
public void gridButton08Action(ActionEvent event) {
handleGridButtons(8);
}
@FXML
public void gridButton09Action(ActionEvent event)
{
public void gridButton09Action(ActionEvent event) {
handleGridButtons(9);
}
@FXML
public void gridButton10Action(ActionEvent event)
{
public void gridButton10Action(ActionEvent event) {
handleGridButtons(10);
}
@FXML
public void gridButton11Action(ActionEvent event)
{
public void gridButton11Action(ActionEvent event) {
handleGridButtons(11);
}
@FXML
public void gridButton12Action(ActionEvent event)
{
public void gridButton12Action(ActionEvent event) {
handleGridButtons(12);
}
@FXML
public void gridButton13Action(ActionEvent event)
{
public void gridButton13Action(ActionEvent event) {
handleGridButtons(13);
}
@FXML
public void gridButton14Action(ActionEvent event)
{
public void gridButton14Action(ActionEvent event) {
handleGridButtons(14);
}
@FXML
public void gridButton15Action(ActionEvent event)
{
public void gridButton15Action(ActionEvent event) {
handleGridButtons(15);
}
@FXML
public void gridButton16Action(ActionEvent event)
{
public void gridButton16Action(ActionEvent event) {
handleGridButtons(16);
}
@FXML
public void gridButton17Action(ActionEvent event)
{
public void gridButton17Action(ActionEvent event) {
handleGridButtons(17);
}
@FXML
public void gridButton18Action(ActionEvent event)
{
public void gridButton18Action(ActionEvent event) {
handleGridButtons(18);
}
@FXML
public void gridButton19Action(ActionEvent event)
{
public void gridButton19Action(ActionEvent event) {
handleGridButtons(19);
}
@FXML
public void gridButton20Action(ActionEvent event)
{
public void gridButton20Action(ActionEvent event) {
handleGridButtons(20);
}
@FXML
public void gridButton21Action(ActionEvent event)
{
public void gridButton21Action(ActionEvent event) {
handleGridButtons(21);
}
@FXML
public void gridButton22Action(ActionEvent event)
{
public void gridButton22Action(ActionEvent event) {
handleGridButtons(22);
}
@FXML
public void gridButton23Action(ActionEvent event)
{
public void gridButton23Action(ActionEvent event) {
handleGridButtons(23);
}
@FXML
public void gridButton24Action(ActionEvent event)
{
public void gridButton24Action(ActionEvent event) {
handleGridButtons(24);
}
@FXML
public void gridButton25Action(ActionEvent event)
{
public void gridButton25Action(ActionEvent event) {
handleGridButtons(25);
}
@FXML
public void fillTablePositionen()
{ // loads the table in the TreeTableView
public void fillTablePositionen() { // Load positions into the TreeTableView
rootPositionen.getChildren().remove(0,
rootPositionen.getChildren().size());
@ -808,8 +768,7 @@ public class MainWindowController
}
}
public void initUI()
{
public void initUI() {
System.out.println("initUI");
for (int i = 0; i < 25; i++) {
getButtonByID(i).setVisible(false);
@ -835,8 +794,7 @@ public class MainWindowController
}
public int getSelectedCat()
{
public int getSelectedCat() {
ObservableList<String> cats = FXCollections.observableArrayList();
for (int i = 1; i < 5; i++) {
@ -853,8 +811,7 @@ public class MainWindowController
.addListener(new ChangeListener<Number>() {
@Override
public void changed(ObservableValue<? extends Number> ov,
Number value, Number new_value)
{
Number value, Number new_value) {
try {
selectedCatName = catChoise.getItems().get((int) new_value)
.toString();
@ -871,8 +828,7 @@ public class MainWindowController
return 5;
}
public void fillPrinterSettings()
{
public void fillPrinterSettings() {
System.out.println("Fill printer Settings");
ObservableList<String> printers = FXCollections
@ -884,16 +840,16 @@ public class MainWindowController
int index = 0;
for (String currentPrinter : printers) {
if (xmlc.getPrintername().equals(currentPrinter)) {
// saved printer is available
// Saved printer is available
printerFound = true;
// select saved printer in UI
// Select saved printer in UI
printerChoise.getSelectionModel().select(index);
}
index++;
}
if (!printerFound) {
// saved printer is not available
// Saved printer is not available
printerChoise.getSelectionModel().select(printers.size() - 1);
System.out.println("no printer found");
}
@ -924,8 +880,7 @@ public class MainWindowController
}
public void fillCategory()
{
public void fillCategory() {
tftKat01.setText(dbc.getName_Category(1));
tftKat02.setText(dbc.getName_Category(2));
tftKat03.setText(dbc.getName_Category(3));
@ -933,8 +888,7 @@ public class MainWindowController
tftKat05.setText(dbc.getName_Category(5));
}
private void initPositionen()
{
private void initPositionen() {
entryTreeTable.setRoot(rootPositionen);
entryTreeTable.setShowRoot(false);
entryTreeTable.setEditable(false);
@ -954,8 +908,7 @@ public class MainWindowController
.addListener(new ChangeListener<Number>() {
@Override
public void changed(ObservableValue<? extends Number> ov,
Number value, Number new_value)
{
Number value, Number new_value) {
selectedColorName = colorChoise.getItems()
.get((int) new_value).toString();
}
@ -980,10 +933,9 @@ public class MainWindowController
.addListener(new ChangeListener<Object>() {
@Override
public void changed(ObservableValue<?> observable, Object oldVal,
Object newVal)
{
Object newVal) {
int selected = entryTreeTable.getSelectionModel()
.getSelectedIndex(); // get selected item
.getSelectedIndex(); // Get selected item
try {
idPositionen = columnPosnumber.getCellData(selected);
@ -1006,8 +958,7 @@ public class MainWindowController
tftNewValue.textProperty().addListener(new ChangeListener<String>() {
@Override
public void changed(ObservableValue<? extends String> observable,
String oldValue, String newValue)
{
String oldValue, String newValue) {
if (!newValue.matches("\\d{0,4}([\\.]\\d{0,2})?")) {
tftNewValue.setText(oldValue);
}
@ -1031,16 +982,14 @@ public class MainWindowController
}
public void setMain(Main main, DBController dbc, XMLController xmlc,
PrinterController pc)
{
PrinterController pc) {
this.main = main;
this.dbc = dbc;
this.xmlc = xmlc;
this.pc = pc;
}
public void setDBLabel() throws Exception
{
public void setDBLabel() throws Exception {
if (xmlc.loadSettings() == true) {
labelDBStatus.setText(
"Geladene Datenbank: " + xmlc.getDatabaseName() + ".db");
@ -1059,94 +1008,90 @@ public class MainWindowController
}
}
private String getColorCodes(String pColorName)
{
private String getColorCodes(String pColorName) {
switch (pColorName) {
case "Rot":
return "#ad0000";
case "Orange":
return "#FF4500";
case "Braun":
return "#8B4513";
case "Weiß":
return "#FAF0E6";
case "Gelb":
return "#FFD700";
case "Gr\u00fcn":
return "#556B2F";
case "Blau":
return "#00BFFF";
case "Indigo":
return "#4B0082";
case "Rot":
return "#ad0000";
case "Orange":
return "#FF4500";
case "Braun":
return "#8B4513";
case "Weiß":
return "#FAF0E6";
case "Gelb":
return "#FFD700";
case "Gr\u00fcn":
return "#556B2F";
case "Blau":
return "#00BFFF";
case "Indigo":
return "#4B0082";
default:
return "#FFFFFF";
default:
return "#FFFFFF";
}
}
private String getColorNames(String pColorCode)
{
private String getColorNames(String pColorCode) {
switch (pColorCode) {
case "#ad0000":
return "Rot";
case "#FF4500":
return "Orange";
case "#8B4513":
return "Braun";
case "#FAF0E6":
return "Weiß";
case "#FFD700":
return "Gelb";
case "#556B2F":
return "Gr\u00fcn";
case "#00BFFF":
return "Blau";
case "#4B0082":
return "Indigo";
case "#ad0000":
return "Rot";
case "#FF4500":
return "Orange";
case "#8B4513":
return "Braun";
case "#FAF0E6":
return "Weiß";
case "#FFD700":
return "Gelb";
case "#556B2F":
return "Gr\u00fcn";
case "#00BFFF":
return "Blau";
case "#4B0082":
return "Indigo";
default:
return "Farbe";
default:
return "Farbe";
}
}
private Integer getColorID(String pColorCode)
{
private Integer getColorID(String pColorCode) {
switch (pColorCode) {
case "#ad0000":
return 0;
case "#FF4500":
return 1;
case "#8B4513":
return 2;
case "#FAF0E6":
return 3;
case "#FFD700":
return 4;
case "#556B2F":
return 5;
case "#00BFFF":
return 6;
case "#4B0082":
return 7;
case "#ad0000":
return 0;
case "#FF4500":
return 1;
case "#8B4513":
return 2;
case "#FAF0E6":
return 3;
case "#FFD700":
return 4;
case "#556B2F":
return 5;
case "#00BFFF":
return 6;
case "#4B0082":
return 7;
default:
return 0;
default:
return 0;
}
}
public void blockUI(boolean pState)
{
public void blockUI(boolean pState) {
btnCalcStats.setDisable(pState);
btnClearEntry.setDisable(pState);
if ((!isPrintBtnDisabled) && (!pState)) {
// print was not disabled and will be enabled again
// Print was not disabled and will be enabled again
btnPrintBill.setDisable(pState);
btnDeleteSelectedPosition.setDisable(pState);
}
if (pState) {
// disable allways
// Always disable
btnPrintBill.setDisable(pState);
btnDeleteSelectedPosition.setDisable(pState);
}
@ -1181,8 +1126,7 @@ public class MainWindowController
}
public void loadGridButtons()
{
public void loadGridButtons() {
for (int i = 0; i < 25; i++) {
getButtonByID(i).setText(dbc.getName_Positionen(i + 1));
getButtonByID(i).setFocusTraversable(false);
@ -1204,66 +1148,64 @@ public class MainWindowController
}
}
public Button getButtonByID(int pID)
{
public Button getButtonByID(int pID) {
switch (pID) {
case 0:
return gridButton01;
case 1:
return gridButton02;
case 2:
return gridButton03;
case 3:
return gridButton04;
case 4:
return gridButton05;
case 5:
return gridButton06;
case 6:
return gridButton07;
case 7:
return gridButton08;
case 8:
return gridButton09;
case 9:
return gridButton10;
case 10:
return gridButton11;
case 11:
return gridButton12;
case 12:
return gridButton13;
case 13:
return gridButton14;
case 14:
return gridButton15;
case 15:
return gridButton16;
case 16:
return gridButton17;
case 17:
return gridButton18;
case 18:
return gridButton19;
case 19:
return gridButton20;
case 20:
return gridButton21;
case 21:
return gridButton22;
case 22:
return gridButton23;
case 23:
return gridButton24;
case 24:
return gridButton25;
default:
return gridButton01;
case 0:
return gridButton01;
case 1:
return gridButton02;
case 2:
return gridButton03;
case 3:
return gridButton04;
case 4:
return gridButton05;
case 5:
return gridButton06;
case 6:
return gridButton07;
case 7:
return gridButton08;
case 8:
return gridButton09;
case 9:
return gridButton10;
case 10:
return gridButton11;
case 11:
return gridButton12;
case 12:
return gridButton13;
case 13:
return gridButton14;
case 14:
return gridButton15;
case 15:
return gridButton16;
case 16:
return gridButton17;
case 17:
return gridButton18;
case 18:
return gridButton19;
case 19:
return gridButton20;
case 20:
return gridButton21;
case 21:
return gridButton22;
case 22:
return gridButton23;
case 23:
return gridButton24;
case 24:
return gridButton25;
default:
return gridButton01;
}
}
private void handleGridButtons(int pID)
{
private void handleGridButtons(int pID) {
if (!getButtonByID(pID - 1).isVisible()) {
// Button is not visible, no action
@ -1292,8 +1234,7 @@ public class MainWindowController
}
private void initCurrentOrderTreeTableView()
{
private void initCurrentOrderTreeTableView() {
columnQuantity
.setStyle("-fx-alignment: CENTER; -fx-font: 17px Cantarell;");
columnPosition
@ -1313,13 +1254,12 @@ public class MainWindowController
.addListener(new ChangeListener<Object>() {
@Override
public void changed(ObservableValue<?> observable, Object oldVal,
Object newVal)
{
Object newVal) {
int selected = tableCurrentOrder.getSelectionModel()
.getSelectedIndex(); // get selected item
.getSelectedIndex(); // Get selected item
if (columnPosition.getCellData(selected) != null) {
currentOrderPosName = columnPosition.getCellData(selected); // Ausgewählte
currentOrderPosName = columnPosition.getCellData(selected); // Selected position
btnDeleteSelectedPosition.setDisable(false);
}
}
@ -1327,8 +1267,7 @@ public class MainWindowController
}
private void initJobTreeTableView()
{
private void initJobTreeTableView() {
columnJobNumber
.setStyle("-fx-alignment: CENTER; -fx-font: 17px Cantarell;");
@ -1365,10 +1304,9 @@ public class MainWindowController
.addListener(new ChangeListener<Object>() {
@Override
public void changed(ObservableValue<?> observable, Object oldVal,
Object newVal)
{
Object newVal) {
selectedJobId = jobsTreeTable.getSelectionModel()
.getSelectedIndex(); // get selected item
.getSelectedIndex(); // Get selected item
if (dbc.getState_Job(selectedJobId + 1).equals("storniert")) {
btnCancelJob.setDisable(true);
@ -1382,8 +1320,7 @@ public class MainWindowController
}
@FXML
public void fillTableJobs()
{ // loads the table in the TreeTableView
public void fillTableJobs() { // Load jobs into the TreeTableView
rootJobs.getChildren().remove(0, rootJobs.getChildren().size());
for (int i = 0; i < dbc.loadTableJobs_Job().size(); i++) {
@ -1415,15 +1352,13 @@ public class MainWindowController
}
public void createNewJob()
{
public void createNewJob() {
currentJob = new Job(dbc.getLatestJobNumber_Job() + 1);
labelJobCounter.setText("Auftragsnummer: "
+ String.valueOf(dbc.getLatestJobNumber_Job() + 1));
}
private static String createJobDescription(String pNames, String pQuantities)
{
private static String createJobDescription(String pNames, String pQuantities) {
String line = pQuantities;
int size = line.length() - line.replace(";", "").length() + 1;
@ -1441,15 +1376,13 @@ public class MainWindowController
return tmp;
}
private void setJobPrizeLabel(float pPrize)
{
private void setJobPrizeLabel(float pPrize) {
String str = String.format("%.02f", pPrize);
str.replace('.', ',');
labelAllPrize.setText(str + "");
}
private void setJobStatLabel(int pCounter, float pAvgValue, float pAllValue)
{
private void setJobStatLabel(int pCounter, float pAvgValue, float pAllValue) {
labelJobCount.setText("Anzahl Aufträge: " + pCounter);
String str = String.format("%.02f", pAvgValue);
@ -1468,19 +1401,16 @@ public class MainWindowController
+ timedate.getSystemDate());
}
public void updateTimeLabel()
{
public void updateTimeLabel() {
labelTime.setText("Uhrzeit: " + timedate.getSystemTime());
}
public void blockUnlock()
{
public void blockUnlock() {
btnLock.setDisable(true);
}
public int getActiveTab()
{
public int getActiveTab() {
if (tapNewJob.isSelected()) {
return 0;

View File

@ -1,5 +1,5 @@
/**
* some parts are from http://www.mets-blog.com/java-pos-thermal-printer-example/
* Some parts are from http://www.mets-blog.com/java-pos-thermal-printer-example/
*/
package com.jFxKasse.controller;
@ -21,26 +21,23 @@ import javax.print.SimpleDoc;
import javax.print.attribute.HashPrintRequestAttributeSet;
import javax.print.attribute.PrintRequestAttributeSet;
public class PrinterController implements Printable
{
// All available Printers on this system
public class PrinterController implements Printable {
// All available printers on this system
private PrintService[] printService;
// selected printer
// Selected printer
private PrintService selectedPrinter;
private DocFlavor flavor;
public PrinterController()
{
public PrinterController() {
flavor = DocFlavor.BYTE_ARRAY.AUTOSENSE;
}
/**
* @return A String array with all available printers
*/
public String[] getAvailablePrinters()
{
public String[] getAvailablePrinters() {
int printerSize = PrinterJob.lookupPrintServices().length;
String printers[] = new String[printerSize];
@ -51,10 +48,9 @@ public class PrinterController implements Printable
}
/**
* searchs connected printers on the system
* Searches for connected printers on the system
*/
public void searchPrinters()
{
public void searchPrinters() {
PrintRequestAttributeSet pras = new HashPrintRequestAttributeSet();
this.printService = PrintServiceLookup.lookupPrintServices(flavor, pras);
String printers[] = getAvailablePrinters();
@ -67,11 +63,11 @@ public class PrinterController implements Printable
}
/**
* Selects the printer via its name
* Selects the printer by its name
*
* @param printerName
*/
public void selectPrinter(String printerName)
{
public void selectPrinter(String printerName) {
String printers[] = getAvailablePrinters();
for (int i = 0; i < printers.length; i++) {
@ -84,11 +80,11 @@ public class PrinterController implements Printable
}
/**
* Prints a string to the selected printer
*
* @param input data as String
* @param text data as String
*/
public void printString(String text)
{
public void printString(String text) {
PrintService service = selectedPrinter;
DocPrintJob job = service.createPrintJob();
@ -103,8 +99,7 @@ public class PrinterController implements Printable
}
}
public int print(Graphics g, PageFormat pf, int page) throws PrinterException
{
public int print(Graphics g, PageFormat pf, int page) throws PrinterException {
if (page > 0) { /* We have only one page, and 'page' is zero-based */
return NO_SUCH_PAGE;
}
@ -119,8 +114,7 @@ public class PrinterController implements Printable
return PAGE_EXISTS;
}
public void printBytes(byte[] bytes)
{
public void printBytes(byte[] bytes) {
PrintService service = selectedPrinter;
DocPrintJob job = service.createPrintJob();
@ -132,8 +126,7 @@ public class PrinterController implements Printable
}
}
public void cutPaper()
{
public void cutPaper() {
byte[] cutP = new byte[] { 0x1d, 'V', 1 };
printBytes(cutP);
}

View File

@ -7,8 +7,7 @@ import java.io.InputStream;
import java.io.OutputStream;
import java.util.Properties;
public class XMLController
{
public class XMLController {
private String databaseName = null;
private String printername = null;
@ -29,14 +28,12 @@ public class XMLController
private Properties props = null;
public XMLController(String filePath)
{
public XMLController(String filePath) {
this.filePath = filePath + "config.xml";
props = new Properties();
}
public void saveSettings() throws Exception
{ // Save settings to config.xml
public void saveSettings() throws Exception { // Save settings to config.xml
System.out.println("Saving XML");
@ -71,8 +68,7 @@ public class XMLController
}
}
public boolean loadSettings() throws Exception
{ // reads the settings from config.xml
public boolean loadSettings() throws Exception { // Read settings from config.xml
InputStream inputStream;
try {
inputStream = new FileInputStream(filePath);
@ -121,8 +117,7 @@ public class XMLController
}
}
public void initXML()
{
public void initXML() {
this.printername = "Drucker auswählen";
this.offsetHeader = 1;
@ -136,83 +131,67 @@ public class XMLController
this.footer = "Vielen Dank für den Einkauf";
}
public String getDatabaseName()
{
public String getDatabaseName() {
return databaseName;
}
public void setDatabaseName(String databaseName)
{
public void setDatabaseName(String databaseName) {
this.databaseName = databaseName;
}
public String getPrintername()
{
public String getPrintername() {
return printername;
}
public void setPrintername(String printername)
{
public void setPrintername(String printername) {
this.printername = printername;
}
public int getLinebreak()
{
public int getLinebreak() {
return linebreak;
}
public void setLinebreak(int linebreak)
{
public void setLinebreak(int linebreak) {
this.linebreak = linebreak;
}
public int getOffsetHeader()
{
public int getOffsetHeader() {
return offsetHeader;
}
public void setOffsetHeader(int offsetHeader)
{
public void setOffsetHeader(int offsetHeader) {
this.offsetHeader = offsetHeader;
}
public int getOffsetFooter()
{
public int getOffsetFooter() {
return offsetFooter;
}
public void setOffsetFooter(int offsetFooter)
{
public void setOffsetFooter(int offsetFooter) {
this.offsetFooter = offsetFooter;
}
public String getHeader()
{
public String getHeader() {
return header;
}
public void setHeader(String header)
{
public void setHeader(String header) {
this.header = header;
}
public String getFooter()
{
public String getFooter() {
return footer;
}
public void setFooter(String footer)
{
public void setFooter(String footer) {
this.footer = footer;
}
public boolean getCategorySplitted()
{
public boolean getCategorySplitted() {
return categorySplitted;
}
public void setCategorySplitted(boolean categorySplitted)
{
public void setCategorySplitted(boolean categorySplitted) {
this.categorySplitted = categorySplitted;
}

View File

@ -3,8 +3,7 @@ package com.jFxKasse.datatypes;
import java.math.BigDecimal;
import java.util.ArrayList;
public class Job
{
public class Job {
private int jobnumber;
private float jobvalue;
@ -19,8 +18,7 @@ public class Job
private ArrayList<String> positionenCat;
public Job(int pJobnumber)
{
public Job(int pJobnumber) {
this.jobnumber = pJobnumber;
positionenQuantity = new ArrayList<Integer>();
positionenName = new ArrayList<String>();
@ -29,23 +27,19 @@ public class Job
}
public void setJobtime(String jobtime)
{
public void setJobtime(String jobtime) {
this.jobtime = jobtime;
}
public int getJobnumber()
{
public int getJobnumber() {
return this.jobnumber;
}
public String getJobtime()
{
public String getJobtime() {
return this.jobtime;
}
public float getJobValue()
{
public float getJobValue() {
calcJobValue();
@ -53,8 +47,7 @@ public class Job
}
public void addPosition(String pPositionenName, float pPositionenValue,
String pPositionenCat)
{
String pPositionenCat) {
for (int i = 0; i < positionenName.size(); i++) {
if (positionenName.get(i).equals(pPositionenName)) {
// Item is already in list, increase quantity
@ -71,8 +64,7 @@ public class Job
calcJobValue();
}
public void printJobOnConsole()
{
public void printJobOnConsole() {
System.out.println("---------------------------------------------");
System.out.println("JobNummer: " + jobnumber);
System.out.println("---------------------------------------------");
@ -88,8 +80,7 @@ public class Job
}
public ArrayList<tableDataCurrentOrder> getCurrentJobPositionen()
{
public ArrayList<tableDataCurrentOrder> getCurrentJobPositionen() {
ArrayList<tableDataCurrentOrder> jobitems = new ArrayList<tableDataCurrentOrder>();
for (int i = 0; i < positionenName.size(); i++) {
@ -102,20 +93,18 @@ public class Job
return jobitems;
}
private void calcJobValue()
{
private void calcJobValue() {
jobvalue = 0;
for (int i = 0; i < positionenValue.size(); i++) {
jobvalue = jobvalue
+ (positionenQuantity.get(i) * positionenValue.get(i));
}
//Round to two decimals
jobvalue = BigDecimal.valueOf(jobvalue).setScale(2, BigDecimal.ROUND_HALF_UP).floatValue();
// Round to two decimal places
jobvalue = BigDecimal.valueOf(jobvalue).setScale(2, BigDecimal.ROUND_HALF_UP).floatValue();
}
public String createPosQuantityDBString()
{
public String createPosQuantityDBString() {
String tmp = String.valueOf(positionenQuantity.get(0));
for (int i = 1; i < positionenName.size(); i++) {
@ -124,8 +113,7 @@ public class Job
return tmp;
}
public String createPosNameDBString()
{
public String createPosNameDBString() {
String tmp = positionenName.get(0);
for (int i = 1; i < positionenName.size(); i++) {
@ -134,8 +122,7 @@ public class Job
return tmp;
}
public String createPosValueDBString()
{
public String createPosValueDBString() {
String tmp = String.valueOf(positionenValue.get(0));
for (int i = 1; i < positionenName.size(); i++) {
@ -144,8 +131,7 @@ public class Job
return tmp;
}
public String createPosCatDBString()
{
public String createPosCatDBString() {
String tmp = positionenCat.get(0);
for (int i = 1; i < positionenName.size(); i++) {
@ -154,8 +140,7 @@ public class Job
return tmp;
}
public void deletePosName(String pPosName)
{
public void deletePosName(String pPosName) {
for (int i = 0; i < positionenName.size(); i++) {
@ -178,8 +163,7 @@ public class Job
}
public boolean existsPosName(String pPosName)
{
public boolean existsPosName(String pPosName) {
for (int i = 0; i < positionenName.size(); i++) {
if (positionenName.get(i).equals(pPosName)) {
return true;

View File

@ -1,7 +1,6 @@
package com.jFxKasse.datatypes;
public abstract class PrintData
{
public abstract class PrintData {
protected int headerSpace;
@ -30,7 +29,8 @@ public abstract class PrintData
protected String jobValue;
/**
* Constructor with all data that is not in the DB
* Constructor with all data that is not stored in the DB
*
* @param lineBreak
* @param headerSpace
* @param footerSpace
@ -39,8 +39,7 @@ public abstract class PrintData
* @param footer
*/
public PrintData(int lineBreak, int headerSpace, int footerSpace,
String timeAndDatePrint, String header, String footer)
{
String timeAndDatePrint, String header, String footer) {
this.lineBreak = lineBreak;
this.headerSpace = headerSpace;
this.footerSpace = footerSpace;
@ -50,7 +49,8 @@ public abstract class PrintData
}
/**
* set all Data that is in the DB
* Set all data that is stored in the DB
*
* @param jobID
* @param timeAndDateOrder
* @param positionenQuantity
@ -61,8 +61,7 @@ public abstract class PrintData
*/
public void setData(String jobID, String timeAndDateOrder,
String positionsQuantity, String positionsName,
String positionsValue, String positionsCategory, String jobValue)
{
String positionsValue, String positionsCategory, String jobValue) {
this.jobID = jobID;
this.timeAndDateOrder = timeAndDateOrder;
this.positionsQuantity = positionsQuantity;
@ -73,25 +72,25 @@ public abstract class PrintData
}
/**
* Breaks a string with newlines after the max line length
*
* @param data String
* @return same String splitted with \n after the max. line lenght
* @return the same String split with \n after max line length
*/
protected String breakLines(String data)
{
protected String breakLines(String data) {
boolean next = false;
int count = lineBreak;
if (data.length() > lineBreak) {
// Needs to be splitted
// Needs to be split
next = true;
} else {
// No need to be splitted
// No need to split
return data;
}
// first part
// First part
String tmp = data.substring(0, lineBreak);
while (next) {
@ -100,20 +99,20 @@ public abstract class PrintData
tmp = tmp + "\n" + data.substring(count, lineBreak + count);
count = count + lineBreak;
} catch (Exception e) {
// data string not long enough
// Data string not long enough
next = false;
}
}
// add the last part
// Add the last part
return tmp + "\n" + data.substring(count);
}
/**
* prints a line of '--------'
* @return
* Prints a line of dashes '--------'
*
* @return separator line
*/
protected String getSeparator()
{
protected String getSeparator() {
String tmp = "-";
for (int i = 1; i < lineBreak; i++) {
@ -123,12 +122,12 @@ public abstract class PrintData
}
/**
* sets a String into the center
* Centers a string within the line width
*
* @param data
* @return the centered String
* @return the centered string
*/
protected String setCenter(String data)
{
protected String setCenter(String data) {
int dataLenght = data.length();
int prefix = ((lineBreak - dataLenght) / 2);
String tmp = " ";
@ -142,13 +141,13 @@ public abstract class PrintData
}
/**
* sets a String right-justified after an prefix
* Right-justifies a string after a prefix
*
* @param prefix
* @param data
* @return the right-justified String
* @return the right-justified string
*/
protected String setRight(String prefix, String data)
{
protected String setRight(String prefix, String data) {
int prefixLenght = prefix.length();
@ -173,7 +172,7 @@ public abstract class PrintData
}
/**
* How the print String or Strings are made
* Defines how the print string(s) are generated
*/
abstract protected void generatePrintString();

View File

@ -1,12 +1,12 @@
package com.jFxKasse.datatypes;
public class PrintDataSimple extends PrintData
{
public class PrintDataSimple extends PrintData {
private String printString;
/**
* Constructor with all data that is not in the DB
* Constructor with all data that is not stored in the DB
*
* @param lineBreak
* @param headerSpace
* @param footerSpace
@ -15,25 +15,23 @@ public class PrintDataSimple extends PrintData
* @param footer
*/
public PrintDataSimple(int lineBreak, int headerSpace, int footerSpace,
String timeAndDatePrint, String header, String footer)
{
String timeAndDatePrint, String header, String footer) {
super(lineBreak, headerSpace, footerSpace, timeAndDatePrint, header,
footer);
}
/**
* Generates the String
* @return the final Print String
* Generates the print string
*
* @return the final print string
*/
public String getPrintString()
{
public String getPrintString() {
generatePrintString();
return this.printString;
}
@Override
protected void generatePrintString()
{
protected void generatePrintString() {
/* Header */
String header = " ";
for (int i = 1; i < headerSpace; i++) {

View File

@ -2,8 +2,7 @@ package com.jFxKasse.datatypes;
import java.util.ArrayList;
public class PrintDataSplitted extends PrintData
{
public class PrintDataSplitted extends PrintData {
private ArrayList<String> printString = new ArrayList<String>();
private ArrayList<Category> categories = new ArrayList<Category>();
@ -11,7 +10,8 @@ public class PrintDataSplitted extends PrintData
private int categoryCount = 0;
/**
* Constructor with all data that is not in the DB
* Constructor with all data that is not stored in the DB
*
* @param lineBreak
* @param headerSpace
* @param footerSpace
@ -20,25 +20,23 @@ public class PrintDataSplitted extends PrintData
* @param footer
*/
public PrintDataSplitted(int lineBreak, int headerSpace, int footerSpace,
String timeAndDatePrint, String header, String footer)
{
String timeAndDatePrint, String header, String footer) {
super(lineBreak, headerSpace, footerSpace, timeAndDatePrint, header,
footer);
}
/**
* Generates the String
* @return the final Array with the Print Strings
* Generates the print strings
*
* @return the final array of print strings
*/
public ArrayList<String> getPrintStrings()
{
public ArrayList<String> getPrintStrings() {
generatePrintString();
return printString;
}
@Override
protected void generatePrintString()
{
protected void generatePrintString() {
String firstBill;
@ -57,7 +55,7 @@ public class PrintDataSplitted extends PrintData
+ setRight("Druck: ", timeAndDatePrint) + "\n"
+ setRight("Bestellnummer: ", jobID);
/* Splitted Bills */
/* Splitted Bills by Category */
/* Price */
@ -81,9 +79,9 @@ public class PrintDataSplitted extends PrintData
printString.add(firstBill);
/* first bill ends here */
/* First bill ends here */
/* Categories in extra bills */
/* Category-specific extra bills */
String positions = null;
@ -101,7 +99,7 @@ public class PrintDataSplitted extends PrintData
positionCategory[i]);
}
// loops through all categories
// Loops through all categories
for (int i = 0; i < categories.size(); i++) {
String thisBill;
@ -147,8 +145,7 @@ public class PrintDataSplitted extends PrintData
}
private void insertToCategory(int quantity, String name, String value,
String category)
{
String category) {
boolean createNewCategorie = true;
for (int i = 0; i < categoryCount; i++) {
if (category.equals(categories.get(i).getCategoryName())) {
@ -158,7 +155,7 @@ public class PrintDataSplitted extends PrintData
}
if (createNewCategorie) {
// position has a new category
// Position has a new category
categories.add(new Category(category));
categories.get(categoryCount).addPosition(quantity, name, value, this);
categoryCount++;

View File

@ -5,8 +5,7 @@ import javafx.beans.property.SimpleIntegerProperty;
import javafx.beans.property.SimpleStringProperty;
import javafx.beans.property.StringProperty;
public class tableDataPositionen
{ // data-object with id, name, value, color
public class tableDataPositionen { // Data object with id, name, value, color
private final IntegerProperty id = new SimpleIntegerProperty();
@ -18,8 +17,8 @@ public class tableDataPositionen
private final StringProperty color = new SimpleStringProperty();
public tableDataPositionen(final int id, final String name, final String value, final String cat, final String color)
{
public tableDataPositionen(final int id, final String name, final String value, final String cat,
final String color) {
this.id.set(id);
this.name.set(name);
this.value.set(value);
@ -27,18 +26,15 @@ public class tableDataPositionen
this.color.set(color);
}
public IntegerProperty idProperty()
{
public IntegerProperty idProperty() {
return id;
}
public StringProperty nameProperty()
{
public StringProperty nameProperty() {
return name;
}
public StringProperty valueProperty()
{
public StringProperty valueProperty() {
return value;
}
@ -46,23 +42,19 @@ public class tableDataPositionen
return cat;
}
public StringProperty colorProperty()
{
public StringProperty colorProperty() {
return color;
}
public int getID()
{
public int getID() {
return idProperty().get();
}
public String getName()
{
public String getName() {
return nameProperty().get();
}
public String getValue()
{
public String getValue() {
return valueProperty().get();
}
@ -70,23 +62,19 @@ public class tableDataPositionen
return catProperty().get();
}
public String getColor()
{
public String getColor() {
return colorProperty().get();
}
public final void setID(int id)
{
public final void setID(int id) {
idProperty().set(id);
}
public final void setName(String name)
{
public final void setName(String name) {
nameProperty().set(name);
}
public final void setValue(String value)
{
public final void setValue(String value) {
valueProperty().set(value);
}
@ -94,8 +82,7 @@ public class tableDataPositionen
catProperty().set(cat);
}
public final void setColor(String color)
{
public final void setColor(String color) {
colorProperty().set(color);
}
}

View File

@ -1 +1 @@
/* JavaFX CSS - Leave this comment until you have at least create one rule which uses -fx-Property */
/* JavaFX CSS - Leave this comment until you have at least one rule which uses -fx-Property */