-
+
+
activeSchemeId:org.eclipse.ui.defaultAcceleratorConfiguration
-
+
@@ -11,9 +11,9 @@
topLevel
shellMaximized
-
-
-
+
+
+
persp.actionSet:org.eclipse.mylyn.tasks.ui.navigation
persp.actionSet:org.eclipse.ui.cheatsheets.actionSet
@@ -81,2676 +81,2662 @@
persp.editorOnboardingCommand:Show Key Assist$$$Shift+Ctrl+L
persp.editorOnboardingCommand:New$$$Ctrl+N
persp.editorOnboardingCommand:Open Type$$$Shift+Ctrl+T
-
-
-
+
+
+
org.eclipse.e4.primaryNavigationStack
-
+
View
categoryTag:Java
-
+
View
categoryTag:Java
-
+
View
categoryTag:General
-
+
View
categoryTag:Java
-
-
+
+
View
categoryTag:Git
-
-
-
-
+
+
+
+
org.eclipse.e4.secondaryNavigationStack
-
+
View
categoryTag:General
-
+
View
categoryTag:General
-
+
View
categoryTag:General
-
+
View
categoryTag:Mylyn
-
+
View
categoryTag:Java
-
+
View
categoryTag:Ant
-
+
org.eclipse.e4.secondaryDataStack
Gradle
Oomph
-
+ active
+
View
categoryTag:General
-
+
View
categoryTag:Java
-
+
View
categoryTag:Java
-
+
View
categoryTag:General
-
+
View
categoryTag:General
-
+
View
categoryTag:General
-
+
View
categoryTag:General
-
+
View
categoryTag:Terminal
-
+
View
categoryTag:Gradle
-
+
View
categoryTag:Gradle
-
- View
- categoryTag:Oomph
- NoRestore
-
-
-
+
+
View
categoryTag:Help
-
+
View
categoryTag:General
-
+
View
categoryTag:Help
-
+
View
categoryTag:Help
-
+
View
categoryTag:General
-
+
ViewMenu
menuContribution:menu
-
+
-
+
View
categoryTag:Help
-
-
+
+
EditorStack
org.eclipse.e4.primaryDataStack
- active
-
+
Editor
removeOnHide
org.eclipse.jdt.ui.CompilationUnitEditor
- active
-
+
Editor
removeOnHide
org.eclipse.jdt.ui.CompilationUnitEditor
-
+
Editor
removeOnHide
org.eclipse.jdt.ui.CompilationUnitEditor
-
+
Editor
removeOnHide
org.eclipse.jdt.ui.CompilationUnitEditor
-
+
Editor
removeOnHide
org.eclipse.jdt.ui.CompilationUnitEditor
+
+
+ Editor
+ removeOnHide
+ org.eclipse.jdt.ui.CompilationUnitEditor
+
-
+
View
categoryTag:Java
-
+
ViewMenu
menuContribution:menu
-
+
-
+
View
categoryTag:Java
-
+
View
categoryTag:General
-
+
View
categoryTag:General
-
+
ViewMenu
menuContribution:menu
-
+
-
+
View
categoryTag:Java
-
+
View
categoryTag:Java
-
+
View
categoryTag:General
-
+
ViewMenu
menuContribution:menu
-
+
-
+
View
categoryTag:General
-
+ active
+ activeOnClose
+
ViewMenu
menuContribution:menu
-
+
-
+
View
categoryTag:General
-
+
View
categoryTag:General
-
+
View
categoryTag:General
-
+
ViewMenu
menuContribution:menu
-
+
-
+
View
categoryTag:General
-
+
View
categoryTag:General
-
+
View
categoryTag:Mylyn
-
+
View
categoryTag:Terminal
-
+
View
categoryTag:Java
-
+
View
categoryTag:Git
-
+
View
categoryTag:Java
-
+
View
categoryTag:Ant
-
+
View
categoryTag:Gradle
-
+
ViewMenu
menuContribution:menu
-
+
-
+
View
categoryTag:Gradle
-
+
ViewMenu
menuContribution:menu
-
+
-
-
-
-
- View
- categoryTag:Oomph
- NoRestore
-
- ViewMenu
- menuContribution:menu
-
-
-
-
-
+
+
toolbarSeparator
-
+
-
+
Draggable
-
+
-
+
toolbarSeparator
-
+
-
+
Draggable
-
-
+
+
-
+
toolbarSeparator
-
+
-
+
Draggable
-
+
Draggable
-
+
Draggable
-
+
Draggable
-
+
toolbarSeparator
-
+
-
+
Draggable
-
+
-
- Draggable
-
-
+
toolbarSeparator
-
+
-
+
toolbarSeparator
-
+
-
+
Draggable
-
+
stretch
SHOW_RESTORE_MENU
-
+
Draggable
HIDEABLE
SHOW_RESTORE_MENU
-
-
+
+
stretch
-
+
Draggable
-
+
Draggable
-
-
+
+
TrimStack
Draggable
-
+
TrimStack
Draggable
-
-
+
+
TrimStack
Draggable
-
+
TrimStack
Draggable
-
+
TrimStack
Draggable
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
platform:gtk
-
-
-
-
+
+
+
+
platform:gtk
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
+
+
+
+
+
-
-
+
+
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
-
-
+
+
-
-
-
+
+
+
-
-
-
-
-
+
+
+
+
+
-
-
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
platform:gtk
-
-
-
-
-
+
+
+
+
+
-
-
+
+
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
+
+
+
+
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
+
+
+
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
-
-
+
+
-
-
-
-
-
-
-
+
+
+
+
+
+
+
-
-
-
-
+
+
+
+
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
-
-
+
+
-
-
-
-
-
-
+
+
+
+
+
+
-
-
-
-
-
-
+
+
+
+
+
+
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
-
-
+
+
-
-
-
-
+
+
+
+
-
-
+
+
-
-
+
+
-
-
-
+
+
+
-
-
+
+
-
-
-
+
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
+
+
+
+
+
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
-
-
-
-
-
+
+
+
+
+
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Editor
removeOnHide
-
+
View
categoryTag:Ant
-
+
View
categoryTag:Gradle
-
+
View
categoryTag:Gradle
-
+
View
categoryTag:Debug
-
+
View
categoryTag:Debug
-
+
View
categoryTag:Debug
-
+
View
categoryTag:Debug
-
+
View
categoryTag:Debug
-
+
View
categoryTag:Debug
-
+
View
categoryTag:Debug
-
+
View
categoryTag:Debug
-
+
View
categoryTag:Java
-
+
View
categoryTag:Git
-
+
View
categoryTag:Git
-
+
View
categoryTag:Git
-
+
View
categoryTag:Git
NoRestore
-
+
View
categoryTag:Git
-
+
View
categoryTag:Help
-
+
View
categoryTag:Java
-
+
View
categoryTag:Java
-
+
View
categoryTag:Debug
-
+
View
categoryTag:Java
-
+
View
categoryTag:Java
-
+
View
categoryTag:Java
-
+
View
categoryTag:Java Browsing
-
+
View
categoryTag:Java Browsing
-
+
View
categoryTag:Java Browsing
-
+
View
categoryTag:Java Browsing
-
+
View
categoryTag:Java
-
+
View
categoryTag:General
-
+
View
categoryTag:Java
-
+
View
categoryTag:Java
-
+
View
categoryTag:Language Servers
-
+
View
categoryTag:Language Servers
-
+
View
categoryTag:Language Servers
-
+
View
categoryTag:Maven
-
+
View
categoryTag:Maven
-
+
View
categoryTag:Maven
-
+
View
categoryTag:Mylyn
-
+
View
categoryTag:Mylyn
-
+
View
categoryTag:Mylyn
-
+
View
categoryTag:Mylyn
-
+
View
categoryTag:Mylyn
-
+
View
categoryTag:Mylyn
-
+
View
categoryTag:Oomph
-
+
View
categoryTag:Oomph
NoRestore
-
+
View
categoryTag:Plug-in Development
-
+
View
categoryTag:General
-
+
View
categoryTag:Version Control (Team)
-
+
View
categoryTag:Version Control (Team)
-
+
View
categoryTag:Terminal
-
+
View
categoryTag:Help
-
+
View
categoryTag:General
-
+
View
categoryTag:General
-
+
View
categoryTag:Help
-
+
View
categoryTag:General
-
+
View
categoryTag:General
-
+
View
categoryTag:General
-
+
View
categoryTag:General
-
+
View
categoryTag:General
-
+
View
categoryTag:General
-
+
View
categoryTag:General
-
+
View
categoryTag:General
-
+
View
categoryTag:General
-
+
View
categoryTag:General
-
+
View
categoryTag:General
-
+
View
categoryTag:Docker
-
+
View
categoryTag:Docker
-
+
View
categoryTag:Docker
-
+
View
categoryTag:Docker
-
+
View
categoryTag:Other
-
+
View
categoryTag:Other
-
+
View
categoryTag:Other
-
-
+
+
glue
move_after:PerspectiveSpacer
SHOW_RESTORE_MENU
-
+
move_after:Spacer Glue
HIDEABLE
SHOW_RESTORE_MENU
-
+
glue
move_after:SearchField
SHOW_RESTORE_MENU
-
-
-
-
-
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
+
+
+
+
-
-
-
-
-
-
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
+
+
+
+
+
-
-
-
+
+
+
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
-
-
-
-
-
+
+
+
+
+
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
+
+
+
+
+
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
-
-
-
-
-
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
+
+
+
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/.metadata/.plugins/org.eclipse.jdt.core/1865797976.index b/.metadata/.plugins/org.eclipse.jdt.core/1865797976.index
index 8494320..4d3bf08 100644
Binary files a/.metadata/.plugins/org.eclipse.jdt.core/1865797976.index and b/.metadata/.plugins/org.eclipse.jdt.core/1865797976.index differ
diff --git a/.metadata/.plugins/org.eclipse.jdt.core/9341915.index b/.metadata/.plugins/org.eclipse.jdt.core/9341915.index
index 86141c1..73bb63e 100644
Binary files a/.metadata/.plugins/org.eclipse.jdt.core/9341915.index and b/.metadata/.plugins/org.eclipse.jdt.core/9341915.index differ
diff --git a/.metadata/.plugins/org.eclipse.jdt.core/externalFilesCache b/.metadata/.plugins/org.eclipse.jdt.core/externalFilesCache
index 81b0210..90ff561 100644
Binary files a/.metadata/.plugins/org.eclipse.jdt.core/externalFilesCache and b/.metadata/.plugins/org.eclipse.jdt.core/externalFilesCache differ
diff --git a/.metadata/.plugins/org.eclipse.jdt.core/nonChainingJarsCache b/.metadata/.plugins/org.eclipse.jdt.core/nonChainingJarsCache
index c5c2d04..7712708 100644
Binary files a/.metadata/.plugins/org.eclipse.jdt.core/nonChainingJarsCache and b/.metadata/.plugins/org.eclipse.jdt.core/nonChainingJarsCache differ
diff --git a/.metadata/.plugins/org.eclipse.jdt.ui/OpenTypeHistory.xml b/.metadata/.plugins/org.eclipse.jdt.ui/OpenTypeHistory.xml
index 213ebd1..172f389 100644
--- a/.metadata/.plugins/org.eclipse.jdt.ui/OpenTypeHistory.xml
+++ b/.metadata/.plugins/org.eclipse.jdt.ui/OpenTypeHistory.xml
@@ -1,4 +1,5 @@
-
+
+
diff --git a/.metadata/.plugins/org.eclipse.jdt.ui/QualifiedTypeNameHistory.xml b/.metadata/.plugins/org.eclipse.jdt.ui/QualifiedTypeNameHistory.xml
index 9e390f5..665eb58 100644
--- a/.metadata/.plugins/org.eclipse.jdt.ui/QualifiedTypeNameHistory.xml
+++ b/.metadata/.plugins/org.eclipse.jdt.ui/QualifiedTypeNameHistory.xml
@@ -1,2 +1,4 @@
-
+
+
+
diff --git a/.metadata/.plugins/org.eclipse.jdt.ui/dialog_settings.xml b/.metadata/.plugins/org.eclipse.jdt.ui/dialog_settings.xml
index e20e400..bbb970b 100644
--- a/.metadata/.plugins/org.eclipse.jdt.ui/dialog_settings.xml
+++ b/.metadata/.plugins/org.eclipse.jdt.ui/dialog_settings.xml
@@ -1,11 +1,12 @@
+
diff --git a/.metadata/.plugins/org.eclipse.ui.workbench/dialog_settings.xml b/.metadata/.plugins/org.eclipse.ui.workbench/dialog_settings.xml
index 83d3e3f..9c9b913 100644
--- a/.metadata/.plugins/org.eclipse.ui.workbench/dialog_settings.xml
+++ b/.metadata/.plugins/org.eclipse.ui.workbench/dialog_settings.xml
@@ -8,4 +8,11 @@
+
diff --git a/xxxthegame/src/main/java/de/oaa/xxx/config/ThemeController.java b/xxxthegame/src/main/java/de/oaa/xxx/config/ThemeController.java
new file mode 100644
index 0000000..03f3275
--- /dev/null
+++ b/xxxthegame/src/main/java/de/oaa/xxx/config/ThemeController.java
@@ -0,0 +1,49 @@
+package de.oaa.xxx.config;
+
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * Serves /css/variables.css dynamically from application.properties theme settings.
+ * All HTML pages load this first, so changing app.theme.* immediately updates the whole UI.
+ */
+@RestController
+public class ThemeController {
+
+ @Value("${app.theme.color-bg:#1a1a2e}")
+ private String colorBg;
+
+ @Value("${app.theme.color-card:#16213e}")
+ private String colorCard;
+
+ @Value("${app.theme.color-primary:#e94560}")
+ private String colorPrimary;
+
+ @Value("${app.theme.color-secondary:#0f3460}")
+ private String colorSecondary;
+
+ @Value("${app.theme.color-text:#eeeeee}")
+ private String colorText;
+
+ @Value("${app.theme.color-muted:#888888}")
+ private String colorMuted;
+
+ @Value("${app.theme.color-success:#2ecc71}")
+ private String colorSuccess;
+
+ @GetMapping(value = "/css/variables.css", produces = "text/css")
+ public String variables() {
+ return """
+ :root {
+ --color-bg: %s;
+ --color-card: %s;
+ --color-primary: %s;
+ --color-secondary: %s;
+ --color-text: %s;
+ --color-muted: %s;
+ --color-success: %s;
+ }
+ """.formatted(colorBg, colorCard, colorPrimary, colorSecondary, colorText, colorMuted, colorSuccess);
+ }
+}
diff --git a/xxxthegame/src/main/java/de/oaa/xxx/mail/MailTemplateService.java b/xxxthegame/src/main/java/de/oaa/xxx/mail/MailTemplateService.java
new file mode 100644
index 0000000..891ca8a
--- /dev/null
+++ b/xxxthegame/src/main/java/de/oaa/xxx/mail/MailTemplateService.java
@@ -0,0 +1,87 @@
+package de.oaa.xxx.mail;
+
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
+
+/**
+ * Generates HTML email bodies with inline styles derived from app.theme.* properties.
+ * Changing theme colors in application.properties automatically updates email appearance.
+ * (Email clients don't support external CSS or CSS variables, so styles must be inlined.)
+ */
+@Service
+public class MailTemplateService {
+
+ @Value("${app.theme.color-bg:#1a1a2e}")
+ private String colorBg;
+
+ @Value("${app.theme.color-card:#16213e}")
+ private String colorCard;
+
+ @Value("${app.theme.color-primary:#e94560}")
+ private String colorPrimary;
+
+ @Value("${app.theme.color-secondary:#0f3460}")
+ private String colorSecondary;
+
+ @Value("${app.theme.color-text:#eeeeee}")
+ private String colorText;
+
+ @Value("${app.theme.color-muted:#888888}")
+ private String colorMuted;
+
+ @Value("${app.theme.color-success:#2ecc71}")
+ private String colorSuccess;
+
+ public String buildActivationMail(String name, String activationLink, String activatePageUrl, String uuid) {
+ return """
+
+
+
+
+
+
XXX The Game
+
+
Moin %s,
+
Vielen Dank für deine Anmeldung!
+
Klick auf den Button, um deine E-Mail-Adresse zu bestätigen:
+
+
+
+
+
+
+ Falls der Button nicht funktioniert, öffne
+ %s
+ und gib folgenden Code ein:
+
+
+ %s
+
+
+
Viel Spaß beim Spiel!
+
+
+
+ """.formatted(
+ colorBg, colorText,
+ colorCard, colorSecondary,
+ colorPrimary,
+ colorText, name,
+ colorText,
+ colorText,
+ activationLink, colorPrimary,
+ colorSecondary,
+ colorMuted, activatePageUrl, colorPrimary, activatePageUrl,
+ colorSecondary, colorText,
+ uuid,
+ colorMuted
+ );
+ }
+}
diff --git a/xxxthegame/src/main/java/de/oaa/xxx/registration/RegistrationController.java b/xxxthegame/src/main/java/de/oaa/xxx/registration/RegistrationController.java
index 9e92de8..87fbcc1 100644
--- a/xxxthegame/src/main/java/de/oaa/xxx/registration/RegistrationController.java
+++ b/xxxthegame/src/main/java/de/oaa/xxx/registration/RegistrationController.java
@@ -11,6 +11,7 @@ import org.springframework.web.bind.annotation.RestController;
import de.oaa.xxx.mail.Email;
import de.oaa.xxx.mail.MailService;
+import de.oaa.xxx.mail.MailTemplateService;
import de.oaa.xxx.user.UserRepository;
@RestController
@@ -25,12 +26,14 @@ public class RegistrationController {
private final RegistrationRepository registrationRepository;
private final UserRepository userRepository;
private final MailService mailService;
+ private final MailTemplateService mailTemplateService;
public RegistrationController(RegistrationRepository registrationRepository, UserRepository userRepository,
- MailService mailService) {
+ MailService mailService, MailTemplateService mailTemplateService) {
this.registrationRepository = registrationRepository;
this.userRepository = userRepository;
this.mailService = mailService;
+ this.mailTemplateService = mailTemplateService;
}
@PostMapping
@@ -43,12 +46,14 @@ public class RegistrationController {
}
RegistrationEntity entity = RegistrationEntity.create(registration);
registrationRepository.save(entity);
- registration.setId(entity.getRegistrationId());
Email email = new Email();
email.setTitel("Bitte bestätige deine E-Mail Adresse");
email.setEmailAdresse(registration.getEmail());
- email.setText(getMailText(registration));
+ String uuid = entity.getRegistrationId().toString();
+ String activationLink = baseUrl + "/activation/" + uuid;
+ String activatePageUrl = baseUrl + "/activate.html";
+ email.setText(mailTemplateService.buildActivationMail(registration.getName(), activationLink, activatePageUrl, uuid));
if (!mailService.send(email)) {
registrationRepository.delete(entity);
@@ -57,20 +62,5 @@ public class RegistrationController {
return ResponseEntity.status(202).build();
}
- private String getMailText(Registration registration) {
- String uuid = registration.getId().toString();
- return """
-
- Moin %s
- Vielen Dank für deine Anmeldung bei XXX-BDSM Game!
- Klicke hier um deine E-Mail-Adresse zu bestätigen.
-
-
- Falls der Link nicht funktioniert, kannst du deine E-Mail-Adresse auch manuell bestätigen.
- Öffne dazu %s/activate.html und gib folgenden Code ein:
-
- %s
- Viel Spaß beim Spiel!
- """.formatted(registration.getName(), baseUrl, uuid, baseUrl, baseUrl, uuid);
- }
+
}
diff --git a/xxxthegame/src/main/resources/application.properties b/xxxthegame/src/main/resources/application.properties
index 6cbc71c..721341d 100644
--- a/xxxthegame/src/main/resources/application.properties
+++ b/xxxthegame/src/main/resources/application.properties
@@ -31,6 +31,18 @@ jwt.keystore.path=classpath:xxx.jks
jwt.keystore.password=${JWT_KEYSTORE_PASSWORD:XUR!Rv&f$j3UsqD&}
jwt.keystore.alias=xxx
+# App
+app.base-url=http://localhost:8080
+
+# Theme – alle Farben hier ändern, Email-Style passt sich automatisch an
+app.theme.color-bg=#1a1a2e
+app.theme.color-card=#16213e
+app.theme.color-primary=#e94560
+app.theme.color-secondary=#0f3460
+app.theme.color-text=#eeeeee
+app.theme.color-muted=#888888
+app.theme.color-success=#2ecc71
+
# Server
server.port=8080
server.servlet.context-path=/
diff --git a/xxxthegame/src/main/resources/static/activate.html b/xxxthegame/src/main/resources/static/activate.html
index 767671d..3ba4e59 100644
--- a/xxxthegame/src/main/resources/static/activate.html
+++ b/xxxthegame/src/main/resources/static/activate.html
@@ -4,6 +4,7 @@
XXX The Game – Aktivierung
+
diff --git a/xxxthegame/src/main/resources/static/css/style.css b/xxxthegame/src/main/resources/static/css/style.css
index 718da63..37cd0b6 100644
--- a/xxxthegame/src/main/resources/static/css/style.css
+++ b/xxxthegame/src/main/resources/static/css/style.css
@@ -12,25 +12,25 @@ body {
flex-direction: column;
align-items: center;
justify-content: center;
- background: #1a1a2e;
+ background: var(--color-bg);
font-family: 'Segoe UI', sans-serif;
- color: #eee;
+ color: var(--color-text);
gap: 2rem;
}
h1 {
- color: #e94560;
+ color: var(--color-primary);
}
p {
- color: #888;
+ color: var(--color-muted);
font-size: 1rem;
}
/* ── Card ── */
.card {
- background: #16213e;
- border: 1px solid #0f3460;
+ background: var(--color-card);
+ border: 1px solid var(--color-secondary);
border-radius: 12px;
padding: 2.5rem;
width: 100%;
@@ -48,7 +48,7 @@ p {
.subtitle {
text-align: center;
font-size: 0.85rem;
- color: #888;
+ color: var(--color-muted);
margin-bottom: 2rem;
}
@@ -64,24 +64,24 @@ label {
input {
width: 100%;
padding: 0.65rem 0.9rem;
- border: 1px solid #0f3460;
+ border: 1px solid var(--color-secondary);
border-radius: 6px;
- background: #0f3460;
- color: #eee;
+ background: var(--color-secondary);
+ color: var(--color-text);
font-size: 1rem;
outline: none;
transition: border-color 0.2s;
}
input:focus {
- border-color: #e94560;
+ border-color: var(--color-primary);
}
/* ── Buttons ── */
button, .btn {
display: inline-block;
padding: 0.75rem 2.5rem;
- background: #e94560;
+ background: var(--color-primary);
color: #fff;
border: none;
border-radius: 6px;
@@ -108,7 +108,7 @@ button.full-width {
}
button.secondary {
- background: #0f3460;
+ background: var(--color-secondary);
font-weight: normal;
padding: 0.3rem 0.7rem;
font-size: 0.75rem;
@@ -132,14 +132,14 @@ button.secondary:hover {
.message.error {
background: #3d0f1a;
- border: 1px solid #e94560;
- color: #e94560;
+ border: 1px solid var(--color-primary);
+ color: var(--color-primary);
}
.message.success {
background: #0f3d1a;
- border: 1px solid #2ecc71;
- color: #2ecc71;
+ border: 1px solid var(--color-success);
+ color: var(--color-success);
}
/* ── Token box ── */
@@ -147,7 +147,7 @@ button.secondary:hover {
margin-top: 1.25rem;
padding: 0.65rem 0.9rem;
background: #0f1e3d;
- border: 1px solid #0f3460;
+ border: 1px solid var(--color-secondary);
border-radius: 6px;
font-size: 0.75rem;
color: #aaa;
diff --git a/xxxthegame/src/main/resources/static/index.html b/xxxthegame/src/main/resources/static/index.html
index cf0f9e2..efc090f 100644
--- a/xxxthegame/src/main/resources/static/index.html
+++ b/xxxthegame/src/main/resources/static/index.html
@@ -4,6 +4,7 @@
XXX The Game
+
diff --git a/xxxthegame/src/main/resources/static/login.html b/xxxthegame/src/main/resources/static/login.html
index 18ec088..35c68c8 100644
--- a/xxxthegame/src/main/resources/static/login.html
+++ b/xxxthegame/src/main/resources/static/login.html
@@ -4,6 +4,7 @@
XXX The Game – Login
+
diff --git a/xxxthegame/src/main/resources/static/registration.html b/xxxthegame/src/main/resources/static/registration.html
index e161de7..20be204 100644
--- a/xxxthegame/src/main/resources/static/registration.html
+++ b/xxxthegame/src/main/resources/static/registration.html
@@ -4,6 +4,7 @@
XXX The Game – Registrierung
+
diff --git a/xxxthegame/src/main/resources/static/userhome.html b/xxxthegame/src/main/resources/static/userhome.html
index 97ab5f9..9e9515a 100644
--- a/xxxthegame/src/main/resources/static/userhome.html
+++ b/xxxthegame/src/main/resources/static/userhome.html
@@ -4,6 +4,7 @@
XXX The Game
+