Compare commits

...

6 Commits
0.0.6 ... 0.1.2

Author SHA1 Message Date
29476f49e7 Add Tour -> unique Name + no empty imput
AlertHelper -> warn, info, error, exception
2021-03-17 17:13:28 +01:00
df1cef295b Beenden Knopf 2021-03-17 15:30:20 +01:00
a7479726ac Del Tour 2021-03-17 15:20:31 +01:00
33aaaebe89 Tour Listview onclick + Tour Beschreibung Daten Laden 2021-03-17 14:55:56 +01:00
18aa9ffce6 Erster Button klickbar v2 2021-03-17 13:49:25 +01:00
71802dc7d6 Erster Button klickbar 2021-03-16 21:53:00 +01:00
36 changed files with 546 additions and 180 deletions

2
.gitignore vendored Normal file
View File

@ -0,0 +1,2 @@
.idea/
out/

View File

@ -5,14 +5,14 @@
<simplesect> <simplesect>
<title>Classes </title> <title>Classes </title>
<itemizedlist> <itemizedlist>
<listitem><para>class <link linkend="_classtourplaner_1_1model_1_1_tour">tourplaner.model.Tour</link></para> <listitem><para>class <link linkend="_classtourplaner_1_1model_1_1_tour">tourplaner.object.Tour</link></para>
</listitem> </listitem>
</itemizedlist> </itemizedlist>
</simplesect> </simplesect>
<simplesect> <simplesect>
<title>Packages </title> <title>Packages </title>
<itemizedlist> <itemizedlist>
<listitem><para>package <link linkend="_namespacetourplaner_1_1model">tourplaner.model</link></para> <listitem><para>package <link linkend="_namespacetourplaner_1_1model">tourplaner.object</link></para>
</listitem> </listitem>
</itemizedlist> </itemizedlist>
</simplesect> </simplesect>

View File

@ -1,4 +1,4 @@
<?xml version='1.0' encoding='UTF-8' standalone='no'?> <?xml version='1.0' encoding='UTF-8' standalone='no'?>
<section xmlns="http://docbook.org/ns/docbook" version="5.0" xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="_annotated" xml:lang="en-US"> <section xmlns="http://docbook.org/ns/docbook" version="5.0" xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="_annotated" xml:lang="en-US">
<title>Class List</title> <title>Class List</title>
Here are the classes, structs, unions and interfaces with brief descriptions:<link linkend="_classtourplaner_1_1data_1_1_db_connect">tourplaner.data.DbConnect</link><link linkend="_classtourplaner_1_1business_1_1_log_helper">tourplaner.business.LogHelper</link><link linkend="_classtourplaner_1_1_main">tourplaner.Main</link><link linkend="_classtourplaner_1_1ui_1_1_presenter_main">tourplaner.ui.PresenterMain</link><link linkend="_classtourplaner_1_1model_1_1_tour">tourplaner.model.Tour</link><link linkend="_classtourplaner_1_1business_1_1_tour_planer">tourplaner.business.TourPlaner</link></section> Here are the classes, structs, unions and interfaces with brief descriptions:<link linkend="_classtourplaner_1_1data_1_1_db_connect">tourplaner.data.DbConnect</link><link linkend="_classtourplaner_1_1business_1_1_log_helper">tourplaner.business.LogHelper</link><link linkend="_classtourplaner_1_1_main">tourplaner.Main</link><link linkend="_classtourplaner_1_1ui_1_1_presenter_main">tourplaner.ui.PresenterMain</link><link linkend="_classtourplaner_1_1model_1_1_tour">tourplaner.object.Tour</link><link linkend="_classtourplaner_1_1business_1_1_tour_planer">tourplaner.business.TourPlaner</link></section>

View File

@ -1,7 +1,7 @@
<?xml version='1.0' encoding='UTF-8' standalone='no'?> <?xml version='1.0' encoding='UTF-8' standalone='no'?>
<section xmlns="http://docbook.org/ns/docbook" version="5.0" xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="_classtourplaner_1_1model_1_1_tour" xml:lang="en-US"> <section xmlns="http://docbook.org/ns/docbook" version="5.0" xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="_classtourplaner_1_1model_1_1_tour" xml:lang="en-US">
<title>tourplaner.model.Tour Class Reference</title> <title>tourplaner.object.Tour Class Reference</title>
<indexterm><primary>tourplaner.model.Tour</primary></indexterm> <indexterm><primary>tourplaner.object.Tour</primary></indexterm>
<section> <section>
<title>Detailed Description</title> <title>Detailed Description</title>

View File

@ -1,7 +1,7 @@
<?xml version='1.0' encoding='UTF-8' standalone='no'?> <?xml version='1.0' encoding='UTF-8' standalone='no'?>
<section xmlns="http://docbook.org/ns/docbook" version="5.0" xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="_namespacetourplaner_1_1model" xml:lang="en-US"> <section xmlns="http://docbook.org/ns/docbook" version="5.0" xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="_namespacetourplaner_1_1model" xml:lang="en-US">
<title>Package tourplaner.model</title> <title>Package tourplaner.object</title>
<indexterm><primary>tourplaner.model</primary></indexterm> <indexterm><primary>tourplaner.object</primary></indexterm>
<simplesect> <simplesect>
<title>Classes </title> <title>Classes </title>
<itemizedlist> <itemizedlist>

View File

@ -93,12 +93,12 @@ $(document).ready(function(){initNavTree('_tour_8java.html',''); initResizable()
<table class="memberdecls"> <table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a> <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
Classes</h2></td></tr> Classes</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtourplaner_1_1model_1_1_tour.html">tourplaner.model.Tour</a></td></tr> <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtourplaner_1_1model_1_1_tour.html">tourplaner.object.Tour</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr> <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls"> </table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a> <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a>
Packages</h2></td></tr> Packages</h2></td></tr>
<tr class="memitem:namespacetourplaner_1_1model"><td class="memItemLeft" align="right" valign="top">package &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetourplaner_1_1model.html">tourplaner.model</a></td></tr> <tr class="memitem:namespacetourplaner_1_1model"><td class="memItemLeft" align="right" valign="top">package &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetourplaner_1_1model.html">tourplaner.object</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr> <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table> </table>
</div><!-- contents --> </div><!-- contents -->

View File

@ -103,7 +103,7 @@ $(document).ready(function(){initNavTree('classes.html',''); initResizable(); })
<dd><a class="el" href="classtourplaner_1_1ui_1_1_presenter_main.html">PresenterMain</a> (<a class="el" href="namespacetourplaner_1_1ui.html">tourplaner.ui</a>)</dd></dl> <dd><a class="el" href="classtourplaner_1_1ui_1_1_presenter_main.html">PresenterMain</a> (<a class="el" href="namespacetourplaner_1_1ui.html">tourplaner.ui</a>)</dd></dl>
<dl class="classindex even"> <dl class="classindex even">
<dt class="alphachar"><a name="letter_T">T</a></dt> <dt class="alphachar"><a name="letter_T">T</a></dt>
<dd><a class="el" href="classtourplaner_1_1model_1_1_tour.html">Tour</a> (<a class="el" href="namespacetourplaner_1_1model.html">tourplaner.model</a>)</dd><dd><a class="el" href="classtourplaner_1_1business_1_1_tour_planer.html">TourPlaner</a> (<a class="el" href="namespacetourplaner_1_1business.html">tourplaner.business</a>)</dd></dl> <dd><a class="el" href="classtourplaner_1_1model_1_1_tour.html">Tour</a> (<a class="el" href="namespacetourplaner_1_1model.html">tourplaner.object</a>)</dd><dd><a class="el" href="classtourplaner_1_1business_1_1_tour_planer.html">TourPlaner</a> (<a class="el" href="namespacetourplaner_1_1business.html">tourplaner.business</a>)</dd></dl>
</div> </div>
</div><!-- contents --> </div><!-- contents -->
</div><!-- doc-content --> </div><!-- doc-content -->

View File

@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=9"/> <meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/> <meta name="generator" content="Doxygen 1.9.1"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/> <meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Tourplaner: tourplaner.model.Tour Class Reference</title> <title>Tourplaner: tourplaner.object.Tour Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/> <link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script> <script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script> <script type="text/javascript" src="dynsections.js"></script>
@ -84,7 +84,7 @@ $(document).ready(function(){initNavTree('classtourplaner_1_1model_1_1_tour.html
<div class="header"> <div class="header">
<div class="headertitle"> <div class="headertitle">
<div class="title">tourplaner.model.Tour Class Reference</div> </div> <div class="title">tourplaner.object.Tour Class Reference</div> </div>
</div><!--header--> </div><!--header-->
<div class="contents"> <div class="contents">
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>

View File

@ -92,7 +92,7 @@ $(document).ready(function(){initNavTree('hierarchy.html',''); initResizable();
<tr id="row_0_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtourplaner_1_1data_1_1_db_connect.html" target="_self">tourplaner.data.DbConnect</a></td><td class="desc"></td></tr> <tr id="row_0_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtourplaner_1_1data_1_1_db_connect.html" target="_self">tourplaner.data.DbConnect</a></td><td class="desc"></td></tr>
<tr id="row_1_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtourplaner_1_1business_1_1_log_helper.html" target="_self">tourplaner.business.LogHelper</a></td><td class="desc"></td></tr> <tr id="row_1_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtourplaner_1_1business_1_1_log_helper.html" target="_self">tourplaner.business.LogHelper</a></td><td class="desc"></td></tr>
<tr id="row_2_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtourplaner_1_1ui_1_1_presenter_main.html" target="_self">tourplaner.ui.PresenterMain</a></td><td class="desc"></td></tr> <tr id="row_2_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtourplaner_1_1ui_1_1_presenter_main.html" target="_self">tourplaner.ui.PresenterMain</a></td><td class="desc"></td></tr>
<tr id="row_3_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtourplaner_1_1model_1_1_tour.html" target="_self">tourplaner.model.Tour</a></td><td class="desc"></td></tr> <tr id="row_3_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtourplaner_1_1model_1_1_tour.html" target="_self">tourplaner.object.Tour</a></td><td class="desc"></td></tr>
<tr id="row_4_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtourplaner_1_1business_1_1_tour_planer.html" target="_self">tourplaner.business.TourPlaner</a></td><td class="desc"></td></tr> <tr id="row_4_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtourplaner_1_1business_1_1_tour_planer.html" target="_self">tourplaner.business.TourPlaner</a></td><td class="desc"></td></tr>
<tr id="row_5_"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_5_" class="arrow" onclick="toggleFolder('5_')">&#9660;</span><span class="icona"><span class="icon">C</span></span><b>Application</b></td><td class="desc"></td></tr> <tr id="row_5_"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_5_" class="arrow" onclick="toggleFolder('5_')">&#9660;</span><span class="icona"><span class="icon">C</span></span><b>Application</b></td><td class="desc"></td></tr>
<tr id="row_5_0_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtourplaner_1_1_main.html" target="_self">tourplaner.Main</a></td><td class="desc"></td></tr> <tr id="row_5_0_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtourplaner_1_1_main.html" target="_self">tourplaner.Main</a></td><td class="desc"></td></tr>

View File

@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=9"/> <meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/> <meta name="generator" content="Doxygen 1.9.1"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/> <meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Tourplaner: Package tourplaner.model</title> <title>Tourplaner: Package tourplaner.object</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/> <link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script> <script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script> <script type="text/javascript" src="dynsections.js"></script>
@ -86,7 +86,7 @@ $(document).ready(function(){initNavTree('namespacetourplaner_1_1model.html','')
<div class="summary"> <div class="summary">
<a href="#nested-classes">Classes</a> </div> <a href="#nested-classes">Classes</a> </div>
<div class="headertitle"> <div class="headertitle">
<div class="title">Package tourplaner.model</div> </div> <div class="title">Package tourplaner.object</div> </div>
</div><!--header--> </div><!--header-->
<div class="contents"> <div class="contents">
<table class="memberdecls"> <table class="memberdecls">

View File

@ -1,5 +1,5 @@
\hypertarget{classtourplaner_1_1model_1_1_tour}{}\doxysection{tourplaner.\+model.\+Tour Class Reference} \hypertarget{classtourplaner_1_1model_1_1_tour}{}\doxysection{tourplaner.\+model.\+Tour Class Reference}
\label{classtourplaner_1_1model_1_1_tour}\index{tourplaner.model.Tour@{tourplaner.model.Tour}} \label{classtourplaner_1_1model_1_1_tour}\index{tourplaner.object.Tour@{tourplaner.object.Tour}}
\doxysubsection{Detailed Description} \doxysubsection{Detailed Description}

View File

@ -1,5 +1,5 @@
\hypertarget{namespacetourplaner_1_1model}{}\doxysection{Package tourplaner.\+model} \hypertarget{namespacetourplaner_1_1model}{}\doxysection{Package tourplaner.\+model}
\label{namespacetourplaner_1_1model}\index{tourplaner.model@{tourplaner.model}} \label{namespacetourplaner_1_1model}\index{tourplaner.object@{tourplaner.object}}
\doxysubsection*{Classes} \doxysubsection*{Classes}
\begin{DoxyCompactItemize} \begin{DoxyCompactItemize}
\item \item

View File

@ -1,8 +1,8 @@
.TH "tourplaner.model" 3 "Thu Feb 25 2021" "Version 0.0.2" "Tourplaner" \" -*- nroff -*- .TH "tourplaner.object" 3 "Thu Feb 25 2021" "Version 0.0.2" "Tourplaner" \" -*- nroff -*-
.ad l .ad l
.nh .nh
.SH NAME .SH NAME
tourplaner.model tourplaner.object
.SH SYNOPSIS .SH SYNOPSIS
.br .br
.PP .PP

View File

@ -1,8 +1,8 @@
.TH "tourplaner.model.Tour" 3 "Thu Feb 25 2021" "Version 0.0.2" "Tourplaner" \" -*- nroff -*- .TH "tourplaner.object.Tour" 3 "Thu Feb 25 2021" "Version 0.0.2" "Tourplaner" \" -*- nroff -*-
.ad l .ad l
.nh .nh
.SH NAME .SH NAME
tourplaner.model.Tour tourplaner.object.Tour
.SH SYNOPSIS .SH SYNOPSIS
.br .br
.PP .PP

View File

@ -127,7 +127,7 @@ $('.navPadding').css('padding-top', $('.fixedNav').css("height"));
</th> </th>
</tr> </tr>
<tr id="i4" class="altColor"> <tr id="i4" class="altColor">
<td class="colFirst"><a href="tourplaner/model/Tour.html" title="class in tourplaner.model">Tour</a></td> <td class="colFirst"><a href="tourplaner/model/Tour.html" title="class in tourplaner.object">Tour</a></td>
<th class="colLast" scope="row"> <th class="colLast" scope="row">
<div class="block">Model einer Tour</div> <div class="block">Model einer Tour</div>
</th> </th>

View File

@ -25,7 +25,7 @@
<li><a href="tourplaner/business/LogHelper.html" title="class in tourplaner.business">LogHelper</a></li> <li><a href="tourplaner/business/LogHelper.html" title="class in tourplaner.business">LogHelper</a></li>
<li><a href="tourplaner/Main.html" title="class in tourplaner">Main</a></li> <li><a href="tourplaner/Main.html" title="class in tourplaner">Main</a></li>
<li><a href="tourplaner/ui/PresenterMain.html" title="class in tourplaner.ui">PresenterMain</a></li> <li><a href="tourplaner/ui/PresenterMain.html" title="class in tourplaner.ui">PresenterMain</a></li>
<li><a href="tourplaner/model/Tour.html" title="class in tourplaner.model">Tour</a></li> <li><a href="tourplaner/model/Tour.html" title="class in tourplaner.object">Tour</a></li>
<li><a href="tourplaner/business/TourPlaner.html" title="class in tourplaner.business">TourPlaner</a></li> <li><a href="tourplaner/business/TourPlaner.html" title="class in tourplaner.business">TourPlaner</a></li>
</ul> </ul>
</main> </main>

View File

@ -118,7 +118,7 @@ $('.navPadding').css('padding-top', $('.fixedNav').css("height"));
<td class="colLast">&nbsp;</td> <td class="colLast">&nbsp;</td>
</tr> </tr>
<tr class="rowColor"> <tr class="rowColor">
<th class="colFirst" scope="row"><a href="tourplaner/model/package-summary.html">tourplaner.model</a></th> <th class="colFirst" scope="row"><a href="tourplaner/model/package-summary.html">tourplaner.object</a></th>
<td class="colLast">&nbsp;</td> <td class="colLast">&nbsp;</td>
</tr> </tr>
<tr class="altColor"> <tr class="altColor">

View File

@ -1,5 +1,5 @@
tourplaner tourplaner
tourplaner.business tourplaner.business
tourplaner.data tourplaner.data
tourplaner.model tourplaner.object
tourplaner.ui tourplaner.ui

View File

@ -97,11 +97,11 @@ $('.navPadding').css('padding-top', $('.fixedNav').css("height"));
</a> </a>
<h2 class="title">T</h2> <h2 class="title">T</h2>
<dl> <dl>
<dt><a href="../tourplaner/model/Tour.html" title="class in tourplaner.model"><span class="typeNameLink">Tour</span></a> - Class in <a href="../tourplaner/model/package-summary.html">tourplaner.model</a></dt> <dt><a href="../tourplaner/model/Tour.html" title="class in tourplaner.object"><span class="typeNameLink">Tour</span></a> - Class in <a href="../tourplaner/model/package-summary.html">tourplaner.object</a></dt>
<dd> <dd>
<div class="block">Model einer Tour</div> <div class="block">Model einer Tour</div>
</dd> </dd>
<dt><span class="memberNameLink"><a href="../tourplaner/model/Tour.html#%3Cinit%3E()">Tour()</a></span> - Constructor for class tourplaner.model.<a href="../tourplaner/model/Tour.html" title="class in tourplaner.model">Tour</a></dt> <dt><span class="memberNameLink"><a href="../tourplaner/model/Tour.html#%3Cinit%3E()">Tour()</a></span> - Constructor for class tourplaner.object.<a href="../tourplaner/model/Tour.html" title="class in tourplaner.object">Tour</a></dt>
<dd>&nbsp;</dd> <dd>&nbsp;</dd>
<dt><a href="../tourplaner/package-summary.html">tourplaner</a> - package tourplaner</dt> <dt><a href="../tourplaner/package-summary.html">tourplaner</a> - package tourplaner</dt>
<dd>&nbsp;</dd> <dd>&nbsp;</dd>
@ -117,7 +117,7 @@ $('.navPadding').css('padding-top', $('.fixedNav').css("height"));
<dd>&nbsp;</dd> <dd>&nbsp;</dd>
<dt><a href="../tourplaner/data/package-summary.html">tourplaner.data</a> - package tourplaner.data</dt> <dt><a href="../tourplaner/data/package-summary.html">tourplaner.data</a> - package tourplaner.data</dt>
<dd>&nbsp;</dd> <dd>&nbsp;</dd>
<dt><a href="../tourplaner/model/package-summary.html">tourplaner.model</a> - package tourplaner.model</dt> <dt><a href="../tourplaner/model/package-summary.html">tourplaner.object</a> - package tourplaner.object</dt>
<dd>&nbsp;</dd> <dd>&nbsp;</dd>
<dt><a href="../tourplaner/ui/package-summary.html">tourplaner.ui</a> - package tourplaner.ui</dt> <dt><a href="../tourplaner/ui/package-summary.html">tourplaner.ui</a> - package tourplaner.ui</dt>
<dd>&nbsp;</dd> <dd>&nbsp;</dd>

View File

@ -113,7 +113,7 @@ $('.navPadding').css('padding-top', $('.fixedNav').css("height"));
<td class="colLast">&nbsp;</td> <td class="colLast">&nbsp;</td>
</tr> </tr>
<tr class="rowColor" id="i3"> <tr class="rowColor" id="i3">
<th class="colFirst" scope="row"><a href="tourplaner/model/package-summary.html">tourplaner.model</a></th> <th class="colFirst" scope="row"><a href="tourplaner/model/package-summary.html">tourplaner.object</a></th>
<td class="colLast">&nbsp;</td> <td class="colLast">&nbsp;</td>
</tr> </tr>
<tr class="altColor" id="i4"> <tr class="altColor" id="i4">

View File

@ -99,7 +99,7 @@ $('.navPadding').css('padding-top', $('.fixedNav').css("height"));
<li><a href="tourplaner/package-tree.html">tourplaner</a>, </li> <li><a href="tourplaner/package-tree.html">tourplaner</a>, </li>
<li><a href="tourplaner/business/package-tree.html">tourplaner.business</a>, </li> <li><a href="tourplaner/business/package-tree.html">tourplaner.business</a>, </li>
<li><a href="tourplaner/data/package-tree.html">tourplaner.data</a>, </li> <li><a href="tourplaner/data/package-tree.html">tourplaner.data</a>, </li>
<li><a href="tourplaner/model/package-tree.html">tourplaner.model</a>, </li> <li><a href="tourplaner/model/package-tree.html">tourplaner.object</a>, </li>
<li><a href="tourplaner/ui/package-tree.html">tourplaner.ui</a></li> <li><a href="tourplaner/ui/package-tree.html">tourplaner.ui</a></li>
</ul> </ul>
</div> </div>
@ -117,7 +117,7 @@ $('.navPadding').css('padding-top', $('.fixedNav').css("height"));
<li class="circle">tourplaner.data.<a href="tourplaner/data/DbConnect.html" title="class in tourplaner.data"><span class="typeNameLink">DbConnect</span></a></li> <li class="circle">tourplaner.data.<a href="tourplaner/data/DbConnect.html" title="class in tourplaner.data"><span class="typeNameLink">DbConnect</span></a></li>
<li class="circle">tourplaner.business.<a href="tourplaner/business/LogHelper.html" title="class in tourplaner.business"><span class="typeNameLink">LogHelper</span></a></li> <li class="circle">tourplaner.business.<a href="tourplaner/business/LogHelper.html" title="class in tourplaner.business"><span class="typeNameLink">LogHelper</span></a></li>
<li class="circle">tourplaner.ui.<a href="tourplaner/ui/PresenterMain.html" title="class in tourplaner.ui"><span class="typeNameLink">PresenterMain</span></a></li> <li class="circle">tourplaner.ui.<a href="tourplaner/ui/PresenterMain.html" title="class in tourplaner.ui"><span class="typeNameLink">PresenterMain</span></a></li>
<li class="circle">tourplaner.model.<a href="tourplaner/model/Tour.html" title="class in tourplaner.model"><span class="typeNameLink">Tour</span></a></li> <li class="circle">tourplaner.object.<a href="tourplaner/model/Tour.html" title="class in tourplaner.object"><span class="typeNameLink">Tour</span></a></li>
<li class="circle">tourplaner.business.<a href="tourplaner/business/TourPlaner.html" title="class in tourplaner.business"><span class="typeNameLink">TourPlaner</span></a></li> <li class="circle">tourplaner.business.<a href="tourplaner/business/TourPlaner.html" title="class in tourplaner.business"><span class="typeNameLink">TourPlaner</span></a></li>
</ul> </ul>
</li> </li>

View File

@ -109,7 +109,7 @@ $('.navPadding').css('padding-top', $('.fixedNav').css("height"));
<!-- ======== START OF CLASS DATA ======== --> <!-- ======== START OF CLASS DATA ======== -->
<main role="main"> <main role="main">
<div class="header"> <div class="header">
<div class="subTitle"><span class="packageLabelInType">Package</span>&nbsp;<a href="package-summary.html">tourplaner.model</a></div> <div class="subTitle"><span class="packageLabelInType">Package</span>&nbsp;<a href="package-summary.html">tourplaner.object</a></div>
<h2 title="Class Tour" class="title">Class Tour</h2> <h2 title="Class Tour" class="title">Class Tour</h2>
</div> </div>
<div class="contentContainer"> <div class="contentContainer">
@ -117,7 +117,7 @@ $('.navPadding').css('padding-top', $('.fixedNav').css("height"));
<li>java.lang.Object</li> <li>java.lang.Object</li>
<li> <li>
<ul class="inheritance"> <ul class="inheritance">
<li>tourplaner.model.Tour</li> <li>tourplaner.object.Tour</li>
</ul> </ul>
</li> </li>
</ul> </ul>

View File

@ -3,7 +3,7 @@
<html lang="de"> <html lang="de">
<head> <head>
<!-- Generated by javadoc (11.0.9) on Thu Feb 25 13:07:23 CET 2021 --> <!-- Generated by javadoc (11.0.9) on Thu Feb 25 13:07:23 CET 2021 -->
<title>tourplaner.model</title> <title>tourplaner.object</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="dc.created" content="2021-02-25"> <meta name="dc.created" content="2021-02-25">
<link rel="stylesheet" type="text/css" href="../../stylesheet.css" title="Style"> <link rel="stylesheet" type="text/css" href="../../stylesheet.css" title="Style">
@ -93,7 +93,7 @@ $('.navPadding').css('padding-top', $('.fixedNav').css("height"));
</header> </header>
<main role="main"> <main role="main">
<div class="header"> <div class="header">
<h1 title="Package" class="title">Package&nbsp;tourplaner.model</h1> <h1 title="Package" class="title">Package&nbsp;tourplaner.object</h1>
</div> </div>
<div class="contentContainer"> <div class="contentContainer">
<ul class="blockList"> <ul class="blockList">
@ -106,7 +106,7 @@ $('.navPadding').css('padding-top', $('.fixedNav').css("height"));
</tr> </tr>
<tbody> <tbody>
<tr class="altColor"> <tr class="altColor">
<th class="colFirst" scope="row"><a href="Tour.html" title="class in tourplaner.model">Tour</a></th> <th class="colFirst" scope="row"><a href="Tour.html" title="class in tourplaner.object">Tour</a></th>
<td class="colLast"> <td class="colLast">
<div class="block">Model einer Tour</div> <div class="block">Model einer Tour</div>
</td> </td>

View File

@ -3,7 +3,7 @@
<html lang="de"> <html lang="de">
<head> <head>
<!-- Generated by javadoc (11.0.9) on Thu Feb 25 13:07:23 CET 2021 --> <!-- Generated by javadoc (11.0.9) on Thu Feb 25 13:07:23 CET 2021 -->
<title>tourplaner.model Class Hierarchy</title> <title>tourplaner.object Class Hierarchy</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="dc.created" content="2021-02-25"> <meta name="dc.created" content="2021-02-25">
<link rel="stylesheet" type="text/css" href="../../stylesheet.css" title="Style"> <link rel="stylesheet" type="text/css" href="../../stylesheet.css" title="Style">
@ -93,7 +93,7 @@ $('.navPadding').css('padding-top', $('.fixedNav').css("height"));
</header> </header>
<main role="main"> <main role="main">
<div class="header"> <div class="header">
<h1 class="title">Hierarchy For Package tourplaner.model</h1> <h1 class="title">Hierarchy For Package tourplaner.object</h1>
<span class="packageHierarchyLabel">Package Hierarchies:</span> <span class="packageHierarchyLabel">Package Hierarchies:</span>
<ul class="horizontal"> <ul class="horizontal">
<li><a href="../../overview-tree.html">All Packages</a></li> <li><a href="../../overview-tree.html">All Packages</a></li>
@ -105,7 +105,7 @@ $('.navPadding').css('padding-top', $('.fixedNav').css("height"));
<ul> <ul>
<li class="circle">java.lang.Object <li class="circle">java.lang.Object
<ul> <ul>
<li class="circle">tourplaner.model.<a href="Tour.html" title="class in tourplaner.model"><span class="typeNameLink">Tour</span></a></li> <li class="circle">tourplaner.object.<a href="Tour.html" title="class in tourplaner.object"><span class="typeNameLink">Tour</span></a></li>
</ul> </ul>
</li> </li>
</ul> </ul>

View File

@ -63,3 +63,77 @@ App started
2021-03-03 15:50:47 INFO PostgresHelper:15 - User Table created 2021-03-03 15:50:47 INFO PostgresHelper:15 - User Table created
2021-03-03 15:52:06 INFO TourPlaner:15 - Tour Planer App gestartet 2021-03-03 15:52:06 INFO TourPlaner:15 - Tour Planer App gestartet
2021-03-03 15:52:07 INFO PostgresHelper:15 - User Table created 2021-03-03 15:52:07 INFO PostgresHelper:15 - User Table created
2021-03-16 22:03:23 INFO TourPlaner:15 - Tour Planer App gestartet
2021-03-16 22:03:23 INFO PostgresHelper:15 - User Table created
2021-03-16 22:03:25 ERROR PSQLException:33 - Connection to 192.168.1.116:5432 refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections.
2021-03-16 22:03:25 ERROR NullPointerException:33 -
2021-03-16 22:03:58 INFO TourPlaner:15 - Tour Planer App gestartet
2021-03-16 22:03:58 INFO PostgresHelper:15 - User Table created
2021-03-16 22:04:00 ERROR PSQLException:33 - Connection to 192.168.1.116:5432 refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections.
2021-03-16 22:04:00 ERROR NullPointerException:33 -
2021-03-16 22:04:06 INFO TourPlaner:15 - Tour Planer App gestartet
2021-03-16 22:04:06 INFO PostgresHelper:15 - User Table created
2021-03-16 22:04:08 ERROR PSQLException:33 - Connection to 192.168.1.116:5432 refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections.
2021-03-16 22:04:08 ERROR NullPointerException:33 -
2021-03-17 13:13:25 INFO TourPlaner:15 - Tour Planer App gestartet
2021-03-17 13:13:25 INFO PostgresHelper:15 - User Table created
2021-03-17 13:13:27 ERROR PSQLException:33 - Connection to 192.168.1.116:5432 refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections.
2021-03-17 13:13:27 ERROR NullPointerException:33 -
2021-03-17 14:39:16 INFO TourPlaner:15 - Tour Planer App gestartet
2021-03-17 14:39:16 INFO PostgresHelper:15 - User Table created
2021-03-17 14:39:18 ERROR PSQLException:33 - Connection to 192.168.1.116:5432 refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections.
2021-03-17 14:39:18 ERROR NullPointerException:33 -
2021-03-17 14:46:45 INFO TourPlaner:15 - Tour Planer App gestartet
2021-03-17 14:46:45 INFO PostgresHelper:15 - User Table created
2021-03-17 14:46:47 ERROR PSQLException:33 - Connection to 192.168.1.116:5432 refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections.
2021-03-17 14:46:47 ERROR NullPointerException:33 -
2021-03-17 14:48:46 INFO TourPlaner:15 - Tour Planer App gestartet
2021-03-17 14:48:46 INFO PostgresHelper:15 - User Table created
2021-03-17 14:48:48 ERROR PSQLException:33 - Connection to 192.168.1.116:5432 refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections.
2021-03-17 14:48:48 ERROR NullPointerException:33 -
2021-03-17 15:20:09 INFO TourPlaner:15 - Tour Planer App gestartet
2021-03-17 15:20:09 INFO PostgresHelper:15 - User Table created
2021-03-17 15:20:11 ERROR PSQLException:33 - Connection to 192.168.1.116:5432 refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections.
2021-03-17 15:20:11 ERROR NullPointerException:33 -
2021-03-17 15:36:24 ERROR ViewModel -> DelTour:33 - Keine Tour ausgewählt!
2021-03-17 15:38:41 ERROR ViewModel -> DelTour:33 - Keine Tour ausgewählt!
2021-03-17 16:02:24 INFO TourPlaner:15 - Tour Planer App gestartet
2021-03-17 16:02:24 INFO PostgresHelper:15 - User Table created
2021-03-17 16:02:26 ERROR PSQLException:33 - Connection to 192.168.1.116:5432 refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections.
2021-03-17 16:02:26 ERROR NullPointerException:33 -
2021-03-17 16:03:16 INFO TourPlaner:15 - Tour Planer App gestartet
2021-03-17 16:03:16 INFO PostgresHelper:15 - User Table created
2021-03-17 16:03:18 ERROR PSQLException:33 - Connection to 192.168.1.116:5432 refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections.
2021-03-17 16:03:18 ERROR NullPointerException:33 -
2021-03-17 16:04:18 INFO TourPlaner:15 - Tour Planer App gestartet
2021-03-17 16:04:18 INFO PostgresHelper:15 - User Table created
2021-03-17 16:04:20 ERROR PSQLException:33 - Connection to 192.168.1.116:5432 refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections.
2021-03-17 16:04:20 ERROR NullPointerException:33 -
2021-03-17 16:04:26 INFO TourPlaner:15 - Tour Planer App gestartet
2021-03-17 16:04:26 INFO PostgresHelper:15 - User Table created
2021-03-17 16:04:28 ERROR PSQLException:33 - Connection to 192.168.1.116:5432 refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections.
2021-03-17 16:04:28 ERROR NullPointerException:33 -
2021-03-17 16:06:47 INFO TourPlaner:15 - Tour Planer App gestartet
2021-03-17 16:06:47 INFO PostgresHelper:15 - User Table created
2021-03-17 16:06:49 ERROR PSQLException:33 - Connection to 192.168.1.116:5432 refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections.
2021-03-17 16:06:49 ERROR NullPointerException:33 -
2021-03-17 16:06:55 INFO TourPlaner:15 - Tour Planer App gestartet
2021-03-17 16:06:55 INFO PostgresHelper:15 - User Table created
2021-03-17 16:06:57 ERROR PSQLException:33 - Connection to 192.168.1.116:5432 refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections.
2021-03-17 16:06:57 ERROR NullPointerException:33 -
2021-03-17 17:02:33 INFO TourPlaner:15 - Tour Planer App gestartet
2021-03-17 17:02:33 INFO PostgresHelper:15 - User Table created
2021-03-17 17:02:35 ERROR PSQLException:33 - Connection to 192.168.1.116:5432 refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections.
2021-03-17 17:02:35 ERROR NullPointerException:33 -
2021-03-17 17:02:38 INFO TourPlaner:15 - Tour Planer App gestartet
2021-03-17 17:02:38 INFO PostgresHelper:15 - User Table created
2021-03-17 17:02:40 ERROR PSQLException:33 - Connection to 192.168.1.116:5432 refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections.
2021-03-17 17:02:40 ERROR NullPointerException:33 -
2021-03-17 17:08:23 INFO TourPlaner:15 - Tour Planer App gestartet
2021-03-17 17:08:23 INFO PostgresHelper:15 - User Table created
2021-03-17 17:08:25 ERROR PSQLException:33 - Connection to 192.168.1.116:5432 refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections.
2021-03-17 17:08:25 ERROR NullPointerException:33 -
2021-03-17 17:08:31 INFO TourPlaner:15 - Tour Planer App gestartet
2021-03-17 17:08:31 INFO PostgresHelper:15 - User Table created
2021-03-17 17:08:33 ERROR PSQLException:33 - Connection to 192.168.1.116:5432 refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections.
2021-03-17 17:08:33 ERROR NullPointerException:33 -

View File

@ -1,19 +1,27 @@
package tourplaner; package tourplaner;
import javafx.application.Application; import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage; import javafx.stage.Stage;
import tourplaner.business.TourPlaner; import tourplaner.business.LogHelper;
import java.io.IOException;
public class Main extends Application { public class Main extends Application {
public static void main(String[] args) throws Exception { public static void main(String[] args){
launch(args); launch(args);
} }
@Override @Override
public void start(Stage primaryStage) throws Exception{ public void start(Stage primaryStage) throws IOException {
TourPlaner tourplaner = new TourPlaner(primaryStage); Parent root = FXMLLoader.load(Main.class.getResource("tourplaner.fxml"));
primaryStage.setTitle("DerGeorg Touren Planer");
primaryStage.setScene(new Scene(root, 600, 600));
primaryStage.show();
} }
} }

View File

@ -0,0 +1,79 @@
package tourplaner.business;
import javafx.scene.control.Alert;
import javafx.scene.control.Label;
import javafx.scene.control.TextArea;
import javafx.scene.control.TextInputDialog;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.Priority;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.util.Optional;
import java.util.concurrent.atomic.AtomicReference;
public class AlertHelper {
public static void warn(String title, String header, String msg){
alertType(Alert.AlertType.WARNING, title, header, msg);
}
public static void inform(String title, String header, String msg){
alertType(Alert.AlertType.INFORMATION, title, header, msg);
}
public static void informNoHeader(String title, String msg){
inform(title, null, msg);
}
public static void error(String title, String header, String msg){
alertType(Alert.AlertType.ERROR, title, header, msg);
}
public static void exerror(String title, String header, String msg, Exception ex){
Alert alert = new Alert(Alert.AlertType.ERROR);
alert.setTitle(title);
alert.setHeaderText(header);
alert.setContentText(msg);
StringWriter sw = new StringWriter();
PrintWriter pw = new PrintWriter(sw);
ex.printStackTrace(pw);
String exceptionText = sw.toString();
Label label = new Label("Exception stacktrace:");
TextArea textArea = new TextArea(exceptionText);
textArea.setEditable(false);
textArea.setWrapText(true);
textArea.setMaxWidth(Double.MAX_VALUE);
textArea.setMaxHeight(Double.MAX_VALUE);
GridPane.setVgrow(textArea, Priority.ALWAYS);
GridPane.setHgrow(textArea, Priority.ALWAYS);
GridPane expContent = new GridPane();
expContent.setMaxWidth(Double.MAX_VALUE);
expContent.add(label, 0, 0);
expContent.add(textArea, 0, 1);
alert.getDialogPane().setExpandableContent(expContent);
alert.showAndWait();
}
private static void alertType(Alert.AlertType alertly, String title, String header, String msg){
Alert alert = new Alert(alertly);
alert.setTitle(title);
alert.setHeaderText(header);
alert.setContentText(msg);
alert.showAndWait();
}
public static String inputText(String title, String header, String msg) {
TextInputDialog dialog = new TextInputDialog();
dialog.setTitle(title);
dialog.setHeaderText(header);
dialog.setContentText(msg);
Optional<String> result = dialog.showAndWait();
AtomicReference<String> returnText = new AtomicReference<>("");
result.ifPresent(returnText::set);
if(!returnText.get().isEmpty()){
return returnText.get();
}else{
return null;
}
}
}

View File

@ -1,11 +1,7 @@
package tourplaner.business; package tourplaner.business;
import javafx.stage.Stage;
import org.apache.log4j.Logger; import org.apache.log4j.Logger;
import tourplaner.data.DbConnect; import tourplaner.data.DbConnect;
import tourplaner.ui.PresenterMain;
import java.io.IOException;
/** /**
* Haupt Logik des Tourplaners * Haupt Logik des Tourplaners
@ -13,15 +9,14 @@ import java.io.IOException;
public class TourPlaner{ public class TourPlaner{
private Logger logger; private Logger logger;
/** public TourPlaner(){
* Startet alle bennötigten Komponenten
* @param primaryStage Stage für den Presenter
*/
public TourPlaner(Stage primaryStage){
String startText = ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "start", "message"); String startText = ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "start", "message");
LogHelper.info(startText, "TourPlaner"); LogHelper.info(startText, "TourPlaner");
PresenterMain presenterMain = new PresenterMain(primaryStage); // Start Presenter/GUI
new DbConnect().init(); new DbConnect().init();
} }
public String getMapJson(String start, String ziel){
return start + " " + ziel;
}
} }

View File

@ -1,7 +0,0 @@
package tourplaner.model;
/**
* Model einer Tour
*/
public class Tour {
}

View File

@ -0,0 +1,70 @@
package tourplaner.object;
/**
* Model einer Tour
*/
public class Tour {
private String dauer;
private String mapJson;
private double strecke;
private String name;
private String start;
private String ziel;
public Tour(String name, String dauer, String mapJson, double strecke, String start, String ziel) {
this.dauer = dauer;
this.mapJson = mapJson;
this.strecke = strecke;
this.name = name;
this.start = start;
this.ziel = ziel;
}
public String getDauer() {
return dauer;
}
public void setDauer(String dauer) {
this.dauer = dauer;
}
public String getMapJson() {
return mapJson;
}
public void setMapJson(String mapJson) {
this.mapJson = mapJson;
}
public double getStrecke() {
return strecke;
}
public void setStrecke(double strecke) {
this.strecke = strecke;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getStart() {
return start;
}
public void setStart(String start) {
this.start = start;
}
public String getZiel() {
return ziel;
}
public void setZiel(String ziel) {
this.ziel = ziel;
}
}

View File

@ -39,7 +39,6 @@
<?import javafx.scene.control.Menu?> <?import javafx.scene.control.Menu?>
<?import javafx.scene.control.MenuBar?> <?import javafx.scene.control.MenuBar?>
<?import javafx.scene.control.MenuItem?> <?import javafx.scene.control.MenuItem?>
<?import javafx.scene.control.SeparatorMenuItem?>
<?import javafx.scene.control.SplitPane?> <?import javafx.scene.control.SplitPane?>
<?import javafx.scene.control.Tab?> <?import javafx.scene.control.Tab?>
<?import javafx.scene.control.TabPane?> <?import javafx.scene.control.TabPane?>
@ -51,73 +50,37 @@
<?import javafx.scene.layout.VBox?> <?import javafx.scene.layout.VBox?>
<?import javafx.scene.paint.Color?> <?import javafx.scene.paint.Color?>
<?import javafx.scene.text.Font?> <?import javafx.scene.text.Font?>
<?import javafx.scene.web.WebView?>
<VBox prefHeight="600.0" prefWidth="900.0" xmlns="http://javafx.com/javafx/15.0.1" xmlns:fx="http://javafx.com/fxml/1"> <VBox prefHeight="600.0" prefWidth="900.0" xmlns="http://javafx.com/javafx/15.0.1" xmlns:fx="http://javafx.com/fxml/1" fx:controller="tourplaner.ui.TourplanerController">
<children> <children>
<MenuBar VBox.vgrow="NEVER"> <MenuBar VBox.vgrow="NEVER">
<menus> <menus>
<Menu mnemonicParsing="false" text="File"> <Menu fx:id="menueFile" mnemonicParsing="false" text="Datei">
<items> <items>
<MenuItem mnemonicParsing="false" text="New" /> <MenuItem fx:id="beendenButton" mnemonicParsing="false" onAction="#quitApp" text="Beenden" />
<MenuItem mnemonicParsing="false" text="Open…" />
<Menu mnemonicParsing="false" text="Open Recent" />
<SeparatorMenuItem mnemonicParsing="false" />
<MenuItem mnemonicParsing="false" text="Close" />
<MenuItem mnemonicParsing="false" text="Save" />
<MenuItem mnemonicParsing="false" text="Save As…" />
<MenuItem mnemonicParsing="false" text="Revert" />
<SeparatorMenuItem mnemonicParsing="false" />
<MenuItem mnemonicParsing="false" text="Preferences…" />
<SeparatorMenuItem mnemonicParsing="false" />
<MenuItem mnemonicParsing="false" text="Quit" />
</items> </items>
</Menu> </Menu>
<Menu mnemonicParsing="false" text="Edit"> <Menu mnemonicParsing="false" text="Bearbeiten" />
<Menu mnemonicParsing="false" text="Optionen" />
<Menu mnemonicParsing="false" text="Hilfe">
<items> <items>
<MenuItem mnemonicParsing="false" text="Undo" /> <MenuItem mnemonicParsing="false" text="Git Repo" />
<MenuItem mnemonicParsing="false" text="Redo" /> <MenuItem mnemonicParsing="false" text="JavaDoc" />
<SeparatorMenuItem mnemonicParsing="false" /> <MenuItem mnemonicParsing="false" text="Unspecified Action" />
<MenuItem mnemonicParsing="false" text="Cut" />
<MenuItem mnemonicParsing="false" text="Copy" />
<MenuItem mnemonicParsing="false" text="Paste" />
<MenuItem mnemonicParsing="false" text="Delete" />
<SeparatorMenuItem mnemonicParsing="false" />
<MenuItem mnemonicParsing="false" text="Select All" />
<MenuItem mnemonicParsing="false" text="Unselect All" />
</items>
</Menu>
<Menu mnemonicParsing="false" text="Options">
<items>
<MenuItem mnemonicParsing="false" text="Undo" />
<MenuItem mnemonicParsing="false" text="Redo" />
<SeparatorMenuItem mnemonicParsing="false" />
<MenuItem mnemonicParsing="false" text="Cut" />
<MenuItem mnemonicParsing="false" text="Copy" />
<MenuItem mnemonicParsing="false" text="Paste" />
<MenuItem mnemonicParsing="false" text="Delete" />
<SeparatorMenuItem mnemonicParsing="false" />
<MenuItem mnemonicParsing="false" text="Select All" />
<MenuItem mnemonicParsing="false" text="Unselect All" />
</items>
</Menu>
<Menu mnemonicParsing="false" text="Help">
<items>
<MenuItem mnemonicParsing="false" text="About MyHelloApp" />
</items> </items>
</Menu> </Menu>
</menus> </menus>
</MenuBar> </MenuBar>
<HBox id="HBox" alignment="CENTER_LEFT" layoutX="10.0" layoutY="588.0" spacing="5.0"> <HBox id="HBox" alignment="CENTER_LEFT" layoutX="10.0" layoutY="588.0" spacing="5.0">
<children> <children>
<AnchorPane prefHeight="-1.0" prefWidth="-1.0" HBox.hgrow="ALWAYS"> <AnchorPane prefWidth="-1.0" HBox.hgrow="ALWAYS">
<children> <children>
<Button layoutX="58.0" mnemonicParsing="false" text="+" /> <Button fx:id="tourAdd" layoutX="58.0" mnemonicParsing="false" onAction="#addTour" text="+" />
<Label layoutX="14.0" layoutY="4.0" text="Tours" /> <Label layoutX="14.0" layoutY="4.0" text="Tours" />
<Button layoutX="89.0" mnemonicParsing="false" text="-" /> <Button fx:id="tourDel" layoutX="89.0" mnemonicParsing="false" onAction="#delTour" text="-" />
</children></AnchorPane> </children></AnchorPane>
<TextField text="Suche...." /> <TextField fx:id="sucheInput" text="Suche...." />
<Button mnemonicParsing="false" text="Suchen" /> <Button fx:id="sucheButton" mnemonicParsing="false" onAction="#suche" text="Suchen" />
</children> </children>
<padding> <padding>
<Insets bottom="3.0" left="3.0" right="3.0" top="3.0" /> <Insets bottom="3.0" left="3.0" right="3.0" top="3.0" />
@ -125,20 +88,16 @@
</HBox> </HBox>
<SplitPane dividerPositions="0.21492204899777284" focusTraversable="true" prefHeight="522.0" prefWidth="900.0" VBox.vgrow="ALWAYS"> <SplitPane dividerPositions="0.21492204899777284" focusTraversable="true" prefHeight="522.0" prefWidth="900.0" VBox.vgrow="ALWAYS">
<items> <items>
<AnchorPane prefHeight="520.0" prefWidth="239.0"> <AnchorPane prefWidth="239.0">
<children> <children>
<ListView layoutX="-1.0" prefHeight="520.0" prefWidth="190.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0"> <ListView fx:id="TourListView" layoutX="-1.0" onMouseClicked="#tourListSelectedItem" prefHeight="520.0" prefWidth="190.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0" />
<padding>
<Insets bottom="20.0" left="20.0" right="20.0" top="20.0" />
</padding>
</ListView>
</children> </children>
</AnchorPane> </AnchorPane>
<SplitPane dividerPositions="0.5" orientation="VERTICAL" prefHeight="496.0" prefWidth="620.0"> <SplitPane dividerPositions="0.5" orientation="VERTICAL" prefHeight="496.0" prefWidth="620.0">
<items> <items>
<VBox prefHeight="200.0" prefWidth="100.0"> <VBox prefWidth="100.0">
<children> <children>
<AnchorPane prefHeight="51.0" prefWidth="676.0"> <AnchorPane prefWidth="676.0">
<children> <children>
<HBox id="HBox" alignment="CENTER_LEFT" prefHeight="7.0" prefWidth="44.0" spacing="5.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0"> <HBox id="HBox" alignment="CENTER_LEFT" prefHeight="7.0" prefWidth="44.0" spacing="5.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
<children> <children>
@ -147,26 +106,34 @@
<Insets left="10.0" /> <Insets left="10.0" />
</HBox.margin> </HBox.margin>
</Label> </Label>
<TextField /> <TextField fx:id="titleTextView" editable="false" />
</children> </children>
</HBox> </HBox>
</children> </children>
</AnchorPane> </AnchorPane>
<AnchorPane prefHeight="200.0" prefWidth="200.0"> <AnchorPane prefWidth="200.0">
<children> <children>
<TabPane layoutX="1.0" layoutY="69.0" prefHeight="225.0" prefWidth="702.0" tabClosingPolicy="UNAVAILABLE" AnchorPane.bottomAnchor="-67.0" AnchorPane.leftAnchor="1.0" AnchorPane.rightAnchor="1.0" AnchorPane.topAnchor="0.0"> <TabPane fx:id="viewTabPane" layoutX="1.0" layoutY="69.0" prefWidth="702.0" tabClosingPolicy="UNAVAILABLE" AnchorPane.bottomAnchor="-67.0" AnchorPane.leftAnchor="1.0" AnchorPane.rightAnchor="1.0" AnchorPane.topAnchor="0.0">
<tabs> <tabs>
<Tab text="Route"> <Tab fx:id="kartenTab" text="Karte">
<content> <content>
<AnchorPane prefHeight="200.0" prefWidth="200.0"> <AnchorPane />
</content></Tab>
<Tab fx:id="beschreibungTab" text="Beschreibung">
<content>
<AnchorPane>
<children> <children>
<WebView id="mapView" prefHeight="200.0" prefWidth="200.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0" /> <TableView fx:id="beschreibungTableView" prefHeight="200.0" prefWidth="200.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
<columns>
<TableColumn fx:id="nameCol" maxWidth="1.7976931348623157E308" minWidth="70.0" prefWidth="-1.0" text="Tourname" />
<TableColumn fx:id="dauerCol" maxWidth="1.7976931348623157E308" minWidth="40.0" prefWidth="-1.0" text="Dauer" />
<TableColumn fx:id="streckeCol" maxWidth="1.7976931348623157E308" minWidth="50.0" prefWidth="-1.0" text="Strecke" />
<TableColumn fx:id="startCol" maxWidth="1.7976931348623157E308" minWidth="100.0" prefWidth="-1.0" text="Startpunk" />
<TableColumn fx:id="zielCol" maxWidth="1.7976931348623157E308" minWidth="100.0" prefWidth="-1.0" text="Zielpunkt" />
</columns>
</TableView>
</children> </children>
</AnchorPane> </AnchorPane>
</content></Tab>
<Tab text="Description">
<content>
<AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="180.0" prefWidth="200.0" />
</content> </content>
</Tab> </Tab>
</tabs> </tabs>
@ -175,13 +142,13 @@
</AnchorPane> </AnchorPane>
</children> </children>
</VBox> </VBox>
<AnchorPane prefHeight="200.0" prefWidth="200.0"> <AnchorPane prefWidth="200.0">
<children> <children>
<VBox prefHeight="200.0" prefWidth="100.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0"> <VBox prefWidth="100.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
<children> <children>
<AnchorPane prefHeight="51.0" prefWidth="676.0"> <AnchorPane prefWidth="676.0">
<children> <children>
<HBox id="HBox" alignment="CENTER_LEFT" prefHeight="38.0" prefWidth="702.0" spacing="5.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0"> <HBox id="HBox" alignment="CENTER_LEFT" prefWidth="702.0" spacing="5.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
<children> <children>
<Label text="Logs:"> <Label text="Logs:">
<HBox.margin> <HBox.margin>
@ -205,14 +172,17 @@
</HBox> </HBox>
</children> </children>
</AnchorPane> </AnchorPane>
<AnchorPane prefHeight="200.0" prefWidth="200.0"> <AnchorPane prefWidth="200.0">
<children> <children>
<TableView prefHeight="209.0" prefWidth="702.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0"> <TableView AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
<columns> <columns>
<TableColumn prefWidth="238.0" text="Date" /> <TableColumn prefWidth="238.0" text="Date" />
<TableColumn prefWidth="223.0" text="Duration" /> <TableColumn prefWidth="223.0" text="Duration" />
<TableColumn prefWidth="240.0" text="Distance" /> <TableColumn prefWidth="240.0" text="Distance" />
</columns> </columns>
<columnResizePolicy>
<TableView fx:constant="CONSTRAINED_RESIZE_POLICY" />
</columnResizePolicy>
</TableView> </TableView>
</children> </children>
</AnchorPane> </AnchorPane>

View File

@ -1,35 +0,0 @@
package tourplaner.ui;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;
import org.apache.log4j.Logger;
import tourplaner.business.LogHelper;
import java.io.IOException;
/**
* Presenter des Tourplaners
*/
public class PresenterMain {
/**
* Startet die Gui
* @param primaryStage Stage der GUI
*
*/
public PresenterMain(Stage primaryStage){
Parent root = null;
try {
root = FXMLLoader.load(getClass().getResource("tourplaner.fxml"));
primaryStage.setTitle("DerGeorg Touren Planer");
primaryStage.setScene(new Scene(root, 600, 600));
primaryStage.show();
} catch (IOException e) {
e.printStackTrace();
LogHelper.error(e.getMessage(), "PresenterMain");
}
}
}

View File

@ -1,18 +1,104 @@
package tourplaner.ui; package tourplaner.ui;
import javafx.collections.ObservableList;
import javafx.event.EventHandler;
import javafx.fxml.FXML; import javafx.fxml.FXML;
import javafx.scene.web.WebEngine; import javafx.fxml.Initializable;
import javafx.geometry.Orientation;
import javafx.scene.control.*;
import javafx.scene.control.cell.PropertyValueFactory;
import javafx.scene.input.MouseEvent;
import javafx.scene.layout.Pane;
import javafx.scene.web.WebView; import javafx.scene.web.WebView;
import tourplaner.business.AlertHelper;
import tourplaner.object.Tour;
import tourplaner.viewmodels.ViewModel;
public class TourplanerController { import java.net.URL;
@FXML import java.util.ResourceBundle;
private WebView mapView;
public class TourplanerController implements Initializable {
public ViewModel viewModel = new ViewModel();
public ListView<String> TourListView = new ListView<>();
public TabPane viewTabPane;
public Tab kartenTab, beschreibungTab;
public TableView<Tour> beschreibungTableView;
public TableColumn<Tour, String> startCol, zielCol, dauerCol, streckeCol, nameCol;
public TextField titleTextView, sucheInput;
/**
* Wird gestartet wenn eine Tour in der Tour listView ausgewählt wird
* @param mouseEvent Triggered Event
*/
@FXML @FXML
private void initialize() private void tourListSelectedItem(MouseEvent mouseEvent){
{ String selectedItem = TourListView.getSelectionModel().getSelectedItem();
WebEngine engine = mapView.getEngine(); this.viewModel.selectTour(selectedItem);
engine.load("http://www.google.com"); titleTextView.setText(selectedItem);
beschreibungTableView.getItems().removeIf(s -> true); //Leert die Table View komplett
beschreibungTableView.getItems().add(this.viewModel.getTour(selectedItem));
startCol.setCellValueFactory(new PropertyValueFactory<Tour, String>("start"));
zielCol.setCellValueFactory(new PropertyValueFactory<Tour, String>("ziel"));
dauerCol.setCellValueFactory(new PropertyValueFactory<Tour, String>("dauer"));
streckeCol.setCellValueFactory(new PropertyValueFactory<Tour, String>("strecke"));
nameCol.setCellValueFactory(new PropertyValueFactory<Tour, String>("name"));
} }
/**
* Beendet die App
* Verbunden mit dem Menu -> Datei -> Beenden
*/
@FXML
private void quitApp(){
System.exit(0);
}
/**
* Fügt eine Tour hinzu
* Verbunden mit Button -> Tour -> +
*/
@FXML
private void addTour(){
this.viewModel.addTour();
}
/**
* Entfernt eine ausgewählte Tour
* Verbunden mit Button -> Tour -> -
*/
@FXML
private void delTour(){
this.beschreibungTableView.getItems().removeIf(s -> true); //löscht alles aus der tabelle
this.titleTextView.setText("Keine Tour ausgewählt!");
this.viewModel.delTour();
}
/**
* Sucht eine Tour
* Verbunden mit Button -> Suche
*/
@FXML
private void suche(){
String sucheInput = this.sucheInput.getText();
if(sucheInput.isEmpty()){
AlertHelper.warn("ACHTUNG", "Suchfeld ist leer!", "Bitte zuerst den Suchtext in das Suchfeld eingeben!");
}else {
this.viewModel.suche(sucheInput);
}
}
/**
* Wird beim Start ausgeführt
* @param url
* @param resourceBundle
*/
@Override
public void initialize(URL url, ResourceBundle resourceBundle) {
TourListView.getSelectionModel().setSelectionMode(SelectionMode.SINGLE);
TourListView.setOrientation(Orientation.VERTICAL);
TourListView.setItems(this.viewModel.getTourNamen());
this.beschreibungTableView.setPlaceholder(new Label("Keine Tour ausgewählt!"));
this.titleTextView.setText("Keine Tour ausgewählt!");
}
} }

View File

@ -0,0 +1,124 @@
package tourplaner.viewmodels;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.scene.control.Alert;
import javafx.scene.control.TextInputDialog;
import tourplaner.business.AlertHelper;
import tourplaner.business.LogHelper;
import tourplaner.business.TourPlaner;
import tourplaner.object.Tour;
import java.util.Optional;
import java.util.concurrent.atomic.AtomicReference;
public class ViewModel {
private final ObservableList<Tour> tourData = FXCollections.observableArrayList(new Tour("Test 1", "120", "json dings", 22.3, "Wien", "Graz"),new Tour("Test 2", "210", "json dings", 42.3, "Da", "Dort"));
private final ObservableList<String> tourNamen = FXCollections.observableArrayList("Test 1", "Test 2");
//private final ObservableList<Tour> selectedTour = FXCollections.observableArrayList();
private Tour selectedTour;
private String neueTourName, neueTourStart, neueTourZiel;
/**
* Fügt eine neue Tour hinzu
*/
public void addTour(){
while(this.neueTourName == null) {
this.neueTourName = AlertHelper.inputText("Tourname", "Bitte geben Sie den Namen der Tour an!", "Name:");
if (getTour(this.neueTourName) != null) {
AlertHelper.warn("ACHTUNG", "Name bereits vergeben!", "Der Name '"+ this.neueTourName +"' ist bereits vergeben, bitte verwenden Sie einen andern!");
this.neueTourName = null;
}
}
while(this.neueTourStart == null){
this.neueTourStart = AlertHelper.inputText("Tour Startpunkt", "Bitte geben Sie den Startpunkt der Tour an!", "Startpunkt: ");
}
while(this.neueTourZiel == null){
this.neueTourZiel = AlertHelper.inputText("Tour zielpunkt", "Bitte geben Sie den Zielpunkt der Tour an!", "Zielpunkt: ");
}
if (getTour(this.neueTourName) == null) {
tourData.add(new Tour(this.neueTourName, "TBD", "TBD", 0, this.neueTourStart, this.neueTourZiel));
tourNamen.add(this.neueTourName);
}
this.neueTourStart = null;
this.neueTourZiel = null;
this.neueTourName = null;
}
/**
* Holt das Tourobjekt anhand des Namens
* @param tourname Name der Tour
* @return Gefundene Tour
*/
public Tour getTour(String tourname){
AtomicReference<Tour> returnTour = new AtomicReference<>();
tourData.forEach(s -> {
if(s.getName().equals(tourname)){
returnTour.set(s);
}
});
return returnTour.get();
}
public void selectTour(String tourname){
this.selectedTour = getTour(tourname);
// this.selectedTour.removeIf(s -> true);//Alle deselect
// this.selectedTour.add(getTour(tourname));
}
public Tour getSelectedTour() {
return selectedTour;
}
public String getNeueTourZiel() {
return neueTourZiel;
}
public void setNeueTourZiel(String neueTourZiel) {
this.neueTourZiel = neueTourZiel;
}
public ObservableList<String> getTourNamen() {
return tourNamen;
}
public String getNeueTourName() {
return neueTourName;
}
public void setNeueTourName(String neueTourName) {
this.neueTourName = neueTourName;
}
public String getNeueTourStart() {
return neueTourStart;
}
public void setNeueTourStart(String neueTourStart) {
this.neueTourStart = neueTourStart;
}
public ObservableList<Tour> getTourData() {
return tourData;
}
/**
* Entfernt eine Tour anhand der ausgewählten Tour
*/
public void delTour(){
try {
String tourname = this.selectedTour.getName();
tourData.removeIf(s -> s.getName().equals(tourname));
tourNamen.removeIf(s -> s.equals(tourname));
}catch (NullPointerException e){
LogHelper.error("Keine Tour ausgewählt!", "ViewModel -> DelTour");
AlertHelper.warn("ACHTUNG", "Keine Tour ausgewählt!", "Bitte wählen Sie zuerst eine Tour aus, bevor Sie auf löschen klicken!");
}
}
/**
* Sucht eine Tour
*/
public void suche(String suchString){
}
}