Compare commits

...

3 Commits
0.1.2 ... 0.1.4

10 changed files with 137 additions and 28 deletions

1
.gitignore vendored
View File

@ -1,2 +1,3 @@
.idea/ .idea/
out/ out/
conf.ini

View File

@ -0,0 +1,8 @@
# Tourplaner
# Config
* DB informationen müssen in das config.ini.sample unter [db] eingetragen werden
* Datei muss in config.ini umbenannt werden
* [langde] beinhaltet alle Deutschen Texte der Gui
* [start] beinhaltet den Title und infos die beim start verabeitet werden
* [hilfe] beinhaltet die Links zu den Hilfeseiten

View File

@ -1,9 +0,0 @@
[start]
message = Tour Planer App gestartet
[db]
dbname = tourplaner
url = 192.168.1.116
port = 5432
user = user
pw = user

39
conf.ini.sample Normal file
View File

@ -0,0 +1,39 @@
[start]
message = Tour Planer App gestartet
[db]
dbname = tourplaner
url =
port = 5432
user =
pw =
[hilfe]
gitrepo = https://git.dergeorg.at/dergeorg/tourplaner
doxygendoc = https://git.dergeorg.at/dergeorg/tourplaner
javadoc = https://git.dergeorg.at/dergeorg/tourplaner
[langde]
achtung = ACHTUNG
openbrowsererror = TourplanerController -> Browser:
browserexception = Browser Exception
browserexceptionmsg = Error beim öffnen des Browsers
suchfeldleer = Suchfeld ist leer!
suchtextzuerst = Bitte zuerst den Suchtext in das Suchfeld eingeben!
keinetourselected = Keine Tour ausgewählt!
tournametitle = Tourname
tournameheader = Bitte geben Sie den Namen der Tour an!
tournamemsg = Name:
namevergebenheader = Name bereits vergeben!
namevergebenmsg1 = Der Name '
namevergebenmsg2 = ' ist bereits vergeben, bitte verwenden Sie einen andern!
startpunkttitle = Tour Startpunkt
startpunktheader = Bitte geben Sie den Startpunkt der Tour an!
startpunktmsg = Startpunkt:
zielpunkttitle = Tour zielpunkt
zielpunktheader = Bitte geben Sie den Zielpunkt der Tour an!
zielpunktmsg = Zielpunkt:
deltournoselect = ViewModel -> DelTour
deltournoselectmsg = Bitte wählen Sie zuerst eine Tour aus, bevor Sie auf löschen klicken!
exceptionstackheader = Exception stacktrace:

View File

@ -6,7 +6,7 @@ import javafx.scene.Parent;
import javafx.scene.Scene; import javafx.scene.Scene;
import javafx.stage.Stage; import javafx.stage.Stage;
import tourplaner.business.LogHelper; import tourplaner.business.ConfigHelper;
import java.io.IOException; import java.io.IOException;
@ -20,7 +20,7 @@ public class Main extends Application {
@Override @Override
public void start(Stage primaryStage) throws IOException { public void start(Stage primaryStage) throws IOException {
Parent root = FXMLLoader.load(Main.class.getResource("tourplaner.fxml")); Parent root = FXMLLoader.load(Main.class.getResource("tourplaner.fxml"));
primaryStage.setTitle("DerGeorg Touren Planer"); primaryStage.setTitle(ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "start", "apptitle"));
primaryStage.setScene(new Scene(root, 600, 600)); primaryStage.setScene(new Scene(root, 600, 600));
primaryStage.show(); primaryStage.show();
} }

View File

@ -37,7 +37,7 @@ public class AlertHelper {
PrintWriter pw = new PrintWriter(sw); PrintWriter pw = new PrintWriter(sw);
ex.printStackTrace(pw); ex.printStackTrace(pw);
String exceptionText = sw.toString(); String exceptionText = sw.toString();
Label label = new Label("Exception stacktrace:"); Label label = new Label(ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "langde", "exceptionstackheader"));
TextArea textArea = new TextArea(exceptionText); TextArea textArea = new TextArea(exceptionText);
textArea.setEditable(false); textArea.setEditable(false);
textArea.setWrapText(true); textArea.setWrapText(true);

View File

@ -10,8 +10,8 @@ public class TourPlaner{
private Logger logger; private Logger logger;
public TourPlaner(){ public TourPlaner(){
String startText = ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "start", "message"); LogHelper.info(ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "start", "message"),
LogHelper.info(startText, "TourPlaner"); ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "start", "app"));
new DbConnect().init(); new DbConnect().init();
} }

View File

@ -64,9 +64,9 @@
<Menu mnemonicParsing="false" text="Optionen" /> <Menu mnemonicParsing="false" text="Optionen" />
<Menu mnemonicParsing="false" text="Hilfe"> <Menu mnemonicParsing="false" text="Hilfe">
<items> <items>
<MenuItem mnemonicParsing="false" text="Git Repo" /> <MenuItem mnemonicParsing="false" onAction="#gitWebBrowser" text="Git Repo" />
<MenuItem mnemonicParsing="false" text="JavaDoc" /> <MenuItem mnemonicParsing="false" onAction="#javaDocBrowser" text="JavaDoc" />
<MenuItem mnemonicParsing="false" text="Unspecified Action" /> <MenuItem mnemonicParsing="false" onAction="#doxygenDocBrowser" text="Doxygen Doc" />
</items> </items>
</Menu> </Menu>
</menus> </menus>
@ -79,7 +79,7 @@
<Label layoutX="14.0" layoutY="4.0" text="Tours" /> <Label layoutX="14.0" layoutY="4.0" text="Tours" />
<Button fx:id="tourDel" layoutX="89.0" mnemonicParsing="false" onAction="#delTour" text="-" /> <Button fx:id="tourDel" layoutX="89.0" mnemonicParsing="false" onAction="#delTour" text="-" />
</children></AnchorPane> </children></AnchorPane>
<TextField fx:id="sucheInput" text="Suche...." /> <TextField fx:id="sucheInput" promptText="Suche..." />
<Button fx:id="sucheButton" mnemonicParsing="false" onAction="#suche" text="Suchen" /> <Button fx:id="sucheButton" mnemonicParsing="false" onAction="#suche" text="Suchen" />
</children> </children>
<padding> <padding>

View File

@ -6,14 +6,22 @@ import javafx.fxml.FXML;
import javafx.fxml.Initializable; import javafx.fxml.Initializable;
import javafx.geometry.Orientation; import javafx.geometry.Orientation;
import javafx.scene.control.*; import javafx.scene.control.*;
import javafx.scene.control.Label;
import javafx.scene.control.TextField;
import javafx.scene.control.cell.PropertyValueFactory; import javafx.scene.control.cell.PropertyValueFactory;
import javafx.scene.input.MouseEvent; import javafx.scene.input.MouseEvent;
import javafx.scene.layout.Pane; import javafx.scene.layout.Pane;
import javafx.scene.web.WebView; import javafx.scene.web.WebView;
import tourplaner.business.AlertHelper; import tourplaner.business.AlertHelper;
import tourplaner.business.ConfigHelper;
import tourplaner.business.LogHelper;
import tourplaner.object.Tour; import tourplaner.object.Tour;
import tourplaner.viewmodels.ViewModel; import tourplaner.viewmodels.ViewModel;
import java.awt.*;
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
import java.net.URL; import java.net.URL;
import java.util.ResourceBundle; import java.util.ResourceBundle;
@ -27,6 +35,52 @@ public class TourplanerController implements Initializable {
public TableColumn<Tour, String> startCol, zielCol, dauerCol, streckeCol, nameCol; public TableColumn<Tour, String> startCol, zielCol, dauerCol, streckeCol, nameCol;
public TextField titleTextView, sucheInput; public TextField titleTextView, sucheInput;
/**
* Öffnet github im standart browser
*
*/
@FXML
private void gitWebBrowser(){
openBrowser(ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "hilfe", "gitrepo"), "Git");
}
/**
* Öffnet Java Doc im standart browser
*
*/
@FXML
private void javaDocBrowser(){
openBrowser(ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "hilfe", "javadoc"), "JavaDoc");
}
/**
* Öffnet Doxygen Doc im standart browser
*
*/
@FXML
private void doxygenDocBrowser(){
openBrowser(ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "hilfe", "doxygendoc"), "Doxygen");
}
/**
* Öffnet einen link im Standart Browser
* @param uriString
* @param appname
*/
private void openBrowser(String uriString, String appname){
Desktop desktop = java.awt.Desktop.getDesktop();
try {
URI oURL = new URI(
uriString);
desktop.browse(oURL);
} catch (URISyntaxException | IOException e) {
LogHelper.error(e.getMessage(), ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "langde", "openbrowsererror") + appname);
AlertHelper.exerror(ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "langde", "browserexception"),
ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "langde", "openbrowsererror") + appname,
ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "langde", "browserexceptionmsg"), e);
}
}
/** /**
* Wird gestartet wenn eine Tour in der Tour listView ausgewählt wird * Wird gestartet wenn eine Tour in der Tour listView ausgewählt wird
* @param mouseEvent Triggered Event * @param mouseEvent Triggered Event
@ -82,7 +136,9 @@ public class TourplanerController implements Initializable {
private void suche(){ private void suche(){
String sucheInput = this.sucheInput.getText(); String sucheInput = this.sucheInput.getText();
if(sucheInput.isEmpty()){ if(sucheInput.isEmpty()){
AlertHelper.warn("ACHTUNG", "Suchfeld ist leer!", "Bitte zuerst den Suchtext in das Suchfeld eingeben!"); AlertHelper.warn(ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "langde", "achtung"),
ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "langde", "suchfeldleer"),
ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "langde", "suchtextzuerst"));
}else { }else {
this.viewModel.suche(sucheInput); this.viewModel.suche(sucheInput);
} }
@ -98,7 +154,7 @@ public class TourplanerController implements Initializable {
TourListView.getSelectionModel().setSelectionMode(SelectionMode.SINGLE); TourListView.getSelectionModel().setSelectionMode(SelectionMode.SINGLE);
TourListView.setOrientation(Orientation.VERTICAL); TourListView.setOrientation(Orientation.VERTICAL);
TourListView.setItems(this.viewModel.getTourNamen()); TourListView.setItems(this.viewModel.getTourNamen());
this.beschreibungTableView.setPlaceholder(new Label("Keine Tour ausgewählt!")); this.beschreibungTableView.setPlaceholder(new Label( ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "langde", "keinetourselected")));
this.titleTextView.setText("Keine Tour ausgewählt!"); this.titleTextView.setText( ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "langde", "keinetourselected"));
} }
} }

View File

@ -5,6 +5,7 @@ import javafx.collections.ObservableList;
import javafx.scene.control.Alert; import javafx.scene.control.Alert;
import javafx.scene.control.TextInputDialog; import javafx.scene.control.TextInputDialog;
import tourplaner.business.AlertHelper; import tourplaner.business.AlertHelper;
import tourplaner.business.ConfigHelper;
import tourplaner.business.LogHelper; import tourplaner.business.LogHelper;
import tourplaner.business.TourPlaner; import tourplaner.business.TourPlaner;
import tourplaner.object.Tour; import tourplaner.object.Tour;
@ -23,17 +24,27 @@ public class ViewModel {
*/ */
public void addTour(){ public void addTour(){
while(this.neueTourName == null) { while(this.neueTourName == null) {
this.neueTourName = AlertHelper.inputText("Tourname", "Bitte geben Sie den Namen der Tour an!", "Name:"); this.neueTourName = AlertHelper.inputText(ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "langde", "tournametitle"),
ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "langde", "tournameheader"),
ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "langde", "tournamemsg"));
if (getTour(this.neueTourName) != null) { if (getTour(this.neueTourName) != null) {
AlertHelper.warn("ACHTUNG", "Name bereits vergeben!", "Der Name '"+ this.neueTourName +"' ist bereits vergeben, bitte verwenden Sie einen andern!"); AlertHelper.warn(ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "langde", "achtung"),
ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "langde", "namevergebenheader"),
ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "langde", "namevergebenmsg1")
+ this.neueTourName +
ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "langde", "namevergebenmsg2"));
this.neueTourName = null; this.neueTourName = null;
} }
} }
while(this.neueTourStart == null){ while(this.neueTourStart == null){
this.neueTourStart = AlertHelper.inputText("Tour Startpunkt", "Bitte geben Sie den Startpunkt der Tour an!", "Startpunkt: "); this.neueTourStart = AlertHelper.inputText(ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "langde", "startpunkttitle"),
ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "langde", "startpunktheader"),
ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "langde", "startpunktmsg"));
} }
while(this.neueTourZiel == null){ while(this.neueTourZiel == null){
this.neueTourZiel = AlertHelper.inputText("Tour zielpunkt", "Bitte geben Sie den Zielpunkt der Tour an!", "Zielpunkt: "); this.neueTourZiel = AlertHelper.inputText(ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "langde", "zielpunkttitle"),
ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "langde", "zielpunktheader"),
ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "langde", "zielpunktmsg"));
} }
if (getTour(this.neueTourName) == null) { if (getTour(this.neueTourName) == null) {
tourData.add(new Tour(this.neueTourName, "TBD", "TBD", 0, this.neueTourStart, this.neueTourZiel)); tourData.add(new Tour(this.neueTourName, "TBD", "TBD", 0, this.neueTourStart, this.neueTourZiel));
@ -110,8 +121,11 @@ public class ViewModel {
tourData.removeIf(s -> s.getName().equals(tourname)); tourData.removeIf(s -> s.getName().equals(tourname));
tourNamen.removeIf(s -> s.equals(tourname)); tourNamen.removeIf(s -> s.equals(tourname));
}catch (NullPointerException e){ }catch (NullPointerException e){
LogHelper.error("Keine Tour ausgewählt!", "ViewModel -> DelTour"); LogHelper.error(ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "langde", "keinetourselected"),
AlertHelper.warn("ACHTUNG", "Keine Tour ausgewählt!", "Bitte wählen Sie zuerst eine Tour aus, bevor Sie auf löschen klicken!"); ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "langde", "deltournoselect"));
AlertHelper.warn(ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "langde", "achtung"),
ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "langde", "keinetourselected"),
ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "langde", "deltournoselectmsg"));
} }
} }