Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
E
Enigma
Manage
Activity
Members
Labels
Plan
Issues
0
Issue boards
Milestones
Wiki
Code
Merge requests
0
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Container Registry
Model registry
Operate
Environments
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Jan Schubert
Enigma
Commits
ddb06720
Commit
ddb06720
authored
5 years ago
by
Dennis Eisold
Browse files
Options
Downloads
Patches
Plain Diff
GUI Controller und fxml angepasst
parent
699beb9a
No related branches found
Branches containing commit
No related tags found
No related merge requests found
Changes
2
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
src/main/java/projekt/enigma/GuiController.java
+55
-99
55 additions, 99 deletions
src/main/java/projekt/enigma/GuiController.java
src/main/resources/projekt/enigma/gui.fxml
+272
-445
272 additions, 445 deletions
src/main/resources/projekt/enigma/gui.fxml
with
327 additions
and
544 deletions
src/main/java/projekt/enigma/GuiController.java
+
55
−
99
View file @
ddb06720
package
projekt.enigma
;
import
javafx.beans.value.ChangeListener
;
import
javafx.beans.value.ObservableValue
;
import
javafx.concurrent.Task
;
import
javafx.event.ActionEvent
;
import
javafx.fxml.FXML
;
...
...
@@ -12,7 +10,9 @@ import javafx.scene.input.MouseEvent;
import
javafx.scene.layout.GridPane
;
import
javafx.scene.layout.Pane
;
import
javafx.scene.shape.Circle
;
import
javafx.stage.StageStyle
;
import
org.apache.http.HttpException
;
import
org.controlsfx.dialog.ProgressDialog
;
import
projekt.enigma.model.Codierer
;
import
projekt.enigma.model.Fehler
;
...
...
@@ -21,71 +21,62 @@ import java.util.ArrayList;
import
java.util.Arrays
;
public
class
GuiController
{
//region Klassenvariablen
//region Klassenvariablen
private
final
static
String
[]
walzenNr
=
{
"I"
,
"II"
,
"III"
,
"IV"
,
"V"
};
private
final
static
String
[]
ringNr
=
{
"1"
,
"2"
,
"3"
,
"4"
,
"5"
,
"6"
,
"7"
,
"8"
,
"9"
,
"10"
,
"11"
,
"12"
,
"13"
,
"14"
,
"15"
,
"16"
,
"17"
,
"18"
,
"19"
,
"20"
,
"21"
,
"22"
,
"23"
,
"24"
,
"25"
,
"26"
};
private
final
static
String
[]
position
=
{
"A"
,
"B"
,
"C"
,
"D"
,
"E"
,
"F"
,
"G"
,
"H"
,
"I"
,
"J"
,
"K"
,
"L"
,
"M"
,
"N"
,
"O"
,
"P"
,
"Q"
,
"R"
,
"S"
,
"T"
,
"U"
,
"V"
,
"W"
,
"X"
,
"Y"
,
"Z"
};
private
String
[]
empfangeneNachricht
;
private
static
final
String
alphabet
=
"ABCDEFGHIJKLMNOPQRSTUVWXYZ"
;
private
String
textEingabe
;
private
String
textCodiert
;
private
char
chiffrierterBuchstabe
;
private
ArrayList
<
MenuItem
>
mItem
;
private
boolean
resetDisplay
;
private
Codierer
codierer
;
private
enum
BUCHSTABE_LEUCHTET
{
AN
,
AUS
}
@FXML
private
static
ToggleButton
[]
tBtnPort
;
//endregion
//endregion
//region GUI-Elemente
//deklariert die benötigten Buttons
@FXML
private
Button
btnA
,
btnB
,
btnC
,
btnD
,
btnE
,
btnF
,
btnG
,
btnH
,
btnI
,
btnJ
,
btnK
,
btnL
,
btnM
,
btnN
,
btnO
,
btnP
,
btnQ
,
btnR
,
btnS
,
btnT
,
btnU
,
btnV
,
btnW
,
btnX
,
btnY
,
btnZ
,
btnSenden
,
btnEmpfangen
,
btnDelete
,
btnReset
,
btnPort0
,
btnPort1
,
btnPort2
,
btnPort3
,
btnPort4
,
btnPort5
,
btnPort6
,
btnPort7
,
btnPort8
,
btnPort9
;
btnR
,
btnS
,
btnT
,
btnU
,
btnV
,
btnW
,
btnX
,
btnY
,
btnZ
,
btnSenden
,
btnEmpfangen
,
btnDelete
,
btnReset
;
//deklariert die benötigten Kreise
@FXML
private
Circle
circA
,
circB
,
circC
,
circD
,
circE
,
circF
,
circG
,
circH
,
circI
,
circJ
,
circK
,
circL
,
circM
,
circN
,
circO
,
circP
,
circQ
,
circR
,
circS
,
circT
,
circU
,
circV
,
circW
,
circX
,
circY
,
circZ
;
//deklariert die benötigten Label
@FXML
private
Label
lblA
,
lblB
,
lblC
,
lblD
,
lblE
,
lblF
,
lblG
,
lblH
,
lblI
,
lblJ
,
lblK
,
lblL
,
lblM
,
lblN
,
lblO
,
lblP
,
lblQ
,
lblR
,
lblS
,
lblT
,
lblU
,
lblV
,
lblW
,
lblX
,
lblY
,
lblZ
,
lblLadeNachricht
,
lblTagesschluessel
,
lblSpruchschluessel
,
lblKenngruppe
,
lblProgressText
;
//deklariert den ProgressIndicator
@FXML
private
ProgressIndicator
piProgress
;
private
Label
lblSpruchschluessel
,
lblKenngruppe
;
//deklariert die MenueButtons
@FXML
private
MenuButton
mBtnWalzPos1
,
mBtnWalzPos2
,
mBtnWalzPos3
,
mBtnNotchPos1
,
mBtnNotchPos2
,
mBtnNotchPos3
,
mBtnStartPos1
,
mBtnStartPos2
,
mBtnStartPos3
;
//deklariert die benötigten Textfelder
@FXML
private
TextField
tf
Stecker1
,
tfStecker2
,
tfStecker3
,
tfStecker4
,
tfStecker5
,
tfStecker6
,
tfStecker7
,
tfStecker8
,
tfStecker9
,
tfStecker10
,
tfCodiert
,
tfKlartext
;
private
TextField
tf
Codiert
,
tfKlartext
;
//deklariert benötigtes pane
@FXML
private
Pane
paneProgress
,
portPane0
,
portPane1
,
portPane2
,
portPane3
,
portPane4
,
portPane5
,
portPane6
,
portPane7
,
portPane8
,
portPane9
;
private
Pane
portPane0
,
portPane1
,
portPane2
,
portPane3
,
portPane4
,
portPane5
,
portPane6
,
portPane7
,
portPane8
,
portPane9
;
//deklariert benötigtes GridPane
@FXML
private
GridPane
mainGrid
;
//endregion
//endregion
//region Init
/**
* Initialisiert die Elemente GUI und setzt deren Startwerte
*/
@FXML
void
initialize
()
{
// Variablen setzen
textEingabe
=
""
;
textCodiert
=
""
;
...
...
@@ -108,7 +99,7 @@ public class GuiController {
menu
(
mBtnStartPos2
,
position
);
myToggleButtons
(
10
);
myToggleButtons
();
}
...
...
@@ -117,7 +108,6 @@ public class GuiController {
* Hier wird die Funktion zum erstellen und Befüllen der Boxen, die Funktion zehn mal aufgerufen.
*/
private
void
generateSteckbrett
()
{
for
(
int
i
=
0
;
i
<=
9
;
i
++)
{
this
.
createSteckbrettPort
(
i
);
}
...
...
@@ -131,7 +121,6 @@ public class GuiController {
* @param port : int : Kabel Nummer (0-9)
*/
private
void
createSteckbrettPort
(
int
port
)
{
// Holt die verfügbaren Buchstaben für diesen Port ab und erstellt ein char Array daraus
char
[]
verfuegbareBuchstaben
=
this
.
codierer
.
fetchVerfuegbareBuchstaben
(
port
).
toCharArray
();
...
...
@@ -165,8 +154,7 @@ public class GuiController {
* @param button : Button für die die Einträge erstellt werden sollen
*/
private
void
menu
(
MenuButton
button
,
String
[]
str
)
{
mItem
=
new
ArrayList
<>();
ArrayList
<
MenuItem
>
mItem
=
new
ArrayList
<>();
for
(
int
i
=
0
;
i
<
str
.
length
;
i
++)
{
//Eintrag aus str der Arraylist mi hinzufügen
...
...
@@ -175,15 +163,15 @@ public class GuiController {
button
.
getItems
().
add
(
mItem
.
get
(
i
));
int
finalI
=
i
;
//Listener für die einzelnen Einträge
ArrayList
<
MenuItem
>
finalMi
=
mItem
;
mItem
.
get
(
i
).
setOnAction
(
e
->
setMenuBtnText
(
button
,
finalMi
.
get
(
finalI
)));
mItem
.
get
(
i
).
setOnAction
(
e
->
setMenuBtnText
(
button
,
mItem
.
get
(
finalI
)));
}
}
/**
* TODO: Doku
* @param port
* @param status
*
* @param port : int : Port zu dem das Panel geändert werden soll
* @param status : aktivieren/deaktivieren
*/
private
void
switchPortVisible
(
int
port
,
boolean
status
)
{
switch
(
port
)
{
...
...
@@ -224,47 +212,34 @@ public class GuiController {
}
/**
* TODO
*
* @param countOfBtn
* TODO: Doku
*/
private
void
myToggleButtons
(
int
countOfBtn
)
{
private
void
myToggleButtons
()
{
final
ToggleGroup
cabelConnect
=
new
ToggleGroup
();
tBtnPort
=
new
ToggleButton
[
countOfBtn
];
for
(
int
i
=
0
;
i
<
countOfBtn
;
i
++)
{
switchPortVisible
(
i
,
false
);
tBtnPort
=
new
ToggleButton
[
10
];
for
(
int
i
=
0
;
i
<
10
;
i
++)
{
tBtnPort
[
i
]
=
new
ToggleButton
(
i
+
"Port"
);
tBtnPort
[
i
].
setAlignment
(
Pos
.
CENTER_RIGHT
);
tBtnPort
[
i
].
setToggleGroup
(
cabelConnect
);
//if (i == 0) tBtnPort[0].setSelected(true);
/* tBtnPort[i].setOnAction(event -> {
*//* portPane[].setVisible(false);*//*
});*/
mainGrid
.
setMargin
(
tBtnPort
[
i
],
new
Insets
(
0
,
15
,
0
,
15
));
GridPane
.
setMargin
(
tBtnPort
[
i
],
new
Insets
(
0
,
15
,
0
,
15
));
mainGrid
.
add
(
tBtnPort
[
i
],
i
+
1
,
8
);
cabelConnect
.
selectedToggleProperty
().
addListener
(
new
ChangeListener
<
Toggle
>()
{
@Override
public
void
changed
(
ObservableValue
<?
extends
Toggle
>
observable
,
Toggle
oldValue
,
Toggle
newValue
)
{
//TODO
for
(
int
j
=
0
;
j
<
10
;
j
++)
{
if
(
cabelConnect
.
getSelectedToggle
()
==
tBtnPort
[
j
])
{
switchPortVisible
(
j
,
true
);
}
else
if
(
cabelConnect
.
getSelectedToggle
()
!=
tBtnPort
[
j
])
{
/* if (cabelConnect.getSelectedToggle() == tBtnPort[i]) {*/
switchPortVisible
(
j
,
false
);
/* }*/
}
addListener
((
observable
,
oldValue
,
newValue
)
->
{
//TODO
for
(
int
j
=
0
;
j
<
10
;
j
++)
{
if
(
cabelConnect
.
getSelectedToggle
()
==
tBtnPort
[
j
])
{
switchPortVisible
(
j
,
true
);
}
else
if
(
cabelConnect
.
getSelectedToggle
()
!=
tBtnPort
[
j
])
{
switchPortVisible
(
j
,
false
);
}
}
});
}
}
//endregion
//region EventHandler/Listener
/**
* Wird ausgelöst wenn der gedrückte Button losgelassen wird.
* Setzt die Hintergrundfarbe des Kreises mit dem chiffrierten Buchstaben auf grau,
...
...
@@ -440,14 +415,13 @@ public class GuiController {
if
(
e
.
getSource
()
==
btnReset
)
{
codierer
.
resetHardware
();
this
.
resetDisplay
=
true
;
this
.
lblSpruchschluessel
.
setText
(
""
);
this
.
setzeTagesSchluessel
();
}
}
//endregion
//region Methoden
/**
* Setzt die Hintergrundfarbe des Kreises (chiffrierter Buchstabe) auf gelb bzw. auf grau.
*
...
...
@@ -587,7 +561,6 @@ public class GuiController {
* sowie den Klartext in das Textfeld tfKlartext. Setzt den Spruchschlüssel
*/
private
void
empfangeFunkspruch
()
{
progressDialogue
(
"rx"
);
try
{
...
...
@@ -613,7 +586,6 @@ public class GuiController {
* Löscht die Textfelder tfKlartext und tfCodiert
*/
private
void
sendeFunkspruch
()
{
this
.
tfKlartext
.
setText
(
""
);
this
.
tfCodiert
.
setText
(
""
);
...
...
@@ -623,16 +595,16 @@ public class GuiController {
/**
* TODO
*
* @param strRxTx
* @param strRxTx
: String : RX oder TX
*/
private
void
progressDialogue
(
String
strRxTx
)
{
Task
copyWorker
=
createWorker
(
strRxTx
);
ProgressIndicator
pi
=
new
ProgressIndicator
();
pi
.
setProgress
(-
1
);
ProgressDialog
dialog
=
new
ProgressDialog
(
copyWorker
);
dialog
.
initStyle
(
StageStyle
.
TRANSPARENT
);
dialog
.
setGraphic
(
null
);
dialog
.
initStyle
(
StageStyle
.
TRANSPARENT
);
dialog
.
setTitle
(
"Kommunikation zum Funkraum"
);
if
(
strRxTx
.
equals
(
"rx"
))
{
dialog
.
setContentText
(
"Empfange Nachricht"
);
...
...
@@ -640,7 +612,7 @@ public class GuiController {
dialog
.
setContentText
(
"Sende Nachricht"
);
}
dialog
.
setHeaderText
(
null
);
dialog
.
setGraphic
(
null
);
dialog
.
setGraphic
(
pi
);
dialog
.
initStyle
(
StageStyle
.
UTILITY
);
new
Thread
(
copyWorker
).
start
();
dialog
.
showAndWait
();
...
...
@@ -649,13 +621,13 @@ public class GuiController {
/**
* TODO
*
* @param strRxTx
* @return
* @param strRxTx
: String : RX oder TX
* @return
boolean
*/
public
Task
createWorker
(
String
strRxTx
)
{
return
new
Task
()
{
@Override
protected
Object
call
()
throws
Exception
{
protected
Object
call
()
{
if
(
strRxTx
.
equals
(
"rx"
))
{
empfangeneNachricht
=
codierer
.
empfangeNachricht
();
}
else
if
(
strRxTx
.
equals
(
"tx"
))
{
...
...
@@ -761,37 +733,16 @@ public class GuiController {
* @param walzeNr => gibt die Walzennummer an
*/
private
void
setzeWalze
(
int
walzenPosition
,
int
walzeNr
)
{
//int walzeNr = 0;
switch
(
walzeNr
)
{
case
1
:
walzeNr
=
0
;
break
;
case
2
:
walzeNr
=
1
;
break
;
case
3
:
walzeNr
=
2
;
break
;
case
4
:
walzeNr
=
3
;
break
;
case
5
:
walzeNr
=
4
;
break
;
default
:
break
;
}
switch
(
walzenPosition
)
{
case
1
:
mBtnWalzPos1
.
setText
(
walzenNr
[
walzeNr
]);
mBtnWalzPos1
.
setText
(
walzenNr
[
walzeNr
-
1
]);
//codierer.setWalze(walzeNr, walzenPosition)
break
;
case
2
:
mBtnWalzPos2
.
setText
(
walzenNr
[
walzeNr
]);
mBtnWalzPos2
.
setText
(
walzenNr
[
walzeNr
-
1
]);
break
;
case
3
:
mBtnWalzPos3
.
setText
(
walzenNr
[
walzeNr
]);
mBtnWalzPos3
.
setText
(
walzenNr
[
walzeNr
-
1
]);
break
;
default
:
break
;
...
...
@@ -866,8 +817,11 @@ public class GuiController {
// Steckbrett Felder setzen
setzeSteckverbindungen
();
// Setzt das Steckbrett
generateSteckbrett
();
// Felder zurück setzen
this
.
textCodiert
=
""
;
this
.
textEingabe
=
""
;
this
.
tfKlartext
.
setText
(
""
);
...
...
@@ -875,18 +829,20 @@ public class GuiController {
}
/**
* TODO
* TODO
: Doku
*
* @param kenngruppe
* @param kenngruppe
: String : Die Kenngruppe die gesetzt werden soll
*/
public
void
setKenngruppe
(
String
kenngruppe
)
{
// Initialisieren des Codierers und setzen der Kenngruppe
codierer
=
new
Codierer
(
kenngruppe
);
codierer
=
new
Codierer
(
kenngruppe
.
toUpperCase
()
);
this
.
codierer
.
resetHardware
();
//Setzt die Kenngruppe in der GUI
lblKenngruppe
.
setText
(
this
.
codierer
.
getKenngruppe
());
lblKenngruppe
.
setText
(
"Kenngruppe: "
+
this
.
codierer
.
getKenngruppe
());
// Beim nächsten Tastendruck erstmal das Display löschen damit falschen Nachrichten geschickt werden.
resetDisplay
=
true
;
...
...
This diff is collapsed.
Click to expand it.
src/main/resources/projekt/enigma/gui.fxml
+
272
−
445
View file @
ddb06720
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment