From ee2d2bb63a8406bfec62429f6a086763b2e8d1bb Mon Sep 17 00:00:00 2001
From: deadlocker8 <deadlocker@gmx.de>
Date: Fri, 22 Jul 2016 23:06:16 +0200
Subject: [PATCH] initial commit

---
 .classpath                           |   6 +
 .project                             |  17 +++
 .settings/org.eclipse.jdt.core.prefs |  11 ++
 README.md                            |   3 +-
 bin/application/Controller$1.class   | Bin 0 -> 1271 bytes
 bin/application/Controller.class     | Bin 0 -> 4869 bytes
 bin/application/Main.class           | Bin 0 -> 1741 bytes
 bin/application/MainGUI.fxml         |  22 ++++
 bin/application/_de.properties       |  12 ++
 bin/commands/Command.class           | Bin 0 -> 1167 bytes
 bin/commands/CommandClear.class      | Bin 0 -> 1119 bytes
 bin/commands/CommandHelp.class       | Bin 0 -> 1666 bytes
 bin/commands/CommandList$1.class     | Bin 0 -> 1042 bytes
 bin/commands/CommandList.class       | Bin 0 -> 1789 bytes
 bin/commands/HistoryEntry.class      | Bin 0 -> 1002 bytes
 bin/commands/HistoryType.class       | Bin 0 -> 967 bytes
 bin/commands/PossibleCommands.class  | Bin 0 -> 801 bytes
 src/application/Controller.java      | 185 +++++++++++++++++++++++++++
 src/application/Main.java            |  43 +++++++
 src/application/MainGUI.fxml         |  22 ++++
 src/application/_de.properties       |  12 ++
 src/commands/Command.java            |  43 +++++++
 src/commands/CommandClear.java       |  28 ++++
 src/commands/CommandHelp.java        |  35 +++++
 src/commands/CommandList.java        |  50 ++++++++
 src/commands/HistoryEntry.java       |  28 ++++
 src/commands/HistoryType.java        |   6 +
 src/commands/PossibleCommands.java   |  14 ++
 28 files changed, 535 insertions(+), 2 deletions(-)
 create mode 100644 .classpath
 create mode 100644 .project
 create mode 100644 .settings/org.eclipse.jdt.core.prefs
 create mode 100644 bin/application/Controller$1.class
 create mode 100644 bin/application/Controller.class
 create mode 100644 bin/application/Main.class
 create mode 100644 bin/application/MainGUI.fxml
 create mode 100644 bin/application/_de.properties
 create mode 100644 bin/commands/Command.class
 create mode 100644 bin/commands/CommandClear.class
 create mode 100644 bin/commands/CommandHelp.class
 create mode 100644 bin/commands/CommandList$1.class
 create mode 100644 bin/commands/CommandList.class
 create mode 100644 bin/commands/HistoryEntry.class
 create mode 100644 bin/commands/HistoryType.class
 create mode 100644 bin/commands/PossibleCommands.class
 create mode 100644 src/application/Controller.java
 create mode 100644 src/application/Main.java
 create mode 100644 src/application/MainGUI.fxml
 create mode 100644 src/application/_de.properties
 create mode 100644 src/commands/Command.java
 create mode 100644 src/commands/CommandClear.java
 create mode 100644 src/commands/CommandHelp.java
 create mode 100644 src/commands/CommandList.java
 create mode 100644 src/commands/HistoryEntry.java
 create mode 100644 src/commands/HistoryType.java
 create mode 100644 src/commands/PossibleCommands.java

diff --git a/.classpath b/.classpath
new file mode 100644
index 0000000..fb50116
--- /dev/null
+++ b/.classpath
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/.project b/.project
new file mode 100644
index 0000000..b2f045f
--- /dev/null
+++ b/.project
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>CommandLine</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..3a21537
--- /dev/null
+++ b/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,11 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.8
diff --git a/README.md b/README.md
index 50664bc..5ca6fdc 100644
--- a/README.md
+++ b/README.md
@@ -1,2 +1 @@
-# CommandLine
-
+# CommandLine
\ No newline at end of file
diff --git a/bin/application/Controller$1.class b/bin/application/Controller$1.class
new file mode 100644
index 0000000000000000000000000000000000000000..9443f57368164992a75c52bf12b88f549fcef31f
GIT binary patch
literal 1271
zcmX^0Z`VEs1_l!bH+BXlMh1z*f`XjP<iwK9{5*Z<{JfH){G6QBA{9e+1{OvJfvm)`
zME#t^ymWp4q^#8B5_SeQMg~ccXj+ASYFTPtiM}g{^hnH0$w@6@WMC`F$ShVdU}TW+
z!EUlOBLkaFW?p8A9V3IZ1};UKVT=qc&iN^+oD7T%ygUr-3>;hx%nbZI44e!Cj10^g
zAO-wBnR%&xrMXF|MInhvIjM{cLO%J)i8*13MVTNzRFDPaBt`})9CoP~f}E5A_5dS;
zf`$*&cg4x6d8zuDc?G2<`rfIPU~gJ$hH)`SFi5d8NHQ`=<59@NAk84d$iSYSS_1L~
zBZHiVCJuu^^46RTatsRW4DyT&QrJxesp4T!WKd#cV0HBiaSdW*kilml7lRyw3J-%S
zgBl|PTWVoxVoot5gDAvv$PsF-8O6n*!Jx&?pvlM}hCRx77_=F<7#TPclao`6i&YFj
zj@9L1&;vP!DKr42-++g~5Lt~ONR2TMg9%6tn`^MMV}L72of!{<IVb{ol5<iMi=6ZG
zit|D7#tKeKj100kyaWk+Mh4#ClEma}-^2oF)QUqqgqjw?k;KSg%flebAjZhR6`WsM
zl$`3839^VEk;L^t0nNz38JwA(msnC-l*-891GXL|c)%j4=0nrE4NMAaLb0=EWZ-wr
zOU}tJ&df{qO)bgDPvK#30r{N;l=>MNcs%p+Qj45(5{rvdiy0Ic7#Wxu7#Ua@7zG4C
z$(@0Lfti7Ufs=uYfsuimfq}t-fr){Mfq{WbOM5E=kJfeuzKskF3``7yATh8ENVgV)
z5Ca1P4+A4uRG2}8fq{V$6cA8Tra(=x)!xP+zKKD08-wyp1}?2F3_Lp+)FEOz$YS~s
zF(ZW7HU?9W#mr!f<rvr*7#Q>!co_^CL>NpM6dBAIG#D%yOc|^hY#408ju8Vp&Xxh<
z7zPGg1`7sD21W)e1_lOJ24)dqVF5=5Q3h+M3pJrG<kZqWz#y@W!3Ja-#G7njZ!v;R
m1qB5QgB>^s>=_)uv?GHP0|NsKg9d{$gDW@y7{NLi7#INZ+#~q_

literal 0
HcmV?d00001

diff --git a/bin/application/Controller.class b/bin/application/Controller.class
new file mode 100644
index 0000000000000000000000000000000000000000..abdd41f6c449844cf366c2927e5ce7fed4ffb582
GIT binary patch
literal 4869
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
O89-eiMutEJFaQAfJC)4<

literal 0
HcmV?d00001

diff --git a/bin/application/Main.class b/bin/application/Main.class
new file mode 100644
index 0000000000000000000000000000000000000000..b5b3eedf81bec76ca1d9917dcdd2460e72266410
GIT binary patch
literal 1741
zcmX^0Z`VEs1_l#`5_SeAMh1bzf`XjP<iwK9{5*Z%#LPT)1{OvJxva#p#Iy>1WJyPa
zLPiEQo6Nk-5<5l)W)00SMg|t={FGEK24)6M9tKthHbw@1pUk{eztY^K)S{5Yq?}Yn
z1|gsP<iwn?#G*_PA1cUFl95>ql0&u#<O*v>2G-(|#G(>L25}7^sB4N#64O)lgF&RV
zW*9qzAR~hqR4T0^H%H$s!q>+qKQSe>h>Jm(L6n_Agpol2q(DC>F)v-;KPf9UxrB#7
zj6s}{fg?S&#5pIixR{YaSVI$R14I>A(3*oml97Q2<P!H#Pd$+7Tny3-vg`~pj12q;
zBf*M!7~~k_85y|KQ%izUi}Op1l2aKOlpwB#m>FDBl$n=q4YejOwM0KO$j6$CL4ZLK
z6kbY<41!SQFgeXIkgN(1gDQg>BLhoLeqstEg9wU4A>OfOXV73|5C%CZtwO&zIW;d;
zKOnIvHLrx7L5q<=2t^_oB+cf~bbtW_xEM4U^g#COGcrg)>_;=g+QkLr5JLuIb_OFP
z!$2_ri3c7A69!X82A*QD-!rQ~am&cSq7kJT#=&6D$iVHKpPQSQmjX%-TnvT`mOKnr
z4AzVc9L1?6A(<thgdqyC8a1TCK#Fa780;AAA&S9HM@bAIzvzR7tu@2g9P%ANeqsRW
zbLL@iVQ_`G$~QC5BQ-NUqXgtC7m&hAusX0pPaXy@kV5X_)Dqv!yztDFk_=F|`|vRM
zg2J5_lt}XPN{aGxa#D-f8T=U;#E?^}GhB{~!H*%3harf8AL?9C5P<|kco;%K8G;3r
zUqFrv=V6Ed3lwMMmvb>hF~qPlL_=c`5(cgn$*BdP{K&%)3sT8nP?VWh5?qp)oE=h>
z2ufU_tdX9|$RGkvx1dM^SqF&`Yeoh(P;yBvVq}nj$%7IwQueTBWMC=E&o5zQ5QV8g
zPC4Mr2MS(f8$f($a5FM+CBuCVvITpXSTiy(roya1^O`jy125P|zKI2}vLH7xGmnu$
zOd}fXCWwY$XwC`aVqj#*<6+2W$N~8;u{19^gOPzHu_zssfwAadWZ()0XGOP6P$J_5
zWo123W?)ccU}RthrvYXLMo?+Rz{tSPz`&r-z{tSJz`($&wVi=uBLf2i69X3m0|Oga
zkduL%fq{Vs%w}caVc=z8U|?k6W8jBqX4Gb2XJBJsV949eAP}jwjX_9AVjF|hb_NAs
zoox)t2N=}-b~9*3>WVOEi!f+!XVA4`(Pr7kV4y8zwvE9;TaslPgAGJLgu!7OgOj!h
zgWEO+51nlc-Uk@`tXL&kwYM<@NV0BY2-e=l5Vo9w17vRGMzDKQ88R567?{DXbz=}@
zU|<kn5M&T!kYo^M&}0y0&|?r|Fkuj9uwsy4uxF5DaAS~S@MVx;2xE|Ch+&XpNMw*_
zNM%r9$Y4-p$YfAv$YoFk`_=;-EO}7hGBD&Z#4*G(Ffs@-gfJv9Br-5DNHX{^Brzm2
zFf(W}*f69pq%yEDgfZ|lq%ov3urg#aurOpWWHK-@WHB%>a56A`XUJe@h+<*jWXNX7
qfdm|bF+9|FFytaaor{5qfq_AjfrUW}>=sza7cdlpL%s+cKg9s80FMs<

literal 0
HcmV?d00001

diff --git a/bin/application/MainGUI.fxml b/bin/application/MainGUI.fxml
new file mode 100644
index 0000000..3d7ae6e
--- /dev/null
+++ b/bin/application/MainGUI.fxml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import javafx.geometry.Insets?>
+<?import javafx.scene.control.TextArea?>
+<?import javafx.scene.control.TextField?>
+<?import javafx.scene.layout.AnchorPane?>
+<?import javafx.scene.layout.VBox?>
+
+<AnchorPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="600.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/8.0.65" xmlns:fx="http://javafx.com/fxml/1" fx:controller="application.Controller">
+   <children>
+      <VBox layoutX="14.0" layoutY="14.0" AnchorPane.bottomAnchor="14.0" AnchorPane.leftAnchor="14.0" AnchorPane.rightAnchor="14.0" AnchorPane.topAnchor="14.0">
+         <children>
+            <TextArea fx:id="textareaHistory" prefHeight="508.0" prefWidth="572.0" VBox.vgrow="ALWAYS" />
+            <TextField fx:id="textfieldInput" prefHeight="46.0" prefWidth="572.0">
+               <VBox.margin>
+                  <Insets top="14.0" />
+               </VBox.margin>
+            </TextField>
+         </children>
+      </VBox>
+   </children>
+</AnchorPane>
diff --git a/bin/application/_de.properties b/bin/application/_de.properties
new file mode 100644
index 0000000..1ea1c0a
--- /dev/null
+++ b/bin/application/_de.properties
@@ -0,0 +1,12 @@
+app.name=CommandLine
+version.code=0
+version.name=0.0.1
+version.date=22.07.16
+
+help.list=list - lists all possible commands
+help.help=help - shows help for given command\nSYNTAX:  help [COMMAND]
+help.clear=clear - clears the history
+
+error.unknown.command=Unknown command. Use \"list\" for a list of possible commands.
+error.invalid.arguments=Invalid arguments. Use \"help commandname\" for help.
+error.no.help=Unknown command as parameter. Can't display help. Use \"list\" for a list of possible commands
\ No newline at end of file
diff --git a/bin/commands/Command.class b/bin/commands/Command.class
new file mode 100644
index 0000000000000000000000000000000000000000..40fddff4115933d253769c294cf92c52705ce2d1
GIT binary patch
literal 1167
zcmX^0Z`VEs1_l!bb9M$MMh1c8{M_8cyp&>nX9$CxfrXJlAS<yfQ9ma!FJ0e1DJwO(
zgpq+gJGHVrzbJ)~LC6Oo8(dP9nU`+O$iSCZnwykb<ewIhSd^Gs%*ep#$;iN&k(yIb
z5|Ua`!pOjuRGOEPlgh{-1<_twl9{6)lv<o$T9lmX1eUXAWMH$&%*!mXV`N~~&<tZ_
zU~$e*N#$Z-W)R?E;9=n9U=U(t;7Kef$jMAjEXmBz)8}LmVGv_y5QRAzY^qOwa$-&@
z4}&;^1S12xyK9iIqhBQ4-AGETxfrAvWY`&`85tzNegey(I*NxumO+k@fipd|1ma3Y
z1_up@7r@~I4FQM<SU<#iYfU5}R3oi985kK9co?`CxEUGveKPY>{lI}2l9&VvAR({;
zVTnbVAU;%(r6eP>7~}`^__AhX;7U&|@rK2Yhz8VRWY>W#)Zk%YWng1u5KK=kf!K$L
zEM^T&PmmfN9tL&>4n_v<^wbiM)SLoH)Ujt4hb87@rZ6&yX+%SOg>1NH6e9yW)LD!S
z!dO%=GVlhMBqnG3CKf=w!=74^np|3v%E+LH%}5{QICjp@D=Es)$w@7;2BitEU~rOg
z%LIiL4>Z;4fufH^k%5tcnSp_Ug@F;|R|W<KMv#BNG$#Wa0|SE~D9{-g7}yvXK?#b1
zk%5nafx(%9nSl``tF@hhUrR`E6NB&$2Fa}q@*5c#7?>Co85kJ&zy@<LurTm42rzIk
zC^0ZF@IW*%C^M*ltx#o9gBqyMzzCLO)!M?Kz5#9s$X1XW5Sm%xnl%};uxQp^gQi&w
z$!3IRUE*w(#;RG50pwgzI3zGIF)%SOFi2_dV@c84!l1p7fe*%9!obSBh6UstW~2a7
vU;sHtf<X;zvKT}+)K3fyQVa$Rh761hM&LMM5@TdxWH4qh0SA^T*kfh@=#=e7

literal 0
HcmV?d00001

diff --git a/bin/commands/CommandClear.class b/bin/commands/CommandClear.class
new file mode 100644
index 0000000000000000000000000000000000000000..71d46c5942d1e34952a7e6785b6a07bab70240e5
GIT binary patch
literal 1119
zcmX^0Z`VEs1_l!b4|WD7Mh4O3{M_8cyp&>nX9&YNCpEE%oq>gsK>%Hfk%7%7GcU8m
zj*)>`Lo<w#fyFsLC6$YTnSqmsft7)cgMpiofi)Rq04D=811}E)9|J!l1ABIAWqE#4
z3L}G%PgY`CqJB<dUb=p8Nl|8Ax;03lAP<8OgD@ilUtVc$QfiTZT0mk^Vs0@b1EVJg
zgD4{dS4L`1fgapkaUKQ<khz>7;gXQliV{W!exJ;|R6nrxki?{%RFGZy$%#2(iA9+p
zK2(sUBqOt!kwM%C-D_Z9TQf4Sr&gpUmzJb5GU#bUW4hKSv7jI)GdZy&Ge1w?IX|zY
zC_g7Bwa8jCjEjMhL4k)skwJ-(fjzT0EHNiDg^@uFn<1J}oD7T%Dm)CT3~G!FY)Peg
zDIf<+L98n+$;{CYN-fSWElN&x0?S!*FlaC`h^H16<rnE?=9PiW)=Ml(FU?KOD=Fq;
z&|=VGXV7M3kN}4+76W(~bQ$y*8938ZOCZ6{$e^YHu?{&dG%<y^7z`MU*cl8N8N{%A
zorl4g!Gw{4wV)_7uY{376q~VOAXChE7|a>i7#VoL@#v9RT#{c@36iknVXy*8@FPq3
z<fnt=Y<L)KL2?jH&iQ%8`8lZ|340y}2ap6e*xrDm{M>>PMh13hv@$XXV~IRQ2Cigy
zlrb_$;EGH}2HxP3#N=$>!~$rt;R*)FhFc~mo&=FIiXJG)859{98JHPBfQf+-loJ>j
z8Q2*Z7y=kTd<F(Ft?djPT0&e~8F;jqw=xK535jfF5ZlPWz`(>H$-uxM#=y$Jz`)MH
z!obPE#lXeD&%n(f%D}@Q#lXP8!@vkuA<ZDez`(%BAj=>JHNA_08EmV%mi9IV`B@Bt
zI$B#8l!er{F=%dM(BG)DjlooB8-s<;HU?{*Z47oG>zKjTDKT&`Ffa%*a4-lnh%$&U
zh%tyWNHIt-$T3JVC^1Mes4+-`tyX{-&j7KSfkB<Yk--V<9CZd~1{Ve<23H0K24)6E
MF$P8kH?VKq0rTAiU;qFB

literal 0
HcmV?d00001

diff --git a/bin/commands/CommandHelp.class b/bin/commands/CommandHelp.class
new file mode 100644
index 0000000000000000000000000000000000000000..0ab23cd743bcbf327044dc67dc0c65fd44037e11
GIT binary patch
literal 1666
zcmX^0Z`VEs1_l#`Jaz^qMh21O{M_8cyp&>nX9&Y1HK%}`frXJl09}TWfz2i}FSEps
zk%3u5GmMde#W_DEm5YIyfs==Um4S_eft!(mB_lPbfRlllftQDYkAa_&fjv95vOK>i
zg^@wXCo8cmQ9ma!FI_*lq$o2l-5R7&kcUBtL70(&FRwH=DYeKyEg-QdF}IkJfzgwL
zL6nh!6J(+uhybY;=V6cl84DII2}!LeVPxR<$;?aj1M3b+Ov*_GS(Trhm=l&*lnLTP
z1zAcmGK(1*#C*^_2J*5sBLjPCMQU<sNh%|Qo<=mLTYVA>3UV@&6H7Al^Yoqb^Gb^H
zb8=FPtTn^97#JB8co-BJlo%P<GmFC#b23vH8N{#|q8Y`>z{sG&!=TEb#>l{yRGOCp
za<3G`y3&%&9Q~lw;{4L0<WwiHoHYl71|x%bYEe;skzQtA8OUtC#G>@l+|<01VlD<P
z1|4<=ZAJzOaM)rofQLbsL64DvGd;Bg66lN!Y8nvhkYhp<Q;3VffWe5J!H|(b47=BP
z7>pTA7#Ua#iZb&`7#T#d85_pQV8&p<&S1{SAPEomfc)a(%%q%DXp$@DVX$PdVq_2~
zKoe(V5QR7k>@UZnqQpv{%;FMjE(RM0J9Y+JMh0Pox8c$}4E78Tj0_x^C8<S;CHY05
zsDOG8Y>p>X+?t!giNS@P!I_ak2w@CNmWRQW!HtoDB@dj$L^Pl#fWyo`DJwM@<P2s8
z4;}_j1}{biuJqIrZ&*r4RSgMtYc2*K20wNNUq%K2ux((IAaXnm{tN+(3~Z@|rHMJk
zXdwx;Of!m|A&8Md99^$dX=YAJY7qxR2qOb4D3|DQF$6M%fpVk?h!w%Z5Xlh5$iS9Z
zP>`CJ!pNYDEt(*~jN~M!vDP3XVt5#0L4M>Y$%nWX6mao83<(U0j124<iN${4Fk;rw
zjN)KOW@O-nq}IHAaIR%!V24ILBZDxOe8tGXl?=~Kj0_UE@);uob8;@Y7=apB3@fs%
z85wwkOA?c_eG?17d7Yghm63rf7@UpVGC>(k0GiZ5SzQklgba!dj10^SAi%`H2r9l9
z7#Y|Z7#IQ=Kzs%UF|F+k99lwLTN!w?Shg|<XbFjIWf0rQz`(%7Aj!bMAjZJTz`(%C
zz{0@Az{SALz|X+LAj-hYAjQDIz{9`@Rw2zG!@$76$RNug2Q~dC11nfxzLxej2KiYG
zf;w7T7?g$7w=rmLW6<BYiNSOmgS8dQat2FDmYocaj0^`DnEiCOF}Q297;R(lp2?sH
z*07r)Fj6RZJ3}Z~ID8vJG}Hi)t~f@9S^p1%)d?j*#TghFn8D80V&Gz6U=U*9U=U#t
zWe{Z$V~}9bVUS|5WRPJ9V~}MCXOLh>WKd+tV^9KnMT>!jfq@~P0pb-9D}^By?7e)3
zG=_8rCI%e_ZH5enOa^9#ECvP!2?l1d{|sCVtn3Vo><roL3<eDB3{DITrVNY>IpDy{
F1ps+eoMiw2

literal 0
HcmV?d00001

diff --git a/bin/commands/CommandList$1.class b/bin/commands/CommandList$1.class
new file mode 100644
index 0000000000000000000000000000000000000000..e3b2858a80d5ef11794f98dfb5e40c266a2e2159
GIT binary patch
literal 1042
zcmX^0Z`VEs1_l!b6LtnBMh3Cu{M_8cyp&>nX9&Y5v$#aXkez{rkwG9Uu`E$PCowNw
z-#;lUHMxYHfsK(t1T0!wl9>b2Qjl1bSdw4F$iP;Tky)%_z{nuxgUv{5Mg}&U%)HDJ
zJ4Oac4eUxZ!x$M@obyvsIT;ukczGDu892BYm>Kwa7&sXO7#Wx~KnnPMGV@aXN^_G^
zi$W5Ua#9%?gnaUo6LZ26i!wocs2~f-IgAVvSZz`<v}R;rPtMORNGwWaWKhR+k2Quq
zYfVp11_=f!b_PjC1_5+0@-Rp<$S^XnXQx({=NF}b90d+0aNq@(6lLb6TXQkUF(|Mz
z$fE=-M2?3+kwJ-(ffMSakbFi4Q4Jpq6Er;;8JO}7L8hZSz#1fD1ojI;8zk1Okqm;0
zXnJxnFfwTHFo-gUF*0xk=a&{Gr@Cc=LQ?=K9q56KVr1Y9&P>lsEGY$rl?|q05D~Nl
zVS^cfcGipx{H}S)Ir+tzdFj5XB^miC><s#h3?k^B0i{76215oTMh5oOiqz!Nl2k?p
zJ&kCHO~_&DlUPuYlbM`Yl9`{U@0_1kQk0*QlUigAN+~>^d3mWt&N+$2#i_*%3Ji=4
z%nXbStPG3-0-&VDz`(%Fz`(%C0166j1_lNT1||k31_lN$E$yugJX+fs_%<>yFfcI)
zg2ccwAl)(yLJSNHJPeFrQDFuV1_lO3P&hI$GJs6+VqgNB%cH%8L0o4GgZMTE*)?!;
z*ueS}!Dc8x)G<KJ0GX-GpaPcXVNhjIVPFz)WDsRggPN<$zzkN;tEGK_K|<#MgTyul
sb##Ln!3Kjo!NQ;kwp5Ej8%*mk=rS-curTN`7%&)voz4ihih+Rv0A~E})Bpeg

literal 0
HcmV?d00001

diff --git a/bin/commands/CommandList.class b/bin/commands/CommandList.class
new file mode 100644
index 0000000000000000000000000000000000000000..0b0782e573ce2e8ead6b801933d467ba4ef11a9d
GIT binary patch
literal 1789
zcmX^0Z`VEs1_l#`Y<31FMh21O{M_8cyp&>nX9&Y5v$%wvfrXJl09}TWfz2i}FSEps
zk%3u5GmMde#W_DEm5YIyfs==Um4S_eft!(mB`34Egp+}pftQDYkAa_&fjv95vOK>i
zg^@wXCo8cmQ9ma!FI_*lq$o2l-5R7&kcUBtL70(&FRwH=DYeKyEg-QdF}IkJfzgwL
zL6nh!Gb1&pKo4fDI1hsa$XKvwNl0o%2_pl)Pi9`KA6R!tVp2{j$g2G0#GJ6iqD&AU
zD#%ijky*^hAm)SaF_4$785!79D^in7OHvsb^faO|-RhHAP>_?EoLG{XpQrDfpI1_p
zpOceXWUU#-#lXm*z{8-(pv1_)o>?50n3I{p$RLKz5X~q~21W)I9tKqgHAV)uq|&?;
zkb9*d)|HlI=I95d7U!21C8s)p<*YdvG#DAgQ;Ul7i}W({%0Oo8B^ITZ=BDPA6mv0X
zG3c-}XfrZMfWsDx0Xz)440?<Voaw10kU(c-P}6`|ha3}{m_l3(1`I~*42FyhV%WXT
z!(hx{!pOi{P?VWh!pI<s&Dbzb1~Uc=b_R1s21$6h2jmwQXC~#OLX%uE4}&Fx6(fT{
z0h%}?gDAvVV1GFl6(v@J<BFZZhLJ%GZXDDYkd%rc7lSo}9Vk88GcrhOV2^81lsPgu
zvokm`G6*9A4sHPtgA0QzBLhoueo+b76oeY*{M>@XqQsJXP{gw{xHB?{gC&u|(y25v
zCndFri@}Y7lY_yFkwM%sCr1J1HwBopt++rce0Ugq8T=R-*b)m0Qu9(68FaCQA|w<r
z?Xc!zaAXMJVF+XhVq{=WPX)(<Cvsf+CuOB3mw?rU@GyijfU<3IW>qRU4|{SjL@+Wi
zf*lgY!w}67!^pr<k`GHKA{xjhK}13M1nL7u24O7Ogpq+O8J;;986<FJ8%72Ws5!-q
z3{1sIj0}=EeaXncm<h_bD4DvlAQhUip{_(tBsLgPZ*6DI$iN$1l9-(Bn^*wV%M}dH
zY;KvLY$$+~lJr2)%E-XunU|MZ<eZaOT%20Wpvb_;z{~&wObm>mGLM0gft`VYA%FqI
zXJ8Q1+RnhCCB(Irfk%sZD}#WRkjPdBv5gE23``7?3=9ln46F<c3_J`h47?0npz@J{
zpFxyCfI$i@$_Q2=%^<_Tz`)2L%OD3aol&2Gg@KKMfuTZ6dmDrNECxXxtt|}7Lh9QX
zG`BJ6Z`{OS>ZiM#!8%fFJA>^u28Z1YZjsv=JgitGS%f^dF?feFo3Sou(3WJ;6=mJV
z;D3ODc?$y%NL-XvcN;@6OUir(Zb=rQaF9?7D<ed7;r~lIk}TU8B0)AVFfg!y-EYOf
z$H2fK%D}-O&LGMl!63#U%^<}f!=T2X%An7n#$e8%&S1-+$>7hR#Sq1y!;r+F&XC7o
zz);R$2==2L#2*Y0KQb^>FvK#%F@XGC!4S`oz`(>H#Sq7k$Y905%%IQU$&kd5%)r86
z#bCma!XV7R%8&{TCy1&v24;qI1_lOx1{Se@3~KBQj_eF>j4DhFObi*|AkSpTVqjnZ
M70=e7IAdS{00n2bu>b%7

literal 0
HcmV?d00001

diff --git a/bin/commands/HistoryEntry.class b/bin/commands/HistoryEntry.class
new file mode 100644
index 0000000000000000000000000000000000000000..555ac2bee0604b0272bb28b80dbf6e2bbba727d7
GIT binary patch
literal 1002
zcmX^0Z`VEs1_l!bBX$NRMh4O3{M_8cyp&>nkIdqd{Gv+Nypp0yb_Nzk27#=^vPAuy
z#JqHU|D>$c<Pt^(mXgYXR7M6dA9P(Il?AERAo<ja5=I6gAB5K6lA_GKbZbTiHk-`6
z%o00B25k-O+A%e0hA}d*IOnINaxpM7@bWNlGVn1nFl%UraWXJ62=FklGO&SILOcxY
z3>=IM{63j^seYxoNvTC4iAg!BAcy29C+37D7G;9?P(hZGjLc$225}5mfW2<b$iSYS
zS_1MABZGv7CWb1I3``N&w;~#vm`-P8;3&z5_??|WmXSdmJw%*JGjmc>i#QnM85x9;
z!(Jg86v(z*3^ELgATKL1GKgwmTA&#QQlY}bpvs`e$iS9ZP>`CJ!pNYDtP~P$)|k$N
zT5iq3puxz%uA@+rT2TVFQ43_AHkvUIZ{RgXmyv-n7UUp(9tLR!DMkja;QZ2}<W#pz
zP&5c4`%e!P5)6tAj10^S3=B*ROrU54v)CCp7#J8>7#JBi8Mqi28Mql37$O;%!0Pz5
zwlnZ(X>VoV*V5U_Ah;2%L70JoL5P8cfq{X8frWvKfs=uofscWQL4<*UK>?zTL6kv^
z0R;HL)-W<KFz|y?3j-4aBZD}D1k@UR21W*u9IMtA2L26j!`Z-s0$>Aqz-(5ifs722
z3{qG$3!-Zl#j05vuGyb~8EmlXZU&i1A-U}g3LqzJV^9`S-^QS+wS_@&8-u2h&Nc?k
UZ47$ohD#wCt_pXV0oeV905~np!2kdN

literal 0
HcmV?d00001

diff --git a/bin/commands/HistoryType.class b/bin/commands/HistoryType.class
new file mode 100644
index 0000000000000000000000000000000000000000..8c58db9dbfa891c57a2d7ab322752bb56300d7d2
GIT binary patch
literal 967
zcmX^0Z`VEs1_l!bJ$42rMh21O{M_8cyp&>nkIdqd{G!T`%7RpO1{OvJzO2NuME#t^
zymWonywY4o26ktEUtdQ*7e)p#A8fj;85!7pU4w%i-CY?OxLy51eO1C7eL`J>85zW*
zap~Z&NzTd4%Pg^DWMJ0N3}a+qan4Uk<zQgtVqj$8=V1_F5M*Rvvw<oR)9^vKD!8O5
zGcVoRQ!|W{fssL&hk=!Wje~(5#1Z3RU}s<hu_SmHI2bq?8TfrN^HTjvbCXhwLK2g5
zQW+V9eDaeMbHWmfGC_Q>AQuBO13x1JOG!p%F(U(8Sz=CUYB3{&q=qIA_j55QFetGz
zC^9k#Ai1luxFj`~he4S^g^__Xv8X7qGC9AXl953R+4cTOS*gh-)}BZnf(dzo!hs!Z
zyMG#*HmIjHv4<zf0~$OGstlTp45rAoIp-u67h5CQ1vdxbZcr>+Gcs@m=a&{Gr@Cc=
z0!aWVRp^0~GBR)mXQt;RmXsEyGBO}r0n%=R-C1_l4u%Yj49pA+49pIapm<_naF7H=
z5d(vO6exli7#LU>I2gDXxEUB3co-NMf*4pBKtOLd17oBRFY|T=zRe6mV2%h2m?O%%
zmw_>oc@u+Ba3sqn2GQWn4B{IZ7#NrsBpDbOxEPoi7#LU?q!^ePq`;ye836`CsQHEr
z%wYGhYiY}DXOKo{WMg0iITNgj2h3(?kYQkBU|`^6kY$jAYBytG1#1`E#2_B&&8)RA
z(gx%jUuNkY4Dvb~z!rj>0WpmcY#PWxoD8ZAYEUz@7?{B3a|tnO?O;$pz`%%G9}|NX
M*i3B(9Wbp60J56RG5`Po

literal 0
HcmV?d00001

diff --git a/bin/commands/PossibleCommands.class b/bin/commands/PossibleCommands.class
new file mode 100644
index 0000000000000000000000000000000000000000..3757d2e80d89e17e3c8bc2acd1889e00262fb30d
GIT binary patch
literal 801
zcmX^0Z`VEs1_l!bU3La0Mh3~`{M_8cyp&@7fc)a(%%q%DXQ%)>0}CUAKvrT|qJB<d
zUb?=2QdVkm2_u6*0h&Ta22mfdveJ^w9DT>4qQpv{%;FMjMh4E{%=Em(lG377Mg~o6
zYHWPq)<dnewzFnr;IK)~$;`_vv14Rl*3b-NWMFa5Pf2BG;ALbG#$ppY13x2!0J=%+
z41$adBIu$ZmvJ!&FbMN7h%j(5GO*czEn;U7!=l(DHK%}!L6kw5ok5b3K@{CA=bY5U
zA}$6A24OA+83s9a23c5uAwr^<he4h}fsuhNu^41EBZI0&G$bUD0@WHha6rnexfpmD
zlt4~YW@M1mfM@_4>YSgGlbT$TnV)B^8OF)L$e_x@z{<eJ$iVNDnV0HUnwykb6q1;f
zlgh{-<ddJAm=l&*lnLU41-TfQ8H5=bSV}T7iy0ZD5uuMB`PPgKT*3LJMaijdnIN-7
z(G}={;(<Ytfsuikfq{XMK@#K&21W*U1_lNu1`aUhWZ+_8WZ-6CU`PRrGcXwJX5fir
z+snWg$-J9EAaXl{P;ey6ZU)iF?F{0<k*vEJBqFynNCod;klxOqxS2s^BiJ-G1_lNx
z1~vu;29Swd3?dBN3~~%S3~CIV4EhYb4C-K2AXkXMZPaIAWME`qU|`kS&Y*!Xh7Byp
V2G+s@X0tMAGH8Llpba)g2LL%<ytn`W

literal 0
HcmV?d00001

diff --git a/src/application/Controller.java b/src/application/Controller.java
new file mode 100644
index 0000000..3066586
--- /dev/null
+++ b/src/application/Controller.java
@@ -0,0 +1,185 @@
+package application;
+
+import java.util.ArrayList;
+import java.util.Locale;
+import java.util.ResourceBundle;
+
+import commands.PossibleCommands;
+import commands.Command;
+import commands.HistoryEntry;
+import commands.HistoryType;
+import javafx.event.EventHandler;
+import javafx.fxml.FXML;
+import javafx.scene.control.TextArea;
+import javafx.scene.control.TextField;
+import javafx.scene.input.KeyCode;
+import javafx.scene.input.KeyEvent;
+import javafx.stage.Stage;
+
+public class Controller
+{
+	@FXML private TextArea textareaHistory;
+	@FXML private TextField textfieldInput;
+	
+	public Stage stage;		
+	private final ResourceBundle bundle = ResourceBundle.getBundle("application/", Locale.GERMANY);
+	
+	private ArrayList<HistoryEntry> globalHistory = new ArrayList<>();
+	private int lastShwonCommand = 1;
+	private ArrayList<HistoryEntry> history = new ArrayList<>();
+	private final String promptText = ">>>";
+
+	public void setStage(Stage stage)
+	{
+		this.stage = stage;
+	}	
+	
+	public void init()
+	{	
+		textareaHistory.setEditable(false);
+		textareaHistory.setWrapText(true);		
+		
+		textfieldInput.setOnKeyPressed(new EventHandler<KeyEvent>()
+		{
+			@Override
+			public void handle(KeyEvent event)
+			{
+				if(event.getCode().equals(KeyCode.ENTER))
+	            {
+					parse();
+	            }
+				
+				if(event.getCode().equals(KeyCode.UP))
+	            {
+					showLastCommand();
+	            }
+				
+				if(event.getCode().equals(KeyCode.ESCAPE))
+	            {
+					clearConsole();
+	            }
+			}
+		});	  
+			
+		printPrompt();		
+	}	
+
+	public void printPrompt()
+	{		
+		setConsoleText();
+		clearConsole();	
+	}
+	
+	public void print(String message)
+	{		
+		history.add(new HistoryEntry(HistoryType.MESSAGE, message));
+		setConsoleText();
+		printPrompt();
+	}
+	
+	public void clearHistoryLog()
+	{
+		textareaHistory.setText("");
+	}
+	
+	public void clearHistory()
+	{
+		history = new ArrayList<>();
+	}
+	
+	public void clearConsole()
+	{
+		textfieldInput.setText("");
+		textfieldInput.requestFocus();
+	}
+	
+	private void setConsoleText()
+	{	
+		clearHistoryLog();	
+		
+		StringBuilder sb = new StringBuilder();
+		boolean printedLastEntry = false;
+		for(int i = 0; i < history.size(); i++)		
+		{							
+			HistoryEntry currentEntry = history.get(i);
+			if(currentEntry.getType().equals(HistoryType.COMMAND))
+			{				
+				if(printedLastEntry)
+				{
+					sb.append("\n");
+				}
+				sb.append(promptText);
+				sb.append(" ");
+				sb.append(currentEntry.getText());
+				printedLastEntry = true;
+			}
+			else
+			{							
+				if(i != 0)
+				{
+					sb.append("\n");
+				}
+				sb.append(currentEntry.getText());
+				printedLastEntry = true;											
+			}
+		}	
+		
+		textareaHistory.setText(sb.toString());	
+		textareaHistory.positionCaret(sb.toString().length());
+	}
+	
+	private boolean executeCommand(String[] command)
+	{
+		for(Command cmd : PossibleCommands.possibleCommands)
+		{
+			if(cmd.getKeyword().equals(command[0]))
+			{
+				cmd.execute(command, this);		
+				return true;
+			}
+		}
+		return false;
+	}
+	
+	private void parse()
+	{
+		String input = textfieldInput.getText().replace("\n", "");			
+		
+		if(input.equals(""))
+		{
+			printPrompt();
+			return;
+		}	
+		
+		globalHistory.add(new HistoryEntry(HistoryType.COMMAND, input));
+		history.add(new HistoryEntry(HistoryType.COMMAND, input));
+		lastShwonCommand = -1;
+		
+		String[] command = input.split(" ");		
+		if(!executeCommand(command))		
+		{
+			print(bundle.getString("error.unknown.command"));			
+		}
+		else
+		{
+			printPrompt();
+		}
+	}
+	
+	private void showLastCommand()
+	{
+		if(globalHistory.size() > 0)
+		{
+			if(lastShwonCommand <= 0)
+			{
+				textfieldInput.setText(globalHistory.get(globalHistory.size()-1).getText());
+				lastShwonCommand = globalHistory.size()-1;
+			}
+			else
+			{			
+				textfieldInput.setText(globalHistory.get(lastShwonCommand - 1).getText());
+				lastShwonCommand--;				
+			}
+		}
+	}
+}
\ No newline at end of file
diff --git a/src/application/Main.java b/src/application/Main.java
new file mode 100644
index 0000000..4adcc79
--- /dev/null
+++ b/src/application/Main.java
@@ -0,0 +1,43 @@
+package application;
+
+import javafx.application.Application;
+import javafx.fxml.FXMLLoader;
+import javafx.scene.Parent;
+import javafx.scene.Scene;
+import javafx.stage.Stage;
+
+public class Main extends Application
+{
+	@Override
+	public void start(Stage stage)
+	{
+		try
+		{
+			FXMLLoader loader = new FXMLLoader(getClass().getResource("MainGUI.fxml"));
+			Parent root = (Parent)loader.load();
+
+			Scene scene = new Scene(root, 600, 600);
+
+			stage.setResizable(true);
+			stage.setTitle("CommandLine");
+			stage.setScene(scene);
+			stage.setResizable(true);
+			stage.setMinHeight(250);
+			stage.setMinWidth(400);
+			
+			Controller controller = (Controller)loader.getController();
+			controller.setStage(stage);	
+			controller.init();		
+			stage.show();		
+		}
+		catch(Exception e)
+		{
+			e.printStackTrace();
+		}
+	}
+
+	public static void main(String[] args)
+	{
+		launch(args);
+	}
+}
\ No newline at end of file
diff --git a/src/application/MainGUI.fxml b/src/application/MainGUI.fxml
new file mode 100644
index 0000000..3d7ae6e
--- /dev/null
+++ b/src/application/MainGUI.fxml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import javafx.geometry.Insets?>
+<?import javafx.scene.control.TextArea?>
+<?import javafx.scene.control.TextField?>
+<?import javafx.scene.layout.AnchorPane?>
+<?import javafx.scene.layout.VBox?>
+
+<AnchorPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="600.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/8.0.65" xmlns:fx="http://javafx.com/fxml/1" fx:controller="application.Controller">
+   <children>
+      <VBox layoutX="14.0" layoutY="14.0" AnchorPane.bottomAnchor="14.0" AnchorPane.leftAnchor="14.0" AnchorPane.rightAnchor="14.0" AnchorPane.topAnchor="14.0">
+         <children>
+            <TextArea fx:id="textareaHistory" prefHeight="508.0" prefWidth="572.0" VBox.vgrow="ALWAYS" />
+            <TextField fx:id="textfieldInput" prefHeight="46.0" prefWidth="572.0">
+               <VBox.margin>
+                  <Insets top="14.0" />
+               </VBox.margin>
+            </TextField>
+         </children>
+      </VBox>
+   </children>
+</AnchorPane>
diff --git a/src/application/_de.properties b/src/application/_de.properties
new file mode 100644
index 0000000..34e77ae
--- /dev/null
+++ b/src/application/_de.properties
@@ -0,0 +1,12 @@
+app.name=CommandLine
+version.code=1
+version.name=1.0.0
+version.date=22.07.16
+
+help.list=list - lists all possible commands
+help.help=help - shows help for given command\nSYNTAX:  help [COMMAND]
+help.clear=clear - clears the history
+
+error.unknown.command=Unknown command. Use \"list\" for a list of possible commands.
+error.invalid.arguments=Invalid arguments. Use \"help commandname\" for help.
+error.no.help=Unknown command as parameter. Can't display help. Use \"list\" for a list of possible commands
\ No newline at end of file
diff --git a/src/commands/Command.java b/src/commands/Command.java
new file mode 100644
index 0000000..2f9d39e
--- /dev/null
+++ b/src/commands/Command.java
@@ -0,0 +1,43 @@
+package commands;
+
+import java.util.Locale;
+import java.util.ResourceBundle;
+
+import application.Controller;
+
+public abstract class Command
+{
+	public String keyword;
+	public int numberOfParams;
+	public String helptText;
+	public final ResourceBundle bundle = ResourceBundle.getBundle("application/", Locale.GERMANY);		
+	
+	public String getKeyword()
+	{
+		return keyword;
+	}	
+	
+	public int getNumberOfParams()
+	{
+		return numberOfParams;
+	}
+	
+	public String getHelpText()
+	{
+		return keyword;
+	}
+	
+	public boolean isValid(String[] command)
+	{
+		if((command.length - 1) < numberOfParams || (command.length -1) > numberOfParams)
+		{
+			return false;
+		}
+		else
+		{
+			return true;
+		}
+	}
+	
+	public abstract void execute(String[] command, Controller controller);	
+}
\ No newline at end of file
diff --git a/src/commands/CommandClear.java b/src/commands/CommandClear.java
new file mode 100644
index 0000000..1facf0b
--- /dev/null
+++ b/src/commands/CommandClear.java
@@ -0,0 +1,28 @@
+package commands;
+
+import application.Controller;
+
+public class CommandClear extends Command
+{
+	public CommandClear()
+	{		
+		super.keyword = "clear";		
+		super.numberOfParams = 0;
+		super.helptText = "help.clear";
+	}
+
+	@Override
+	public void execute(String[] command, Controller controller)
+	{		
+		if(!isValid(command))
+		{			
+			controller.print(bundle.getString("error.invalid.arguments"));
+			return;
+		}	
+		
+		controller.clearHistory();
+		controller.clearHistoryLog();
+		controller.clearConsole();		
+		controller.printPrompt();
+	}
+}
\ No newline at end of file
diff --git a/src/commands/CommandHelp.java b/src/commands/CommandHelp.java
new file mode 100644
index 0000000..36fb39a
--- /dev/null
+++ b/src/commands/CommandHelp.java
@@ -0,0 +1,35 @@
+package commands;
+
+import application.Controller;
+
+public class CommandHelp extends Command
+{
+	public CommandHelp()
+	{
+		super();	
+		super.keyword = "help";		
+		super.numberOfParams = 1;
+		super.helptText = "help.help";
+	}
+
+	@Override
+	public void execute(String[] command, Controller controller)
+	{		
+		if(!isValid(command))
+		{			
+			controller.print(bundle.getString("error.invalid.arguments"));
+			return;
+		}	
+		
+		for(Command cmd : PossibleCommands.possibleCommands)
+		{
+			if(cmd.getKeyword().equals(command[1]))
+			{				
+				controller.print(bundle.getString("help." + command[1]));		
+				return;
+			}
+		}		
+				
+		controller.print(bundle.getString("error.no.help"));		
+	}
+}
diff --git a/src/commands/CommandList.java b/src/commands/CommandList.java
new file mode 100644
index 0000000..2deaa74
--- /dev/null
+++ b/src/commands/CommandList.java
@@ -0,0 +1,50 @@
+package commands;
+
+import java.util.ArrayList;
+import java.util.Comparator;
+
+import application.Controller;
+
+public class CommandList extends Command
+{
+	public CommandList()
+	{
+		super();
+		super.keyword = "list";
+		super.numberOfParams = 0;
+		super.helptText = "help.list";
+	}
+
+	@Override
+	public void execute(String[] command, Controller controller)
+	{		
+		if(!isValid(command))
+		{			
+			controller.print(bundle.getString("error.invalid.arguments"));
+			return;
+		}
+		
+		ArrayList<Command> commands = PossibleCommands.possibleCommands;
+		commands.sort(new Comparator<Command>()
+		{
+			@Override
+			public int compare(Command o1, Command o2)
+			{
+				return o1.keyword.compareTo(o2.keyword);				
+			}
+		});
+		
+		StringBuilder sb = new StringBuilder();	
+		sb.append("All possible commands:\n");
+		for(int i = 0; i < commands.size(); i++)
+		{
+			sb.append(commands.get(i).keyword);
+			if(i != (commands.size()-1))
+			{
+				sb.append("\n");
+			}
+		}
+		
+		controller.print(sb.toString());			
+	}
+}
\ No newline at end of file
diff --git a/src/commands/HistoryEntry.java b/src/commands/HistoryEntry.java
new file mode 100644
index 0000000..ffaf0a9
--- /dev/null
+++ b/src/commands/HistoryEntry.java
@@ -0,0 +1,28 @@
+package commands;
+
+public class HistoryEntry
+{
+	private HistoryType type;
+	private String text;
+	
+	public HistoryEntry(HistoryType type, String text)
+	{		
+		this.type = type;
+		this.text = text;
+	}
+
+	public HistoryType getType()
+	{
+		return type;
+	}
+
+	public String getText()
+	{
+		return text;
+	}
+	
+	public String toString()
+	{
+		return "HistoryEntry [type=" + type + ", text=" + text + "]";
+	}	
+}
\ No newline at end of file
diff --git a/src/commands/HistoryType.java b/src/commands/HistoryType.java
new file mode 100644
index 0000000..169f897
--- /dev/null
+++ b/src/commands/HistoryType.java
@@ -0,0 +1,6 @@
+package commands;
+
+public enum HistoryType
+{
+	COMMAND, MESSAGE
+}
diff --git a/src/commands/PossibleCommands.java b/src/commands/PossibleCommands.java
new file mode 100644
index 0000000..8de7de2
--- /dev/null
+++ b/src/commands/PossibleCommands.java
@@ -0,0 +1,14 @@
+package commands;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+
+public class PossibleCommands
+{	
+		
+	public static final ArrayList<Command> possibleCommands = new ArrayList<>(Arrays.asList(
+				new CommandList(),
+				new CommandHelp(),
+				new CommandClear()						
+			));	
+}
\ No newline at end of file
-- 
GitLab