From 1779073ba5ce5663952bd029f3c7ea43991ea675 Mon Sep 17 00:00:00 2001 From: rylon Date: Mon, 9 Dec 2013 15:03:55 +0100 Subject: [PATCH] namefixes, some old content --- .../Jan_Camensich.pdf | Bin ...graben_ Alexanderstraße_20110614_160000.TXT} | Bin ...rer Automat.pdf => Zellulaaerer Automat.pdf} | 0 ...rer Automat.pdf => Zellulaaerer Automat.pdf} | 0 .../BachelorThesis - Vortrag TK.pdf | Bin .../BachelorThesis - Vortrag TK.pptx | Bin .../ergebnisse.ods | Bin .../ergebnisse.pdf | Bin .../ergebnisse_08_05.ods | Bin .../ergebnisse_08_05.pdf | Bin .../exercise/src/GDI Calendar/.classpath | 7 + .../gdi I/exercise/src/GDI Calendar/.project | 17 + .../.settings/org.eclipse.jdt.core.prefs | 12 + .../src/GdICalendarTemplate/Calendar.java | 106 ++++ .../GdICalendarTemplate/CalendarEntry.java | 151 +++++ .../src/GdICalendarTemplate/User.java | 78 +++ .../src/GDI Calendar/tests/CalendarTest.java | 54 ++ .../exercise/src/GDI Calendar2/.classpath | 7 + .../gdi I/exercise/src/GDI Calendar2/.project | 17 + .../.settings/org.eclipse.jdt.core.prefs | 12 + .../src/GDI Calendar2/src/Calendar.java | 190 ++++++ .../src/GDI Calendar2/src/CalendarEntry.java | 168 ++++++ .../src/CalendarEntryDuration.java | 199 +++++++ .../src/GDI Calendar2/src/Developer.java | 20 + .../src/GDI Calendar2/src/Illness.java | 27 + .../src/GDI Calendar2/src/Meeting.java | 112 ++++ .../exercise/src/GDI Calendar2/src/Note.java | 35 ++ .../src/GDI Calendar2/src/Reminder.java | 44 ++ .../src/GDI Calendar2/src/Secretary.java | 19 + .../exercise/src/GDI Calendar2/src/User.java | 80 +++ .../src/GDI Calendar2/src/Vacation.java | 27 + .../src/GDI Calendar2/tests/CalendarTest.java | 453 ++++++++++++++ ws2009/gdi I/exercise/src/Plumber/.classpath | 8 + ws2009/gdi I/exercise/src/Plumber/.project | 17 + .../.settings/org.eclipse.jdt.core.prefs | 12 + .../gdi I/exercise/src/Plumber/Plumber.de_DE | 101 ++++ .../gdi I/exercise/src/Plumber/Plumber.en_US | 101 ++++ .../tu_darmstadt/gdi1/plumber/Plumber.class | Bin 0 -> 1944 bytes .../gdi1/plumber/controller/Controller.class | Bin 0 -> 1059 bytes .../DefaultOutputHandler.class | Bin 0 -> 893 bytes .../exceptioncatcher/ExceptionCatcher.class | Bin 0 -> 2742 bytes .../ExceptionOutputHandler.class | Bin 0 -> 245 bytes .../controller/logic/LogicController$1.class | Bin 0 -> 969 bytes .../controller/logic/LogicController.class | Bin 0 -> 5242 bytes .../logic/level/LevelController.class | Bin 0 -> 6528 bytes .../logic/level/ModuleElements.class | Bin 0 -> 2714 bytes .../logic/level/ModuleIsCorrect.class | Bin 0 -> 1752 bytes .../logic/level/ModuleLoadSave.class | Bin 0 -> 7242 bytes .../logic/level/ModuleStartEndTime.class | Bin 0 -> 5155 bytes .../logic/levelset/LevelSetController$1.class | Bin 0 -> 1061 bytes .../logic/levelset/LevelSetController.class | Bin 0 -> 4454 bytes .../plumber/controller/options/Option.class | Bin 0 -> 772 bytes .../plumber/controller/options/Options.class | Bin 0 -> 1596 bytes .../controller/view/ViewController$1.class | Bin 0 -> 955 bytes .../controller/view/ViewController.class | Bin 0 -> 6176 bytes .../view/theme/ThemeController.class | Bin 0 -> 7007 bytes .../gdi1/plumber/model/Model.class | Bin 0 -> 2343 bytes .../plumber/model/events/EventListener.class | Bin 0 -> 3720 bytes .../model/events/Event_interface.class | Bin 0 -> 234 bytes .../events/level/LevelEvent_abstract.class | Bin 0 -> 685 bytes .../plumber/model/events/level/NewLevel.class | Bin 0 -> 1305 bytes .../model/events/level/NewLevelElement.class | Bin 0 -> 921 bytes .../plumber/model/events/level/Rotate.class | Bin 0 -> 885 bytes .../model/events/level/SelectionChange.class | Bin 0 -> 960 bytes .../plumber/model/events/level/Timer.class | Bin 0 -> 881 bytes .../plumber/model/events/level/WaterOut.class | Bin 0 -> 893 bytes .../model/events/level/WaterStart.class | Bin 0 -> 901 bytes .../plumber/model/events/level/WaterWin.class | Bin 0 -> 893 bytes .../LevelElementEvent_abstract.class | Bin 0 -> 838 bytes .../model/events/levelelement/ReDo.class | Bin 0 -> 1011 bytes .../model/events/levelelement/Rotate.class | Bin 0 -> 1177 bytes .../model/events/levelelement/UnDo.class | Bin 0 -> 1011 bytes .../model/exceptions/PlumberError.class | Bin 0 -> 420 bytes .../model/exceptions/PlumberInfo.class | Bin 0 -> 417 bytes .../model/exceptions/PlumberWarning.class | Bin 0 -> 426 bytes .../plumber/model/highscores/Highscore.class | Bin 0 -> 4752 bytes .../model/highscores/HighscoreEntry.class | Bin 0 -> 1501 bytes .../gdi1/plumber/model/history/History.class | Bin 0 -> 1606 bytes .../events/HistoryEvent_interface.class | Bin 0 -> 209 bytes .../history/events/LevelRotateElement.class | Bin 0 -> 1224 bytes .../gdi1/plumber/model/level/Level$1.class | Bin 0 -> 1328 bytes .../gdi1/plumber/model/level/Level.class | Bin 0 -> 6026 bytes .../levelelements/Element_abstract.class | Bin 0 -> 2189 bytes .../model/levelelements/Pipe_Bent.class | Bin 0 -> 661 bytes .../model/levelelements/Pipe_Straight.class | Bin 0 -> 673 bytes .../plumber/model/levelelements/Sink.class | Bin 0 -> 580 bytes .../plumber/model/levelelements/Well.class | Bin 0 -> 580 bytes .../plumber/model/levelsets/LevelSet.class | Bin 0 -> 2111 bytes .../PlumberTestAdapterExtended1.class | Bin 0 -> 2156 bytes .../PlumberTestAdapterExtended2.class | Bin 0 -> 1918 bytes .../PlumberTestAdapterExtended3.class | Bin 0 -> 666 bytes .../adapters/PlumberTestAdapterMinimal.class | Bin 0 -> 2854 bytes .../gdi1/plumber/view/ViewLogicListener.class | Bin 0 -> 4713 bytes .../gdi1/plumber/view/game/Panel.class | Bin 0 -> 5263 bytes .../gdi1/plumber/view/game/Window$1.class | Bin 0 -> 1198 bytes .../gdi1/plumber/view/game/Window$2.class | Bin 0 -> 948 bytes .../gdi1/plumber/view/game/Window$3.class | Bin 0 -> 945 bytes .../gdi1/plumber/view/game/Window$4.class | Bin 0 -> 945 bytes .../gdi1/plumber/view/game/Window$5.class | Bin 0 -> 945 bytes .../gdi1/plumber/view/game/Window$6.class | Bin 0 -> 946 bytes .../gdi1/plumber/view/game/Window$7.class | Bin 0 -> 946 bytes .../gdi1/plumber/view/game/Window.class | Bin 0 -> 8120 bytes .../view/tudframework/GamePanel$1.class | Bin 0 -> 845 bytes .../plumber/view/tudframework/GamePanel.class | Bin 0 -> 8998 bytes .../view/tudframework/GameWindow.class | Bin 0 -> 3573 bytes .../InternalFailureException.class | Bin 0 -> 672 bytes .../InvalidOperationException.class | Bin 0 -> 675 bytes .../ParameterOutOfRangeException.class | Bin 0 -> 1432 bytes .../plumber/view/windows/AboutWindow$1.class | Bin 0 -> 1243 bytes .../plumber/view/windows/AboutWindow$2.class | Bin 0 -> 1267 bytes .../plumber/view/windows/AboutWindow.class | Bin 0 -> 2949 bytes .../view/windows/DirectionsWindow$1.class | Bin 0 -> 1273 bytes .../view/windows/DirectionsWindow.class | Bin 0 -> 2656 bytes .../view/windows/HighscoreWindow$1.class | Bin 0 -> 1267 bytes .../view/windows/HighscoreWindow.class | Bin 0 -> 4064 bytes .../view/windows/MainMenuWindow$1.class | Bin 0 -> 1098 bytes .../view/windows/MainMenuWindow$2.class | Bin 0 -> 1574 bytes .../view/windows/MainMenuWindow$3.class | Bin 0 -> 1892 bytes .../view/windows/MainMenuWindow$4.class | Bin 0 -> 1888 bytes .../view/windows/MainMenuWindow$5.class | Bin 0 -> 1281 bytes .../view/windows/MainMenuWindow$6.class | Bin 0 -> 1465 bytes .../view/windows/MainMenuWindow$7.class | Bin 0 -> 1287 bytes .../view/windows/MainMenuWindow$8.class | Bin 0 -> 1282 bytes .../view/windows/MainMenuWindow$9.class | Bin 0 -> 1122 bytes .../plumber/view/windows/MainMenuWindow.class | Bin 0 -> 5865 bytes .../plumber/view/windows/Translatable$1.class | Bin 0 -> 1466 bytes .../plumber/view/windows/Translatable$2.class | Bin 0 -> 1461 bytes .../plumber/view/windows/Translatable.class | Bin 0 -> 2202 bytes .../Plumber/docu/Plumber Class-Diagramm.jpg | Bin 0 -> 233987 bytes .../exercise/src/Plumber/docu/Plumber.ump | 1 + .../gdi I/exercise/src/Plumber/docu/TODO.txt | 68 +++ .../src/Plumber/docu/plumberclassdiagram.xps | Bin 0 -> 173878 bytes .../gdi I/exercise/src/Plumber/docu/rules.txt | 14 + .../images/Skin_1/horizontal-filled.png | Bin 0 -> 5355 bytes .../src/Plumber/images/Skin_1/horizontal.png | Bin 0 -> 2625 bytes .../images/Skin_1/left-down-filled.png | Bin 0 -> 6283 bytes .../src/Plumber/images/Skin_1/left-down.png | Bin 0 -> 3264 bytes .../Plumber/images/Skin_1/left-up-filled.png | Bin 0 -> 6210 bytes .../src/Plumber/images/Skin_1/left-up.png | Bin 0 -> 3578 bytes .../images/Skin_1/right-down-filled.png | Bin 0 -> 6076 bytes .../src/Plumber/images/Skin_1/right-down.png | Bin 0 -> 3437 bytes .../Plumber/images/Skin_1/right-up-filled.png | Bin 0 -> 6241 bytes .../src/Plumber/images/Skin_1/right-up.png | Bin 0 -> 3546 bytes .../images/Skin_1/sink-down-filled.png | Bin 0 -> 6453 bytes .../src/Plumber/images/Skin_1/sink-down.png | Bin 0 -> 6450 bytes .../images/Skin_1/sink-left-filled.png | Bin 0 -> 6435 bytes .../src/Plumber/images/Skin_1/sink-left.png | Bin 0 -> 6410 bytes .../images/Skin_1/sink-right-filled.png | Bin 0 -> 6488 bytes .../src/Plumber/images/Skin_1/sink-right.png | Bin 0 -> 6466 bytes .../Plumber/images/Skin_1/sink-up-filled.png | Bin 0 -> 6482 bytes .../src/Plumber/images/Skin_1/sink-up.png | Bin 0 -> 6451 bytes .../images/Skin_1/source-down-filled.png | Bin 0 -> 7008 bytes .../src/Plumber/images/Skin_1/source-down.png | Bin 0 -> 6957 bytes .../images/Skin_1/source-left-filled.png | Bin 0 -> 7051 bytes .../src/Plumber/images/Skin_1/source-left.png | Bin 0 -> 6991 bytes .../images/Skin_1/source-right-filled.png | Bin 0 -> 6974 bytes .../Plumber/images/Skin_1/source-right.png | Bin 0 -> 6906 bytes .../images/Skin_1/source-up-filled.png | Bin 0 -> 6967 bytes .../src/Plumber/images/Skin_1/source-up.png | Bin 0 -> 6898 bytes .../Plumber/images/Skin_1/vertical-filled.png | Bin 0 -> 5533 bytes .../src/Plumber/images/Skin_1/vertical.png | Bin 0 -> 3196 bytes .../images/Skin_2/horizontal-filled.png | Bin 0 -> 6852 bytes .../src/Plumber/images/Skin_2/horizontal.png | Bin 0 -> 6609 bytes .../images/Skin_2/left-down-filled.png | Bin 0 -> 6760 bytes .../src/Plumber/images/Skin_2/left-down.png | Bin 0 -> 6307 bytes .../Plumber/images/Skin_2/left-up-filled.png | Bin 0 -> 6798 bytes .../src/Plumber/images/Skin_2/left-up.png | Bin 0 -> 6456 bytes .../images/Skin_2/right-down-filled.png | Bin 0 -> 6627 bytes .../src/Plumber/images/Skin_2/right-down.png | Bin 0 -> 6396 bytes .../Plumber/images/Skin_2/right-up-filled.png | Bin 0 -> 6830 bytes .../src/Plumber/images/Skin_2/right-up.png | Bin 0 -> 6464 bytes .../images/Skin_2/sink-down-filled.png | Bin 0 -> 4085 bytes .../src/Plumber/images/Skin_2/sink-down.png | Bin 0 -> 4042 bytes .../images/Skin_2/sink-left-filled.png | Bin 0 -> 4045 bytes .../src/Plumber/images/Skin_2/sink-left.png | Bin 0 -> 3996 bytes .../images/Skin_2/sink-right-filled.png | Bin 0 -> 4062 bytes .../src/Plumber/images/Skin_2/sink-right.png | Bin 0 -> 4029 bytes .../Plumber/images/Skin_2/sink-up-filled.png | Bin 0 -> 4081 bytes .../src/Plumber/images/Skin_2/sink-up.png | Bin 0 -> 4035 bytes .../images/Skin_2/source-down-filled.png | Bin 0 -> 7534 bytes .../src/Plumber/images/Skin_2/source-down.png | Bin 0 -> 7455 bytes .../images/Skin_2/source-left-filled.png | Bin 0 -> 7570 bytes .../src/Plumber/images/Skin_2/source-left.png | Bin 0 -> 7447 bytes .../images/Skin_2/source-right-filled.png | Bin 0 -> 7475 bytes .../Plumber/images/Skin_2/source-right.png | Bin 0 -> 7353 bytes .../images/Skin_2/source-up-filled.png | Bin 0 -> 7566 bytes .../src/Plumber/images/Skin_2/source-up.png | Bin 0 -> 7502 bytes .../Plumber/images/Skin_2/vertical-filled.png | Bin 0 -> 6542 bytes .../src/Plumber/images/Skin_2/vertical.png | Bin 0 -> 6295 bytes .../images/Skin_3/horizontal-filled.png | Bin 0 -> 4518 bytes .../src/Plumber/images/Skin_3/horizontal.png | Bin 0 -> 4414 bytes .../images/Skin_3/left-down-filled.png | Bin 0 -> 5643 bytes .../src/Plumber/images/Skin_3/left-down.png | Bin 0 -> 5290 bytes .../Plumber/images/Skin_3/left-up-filled.png | Bin 0 -> 5619 bytes .../src/Plumber/images/Skin_3/left-up.png | Bin 0 -> 5322 bytes .../images/Skin_3/right-down-filled.png | Bin 0 -> 5540 bytes .../src/Plumber/images/Skin_3/right-down.png | Bin 0 -> 5249 bytes .../Plumber/images/Skin_3/right-up-filled.png | Bin 0 -> 5654 bytes .../src/Plumber/images/Skin_3/right-up.png | Bin 0 -> 5372 bytes .../images/Skin_3/sink-down-filled.png | Bin 0 -> 4401 bytes .../src/Plumber/images/Skin_3/sink-down.png | Bin 0 -> 4354 bytes .../images/Skin_3/sink-left-filled.png | Bin 0 -> 4441 bytes .../src/Plumber/images/Skin_3/sink-left.png | Bin 0 -> 4389 bytes .../images/Skin_3/sink-right-filled.png | Bin 0 -> 4470 bytes .../src/Plumber/images/Skin_3/sink-right.png | Bin 0 -> 4419 bytes .../Plumber/images/Skin_3/sink-up-filled.png | Bin 0 -> 4454 bytes .../src/Plumber/images/Skin_3/sink-up.png | Bin 0 -> 4399 bytes .../images/Skin_3/source-down-filled.png | Bin 0 -> 5825 bytes .../src/Plumber/images/Skin_3/source-down.png | Bin 0 -> 8144 bytes .../images/Skin_3/source-left-filled.png | Bin 0 -> 5794 bytes .../src/Plumber/images/Skin_3/source-left.png | Bin 0 -> 8143 bytes .../images/Skin_3/source-right-filled.png | Bin 0 -> 5769 bytes .../Plumber/images/Skin_3/source-right.png | Bin 0 -> 8075 bytes .../images/Skin_3/source-up-filled.png | Bin 0 -> 5833 bytes .../src/Plumber/images/Skin_3/source-up.png | Bin 0 -> 8118 bytes .../Plumber/images/Skin_3/vertical-filled.png | Bin 0 -> 4554 bytes .../src/Plumber/images/Skin_3/vertical.png | Bin 0 -> 4414 bytes .../images/Skin_4/horizontal-filled.png | Bin 0 -> 5255 bytes .../src/Plumber/images/Skin_4/horizontal.png | Bin 0 -> 5167 bytes .../images/Skin_4/left-down-filled.png | Bin 0 -> 6048 bytes .../src/Plumber/images/Skin_4/left-down.png | Bin 0 -> 5763 bytes .../Plumber/images/Skin_4/left-up-filled.png | Bin 0 -> 6005 bytes .../src/Plumber/images/Skin_4/left-up.png | Bin 0 -> 5844 bytes .../images/Skin_4/right-down-filled.png | Bin 0 -> 5988 bytes .../src/Plumber/images/Skin_4/right-down.png | Bin 0 -> 5857 bytes .../Plumber/images/Skin_4/right-up-filled.png | Bin 0 -> 6242 bytes .../src/Plumber/images/Skin_4/right-up.png | Bin 0 -> 6014 bytes .../images/Skin_4/sink-down-filled.png | Bin 0 -> 6322 bytes .../src/Plumber/images/Skin_4/sink-down.png | Bin 0 -> 6308 bytes .../images/Skin_4/sink-left-filled.png | Bin 0 -> 6481 bytes .../src/Plumber/images/Skin_4/sink-left.png | Bin 0 -> 6456 bytes .../images/Skin_4/sink-right-filled.png | Bin 0 -> 6482 bytes .../src/Plumber/images/Skin_4/sink-right.png | Bin 0 -> 6460 bytes .../Plumber/images/Skin_4/sink-up-filled.png | Bin 0 -> 5964 bytes .../src/Plumber/images/Skin_4/sink-up.png | Bin 0 -> 5944 bytes .../images/Skin_4/source-down-filled.png | Bin 0 -> 7077 bytes .../src/Plumber/images/Skin_4/source-down.png | Bin 0 -> 7054 bytes .../images/Skin_4/source-left-filled.png | Bin 0 -> 7200 bytes .../src/Plumber/images/Skin_4/source-left.png | Bin 0 -> 7134 bytes .../images/Skin_4/source-right-filled.png | Bin 0 -> 7108 bytes .../Plumber/images/Skin_4/source-right.png | Bin 0 -> 7043 bytes .../images/Skin_4/source-up-filled.png | Bin 0 -> 7130 bytes .../src/Plumber/images/Skin_4/source-up.png | Bin 0 -> 7096 bytes .../Plumber/images/Skin_4/vertical-filled.png | Bin 0 -> 5281 bytes .../src/Plumber/images/Skin_4/vertical.png | Bin 0 -> 5102 bytes .../images/defaultskin/horizontal-filled.png | Bin 0 -> 11635 bytes .../Plumber/images/defaultskin/horizontal.png | Bin 0 -> 11621 bytes .../images/defaultskin/left-down-filled.png | Bin 0 -> 12754 bytes .../Plumber/images/defaultskin/left-down.png | Bin 0 -> 12548 bytes .../images/defaultskin/left-up-filled.png | Bin 0 -> 12935 bytes .../Plumber/images/defaultskin/left-up.png | Bin 0 -> 12773 bytes .../images/defaultskin/right-down-filled.png | Bin 0 -> 12439 bytes .../Plumber/images/defaultskin/right-down.png | Bin 0 -> 12317 bytes .../images/defaultskin/right-up-filled.png | Bin 0 -> 12839 bytes .../Plumber/images/defaultskin/right-up.png | Bin 0 -> 12603 bytes .../images/defaultskin/sink-down-filled.png | Bin 0 -> 12437 bytes .../Plumber/images/defaultskin/sink-down.png | Bin 0 -> 12434 bytes .../images/defaultskin/sink-left-filled.png | Bin 0 -> 12440 bytes .../Plumber/images/defaultskin/sink-left.png | Bin 0 -> 12420 bytes .../images/defaultskin/sink-right-filled.png | Bin 0 -> 12350 bytes .../Plumber/images/defaultskin/sink-right.png | Bin 0 -> 12339 bytes .../images/defaultskin/sink-up-filled.png | Bin 0 -> 12646 bytes .../Plumber/images/defaultskin/sink-up.png | Bin 0 -> 12650 bytes .../images/defaultskin/source-down-filled.png | Bin 0 -> 13107 bytes .../images/defaultskin/source-down.png | Bin 0 -> 13115 bytes .../images/defaultskin/source-left-filled.png | Bin 0 -> 13165 bytes .../images/defaultskin/source-left.png | Bin 0 -> 13130 bytes .../defaultskin/source-right-filled.png | Bin 0 -> 13037 bytes .../images/defaultskin/source-right.png | Bin 0 -> 12965 bytes .../images/defaultskin/source-up-filled.png | Bin 0 -> 13353 bytes .../Plumber/images/defaultskin/source-up.png | Bin 0 -> 13328 bytes .../images/defaultskin/vertical-filled.png | Bin 0 -> 12122 bytes .../Plumber/images/defaultskin/vertical.png | Bin 0 -> 12094 bytes .../levelsets/defaultlevelset/highscore.hsc | 10 + .../levelsets/defaultlevelset/level_00.lvl | 3 + .../levelsets/defaultlevelset/level_01.lvl | 5 + .../levelsets/defaultlevelset/level_02.lvl | 5 + .../levelsets/defaultlevelset/level_03.lvl | 4 + .../levelsets/defaultlevelset/level_04.lvl | 5 + .../levelsets/defaultlevelset/level_05.lvl | 5 + .../levelsets/defaultlevelset/level_06.lvl | 6 + .../levelsets/defaultlevelset/level_07.lvl | 6 + .../levelsets/defaultlevelset/level_08.lvl | 8 + .../levelsets/defaultlevelset/level_09.lvl | 11 + .../levelsets/defaultlevelset/level_10.lvl | 5 + .../levelsets/defaultlevelset/level_11.lvl | 5 + .../levelsets/defaultlevelset/level_12.lvl | 8 + .../levelsets/defaultlevelset/level_13.lvl | 7 + .../levelsets/defaultlevelset/level_14.lvl | 8 + .../levelsets/defaultlevelset/level_15.lvl | 10 + .../levelsets/defaultlevelset/level_16.lvl | 7 + .../levelsets/defaultlevelset/level_17.lvl | 9 + .../levelsets/defaultlevelset/level_18.lvl | 11 + .../levelsets/defaultlevelset/level_19.lvl | 11 + .../levelsets/testlevelset/highscore.hsc | 11 + .../levelsets/testlevelset/level_00.lvl | 3 + .../levelsets/testlevelset/level_01.lvl | 5 + .../exercise/src/Plumber/sounds/fail.mp3 | Bin 0 -> 34944 bytes .../exercise/src/Plumber/sounds/finish.mp3 | Bin 0 -> 16016 bytes .../exercise/src/Plumber/sounds/redo.mp3 | Bin 0 -> 1094 bytes .../exercise/src/Plumber/sounds/tada.mp3 | Bin 0 -> 20707 bytes .../exercise/src/Plumber/sounds/undo.mp3 | Bin 0 -> 1640 bytes .../exercise/src/Plumber/sounds/water.mp3 | Bin 0 -> 1251 bytes .../de/tu_darmstadt/gdi1/plumber/Plumber.java | 79 +++ .../gdi1/plumber/controller/Controller.java | 40 ++ .../DefaultOutputHandler.java | 16 + .../exceptioncatcher/ExceptionCatcher.java | 84 +++ .../ExceptionOutputHandler.java | 5 + .../controller/logic/LogicController.java | 211 +++++++ .../logic/level/LevelController.java | 242 ++++++++ .../logic/level/ModuleElements.java | 106 ++++ .../logic/level/ModuleIsCorrect.java | 92 +++ .../logic/level/ModuleLoadSave.java | 426 ++++++++++++++ .../logic/level/ModuleStartEndTime.java | 243 ++++++++ .../logic/levelset/LevelSetController.java | 169 ++++++ .../plumber/controller/options/Option.java | 27 + .../plumber/controller/options/Options.java | 55 ++ .../controller/view/ViewController.java | 272 +++++++++ .../view/theme/ThemeController.java | 160 +++++ .../gdi1/plumber/model/Model.java | 160 +++++ .../plumber/model/events/EventListener.java | 39 ++ .../plumber/model/events/Event_interface.java | 7 + .../events/level/LevelEvent_abstract.java | 29 + .../plumber/model/events/level/NewLevel.java | 44 ++ .../model/events/level/NewLevelElement.java | 29 + .../plumber/model/events/level/Rotate.java | 27 + .../model/events/level/SelectionChange.java | 33 ++ .../plumber/model/events/level/Timer.java | 30 + .../plumber/model/events/level/WaterOut.java | 30 + .../model/events/level/WaterStart.java | 29 + .../plumber/model/events/level/WaterWin.java | 29 + .../LevelElementEvent_abstract.java | 22 + .../model/events/levelelement/ReDo.java | 20 + .../model/events/levelelement/Rotate.java | 23 + .../model/events/levelelement/UnDo.java | 20 + .../model/exceptions/PlumberError.java | 8 + .../plumber/model/exceptions/PlumberInfo.java | 8 + .../model/exceptions/PlumberWarning.java | 8 + .../plumber/model/highscores/Highscore.java | 246 ++++++++ .../model/highscores/HighscoreEntry.java | 75 +++ .../gdi1/plumber/model/history/History.java | 80 +++ .../events/HistoryEvent_interface.java | 10 + .../history/events/LevelRotateElement.java | 49 ++ .../gdi1/plumber/model/level/Level.java | 342 +++++++++++ .../model/levelelements/Element_abstract.java | 287 +++++++++ .../model/levelelements/Pipe_Bent.java | 35 ++ .../model/levelelements/Pipe_Straight.java | 35 ++ .../plumber/model/levelelements/Sink.java | 35 ++ .../plumber/model/levelelements/Well.java | 35 ++ .../plumber/model/levelsets/LevelSet.java | 102 ++++ .../adapters/PlumberTestAdapterExtended1.java | 81 +++ .../adapters/PlumberTestAdapterExtended2.java | 86 +++ .../adapters/PlumberTestAdapterExtended3.java | 45 ++ .../adapters/PlumberTestAdapterMinimal.java | 194 ++++++ .../gdi1/plumber/view/ViewLogicListener.java | 139 +++++ .../gdi1/plumber/view/game/Panel.java | 157 +++++ .../gdi1/plumber/view/game/Window.java | 340 +++++++++++ .../plumber/view/tudframework/GamePanel.java | 552 ++++++++++++++++++ .../plumber/view/tudframework/GameWindow.java | 271 +++++++++ .../InternalFailureException.java | 52 ++ .../InvalidOperationException.java | 49 ++ .../ParameterOutOfRangeException.java | 98 ++++ .../plumber/view/windows/AboutWindow.java | 92 +++ .../view/windows/DirectionsWindow.java | 89 +++ .../plumber/view/windows/HighscoreWindow.java | 112 ++++ .../plumber/view/windows/MainMenuWindow.java | 213 +++++++ .../plumber/view/windows/Translatable.java | 82 +++ .../gdi I/exercise/src/StockTicker/.classpath | 8 + .../gdi I/exercise/src/StockTicker/.project | 17 + .../.settings/org.eclipse.jdt.core.prefs | 12 + .../exercise/src/StockTicker/Stock Ticker.ump | 1 + .../src/StockTicker/src/StockTicker.java | 261 +++++++++ .../StockTicker/src/StockTicker_Solution.java | 206 +++++++ .../src/StockTicker/tests/SudokuTest.java | 228 ++++++++ ws2009/gdi I/exercise/src/Sudoku/.classpath | 8 + ws2009/gdi I/exercise/src/Sudoku/.project | 17 + .../.settings/org.eclipse.jdt.core.prefs | 12 + .../gdi I/exercise/src/Sudoku/src/Sudoku.java | 467 +++++++++++++++ .../exercise/src/TrainSimulation/.classpath | 7 + .../exercise/src/TrainSimulation/.project | 19 + .../src/TrainSimulation/IntChar.java | 72 +++ .../src/TrainSimulation/TrainDialog.java | 122 ++++ .../src/TrainSimulation/TrainSimulation.java | 400 +++++++++++++ .../src/exceptions/InvalidAreaException.java | 15 + .../InvalidCoordinatesException.java | 15 + .../src/exceptions/NoObstacleException.java | 15 + .../src/exceptions/NoPlainsException.java | 15 + .../src/exceptions/NotACityException.java | 13 + .../exceptions/NotEnoughCitiesException.java | 14 + 389 files changed, 11074 insertions(+) rename ss2012/IT Sicherheit/{Gastvorträge => Gastvortraege}/Jan_Camensich.pdf (100%) rename ss2013/Bachelor Thesis/Literatur/RiLSA_2010/{BS1_TBA A 32 Schloßgraben_ Alexanderstraße_20110614_160000.TXT => BS1_TBA A 32 Schlossgraben_ Alexanderstraße_20110614_160000.TXT} (100%) mode change 100755 => 100644 rename ss2013/Bachelor Thesis/Literatur/Wikipedia als pdf/{Zellulärer Automat.pdf => Zellulaaerer Automat.pdf} (100%) rename ss2013/Bachelor Thesis/Literatur/Zellularautomaten/{Zellulärer Automat.pdf => Zellulaaerer Automat.pdf} (100%) rename ss2013/Bachelor Thesis/{TK Präsentation PP => TK Praaesentation PP}/BachelorThesis - Vortrag TK.pdf (100%) rename ss2013/Bachelor Thesis/{TK Präsentation PP => TK Praaesentation PP}/BachelorThesis - Vortrag TK.pptx (100%) rename ss2013/Bachelor Thesis/{Verkehrszählung => Verkehrszaaehlung}/ergebnisse.ods (100%) rename ss2013/Bachelor Thesis/{Verkehrszählung => Verkehrszaaehlung}/ergebnisse.pdf (100%) rename ss2013/Bachelor Thesis/{Verkehrszählung => Verkehrszaaehlung}/ergebnisse_08_05.ods (100%) rename ss2013/Bachelor Thesis/{Verkehrszählung => Verkehrszaaehlung}/ergebnisse_08_05.pdf (100%) create mode 100644 ws2009/gdi I/exercise/src/GDI Calendar/.classpath create mode 100644 ws2009/gdi I/exercise/src/GDI Calendar/.project create mode 100644 ws2009/gdi I/exercise/src/GDI Calendar/.settings/org.eclipse.jdt.core.prefs create mode 100644 ws2009/gdi I/exercise/src/GDI Calendar/src/GdICalendarTemplate/Calendar.java create mode 100644 ws2009/gdi I/exercise/src/GDI Calendar/src/GdICalendarTemplate/CalendarEntry.java create mode 100644 ws2009/gdi I/exercise/src/GDI Calendar/src/GdICalendarTemplate/User.java create mode 100644 ws2009/gdi I/exercise/src/GDI Calendar/tests/CalendarTest.java create mode 100644 ws2009/gdi I/exercise/src/GDI Calendar2/.classpath create mode 100644 ws2009/gdi I/exercise/src/GDI Calendar2/.project create mode 100644 ws2009/gdi I/exercise/src/GDI Calendar2/.settings/org.eclipse.jdt.core.prefs create mode 100644 ws2009/gdi I/exercise/src/GDI Calendar2/src/Calendar.java create mode 100644 ws2009/gdi I/exercise/src/GDI Calendar2/src/CalendarEntry.java create mode 100644 ws2009/gdi I/exercise/src/GDI Calendar2/src/CalendarEntryDuration.java create mode 100644 ws2009/gdi I/exercise/src/GDI Calendar2/src/Developer.java create mode 100644 ws2009/gdi I/exercise/src/GDI Calendar2/src/Illness.java create mode 100644 ws2009/gdi I/exercise/src/GDI Calendar2/src/Meeting.java create mode 100644 ws2009/gdi I/exercise/src/GDI Calendar2/src/Note.java create mode 100644 ws2009/gdi I/exercise/src/GDI Calendar2/src/Reminder.java create mode 100644 ws2009/gdi I/exercise/src/GDI Calendar2/src/Secretary.java create mode 100644 ws2009/gdi I/exercise/src/GDI Calendar2/src/User.java create mode 100644 ws2009/gdi I/exercise/src/GDI Calendar2/src/Vacation.java create mode 100644 ws2009/gdi I/exercise/src/GDI Calendar2/tests/CalendarTest.java create mode 100644 ws2009/gdi I/exercise/src/Plumber/.classpath create mode 100644 ws2009/gdi I/exercise/src/Plumber/.project create mode 100644 ws2009/gdi I/exercise/src/Plumber/.settings/org.eclipse.jdt.core.prefs create mode 100644 ws2009/gdi I/exercise/src/Plumber/Plumber.de_DE create mode 100644 ws2009/gdi I/exercise/src/Plumber/Plumber.en_US create mode 100644 ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/Plumber.class create mode 100644 ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/controller/Controller.class create mode 100644 ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/controller/exceptioncatcher/DefaultOutputHandler.class create mode 100644 ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/controller/exceptioncatcher/ExceptionCatcher.class create mode 100644 ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/controller/exceptioncatcher/ExceptionOutputHandler.class create mode 100644 ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/controller/logic/LogicController$1.class create mode 100644 ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/controller/logic/LogicController.class create mode 100644 ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/controller/logic/level/LevelController.class create mode 100644 ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/controller/logic/level/ModuleElements.class create mode 100644 ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/controller/logic/level/ModuleIsCorrect.class create mode 100644 ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/controller/logic/level/ModuleLoadSave.class create mode 100644 ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/controller/logic/level/ModuleStartEndTime.class create mode 100644 ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/controller/logic/levelset/LevelSetController$1.class create mode 100644 ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/controller/logic/levelset/LevelSetController.class create mode 100644 ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/controller/options/Option.class create mode 100644 ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/controller/options/Options.class create mode 100644 ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/controller/view/ViewController$1.class create mode 100644 ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/controller/view/ViewController.class create mode 100644 ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/controller/view/theme/ThemeController.class create mode 100644 ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/model/Model.class create mode 100644 ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/model/events/EventListener.class create mode 100644 ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/model/events/Event_interface.class create mode 100644 ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/model/events/level/LevelEvent_abstract.class create mode 100644 ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/model/events/level/NewLevel.class create mode 100644 ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/model/events/level/NewLevelElement.class create mode 100644 ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/model/events/level/Rotate.class create mode 100644 ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/model/events/level/SelectionChange.class create mode 100644 ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/model/events/level/Timer.class create mode 100644 ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/model/events/level/WaterOut.class create mode 100644 ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/model/events/level/WaterStart.class create mode 100644 ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/model/events/level/WaterWin.class create mode 100644 ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/model/events/levelelement/LevelElementEvent_abstract.class create mode 100644 ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/model/events/levelelement/ReDo.class create mode 100644 ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/model/events/levelelement/Rotate.class create mode 100644 ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/model/events/levelelement/UnDo.class create mode 100644 ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/model/exceptions/PlumberError.class create mode 100644 ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/model/exceptions/PlumberInfo.class create mode 100644 ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/model/exceptions/PlumberWarning.class create mode 100644 ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/model/highscores/Highscore.class create mode 100644 ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/model/highscores/HighscoreEntry.class create mode 100644 ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/model/history/History.class create mode 100644 ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/model/history/events/HistoryEvent_interface.class create mode 100644 ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/model/history/events/LevelRotateElement.class create mode 100644 ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/model/level/Level$1.class create mode 100644 ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/model/level/Level.class create mode 100644 ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/model/levelelements/Element_abstract.class create mode 100644 ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/model/levelelements/Pipe_Bent.class create mode 100644 ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/model/levelelements/Pipe_Straight.class create mode 100644 ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/model/levelelements/Sink.class create mode 100644 ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/model/levelelements/Well.class create mode 100644 ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/model/levelsets/LevelSet.class create mode 100644 ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/tests/adapters/PlumberTestAdapterExtended1.class create mode 100644 ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/tests/adapters/PlumberTestAdapterExtended2.class create mode 100644 ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/tests/adapters/PlumberTestAdapterExtended3.class create mode 100644 ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/tests/adapters/PlumberTestAdapterMinimal.class create mode 100644 ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/view/ViewLogicListener.class create mode 100644 ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/view/game/Panel.class create mode 100644 ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/view/game/Window$1.class create mode 100644 ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/view/game/Window$2.class create mode 100644 ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/view/game/Window$3.class create mode 100644 ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/view/game/Window$4.class create mode 100644 ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/view/game/Window$5.class create mode 100644 ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/view/game/Window$6.class create mode 100644 ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/view/game/Window$7.class create mode 100644 ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/view/game/Window.class create mode 100644 ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/view/tudframework/GamePanel$1.class create mode 100644 ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/view/tudframework/GamePanel.class create mode 100644 ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/view/tudframework/GameWindow.class create mode 100644 ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/view/tudframework/InternalFailureException.class create mode 100644 ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/view/tudframework/InvalidOperationException.class create mode 100644 ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/view/tudframework/ParameterOutOfRangeException.class create mode 100644 ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/view/windows/AboutWindow$1.class create mode 100644 ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/view/windows/AboutWindow$2.class create mode 100644 ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/view/windows/AboutWindow.class create mode 100644 ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/view/windows/DirectionsWindow$1.class create mode 100644 ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/view/windows/DirectionsWindow.class create mode 100644 ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/view/windows/HighscoreWindow$1.class create mode 100644 ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/view/windows/HighscoreWindow.class create mode 100644 ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/view/windows/MainMenuWindow$1.class create mode 100644 ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/view/windows/MainMenuWindow$2.class create mode 100644 ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/view/windows/MainMenuWindow$3.class create mode 100644 ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/view/windows/MainMenuWindow$4.class create mode 100644 ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/view/windows/MainMenuWindow$5.class create mode 100644 ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/view/windows/MainMenuWindow$6.class create mode 100644 ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/view/windows/MainMenuWindow$7.class create mode 100644 ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/view/windows/MainMenuWindow$8.class create mode 100644 ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/view/windows/MainMenuWindow$9.class create mode 100644 ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/view/windows/MainMenuWindow.class create mode 100644 ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/view/windows/Translatable$1.class create mode 100644 ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/view/windows/Translatable$2.class create mode 100644 ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/view/windows/Translatable.class create mode 100644 ws2009/gdi I/exercise/src/Plumber/docu/Plumber Class-Diagramm.jpg create mode 100644 ws2009/gdi I/exercise/src/Plumber/docu/Plumber.ump create mode 100644 ws2009/gdi I/exercise/src/Plumber/docu/TODO.txt create mode 100644 ws2009/gdi I/exercise/src/Plumber/docu/plumberclassdiagram.xps create mode 100644 ws2009/gdi I/exercise/src/Plumber/docu/rules.txt create mode 100644 ws2009/gdi I/exercise/src/Plumber/images/Skin_1/horizontal-filled.png create mode 100644 ws2009/gdi I/exercise/src/Plumber/images/Skin_1/horizontal.png create mode 100644 ws2009/gdi I/exercise/src/Plumber/images/Skin_1/left-down-filled.png create mode 100644 ws2009/gdi I/exercise/src/Plumber/images/Skin_1/left-down.png create mode 100644 ws2009/gdi I/exercise/src/Plumber/images/Skin_1/left-up-filled.png create mode 100644 ws2009/gdi I/exercise/src/Plumber/images/Skin_1/left-up.png create mode 100644 ws2009/gdi I/exercise/src/Plumber/images/Skin_1/right-down-filled.png create mode 100644 ws2009/gdi I/exercise/src/Plumber/images/Skin_1/right-down.png create mode 100644 ws2009/gdi I/exercise/src/Plumber/images/Skin_1/right-up-filled.png create mode 100644 ws2009/gdi I/exercise/src/Plumber/images/Skin_1/right-up.png create mode 100644 ws2009/gdi I/exercise/src/Plumber/images/Skin_1/sink-down-filled.png create mode 100644 ws2009/gdi I/exercise/src/Plumber/images/Skin_1/sink-down.png create mode 100644 ws2009/gdi I/exercise/src/Plumber/images/Skin_1/sink-left-filled.png create mode 100644 ws2009/gdi I/exercise/src/Plumber/images/Skin_1/sink-left.png create mode 100644 ws2009/gdi I/exercise/src/Plumber/images/Skin_1/sink-right-filled.png create mode 100644 ws2009/gdi I/exercise/src/Plumber/images/Skin_1/sink-right.png create mode 100644 ws2009/gdi I/exercise/src/Plumber/images/Skin_1/sink-up-filled.png create mode 100644 ws2009/gdi I/exercise/src/Plumber/images/Skin_1/sink-up.png create mode 100644 ws2009/gdi I/exercise/src/Plumber/images/Skin_1/source-down-filled.png create mode 100644 ws2009/gdi I/exercise/src/Plumber/images/Skin_1/source-down.png create mode 100644 ws2009/gdi I/exercise/src/Plumber/images/Skin_1/source-left-filled.png create mode 100644 ws2009/gdi I/exercise/src/Plumber/images/Skin_1/source-left.png create mode 100644 ws2009/gdi I/exercise/src/Plumber/images/Skin_1/source-right-filled.png create mode 100644 ws2009/gdi I/exercise/src/Plumber/images/Skin_1/source-right.png create mode 100644 ws2009/gdi I/exercise/src/Plumber/images/Skin_1/source-up-filled.png create mode 100644 ws2009/gdi I/exercise/src/Plumber/images/Skin_1/source-up.png create mode 100644 ws2009/gdi I/exercise/src/Plumber/images/Skin_1/vertical-filled.png create mode 100644 ws2009/gdi I/exercise/src/Plumber/images/Skin_1/vertical.png create mode 100644 ws2009/gdi I/exercise/src/Plumber/images/Skin_2/horizontal-filled.png create mode 100644 ws2009/gdi I/exercise/src/Plumber/images/Skin_2/horizontal.png create mode 100644 ws2009/gdi I/exercise/src/Plumber/images/Skin_2/left-down-filled.png create mode 100644 ws2009/gdi I/exercise/src/Plumber/images/Skin_2/left-down.png create mode 100644 ws2009/gdi I/exercise/src/Plumber/images/Skin_2/left-up-filled.png create mode 100644 ws2009/gdi I/exercise/src/Plumber/images/Skin_2/left-up.png create mode 100644 ws2009/gdi I/exercise/src/Plumber/images/Skin_2/right-down-filled.png create mode 100644 ws2009/gdi I/exercise/src/Plumber/images/Skin_2/right-down.png create mode 100644 ws2009/gdi I/exercise/src/Plumber/images/Skin_2/right-up-filled.png create mode 100644 ws2009/gdi I/exercise/src/Plumber/images/Skin_2/right-up.png create mode 100644 ws2009/gdi I/exercise/src/Plumber/images/Skin_2/sink-down-filled.png create mode 100644 ws2009/gdi I/exercise/src/Plumber/images/Skin_2/sink-down.png create mode 100644 ws2009/gdi I/exercise/src/Plumber/images/Skin_2/sink-left-filled.png create mode 100644 ws2009/gdi I/exercise/src/Plumber/images/Skin_2/sink-left.png create mode 100644 ws2009/gdi I/exercise/src/Plumber/images/Skin_2/sink-right-filled.png create mode 100644 ws2009/gdi I/exercise/src/Plumber/images/Skin_2/sink-right.png create mode 100644 ws2009/gdi I/exercise/src/Plumber/images/Skin_2/sink-up-filled.png create mode 100644 ws2009/gdi I/exercise/src/Plumber/images/Skin_2/sink-up.png create mode 100644 ws2009/gdi I/exercise/src/Plumber/images/Skin_2/source-down-filled.png create mode 100644 ws2009/gdi I/exercise/src/Plumber/images/Skin_2/source-down.png create mode 100644 ws2009/gdi I/exercise/src/Plumber/images/Skin_2/source-left-filled.png create mode 100644 ws2009/gdi I/exercise/src/Plumber/images/Skin_2/source-left.png create mode 100644 ws2009/gdi I/exercise/src/Plumber/images/Skin_2/source-right-filled.png create mode 100644 ws2009/gdi I/exercise/src/Plumber/images/Skin_2/source-right.png create mode 100644 ws2009/gdi I/exercise/src/Plumber/images/Skin_2/source-up-filled.png create mode 100644 ws2009/gdi I/exercise/src/Plumber/images/Skin_2/source-up.png create mode 100644 ws2009/gdi I/exercise/src/Plumber/images/Skin_2/vertical-filled.png create mode 100644 ws2009/gdi I/exercise/src/Plumber/images/Skin_2/vertical.png create mode 100644 ws2009/gdi I/exercise/src/Plumber/images/Skin_3/horizontal-filled.png create mode 100644 ws2009/gdi I/exercise/src/Plumber/images/Skin_3/horizontal.png create mode 100644 ws2009/gdi I/exercise/src/Plumber/images/Skin_3/left-down-filled.png create mode 100644 ws2009/gdi I/exercise/src/Plumber/images/Skin_3/left-down.png create mode 100644 ws2009/gdi I/exercise/src/Plumber/images/Skin_3/left-up-filled.png create mode 100644 ws2009/gdi I/exercise/src/Plumber/images/Skin_3/left-up.png create mode 100644 ws2009/gdi I/exercise/src/Plumber/images/Skin_3/right-down-filled.png create mode 100644 ws2009/gdi I/exercise/src/Plumber/images/Skin_3/right-down.png create mode 100644 ws2009/gdi I/exercise/src/Plumber/images/Skin_3/right-up-filled.png create mode 100644 ws2009/gdi I/exercise/src/Plumber/images/Skin_3/right-up.png create mode 100644 ws2009/gdi I/exercise/src/Plumber/images/Skin_3/sink-down-filled.png create mode 100644 ws2009/gdi I/exercise/src/Plumber/images/Skin_3/sink-down.png create mode 100644 ws2009/gdi I/exercise/src/Plumber/images/Skin_3/sink-left-filled.png create mode 100644 ws2009/gdi I/exercise/src/Plumber/images/Skin_3/sink-left.png create mode 100644 ws2009/gdi I/exercise/src/Plumber/images/Skin_3/sink-right-filled.png create mode 100644 ws2009/gdi I/exercise/src/Plumber/images/Skin_3/sink-right.png create mode 100644 ws2009/gdi I/exercise/src/Plumber/images/Skin_3/sink-up-filled.png create mode 100644 ws2009/gdi I/exercise/src/Plumber/images/Skin_3/sink-up.png create mode 100644 ws2009/gdi I/exercise/src/Plumber/images/Skin_3/source-down-filled.png create mode 100644 ws2009/gdi I/exercise/src/Plumber/images/Skin_3/source-down.png create mode 100644 ws2009/gdi I/exercise/src/Plumber/images/Skin_3/source-left-filled.png create mode 100644 ws2009/gdi I/exercise/src/Plumber/images/Skin_3/source-left.png create mode 100644 ws2009/gdi I/exercise/src/Plumber/images/Skin_3/source-right-filled.png create mode 100644 ws2009/gdi I/exercise/src/Plumber/images/Skin_3/source-right.png create mode 100644 ws2009/gdi I/exercise/src/Plumber/images/Skin_3/source-up-filled.png create mode 100644 ws2009/gdi I/exercise/src/Plumber/images/Skin_3/source-up.png create mode 100644 ws2009/gdi I/exercise/src/Plumber/images/Skin_3/vertical-filled.png create mode 100644 ws2009/gdi I/exercise/src/Plumber/images/Skin_3/vertical.png create mode 100644 ws2009/gdi I/exercise/src/Plumber/images/Skin_4/horizontal-filled.png create mode 100644 ws2009/gdi I/exercise/src/Plumber/images/Skin_4/horizontal.png create mode 100644 ws2009/gdi I/exercise/src/Plumber/images/Skin_4/left-down-filled.png create mode 100644 ws2009/gdi I/exercise/src/Plumber/images/Skin_4/left-down.png create mode 100644 ws2009/gdi I/exercise/src/Plumber/images/Skin_4/left-up-filled.png create mode 100644 ws2009/gdi I/exercise/src/Plumber/images/Skin_4/left-up.png create mode 100644 ws2009/gdi I/exercise/src/Plumber/images/Skin_4/right-down-filled.png create mode 100644 ws2009/gdi I/exercise/src/Plumber/images/Skin_4/right-down.png create mode 100644 ws2009/gdi I/exercise/src/Plumber/images/Skin_4/right-up-filled.png create mode 100644 ws2009/gdi I/exercise/src/Plumber/images/Skin_4/right-up.png create mode 100644 ws2009/gdi I/exercise/src/Plumber/images/Skin_4/sink-down-filled.png create mode 100644 ws2009/gdi I/exercise/src/Plumber/images/Skin_4/sink-down.png create mode 100644 ws2009/gdi I/exercise/src/Plumber/images/Skin_4/sink-left-filled.png create mode 100644 ws2009/gdi I/exercise/src/Plumber/images/Skin_4/sink-left.png create mode 100644 ws2009/gdi I/exercise/src/Plumber/images/Skin_4/sink-right-filled.png create mode 100644 ws2009/gdi I/exercise/src/Plumber/images/Skin_4/sink-right.png create mode 100644 ws2009/gdi I/exercise/src/Plumber/images/Skin_4/sink-up-filled.png create mode 100644 ws2009/gdi I/exercise/src/Plumber/images/Skin_4/sink-up.png create mode 100644 ws2009/gdi I/exercise/src/Plumber/images/Skin_4/source-down-filled.png create mode 100644 ws2009/gdi I/exercise/src/Plumber/images/Skin_4/source-down.png create mode 100644 ws2009/gdi I/exercise/src/Plumber/images/Skin_4/source-left-filled.png create mode 100644 ws2009/gdi I/exercise/src/Plumber/images/Skin_4/source-left.png create mode 100644 ws2009/gdi I/exercise/src/Plumber/images/Skin_4/source-right-filled.png create mode 100644 ws2009/gdi I/exercise/src/Plumber/images/Skin_4/source-right.png create mode 100644 ws2009/gdi I/exercise/src/Plumber/images/Skin_4/source-up-filled.png create mode 100644 ws2009/gdi I/exercise/src/Plumber/images/Skin_4/source-up.png create mode 100644 ws2009/gdi I/exercise/src/Plumber/images/Skin_4/vertical-filled.png create mode 100644 ws2009/gdi I/exercise/src/Plumber/images/Skin_4/vertical.png create mode 100644 ws2009/gdi I/exercise/src/Plumber/images/defaultskin/horizontal-filled.png create mode 100644 ws2009/gdi I/exercise/src/Plumber/images/defaultskin/horizontal.png create mode 100644 ws2009/gdi I/exercise/src/Plumber/images/defaultskin/left-down-filled.png create mode 100644 ws2009/gdi I/exercise/src/Plumber/images/defaultskin/left-down.png create mode 100644 ws2009/gdi I/exercise/src/Plumber/images/defaultskin/left-up-filled.png create mode 100644 ws2009/gdi I/exercise/src/Plumber/images/defaultskin/left-up.png create mode 100644 ws2009/gdi I/exercise/src/Plumber/images/defaultskin/right-down-filled.png create mode 100644 ws2009/gdi I/exercise/src/Plumber/images/defaultskin/right-down.png create mode 100644 ws2009/gdi I/exercise/src/Plumber/images/defaultskin/right-up-filled.png create mode 100644 ws2009/gdi I/exercise/src/Plumber/images/defaultskin/right-up.png create mode 100644 ws2009/gdi I/exercise/src/Plumber/images/defaultskin/sink-down-filled.png create mode 100644 ws2009/gdi I/exercise/src/Plumber/images/defaultskin/sink-down.png create mode 100644 ws2009/gdi I/exercise/src/Plumber/images/defaultskin/sink-left-filled.png create mode 100644 ws2009/gdi I/exercise/src/Plumber/images/defaultskin/sink-left.png create mode 100644 ws2009/gdi I/exercise/src/Plumber/images/defaultskin/sink-right-filled.png create mode 100644 ws2009/gdi I/exercise/src/Plumber/images/defaultskin/sink-right.png create mode 100644 ws2009/gdi I/exercise/src/Plumber/images/defaultskin/sink-up-filled.png create mode 100644 ws2009/gdi I/exercise/src/Plumber/images/defaultskin/sink-up.png create mode 100644 ws2009/gdi I/exercise/src/Plumber/images/defaultskin/source-down-filled.png create mode 100644 ws2009/gdi I/exercise/src/Plumber/images/defaultskin/source-down.png create mode 100644 ws2009/gdi I/exercise/src/Plumber/images/defaultskin/source-left-filled.png create mode 100644 ws2009/gdi I/exercise/src/Plumber/images/defaultskin/source-left.png create mode 100644 ws2009/gdi I/exercise/src/Plumber/images/defaultskin/source-right-filled.png create mode 100644 ws2009/gdi I/exercise/src/Plumber/images/defaultskin/source-right.png create mode 100644 ws2009/gdi I/exercise/src/Plumber/images/defaultskin/source-up-filled.png create mode 100644 ws2009/gdi I/exercise/src/Plumber/images/defaultskin/source-up.png create mode 100644 ws2009/gdi I/exercise/src/Plumber/images/defaultskin/vertical-filled.png create mode 100644 ws2009/gdi I/exercise/src/Plumber/images/defaultskin/vertical.png create mode 100644 ws2009/gdi I/exercise/src/Plumber/levelsets/defaultlevelset/highscore.hsc create mode 100644 ws2009/gdi I/exercise/src/Plumber/levelsets/defaultlevelset/level_00.lvl create mode 100644 ws2009/gdi I/exercise/src/Plumber/levelsets/defaultlevelset/level_01.lvl create mode 100644 ws2009/gdi I/exercise/src/Plumber/levelsets/defaultlevelset/level_02.lvl create mode 100644 ws2009/gdi I/exercise/src/Plumber/levelsets/defaultlevelset/level_03.lvl create mode 100644 ws2009/gdi I/exercise/src/Plumber/levelsets/defaultlevelset/level_04.lvl create mode 100644 ws2009/gdi I/exercise/src/Plumber/levelsets/defaultlevelset/level_05.lvl create mode 100644 ws2009/gdi I/exercise/src/Plumber/levelsets/defaultlevelset/level_06.lvl create mode 100644 ws2009/gdi I/exercise/src/Plumber/levelsets/defaultlevelset/level_07.lvl create mode 100644 ws2009/gdi I/exercise/src/Plumber/levelsets/defaultlevelset/level_08.lvl create mode 100644 ws2009/gdi I/exercise/src/Plumber/levelsets/defaultlevelset/level_09.lvl create mode 100644 ws2009/gdi I/exercise/src/Plumber/levelsets/defaultlevelset/level_10.lvl create mode 100644 ws2009/gdi I/exercise/src/Plumber/levelsets/defaultlevelset/level_11.lvl create mode 100644 ws2009/gdi I/exercise/src/Plumber/levelsets/defaultlevelset/level_12.lvl create mode 100644 ws2009/gdi I/exercise/src/Plumber/levelsets/defaultlevelset/level_13.lvl create mode 100644 ws2009/gdi I/exercise/src/Plumber/levelsets/defaultlevelset/level_14.lvl create mode 100644 ws2009/gdi I/exercise/src/Plumber/levelsets/defaultlevelset/level_15.lvl create mode 100644 ws2009/gdi I/exercise/src/Plumber/levelsets/defaultlevelset/level_16.lvl create mode 100644 ws2009/gdi I/exercise/src/Plumber/levelsets/defaultlevelset/level_17.lvl create mode 100644 ws2009/gdi I/exercise/src/Plumber/levelsets/defaultlevelset/level_18.lvl create mode 100644 ws2009/gdi I/exercise/src/Plumber/levelsets/defaultlevelset/level_19.lvl create mode 100644 ws2009/gdi I/exercise/src/Plumber/levelsets/testlevelset/highscore.hsc create mode 100644 ws2009/gdi I/exercise/src/Plumber/levelsets/testlevelset/level_00.lvl create mode 100644 ws2009/gdi I/exercise/src/Plumber/levelsets/testlevelset/level_01.lvl create mode 100644 ws2009/gdi I/exercise/src/Plumber/sounds/fail.mp3 create mode 100644 ws2009/gdi I/exercise/src/Plumber/sounds/finish.mp3 create mode 100644 ws2009/gdi I/exercise/src/Plumber/sounds/redo.mp3 create mode 100644 ws2009/gdi I/exercise/src/Plumber/sounds/tada.mp3 create mode 100644 ws2009/gdi I/exercise/src/Plumber/sounds/undo.mp3 create mode 100644 ws2009/gdi I/exercise/src/Plumber/sounds/water.mp3 create mode 100644 ws2009/gdi I/exercise/src/Plumber/src/de/tu_darmstadt/gdi1/plumber/Plumber.java create mode 100644 ws2009/gdi I/exercise/src/Plumber/src/de/tu_darmstadt/gdi1/plumber/controller/Controller.java create mode 100644 ws2009/gdi I/exercise/src/Plumber/src/de/tu_darmstadt/gdi1/plumber/controller/exceptioncatcher/DefaultOutputHandler.java create mode 100644 ws2009/gdi I/exercise/src/Plumber/src/de/tu_darmstadt/gdi1/plumber/controller/exceptioncatcher/ExceptionCatcher.java create mode 100644 ws2009/gdi I/exercise/src/Plumber/src/de/tu_darmstadt/gdi1/plumber/controller/exceptioncatcher/ExceptionOutputHandler.java create mode 100644 ws2009/gdi I/exercise/src/Plumber/src/de/tu_darmstadt/gdi1/plumber/controller/logic/LogicController.java create mode 100644 ws2009/gdi I/exercise/src/Plumber/src/de/tu_darmstadt/gdi1/plumber/controller/logic/level/LevelController.java create mode 100644 ws2009/gdi I/exercise/src/Plumber/src/de/tu_darmstadt/gdi1/plumber/controller/logic/level/ModuleElements.java create mode 100644 ws2009/gdi I/exercise/src/Plumber/src/de/tu_darmstadt/gdi1/plumber/controller/logic/level/ModuleIsCorrect.java create mode 100644 ws2009/gdi I/exercise/src/Plumber/src/de/tu_darmstadt/gdi1/plumber/controller/logic/level/ModuleLoadSave.java create mode 100644 ws2009/gdi I/exercise/src/Plumber/src/de/tu_darmstadt/gdi1/plumber/controller/logic/level/ModuleStartEndTime.java create mode 100644 ws2009/gdi I/exercise/src/Plumber/src/de/tu_darmstadt/gdi1/plumber/controller/logic/levelset/LevelSetController.java create mode 100644 ws2009/gdi I/exercise/src/Plumber/src/de/tu_darmstadt/gdi1/plumber/controller/options/Option.java create mode 100644 ws2009/gdi I/exercise/src/Plumber/src/de/tu_darmstadt/gdi1/plumber/controller/options/Options.java create mode 100644 ws2009/gdi I/exercise/src/Plumber/src/de/tu_darmstadt/gdi1/plumber/controller/view/ViewController.java create mode 100644 ws2009/gdi I/exercise/src/Plumber/src/de/tu_darmstadt/gdi1/plumber/controller/view/theme/ThemeController.java create mode 100644 ws2009/gdi I/exercise/src/Plumber/src/de/tu_darmstadt/gdi1/plumber/model/Model.java create mode 100644 ws2009/gdi I/exercise/src/Plumber/src/de/tu_darmstadt/gdi1/plumber/model/events/EventListener.java create mode 100644 ws2009/gdi I/exercise/src/Plumber/src/de/tu_darmstadt/gdi1/plumber/model/events/Event_interface.java create mode 100644 ws2009/gdi I/exercise/src/Plumber/src/de/tu_darmstadt/gdi1/plumber/model/events/level/LevelEvent_abstract.java create mode 100644 ws2009/gdi I/exercise/src/Plumber/src/de/tu_darmstadt/gdi1/plumber/model/events/level/NewLevel.java create mode 100644 ws2009/gdi I/exercise/src/Plumber/src/de/tu_darmstadt/gdi1/plumber/model/events/level/NewLevelElement.java create mode 100644 ws2009/gdi I/exercise/src/Plumber/src/de/tu_darmstadt/gdi1/plumber/model/events/level/Rotate.java create mode 100644 ws2009/gdi I/exercise/src/Plumber/src/de/tu_darmstadt/gdi1/plumber/model/events/level/SelectionChange.java create mode 100644 ws2009/gdi I/exercise/src/Plumber/src/de/tu_darmstadt/gdi1/plumber/model/events/level/Timer.java create mode 100644 ws2009/gdi I/exercise/src/Plumber/src/de/tu_darmstadt/gdi1/plumber/model/events/level/WaterOut.java create mode 100644 ws2009/gdi I/exercise/src/Plumber/src/de/tu_darmstadt/gdi1/plumber/model/events/level/WaterStart.java create mode 100644 ws2009/gdi I/exercise/src/Plumber/src/de/tu_darmstadt/gdi1/plumber/model/events/level/WaterWin.java create mode 100644 ws2009/gdi I/exercise/src/Plumber/src/de/tu_darmstadt/gdi1/plumber/model/events/levelelement/LevelElementEvent_abstract.java create mode 100644 ws2009/gdi I/exercise/src/Plumber/src/de/tu_darmstadt/gdi1/plumber/model/events/levelelement/ReDo.java create mode 100644 ws2009/gdi I/exercise/src/Plumber/src/de/tu_darmstadt/gdi1/plumber/model/events/levelelement/Rotate.java create mode 100644 ws2009/gdi I/exercise/src/Plumber/src/de/tu_darmstadt/gdi1/plumber/model/events/levelelement/UnDo.java create mode 100644 ws2009/gdi I/exercise/src/Plumber/src/de/tu_darmstadt/gdi1/plumber/model/exceptions/PlumberError.java create mode 100644 ws2009/gdi I/exercise/src/Plumber/src/de/tu_darmstadt/gdi1/plumber/model/exceptions/PlumberInfo.java create mode 100644 ws2009/gdi I/exercise/src/Plumber/src/de/tu_darmstadt/gdi1/plumber/model/exceptions/PlumberWarning.java create mode 100644 ws2009/gdi I/exercise/src/Plumber/src/de/tu_darmstadt/gdi1/plumber/model/highscores/Highscore.java create mode 100644 ws2009/gdi I/exercise/src/Plumber/src/de/tu_darmstadt/gdi1/plumber/model/highscores/HighscoreEntry.java create mode 100644 ws2009/gdi I/exercise/src/Plumber/src/de/tu_darmstadt/gdi1/plumber/model/history/History.java create mode 100644 ws2009/gdi I/exercise/src/Plumber/src/de/tu_darmstadt/gdi1/plumber/model/history/events/HistoryEvent_interface.java create mode 100644 ws2009/gdi I/exercise/src/Plumber/src/de/tu_darmstadt/gdi1/plumber/model/history/events/LevelRotateElement.java create mode 100644 ws2009/gdi I/exercise/src/Plumber/src/de/tu_darmstadt/gdi1/plumber/model/level/Level.java create mode 100644 ws2009/gdi I/exercise/src/Plumber/src/de/tu_darmstadt/gdi1/plumber/model/levelelements/Element_abstract.java create mode 100644 ws2009/gdi I/exercise/src/Plumber/src/de/tu_darmstadt/gdi1/plumber/model/levelelements/Pipe_Bent.java create mode 100644 ws2009/gdi I/exercise/src/Plumber/src/de/tu_darmstadt/gdi1/plumber/model/levelelements/Pipe_Straight.java create mode 100644 ws2009/gdi I/exercise/src/Plumber/src/de/tu_darmstadt/gdi1/plumber/model/levelelements/Sink.java create mode 100644 ws2009/gdi I/exercise/src/Plumber/src/de/tu_darmstadt/gdi1/plumber/model/levelelements/Well.java create mode 100644 ws2009/gdi I/exercise/src/Plumber/src/de/tu_darmstadt/gdi1/plumber/model/levelsets/LevelSet.java create mode 100644 ws2009/gdi I/exercise/src/Plumber/src/de/tu_darmstadt/gdi1/plumber/tests/adapters/PlumberTestAdapterExtended1.java create mode 100644 ws2009/gdi I/exercise/src/Plumber/src/de/tu_darmstadt/gdi1/plumber/tests/adapters/PlumberTestAdapterExtended2.java create mode 100644 ws2009/gdi I/exercise/src/Plumber/src/de/tu_darmstadt/gdi1/plumber/tests/adapters/PlumberTestAdapterExtended3.java create mode 100644 ws2009/gdi I/exercise/src/Plumber/src/de/tu_darmstadt/gdi1/plumber/tests/adapters/PlumberTestAdapterMinimal.java create mode 100644 ws2009/gdi I/exercise/src/Plumber/src/de/tu_darmstadt/gdi1/plumber/view/ViewLogicListener.java create mode 100644 ws2009/gdi I/exercise/src/Plumber/src/de/tu_darmstadt/gdi1/plumber/view/game/Panel.java create mode 100644 ws2009/gdi I/exercise/src/Plumber/src/de/tu_darmstadt/gdi1/plumber/view/game/Window.java create mode 100644 ws2009/gdi I/exercise/src/Plumber/src/de/tu_darmstadt/gdi1/plumber/view/tudframework/GamePanel.java create mode 100644 ws2009/gdi I/exercise/src/Plumber/src/de/tu_darmstadt/gdi1/plumber/view/tudframework/GameWindow.java create mode 100644 ws2009/gdi I/exercise/src/Plumber/src/de/tu_darmstadt/gdi1/plumber/view/tudframework/InternalFailureException.java create mode 100644 ws2009/gdi I/exercise/src/Plumber/src/de/tu_darmstadt/gdi1/plumber/view/tudframework/InvalidOperationException.java create mode 100644 ws2009/gdi I/exercise/src/Plumber/src/de/tu_darmstadt/gdi1/plumber/view/tudframework/ParameterOutOfRangeException.java create mode 100644 ws2009/gdi I/exercise/src/Plumber/src/de/tu_darmstadt/gdi1/plumber/view/windows/AboutWindow.java create mode 100644 ws2009/gdi I/exercise/src/Plumber/src/de/tu_darmstadt/gdi1/plumber/view/windows/DirectionsWindow.java create mode 100644 ws2009/gdi I/exercise/src/Plumber/src/de/tu_darmstadt/gdi1/plumber/view/windows/HighscoreWindow.java create mode 100644 ws2009/gdi I/exercise/src/Plumber/src/de/tu_darmstadt/gdi1/plumber/view/windows/MainMenuWindow.java create mode 100644 ws2009/gdi I/exercise/src/Plumber/src/de/tu_darmstadt/gdi1/plumber/view/windows/Translatable.java create mode 100644 ws2009/gdi I/exercise/src/StockTicker/.classpath create mode 100644 ws2009/gdi I/exercise/src/StockTicker/.project create mode 100644 ws2009/gdi I/exercise/src/StockTicker/.settings/org.eclipse.jdt.core.prefs create mode 100644 ws2009/gdi I/exercise/src/StockTicker/Stock Ticker.ump create mode 100644 ws2009/gdi I/exercise/src/StockTicker/src/StockTicker.java create mode 100644 ws2009/gdi I/exercise/src/StockTicker/src/StockTicker_Solution.java create mode 100644 ws2009/gdi I/exercise/src/StockTicker/tests/SudokuTest.java create mode 100644 ws2009/gdi I/exercise/src/Sudoku/.classpath create mode 100644 ws2009/gdi I/exercise/src/Sudoku/.project create mode 100644 ws2009/gdi I/exercise/src/Sudoku/.settings/org.eclipse.jdt.core.prefs create mode 100644 ws2009/gdi I/exercise/src/Sudoku/src/Sudoku.java create mode 100644 ws2009/gdi I/exercise/src/TrainSimulation/.classpath create mode 100644 ws2009/gdi I/exercise/src/TrainSimulation/.project create mode 100644 ws2009/gdi I/exercise/src/TrainSimulation/src/TrainSimulation/IntChar.java create mode 100644 ws2009/gdi I/exercise/src/TrainSimulation/src/TrainSimulation/TrainDialog.java create mode 100644 ws2009/gdi I/exercise/src/TrainSimulation/src/TrainSimulation/TrainSimulation.java create mode 100644 ws2009/gdi I/exercise/src/TrainSimulation/src/exceptions/InvalidAreaException.java create mode 100644 ws2009/gdi I/exercise/src/TrainSimulation/src/exceptions/InvalidCoordinatesException.java create mode 100644 ws2009/gdi I/exercise/src/TrainSimulation/src/exceptions/NoObstacleException.java create mode 100644 ws2009/gdi I/exercise/src/TrainSimulation/src/exceptions/NoPlainsException.java create mode 100644 ws2009/gdi I/exercise/src/TrainSimulation/src/exceptions/NotACityException.java create mode 100644 ws2009/gdi I/exercise/src/TrainSimulation/src/exceptions/NotEnoughCitiesException.java diff --git a/ss2012/IT Sicherheit/Gastvorträge/Jan_Camensich.pdf b/ss2012/IT Sicherheit/Gastvortraege/Jan_Camensich.pdf similarity index 100% rename from ss2012/IT Sicherheit/Gastvorträge/Jan_Camensich.pdf rename to ss2012/IT Sicherheit/Gastvortraege/Jan_Camensich.pdf diff --git a/ss2013/Bachelor Thesis/Literatur/RiLSA_2010/BS1_TBA A 32 Schloßgraben_ Alexanderstraße_20110614_160000.TXT b/ss2013/Bachelor Thesis/Literatur/RiLSA_2010/BS1_TBA A 32 Schlossgraben_ Alexanderstraße_20110614_160000.TXT old mode 100755 new mode 100644 similarity index 100% rename from ss2013/Bachelor Thesis/Literatur/RiLSA_2010/BS1_TBA A 32 Schloßgraben_ Alexanderstraße_20110614_160000.TXT rename to ss2013/Bachelor Thesis/Literatur/RiLSA_2010/BS1_TBA A 32 Schlossgraben_ Alexanderstraße_20110614_160000.TXT diff --git a/ss2013/Bachelor Thesis/Literatur/Wikipedia als pdf/Zellulärer Automat.pdf b/ss2013/Bachelor Thesis/Literatur/Wikipedia als pdf/Zellulaaerer Automat.pdf similarity index 100% rename from ss2013/Bachelor Thesis/Literatur/Wikipedia als pdf/Zellulärer Automat.pdf rename to ss2013/Bachelor Thesis/Literatur/Wikipedia als pdf/Zellulaaerer Automat.pdf diff --git a/ss2013/Bachelor Thesis/Literatur/Zellularautomaten/Zellulärer Automat.pdf b/ss2013/Bachelor Thesis/Literatur/Zellularautomaten/Zellulaaerer Automat.pdf similarity index 100% rename from ss2013/Bachelor Thesis/Literatur/Zellularautomaten/Zellulärer Automat.pdf rename to ss2013/Bachelor Thesis/Literatur/Zellularautomaten/Zellulaaerer Automat.pdf diff --git a/ss2013/Bachelor Thesis/TK Präsentation PP/BachelorThesis - Vortrag TK.pdf b/ss2013/Bachelor Thesis/TK Praaesentation PP/BachelorThesis - Vortrag TK.pdf similarity index 100% rename from ss2013/Bachelor Thesis/TK Präsentation PP/BachelorThesis - Vortrag TK.pdf rename to ss2013/Bachelor Thesis/TK Praaesentation PP/BachelorThesis - Vortrag TK.pdf diff --git a/ss2013/Bachelor Thesis/TK Präsentation PP/BachelorThesis - Vortrag TK.pptx b/ss2013/Bachelor Thesis/TK Praaesentation PP/BachelorThesis - Vortrag TK.pptx similarity index 100% rename from ss2013/Bachelor Thesis/TK Präsentation PP/BachelorThesis - Vortrag TK.pptx rename to ss2013/Bachelor Thesis/TK Praaesentation PP/BachelorThesis - Vortrag TK.pptx diff --git a/ss2013/Bachelor Thesis/Verkehrszählung/ergebnisse.ods b/ss2013/Bachelor Thesis/Verkehrszaaehlung/ergebnisse.ods similarity index 100% rename from ss2013/Bachelor Thesis/Verkehrszählung/ergebnisse.ods rename to ss2013/Bachelor Thesis/Verkehrszaaehlung/ergebnisse.ods diff --git a/ss2013/Bachelor Thesis/Verkehrszählung/ergebnisse.pdf b/ss2013/Bachelor Thesis/Verkehrszaaehlung/ergebnisse.pdf similarity index 100% rename from ss2013/Bachelor Thesis/Verkehrszählung/ergebnisse.pdf rename to ss2013/Bachelor Thesis/Verkehrszaaehlung/ergebnisse.pdf diff --git a/ss2013/Bachelor Thesis/Verkehrszählung/ergebnisse_08_05.ods b/ss2013/Bachelor Thesis/Verkehrszaaehlung/ergebnisse_08_05.ods similarity index 100% rename from ss2013/Bachelor Thesis/Verkehrszählung/ergebnisse_08_05.ods rename to ss2013/Bachelor Thesis/Verkehrszaaehlung/ergebnisse_08_05.ods diff --git a/ss2013/Bachelor Thesis/Verkehrszählung/ergebnisse_08_05.pdf b/ss2013/Bachelor Thesis/Verkehrszaaehlung/ergebnisse_08_05.pdf similarity index 100% rename from ss2013/Bachelor Thesis/Verkehrszählung/ergebnisse_08_05.pdf rename to ss2013/Bachelor Thesis/Verkehrszaaehlung/ergebnisse_08_05.pdf diff --git a/ws2009/gdi I/exercise/src/GDI Calendar/.classpath b/ws2009/gdi I/exercise/src/GDI Calendar/.classpath new file mode 100644 index 00000000..04cc82dc --- /dev/null +++ b/ws2009/gdi I/exercise/src/GDI Calendar/.classpath @@ -0,0 +1,7 @@ + + + + + + + diff --git a/ws2009/gdi I/exercise/src/GDI Calendar/.project b/ws2009/gdi I/exercise/src/GDI Calendar/.project new file mode 100644 index 00000000..e24d16a5 --- /dev/null +++ b/ws2009/gdi I/exercise/src/GDI Calendar/.project @@ -0,0 +1,17 @@ + + + GDI Calendar + + + + + + org.eclipse.jdt.core.javabuilder + + + + + + org.eclipse.jdt.core.javanature + + diff --git a/ws2009/gdi I/exercise/src/GDI Calendar/.settings/org.eclipse.jdt.core.prefs b/ws2009/gdi I/exercise/src/GDI Calendar/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 00000000..878886f0 --- /dev/null +++ b/ws2009/gdi I/exercise/src/GDI Calendar/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,12 @@ +#Fri Dec 18 08:14:28 CET 2009 +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6 +org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve +org.eclipse.jdt.core.compiler.compliance=1.6 +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.6 diff --git a/ws2009/gdi I/exercise/src/GDI Calendar/src/GdICalendarTemplate/Calendar.java b/ws2009/gdi I/exercise/src/GDI Calendar/src/GdICalendarTemplate/Calendar.java new file mode 100644 index 00000000..fec94a71 --- /dev/null +++ b/ws2009/gdi I/exercise/src/GDI Calendar/src/GdICalendarTemplate/Calendar.java @@ -0,0 +1,106 @@ +package GdICalendarTemplate; + +/** + * Import TimeClasses + */ +import java.util.GregorianCalendar; + +/** + * Instances of the Calendar class contain CalendarEntries. + * + * @author Ulf Gebhardt + * @version 1.0 + */ +public class Calendar { + + /** + * Array of CalendarEntry. Startsize is 0. + */ + private CalendarEntry[] calendarEntries = new CalendarEntry[0]; + + /** + * Constructor -> Not used, Std Constructor + */ + public Calendar() + { + } + + /** + * Adds a CalendarEntry to the array in Calendar. + * @param calEntry + */ + public void addCalendarEntry(CalendarEntry calEntry) + { + CalendarEntry[] ce = calendarEntries; + calendarEntries = new CalendarEntry[ce.length+1]; + System.arraycopy(ce, 0, calendarEntries, 0, ce.length); + calendarEntries[calendarEntries.length-1] = calEntry; + } + + /** + * Returns String containing Entry.tostring values + * separated by linebreak. + * Does not include Private Elements from foreign + * People. + * + * @param user + * @return String + */ + public String listEntries(User user) + { + StringBuffer s = new StringBuffer(); + for (int i = 0; i < calendarEntries.length; i++) + { + if(!calendarEntries[i].isPrivate() || calendarEntries[i].getOwner() == user) + { + s.append(calendarEntries[i].toString()); + s.append("\n"); + } + } + + return s.toString(); + } + + /** + * Start the Programm, + * + * Add some Users, Entries, Print content. + * @param args + */ + public static void main(String[] args) { + // please leave this method alone for now... + // create a new calendar + Calendar cal = new Calendar(); + + // create some users + User paul = new User("Paul", "Anderson"); + User mary = new User("Mary", "Bobkins"); + User bob = new User("Adam", "Johanson"); + + // create some entries + CalendarEntry plants = new CalendarEntry( + new GregorianCalendar(2010, 3, 12, 14, 30), + "Water the plants", paul); + plants.setPrivate(true); + cal.addCalendarEntry(plants); + + CalendarEntry cinema = new CalendarEntry( + new GregorianCalendar(2010, 3, 12, 18, 30), + "Meet Mary for cinema", paul); + cal.addCalendarEntry(cinema); + + CalendarEntry call = new CalendarEntry( + new GregorianCalendar(2010, 3, 13, 9, 30), + "Call Susi for an appointment with Ron", mary); + cal.addCalendarEntry(call); + + CalendarEntry lunch = new CalendarEntry( + new GregorianCalendar(2010, 3, 13, 12, 00), + "Lunch with Paul", bob); + lunch.setPrivate(true); + cal.addCalendarEntry(lunch); + + // print out the list of entries + System.out.println(cal.listEntries(bob)); + } +} diff --git a/ws2009/gdi I/exercise/src/GDI Calendar/src/GdICalendarTemplate/CalendarEntry.java b/ws2009/gdi I/exercise/src/GDI Calendar/src/GdICalendarTemplate/CalendarEntry.java new file mode 100644 index 00000000..6c8d68fd --- /dev/null +++ b/ws2009/gdi I/exercise/src/GDI Calendar/src/GdICalendarTemplate/CalendarEntry.java @@ -0,0 +1,151 @@ +package GdICalendarTemplate; + +/** + * Import Time/Date/Converter Functionality + */ +import java.text.SimpleDateFormat; +import java.util.GregorianCalendar; +import java.util.Locale; + +/** + * All entries in the Calendar are instances of the class CalendarEntry. + * + * @author Ulf Gebhardt + * @version 1.0 + */ +public class CalendarEntry { + + /** + * DateTime Stamp + */ + private GregorianCalendar time; + /** + * Description what to do/remind + */ + private String description; + /** + * Owner of Entry + */ + private User owner; + /** + * Determines if Entry is visible for all. + */ + private boolean priv; + + /** + * Constructor of CalendarEntry + * + * @param time Timestamp (GregorianCalendar) + * @param description Description(String) + * @param owner (User) + */ + public CalendarEntry(GregorianCalendar time, String description, User owner) + { + setTime(time); + setDescription(description); + setOwner(owner); + } + + /** + * Returns the string-representation of + * a CalendarEntry of the following form: + * + * DAYSTRING, DAY MONTH YEAR - HOUR:MIN:SEC by USERFIRSTNAME USERLASTNAME | DESCRIPTION + * + * @return String + */ + @Override public String toString() + { + StringBuffer temp = new StringBuffer(); + + SimpleDateFormat sdf = new SimpleDateFormat("E, dd MMMM yyyy - HH:mm:ss", Locale.GERMAN); + + temp.append(sdf.format(time.getTime())); + temp.append(" by "); + temp.append(owner.toString()); + temp.append(" | "); + temp.append(description); + + return temp.toString(); + } + + /** + * Set Timestamp + * + * @param newtime GregorianCalendar + */ + public void setTime(GregorianCalendar newtime) + { + time = newtime; + } + + /** + * Set Timestamp + * + * @return GregorianCalendar + */ + public GregorianCalendar getTime() + { + return time; + } + + /** + * set new Description + * + * @param newdesc String + */ + public void setDescription(String newdesc) + { + description = newdesc; + } + + /** + * Returns Description + * + * @return String + */ + public String getDescription() + { + return description; + } + + /** + * Set new Owner + * + * @param newowner User + */ + public void setOwner(User newowner) + { + owner = newowner; + } + + /** + * Returns current Owner + * + * @return User + */ + public User getOwner() + { + return owner; + } + + /** + * Set Private-Flag + * + * @param newpriv boolean + */ + public void setPrivate(boolean newpriv) + { + priv = newpriv; + } + + /** + * Returns true if Entry is Private. + * + * @return boolean + */ + public boolean isPrivate() + { + return priv; + } +} diff --git a/ws2009/gdi I/exercise/src/GDI Calendar/src/GdICalendarTemplate/User.java b/ws2009/gdi I/exercise/src/GDI Calendar/src/GdICalendarTemplate/User.java new file mode 100644 index 00000000..9b4a04dc --- /dev/null +++ b/ws2009/gdi I/exercise/src/GDI Calendar/src/GdICalendarTemplate/User.java @@ -0,0 +1,78 @@ +package GdICalendarTemplate; + +/** + * User Class Definition + * used by: CalendarEntries + * + * @author Ulf Gebhardt + * @version 1.0 + */ +public class User { + + /** + * FirstName of the User + */ + private String givenName; + + /** + * FamilyName of the User + */ + private String familyName; + + /** + * The constructor for User objects + * + * @param givenName FirstName + * @param familyName LastName + */ + public User(String givenName, String familyName) + { + setGivenName(givenName); + setFamilyName(familyName); + } + + /** + * Sets givenName. + * @param newname + */ + public void setGivenName(String newname) + { + givenName = newname; + } + + /** + * Returns givenName + * @return String + */ + public String getGivenName() + { + return givenName; + } + + /** + * Returns familyName + * @return String + */ + public String getFamilyName() + { + return familyName; + } + + /** + * Sets familyName + * @param newname + */ + public void setFamilyName(String newname) + { + familyName = newname; + } + + /** + * Returns String representing a User + * @return String UserName + Lastname + */ + @Override public String toString() + { + return givenName + " " + familyName; + } +} \ No newline at end of file diff --git a/ws2009/gdi I/exercise/src/GDI Calendar/tests/CalendarTest.java b/ws2009/gdi I/exercise/src/GDI Calendar/tests/CalendarTest.java new file mode 100644 index 00000000..eb9a7d72 --- /dev/null +++ b/ws2009/gdi I/exercise/src/GDI Calendar/tests/CalendarTest.java @@ -0,0 +1,54 @@ + + + + +import GdICalendarTemplate.Calendar; +import GdICalendarTemplate.Calendar; +import GdICalendarTemplate.CalendarEntry; +import GdICalendarTemplate.CalendarEntry; +import GdICalendarTemplate.User; +import GdICalendarTemplate.User; +import java.util.GregorianCalendar; + +import junit.framework.Assert; +import org.junit.Test; + + +/** + * Test the various calendar functionality. + */ +public class CalendarTest{ + @Test + public void testUserCreation() { + User sasha = new User("Sasha", "Dole"); + Assert.assertEquals(sasha.getGivenName(), "Sasha"); + Assert.assertEquals(sasha.getFamilyName(), "Dole"); + } + + @Test + public void testCalendarEntryCreation() { + CalendarEntry meeting = new CalendarEntry(new GregorianCalendar(2010, + 3, 12, 18, 30), "Meeting with Alex and Joseph", new User( + "Sasha", "Dole")); + Assert.assertFalse(meeting.isPrivate()); + Assert.assertEquals(meeting.getDescription(), "Meeting with Alex and Joseph"); + Assert.assertEquals(meeting.getOwner().getGivenName(), "Sasha"); + } + + @Test + public void testCalendarCreation() { + Calendar cal = new Calendar(); + User bob = new User("Bob", "Smith"); + CalendarEntry meeting = new CalendarEntry(new GregorianCalendar(2010, + 3, 12, 18, 30), "Meeting with Alex and Joseph", new User( + "Sasha", "Dole")); + cal.addCalendarEntry(meeting); + Assert.assertTrue(cal.listEntries(bob).length() > 0); + Assert.assertTrue(cal.listEntries(bob).contains("Sasha")); + Assert.assertTrue(cal.listEntries(bob).contains("Meeting with Alex and Joseph")); + Assert.assertTrue(cal.listEntries(bob).contains("2010")); + Assert.assertTrue(cal.listEntries(bob).contains("April")); + Assert.assertTrue(cal.listEntries(bob).contains("Mo")); + } + +} diff --git a/ws2009/gdi I/exercise/src/GDI Calendar2/.classpath b/ws2009/gdi I/exercise/src/GDI Calendar2/.classpath new file mode 100644 index 00000000..04cc82dc --- /dev/null +++ b/ws2009/gdi I/exercise/src/GDI Calendar2/.classpath @@ -0,0 +1,7 @@ + + + + + + + diff --git a/ws2009/gdi I/exercise/src/GDI Calendar2/.project b/ws2009/gdi I/exercise/src/GDI Calendar2/.project new file mode 100644 index 00000000..8dfddccf --- /dev/null +++ b/ws2009/gdi I/exercise/src/GDI Calendar2/.project @@ -0,0 +1,17 @@ + + + GDI Calendar2 + + + + + + org.eclipse.jdt.core.javabuilder + + + + + + org.eclipse.jdt.core.javanature + + diff --git a/ws2009/gdi I/exercise/src/GDI Calendar2/.settings/org.eclipse.jdt.core.prefs b/ws2009/gdi I/exercise/src/GDI Calendar2/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 00000000..29a667ed --- /dev/null +++ b/ws2009/gdi I/exercise/src/GDI Calendar2/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,12 @@ +#Sat Dec 19 17:46:19 CET 2009 +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6 +org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve +org.eclipse.jdt.core.compiler.compliance=1.6 +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.6 diff --git a/ws2009/gdi I/exercise/src/GDI Calendar2/src/Calendar.java b/ws2009/gdi I/exercise/src/GDI Calendar2/src/Calendar.java new file mode 100644 index 00000000..1c407af8 --- /dev/null +++ b/ws2009/gdi I/exercise/src/GDI Calendar2/src/Calendar.java @@ -0,0 +1,190 @@ +import java.util.ArrayList; +import java.util.Arrays; +import java.util.GregorianCalendar; +import java.util.Iterator; +import java.util.List; + +/** + * Instances of the Calendar class contain CalendarEntries. + * + * @author Stefan Radomski, Guido Roessling + * @version 1.0 + */ +public class Calendar { + + /** + * the internal storage for calendar entries + */ + private List calendarEntries; + + /** + * Construct a new calendar object. + */ + public Calendar() + { + calendarEntries = new ArrayList(); + } + + /** + * Add a CalendarEntry to this calendar instance. + * + * @param calEntry + * The entry to add. + */ + public void addCalendarEntry(CalendarEntry calEntry) + { + if(!hasCalendarEntry(calEntry)) + { + calendarEntries.add(calEntry); + } + } + + /** + * Removes a CalendarEntry of this calendar instance. + * + * @param calEntry Entry to be removed + */ + public void removeCalendarEntry(CalendarEntry calEntry) + { + calendarEntries.remove(calEntry); + } + + /** + * Checks if a CalendarEntry is part of this Calendar. + * + * @param calEntry CalendarEntry to be checked + * @return boolean True if Entry is part of Calendar else false. + */ + public boolean hasCalendarEntry(CalendarEntry calEntry) + { + return calendarEntries.contains(calEntry); + } + + /** + * Removes all CalendarEntries from Calendar and replace them + * with given Array of CalendarEntries. + * + * No checks are performed if Entries are valid! + * + * @param calEntries Array of CalendarEntry + */ + public void setCalendarEntries(CalendarEntry[] calEntries) + { + calendarEntries = Arrays.asList(calEntries); + } + + /** + * Returns all CalendarEntries in this Calendar. + * + * @return CalendarEntry[] Array of CalendarEntries of Calendar. + */ + public CalendarEntry[] getCalendarEntries() + { + CalendarEntry[] temparray = new CalendarEntry[calendarEntries.size()]; + calendarEntries.toArray(temparray); + return temparray; + } + + /** + * Return a textual representation of all CalendarEntries visible for the + * given user. + * + * @param user + * The user object for whom to display the CalendarEntries. + * @return A String representing all the CalendarEntries. + */ + public String listEntries(User user) + { + StringBuffer sb = new StringBuffer(); + + Iterator it = calendarEntries.iterator(); + + while(it.hasNext()) + { + CalendarEntry ce = it.next(); + if(ce.isVisible(user)) + { + sb.append(ce.toString()); + sb.append("\n"); + } + } + + return sb.toString(); + } + + /** + * Returns new Calendar-Instance which contains only the Entries of + * this Calendar with are between start- and end-Time. + * + * @param start GregorianCalendar + * @param end GregorianCalendar + * @return Calendar + */ + public Calendar getBetween(GregorianCalendar start, GregorianCalendar end) + { + Calendar tempcal = new Calendar(); + + Iterator it = calendarEntries.iterator(); + + while(it.hasNext()) + { + CalendarEntry ce = it.next(); + + if(ce.isBetween(start,end)) + { + tempcal.addCalendarEntry(ce); + } + } + + return tempcal; + } + + /** + * Create a new calendar, three users and add some appointments to the + * calendar. + * + * @param args + * command-line arguments (ignored in this application) + */ + public static void main(String[] args) { + Calendar cal = new Calendar(); + + Developer paul = new Developer("Paul", "Anderson"); + Developer mary = new Developer("Mary", "Bobkins"); + Secretary bob = new Secretary("Adam", "Johanson"); + + Reminder plants = new Reminder( + new GregorianCalendar(2010, 3, 12, 14, 30), + new GregorianCalendar(2010, 3, 12, 14, 20), + "Water the plants", paul); + plants.setPrivate(true); + cal.addCalendarEntry(plants); + + Meeting dailyScrum = new Meeting( + new GregorianCalendar(2010, 3, 12, 10, 30), + new GregorianCalendar(2010, 3, 12, 11, 30), + "Discuss yesterdays work", paul); + dailyScrum.addParticipant(mary); + cal.addCalendarEntry(dailyScrum); + + Vacation spain = new Vacation( + new GregorianCalendar(2010, 2, 3), + new GregorianCalendar(2010, 2, 13), + "Enjoying the beach in spain", mary); + spain.setDelegate(bob); + cal.addCalendarEntry(spain); + + Illness cold = new Illness( + new GregorianCalendar(2010, 3, 3), + new GregorianCalendar(2010, 3, 4), + "Caught a cold, will be back tomorrow", bob); + cold.setDelegate(mary); + cal.addCalendarEntry(cold); + + Calendar earlyApril = cal.getBetween(new GregorianCalendar(2010, 3, 3), + new GregorianCalendar(2010, 3, 10)); + + System.out.println(cal.listEntries(bob)); + System.out.println(earlyApril.listEntries(bob)); + } +} diff --git a/ws2009/gdi I/exercise/src/GDI Calendar2/src/CalendarEntry.java b/ws2009/gdi I/exercise/src/GDI Calendar2/src/CalendarEntry.java new file mode 100644 index 00000000..212c2c5e --- /dev/null +++ b/ws2009/gdi I/exercise/src/GDI Calendar2/src/CalendarEntry.java @@ -0,0 +1,168 @@ +import java.text.SimpleDateFormat; +import java.util.GregorianCalendar; + +/** + * This class represents an entry in our calendar. All entries in the Calendar + * are instances of the class CalendarEntry. + * + * @author Stefan Radomski, Guido Roessling + * @version 1.0 + */ +public abstract class CalendarEntry { + + /** + * the description of this calendar entry + */ + private String description; + + /** + * the owner of this calendar entry + */ + private User owner; + + /** + * mark if this entry is private (only visible to the user) + */ + private boolean priv; + + /** + * the date and time for this entry + */ + protected GregorianCalendar time; + + /** + * Construct a new CalendarEntry object. + * + * @param time the GregorianCalendar representing the date and time of the + * entry. + * @param description a String describing the nature of the entry. + * @param owner the User object who owns this entry. + */ + public CalendarEntry(GregorianCalendar time, String description, User owner) + { + this.time = time; + this.description = description; + this.owner = owner; + } + + /** + * Check whether this entry is visible for the given user. + * + * @param user The user who wants to see calendar entries. + * @return A boolean value, indicating the visibility. + */ + public boolean isVisible(User user) { + return (user.equals(owner) || !priv); + } + + /** + * returns the description of this entry + * + * @return the description of this entry + */ + public String getDescription() { + return description; + } + + /** + * assigns a new description for this entry + * + * @param description + * the new description for this entry + */ + public void setDescription(String description) { + this.description = description; + } + + /** + * returns the owner of this entry + * + * @return the ower of this entry + */ + public User getOwner() { + return owner; + } + + /** + * assigns a new owner for this entry + * + * @param time the new owner for this entry + */ + public void setOwner(User owner) { + this.owner = owner; + } + + /** + * Check whether this is a private entry. + * + * @return The privacy flag of the entry. + */ + public boolean isPrivate() { + return priv; + } + + /** + * Set the privacy of this entry. + * + * @param priv set to true for private or false for public (default). + */ + public void setPrivate(boolean priv) { + this.priv = priv; + } + + /** + * returns the date and time of this entry + * + * @return the date and time of this entry + */ + public GregorianCalendar getTime() { + return time; + } + + /** + * assigns a new date and time for this entry + * + * @param time the new date and time for this entry + */ + public void setTime(GregorianCalendar time) + { + this.time = time; + } + + /** + * Returns true if CalendarEntry is between start- and end-Time else false. + * + * @param start + * @param end + * @return boolean + */ + public boolean isBetween(GregorianCalendar start, GregorianCalendar end) + { + if( time.getTime().getTime() >= start.getTime().getTime() && + time.getTime().getTime() <= end.getTime().getTime() ) + { + return true; + } + + return false; + } + + /** + * returns a String representation of this CalendarEntry. + * + * @return a String representing this object + */ + @Override + public String toString() + { + StringBuilder sb = new StringBuilder(); + SimpleDateFormat sdf = new SimpleDateFormat("E, dd MMMM yyyy - kk:mm:ss"); + + sb.append(sdf.format(time.getTime())); + sb.append(" von ").append(owner.getGivenName()).append(" "); + sb.append(owner.getFamilyName()); + sb.append(" | ").append(description); + + return sb.toString(); + } +} diff --git a/ws2009/gdi I/exercise/src/GDI Calendar2/src/CalendarEntryDuration.java b/ws2009/gdi I/exercise/src/GDI Calendar2/src/CalendarEntryDuration.java new file mode 100644 index 00000000..d91b4a95 --- /dev/null +++ b/ws2009/gdi I/exercise/src/GDI Calendar2/src/CalendarEntryDuration.java @@ -0,0 +1,199 @@ +import java.util.GregorianCalendar; + +/** + * This Class represents a CalendarEntry with a duration. + * + * @author Ulf Gebhardt + * @version 1.0 + */ + +public class CalendarEntryDuration extends CalendarEntry +{ + /** + * Start-Time of the Duration + */ + private GregorianCalendar startTime; + + /** + * End-Time of the Duration + */ + private GregorianCalendar endTime; + + /** + * Delegate which replaces absent Person + */ + private User delegate; + + /** + * Constructor of CalendarEntryDuration. + * + * You have to pass a aditional start- and end-Time. + * + * @param startTime + * @param endTime + * @param description + * @param owner + */ + public CalendarEntryDuration( GregorianCalendar startTime, + GregorianCalendar endTime, + String description, + User owner) + { + super(startTime,description,owner); + setStartTime(startTime); + setEndTime(endTime); + } + + public GregorianCalendar getStartTime() { + return startTime; + } + + public void setStartTime(GregorianCalendar startTime) { + this.startTime = startTime; + } + + public GregorianCalendar getEndTime() { + return endTime; + } + + public void setEndTime(GregorianCalendar endTime) { + this.endTime = endTime; + } + + public User getDelegate() { + return delegate; + } + + public void setDelegate(User delegate) { + this.delegate = delegate; + } + + /** + * returns Duration of CalendarEntry on given field. + * + * @param field + * @return integer + */ + public int getDuration(int field) + { + double timedif = endTime.getTimeInMillis() - startTime.getTimeInMillis(); + + switch(field) + { + case GregorianCalendar.DATE: + { + return (int) Math.floor(timedif / (1000*60*60*24)); + } + case GregorianCalendar.HOUR: + { + return (int) Math.floor(timedif / (1000*60*60)); + } + case GregorianCalendar.MINUTE: + { + return (int) Math.floor(timedif / (1000*60)); + } + case GregorianCalendar.SECOND: + { + return (int) Math.floor(timedif / (1000)); + } + default: + { + return 0; + } + } + } + + /** + * + * @param date + * @return + */ + public boolean spans(GregorianCalendar date) + { + if( (date.getTime().getTime() - startTime.getTime().getTime()) >= 0 && + (date.getTime().getTime() - endTime.getTime().getTime()) <= 0 ) + { + return true; + } + + return false; + } + + /** + * Returns true if CalendarEntry is between start- and end-Time else false. + * + * @param start + * @param end + * @return boolean + */ + @Override + public boolean isBetween(GregorianCalendar start, GregorianCalendar end) + { + if( (startTime.getTime().getTime() >= start.getTime().getTime() && + startTime.getTime().getTime() <= end.getTime().getTime() ) || + (endTime.getTime().getTime() >= start.getTime().getTime() && + endTime.getTime().getTime() <= end.getTime().getTime() )) + { + return true; + } + + return false; + } + + /** + * Checks if given User is allowed to view this CalendarEntry. + * + * @param user + * @return boolean + */ + @Override + public boolean isVisible(User user) + { + if(user == this.getOwner() || !isPrivate() || user == delegate) + { + return true; + } + + return false; + } + + /** + * returns a String representation of this CalendarEntry. + * + * Warning, do not count months and years!!! + * + * @return a String representing this object + */ + @Override + public String toString() + { + String result = super.toString() + " - about "; + + if(getDuration(GregorianCalendar.DATE) > 0) + { + if(Math.floor((double)getDuration(GregorianCalendar.DATE) / 365) > 0) + { + return result + (int)Math.floor((double)getDuration(GregorianCalendar.DATE) / 365) + " year(s)"; + } + + return result + getDuration(GregorianCalendar.DATE) + " day(s)"; + } + + if(getDuration(GregorianCalendar.HOUR) > 0) + { + return result + getDuration(GregorianCalendar.HOUR) + " hour(s)"; + } + + if(getDuration(GregorianCalendar.MINUTE) > 0) + { + return result + getDuration(GregorianCalendar.MINUTE) + " minute(s)"; + } + + if(getDuration(GregorianCalendar.SECOND) > 0) + { + return result + getDuration(GregorianCalendar.SECOND) + " second(s)"; + } + + return super.toString(); + } +} \ No newline at end of file diff --git a/ws2009/gdi I/exercise/src/GDI Calendar2/src/Developer.java b/ws2009/gdi I/exercise/src/GDI Calendar2/src/Developer.java new file mode 100644 index 00000000..35a73a6f --- /dev/null +++ b/ws2009/gdi I/exercise/src/GDI Calendar2/src/Developer.java @@ -0,0 +1,20 @@ +/** + * A Developer is a special type of user + * + * + * @author Stefan Radomski, Guido Rößling + * @version 1.0 2009-12-03 + */ +public class Developer extends User{ + + /** + * Create a new Developer. + * + * @param givenName The developers first name. + * @param familyName The developers last name. + */ + public Developer(String givenName, String familyName) + { + super(givenName, familyName); + } +} diff --git a/ws2009/gdi I/exercise/src/GDI Calendar2/src/Illness.java b/ws2009/gdi I/exercise/src/GDI Calendar2/src/Illness.java new file mode 100644 index 00000000..1094e83b --- /dev/null +++ b/ws2009/gdi I/exercise/src/GDI Calendar2/src/Illness.java @@ -0,0 +1,27 @@ +import java.util.GregorianCalendar; + +/** + * Illness is a type of CalendarEntry that has a start and end time + * + * @author Stefan Radomski, Guido Rößling + * @version 1.0 2009-12-03 + */ +public class Illness extends CalendarEntryDuration { + + /** + * Create a new period of illness as it might be reported by a user. + * + * @param startTime The day the user went absent due to her illness. + * @param endTime The day the user plans to return. + * @param description Some additional information. + * @param owner The user being ill. + */ + public Illness( GregorianCalendar startTime, + GregorianCalendar endTime, + String description, + User owner) + { + super(startTime,endTime,description,owner); + } + +} diff --git a/ws2009/gdi I/exercise/src/GDI Calendar2/src/Meeting.java b/ws2009/gdi I/exercise/src/GDI Calendar2/src/Meeting.java new file mode 100644 index 00000000..39cfb97e --- /dev/null +++ b/ws2009/gdi I/exercise/src/GDI Calendar2/src/Meeting.java @@ -0,0 +1,112 @@ +import java.util.GregorianCalendar; +import java.util.List; +import java.util.ArrayList; + +/** + * A Meeting is a calendar entry with participants and a start and + * end time. + * + * @author Stefan Radomski, Guido Rößling + * @version 1.0 2009-12-03 + */ +public class Meeting extends CalendarEntryDuration +{ + /** + * Variable which stores participants of the meeting + */ + private List participants; + + /** + * Create a new Meeting. + * + * @param startTime The time the meeting will start. + * @param endTime The end time of the meeting. + * @param description Additional information regarding the meetin. + * @param owner The organizer of the meeting. + */ + public Meeting( GregorianCalendar startTime, + GregorianCalendar endTime, + String description, + User owner) + { + super(startTime,endTime,description,owner); + participants = new ArrayList(); + } + + /** + * Checks if user is Allowed to this Meeting + * + * @param user + * @return boolean + */ + private boolean isUserAllowed(User user) + { + return user.getClass() == Developer.class ? true : false; + } + + /** + * Adds User to Participant-List if user is allowed. + * + * @param newUser + */ + public void addParticipant(User newUser) + { + if(isUserAllowed(newUser) && !hasParticipant(newUser)) + { + participants.add(newUser); + } + + //error here + } + + /** + * Removes given User from Participant-List + * + * Do not invoke error if User is not in List! + * + * @param user + */ + public void removeParticipant(User user) + { + participants.remove(user); + } + + /** + * Checks if User is in Participant-List. + * + * @param user + * @return boolean + */ + public boolean hasParticipant(User user) + { + return participants.contains(user); + } + + /** + * Sets Participant-List. + * Users who are not allowed are removed from List. + * + * @param users + */ + public void setParticipants(User[] users) + { + participants.clear(); + + for(int i = 0; i < users.length; i++) + { + addParticipant(users[i]); + } + } + + /** + * Returns Participant-List. + * + * @return User[] + */ + public User[] getParticipants() + { + User[] temparray = new User[participants.size()]; + participants.toArray(temparray); + return temparray; + } +} diff --git a/ws2009/gdi I/exercise/src/GDI Calendar2/src/Note.java b/ws2009/gdi I/exercise/src/GDI Calendar2/src/Note.java new file mode 100644 index 00000000..4f3ec946 --- /dev/null +++ b/ws2009/gdi I/exercise/src/GDI Calendar2/src/Note.java @@ -0,0 +1,35 @@ +import java.util.GregorianCalendar; + +/** + * A note is a calendar entry that stores details + * + * @author Stefan Radomski, Guido Rößling + * @version 1.0 2009-12-03 + */ +public class Note extends CalendarEntry +{ + /** + * Variable to store Details of the Note. + */ + private String details; + + /** + * Create a new note to be added to a calendar. + * + * @param time The time this note will become relevant. + * @param description Additinal information. + * @param owner The owner of the note. + */ + public Note(GregorianCalendar time, String description, User owner) + { + super(time, description, owner); + } + + public String getDetails() { + return details; + } + + public void setDetails(String details) { + this.details = details; + } +} diff --git a/ws2009/gdi I/exercise/src/GDI Calendar2/src/Reminder.java b/ws2009/gdi I/exercise/src/GDI Calendar2/src/Reminder.java new file mode 100644 index 00000000..cc078dde --- /dev/null +++ b/ws2009/gdi I/exercise/src/GDI Calendar2/src/Reminder.java @@ -0,0 +1,44 @@ +import java.util.GregorianCalendar; + +/** + * A reminder is a calendar entry that appears at a defined + * point in time but has no duration. + * + * @author Stefan Radomski, Guido Rößling + * @version 1.0 2009-12-03 + */ +public class Reminder extends CalendarEntry +{ + /** + * The time when to remind the owner about this entry. + */ + private GregorianCalendar alarmTime; + + /** + * Create a new reminder to be added in a calendar. + * + * @param time The time this reminder references. + * @param alarmTime When to alert the owner about this reminder. + * @param description Some descriptive information. + * @param owner The user owning this entry. + */ + public Reminder(GregorianCalendar time, + GregorianCalendar alarmTime, + String description, + User owner) + { + super(time,description,owner); + setAlarmTime(alarmTime); + } + + public GregorianCalendar getAlarmTime() { + return alarmTime; + } + + public void setAlarmTime(GregorianCalendar alarmTime) { + if(alarmTime.before(time)) + { + this.alarmTime = alarmTime; + } + } +} diff --git a/ws2009/gdi I/exercise/src/GDI Calendar2/src/Secretary.java b/ws2009/gdi I/exercise/src/GDI Calendar2/src/Secretary.java new file mode 100644 index 00000000..6258e331 --- /dev/null +++ b/ws2009/gdi I/exercise/src/GDI Calendar2/src/Secretary.java @@ -0,0 +1,19 @@ +/** + * A secretary is a special user for calendars. + * + * @author Stefan Radomski, Guido Rößling + * @version 1.0 2009-12-03 + */ +public class Secretary extends User{ + + /** + * Creates a new secretary + * + * @param givenName The first name. + * @param familyName The last name. + */ + public Secretary(String givenName, String familyName) + { + super(givenName,familyName); + } +} diff --git a/ws2009/gdi I/exercise/src/GDI Calendar2/src/User.java b/ws2009/gdi I/exercise/src/GDI Calendar2/src/User.java new file mode 100644 index 00000000..ed1790c3 --- /dev/null +++ b/ws2009/gdi I/exercise/src/GDI Calendar2/src/User.java @@ -0,0 +1,80 @@ +/** + * Instances of the user class own CalendarEntries + * + * @author Stefan Radomski, Guido Roessling + * @version 1.0 2009-12-03 + */ +public abstract class User { + + /** + * the given name of this user + */ + private String givenName; + + /** + * the family name of this user + */ + private String familyName; + + /** + * The constructor for User objects + * + * @param givenName the first name. + * @param familyName the last name. + */ + public User(String givenName, String familyName) { + this.givenName = givenName; + this.familyName = familyName; + } + + /** + * returns a textual representation of this user as a String + * + * @return the user in a String representation + */ + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append(givenName); + if (givenName.length() > 0) { + sb.append(" "); + } + sb.append(familyName); + return sb.toString(); + } + + /** + * returns the given name of this user + * + * @return the given name of this user + */ + public String getGivenName() { + return givenName; + } + + /** + * sets the given name of this user + * + * @param givenName the new given name of the user + */ + public void setGivenName(String givenName) { + this.givenName = givenName; + } + + /** + * returns the family name of this user + * + * @return the family name of this user + */ + public String getFamilyName() { + return familyName; + } + + /** + * sets the family name of this user + * + * @param familyName the new family name of the user + */ + public void setFamilyName(String familyName) { + this.familyName = familyName; + } +} diff --git a/ws2009/gdi I/exercise/src/GDI Calendar2/src/Vacation.java b/ws2009/gdi I/exercise/src/GDI Calendar2/src/Vacation.java new file mode 100644 index 00000000..25510b4e --- /dev/null +++ b/ws2009/gdi I/exercise/src/GDI Calendar2/src/Vacation.java @@ -0,0 +1,27 @@ +import java.util.GregorianCalendar; + +/** + * Vacation represents an absence of a person due to a vacation + * + * @author Stefan Radomski, Guido Rößling + * @version 1.0 2009-12-03 + */ +public class Vacation extends CalendarEntryDuration +{ + + /** + * Create a new entry of a person's vacation. + * + * @param startTime When the vacation will start. + * @param endTime When the person will be come back. + * @param description Some additional information about the vacation. + * @param owner The person going on vacation. + */ + public Vacation(GregorianCalendar startTime, + GregorianCalendar endTime, + String description, + User owner) + { + super(startTime,endTime,description,owner); + } +} diff --git a/ws2009/gdi I/exercise/src/GDI Calendar2/tests/CalendarTest.java b/ws2009/gdi I/exercise/src/GDI Calendar2/tests/CalendarTest.java new file mode 100644 index 00000000..5afc2125 --- /dev/null +++ b/ws2009/gdi I/exercise/src/GDI Calendar2/tests/CalendarTest.java @@ -0,0 +1,453 @@ +import java.util.GregorianCalendar; + +import junit.framework.Assert; + +import org.junit.Before; +import org.junit.Test; + + +/** + * Test the various calendar functionality. + */ +public class CalendarTest { + + /** + * @author felix + */ + + private Calendar testCal; + private Developer paul; + private Developer mary; + private Secretary bob; + + private Note note; + private Illness illness; + private Reminder reminder; + private Meeting meeting; + private Vacation vacation; + + @Before + public void Init() { + // test calendar object + testCal = new Calendar(); + + // users init + paul = new Developer("Paul", "Anderson"); + mary = new Developer("Mary", "Bobkins"); + bob = new Secretary("Adam", "Johanson"); + + // note init + note = new Note(new GregorianCalendar(2009, 1, 0, 16, 0), "my note", paul); + note.setDetails("test"); + testCal.addCalendarEntry(note); + + // reminder init + reminder = new Reminder(new GregorianCalendar(2010, 3, 12, 14, 30), new GregorianCalendar(2010, 3, 12, 14, 20), "Water the plants", mary); + reminder.setPrivate(true); + testCal.addCalendarEntry(reminder); + + // meeting init + meeting = new Meeting(new GregorianCalendar(2010, 1, 1, 16, 30), new GregorianCalendar(2010, 1, 1, 17, 0), "test meeting", bob); + meeting.addParticipant(paul); + meeting.addParticipant(mary); + // meeting.addParticipant(bob); --> not possible - bob isn't a developer! + + // illness init + illness = new Illness(new GregorianCalendar(2010, 0, 1), new GregorianCalendar(2010, 0, 2), "bobs illness", bob); + illness.setPrivate(true); + testCal.addCalendarEntry(illness); + + // vacation init + vacation = new Vacation(new GregorianCalendar(2020, 0, 0, 0, 0), new GregorianCalendar(2020, 0, 0, 0, 1), "short vacation", paul); + testCal.addCalendarEntry(vacation); + } + + @Test + public void noteTest() { + // has note the additional field details? + Assert.assertEquals(note.getDetails(), "test"); + Assert.assertEquals(note.getDescription(), "my note"); + } + + @Test + public void reminderTest() { + // check current alarm time (should be set) + Assert.assertEquals(reminder.getAlarmTime(), new GregorianCalendar(2010, 3, 12, 14, 20)); + + // set new alarm time after the actual time - this should not work + // -> old alarm time should be set + try { + reminder.setAlarmTime(new GregorianCalendar(2010, 3, 12, 14, 40)); + } catch (Exception e) { + } + Assert.assertEquals(reminder.getAlarmTime(), new GregorianCalendar(2010, 3, 12, 14, 20)); + } + + @Test + public void meetingTest() { + // test method getParticipants + String[] names = {"Paul", "Mary"}; + User[] participants = meeting.getParticipants(); + + for (int i=0; i 30min + + // check getDuration + Assert.assertEquals(0, meeting.getDuration(GregorianCalendar.DATE)); + Assert.assertEquals(0, meeting.getDuration(GregorianCalendar.HOUR)); + Assert.assertEquals(30, meeting.getDuration(GregorianCalendar.MINUTE)); + Assert.assertEquals(1800, meeting.getDuration(GregorianCalendar.SECOND)); + + // check spans + // 16:40 is within 16:30 - 17:00 + Assert.assertTrue(meeting.spans(new GregorianCalendar(2010, 1, 1, 16, 40))); + // 16:00 is not within 16:30 - 17:00 + Assert.assertFalse(meeting.spans(new GregorianCalendar(2010, 1, 1, 16, 0))); + + // check new toString() + Assert.assertEquals("Mo, 01 Februar 2010 - 16:30:00 von Adam Johanson | test meeting - about 30 minute(s)", meeting.toString()); + meeting.setEndTime(new GregorianCalendar(2011, 1, 1, 18, 0)); + Assert.assertEquals("Mo, 01 Februar 2010 - 16:30:00 von Adam Johanson | test meeting - about 1 year(s)", meeting.toString()); + } + + @Test + public void calendarTest() { + // test getBetween + Calendar newCalendar = testCal.getBetween(new GregorianCalendar(2009, 0, 0, 0, 0), new GregorianCalendar(2010, 0, 0, 0, 0)); + + // pauls note is the only entry that's in 2009 + Assert.assertEquals("Sa, 31 Januar 2009 - 16:00:00 von Paul Anderson | my note\n", newCalendar.listEntries(paul)); + Assert.assertEquals(1, newCalendar.getCalendarEntries().length); // getCalendarEntries should work also for this test + + // test addCalendarEntry and hasCalendarEntry + Assert.assertTrue(newCalendar.hasCalendarEntry(note)); + newCalendar.addCalendarEntry(reminder); + Assert.assertTrue(newCalendar.hasCalendarEntry(reminder)); + + // test removeCalendarEntry + newCalendar.removeCalendarEntry(reminder); + Assert.assertFalse(newCalendar.hasCalendarEntry(reminder)); + + // test getCalendarEntries and setCalendarEntries + CalendarEntry[] testEntries = {meeting, illness}; + newCalendar.setCalendarEntries(testEntries); + CalendarEntry[] actualEntries = newCalendar.getCalendarEntries(); + for (int i=0; i 0); + Assert.assertTrue(cal.listEntries(bob).contains("Nailin'")); + Assert.assertTrue(cal.listEntries(bob).contains("Meeting with Alex and Joseph")); + Assert.assertTrue(cal.listEntries(bob).contains("2010")); + Assert.assertTrue(cal.listEntries(bob).contains("April")); + Assert.assertTrue(cal.listEntries(bob).contains("Mo")); + } + + @Test + public void testCalendarCreationAgain() + { + Calendar cal = new Calendar(); + + Developer mrt = new Developer("Mr.", "T."); + Assert.assertEquals(mrt.getGivenName(), "Mr."); + Assert.assertEquals(mrt.getFamilyName(), "T."); + + Developer god = new Developer("Gott", "braucht keinen Nachnamen"); + Assert.assertEquals(god.getGivenName(), "Gott"); + Assert.assertEquals(god.getFamilyName(), "braucht keinen Nachnamen"); + + Secretary hp = new Secretary("Haris", "Pilton"); + Assert.assertEquals(hp.getGivenName(), "Haris"); + Assert.assertEquals(hp.getFamilyName(), "Pilton"); + + Developer cn = new Developer("chuck", "norris"); + Assert.assertEquals(cn.getGivenName(), "chuck"); + Assert.assertEquals(cn.getFamilyName(), "norris"); + + Note note = new Note( new GregorianCalendar(2010, 3, 12, 14, 30), + "Perform Roundhousekick", + cn); + + Assert.assertEquals(note.getDescription(), "Perform Roundhousekick"); + Assert.assertEquals(note.getDetails(),null); + Assert.assertFalse(note.isPrivate()); + Assert.assertTrue(note.isVisible(mrt)); + Assert.assertTrue(note.isVisible(god)); + Assert.assertTrue(note.isVisible(hp)); + Assert.assertTrue(note.isVisible(cn)); + + note.setDetails("In Ya Face"); + + Assert.assertEquals(note.getDetails(),"In Ya Face"); + + note.setPrivate(true); + + Assert.assertFalse(note.isVisible(mrt)); + Assert.assertFalse(note.isVisible(god)); + Assert.assertFalse(note.isVisible(hp)); + Assert.assertTrue(note.isVisible(cn)); + + note.setPrivate(false); + + Reminder rem = new Reminder( new GregorianCalendar(2010, 3, 12, 14, 30), + new GregorianCalendar(2010, 3, 12, 14, 20), + "Tell some Chuck Norris Jokes", + god); + rem.setPrivate(true); + + Assert.assertEquals(rem.getDescription(), "Tell some Chuck Norris Jokes"); + Assert.assertTrue(rem.isPrivate()); + Assert.assertFalse(rem.isVisible(mrt)); + Assert.assertTrue(rem.isVisible(god)); + Assert.assertFalse(rem.isVisible(hp)); + Assert.assertFalse(rem.isVisible(cn)); + + Meeting meet = new Meeting( new GregorianCalendar(2010, 3, 12, 10, 30), + new GregorianCalendar(2010, 3, 12, 11, 30), + "Meeting about ... wow shiny new shoes", + hp); + Assert.assertFalse(meet.hasParticipant(god)); + meet.addParticipant(god); + Assert.assertTrue(meet.hasParticipant(god)); + + Assert.assertEquals(meet.getDescription(), "Meeting about ... wow shiny new shoes"); + Assert.assertFalse(meet.isPrivate()); + Assert.assertTrue(meet.isVisible(mrt)); + Assert.assertTrue(meet.isVisible(god)); + Assert.assertTrue(meet.isVisible(hp)); + Assert.assertTrue(meet.isVisible(cn)); + + Vacation vac = new Vacation( new GregorianCalendar(2010, 2, 3), + new GregorianCalendar(2010, 2, 13), + "Create Nightelf", + mrt); + + Assert.assertEquals(vac.getDelegate(),null); + + vac.setDelegate(cn); + + Assert.assertEquals(vac.getDelegate(),cn); + + Assert.assertEquals(vac.getDescription(), "Create Nightelf"); + Assert.assertFalse(vac.isPrivate()); + Assert.assertTrue(vac.isVisible(mrt)); + Assert.assertTrue(vac.isVisible(god)); + Assert.assertTrue(vac.isVisible(hp)); + Assert.assertTrue(vac.isVisible(cn)); + + Illness ill = new Illness( new GregorianCalendar(2010, 3, 3), + new GregorianCalendar(2010, 3, 4), + "Chuck Norris f�ngt sich keine Erk�ltung ein, eine Erk�ltung f�ngt sich Eine von Chuck Norris ein", + cn); + + Assert.assertEquals(ill.getDelegate(),null); + + ill.setDelegate(god); + + Assert.assertEquals(ill.getDelegate(),god); + + Assert.assertEquals(ill.getDescription(), "Chuck Norris f�ngt sich keine Erk�ltung ein, eine Erk�ltung f�ngt sich Eine von Chuck Norris ein"); + Assert.assertFalse(ill.isPrivate()); + Assert.assertTrue(ill.isVisible(mrt)); + Assert.assertTrue(ill.isVisible(god)); + Assert.assertTrue(ill.isVisible(hp)); + Assert.assertTrue(ill.isVisible(cn)); + + Calendar earlyApril = cal.getBetween( new GregorianCalendar(2010, 3, 3), + new GregorianCalendar(2010, 3, 10)); + + cal.listEntries(mrt); + cal.listEntries(god); + cal.listEntries(hp); + cal.listEntries(cn); + + earlyApril.listEntries(mrt); + earlyApril.listEntries(god); + earlyApril.listEntries(hp); + earlyApril.listEntries(cn); + } + +} diff --git a/ws2009/gdi I/exercise/src/Plumber/.classpath b/ws2009/gdi I/exercise/src/Plumber/.classpath new file mode 100644 index 00000000..a96066f3 --- /dev/null +++ b/ws2009/gdi I/exercise/src/Plumber/.classpath @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/ws2009/gdi I/exercise/src/Plumber/.project b/ws2009/gdi I/exercise/src/Plumber/.project new file mode 100644 index 00000000..4907725b --- /dev/null +++ b/ws2009/gdi I/exercise/src/Plumber/.project @@ -0,0 +1,17 @@ + + + Plumber + + + + + + org.eclipse.jdt.core.javabuilder + + + + + + org.eclipse.jdt.core.javanature + + diff --git a/ws2009/gdi I/exercise/src/Plumber/.settings/org.eclipse.jdt.core.prefs b/ws2009/gdi I/exercise/src/Plumber/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 00000000..a0a6c54a --- /dev/null +++ b/ws2009/gdi I/exercise/src/Plumber/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,12 @@ +#Thu Feb 25 22:27:38 CET 2010 +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6 +org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve +org.eclipse.jdt.core.compiler.compliance=1.6 +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.6 diff --git a/ws2009/gdi I/exercise/src/Plumber/Plumber.de_DE b/ws2009/gdi I/exercise/src/Plumber/Plumber.de_DE new file mode 100644 index 00000000..bc0b60cb --- /dev/null +++ b/ws2009/gdi I/exercise/src/Plumber/Plumber.de_DE @@ -0,0 +1,101 @@ +//about window +credits = Impressum: +names = Sascha, Yvonne, Ulf, Jana +about =
Vier Leute fanden sich zusammen
in zwei Wochen
ein Spiel zu erstellen ...<\center><\html> + +backButton.iconName= +backButton.label=Zurueck +backButton.mnemonic=z +backButton.toolTipText=Druecken Sie diesen Knopf um zum Menue zu gehen + +//options window +aim = Ziel des Spieles:
Durch rotieren der Rohre eine funktionierende Verbindung zwischen der Quelle und der Senke herstellen.<\html> +control = Steuerung:
Mit der Maus und/oder Tastatur (Pfeiltasten)<\html> +rules = Regeln:
Aus jeder Aktion und der Zeit wird der Punktestand errechnet. Sie können Schritte rueckgaengig machen und wiederholen lassen, auch ein Neustart ist möglich.
Achten Sie auf die ablaufende Zeit! Nach Ablauf der Zeit beginnt das Wasser automatisch zu fließen. Gefuellte Rohre sind nicht mehr drehbar.<\html> +shortcuts = Tastenbelegung:
[w] - Wasser starten
[n] - Neustart
[t] - Thema wechseln
[h] - Bestenliste
[q] - Beenden
[Leertaste] - rotieren
[Enter] - Wiederholen
[Backspace] - Zurueck<\html> + +//highscore window +time = Zeit +points = Punkte +highscore = Bestenliste + +//main menu +startButton.iconName= +startButton.label= Starte Plumber +startButton.mnemonic=s +startButton.toolTipText=Druecken Sie diesen Knopf zum Starten + +highscoreButton.iconName= +highscoreButton.label= Highscore +highscoreButton.mnemonic=h +highscoreButton.toolTipText=Hier sehen Sie den Highscore + +directionsButton.iconName= +directionsButton.label= Anleitung +directionsButton.mnemonic=o +directionsButton.toolTipText=Klicken Sie hier fuer weiter Optionen + +aboutButton.iconName= +aboutButton.label= Informationen +aboutButton.mnemonic=i +aboutButton.toolTipText=Klicken Sie hier fuer weiter Informationen + + +languageMenu.iconName= +languageMenu.label= Sprache +languageMenu.mnemonic=l +languageMenu.toolTipText=Sprache hier auswaehlen + +deutschItem.iconName= +deutschItem.label=Deutsch +deutschItem.mnemonic=d +deutschItem.toolTipText=Waehle deutsch + +englishItem.iconName= +englishItem.label=English +englishItem.mnemonic=e +englishItem.toolTipText=Choose English + +//window + +timeLeft = Übrige Zeit: + +restart.iconName= +restart.label=Neustart +restart.mnemonic=n +restart.toolTipText=Druecken Sie diesen Knopf zum Neustarten + +undo.iconName= +undo.label=<<< +undo.mnemonic=r +undo.toolTipText=Druecken Sie diesen Knopf um den letzten Schritt rueckgaengig zu machen + +redo.iconName= +redo.label=>>> +redo.mnemonic=w +redo.toolTipText=Druecken Sie diesen Knopf um den letzten Schritt zu Wiederholen + +exit.iconName= +exit.label=Beenden +exit.mnemonic=b +exit.toolTipText=Druecken Sie diesen Knopf zum Beenden + +theme.iconName= +theme.label=Thema +theme.mnemonic=t +theme.toolTipText=Druecken Sie diesen Knopf um ein anderes Thema auszusuchen + +Wasser.iconName= +Wasser.label=Wasser +Wasser.mnemonic=w +Wasser.toolTipText=Druecken Sie diesen Knopf um das Wasser zu starten + +Highscore.iconName= +Highscore.label=Highscore +Highscore.mnemonic=h +Highscore.toolTipText=Zeigt Highscore fuer aktuelles Levelset + + +gameover = Spiel vorbei! +mastered = Level geschafft! +ended = Das Levelpaket ist zu Ende. Bitte im Hauptmenü ein neues wählen. diff --git a/ws2009/gdi I/exercise/src/Plumber/Plumber.en_US b/ws2009/gdi I/exercise/src/Plumber/Plumber.en_US new file mode 100644 index 00000000..cb3dc502 --- /dev/null +++ b/ws2009/gdi I/exercise/src/Plumber/Plumber.en_US @@ -0,0 +1,101 @@ +//about window +credits = Credits: +names = Sascha, Yvonne, Ulf, Jana +about =
Four people came together
to create one game
in two weeks ...<\center><\html> + +backButton.iconName= +backButton.label= Back +backButton.mnemonic=b +backButton.toolTipText=Press Button to get back to the menu + +//options window +aim = Goal:
The goal is to find a valid connection between the sink and the well <\html> +control = Control:
With the mouse or the arrow keys <\html> +rules = Rules:
Your Points are calculated according to every action and the time. You can undo and redo steps. A restart of a level is also possible.
Look at the time you have left. The water will start to flow after the time is down to zero. You can't move pipes that are filled with water.<\html> +shortcuts = Shortcuts:
[w] - start the water
[n] - restart
[t] - change the theme
[h] - Highscore
[q] - Quit
[space] - rotate
[Enter] - redo
[Backspace] - undo<\html> + +//highscore window +time = Time +points = Points +highscore = Highscore + +//main menu +startButton.iconName= +startButton.label= Start Plumber +startButton.mnemonic=s +startButton.toolTipText=Press Button to start the game + +highscoreButton.iconName= +highscoreButton.label= Highscore +highscoreButton.mnemonic=h +highscoreButton.toolTipText=Press Button to see the highscore + +directionsButton.iconName= +directionsButton.label= Directions +directionsButton.mnemonic=o +directionsButton.toolTipText=Press Button for more options + +aboutButton.iconName= +aboutButton.label= About +aboutButton.mnemonic=a +aboutButton.toolTipText=Press Button to learn more about the game + + + +languageMenu.iconName= +languageMenu.label= Language +languageMenu.mnemonic=l +languageMenu.toolTipText=Choose language here + +deutschItem.iconName= +deutschItem.label=Deutsch +deutschItem.mnemonic=d +deutschItem.toolTipText=WŠhle deutsch + +englishItem.iconName= +englishItem.label=English +englishItem.mnemonic=e +englishItem.toolTipText=Choose English + +//window + +timeLeft = Time Left: + +restart.iconName= +restart.label=Restart +restart.mnemonic=r +restart.toolTipText=Press Button to restart the level + +undo.iconName= +undo.label=Undo +undo.mnemonic=u +undo.toolTipText=Press Button to undo last step + +redo.iconName= +redo.label=Redo +redo.mnemonic=r +redo.toolTipText=Press Button to redo last step + +exit.iconName= +exit.label=Exit +exit.mnemonic=e +exit.toolTipText=Press Button to exit + +theme.iconName= +theme.label=Theme +theme.mnemonic=t +theme.toolTipText=Press Button to choose a different theme + +Wasser.iconName= +Wasser.label=Water +Wasser.mnemonic=w +Wasser.toolTipText=Press Button to start the water flow + +Highscore.iconName= +Highscore.label=Highscore +Highscore.mnemonic=h +Highscore.toolTipText=Show highscore for current level + +gameover = Game over! +mastered = You mastered this level! +ended = Levelset ended please go to mainmenu and select another one. \ No newline at end of file diff --git a/ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/Plumber.class b/ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/Plumber.class new file mode 100644 index 0000000000000000000000000000000000000000..c71739146dfba673b9b616d7e4b62a66cd23d310 GIT binary patch literal 1944 zcmbVMZF3V<6n<_Ry2-MIn$Q9j1r$pXY*s3Q5Gd@ z8T5Df83z-_%vfj1(on7JS)o@l2XIOl|_qlF!r>$3ZABdLEptfAc_gvc+9>W#mK&Y{) zUVPzIU^rf>*0(C#I~&#NPIaTc$&fO}k!rqYIc+jqASWW|_ziCNMFL03bEDg}trqt! z*Qs)Uk31u+`evzIss(Tf93!6fJ<$=p&}b<#GD?k-Q7hG-+r2_T46!fln(!mj`5TsF z`L`IBGxw)SWg86fqH78jb6D1p!byg?OtzumG{e=ys^NBJ0zJJF%nDv*&;kK0SHEM~ zl8UHwXOpD%`x-t#B1ojmJ?^^{EsuhR8@S0Z z&%0gWm<(%^uu(-%!$y1y34BPtR)@DmPr_|zxGkSF;k%)40v}UITb3#b*i&$aA^p5! zwko9`TOueW>JYXdH$o5b5_S}bMZaHP)^zT`Y=@P$qhYnQA z;5*rAX}Q|fP?7d(&Fyu9~0-vY>s~FIAStyTAhZ11f3>n9fL}HZDPMb z`{NV)Me-&>NYi+NJpQ6PiT6uxh@}xuHB;&cE6voIAzmNg{19(FMJ7037$M)BynBjw zhPe70t_^TKb&G~@IlxB~UW*5M6{o#^MZEl&$i?v!9-&0!J|TK5L8_~Cn!_1f!d?0+ z9$^hXQy*{A{W7IaNni_~(kxe>!61|}t<#A8L&h-$Ou@DsN}wxJI?`Y>(1bv8BUGD1 z-2EN3+!NHE;EMs8j|n0ckT@17Rlrf|{Ysv6C-C+;Ioj3 zQi0SD=tm)DE!wyevhuPsvpaM4oSoT=Kflfa?BS_{3d3G3xgH+JBI^ybh&AuT>N)?C z40~;v@hI)o`xv0ahfnmWz6*CT&81_qx%Z0jF#IoVB!XSdFr55y+*A!dRXc^-7JUF=F z;6AlzTH^nGSr@BVHi!>A)ZjAsP1Tnl^HKXO+KFVCYo?J%S|U>>{9u>94zozUQ-+N{0opb5jtwGj(eJTP zG0h~8nYYO;DI!~;9hwnZZ&B2xEJpTOIL7VpH|j@Y%#AQl?&47x{>1zkcSg8N@#k&erIUr=Pus@55HCSWen1Ety6 PDF9Tj03Oq61yBA09n~0X literal 0 HcmV?d00001 diff --git a/ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/controller/exceptioncatcher/DefaultOutputHandler.class b/ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/controller/exceptioncatcher/DefaultOutputHandler.class new file mode 100644 index 0000000000000000000000000000000000000000..8dfe2665da3a0c5c13728e078084bc47ebd60618 GIT binary patch literal 893 zcmbVK%We}f6g@YuNvA^#ebMr4X@P`Fj9?qYrhr%kf)tc3a%SArm19Q}4}#BvMUhzW z0sW|oJ2Pn>QdV8W*Su#Di_W<5PM(TXyH4sxsrx8Q%qR~P!tHbMU4&YgLD=b^%gA}C z5jr;(dVj6FAVsLXQAWA9gmR(K!*;~OTwmobu1lIjIc5)bC2X~pkrjD>( z+*daIk|^W4E|Fr`^09~e9_|q~m(T}zfQN*-vkX^eK-g+D=X?}hCV7kl5Bt|7iy8r* z;E>>rGFffd$^0l2iY$5JXeTc7SD#Hus76|fgy45=nnd!0%HCmbSz<4wMy1afjFJ@(H6$TvvZ%=e)m4PU|$o-z^P+0@N(F2Eu)n!?H2oD-TldCu?>8vg;n+S)|` literal 0 HcmV?d00001 diff --git a/ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/controller/exceptioncatcher/ExceptionCatcher.class b/ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/controller/exceptioncatcher/ExceptionCatcher.class new file mode 100644 index 0000000000000000000000000000000000000000..63fae018ed9019c80f79a75012a6d9aeba1d64d7 GIT binary patch literal 2742 zcmb_dT~ixn7(FjZ$OlUr0)ax2wiIguLIhfi1*sKUK>|oYYVo5k$qHLT!h}ty{**f2 zcgE?3g&8V#rqgTxiv9#gJpZEDV=lSCIzkhoTU<`T~O$ze`BWqP3 z7WB%_o~0M8>{h`X&F&VfJDWx&n=hBFO1W6%r|~3j>{@2Il-I5NHU)QTf*D5;Mo=N~ zNPnzni+X7*yS(|x$Xg0=&yoT1-zy|@wo=tHi`jLmlq-`8(N%M+q+8XBp^*8H!jvPi z{d#dHr)k$(Fuv2PMXOx3cB_o0HWWJQWZQbFKmrQOxl?nUb%HG0LFOEX3?6r)x)Jsi zj1!QbI;cmqKCG~gOy!Ga$+V^w0_n`ULU5*BFv4iBRlt|r7?Mb7=tM%HdCInmLgBoI z5SrzyM?(~`FnSdhPYw2@48?E(DT#1VLkl$dx~!oU%?jsoX31Exn`}+rEVAgyTsf~7 z*Y%1icUu@k04Z{_woT@C;q>M6GU>J|GZ@ed1tuYVVq<02C24~i-ocPU%CF>f^<-v4 z$PJ4|T6D7--oq#hV_HT&xMVzGFL%^D z_~vOcj1Sn#r>>Kiin^w1!32f{*_4J4!LAB#>w8N!2=*68O0hzz6LZB>nilDH_*%b4 zhk5R-FY6DxPH7dkPSBq^gA&*Aa#qBu?43n@*X^`WzG&zbsoI=|yGTeS=OhDj3T<14 z<)z5oS6&%>Lq%powd(l9|G%daOlTc6g|+mV)0MVNVnxF}Y21jcZ`~|$cvw$&3$C1b zQ0^QKQysY&NBzErB`hnnSB#zVW250ci46^33d&~ZojbwYbGJy@UFL~B!)g!((;Kqy zVyoq9C2!m{Wp$*yin;SWB9n#71QFoBx*%e*>UazD)`SS}TzLGB$y%~cE+y|hPI(09 zkf5ZEudB3?pDVABeDD$-2j~hOp!*dr@b=aL`aJoi7gTFPKmT?zB-~Kq@H|8HGsqQN z19Z)W>;}m4RFsDXUt-|cg&=}!qB#n98&@fd%G#ks(EZGSf^T9UU4w_n+}}s{Q^fYs z$J@L6xO9k-+%qJHjxeV11`~rvxY-0=*~35n^M}L>+K~GR7vvqG-#FTlLKk|`gNyt- z!t)0DZ1|l{Jlw)Z)bHi*ZG22LGrS2-M>5N=JCtyVr~X1TjPW>ebKG3qKk*cP*NFQN zpV+9QM16>P2lT=-v=OTV`UsyY@MdHFvk|i-c7U<3%GO3VhKV7|uVHSqQ5&=1>gJpa zQg}!m$t)!<(xij5l}HzmBTuJe7VS(A*m#*OBL0OoPNAJDUH1wbm9D3z)Mku2!ZAWd ztj1^08?0`6*rZifvBvi(KKJYef!MbV{)+Xd2nC)yjxypXU>7ZJxA-jry-m|upTjoS zp->AzMfv=N=eYsdgGOZYK1avMzQVN2%$JMqM%zVSF22S$uEjV{;S%cM>_`Ef^u>4r UD{R4gzK|h;l>t?FXls7^FOAZVBLDyZ literal 0 HcmV?d00001 diff --git a/ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/controller/exceptioncatcher/ExceptionOutputHandler.class b/ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/controller/exceptioncatcher/ExceptionOutputHandler.class new file mode 100644 index 0000000000000000000000000000000000000000..0ec0b236b31bb0f58b567c98c251ef20366398a0 GIT binary patch literal 245 zcmY+9Jr2S!4253`wEQfLNL&CGB3PM03`iZ2SdmGh(kir7a1du>-~b#7kq&^^?9b2d z+0WPg0bqeaf=D3MMzTL>a_0+^W|`@HE^F)0N8_ZbN_LgCp)@yTYR;=t5vx-Gs}D#$ z*Pb_2>Yz)|78n+EC26V5WO^)&Vu2QEEijsFf1|I#a=I7jC~L?C;iT#MyUIId*10tT gzMmI({LQ$oWi= zw8Ahn>{J%*yHq?`sQQ3XJ&?Jyj~JeI7R=S%W2g;vCYoS48zI1%5LK*1XrjeX?Kp>( zMCRhP-_1KdR)S$I(J5DZ+(>7aV9gE4@MN);+I=@5Pg8Md8Fo6!$$buvEx+@TH8P(J zy89t6;&OmX4ADv72v=~GVM!Lxq#<^+`QQiIr*|fakmb{?MZ@HZ^oG({% zdKt8Ymw7JCQ1PM=1vZJ-DxEr5tL5mWzo0^=iIC7G((aS(kg&J=6;baymcMwPRfqW- z7yS`yWJeU^&~sQPNj+er%rYcdC9J;t4HrI>Qh`g*@ByEE@aC~Y8BDIYhU@;mjvLfy Yh3>a}XxhX;l}>htFfiF&XJ^wC zi>;NmXsvgvws?u9QZ!bfumPg9-q2F5xBuX;@F~9M%b6&b+ZQ(hBKaVjf5K=OIYipX*)YUYC6$)D(N~Y+vcsE8nfcj zKKZw&xT+y2&~(I@Frv1R9E%Q&9x>ytK;w8SVcH49H3TAkRZXa!(SEr&pC~$Xm z$+@l3Igh9#WSbMFEwHO*aW6I{7VVS5CHflFi;T&*9=H{il=QR?nr?~WM%&7`X3}&r z0?mC2#jI=D(IH}(au`YDpf#2>+^k~?^v~PSRoxj6SVog{Gtpi0(w8?E>!$98uDER_ zEw@`B(AGXA5bR+NG_({F>T@NGC0M3oIhqCPyOdNT1n$tW5Q_wE>$8&PUd5OPjZvG< zHut6ChCO6BmVC}H8g11buAI;6GJf{74}}rHGU?e$9U2Ug%<>SV4-e{iNcvFknB%Dla%M4UJT_)J{c@P8j!U|{???|?Nn&-#h?_Cl(UxFD z$9^1OtYoK*wb#$ge6$)qbF=b%?+_Q@APfzU5TzQj>YpfczUml7TtLf1@c*S)g>C9M zgfSLR#yUoDIiyItkg_gNQ`fBQDQBOs_)Be#Jn}g19%I~;T`;L5B_~`+tqSP=3a1|g zp4__+867UNOgHmU(g0ZE#kS#_o-qxN3T&zY+QLC2Q#>z(F@a^$=rJ9i$K&K8CsI$= zapX8>d^Vf3!1kI*HeWjlrr`^Pf$wX@a=<;Q3P8!a{hp5RD?Y_-({Lmd zFY0(nLfYhmLXB7rKje6*3W0C>Rh$lYtqG;j}dHl)U?yjx%_bIh0LSpff-F@_UmkD$1~v#o7rYHXK_i#Wn5vKH_~Y{$!SxF)W6Z+l1pMyDt@Emx9WW1 zro5LL-VnIGfNk%f9-NTDdO+zV$uzNBcvqW_CZHpnA>{4nuktDvol zIrxjf(t;B*!E;H|aEil*G`XZWHM$3tJo$2{1gqLPM*23K!Wdz!e`fW>I$ z%I#c^eyhZX!ARxfw++JXdzB{<&n`ZWos^*mDtMvpBph{=ScD#Yg1UEcwFTk^ zg@YP|hTR(O(|GCy&D@U%^1*DNkW|oc9<7la`lfmB!BDT(2b5vm+k<`hq>}&Cd&v)$ z%a2r)AHs0newwbzT&xasox#!wy;zaMr{BcGm+{#;oDgCKmvTr<-T2QOX3YwRQRX4e z7)Nm@Ol4-NrwWH*sW4XJ2#(T_#Df32_%A|2GQckKU^Aao^pOi-YR1b+aFk+pNdzAB zLQX15N-q7I5lBuBQ^%?t96Gz=H11#V5_Zd#Sxk^&lQ}%br?&haFUI3JJi(y*=N7*- z9O0{{l`7sm8=MYI(@Zn@u@%qJjO6D!e#`+`u0D#Dn8aE3I@^ z9L5jfgmQnS=VFmL!+2gHvyEE5hOZMhiBSUrlNz3Dmfv>Yz&G;&Zl$aQX;H*;^jpD4 z=wo@JpZCGEC~rsLyH&I#DrkA3q85HVdA^7}%)CZlPUbPo;RShDN37&^Z4N(}#iC+^XKt; z4l}L6me2-XbC_jW44*-0d;N)!XbDln)Qz_y0hyOT}D5ykY1N5J(E(5>3r$zsM%;!W-l z)Mawl@0qaY)DfdYk|YZYB$4oxD|&}*_#Zw+3-gNV@OO&V@!dap Lm1n_Iyz=LNvSg3O literal 0 HcmV?d00001 diff --git a/ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/controller/logic/level/LevelController.class b/ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/controller/logic/level/LevelController.class new file mode 100644 index 0000000000000000000000000000000000000000..eff042ce4cf750b961834fe689bab49c6545209f GIT binary patch literal 6528 zcmb_gU33&@8Ga_aVK$p7Bx#|9Dnb#O1j+&h3Wf$t2qm&FZ4ps@p$3!M$hqHeco>-vp-pug>sSX z?96=6`@GNl^S$4`_useP2Cxpl)zP4#H)X}#i9;#V8PB_B%8iYt(raTmdt!Xpa$?DB z#&xo`%}YBwnoh=SYtph~arxgHJkt@@&~n(EG-I}z8I9dFeAr658k)wlDa%fouBo9b zUel0zGd3XacWaoJw`?LTc(thHx)Ek0OM52Aa{LA=J@1sH088+;YF8XvKB%&U_7x z9sT{CgH6zIy#XB&xoS7ih&gg~gMlVQqxc{`q+_v$j(YVsumnprw2fMB?}Xz}eiiP7 z#V~B{=&Z*vl_h!0&3l=`rQJG~X;@tchms77VmWTou|mU!dKZ=%HPC@h4F)~gnI0X> zC$o;Fp}RgG#%5OJW5MF?C~m|`k$;tjEtg0UFUD12ItRtI)dpf%qq4nBX$`m31zn<4 zwdC`0DFlXXqkO88A6%546Kfo^Qk(Cj_h!{9I-ukEO83!Mk4!+3Vm zU!2Zn_T`#bGg}RO6t`>8j`6QwM=!fYO_pBt*yl3LV$XMv4*oa*Q;uz4->N@GsQOi+Hu}_F-=&36)eAa5sAvR0P z88MTV%8}MGZMJ8RW+bI|8~8Z(c$K2uNTiQT`p}i~_QNvX%V5-_+_9vUb17Cnw%glG z`Wz?gP<;Y#shxYi_SF&CrOTa&TO+Q7_<(_fD#Z7Zd6}DjwnW$*{2(3F}IVQZKxymN8@hh>WCdD`&cdY@7WCz01>PE$`UXEMyEE!B`XtiSHKn;&cI-Eu3`OQ9Zco~Im#NlM zPjszWY32hl(IRfvW2xb~nOZ1SO~`-7z;S$5!}iOLf?r&vfD}2M@6B@8mHCN702Agx zd_l)US2(G83DZA=Y2b5s_=@%y_SGo!Js8OL&2GK*sI9V)eO;!ye9T8XWDYZ4W>TiQ zXkQSIC?3a`b$sc4)rxN-Z{QI;q2b}nj#6a@tbYKi<))V7UN(}>6erwA>t}Xx;HyDS zWdE9huj6S_+)+w#x_*k@;MaW>QsQd3q@h8^q28-NN7VV2fp6nkHX3gjx$+KNJkA_E zD3eRn1C$+&<2}z~jw{>q3kFW$yWW(sH$85#waxe2(Xm+mD4SkP-R2pD(z`l+LJ zSFAShvLd!GBg9VOO#?ra8%EN$Ovg7N4}NUmj67&m59kVw=fvf62F}U@-LV4A-ZF3= z_j{XkKhJb&(^gxTOl?1t{l=E7pG!mhJVj9J_H*cTqWC3#t>af3cGUEx<_^ux&T;!P zDG7^#3o_-)DI}O6X)%$VaFW&zZn@lC6t&`5y;`D&r6d^QQ9XnPIn?p0L5_LqlSey# zw)2f<82oMRy^tvriGU1zYcfDgQj#s1ZK z+<3shEa1cE&{e?AQv?ZNE&ng3LGY*&#v)EwH(>!!R5zfLcUE$qzL~!wfTu-e6t`eK zztOy$J4s2dgmwcq@VX7!|F|TiL({QQ=dl!gXA@d{@|*actciA!&4L0p?-v#giba&4 zAbJy##G*LNH+_pdZv-e7xyZ8>0&)gDFDO439N=X*brwD6vF!jo+LQI#Q4WvI3)cT<&5QI$hf#jLH$Cjyfdstg6H&|*=Qp)ggcFke%Z!&JqlD&tfo zOONlRD*4M&1c7{l5VkI-btZIr0IG3RT9$>9Kh=q8l#9(`n_U-s2 zWfI|eBJ@pcP~U-O-$Vh2-XxHh)pPg|_+p8o%|S*FBk4n&@QZqr4^gdNMckFsNR_ca zi8%wI)8W&~${He<=hqXg`obs7%R!n_n1w3EC_lmv4+q{0qCi;5?=xtsz>@*pEs>8fe zzz-^6{y>;NR)yinbWxZ$Dq;Ram_JvAnW_Qvqe_^+5azE{VK|OeXG3iYl`wxJ%-^fR zOb2P+!_Z5av~)@I3;0O^Kjqci#SHLt{s*J|&l0Sbpkyutlr|Enq~v~4$>(1jdj4I4 iQ7pT6xD9)qF6Lu2%Kl!N)Bh=1+!zpem-HL(oBsoTPX literal 0 HcmV?d00001 diff --git a/ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/controller/logic/level/ModuleElements.class b/ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/controller/logic/level/ModuleElements.class new file mode 100644 index 0000000000000000000000000000000000000000..42deabd0bca845d3b762376ed4ec397cd3b91fc2 GIT binary patch literal 2714 zcmb_e+fp1=6kTU7Oqg^ahD(${BE}GAP#Vx+!X!b$EyUp>#4(^qn(5Ba*i2JB4JN+$ z68!=nLh+;(O<7_kR#}5(s*KP6fxlu>>N?#Gaw%}A_|V?S1y{-~amMR{$ND zjUgm(MK@G;X-3zag@UW;uA0-$c6HHOT9`E)HEZWx$F?jsEjwpsRm)g5EOpq{mn@^- zG8T-yTZkbdaCBZ<)>KQ&=hV^Jc_ZrzlwCCQrh8c++?>b=M0#!Ah$D=01yPgw<1KRv>TrU}7R*n{h%yhAqXDO4I4MxE9j$_w(I_Bp^BIy`o>uTG&d`bo z1ZtXxf}^*%FeP_8tDxDlyd$|L6|~4BD`++DDOqrh#e$rAT|p~UP8GII5gzx>#LzC# zQ>sQr5L#-W&5Sl%a2+k{#?gj16ugOZ)XsP1xS5+H1G4wL@s@(~xF8TG!mDP13f>Xu zq_8EN%|Mgu)xa(l10$yI0EUbcUI^8T7hj%$Kpb7TB;%gfq3`)4FOiAkZCr_=N1)>X z_yS@IdeKM8dURc2xFk3m(gX~Hjrt|u8D0j%xus=|l*HAB0R@B7L2=(fY2z0C6ZKMu zKwBw}@Y9Tc?HI6&jQyRrk2^ZP=f#wO;6;aEPAkwX^~&K-ETe^iq^JNEJh}aP*cORQowZn2fb~ zI%dLNaR`4#*|lj}J2BO4*a`Igf_B@Xkg z_zU|wHqqeaxV{Dk`Z_*#Beu__0{MZEGGj{9>>_wfbinpW{y zl9P$Z%_3f_UqP2#DUJNaa*5Y!E23isbqy=1=8De8=$cHnMAmV!i0;T*cx`X9{#|C_ zf6c;cgdFy04zLP%eJ9{)zZ zV^04bo%n&PrA$d*3S7kydlUuN@Qx?lL!>cGVddBeTVaf{9Y@(yI6`y?K~cx>E?10m zT>59i^UXILkyhi9=%&2gzP#t<;7)l@`|{TBrOczpn3!D0dr!EluRtAL2qwP@;;td` zBvH2$?=@nStZID(o2?>ih7AYb zXer{xx2WAc_vmg|G;A5B0AKz66?^v&P-GE5by6tyeJ{=F-V)nz)_WmK0{PI<4sCt}3k%noLirm4i;%suyGWv=rlvS)pU>8msNXtK?Zii_rkzeid*Hk+=i{>s#NwF zzu8u@x-#ttfoy~(bb*0IXVtNlCSHGm zYL_mJofsyfbRv+=RTJwj++*v}GV zmr9w~FK}WLQHd@ANwA)kS7NvmoGgstVAM3ZSGuygg>f7*@s>b&!%SXk_gd8S(|->^ z8gHW@Fc=1It0e=DfmAb5-U5|Pby8AfY;)1|LK%GGG-NSfH*r{CYQy9@{j@Gj7Hk|8 zFyiSHIQ(CmntgJGcO@X^@XARiqd#T{p#t4Yo#6{N=akJ$1iKuqbdl8~am@O3W)9!%#AJ?z zIP%~E`Equp@&bG|+FeZVeGu0Y@UDq!F_3ouL!3jTmh<_{QRg#XktY=4F!5%JO2Po5D=as2XMj7ZMU literal 0 HcmV?d00001 diff --git a/ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/controller/logic/level/ModuleLoadSave.class b/ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/controller/logic/level/ModuleLoadSave.class new file mode 100644 index 0000000000000000000000000000000000000000..15e7447ef3bc36528068e65ff4113c10af8e18fa GIT binary patch literal 7242 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 GZ~PC;E#21u literal 0 HcmV?d00001 diff --git a/ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/controller/logic/levelset/LevelSetController$1.class b/ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/controller/logic/levelset/LevelSetController$1.class new file mode 100644 index 0000000000000000000000000000000000000000..93ecba33614e9bee237f65fea8310fe3ac6316e1 GIT binary patch literal 1061 zcmb_bOK;Oa5dJm^abipx0<^qoX@DfHYQhOAh)YzY3b#}WDiW7!W3Q5}HtWjXH!vxiDd5g`qHm--uSvLxrJn&gVQ-T#v&yqjM1(4^@T@ zXO(IAN-ClGRM2fi#!xjAnYW%2k!WR1`V{ts)Y80UIBu^nZs(MtGDs6q2g8*B9%??y zSPxJ~gQ48Efb~dfaqRl{mXDNRXhvzw)hW-U)eB?A7S3?AI(n_1Eu6=(xG)Sm?db2G z_ZOO*%g|&}kNchXHQc0v_SIbZxQ)9W?kvr3feUaC_ZezJC;2;RCJZ-<(96N7{zTG5 z*Ov2A0y}Tpg+H57FktY9=`4%wHV|U--=*5OKGf3#9ji1a)DJvU7Mu~9@hAY_?r-d=O_Gj4q#u>>2U>Rg0#-&#Nl hcLL*qBWR^mn~%Qh*bY)M*8r@Pb5gvstY zJ4s6g6)6_QqIkCm7D3{rD#dnESq*qY9)I^I`#<;x$b-ITW@od>?vtjP=gG`DbI$oL z@ArP+`S$N0ytM$J5AP{x5=dtCxIHtG)vW1~t!3?aE^F+F7tNXJ6S@`86!NxJFij54 zLe9v#6;rJ z!-?V14QPwk8lut!T8n zGk#F+r^s7e!xzmIcwpt@bv~!0=ZgX;vt_rDH|+Zb%;^6qYvtp$o^+>)#Soo}pc!o{ zTG1}h9PLhrA+TOW1Z(8zHWez?D(DorXB8;<@hnvX8bJrzBKR;qqTmjJ=qiM`P^3Q3yh`_)NVDkK|w`H(99idNmsrVQ+39QNKHA4HN-K#;bfm8)s1nymh zW0OX1vXm)UdMUo&A4+_pD!LIPw|s->bWyV>Np>1l$Lk0-qen(;J0lgXUzc8XAgiN^GA@sQ zQpFzZ6=?N?=Aq(lNJ^T0N<{+uSZd6ImaQBPM3dd){FK*Ed(0rT6*IspWg?g{b|cYG1ijhOx`@_rO`^c`J{>*m?SM)v8d;>0^1uU zLtTDUw9?O`m{ReW%)F3Y@GgxArcqFk_nmjI9&brS5uc;;rJ`x@9@^SS+0i;}RMUZy z3R`BYLYRiNY2HM$0#I<8DY9a4Zze-F?TFwM&d9>>d4b^@NF9Quvt2irhmz*5Z@`b#?8Y0;*@&Ag7b9k0$ z&B|MQ%K{x<`0K%-Jz2wIo-EnGt3Q;PWDf9pV+I)fPqJwlwYAJ+ z2eqPGOBKAJ;70-*d~;YBkyJI;qgQAnxQJIJZ^)ny z{8Yv3nDYu#Z8a3Q`v#n<6HMZS@pJrA!7l{vThXXGJ}zsMR9wQZn0;=11QP$t&Ek1m zbEio3exu?ITxNhsMM;=sEwL(;iQu=ms^E&i(9JpFTDx4Wyce8h+^n>$-R{+LO~vo< zme&s~jX>Y(?z|ectUnj=dli3JQl|6n4KCe!Tg5wI>lrpmLk0F(vc(P+3nfF|KkSkG z!agd|3HjNIRoD3UN~SXtlli=E4VhZ0q?d3f zFVtrK&S*v_f@tAP;j9TE{chD7caAz5t$K>0=)_H7m(0kdH*~jPY)CabV0c=8;y;m!?uxZ$e9f;y? zu59!);1jrqGx=LcTEYU)k+iLeV|E%9i~9JMYavhDt~WSt;!e0;flZr~sd{@VGKFkd z>(0{$2LsE`_cuI$AMUT5-$iSs{??dhzypD-gP}{ytk_c{rL}6sr&o}2yn&QtLn-VB z=y8%71GMCTjFY&=afn~8dq$-k9Fn6N6CaUd24-wq8Ar$3J~NMrH$kPk1H*xNuxH_A zw97p`Jqv+sp95IRU}x}Mggb)^7qF&` z1Ej=LZ#VC3nZr&`c}lA53^@4mH9S*Q+8JEmLLHv+uO690a6mcRBG$K1&@2CWPac(w zq9)0uSTn&na+%&f2Zy{2Y4 zc#T4rJNPcKw>bVDSA%$#+P{w<@XQY>Z6iYOV_3n3&ifIMsh2%E7 zTs~#C{fm;C_&!&G&cRDvui;GBii5sB8TOQNCyj-nkA_{pnKgCah|FBJlY7uR=T>E5Ijux zbpnv1!v#8g1{VnMOD>QbJXfkfp2HuxOSrJKpy}Vp-ND(P2$ARf9`2XUhh=eL)Vmfd nNW@)uoeZC=5go3I4&%@G3&k|yuN2V4nEs7#`6J>K-~9V8PgA`` literal 0 HcmV?d00001 diff --git a/ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/controller/options/Option.class b/ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/controller/options/Option.class new file mode 100644 index 0000000000000000000000000000000000000000..c8f901354e82e6446cb569f22d850fbe4902f251 GIT binary patch literal 772 zcmbVJT}vB56g{)qd>Gdlqlq6?(5EJ8>0%$GQ1M0ZDd>X|@Tp9)Lmb)c%4Xv4s-P75 z&>!HBlAf6jt(ZK?z|5U{&pr2?ndg_^e*k>NUKyUiQKUjM{SnD*JTWpd;V9CF;axl( z4^$Qo)5K(H95YPsj82nDc;U`6e1ZC{yq94tlTmmvxK%?V;3smd1RA~nrAw3PWb|F2 zcrW8Ai=|_oXmcX)u{{r)&vg2vJxwE3MFBy83RVOP?M{CQ0;>UvDA{N&Kp7=wdOA_( zPX3h~#7;~)lyP5X+TLeL-`wblz_;G}{L@Z(q|CWvO5eIZv;Foz^H0vT-<>|9hfpuTy?V5FqTkZbBa`)2{YTeII zs6V)d2KNRVK&X#^O)IEztuwQqw_yWK-bmoa2p8Ew9tX6rIU5u5w6$XQ5w)KTJQ9O2 zn_P2*K@OM^3T$DU8LRPxXwRapzE{$!F5BebmSbq;sDF}5_H)T0u(MD|{jHGgg+e}X Hw1?fl>aCAE literal 0 HcmV?d00001 diff --git a/ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/controller/options/Options.class b/ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/controller/options/Options.class new file mode 100644 index 0000000000000000000000000000000000000000..51a97bf4438cc7ee64459b4cb6a0c64d12eb42a4 GIT binary patch literal 1596 zcmbVLOHUI~7(KTSO3OegkE%Q>;H%{|fby~xO-M{gDlBSBWMhVQQU<4;W;$iz(&!Iy zqZ<~e2^dX`Ykz|N6{DUzGtefuYLm{r-*>;qIp@3g$Dc3X04(8A1Ob87vaUMK=Vi^V zHXN<&sFkv@sMgJ9bzisDl2vnT%QU&Q>W*R68tRU>Mi3I{Kh%yi)zoSgb!Y!jFF67c zKTcpE@18at!&Hkrv+S%uv|vvY8HRXC=*11!EYeCTt=woZiZ`HSngE zjo`Y#N@v=~kiw*bDcs=j*<)L)Qm>(OdmEpJgmX*5ZQP-34dW%_IH@ffH8;t>G40d^ zguy>!dJB$LdhtZ7`xA*aTB2psohp>B*%Dam6qamrUqMz5uFKY|))BSpuWNQg_ut=RLte{JU2_fuVg;*dmvqmk z_!0B+`C*duf_(1`l6RYHgjN9E+;<~NuRsqyDt+?T^A*aoGxU8z;seb92KkM-hdo@Q z7;?R`AYac#GWpUUo<75HD@}HTpQ3mHNaBj?yNYXm@+%gXy%&PH_n7*K#ONtTz9V&t ziRpLfYdKC{3o%Ob6gS`g{V7hE6LjGv$qb0|n_&Gxa*ku3eI(SRR~u<$Xaz8fY0R+m zEUj(?eX(IRxb(bx}sm2qv(KH6};p zh4Kr&VL?eyl>{eSd_01^o@0GCbllGGSMZoA9={RJ3Vb$UvPcqtiVP-b&v9xkj_L)+ lnadnUB*)wZq*+3f90P6_Z^+)XmfOe#@W53~U_-{@;Xi>8XYT+2 literal 0 HcmV?d00001 diff --git a/ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/controller/view/ViewController$1.class b/ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/controller/view/ViewController$1.class new file mode 100644 index 0000000000000000000000000000000000000000..5dc1bf018c8f719bf938221d5807a136258b38b1 GIT binary patch literal 955 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 literal 0 HcmV?d00001 diff --git a/ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/model/Model.class b/ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/model/Model.class new file mode 100644 index 0000000000000000000000000000000000000000..a66285344896bb394e584f7de3d8fd85a8a6af0c GIT binary patch literal 2343 zcmbVMTTc@~7(G*33T2^CxyeN>2$V%x5CypiDhi@iNgyOVnWf#7C2b+wExzcRKI)r3 z>L2hy6B`mu`~m(b<2SQAblq;1__DL}?RUE3~nu^C$P#<7tv8TOHG z@0S=7Y0*=*&Ahfl9f#H;L-UrIE9!RHG8jf{8kU@jpxv@9vzS|4CQzGXE($RWY{Ro$ ziLZCMoEOUw&y+38DB5W*ZOb5)bLlheQ?6IiB#>0Z?0utPxSMMc6RAgWm)YhWveVVo zxMUVhdzqmjHNL|TUL_A>Xh4sGbLfoXyfo8eR1Cf7X$Hf9f(RP<+XV&9h&AC71HCW| zDQJPh-!3bNJ3XTc+7aWml!62l+JD+C8c&34+xlLfv?bDq89l$FTPB~o#jw3^(ut{O z@kV5T>`3Gcd)4pmd}{nG90C4v)l&*u(MGDP)UKnQ#9K|A8x0P*uAqZ&w4EUGtV)|A z5Uo@aaChF}X>lwOXF^eGlby2cZ53!T=Tw5{oXCchROTtyi?LirQYPrK)L6KX`cDUW zx|)QuBIxldxocuqs@6jeir7wUI|v~?lum?G8@z>?#%HP zj5U)-FD9Zh$MIT!DgZ!uCP#7HUsqmQyK>J$JmQsQZh zQx9D%dUnz5IjurB2Gi;Zy4COK-915H1^sHMfmX zC}m;v5cvR6C(#ELBbcD)RZP)0l{yq>A*x=X8KWsk-y z8u4?zA+ERo;Cc|e$E2U@9dW&{!^M9UT-Qc0m*+M+-hUvjk9D~CZ-jF_6rp|e8#-&I AGXMYp literal 0 HcmV?d00001 diff --git a/ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/model/events/EventListener.class b/ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/model/events/EventListener.class new file mode 100644 index 0000000000000000000000000000000000000000..2797a4ddd1808ef7acad2d44df54261b5e9a03d8 GIT binary patch literal 3720 zcmbuC+foxj5Qe)U1PMVJmV?j405C%@|bK7!l@7UTaow9O>klb)QC)`Bn zoSQ#HNNf`!1)b27hAv1V^yeLq?F#yVU2+-1?Yv*M-9tNY__ey32v3|E!g}7&UKSz6 zg1`@oj`zh!*qqZMeJ!)I(DA*R^+`tHBdN1|B1lfN*I*#@Nk12M;5ptg!dpX2M-m`h zZJIf{L?HA^Q({EeGPIQAkrswF%nV5YLYGUq<|2I1Ga~a+XskR}iWDu{rCJ!+-mj&JJ74q32Qmr=^Z z_Rx@Pr%iK=g}M;hfqcDQ+C%`%XMf~)B1a5o&*jt=;)j0U4=MQK)oZZ>uf#^P-enh} zP7G(=kRupW!KFIqvMQ}4!bAMrZ>1n);{N~#PL;`qwHiDAQj3rl{eUW)PX^&IwhJXy zolA25)4&RG9cplCHInVDVgHS>{e8B>mq^~xUZ!CQEXqt%%YubqZsxNm%v{5QARxRm zkH^2_-ZGAZWY8w2;MapPd+&&ylE{wB9oQ1zd?ltS?47iq1Gq(Jw8f&ao31Q6A|1OH ze!z`ybkYGS8u`~i5A@QQmJiUekFF4ILO+dMyh5K2ey>&7BZNcpOC{ve0r7U)%fX#? zh*TtEkfaEAVW=IVHxe-{5VWecLkvbD#sp#K9mtwHKZ-yyxIwBl z)yXR|oO=bZe)QO9s0>uB%nid;=fBC_34=8x`VPw2aZy8^q1@?CY9OvIY*ZN{BdTPL9gx7q#dNgnC4}g!VTZGQKYW literal 0 HcmV?d00001 diff --git a/ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/model/events/level/NewLevel.class b/ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/model/events/level/NewLevel.class new file mode 100644 index 0000000000000000000000000000000000000000..1c6f7c2e2e97816735c9a5287b2c1f71e7a4b344 GIT binary patch literal 1305 zcmb7ETTc@~6#k}#uB=<2fC!3Qy!N6j>Vp@M7lH}NLP%;zd}^lcq^xeY&F&P8Kf=G^ zGY>+di9f&}rG7gLMhqrPHaRxOx%AUZ`27|DX$5jUwuGlDI%)+R^ z^5wuBjH4vrbd)yWb;Ea}T=|#r2m~e_45MJ-n!xD!fNV_RdctHzV7R=sRoSy}L*Qiw zGU`K1^|jv%V|O<#&}J0%B7rf_57mw-*&Epmn8pdO*OI}WjQnJOsvOe$eoR+cvUp+5 zSq!H&h$5EHq(ERL3)bHi5fG%emc{Hp;gUqLu4U`}w(OqxywV To!V{(?`CF6 literal 0 HcmV?d00001 diff --git a/ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/model/events/level/NewLevelElement.class b/ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/model/events/level/NewLevelElement.class new file mode 100644 index 0000000000000000000000000000000000000000..500f2a88483cb68cae9011ded60fc66701b74eb2 GIT binary patch literal 921 zcmb7?$xg#C5Qcx3(m)7XDLWT#ED~WkAOtExET^a!P_LDnSjEUqk>ix-;sO!}9)O2J zOdJj<0+i-pdnTjL|NNeh&$o8~huCmXVK|S3Z_-Z0bw4pYGJY?T2mYf<`(2^^{vZ;{ z7ef)7#8~O6_pVAJh440!qazcjf@NQx>4-G@@OvchQ8IHDs62M%JC7o`! z8LF2g*2NemJ&dEqFdN8Nv}_}HysHF5Js5;swYipA{GF_tdzmm?l)3XiCr%l>Fx8rx zvZ5IF%OHQY!QdDzdp)5U&Pti^E$BM4GLVT8vC!m(iv=t?XfPa?aPl{Zhb1i2n{=!` zhO1HJH*#)X>V2a|Uyb2zsDWZDJV3rsRbC@r(c6VM-FS6E& RwebgQ1*?{|M&t_CzW|^;1abfX literal 0 HcmV?d00001 diff --git a/ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/model/events/level/Rotate.class b/ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/model/events/level/Rotate.class new file mode 100644 index 0000000000000000000000000000000000000000..f7325ce317d18ecd5c03d7e4041684175d2f3e99 GIT binary patch literal 885 zcmb7?%}&BV6otk6$Rb6Q%I~oi9dm`A-ZZ@s9{S6I)O2znCZZKxzWUh58y)? zZ>KB_!K8FC(>uNW?z!jA_s{1SfD0U2$S_>_!qt+}G~Fm*?(lFd6lPaz|rd z1g@BhP)BY+d*D8fHP^yImZ81uzg|qZi)mfni?rf>&5&!#Q0f-L<*}Cnn5ZzM#z}`E z+a`@RR>V2leIOxepi%=*s!NxXrE$lE{r!a64#6cN*G>Wd#$Iw_t zPSR6yFU&|BQ)0+NKZtv~O=HX=Rphb#G@huwxR>!9^GS`<7e3`U0;8eFPln!T^0ZnM zwJ6Teo~zYAu=ZxY+qBx|v`CpH#DUxwe@R;Vx7FW=);f)2LlYFzKZ3!^?4y!3Zu;Aex8JWl1E{?mq|wl z@=Rr&o$Mjo%%%&gU^EY)m7yOcIu+U_jV3O903XVD zJFqZ_N$FyycY6EXbMBq5?~hLampHVLVYv2%tK*K()iBcB*KXgJ7w$_C54%FS!;von zSByodBR8Nua9eUHl!YuqbJ1VD1aP0gI=mZc#e13|SC^sG4Th@|F9mQS!jNjGZH8=< zB-&WQs)J?Z81kMB#iNnm;@vF4adLSc)n>025`mZrKy;v!-Vx%yf zrvd#I&tPdK`+cDp>Zzuj6R0DMdVC8 znOk87;+P5p9{NFI?KVwc=82*f+fSod^~8frrf8cIXU}}haSTQiPo50D(b#FVC~8og zp*>frzGLOpe79+}&1sP`OIV}0JjsHCb&4n-8^{xbVG~=ktZL;Ag;~}iv5x*>?PAZc J_KBRq!4J&m^pXGo literal 0 HcmV?d00001 diff --git a/ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/model/events/level/WaterOut.class b/ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/model/events/level/WaterOut.class new file mode 100644 index 0000000000000000000000000000000000000000..4e8dcd79a66b2c236bab867d0f40d3297c0cd3a4 GIT binary patch literal 893 zcmb7?%TB^T6o&snq*{w8DqdjYP9d>g7T%Bz(N&`hjV{SRCorZIGoA8YZZvV>1NczJ z(*Y7gFsWV4^h{5`^Pm6B*Z0RKfMZlFWEjqT;p({MbJdSD_qE&g<&pam#QnBVZhzp5 zz!gIg>c|af58NlNg}RHig)Bq!zkhoP<2vEBcstUHcQiw;E<>ps3@3YD3gAeGAzki2 zGGv>i(#9MX9n2%gQ1E0ZZcPUdyd4OJqBrR9;E^kt#N)%P?#YPZB2CSi7F;qoomeUA z#;9R9OvC!EpTW{fcDq6`)KhgoR$@H#WTZtX6xm>74I38L8BSAJI1A#SgiRVo%jjdc z`j4DZPm{Z0#^RVFJs$c&(%pF)Yi8*pm+kvOtUBUGCbP^>svJD?A;&HljXrrY^hWci z)uO0DafbF>wf2sMSM%Mb)i$R^%3Q}1#idae9ONmYd@Q3t42Bh~PP1y&Hx#E?WnxwS OU~OUBuy%-?LHP%DE%|}~ literal 0 HcmV?d00001 diff --git a/ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/model/events/level/WaterStart.class b/ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/model/events/level/WaterStart.class new file mode 100644 index 0000000000000000000000000000000000000000..245cd7688d8bd0fd2d51cf9b034d6f05c007c87e GIT binary patch literal 901 zcmb7?%}&BV6ot=Jq*|*8DE{EaokC*$Sr~=r!sx1TqroK^+6jy)#Y_j@%Z(;3d;lNH zcsr0_3?`+EncnH`ch5a{zP>*`0i0sbhQ)9h3QrH)Ay@rG^H6);P@Z@%(XihU%Ign8 z5qV-HVx4#q?UDDywNMY5D{Ujka5L}!eoDDbiEZ9VwBmtg$Twvy^%cX}fu8|5R$@qv z!xlsChIBeuz_N=)=*vWlSST{WK^dDiHWSoB7> zfL5ELD~c`J^R@armR`+whgQd&7Adog6^bk4EVx*ui1M+90x=lYQT)rQ*WOV2%i1MY P^&i$Yb_{Em$QG(UCLkN&JZS$bS$<>IW4&$P*g>{X0k*S1GS4T8Yu3Z3uqv=(k05FSJVI(P7?nRYEw=QgfmOHGqk(yA?)cr__^)OJ0k+IZlgNrg&94r$~GFUhX;$anQJdCE*N4WTp zoMBHtcf*dwvqich4x_ZYvnl-WE`Bne` literal 0 HcmV?d00001 diff --git a/ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/model/events/levelelement/LevelElementEvent_abstract.class b/ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/model/events/levelelement/LevelElementEvent_abstract.class new file mode 100644 index 0000000000000000000000000000000000000000..a873daba50faafaf1faf6f84cfcd1068ea54f209 GIT binary patch literal 838 zcmb_a+e*Vg5Ix&Qt8KM6?-$g!TE#`*#Ntb-Pr(b7f={w-*1D1=WwWi{(KabK4EZN95Zo6*hhMdxq>aupoK8+Q>Zt-F z^@C_jhV+=Z7e>_Hjr)sd!>>asI%7zU^9(h20-B%0M0`BR_YBl;wyFYU&Ka8J-(>&L zf4|A#)JWYllE`I|L7pL5-fzx>p_oMqbM~~9#XQmsIadYpGTzCpX!#^Z(GAjAx=_M{)CR>DK(_{)0U7ut_$7tuM8$?2iBd literal 0 HcmV?d00001 diff --git a/ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/model/events/levelelement/ReDo.class b/ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/model/events/levelelement/ReDo.class new file mode 100644 index 0000000000000000000000000000000000000000..72065dfa1aa5370c5f97d4cb2238430682a8dcd7 GIT binary patch literal 1011 zcmbV~QA-;^5Xb)$)10{`)kcl2)zZF2EiU#&N@5Uf3c^vWN?yYzw2iHH)ctksPB=3BH`By0iLCGrnHU?(3Abd#ByK=rIrr0X%o5) z?_6F=A+L-$j&x|6UXF0Hi6$b8agT3qb_vBpuFS<8$`!mqiLl`5Q2k7+K9l`G5o%sE zkU>|*+RB--Xhu3A?B_}2sb^~v-0T@IB8DwKtdZbk_k_bdk)A1-c_!Awp^6EuMjl|6 zdfFFHCq{)T=67?kf>j4~!d{LxJO-)Y9o`eFz1frr2mh1RtZO=lX-6w*xRDI~z}ETg z#bt7LPNPXYP(QRCgR-6U9Xo~i4C0BgtH3878{Qq3j#z8;&eryqKbXHx4P4$`HUz3{ z_y(`}^l55_3hV50Siis!ds@WX6kEemhHbNK{Y%?hzp?y~TH^$kQfhr_bx$o}4Ih|6 KSZD77Htqn3NFpcz literal 0 HcmV?d00001 diff --git a/ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/model/events/levelelement/Rotate.class b/ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/model/events/levelelement/Rotate.class new file mode 100644 index 0000000000000000000000000000000000000000..90f8d490e8084458501064d78c6561b0ccab321a GIT binary patch literal 1177 zcmcIj+iuf95Ixfvnigm- zn@vZ`h-s0kOsHd(+frow&v;E)6R!#@tqR}~UY-&nc6j@9ynRP8l%vubIktqZsqj;6 z)Y$4GC(r@G-_g0YyM(t}@jH1eg?w+ti$dpi5H|>7F@aLl%qOISgMLEr_BiD>TIhrb z5E7FALDf%|K{yxU417*D*139Kz4#kB$`qj&7h{L%0PEnZo``j6Rj$mSpR{oW*8*H6JZwUfnlArjtwSqk|S;L=|xn&g{%@W_IS~_30VF4wf7g2sK{`({1=N?j%O~MznpsEpCEtr>SDm ziF_3Zb*n;?h=BhAe;t;@Wq1-fC=xEd3GgiKv`0I&0UENIm{_(9p|r0Z!-b4%=|5ziz$?gfqc_RI%VCI=vx7#Wv?62klW~rxr z@pNKTsA7IM7t@$^FhkhQ(T0CP%9z7EVYJboGU4beS@pZ7bC`CtoQAuSp&!^f_r6^w zcjr&kja%wW+c6lnlfGrA5Gx>_7`qC5;<4e~Vd)oZt=?JR*nGs$eQMzH?y?~;%7$YY z;nQ-@3}x2Y<*>fO5PKTOM2f9qGQ%FSZ2e0c>kpXvNUd@LlPPtkXZ21k;RhC&LHNnu H1uVV+=y)Pn literal 0 HcmV?d00001 diff --git a/ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/model/exceptions/PlumberError.class b/ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/model/exceptions/PlumberError.class new file mode 100644 index 0000000000000000000000000000000000000000..671da49ce2bebcf38ebea8063493f17b8556a6c6 GIT binary patch literal 420 zcmbVIJxc>Y5Pg&661iN=huR1hc7A}1DPypS5tKs&^;+57Epg>O!rq>UKfwQEC0N+l z`FpIzxl_T~=Iy+hdHZJO{qyA&zz}OK)Ci+U30qu8(j>W+krneu?~6rTBr|11l0_;O z>ONEptFts0=ih~?F_~$hL0Gw!cT&VMor~#j8=;pgqh%Z@le6sVa3dSQqE#U82DMp29j-< z|0EmsM(2dF|No^92<}Bzm{1+-(x?A-M?86*7+mU@nJcdtDAyM!E zKEY2AYXcHB&D_rJ&du(=f4;r}*vGJg2H_x5!j?CY%#*^($ci}9dtzbAWUg|NWRWsL zJ%(ywb(R+5;=3?SZ?g_sgw=cbAcc`>EKYvA2!5e*EzL~j1*@*7#{@bf^d|g;m8qRc zQz~b7`V?;tM<0atp-#0uA~d%~GeT>^wl11j_TZvR=m$Dg=k-Wea&8o15M&`6NVZ}A zlWf^LT@c2>zjqoF+{>)YLv^Yv8~@L~JJqV#08h#HBdo(go8Jzz29`KtF}jQ%XGF~b dXZr=c=eniOSP80jpV6yh2P+sb<6G91wJ$E2XDR>y literal 0 HcmV?d00001 diff --git a/ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/model/exceptions/PlumberWarning.class b/ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/model/exceptions/PlumberWarning.class new file mode 100644 index 0000000000000000000000000000000000000000..ba5af7b1bfeaefdd75b5b033f957cdbca878e929 GIT binary patch literal 426 zcmbtQO-sW-5Pj1&tt73jtzJ9`-uwU;d$sgZ6_g?cH6CS~EO8~-lw?!<8Q%RBo&*p6 z0KvZ`PNE(>dzqa#^Jd<>egAxY12Du!3pK(hRKgawq0Exp%Fv1^)Q4gb7s*^@B1uCP z3-u7Fh1IFa#q7IrBQv8-)Ix(WxR*;QVre3A@=GN2a+PTr`zp(M@cQhSK<9+cgtu5} ztS{q2Ia~Y7*@yS|L}-q*(RNIz@9g@7#)Oq!)Un!z3y;v9YNIZytFGicR)qdE4Ol?3 z4C9|-!`|tfFrNO$))B$IOp7c~r@B-c{B?a$8pbyGR{luBCLA>RZ8550g)^Rq$Fa>7 gQDMN@dqL;9qI5Zy10}u3v0dd3*3f6fdR1rr3lx-VWdHyG literal 0 HcmV?d00001 diff --git a/ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/model/highscores/Highscore.class b/ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/model/highscores/Highscore.class new file mode 100644 index 0000000000000000000000000000000000000000..f36b36e97cc4c06badeb2db7caf68bf6c9ffa8e9 GIT binary patch literal 4752 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 ZpK9;%3^DHT%FMpjsrubIDP9j?_!lh(TjKx# literal 0 HcmV?d00001 diff --git a/ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/model/history/events/HistoryEvent_interface.class b/ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/model/history/events/HistoryEvent_interface.class new file mode 100644 index 0000000000000000000000000000000000000000..fcb2e4d498e771385b6504c52165aecc48c17a03 GIT binary patch literal 209 zcmZvWF%E)25JmqYic;Bo0d1V<8Pw2O7;VYIjtE)6EDMQOv+w{O%D5X_tI7M5d4JxY z=L^6VafCo1QB1Z^l{9r{rLt70azl6B*BKkCTg94gWoKLSARf4}9VI{9drHg3vboBf zBZLC;N)D2=YzjJN73WqU*tG(qYfDxCm&-1 NUlRH0HdCKt_61HNI3)l8 literal 0 HcmV?d00001 diff --git a/ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/model/history/events/LevelRotateElement.class b/ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/model/history/events/LevelRotateElement.class new file mode 100644 index 0000000000000000000000000000000000000000..6b412576210e9cb598f61c63ef5d1f216f0a816e GIT binary patch literal 1224 zcmbtTT~8B16g{)Mu(WRZC>69?5K*8DcGXvnFlbyM9XYM(7&b{;P`*i- z2z~O7GHjk5e>0<7*KE5{tit3a_d|vep@|u8Hco+=p3PFd!(g^$hcaxWDe||gt7<@RN)5-9|Ai;(+~?`6tw$)GEK_D9FTBCe6Tnc58N|F7;&mC9v3 zkL!}5u&ucNdW*MHWo)c4)J{w~>+7K&vEed||K1)9`EA)v{BR@EHJEMu)%P_WfCVa@ zN&g6qhOR0-FGJTfovETU>-_@8X`G;ypnZ$xlKTmh?rI;??phz`-AW&`AJeFdG|mtr zP^OcY39UlWbC||Fc>p(y$0gd+Un%8fsZ}9nBegWQW}ZWFzloF9zDQa?sRQtYkH(uC7*${A9b`S+W-In literal 0 HcmV?d00001 diff --git a/ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/model/level/Level$1.class b/ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/model/level/Level$1.class new file mode 100644 index 0000000000000000000000000000000000000000..4b2a4dea2d5951fc2c73051fadb2f783c52533e5 GIT binary patch literal 1328 zcmcIk+iuf95IviOx^WFj1C(1!3j|0~h@0|)lnMz|sQ|exQmee8jlCpWHeO_J%0KV` z-+~09;(-s~qY$%h5E3d?{lLRsX1sG|&ghJP{QUMEz&d;f1%|aq_-67d;>kEQJTm?; zk{$o8nv4e`@y9w6%2(o$_Q3A-j)M|I^?)C8U-5Y8?+y+`XdKKiEM;E)&iM2+HvZGl zNF4_#H0*{^Bx?`x+tRJp^Pd+ zv0)!n0vU^)jP*VrD8Wz*bjVeoC(_zeXUS4vSkGBQy+af#JnP3xk-XN)SVRoVjo`$V z^=$jP&AyAPxbEN@Lpxu?Jlwz{!z>R&k!CF)rO%Kah`IEWB@aF$y9?9V- z4Rs=~YzUL5VqvG8yg_ZXbr z*jl7vm7C33+IS)vE6cfK&18aLSUgQG4DOzuB%#=nR=#dFuWhR@l3p(kl}=?m+!kh} zBP;!f3>#-6^UvbE=P}Lors8QTQmoK)6=|IVt5)rh(O;%Os|=UCb98%5w)MEJ)i3Z` zUvc46_GaGtvM)CJJ!)io6l1*?afwcb%UGDAyqKcYTA$$^;mYx`bc9=fqkX_UK4xeO i8G3Ds2J+oUgYb%I5_$nGtkPK`0Y5-H%geI-bo~XA?s$Cw literal 0 HcmV?d00001 diff --git a/ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/model/level/Level.class b/ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/model/level/Level.class new file mode 100644 index 0000000000000000000000000000000000000000..70ca4c434cfc4d8b89e223e9ff06c7e33f67b318 GIT binary patch literal 6026 zcmcIoTXa-c8UA)|GYp5^AgzKzF;J5Ua1t(|5H7_KO6*Vqp+OLdCzHc)U@{ZWISJ6J zwO-n)sI7O~TCI0`6O@74Xxj&0bS+yr zID4Oc_V@4azwSTz-Rm#C3}7=}NuWVs)3j~+bCc7SJLCD*v~T97odI(;KQ}XFyXH)B z+RmGKd!EmXd?wH&(0UCAZh3A8N1+n0-YK4dCqt8<^(?$-64S` z<4&$%`E#xzZyEH5H@+u!}jsy%QttroUt*k$^hd%;|vyMj&mjt$E>W~@kHV+0U z3NW04<2zPf>0eP#X+Q3}P9euV%Pv^H?M~8yu5V8Zh?7(~Si9g9D)ZtTP1WiW zAsvX>WMBzWQeeMA8Lfs5%R<37_ho&jSjaGI>;i+VcS5Rh)WAEjQlKs46zqFc z2p_Yi@{Fs_OfhTaCoI>I@8M#T&+MaW^+ZdQ98>75KuTrIahZtBr=0C)WWgGD?vuy$ z^i~O%<2*HTF>B9C+Fk-564+UXN$m>691CjXi0c;J1SXl-s_s=XDTUMMmH|0sAPXjC zlc%^adPkS=+Zh8nbdvi;xydnb4(A!$Bred^Ga3?(RM{bknlVsNs7ooFLO0>FEI;GE zl|6sRnhgz^ppawAmYb<~9ctBDGevk<{{#l>lfcttm5tQRrIZrZWIA<4*#nVmWsR88 zEWe$%L7U^L2&tB8x`V|!DJ>?;qqKcs`kI_0)uiK%7xVM7ytg=Brs&a6ZJzCq)?5!= zJwc#F?}s26K51Yn41)9XdEQV2^UPXs#Yj;!YkNp8!%KrwRHBlZ8SIhT1_GNHY+MvhppODGpn{vMspq6DwvW}B9O#e&mZeCu?TpbGWi<;2ZcR>mu*oT+Vh6$rfcqo-44YuDYfQ zmS-x=B(FT%J!55UWf(CPxTQ*6y1Qc1!*hND-)512Lj{7SDLf^}EG3WV6rMyTaAok(B9z6Fe);6Zoaz&#}#xvE%=^Lc>% z9qRjk|fHAH_V5;}KrfpM!_TxC86} zl|Hx^6MUm)+_9S43VcB6F16muJ%VG4q`kMwBc-s9(^F3An#KC{kf*-&qLfU(1Kp9Cb zGHD)+N9CUxm48tZf(UO3P0#)K6f21I^{4R}jR_u%o8YfnA`f9&1Ku0g;%{2;!&>mZ zIQSo0@FPsCAY`L4GaRS=nil+7=6(RKvEOjqe*dKX{-q?`Y`-9r1U`?;H_2M1sSy9B ztp6+`>kF*D(idOEmqJ;m!wS)rrYv*Sx6rzPM`a!S@{9P2q!|=|P8Jp5b&CEUmI(Ir zqA_wrSH<03pahDRiQfpZg44&f0T|C4(V{ir6MCXs0-{e!qEFpSRJ5X5w2^2Bi7u~~ z=y$Y4IFNpuZ~t|ig#dWrr(OEg{&#O+$5Kdgk&p)jR8 zr0e&wnjVqY;C1|{8lA0lB1D=b`_L{nMhJFPT;747hEerQMRYaVDSAg$p1Q+CKjjTX zWJRlm>>p%=KC8{y9kHAhTeUhqrv-0|gYVFSpVw=#Ew05bYO#9}EnWz<_?ec-_BfF{ zwM4GyiENJ(*-s)Pix9aQ68X87$WWZfK`oJA=!p!)iDXFR&>}=+KPdfrO-p2VoXD7# zNJ&p*cbv#E61jH~BC;VB?MYn64bqXV$a+N#Xl9PS7_aLuD>1zJ2zdz$H$kppBo4X1 Y3}Jr#it-!qYskO5%ij$~Ir88C0S0pDV*mgE literal 0 HcmV?d00001 diff --git a/ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/model/levelelements/Element_abstract.class b/ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/model/levelelements/Element_abstract.class new file mode 100644 index 0000000000000000000000000000000000000000..f2c9387ca07d370fb13231c6d1d946ea3d95f72e GIT binary patch literal 2189 zcmb_d-)|IE6#nkcbcgOPrL49BTS`j>cUS0$MFf{tptMlgc5Az7V;gN|cZX$gy4%c7 zY5HVhh!4gXUx`ofU=zcGCRPX%{s8|UU&ZgtY?o~#N}_FY=bm%VJ>PeJ-TnQ~C(i)9 zi#Y=kh07J&^w(D^mbcpQt%`3}E6y2n&0SwD*`B#tuh_2X+IMW1|EqS*Z?kl#MhNr3r!(TKQ;Py=uRQByhNZ4%eOtdLLf@oTAc^o z`GAnM;hVE{r{?Drq8FW-DH_J#OLiaorukw3A~2a6%OQ`nmrRFvS^iDnk4h}vgIyVo+ENo zsr$DaG9J(W=Snchc*w?cs<&8zc)2}U%3&GieXIQWw6zw18yHsT+MOu_-3+Q~`%JV1 zHIzVKEk1_@l@YNDywbdX!bOB+Btm-@vQy`$L{K?M^D{<{zvxIHimxY z6%8l2o}@#tw{;AVP@0ez=st%OMybgmgG(4@{WEadfXQ1F@D9#2BU$8iaga_B~g_OW*P~F^)ka?J{G9wVa1KD5k-aQ-%Qu7&c=tn7lPK3Ui&`rR8D#u?AsIe9;KngDbbO~4^V4Z+# z1Z?~hU_>5i!b(FtVery``P4n6C4H4np98ca$kFKul>CmaEzHC*fwZRzOgcfLu^;|l-^^=7f!0T;$Apn zsGXXxdb(V^VBm*jBMuAGNkkE6nE#KvY8qs^s(SM5$9qGxJ;{)(`W@k2h(MWnyyW^u zg$%pZiOv6pFEbUccy7QWPgbGWoCd{6VgZW`_Rz>k zmqeNjsk#=OyHn90n~m4~LC}%M%EX!ZHLz(u6xK<`qTdNbsEZ;-)uyRI)$DVnl@0ry zUs}9z$$8@yQ_nxx1l2fkKn}84M3TC-5d$gA&_rCMks&?PW$892%pyNNp+ZmdE>(KL m+yiXu5u88K!h#VuMnLwAaB>733op?oib!JL@Rw%}T>S5Xb-9Y>aJFKkH{b=uL|l^r}cz6be;}Ed}eLY@5ZdrcFt<^;vuZFJ1&e z5b*(gC~>y!MLkK#WM+2exBr=Ze!YDF*u$EG1jC^(J>75kBI?9i_}aVi)vnhI`kkhX zyiVxLzzgI+2K01fSI1si^<<->BcX2E+5u-c`Zwcr1Z#+9OrVx#m^e^fr4Jdho5j+t z7zj_?Yp)!tuHN6OG4Ktj(=@5;Tg7B`h;I z_XZ<Y$tFM@R9@eJGrl<#`ViwDA$y**f`J<$AbAGtjta-%70TF1qzk5hm4XCv-_=>40RR91 literal 0 HcmV?d00001 diff --git a/ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/model/levelelements/Sink.class b/ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/model/levelelements/Sink.class new file mode 100644 index 0000000000000000000000000000000000000000..afa6788470aeb2ab529329b7207933f4df3ffad5 GIT binary patch literal 580 zcmb7>PfG$p7{;G**UZ(_%rxjyHw|eihz>>&Q6MZKDMEIT(H(SZ-Id+ZzEqb^K|~** z4;8($>#0sM@Xq_^ncqCaeE)oW0XRi1gA~J=D{QqGx;&gkio435xbnoFdyCmfg!U|O zg=c$WDLh&;;j75*O8+?nli_OZqc;g-$VZV1`B*V*Tu5K4ONL6l?L6@%xA}{*JAw37 ztI=mLugQT01KB*%uo$ZUb&mtBEIQH`cd_jrA9;eI>;z-(^?4|Dy=t0jDkFw-XKnNP z-7SV(7$~kpC?`|$&)N*eJRoA}uYHor=w6ExJ4U@RV6eKuA{>ibsU2oD^H@I{haeFB z3y`8LjSY$!syY;Pzi_nQ%zT;;hS__^=3A`GQM5=8)Ubs;Qc-0Y_sBZ@O(X@OrUC|hJV^#GRCwYgT literal 0 HcmV?d00001 diff --git a/ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/model/levelelements/Well.class b/ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/model/levelelements/Well.class new file mode 100644 index 0000000000000000000000000000000000000000..f993fc378b61edf9cb95dfa931d929ce09f2bccf GIT binary patch literal 580 zcmb7>PfG$p7{;G*SIyPb%rxjyHw|eihz>>&Q6NZ2iIE*-bO)W7b!B(7FV&?}5YY$d zLq+ebp6Vn6@4SDW`OP!T_s_={fD=^HNHCmw!qxME$3s8T+|%yZlgI8%&HbSWT|e-I za+O#JMavgc9k~xesWfbc%e9YQFBt8jsc)2pww#LF*mjo>m0&2fgArFf9!gWMnzo+Eh~ccgwt4gJ zCPOw1G}j`O;|cj^Ee2~A5V82zK1pSCXT(c8R;}J=aPEV7I1)F~ILsL4k$E-_Kp^@T zAVFCYDT-;TIuuPmf4J93f7*|h-F?T#Tdd1cbVv_Wv58&eDBEAEsm@bH=TJbASSH&- iDW-3uyrMT~H?xHGY9b8L+zj$#Xu0KdMPt~BRh3^O!-t#z literal 0 HcmV?d00001 diff --git a/ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/model/levelsets/LevelSet.class b/ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/model/levelsets/LevelSet.class new file mode 100644 index 0000000000000000000000000000000000000000..dce54afd0c2041af6bd60b74f9382c6c19f1f859 GIT binary patch literal 2111 zcma)+YflqF7=_QYg+f^3q&e$Yfh zqKQAiA7wl<+m@x>Cj9_2J3H?)XWnzRfB*gZ17H=eq6i7B=Pbjm9p+4@RCUdqYvgnG zig8k`m5waOC{=P+(I{G{R^jRU@}I7xy2jGZr=Zq2a-?zL^$@>Ucx<2rUZpWJ5AfWnrQCIPW0pk-^0 zW0hScNMJeL?KQkBkf|vqZza_>#rjVch?LC|b@mtRe4(1HNX?twoYdT3HFg`NJhFGo zF5B+5Kvf$@F_Ol#;tubf@i(2rOjZVGTBFsC7o zA%S?>E?fJmN$<_0BE^oRD_OI6U^=#Zt}jO1f=zcey17WBM;Fe^&gCt)c`bpYKHm*0 zuqRUfyoO<1p?qRfmt0-#j;uu1eU-om8U~i&w>$NQtI;a#=)splD zbMzw2U#DJ#WZL-@cK{A1?ToZhODhN+R+S0h8jQDY51CjKAg(+AS{m0&t?jMP19StOK$>c3{awO4bgZ1+ny2)@QQ5bYRIe pOV;yXUB1|Q{W>J;YX_G6LL}=&V030%jms&Fm-vg&rc_2={s%Lwp$Gr~ literal 0 HcmV?d00001 diff --git a/ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/tests/adapters/PlumberTestAdapterExtended1.class b/ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/tests/adapters/PlumberTestAdapterExtended1.class new file mode 100644 index 0000000000000000000000000000000000000000..ba45e33b8bd26e81263f1e6a5194349b2fc0826d GIT binary patch literal 2156 zcmbtVT~iZD6g?Lb2C@T)#xMM0T|Y8GoP~8)m!KF4tdXGXLh-6?rYnq2W>Pbawf?8A z(ygMhRX*sO5B?f|f#vN<90G|cUFM;?r{~^t&b@ta&xcQM-U67zUj_yUe>l=sJC7X^ z)*~exW!D^c)^2z^^`|nlm5fwm3r94R3?qBJwY|x^#n#^P-%9$9bY=~t2+M~9TXTK4 zEZ4qYlU*j+8P1dn>dPN zgiJMHTRM;9&ty$LEZ+VPzN-IE`bNjPdeFX`eQpUQOd#%#pCd~4`ti@K~S*x1Z z$JWFz|L|s~?28?;ClcAeB{4641?c8M%@&Rz-xF*eT8+*@gQ<0V)B9ANX=33$PIc`y zarZU7X7j-~&13PI+~O3>!@@#Lb)p5Aq-Po{oD}|*$6jRd@;=IK_OQ)9)5X-A{lTj& c9=Sr^eE>T&fC2pZ8F*+eQvd(} literal 0 HcmV?d00001 diff --git a/ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/tests/adapters/PlumberTestAdapterExtended2.class b/ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/tests/adapters/PlumberTestAdapterExtended2.class new file mode 100644 index 0000000000000000000000000000000000000000..57cabfffcd210c007e7f40d56dc1ffea2e590955 GIT binary patch literal 1918 zcmb`HYflqF6o%iSh1$A;RPX{`Kv1D5D+OnvgYuuf( z8(wpFM+CMKp$ct>I}Ig*&|cpUZ&Gw=KeqZ!37-pI%piSkuqlSFIoEg90z+zSe48P? zEV;-bg{*~6bTRalU0=M9Ol~?mo?ytAW!3Svoxs)WgJ4?K-H>6ed`?xC$V$`aG7E;w z7J89q$W^7U0_k}oV37D!wk!3GiStE7}2ei z-tt!@4T0cNA8_BogDAcsbiBXr_}mlk#P{_;grVS-hEt_p974gugih=Zq;iy~2v1a% z;0%3n$riPYA-q8+QscH|H#GgRg{i31cjevz+m-%S!@yaQUwti^vG7DodQV97u0d25 zpOqFpxA3A}q<0OqZ@9I3q?)rZuT}XIM@8FoBPy~PRK;so-^-zdM`QAfv*%!#E>nu0 zBp^pKy5987(8{Kf(b!q|g$qAu(m@G`wt+k@(%jllpz#u|=vN$y=MKc(g%)~RxYELn zpSW{G$q@}0Al=|GQuiTgG?{cSP8uQ7sF5_5Od5}q3PhSPk{%|L+NvuOY1&A7luT-? zZk9+TBWW_3WXG#pBGM}(shCWfj+5RJY0XG_noN2YCw(B&x{)-SOe)1m+eG?kBrQ<4 Hbzt#7S>vl9 literal 0 HcmV?d00001 diff --git a/ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/tests/adapters/PlumberTestAdapterExtended3.class b/ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/tests/adapters/PlumberTestAdapterExtended3.class new file mode 100644 index 0000000000000000000000000000000000000000..691fe41a4971641d75434e2d82c9077def342d97 GIT binary patch literal 666 zcmb_Z%TB^T6g@+ESwR#PU7{;|#EH1Xm=L3;Nn=bPY|X$-%9zrUc0fN%S0*m}06)rj zTaXYJuGpOWn7QYiJM;DZ@d==b{Q@!!cT#aPd6Xg=#YRZOJ*m(6*q@C0D&j`PCgwtl zu~AXXA7Aadn{X zQSfeK+V+@_e2TGh>03d^I1>1cg+ lJReQ8tJqHIEbLI0p?r7YpB!Z3J#;5bw?H-T8IxPS(RMAopxjGy)*UpECqd)CfzbBQ~K{0@!v-lpL)OrD)f zt-4Wq9j49otk@Oigku*LJjbx|46pQO%W4M3baJVQNO!5Yf~yP{OgnGn7#^I>q(W8S zLCZ?F3W1w&4ZR9_7)EMUu_};?SJ5YF$yBJX&PmI6(|jE&$i;C3Hx<0bkU1Z@s&Fc9 zp_7_&qeAFrf2SMD-hNVbhTgpJf)dP&q9a^kdE7H>Yj(q@%W$bbdD2f(zpdg;BpDh# z`@h1r8g9mR96BALGj;W<-21kQI~ZVSiZ+m#hP!NAa&<_>UA#+3#3ghbq^M_#QlNuk zYJPr!u<1DN;l6_R83xYhsUj`8H5%@MZSD%4PNm^yZP$~Cqbi2w>J`T(VMNBXbK84{ zE5^Jz+cl(8lu7^8RB}ndBZgMLvH6~-&Dn-U2xIs_9_5EJ&j}Tic+AioV9gu(O&TK| z;c1AR(#cf@_MCoG^xJ1>Gu#P-#*Dsfc$>?_g654M)7N%Z#T-7O%9DEIrYKMa8J?a5 ztyxbIfVf(Sw#L_~g?P>*i5Kux!6L(0trDLKreZ1V2tOmCD|p6mzXn|KJSU1$`DkX3 zJC047Fq&(_wWN6p0u8K|1&`;pr+G1)h<#z%?H!9`uTp(k*Uwa}$-2ga%~`P_%eu)e z-4sv6{u~`ESLichPi|gUk&}rlWc9d1I~$88-=E|K8vHk~p(2k)s;|E&EryCMX^Hz5 zU#vKd_EGsLsC3s6SbV|WadLvXge2%a^(GsT-HGeuSVy-cT{rS}ptojvr|X8EP4xAM zRvGh`>n1Esf ztpkrMsI^Aa-on6HDB8g>lxI~@Nca#X9dc=_CF^8DIIBeSu%3eHW(iA)yi$p3qy2-m{nv z<9tDJ>S?W~YMhx8<_~7-4t#gI*Rf3C<^K7WEZ?CU-}`}60ZiKygy1Z9L! z$+Chah{})6R0-SP&`B)8{Q952Wa$DG+kM4;LknJ#lE2g8_@g3NG7KiQsz>Z<3k9<1 HJqG( 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 F{{v$B*~S0> literal 0 HcmV?d00001 diff --git a/ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/view/game/Window$1.class b/ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/view/game/Window$1.class new file mode 100644 index 0000000000000000000000000000000000000000..3c610a62c6f3f3d18ecbbbb81cde41d4eaebcab5 GIT binary patch literal 1198 zcmb7DU60a06g>k-1-gK!>leCyRE6$GWnoEhKc?Qo_#Ib&CL zoD*+0Jr;p8mm+q?d@7tbQn`L?bqo|3n(z6XJ3NjYF&8RYZa#PUNhAV>Vl7~ZwA0ah#QW{0mouRUZa^n6#8 zz_4NB9Ey5YGhyI-8F^eVQ9^?u-_oJAzEt8UQTR1K_5?$t?~k}Qz0;-3TXsJm69dgqkf3Of-2gCTljc1Ysz@@@K(F zypXy(l|}BJmXNx4s74E22O^sIt^u22HjCwKHlF@NZwY1Euh8s();g|cZ=b=mcg|3?KcW613A{+(a*{yR z;~Or~+N4AZ$7O8N$Z!Q$mry+#HF(87MfDWdK4NPX<~zasNMJS>p-UJ_f`$78kjDdp V$l)PcG#1dtHg;*I`Raq|`33%DOsN0> literal 0 HcmV?d00001 diff --git a/ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/view/game/Window$2.class b/ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/view/game/Window$2.class new file mode 100644 index 0000000000000000000000000000000000000000..71560cd35629cbc5b0c97e0a2d241b6ad3671c22 GIT binary patch literal 948 zcmb7CU279T6g`uq-6ma4T5IY@YyF6jM09MPgor4iiV$l-iH|bby-lax%$C_nfcjaj^ z84tNTRWi-`!svO-W^!VG7q_w`y#OQH)Mgzn{;9$dak_?t7pbP z@Ut?FJrgBqrp@RTxuY}=aT|9y99dG1axi5m5jg#aPf==|O_PM*SnvGUZT*L`ZW13_ zW;ILgi9APSiNlwMpII+aOg6(!w!6q{38Gf>uJfBO@G7Ii(N#V@;=7Mj+V?&qY=6bY zk9p3TkL7>3T5MpQ?;+Rt=p}6ME^rz3d6%cW`z|Z(PYAzY^S2(NjzDbYJ?dw9^B!D* cEo^gj5jVKLfE}J0D6#Fg(BPAw)1&hD3+;yXz5oCK literal 0 HcmV?d00001 diff --git a/ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/view/game/Window$3.class b/ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/view/game/Window$3.class new file mode 100644 index 0000000000000000000000000000000000000000..6d6e0b14e5b58a40c17a99da08487b5517ddddb3 GIT binary patch literal 945 zcmb7CU279T6g`uq-DbNsv1 z5AeYs;ExjTY(pPJ)GQ1$b9U}M_nvcq{QUMEz%K3tC@}CuayNdT2s_H0NE{y~YKNbu zP8xQxXy5IF0~@8`^HvIAGdA^0*6o!qz(K3W@%-F{Aner+upSgbD z7fLo_%;(!-b19hoG;E!-wJwo*9xoTj8Fv`iUJ|6x*Ww6i8nX}~(?$9D5SWOd`@ z&=S$q*b{!vNcu)EG|gBi71V5oo8)zo)&f|y>Mf^%FVHF@By^ch59#iauyyw{qSjZe ze9Yfm^jQ9fqS-oD=^jyxM=#+r?F?72Hp}vacAsUb^$F1zT>UKvt07>Ud5*QSce5N6 dfeq9sx`<7RFJOym21?}lHtKZpb$V9%egRE-^~3-G literal 0 HcmV?d00001 diff --git a/ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/view/game/Window$4.class b/ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/view/game/Window$4.class new file mode 100644 index 0000000000000000000000000000000000000000..d7d8896978f10db8f759f6c6b5fd57e6901d1955 GIT binary patch literal 945 zcmb7CU279T6g`uq-DbNsv1#` z2l(I*@JESvwxJIqY8Hl>IXmZ`d(XW;et!E7U>Dl~N(?-e+>PI-!j5t$Qpbm>+TkbJ zcr=ifPn4YUp%_X2PU+N4jj3d8!}WEsLYW^5DrRCyPcPrH84 zCrUN!>m)O|(!&?h9hx-47H$)qSSg%*MpM!gT4oF<|7cQTw6iA5XuvvW$9D5SY<1)G zz>?6^*kgXCNd898HO*Kj6I5)Do7C$vtp%`p-M5?uzC^2vkkDm1J)pZs!q%P7h+1E< z^09bx-ebidVzVu*(mf)MM=#(a?F^T&HjDC@b{}P_^$F1zT>dQvixIHxBF5V3yIBlk dU>zI8F5?FAOW35GfeQ8f7GgU2JiRJ?zW_x#_0IqR literal 0 HcmV?d00001 diff --git a/ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/view/game/Window$5.class b/ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/view/game/Window$5.class new file mode 100644 index 0000000000000000000000000000000000000000..da6668813dd726efb3a39b22b403c2920e84cf5f GIT binary patch literal 945 zcmb7CYikoh6g`uq-6ma|Shc=d>mx!Etz!!XAtFksBCHxw;zyb6PSa^OGi7!*!Jj4g z06+Kx{88eaZRiIPH4DScoSk#ez31K^Kfiqku!GwHN(?-a+~w~RVaJ&hiQ}V0ZS&(a z9}lJF6D6m7B*v1zQ#vuz=5BxrL*r0P1W$z?@mIq`8M^?B3>yV1rjE;r)Q&%ioiaL7 znUh*thDCRvvgUo#jOG&U67`|d$~|J(Y0b%P4;U&vlgKI<&V&fCR6`l{5LGl7$}Rt( z9w{wf7A3zG!&EY?MkW^NKv?DPGqB_xg60QWe%&;|=TOqFc!d8ythu67seJiuf>n#*bVOam0EJN*$$!#p3D(}MbN!RcB zM5%^79j7K!dh|lN1CxZfiCYB6RthJd(UkOsmMO#WKbjO9?W{>t8nE8!vD^L+TV0;) zTN0WYd&Ex_$=~p~rWxy{f{M*>oqAoSwE)&=_?FYamuOW{BXpTg59scZTIbGZgq^Qg z`B=O;>#^bwu~`SJbPtK+(Q`OYJHrL6&7wS}-A7sKd_wpI7k`Vv?jm4YMU1tRce5D8 dz&bXFUB)%ym#|4W0~PA|4K(TG^Yp6p{Q`e+_5uI^ literal 0 HcmV?d00001 diff --git a/ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/view/game/Window$6.class b/ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/view/game/Window$6.class new file mode 100644 index 0000000000000000000000000000000000000000..acc800a9a08efe0e0b714117623564b7da47fe30 GIT binary patch literal 946 zcmb7CYikoh6g`uqO_Q!BR;{nr`iPK3bWD{ZL_`Tygj55T_)#Xix5>1d*)lsx@Mj4= zzz_Zaf0TG<8~Q;+&B8DBMw( z>d254Sau_w)*i5CcOlU>Q=e#~-BW?>`hwg>U!c%QA}T@POn@R*%E+S5R)A~1u*wmA*dNiDdY01E3od0{5!m>fu0Z*1GO;1O(B6jCleXXY znR3is6UIrZ&2W$0D2W2x!fl2_OUltp9+RFj6bl^xqf238oK51GC#-XNY&ZVHS2u|c zEDOyNdn8X4+2G)n;UVk9ii=HggPWb_wFFVE`kwQ|=XjM+W^|QLkNNJAa`WzI1kJBF z`!RcS&STjhW{Vcq_#QCFqvvsfcY%vopGSGdyN|Nc{Dj~OF8vlmJVa4E%3`dayqm{h d1~#zC>^!bBKZh;O87OemZ=%L0pQl&l?-#T%_G$nC literal 0 HcmV?d00001 diff --git a/ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/view/game/Window$7.class b/ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/view/game/Window$7.class new file mode 100644 index 0000000000000000000000000000000000000000..95b9fd51b238c59763709d98d521ae92d76bbc8d GIT binary patch literal 946 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 literal 0 HcmV?d00001 diff --git a/ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/view/tudframework/GamePanel$1.class b/ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/view/tudframework/GamePanel$1.class new file mode 100644 index 0000000000000000000000000000000000000000..75456ea97e96da28241a4a7886bcb4ea69dc42e3 GIT binary patch literal 845 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 A%>V!Z literal 0 HcmV?d00001 diff --git a/ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/view/tudframework/GameWindow.class b/ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/view/tudframework/GameWindow.class new file mode 100644 index 0000000000000000000000000000000000000000..9a271f31293f5fa98d40d2efa8bc9659f87bf3a7 GIT binary patch literal 3573 zcmbVPU2GIp6#i~^+ufEarRBdASP)9PEv)>AKmm~!aA~2XfBcKn-P?9xI=jryb}1+d zi6#jYQjt|@Vn9L;X zbCCm7jv7`xkqN*ru(dQi<65U8{kCqUOx@9kOc_9hK>b;LT#x7(CnCqCEc`0cdx;ZHAl##Foq8$R_pg?td!eX43GpL(sS^itc{cC%!|CJP|9ARKRx+P74 z9bKiPdhDfKY@0yEPQx;s-2&03E;m3^w?-m;j%`>YZL>R$B`n8Im?jg)Fmq~K^Pqsg zJrS2x@S#q_T+~!TV1Wh=)j=#0KoyptK7gfs?MIK)unY~1N}f;aW=de;%&5AD&dQk6 z)_fv}6#^@IysCxz_;O5WC_0ujHVGgT!Xh_2(HvwzgoTA1`QEBEihM)#~&iz%3Okr@{+|=;7uAf zV~c>sH1^7raZz!aRc<<=ie1xXSn{yjK>gl>x~@cwT-M2G8s;|r&ZxnHmf%$Jtau$r zw$AaoD_6_9#~CY7RiLH7mf34iFrCR@wq2j2$IcznlWyz*JjWc&+G9l>G27?Z<8s*P zv1KYH;{v`WH)GuHHAY4Y`xqum*hc=F+jRK&S7KdfVCF!(tg&N?fdI;4k zXKd8aqA#h(WZp#WbUUNc&hIo7Bg8&6vE0`75g@SC%lt#6@oZQCTI9S{p$EMI91&Rj z`0#V>HT0pMm=Wo8$_X_#+$2R6?FKdM!ShNxreUwAozT$kX{R)Fc-o5^_IcV%8uokI zkcI=E7T55Crwwa}dfKRlgXkok7;3LHrS29d$h-cDq^gs~cxDWMolVWN6R9|Dr)O*} z+tL^&6UL?4mC)nrgz~0nRB@py-_)r9&I@$T%CpDM>Cx4<%8_<=+UXwdH}~s?nYIhgf=ILODk&ka9YYx-?u>>EYg{*tcomXp4dMdl)=ZmGsd!#6 zx`>wpxFoRc38TsvL&F#>rq4Z`AIT^`7TzJuWnUs~$K-xPO{W?K@gm)z$md^0BKaug zC__C02vV=)p9W?89{JVBiFz&f_`%|J9`7E|-p92)+|qgvwPA4=^IN`#)>5}{3X9)E zWw>tn6jp}Aty6f4&%$>w{~J_)jCIHBn(v|IK{z~x^Hr}QiAD-bg%;VIx0xK{F z>-j0%Ky4$Z^(JbYu?<_Xi`Tu_P7MfoA>di=sb4$ycQ8PuwP7d2-$i`^eE-swF8~q1 zk^puCpbLix6*xTYLTsgtaxvL5h3@yM@OOiv+9^o6Oi?US+sCDoy8h1XR=t%MbBapmsl1x zTx1r(Fyk62wA>&T(&+~{hFds=+c<+eh~X}V@gdIQBTkf0a2}t+!RNSuFK`K8;#GWw ztN0dg;5)pDAMiGQ#C80Hcknab#V@#tUuUFiGM}!=T)I?K)?m)xI94(J^D~FWbPnCd zD_Vx%XZRI)zlAcKE$!lu5-!fcWGrgLMYyVIP_AazEh;l7!k?}iZz7cEA`xo-(kemQ z3a&}muA{5DS=qR3Qcb|*@jB-o#ve3H-(}RDI%HYH6ebF_sizl+GX8Vr!(8D}=B0oYTMG`A_=(@%jef5bHUl7|vW_o9Nc%x*rK;< zyZ4&+#VF8^c3T;t757iM^dl`!p1NXSWT0|LGn60rklQ|2p8b8nPz;5Z-0uh-lJKT| z%)rhW=30TGmdbRvABhZkN)|)*NGfTX47F`%0=(|&V8riy(b(xQq+5Y2EX-iO01J7B z1xG4znYg}=RSYF3=u%fsy(u3T)21gwhPLxhV>cKwT^@zhukxo^s{fqg%4n%P8X@++ z9DA=Y6ol4+z7S!^y~Oxr>am`|x(XuQ6{j*DZDZOm)Z>@f0wX#ot|EghojJ-TlLQvFcM; NHLN78RU)Ub_6cH|p78(x literal 0 HcmV?d00001 diff --git a/ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/view/tudframework/InvalidOperationException.class b/ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/view/tudframework/InvalidOperationException.class new file mode 100644 index 0000000000000000000000000000000000000000..8ef39c7807e06c776606977d59d25e8fe3dd828c GIT binary patch literal 675 zcmb`EOHaZ;6ot>NJWK(>M-@>?-1$gsbgOaWBVte&B3m=IBaD`oOk418xiWF#5Aa7B zZ>tgFV`r1j^xirB&OPnx+w%*69W3Wz5KdfaNAa~QbT5pA8`&LKZQFe>?%haj50o78 zv3sjUPYwfpZ#Vpb@RWPems&(B@Q)rG*-sww$Pi}l#6Z}d@H_U`0ihB~t%TQ>I%MHh zC7#0<4M9yGjP~aurb%4%}mr)A>p+7U!iviMX7b5&tw>iPU`z(VnTI1N2{xY zVKNj)Nir-X87xB95pl=_Yb^6fOE52kSUd7qCGqNi{)er^AFCin^VdWTS>$-nb7f$X zZ$_cOYmqzqTpPUSHa4G7dQ3HCUd^<-!td5m;d=fOay% zXrhTfz#nBicU#+18b8^j_s-mToS8Gz{`&p>Cx8{KMiCNtX-UJceXvaLu=!9 znFga}5E!XS&o;{i=~e0Y_W6c@cp)&j?mC2Z{DN7o$q4IGA3;OqFU}U>1d^NWwA;RC zJEfdJ?D^PiK_I;DS~3oXCoqJRfZoHgBXnoqbC1p4 zvdpRI;Z56-TLDWu>QPnU7TKZ6KB+e!!~VWq6?nDzA8BTD0|7k^YG(djc9W27A&Sca zL7a zPSkPnYv4G_Gafu=m`cMK^>o9H_c%2MV1jA+Q)IGB&19bu4vH}JADDcXyi&)txl?G# zX&$GzRfn!8=T5MoixU`nAk9;1gH93-Fqklj3{sfJ60%svBL8z#5n3aCs|cf6go;^a zccGx1RI?n5y5c0Q&)2ci4c$gflM`T#XObHaZZ~EyQ#SF^#*p7a-nejSV&p u-drz4^lw=BLLmgjr5Xp24-zIC4$XuD5AcvLY80KpMtAW0p23d-h}<6;b2lLX literal 0 HcmV?d00001 diff --git a/ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/view/windows/AboutWindow$1.class b/ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/view/windows/AboutWindow$1.class new file mode 100644 index 0000000000000000000000000000000000000000..15396f1899643f5ed4a3acad93f23772ccd8214c GIT binary patch literal 1243 zcmbVMU2oGc6g}=rL%Xak1;$rl3<9*>Sm*>os0?YUhJ@7e!qhz?x3OBI%$X9m`CUjG zNIdWZ_)&=Kq=JIFfQXdX*S`1M<8!a`?faLn0CursA;<9C6Rw`V_jq_5Y3^xv?8&x! z;!lr!KjcGSFw}a%i2DN`N@LF#^F~&N z7uk%?JBZUJIo8secKsldYRs_F=q)YffhlXJIVj>L>K1M>>}FPSsSGx5;|>X77%}W+ z(_TPGPB5ULg-Vui7xye|GIaix$PySE_l@ecXcEMIE>&NsY1+F)lZRt!*?N{B45fF$ zG#rW7(p0Isa5Hv{j#SD6HA=bp}I60@YU8S%BQ&T2^)XHI0W+`fmu&o=P(om bhjt9-hXj$sBQ$8tqlqm%rkUYu64Ubo-&0+u literal 0 HcmV?d00001 diff --git a/ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/view/windows/AboutWindow$2.class b/ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/view/windows/AboutWindow$2.class new file mode 100644 index 0000000000000000000000000000000000000000..d72580cf2ed58f11787f3c573c8c2e1e5670545c GIT binary patch literal 1267 zcmbVMZEw>s5Psa2hGt<61;*RP1{CPJv5X2djWVRE+9aeFkU-@laud^fN*$EA?e9X` zK;i>GfFFf8XBAYa3y4V0`Qp3h&d=TD`;V{R05q^|A;+*22v3jR2Rt4ong`nJ2lA2k zF&qthBKF2oOuUIyK{QFc{a!TE?^31Ouux!dkNB8-Ay<9xRqsgn+Cq_GCH=}L+7n}; zw72hT8L75Rv``{uDC&Vss@oL1{a?YG42xqPR{conI0{39`8XTux2f0qh4W^2(Lo8ejXW+nSioh5e9f4a+fs>_X+hrd zUMLtU?a1e0m&elR(~kv1E5mMfMrU25+8{d0JT2905r2r{p$HgOYwfw!JTR4Qu6IjV z#w`mg42{fM&LzUZD%OY!lM};UcH%P#=^eV{G*e3(cTlx(m!bKuiOhjs7H9GBh21dj$XR*Oxzllb%FAk+Ck~=dmTZTm9_dxk!lt|U@2t9}b3!4m2GV@K7 zoHK!@L$+vy{?fNItj&;Ry2^Q>Xc}7~PZE(}jruQ7>l|{fYZ?-8E2bUkSCON&0EbR5 z&~A_PJjrr>;{=QK%@erwFQ|M<4X@DKP92C0>|lv><4ESXifbepuH(iOszovduOGub w#?8;T{U^*W!8}c2mZo`}!kCQi;{gHWQ6tzK)=?)}zy=<|qn%A>CNMoe0iVZYVE_OC literal 0 HcmV?d00001 diff --git a/ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/view/windows/AboutWindow.class b/ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/view/windows/AboutWindow.class new file mode 100644 index 0000000000000000000000000000000000000000..03d430583344e80065ec631a575adbb8570aff7e GIT binary patch literal 2949 zcmbVOTXz#x6#h<|bdq5Z8cQLd&~lM9r3}|r8xTtiHINphCD5Y6BsoonPG{=ONmEeq ze!pM;06yp=Ye8_yS}q@5zWAvB!2jS{y4+``vv7jKtSomu)3MK{hZxuihSh_PO)=OaYglC-j{Gx_`Rmdxi$Tph zws0NG;x5C1%(8BmRCO}9a4N;na>%qz@iaqUVkHK;vJ9a?r@$jv%dqBjfKNwHhYyO1 zX2djTc$6WX$Xqt&4Bay9qCO^E(=Mh~<}nI}bsAKxQm~!^UpDUt-PHEID%ug3!EI!) z|0nqeSy^EQDrNAPhR3m)q17l9g5t@Tp5V5;%dHDo85N=PIc^KRUL)0&RnS2w_=rla zqmEnPZpOGmrKn;Hw#vk|F*GN-veMfQ4NqVvL)7CU&|=tB<0X)d7`9R5E}4&_3*8Em z4EvUaw_#an*o7Xd3yB)T;fKCuALT3^s;N*FI`%5q!;pH|KpL3Qh}ZjxNkuO1QqCcq zPxRuDh{GgK`&w4P(j0!c#1(IgTwO93?c39Xlzfid-!bnn8j!4E>jT@ z@07gD3#RZ?9L5m^M8M7lj_OZpcm@Luj}!xs{6xmcaq0t!2Gr{E**33x)TN4gph=zw z8N$a+*P|j~IHut^hN(!X1R1(&%3;u%nRRR#Yz=8o-`99-!1tP<}Bb&IW23#EH^AuuRBjQlw^vgX^ ziO3ocma77>Gs5jM_4K;4_2oi-qEjv%3{VT)=(2Y&VMd{NHOMv#XO?JW@hOT+^-4}9 z7y}Zq&oq3FFQk}@tm&El2Sg|_DF?DzG7CIVr47}Xo9D+({|mz(%fYMN@|LNErETh8 zgO=fW+(RdsZl=$mCTv6)EwoeoU4$ewaB1C4G7YQg`3S(iCoPqve7< zG25@im75Up7J3xIR&PXZ=jC=@ZllR{(RGn3UcTXHe~q4J&_>VAghvPE--$R)$n7-f z4xk4q8d4{*hjjKMPm*c$;u`w!F%IEt9Km&J+&^FtH!y@>a16gw-~9u_c#SMh1^D50 zyg@rc(#M&;=kOig#9M^>NqmC0Y1K@&%Xo)YA+kP+ckv#ff1M`P`}lzF>IQb=Ls}{1 zV*@@y1rhQTr6?-&WMpMqaBF0{iB>>MGE~KfBymRWjGxG literal 0 HcmV?d00001 diff --git a/ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/view/windows/DirectionsWindow$1.class b/ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/view/windows/DirectionsWindow$1.class new file mode 100644 index 0000000000000000000000000000000000000000..5ec8cd643e9f38b3971e7939f2cee704b648113e GIT binary patch literal 1273 zcmbVMZEMp|7(KVGjqS3wRyW_Oa~ieH=3<8+*li$ng3$WKQ9sIEb7`++HzT=if0wW+ z_`x6Gj}o7o6fLtvF_7GsJkNQad(KI||M>b1z%F(y&Rf;c^*yT(MC?ogv>eq1B#L;%y?t5kC$DL%kOcc`)FSH0$|h z!4S-Fklj({X`D6@vzqGM4Z>Ke5yM8aw^Z3fqjIM;DB%_w7H%`_W(vEM3mbQEm)J0E zG3;mezJQP%V?ap@nwD`7_bqHPbpExGB``J~80zcsIGpvlRDGc)sge_xC}2c`%aoo#rg9iG>+M3c>WhNFHpF^ zoN<}`Mkx_>10KgBCML;!^n1wFYQ~;Gt!~U|cIYmlOz&4{wohvlS9Q0}VY}PssJLHH z`;-J;rDr)wAX4xc*Jy21B86iO>ohW4$Bj8umqr7=;+~;$hMS+UaS_HPn5_h6Jq?}1 eP!b$GB!D~~5k!uPHEArMMe$E)X8JXS>G}ywhH7m9 literal 0 HcmV?d00001 diff --git a/ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/view/windows/DirectionsWindow.class b/ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/view/windows/DirectionsWindow.class new file mode 100644 index 0000000000000000000000000000000000000000..454150837eee6bd11e90f08e32372f93105c33b5 GIT binary patch literal 2656 zcmbVOS##4?6#j0!$QFW-kOU0fLRoAD5Mc==W+@~P9Gn16;v{sTigjZPWGR)dW47-7 z1?@|pI{br9XQ=6v86Ml2{+>Q|Iz3l1v0*$ZgC8_kN9TTL`_4K3>)+p>0XT;56!b8R zTig)!TbAk90%2Ohs95%>vF6lkE8I8MZQd{%wrhEfz?igsUKY0J28*FYL7ZXi)$h;y zrW-h>FjpMTusz_uZ8|0H2L!oLm}Fqn3|l7%Uzn~anNFQ2)_Wi9{%7if!=RQuSNNXe zaG&8saZ|HxRfFJKxAF|hGq!7sa}1}luLF=PF~lc4i>I)iLAf3!Nkt6(8Z_)+C}fMb z&2`goOt)gp3Ey@r`PZ|Q2E(8R68ZqWTc0?8G`?bd{d~`j76nb z-q7$S-eTx8Ei0l=(GCQ6Wi|JL8Jd1IQ{k$dG?kN4mgh$U!HvSGaiI6&@ublg$-Ht4loJXn)G9 zID{h#4ihQ5DrhipltClFDVbDLNWA^s@ni!|Efg*}yhh2+r*Mqe+{&Da6Btu)l3}=u zp%-szIED8ZwpAjFe7b0^aB9_TmoCVKjd9lqXqr@vNRup&GbAqCejp@A&S*Fb>dqK( zgdx|#iV3f_=DE_@j{dr~a+~H6kwd}z3_HTclN6frZL4VB^Xde89v3C?C&)~;P{@^} znM)cjV~Qaia1rS-?CCHT$!1K~tZ<*;Qz%H~s^^PxT?7*1s`RwTpm$tr`xwP)NMG8* z6lP^)b}fbLSoQ5iH;G(p%prM3Cst&n2XWyr>xwFIKhCVr| zVi_MQxJiR`18?5*oIAGA@DVR3$h}H*&0V2rD>cq8W+|uwV%!r|LWuJ35 zGC$OLp>01+4wp4pAP*6lvaFJcMl|e*9NCDUpKJI6 zU&@bMlKzup0>^=}igWQY4{WL+2RDG;F2kHh}#=S}IBZ)cbo!o}f=3`4t2DQw%NZ^t!8w zJtL3tb`$%X80jBv;`oeysQ+{mdD1z*oQyxgg(fCDbgq!jtbVwO>BSD|3`xi1dM5so z{F;;}^h`p^pW?=HU(Zq>`}+yz#*=y`*~I*BSZd;vaV4WX#!4nh4=dq}rR3|Xd|j2V zX?-v~m} z5#M71Khpeogem-tD|m(i{=hV9gti)`3NAc)qojo?rAdaLu!hel#WT1MpH4BtEhC^) zoRF_V&?!OKCsD^bmE{q6)S#0>Hg@4II8tOOjeB&G{|xTqK~x}`);)9rk~-z?VLLvR tM*lIw-+z`=+O+@x literal 0 HcmV?d00001 diff --git a/ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/view/windows/HighscoreWindow$1.class b/ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/view/windows/HighscoreWindow$1.class new file mode 100644 index 0000000000000000000000000000000000000000..df53cde8401dbd1475654de2bea8a3b0da38140b GIT binary patch literal 1267 zcmbVMZEw<07(Ew|3hMxI&Np;Ut3o%qLQIUonHVyo3HZeYKbkvw1J`u7OIzS~nQWT) z!5`p{GCsEuB?~FZnzZ+&&vTypoO9aWe}4V~&_>fjhN0t09#6h_B0Py=;l+I9sTM!= zCnv`;M)e1!gq#&j>EwB4epC{xc{NN`!9=d@~@Rv@f(J)o(_=K`I=T%*KQ0L za^1j_1u$&dxPrWym2FtKT0|DtY!pys$kt70xu>-Jn5b|hj(y2c?FB>O4@9WUda;=^ z^fDY=z8R-Qv~12b?)pKb^oU`n-dic_p^>=L7!+^^H4Aqc+Nr9pq{7BM+$S;&#cPkg zgpf!wprj>5i+F&C7IxPeIUUBvBg1?(8V9q!P`WSmWbR`+rU*x5-&z_W48>2uBpk|j z$|$vU;Y(>6E=kfuJ)9HVm+?68EVvA>Qu#}Bp|Q(8!^<^BUg~^_H)ApTgVr+a`XY*C zL_Cu9=*N($RE#%)O4T^i?9g36k=}36?10uLuI%oe!*=)2QF4Ev@+}FxPS0YJK$M_~ zEn3@@Na47FZ5kPF;?@GHOQQkbaL-UW!|m_bxd_uDn05lQJr7;LP!b$GCV(uS5JUz~ TQKvD72KMlbX6C%6FkOEE)4OM^ literal 0 HcmV?d00001 diff --git a/ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/view/windows/HighscoreWindow.class b/ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/view/windows/HighscoreWindow.class new file mode 100644 index 0000000000000000000000000000000000000000..4a37e2a4c452bf31ab35cc65e0329af297a22dc5 GIT binary patch literal 4064 zcmbVO>w6Se9ez);+1VWi3TZ-{)>@$;n@wPZQrad!p$SblT|#KW($ou1c270~lbJX> zNuXX@wbXj8mrAvYZK;addO=|m8?DuPwB!Q@?!X5H)>(x@1fQ&33Z$!|xpB^C)>L51N$CdW zwG^GLISn78H$u-Uss}y4ApNX$%9{vu+=-3KxVr@EQ>{5AZL@(7V+&(cl0ifzaC?Q6 z={|sI75kHBiEuBPz5SLe9UUob)X*+)^MdRi-!9BcZo@Vu*%W93 z3Y(M6t(_X~7T8fUW>ryY;2!KE%v2Zz_ADDZVc2qfQ~`J$_n||>{Wk(ng(6kh80f@q zCT39v^BL?hXf3JMY%rJ6o^LK*b?VrQeHtEMz^W1$*pCMV3^MFd0I&kZZ*z5is#x?K z$sBOx7=h850P93@biNSjcnA+`=n>dZMbx!#4P?Lqv!)oyl)YJNSULi!DjC}vCh-Cm zLQ2ZcGR}RTAB-xD^%*#XeqxS@7HF+NSC=<7?zu|cidt}J__)jmA=VyUinWk`0)vcu zpEV|R97ayz>L^`UO}h|hLrVVR0_m!fBMVHGEQ{(S@G*)A>@ilbPtcYuv&~81ldO#6 zp6v!D1>Io-dC;N;$1B=-fd`h2!SI2ZRnIC=n8XN1H57^F<)%YbMh0vg7f3itY38-S zBkxnQ`IlyB_kav4wAA6i)iA~i{{FPA!PJ0<@d)S(y@I(&pw|>J#t!3{3mC8HyG$(~ zfrb)0*a}$~n7|~1%jDZn7w%7GR;>rhb^ExzVEqx9C5(r`3#=b@Fk8LOP?F~ zGQPrxlWNX5G@>%C`~L{}nt`w58v-{`$fMHAkIF(A^-x$w$@r$?_ASMO?p!J)m*>5vipZenIVbGEz&X6iE>2H$%MokB3Fa;;VpKs+ z(_g|*4Ez-5qo5AteJR~Y{QCKzst1emlT`TU27ZCpSe8a5OFeNaGV1u327aZE8>Z|+ zRD^$H;DTzut5l=+@>W2L>Ex{K%D!-d9gL>UMs?}rERLLPD07FgVAN(R-C(K-TOwzI zY9lab%BE{uML0I_c=ba54$6}>UG1z+<(EIdX*ZRu2SL{=`9Re9l(AH0n)7W0eBKUk&^Xe^(4-kh4p6IFiRwkE;<^ zAMhspynM)3V|vp<<%%9}Q|M+*%ed^^U5-^M$r3h@V?EQY4!5BJaqhHmm*5HK*Ko}@ zSk0R?P^22qAugvIZ)%&yx^&wmG^J;;ekjfDt!3QK&7DKj*igo%S){m1A8emR+tAuo z+BCM7@sYNR*j~oHW$bC}D&s(3dTZk&WhkP-%1q)du9EmO#oUG1do)ASAT;dIkkW8C`U>DGvRCnR9hLYC3Bzo_PAbAH q#M1=l+sc)7p(}O%11=TuLUW9WYR;TGyc1Hsi_831IlZ3${QM8mJhN&5 literal 0 HcmV?d00001 diff --git a/ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/view/windows/MainMenuWindow$1.class b/ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/view/windows/MainMenuWindow$1.class new file mode 100644 index 0000000000000000000000000000000000000000..81d026b0963c56fb534abe8d57ef1a140ccf2aa4 GIT binary patch literal 1098 zcmbVLZEF)j5Pr5fljgi8G1dAOt=3c1D6T1jVxm?;1tIZ^C4Q7`Zb?_Jd-ZOU__qYB z;0J$zKT4dv1VsrecyKp6yED(sJkQ?uA78%#*g>;|6^6%=0k+ z?^B)r{}$>nRHh;hM~OCR62}(yfgA02DDVBsBAjAZX=R==yl=Vz9CLTvnafLW4;j2( z63H?c)&iVD(XOfiN?7$#z?lGL)ENp*8(QrvEnnpl?2Cg~GSvIYNW?>tD(f#cJxeY_ z*WHn0mat8vtj+c9#Yv|0m|?ToU#jVz)wi=f^l=G|5-v0BI3-=mM1U)HOizALhKxwZ zbT=BVf(-uaWRi~L3uTE||MM2!v#k*Xir$2}B6GI7@y&i4=}=*dWVr9v2o+yJRi+YU>j!pK}^1y7me8=2zh2!sp=Cb9AWiA?Tqke8uLxLf*Z8a^^vqaTg+1%!~)R1HtR-?OS zNTF4eH@T4J3*Tl5)!pbK{gl`Jzdbh%)C2SI#p$&tDus2GYnd#Pe!Fci9#EbtKH1wdrw&Y}vOhuVMwR>K_g!)V3JrE}TtnlD5@l zZ;__lS+6^mq`%7L%V%r4s1z<0DjKdcOm!5~_Js_5&!gh{b?N#dG*_Z;3O5<_x@Udj zfv{>^#{lkVxXm!r5!k^Z2JT{zA!XS%52H%2{ZEbB1bDT^cjc1HJ*T8&7ᠦV01 z^k;>E`*^^hRk>7A488e61Z(+rRR&~J!t^7r3SM9sX{p^d|93>8qGJ?~G(2RO?kLik zs)q)~U^1jbE?aeADE&jEGhyTa21aHXYLlw{{I$HoUu$aKokOAELcN) z&n}m?rN=9l+~@n2Q*ifvz9uYZO*-Y5;W{;+q=>XG}JS6hr41w z;Ibl}fX|zO#`Q|Fz|fO6E|qmr zNu0}U#nFXZ8oC*VBSpP57dm>-%TQ;#MayKEiza^#B6Q$}ayut#0(X$oaF=1`Pq|zQ zq~jj$(=FfgWW{pJzCrid&dVT_n9?xGFcwMiR{%P4m}bz3&bla3?X?q? zv*wo%JW4r5nZ;ubb5xq@-9;sI%;O0`Q2ICJ0ZGtNt*EelRuNR8*M(h^p)0E37@G2d zFyF3;y=vhn@^0BP<&vdZL)*o6J*enVRWCZG?fOJ@O$Iw|LG_mvhVkFrxpTUmQ(aNj zmmTWp3%2lm>7$prSB#!I)FhLtodL;K)y(LNQ$tT9bb8xFvl&{)Xl%*$AE7xraD-&` zBU(R%h8^^u2pt%WHacmo9LXG4ag9cX>$p*cDv_lEPiGI2JjBgo+r&G|6#kY1ffAr{^9F)ir7g$`f?Uc)L{K0gGcY*gA7@F|5=;|JQi|jFAU=jO zfQ~ZNhjd5W?;FFVfle{q{mPjY+HWvE`>M#HGY<%X;0Wm({%#RwQU7E9F2Br%I8kJ z2&Z<^a;#vQ;dLq+AVQ98wCDMu)0+&{b8b%7gP~c6hB`I7pran~IAUnk(SSCFSW1~T z8%2;FHoaMoPF&N_#V{0^)N{4a(TyI48r#iVCc{iL`3i{8fg8%LBB^oQKvKg^hN(a0 zaxRdLTe!`jJ90lT=q}sqG6>W0JdPAH8qy47kr5(v*3pN4hB{%I()W{t3~T>!0n=f2 z_PI~>n&(S~*pha(o^%+{!9lfFXR8DF>Hy1sDeti-Ki1%k)I*?NaF1azQiz{&76Gbb z1os&l^0Gqp@l-mRc7ZC%=Et!93E6BMW0=q|&M*>5@mBykvY2Ghh|a1gP~Ei=mD9$z z9(W`fPB)=$OSrf*|=f=q@p|m#Zmkon-`7rtSJfbwvi-Zcg=Pr0qz`O z@Cc(vm{KufP%)Z93U7$eTlC^x7^mY0Ryhu#Vh)ce(tPN}ddX#hrd4>1Cp1=*!6KGv L7AGS`k$&F+GGi)D literal 0 HcmV?d00001 diff --git a/ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/view/windows/MainMenuWindow$5.class b/ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/view/windows/MainMenuWindow$5.class new file mode 100644 index 0000000000000000000000000000000000000000..c6d72ffffe649c68457cc96698487f2207f87680 GIT binary patch literal 1281 zcmbVM?QYXB6g_TBL%Xns4#wBU1{7$!F^`D}L^mWeFY?V z8Key)e((T16yiFopr9%sB02Vr?>+bU-0OV%{^cuxEo@rIFx>YfkB6^35e}kQcrovJ z>NbDl4+mWt@{y8bK33Wb#u0A|rQ1>uUnX{C+d_`PIS?bkeW82&Y4z}`tm`{l};KcfgI zzoWE@A27VFrURtN(MXS+ox0Xx$Tb5`7Qj%lVd11%owiXxv4|`dY|P;dL$+#MOD(14 zlcX{)MAw%LE9{crsOiMWk1$*F`K@KA{k+onlMY_1Tv0ex)N~8rYGsgk)bgM zn|4ppYM1OR&87O<5$5abM{w$&QT~`Xo~3s&2_Q-E4vS=)Kyt@9oTr)L0xnLVnlvZi z^+Py^xbz8E{)Bl?Fdq__#R-pN7{llWZW2HiRf5f+hC0nTtl<_ot%|f~64UboBc^JE literal 0 HcmV?d00001 diff --git a/ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/view/windows/MainMenuWindow$6.class b/ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/view/windows/MainMenuWindow$6.class new file mode 100644 index 0000000000000000000000000000000000000000..41faca4c7076c18539bfcdc178f90907df317d7f GIT binary patch literal 1465 zcmbVM?M@Rx6g|^c7RpL%EBFOcwQ4EI0wN#<5<@VU6d}RXpJv$|+acRo+?}@JJxnyd zg$6M3hY#RG8Sg9&A4#(sn`~!i_ug~Qo^$W~`u*c4fH|xgNH8qB+)}M~t{pT(WxL9% zyJFTl@LJ719$0O`J61N~bqvjd^`-G?bHF2hPZqnK|gE|4f0JMwIY2k-r$$z6u=Qnjb8 z8`|Q^L~Q`0xNBhSQd8_6lIKkm<0#N)_$|dSdNZr zGBC+77u$P1Ei>^1(`1@fk6|@l;tL3o+BHhL(0FOgV9vlSL*-wI^nfw(RCh=|Z1|ls zp-xAXfl-f)#<|9j-t}97!(R&BPx;F;KCM-zR@jh^=Z7TU7FP}5HL%RE6w5gx+WX+p zExp39_?KC`Al?Pd^ca}0Bpo8_o*jlfM1ck-N!Jx5vROSrKsKl6hYq;}U4t;`?Nz#4 zrG1jtOnLGcL*=PsWXs=?`x*rf(|AcSf`Y1mh~(HezW3bgbC2`w`LgcK$%W0{(gJ543k9izIOc}Qo7fcaX;`Z zY%<(SEjp=m_LVeZ*O_62S+60`EQ6~L9 zGBoC4)9x8s?U9|Oxmepc#zJlL7*6doN*@!)bM!7G0YnMjVVP_bNbWd~3p6ua#H9&T zlja1xb_C}Lmp|d^pD^zU=0gIrJgMUZ##D3@w+JAM3c+SjMUCbhHgFr9Rt4HKiRt+P DS_N%z literal 0 HcmV?d00001 diff --git a/ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/view/windows/MainMenuWindow$8.class b/ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/view/windows/MainMenuWindow$8.class new file mode 100644 index 0000000000000000000000000000000000000000..45e72abca45b064703d2b15b98368915902addd8 GIT binary patch literal 1282 zcmbVMe`^y#5Ph4(oJr5-Ott=MZPlnrT6?t!2Ga^9R1gvsl=!D??$%_>Wl!%m$#)VI zgjT^n`~ZF^arPQCN;t)Xz1_K;dGq$o?0x(G~kw&#}hz?8UI z>lUzrs}@!nc2bKvR|^|!SSK|MErz{x?lTCqhjF(L-SvW%z?3S(@0;6 z2jOJD7moBv-!m{0ekDx`hT`*Z6nWy2G(}qa{o-sH5efG|c|jOU)$a&B2z?8i42@L2 z3Ca1l(e%j{!~MTB@QiRXdYRs`A1k_ibl=SDw&{%*? zyJu*%M|PIxQhnnXi}lT8IQ7pce@qs5Psa2X3N4FIv8&oMHEvV+;D76P7?vj@ZiI<8X%fd4_HHrS?@-?Tl|?w!ZKaiY z#PGgZ3{XHvr#N$d=~kbi(oG_{2!@&m2Mcz0!own57iFw?Si(t$a?^&^0;T1%T$xv5 z5KD%7kc1-ci&R;E_OW8gW!Nt6s9=`H7LigDxn?h9`Zh^NGGf?h26JWIu@ZM$eHUxE z;9#9$vryEzTzJ^9gI44RWf&OEwpLV)!F`#G(@^dz%frf_ck`C*lSbIlVVq=24|~$= zC6R+`4EGCrD`3S+(PX&yk2^AVI%0>xd#dU3cVm%dGQ&j@x=iaBO1^KE2mHF#oqo;| zttEJLdYpC-$uE AN&o-= literal 0 HcmV?d00001 diff --git a/ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/view/windows/MainMenuWindow.class b/ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/view/windows/MainMenuWindow.class new file mode 100644 index 0000000000000000000000000000000000000000..81ab760da17055bc7856253f7d85db2277ad7f90 GIT binary patch literal 5865 zcmb_g3wRt=75;Cto7tUAnlw=8@=zYdCfk;!r70yTh4e|%Ojj6qM}tQ#kQNmTGaBWLJ_4RYJG$F0u|qa0{@-aO?TTgw2l4Jy^nLx zx#ynypL5TdM_;-B0RYoQwSqAMvyw*4&8$i4PH)=PlWwd#X-{iSv&tJQ2nftPcJ399o=RJ~t9M$4Ky})1Oxdm@U| zwF?C1*-0aWlLeGzzNuA|;S>$kI8~sz*4sE{=~S)Fb*N$EiR~0d1g9%FOK zu|uRr73X1+f;S0_A9jI;TGR<>6u8Jp8IJBsdFKr;Pa=2G%H{=@(QBmK#xMjXYfw?4 zV5-1L5>GLGz>O_(%w$}@%FehdrXVIS^#XxlZF6&7yGo|%8ZN{PfiOYluM;>uf8~iaBVK2b(KURx6D=1x<2tx`KrQ zr<8CEd3Xqy(}$ONu|UNFv`7hyiI8EuuC86)a;pXnl_6*WcRrY zaOv1mztzx&6})-^&Yuy854Z0zJ6oxI0=^w@QLyUuLi15I)X;&|0wF5s#b8E3dV`1U z;&3Dl_cjf0mxfb_V`*JEw?@M|pbJ!xf4-f_NKX+sGcTeLZe6a9708VW5~IQQbQPU2 z=P%fO{5SS+wMaA0Sqa)rW@_q~SxjfsSJFlKpgH z@o{Qa;Ectkh&ID5(o)5T@lgdIVKQ)hT88Y|Hai+4)vMSg9sWLCt>Auv(~iDX2w$hhJ!W@L zIzeOlhgR^wXttlJVvoF|Z?S$znhp&vpVort2S+3NA{Be3=tp=kq%X)KO2re1$+zKvh9BT5|6Oh~H?Y__ zwFtgL>%C{_Y5Z8hk7&=Kmt=))TkA|$!%uLK0bRc1Mwgzk+&rNuA&?JGewNYTY5YvX z&+!XCKW|GohLQ5OKc$dCNQOiEhpF(dH2fOR&|`WGLWQY*|RQ|fpdqeH%gsW7K(nsc|;-UC9k9loAvj|Ivq7nBYVKo)3n(5(kj<|X_J zWl6mmT-SJ!N8pT-wTA@fP!r`skph^SnrYMfju5C_ zE$eBu$4najQa;IgB4MP{6N#1;qe%x#Y*q4wps>RaIw|13|vJ_{JH<?V%K0pf*d%}J97F@Ew+OvvI5Sxjt=PTqxRG>0i2)kcdC?8QNH7P7!d(i_A=6PaFo>%f$|L1DZ15C$R~GN) zt{Xe3_7^@tC7MAaugEQuA7iX8TN#P4{-3ZM9>Bx(^Yhy5P$yB<-K#2lXJ7>AemH;C^y zR7N9}Sv)^c<;lDH0CxDh5cbLLJ~McZH@ z2Nwre5FA85BlrORj%)BgY!o3}E5>1yn1JiVS-4)D&(yXaH;YSfi&%`?#B$srRx^?7 z!Ck_}Rx!XdY7@4L8?Zy%!sO>prW;$aN9<+>@cz&3Fi_5BAO=sBU_ zpX@2r^>O?Q|3-+KZpVMv3scXV@e+F~wd}{s>{U=&2mZ^RMh)wE;#W{f9Vg*c_Qq1v z2?BTqRn#{u1bfwD3{{)}@hXiMRKN`*3brd?9@{RJ7iF01yC-H)bF!m68pw)(ytgsl zy{T-0$Ef*!@BEs-Dt~@Kn;$8mY#0eoQo?~FB~*t*SjeZBA%b||bH!HrNPPQ{3NqG6 zqBK91AxnjjY8=jT>)|ZX0t>%Edx1%e6*4fjAWZxD|2p&ShJ3pv-|ot{d-Cnxe7i5- I?)Tf*01h1HtpET3 literal 0 HcmV?d00001 diff --git a/ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/view/windows/Translatable$1.class b/ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/view/windows/Translatable$1.class new file mode 100644 index 0000000000000000000000000000000000000000..f916b3f91e377980a8f716d1b7750d252949498f GIT binary patch literal 1466 zcmbVM?M@Rx6g|^c)-DTOK=2C$wQ5_CrHF`>k`RK1q@WSf#9wCUj%CTRV|J(Qb7=q* zfA|1Cl=03|urXz0XtJG|-Fwg6Ip^H@_4~(90E?&^NHMIq!cnbHE)S0*#a-nzU9aqX z@mt3SB6QlG=r|oOaAhZQ_Cp>-K3Dv}7x}V*41;~d+uZSa&~)A%9EpZ9Fu*VszvUg} zh_(onv(ZqV3~FAaL?A+j0d?p_`32g%cD>yz48v{i=NmFmq4a$Xx|EFdH`Lj@%p#nD zH81egI)f}E16)Z(B{{GE#>F~AW>dN%3x=Ep12^?-#6lLPi8RJ64B{3;x}ZaIH7^jm zu_pVPeumMSY;eEMLr<@}FEg50hSlVXt~^P;OoZfktk!!GewN{}a2cixwZ4LGX>lvX zdKQy-U|@=2F;ULGOjwx43~`~0VyGrp-h&VyqE1OYYMOY2yn)9ImH#cI4~&H;c*-!; z6zan9lKgeIP^_tL2gvZU8Dv<=qJWZt;zc{Ol;=CKJi@{(<`|5(TOW2dc0X#_Vk&z= zDkkQ!V8CG*?~8Atj75gAsJEVTcuMJN(+j8#!^k3&NwP7Rd$JWa#2ZiBY2@Ol+D-Gi zMsmVd(C}sC1(Os9KXAl;B9imy4)@d4ZrP)&qm*!4km%d~4YaBRE|7M&( z1Ys2uwAP6fj@!6HBRK*0x=`B`sli7|C$LX&{|pbm;n^9U{|i=yjrAC8;yj@XMyYs# cC4x)iB>|k literal 0 HcmV?d00001 diff --git a/ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/view/windows/Translatable$2.class b/ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/view/windows/Translatable$2.class new file mode 100644 index 0000000000000000000000000000000000000000..971f4834692a46fe743a33de33e994dbc09f0481 GIT binary patch literal 1461 zcmbVMe^1ju7=CV>t1E>S5c~y#I&~XJVIm>}6GJc(>yHH7zvfuaQBr!Qy=|XM1DN=S zAHWY~e6I{#%xDZv+PmxB``mla^St-#_m7_dYS=K4VOaHqquQT59v#Mtd&+5f{*v=0 zXdmv0$m#f^>va9llik?ajd&ObT=Bg?lxhZY4E6!td|yDKNRm0 zO?EZ?3}dcr@}R*ZUypk~bDCI&we*ZGJV~iWgcNzA)&~)NmeHZ`7-q`uKtZ>(xb;e- zfGONDFwIa)m2)5y7G^L@T?_U{<>MNxT;qHGCD5?8Py9YqiUdXRt|0D2Tmf7urP;thRnwutysch-)!B)0u~K8 z3=;#PEi9qNFdp}(a*9kLJz4qzwO1IqV=7HC26IQYqo#P}YbTAKol+ZVLFY&&*b1A0 zjQz0nR;YdH8F8 W%3uZ0sLf#&YgnhANppI8dj0?w2A@9w literal 0 HcmV?d00001 diff --git a/ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/view/windows/Translatable.class b/ws2009/gdi I/exercise/src/Plumber/bin/de/tu_darmstadt/gdi1/plumber/view/windows/Translatable.class new file mode 100644 index 0000000000000000000000000000000000000000..6ff32e06ad79947758b7c8a009fab68e01c77120 GIT binary patch literal 2202 zcmbVN?NZxD6g>+D5k+Z&8=$6b+I&E415t2jl42(<5FmCOlJa3n`jHB2Yt)gYRFa{; z`zD>~3v{M6Gi9a^(1+^utW45+tTGgPM$+!Rd-vXR&z}ABuiyUwP{6ku`ULLU(u`U! zZ7XPok!43_!**uPS8l7hD+6=ikq731?d?$slxmZ>#)BKvV=SEcqTc@S>XKw&cKg|7hjMpMIVc(CfYz1-|Rb zKwz$VVmkl0nhbZmswgm6ay%z`C{WH;RZgaBF{6zrU}D9ygv`|hQcJ!qb@bzs0RzJV zBMHHCwQ~@7+klSq=P-gX4Wj~u|6hfHcaY(x3UPr4r%pQVP>qZJ1&EG!@xF%l1d69k zBq5A}EBJtoYslzz=Y6&)lg(A5V|fX$C5ILV(zy zg?dDlsybn$z!JE243KpYnR1`ZGrK(qx{jxKreTc%dZMe=KNq;2(6JcPgvQ77Ls(}c zrPpwsFm9xV&9j4F(6IsP?!~I($+cL?HxL}%-?2!#it`&wdq^j{S^UCbQI0i7tkrt1JI78XzH?KG{{Q{qF zaWF!!A5@nC*1GkAoBo&5A6mfBd!3}gn|sBX`sKT}pMqa9%*wr+K-nzH^9r&Z%~UL}GF zCNjws^Sqd5sOBa|1uDcH%;6qN^s4Zbu45T5@ECh|hF5rwZLVDJ6oAjM!x2lN#}_P5 zeW{ZB81YN~zalVKNVc!>5-CQ1f^T4P*AmY`3A+UA1;!X{myq?L&h>q;A^A@8Yk_a| I+vvRh25f_PO8@`> literal 0 HcmV?d00001 diff --git a/ws2009/gdi I/exercise/src/Plumber/docu/Plumber Class-Diagramm.jpg b/ws2009/gdi I/exercise/src/Plumber/docu/Plumber Class-Diagramm.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1369e7dee51f1baac41113e901ac5f81ad75084d GIT binary patch literal 233987 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
y1PEm-=rn80x; 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 O(0b*ki6W{$wrk#@ zJa+>^%Uq9e=*Nbunf;D|UyAfP0R$~9W+=6xTzX^@7r> zzUxYEWL)Y3OqtoTptewQ(!g7I$RdKzs&J@`$PIr%aQ!RN_mz7i0`Xt+!2kcW71|GJ zY{eY)qGGnfLz_0+l$D()*0*`Pu=kqlE*|peNQ$FzY|^GB#>_WS80N$+1B(;cPk+>w zf@Z2uZggBS^rkMT!vIBo9eDS46twnU^{G7l?|jG+6s=u$J1uA}<~O(%iUtP_`^2j+ zlvK|WcOo3$7s3L9Q;VvrrYiGBtzC{~twS^b-r5rek*k!X-0ngnIoJNV_{+q0hb;8_ z4Y~g_l)8+Ds+wlg!o+BuMGRXTuH^}StoO|rU#l5sdc;#YD^=nt-4eSeKvg~M_KCOo zp>PVIfPA)dqbq-+jYQY)TiXpXG8p|-rP0S^%)9#i{7J@+^Dtwk`lD}bn zkZADz<>uFDbIiEGs+w*B{Pum;}Z1xCl;W?75^F(x0rsS zdJMBxXRnKZ2~jKT3E%EnG~ry|PNwsN9hQlgT6bFRTl@2~^|W-70XhgkA!qOCkj;BX zVQ63HPT^x!V~60$iq9kUeJ3S>RwWS#=%4lS5R*kXza|(ZnJ9C;I*i|JfDkwaa0!Ru zh{?IcKba0}6_NgUr&O~Z>9y_f;G+OQ!!u-69$&h_uDEkEAxU*gB+1B?L0c@`CV`Yg zA2Db?+WLTB?P^2NEGcG6sTA{p|NfEx@6Hha*K7ysHLot*cO(*Q+pQWfC!EyW7_+5% zW#BuA0Wf0Y{e z{RY2UO#VC1;ja`m{>JQgMP!h~&1N{z3jp$e5s~oeF^F9JlF5B3VEJ#}3RaB@TR~Se z8D`xO=b&HA>(ll!`y4SZu|nk5L?ddEj1g=zm%1iT`KEggCo$^0ryI!fz66p%|AayP zm$DA&WB#E*U1bnRQK29>3uwbn?6U?g)G-pqAoHt zQzo+*Q>`_ZR(GrLRl@acG>)!H=AQ>urmQ-R^xQcef8%C-`ab|dzk2=lT)A)}OieSS zb3jv5W2&Hr8=2j%H~L!JJ9~(Cvf*~Sa@4}M;t6$4RUsopW%)- zi4Lw&teyaJQ_LZz#>^6gW5q;{S8)>tUy`U(%bC82wP+AcU@y6AR&x2Z3A!-Ezwh+t zZY+{&!Fg58QS0l0DLU?y_15z3WBQG)h_sd0f@u$vUE7T;x|5Nk%1P}JbTL9aWga=a zE=@a3&C%X3=U%04UmRpKr%&=+(+Xs{hqEWSohU%2RrtB3)yxMjSni2*TmRdd@#-C% zV(i9zrQK07bLr@iFbrd1eJl*g-e~uh zZv9{fhsngj)0-NVhw3A{SoL1|dp_km@9Uqn$bYB)s4&2a^v3VOkz5IicA@K1AXUq# zx60hqwLFTQn-Eh%3=Ko{Ca|qVu9`4o-Lv_G=CP@l3h9j_CrB%9BXbFnxSOQGcnPWx zg2cHVHS3dI$5>JEnx42rPdp5It{6emZc^%-D$mW=b8Nt$Sm?;|+l(ClI4}b5+N)F6$OGi&r}vmNv|<}tbmCDghO`zEf;((=`iMIym$B=3v8=;c1)q@({-Job>n(j zk?YhbqG^Q2*x16?Tx+hy3E_bJHwTenmyl`)Eyq5}Y+;YTrZ*O~GiKp)_J?4l7h~jo zh2p?rDx4Bx!ly-vGc5Ew|YY>{rNnr z>9ybMsW-_H&Th+|an4DVhdd(g7I#R=&zpC^6tTuGmYEn8bT*>Tsx|jk9IfLx576Bj zE!fX!Nr;uAfl3WoFwB44Is8!Y7GN3lywBl9N>k&;xma*XhG54ftfHllR4#>KB8GaD zB8K}CBJ!(a@_xudPTb6vkm9~{;-UXys)xS0)hg$6eU<{{A(&{C) zJa5ZdY^ltdT@?99!j-oUrRfz~&QToEy&VoBc^kqPBMeFDQASFwtr*s+&84DN9zxLb z_s7Zyyf;mlzn-d7$0wanOWQhDsZv-r618o}xU9}E5vQ;gB(DS-1?CHDis^AD$I3@g zm@D!3eI`UfF8PoLbk=b!iRuah7`ebk1srR(?}c581Z2cV2j zMiJ%>*JcOU;_7R^MHk?~ClD8(^9A`7hp$?H1S*phE`$IB7#a!)<$*MeAIWy;u@%() zR2h0x1j=$UH?G;~?04Dt8nYUJ@qjO3Jb?145ooA;&IvT?y8vb<1R(Cm|3U8b(>+=> zl{j)9ey<>f-iEdaJjY_;(UwdFw{H{%qU;f|?&U%gniJ7bOr^8(IHo&EZvWi!M_< z#khWiH#!{L?vL^+SQ7^jgeLsR)lb{>`dds+#9Omz$-P0QZ<0+aCdR}MrNVa6Vto_& zw>`CQ_N|51TvrzRk|RMsa7U3dB=;p>_Er56SiC18$KhhmkP@La0>pw~12a+qW zX;RX)#u4KcJ7Uc)vRSdG7=4z()cTTuMK; zF7QkgY5QxzDBC;0MT86s8w1WIj1j*WjLE5d>2|%Wp`icW;-%1`p;UL-V|NZ|I?mO5 zoTM%s=kJq9UcTSZGTt5P8d(V6RObA84vshgT9en6Uuoep6mi^PCe>AsLZSHk-m)j6XNwxz;gr9O?*w#4c1B&&0b@CNwU5&AxSbnVomD#_A};YDtK zc>TTHE?c5PUBhSc_;KOa^P0zBHxZeTNDNv#KV3RA1z;$`{3z#DN)q2_ zYUM)N(JW3iVsnUkHbhMsfwRRRnrs&%(D+1;bb4CP03xBQYm%%gWT1~+XO2D^l=Fm! z*Egri%xepH9ls{Z}@oS@CeOv zp7e~qtv!8P*9@&y8s!#lRt~m_+G0Q&NJTKM$sBQb(!5yXhAiD!)gsQr&YOISaB=Df zTgw30+57`%gV+PvLnicv;a<|;l#$?oJS$3c8g#tqcGn3|h#GfB7luRU(=P;ghO zyeDfHM&VEEC$k!k!CmXWlgW1MOZ$ji+dW#B7gfm76q~OOG~V-~upr>T{Mfu?x8+=U zR)SXeu?9g)()K=Au%|1$zi^P^2jrViBD9wD@kD!>tGbtX?WQC zws(zRlWGX;rr$I;OkiuaYPE~k3sG(Y7^o&7e;JKad1#W;gteX32P}-uJt|J4Y2~YL{abNKFBBlbzJPg-HTk=8>341RzgQZ>3INp(Xl>Ms zw1$)}vuxiB=07eE|EGWdcb1=j6*VZ`NeM^vhln-`jt`GX9nkEiU9b%vXpeuG-kFS{ z=5UPRn!hO{kaS%9Bk6c`)Uqe}aiWH) z8q2~Aez5Vv27SWC8$L5o+vzIcW59kX0O+`u!y;poKCcYz*#*d{nwh?cs11+N5!<_PKfT<&>T*$J(c<>SV zb12h*cZ*r^lcYq(qKEU`v*YW82d|Xs)%3@=6MO6uZBQWV@9r+4~H zY%g~JQIGpj7*?L=@2n(L^6+$k%$4bZpV}-d5BM%NISyY6oK*~L1=u*WDw?%}kNX3U zZ0dv>i)+vz_lu+i7o>}>ms-6aD;G?#(X96$ZB7&m;af`sA%~>tWFQ z%hG(MYsza^K5KLD)`oS&th@A%e+EnNSky<7m#$X0RsidRq#mhBt2U0cFt?Nt0&tOk zMHpsPcJ^A(_y)(n%etIxC0pG8rkS)<3M> zztBzAel8}=CpvBlf#7Rg${4d*H)j$G3i}|AJI*{=L}eYM7TyXczA9->rp;#);ztd( ztSZB`)~x+Vx?Ht7>ao~jEj0(^C>J-Vn<7-wtt@OGJMmg(h?!o0X0(We7Q`YRfD*PK z%r-}d%F#rME+y@z`cA)bygO# z;xd8`GH1nkAG{2{c0I4f^t#zQU*C);NX;t^QoMy>Lt#ZBb_H@0KJm3k?KY*(30AsC zydH$7np1&}+}v7wKs@p}z7*+zK+IgJhetmh4`26M@yKV4LihArJbp=)t{tyn-}}>; zL#;qAn~CoLZS{+b!blC@;^Hd0{?A1p^ylq1EI4Zb2OVD`a={fL#6MBin%+ySqEW(q zN&T#7*sHmt4Su`!I2*o!39j(GqVcs4`=JAe{Mf7c7hy9S$rlY}8$p((_HPaF2>q#+ z1_#gIukTmxUtY&OK%MEQ+6(Tg+JE&oB@O?Gd9r=eL;~#pWEOk(OLdztnmxtm>2-wTnpU zPklIvc*g(!4H4y;i0$F?&&5^dK>_Tj8^r`wTGhVu`zwmc$F^7nVirSzZIAo2852N0 z0(4I#v6z@}PVx%TUvqA#QgzUWocTqsuo!=T=hl8%7EftvVvymXF?r|-Qhw&qLFzAS^^!?34n zIjynX}FJWA!@v(04X#cbj5T3>V6ZUN`07X4p>RR}avC z)LMHW@yTqq0%ExFR0JW}f^CzoW`2o&zkyHHY-k=;W<+9-s^A!2sUM)Z8Tp#|`XE1y zC>=>S`-2vjCX{xJ>MXzBy{v@xijMds=Vm0^b@{GsgU_#GBM4lMuv2uVJ@N-xHYBGa zD2q$W%cJc%?uv1FaGX>rQQcFF+yEs3d>!Y269Mut z9ZUnwWTnvpIH!QGrG^1xS|H`C^F>IC{k=OyB*&pny*uSJQS6VJI1#YlXPXdX^~UNN z%}6~sz0ntZ@lZ5DW+ny0^z1#6Rotr=W%f=FzrpEs^R>A=sOr(#{Sq@X>5rmAKwV;u zz-xDuDG}$Um)1@ZoyAdz=E=_APMoKFBux zObKVfNj|u7g>H~xDV9OTO3eZU%^3-r`K$pzj|VWc77gg}& ze|CX<8It}KBC2-qTNgE8!+*V2_?2L#zuF7uH)LKjP_+(flDp)Xra*m5fczEg3(3C= zF8=reQA%e6k8`9y2``f8l_^=I7{1s>zjeS3+T{bJU|1A7#g3Qx3%8$q)qiyf{Fh$O zKNr9XG0IJpt?*^c!u607RV?uh*@we)_Ar(eR8}I?h^hU5ys_Vme=E&)S7gR7L$+dgO;U6$MW@)8cB4q-XQ0fs6;ItM^A&s06~*?*_V$g$7w0U` z#d-WH5B0?}P2&RnKhei>`u8Qrml*MpYWO%moh7=ZNzc@^VSAQyt zoh^-0xKwYG_a_#V|)`PtjOE)JcM@k@`XULV7jUhrs# zx%q?Qj~YZ1KD)F-I@Y~JM{(jiDdD) zEu$5?c1v&3obDKZ=PK^<|G@US(vKzKCnW^hQIN>#veS5R_(A{W(ADmie>EWlb7Q4} zG3hULA`w+&dHo~}E`$T7bQBeCbsKyR^*b4Nma#2}J`!6^LG+GOo(@=F2#@X$YZ6H3 zRXlB%GRqfa+awH|{EQJ0!BppKi#^pNPh&LIUNUG232Tb#n7N~UT-1%^8!4HuHlZoG zmw`b?)#lz^H0LI&DYnr`Git}K?mc;8;JFG~Dy;C^bm>EGdfiKV9rt!+LD13g4Kja@ z965l8_N+SV`C#`n3lW+6c1L}%JXI2q6n#j_92RVyX?Pv$91asQ zHPw^KA~u!!M<(c2g`;KMsqpFu_geiOXDd;?T^c}Pr*{v$tgKYk_t>^ye%@>0UI{A9 zw~NWvi0IzTGp~$wS=p?VP7?WYOmljRhtUL_&@^wfI~lct7q9oRJNu)`%KF5nKpS`T&3XuU+Ui~?Mhih)ZuOUW4@bNLue^T-SLc=l%nZS+P$DbtB7IoC9+g;3wA&?)pn!p|QsQhqJo1*tuYG_4&2 zzfv2QFt@UVzm1u33zytDH6ifPEqdQ+pMwmi?}9ZrazqX zGelS$INXoH+3WC#_Zu#!KGCBef1_C)^8$2CB5#hiinBPlN>G$9q;d4nkBhKWtBx%bf+E-lV9|2*S6dG<;}IX zn-=4Jg&q<1ugnlVQx7Oyk#aU>A<4%zW9$zL*&wKY`Q-CF!y}uyx6G53G~SxEWT)+C z#8%dykCV@YN(ybt*o^G22ac(C+#MIY=DtYAPBlL5H?q>f*7fzsCbGyi6|65trxdPy zhfZGVdT^sJ;z!|Yq{t(t88L~`FDoB-yEJn9tT91?wR-cKj+MI9wijbezZ89>^yl_s zpK|_!jq<9YST~Hm^YL5Wwb+1KVp5QO0^4yJj_r=dggxNJyo>V@1AQ&XH=xp2IkiVH zF;e{O)(i3|BYJ7_{&V>BaTPk8vRC5IJ}C#FUU#?)4>VLSS~i%E!nuAxjyO-?=S zQL_@cWf))h4ofk}Pu$;Z{c5ccmI?(~$?|Fc95Q{swo0UF+P; z-|h(Q(%%0|n8BMLig7Sj|3AIy-%Dtcp(wc(I-^Xj3S7FcmrA-Efcp>zk8l-&px(1d z7_!d%7drX$UojNKWyOaG6FAw{b;l>3vz)vsZ^4(y;CN?QF=y4!zD(_UjeR}K|IS^Q?K?lFnvx7iXr9|=RQvIQ>hBIa>otQiksMj z1c6pcY_r{^2lgx3rQKR@JA+z1u3dYRkr`)oRwcIT0zuY1$oY~Pf5H%!1BLIFRS7u` z8wRzSZb0tx)h&3jlz&djYZMLO=#c4llB4K#?H4*9lHgh1LJhGj^avfWxJIZA_vpFs zBl`}cE`rfT%~qRA|MWj&BLJ7wq@LkQs?efn5UoUtx^Q`fTPj^MTnp)I$G)Wi%kR}v zpdS36uSde4F@R^dwoBWe_G?NsqV58P>XLIfgth3yCcXsCOKULXEfg8J`~KG&5&UDh z2e{igJ06l?tVHtq$6drENgRUgX7>0C^)$v57%b-r4X~}Q2+2%(NvX2sr1U1V9;`7{yprj&*_dO~xxz^8w2F2Je-k5{4ugmfUV9QB=DlhSN z|2Clh1^Vajs5SqOY@-}&*L%9#CpBpLGD4LAv+j0r*IPl_ddIg4oAP}Gu8lVwh^$=h zZx2`HSCkYPk;vLj$R;|u`6j86a@`<}Yr4LK9iuS*hV2Vgqiv9u#K4wyHM*J@b}N14 zSmEwiqgC!*2#(;zt{^5CLoFxIkgBHrba}anGZ&HEF0X>|J=wJImcC6*_9tI-mpwoW zGOxMwmTs0^p{9sOhtrP{8SrH!sywjMTWjkhd_=GW{n6?G5OOcVR2q&SpHaj#2A88*KFCh&3q zTX%>a4k%(6XnWT>9{lO0wuWzT=!e@RU-4KTj|-493+D?x`1nRAuvHl7B$jvgYZ<;8 zZ*Ea^1{43MAuBwYWE<0uRr|NYYUJR?E&B%#07k;6l^G2jZrXB|yxZosFX;>f$j-L| z9&J!^cIpR)oz)kKt;mfWgC%pT*o(TEI@N4YUfLkP)U&rp3`Aft9!9`x!5z2at;*7| zP19HzJd$m*eVIChalggKWutT>1X8kg;$8X#SLT>opxDN6U9>%@`AbUBJAHD@)F&XM zF9RUsndh80eZYvzN(E|SH$o^!$hf>X}TEAC@i zGr7%iUJg826?4R# zB#XBhv*)%U?6 z!V4gT9GG_xI1ASOgymt7Qa^vKbiBSMQqG4x!|cVM{Ky@ zO1DNJMF6vq`EKI-Z(O&)wr>WsgFn{uD7JI|;3Qm1F_gJtDS}PaP6z1mS@KZ3u-;z8 z&r@+cYMKyhB;eVv=`@K?=8ur?(UMxgY2zzt&NQH{S6`+v z@|pM8zrYL3**<+)z7zI^#$+XBMU246#>k>qLsHiBSn@6IA+azL;L2X5)i@{l(qej} zd{k7|jTyzhG~B}X;OSVt{6(|U4{j_kIZOv)6+};AA8>c7S)oi+klD^4Imj*q97nhPAwo=M39UG z$vNlLhysEH$$|<>keq39keo$w&N=7Yw68cbcdl?|Jm-dY@63CC=i^8>yL;EJT2-}b zt$+PL#M9aOyh_=+`E%I0yTc1dog{ks_i5||RTkP=L`roMKhOnkD zzxJ+LEcM|&H~D__ZrFUzVvBxGJ+)!AJLMCD0!(T2Dv!a>q2?Ur1U+w~V_pO2)| z?;XgA%*Itl(y!PyekHW0ECQIkd={cRo`f1g=~Z|+@^YZ0+pd6cu#JeWmh^=g}C@^J#Nv}Gzo7Gc`XZb=#?JjN=R{}MI*Gs9P)IJ zUxtk3E9<>Q_Ss-qTW*2p@ZHZ-9Bgr zTUzJbc3Bn#vqOd$wc7 zPtmkd7zOLUqeICA#mNQ#XiJ$9aP4$Ys3c z^@=KY8UJUs!G01uiI`gRx6KJ2lq}xpl!VjK9f43(2~wsK^WcJKOs)NN4H2vpxs|uk z-jfpJOYI)jE~vR2j|t4Fi&&Sq#d@-<+>~Nukcj$RcqECU70Fd&UPUw_x1e5bDyKK}FWs6NM2QB>9bbQ1rx@SI&cM~J0=`VIuu`tcZ zap)DD^Jk55YM1PI(NK7Gfm8MMJb?t3VvB8{!>bWYi0H0A_7}2#lILXDwrDlZ_lYf! zt_CNGZm4=L3sGkFo->$joSJPDvzU;++Kc&CJGc7jeX|5?hMdhncM+bTly^dsa)DXqZ^xz!}w_WqaDbaDvQz5XJv{ z#3Bax&G(;&sllh)uaj_J;IK~O<`>g2s%K}mue&V^kBgP*L!x*BmR%iqcFg3_Lqlbw zjm5iEHWpjA94;2~iuMlIP{x!m@@A1}Fl9&U?&2Ep@q7qR_r^@LoV3%QvxV83k=>O^ z&PXXENrdT*s;E>mwzZmE6F+!&5l09zJ>llf5_8wm_;dKU6bWxsW>&(H?wZZ{W}Q}% zfC;%|QT4aSQy*Gwq9amA7$Opd+J+8+#$kBc{?L=+b&gLN3lY+K5DYVBEMJ?5V73mNt@=B#jjTg@}zPfeC;K9Kea~ALw@k(bNrLE zn_nX$0BBF&Xt zxiLu{Kbn)4T96xa(ZhuV1jj~|U&O#ADY^DdWP%Zc=%KGxS^6vBhCjIKwx0Z`XJpKf z=ri=iHaFwPLKg`vOVMXRoUE%?Vv^PDC1JUb_*1NVR+ad1XOI{l})uu&6nG)*WDAS>WnY`Bz9$7kT~ zGKC)xeYws1Hfu7Z%C&UI%UnU%4(C=w1O$Di9{r(9cT$b2U=K83`t6a-yEy|F(=C>O zqkDz+(APw%GbwI>)qSycOSWLFH^yyMX+5SA>YFdVBXLKrlPGV7F1D2xtJ!AL-3uk_oD zts-7&|L#oxcaHh3za8@}DXM;pU3Oh%L$4OV@sJQ$a2Mlz#fuJH(+`*<-# zMt$TUqvSM11efyEqH($=>~vC@KY1XGv(tqh3)qpPOyI)|mIn&WE) z@f!i!0rqNSsqqlqn$Ry9gSXkDB&AJtPh$$jcKP>?u}ZRzkKlk;nEiz7&~@!lyz%E8 zJ3ur3u}$RyC=eC=y{&!fyl}Z7CzKd^25H ziN=;|z70>aAG2cn4k@=E+d{`033|kvvYlBUhq1U^5+duGvoP&{no7y=j1j=+(`Fw0 zonb!>q6JL+GlE}%)A@(r79Wnziwt2s{qf(8L!dnApC5)Z26_6c|9s1+AQD_?SjT3#;+UP{G-~5>1BmqLR(oiuiECaK)1tM`=JB>El zLXow3ZIgFFS6IBO#a>9EU)8u-)4rHP-U4>oz4qh*INY;&kk`a8gieP<_Ocd=1jF(Z z`~5=7uI(i^)}hA2C!SKgIm4SQi>)$Lv8r$pd?V$yf*t)+303J#m;o7MpS-=A_Pl6= zp7ml?`|*pI?f9WqDg0UfS>x~mle8vNGa=D3`bmjR^%6P~pW=2%Z+Kv!+_dH* z>+5pia||ohLb&VomDT)*F>`SJ4?V$YipDZ6n=EDsCOZ|ZzV?(Mqvb@!x*Y}|Bf+)X zte2r96u$iD%Q>rh6=ff0@FR7j-d}{1yhL%PVK3!8p(2NJtopT zJ-Z;DQ2$O9J8v*pg?)LtW7h-vL88zNBnmI|X(FuQ^GQwQwMPG|N&cSs=6InWlt;6*PF6ywj~UXkT<0Hdm4M9rD5?3(0-9DZm(~gS2)-S3y|%RO8Qd zf=P!Ml?!@)tPSOvwm%tP-+4)3seYk6M42$(-3_ssnj@F6;y}rzPsZDuh-cl9T|6^< zf+hSZg6j{m;u5Q`|58c#^SG(6>z&&O!@f-BdR9%SAA&{4h^myyy=V4*VXkU=sjT?$ z#`H!LDaE6mK?U9w+DF}p$`x#Z-nEvm?fF8vW?%35zwjS-mro*~*5$F54Ihi0w&oC_VITwVj-Nwie3ylBq(;RUDrLc-i$isocBwrG$wJrE@~8CH=K*+VKwZKX6Q~ z2-wG(&<++H$Gg(Iu2ed>i?sy~EQsZO$Y?uOCR0_aWZr>o^6km>>`=isE+iNB-A++9 zUNA8-%nc?HD@IKTinll)DBe!0_;QrJ2ZPUw+V7F8xa~`3lDk*ztxKyI-#eg|ign$g zE|(g(V-~Z*r7}p(%G{9?EL-t9QNm%ju<;P+PQ;)pQGj4a*m|Ufyf!+!EIPryVuFD_GDpbE^^7M`VGTt#`J`o z_o)0m?2dfQt@>i%-Rk?$2c_NVYZ}dX9BmAQa#UAZbswkes#mgnN!ywqRBx^=BsP1W zc9n4I>izU9;#IQ2UmA=h@d-4Sgc21)`yvlPfue_#!kVwEpwq|wxJ`AbW|l#t+}eWX z4kuCdKzp*j&Tm1eJ58xj*}6BDKHfC@hIZ|$ zr0r2ci1U~byi zUzaj|r3!MTk8G>6#EH#}$xzQ*nxkzp;tAWUZ?~1+>{zq3xa_3pWaoKLnBU5OP9t9C z6|95u(&_6Ls}IFNgF4j1l{$_#N_N4Pak-Hzie8|3J@ss&36EuVE{|${F67k4mSCZ- zJP8e{ozB@sjkOq8VYIljbJ6ZT`$Y>T^XcG>%@DRl{4dgDOc26pBzu2{Sgw!O?hbFv zGn;WUCGniVE~zm`pzvg~u*Q>0XGP_|PydxeEBoNN>DH#-K;FKKInxR=Gc8tALgLGB z^secX&^r}?@5wgU-<^F(RzlX3q_*3{=K1T1=(^ASg8}kUj8o+*)EtQBzAMWk0mEj5 zt2Ti>+FKLDO5YNm7&GSB8s=9*b@ zykW=B+h-<1-c0slsC(5$fNb5CoV1snq@M}1&d$pl`|b6G;xj|C-`RqzUK6IjV?WUlKj3b;I9-Ceh`LJ9GpP;aR@0!CWWlpjXh+Y{IgXC|0Rg| ze-oq~>!-4%CK{h9Fqo3+0b2d<=V(uIwLdSpfG>z?&sB~b{2B0h)Q`LXpMFI2f!|L{ zex!Ct!9FjR6caP9bSrU6u~}D9p-3KFxj8W{ha+365c>mQ8=j@nspKbMESI043p3S( zeS-t9a;!xY$uG8Bw|9)GnstmgIa2pzi73Qc{T1#rL@>6^Xk59s37pX&+2b4#*AVIj z9wLkpw!ia(G#IpixpH2$2evko^_y;;_7T!6LkWolOyC=fKWL5p!HuuG)%;cF2H9Wn z9rDQpIKq_?l?dmcmDg*B*WsE+2PVLWP5VI+t*JeAG!}nh)fJj@;X3DiQQd;!FJ(lO zdqrQqEZQ{IJJn~Mdb;kXpnm2QKfC0kHMvA;y`;GjAYAqb&#PcC9P?M9v7=Luc>4K) ztDLv`SLw3TcR&67sy|4foqj-CxgKUaY{{=R$ScQEx=e)*SE3jE@26aQMfqa@SY>)tIOaNVf zz36T!!wicu`B3~7+UML|dFpAw(c(bU+UYOCY^Pe2d}c7f`R8v6ZhvrL+~0s>r|$Jn zWJv&vI%HH3U}HzqSOtMx(%0#b$C2RoNHnoK*VQ2gYF_Vgz%D->tfJc5hspU7cITD0 z8KXWQj^)XvuINVGZ|rh(kyj@QyZe$4V~@P^LKwd0uFD?RB>ZD`anD@fky22L*F_f> ztm&J}n=q&266WIBLVBmCh0X-6pK_HzWolGl34D=GVf|||hl#Fu!3);t&JU3hBXcka}?M~XI(XQCdL?Bh1X0Q}~B59ohTb7PzOoOB zEJ1YPr+8)fd|c-$fsaK45(OOce=ffUgdrm>%Xr

sV(VjSTeAz(rte*i!O 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

^q5jD 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

  • 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 literal 0 HcmV?d00001 diff --git a/ws2009/gdi I/exercise/src/Plumber/docu/Plumber.ump b/ws2009/gdi I/exercise/src/Plumber/docu/Plumber.ump new file mode 100644 index 00000000..b249f7cd --- /dev/null +++ b/ws2009/gdi I/exercise/src/Plumber/docu/Plumber.ump @@ -0,0 +1 @@ +