diff --git a/Dokumente/JavaDoc/client/docs/javadoc/allclasses-index.html b/Dokumente/JavaDoc/client/docs/javadoc/allclasses-index.html new file mode 100644 index 0000000..43d844c --- /dev/null +++ b/Dokumente/JavaDoc/client/docs/javadoc/allclasses-index.html @@ -0,0 +1,106 @@ + + + + +Alle Klassen und Schnittstellen (client API) + + + + + + + + + + + + + +
+ +
+
+
+

Alle Klassen und Schnittstellen

+
+
+
Klassen
+
+
Klasse
+
Beschreibung
+ +
+
Represents the state responsible for managing the battle interface within the Battleship game.
+
+ +
+
The main class for the Battleship client application.
+
+ +
+
Provides access to the Battleship application configuration.
+
+ +
+
Abstract class representing a state in the Battleship game.
+
+ +
+
Server implementing the visitor pattern as MessageReceiver for ClientMessages
+
+ +
+
EditorState manages the editor mode in the Battleship game, + allowing players to place and rotate ships.
+
+ +
 
+ +
+
An application state that plays sounds.
+
+ +
+
Factory class responsible for creating particle effects used in the game.
+
+ +
+
Manages the rendering and visual aspects of the sea and sky in the Battleship game.
+
+ +
+
The VolumeSlider class represents the Volume Slider in the Menu.
+
+
+
+
+
+
+ + diff --git a/Dokumente/JavaDoc/client/docs/javadoc/allpackages-index.html b/Dokumente/JavaDoc/client/docs/javadoc/allpackages-index.html new file mode 100644 index 0000000..ba54777 --- /dev/null +++ b/Dokumente/JavaDoc/client/docs/javadoc/allpackages-index.html @@ -0,0 +1,67 @@ + + + + +Alle Packages (client API) + + + + + + + + + + + + + +
+ +
+
+
+

Alle Packages

+
+
Packageübersicht
+
+
Package
+
Beschreibung
+ +
 
+ +
 
+ +
 
+
+
+
+
+ + diff --git a/Dokumente/JavaDoc/client/docs/javadoc/constant-values.html b/Dokumente/JavaDoc/client/docs/javadoc/constant-values.html new file mode 100644 index 0000000..7f1f26b --- /dev/null +++ b/Dokumente/JavaDoc/client/docs/javadoc/constant-values.html @@ -0,0 +1,78 @@ + + + + +Konstantenfeldwerte (client API) + + + + + + + + + + + + + +
+ +
+
+
+

Konstantenfeldwerte

+
+
+

Inhalt

+ +
+
+

pp.battleship.*

+
    +
  • +
    pp.battleship.client.BattleshipApp
    +
    +
    Modifizierer und Typ
    +
    Konstantenfeld
    +
    Wert
    +
    public static final String
    + +
    "CLICK"
    +
    +
  • +
+
+
+
+
+ + diff --git a/Dokumente/JavaDoc/client/docs/javadoc/copy.svg b/Dokumente/JavaDoc/client/docs/javadoc/copy.svg new file mode 100644 index 0000000..b4c4945 --- /dev/null +++ b/Dokumente/JavaDoc/client/docs/javadoc/copy.svg @@ -0,0 +1,33 @@ + + + + + + + + diff --git a/Dokumente/JavaDoc/client/docs/javadoc/element-list b/Dokumente/JavaDoc/client/docs/javadoc/element-list new file mode 100644 index 0000000..d0eedd7 --- /dev/null +++ b/Dokumente/JavaDoc/client/docs/javadoc/element-list @@ -0,0 +1,3 @@ +pp.battleship.client +pp.battleship.client.gui +pp.battleship.server diff --git a/Dokumente/JavaDoc/client/docs/javadoc/help-doc.html b/Dokumente/JavaDoc/client/docs/javadoc/help-doc.html new file mode 100644 index 0000000..d82c642 --- /dev/null +++ b/Dokumente/JavaDoc/client/docs/javadoc/help-doc.html @@ -0,0 +1,187 @@ + + + + +API-Hilfe (client API) + + + + + + + + + + + + + +
+ +
+
+

Hilfe zu JavaDoc

+ +
+
+

Navigation

+Ausgehend von der Seite Überblick können Sie die Dokumentation mithilfe der Links durchsuchen, die sich auf jeder Seite und in der Navigationsleiste oben auf jeder Seite befinden. Mit Index und dem Suchfeld können Sie zu spezifischen Deklarationen und Übersichtsseiten navigieren, wie Alle Packages, Alle Klassen und Schnittstellen + +
+
+
+

Seitenarten

+Die folgenden Abschnitte beschreiben die verschiedenen Seitenarten in dieser Collection. +
+

Überblick

+

Die Seite Überblick ist die Titelseite dieses API-Dokuments und enthält eine Liste aller Packages mit einer Übersicht für jedes Packages. Diese Seite kann auch eine Gesamtbeschreibung des Packagesets enthalten.

+
+
+

Package

+

Für jedes Package ist eine Seite vorhanden, die eine Liste der Klassen und Schnittstellen mit jeweils einer Übersicht dafür enthält. Diese Seiten können die folgenden Kategorien enthalten:

+
    +
  • Schnittstellen
  • +
  • Klassen
  • +
  • Enum-Klassen
  • +
  • Ausnahmeklassen
  • +
  • Annotationsschnittstellen
  • +
+
+
+

Klasse oder Schnittstelle

+

Für jede Klasse, Schnittstelle, verschachtelte Klasse und verschachtelte Schnittstelle ist eine separate Seite vorhanden. Jede dieser Seiten enthält drei Abschnitte, die aus einer Deklaration und Beschreibung, Mitgliederübersichtstabellen und detaillierten Mitgliederbeschreibungen bestehen. Die Einträge in diesen Abschnitten werden weggelassen, wenn sie leer oder nicht anwendbar sind.

+
    +
  • Klassenvererbungsdiagramm
  • +
  • Direkte Unterklassen
  • +
  • Alle bekannten Unterschnittstellen
  • +
  • Alle bekannten Implementierungsklassen
  • +
  • Klassen- oder Schnittstellendeklaration
  • +
  • Klassen- oder Schnittstellenbeschreibung
  • +
+
+
    +
  • Verschachtelte Klassen - Übersicht
  • +
  • Enum-Konstanten - Übersicht
  • +
  • Feldübersicht
  • +
  • Eigenschaftsübersicht
  • +
  • Konstruktorübersicht
  • +
  • Methodenübersicht
  • +
  • Erforderliche Elemente - Übersicht
  • +
  • Optionale Elemente - Übersicht
  • +
+
+
    +
  • Enum-Konstanten - Details
  • +
  • Felddetails
  • +
  • Eigenschaftsdetails
  • +
  • Konstruktordetails
  • +
  • Methodendetails
  • +
  • Elementdetails
  • +
+

Hinweis: Annotationsschnittstellen haben erforderliche und optionale Elemente, aber nicht Methoden. Nur Enum-Klassen haben Enum-Konstanten. Die Komponenten einer Datensatzklasse werden als Teil der Deklaration der Datensatzklasse angezeigt. Eigenschaften sind ein Feature von JavaFX.

+

Die Übersichtseinträge sind alphabetisch geordnet, während die detaillierten Beschreibungen in der Reihenfolge aufgeführt werden, in der sie im Quellcode auftreten. So werden die vom Programmierer festgelegten logischen Gruppierungen beibehalten.

+
+
+

Weitere Dateien

+

Packages und Module können Seiten mit weiteren Informationen zu den Deklarationen in der Nähe enthalten.

+
+
+

Baum (Klassenhierarchie)

+

Es gibt eine Seite Klassenhierarchie für alle Packages, und für jedes Package gibt es eine Hierarchie. Jede Hierarchieseite enthält eine Klassen- und eine Schnittstellenliste. Die Klassen sind nach Vererbungsstruktur organisiert, beginnend mit java.lang.Object. Die Schnittstellen erben nicht von java.lang.Object.

+
    +
  • Wenn Sie auf der Übersichtsseite auf "Baum" klicken, wird die Hierarchie für alle Packages angezeigt.
  • +
  • Wenn Sie eine bestimmte Package-, Klassen- oder Schnittstellenseite anzeigen und auf "Baum" klicken, wird die Hierarchie nur für dieses Package angezeigt.
  • +
+
+
+

Konstantenfeldwerte

+

Auf der Seite Konstantenfeldwerte sind die statischen endgültigen Felder und deren Werte aufgeführt.

+
+
+

Alle Packages

+

Die Seite Alle Packages enthält einen alphabetischen Index aller Packages, die in der Dokumentation enthalten sind.

+
+
+

Alle Klassen und Schnittstellen

+

Die Seite Alle Klassen und Schnittstellen enthält einen alphabetischen Index aller Klassen und Schnittstellen in der Dokumentation, einschließlich Annotationsschnittstellen, Enum-Klassen und Datensatzklassen.

+
+
+

Index

+

Die Index enthält einen alphabetischen Index aller Klassen, Schnittstellen, Konstruktoren, Methoden und Felder in der Dokumentation sowie Übersichtsseiten wie Alle Packages, Alle Klassen und Schnittstellen.

+
+
+
+Diese Hilfedatei gilt für die vom Standard-Doclet generierte API-Dokumentation.
+
+
+ + diff --git a/Dokumente/JavaDoc/client/docs/javadoc/index-all.html b/Dokumente/JavaDoc/client/docs/javadoc/index-all.html new file mode 100644 index 0000000..4e3925a --- /dev/null +++ b/Dokumente/JavaDoc/client/docs/javadoc/index-all.html @@ -0,0 +1,400 @@ + + + + +Index (client API) + + + + + + + + + + + + + +
+ +
+
+
+

Index

+
+B C D E F G I M P R S T U V 
Alle Klassen und Schnittstellen|Alle Packages|Konstantenfeldwerte +

B

+
+
BattleAppState - Klasse in pp.battleship.client.gui
+
+
Represents the state responsible for managing the battle interface within the Battleship game.
+
+
BattleAppState() - Konstruktor für Klasse pp.battleship.client.gui.BattleAppState
+
 
+
BattleshipApp - Klasse in pp.battleship.client
+
+
The main class for the Battleship client application.
+
+
BattleshipAppConfig - Klasse in pp.battleship.client
+
+
Provides access to the Battleship application configuration.
+
+
BattleshipAppConfig() - Konstruktor für Klasse pp.battleship.client.BattleshipAppConfig
+
+
Creates a default BattleshipAppConfig with predefined values.
+
+
BattleshipAppState - Klasse in pp.battleship.client
+
+
Abstract class representing a state in the Battleship game.
+
+
BattleshipAppState() - Konstruktor für Klasse pp.battleship.client.BattleshipAppState
+
+
Creates a new BattleshipAppState that is initially disabled.
+
+
BattleshipServer - Klasse in pp.battleship.server
+
+
Server implementing the visitor pattern as MessageReceiver for ClientMessages
+
+
+

C

+
+
CLICK - Statische Variable in Klasse pp.battleship.client.BattleshipApp
+
+
Input mapping name for mouse clicks.
+
+
closeApp() - Methode in Klasse pp.battleship.client.BattleshipApp
+
+
Closes the application, displaying a confirmation dialog if the client is connected to a server.
+
+
connectionAdded(Server, HostedConnection) - Methode in Klasse pp.battleship.server.BattleshipServer
+
 
+
connectionRemoved(Server, HostedConnection) - Methode in Klasse pp.battleship.server.BattleshipServer
+
 
+
convertToType(String, Class<?>) - Methode in Klasse pp.battleship.client.BattleshipAppConfig
+
+
Converts a string value found in the properties file into an object of the specified type.
+
+
createWaterSplash() - Methode in Klasse pp.battleship.client.gui.ParticleEffectFactory
+
+
Creates a one-time water splash particle emitter.
+
+
+

D

+
+
disableState() - Methode in Klasse pp.battleship.client.BattleshipAppState
+
+
This method is called when the state is disabled.
+
+
disableState() - Methode in Klasse pp.battleship.client.gui.BattleAppState
+
+
Disables the battle state by removing GUI components and unregistering input listeners.
+
+
disableState() - Methode in Klasse pp.battleship.client.gui.EditorAppState
+
+
Disables the editor state by detaching nodes and removing listeners.
+
+
disableState() - Methode in Klasse pp.battleship.client.gui.SeaAppState
+
+
Disables the sea and sky state, removing visual elements from the scene and unregistering listeners.
+
+
+

E

+
+
EditorAppState - Klasse in pp.battleship.client.gui
+
+
EditorState manages the editor mode in the Battleship game, + allowing players to place and rotate ships.
+
+
EditorAppState() - Konstruktor für Klasse pp.battleship.client.gui.EditorAppState
+
 
+
enabledInPreferences() - Statische Methode in Klasse pp.battleship.client.GameSound
+
+
Checks if sound is enabled in the preferences.
+
+
enabledInPreferences() - Statische Methode in Klasse pp.battleship.client.gui.GameMusic
+
+
Checks if sound is enabled in the preferences.
+
+
enableState() - Methode in Klasse pp.battleship.client.BattleshipAppState
+
+
This method is called when the state is enabled.
+
+
enableState() - Methode in Klasse pp.battleship.client.gui.BattleAppState
+
+
Enables the battle state by initializing, laying out, and adding GUI components.
+
+
enableState() - Methode in Klasse pp.battleship.client.gui.EditorAppState
+
+
Enables the editor state by attaching necessary nodes and listeners.
+
+
enableState() - Methode in Klasse pp.battleship.client.gui.SeaAppState
+
+
Enables the sea and sky state, setting up the scene and registering any necessary listeners.
+
+
explosion() - Methode in Klasse pp.battleship.client.GameSound
+
+
Plays the explosion sound effect.
+
+
+

F

+
+
fullScreen() - Methode in Klasse pp.battleship.client.BattleshipAppConfig
+
+
Returns whether the game should start in full-screen mode.
+
+
+

G

+
+
GameMusic - Klasse in pp.battleship.client.gui
+
 
+
GameMusic() - Konstruktor für Klasse pp.battleship.client.gui.GameMusic
+
 
+
GameSound - Klasse in pp.battleship.client
+
+
An application state that plays sounds.
+
+
GameSound() - Konstruktor für Klasse pp.battleship.client.GameSound
+
 
+
getApp() - Methode in Klasse pp.battleship.client.BattleshipAppState
+
+
Returns the BattleshipApp instance associated with this BattleshipAppState.
+
+
getConfig() - Methode in Klasse pp.battleship.client.BattleshipApp
+
+
Returns the current configuration settings for the Battleship client.
+
+
getDraw() - Methode in Klasse pp.battleship.client.BattleshipApp
+
+
Returns the Draw instance used for rendering graphical elements in the game.
+
+
getExecutor() - Methode in Klasse pp.battleship.client.BattleshipApp
+
+
Returns the executor service used for handling multithreaded tasks.
+
+
getGameLogic() - Methode in Klasse pp.battleship.client.BattleshipApp
+
+
Returns the game logic handler for the client.
+
+
getGameLogic() - Methode in Klasse pp.battleship.client.BattleshipAppState
+
+
Returns the client game logic handler.
+
+
getResolutionHeight() - Methode in Klasse pp.battleship.client.BattleshipAppConfig
+
+
Returns the height of the game view resolution in pixels.
+
+
getResolutionWidth() - Methode in Klasse pp.battleship.client.BattleshipAppConfig
+
+
Returns the width of the game view resolution in pixels.
+
+
getShowSettings() - Methode in Klasse pp.battleship.client.BattleshipAppConfig
+
+
Returns whether the settings window should be shown for configuring the game.
+
+
getShowStatistics() - Methode in Klasse pp.battleship.client.BattleshipAppConfig
+
+
Returns whether the JME statistics window should be shown in the lower left corner of the screen.
+
+
getTopColor() - Methode in Klasse pp.battleship.client.BattleshipAppConfig
+
+
Returns the color of the top text during gameplay as a ColorRGBA object.
+
+
+

I

+
+
initialize(AppStateManager, Application) - Methode in Klasse pp.battleship.client.BattleshipAppState
+
+
Initializes the state manager and application.
+
+
initialize(AppStateManager, Application) - Methode in Klasse pp.battleship.client.GameSound
+
+
Initializes the sound effects for the game.
+
+
initialize(AppStateManager, Application) - Methode in Klasse pp.battleship.client.gui.GameMusic
+
+
Initializes the sound effects for the game.
+
+
initialize(AppStateManager, Application) - Methode in Klasse pp.battleship.client.gui.SeaAppState
+
+
Initializes the state by setting up the sky, lights, and other visual components.
+
+
+

M

+
+
main(String[]) - Statische Methode in Klasse pp.battleship.client.BattleshipApp
+
+
Starts the Battleship application.
+
+
main(String[]) - Statische Methode in Klasse pp.battleship.server.BattleshipServer
+
+
Starts the Battleships server.
+
+
messageReceived(HostedConnection, Message) - Methode in Klasse pp.battleship.server.BattleshipServer
+
 
+
+

P

+
+
ParticleEffectFactory - Klasse in pp.battleship.client.gui
+
+
Factory class responsible for creating particle effects used in the game.
+
+
pp.battleship.client - Package pp.battleship.client
+
 
+
pp.battleship.client.gui - Package pp.battleship.client.gui
+
 
+
pp.battleship.server - Package pp.battleship.server
+
 
+
+

R

+
+
receivedEvent(ClientStateEvent) - Methode in Klasse pp.battleship.client.BattleshipApp
+
+
Handles client state events to update the game states accordingly.
+
+
receivedEvent(InfoTextEvent) - Methode in Klasse pp.battleship.client.BattleshipApp
+
+
Updates the informational text in the GUI based on the key received in an InfoTextEvent.
+
+
receivedEvent(SoundEvent) - Methode in Klasse pp.battleship.client.GameSound
+
 
+
requestClose(boolean) - Methode in Klasse pp.battleship.client.BattleshipApp
+
+
Handles a request to close the application.
+
+
run() - Methode in Klasse pp.battleship.server.BattleshipServer
+
 
+
+

S

+
+
SeaAppState - Klasse in pp.battleship.client.gui
+
+
Manages the rendering and visual aspects of the sea and sky in the Battleship game.
+
+
SeaAppState() - Konstruktor für Klasse pp.battleship.client.gui.SeaAppState
+
 
+
send(int, ServerMessage) - Methode in Klasse pp.battleship.server.BattleshipServer
+
+
Send the specified message to the specified connection.
+
+
setEnabled(boolean) - Methode in Klasse pp.battleship.client.BattleshipAppState
+
+
Sets the enabled state of the BattleshipAppState.
+
+
setEnabled(boolean) - Methode in Klasse pp.battleship.client.GameSound
+
+
Sets the enabled state of this AppState.
+
+
setEnabled(boolean) - Methode in Klasse pp.battleship.client.gui.GameMusic
+
+
Sets the enabled state of this AppState.
+
+
setVolume(float) - Methode in Klasse pp.battleship.client.gui.GameMusic
+
+
Sets the volume of music
+
+
shipDestroyed() - Methode in Klasse pp.battleship.client.GameSound
+
+
Plays sound effect when a ship has been destroyed.
+
+
showsDialog() - Methode in Klasse pp.battleship.client.BattleshipAppState
+
+
Checks if any dialog is currently displayed.
+
+
simpleInitApp() - Methode in Klasse pp.battleship.client.BattleshipApp
+
+
Initializes the application.
+
+
simpleUpdate(float) - Methode in Klasse pp.battleship.client.BattleshipApp
+
+
Updates the application state every frame.
+
+
splash() - Methode in Klasse pp.battleship.client.GameSound
+
+
Plays the splash sound effect.
+
+
stop(boolean) - Methode in Klasse pp.battleship.client.BattleshipApp
+
+
Stops the application, shutting down the executor service and halting execution.
+
+
+

T

+
+
toggleSound() - Methode in Klasse pp.battleship.client.GameSound
+
+
Toggles the game sound on or off.
+
+
toggleSound() - Methode in Klasse pp.battleship.client.gui.GameMusic
+
+
Toggles the game sound on or off.
+
+
+

U

+
+
update() - Methode in Klasse pp.battleship.client.gui.VolumeSlider
+
+
when triggered it updates the volume to the value set with the slider
+
+
update(float) - Methode in Klasse pp.battleship.client.gui.EditorAppState
+
+
Updates the editor state, handling cursor movement and enabling buttons.
+
+
update(float) - Methode in Klasse pp.battleship.client.gui.SeaAppState
+
+
Updates the state each frame, moving the camera to simulate it circling around the map.
+
+
useGammaCorrection() - Methode in Klasse pp.battleship.client.BattleshipAppConfig
+
+
Returns whether gamma correction is enabled.
+
+
useRetinaFrameBuffer() - Methode in Klasse pp.battleship.client.BattleshipAppConfig
+
+
Returns whether full resolution framebuffers should be used on Retina displays.
+
+
+

V

+
+
volumeInPreferences() - Statische Methode in Klasse pp.battleship.client.gui.GameMusic
+
+
Checks if sound is enabled in the preferences.
+
+
VolumeSlider - Klasse in pp.battleship.client.gui
+
+
The VolumeSlider class represents the Volume Slider in the Menu.
+
+
VolumeSlider(GameMusic) - Konstruktor für Klasse pp.battleship.client.gui.VolumeSlider
+
+
Constructs the Volume Slider for the Menu dialog
+
+
+B C D E F G I M P R S T U V 
Alle Klassen und Schnittstellen|Alle Packages|Konstantenfeldwerte
+
+
+ + diff --git a/Dokumente/JavaDoc/client/docs/javadoc/index.html b/Dokumente/JavaDoc/client/docs/javadoc/index.html new file mode 100644 index 0000000..993066e --- /dev/null +++ b/Dokumente/JavaDoc/client/docs/javadoc/index.html @@ -0,0 +1,69 @@ + + + + +Überblick (client API) + + + + + + + + + + + + + +
+ +
+
+
+

client API

+
+
+
Packages
+
+
Package
+
Beschreibung
+ +
 
+ +
 
+ +
 
+
+
+
+
+
+ + diff --git a/Dokumente/JavaDoc/client/docs/javadoc/legal/ADDITIONAL_LICENSE_INFO b/Dokumente/JavaDoc/client/docs/javadoc/legal/ADDITIONAL_LICENSE_INFO new file mode 100644 index 0000000..3f7e921 --- /dev/null +++ b/Dokumente/JavaDoc/client/docs/javadoc/legal/ADDITIONAL_LICENSE_INFO @@ -0,0 +1 @@ +Please see ..\java.base\ADDITIONAL_LICENSE_INFO diff --git a/Dokumente/JavaDoc/client/docs/javadoc/legal/ASSEMBLY_EXCEPTION b/Dokumente/JavaDoc/client/docs/javadoc/legal/ASSEMBLY_EXCEPTION new file mode 100644 index 0000000..e09f918 --- /dev/null +++ b/Dokumente/JavaDoc/client/docs/javadoc/legal/ASSEMBLY_EXCEPTION @@ -0,0 +1 @@ +Please see ..\java.base\ASSEMBLY_EXCEPTION diff --git a/Dokumente/JavaDoc/client/docs/javadoc/legal/LICENSE b/Dokumente/JavaDoc/client/docs/javadoc/legal/LICENSE new file mode 100644 index 0000000..940481e --- /dev/null +++ b/Dokumente/JavaDoc/client/docs/javadoc/legal/LICENSE @@ -0,0 +1 @@ +Please see ..\java.base\LICENSE diff --git a/Dokumente/JavaDoc/client/docs/javadoc/legal/jquery.md b/Dokumente/JavaDoc/client/docs/javadoc/legal/jquery.md new file mode 100644 index 0000000..d468b31 --- /dev/null +++ b/Dokumente/JavaDoc/client/docs/javadoc/legal/jquery.md @@ -0,0 +1,72 @@ +## jQuery v3.6.1 + +### jQuery License +``` +jQuery v 3.6.1 +Copyright OpenJS Foundation and other contributors, https://openjsf.org/ + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +****************************************** + +The jQuery JavaScript Library v3.6.1 also includes Sizzle.js + +Sizzle.js includes the following license: + +Copyright JS Foundation and other contributors, https://js.foundation/ + +This software consists of voluntary contributions made by many +individuals. For exact contribution history, see the revision history +available at https://github.com/jquery/sizzle + +The following license applies to all parts of this software except as +documented below: + +==== + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +==== + +All files located in the node_modules and external directories are +externally maintained libraries used by this software which have their +own licenses; we recommend you read them, as their terms may differ from +the terms above. + +********************* + +``` diff --git a/Dokumente/JavaDoc/client/docs/javadoc/legal/jqueryUI.md b/Dokumente/JavaDoc/client/docs/javadoc/legal/jqueryUI.md new file mode 100644 index 0000000..9f4c9e9 --- /dev/null +++ b/Dokumente/JavaDoc/client/docs/javadoc/legal/jqueryUI.md @@ -0,0 +1,49 @@ +## jQuery UI v1.13.1 + +### jQuery UI License +``` +Copyright jQuery Foundation and other contributors, https://jquery.org/ + +This software consists of voluntary contributions made by many +individuals. For exact contribution history, see the revision history +available at https://github.com/jquery/jquery-ui + +The following license applies to all parts of this software except as +documented below: + +==== + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +==== + +Copyright and related rights for sample code are waived via CC0. Sample +code is defined as all source code contained within the demos directory. + +CC0: http://creativecommons.org/publicdomain/zero/1.0/ + +==== + +All files located in the node_modules and external directories are +externally maintained libraries used by this software which have their +own licenses; we recommend you read them, as their terms may differ from +the terms above. + +``` diff --git a/Dokumente/JavaDoc/client/docs/javadoc/member-search-index.js b/Dokumente/JavaDoc/client/docs/javadoc/member-search-index.js new file mode 100644 index 0000000..9fc2821 --- /dev/null +++ b/Dokumente/JavaDoc/client/docs/javadoc/member-search-index.js @@ -0,0 +1 @@ +memberSearchIndex = [{"p":"pp.battleship.client.gui","c":"BattleAppState","l":"BattleAppState()","u":"%3Cinit%3E()"},{"p":"pp.battleship.client","c":"BattleshipAppConfig","l":"BattleshipAppConfig()","u":"%3Cinit%3E()"},{"p":"pp.battleship.client","c":"BattleshipAppState","l":"BattleshipAppState()","u":"%3Cinit%3E()"},{"p":"pp.battleship.client","c":"BattleshipApp","l":"CLICK"},{"p":"pp.battleship.client","c":"BattleshipApp","l":"closeApp()"},{"p":"pp.battleship.server","c":"BattleshipServer","l":"connectionAdded(Server, HostedConnection)","u":"connectionAdded(com.jme3.network.Server,com.jme3.network.HostedConnection)"},{"p":"pp.battleship.server","c":"BattleshipServer","l":"connectionRemoved(Server, HostedConnection)","u":"connectionRemoved(com.jme3.network.Server,com.jme3.network.HostedConnection)"},{"p":"pp.battleship.client","c":"BattleshipAppConfig","l":"convertToType(String, Class)","u":"convertToType(java.lang.String,java.lang.Class)"},{"p":"pp.battleship.client.gui","c":"ParticleEffectFactory","l":"createWaterSplash()"},{"p":"pp.battleship.client","c":"BattleshipAppState","l":"disableState()"},{"p":"pp.battleship.client.gui","c":"BattleAppState","l":"disableState()"},{"p":"pp.battleship.client.gui","c":"EditorAppState","l":"disableState()"},{"p":"pp.battleship.client.gui","c":"SeaAppState","l":"disableState()"},{"p":"pp.battleship.client.gui","c":"EditorAppState","l":"EditorAppState()","u":"%3Cinit%3E()"},{"p":"pp.battleship.client","c":"GameSound","l":"enabledInPreferences()"},{"p":"pp.battleship.client.gui","c":"GameMusic","l":"enabledInPreferences()"},{"p":"pp.battleship.client","c":"BattleshipAppState","l":"enableState()"},{"p":"pp.battleship.client.gui","c":"BattleAppState","l":"enableState()"},{"p":"pp.battleship.client.gui","c":"EditorAppState","l":"enableState()"},{"p":"pp.battleship.client.gui","c":"SeaAppState","l":"enableState()"},{"p":"pp.battleship.client","c":"GameSound","l":"explosion()"},{"p":"pp.battleship.client","c":"BattleshipAppConfig","l":"fullScreen()"},{"p":"pp.battleship.client.gui","c":"GameMusic","l":"GameMusic()","u":"%3Cinit%3E()"},{"p":"pp.battleship.client","c":"GameSound","l":"GameSound()","u":"%3Cinit%3E()"},{"p":"pp.battleship.client","c":"BattleshipAppState","l":"getApp()"},{"p":"pp.battleship.client","c":"BattleshipApp","l":"getConfig()"},{"p":"pp.battleship.client","c":"BattleshipApp","l":"getDraw()"},{"p":"pp.battleship.client","c":"BattleshipApp","l":"getExecutor()"},{"p":"pp.battleship.client","c":"BattleshipApp","l":"getGameLogic()"},{"p":"pp.battleship.client","c":"BattleshipAppState","l":"getGameLogic()"},{"p":"pp.battleship.client","c":"BattleshipAppConfig","l":"getResolutionHeight()"},{"p":"pp.battleship.client","c":"BattleshipAppConfig","l":"getResolutionWidth()"},{"p":"pp.battleship.client","c":"BattleshipAppConfig","l":"getShowSettings()"},{"p":"pp.battleship.client","c":"BattleshipAppConfig","l":"getShowStatistics()"},{"p":"pp.battleship.client","c":"BattleshipAppConfig","l":"getTopColor()"},{"p":"pp.battleship.client","c":"BattleshipAppState","l":"initialize(AppStateManager, Application)","u":"initialize(com.jme3.app.state.AppStateManager,com.jme3.app.Application)"},{"p":"pp.battleship.client","c":"GameSound","l":"initialize(AppStateManager, Application)","u":"initialize(com.jme3.app.state.AppStateManager,com.jme3.app.Application)"},{"p":"pp.battleship.client.gui","c":"GameMusic","l":"initialize(AppStateManager, Application)","u":"initialize(com.jme3.app.state.AppStateManager,com.jme3.app.Application)"},{"p":"pp.battleship.client.gui","c":"SeaAppState","l":"initialize(AppStateManager, Application)","u":"initialize(com.jme3.app.state.AppStateManager,com.jme3.app.Application)"},{"p":"pp.battleship.client","c":"BattleshipApp","l":"main(String[])","u":"main(java.lang.String[])"},{"p":"pp.battleship.server","c":"BattleshipServer","l":"main(String[])","u":"main(java.lang.String[])"},{"p":"pp.battleship.server","c":"BattleshipServer","l":"messageReceived(HostedConnection, Message)","u":"messageReceived(com.jme3.network.HostedConnection,com.jme3.network.Message)"},{"p":"pp.battleship.client","c":"BattleshipApp","l":"receivedEvent(ClientStateEvent)","u":"receivedEvent(pp.battleship.notification.ClientStateEvent)"},{"p":"pp.battleship.client","c":"BattleshipApp","l":"receivedEvent(InfoTextEvent)","u":"receivedEvent(pp.battleship.notification.InfoTextEvent)"},{"p":"pp.battleship.client","c":"GameSound","l":"receivedEvent(SoundEvent)","u":"receivedEvent(pp.battleship.notification.SoundEvent)"},{"p":"pp.battleship.client","c":"BattleshipApp","l":"requestClose(boolean)"},{"p":"pp.battleship.server","c":"BattleshipServer","l":"run()"},{"p":"pp.battleship.client.gui","c":"SeaAppState","l":"SeaAppState()","u":"%3Cinit%3E()"},{"p":"pp.battleship.server","c":"BattleshipServer","l":"send(int, ServerMessage)","u":"send(int,pp.battleship.message.server.ServerMessage)"},{"p":"pp.battleship.client","c":"BattleshipAppState","l":"setEnabled(boolean)"},{"p":"pp.battleship.client","c":"GameSound","l":"setEnabled(boolean)"},{"p":"pp.battleship.client.gui","c":"GameMusic","l":"setEnabled(boolean)"},{"p":"pp.battleship.client.gui","c":"GameMusic","l":"setVolume(float)"},{"p":"pp.battleship.client","c":"GameSound","l":"shipDestroyed()"},{"p":"pp.battleship.client","c":"BattleshipAppState","l":"showsDialog()"},{"p":"pp.battleship.client","c":"BattleshipApp","l":"simpleInitApp()"},{"p":"pp.battleship.client","c":"BattleshipApp","l":"simpleUpdate(float)"},{"p":"pp.battleship.client","c":"GameSound","l":"splash()"},{"p":"pp.battleship.client","c":"BattleshipApp","l":"stop(boolean)"},{"p":"pp.battleship.client","c":"GameSound","l":"toggleSound()"},{"p":"pp.battleship.client.gui","c":"GameMusic","l":"toggleSound()"},{"p":"pp.battleship.client.gui","c":"VolumeSlider","l":"update()"},{"p":"pp.battleship.client.gui","c":"EditorAppState","l":"update(float)"},{"p":"pp.battleship.client.gui","c":"SeaAppState","l":"update(float)"},{"p":"pp.battleship.client","c":"BattleshipAppConfig","l":"useGammaCorrection()"},{"p":"pp.battleship.client","c":"BattleshipAppConfig","l":"useRetinaFrameBuffer()"},{"p":"pp.battleship.client.gui","c":"GameMusic","l":"volumeInPreferences()"},{"p":"pp.battleship.client.gui","c":"VolumeSlider","l":"VolumeSlider(GameMusic)","u":"%3Cinit%3E(pp.battleship.client.gui.GameMusic)"}];updateSearchResults(); \ No newline at end of file diff --git a/Dokumente/JavaDoc/client/docs/javadoc/module-search-index.js b/Dokumente/JavaDoc/client/docs/javadoc/module-search-index.js new file mode 100644 index 0000000..0d59754 --- /dev/null +++ b/Dokumente/JavaDoc/client/docs/javadoc/module-search-index.js @@ -0,0 +1 @@ +moduleSearchIndex = [];updateSearchResults(); \ No newline at end of file diff --git a/Dokumente/JavaDoc/client/docs/javadoc/overview-summary.html b/Dokumente/JavaDoc/client/docs/javadoc/overview-summary.html new file mode 100644 index 0000000..915cd87 --- /dev/null +++ b/Dokumente/JavaDoc/client/docs/javadoc/overview-summary.html @@ -0,0 +1,25 @@ + + + + +client API + + + + + + + + + + +
+ +

index.html

+
+ + diff --git a/Dokumente/JavaDoc/client/docs/javadoc/overview-tree.html b/Dokumente/JavaDoc/client/docs/javadoc/overview-tree.html new file mode 100644 index 0000000..9057498 --- /dev/null +++ b/Dokumente/JavaDoc/client/docs/javadoc/overview-tree.html @@ -0,0 +1,125 @@ + + + + +Klassenhierarchie (client API) + + + + + + + + + + + + + +
+ +
+
+
+

Hierarchie für alle Packages

+
+Packagehierarchien: + +
+

Klassenhierarchie

+
    +
  • java.lang.Object +
      +
    • com.jme3.app.state.AbstractAppState (implements com.jme3.app.state.AppState) + +
    • +
    • pp.battleship.server.BattleshipServer (implements com.jme3.network.ConnectionListener, com.jme3.network.MessageListener<S>, pp.battleship.game.server.ServerSender)
    • +
    • pp.util.config.Config +
        +
      • pp.battleship.BattleshipConfig +
          +
        • pp.battleship.game.singlemode.BattleshipClientConfig + +
        • +
        +
      • +
      +
    • +
    • com.jme3.app.LegacyApplication (implements com.jme3.app.Application, com.jme3.system.SystemListener) +
        +
      • com.jme3.app.SimpleApplication +
          +
        • pp.battleship.client.BattleshipApp (implements pp.battleship.game.client.BattleshipClient, pp.battleship.notification.GameEventListener)
        • +
        +
      • +
      +
    • +
    • pp.battleship.client.gui.ParticleEffectFactory
    • +
    • com.jme3.scene.Spatial (implements java.lang.Cloneable, com.jme3.asset.CloneableSmartAsset, com.jme3.collision.Collidable, com.jme3.anim.util.HasLocalTransform, com.jme3.util.clone.JmeCloneable, com.jme3.export.Savable) +
        +
      • com.jme3.scene.Node +
          +
        • com.simsilica.lemur.Panel +
            +
          • com.simsilica.lemur.Slider + +
          • +
          +
        • +
        +
      • +
      +
    • +
    +
  • +
+
+
+
+
+ + diff --git a/Dokumente/JavaDoc/client/docs/javadoc/package-search-index.js b/Dokumente/JavaDoc/client/docs/javadoc/package-search-index.js new file mode 100644 index 0000000..10fa05b --- /dev/null +++ b/Dokumente/JavaDoc/client/docs/javadoc/package-search-index.js @@ -0,0 +1 @@ +packageSearchIndex = [{"l":"Alle Packages","u":"allpackages-index.html"},{"l":"pp.battleship.client"},{"l":"pp.battleship.client.gui"},{"l":"pp.battleship.server"}];updateSearchResults(); \ No newline at end of file diff --git a/Dokumente/JavaDoc/client/docs/javadoc/pp/battleship/client/BattleshipApp.html b/Dokumente/JavaDoc/client/docs/javadoc/pp/battleship/client/BattleshipApp.html new file mode 100644 index 0000000..5c8270f --- /dev/null +++ b/Dokumente/JavaDoc/client/docs/javadoc/pp/battleship/client/BattleshipApp.html @@ -0,0 +1,413 @@ + + + + +BattleshipApp (client API) + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Klasse BattleshipApp

+
+
java.lang.Object +
com.jme3.app.LegacyApplication +
com.jme3.app.SimpleApplication +
pp.battleship.client.BattleshipApp
+
+
+
+
+
+
Alle implementierten Schnittstellen:
+
com.jme3.app.Application, com.jme3.system.SystemListener, pp.battleship.game.client.BattleshipClient, pp.battleship.notification.GameEventListener
+
+
+
public class BattleshipApp +extends com.jme3.app.SimpleApplication +implements pp.battleship.game.client.BattleshipClient, pp.battleship.notification.GameEventListener
+
The main class for the Battleship client application. + It manages the initialization, input setup, GUI setup, and game states for the client.
+
+
+
    + +
  • +
    +

    Feldübersicht

    +
    Felder
    +
    +
    Modifizierer und Typ
    +
    Feld
    +
    Beschreibung
    +
    static final String
    + +
    +
    Input mapping name for mouse clicks.
    +
    +
    +
    +

    Von Klasse geerbte Felder com.jme3.app.SimpleApplication

    +flyCam, fpsText, guiFont, guiNode, INPUT_MAPPING_CAMERA_POS, INPUT_MAPPING_EXIT, INPUT_MAPPING_HIDE_STATS, INPUT_MAPPING_MEMORY, rootNode, showSettings
    +
    +

    Von Klasse geerbte Felder com.jme3.app.LegacyApplication

    +assetManager, audioRenderer, cam, context, guiViewPort, inputEnabled, inputManager, joyInput, keyInput, listener, lostFocusBehavior, mouseInput, paused, prof, renderer, renderManager, settings, speed, stateManager, timer, touchInput, viewPort
    +
    +
  • + +
  • +
    +

    Methodenübersicht

    +
    +
    +
    +
    +
    Modifizierer und Typ
    +
    Methode
    +
    Beschreibung
    +
    void
    + +
    +
    Closes the application, displaying a confirmation dialog if the client is connected to a server.
    +
    + + +
    +
    Returns the current configuration settings for the Battleship client.
    +
    +
    pp.graphics.Draw
    + +
    +
    Returns the Draw instance used for rendering graphical elements in the game.
    +
    + + +
    +
    Returns the executor service used for handling multithreaded tasks.
    +
    +
    pp.battleship.game.client.ClientGameLogic
    + +
    +
    Returns the game logic handler for the client.
    +
    +
    static void
    +
    main(String[] args)
    +
    +
    Starts the Battleship application.
    +
    +
    void
    +
    receivedEvent(pp.battleship.notification.ClientStateEvent event)
    +
    +
    Handles client state events to update the game states accordingly.
    +
    +
    void
    +
    receivedEvent(pp.battleship.notification.InfoTextEvent event)
    +
    +
    Updates the informational text in the GUI based on the key received in an InfoTextEvent.
    +
    +
    void
    +
    requestClose(boolean esc)
    +
    +
    Handles a request to close the application.
    +
    +
    void
    + +
    +
    Initializes the application.
    +
    +
    void
    +
    simpleUpdate(float tpf)
    +
    +
    Updates the application state every frame.
    +
    +
    void
    +
    stop(boolean waitFor)
    +
    +
    Stops the application, shutting down the executor service and halting execution.
    +
    +
    +
    +
    +
    +

    Von Klasse geerbte Methoden com.jme3.app.SimpleApplication

    +getFlyByCamera, getGuiNode, getRootNode, getSpeed, initialize, isShowSettings, loadGuiFont, setDisplayFps, setDisplayStatView, setShowSettings, setSpeed, simpleRender, start, update
    +
    +

    Von Klasse geerbte Methoden com.jme3.app.LegacyApplication

    +createCanvas, destroy, destroyInput, enqueue, enqueue, gainFocus, getAppProfiler, getAssetManager, getAudioRenderer, getCamera, getContext, getGuiViewPort, getInputManager, getListener, getLostFocusBehavior, getRenderer, getRenderManager, getStateManager, getTimer, getViewPort, handleError, isPauseOnLostFocus, loseFocus, rescale, reshape, restart, runQueuedTasks, setAppProfiler, setAssetManager, setLostFocusBehavior, setPauseOnLostFocus, setSettings, setTimer, start, start, start, startCanvas, startCanvas, stop
    +
    +

    Von Klasse geerbte Methoden java.lang.Object

    +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    +
    +

    Von Schnittstelle geerbte Methoden pp.battleship.game.client.BattleshipClient

    +enqueue
    +
    +

    Von Schnittstelle geerbte Methoden pp.battleship.notification.GameEventListener

    +receivedEvent, receivedEvent, receivedEvent
    +
    +
  • +
+
+
+
    + +
  • +
    +

    Felddetails

    +
      +
    • +
      +

      CLICK

      +
      public static final String CLICK
      +
      Input mapping name for mouse clicks.
      +
      +
      Siehe auch:
      +
      + +
      +
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Methodendetails

    +
      +
    • +
      +

      main

      +
      public static void main(String[] args)
      +
      Starts the Battleship application.
      +
      +
      Parameter:
      +
      args - Command-line arguments for launching the application.
      +
      +
      +
    • +
    • +
      +

      getGameLogic

      +
      public pp.battleship.game.client.ClientGameLogic getGameLogic()
      +
      Returns the game logic handler for the client.
      +
      +
      Angegeben von:
      +
      getGameLogic in Schnittstelle pp.battleship.game.client.BattleshipClient
      +
      Gibt zurück:
      +
      The ClientGameLogic instance.
      +
      +
      +
    • +
    • +
      +

      getConfig

      +
      public BattleshipAppConfig getConfig()
      +
      Returns the current configuration settings for the Battleship client.
      +
      +
      Angegeben von:
      +
      getConfig in Schnittstelle pp.battleship.game.client.BattleshipClient
      +
      Gibt zurück:
      +
      The BattleshipClientConfig instance.
      +
      +
      +
    • +
    • +
      +

      simpleInitApp

      +
      public void simpleInitApp()
      +
      Initializes the application. + Sets up input mappings, GUI, game states, and connects to the server.
      +
      +
      Angegeben von:
      +
      simpleInitApp in Klasse com.jme3.app.SimpleApplication
      +
      +
      +
    • +
    • +
      +

      simpleUpdate

      +
      public void simpleUpdate(float tpf)
      +
      Updates the application state every frame. + This method is called once per frame during the game loop.
      +
      +
      Setzt außer Kraft:
      +
      simpleUpdate in Klasse com.jme3.app.SimpleApplication
      +
      Parameter:
      +
      tpf - Time per frame in seconds.
      +
      +
      +
    • +
    • +
      +

      getDraw

      +
      public pp.graphics.Draw getDraw()
      +
      Returns the Draw instance used for rendering graphical elements in the game.
      +
      +
      Gibt zurück:
      +
      The Draw instance.
      +
      +
      +
    • +
    • +
      +

      requestClose

      +
      public void requestClose(boolean esc)
      +
      Handles a request to close the application. + If the request is initiated by pressing ESC, this parameter is true.
      +
      +
      Angegeben von:
      +
      requestClose in Schnittstelle com.jme3.system.SystemListener
      +
      Setzt außer Kraft:
      +
      requestClose in Klasse com.jme3.app.LegacyApplication
      +
      Parameter:
      +
      esc - If true, the request is due to the ESC key being pressed.
      +
      +
      +
    • +
    • +
      +

      closeApp

      +
      public void closeApp()
      +
      Closes the application, displaying a confirmation dialog if the client is connected to a server.
      +
      +
    • +
    • +
      +

      receivedEvent

      +
      public void receivedEvent(pp.battleship.notification.InfoTextEvent event)
      +
      Updates the informational text in the GUI based on the key received in an InfoTextEvent.
      +
      +
      Angegeben von:
      +
      receivedEvent in Schnittstelle pp.battleship.notification.GameEventListener
      +
      Parameter:
      +
      event - The InfoTextEvent containing the key for the text to display.
      +
      +
      +
    • +
    • +
      +

      receivedEvent

      +
      public void receivedEvent(pp.battleship.notification.ClientStateEvent event)
      +
      Handles client state events to update the game states accordingly.
      +
      +
      Angegeben von:
      +
      receivedEvent in Schnittstelle pp.battleship.notification.GameEventListener
      +
      Parameter:
      +
      event - The ClientStateEvent representing the state change.
      +
      +
      +
    • +
    • +
      +

      getExecutor

      +
      public ExecutorService getExecutor()
      +
      Returns the executor service used for handling multithreaded tasks.
      +
      +
      Gibt zurück:
      +
      The ExecutorService instance.
      +
      +
      +
    • +
    • +
      +

      stop

      +
      public void stop(boolean waitFor)
      +
      Stops the application, shutting down the executor service and halting execution.
      +
      +
      Angegeben von:
      +
      stop in Schnittstelle com.jme3.app.Application
      +
      Setzt außer Kraft:
      +
      stop in Klasse com.jme3.app.LegacyApplication
      +
      Parameter:
      +
      waitFor - If true, waits for the application to stop before returning.
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/Dokumente/JavaDoc/client/docs/javadoc/pp/battleship/client/BattleshipAppConfig.html b/Dokumente/JavaDoc/client/docs/javadoc/pp/battleship/client/BattleshipAppConfig.html new file mode 100644 index 0000000..3cfebf4 --- /dev/null +++ b/Dokumente/JavaDoc/client/docs/javadoc/pp/battleship/client/BattleshipAppConfig.html @@ -0,0 +1,351 @@ + + + + +BattleshipAppConfig (client API) + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Klasse BattleshipAppConfig

+
+
java.lang.Object +
pp.util.config.Config +
pp.battleship.BattleshipConfig +
pp.battleship.game.singlemode.BattleshipClientConfig +
pp.battleship.client.BattleshipAppConfig
+
+
+
+
+
+
+
public class BattleshipAppConfig +extends pp.battleship.game.singlemode.BattleshipClientConfig
+
Provides access to the Battleship application configuration. + Extends BattleshipClientConfig to include additional properties specific to the client, + particularly those related to screen settings and visual customization. +

+ Note: Attributes of this class should not be marked as final + to ensure proper functionality when reading from a properties file. +

+
+
+
    + +
  • +
    +

    Verschachtelte Klassen - Übersicht

    +
    +

    Von Klasse geerbte verschachtelte Klassen/Schnittstellen pp.util.config.Config

    +pp.util.config.Config.Property, pp.util.config.Config.Separator
    +
    +
  • + +
  • +
    +

    Konstruktorübersicht

    +
    Konstruktoren
    +
    +
    Konstruktor
    +
    Beschreibung
    + +
    +
    Creates a default BattleshipAppConfig with predefined values.
    +
    +
    +
    +
  • + +
  • +
    +

    Methodenübersicht

    +
    +
    +
    +
    +
    Modifizierer und Typ
    +
    Methode
    +
    Beschreibung
    +
    protected Object
    +
    convertToType(String value, + Class<?> targetType)
    +
    +
    Converts a string value found in the properties file into an object of the specified type.
    +
    +
    boolean
    + +
    +
    Returns whether the game should start in full-screen mode.
    +
    +
    int
    + +
    +
    Returns the height of the game view resolution in pixels.
    +
    +
    int
    + +
    +
    Returns the width of the game view resolution in pixels.
    +
    +
    boolean
    + +
    +
    Returns whether the settings window should be shown for configuring the game.
    +
    +
    boolean
    + +
    +
    Returns whether the JME statistics window should be shown in the lower left corner of the screen.
    +
    +
    com.jme3.math.ColorRGBA
    + +
    +
    Returns the color of the top text during gameplay as a ColorRGBA object.
    +
    +
    boolean
    + +
    +
    Returns whether gamma correction is enabled.
    +
    +
    boolean
    + +
    +
    Returns whether full resolution framebuffers should be used on Retina displays.
    +
    +
    +
    +
    +
    +

    Von Klasse geerbte Methoden pp.battleship.game.singlemode.BattleshipClientConfig

    +getDelay, getOpponentMap, getOwnMap, getRobotTargets, isSingleMode
    +
    +

    Von Klasse geerbte Methoden pp.battleship.BattleshipConfig

    +getMapHeight, getMapWidth, getPort, getShipNums
    +
    +

    Von Klasse geerbte Methoden pp.util.config.Config

    +readFrom, readFrom, readFromIfExists, toString
    +
    +

    Von Klasse geerbte Methoden java.lang.Object

    +clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
    +
    +
  • +
+
+
+
    + +
  • +
    +

    Konstruktordetails

    +
      +
    • +
      +

      BattleshipAppConfig

      +
      public BattleshipAppConfig()
      +
      Creates a default BattleshipAppConfig with predefined values.
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Methodendetails

    +
      +
    • +
      +

      convertToType

      +
      protected Object convertToType(String value, + Class<?> targetType)
      +
      Converts a string value found in the properties file into an object of the specified type. + Extends the superclass method to support conversion to ColorRGBA.
      +
      +
      Setzt außer Kraft:
      +
      convertToType in Klasse pp.util.config.Config
      +
      Parameter:
      +
      value - the string value to be converted
      +
      targetType - the target type into which the value string is converted
      +
      Gibt zurück:
      +
      the converted object of the specified type
      +
      +
      +
    • +
    • +
      +

      getResolutionWidth

      +
      public int getResolutionWidth()
      +
      Returns the width of the game view resolution in pixels.
      +
      +
      Gibt zurück:
      +
      the width of the game view resolution in pixels
      +
      +
      +
    • +
    • +
      +

      getResolutionHeight

      +
      public int getResolutionHeight()
      +
      Returns the height of the game view resolution in pixels.
      +
      +
      Gibt zurück:
      +
      the height of the game view resolution in pixels
      +
      +
      +
    • +
    • +
      +

      fullScreen

      +
      public boolean fullScreen()
      +
      Returns whether the game should start in full-screen mode.
      +
      +
      Gibt zurück:
      +
      true if the game should start in full-screen mode; false otherwise
      +
      +
      +
    • +
    • +
      +

      useGammaCorrection

      +
      public boolean useGammaCorrection()
      +
      Returns whether gamma correction is enabled. + If enabled, the main framebuffer is configured for sRGB colors, + and sRGB images are linearized.
      +
      +
      Gibt zurück:
      +
      true if gamma correction is enabled; false otherwise
      +
      +
      +
    • +
    • +
      +

      useRetinaFrameBuffer

      +
      public boolean useRetinaFrameBuffer()
      +
      Returns whether full resolution framebuffers should be used on Retina displays. + This setting is ignored on non-Retina platforms.
      +
      +
      Gibt zurück:
      +
      true if full resolution framebuffers should be used on Retina displays; false otherwise
      +
      +
      +
    • +
    • +
      +

      getShowSettings

      +
      public boolean getShowSettings()
      +
      Returns whether the settings window should be shown for configuring the game.
      +
      +
      Gibt zurück:
      +
      true if the settings window should be shown; false otherwise
      +
      +
      +
    • +
    • +
      +

      getShowStatistics

      +
      public boolean getShowStatistics()
      +
      Returns whether the JME statistics window should be shown in the lower left corner of the screen.
      +
      +
      Gibt zurück:
      +
      true if the statistics window should be shown; false otherwise
      +
      +
      +
    • +
    • +
      +

      getTopColor

      +
      public com.jme3.math.ColorRGBA getTopColor()
      +
      Returns the color of the top text during gameplay as a ColorRGBA object.
      +
      +
      Gibt zurück:
      +
      the color of the top text during gameplay
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/Dokumente/JavaDoc/client/docs/javadoc/pp/battleship/client/BattleshipAppState.html b/Dokumente/JavaDoc/client/docs/javadoc/pp/battleship/client/BattleshipAppState.html new file mode 100644 index 0000000..557cd36 --- /dev/null +++ b/Dokumente/JavaDoc/client/docs/javadoc/pp/battleship/client/BattleshipAppState.html @@ -0,0 +1,319 @@ + + + + +BattleshipAppState (client API) + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Klasse BattleshipAppState

+
+
java.lang.Object +
com.jme3.app.state.AbstractAppState +
pp.battleship.client.BattleshipAppState
+
+
+
+
+
Alle implementierten Schnittstellen:
+
com.jme3.app.state.AppState
+
+
+
Bekannte direkte Unterklassen:
+
BattleAppState, EditorAppState, SeaAppState
+
+
+
public abstract class BattleshipAppState +extends com.jme3.app.state.AbstractAppState
+
Abstract class representing a state in the Battleship game. + Extends the AbstractAppState from jMonkeyEngine to manage state behavior.
+
+
+
    + +
  • +
    +

    Feldübersicht

    +
    +

    Von Klasse geerbte Felder com.jme3.app.state.AbstractAppState

    +initialized
    +
    +
  • + +
  • +
    +

    Konstruktorübersicht

    +
    Konstruktoren
    +
    +
    Modifizierer
    +
    Konstruktor
    +
    Beschreibung
    +
    protected
    + +
    +
    Creates a new BattleshipAppState that is initially disabled.
    +
    +
    +
    +
  • + +
  • +
    +

    Methodenübersicht

    +
    +
    +
    +
    +
    Modifizierer und Typ
    +
    Methode
    +
    Beschreibung
    +
    protected abstract void
    + +
    +
    This method is called when the state is disabled.
    +
    +
    protected abstract void
    + +
    +
    This method is called when the state is enabled.
    +
    + + +
    +
    Returns the BattleshipApp instance associated with this BattleshipAppState.
    +
    +
    pp.battleship.game.client.ClientGameLogic
    + +
    +
    Returns the client game logic handler.
    +
    +
    void
    +
    initialize(com.jme3.app.state.AppStateManager stateManager, + com.jme3.app.Application application)
    +
    +
    Initializes the state manager and application.
    +
    +
    void
    +
    setEnabled(boolean enabled)
    +
    +
    Sets the enabled state of the BattleshipAppState.
    +
    +
    boolean
    + +
    +
    Checks if any dialog is currently displayed.
    +
    +
    +
    +
    +
    +

    Von Klasse geerbte Methoden com.jme3.app.state.AbstractAppState

    +cleanup, getId, isEnabled, isInitialized, postRender, render, setId, stateAttached, stateDetached, update
    +
    +

    Von Klasse geerbte Methoden java.lang.Object

    +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    +
    +
  • +
+
+
+
    + +
  • +
    +

    Konstruktordetails

    +
      +
    • +
      +

      BattleshipAppState

      +
      protected BattleshipAppState()
      +
      Creates a new BattleshipAppState that is initially disabled.
      +
      +
      Siehe auch:
      +
      + +
      +
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Methodendetails

    +
      +
    • +
      +

      initialize

      +
      public void initialize(com.jme3.app.state.AppStateManager stateManager, + com.jme3.app.Application application)
      +
      Initializes the state manager and application.
      +
      +
      Angegeben von:
      +
      initialize in Schnittstelle com.jme3.app.state.AppState
      +
      Setzt außer Kraft:
      +
      initialize in Klasse com.jme3.app.state.AbstractAppState
      +
      Parameter:
      +
      stateManager - The state manager
      +
      application - The application instance
      +
      +
      +
    • +
    • +
      +

      getApp

      +
      public BattleshipApp getApp()
      +
      Returns the BattleshipApp instance associated with this BattleshipAppState.
      +
      +
      Gibt zurück:
      +
      The BattleshipApp instance.
      +
      +
      +
    • +
    • +
      +

      getGameLogic

      +
      public pp.battleship.game.client.ClientGameLogic getGameLogic()
      +
      Returns the client game logic handler.
      +
      +
      Gibt zurück:
      +
      the client game logic handler
      +
      +
      +
    • +
    • +
      +

      showsDialog

      +
      public boolean showsDialog()
      +
      Checks if any dialog is currently displayed.
      +
      +
      Gibt zurück:
      +
      true if any dialog is currently shown, false otherwise
      +
      +
      +
    • +
    • +
      +

      setEnabled

      +
      public void setEnabled(boolean enabled)
      +
      Sets the enabled state of the BattleshipAppState. + If the new state is the same as the current state, the method returns.
      +
      +
      Angegeben von:
      +
      setEnabled in Schnittstelle com.jme3.app.state.AppState
      +
      Setzt außer Kraft:
      +
      setEnabled in Klasse com.jme3.app.state.AbstractAppState
      +
      Parameter:
      +
      enabled - The new enabled state.
      +
      +
      +
    • +
    • +
      +

      enableState

      +
      protected abstract void enableState()
      +
      This method is called when the state is enabled. + It is meant to be overridden by subclasses to perform + specific actions when the state is enabled.
      +
      +
    • +
    • +
      +

      disableState

      +
      protected abstract void disableState()
      +
      This method is called when the state is disabled. + It is meant to be overridden by subclasses to perform + specific actions when the state is disabled.
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/Dokumente/JavaDoc/client/docs/javadoc/pp/battleship/client/GameSound.html b/Dokumente/JavaDoc/client/docs/javadoc/pp/battleship/client/GameSound.html new file mode 100644 index 0000000..50cfb96 --- /dev/null +++ b/Dokumente/JavaDoc/client/docs/javadoc/pp/battleship/client/GameSound.html @@ -0,0 +1,307 @@ + + + + +GameSound (client API) + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Klasse GameSound

+
+
java.lang.Object +
com.jme3.app.state.AbstractAppState +
pp.battleship.client.GameSound
+
+
+
+
+
Alle implementierten Schnittstellen:
+
com.jme3.app.state.AppState, pp.battleship.notification.GameEventListener
+
+
+
public class GameSound +extends com.jme3.app.state.AbstractAppState +implements pp.battleship.notification.GameEventListener
+
An application state that plays sounds.
+
+
+
    + +
  • +
    +

    Feldübersicht

    +
    +

    Von Klasse geerbte Felder com.jme3.app.state.AbstractAppState

    +initialized
    +
    +
  • + +
  • +
    +

    Konstruktorübersicht

    +
    Konstruktoren
    +
    +
    Konstruktor
    +
    Beschreibung
    + +
     
    +
    +
    +
  • + +
  • +
    +

    Methodenübersicht

    +
    +
    +
    +
    +
    Modifizierer und Typ
    +
    Methode
    +
    Beschreibung
    +
    static boolean
    + +
    +
    Checks if sound is enabled in the preferences.
    +
    +
    void
    + +
    +
    Plays the explosion sound effect.
    +
    +
    void
    +
    initialize(com.jme3.app.state.AppStateManager stateManager, + com.jme3.app.Application app)
    +
    +
    Initializes the sound effects for the game.
    +
    +
    void
    +
    receivedEvent(pp.battleship.notification.SoundEvent event)
    +
     
    +
    void
    +
    setEnabled(boolean enabled)
    +
    +
    Sets the enabled state of this AppState.
    +
    +
    void
    + +
    +
    Plays sound effect when a ship has been destroyed.
    +
    +
    void
    + +
    +
    Plays the splash sound effect.
    +
    +
    void
    + +
    +
    Toggles the game sound on or off.
    +
    +
    +
    +
    +
    +

    Von Klasse geerbte Methoden com.jme3.app.state.AbstractAppState

    +cleanup, getId, isEnabled, isInitialized, postRender, render, setId, stateAttached, stateDetached, update
    +
    +

    Von Klasse geerbte Methoden java.lang.Object

    +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    +
    +

    Von Schnittstelle geerbte Methoden pp.battleship.notification.GameEventListener

    +receivedEvent, receivedEvent, receivedEvent, receivedEvent
    +
    +
  • +
+
+
+
    + +
  • +
    +

    Konstruktordetails

    +
      +
    • +
      +

      GameSound

      +
      public GameSound()
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Methodendetails

    +
      +
    • +
      +

      enabledInPreferences

      +
      public static boolean enabledInPreferences()
      +
      Checks if sound is enabled in the preferences.
      +
      +
      Gibt zurück:
      +
      true if sound is enabled, false otherwise.
      +
      +
      +
    • +
    • +
      +

      toggleSound

      +
      public void toggleSound()
      +
      Toggles the game sound on or off.
      +
      +
    • +
    • +
      +

      setEnabled

      +
      public void setEnabled(boolean enabled)
      +
      Sets the enabled state of this AppState. + Overrides AbstractAppState.setEnabled(boolean)
      +
      +
      Angegeben von:
      +
      setEnabled in Schnittstelle com.jme3.app.state.AppState
      +
      Setzt außer Kraft:
      +
      setEnabled in Klasse com.jme3.app.state.AbstractAppState
      +
      Parameter:
      +
      enabled - true to enable the AppState, false to disable it.
      +
      +
      +
    • +
    • +
      +

      initialize

      +
      public void initialize(com.jme3.app.state.AppStateManager stateManager, + com.jme3.app.Application app)
      +
      Initializes the sound effects for the game. + Overrides AbstractAppState.initialize(AppStateManager, Application)
      +
      +
      Angegeben von:
      +
      initialize in Schnittstelle com.jme3.app.state.AppState
      +
      Setzt außer Kraft:
      +
      initialize in Klasse com.jme3.app.state.AbstractAppState
      +
      Parameter:
      +
      stateManager - The state manager
      +
      app - The application
      +
      +
      +
    • +
    • +
      +

      splash

      +
      public void splash()
      +
      Plays the splash sound effect.
      +
      +
    • +
    • +
      +

      explosion

      +
      public void explosion()
      +
      Plays the explosion sound effect.
      +
      +
    • +
    • +
      +

      shipDestroyed

      +
      public void shipDestroyed()
      +
      Plays sound effect when a ship has been destroyed.
      +
      +
    • +
    • +
      +

      receivedEvent

      +
      public void receivedEvent(pp.battleship.notification.SoundEvent event)
      +
      +
      Angegeben von:
      +
      receivedEvent in Schnittstelle pp.battleship.notification.GameEventListener
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/Dokumente/JavaDoc/client/docs/javadoc/pp/battleship/client/gui/BattleAppState.html b/Dokumente/JavaDoc/client/docs/javadoc/pp/battleship/client/gui/BattleAppState.html new file mode 100644 index 0000000..9950182 --- /dev/null +++ b/Dokumente/JavaDoc/client/docs/javadoc/pp/battleship/client/gui/BattleAppState.html @@ -0,0 +1,222 @@ + + + + +BattleAppState (client API) + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Klasse BattleAppState

+
+
java.lang.Object +
com.jme3.app.state.AbstractAppState +
pp.battleship.client.BattleshipAppState +
pp.battleship.client.gui.BattleAppState
+
+
+
+
+
+
Alle implementierten Schnittstellen:
+
com.jme3.app.state.AppState
+
+
+
public class BattleAppState +extends BattleshipAppState
+
Represents the state responsible for managing the battle interface within the Battleship game. + This state handles the display and interaction of the battle map, including the opponent's map. + It manages GUI components, input events, and the layout of the interface when this state is enabled.
+
+
+
    + +
  • +
    +

    Feldübersicht

    +
    +

    Von Klasse geerbte Felder com.jme3.app.state.AbstractAppState

    +initialized
    +
    +
  • + +
  • +
    +

    Konstruktorübersicht

    +
    Konstruktoren
    +
    +
    Konstruktor
    +
    Beschreibung
    + +
     
    +
    +
    +
  • + +
  • +
    +

    Methodenübersicht

    +
    +
    +
    +
    +
    Modifizierer und Typ
    +
    Methode
    +
    Beschreibung
    +
    protected void
    + +
    +
    Disables the battle state by removing GUI components and unregistering input listeners.
    +
    +
    protected void
    + +
    +
    Enables the battle state by initializing, laying out, and adding GUI components.
    +
    +
    +
    +
    +
    +

    Von Klasse geerbte Methoden pp.battleship.client.BattleshipAppState

    +getApp, getGameLogic, initialize, setEnabled, showsDialog
    +
    +

    Von Klasse geerbte Methoden com.jme3.app.state.AbstractAppState

    +cleanup, getId, isEnabled, isInitialized, postRender, render, setId, stateAttached, stateDetached, update
    +
    +

    Von Klasse geerbte Methoden java.lang.Object

    +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    +
    +
  • +
+
+
+
    + +
  • +
    +

    Konstruktordetails

    +
      +
    • +
      +

      BattleAppState

      +
      public BattleAppState()
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Methodendetails

    +
      +
    • +
      +

      enableState

      +
      protected void enableState()
      +
      Enables the battle state by initializing, laying out, and adding GUI components. + Attaches the components to the GUI node and registers input listeners.
      +
      +
      Angegeben von:
      +
      enableState in Klasse BattleshipAppState
      +
      +
      +
    • +
    • +
      +

      disableState

      +
      protected void disableState()
      +
      Disables the battle state by removing GUI components and unregistering input listeners. + Also handles cleanup of resources, such as the opponent's map view.
      +
      +
      Angegeben von:
      +
      disableState in Klasse BattleshipAppState
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/Dokumente/JavaDoc/client/docs/javadoc/pp/battleship/client/gui/EditorAppState.html b/Dokumente/JavaDoc/client/docs/javadoc/pp/battleship/client/gui/EditorAppState.html new file mode 100644 index 0000000..3502efa --- /dev/null +++ b/Dokumente/JavaDoc/client/docs/javadoc/pp/battleship/client/gui/EditorAppState.html @@ -0,0 +1,239 @@ + + + + +EditorAppState (client API) + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Klasse EditorAppState

+
+
java.lang.Object +
com.jme3.app.state.AbstractAppState +
pp.battleship.client.BattleshipAppState +
pp.battleship.client.gui.EditorAppState
+
+
+
+
+
+
Alle implementierten Schnittstellen:
+
com.jme3.app.state.AppState
+
+
+
public class EditorAppState +extends BattleshipAppState
+
EditorState manages the editor mode in the Battleship game, + allowing players to place and rotate ships.
+
+
+
    + +
  • +
    +

    Feldübersicht

    +
    +

    Von Klasse geerbte Felder com.jme3.app.state.AbstractAppState

    +initialized
    +
    +
  • + +
  • +
    +

    Konstruktorübersicht

    +
    Konstruktoren
    +
    +
    Konstruktor
    +
    Beschreibung
    + +
     
    +
    +
    +
  • + +
  • +
    +

    Methodenübersicht

    +
    +
    +
    +
    +
    Modifizierer und Typ
    +
    Methode
    +
    Beschreibung
    +
    protected void
    + +
    +
    Disables the editor state by detaching nodes and removing listeners.
    +
    +
    protected void
    + +
    +
    Enables the editor state by attaching necessary nodes and listeners.
    +
    +
    void
    +
    update(float tpf)
    +
    +
    Updates the editor state, handling cursor movement and enabling buttons.
    +
    +
    +
    +
    +
    +

    Von Klasse geerbte Methoden pp.battleship.client.BattleshipAppState

    +getApp, getGameLogic, initialize, setEnabled, showsDialog
    +
    +

    Von Klasse geerbte Methoden com.jme3.app.state.AbstractAppState

    +cleanup, getId, isEnabled, isInitialized, postRender, render, setId, stateAttached, stateDetached
    +
    +

    Von Klasse geerbte Methoden java.lang.Object

    +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    +
    +
  • +
+
+
+
    + +
  • +
    +

    Konstruktordetails

    +
      +
    • +
      +

      EditorAppState

      +
      public EditorAppState()
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Methodendetails

    +
      +
    • +
      +

      enableState

      +
      protected void enableState()
      +
      Enables the editor state by attaching necessary nodes and listeners.
      +
      +
      Angegeben von:
      +
      enableState in Klasse BattleshipAppState
      +
      +
      +
    • +
    • +
      +

      disableState

      +
      protected void disableState()
      +
      Disables the editor state by detaching nodes and removing listeners.
      +
      +
      Angegeben von:
      +
      disableState in Klasse BattleshipAppState
      +
      +
      +
    • +
    • +
      +

      update

      +
      public void update(float tpf)
      +
      Updates the editor state, handling cursor movement and enabling buttons.
      +
      +
      Angegeben von:
      +
      update in Schnittstelle com.jme3.app.state.AppState
      +
      Setzt außer Kraft:
      +
      update in Klasse com.jme3.app.state.AbstractAppState
      +
      Parameter:
      +
      tpf - Time per frame
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/Dokumente/JavaDoc/client/docs/javadoc/pp/battleship/client/gui/GameMusic.html b/Dokumente/JavaDoc/client/docs/javadoc/pp/battleship/client/gui/GameMusic.html new file mode 100644 index 0000000..e6f48ba --- /dev/null +++ b/Dokumente/JavaDoc/client/docs/javadoc/pp/battleship/client/gui/GameMusic.html @@ -0,0 +1,285 @@ + + + + +GameMusic (client API) + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Klasse GameMusic

+
+
java.lang.Object +
com.jme3.app.state.AbstractAppState +
pp.battleship.client.gui.GameMusic
+
+
+
+
+
Alle implementierten Schnittstellen:
+
com.jme3.app.state.AppState
+
+
+
public class GameMusic +extends com.jme3.app.state.AbstractAppState
+
+
+
    + +
  • +
    +

    Feldübersicht

    +
    +

    Von Klasse geerbte Felder com.jme3.app.state.AbstractAppState

    +initialized
    +
    +
  • + +
  • +
    +

    Konstruktorübersicht

    +
    Konstruktoren
    +
    +
    Konstruktor
    +
    Beschreibung
    + +
     
    +
    +
    +
  • + +
  • +
    +

    Methodenübersicht

    +
    +
    +
    +
    +
    Modifizierer und Typ
    +
    Methode
    +
    Beschreibung
    +
    static boolean
    + +
    +
    Checks if sound is enabled in the preferences.
    +
    +
    void
    +
    initialize(com.jme3.app.state.AppStateManager stateManager, + com.jme3.app.Application app)
    +
    +
    Initializes the sound effects for the game.
    +
    +
    void
    +
    setEnabled(boolean enabled)
    +
    +
    Sets the enabled state of this AppState.
    +
    +
    void
    +
    setVolume(float vol)
    +
    +
    Sets the volume of music
    +
    +
    void
    + +
    +
    Toggles the game sound on or off.
    +
    +
    static float
    + +
    +
    Checks if sound is enabled in the preferences.
    +
    +
    +
    +
    +
    +

    Von Klasse geerbte Methoden com.jme3.app.state.AbstractAppState

    +cleanup, getId, isEnabled, isInitialized, postRender, render, setId, stateAttached, stateDetached, update
    +
    +

    Von Klasse geerbte Methoden java.lang.Object

    +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    +
    +
  • +
+
+
+
    + +
  • +
    +

    Konstruktordetails

    +
      +
    • +
      +

      GameMusic

      +
      public GameMusic()
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Methodendetails

    +
      +
    • +
      +

      enabledInPreferences

      +
      public static boolean enabledInPreferences()
      +
      Checks if sound is enabled in the preferences.
      +
      +
      Gibt zurück:
      +
      true if sound is enabled, false otherwise.
      +
      +
      +
    • +
    • +
      +

      volumeInPreferences

      +
      public static float volumeInPreferences()
      +
      Checks if sound is enabled in the preferences.
      +
      +
      Gibt zurück:
      +
      float to which the volume is set
      +
      +
      +
    • +
    • +
      +

      initialize

      +
      public void initialize(com.jme3.app.state.AppStateManager stateManager, + com.jme3.app.Application app)
      +
      Initializes the sound effects for the game. + Overrides AbstractAppState.initialize(AppStateManager, Application)
      +
      +
      Angegeben von:
      +
      initialize in Schnittstelle com.jme3.app.state.AppState
      +
      Setzt außer Kraft:
      +
      initialize in Klasse com.jme3.app.state.AbstractAppState
      +
      Parameter:
      +
      stateManager - The state manager
      +
      app - The application
      +
      +
      +
    • +
    • +
      +

      setEnabled

      +
      public void setEnabled(boolean enabled)
      +
      Sets the enabled state of this AppState. + Overrides AbstractAppState.setEnabled(boolean)
      +
      +
      Angegeben von:
      +
      setEnabled in Schnittstelle com.jme3.app.state.AppState
      +
      Setzt außer Kraft:
      +
      setEnabled in Klasse com.jme3.app.state.AbstractAppState
      +
      Parameter:
      +
      enabled - true to enable the AppState, false to disable it.
      +
      +
      +
    • +
    • +
      +

      toggleSound

      +
      public void toggleSound()
      +
      Toggles the game sound on or off.
      +
      +
    • +
    • +
      +

      setVolume

      +
      public void setVolume(float vol)
      +
      Sets the volume of music
      +
      +
      Parameter:
      +
      vol - the volume to which the music should be set
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/Dokumente/JavaDoc/client/docs/javadoc/pp/battleship/client/gui/ParticleEffectFactory.html b/Dokumente/JavaDoc/client/docs/javadoc/pp/battleship/client/gui/ParticleEffectFactory.html new file mode 100644 index 0000000..ce4b72f --- /dev/null +++ b/Dokumente/JavaDoc/client/docs/javadoc/pp/battleship/client/gui/ParticleEffectFactory.html @@ -0,0 +1,153 @@ + + + + +ParticleEffectFactory (client API) + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Klasse ParticleEffectFactory

+
+
java.lang.Object +
pp.battleship.client.gui.ParticleEffectFactory
+
+
+
+
public class ParticleEffectFactory +extends Object
+
Factory class responsible for creating particle effects used in the game. + This centralizes the creation of various types of particle emitters.
+
+
+ +
+
+
    + +
  • +
    +

    Methodendetails

    +
      +
    • +
      +

      createWaterSplash

      +
      public com.jme3.effect.ParticleEmitter createWaterSplash()
      +
      Creates a one-time water splash particle emitter.
      +
      +
      Gibt zurück:
      +
      a configured one-time water splash particle emitter
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/Dokumente/JavaDoc/client/docs/javadoc/pp/battleship/client/gui/SeaAppState.html b/Dokumente/JavaDoc/client/docs/javadoc/pp/battleship/client/gui/SeaAppState.html new file mode 100644 index 0000000..06c3c67 --- /dev/null +++ b/Dokumente/JavaDoc/client/docs/javadoc/pp/battleship/client/gui/SeaAppState.html @@ -0,0 +1,266 @@ + + + + +SeaAppState (client API) + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Klasse SeaAppState

+
+
java.lang.Object +
com.jme3.app.state.AbstractAppState +
pp.battleship.client.BattleshipAppState +
pp.battleship.client.gui.SeaAppState
+
+
+
+
+
+
Alle implementierten Schnittstellen:
+
com.jme3.app.state.AppState
+
+
+
public class SeaAppState +extends BattleshipAppState
+
Manages the rendering and visual aspects of the sea and sky in the Battleship game. + This state is responsible for setting up and updating the sea, sky, and lighting + conditions, and controls the camera to create a dynamic view of the game environment.
+
+
+
    + +
  • +
    +

    Feldübersicht

    +
    +

    Von Klasse geerbte Felder com.jme3.app.state.AbstractAppState

    +initialized
    +
    +
  • + +
  • +
    +

    Konstruktorübersicht

    +
    Konstruktoren
    +
    +
    Konstruktor
    +
    Beschreibung
    + +
     
    +
    +
    +
  • + +
  • +
    +

    Methodenübersicht

    +
    +
    +
    +
    +
    Modifizierer und Typ
    +
    Methode
    +
    Beschreibung
    +
    protected void
    + +
    +
    Disables the sea and sky state, removing visual elements from the scene and unregistering listeners.
    +
    +
    protected void
    + +
    +
    Enables the sea and sky state, setting up the scene and registering any necessary listeners.
    +
    +
    void
    +
    initialize(com.jme3.app.state.AppStateManager stateManager, + com.jme3.app.Application application)
    +
    +
    Initializes the state by setting up the sky, lights, and other visual components.
    +
    +
    void
    +
    update(float tpf)
    +
    +
    Updates the state each frame, moving the camera to simulate it circling around the map.
    +
    +
    +
    +
    +
    +

    Von Klasse geerbte Methoden pp.battleship.client.BattleshipAppState

    +getApp, getGameLogic, setEnabled, showsDialog
    +
    +

    Von Klasse geerbte Methoden com.jme3.app.state.AbstractAppState

    +cleanup, getId, isEnabled, isInitialized, postRender, render, setId, stateAttached, stateDetached
    +
    +

    Von Klasse geerbte Methoden java.lang.Object

    +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    +
    +
  • +
+
+
+
    + +
  • +
    +

    Konstruktordetails

    +
      +
    • +
      +

      SeaAppState

      +
      public SeaAppState()
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Methodendetails

    +
      +
    • +
      +

      initialize

      +
      public void initialize(com.jme3.app.state.AppStateManager stateManager, + com.jme3.app.Application application)
      +
      Initializes the state by setting up the sky, lights, and other visual components. + This method is called when the state is first attached to the state manager.
      +
      +
      Angegeben von:
      +
      initialize in Schnittstelle com.jme3.app.state.AppState
      +
      Setzt außer Kraft:
      +
      initialize in Klasse BattleshipAppState
      +
      Parameter:
      +
      stateManager - the state manager
      +
      application - the application
      +
      +
      +
    • +
    • +
      +

      enableState

      +
      protected void enableState()
      +
      Enables the sea and sky state, setting up the scene and registering any necessary listeners. + This method is called when the state is set to active.
      +
      +
      Angegeben von:
      +
      enableState in Klasse BattleshipAppState
      +
      +
      +
    • +
    • +
      +

      disableState

      +
      protected void disableState()
      +
      Disables the sea and sky state, removing visual elements from the scene and unregistering listeners. + This method is called when the state is set to inactive.
      +
      +
      Angegeben von:
      +
      disableState in Klasse BattleshipAppState
      +
      +
      +
    • +
    • +
      +

      update

      +
      public void update(float tpf)
      +
      Updates the state each frame, moving the camera to simulate it circling around the map.
      +
      +
      Angegeben von:
      +
      update in Schnittstelle com.jme3.app.state.AppState
      +
      Setzt außer Kraft:
      +
      update in Klasse com.jme3.app.state.AbstractAppState
      +
      Parameter:
      +
      tpf - the time per frame (seconds)
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/Dokumente/JavaDoc/client/docs/javadoc/pp/battleship/client/gui/VolumeSlider.html b/Dokumente/JavaDoc/client/docs/javadoc/pp/battleship/client/gui/VolumeSlider.html new file mode 100644 index 0000000..799f5fd --- /dev/null +++ b/Dokumente/JavaDoc/client/docs/javadoc/pp/battleship/client/gui/VolumeSlider.html @@ -0,0 +1,235 @@ + + + + +VolumeSlider (client API) + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Klasse VolumeSlider

+
+
java.lang.Object +
com.jme3.scene.Spatial +
com.jme3.scene.Node +
com.simsilica.lemur.Panel +
com.simsilica.lemur.Slider +
pp.battleship.client.gui.VolumeSlider
+
+
+
+
+
+
+
+
Alle implementierten Schnittstellen:
+
com.jme3.anim.util.HasLocalTransform, com.jme3.asset.CloneableSmartAsset, com.jme3.collision.Collidable, com.jme3.export.Savable, com.jme3.util.clone.JmeCloneable, Cloneable
+
+
+
public class VolumeSlider +extends com.simsilica.lemur.Slider
+
The VolumeSlider class represents the Volume Slider in the Menu. + It extends the Slider class and provides functionalities for setting the music volume, + with the help of the Slider in the GUI
+
+
+
    + +
  • +
    +

    Verschachtelte Klassen - Übersicht

    +
    +

    Von Klasse geerbte verschachtelte Klassen/Schnittstellen com.jme3.scene.Spatial

    +com.jme3.scene.Spatial.BatchHint, com.jme3.scene.Spatial.CullHint, com.jme3.scene.Spatial.DFSMode
    +
    +
  • + +
  • +
    +

    Feldübersicht

    +
    +

    Von Klasse geerbte Felder com.simsilica.lemur.Slider

    +DOWN_ID, ELEMENT_ID, LEFT_ID, RANGE_ID, RIGHT_ID, THUMB_ID, UP_ID
    +
    +

    Von Klasse geerbte Felder com.simsilica.lemur.Panel

    +EFFECT_CLOSE, EFFECT_OPEN, LAYER_BACKGROUND, LAYER_BORDER, LAYER_INSETS
    +
    +

    Von Klasse geerbte Felder com.jme3.scene.Node

    +children
    +
    +

    Von Klasse geerbte Felder com.jme3.scene.Spatial

    +batchHint, controls, cullHint, frustrumIntersects, key, localLights, localOverrides, localTransform, name, parent, queueBucket, queueDistance, refreshFlags, RF_BOUND, RF_CHILD_LIGHTLIST, RF_LIGHTLIST, RF_MATPARAM_OVERRIDE, RF_TRANSFORM, shadowMode, userData, worldBound, worldLights, worldOverrides, worldTransform
    +
    +
  • + +
  • +
    +

    Konstruktorübersicht

    +
    Konstruktoren
    +
    +
    Konstruktor
    +
    Beschreibung
    + +
    +
    Constructs the Volume Slider for the Menu dialog
    +
    +
    +
    +
  • + +
  • +
    +

    Methodenübersicht

    +
    +
    +
    +
    +
    Modifizierer und Typ
    +
    Methode
    +
    Beschreibung
    +
    void
    + +
    +
    when triggered it updates the volume to the value set with the slider
    +
    +
    +
    +
    +
    +

    Von Klasse geerbte Methoden com.simsilica.lemur.Slider

    +getDecrementButton, getDelta, getIncrementButton, getModel, getRangePanel, getThumbButton, getValueForLocation, initializeDefaultStyles, resetStateView, setDelta, setModel, setupCommands, updateLogicalState
    +
    +

    Von Klasse geerbte Methoden com.simsilica.lemur.Panel

    +addEffect, addMouseListener, getAlpha, getBackground, getBorder, getEffectControl, getEffects, getElementId, getInsets, getInsetsComponent, getPreferredSize, getSize, getStyle, hasEffect, initializeDefaultStyles, removeEffect, removeMouseListener, runEffect, setAlpha, setAlpha, setBackground, setBorder, setChildAlpha, setEffects, setInsets, setInsetsComponent, setPreferredSize, setSize, toString
    +
    +

    Von Klasse geerbte Methoden com.jme3.scene.Node

    +attachChild, attachChildAt, breadthFirstTraversal, clone, cloneFields, collideWith, deepClone, depthFirstTraversal, descendantMatches, descendantMatches, descendantMatches, detachAllChildren, detachChild, detachChildAt, detachChildNamed, getChild, getChild, getChildIndex, getChildren, getQuantity, getTriangleCount, getVertexCount, hasChild, oldDeepClone, read, setLightListRefresh, setLodLevel, setMaterial, setMatParamOverrideRefresh, setModelBound, setParent, setTransformRefresh, swapChildren, updateGeometricState, updateModelBound, updateWorldBound, write
    +
    +

    Von Klasse geerbte Methoden com.jme3.scene.Spatial

    +addControl, addControlAt, addLight, addMatParamOverride, breadthFirstTraversal, center, checkCulling, clearMatParamOverrides, clone, depthFirstTraversal, forceRefresh, getBatchHint, getControl, getControl, getCullHint, getKey, getLastFrustumIntersection, getLocalBatchHint, getLocalCullHint, getLocalLightList, getLocalMatParamOverrides, getLocalQueueBucket, getLocalRotation, getLocalScale, getLocalShadowMode, getLocalToWorldMatrix, getLocalTransform, getLocalTranslation, getName, getNumControls, getParent, getQueueBucket, getShadowMode, getUserData, getUserDataKeys, getWorldBound, getWorldLightList, getWorldMatParamOverrides, getWorldRotation, getWorldScale, getWorldTransform, getWorldTranslation, hasAncestor, jmeClone, localToWorld, lookAt, matches, move, move, oldClone, removeControl, removeControl, removeFromParent, removeLight, removeMatParamOverride, rotate, rotate, rotateUpTo, runControlRender, scale, scale, setBatchHint, setBoundRefresh, setCullHint, setKey, setLastFrustumIntersection, setLocalRotation, setLocalRotation, setLocalScale, setLocalScale, setLocalScale, setLocalTransform, setLocalTranslation, setLocalTranslation, setName, setQueueBucket, setRequiresUpdates, setShadowMode, setUserData, updateMatParamOverrides, updateWorldLightList, updateWorldTransforms, worldToLocal
    +
    +

    Von Klasse geerbte Methoden java.lang.Object

    +equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
    +
    +
  • +
+
+
+
    + +
  • +
    +

    Konstruktordetails

    +
      +
    • +
      +

      VolumeSlider

      +
      public VolumeSlider(GameMusic music)
      +
      Constructs the Volume Slider for the Menu dialog
      +
      +
      Parameter:
      +
      music - the music instance
      +
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Methodendetails

    +
      +
    • +
      +

      update

      +
      public void update()
      +
      when triggered it updates the volume to the value set with the slider
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/Dokumente/JavaDoc/client/docs/javadoc/pp/battleship/client/gui/package-summary.html b/Dokumente/JavaDoc/client/docs/javadoc/pp/battleship/client/gui/package-summary.html new file mode 100644 index 0000000..6d26272 --- /dev/null +++ b/Dokumente/JavaDoc/client/docs/javadoc/pp/battleship/client/gui/package-summary.html @@ -0,0 +1,122 @@ + + + + +pp.battleship.client.gui (client API) + + + + + + + + + + + + + +
+ +
+
+
+

Package pp.battleship.client.gui

+
+
+
package pp.battleship.client.gui
+
+
    +
  • + +
  • +
  • +
    +
    Klassen
    +
    +
    Klasse
    +
    Beschreibung
    + +
    +
    Represents the state responsible for managing the battle interface within the Battleship game.
    +
    + +
    +
    EditorState manages the editor mode in the Battleship game, + allowing players to place and rotate ships.
    +
    + +
     
    + +
    +
    Factory class responsible for creating particle effects used in the game.
    +
    + +
    +
    Manages the rendering and visual aspects of the sea and sky in the Battleship game.
    +
    + +
    +
    The VolumeSlider class represents the Volume Slider in the Menu.
    +
    +
    +
    +
  • +
+
+
+
+
+ + diff --git a/Dokumente/JavaDoc/client/docs/javadoc/pp/battleship/client/gui/package-tree.html b/Dokumente/JavaDoc/client/docs/javadoc/pp/battleship/client/gui/package-tree.html new file mode 100644 index 0000000..e5d4cb1 --- /dev/null +++ b/Dokumente/JavaDoc/client/docs/javadoc/pp/battleship/client/gui/package-tree.html @@ -0,0 +1,99 @@ + + + + +pp.battleship.client.gui Klassenhierarchie (client API) + + + + + + + + + + + + + +
+ +
+
+
+

Hierarchie für Package pp.battleship.client.gui

+
+Packagehierarchien: + +
+

Klassenhierarchie

+
    +
  • java.lang.Object +
      +
    • com.jme3.app.state.AbstractAppState (implements com.jme3.app.state.AppState) + +
    • +
    • pp.battleship.client.gui.ParticleEffectFactory
    • +
    • com.jme3.scene.Spatial (implements java.lang.Cloneable, com.jme3.asset.CloneableSmartAsset, com.jme3.collision.Collidable, com.jme3.anim.util.HasLocalTransform, com.jme3.util.clone.JmeCloneable, com.jme3.export.Savable) +
        +
      • com.jme3.scene.Node +
          +
        • com.simsilica.lemur.Panel +
            +
          • com.simsilica.lemur.Slider + +
          • +
          +
        • +
        +
      • +
      +
    • +
    +
  • +
+
+
+
+
+ + diff --git a/Dokumente/JavaDoc/client/docs/javadoc/pp/battleship/client/package-summary.html b/Dokumente/JavaDoc/client/docs/javadoc/pp/battleship/client/package-summary.html new file mode 100644 index 0000000..190798b --- /dev/null +++ b/Dokumente/JavaDoc/client/docs/javadoc/pp/battleship/client/package-summary.html @@ -0,0 +1,115 @@ + + + + +pp.battleship.client (client API) + + + + + + + + + + + + + +
+ +
+
+
+

Package pp.battleship.client

+
+
+
package pp.battleship.client
+
+
    +
  • + +
  • +
  • +
    +
    Klassen
    +
    +
    Klasse
    +
    Beschreibung
    + +
    +
    The main class for the Battleship client application.
    +
    + +
    +
    Provides access to the Battleship application configuration.
    +
    + +
    +
    Abstract class representing a state in the Battleship game.
    +
    + +
    +
    An application state that plays sounds.
    +
    +
    +
    +
  • +
+
+
+
+
+ + diff --git a/Dokumente/JavaDoc/client/docs/javadoc/pp/battleship/client/package-tree.html b/Dokumente/JavaDoc/client/docs/javadoc/pp/battleship/client/package-tree.html new file mode 100644 index 0000000..58cae5b --- /dev/null +++ b/Dokumente/JavaDoc/client/docs/javadoc/pp/battleship/client/package-tree.html @@ -0,0 +1,97 @@ + + + + +pp.battleship.client Klassenhierarchie (client API) + + + + + + + + + + + + + +
+ +
+
+
+

Hierarchie für Package pp.battleship.client

+
+Packagehierarchien: + +
+

Klassenhierarchie

+
    +
  • java.lang.Object +
      +
    • com.jme3.app.state.AbstractAppState (implements com.jme3.app.state.AppState) + +
    • +
    • pp.util.config.Config +
        +
      • pp.battleship.BattleshipConfig +
          +
        • pp.battleship.game.singlemode.BattleshipClientConfig + +
        • +
        +
      • +
      +
    • +
    • com.jme3.app.LegacyApplication (implements com.jme3.app.Application, com.jme3.system.SystemListener) +
        +
      • com.jme3.app.SimpleApplication +
          +
        • pp.battleship.client.BattleshipApp (implements pp.battleship.game.client.BattleshipClient, pp.battleship.notification.GameEventListener)
        • +
        +
      • +
      +
    • +
    +
  • +
+
+
+
+
+ + diff --git a/Dokumente/JavaDoc/client/docs/javadoc/pp/battleship/server/BattleshipServer.html b/Dokumente/JavaDoc/client/docs/javadoc/pp/battleship/server/BattleshipServer.html new file mode 100644 index 0000000..ef9ac57 --- /dev/null +++ b/Dokumente/JavaDoc/client/docs/javadoc/pp/battleship/server/BattleshipServer.html @@ -0,0 +1,228 @@ + + + + +BattleshipServer (client API) + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Klasse BattleshipServer

+
+
java.lang.Object +
pp.battleship.server.BattleshipServer
+
+
+
+
Alle implementierten Schnittstellen:
+
com.jme3.network.ConnectionListener, com.jme3.network.MessageListener<com.jme3.network.HostedConnection>, pp.battleship.game.server.ServerSender
+
+
+
public class BattleshipServer +extends Object +implements com.jme3.network.MessageListener<com.jme3.network.HostedConnection>, com.jme3.network.ConnectionListener, pp.battleship.game.server.ServerSender
+
Server implementing the visitor pattern as MessageReceiver for ClientMessages
+
+
+
    + +
  • +
    +

    Methodenübersicht

    +
    +
    +
    +
    +
    Modifizierer und Typ
    +
    Methode
    +
    Beschreibung
    +
    void
    +
    connectionAdded(com.jme3.network.Server server, + com.jme3.network.HostedConnection hostedConnection)
    +
     
    +
    void
    +
    connectionRemoved(com.jme3.network.Server server, + com.jme3.network.HostedConnection hostedConnection)
    +
     
    +
    static void
    +
    main(String[] args)
    +
    +
    Starts the Battleships server.
    +
    +
    void
    +
    messageReceived(com.jme3.network.HostedConnection source, + com.jme3.network.Message message)
    +
     
    +
    void
    +
    run()
    +
     
    +
    void
    +
    send(int id, + pp.battleship.message.server.ServerMessage message)
    +
    +
    Send the specified message to the specified connection.
    +
    +
    +
    +
    +
    +

    Von Klasse geerbte Methoden java.lang.Object

    +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    +
    +
  • +
+
+
+
    + +
  • +
    +

    Methodendetails

    +
      +
    • +
      +

      main

      +
      public static void main(String[] args)
      +
      Starts the Battleships server.
      +
      +
    • +
    • +
      +

      run

      +
      public void run()
      +
      +
    • +
    • +
      +

      messageReceived

      +
      public void messageReceived(com.jme3.network.HostedConnection source, + com.jme3.network.Message message)
      +
      +
      Angegeben von:
      +
      messageReceived in Schnittstelle com.jme3.network.MessageListener<com.jme3.network.HostedConnection>
      +
      +
      +
    • +
    • +
      +

      connectionAdded

      +
      public void connectionAdded(com.jme3.network.Server server, + com.jme3.network.HostedConnection hostedConnection)
      +
      +
      Angegeben von:
      +
      connectionAdded in Schnittstelle com.jme3.network.ConnectionListener
      +
      +
      +
    • +
    • +
      +

      connectionRemoved

      +
      public void connectionRemoved(com.jme3.network.Server server, + com.jme3.network.HostedConnection hostedConnection)
      +
      +
      Angegeben von:
      +
      connectionRemoved in Schnittstelle com.jme3.network.ConnectionListener
      +
      +
      +
    • +
    • +
      +

      send

      +
      public void send(int id, + pp.battleship.message.server.ServerMessage message)
      +
      Send the specified message to the specified connection.
      +
      +
      Angegeben von:
      +
      send in Schnittstelle pp.battleship.game.server.ServerSender
      +
      Parameter:
      +
      id - the connection id
      +
      message - the message
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/Dokumente/JavaDoc/client/docs/javadoc/pp/battleship/server/package-summary.html b/Dokumente/JavaDoc/client/docs/javadoc/pp/battleship/server/package-summary.html new file mode 100644 index 0000000..697cb42 --- /dev/null +++ b/Dokumente/JavaDoc/client/docs/javadoc/pp/battleship/server/package-summary.html @@ -0,0 +1,92 @@ + + + + +pp.battleship.server (client API) + + + + + + + + + + + + + +
+ +
+
+
+

Package pp.battleship.server

+
+
+
package pp.battleship.server
+
+
    +
  • +
    +
    Klassen
    +
    +
    Klasse
    +
    Beschreibung
    + +
    +
    Server implementing the visitor pattern as MessageReceiver for ClientMessages
    +
    +
    +
    +
  • +
+
+
+
+
+ + diff --git a/Dokumente/JavaDoc/client/docs/javadoc/pp/battleship/server/package-tree.html b/Dokumente/JavaDoc/client/docs/javadoc/pp/battleship/server/package-tree.html new file mode 100644 index 0000000..87944f1 --- /dev/null +++ b/Dokumente/JavaDoc/client/docs/javadoc/pp/battleship/server/package-tree.html @@ -0,0 +1,70 @@ + + + + +pp.battleship.server Klassenhierarchie (client API) + + + + + + + + + + + + + +
+ +
+
+
+

Hierarchie für Package pp.battleship.server

+
+Packagehierarchien: + +
+

Klassenhierarchie

+
    +
  • java.lang.Object +
      +
    • pp.battleship.server.BattleshipServer (implements com.jme3.network.ConnectionListener, com.jme3.network.MessageListener<S>, pp.battleship.game.server.ServerSender)
    • +
    +
  • +
+
+
+
+
+ + diff --git a/Dokumente/JavaDoc/client/docs/javadoc/resources/glass.png b/Dokumente/JavaDoc/client/docs/javadoc/resources/glass.png new file mode 100644 index 0000000..a7f591f Binary files /dev/null and b/Dokumente/JavaDoc/client/docs/javadoc/resources/glass.png differ diff --git a/Dokumente/JavaDoc/client/docs/javadoc/resources/x.png b/Dokumente/JavaDoc/client/docs/javadoc/resources/x.png new file mode 100644 index 0000000..30548a7 Binary files /dev/null and b/Dokumente/JavaDoc/client/docs/javadoc/resources/x.png differ diff --git a/Dokumente/JavaDoc/client/docs/javadoc/script-dir/jquery-3.6.1.min.js b/Dokumente/JavaDoc/client/docs/javadoc/script-dir/jquery-3.6.1.min.js new file mode 100644 index 0000000..2c69bc9 --- /dev/null +++ b/Dokumente/JavaDoc/client/docs/javadoc/script-dir/jquery-3.6.1.min.js @@ -0,0 +1,2 @@ +/*! jQuery v3.6.1 | (c) OpenJS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,y=n.hasOwnProperty,a=y.toString,l=a.call(Object),v={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.6.1",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&v(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!y||!y.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ve(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ye(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ve(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],y=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&y.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||y.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||y.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||y.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||y.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||y.push(".#.+[+~]"),e.querySelectorAll("\\\f"),y.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&y.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&y.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&y.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),y.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),y=y.length&&new RegExp(y.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),v=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&v(p,e)?-1:t==C||t.ownerDocument==p&&v(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!y||!y.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),v.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",v.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",v.option=!!ce.lastChild;var ge={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ye(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ve(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Ut,Xt=[],Vt=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Xt.pop()||S.expando+"_"+Ct.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Vt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Vt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Vt,"$1"+r):!1!==e.jsonp&&(e.url+=(Et.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Xt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),v.createHTMLDocument=((Ut=E.implementation.createHTMLDocument("").body).innerHTML="
",2===Ut.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(v.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return B(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=_e(v.pixelPosition,function(e,t){if(t)return t=Be(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return B(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0",options:{classes:{},disabled:!1,create:null},_createWidget:function(t,e){e=x(e||this.defaultElement||this)[0],this.element=x(e),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=x(),this.hoverable=x(),this.focusable=x(),this.classesElementLookup={},e!==this&&(x.data(e,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===e&&this.destroy()}}),this.document=x(e.style?e.ownerDocument:e.document||e),this.window=x(this.document[0].defaultView||this.document[0].parentWindow)),this.options=x.widget.extend({},this.options,this._getCreateOptions(),t),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:x.noop,_create:x.noop,_init:x.noop,destroy:function(){var i=this;this._destroy(),x.each(this.classesElementLookup,function(t,e){i._removeClass(e,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:x.noop,widget:function(){return this.element},option:function(t,e){var i,s,n,o=t;if(0===arguments.length)return x.widget.extend({},this.options);if("string"==typeof t)if(o={},t=(i=t.split(".")).shift(),i.length){for(s=o[t]=x.widget.extend({},this.options[t]),n=0;n
"),i=e.children()[0];return x("body").append(e),t=i.offsetWidth,e.css("overflow","scroll"),t===(i=i.offsetWidth)&&(i=e[0].clientWidth),e.remove(),s=t-i},getScrollInfo:function(t){var e=t.isWindow||t.isDocument?"":t.element.css("overflow-x"),i=t.isWindow||t.isDocument?"":t.element.css("overflow-y"),e="scroll"===e||"auto"===e&&t.widthC(E(s),E(n))?o.important="horizontal":o.important="vertical",c.using.call(this,t,o)}),l.offset(x.extend(u,{using:t}))})},x.ui.position={fit:{left:function(t,e){var i=e.within,s=i.isWindow?i.scrollLeft:i.offset.left,n=i.width,o=t.left-e.collisionPosition.marginLeft,l=s-o,a=o+e.collisionWidth-n-s;e.collisionWidth>n?0n?0",delay:300,options:{icons:{submenu:"ui-icon-caret-1-e"},items:"> *",menus:"ul",position:{my:"left top",at:"right top"},role:"menu",blur:null,focus:null,select:null},_create:function(){this.activeMenu=this.element,this.mouseHandled=!1,this.lastMousePosition={x:null,y:null},this.element.uniqueId().attr({role:this.options.role,tabIndex:0}),this._addClass("ui-menu","ui-widget ui-widget-content"),this._on({"mousedown .ui-menu-item":function(t){t.preventDefault(),this._activateItem(t)},"click .ui-menu-item":function(t){var e=x(t.target),i=x(x.ui.safeActiveElement(this.document[0]));!this.mouseHandled&&e.not(".ui-state-disabled").length&&(this.select(t),t.isPropagationStopped()||(this.mouseHandled=!0),e.has(".ui-menu").length?this.expand(t):!this.element.is(":focus")&&i.closest(".ui-menu").length&&(this.element.trigger("focus",[!0]),this.active&&1===this.active.parents(".ui-menu").length&&clearTimeout(this.timer)))},"mouseenter .ui-menu-item":"_activateItem","mousemove .ui-menu-item":"_activateItem",mouseleave:"collapseAll","mouseleave .ui-menu":"collapseAll",focus:function(t,e){var i=this.active||this._menuItems().first();e||this.focus(t,i)},blur:function(t){this._delay(function(){x.contains(this.element[0],x.ui.safeActiveElement(this.document[0]))||this.collapseAll(t)})},keydown:"_keydown"}),this.refresh(),this._on(this.document,{click:function(t){this._closeOnDocumentClick(t)&&this.collapseAll(t,!0),this.mouseHandled=!1}})},_activateItem:function(t){var e,i;this.previousFilter||t.clientX===this.lastMousePosition.x&&t.clientY===this.lastMousePosition.y||(this.lastMousePosition={x:t.clientX,y:t.clientY},e=x(t.target).closest(".ui-menu-item"),i=x(t.currentTarget),e[0]===i[0]&&(i.is(".ui-state-active")||(this._removeClass(i.siblings().children(".ui-state-active"),null,"ui-state-active"),this.focus(t,i))))},_destroy:function(){var t=this.element.find(".ui-menu-item").removeAttr("role aria-disabled").children(".ui-menu-item-wrapper").removeUniqueId().removeAttr("tabIndex role aria-haspopup");this.element.removeAttr("aria-activedescendant").find(".ui-menu").addBack().removeAttr("role aria-labelledby aria-expanded aria-hidden aria-disabled tabIndex").removeUniqueId().show(),t.children().each(function(){var t=x(this);t.data("ui-menu-submenu-caret")&&t.remove()})},_keydown:function(t){var e,i,s,n=!0;switch(t.keyCode){case x.ui.keyCode.PAGE_UP:this.previousPage(t);break;case x.ui.keyCode.PAGE_DOWN:this.nextPage(t);break;case x.ui.keyCode.HOME:this._move("first","first",t);break;case x.ui.keyCode.END:this._move("last","last",t);break;case x.ui.keyCode.UP:this.previous(t);break;case x.ui.keyCode.DOWN:this.next(t);break;case x.ui.keyCode.LEFT:this.collapse(t);break;case x.ui.keyCode.RIGHT:this.active&&!this.active.is(".ui-state-disabled")&&this.expand(t);break;case x.ui.keyCode.ENTER:case x.ui.keyCode.SPACE:this._activate(t);break;case x.ui.keyCode.ESCAPE:this.collapse(t);break;default:e=this.previousFilter||"",s=n=!1,i=96<=t.keyCode&&t.keyCode<=105?(t.keyCode-96).toString():String.fromCharCode(t.keyCode),clearTimeout(this.filterTimer),i===e?s=!0:i=e+i,e=this._filterMenuItems(i),(e=s&&-1!==e.index(this.active.next())?this.active.nextAll(".ui-menu-item"):e).length||(i=String.fromCharCode(t.keyCode),e=this._filterMenuItems(i)),e.length?(this.focus(t,e),this.previousFilter=i,this.filterTimer=this._delay(function(){delete this.previousFilter},1e3)):delete this.previousFilter}n&&t.preventDefault()},_activate:function(t){this.active&&!this.active.is(".ui-state-disabled")&&(this.active.children("[aria-haspopup='true']").length?this.expand(t):this.select(t))},refresh:function(){var t,e,s=this,n=this.options.icons.submenu,i=this.element.find(this.options.menus);this._toggleClass("ui-menu-icons",null,!!this.element.find(".ui-icon").length),e=i.filter(":not(.ui-menu)").hide().attr({role:this.options.role,"aria-hidden":"true","aria-expanded":"false"}).each(function(){var t=x(this),e=t.prev(),i=x("").data("ui-menu-submenu-caret",!0);s._addClass(i,"ui-menu-icon","ui-icon "+n),e.attr("aria-haspopup","true").prepend(i),t.attr("aria-labelledby",e.attr("id"))}),this._addClass(e,"ui-menu","ui-widget ui-widget-content ui-front"),(t=i.add(this.element).find(this.options.items)).not(".ui-menu-item").each(function(){var t=x(this);s._isDivider(t)&&s._addClass(t,"ui-menu-divider","ui-widget-content")}),i=(e=t.not(".ui-menu-item, .ui-menu-divider")).children().not(".ui-menu").uniqueId().attr({tabIndex:-1,role:this._itemRole()}),this._addClass(e,"ui-menu-item")._addClass(i,"ui-menu-item-wrapper"),t.filter(".ui-state-disabled").attr("aria-disabled","true"),this.active&&!x.contains(this.element[0],this.active[0])&&this.blur()},_itemRole:function(){return{menu:"menuitem",listbox:"option"}[this.options.role]},_setOption:function(t,e){var i;"icons"===t&&(i=this.element.find(".ui-menu-icon"),this._removeClass(i,null,this.options.icons.submenu)._addClass(i,null,e.submenu)),this._super(t,e)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",String(t)),this._toggleClass(null,"ui-state-disabled",!!t)},focus:function(t,e){var i;this.blur(t,t&&"focus"===t.type),this._scrollIntoView(e),this.active=e.first(),i=this.active.children(".ui-menu-item-wrapper"),this._addClass(i,null,"ui-state-active"),this.options.role&&this.element.attr("aria-activedescendant",i.attr("id")),i=this.active.parent().closest(".ui-menu-item").children(".ui-menu-item-wrapper"),this._addClass(i,null,"ui-state-active"),t&&"keydown"===t.type?this._close():this.timer=this._delay(function(){this._close()},this.delay),(i=e.children(".ui-menu")).length&&t&&/^mouse/.test(t.type)&&this._startOpening(i),this.activeMenu=e.parent(),this._trigger("focus",t,{item:e})},_scrollIntoView:function(t){var e,i,s;this._hasScroll()&&(i=parseFloat(x.css(this.activeMenu[0],"borderTopWidth"))||0,s=parseFloat(x.css(this.activeMenu[0],"paddingTop"))||0,e=t.offset().top-this.activeMenu.offset().top-i-s,i=this.activeMenu.scrollTop(),s=this.activeMenu.height(),t=t.outerHeight(),e<0?this.activeMenu.scrollTop(i+e):s",options:{appendTo:null,autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null,change:null,close:null,focus:null,open:null,response:null,search:null,select:null},requestIndex:0,pending:0,liveRegionTimer:null,_create:function(){var i,s,n,t=this.element[0].nodeName.toLowerCase(),e="textarea"===t,t="input"===t;this.isMultiLine=e||!t&&this._isContentEditable(this.element),this.valueMethod=this.element[e||t?"val":"text"],this.isNewMenu=!0,this._addClass("ui-autocomplete-input"),this.element.attr("autocomplete","off"),this._on(this.element,{keydown:function(t){if(this.element.prop("readOnly"))s=n=i=!0;else{s=n=i=!1;var e=x.ui.keyCode;switch(t.keyCode){case e.PAGE_UP:i=!0,this._move("previousPage",t);break;case e.PAGE_DOWN:i=!0,this._move("nextPage",t);break;case e.UP:i=!0,this._keyEvent("previous",t);break;case e.DOWN:i=!0,this._keyEvent("next",t);break;case e.ENTER:this.menu.active&&(i=!0,t.preventDefault(),this.menu.select(t));break;case e.TAB:this.menu.active&&this.menu.select(t);break;case e.ESCAPE:this.menu.element.is(":visible")&&(this.isMultiLine||this._value(this.term),this.close(t),t.preventDefault());break;default:s=!0,this._searchTimeout(t)}}},keypress:function(t){if(i)return i=!1,void(this.isMultiLine&&!this.menu.element.is(":visible")||t.preventDefault());if(!s){var e=x.ui.keyCode;switch(t.keyCode){case e.PAGE_UP:this._move("previousPage",t);break;case e.PAGE_DOWN:this._move("nextPage",t);break;case e.UP:this._keyEvent("previous",t);break;case e.DOWN:this._keyEvent("next",t)}}},input:function(t){if(n)return n=!1,void t.preventDefault();this._searchTimeout(t)},focus:function(){this.selectedItem=null,this.previous=this._value()},blur:function(t){clearTimeout(this.searching),this.close(t),this._change(t)}}),this._initSource(),this.menu=x("
    ").appendTo(this._appendTo()).menu({role:null}).hide().attr({unselectable:"on"}).menu("instance"),this._addClass(this.menu.element,"ui-autocomplete","ui-front"),this._on(this.menu.element,{mousedown:function(t){t.preventDefault()},menufocus:function(t,e){var i,s;if(this.isNewMenu&&(this.isNewMenu=!1,t.originalEvent&&/^mouse/.test(t.originalEvent.type)))return this.menu.blur(),void this.document.one("mousemove",function(){x(t.target).trigger(t.originalEvent)});s=e.item.data("ui-autocomplete-item"),!1!==this._trigger("focus",t,{item:s})&&t.originalEvent&&/^key/.test(t.originalEvent.type)&&this._value(s.value),(i=e.item.attr("aria-label")||s.value)&&String.prototype.trim.call(i).length&&(clearTimeout(this.liveRegionTimer),this.liveRegionTimer=this._delay(function(){this.liveRegion.html(x("
    ").text(i))},100))},menuselect:function(t,e){var i=e.item.data("ui-autocomplete-item"),s=this.previous;this.element[0]!==x.ui.safeActiveElement(this.document[0])&&(this.element.trigger("focus"),this.previous=s,this._delay(function(){this.previous=s,this.selectedItem=i})),!1!==this._trigger("select",t,{item:i})&&this._value(i.value),this.term=this._value(),this.close(t),this.selectedItem=i}}),this.liveRegion=x("
    ",{role:"status","aria-live":"assertive","aria-relevant":"additions"}).appendTo(this.document[0].body),this._addClass(this.liveRegion,null,"ui-helper-hidden-accessible"),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_destroy:function(){clearTimeout(this.searching),this.element.removeAttr("autocomplete"),this.menu.element.remove(),this.liveRegion.remove()},_setOption:function(t,e){this._super(t,e),"source"===t&&this._initSource(),"appendTo"===t&&this.menu.element.appendTo(this._appendTo()),"disabled"===t&&e&&this.xhr&&this.xhr.abort()},_isEventTargetInWidget:function(t){var e=this.menu.element[0];return t.target===this.element[0]||t.target===e||x.contains(e,t.target)},_closeOnClickOutside:function(t){this._isEventTargetInWidget(t)||this.close()},_appendTo:function(){var t=this.options.appendTo;return t=!(t=!(t=t&&(t.jquery||t.nodeType?x(t):this.document.find(t).eq(0)))||!t[0]?this.element.closest(".ui-front, dialog"):t).length?this.document[0].body:t},_initSource:function(){var i,s,n=this;Array.isArray(this.options.source)?(i=this.options.source,this.source=function(t,e){e(x.ui.autocomplete.filter(i,t.term))}):"string"==typeof this.options.source?(s=this.options.source,this.source=function(t,e){n.xhr&&n.xhr.abort(),n.xhr=x.ajax({url:s,data:t,dataType:"json",success:function(t){e(t)},error:function(){e([])}})}):this.source=this.options.source},_searchTimeout:function(s){clearTimeout(this.searching),this.searching=this._delay(function(){var t=this.term===this._value(),e=this.menu.element.is(":visible"),i=s.altKey||s.ctrlKey||s.metaKey||s.shiftKey;t&&(e||i)||(this.selectedItem=null,this.search(null,s))},this.options.delay)},search:function(t,e){return t=null!=t?t:this._value(),this.term=this._value(),t.length").append(x("
    ").text(e.label)).appendTo(t)},_move:function(t,e){if(this.menu.element.is(":visible"))return this.menu.isFirstItem()&&/^previous/.test(t)||this.menu.isLastItem()&&/^next/.test(t)?(this.isMultiLine||this._value(this.term),void this.menu.blur()):void this.menu[t](e);this.search(null,e)},widget:function(){return this.menu.element},_value:function(){return this.valueMethod.apply(this.element,arguments)},_keyEvent:function(t,e){this.isMultiLine&&!this.menu.element.is(":visible")||(this._move(t,e),e.preventDefault())},_isContentEditable:function(t){if(!t.length)return!1;var e=t.prop("contentEditable");return"inherit"===e?this._isContentEditable(t.parent()):"true"===e}}),x.extend(x.ui.autocomplete,{escapeRegex:function(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")},filter:function(t,e){var i=new RegExp(x.ui.autocomplete.escapeRegex(e),"i");return x.grep(t,function(t){return i.test(t.label||t.value||t)})}}),x.widget("ui.autocomplete",x.ui.autocomplete,{options:{messages:{noResults:"No search results.",results:function(t){return t+(1").text(e))},100))}});x.ui.autocomplete}); \ No newline at end of file diff --git a/Dokumente/JavaDoc/client/docs/javadoc/script.js b/Dokumente/JavaDoc/client/docs/javadoc/script.js new file mode 100644 index 0000000..1e8a64f --- /dev/null +++ b/Dokumente/JavaDoc/client/docs/javadoc/script.js @@ -0,0 +1,268 @@ +/* + * Copyright (c) 2013, 2022, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +var moduleSearchIndex; +var packageSearchIndex; +var typeSearchIndex; +var memberSearchIndex; +var tagSearchIndex; + +var oddRowColor = "odd-row-color"; +var evenRowColor = "even-row-color"; +var sortAsc = "sort-asc"; +var sortDesc = "sort-desc"; +var tableTab = "table-tab"; +var activeTableTab = "active-table-tab"; + +function loadScripts(doc, tag) { + createElem(doc, tag, 'search.js'); + + createElem(doc, tag, 'module-search-index.js'); + createElem(doc, tag, 'package-search-index.js'); + createElem(doc, tag, 'type-search-index.js'); + createElem(doc, tag, 'member-search-index.js'); + createElem(doc, tag, 'tag-search-index.js'); +} + +function createElem(doc, tag, path) { + var script = doc.createElement(tag); + var scriptElement = doc.getElementsByTagName(tag)[0]; + script.src = pathtoroot + path; + scriptElement.parentNode.insertBefore(script, scriptElement); +} + +// Helper for making content containing release names comparable lexicographically +function makeComparable(s) { + return s.toLowerCase().replace(/(\d+)/g, + function(n, m) { + return ("000" + m).slice(-4); + }); +} + +// Switches between two styles depending on a condition +function toggleStyle(classList, condition, trueStyle, falseStyle) { + if (condition) { + classList.remove(falseStyle); + classList.add(trueStyle); + } else { + classList.remove(trueStyle); + classList.add(falseStyle); + } +} + +// Sorts the rows in a table lexicographically by the content of a specific column +function sortTable(header, columnIndex, columns) { + var container = header.parentElement; + var descending = header.classList.contains(sortAsc); + container.querySelectorAll("div.table-header").forEach( + function(header) { + header.classList.remove(sortAsc); + header.classList.remove(sortDesc); + } + ) + var cells = container.children; + var rows = []; + for (var i = columns; i < cells.length; i += columns) { + rows.push(Array.prototype.slice.call(cells, i, i + columns)); + } + var comparator = function(a, b) { + var ka = makeComparable(a[columnIndex].textContent); + var kb = makeComparable(b[columnIndex].textContent); + if (ka < kb) + return descending ? 1 : -1; + if (ka > kb) + return descending ? -1 : 1; + return 0; + }; + var sorted = rows.sort(comparator); + var visible = 0; + sorted.forEach(function(row) { + if (row[0].style.display !== 'none') { + var isEvenRow = visible++ % 2 === 0; + } + row.forEach(function(cell) { + toggleStyle(cell.classList, isEvenRow, evenRowColor, oddRowColor); + container.appendChild(cell); + }) + }); + toggleStyle(header.classList, descending, sortDesc, sortAsc); +} + +// Toggles the visibility of a table category in all tables in a page +function toggleGlobal(checkbox, selected, columns) { + var display = checkbox.checked ? '' : 'none'; + document.querySelectorAll("div.table-tabs").forEach(function(t) { + var id = t.parentElement.getAttribute("id"); + var selectedClass = id + "-tab" + selected; + // if selected is empty string it selects all uncategorized entries + var selectUncategorized = !Boolean(selected); + var visible = 0; + document.querySelectorAll('div.' + id) + .forEach(function(elem) { + if (selectUncategorized) { + if (elem.className.indexOf(selectedClass) === -1) { + elem.style.display = display; + } + } else if (elem.classList.contains(selectedClass)) { + elem.style.display = display; + } + if (elem.style.display === '') { + var isEvenRow = visible++ % (columns * 2) < columns; + toggleStyle(elem.classList, isEvenRow, evenRowColor, oddRowColor); + } + }); + var displaySection = visible === 0 ? 'none' : ''; + t.parentElement.style.display = displaySection; + document.querySelector("li#contents-" + id).style.display = displaySection; + }) +} + +// Shows the elements of a table belonging to a specific category +function show(tableId, selected, columns) { + if (tableId !== selected) { + document.querySelectorAll('div.' + tableId + ':not(.' + selected + ')') + .forEach(function(elem) { + elem.style.display = 'none'; + }); + } + document.querySelectorAll('div.' + selected) + .forEach(function(elem, index) { + elem.style.display = ''; + var isEvenRow = index % (columns * 2) < columns; + toggleStyle(elem.classList, isEvenRow, evenRowColor, oddRowColor); + }); + updateTabs(tableId, selected); +} + +function updateTabs(tableId, selected) { + document.querySelector('div#' + tableId +' .summary-table') + .setAttribute('aria-labelledby', selected); + document.querySelectorAll('button[id^="' + tableId + '"]') + .forEach(function(tab, index) { + if (selected === tab.id || (tableId === selected && index === 0)) { + tab.className = activeTableTab; + tab.setAttribute('aria-selected', true); + tab.setAttribute('tabindex',0); + } else { + tab.className = tableTab; + tab.setAttribute('aria-selected', false); + tab.setAttribute('tabindex',-1); + } + }); +} + +function switchTab(e) { + var selected = document.querySelector('[aria-selected=true]'); + if (selected) { + if ((e.keyCode === 37 || e.keyCode === 38) && selected.previousSibling) { + // left or up arrow key pressed: move focus to previous tab + selected.previousSibling.click(); + selected.previousSibling.focus(); + e.preventDefault(); + } else if ((e.keyCode === 39 || e.keyCode === 40) && selected.nextSibling) { + // right or down arrow key pressed: move focus to next tab + selected.nextSibling.click(); + selected.nextSibling.focus(); + e.preventDefault(); + } + } +} + +var updateSearchResults = function() {}; + +function indexFilesLoaded() { + return moduleSearchIndex + && packageSearchIndex + && typeSearchIndex + && memberSearchIndex + && tagSearchIndex; +} +// Copy the contents of the local snippet to the clipboard +function copySnippet(button) { + copyToClipboard(button.nextElementSibling.innerText); + switchCopyLabel(button.firstElementChild, button.parentElement); +} +// Copy the link to the adjacent header to the clipboard +function copyUrl(button) { + var id; + var header = button.parentElement; + if (header.hasAttribute("id")) { + id = header.getAttribute("id"); + } else if (header.parentElement.tagName === 'SECTION' && header.parentElement.hasAttribute("id")) { + id = header.parentElement.getAttribute("id"); + } else if (header.firstElementChild && header.firstElementChild.tagName === "A" + && header.firstElementChild.hasAttribute("id")) { + id = header.firstElementChild.getAttribute("id"); + } + var url = document.location.href; + if (url.indexOf("#") > -1) { + url = url.substring(0, url.indexOf("#")); + } + copyToClipboard(url + "#" + id); + switchCopyLabel(button.lastElementChild, button.parentElement); +} +function copyToClipboard(content) { + var textarea = document.createElement("textarea"); + textarea.style.height = 0; + document.body.appendChild(textarea); + textarea.value = content; + textarea.select(); + document.execCommand("copy"); + document.body.removeChild(textarea); +} +function switchCopyLabel(span, parent) { + var copied = span.getAttribute("data-copied"); + if (span.innerHTML !== copied) { + var initialLabel = span.innerHTML; + span.innerHTML = copied; + parent.onmouseleave = parent.ontouchend = function() { + span.innerHTML = initialLabel; + }; + } +} +// Workaround for scroll position not being included in browser history (8249133) +document.addEventListener("DOMContentLoaded", function(e) { + var contentDiv = document.querySelector("div.flex-content"); + window.addEventListener("popstate", function(e) { + if (e.state !== null) { + contentDiv.scrollTop = e.state; + } + }); + window.addEventListener("hashchange", function(e) { + history.replaceState(contentDiv.scrollTop, document.title); + }); + var timeoutId; + contentDiv.addEventListener("scroll", function(e) { + if (timeoutId) { + clearTimeout(timeoutId); + } + timeoutId = setTimeout(function() { + history.replaceState(contentDiv.scrollTop, document.title); + }, 100); + }); + if (!location.hash) { + history.replaceState(contentDiv.scrollTop, document.title); + } +}); diff --git a/Dokumente/JavaDoc/client/docs/javadoc/search-page.js b/Dokumente/JavaDoc/client/docs/javadoc/search-page.js new file mode 100644 index 0000000..342465b --- /dev/null +++ b/Dokumente/JavaDoc/client/docs/javadoc/search-page.js @@ -0,0 +1,299 @@ +/* + * Copyright (c) 2022, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +"use strict"; +$(function() { + var copy = $("#page-search-copy"); + var expand = $("#page-search-expand"); + var searchLink = $("span#page-search-link"); + var redirect = $("input#search-redirect"); + function setSearchUrlTemplate() { + var href = document.location.href.split(/[#?]/)[0]; + href += "?q=" + "%s"; + if (redirect.is(":checked")) { + href += "&r=1"; + } + searchLink.html(href); + copy[0].onmouseenter(); + } + function copyLink(e) { + var textarea = document.createElement("textarea"); + textarea.style.height = 0; + document.body.appendChild(textarea); + textarea.value = this.previousSibling.innerText; + textarea.select(); + document.execCommand("copy"); + document.body.removeChild(textarea); + var span = this.lastElementChild; + var copied = span.getAttribute("data-copied"); + if (span.innerHTML !== copied) { + var initialLabel = span.innerHTML; + span.innerHTML = copied; + var parent = this.parentElement.parentElement; + parent.onmouseleave = parent.ontouchend = copy[0].onmouseenter = function() { + span.innerHTML = initialLabel; + }; + } + } + copy.click(copyLink); + copy[0].onmouseenter = function() {}; + redirect.click(setSearchUrlTemplate); + setSearchUrlTemplate(); + copy.prop("disabled", false); + redirect.prop("disabled", false); + expand.click(function (e) { + var searchInfo = $("div.page-search-info"); + if(this.parentElement.hasAttribute("open")) { + searchInfo.attr("style", "border-width: 0;"); + } else { + searchInfo.attr("style", "border-width: 1px;").height(searchInfo.prop("scrollHeight")); + } + }); +}); +$(window).on("load", function() { + var input = $("#page-search-input"); + var reset = $("#page-search-reset"); + var notify = $("#page-search-notify"); + var resultSection = $("div#result-section"); + var resultContainer = $("div#result-container"); + var searchTerm = ""; + var activeTab = ""; + var fixedTab = false; + var visibleTabs = []; + var feelingLucky = false; + function renderResults(result) { + if (!result.length) { + notify.html(messages.noResult); + } else if (result.length === 1) { + notify.html(messages.oneResult); + } else { + notify.html(messages.manyResults.replace("{0}", result.length)); + } + resultContainer.empty(); + var r = { + "types": [], + "members": [], + "packages": [], + "modules": [], + "searchTags": [] + }; + for (var i in result) { + var item = result[i]; + var arr = r[item.category]; + arr.push(item); + } + if (!activeTab || r[activeTab].length === 0 || !fixedTab) { + Object.keys(r).reduce(function(prev, curr) { + if (r[curr].length > 0 && r[curr][0].score > prev) { + activeTab = curr; + return r[curr][0].score; + } + return prev; + }, 0); + } + if (feelingLucky && activeTab) { + notify.html(messages.redirecting) + var firstItem = r[activeTab][0]; + window.location = getURL(firstItem.indexItem, firstItem.category); + return; + } + if (result.length > 20) { + if (searchTerm[searchTerm.length - 1] === ".") { + if (activeTab === "types" && r["members"].length > r["types"].length) { + activeTab = "members"; + } else if (activeTab === "packages" && r["types"].length > r["packages"].length) { + activeTab = "types"; + } + } + } + var categoryCount = Object.keys(r).reduce(function(prev, curr) { + return prev + (r[curr].length > 0 ? 1 : 0); + }, 0); + visibleTabs = []; + var tabContainer = $("
    ").appendTo(resultContainer); + for (var key in r) { + var id = "#result-tab-" + key.replace("searchTags", "search_tags"); + if (r[key].length) { + var count = r[key].length >= 1000 ? "999+" : r[key].length; + if (result.length > 20 && categoryCount > 1) { + var button = $("").appendTo(tabContainer); + button.click(key, function(e) { + fixedTab = true; + renderResult(e.data, $(this)); + }); + visibleTabs.push(key); + } else { + $("" + categories[key] + + " (" + count + ")").appendTo(tabContainer); + renderTable(key, r[key]).appendTo(resultContainer); + tabContainer = $("
    ").appendTo(resultContainer); + + } + } + } + if (activeTab && result.length > 20 && categoryCount > 1) { + $("button#result-tab-" + activeTab).addClass("active-table-tab"); + renderTable(activeTab, r[activeTab]).appendTo(resultContainer); + } + resultSection.show(); + function renderResult(category, button) { + activeTab = category; + setSearchUrl(); + resultContainer.find("div.summary-table").remove(); + renderTable(activeTab, r[activeTab]).appendTo(resultContainer); + button.siblings().removeClass("active-table-tab"); + button.addClass("active-table-tab"); + } + } + function selectTab(category) { + $("button#result-tab-" + category).click(); + } + function renderTable(category, items) { + var table = $("
    ") + .addClass(category === "modules" + ? "one-column-search-results" + : "two-column-search-results"); + var col1, col2; + if (category === "modules") { + col1 = "Module"; + } else if (category === "packages") { + col1 = "Module"; + col2 = "Package"; + } else if (category === "types") { + col1 = "Package"; + col2 = "Class" + } else if (category === "members") { + col1 = "Class"; + col2 = "Member"; + } else if (category === "searchTags") { + col1 = "Location"; + col2 = "Name"; + } + $("
    " + col1 + "
    ").appendTo(table); + if (category !== "modules") { + $("
    " + col2 + "
    ").appendTo(table); + } + $.each(items, function(index, item) { + var rowColor = index % 2 ? "odd-row-color" : "even-row-color"; + renderItem(item, table, rowColor); + }); + return table; + } + function renderItem(item, table, rowColor) { + var label = getHighlightedText(item.input, item.boundaries, item.prefix.length, item.input.length); + var link = $("") + .attr("href", getURL(item.indexItem, item.category)) + .attr("tabindex", "0") + .addClass("search-result-link") + .html(label); + var container = getHighlightedText(item.input, item.boundaries, 0, item.prefix.length - 1); + if (item.category === "searchTags") { + container = item.indexItem.h || ""; + } + if (item.category !== "modules") { + $("
    ").html(container).addClass("col-plain").addClass(rowColor).appendTo(table); + } + $("
    ").html(link).addClass("col-last").addClass(rowColor).appendTo(table); + } + var timeout; + function schedulePageSearch() { + if (timeout) { + clearTimeout(timeout); + } + timeout = setTimeout(function () { + doPageSearch() + }, 100); + } + function doPageSearch() { + setSearchUrl(); + var term = searchTerm = input.val().trim(); + if (term === "") { + notify.html(messages.enterTerm); + activeTab = ""; + fixedTab = false; + resultContainer.empty(); + resultSection.hide(); + } else { + notify.html(messages.searching); + doSearch({ term: term, maxResults: 1200 }, renderResults); + } + } + function setSearchUrl() { + var query = input.val().trim(); + var url = document.location.pathname; + if (query) { + url += "?q=" + encodeURI(query); + if (activeTab && fixedTab) { + url += "&c=" + activeTab; + } + } + history.replaceState({query: query}, "", url); + } + input.on("input", function(e) { + feelingLucky = false; + schedulePageSearch(); + }); + $(document).keydown(function(e) { + if ((e.ctrlKey || e.metaKey) && (e.key === "ArrowLeft" || e.key === "ArrowRight")) { + if (activeTab && visibleTabs.length > 1) { + var idx = visibleTabs.indexOf(activeTab); + idx += e.key === "ArrowLeft" ? visibleTabs.length - 1 : 1; + selectTab(visibleTabs[idx % visibleTabs.length]); + return false; + } + } + }); + reset.click(function() { + notify.html(messages.enterTerm); + resultSection.hide(); + activeTab = ""; + fixedTab = false; + resultContainer.empty(); + input.val('').focus(); + setSearchUrl(); + }); + input.prop("disabled", false); + reset.prop("disabled", false); + + var urlParams = new URLSearchParams(window.location.search); + if (urlParams.has("q")) { + input.val(urlParams.get("q")) + } + if (urlParams.has("c")) { + activeTab = urlParams.get("c"); + fixedTab = true; + } + if (urlParams.get("r")) { + feelingLucky = true; + } + if (input.val()) { + doPageSearch(); + } else { + notify.html(messages.enterTerm); + } + input.select().focus(); +}); diff --git a/Dokumente/JavaDoc/client/docs/javadoc/search.html b/Dokumente/JavaDoc/client/docs/javadoc/search.html new file mode 100644 index 0000000..f6b048d --- /dev/null +++ b/Dokumente/JavaDoc/client/docs/javadoc/search.html @@ -0,0 +1,71 @@ + + + + +Suchen (client API) + + + + + + + + + + + + + +
    + +
    +
    +

    Suchen

    +
    + + +
    +Zusätzliche Ressourcen +
    +
    +
    +

    Die Hilfeseite enthält eine Einführung in den Umfang und die Syntax der JavaDoc-Suche.

    +

    Sie können die <STRG>- oder <CMD>-Taste zusammen mit den Pfeiltasten nach links und rechts verwenden, um zwischen Ergebnisregisterkarten auf dieser Seite zu wechseln.

    +

    Mit der URL-Vorlage unten können Sie diese Seite als Suchmaschine in Browsern konfigurieren, die dieses Feature unterstützen. Das Feature wurde erfolgreich mit Google Chrome und Mozilla Firefox getestet. Beachten Sie, dass andere Browser dieses Feature möglicherweise nicht unterstützen oder ein anderes URL-Format erfordern.

    +link +

    + +

    +
    +

    Suchindex wird geladen...

    + +
    +
    +
    + + diff --git a/Dokumente/JavaDoc/client/docs/javadoc/search.js b/Dokumente/JavaDoc/client/docs/javadoc/search.js new file mode 100644 index 0000000..ef787b7 --- /dev/null +++ b/Dokumente/JavaDoc/client/docs/javadoc/search.js @@ -0,0 +1,458 @@ +/* + * Copyright (c) 2015, 2022, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ +"use strict"; +const messages = { + enterTerm: "Geben Sie einen Suchbegriff ein", + noResult: "Keine Ergebnisse gefunden", + oneResult: "Ein Ergebnis gefunden", + manyResults: "{0} Ergebnisse gefunden", + loading: "Suchindex wird geladen...", + searching: "Suche wird ausgeführt...", + redirecting: "Zum ersten Ergebnis wird umgeleitet...", + copyUrl: "URL kopieren", + urlCopied: "Kopiert." +} +const categories = { + modules: "Module", + packages: "Packages", + types: "Klassen und Schnittstellen", + members: "Mitglieder", + searchTags: "Tags suchen" +}; +const highlight = "$&"; +const NO_MATCH = {}; +const MAX_RESULTS = 300; +function checkUnnamed(name, separator) { + return name === "" || !name ? "" : name + separator; +} +function escapeHtml(str) { + return str.replace(//g, ">"); +} +function getHighlightedText(str, boundaries, from, to) { + var start = from; + var text = ""; + for (var i = 0; i < boundaries.length; i += 2) { + var b0 = boundaries[i]; + var b1 = boundaries[i + 1]; + if (b0 >= to || b1 <= from) { + continue; + } + text += escapeHtml(str.slice(start, Math.max(start, b0))); + text += ""; + text += escapeHtml(str.slice(Math.max(start, b0), Math.min(to, b1))); + text += ""; + start = Math.min(to, b1); + } + text += escapeHtml(str.slice(start, to)); + return text; +} +function getURLPrefix(item, category) { + var urlPrefix = ""; + var slash = "/"; + if (category === "modules") { + return item.l + slash; + } else if (category === "packages" && item.m) { + return item.m + slash; + } else if (category === "types" || category === "members") { + if (item.m) { + urlPrefix = item.m + slash; + } else { + $.each(packageSearchIndex, function(index, it) { + if (it.m && item.p === it.l) { + urlPrefix = it.m + slash; + } + }); + } + } + return urlPrefix; +} +function getURL(item, category) { + if (item.url) { + return item.url; + } + var url = getURLPrefix(item, category); + if (category === "modules") { + url += "module-summary.html"; + } else if (category === "packages") { + if (item.u) { + url = item.u; + } else { + url += item.l.replace(/\./g, '/') + "/package-summary.html"; + } + } else if (category === "types") { + if (item.u) { + url = item.u; + } else { + url += checkUnnamed(item.p, "/").replace(/\./g, '/') + item.l + ".html"; + } + } else if (category === "members") { + url += checkUnnamed(item.p, "/").replace(/\./g, '/') + item.c + ".html" + "#"; + if (item.u) { + url += item.u; + } else { + url += item.l; + } + } else if (category === "searchTags") { + url += item.u; + } + item.url = url; + return url; +} +function createMatcher(term, camelCase) { + if (camelCase && !isUpperCase(term)) { + return null; // no need for camel-case matcher for lower case query + } + var pattern = ""; + var upperCase = []; + term.trim().split(/\s+/).forEach(function(w, index, array) { + var tokens = w.split(/(?=[A-Z,.()<>?[\/])/); + for (var i = 0; i < tokens.length; i++) { + var s = tokens[i]; + // ',' and '?' are the only delimiters commonly followed by space in java signatures + pattern += "(" + $.ui.autocomplete.escapeRegex(s).replace(/[,?]/g, "$&\\s*?") + ")"; + upperCase.push(false); + var isWordToken = /\w$/.test(s); + if (isWordToken) { + if (i === tokens.length - 1 && index < array.length - 1) { + // space in query string matches all delimiters + pattern += "(.*?)"; + upperCase.push(isUpperCase(s[0])); + } else { + if (!camelCase && isUpperCase(s) && s.length === 1) { + pattern += "()"; + } else { + pattern += "([a-z0-9$<>?[\\]]*?)"; + } + upperCase.push(isUpperCase(s[0])); + } + } else { + pattern += "()"; + upperCase.push(false); + } + } + }); + var re = new RegExp(pattern, "gi"); + re.upperCase = upperCase; + return re; +} +function findMatch(matcher, input, startOfName, endOfName) { + var from = startOfName; + matcher.lastIndex = from; + var match = matcher.exec(input); + // Expand search area until we get a valid result or reach the beginning of the string + while (!match || match.index + match[0].length < startOfName || endOfName < match.index) { + if (from === 0) { + return NO_MATCH; + } + from = input.lastIndexOf(".", from - 2) + 1; + matcher.lastIndex = from; + match = matcher.exec(input); + } + var boundaries = []; + var matchEnd = match.index + match[0].length; + var score = 5; + var start = match.index; + var prevEnd = -1; + for (var i = 1; i < match.length; i += 2) { + var isUpper = isUpperCase(input[start]); + var isMatcherUpper = matcher.upperCase[i]; + // capturing groups come in pairs, match and non-match + boundaries.push(start, start + match[i].length); + // make sure groups are anchored on a left word boundary + var prevChar = input[start - 1] || ""; + var nextChar = input[start + 1] || ""; + if (start !== 0 && !/[\W_]/.test(prevChar) && !/[\W_]/.test(input[start])) { + if (isUpper && (isLowerCase(prevChar) || isLowerCase(nextChar))) { + score -= 0.1; + } else if (isMatcherUpper && start === prevEnd) { + score -= isUpper ? 0.1 : 1.0; + } else { + return NO_MATCH; + } + } + prevEnd = start + match[i].length; + start += match[i].length + match[i + 1].length; + + // lower score for parts of the name that are missing + if (match[i + 1] && prevEnd < endOfName) { + score -= rateNoise(match[i + 1]); + } + } + // lower score if a type name contains unmatched camel-case parts + if (input[matchEnd - 1] !== "." && endOfName > matchEnd) + score -= rateNoise(input.slice(matchEnd, endOfName)); + score -= rateNoise(input.slice(0, Math.max(startOfName, match.index))); + + if (score <= 0) { + return NO_MATCH; + } + return { + input: input, + score: score, + boundaries: boundaries + }; +} +function isUpperCase(s) { + return s !== s.toLowerCase(); +} +function isLowerCase(s) { + return s !== s.toUpperCase(); +} +function rateNoise(str) { + return (str.match(/([.(])/g) || []).length / 5 + + (str.match(/([A-Z]+)/g) || []).length / 10 + + str.length / 20; +} +function doSearch(request, response) { + var term = request.term.trim(); + var maxResults = request.maxResults || MAX_RESULTS; + if (term.length === 0) { + return this.close(); + } + var matcher = { + plainMatcher: createMatcher(term, false), + camelCaseMatcher: createMatcher(term, true) + } + var indexLoaded = indexFilesLoaded(); + + function getPrefix(item, category) { + switch (category) { + case "packages": + return checkUnnamed(item.m, "/"); + case "types": + return checkUnnamed(item.p, "."); + case "members": + return checkUnnamed(item.p, ".") + item.c + "."; + default: + return ""; + } + } + function useQualifiedName(category) { + switch (category) { + case "packages": + return /[\s/]/.test(term); + case "types": + case "members": + return /[\s.]/.test(term); + default: + return false; + } + } + function searchIndex(indexArray, category) { + var matches = []; + if (!indexArray) { + if (!indexLoaded) { + matches.push({ l: messages.loading, category: category }); + } + return matches; + } + $.each(indexArray, function (i, item) { + var prefix = getPrefix(item, category); + var simpleName = item.l; + var qualifiedName = prefix + simpleName; + var useQualified = useQualifiedName(category); + var input = useQualified ? qualifiedName : simpleName; + var startOfName = useQualified ? prefix.length : 0; + var endOfName = category === "members" && input.indexOf("(", startOfName) > -1 + ? input.indexOf("(", startOfName) : input.length; + var m = findMatch(matcher.plainMatcher, input, startOfName, endOfName); + if (m === NO_MATCH && matcher.camelCaseMatcher) { + m = findMatch(matcher.camelCaseMatcher, input, startOfName, endOfName); + } + if (m !== NO_MATCH) { + m.indexItem = item; + m.prefix = prefix; + m.category = category; + if (!useQualified) { + m.input = qualifiedName; + m.boundaries = m.boundaries.map(function(b) { + return b + prefix.length; + }); + } + matches.push(m); + } + return true; + }); + return matches.sort(function(e1, e2) { + return e2.score - e1.score; + }).slice(0, maxResults); + } + + var result = searchIndex(moduleSearchIndex, "modules") + .concat(searchIndex(packageSearchIndex, "packages")) + .concat(searchIndex(typeSearchIndex, "types")) + .concat(searchIndex(memberSearchIndex, "members")) + .concat(searchIndex(tagSearchIndex, "searchTags")); + + if (!indexLoaded) { + updateSearchResults = function() { + doSearch(request, response); + } + } else { + updateSearchResults = function() {}; + } + response(result); +} +// JQuery search menu implementation +$.widget("custom.catcomplete", $.ui.autocomplete, { + _create: function() { + this._super(); + this.widget().menu("option", "items", "> .result-item"); + // workaround for search result scrolling + this.menu._scrollIntoView = function _scrollIntoView( item ) { + var borderTop, paddingTop, offset, scroll, elementHeight, itemHeight; + if ( this._hasScroll() ) { + borderTop = parseFloat( $.css( this.activeMenu[ 0 ], "borderTopWidth" ) ) || 0; + paddingTop = parseFloat( $.css( this.activeMenu[ 0 ], "paddingTop" ) ) || 0; + offset = item.offset().top - this.activeMenu.offset().top - borderTop - paddingTop; + scroll = this.activeMenu.scrollTop(); + elementHeight = this.activeMenu.height() - 26; + itemHeight = item.outerHeight(); + + if ( offset < 0 ) { + this.activeMenu.scrollTop( scroll + offset ); + } else if ( offset + itemHeight > elementHeight ) { + this.activeMenu.scrollTop( scroll + offset - elementHeight + itemHeight ); + } + } + }; + }, + _renderMenu: function(ul, items) { + var currentCategory = ""; + var widget = this; + widget.menu.bindings = $(); + $.each(items, function(index, item) { + if (item.category && item.category !== currentCategory) { + ul.append("
  • " + categories[item.category] + "
  • "); + currentCategory = item.category; + } + var li = widget._renderItemData(ul, item); + if (item.category) { + li.attr("aria-label", categories[item.category] + " : " + item.l); + } else { + li.attr("aria-label", item.l); + } + li.attr("class", "result-item"); + }); + ul.append(""); + }, + _renderItem: function(ul, item) { + var li = $("
  • ").appendTo(ul); + var div = $("
    ").appendTo(li); + var label = item.l + ? item.l + : getHighlightedText(item.input, item.boundaries, 0, item.input.length); + var idx = item.indexItem; + if (item.category === "searchTags" && idx.h) { + if (idx.d) { + div.html(label + " (" + idx.h + ")
    " + + idx.d + "
    "); + } else { + div.html(label + " (" + idx.h + ")"); + } + } else { + div.html(label); + } + return li; + } +}); +$(function() { + var expanded = false; + var windowWidth; + function collapse() { + if (expanded) { + $("div#navbar-top").removeAttr("style"); + $("button#navbar-toggle-button") + .removeClass("expanded") + .attr("aria-expanded", "false"); + expanded = false; + } + } + $("button#navbar-toggle-button").click(function (e) { + if (expanded) { + collapse(); + } else { + var navbar = $("div#navbar-top"); + navbar.height(navbar.prop("scrollHeight")); + $("button#navbar-toggle-button") + .addClass("expanded") + .attr("aria-expanded", "true"); + expanded = true; + windowWidth = window.innerWidth; + } + }); + $("ul.sub-nav-list-small li a").click(collapse); + $("input#search-input").focus(collapse); + $("main").click(collapse); + $("section[id] > :header, :header[id], :header:has(a[id])").hover( + function () { + $(this).append($("")); + }, + function () { + $(this).find("button:last").remove(); + } + ); + $(window).on("orientationchange", collapse).on("resize", function(e) { + if (expanded && windowWidth !== window.innerWidth) collapse(); + }); + var search = $("#search-input"); + var reset = $("#reset-button"); + search.catcomplete({ + minLength: 1, + delay: 200, + source: doSearch, + response: function(event, ui) { + if (!ui.content.length) { + ui.content.push({ l: messages.noResult }); + } else { + $("#search-input").empty(); + } + }, + autoFocus: true, + focus: function(event, ui) { + return false; + }, + position: { + collision: "flip" + }, + select: function(event, ui) { + if (ui.item.indexItem) { + var url = getURL(ui.item.indexItem, ui.item.category); + window.location.href = pathtoroot + url; + $("#search-input").focus(); + } + } + }); + search.val(''); + search.prop("disabled", false); + reset.prop("disabled", false); + reset.click(function() { + search.val('').focus(); + }); + search.focus(); +}); diff --git a/Dokumente/JavaDoc/client/docs/javadoc/stylesheet.css b/Dokumente/JavaDoc/client/docs/javadoc/stylesheet.css new file mode 100644 index 0000000..cc0c20f --- /dev/null +++ b/Dokumente/JavaDoc/client/docs/javadoc/stylesheet.css @@ -0,0 +1,1264 @@ +/* + * Javadoc style sheet + */ + +@import url('resources/fonts/dejavu.css'); + +/* + * These CSS custom properties (variables) define the core color and font + * properties used in this stylesheet. + */ +:root { + /* body, block and code fonts */ + --body-font-family: 'DejaVu Sans', Arial, Helvetica, sans-serif; + --block-font-family: 'DejaVu Serif', Georgia, "Times New Roman", Times, serif; + --code-font-family: 'DejaVu Sans Mono', monospace; + /* Base font sizes for body and code elements */ + --body-font-size: 14px; + --code-font-size: 14px; + /* Text colors for body and block elements */ + --body-text-color: #353833; + --block-text-color: #474747; + /* Background colors for various structural elements */ + --body-background-color: #ffffff; + --section-background-color: #f8f8f8; + --detail-background-color: #ffffff; + /* Colors for navigation bar and table captions */ + --navbar-background-color: #4D7A97; + --navbar-text-color: #ffffff; + /* Background color for subnavigation and various headers */ + --subnav-background-color: #dee3e9; + /* Background and text colors for selected tabs and navigation items */ + --selected-background-color: #f8981d; + --selected-text-color: #253441; + --selected-link-color: #1f389c; + /* Background colors for generated tables */ + --even-row-color: #ffffff; + --odd-row-color: #eeeeef; + /* Text color for page title */ + --title-color: #2c4557; + /* Text colors for links */ + --link-color: #4A6782; + --link-color-active: #bb7a2a; + /* Snippet colors */ + --snippet-background-color: #ebecee; + --snippet-text-color: var(--block-text-color); + --snippet-highlight-color: #f7c590; + /* Border colors for structural elements and user defined tables */ + --border-color: #ededed; + --table-border-color: #000000; + /* Search input colors */ + --search-input-background-color: #ffffff; + --search-input-text-color: #000000; + --search-input-placeholder-color: #909090; + /* Highlight color for active search tag target */ + --search-tag-highlight-color: #ffff00; + /* Adjustments for icon and active background colors of copy-to-clipboard buttons */ + --copy-icon-brightness: 100%; + --copy-button-background-color-active: rgba(168, 168, 176, 0.3); + /* Colors for invalid tag notifications */ + --invalid-tag-background-color: #ffe6e6; + --invalid-tag-text-color: #000000; +} +/* + * Styles for individual HTML elements. + * + * These are styles that are specific to individual HTML elements. Changing them affects the style of a particular + * HTML element throughout the page. + */ +body { + background-color:var(--body-background-color); + color:var(--body-text-color); + font-family:var(--body-font-family); + font-size:var(--body-font-size); + margin:0; + padding:0; + height:100%; + width:100%; +} +iframe { + margin:0; + padding:0; + height:100%; + width:100%; + overflow-y:scroll; + border:none; +} +a:link, a:visited { + text-decoration:none; + color:var(--link-color); +} +a[href]:hover, a[href]:focus { + text-decoration:none; + color:var(--link-color-active); +} +pre { + font-family:var(--code-font-family); + font-size:1em; +} +h1 { + font-size:1.428em; +} +h2 { + font-size:1.285em; +} +h3 { + font-size:1.14em; +} +h4 { + font-size:1.072em; +} +h5 { + font-size:1.001em; +} +h6 { + font-size:0.93em; +} +/* Disable font boosting for selected elements */ +h1, h2, h3, h4, h5, h6, div.member-signature { + max-height: 1000em; +} +ul { + list-style-type:disc; +} +code, tt { + font-family:var(--code-font-family); +} +:not(h1, h2, h3, h4, h5, h6) > code, +:not(h1, h2, h3, h4, h5, h6) > tt { + font-size:var(--code-font-size); + padding-top:4px; + margin-top:8px; + line-height:1.4em; +} +dt code { + font-family:var(--code-font-family); + font-size:1em; + padding-top:4px; +} +.summary-table dt code { + font-family:var(--code-font-family); + font-size:1em; + vertical-align:top; + padding-top:4px; +} +sup { + font-size:8px; +} +button { + font-family: var(--body-font-family); + font-size: 1em; +} +/* + * Styles for HTML generated by javadoc. + * + * These are style classes that are used by the standard doclet to generate HTML documentation. + */ + +/* + * Styles for document title and copyright. + */ +.about-language { + float:right; + padding:0 21px 8px 8px; + font-size:0.915em; + margin-top:-9px; + height:2.9em; +} +.legal-copy { + margin-left:.5em; +} +/* + * Styles for navigation bar. + */ +@media screen { + div.flex-box { + position:fixed; + display:flex; + flex-direction:column; + height: 100%; + width: 100%; + } + header.flex-header { + flex: 0 0 auto; + } + div.flex-content { + flex: 1 1 auto; + overflow-y: auto; + } +} +.top-nav { + background-color:var(--navbar-background-color); + color:var(--navbar-text-color); + float:left; + width:100%; + clear:right; + min-height:2.8em; + padding:10px 0 0 0; + overflow:hidden; + font-size:0.857em; +} +button#navbar-toggle-button { + display:none; +} +ul.sub-nav-list-small { + display: none; +} +.sub-nav { + background-color:var(--subnav-background-color); + float:left; + width:100%; + overflow:hidden; + font-size:0.857em; +} +.sub-nav div { + clear:left; + float:left; + padding:6px; + text-transform:uppercase; +} +.sub-nav .sub-nav-list { + padding-top:4px; +} +ul.nav-list { + display:block; + margin:0 25px 0 0; + padding:0; +} +ul.sub-nav-list { + float:left; + margin:0 25px 0 0; + padding:0; +} +ul.nav-list li { + list-style:none; + float:left; + padding: 5px 6px; + text-transform:uppercase; +} +.sub-nav .nav-list-search { + float:right; + margin:0; + padding:6px; + clear:none; + text-align:right; + position:relative; +} +ul.sub-nav-list li { + list-style:none; + float:left; +} +.top-nav a:link, .top-nav a:active, .top-nav a:visited { + color:var(--navbar-text-color); + text-decoration:none; + text-transform:uppercase; +} +.top-nav a:hover { + color:var(--link-color-active); +} +.nav-bar-cell1-rev { + background-color:var(--selected-background-color); + color:var(--selected-text-color); + margin: auto 5px; +} +.skip-nav { + position:absolute; + top:auto; + left:-9999px; + overflow:hidden; +} +/* + * Hide navigation links and search box in print layout + */ +@media print { + ul.nav-list, div.sub-nav { + display:none; + } +} +/* + * Styles for page header. + */ +.title { + color:var(--title-color); + margin:10px 0; +} +.sub-title { + margin:5px 0 0 0; +} +ul.contents-list { + margin: 0 0 15px 0; + padding: 0; + list-style: none; +} +ul.contents-list li { + font-size:0.93em; +} +/* + * Styles for headings. + */ +body.class-declaration-page .summary h2, +body.class-declaration-page .details h2, +body.class-use-page h2, +body.module-declaration-page .block-list h2 { + font-style: italic; + padding:0; + margin:15px 0; +} +body.class-declaration-page .summary h3, +body.class-declaration-page .details h3, +body.class-declaration-page .summary .inherited-list h2 { + background-color:var(--subnav-background-color); + border:1px solid var(--border-color); + margin:0 0 6px -8px; + padding:7px 5px; +} +/* + * Styles for page layout containers. + */ +main { + clear:both; + padding:10px 20px; + position:relative; +} +dl.notes > dt { + font-family: var(--body-font-family); + font-size:0.856em; + font-weight:bold; + margin:10px 0 0 0; + color:var(--body-text-color); +} +dl.notes > dd { + margin:5px 10px 10px 0; + font-size:1em; + font-family:var(--block-font-family) +} +dl.name-value > dt { + margin-left:1px; + font-size:1.1em; + display:inline; + font-weight:bold; +} +dl.name-value > dd { + margin:0 0 0 1px; + font-size:1.1em; + display:inline; +} +/* + * Styles for lists. + */ +li.circle { + list-style:circle; +} +ul.horizontal li { + display:inline; + font-size:0.9em; +} +div.inheritance { + margin:0; + padding:0; +} +div.inheritance div.inheritance { + margin-left:2em; +} +ul.block-list, +ul.details-list, +ul.member-list, +ul.summary-list { + margin:10px 0 10px 0; + padding:0; +} +ul.block-list > li, +ul.details-list > li, +ul.member-list > li, +ul.summary-list > li { + list-style:none; + margin-bottom:15px; + line-height:1.4; +} +ul.ref-list { + padding:0; + margin:0; +} +ul.ref-list > li { + list-style:none; +} +.summary-table dl, .summary-table dl dt, .summary-table dl dd { + margin-top:0; + margin-bottom:1px; +} +ul.tag-list, ul.tag-list-long { + padding-left: 0; + list-style: none; +} +ul.tag-list li { + display: inline; +} +ul.tag-list li:not(:last-child):after, +ul.tag-list-long li:not(:last-child):after +{ + content: ", "; + white-space: pre-wrap; +} +ul.preview-feature-list { + list-style: none; + margin:0; + padding:0.1em; + line-height: 1.6em; +} +/* + * Styles for tables. + */ +.summary-table, .details-table { + width:100%; + border-spacing:0; + border:1px solid var(--border-color); + border-top:0; + padding:0; +} +.caption { + position:relative; + text-align:left; + background-repeat:no-repeat; + color:var(--selected-text-color); + clear:none; + overflow:hidden; + padding: 10px 0 0 1px; + margin:0; +} +.caption a:link, .caption a:visited { + color:var(--selected-link-color); +} +.caption a:hover, +.caption a:active { + color:var(--navbar-text-color); +} +.caption span { + font-weight:bold; + white-space:nowrap; + padding:5px 12px 7px 12px; + display:inline-block; + float:left; + background-color:var(--selected-background-color); + border: none; + height:16px; +} +div.table-tabs { + padding:10px 0 0 1px; + margin:10px 0 0 0; +} +div.table-tabs > button { + border: none; + cursor: pointer; + padding: 5px 12px 7px 12px; + font-weight: bold; + margin-right: 8px; +} +div.table-tabs > .active-table-tab { + background: var(--selected-background-color); + color: var(--selected-text-color); +} +div.table-tabs > button.table-tab { + background: var(--navbar-background-color); + color: var(--navbar-text-color); +} +.two-column-search-results { + display: grid; + grid-template-columns: minmax(400px, max-content) minmax(400px, auto); +} +div.checkboxes { + line-height: 2em; +} +div.checkboxes > span { + margin-left: 10px; +} +div.checkboxes > label { + margin-left: 8px; + white-space: nowrap; +} +div.checkboxes > label > input { + margin: 0 2px; +} +.two-column-summary { + display: grid; + grid-template-columns: minmax(25%, max-content) minmax(25%, auto); +} +.three-column-summary { + display: grid; + grid-template-columns: minmax(15%, max-content) minmax(20%, max-content) minmax(20%, auto); +} +.three-column-release-summary { + display: grid; + grid-template-columns: minmax(40%, max-content) minmax(10%, max-content) minmax(40%, auto); +} +.four-column-summary { + display: grid; + grid-template-columns: minmax(10%, max-content) minmax(15%, max-content) minmax(15%, max-content) minmax(15%, auto); +} +@media screen and (max-width: 1000px) { + .four-column-summary { + display: grid; + grid-template-columns: minmax(15%, max-content) minmax(15%, auto); + } +} +@media screen and (max-width: 800px) { + .two-column-search-results { + display: grid; + grid-template-columns: minmax(40%, max-content) minmax(40%, auto); + } + .three-column-summary { + display: grid; + grid-template-columns: minmax(10%, max-content) minmax(25%, auto); + } + .three-column-release-summary { + display: grid; + grid-template-columns: minmax(70%, max-content) minmax(30%, max-content) + } + .three-column-summary .col-last, + .three-column-release-summary .col-last{ + grid-column-end: span 2; + } +} +@media screen and (max-width: 600px) { + .two-column-summary { + display: grid; + grid-template-columns: 1fr; + } +} +.summary-table > div, .details-table > div { + text-align:left; + padding: 8px 3px 3px 7px; + overflow-x: auto; + scrollbar-width: thin; +} +.col-first, .col-second, .col-last, .col-constructor-name, .col-summary-item-name { + vertical-align:top; + padding-right:0; + padding-top:8px; + padding-bottom:3px; +} +.table-header { + background:var(--subnav-background-color); + font-weight: bold; +} +/* Sortable table columns */ +.table-header[onclick] { + cursor: pointer; +} +.table-header[onclick]::after { + content:""; + display:inline-block; + background-image:url('data:image/svg+xml; utf8, \ + \ + '); + background-size:100% 100%; + width:9px; + height:14px; + margin-left:4px; + margin-bottom:-3px; +} +.table-header[onclick].sort-asc::after { + background-image:url('data:image/svg+xml; utf8, \ + \ + \ + '); + +} +.table-header[onclick].sort-desc::after { + background-image:url('data:image/svg+xml; utf8, \ + \ + \ + '); +} +.col-first, .col-first { + font-size:0.93em; +} +.col-second, .col-second, .col-last, .col-constructor-name, .col-summary-item-name, .col-last { + font-size:0.93em; +} +.col-first, .col-second, .col-constructor-name { + vertical-align:top; + overflow: auto; +} +.col-last { + white-space:normal; +} +.col-first a:link, .col-first a:visited, +.col-second a:link, .col-second a:visited, +.col-first a:link, .col-first a:visited, +.col-second a:link, .col-second a:visited, +.col-constructor-name a:link, .col-constructor-name a:visited, +.col-summary-item-name a:link, .col-summary-item-name a:visited { + font-weight:bold; +} +.even-row-color, .even-row-color .table-header { + background-color:var(--even-row-color); +} +.odd-row-color, .odd-row-color .table-header { + background-color:var(--odd-row-color); +} +/* + * Styles for contents. + */ +div.block { + font-size:var(--body-font-size); + font-family:var(--block-font-family); +} +.col-last div { + padding-top:0; +} +.col-last a { + padding-bottom:3px; +} +.module-signature, +.package-signature, +.type-signature, +.member-signature { + font-family:var(--code-font-family); + font-size:1em; + margin:14px 0; + white-space: pre-wrap; +} +.module-signature, +.package-signature, +.type-signature { + margin-top: 0; +} +.member-signature .type-parameters-long, +.member-signature .parameters, +.member-signature .exceptions { + display: inline-block; + vertical-align: top; + white-space: pre; +} +.member-signature .type-parameters { + white-space: normal; +} +/* + * Styles for formatting effect. + */ +.source-line-no { + /* Color of line numbers in source pages can be set via custom property below */ + color:var(--source-linenumber-color, green); + padding:0 30px 0 0; +} +.block { + display:block; + margin:0 10px 5px 0; + color:var(--block-text-color); +} +.deprecated-label, .description-from-type-label, .implementation-label, .member-name-link, +.module-label-in-package, .module-label-in-type, .package-label-in-type, +.package-hierarchy-label, .type-name-label, .type-name-link, .search-tag-link, .preview-label { + font-weight:bold; +} +.deprecation-comment, .help-footnote, .preview-comment { + font-style:italic; +} +.deprecation-block { + font-size:1em; + font-family:var(--block-font-family); + border-style:solid; + border-width:thin; + border-radius:10px; + padding:10px; + margin-bottom:10px; + margin-right:10px; + display:inline-block; +} +.preview-block { + font-size:1em; + font-family:var(--block-font-family); + border-style:solid; + border-width:thin; + border-radius:10px; + padding:10px; + margin-bottom:10px; + margin-right:10px; + display:inline-block; +} +div.block div.deprecation-comment { + font-style:normal; +} +details.invalid-tag, span.invalid-tag { + font-size:1em; + font-family:var(--block-font-family); + color: var(--invalid-tag-text-color); + background: var(--invalid-tag-background-color); + border: thin solid var(--table-border-color); + border-radius:2px; + padding: 2px 4px; + display:inline-block; +} +details summary { + cursor: pointer; +} +/* + * Styles specific to HTML5 elements. + */ +main, nav, header, footer, section { + display:block; +} +/* + * Styles for javadoc search. + */ +.ui-state-active { + /* Overrides the color of selection used in jQuery UI */ + background: var(--selected-background-color); + border: 1px solid var(--selected-background-color); + color: var(--selected-text-color); +} +.ui-autocomplete-category { + font-weight:bold; + font-size:15px; + padding:7px 0 7px 3px; + background-color:var(--navbar-background-color); + color:var(--navbar-text-color); +} +.ui-autocomplete { + max-height:85%; + max-width:65%; + overflow-y:auto; + overflow-x:auto; + scrollbar-width: thin; + white-space:nowrap; + box-shadow: 0 3px 6px rgba(0,0,0,0.16), 0 3px 6px rgba(0,0,0,0.23); +} +ul.ui-autocomplete { + position:fixed; + z-index:1; + background-color: var(--body-background-color); +} +ul.ui-autocomplete li { + float:left; + clear:both; + min-width:100%; +} +ul.ui-autocomplete li.ui-static-link { + position:sticky; + bottom:0; + left:0; + background: var(--subnav-background-color); + padding: 5px 0; + font-family: var(--body-font-family); + font-size: 0.93em; + font-weight: bolder; + z-index: 2; +} +li.ui-static-link a, li.ui-static-link a:visited { + text-decoration:none; + color:var(--link-color); + float:right; + margin-right:20px; +} +.ui-autocomplete .result-item { + font-size: inherit; +} +.ui-autocomplete .result-highlight { + font-weight:bold; +} +#search-input, #page-search-input { + background-image:url('resources/glass.png'); + background-size:13px; + background-repeat:no-repeat; + background-position:2px 3px; + background-color: var(--search-input-background-color); + color: var(--search-input-text-color); + border-color: var(--border-color); + padding-left:20px; + width: 250px; + margin: 0; +} +#search-input { + margin-left: 4px; +} +#reset-button { + background-color: transparent; + background-image:url('resources/x.png'); + background-repeat:no-repeat; + background-size:contain; + border:0; + border-radius:0; + width:12px; + height:12px; + position:absolute; + right:12px; + top:10px; + font-size:0; +} +::placeholder { + color:var(--search-input-placeholder-color); + opacity: 1; +} +.search-tag-desc-result { + font-style:italic; + font-size:11px; +} +.search-tag-holder-result { + font-style:italic; + font-size:12px; +} +.search-tag-result:target { + background-color:var(--search-tag-highlight-color); +} +details.page-search-details { + display: inline-block; +} +div#result-container { + font-size: 1em; +} +div#result-container a.search-result-link { + padding: 0; + margin: 4px 0; + width: 100%; +} +#result-container .result-highlight { + font-weight:bolder; +} +.page-search-info { + background-color: var(--subnav-background-color); + border-radius: 3px; + border: 0 solid var(--border-color); + padding: 0 8px; + overflow: hidden; + height: 0; + transition: all 0.2s ease; +} +div.table-tabs > button.table-tab { + background: var(--navbar-background-color); + color: var(--navbar-text-color); +} +.page-search-header { + padding: 5px 12px 7px 12px; + font-weight: bold; + margin-right: 3px; + background-color:var(--navbar-background-color); + color:var(--navbar-text-color); + display: inline-block; +} +button.page-search-header { + border: none; + cursor: pointer; +} +span#page-search-link { + text-decoration: underline; +} +.module-graph span, .sealed-graph span { + display:none; + position:absolute; +} +.module-graph:hover span, .sealed-graph:hover span { + display:block; + margin: -100px 0 0 100px; + z-index: 1; +} +.inherited-list { + margin: 10px 0 10px 0; +} +section.class-description { + line-height: 1.4; +} +.summary section[class$="-summary"], .details section[class$="-details"], +.class-uses .detail, .serialized-class-details { + padding: 0 20px 5px 10px; + border: 1px solid var(--border-color); + background-color: var(--section-background-color); +} +.inherited-list, section[class$="-details"] .detail { + padding:0 0 5px 8px; + background-color:var(--detail-background-color); + border:none; +} +.vertical-separator { + padding: 0 5px; +} +ul.help-section-list { + margin: 0; +} +ul.help-subtoc > li { + display: inline-block; + padding-right: 5px; + font-size: smaller; +} +ul.help-subtoc > li::before { + content: "\2022" ; + padding-right:2px; +} +.help-note { + font-style: italic; +} +/* + * Indicator icon for external links. + */ +main a[href*="://"]::after { + content:""; + display:inline-block; + background-image:url('data:image/svg+xml; utf8, \ + \ + \ + '); + background-size:100% 100%; + width:7px; + height:7px; + margin-left:2px; + margin-bottom:4px; +} +main a[href*="://"]:hover::after, +main a[href*="://"]:focus::after { + background-image:url('data:image/svg+xml; utf8, \ + \ + \ + '); +} +/* + * Styles for copy-to-clipboard buttons + */ +button.copy { + opacity: 80%; + border: none; + border-radius: 3px; + position: relative; + background:none; + transition: opacity 0.2s; + cursor: pointer; +} +button.copy:hover, +button.copy:active { + opacity: 100%; +} +button.copy img { + position: relative; + background: none; + filter: brightness(var(--copy-icon-brightness)); +} +button.copy:active { + background-color: var(--copy-button-background-color-active); +} +button.copy span { + color: var(--body-text-color); + position: relative; + top: -0.1em; + transition: all 0.1s; + font-size: 0.76rem; + line-height: 1.2em; +} +/* header/section copy button */ +button.copy-header { + margin: 0 0.2em; + padding: 0 4px; + height: 1.16em; +} +button.copy-header img { + height: 0.88em; + top: 0.1em; +} +/* search page copy button */ +button#page-search-copy { + margin-left: 0.4em; + padding:0.3em; + top:0.13em; +} +button#page-search-copy img { + width: 1.2em; + height: 1.2em; + padding: 0.01em 0; + top: 0.15em; +} +button#page-search-copy span { + color: var(--body-text-color); + content: attr(aria-label); + line-height: 1.2em; + padding: 0.2em; + top: -0.18em; + opacity: 0; +} +div.page-search-info:hover button#page-search-copy, +div.page-search-info:hover button#page-search-copy span { + opacity: 90%; +} +/* snippet copy button */ +button.snippet-copy { + position: absolute; + top: 6px; + right: 6px; + height: 1.7em; + opacity: 50%; + padding: 2px; +} +button.snippet-copy img { + width: 18px; + height: 18px; + padding: 0.05em 0; +} +button.snippet-copy span { + content: attr(aria-label); + line-height: 1.2em; + padding: 0.2em; + position: relative; + top: -0.5em; + display: none; +} +div.snippet-container:hover button.snippet-copy span { + display: inline; +} +div.snippet-container:hover button.snippet-copy { + opacity: 80%; +} +div.snippet-container button.snippet-copy:hover { + opacity: 100%; +} +/* + * Styles for user-provided tables. + * + * borderless: + * No borders, vertical margins, styled caption. + * This style is provided for use with existing doc comments. + * In general, borderless tables should not be used for layout purposes. + * + * plain: + * Plain borders around table and cells, vertical margins, styled caption. + * Best for small tables or for complex tables for tables with cells that span + * rows and columns, when the "striped" style does not work well. + * + * striped: + * Borders around the table and vertical borders between cells, striped rows, + * vertical margins, styled caption. + * Best for tables that have a header row, and a body containing a series of simple rows. + */ + +table.borderless, +table.plain, +table.striped { + margin-top: 10px; + margin-bottom: 10px; +} +table.borderless > caption, +table.plain > caption, +table.striped > caption { + font-weight: bold; + font-size: smaller; +} +table.borderless th, table.borderless td, +table.plain th, table.plain td, +table.striped th, table.striped td { + padding: 2px 5px; +} +table.borderless, +table.borderless > thead > tr > th, table.borderless > tbody > tr > th, table.borderless > tr > th, +table.borderless > thead > tr > td, table.borderless > tbody > tr > td, table.borderless > tr > td { + border: none; +} +table.borderless > thead > tr, table.borderless > tbody > tr, table.borderless > tr { + background-color: transparent; +} +table.plain { + border-collapse: collapse; + border: 1px solid var(--table-border-color); +} +table.plain > thead > tr, table.plain > tbody tr, table.plain > tr { + background-color: transparent; +} +table.plain > thead > tr > th, table.plain > tbody > tr > th, table.plain > tr > th, +table.plain > thead > tr > td, table.plain > tbody > tr > td, table.plain > tr > td { + border: 1px solid var(--table-border-color); +} +table.striped { + border-collapse: collapse; + border: 1px solid var(--table-border-color); +} +table.striped > thead { + background-color: var(--subnav-background-color); +} +table.striped > thead > tr > th, table.striped > thead > tr > td { + border: 1px solid var(--table-border-color); +} +table.striped > tbody > tr:nth-child(even) { + background-color: var(--odd-row-color) +} +table.striped > tbody > tr:nth-child(odd) { + background-color: var(--even-row-color) +} +table.striped > tbody > tr > th, table.striped > tbody > tr > td { + border-left: 1px solid var(--table-border-color); + border-right: 1px solid var(--table-border-color); +} +table.striped > tbody > tr > th { + font-weight: normal; +} +/** + * Tweak style for small screens. + */ +@media screen and (max-width: 920px) { + header.flex-header { + max-height: 100vh; + overflow-y: auto; + } + div#navbar-top { + height: 2.8em; + transition: height 0.35s ease; + } + ul.nav-list { + display: block; + width: 40%; + float:left; + clear: left; + margin: 10px 0 0 0; + padding: 0; + } + ul.nav-list li { + float: none; + padding: 6px; + margin-left: 10px; + margin-top: 2px; + } + ul.sub-nav-list-small { + display:block; + height: 100%; + width: 50%; + float: right; + clear: right; + background-color: var(--subnav-background-color); + color: var(--body-text-color); + margin: 6px 0 0 0; + padding: 0; + } + ul.sub-nav-list-small ul { + padding-left: 20px; + } + ul.sub-nav-list-small a:link, ul.sub-nav-list-small a:visited { + color:var(--link-color); + } + ul.sub-nav-list-small a:hover { + color:var(--link-color-active); + } + ul.sub-nav-list-small li { + list-style:none; + float:none; + padding: 6px; + margin-top: 1px; + text-transform:uppercase; + } + ul.sub-nav-list-small > li { + margin-left: 10px; + } + ul.sub-nav-list-small li p { + margin: 5px 0; + } + div#navbar-sub-list { + display: none; + } + .top-nav a:link, .top-nav a:active, .top-nav a:visited { + display: block; + } + button#navbar-toggle-button { + width: 3.4em; + height: 2.8em; + background-color: transparent; + display: block; + float: left; + border: 0; + margin: 0 10px; + cursor: pointer; + font-size: 10px; + } + button#navbar-toggle-button .nav-bar-toggle-icon { + display: block; + width: 24px; + height: 3px; + margin: 1px 0 4px 0; + border-radius: 2px; + transition: all 0.1s; + background-color: var(--navbar-text-color); + } + button#navbar-toggle-button.expanded span.nav-bar-toggle-icon:nth-child(1) { + transform: rotate(45deg); + transform-origin: 10% 10%; + width: 26px; + } + button#navbar-toggle-button.expanded span.nav-bar-toggle-icon:nth-child(2) { + opacity: 0; + } + button#navbar-toggle-button.expanded span.nav-bar-toggle-icon:nth-child(3) { + transform: rotate(-45deg); + transform-origin: 10% 90%; + width: 26px; + } +} +@media screen and (max-width: 800px) { + .about-language { + padding-right: 16px; + } + ul.nav-list li { + margin-left: 5px; + } + ul.sub-nav-list-small > li { + margin-left: 5px; + } + main { + padding: 10px; + } + .summary section[class$="-summary"], .details section[class$="-details"], + .class-uses .detail, .serialized-class-details { + padding: 0 8px 5px 8px; + } + body { + -webkit-text-size-adjust: none; + } +} +@media screen and (max-width: 400px) { + .about-language { + font-size: 10px; + padding-right: 12px; + } +} +@media screen and (max-width: 400px) { + .nav-list-search { + width: 94%; + } + #search-input, #page-search-input { + width: 70%; + } +} +@media screen and (max-width: 320px) { + .nav-list-search > label { + display: none; + } + .nav-list-search { + width: 90%; + } + #search-input, #page-search-input { + width: 80%; + } +} + +pre.snippet { + background-color: var(--snippet-background-color); + color: var(--snippet-text-color); + padding: 10px; + margin: 12px 0; + overflow: auto; + white-space: pre; +} +div.snippet-container { + position: relative; +} +@media screen and (max-width: 800px) { + pre.snippet { + padding-top: 26px; + } + button.snippet-copy { + top: 4px; + right: 4px; + } +} +pre.snippet .italic { + font-style: italic; +} +pre.snippet .bold { + font-weight: bold; +} +pre.snippet .highlighted { + background-color: var(--snippet-highlight-color); + border-radius: 10%; +} diff --git a/Dokumente/JavaDoc/client/docs/javadoc/tag-search-index.js b/Dokumente/JavaDoc/client/docs/javadoc/tag-search-index.js new file mode 100644 index 0000000..8ebd9c8 --- /dev/null +++ b/Dokumente/JavaDoc/client/docs/javadoc/tag-search-index.js @@ -0,0 +1 @@ +tagSearchIndex = [{"l":"Konstantenfeldwerte","h":"","u":"constant-values.html"}];updateSearchResults(); \ No newline at end of file diff --git a/Dokumente/JavaDoc/client/docs/javadoc/type-search-index.js b/Dokumente/JavaDoc/client/docs/javadoc/type-search-index.js new file mode 100644 index 0000000..fe131c0 --- /dev/null +++ b/Dokumente/JavaDoc/client/docs/javadoc/type-search-index.js @@ -0,0 +1 @@ +typeSearchIndex = [{"l":"Alle Klassen und Schnittstellen","u":"allclasses-index.html"},{"p":"pp.battleship.client.gui","l":"BattleAppState"},{"p":"pp.battleship.client","l":"BattleshipApp"},{"p":"pp.battleship.client","l":"BattleshipAppConfig"},{"p":"pp.battleship.client","l":"BattleshipAppState"},{"p":"pp.battleship.server","l":"BattleshipServer"},{"p":"pp.battleship.client.gui","l":"EditorAppState"},{"p":"pp.battleship.client.gui","l":"GameMusic"},{"p":"pp.battleship.client","l":"GameSound"},{"p":"pp.battleship.client.gui","l":"ParticleEffectFactory"},{"p":"pp.battleship.client.gui","l":"SeaAppState"},{"p":"pp.battleship.client.gui","l":"VolumeSlider"}];updateSearchResults(); \ No newline at end of file diff --git a/Dokumente/JavaDoc/converter/docs/javadoc/allclasses-index.html b/Dokumente/JavaDoc/converter/docs/javadoc/allclasses-index.html new file mode 100644 index 0000000..1bd2f6b --- /dev/null +++ b/Dokumente/JavaDoc/converter/docs/javadoc/allclasses-index.html @@ -0,0 +1,66 @@ + + + + +Alle Klassen und Schnittstellen (converter API) + + + + + + + + + + + + + +
    + +
    +
    +
    +

    Alle Klassen und Schnittstellen

    +
    +
    +
    Klassen
    +
    +
    Klasse
    +
    Beschreibung
    + +
    +
    This class transforms models into j3o format.
    +
    +
    +
    +
    +
    +
    + + diff --git a/Dokumente/JavaDoc/converter/docs/javadoc/allpackages-index.html b/Dokumente/JavaDoc/converter/docs/javadoc/allpackages-index.html new file mode 100644 index 0000000..b027284 --- /dev/null +++ b/Dokumente/JavaDoc/converter/docs/javadoc/allpackages-index.html @@ -0,0 +1,62 @@ + + + + +Alle Packages (converter API) + + + + + + + + + + + + + +
    + +
    +
    +
    +

    Alle Packages

    +
    +
    Packageübersicht
    +
    +
    Package
    +
    Beschreibung
    + +
     
    +
    +
    +
    +
    + + diff --git a/Dokumente/JavaDoc/converter/docs/javadoc/copy.svg b/Dokumente/JavaDoc/converter/docs/javadoc/copy.svg new file mode 100644 index 0000000..b4c4945 --- /dev/null +++ b/Dokumente/JavaDoc/converter/docs/javadoc/copy.svg @@ -0,0 +1,33 @@ + + + + + + + + diff --git a/Dokumente/JavaDoc/converter/docs/javadoc/element-list b/Dokumente/JavaDoc/converter/docs/javadoc/element-list new file mode 100644 index 0000000..f863f89 --- /dev/null +++ b/Dokumente/JavaDoc/converter/docs/javadoc/element-list @@ -0,0 +1 @@ +pp.battleship.exporter diff --git a/Dokumente/JavaDoc/converter/docs/javadoc/help-doc.html b/Dokumente/JavaDoc/converter/docs/javadoc/help-doc.html new file mode 100644 index 0000000..9ea2ff5 --- /dev/null +++ b/Dokumente/JavaDoc/converter/docs/javadoc/help-doc.html @@ -0,0 +1,176 @@ + + + + +API-Hilfe (converter API) + + + + + + + + + + + + + +
    + +
    +
    +

    Hilfe zu JavaDoc

    + +
    +
    +

    Navigation

    +Ausgehend von der Seite Überblick können Sie die Dokumentation mithilfe der Links durchsuchen, die sich auf jeder Seite und in der Navigationsleiste oben auf jeder Seite befinden. Mit Index und dem Suchfeld können Sie zu spezifischen Deklarationen und Übersichtsseiten navigieren, wie Alle Packages, Alle Klassen und Schnittstellen + +
    +
    +
    +

    Seitenarten

    +Die folgenden Abschnitte beschreiben die verschiedenen Seitenarten in dieser Collection. +
    +

    Package

    +

    Für jedes Package ist eine Seite vorhanden, die eine Liste der Klassen und Schnittstellen mit jeweils einer Übersicht dafür enthält. Diese Seiten können die folgenden Kategorien enthalten:

    +
      +
    • Schnittstellen
    • +
    • Klassen
    • +
    • Enum-Klassen
    • +
    • Ausnahmeklassen
    • +
    • Annotationsschnittstellen
    • +
    +
    +
    +

    Klasse oder Schnittstelle

    +

    Für jede Klasse, Schnittstelle, verschachtelte Klasse und verschachtelte Schnittstelle ist eine separate Seite vorhanden. Jede dieser Seiten enthält drei Abschnitte, die aus einer Deklaration und Beschreibung, Mitgliederübersichtstabellen und detaillierten Mitgliederbeschreibungen bestehen. Die Einträge in diesen Abschnitten werden weggelassen, wenn sie leer oder nicht anwendbar sind.

    +
      +
    • Klassenvererbungsdiagramm
    • +
    • Direkte Unterklassen
    • +
    • Alle bekannten Unterschnittstellen
    • +
    • Alle bekannten Implementierungsklassen
    • +
    • Klassen- oder Schnittstellendeklaration
    • +
    • Klassen- oder Schnittstellenbeschreibung
    • +
    +
    +
      +
    • Verschachtelte Klassen - Übersicht
    • +
    • Enum-Konstanten - Übersicht
    • +
    • Feldübersicht
    • +
    • Eigenschaftsübersicht
    • +
    • Konstruktorübersicht
    • +
    • Methodenübersicht
    • +
    • Erforderliche Elemente - Übersicht
    • +
    • Optionale Elemente - Übersicht
    • +
    +
    +
      +
    • Enum-Konstanten - Details
    • +
    • Felddetails
    • +
    • Eigenschaftsdetails
    • +
    • Konstruktordetails
    • +
    • Methodendetails
    • +
    • Elementdetails
    • +
    +

    Hinweis: Annotationsschnittstellen haben erforderliche und optionale Elemente, aber nicht Methoden. Nur Enum-Klassen haben Enum-Konstanten. Die Komponenten einer Datensatzklasse werden als Teil der Deklaration der Datensatzklasse angezeigt. Eigenschaften sind ein Feature von JavaFX.

    +

    Die Übersichtseinträge sind alphabetisch geordnet, während die detaillierten Beschreibungen in der Reihenfolge aufgeführt werden, in der sie im Quellcode auftreten. So werden die vom Programmierer festgelegten logischen Gruppierungen beibehalten.

    +
    +
    +

    Weitere Dateien

    +

    Packages und Module können Seiten mit weiteren Informationen zu den Deklarationen in der Nähe enthalten.

    +
    +
    +

    Baum (Klassenhierarchie)

    +

    Es gibt eine Seite Klassenhierarchie für alle Packages, und für jedes Package gibt es eine Hierarchie. Jede Hierarchieseite enthält eine Klassen- und eine Schnittstellenliste. Die Klassen sind nach Vererbungsstruktur organisiert, beginnend mit java.lang.Object. Die Schnittstellen erben nicht von java.lang.Object.

    +
      +
    • Wenn Sie auf der Übersichtsseite auf "Baum" klicken, wird die Hierarchie für alle Packages angezeigt.
    • +
    • Wenn Sie eine bestimmte Package-, Klassen- oder Schnittstellenseite anzeigen und auf "Baum" klicken, wird die Hierarchie nur für dieses Package angezeigt.
    • +
    +
    +
    +

    Alle Packages

    +

    Die Seite Alle Packages enthält einen alphabetischen Index aller Packages, die in der Dokumentation enthalten sind.

    +
    +
    +

    Alle Klassen und Schnittstellen

    +

    Die Seite Alle Klassen und Schnittstellen enthält einen alphabetischen Index aller Klassen und Schnittstellen in der Dokumentation, einschließlich Annotationsschnittstellen, Enum-Klassen und Datensatzklassen.

    +
    +
    +

    Index

    +

    Die Index enthält einen alphabetischen Index aller Klassen, Schnittstellen, Konstruktoren, Methoden und Felder in der Dokumentation sowie Übersichtsseiten wie Alle Packages, Alle Klassen und Schnittstellen.

    +
    +
    +
    +Diese Hilfedatei gilt für die vom Standard-Doclet generierte API-Dokumentation.
    +
    +
    + + diff --git a/Dokumente/JavaDoc/converter/docs/javadoc/index-all.html b/Dokumente/JavaDoc/converter/docs/javadoc/index-all.html new file mode 100644 index 0000000..c7d699e --- /dev/null +++ b/Dokumente/JavaDoc/converter/docs/javadoc/index-all.html @@ -0,0 +1,81 @@ + + + + +Index (converter API) + + + + + + + + + + + + + +
    + +
    +
    +
    +

    Index

    +
    +M P S 
    Alle Klassen und Schnittstellen|Alle Packages +

    M

    +
    +
    main(String[]) - Statische Methode in Klasse pp.battleship.exporter.ModelExporter
    +
    +
    The main method of the converter
    +
    +
    ModelExporter - Klasse in pp.battleship.exporter
    +
    +
    This class transforms models into j3o format.
    +
    +
    ModelExporter() - Konstruktor für Klasse pp.battleship.exporter.ModelExporter
    +
     
    +
    +

    P

    +
    +
    pp.battleship.exporter - Package pp.battleship.exporter
    +
     
    +
    +

    S

    +
    +
    simpleInitApp() - Methode in Klasse pp.battleship.exporter.ModelExporter
    +
    +
    Overrides SimpleApplication.simpleInitApp().
    +
    +
    +M P S 
    Alle Klassen und Schnittstellen|Alle Packages
    +
    +
    + + diff --git a/Dokumente/JavaDoc/converter/docs/javadoc/index.html b/Dokumente/JavaDoc/converter/docs/javadoc/index.html new file mode 100644 index 0000000..505759b --- /dev/null +++ b/Dokumente/JavaDoc/converter/docs/javadoc/index.html @@ -0,0 +1,25 @@ + + + + +converter API + + + + + + + + + + +
    + +

    pp/battleship/exporter/package-summary.html

    +
    + + diff --git a/Dokumente/JavaDoc/converter/docs/javadoc/legal/ADDITIONAL_LICENSE_INFO b/Dokumente/JavaDoc/converter/docs/javadoc/legal/ADDITIONAL_LICENSE_INFO new file mode 100644 index 0000000..3f7e921 --- /dev/null +++ b/Dokumente/JavaDoc/converter/docs/javadoc/legal/ADDITIONAL_LICENSE_INFO @@ -0,0 +1 @@ +Please see ..\java.base\ADDITIONAL_LICENSE_INFO diff --git a/Dokumente/JavaDoc/converter/docs/javadoc/legal/ASSEMBLY_EXCEPTION b/Dokumente/JavaDoc/converter/docs/javadoc/legal/ASSEMBLY_EXCEPTION new file mode 100644 index 0000000..e09f918 --- /dev/null +++ b/Dokumente/JavaDoc/converter/docs/javadoc/legal/ASSEMBLY_EXCEPTION @@ -0,0 +1 @@ +Please see ..\java.base\ASSEMBLY_EXCEPTION diff --git a/Dokumente/JavaDoc/converter/docs/javadoc/legal/LICENSE b/Dokumente/JavaDoc/converter/docs/javadoc/legal/LICENSE new file mode 100644 index 0000000..940481e --- /dev/null +++ b/Dokumente/JavaDoc/converter/docs/javadoc/legal/LICENSE @@ -0,0 +1 @@ +Please see ..\java.base\LICENSE diff --git a/Dokumente/JavaDoc/converter/docs/javadoc/legal/jquery.md b/Dokumente/JavaDoc/converter/docs/javadoc/legal/jquery.md new file mode 100644 index 0000000..d468b31 --- /dev/null +++ b/Dokumente/JavaDoc/converter/docs/javadoc/legal/jquery.md @@ -0,0 +1,72 @@ +## jQuery v3.6.1 + +### jQuery License +``` +jQuery v 3.6.1 +Copyright OpenJS Foundation and other contributors, https://openjsf.org/ + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +****************************************** + +The jQuery JavaScript Library v3.6.1 also includes Sizzle.js + +Sizzle.js includes the following license: + +Copyright JS Foundation and other contributors, https://js.foundation/ + +This software consists of voluntary contributions made by many +individuals. For exact contribution history, see the revision history +available at https://github.com/jquery/sizzle + +The following license applies to all parts of this software except as +documented below: + +==== + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +==== + +All files located in the node_modules and external directories are +externally maintained libraries used by this software which have their +own licenses; we recommend you read them, as their terms may differ from +the terms above. + +********************* + +``` diff --git a/Dokumente/JavaDoc/converter/docs/javadoc/legal/jqueryUI.md b/Dokumente/JavaDoc/converter/docs/javadoc/legal/jqueryUI.md new file mode 100644 index 0000000..9f4c9e9 --- /dev/null +++ b/Dokumente/JavaDoc/converter/docs/javadoc/legal/jqueryUI.md @@ -0,0 +1,49 @@ +## jQuery UI v1.13.1 + +### jQuery UI License +``` +Copyright jQuery Foundation and other contributors, https://jquery.org/ + +This software consists of voluntary contributions made by many +individuals. For exact contribution history, see the revision history +available at https://github.com/jquery/jquery-ui + +The following license applies to all parts of this software except as +documented below: + +==== + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +==== + +Copyright and related rights for sample code are waived via CC0. Sample +code is defined as all source code contained within the demos directory. + +CC0: http://creativecommons.org/publicdomain/zero/1.0/ + +==== + +All files located in the node_modules and external directories are +externally maintained libraries used by this software which have their +own licenses; we recommend you read them, as their terms may differ from +the terms above. + +``` diff --git a/Dokumente/JavaDoc/converter/docs/javadoc/member-search-index.js b/Dokumente/JavaDoc/converter/docs/javadoc/member-search-index.js new file mode 100644 index 0000000..caf6710 --- /dev/null +++ b/Dokumente/JavaDoc/converter/docs/javadoc/member-search-index.js @@ -0,0 +1 @@ +memberSearchIndex = [{"p":"pp.battleship.exporter","c":"ModelExporter","l":"main(String[])","u":"main(java.lang.String[])"},{"p":"pp.battleship.exporter","c":"ModelExporter","l":"ModelExporter()","u":"%3Cinit%3E()"},{"p":"pp.battleship.exporter","c":"ModelExporter","l":"simpleInitApp()"}];updateSearchResults(); \ No newline at end of file diff --git a/Dokumente/JavaDoc/converter/docs/javadoc/module-search-index.js b/Dokumente/JavaDoc/converter/docs/javadoc/module-search-index.js new file mode 100644 index 0000000..0d59754 --- /dev/null +++ b/Dokumente/JavaDoc/converter/docs/javadoc/module-search-index.js @@ -0,0 +1 @@ +moduleSearchIndex = [];updateSearchResults(); \ No newline at end of file diff --git a/Dokumente/JavaDoc/converter/docs/javadoc/overview-tree.html b/Dokumente/JavaDoc/converter/docs/javadoc/overview-tree.html new file mode 100644 index 0000000..1533444 --- /dev/null +++ b/Dokumente/JavaDoc/converter/docs/javadoc/overview-tree.html @@ -0,0 +1,77 @@ + + + + +Klassenhierarchie (converter API) + + + + + + + + + + + + + +
    + +
    +
    +
    +

    Hierarchie für alle Packages

    +
    +Packagehierarchien: + +
    +

    Klassenhierarchie

    +
      +
    • java.lang.Object +
        +
      • com.jme3.app.LegacyApplication (implements com.jme3.app.Application, com.jme3.system.SystemListener) +
          +
        • com.jme3.app.SimpleApplication + +
        • +
        +
      • +
      +
    • +
    +
    +
    +
    +
    + + diff --git a/Dokumente/JavaDoc/converter/docs/javadoc/package-search-index.js b/Dokumente/JavaDoc/converter/docs/javadoc/package-search-index.js new file mode 100644 index 0000000..9c1b6e6 --- /dev/null +++ b/Dokumente/JavaDoc/converter/docs/javadoc/package-search-index.js @@ -0,0 +1 @@ +packageSearchIndex = [{"l":"Alle Packages","u":"allpackages-index.html"},{"l":"pp.battleship.exporter"}];updateSearchResults(); \ No newline at end of file diff --git a/Dokumente/JavaDoc/converter/docs/javadoc/pp/battleship/exporter/ModelExporter.html b/Dokumente/JavaDoc/converter/docs/javadoc/pp/battleship/exporter/ModelExporter.html new file mode 100644 index 0000000..00ac054 --- /dev/null +++ b/Dokumente/JavaDoc/converter/docs/javadoc/pp/battleship/exporter/ModelExporter.html @@ -0,0 +1,221 @@ + + + + +ModelExporter (converter API) + + + + + + + + + + + + + +
    + +
    +
    + +
    + +

    Klasse ModelExporter

    +
    +
    java.lang.Object +
    com.jme3.app.LegacyApplication +
    com.jme3.app.SimpleApplication +
    pp.battleship.exporter.ModelExporter
    +
    +
    +
    +
    +
    +
    Alle implementierten Schnittstellen:
    +
    com.jme3.app.Application, com.jme3.system.SystemListener
    +
    +
    +
    public class ModelExporter +extends com.jme3.app.SimpleApplication
    +
    This class transforms models into j3o format.
    +
    +
    +
      + +
    • +
      +

      Feldübersicht

      +
      +

      Von Klasse geerbte Felder com.jme3.app.SimpleApplication

      +flyCam, fpsText, guiFont, guiNode, INPUT_MAPPING_CAMERA_POS, INPUT_MAPPING_EXIT, INPUT_MAPPING_HIDE_STATS, INPUT_MAPPING_MEMORY, rootNode, showSettings
      +
      +

      Von Klasse geerbte Felder com.jme3.app.LegacyApplication

      +assetManager, audioRenderer, cam, context, guiViewPort, inputEnabled, inputManager, joyInput, keyInput, listener, lostFocusBehavior, mouseInput, paused, prof, renderer, renderManager, settings, speed, stateManager, timer, touchInput, viewPort
      +
      +
    • + +
    • +
      +

      Konstruktorübersicht

      +
      Konstruktoren
      +
      +
      Konstruktor
      +
      Beschreibung
      + +
       
      +
      +
      +
    • + +
    • +
      +

      Methodenübersicht

      +
      +
      +
      +
      +
      Modifizierer und Typ
      +
      Methode
      +
      Beschreibung
      +
      static void
      +
      main(String[] args)
      +
      +
      The main method of the converter
      +
      +
      void
      + +
      +
      Overrides SimpleApplication.simpleInitApp().
      +
      +
      +
      +
      +
      +

      Von Klasse geerbte Methoden com.jme3.app.SimpleApplication

      +getFlyByCamera, getGuiNode, getRootNode, getSpeed, initialize, isShowSettings, loadGuiFont, setDisplayFps, setDisplayStatView, setShowSettings, setSpeed, simpleRender, simpleUpdate, start, update
      +
      +

      Von Klasse geerbte Methoden com.jme3.app.LegacyApplication

      +createCanvas, destroy, destroyInput, enqueue, enqueue, gainFocus, getAppProfiler, getAssetManager, getAudioRenderer, getCamera, getContext, getGuiViewPort, getInputManager, getListener, getLostFocusBehavior, getRenderer, getRenderManager, getStateManager, getTimer, getViewPort, handleError, isPauseOnLostFocus, loseFocus, requestClose, rescale, reshape, restart, runQueuedTasks, setAppProfiler, setAssetManager, setLostFocusBehavior, setPauseOnLostFocus, setSettings, setTimer, start, start, start, startCanvas, startCanvas, stop, stop
      +
      +

      Von Klasse geerbte Methoden java.lang.Object

      +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      +
      +
    • +
    +
    +
    +
      + +
    • +
      +

      Konstruktordetails

      +
        +
      • +
        +

        ModelExporter

        +
        public ModelExporter()
        +
        +
      • +
      +
      +
    • + +
    • +
      +

      Methodendetails

      +
        +
      • +
        +

        main

        +
        public static void main(String[] args)
        +
        The main method of the converter
        +
        +
        Parameter:
        +
        args - input args
        +
        +
        +
      • +
      • +
        +

        simpleInitApp

        +
        public void simpleInitApp()
        +
        Overrides SimpleApplication.simpleInitApp(). + It initializes a simple app by exporting robots and rocks.
        +
        +
        Angegeben von:
        +
        simpleInitApp in Klasse com.jme3.app.SimpleApplication
        +
        +
        +
      • +
      +
      +
    • +
    +
    + +
    +
    +
    + + diff --git a/Dokumente/JavaDoc/converter/docs/javadoc/pp/battleship/exporter/package-summary.html b/Dokumente/JavaDoc/converter/docs/javadoc/pp/battleship/exporter/package-summary.html new file mode 100644 index 0000000..126adde --- /dev/null +++ b/Dokumente/JavaDoc/converter/docs/javadoc/pp/battleship/exporter/package-summary.html @@ -0,0 +1,91 @@ + + + + +pp.battleship.exporter (converter API) + + + + + + + + + + + + + +
    + +
    +
    +
    +

    Package pp.battleship.exporter

    +
    +
    +
    package pp.battleship.exporter
    +
    +
      +
    • +
      +
      Klassen
      +
      +
      Klasse
      +
      Beschreibung
      + +
      +
      This class transforms models into j3o format.
      +
      +
      +
      +
    • +
    +
    +
    +
    +
    + + diff --git a/Dokumente/JavaDoc/converter/docs/javadoc/pp/battleship/exporter/package-tree.html b/Dokumente/JavaDoc/converter/docs/javadoc/pp/battleship/exporter/package-tree.html new file mode 100644 index 0000000..781a115 --- /dev/null +++ b/Dokumente/JavaDoc/converter/docs/javadoc/pp/battleship/exporter/package-tree.html @@ -0,0 +1,73 @@ + + + + +pp.battleship.exporter Klassenhierarchie (converter API) + + + + + + + + + + + + + +
    + +
    +
    +
    +

    Hierarchie für Package pp.battleship.exporter

    +
    +
    +

    Klassenhierarchie

    +
      +
    • java.lang.Object +
        +
      • com.jme3.app.LegacyApplication (implements com.jme3.app.Application, com.jme3.system.SystemListener) +
          +
        • com.jme3.app.SimpleApplication + +
        • +
        +
      • +
      +
    • +
    +
    +
    +
    +
    + + diff --git a/Dokumente/JavaDoc/converter/docs/javadoc/resources/glass.png b/Dokumente/JavaDoc/converter/docs/javadoc/resources/glass.png new file mode 100644 index 0000000..a7f591f Binary files /dev/null and b/Dokumente/JavaDoc/converter/docs/javadoc/resources/glass.png differ diff --git a/Dokumente/JavaDoc/converter/docs/javadoc/resources/x.png b/Dokumente/JavaDoc/converter/docs/javadoc/resources/x.png new file mode 100644 index 0000000..30548a7 Binary files /dev/null and b/Dokumente/JavaDoc/converter/docs/javadoc/resources/x.png differ diff --git a/Dokumente/JavaDoc/converter/docs/javadoc/script-dir/jquery-3.6.1.min.js b/Dokumente/JavaDoc/converter/docs/javadoc/script-dir/jquery-3.6.1.min.js new file mode 100644 index 0000000..2c69bc9 --- /dev/null +++ b/Dokumente/JavaDoc/converter/docs/javadoc/script-dir/jquery-3.6.1.min.js @@ -0,0 +1,2 @@ +/*! jQuery v3.6.1 | (c) OpenJS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,y=n.hasOwnProperty,a=y.toString,l=a.call(Object),v={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.6.1",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&v(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!y||!y.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ve(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ye(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ve(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],y=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&y.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||y.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||y.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||y.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||y.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||y.push(".#.+[+~]"),e.querySelectorAll("\\\f"),y.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&y.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&y.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&y.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),y.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),y=y.length&&new RegExp(y.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),v=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&v(p,e)?-1:t==C||t.ownerDocument==p&&v(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!y||!y.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),v.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",v.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",v.option=!!ce.lastChild;var ge={thead:[1,"","
    "],col:[2,"","
    "],tr:[2,"","
    "],td:[3,"","
    "],_default:[0,"",""]};function ye(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ve(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Ut,Xt=[],Vt=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Xt.pop()||S.expando+"_"+Ct.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Vt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Vt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Vt,"$1"+r):!1!==e.jsonp&&(e.url+=(Et.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Xt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),v.createHTMLDocument=((Ut=E.implementation.createHTMLDocument("").body).innerHTML="
    ",2===Ut.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(v.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return B(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=_e(v.pixelPosition,function(e,t){if(t)return t=Be(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return B(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0",options:{classes:{},disabled:!1,create:null},_createWidget:function(t,e){e=x(e||this.defaultElement||this)[0],this.element=x(e),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=x(),this.hoverable=x(),this.focusable=x(),this.classesElementLookup={},e!==this&&(x.data(e,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===e&&this.destroy()}}),this.document=x(e.style?e.ownerDocument:e.document||e),this.window=x(this.document[0].defaultView||this.document[0].parentWindow)),this.options=x.widget.extend({},this.options,this._getCreateOptions(),t),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:x.noop,_create:x.noop,_init:x.noop,destroy:function(){var i=this;this._destroy(),x.each(this.classesElementLookup,function(t,e){i._removeClass(e,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:x.noop,widget:function(){return this.element},option:function(t,e){var i,s,n,o=t;if(0===arguments.length)return x.widget.extend({},this.options);if("string"==typeof t)if(o={},t=(i=t.split(".")).shift(),i.length){for(s=o[t]=x.widget.extend({},this.options[t]),n=0;n
    "),i=e.children()[0];return x("body").append(e),t=i.offsetWidth,e.css("overflow","scroll"),t===(i=i.offsetWidth)&&(i=e[0].clientWidth),e.remove(),s=t-i},getScrollInfo:function(t){var e=t.isWindow||t.isDocument?"":t.element.css("overflow-x"),i=t.isWindow||t.isDocument?"":t.element.css("overflow-y"),e="scroll"===e||"auto"===e&&t.widthC(E(s),E(n))?o.important="horizontal":o.important="vertical",c.using.call(this,t,o)}),l.offset(x.extend(u,{using:t}))})},x.ui.position={fit:{left:function(t,e){var i=e.within,s=i.isWindow?i.scrollLeft:i.offset.left,n=i.width,o=t.left-e.collisionPosition.marginLeft,l=s-o,a=o+e.collisionWidth-n-s;e.collisionWidth>n?0n?0",delay:300,options:{icons:{submenu:"ui-icon-caret-1-e"},items:"> *",menus:"ul",position:{my:"left top",at:"right top"},role:"menu",blur:null,focus:null,select:null},_create:function(){this.activeMenu=this.element,this.mouseHandled=!1,this.lastMousePosition={x:null,y:null},this.element.uniqueId().attr({role:this.options.role,tabIndex:0}),this._addClass("ui-menu","ui-widget ui-widget-content"),this._on({"mousedown .ui-menu-item":function(t){t.preventDefault(),this._activateItem(t)},"click .ui-menu-item":function(t){var e=x(t.target),i=x(x.ui.safeActiveElement(this.document[0]));!this.mouseHandled&&e.not(".ui-state-disabled").length&&(this.select(t),t.isPropagationStopped()||(this.mouseHandled=!0),e.has(".ui-menu").length?this.expand(t):!this.element.is(":focus")&&i.closest(".ui-menu").length&&(this.element.trigger("focus",[!0]),this.active&&1===this.active.parents(".ui-menu").length&&clearTimeout(this.timer)))},"mouseenter .ui-menu-item":"_activateItem","mousemove .ui-menu-item":"_activateItem",mouseleave:"collapseAll","mouseleave .ui-menu":"collapseAll",focus:function(t,e){var i=this.active||this._menuItems().first();e||this.focus(t,i)},blur:function(t){this._delay(function(){x.contains(this.element[0],x.ui.safeActiveElement(this.document[0]))||this.collapseAll(t)})},keydown:"_keydown"}),this.refresh(),this._on(this.document,{click:function(t){this._closeOnDocumentClick(t)&&this.collapseAll(t,!0),this.mouseHandled=!1}})},_activateItem:function(t){var e,i;this.previousFilter||t.clientX===this.lastMousePosition.x&&t.clientY===this.lastMousePosition.y||(this.lastMousePosition={x:t.clientX,y:t.clientY},e=x(t.target).closest(".ui-menu-item"),i=x(t.currentTarget),e[0]===i[0]&&(i.is(".ui-state-active")||(this._removeClass(i.siblings().children(".ui-state-active"),null,"ui-state-active"),this.focus(t,i))))},_destroy:function(){var t=this.element.find(".ui-menu-item").removeAttr("role aria-disabled").children(".ui-menu-item-wrapper").removeUniqueId().removeAttr("tabIndex role aria-haspopup");this.element.removeAttr("aria-activedescendant").find(".ui-menu").addBack().removeAttr("role aria-labelledby aria-expanded aria-hidden aria-disabled tabIndex").removeUniqueId().show(),t.children().each(function(){var t=x(this);t.data("ui-menu-submenu-caret")&&t.remove()})},_keydown:function(t){var e,i,s,n=!0;switch(t.keyCode){case x.ui.keyCode.PAGE_UP:this.previousPage(t);break;case x.ui.keyCode.PAGE_DOWN:this.nextPage(t);break;case x.ui.keyCode.HOME:this._move("first","first",t);break;case x.ui.keyCode.END:this._move("last","last",t);break;case x.ui.keyCode.UP:this.previous(t);break;case x.ui.keyCode.DOWN:this.next(t);break;case x.ui.keyCode.LEFT:this.collapse(t);break;case x.ui.keyCode.RIGHT:this.active&&!this.active.is(".ui-state-disabled")&&this.expand(t);break;case x.ui.keyCode.ENTER:case x.ui.keyCode.SPACE:this._activate(t);break;case x.ui.keyCode.ESCAPE:this.collapse(t);break;default:e=this.previousFilter||"",s=n=!1,i=96<=t.keyCode&&t.keyCode<=105?(t.keyCode-96).toString():String.fromCharCode(t.keyCode),clearTimeout(this.filterTimer),i===e?s=!0:i=e+i,e=this._filterMenuItems(i),(e=s&&-1!==e.index(this.active.next())?this.active.nextAll(".ui-menu-item"):e).length||(i=String.fromCharCode(t.keyCode),e=this._filterMenuItems(i)),e.length?(this.focus(t,e),this.previousFilter=i,this.filterTimer=this._delay(function(){delete this.previousFilter},1e3)):delete this.previousFilter}n&&t.preventDefault()},_activate:function(t){this.active&&!this.active.is(".ui-state-disabled")&&(this.active.children("[aria-haspopup='true']").length?this.expand(t):this.select(t))},refresh:function(){var t,e,s=this,n=this.options.icons.submenu,i=this.element.find(this.options.menus);this._toggleClass("ui-menu-icons",null,!!this.element.find(".ui-icon").length),e=i.filter(":not(.ui-menu)").hide().attr({role:this.options.role,"aria-hidden":"true","aria-expanded":"false"}).each(function(){var t=x(this),e=t.prev(),i=x("").data("ui-menu-submenu-caret",!0);s._addClass(i,"ui-menu-icon","ui-icon "+n),e.attr("aria-haspopup","true").prepend(i),t.attr("aria-labelledby",e.attr("id"))}),this._addClass(e,"ui-menu","ui-widget ui-widget-content ui-front"),(t=i.add(this.element).find(this.options.items)).not(".ui-menu-item").each(function(){var t=x(this);s._isDivider(t)&&s._addClass(t,"ui-menu-divider","ui-widget-content")}),i=(e=t.not(".ui-menu-item, .ui-menu-divider")).children().not(".ui-menu").uniqueId().attr({tabIndex:-1,role:this._itemRole()}),this._addClass(e,"ui-menu-item")._addClass(i,"ui-menu-item-wrapper"),t.filter(".ui-state-disabled").attr("aria-disabled","true"),this.active&&!x.contains(this.element[0],this.active[0])&&this.blur()},_itemRole:function(){return{menu:"menuitem",listbox:"option"}[this.options.role]},_setOption:function(t,e){var i;"icons"===t&&(i=this.element.find(".ui-menu-icon"),this._removeClass(i,null,this.options.icons.submenu)._addClass(i,null,e.submenu)),this._super(t,e)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",String(t)),this._toggleClass(null,"ui-state-disabled",!!t)},focus:function(t,e){var i;this.blur(t,t&&"focus"===t.type),this._scrollIntoView(e),this.active=e.first(),i=this.active.children(".ui-menu-item-wrapper"),this._addClass(i,null,"ui-state-active"),this.options.role&&this.element.attr("aria-activedescendant",i.attr("id")),i=this.active.parent().closest(".ui-menu-item").children(".ui-menu-item-wrapper"),this._addClass(i,null,"ui-state-active"),t&&"keydown"===t.type?this._close():this.timer=this._delay(function(){this._close()},this.delay),(i=e.children(".ui-menu")).length&&t&&/^mouse/.test(t.type)&&this._startOpening(i),this.activeMenu=e.parent(),this._trigger("focus",t,{item:e})},_scrollIntoView:function(t){var e,i,s;this._hasScroll()&&(i=parseFloat(x.css(this.activeMenu[0],"borderTopWidth"))||0,s=parseFloat(x.css(this.activeMenu[0],"paddingTop"))||0,e=t.offset().top-this.activeMenu.offset().top-i-s,i=this.activeMenu.scrollTop(),s=this.activeMenu.height(),t=t.outerHeight(),e<0?this.activeMenu.scrollTop(i+e):s",options:{appendTo:null,autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null,change:null,close:null,focus:null,open:null,response:null,search:null,select:null},requestIndex:0,pending:0,liveRegionTimer:null,_create:function(){var i,s,n,t=this.element[0].nodeName.toLowerCase(),e="textarea"===t,t="input"===t;this.isMultiLine=e||!t&&this._isContentEditable(this.element),this.valueMethod=this.element[e||t?"val":"text"],this.isNewMenu=!0,this._addClass("ui-autocomplete-input"),this.element.attr("autocomplete","off"),this._on(this.element,{keydown:function(t){if(this.element.prop("readOnly"))s=n=i=!0;else{s=n=i=!1;var e=x.ui.keyCode;switch(t.keyCode){case e.PAGE_UP:i=!0,this._move("previousPage",t);break;case e.PAGE_DOWN:i=!0,this._move("nextPage",t);break;case e.UP:i=!0,this._keyEvent("previous",t);break;case e.DOWN:i=!0,this._keyEvent("next",t);break;case e.ENTER:this.menu.active&&(i=!0,t.preventDefault(),this.menu.select(t));break;case e.TAB:this.menu.active&&this.menu.select(t);break;case e.ESCAPE:this.menu.element.is(":visible")&&(this.isMultiLine||this._value(this.term),this.close(t),t.preventDefault());break;default:s=!0,this._searchTimeout(t)}}},keypress:function(t){if(i)return i=!1,void(this.isMultiLine&&!this.menu.element.is(":visible")||t.preventDefault());if(!s){var e=x.ui.keyCode;switch(t.keyCode){case e.PAGE_UP:this._move("previousPage",t);break;case e.PAGE_DOWN:this._move("nextPage",t);break;case e.UP:this._keyEvent("previous",t);break;case e.DOWN:this._keyEvent("next",t)}}},input:function(t){if(n)return n=!1,void t.preventDefault();this._searchTimeout(t)},focus:function(){this.selectedItem=null,this.previous=this._value()},blur:function(t){clearTimeout(this.searching),this.close(t),this._change(t)}}),this._initSource(),this.menu=x("
      ").appendTo(this._appendTo()).menu({role:null}).hide().attr({unselectable:"on"}).menu("instance"),this._addClass(this.menu.element,"ui-autocomplete","ui-front"),this._on(this.menu.element,{mousedown:function(t){t.preventDefault()},menufocus:function(t,e){var i,s;if(this.isNewMenu&&(this.isNewMenu=!1,t.originalEvent&&/^mouse/.test(t.originalEvent.type)))return this.menu.blur(),void this.document.one("mousemove",function(){x(t.target).trigger(t.originalEvent)});s=e.item.data("ui-autocomplete-item"),!1!==this._trigger("focus",t,{item:s})&&t.originalEvent&&/^key/.test(t.originalEvent.type)&&this._value(s.value),(i=e.item.attr("aria-label")||s.value)&&String.prototype.trim.call(i).length&&(clearTimeout(this.liveRegionTimer),this.liveRegionTimer=this._delay(function(){this.liveRegion.html(x("
      ").text(i))},100))},menuselect:function(t,e){var i=e.item.data("ui-autocomplete-item"),s=this.previous;this.element[0]!==x.ui.safeActiveElement(this.document[0])&&(this.element.trigger("focus"),this.previous=s,this._delay(function(){this.previous=s,this.selectedItem=i})),!1!==this._trigger("select",t,{item:i})&&this._value(i.value),this.term=this._value(),this.close(t),this.selectedItem=i}}),this.liveRegion=x("
      ",{role:"status","aria-live":"assertive","aria-relevant":"additions"}).appendTo(this.document[0].body),this._addClass(this.liveRegion,null,"ui-helper-hidden-accessible"),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_destroy:function(){clearTimeout(this.searching),this.element.removeAttr("autocomplete"),this.menu.element.remove(),this.liveRegion.remove()},_setOption:function(t,e){this._super(t,e),"source"===t&&this._initSource(),"appendTo"===t&&this.menu.element.appendTo(this._appendTo()),"disabled"===t&&e&&this.xhr&&this.xhr.abort()},_isEventTargetInWidget:function(t){var e=this.menu.element[0];return t.target===this.element[0]||t.target===e||x.contains(e,t.target)},_closeOnClickOutside:function(t){this._isEventTargetInWidget(t)||this.close()},_appendTo:function(){var t=this.options.appendTo;return t=!(t=!(t=t&&(t.jquery||t.nodeType?x(t):this.document.find(t).eq(0)))||!t[0]?this.element.closest(".ui-front, dialog"):t).length?this.document[0].body:t},_initSource:function(){var i,s,n=this;Array.isArray(this.options.source)?(i=this.options.source,this.source=function(t,e){e(x.ui.autocomplete.filter(i,t.term))}):"string"==typeof this.options.source?(s=this.options.source,this.source=function(t,e){n.xhr&&n.xhr.abort(),n.xhr=x.ajax({url:s,data:t,dataType:"json",success:function(t){e(t)},error:function(){e([])}})}):this.source=this.options.source},_searchTimeout:function(s){clearTimeout(this.searching),this.searching=this._delay(function(){var t=this.term===this._value(),e=this.menu.element.is(":visible"),i=s.altKey||s.ctrlKey||s.metaKey||s.shiftKey;t&&(e||i)||(this.selectedItem=null,this.search(null,s))},this.options.delay)},search:function(t,e){return t=null!=t?t:this._value(),this.term=this._value(),t.length").append(x("
      ").text(e.label)).appendTo(t)},_move:function(t,e){if(this.menu.element.is(":visible"))return this.menu.isFirstItem()&&/^previous/.test(t)||this.menu.isLastItem()&&/^next/.test(t)?(this.isMultiLine||this._value(this.term),void this.menu.blur()):void this.menu[t](e);this.search(null,e)},widget:function(){return this.menu.element},_value:function(){return this.valueMethod.apply(this.element,arguments)},_keyEvent:function(t,e){this.isMultiLine&&!this.menu.element.is(":visible")||(this._move(t,e),e.preventDefault())},_isContentEditable:function(t){if(!t.length)return!1;var e=t.prop("contentEditable");return"inherit"===e?this._isContentEditable(t.parent()):"true"===e}}),x.extend(x.ui.autocomplete,{escapeRegex:function(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")},filter:function(t,e){var i=new RegExp(x.ui.autocomplete.escapeRegex(e),"i");return x.grep(t,function(t){return i.test(t.label||t.value||t)})}}),x.widget("ui.autocomplete",x.ui.autocomplete,{options:{messages:{noResults:"No search results.",results:function(t){return t+(1").text(e))},100))}});x.ui.autocomplete}); \ No newline at end of file diff --git a/Dokumente/JavaDoc/converter/docs/javadoc/script.js b/Dokumente/JavaDoc/converter/docs/javadoc/script.js new file mode 100644 index 0000000..1e8a64f --- /dev/null +++ b/Dokumente/JavaDoc/converter/docs/javadoc/script.js @@ -0,0 +1,268 @@ +/* + * Copyright (c) 2013, 2022, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +var moduleSearchIndex; +var packageSearchIndex; +var typeSearchIndex; +var memberSearchIndex; +var tagSearchIndex; + +var oddRowColor = "odd-row-color"; +var evenRowColor = "even-row-color"; +var sortAsc = "sort-asc"; +var sortDesc = "sort-desc"; +var tableTab = "table-tab"; +var activeTableTab = "active-table-tab"; + +function loadScripts(doc, tag) { + createElem(doc, tag, 'search.js'); + + createElem(doc, tag, 'module-search-index.js'); + createElem(doc, tag, 'package-search-index.js'); + createElem(doc, tag, 'type-search-index.js'); + createElem(doc, tag, 'member-search-index.js'); + createElem(doc, tag, 'tag-search-index.js'); +} + +function createElem(doc, tag, path) { + var script = doc.createElement(tag); + var scriptElement = doc.getElementsByTagName(tag)[0]; + script.src = pathtoroot + path; + scriptElement.parentNode.insertBefore(script, scriptElement); +} + +// Helper for making content containing release names comparable lexicographically +function makeComparable(s) { + return s.toLowerCase().replace(/(\d+)/g, + function(n, m) { + return ("000" + m).slice(-4); + }); +} + +// Switches between two styles depending on a condition +function toggleStyle(classList, condition, trueStyle, falseStyle) { + if (condition) { + classList.remove(falseStyle); + classList.add(trueStyle); + } else { + classList.remove(trueStyle); + classList.add(falseStyle); + } +} + +// Sorts the rows in a table lexicographically by the content of a specific column +function sortTable(header, columnIndex, columns) { + var container = header.parentElement; + var descending = header.classList.contains(sortAsc); + container.querySelectorAll("div.table-header").forEach( + function(header) { + header.classList.remove(sortAsc); + header.classList.remove(sortDesc); + } + ) + var cells = container.children; + var rows = []; + for (var i = columns; i < cells.length; i += columns) { + rows.push(Array.prototype.slice.call(cells, i, i + columns)); + } + var comparator = function(a, b) { + var ka = makeComparable(a[columnIndex].textContent); + var kb = makeComparable(b[columnIndex].textContent); + if (ka < kb) + return descending ? 1 : -1; + if (ka > kb) + return descending ? -1 : 1; + return 0; + }; + var sorted = rows.sort(comparator); + var visible = 0; + sorted.forEach(function(row) { + if (row[0].style.display !== 'none') { + var isEvenRow = visible++ % 2 === 0; + } + row.forEach(function(cell) { + toggleStyle(cell.classList, isEvenRow, evenRowColor, oddRowColor); + container.appendChild(cell); + }) + }); + toggleStyle(header.classList, descending, sortDesc, sortAsc); +} + +// Toggles the visibility of a table category in all tables in a page +function toggleGlobal(checkbox, selected, columns) { + var display = checkbox.checked ? '' : 'none'; + document.querySelectorAll("div.table-tabs").forEach(function(t) { + var id = t.parentElement.getAttribute("id"); + var selectedClass = id + "-tab" + selected; + // if selected is empty string it selects all uncategorized entries + var selectUncategorized = !Boolean(selected); + var visible = 0; + document.querySelectorAll('div.' + id) + .forEach(function(elem) { + if (selectUncategorized) { + if (elem.className.indexOf(selectedClass) === -1) { + elem.style.display = display; + } + } else if (elem.classList.contains(selectedClass)) { + elem.style.display = display; + } + if (elem.style.display === '') { + var isEvenRow = visible++ % (columns * 2) < columns; + toggleStyle(elem.classList, isEvenRow, evenRowColor, oddRowColor); + } + }); + var displaySection = visible === 0 ? 'none' : ''; + t.parentElement.style.display = displaySection; + document.querySelector("li#contents-" + id).style.display = displaySection; + }) +} + +// Shows the elements of a table belonging to a specific category +function show(tableId, selected, columns) { + if (tableId !== selected) { + document.querySelectorAll('div.' + tableId + ':not(.' + selected + ')') + .forEach(function(elem) { + elem.style.display = 'none'; + }); + } + document.querySelectorAll('div.' + selected) + .forEach(function(elem, index) { + elem.style.display = ''; + var isEvenRow = index % (columns * 2) < columns; + toggleStyle(elem.classList, isEvenRow, evenRowColor, oddRowColor); + }); + updateTabs(tableId, selected); +} + +function updateTabs(tableId, selected) { + document.querySelector('div#' + tableId +' .summary-table') + .setAttribute('aria-labelledby', selected); + document.querySelectorAll('button[id^="' + tableId + '"]') + .forEach(function(tab, index) { + if (selected === tab.id || (tableId === selected && index === 0)) { + tab.className = activeTableTab; + tab.setAttribute('aria-selected', true); + tab.setAttribute('tabindex',0); + } else { + tab.className = tableTab; + tab.setAttribute('aria-selected', false); + tab.setAttribute('tabindex',-1); + } + }); +} + +function switchTab(e) { + var selected = document.querySelector('[aria-selected=true]'); + if (selected) { + if ((e.keyCode === 37 || e.keyCode === 38) && selected.previousSibling) { + // left or up arrow key pressed: move focus to previous tab + selected.previousSibling.click(); + selected.previousSibling.focus(); + e.preventDefault(); + } else if ((e.keyCode === 39 || e.keyCode === 40) && selected.nextSibling) { + // right or down arrow key pressed: move focus to next tab + selected.nextSibling.click(); + selected.nextSibling.focus(); + e.preventDefault(); + } + } +} + +var updateSearchResults = function() {}; + +function indexFilesLoaded() { + return moduleSearchIndex + && packageSearchIndex + && typeSearchIndex + && memberSearchIndex + && tagSearchIndex; +} +// Copy the contents of the local snippet to the clipboard +function copySnippet(button) { + copyToClipboard(button.nextElementSibling.innerText); + switchCopyLabel(button.firstElementChild, button.parentElement); +} +// Copy the link to the adjacent header to the clipboard +function copyUrl(button) { + var id; + var header = button.parentElement; + if (header.hasAttribute("id")) { + id = header.getAttribute("id"); + } else if (header.parentElement.tagName === 'SECTION' && header.parentElement.hasAttribute("id")) { + id = header.parentElement.getAttribute("id"); + } else if (header.firstElementChild && header.firstElementChild.tagName === "A" + && header.firstElementChild.hasAttribute("id")) { + id = header.firstElementChild.getAttribute("id"); + } + var url = document.location.href; + if (url.indexOf("#") > -1) { + url = url.substring(0, url.indexOf("#")); + } + copyToClipboard(url + "#" + id); + switchCopyLabel(button.lastElementChild, button.parentElement); +} +function copyToClipboard(content) { + var textarea = document.createElement("textarea"); + textarea.style.height = 0; + document.body.appendChild(textarea); + textarea.value = content; + textarea.select(); + document.execCommand("copy"); + document.body.removeChild(textarea); +} +function switchCopyLabel(span, parent) { + var copied = span.getAttribute("data-copied"); + if (span.innerHTML !== copied) { + var initialLabel = span.innerHTML; + span.innerHTML = copied; + parent.onmouseleave = parent.ontouchend = function() { + span.innerHTML = initialLabel; + }; + } +} +// Workaround for scroll position not being included in browser history (8249133) +document.addEventListener("DOMContentLoaded", function(e) { + var contentDiv = document.querySelector("div.flex-content"); + window.addEventListener("popstate", function(e) { + if (e.state !== null) { + contentDiv.scrollTop = e.state; + } + }); + window.addEventListener("hashchange", function(e) { + history.replaceState(contentDiv.scrollTop, document.title); + }); + var timeoutId; + contentDiv.addEventListener("scroll", function(e) { + if (timeoutId) { + clearTimeout(timeoutId); + } + timeoutId = setTimeout(function() { + history.replaceState(contentDiv.scrollTop, document.title); + }, 100); + }); + if (!location.hash) { + history.replaceState(contentDiv.scrollTop, document.title); + } +}); diff --git a/Dokumente/JavaDoc/converter/docs/javadoc/search-page.js b/Dokumente/JavaDoc/converter/docs/javadoc/search-page.js new file mode 100644 index 0000000..342465b --- /dev/null +++ b/Dokumente/JavaDoc/converter/docs/javadoc/search-page.js @@ -0,0 +1,299 @@ +/* + * Copyright (c) 2022, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +"use strict"; +$(function() { + var copy = $("#page-search-copy"); + var expand = $("#page-search-expand"); + var searchLink = $("span#page-search-link"); + var redirect = $("input#search-redirect"); + function setSearchUrlTemplate() { + var href = document.location.href.split(/[#?]/)[0]; + href += "?q=" + "%s"; + if (redirect.is(":checked")) { + href += "&r=1"; + } + searchLink.html(href); + copy[0].onmouseenter(); + } + function copyLink(e) { + var textarea = document.createElement("textarea"); + textarea.style.height = 0; + document.body.appendChild(textarea); + textarea.value = this.previousSibling.innerText; + textarea.select(); + document.execCommand("copy"); + document.body.removeChild(textarea); + var span = this.lastElementChild; + var copied = span.getAttribute("data-copied"); + if (span.innerHTML !== copied) { + var initialLabel = span.innerHTML; + span.innerHTML = copied; + var parent = this.parentElement.parentElement; + parent.onmouseleave = parent.ontouchend = copy[0].onmouseenter = function() { + span.innerHTML = initialLabel; + }; + } + } + copy.click(copyLink); + copy[0].onmouseenter = function() {}; + redirect.click(setSearchUrlTemplate); + setSearchUrlTemplate(); + copy.prop("disabled", false); + redirect.prop("disabled", false); + expand.click(function (e) { + var searchInfo = $("div.page-search-info"); + if(this.parentElement.hasAttribute("open")) { + searchInfo.attr("style", "border-width: 0;"); + } else { + searchInfo.attr("style", "border-width: 1px;").height(searchInfo.prop("scrollHeight")); + } + }); +}); +$(window).on("load", function() { + var input = $("#page-search-input"); + var reset = $("#page-search-reset"); + var notify = $("#page-search-notify"); + var resultSection = $("div#result-section"); + var resultContainer = $("div#result-container"); + var searchTerm = ""; + var activeTab = ""; + var fixedTab = false; + var visibleTabs = []; + var feelingLucky = false; + function renderResults(result) { + if (!result.length) { + notify.html(messages.noResult); + } else if (result.length === 1) { + notify.html(messages.oneResult); + } else { + notify.html(messages.manyResults.replace("{0}", result.length)); + } + resultContainer.empty(); + var r = { + "types": [], + "members": [], + "packages": [], + "modules": [], + "searchTags": [] + }; + for (var i in result) { + var item = result[i]; + var arr = r[item.category]; + arr.push(item); + } + if (!activeTab || r[activeTab].length === 0 || !fixedTab) { + Object.keys(r).reduce(function(prev, curr) { + if (r[curr].length > 0 && r[curr][0].score > prev) { + activeTab = curr; + return r[curr][0].score; + } + return prev; + }, 0); + } + if (feelingLucky && activeTab) { + notify.html(messages.redirecting) + var firstItem = r[activeTab][0]; + window.location = getURL(firstItem.indexItem, firstItem.category); + return; + } + if (result.length > 20) { + if (searchTerm[searchTerm.length - 1] === ".") { + if (activeTab === "types" && r["members"].length > r["types"].length) { + activeTab = "members"; + } else if (activeTab === "packages" && r["types"].length > r["packages"].length) { + activeTab = "types"; + } + } + } + var categoryCount = Object.keys(r).reduce(function(prev, curr) { + return prev + (r[curr].length > 0 ? 1 : 0); + }, 0); + visibleTabs = []; + var tabContainer = $("
      ").appendTo(resultContainer); + for (var key in r) { + var id = "#result-tab-" + key.replace("searchTags", "search_tags"); + if (r[key].length) { + var count = r[key].length >= 1000 ? "999+" : r[key].length; + if (result.length > 20 && categoryCount > 1) { + var button = $("").appendTo(tabContainer); + button.click(key, function(e) { + fixedTab = true; + renderResult(e.data, $(this)); + }); + visibleTabs.push(key); + } else { + $("" + categories[key] + + " (" + count + ")").appendTo(tabContainer); + renderTable(key, r[key]).appendTo(resultContainer); + tabContainer = $("
      ").appendTo(resultContainer); + + } + } + } + if (activeTab && result.length > 20 && categoryCount > 1) { + $("button#result-tab-" + activeTab).addClass("active-table-tab"); + renderTable(activeTab, r[activeTab]).appendTo(resultContainer); + } + resultSection.show(); + function renderResult(category, button) { + activeTab = category; + setSearchUrl(); + resultContainer.find("div.summary-table").remove(); + renderTable(activeTab, r[activeTab]).appendTo(resultContainer); + button.siblings().removeClass("active-table-tab"); + button.addClass("active-table-tab"); + } + } + function selectTab(category) { + $("button#result-tab-" + category).click(); + } + function renderTable(category, items) { + var table = $("
      ") + .addClass(category === "modules" + ? "one-column-search-results" + : "two-column-search-results"); + var col1, col2; + if (category === "modules") { + col1 = "Module"; + } else if (category === "packages") { + col1 = "Module"; + col2 = "Package"; + } else if (category === "types") { + col1 = "Package"; + col2 = "Class" + } else if (category === "members") { + col1 = "Class"; + col2 = "Member"; + } else if (category === "searchTags") { + col1 = "Location"; + col2 = "Name"; + } + $("
      " + col1 + "
      ").appendTo(table); + if (category !== "modules") { + $("
      " + col2 + "
      ").appendTo(table); + } + $.each(items, function(index, item) { + var rowColor = index % 2 ? "odd-row-color" : "even-row-color"; + renderItem(item, table, rowColor); + }); + return table; + } + function renderItem(item, table, rowColor) { + var label = getHighlightedText(item.input, item.boundaries, item.prefix.length, item.input.length); + var link = $("") + .attr("href", getURL(item.indexItem, item.category)) + .attr("tabindex", "0") + .addClass("search-result-link") + .html(label); + var container = getHighlightedText(item.input, item.boundaries, 0, item.prefix.length - 1); + if (item.category === "searchTags") { + container = item.indexItem.h || ""; + } + if (item.category !== "modules") { + $("
      ").html(container).addClass("col-plain").addClass(rowColor).appendTo(table); + } + $("
      ").html(link).addClass("col-last").addClass(rowColor).appendTo(table); + } + var timeout; + function schedulePageSearch() { + if (timeout) { + clearTimeout(timeout); + } + timeout = setTimeout(function () { + doPageSearch() + }, 100); + } + function doPageSearch() { + setSearchUrl(); + var term = searchTerm = input.val().trim(); + if (term === "") { + notify.html(messages.enterTerm); + activeTab = ""; + fixedTab = false; + resultContainer.empty(); + resultSection.hide(); + } else { + notify.html(messages.searching); + doSearch({ term: term, maxResults: 1200 }, renderResults); + } + } + function setSearchUrl() { + var query = input.val().trim(); + var url = document.location.pathname; + if (query) { + url += "?q=" + encodeURI(query); + if (activeTab && fixedTab) { + url += "&c=" + activeTab; + } + } + history.replaceState({query: query}, "", url); + } + input.on("input", function(e) { + feelingLucky = false; + schedulePageSearch(); + }); + $(document).keydown(function(e) { + if ((e.ctrlKey || e.metaKey) && (e.key === "ArrowLeft" || e.key === "ArrowRight")) { + if (activeTab && visibleTabs.length > 1) { + var idx = visibleTabs.indexOf(activeTab); + idx += e.key === "ArrowLeft" ? visibleTabs.length - 1 : 1; + selectTab(visibleTabs[idx % visibleTabs.length]); + return false; + } + } + }); + reset.click(function() { + notify.html(messages.enterTerm); + resultSection.hide(); + activeTab = ""; + fixedTab = false; + resultContainer.empty(); + input.val('').focus(); + setSearchUrl(); + }); + input.prop("disabled", false); + reset.prop("disabled", false); + + var urlParams = new URLSearchParams(window.location.search); + if (urlParams.has("q")) { + input.val(urlParams.get("q")) + } + if (urlParams.has("c")) { + activeTab = urlParams.get("c"); + fixedTab = true; + } + if (urlParams.get("r")) { + feelingLucky = true; + } + if (input.val()) { + doPageSearch(); + } else { + notify.html(messages.enterTerm); + } + input.select().focus(); +}); diff --git a/Dokumente/JavaDoc/converter/docs/javadoc/search.html b/Dokumente/JavaDoc/converter/docs/javadoc/search.html new file mode 100644 index 0000000..80aa3ae --- /dev/null +++ b/Dokumente/JavaDoc/converter/docs/javadoc/search.html @@ -0,0 +1,70 @@ + + + + +Suchen (converter API) + + + + + + + + + + + + + +
      + +
      +
      +

      Suchen

      +
      + + +
      +Zusätzliche Ressourcen +
      +
      +
      +

      Die Hilfeseite enthält eine Einführung in den Umfang und die Syntax der JavaDoc-Suche.

      +

      Sie können die <STRG>- oder <CMD>-Taste zusammen mit den Pfeiltasten nach links und rechts verwenden, um zwischen Ergebnisregisterkarten auf dieser Seite zu wechseln.

      +

      Mit der URL-Vorlage unten können Sie diese Seite als Suchmaschine in Browsern konfigurieren, die dieses Feature unterstützen. Das Feature wurde erfolgreich mit Google Chrome und Mozilla Firefox getestet. Beachten Sie, dass andere Browser dieses Feature möglicherweise nicht unterstützen oder ein anderes URL-Format erfordern.

      +link +

      + +

      +
      +

      Suchindex wird geladen...

      + +
      +
      +
      + + diff --git a/Dokumente/JavaDoc/converter/docs/javadoc/search.js b/Dokumente/JavaDoc/converter/docs/javadoc/search.js new file mode 100644 index 0000000..ef787b7 --- /dev/null +++ b/Dokumente/JavaDoc/converter/docs/javadoc/search.js @@ -0,0 +1,458 @@ +/* + * Copyright (c) 2015, 2022, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ +"use strict"; +const messages = { + enterTerm: "Geben Sie einen Suchbegriff ein", + noResult: "Keine Ergebnisse gefunden", + oneResult: "Ein Ergebnis gefunden", + manyResults: "{0} Ergebnisse gefunden", + loading: "Suchindex wird geladen...", + searching: "Suche wird ausgeführt...", + redirecting: "Zum ersten Ergebnis wird umgeleitet...", + copyUrl: "URL kopieren", + urlCopied: "Kopiert." +} +const categories = { + modules: "Module", + packages: "Packages", + types: "Klassen und Schnittstellen", + members: "Mitglieder", + searchTags: "Tags suchen" +}; +const highlight = "$&"; +const NO_MATCH = {}; +const MAX_RESULTS = 300; +function checkUnnamed(name, separator) { + return name === "" || !name ? "" : name + separator; +} +function escapeHtml(str) { + return str.replace(//g, ">"); +} +function getHighlightedText(str, boundaries, from, to) { + var start = from; + var text = ""; + for (var i = 0; i < boundaries.length; i += 2) { + var b0 = boundaries[i]; + var b1 = boundaries[i + 1]; + if (b0 >= to || b1 <= from) { + continue; + } + text += escapeHtml(str.slice(start, Math.max(start, b0))); + text += ""; + text += escapeHtml(str.slice(Math.max(start, b0), Math.min(to, b1))); + text += ""; + start = Math.min(to, b1); + } + text += escapeHtml(str.slice(start, to)); + return text; +} +function getURLPrefix(item, category) { + var urlPrefix = ""; + var slash = "/"; + if (category === "modules") { + return item.l + slash; + } else if (category === "packages" && item.m) { + return item.m + slash; + } else if (category === "types" || category === "members") { + if (item.m) { + urlPrefix = item.m + slash; + } else { + $.each(packageSearchIndex, function(index, it) { + if (it.m && item.p === it.l) { + urlPrefix = it.m + slash; + } + }); + } + } + return urlPrefix; +} +function getURL(item, category) { + if (item.url) { + return item.url; + } + var url = getURLPrefix(item, category); + if (category === "modules") { + url += "module-summary.html"; + } else if (category === "packages") { + if (item.u) { + url = item.u; + } else { + url += item.l.replace(/\./g, '/') + "/package-summary.html"; + } + } else if (category === "types") { + if (item.u) { + url = item.u; + } else { + url += checkUnnamed(item.p, "/").replace(/\./g, '/') + item.l + ".html"; + } + } else if (category === "members") { + url += checkUnnamed(item.p, "/").replace(/\./g, '/') + item.c + ".html" + "#"; + if (item.u) { + url += item.u; + } else { + url += item.l; + } + } else if (category === "searchTags") { + url += item.u; + } + item.url = url; + return url; +} +function createMatcher(term, camelCase) { + if (camelCase && !isUpperCase(term)) { + return null; // no need for camel-case matcher for lower case query + } + var pattern = ""; + var upperCase = []; + term.trim().split(/\s+/).forEach(function(w, index, array) { + var tokens = w.split(/(?=[A-Z,.()<>?[\/])/); + for (var i = 0; i < tokens.length; i++) { + var s = tokens[i]; + // ',' and '?' are the only delimiters commonly followed by space in java signatures + pattern += "(" + $.ui.autocomplete.escapeRegex(s).replace(/[,?]/g, "$&\\s*?") + ")"; + upperCase.push(false); + var isWordToken = /\w$/.test(s); + if (isWordToken) { + if (i === tokens.length - 1 && index < array.length - 1) { + // space in query string matches all delimiters + pattern += "(.*?)"; + upperCase.push(isUpperCase(s[0])); + } else { + if (!camelCase && isUpperCase(s) && s.length === 1) { + pattern += "()"; + } else { + pattern += "([a-z0-9$<>?[\\]]*?)"; + } + upperCase.push(isUpperCase(s[0])); + } + } else { + pattern += "()"; + upperCase.push(false); + } + } + }); + var re = new RegExp(pattern, "gi"); + re.upperCase = upperCase; + return re; +} +function findMatch(matcher, input, startOfName, endOfName) { + var from = startOfName; + matcher.lastIndex = from; + var match = matcher.exec(input); + // Expand search area until we get a valid result or reach the beginning of the string + while (!match || match.index + match[0].length < startOfName || endOfName < match.index) { + if (from === 0) { + return NO_MATCH; + } + from = input.lastIndexOf(".", from - 2) + 1; + matcher.lastIndex = from; + match = matcher.exec(input); + } + var boundaries = []; + var matchEnd = match.index + match[0].length; + var score = 5; + var start = match.index; + var prevEnd = -1; + for (var i = 1; i < match.length; i += 2) { + var isUpper = isUpperCase(input[start]); + var isMatcherUpper = matcher.upperCase[i]; + // capturing groups come in pairs, match and non-match + boundaries.push(start, start + match[i].length); + // make sure groups are anchored on a left word boundary + var prevChar = input[start - 1] || ""; + var nextChar = input[start + 1] || ""; + if (start !== 0 && !/[\W_]/.test(prevChar) && !/[\W_]/.test(input[start])) { + if (isUpper && (isLowerCase(prevChar) || isLowerCase(nextChar))) { + score -= 0.1; + } else if (isMatcherUpper && start === prevEnd) { + score -= isUpper ? 0.1 : 1.0; + } else { + return NO_MATCH; + } + } + prevEnd = start + match[i].length; + start += match[i].length + match[i + 1].length; + + // lower score for parts of the name that are missing + if (match[i + 1] && prevEnd < endOfName) { + score -= rateNoise(match[i + 1]); + } + } + // lower score if a type name contains unmatched camel-case parts + if (input[matchEnd - 1] !== "." && endOfName > matchEnd) + score -= rateNoise(input.slice(matchEnd, endOfName)); + score -= rateNoise(input.slice(0, Math.max(startOfName, match.index))); + + if (score <= 0) { + return NO_MATCH; + } + return { + input: input, + score: score, + boundaries: boundaries + }; +} +function isUpperCase(s) { + return s !== s.toLowerCase(); +} +function isLowerCase(s) { + return s !== s.toUpperCase(); +} +function rateNoise(str) { + return (str.match(/([.(])/g) || []).length / 5 + + (str.match(/([A-Z]+)/g) || []).length / 10 + + str.length / 20; +} +function doSearch(request, response) { + var term = request.term.trim(); + var maxResults = request.maxResults || MAX_RESULTS; + if (term.length === 0) { + return this.close(); + } + var matcher = { + plainMatcher: createMatcher(term, false), + camelCaseMatcher: createMatcher(term, true) + } + var indexLoaded = indexFilesLoaded(); + + function getPrefix(item, category) { + switch (category) { + case "packages": + return checkUnnamed(item.m, "/"); + case "types": + return checkUnnamed(item.p, "."); + case "members": + return checkUnnamed(item.p, ".") + item.c + "."; + default: + return ""; + } + } + function useQualifiedName(category) { + switch (category) { + case "packages": + return /[\s/]/.test(term); + case "types": + case "members": + return /[\s.]/.test(term); + default: + return false; + } + } + function searchIndex(indexArray, category) { + var matches = []; + if (!indexArray) { + if (!indexLoaded) { + matches.push({ l: messages.loading, category: category }); + } + return matches; + } + $.each(indexArray, function (i, item) { + var prefix = getPrefix(item, category); + var simpleName = item.l; + var qualifiedName = prefix + simpleName; + var useQualified = useQualifiedName(category); + var input = useQualified ? qualifiedName : simpleName; + var startOfName = useQualified ? prefix.length : 0; + var endOfName = category === "members" && input.indexOf("(", startOfName) > -1 + ? input.indexOf("(", startOfName) : input.length; + var m = findMatch(matcher.plainMatcher, input, startOfName, endOfName); + if (m === NO_MATCH && matcher.camelCaseMatcher) { + m = findMatch(matcher.camelCaseMatcher, input, startOfName, endOfName); + } + if (m !== NO_MATCH) { + m.indexItem = item; + m.prefix = prefix; + m.category = category; + if (!useQualified) { + m.input = qualifiedName; + m.boundaries = m.boundaries.map(function(b) { + return b + prefix.length; + }); + } + matches.push(m); + } + return true; + }); + return matches.sort(function(e1, e2) { + return e2.score - e1.score; + }).slice(0, maxResults); + } + + var result = searchIndex(moduleSearchIndex, "modules") + .concat(searchIndex(packageSearchIndex, "packages")) + .concat(searchIndex(typeSearchIndex, "types")) + .concat(searchIndex(memberSearchIndex, "members")) + .concat(searchIndex(tagSearchIndex, "searchTags")); + + if (!indexLoaded) { + updateSearchResults = function() { + doSearch(request, response); + } + } else { + updateSearchResults = function() {}; + } + response(result); +} +// JQuery search menu implementation +$.widget("custom.catcomplete", $.ui.autocomplete, { + _create: function() { + this._super(); + this.widget().menu("option", "items", "> .result-item"); + // workaround for search result scrolling + this.menu._scrollIntoView = function _scrollIntoView( item ) { + var borderTop, paddingTop, offset, scroll, elementHeight, itemHeight; + if ( this._hasScroll() ) { + borderTop = parseFloat( $.css( this.activeMenu[ 0 ], "borderTopWidth" ) ) || 0; + paddingTop = parseFloat( $.css( this.activeMenu[ 0 ], "paddingTop" ) ) || 0; + offset = item.offset().top - this.activeMenu.offset().top - borderTop - paddingTop; + scroll = this.activeMenu.scrollTop(); + elementHeight = this.activeMenu.height() - 26; + itemHeight = item.outerHeight(); + + if ( offset < 0 ) { + this.activeMenu.scrollTop( scroll + offset ); + } else if ( offset + itemHeight > elementHeight ) { + this.activeMenu.scrollTop( scroll + offset - elementHeight + itemHeight ); + } + } + }; + }, + _renderMenu: function(ul, items) { + var currentCategory = ""; + var widget = this; + widget.menu.bindings = $(); + $.each(items, function(index, item) { + if (item.category && item.category !== currentCategory) { + ul.append("
    • " + categories[item.category] + "
    • "); + currentCategory = item.category; + } + var li = widget._renderItemData(ul, item); + if (item.category) { + li.attr("aria-label", categories[item.category] + " : " + item.l); + } else { + li.attr("aria-label", item.l); + } + li.attr("class", "result-item"); + }); + ul.append(""); + }, + _renderItem: function(ul, item) { + var li = $("
    • ").appendTo(ul); + var div = $("
      ").appendTo(li); + var label = item.l + ? item.l + : getHighlightedText(item.input, item.boundaries, 0, item.input.length); + var idx = item.indexItem; + if (item.category === "searchTags" && idx.h) { + if (idx.d) { + div.html(label + " (" + idx.h + ")
      " + + idx.d + "
      "); + } else { + div.html(label + " (" + idx.h + ")"); + } + } else { + div.html(label); + } + return li; + } +}); +$(function() { + var expanded = false; + var windowWidth; + function collapse() { + if (expanded) { + $("div#navbar-top").removeAttr("style"); + $("button#navbar-toggle-button") + .removeClass("expanded") + .attr("aria-expanded", "false"); + expanded = false; + } + } + $("button#navbar-toggle-button").click(function (e) { + if (expanded) { + collapse(); + } else { + var navbar = $("div#navbar-top"); + navbar.height(navbar.prop("scrollHeight")); + $("button#navbar-toggle-button") + .addClass("expanded") + .attr("aria-expanded", "true"); + expanded = true; + windowWidth = window.innerWidth; + } + }); + $("ul.sub-nav-list-small li a").click(collapse); + $("input#search-input").focus(collapse); + $("main").click(collapse); + $("section[id] > :header, :header[id], :header:has(a[id])").hover( + function () { + $(this).append($("")); + }, + function () { + $(this).find("button:last").remove(); + } + ); + $(window).on("orientationchange", collapse).on("resize", function(e) { + if (expanded && windowWidth !== window.innerWidth) collapse(); + }); + var search = $("#search-input"); + var reset = $("#reset-button"); + search.catcomplete({ + minLength: 1, + delay: 200, + source: doSearch, + response: function(event, ui) { + if (!ui.content.length) { + ui.content.push({ l: messages.noResult }); + } else { + $("#search-input").empty(); + } + }, + autoFocus: true, + focus: function(event, ui) { + return false; + }, + position: { + collision: "flip" + }, + select: function(event, ui) { + if (ui.item.indexItem) { + var url = getURL(ui.item.indexItem, ui.item.category); + window.location.href = pathtoroot + url; + $("#search-input").focus(); + } + } + }); + search.val(''); + search.prop("disabled", false); + reset.prop("disabled", false); + reset.click(function() { + search.val('').focus(); + }); + search.focus(); +}); diff --git a/Dokumente/JavaDoc/converter/docs/javadoc/stylesheet.css b/Dokumente/JavaDoc/converter/docs/javadoc/stylesheet.css new file mode 100644 index 0000000..cc0c20f --- /dev/null +++ b/Dokumente/JavaDoc/converter/docs/javadoc/stylesheet.css @@ -0,0 +1,1264 @@ +/* + * Javadoc style sheet + */ + +@import url('resources/fonts/dejavu.css'); + +/* + * These CSS custom properties (variables) define the core color and font + * properties used in this stylesheet. + */ +:root { + /* body, block and code fonts */ + --body-font-family: 'DejaVu Sans', Arial, Helvetica, sans-serif; + --block-font-family: 'DejaVu Serif', Georgia, "Times New Roman", Times, serif; + --code-font-family: 'DejaVu Sans Mono', monospace; + /* Base font sizes for body and code elements */ + --body-font-size: 14px; + --code-font-size: 14px; + /* Text colors for body and block elements */ + --body-text-color: #353833; + --block-text-color: #474747; + /* Background colors for various structural elements */ + --body-background-color: #ffffff; + --section-background-color: #f8f8f8; + --detail-background-color: #ffffff; + /* Colors for navigation bar and table captions */ + --navbar-background-color: #4D7A97; + --navbar-text-color: #ffffff; + /* Background color for subnavigation and various headers */ + --subnav-background-color: #dee3e9; + /* Background and text colors for selected tabs and navigation items */ + --selected-background-color: #f8981d; + --selected-text-color: #253441; + --selected-link-color: #1f389c; + /* Background colors for generated tables */ + --even-row-color: #ffffff; + --odd-row-color: #eeeeef; + /* Text color for page title */ + --title-color: #2c4557; + /* Text colors for links */ + --link-color: #4A6782; + --link-color-active: #bb7a2a; + /* Snippet colors */ + --snippet-background-color: #ebecee; + --snippet-text-color: var(--block-text-color); + --snippet-highlight-color: #f7c590; + /* Border colors for structural elements and user defined tables */ + --border-color: #ededed; + --table-border-color: #000000; + /* Search input colors */ + --search-input-background-color: #ffffff; + --search-input-text-color: #000000; + --search-input-placeholder-color: #909090; + /* Highlight color for active search tag target */ + --search-tag-highlight-color: #ffff00; + /* Adjustments for icon and active background colors of copy-to-clipboard buttons */ + --copy-icon-brightness: 100%; + --copy-button-background-color-active: rgba(168, 168, 176, 0.3); + /* Colors for invalid tag notifications */ + --invalid-tag-background-color: #ffe6e6; + --invalid-tag-text-color: #000000; +} +/* + * Styles for individual HTML elements. + * + * These are styles that are specific to individual HTML elements. Changing them affects the style of a particular + * HTML element throughout the page. + */ +body { + background-color:var(--body-background-color); + color:var(--body-text-color); + font-family:var(--body-font-family); + font-size:var(--body-font-size); + margin:0; + padding:0; + height:100%; + width:100%; +} +iframe { + margin:0; + padding:0; + height:100%; + width:100%; + overflow-y:scroll; + border:none; +} +a:link, a:visited { + text-decoration:none; + color:var(--link-color); +} +a[href]:hover, a[href]:focus { + text-decoration:none; + color:var(--link-color-active); +} +pre { + font-family:var(--code-font-family); + font-size:1em; +} +h1 { + font-size:1.428em; +} +h2 { + font-size:1.285em; +} +h3 { + font-size:1.14em; +} +h4 { + font-size:1.072em; +} +h5 { + font-size:1.001em; +} +h6 { + font-size:0.93em; +} +/* Disable font boosting for selected elements */ +h1, h2, h3, h4, h5, h6, div.member-signature { + max-height: 1000em; +} +ul { + list-style-type:disc; +} +code, tt { + font-family:var(--code-font-family); +} +:not(h1, h2, h3, h4, h5, h6) > code, +:not(h1, h2, h3, h4, h5, h6) > tt { + font-size:var(--code-font-size); + padding-top:4px; + margin-top:8px; + line-height:1.4em; +} +dt code { + font-family:var(--code-font-family); + font-size:1em; + padding-top:4px; +} +.summary-table dt code { + font-family:var(--code-font-family); + font-size:1em; + vertical-align:top; + padding-top:4px; +} +sup { + font-size:8px; +} +button { + font-family: var(--body-font-family); + font-size: 1em; +} +/* + * Styles for HTML generated by javadoc. + * + * These are style classes that are used by the standard doclet to generate HTML documentation. + */ + +/* + * Styles for document title and copyright. + */ +.about-language { + float:right; + padding:0 21px 8px 8px; + font-size:0.915em; + margin-top:-9px; + height:2.9em; +} +.legal-copy { + margin-left:.5em; +} +/* + * Styles for navigation bar. + */ +@media screen { + div.flex-box { + position:fixed; + display:flex; + flex-direction:column; + height: 100%; + width: 100%; + } + header.flex-header { + flex: 0 0 auto; + } + div.flex-content { + flex: 1 1 auto; + overflow-y: auto; + } +} +.top-nav { + background-color:var(--navbar-background-color); + color:var(--navbar-text-color); + float:left; + width:100%; + clear:right; + min-height:2.8em; + padding:10px 0 0 0; + overflow:hidden; + font-size:0.857em; +} +button#navbar-toggle-button { + display:none; +} +ul.sub-nav-list-small { + display: none; +} +.sub-nav { + background-color:var(--subnav-background-color); + float:left; + width:100%; + overflow:hidden; + font-size:0.857em; +} +.sub-nav div { + clear:left; + float:left; + padding:6px; + text-transform:uppercase; +} +.sub-nav .sub-nav-list { + padding-top:4px; +} +ul.nav-list { + display:block; + margin:0 25px 0 0; + padding:0; +} +ul.sub-nav-list { + float:left; + margin:0 25px 0 0; + padding:0; +} +ul.nav-list li { + list-style:none; + float:left; + padding: 5px 6px; + text-transform:uppercase; +} +.sub-nav .nav-list-search { + float:right; + margin:0; + padding:6px; + clear:none; + text-align:right; + position:relative; +} +ul.sub-nav-list li { + list-style:none; + float:left; +} +.top-nav a:link, .top-nav a:active, .top-nav a:visited { + color:var(--navbar-text-color); + text-decoration:none; + text-transform:uppercase; +} +.top-nav a:hover { + color:var(--link-color-active); +} +.nav-bar-cell1-rev { + background-color:var(--selected-background-color); + color:var(--selected-text-color); + margin: auto 5px; +} +.skip-nav { + position:absolute; + top:auto; + left:-9999px; + overflow:hidden; +} +/* + * Hide navigation links and search box in print layout + */ +@media print { + ul.nav-list, div.sub-nav { + display:none; + } +} +/* + * Styles for page header. + */ +.title { + color:var(--title-color); + margin:10px 0; +} +.sub-title { + margin:5px 0 0 0; +} +ul.contents-list { + margin: 0 0 15px 0; + padding: 0; + list-style: none; +} +ul.contents-list li { + font-size:0.93em; +} +/* + * Styles for headings. + */ +body.class-declaration-page .summary h2, +body.class-declaration-page .details h2, +body.class-use-page h2, +body.module-declaration-page .block-list h2 { + font-style: italic; + padding:0; + margin:15px 0; +} +body.class-declaration-page .summary h3, +body.class-declaration-page .details h3, +body.class-declaration-page .summary .inherited-list h2 { + background-color:var(--subnav-background-color); + border:1px solid var(--border-color); + margin:0 0 6px -8px; + padding:7px 5px; +} +/* + * Styles for page layout containers. + */ +main { + clear:both; + padding:10px 20px; + position:relative; +} +dl.notes > dt { + font-family: var(--body-font-family); + font-size:0.856em; + font-weight:bold; + margin:10px 0 0 0; + color:var(--body-text-color); +} +dl.notes > dd { + margin:5px 10px 10px 0; + font-size:1em; + font-family:var(--block-font-family) +} +dl.name-value > dt { + margin-left:1px; + font-size:1.1em; + display:inline; + font-weight:bold; +} +dl.name-value > dd { + margin:0 0 0 1px; + font-size:1.1em; + display:inline; +} +/* + * Styles for lists. + */ +li.circle { + list-style:circle; +} +ul.horizontal li { + display:inline; + font-size:0.9em; +} +div.inheritance { + margin:0; + padding:0; +} +div.inheritance div.inheritance { + margin-left:2em; +} +ul.block-list, +ul.details-list, +ul.member-list, +ul.summary-list { + margin:10px 0 10px 0; + padding:0; +} +ul.block-list > li, +ul.details-list > li, +ul.member-list > li, +ul.summary-list > li { + list-style:none; + margin-bottom:15px; + line-height:1.4; +} +ul.ref-list { + padding:0; + margin:0; +} +ul.ref-list > li { + list-style:none; +} +.summary-table dl, .summary-table dl dt, .summary-table dl dd { + margin-top:0; + margin-bottom:1px; +} +ul.tag-list, ul.tag-list-long { + padding-left: 0; + list-style: none; +} +ul.tag-list li { + display: inline; +} +ul.tag-list li:not(:last-child):after, +ul.tag-list-long li:not(:last-child):after +{ + content: ", "; + white-space: pre-wrap; +} +ul.preview-feature-list { + list-style: none; + margin:0; + padding:0.1em; + line-height: 1.6em; +} +/* + * Styles for tables. + */ +.summary-table, .details-table { + width:100%; + border-spacing:0; + border:1px solid var(--border-color); + border-top:0; + padding:0; +} +.caption { + position:relative; + text-align:left; + background-repeat:no-repeat; + color:var(--selected-text-color); + clear:none; + overflow:hidden; + padding: 10px 0 0 1px; + margin:0; +} +.caption a:link, .caption a:visited { + color:var(--selected-link-color); +} +.caption a:hover, +.caption a:active { + color:var(--navbar-text-color); +} +.caption span { + font-weight:bold; + white-space:nowrap; + padding:5px 12px 7px 12px; + display:inline-block; + float:left; + background-color:var(--selected-background-color); + border: none; + height:16px; +} +div.table-tabs { + padding:10px 0 0 1px; + margin:10px 0 0 0; +} +div.table-tabs > button { + border: none; + cursor: pointer; + padding: 5px 12px 7px 12px; + font-weight: bold; + margin-right: 8px; +} +div.table-tabs > .active-table-tab { + background: var(--selected-background-color); + color: var(--selected-text-color); +} +div.table-tabs > button.table-tab { + background: var(--navbar-background-color); + color: var(--navbar-text-color); +} +.two-column-search-results { + display: grid; + grid-template-columns: minmax(400px, max-content) minmax(400px, auto); +} +div.checkboxes { + line-height: 2em; +} +div.checkboxes > span { + margin-left: 10px; +} +div.checkboxes > label { + margin-left: 8px; + white-space: nowrap; +} +div.checkboxes > label > input { + margin: 0 2px; +} +.two-column-summary { + display: grid; + grid-template-columns: minmax(25%, max-content) minmax(25%, auto); +} +.three-column-summary { + display: grid; + grid-template-columns: minmax(15%, max-content) minmax(20%, max-content) minmax(20%, auto); +} +.three-column-release-summary { + display: grid; + grid-template-columns: minmax(40%, max-content) minmax(10%, max-content) minmax(40%, auto); +} +.four-column-summary { + display: grid; + grid-template-columns: minmax(10%, max-content) minmax(15%, max-content) minmax(15%, max-content) minmax(15%, auto); +} +@media screen and (max-width: 1000px) { + .four-column-summary { + display: grid; + grid-template-columns: minmax(15%, max-content) minmax(15%, auto); + } +} +@media screen and (max-width: 800px) { + .two-column-search-results { + display: grid; + grid-template-columns: minmax(40%, max-content) minmax(40%, auto); + } + .three-column-summary { + display: grid; + grid-template-columns: minmax(10%, max-content) minmax(25%, auto); + } + .three-column-release-summary { + display: grid; + grid-template-columns: minmax(70%, max-content) minmax(30%, max-content) + } + .three-column-summary .col-last, + .three-column-release-summary .col-last{ + grid-column-end: span 2; + } +} +@media screen and (max-width: 600px) { + .two-column-summary { + display: grid; + grid-template-columns: 1fr; + } +} +.summary-table > div, .details-table > div { + text-align:left; + padding: 8px 3px 3px 7px; + overflow-x: auto; + scrollbar-width: thin; +} +.col-first, .col-second, .col-last, .col-constructor-name, .col-summary-item-name { + vertical-align:top; + padding-right:0; + padding-top:8px; + padding-bottom:3px; +} +.table-header { + background:var(--subnav-background-color); + font-weight: bold; +} +/* Sortable table columns */ +.table-header[onclick] { + cursor: pointer; +} +.table-header[onclick]::after { + content:""; + display:inline-block; + background-image:url('data:image/svg+xml; utf8, \ + \ + '); + background-size:100% 100%; + width:9px; + height:14px; + margin-left:4px; + margin-bottom:-3px; +} +.table-header[onclick].sort-asc::after { + background-image:url('data:image/svg+xml; utf8, \ + \ + \ + '); + +} +.table-header[onclick].sort-desc::after { + background-image:url('data:image/svg+xml; utf8, \ + \ + \ + '); +} +.col-first, .col-first { + font-size:0.93em; +} +.col-second, .col-second, .col-last, .col-constructor-name, .col-summary-item-name, .col-last { + font-size:0.93em; +} +.col-first, .col-second, .col-constructor-name { + vertical-align:top; + overflow: auto; +} +.col-last { + white-space:normal; +} +.col-first a:link, .col-first a:visited, +.col-second a:link, .col-second a:visited, +.col-first a:link, .col-first a:visited, +.col-second a:link, .col-second a:visited, +.col-constructor-name a:link, .col-constructor-name a:visited, +.col-summary-item-name a:link, .col-summary-item-name a:visited { + font-weight:bold; +} +.even-row-color, .even-row-color .table-header { + background-color:var(--even-row-color); +} +.odd-row-color, .odd-row-color .table-header { + background-color:var(--odd-row-color); +} +/* + * Styles for contents. + */ +div.block { + font-size:var(--body-font-size); + font-family:var(--block-font-family); +} +.col-last div { + padding-top:0; +} +.col-last a { + padding-bottom:3px; +} +.module-signature, +.package-signature, +.type-signature, +.member-signature { + font-family:var(--code-font-family); + font-size:1em; + margin:14px 0; + white-space: pre-wrap; +} +.module-signature, +.package-signature, +.type-signature { + margin-top: 0; +} +.member-signature .type-parameters-long, +.member-signature .parameters, +.member-signature .exceptions { + display: inline-block; + vertical-align: top; + white-space: pre; +} +.member-signature .type-parameters { + white-space: normal; +} +/* + * Styles for formatting effect. + */ +.source-line-no { + /* Color of line numbers in source pages can be set via custom property below */ + color:var(--source-linenumber-color, green); + padding:0 30px 0 0; +} +.block { + display:block; + margin:0 10px 5px 0; + color:var(--block-text-color); +} +.deprecated-label, .description-from-type-label, .implementation-label, .member-name-link, +.module-label-in-package, .module-label-in-type, .package-label-in-type, +.package-hierarchy-label, .type-name-label, .type-name-link, .search-tag-link, .preview-label { + font-weight:bold; +} +.deprecation-comment, .help-footnote, .preview-comment { + font-style:italic; +} +.deprecation-block { + font-size:1em; + font-family:var(--block-font-family); + border-style:solid; + border-width:thin; + border-radius:10px; + padding:10px; + margin-bottom:10px; + margin-right:10px; + display:inline-block; +} +.preview-block { + font-size:1em; + font-family:var(--block-font-family); + border-style:solid; + border-width:thin; + border-radius:10px; + padding:10px; + margin-bottom:10px; + margin-right:10px; + display:inline-block; +} +div.block div.deprecation-comment { + font-style:normal; +} +details.invalid-tag, span.invalid-tag { + font-size:1em; + font-family:var(--block-font-family); + color: var(--invalid-tag-text-color); + background: var(--invalid-tag-background-color); + border: thin solid var(--table-border-color); + border-radius:2px; + padding: 2px 4px; + display:inline-block; +} +details summary { + cursor: pointer; +} +/* + * Styles specific to HTML5 elements. + */ +main, nav, header, footer, section { + display:block; +} +/* + * Styles for javadoc search. + */ +.ui-state-active { + /* Overrides the color of selection used in jQuery UI */ + background: var(--selected-background-color); + border: 1px solid var(--selected-background-color); + color: var(--selected-text-color); +} +.ui-autocomplete-category { + font-weight:bold; + font-size:15px; + padding:7px 0 7px 3px; + background-color:var(--navbar-background-color); + color:var(--navbar-text-color); +} +.ui-autocomplete { + max-height:85%; + max-width:65%; + overflow-y:auto; + overflow-x:auto; + scrollbar-width: thin; + white-space:nowrap; + box-shadow: 0 3px 6px rgba(0,0,0,0.16), 0 3px 6px rgba(0,0,0,0.23); +} +ul.ui-autocomplete { + position:fixed; + z-index:1; + background-color: var(--body-background-color); +} +ul.ui-autocomplete li { + float:left; + clear:both; + min-width:100%; +} +ul.ui-autocomplete li.ui-static-link { + position:sticky; + bottom:0; + left:0; + background: var(--subnav-background-color); + padding: 5px 0; + font-family: var(--body-font-family); + font-size: 0.93em; + font-weight: bolder; + z-index: 2; +} +li.ui-static-link a, li.ui-static-link a:visited { + text-decoration:none; + color:var(--link-color); + float:right; + margin-right:20px; +} +.ui-autocomplete .result-item { + font-size: inherit; +} +.ui-autocomplete .result-highlight { + font-weight:bold; +} +#search-input, #page-search-input { + background-image:url('resources/glass.png'); + background-size:13px; + background-repeat:no-repeat; + background-position:2px 3px; + background-color: var(--search-input-background-color); + color: var(--search-input-text-color); + border-color: var(--border-color); + padding-left:20px; + width: 250px; + margin: 0; +} +#search-input { + margin-left: 4px; +} +#reset-button { + background-color: transparent; + background-image:url('resources/x.png'); + background-repeat:no-repeat; + background-size:contain; + border:0; + border-radius:0; + width:12px; + height:12px; + position:absolute; + right:12px; + top:10px; + font-size:0; +} +::placeholder { + color:var(--search-input-placeholder-color); + opacity: 1; +} +.search-tag-desc-result { + font-style:italic; + font-size:11px; +} +.search-tag-holder-result { + font-style:italic; + font-size:12px; +} +.search-tag-result:target { + background-color:var(--search-tag-highlight-color); +} +details.page-search-details { + display: inline-block; +} +div#result-container { + font-size: 1em; +} +div#result-container a.search-result-link { + padding: 0; + margin: 4px 0; + width: 100%; +} +#result-container .result-highlight { + font-weight:bolder; +} +.page-search-info { + background-color: var(--subnav-background-color); + border-radius: 3px; + border: 0 solid var(--border-color); + padding: 0 8px; + overflow: hidden; + height: 0; + transition: all 0.2s ease; +} +div.table-tabs > button.table-tab { + background: var(--navbar-background-color); + color: var(--navbar-text-color); +} +.page-search-header { + padding: 5px 12px 7px 12px; + font-weight: bold; + margin-right: 3px; + background-color:var(--navbar-background-color); + color:var(--navbar-text-color); + display: inline-block; +} +button.page-search-header { + border: none; + cursor: pointer; +} +span#page-search-link { + text-decoration: underline; +} +.module-graph span, .sealed-graph span { + display:none; + position:absolute; +} +.module-graph:hover span, .sealed-graph:hover span { + display:block; + margin: -100px 0 0 100px; + z-index: 1; +} +.inherited-list { + margin: 10px 0 10px 0; +} +section.class-description { + line-height: 1.4; +} +.summary section[class$="-summary"], .details section[class$="-details"], +.class-uses .detail, .serialized-class-details { + padding: 0 20px 5px 10px; + border: 1px solid var(--border-color); + background-color: var(--section-background-color); +} +.inherited-list, section[class$="-details"] .detail { + padding:0 0 5px 8px; + background-color:var(--detail-background-color); + border:none; +} +.vertical-separator { + padding: 0 5px; +} +ul.help-section-list { + margin: 0; +} +ul.help-subtoc > li { + display: inline-block; + padding-right: 5px; + font-size: smaller; +} +ul.help-subtoc > li::before { + content: "\2022" ; + padding-right:2px; +} +.help-note { + font-style: italic; +} +/* + * Indicator icon for external links. + */ +main a[href*="://"]::after { + content:""; + display:inline-block; + background-image:url('data:image/svg+xml; utf8, \ + \ + \ + '); + background-size:100% 100%; + width:7px; + height:7px; + margin-left:2px; + margin-bottom:4px; +} +main a[href*="://"]:hover::after, +main a[href*="://"]:focus::after { + background-image:url('data:image/svg+xml; utf8, \ + \ + \ + '); +} +/* + * Styles for copy-to-clipboard buttons + */ +button.copy { + opacity: 80%; + border: none; + border-radius: 3px; + position: relative; + background:none; + transition: opacity 0.2s; + cursor: pointer; +} +button.copy:hover, +button.copy:active { + opacity: 100%; +} +button.copy img { + position: relative; + background: none; + filter: brightness(var(--copy-icon-brightness)); +} +button.copy:active { + background-color: var(--copy-button-background-color-active); +} +button.copy span { + color: var(--body-text-color); + position: relative; + top: -0.1em; + transition: all 0.1s; + font-size: 0.76rem; + line-height: 1.2em; +} +/* header/section copy button */ +button.copy-header { + margin: 0 0.2em; + padding: 0 4px; + height: 1.16em; +} +button.copy-header img { + height: 0.88em; + top: 0.1em; +} +/* search page copy button */ +button#page-search-copy { + margin-left: 0.4em; + padding:0.3em; + top:0.13em; +} +button#page-search-copy img { + width: 1.2em; + height: 1.2em; + padding: 0.01em 0; + top: 0.15em; +} +button#page-search-copy span { + color: var(--body-text-color); + content: attr(aria-label); + line-height: 1.2em; + padding: 0.2em; + top: -0.18em; + opacity: 0; +} +div.page-search-info:hover button#page-search-copy, +div.page-search-info:hover button#page-search-copy span { + opacity: 90%; +} +/* snippet copy button */ +button.snippet-copy { + position: absolute; + top: 6px; + right: 6px; + height: 1.7em; + opacity: 50%; + padding: 2px; +} +button.snippet-copy img { + width: 18px; + height: 18px; + padding: 0.05em 0; +} +button.snippet-copy span { + content: attr(aria-label); + line-height: 1.2em; + padding: 0.2em; + position: relative; + top: -0.5em; + display: none; +} +div.snippet-container:hover button.snippet-copy span { + display: inline; +} +div.snippet-container:hover button.snippet-copy { + opacity: 80%; +} +div.snippet-container button.snippet-copy:hover { + opacity: 100%; +} +/* + * Styles for user-provided tables. + * + * borderless: + * No borders, vertical margins, styled caption. + * This style is provided for use with existing doc comments. + * In general, borderless tables should not be used for layout purposes. + * + * plain: + * Plain borders around table and cells, vertical margins, styled caption. + * Best for small tables or for complex tables for tables with cells that span + * rows and columns, when the "striped" style does not work well. + * + * striped: + * Borders around the table and vertical borders between cells, striped rows, + * vertical margins, styled caption. + * Best for tables that have a header row, and a body containing a series of simple rows. + */ + +table.borderless, +table.plain, +table.striped { + margin-top: 10px; + margin-bottom: 10px; +} +table.borderless > caption, +table.plain > caption, +table.striped > caption { + font-weight: bold; + font-size: smaller; +} +table.borderless th, table.borderless td, +table.plain th, table.plain td, +table.striped th, table.striped td { + padding: 2px 5px; +} +table.borderless, +table.borderless > thead > tr > th, table.borderless > tbody > tr > th, table.borderless > tr > th, +table.borderless > thead > tr > td, table.borderless > tbody > tr > td, table.borderless > tr > td { + border: none; +} +table.borderless > thead > tr, table.borderless > tbody > tr, table.borderless > tr { + background-color: transparent; +} +table.plain { + border-collapse: collapse; + border: 1px solid var(--table-border-color); +} +table.plain > thead > tr, table.plain > tbody tr, table.plain > tr { + background-color: transparent; +} +table.plain > thead > tr > th, table.plain > tbody > tr > th, table.plain > tr > th, +table.plain > thead > tr > td, table.plain > tbody > tr > td, table.plain > tr > td { + border: 1px solid var(--table-border-color); +} +table.striped { + border-collapse: collapse; + border: 1px solid var(--table-border-color); +} +table.striped > thead { + background-color: var(--subnav-background-color); +} +table.striped > thead > tr > th, table.striped > thead > tr > td { + border: 1px solid var(--table-border-color); +} +table.striped > tbody > tr:nth-child(even) { + background-color: var(--odd-row-color) +} +table.striped > tbody > tr:nth-child(odd) { + background-color: var(--even-row-color) +} +table.striped > tbody > tr > th, table.striped > tbody > tr > td { + border-left: 1px solid var(--table-border-color); + border-right: 1px solid var(--table-border-color); +} +table.striped > tbody > tr > th { + font-weight: normal; +} +/** + * Tweak style for small screens. + */ +@media screen and (max-width: 920px) { + header.flex-header { + max-height: 100vh; + overflow-y: auto; + } + div#navbar-top { + height: 2.8em; + transition: height 0.35s ease; + } + ul.nav-list { + display: block; + width: 40%; + float:left; + clear: left; + margin: 10px 0 0 0; + padding: 0; + } + ul.nav-list li { + float: none; + padding: 6px; + margin-left: 10px; + margin-top: 2px; + } + ul.sub-nav-list-small { + display:block; + height: 100%; + width: 50%; + float: right; + clear: right; + background-color: var(--subnav-background-color); + color: var(--body-text-color); + margin: 6px 0 0 0; + padding: 0; + } + ul.sub-nav-list-small ul { + padding-left: 20px; + } + ul.sub-nav-list-small a:link, ul.sub-nav-list-small a:visited { + color:var(--link-color); + } + ul.sub-nav-list-small a:hover { + color:var(--link-color-active); + } + ul.sub-nav-list-small li { + list-style:none; + float:none; + padding: 6px; + margin-top: 1px; + text-transform:uppercase; + } + ul.sub-nav-list-small > li { + margin-left: 10px; + } + ul.sub-nav-list-small li p { + margin: 5px 0; + } + div#navbar-sub-list { + display: none; + } + .top-nav a:link, .top-nav a:active, .top-nav a:visited { + display: block; + } + button#navbar-toggle-button { + width: 3.4em; + height: 2.8em; + background-color: transparent; + display: block; + float: left; + border: 0; + margin: 0 10px; + cursor: pointer; + font-size: 10px; + } + button#navbar-toggle-button .nav-bar-toggle-icon { + display: block; + width: 24px; + height: 3px; + margin: 1px 0 4px 0; + border-radius: 2px; + transition: all 0.1s; + background-color: var(--navbar-text-color); + } + button#navbar-toggle-button.expanded span.nav-bar-toggle-icon:nth-child(1) { + transform: rotate(45deg); + transform-origin: 10% 10%; + width: 26px; + } + button#navbar-toggle-button.expanded span.nav-bar-toggle-icon:nth-child(2) { + opacity: 0; + } + button#navbar-toggle-button.expanded span.nav-bar-toggle-icon:nth-child(3) { + transform: rotate(-45deg); + transform-origin: 10% 90%; + width: 26px; + } +} +@media screen and (max-width: 800px) { + .about-language { + padding-right: 16px; + } + ul.nav-list li { + margin-left: 5px; + } + ul.sub-nav-list-small > li { + margin-left: 5px; + } + main { + padding: 10px; + } + .summary section[class$="-summary"], .details section[class$="-details"], + .class-uses .detail, .serialized-class-details { + padding: 0 8px 5px 8px; + } + body { + -webkit-text-size-adjust: none; + } +} +@media screen and (max-width: 400px) { + .about-language { + font-size: 10px; + padding-right: 12px; + } +} +@media screen and (max-width: 400px) { + .nav-list-search { + width: 94%; + } + #search-input, #page-search-input { + width: 70%; + } +} +@media screen and (max-width: 320px) { + .nav-list-search > label { + display: none; + } + .nav-list-search { + width: 90%; + } + #search-input, #page-search-input { + width: 80%; + } +} + +pre.snippet { + background-color: var(--snippet-background-color); + color: var(--snippet-text-color); + padding: 10px; + margin: 12px 0; + overflow: auto; + white-space: pre; +} +div.snippet-container { + position: relative; +} +@media screen and (max-width: 800px) { + pre.snippet { + padding-top: 26px; + } + button.snippet-copy { + top: 4px; + right: 4px; + } +} +pre.snippet .italic { + font-style: italic; +} +pre.snippet .bold { + font-weight: bold; +} +pre.snippet .highlighted { + background-color: var(--snippet-highlight-color); + border-radius: 10%; +} diff --git a/Dokumente/JavaDoc/converter/docs/javadoc/tag-search-index.js b/Dokumente/JavaDoc/converter/docs/javadoc/tag-search-index.js new file mode 100644 index 0000000..0367dae --- /dev/null +++ b/Dokumente/JavaDoc/converter/docs/javadoc/tag-search-index.js @@ -0,0 +1 @@ +tagSearchIndex = [];updateSearchResults(); \ No newline at end of file diff --git a/Dokumente/JavaDoc/converter/docs/javadoc/type-search-index.js b/Dokumente/JavaDoc/converter/docs/javadoc/type-search-index.js new file mode 100644 index 0000000..d76fd04 --- /dev/null +++ b/Dokumente/JavaDoc/converter/docs/javadoc/type-search-index.js @@ -0,0 +1 @@ +typeSearchIndex = [{"l":"Alle Klassen und Schnittstellen","u":"allclasses-index.html"},{"p":"pp.battleship.exporter","l":"ModelExporter"}];updateSearchResults(); \ No newline at end of file diff --git a/Dokumente/JavaDoc/model/docs/javadoc/allclasses-index.html b/Dokumente/JavaDoc/model/docs/javadoc/allclasses-index.html new file mode 100644 index 0000000..f59ad4f --- /dev/null +++ b/Dokumente/JavaDoc/model/docs/javadoc/allclasses-index.html @@ -0,0 +1,236 @@ + + + + +Alle Klassen und Schnittstellen (model API) + + + + + + + + + + + + + +
      + +
      +
      +
      +

      Alle Klassen und Schnittstellen

      +
      +
      +
      +
      +
      +
      Klasse
      +
      Beschreibung
      + +
      +
      Represents a battleship in the game.
      +
      + +
      +
      Enumeration representing the different statuses a battleship can have during the game.
      +
      + +
      +
      Interface representing a Battleship client.
      +
      + +
      +
      Class providing access to the Battleship client configuration.
      +
      + +
      +
      Provides access to the configuration settings for the Battleship game.
      +
      + +
      +
      Controls the client-side game logic for Battleship.
      +
      + +
      +
      Visitor interface for processing all client messages.
      +
      + +
      +
      An abstract base class for client messages used in network transfer.
      +
      + +
      +
      Interface for sending messages to the server.
      +
      + +
      +
      Event when an item is added to a map.
      +
      + +
      +
      A message sent by the server to inform clients about the effects of a shot in the Battleship game.
      +
      + +
      +
      A message sent by the server to provide details about the game configuration.
      +
      + +
      +
      An interface used for all game events.
      +
      + +
      +
      Defines a broker for distributing game events to registered listeners.
      +
      + +
      +
      Listener interface for all events implemented by subclasses of GameEvent.
      +
      + +
      +
      Event when an item is added to a map.
      +
      + +
      +
      Represents a point in the two-dimensional plane with integer coordinates.
      +
      + +
      +
      Interface representing a position with X and Y coordinates.
      +
      + +
      +
      An interface representing any item on a ship map.
      +
      + +
      +
      Event when an item is added to a map.
      +
      + +
      +
      Event when an item gets removed.
      +
      + +
      +
      A message sent by the client containing the positions of the ships on the player's map.
      +
      + +
      +
      Class representing a player
      +
      + +
      +
      Provides access to the resource bundle of the game.
      +
      + +
      +
      Represents the rotation of a ship and provides functionality related to rotation.
      +
      + +
      +
      Interface representing a connection to the server.
      +
      + +
      +
      A mock implementation of the ServerConnection interface for single mode.
      +
      + +
      +
      Controls the server-side game logic for Battleship.
      +
      + +
      +
      An interface for processing server messages.
      +
      + +
      +
      An abstract base class for server messages used in network transfer.
      +
      + +
      +
      Interface for sending messages to a client.
      +
      + +
       
      + +
       
      + +
       
      + +
      +
      Represents a rectangular map that holds ships and registers shots fired.
      +
      + +
      +
      A class representing data transfer objects of ship maps for JSON serialization and deserialization.
      +
      + +
      +
      This class represents the client state during a shooting animation.
      +
      + +
      +
      A message sent by the client to indicate a shooting action in the game.
      +
      + +
      +
      Represents a shot in the Battleship game.
      +
      + +
      +
      Enumeration representing different types of sounds used in the game.
      +
      + +
      +
      Event when an item is added to a map.
      +
      + +
      +
      A message sent by the server to inform clients about the start of the battle.
      +
      + +
      +
      An interface for implementing the Visitor pattern for different types of elements in the Battleship model.
      +
      + +
      +
      An interface for implementing the Visitor pattern for different types of elements in the Battleship model + without returning any result.
      +
      +
      +
      +
      +
      +
      +
      + + diff --git a/Dokumente/JavaDoc/model/docs/javadoc/allpackages-index.html b/Dokumente/JavaDoc/model/docs/javadoc/allpackages-index.html new file mode 100644 index 0000000..74dc224 --- /dev/null +++ b/Dokumente/JavaDoc/model/docs/javadoc/allpackages-index.html @@ -0,0 +1,79 @@ + + + + +Alle Packages (model API) + + + + + + + + + + + + + +
      + + +
      + + diff --git a/Dokumente/JavaDoc/model/docs/javadoc/copy.svg b/Dokumente/JavaDoc/model/docs/javadoc/copy.svg new file mode 100644 index 0000000..b4c4945 --- /dev/null +++ b/Dokumente/JavaDoc/model/docs/javadoc/copy.svg @@ -0,0 +1,33 @@ + + + + + + + + diff --git a/Dokumente/JavaDoc/model/docs/javadoc/element-list b/Dokumente/JavaDoc/model/docs/javadoc/element-list new file mode 100644 index 0000000..b346655 --- /dev/null +++ b/Dokumente/JavaDoc/model/docs/javadoc/element-list @@ -0,0 +1,9 @@ +pp.battleship +pp.battleship.game.client +pp.battleship.game.server +pp.battleship.game.singlemode +pp.battleship.message.client +pp.battleship.message.server +pp.battleship.model +pp.battleship.model.dto +pp.battleship.notification diff --git a/Dokumente/JavaDoc/model/docs/javadoc/help-doc.html b/Dokumente/JavaDoc/model/docs/javadoc/help-doc.html new file mode 100644 index 0000000..8bc44d4 --- /dev/null +++ b/Dokumente/JavaDoc/model/docs/javadoc/help-doc.html @@ -0,0 +1,182 @@ + + + + +API-Hilfe (model API) + + + + + + + + + + + + + +
      + +
      +
      +

      Hilfe zu JavaDoc

      + +
      +
      +

      Navigation

      +Ausgehend von der Seite Überblick können Sie die Dokumentation mithilfe der Links durchsuchen, die sich auf jeder Seite und in der Navigationsleiste oben auf jeder Seite befinden. Mit Index und dem Suchfeld können Sie zu spezifischen Deklarationen und Übersichtsseiten navigieren, wie Alle Packages, Alle Klassen und Schnittstellen + +
      +
      +
      +

      Seitenarten

      +Die folgenden Abschnitte beschreiben die verschiedenen Seitenarten in dieser Collection. +
      +

      Überblick

      +

      Die Seite Überblick ist die Titelseite dieses API-Dokuments und enthält eine Liste aller Packages mit einer Übersicht für jedes Packages. Diese Seite kann auch eine Gesamtbeschreibung des Packagesets enthalten.

      +
      +
      +

      Package

      +

      Für jedes Package ist eine Seite vorhanden, die eine Liste der Klassen und Schnittstellen mit jeweils einer Übersicht dafür enthält. Diese Seiten können die folgenden Kategorien enthalten:

      +
        +
      • Schnittstellen
      • +
      • Klassen
      • +
      • Enum-Klassen
      • +
      • Ausnahmeklassen
      • +
      • Annotationsschnittstellen
      • +
      +
      +
      +

      Klasse oder Schnittstelle

      +

      Für jede Klasse, Schnittstelle, verschachtelte Klasse und verschachtelte Schnittstelle ist eine separate Seite vorhanden. Jede dieser Seiten enthält drei Abschnitte, die aus einer Deklaration und Beschreibung, Mitgliederübersichtstabellen und detaillierten Mitgliederbeschreibungen bestehen. Die Einträge in diesen Abschnitten werden weggelassen, wenn sie leer oder nicht anwendbar sind.

      +
        +
      • Klassenvererbungsdiagramm
      • +
      • Direkte Unterklassen
      • +
      • Alle bekannten Unterschnittstellen
      • +
      • Alle bekannten Implementierungsklassen
      • +
      • Klassen- oder Schnittstellendeklaration
      • +
      • Klassen- oder Schnittstellenbeschreibung
      • +
      +
      +
        +
      • Verschachtelte Klassen - Übersicht
      • +
      • Enum-Konstanten - Übersicht
      • +
      • Feldübersicht
      • +
      • Eigenschaftsübersicht
      • +
      • Konstruktorübersicht
      • +
      • Methodenübersicht
      • +
      • Erforderliche Elemente - Übersicht
      • +
      • Optionale Elemente - Übersicht
      • +
      +
      +
        +
      • Enum-Konstanten - Details
      • +
      • Felddetails
      • +
      • Eigenschaftsdetails
      • +
      • Konstruktordetails
      • +
      • Methodendetails
      • +
      • Elementdetails
      • +
      +

      Hinweis: Annotationsschnittstellen haben erforderliche und optionale Elemente, aber nicht Methoden. Nur Enum-Klassen haben Enum-Konstanten. Die Komponenten einer Datensatzklasse werden als Teil der Deklaration der Datensatzklasse angezeigt. Eigenschaften sind ein Feature von JavaFX.

      +

      Die Übersichtseinträge sind alphabetisch geordnet, während die detaillierten Beschreibungen in der Reihenfolge aufgeführt werden, in der sie im Quellcode auftreten. So werden die vom Programmierer festgelegten logischen Gruppierungen beibehalten.

      +
      +
      +

      Weitere Dateien

      +

      Packages und Module können Seiten mit weiteren Informationen zu den Deklarationen in der Nähe enthalten.

      +
      +
      +

      Baum (Klassenhierarchie)

      +

      Es gibt eine Seite Klassenhierarchie für alle Packages, und für jedes Package gibt es eine Hierarchie. Jede Hierarchieseite enthält eine Klassen- und eine Schnittstellenliste. Die Klassen sind nach Vererbungsstruktur organisiert, beginnend mit java.lang.Object. Die Schnittstellen erben nicht von java.lang.Object.

      +
        +
      • Wenn Sie auf der Übersichtsseite auf "Baum" klicken, wird die Hierarchie für alle Packages angezeigt.
      • +
      • Wenn Sie eine bestimmte Package-, Klassen- oder Schnittstellenseite anzeigen und auf "Baum" klicken, wird die Hierarchie nur für dieses Package angezeigt.
      • +
      +
      +
      +

      Alle Packages

      +

      Die Seite Alle Packages enthält einen alphabetischen Index aller Packages, die in der Dokumentation enthalten sind.

      +
      +
      +

      Alle Klassen und Schnittstellen

      +

      Die Seite Alle Klassen und Schnittstellen enthält einen alphabetischen Index aller Klassen und Schnittstellen in der Dokumentation, einschließlich Annotationsschnittstellen, Enum-Klassen und Datensatzklassen.

      +
      +
      +

      Index

      +

      Die Index enthält einen alphabetischen Index aller Klassen, Schnittstellen, Konstruktoren, Methoden und Felder in der Dokumentation sowie Übersichtsseiten wie Alle Packages, Alle Klassen und Schnittstellen.

      +
      +
      +
      +Diese Hilfedatei gilt für die vom Standard-Doclet generierte API-Dokumentation.
      +
      +
      + + diff --git a/Dokumente/JavaDoc/model/docs/javadoc/index-all.html b/Dokumente/JavaDoc/model/docs/javadoc/index-all.html new file mode 100644 index 0000000..e36db84 --- /dev/null +++ b/Dokumente/JavaDoc/model/docs/javadoc/index-all.html @@ -0,0 +1,1286 @@ + + + + +Index (model API) + + + + + + + + + + + + + +
      + +
      +
      +
      +

      Index

      +
      +A B C D E F G H I K L M N P R S T U V W 
      Alle Klassen und Schnittstellen|Alle Packages +

      A

      +
      +
      accept(ClientInterpreter, int) - Methode in Klasse pp.battleship.message.client.ClientMessage
      +
      +
      Accepts a visitor for processing this message.
      +
      +
      accept(ClientInterpreter, int) - Methode in Klasse pp.battleship.message.client.MapMessage
      +
      +
      Accepts a visitor to process this message.
      +
      +
      accept(ClientInterpreter, int) - Methode in Klasse pp.battleship.message.client.ShellAnimationFinishedMessage
      +
       
      +
      accept(ClientInterpreter, int) - Methode in Klasse pp.battleship.message.client.ShootMessage
      +
      +
      Accepts a visitor to process this message.
      +
      +
      accept(ServerInterpreter) - Methode in Klasse pp.battleship.message.server.EffectMessage
      +
      +
      Accepts a visitor to process this message.
      +
      +
      accept(ServerInterpreter) - Methode in Klasse pp.battleship.message.server.GameDetails
      +
      +
      Accepts a visitor to process this message.
      +
      +
      accept(ServerInterpreter) - Methode in Klasse pp.battleship.message.server.ServerMessage
      +
      +
      Accepts a visitor for processing this message.
      +
      +
      accept(ServerInterpreter) - Methode in Klasse pp.battleship.message.server.StartBattleMessage
      +
      +
      Accepts a visitor to process this message.
      +
      +
      accept(Visitor<T>) - Methode in Klasse pp.battleship.model.Battleship
      +
      +
      Accepts a visitor that returns a value of type T.
      +
      +
      accept(Visitor<T>) - Methode in Schnittstelle pp.battleship.model.Item
      +
      +
      Accepts a visitor to perform operations on the item.
      +
      +
      accept(Visitor<T>) - Methode in Klasse pp.battleship.model.Shot
      +
      +
      Accepts a visitor with a return value.
      +
      +
      accept(VoidVisitor) - Methode in Klasse pp.battleship.model.Battleship
      +
      +
      Accepts a visitor that does not return a value.
      +
      +
      accept(VoidVisitor) - Methode in Schnittstelle pp.battleship.model.Item
      +
      +
      Accepts a visitor to perform operations on the item without returning a result.
      +
      +
      accept(VoidVisitor) - Methode in Klasse pp.battleship.model.Shot
      +
      +
      Accepts a visitor without a return value.
      +
      +
      add(Battleship) - Methode in Klasse pp.battleship.model.ShipMap
      +
      +
      Adds a battleship to the map and triggers an item addition event.
      +
      +
      add(Shot) - Methode in Klasse pp.battleship.model.ShipMap
      +
      +
      Registers a shot on the map, updates the state of the affected ship (if any), + and triggers an item addition event.
      +
      +
      addListener(GameEventListener) - Methode in Klasse pp.battleship.game.client.ClientGameLogic
      +
      +
      Adds a listener to receive game events.
      +
      +
      addPlayer(int) - Methode in Klasse pp.battleship.game.server.ServerGameLogic
      +
      +
      Adds a new player to the game if there are less than two players.
      +
      +
      +

      B

      +
      +
      Battleship - Klasse in pp.battleship.model
      +
      +
      Represents a battleship in the game.
      +
      +
      Battleship(int, int, int, Rotation) - Konstruktor für Klasse pp.battleship.model.Battleship
      +
      +
      Constructs a new Battleship with the specified length, position, and rotation.
      +
      +
      Battleship.Status - Enum-Klasse in pp.battleship.model
      +
      +
      Enumeration representing the different statuses a battleship can have during the game.
      +
      +
      BattleshipClient - Schnittstelle in pp.battleship.game.client
      +
      +
      Interface representing a Battleship client.
      +
      +
      BattleshipClientConfig - Klasse in pp.battleship.game.singlemode
      +
      +
      Class providing access to the Battleship client configuration.
      +
      +
      BattleshipClientConfig() - Konstruktor für Klasse pp.battleship.game.singlemode.BattleshipClientConfig
      +
      +
      Creates a default BattleshipClientConfig with predefined values.
      +
      +
      BattleshipConfig - Klasse in pp.battleship
      +
      +
      Provides access to the configuration settings for the Battleship game.
      +
      +
      BattleshipConfig() - Konstruktor für Klasse pp.battleship.BattleshipConfig
      +
      +
      Creates an instance of BattleshipConfig with default settings.
      +
      +
      BUNDLE - Statische Variable in Klasse pp.battleship.Resources
      +
      +
      The resource bundle for the Battleship game.
      +
      +
      +

      C

      +
      +
      clear() - Methode in Klasse pp.battleship.model.ShipMap
      +
      +
      Removes all items from the map and triggers corresponding removal events for each.
      +
      +
      clickHarbor(IntPoint) - Methode in Klasse pp.battleship.game.client.ClientGameLogic
      +
      +
      Handles a click on the harbor map.
      +
      +
      clickOpponentMap(IntPoint) - Methode in Klasse pp.battleship.game.client.ClientGameLogic
      +
      +
      Handles a click on the opponent's map.
      +
      +
      clickOwnMap(IntPoint) - Methode in Klasse pp.battleship.game.client.ClientGameLogic
      +
      +
      Handles a click on the player's own map.
      +
      +
      ClientGameLogic - Klasse in pp.battleship.game.client
      +
      +
      Controls the client-side game logic for Battleship.
      +
      +
      ClientGameLogic(ClientSender) - Konstruktor für Klasse pp.battleship.game.client.ClientGameLogic
      +
      +
      Constructs a ClientGameLogic with the specified sender object.
      +
      +
      ClientInterpreter - Schnittstelle in pp.battleship.message.client
      +
      +
      Visitor interface for processing all client messages.
      +
      +
      ClientMessage - Klasse in pp.battleship.message.client
      +
      +
      An abstract base class for client messages used in network transfer.
      +
      +
      ClientMessage() - Konstruktor für Klasse pp.battleship.message.client.ClientMessage
      +
      +
      Constructs a new ClientMessage instance.
      +
      +
      ClientSender - Schnittstelle in pp.battleship.game.client
      +
      +
      Interface for sending messages to the server.
      +
      +
      ClientStateEvent - Datensatzklasse in pp.battleship.notification
      +
      +
      Event when an item is added to a map.
      +
      +
      ClientStateEvent() - Konstruktor für Datensatzklasse pp.battleship.notification.ClientStateEvent
      +
      +
      Erstellt eine Instanz einer Datensatzklasse ClientStateEvent.
      +
      +
      collidesWith(Battleship) - Methode in Klasse pp.battleship.model.Battleship
      +
      +
      Checks whether this battleship collides with another battleship.
      +
      +
      connect() - Methode in Schnittstelle pp.battleship.game.client.ServerConnection
      +
      +
      Establishes a connection to the server.
      +
      +
      connect() - Methode in Klasse pp.battleship.game.singlemode.ServerConnectionMockup
      +
      +
      Simulates connecting to a server by adding the PlayerClient and the RobotClient to the serverGameLogic.
      +
      +
      contains(int, int) - Methode in Klasse pp.battleship.model.Battleship
      +
      +
      Checks whether the specified position is covered by the battleship.
      +
      +
      contains(IntPosition) - Methode in Klasse pp.battleship.model.Battleship
      +
      +
      Checks whether the specified position is covered by the battleship.
      +
      +
      controlRender(RenderManager, ViewPort) - Methode in Klasse pp.battleship.model.ShellControl
      +
       
      +
      controlUpdate(float) - Methode in Klasse pp.battleship.model.ShellControl
      +
       
      +
      +

      D

      +
      +
      DESTROYED_SHIP - Enum-Konstante in Enum-Klasse pp.battleship.notification.Sound
      +
      +
      Sound of a ship being destroyed.
      +
      +
      disconnect() - Methode in Schnittstelle pp.battleship.game.client.ServerConnection
      +
      +
      Disconnects from the server.
      +
      +
      disconnect() - Methode in Klasse pp.battleship.game.singlemode.ServerConnectionMockup
      +
      +
      Does nothing upon shutdown of the app.
      +
      +
      DOWN - Enum-Konstante in Enum-Klasse pp.battleship.model.Rotation
      +
      +
      Represents the ship facing downwards.
      +
      +
      dx() - Methode in Enum-Klasse pp.battleship.model.Rotation
      +
      +
      Gets the change in x-coordinate corresponding to this rotation.
      +
      +
      dy() - Methode in Enum-Klasse pp.battleship.model.Rotation
      +
      +
      Gets the change in y-coordinate corresponding to this rotation.
      +
      +
      +

      E

      +
      +
      EffectMessage - Klasse in pp.battleship.message.server
      +
      +
      A message sent by the server to inform clients about the effects of a shot in the Battleship game.
      +
      +
      enqueue(Runnable) - Methode in Schnittstelle pp.battleship.game.client.BattleshipClient
      +
      +
      Enqueues a task to be executed by the client.
      +
      +
      equals(Object) - Methode in Klasse pp.battleship.model.IntPoint
      +
      +
      Indicates whether some other object is "equal to" this one.
      +
      +
      equals(Object) - Methode in Klasse pp.battleship.model.Shot
      +
      +
      Checks if this shot is equal to another object.
      +
      +
      equals(Object) - Methode in Datensatzklasse pp.battleship.notification.ClientStateEvent
      +
      +
      Gibt an, ob ein anderes Objekt diesem gleich ("equal to") ist.
      +
      +
      equals(Object) - Methode in Datensatzklasse pp.battleship.notification.InfoTextEvent
      +
      +
      Gibt an, ob ein anderes Objekt diesem gleich ("equal to") ist.
      +
      +
      equals(Object) - Methode in Datensatzklasse pp.battleship.notification.ItemAddedEvent
      +
      +
      Gibt an, ob ein anderes Objekt diesem gleich ("equal to") ist.
      +
      +
      equals(Object) - Methode in Datensatzklasse pp.battleship.notification.ItemRemovedEvent
      +
      +
      Gibt an, ob ein anderes Objekt diesem gleich ("equal to") ist.
      +
      +
      equals(Object) - Methode in Datensatzklasse pp.battleship.notification.SoundEvent
      +
      +
      Gibt an, ob ein anderes Objekt diesem gleich ("equal to") ist.
      +
      +
      EXPLOSION - Enum-Konstante in Enum-Klasse pp.battleship.notification.Sound
      +
      +
      Sound of an explosion.
      +
      +
      +

      F

      +
      +
      findShipAt(int, int) - Methode in Klasse pp.battleship.model.ShipMap
      +
      +
      Finds a battleship at the specified coordinates.
      +
      +
      findShipAt(IntPosition) - Methode in Klasse pp.battleship.model.ShipMap
      +
      +
      Finds a battleship at the specified position.
      +
      +
      fits(GameDetails) - Methode in Klasse pp.battleship.model.dto.ShipMapDTO
      +
      +
      Checks if the current ship map fits the game details provided.
      +
      +
      +

      G

      +
      +
      GameDetails - Klasse in pp.battleship.message.server
      +
      +
      A message sent by the server to provide details about the game configuration.
      +
      +
      GameDetails(BattleshipConfig) - Konstruktor für Klasse pp.battleship.message.server.GameDetails
      +
      +
      Constructs a GameDetails message with the specified BattleshipConfig.
      +
      +
      GameEvent - Schnittstelle in pp.battleship.notification
      +
      +
      An interface used for all game events.
      +
      +
      GameEventBroker - Schnittstelle in pp.battleship.notification
      +
      +
      Defines a broker for distributing game events to registered listeners.
      +
      +
      GameEventListener - Schnittstelle in pp.battleship.notification
      +
      +
      Listener interface for all events implemented by subclasses of GameEvent.
      +
      +
      getConfig() - Methode in Schnittstelle pp.battleship.game.client.BattleshipClient
      +
      +
      Returns the configuration associated with this client.
      +
      +
      getCurrentPosition() - Methode in Klasse pp.battleship.model.Shell
      +
       
      +
      getDamaged() - Methode in Klasse pp.battleship.model.Battleship
      +
      +
      Returns the positions of this battleship that have been hit.
      +
      +
      getDelay() - Methode in Klasse pp.battleship.game.singlemode.BattleshipClientConfig
      +
      +
      Returns the delay (in milliseconds) between shots by the RobotClient.
      +
      +
      getDestroyedShip() - Methode in Klasse pp.battleship.message.server.EffectMessage
      +
      +
      Returns the ship that was destroyed by the shot.
      +
      +
      getGameLogic() - Methode in Schnittstelle pp.battleship.game.client.BattleshipClient
      +
      +
      Returns the game logic associated with this client.
      +
      +
      getHarbor() - Methode in Klasse pp.battleship.game.client.ClientGameLogic
      +
      +
      Returns the harbor map.
      +
      +
      getHeight() - Methode in Klasse pp.battleship.message.server.GameDetails
      +
      +
      Returns the height of the game map.
      +
      +
      getHeight() - Methode in Klasse pp.battleship.model.ShipMap
      +
      +
      Returns the height (number of rows) of the map.
      +
      +
      getId() - Methode in Klasse pp.battleship.game.server.Player
      +
      +
      Returns the id of the connection to the client represented by this player.
      +
      +
      getInfoTextKey() - Methode in Klasse pp.battleship.message.server.EffectMessage
      +
      +
      Returns the key for the informational text associated with this message.
      +
      +
      getInfoTextKey() - Methode in Klasse pp.battleship.message.server.GameDetails
      +
      +
      Returns the key for the informational text associated with this message.
      +
      +
      getInfoTextKey() - Methode in Klasse pp.battleship.message.server.ServerMessage
      +
      +
      Gets the bundle key of the informational text to be shown at the client.
      +
      +
      getInfoTextKey() - Methode in Klasse pp.battleship.message.server.StartBattleMessage
      +
      +
      Returns the key for the informational text associated with this message.
      +
      +
      getItems() - Methode in Klasse pp.battleship.model.ShipMap
      +
      +
      Returns an unmodifiable list of all items currently on the map.
      +
      +
      getLength() - Methode in Klasse pp.battleship.model.Battleship
      +
      +
      Returns the length of the battleship.
      +
      +
      getMap() - Methode in Klasse pp.battleship.game.server.Player
      +
       
      +
      getMapHeight() - Methode in Klasse pp.battleship.BattleshipConfig
      +
      +
      Returns the height of the game map.
      +
      +
      getMapWidth() - Methode in Klasse pp.battleship.BattleshipConfig
      +
      +
      Returns the width of the game map.
      +
      +
      getMaxX() - Methode in Klasse pp.battleship.model.Battleship
      +
      +
      Returns the maximum x-coordinate that the battleship occupies based on its current position and rotation.
      +
      +
      getMaxY() - Methode in Klasse pp.battleship.model.Battleship
      +
      +
      Returns the maximum y-coordinate that the battleship occupies based on its current position and rotation.
      +
      +
      getMinX() - Methode in Klasse pp.battleship.model.Battleship
      +
      +
      Returns the minimum x-coordinate that the battleship occupies based on its current position and rotation.
      +
      +
      getMinY() - Methode in Klasse pp.battleship.model.Battleship
      +
      +
      Returns the minimum y-coordinate that the battleship occupies based on its current position and rotation.
      +
      +
      getOpponentMap() - Methode in Klasse pp.battleship.game.client.ClientGameLogic
      +
      +
      Returns the opponent's map.
      +
      +
      getOpponentMap() - Methode in Klasse pp.battleship.game.singlemode.BattleshipClientConfig
      +
      +
      Returns the file representing the opponent's map.
      +
      +
      getOwnMap() - Methode in Klasse pp.battleship.game.client.ClientGameLogic
      +
      +
      Returns the player's own map.
      +
      +
      getOwnMap() - Methode in Klasse pp.battleship.game.singlemode.BattleshipClientConfig
      +
      +
      Returns the file representing the player's own map.
      +
      +
      getPlayerById(int) - Methode in Klasse pp.battleship.game.server.ServerGameLogic
      +
      +
      Returns the player representing the client with the specified connection ID.
      +
      +
      getPort() - Methode in Klasse pp.battleship.BattleshipConfig
      +
      +
      Returns the port number configured for the Battleship server.
      +
      +
      getPosition() - Methode in Klasse pp.battleship.message.client.ShootMessage
      +
      +
      Returns the position of the shot.
      +
      +
      getRemainingOpponentShips() - Methode in Klasse pp.battleship.message.server.EffectMessage
      +
      +
      Returns the list of opponent's remaining ships after the shot.
      +
      +
      getRemainingShips() - Methode in Klasse pp.battleship.model.ShipMap
      +
      +
      Returns a list of all remaining battleships that have not been destroyed.
      +
      +
      getRobotTargets() - Methode in Klasse pp.battleship.game.singlemode.BattleshipClientConfig
      +
      +
      Returns an iterator of IntPoint objects representing the predefined + shooting locations for the RobotClient.
      +
      +
      getRot() - Methode in Klasse pp.battleship.model.Battleship
      +
      +
      Returns the current rotation of the battleship.
      +
      +
      getShell() - Methode in Klasse pp.battleship.model.ShellControl
      +
       
      +
      getShipNums() - Methode in Klasse pp.battleship.BattleshipConfig
      +
      +
      Returns a map representing the number of ships for each length.
      +
      +
      getShipNums() - Methode in Klasse pp.battleship.message.server.GameDetails
      +
      +
      Returns a map where the keys represent ship lengths + and the values represent the number of ships of that length.
      +
      +
      getShips() - Methode in Klasse pp.battleship.message.client.MapMessage
      +
      +
      Returns the list of ships on the player's map.
      +
      +
      getShips() - Methode in Klasse pp.battleship.model.dto.ShipMapDTO
      +
      +
      Returns the ships stored in this DTO.
      +
      +
      getShips() - Methode in Klasse pp.battleship.model.ShipMap
      +
      +
      Returns a stream of all battleships currently on the map.
      +
      +
      getShot() - Methode in Klasse pp.battleship.message.server.EffectMessage
      +
      +
      Returns the shot fired.
      +
      +
      getShots() - Methode in Klasse pp.battleship.model.ShipMap
      +
      +
      Returns a stream of all shots fired on the map.
      +
      +
      getStatus() - Methode in Klasse pp.battleship.model.Battleship
      +
      +
      Returns the current status of the battleship.
      +
      +
      getWidth() - Methode in Klasse pp.battleship.message.server.GameDetails
      +
      +
      Returns the width of the game map.
      +
      +
      getWidth() - Methode in Klasse pp.battleship.model.ShipMap
      +
      +
      Returns the width (number of columns) of the map.
      +
      +
      getX() - Methode in Klasse pp.battleship.model.Battleship
      +
      +
      Returns the current x-coordinate of the battleship's position.
      +
      +
      getX() - Methode in Klasse pp.battleship.model.IntPoint
      +
      +
      Gets the x-coordinate of the point.
      +
      +
      getX() - Methode in Schnittstelle pp.battleship.model.IntPosition
      +
      +
      Returns the X coordinate of this position.
      +
      +
      getX() - Methode in Klasse pp.battleship.model.Shot
      +
      +
      Gets the x-coordinate of the shot.
      +
      +
      getY() - Methode in Klasse pp.battleship.model.Battleship
      +
      +
      Returns the current y-coordinate of the battleship's position.
      +
      +
      getY() - Methode in Klasse pp.battleship.model.IntPoint
      +
      +
      Gets the y-coordinate of the point.
      +
      +
      getY() - Methode in Schnittstelle pp.battleship.model.IntPosition
      +
      +
      Returns the Y coordinate of this position.
      +
      +
      getY() - Methode in Klasse pp.battleship.model.Shot
      +
      +
      Gets the y-coordinate of the shot.
      +
      +
      +

      H

      +
      +
      hashCode() - Methode in Klasse pp.battleship.model.IntPoint
      +
      +
      Returns a hash code value for the IntPoint.
      +
      +
      hashCode() - Methode in Klasse pp.battleship.model.Shot
      +
      +
      Computes the hash code of this shot.
      +
      +
      hashCode() - Methode in Datensatzklasse pp.battleship.notification.ClientStateEvent
      +
      +
      Gibt einen Hashcodewert für diese Objekt zurück.
      +
      +
      hashCode() - Methode in Datensatzklasse pp.battleship.notification.InfoTextEvent
      +
      +
      Gibt einen Hashcodewert für diese Objekt zurück.
      +
      +
      hashCode() - Methode in Datensatzklasse pp.battleship.notification.ItemAddedEvent
      +
      +
      Gibt einen Hashcodewert für diese Objekt zurück.
      +
      +
      hashCode() - Methode in Datensatzklasse pp.battleship.notification.ItemRemovedEvent
      +
      +
      Gibt einen Hashcodewert für diese Objekt zurück.
      +
      +
      hashCode() - Methode in Datensatzklasse pp.battleship.notification.SoundEvent
      +
      +
      Gibt einen Hashcodewert für diese Objekt zurück.
      +
      +
      hit(boolean, IntPoint) - Statische Methode in Klasse pp.battleship.message.server.EffectMessage
      +
      +
      Creates an EffectMessage indicating a hit.
      +
      +
      hit(int, int) - Methode in Klasse pp.battleship.model.Battleship
      +
      +
      Attempts to hit the battleship at the specified position.
      +
      +
      hit(IntPosition) - Methode in Klasse pp.battleship.model.Battleship
      +
      +
      Attempts to hit the battleship at the specified position.
      +
      +
      +

      I

      +
      +
      InfoTextEvent - Datensatzklasse in pp.battleship.notification
      +
      +
      Event when an item is added to a map.
      +
      +
      InfoTextEvent(String) - Konstruktor für Datensatzklasse pp.battleship.notification.InfoTextEvent
      +
      +
      Erstellt eine Instanz einer Datensatzklasse InfoTextEvent.
      +
      +
      IntPoint - Klasse in pp.battleship.model
      +
      +
      Represents a point in the two-dimensional plane with integer coordinates.
      +
      +
      IntPoint(int, int) - Konstruktor für Klasse pp.battleship.model.IntPoint
      +
      +
      Constructs a new IntPoint with the specified coordinates.
      +
      +
      IntPosition - Schnittstelle in pp.battleship.model
      +
      +
      Interface representing a position with X and Y coordinates.
      +
      +
      INVALID_PREVIEW - Enum-Konstante in Enum-Klasse pp.battleship.model.Battleship.Status
      +
      +
      The ship is being previewed in an invalid position for placement.
      +
      +
      isAtTarget() - Methode in Klasse pp.battleship.model.Shell
      +
       
      +
      isConnected() - Methode in Schnittstelle pp.battleship.game.client.ServerConnection
      +
      +
      Checks if the client is currently connected to the server.
      +
      +
      isConnected() - Methode in Klasse pp.battleship.game.singlemode.ServerConnectionMockup
      +
      +
      Always returns true as this is a mock connection.
      +
      +
      isDestroyed() - Methode in Klasse pp.battleship.model.Battleship
      +
      +
      Determines if the battleship has been completely destroyed.
      +
      +
      isGameLost() - Methode in Klasse pp.battleship.message.server.EffectMessage
      +
      +
      Checks if the game is lost by the player.
      +
      +
      isGameOver() - Methode in Klasse pp.battleship.message.server.EffectMessage
      +
      +
      Checks if the game is over.
      +
      +
      isGameWon() - Methode in Klasse pp.battleship.message.server.EffectMessage
      +
      +
      Checks if the game is won by the player.
      +
      +
      isHit() - Methode in Klasse pp.battleship.model.Shot
      +
      +
      Checks if the shot was a hit.
      +
      +
      isMapComplete() - Methode in Klasse pp.battleship.game.client.ClientGameLogic
      +
      +
      Checks if the player's map is complete (i.e., all ships are placed).
      +
      +
      isMyTurn() - Methode in Klasse pp.battleship.message.server.EffectMessage
      +
      +
      Checks if it's currently the player's turn.
      +
      +
      isMyTurn() - Methode in Klasse pp.battleship.message.server.StartBattleMessage
      +
      +
      Checks if it's the client's turn to shoot.
      +
      +
      isOwnShot() - Methode in Klasse pp.battleship.message.server.EffectMessage
      +
      +
      Checks if the shot was fired by the player.
      +
      +
      isSingleMode() - Methode in Klasse pp.battleship.game.singlemode.BattleshipClientConfig
      +
      +
      Determines if the game is in single mode based on the presence of an opponent map.
      +
      +
      isValid(int, int) - Methode in Klasse pp.battleship.model.ShipMap
      +
      +
      Checks if the specified coordinates are within the map boundaries.
      +
      +
      isValid(Battleship) - Methode in Klasse pp.battleship.model.ShipMap
      +
      +
      Checks if the given ship is in a valid position (within the map bounds and non-colliding with other ships).
      +
      +
      isValid(IntPosition) - Methode in Klasse pp.battleship.model.ShipMap
      +
      +
      Validates whether the specified position is within the map boundaries.
      +
      +
      item() - Methode in Datensatzklasse pp.battleship.notification.ItemAddedEvent
      +
      +
      Gibt den Wert für die Datensatzkomponente item zurück.
      +
      +
      item() - Methode in Datensatzklasse pp.battleship.notification.ItemRemovedEvent
      +
      +
      Gibt den Wert für die Datensatzkomponente item zurück.
      +
      +
      Item - Schnittstelle in pp.battleship.model
      +
      +
      An interface representing any item on a ship map.
      +
      +
      ItemAddedEvent - Datensatzklasse in pp.battleship.notification
      +
      +
      Event when an item is added to a map.
      +
      +
      ItemAddedEvent(Item, ShipMap) - Konstruktor für Datensatzklasse pp.battleship.notification.ItemAddedEvent
      +
      +
      Erstellt eine Instanz einer Datensatzklasse ItemAddedEvent.
      +
      +
      ItemRemovedEvent - Datensatzklasse in pp.battleship.notification
      +
      +
      Event when an item gets removed.
      +
      +
      ItemRemovedEvent(Item, ShipMap) - Konstruktor für Datensatzklasse pp.battleship.notification.ItemRemovedEvent
      +
      +
      Erstellt eine Instanz einer Datensatzklasse ItemRemovedEvent.
      +
      +
      +

      K

      +
      +
      key() - Methode in Datensatzklasse pp.battleship.notification.InfoTextEvent
      +
      +
      Gibt den Wert für die Datensatzkomponente key zurück.
      +
      +
      +

      L

      +
      +
      LEFT - Enum-Konstante in Enum-Klasse pp.battleship.model.Rotation
      +
      +
      Represents the ship facing leftwards.
      +
      +
      loadFrom(File) - Statische Methode in Klasse pp.battleship.model.dto.ShipMapDTO
      +
      +
      Loads a ShipMapDTO from a file containing JSON data.
      +
      +
      loadMap(File) - Methode in Klasse pp.battleship.game.client.ClientGameLogic
      +
      +
      Loads a map from the specified file.
      +
      +
      lookup(String) - Statische Methode in Klasse pp.battleship.Resources
      +
      +
      Gets a string for the given key from the resource bundle in Resources.BUNDLE.
      +
      +
      lost(IntPoint, Battleship, List<Battleship>) - Statische Methode in Klasse pp.battleship.message.server.EffectMessage
      +
      +
      Creates an EffectMessage indicating the player has lost the game.
      +
      +
      +

      M

      +
      +
      map() - Methode in Datensatzklasse pp.battleship.notification.ItemAddedEvent
      +
      +
      Gibt den Wert für die Datensatzkomponente map zurück.
      +
      +
      map() - Methode in Datensatzklasse pp.battleship.notification.ItemRemovedEvent
      +
      +
      Gibt den Wert für die Datensatzkomponente map zurück.
      +
      +
      mapFinished() - Methode in Klasse pp.battleship.game.client.ClientGameLogic
      +
      +
      Marks the player's map as finished.
      +
      +
      MapMessage - Klasse in pp.battleship.message.client
      +
      +
      A message sent by the client containing the positions of the ships on the player's map.
      +
      +
      MapMessage(List<Battleship>) - Konstruktor für Klasse pp.battleship.message.client.MapMessage
      +
      +
      Constructs a MapMessage with the specified list of ships.
      +
      +
      mayLoadMap() - Methode in Klasse pp.battleship.game.client.ClientGameLogic
      +
      +
      Checks if the player's own map may be loaded from a file.
      +
      +
      maySaveMap() - Methode in Klasse pp.battleship.game.client.ClientGameLogic
      +
      +
      Checks if the player's own map may be saved to a file.
      +
      +
      miss(boolean, IntPoint) - Statische Methode in Klasse pp.battleship.message.server.EffectMessage
      +
      +
      Creates an EffectMessage indicating a miss.
      +
      +
      movePreview(IntPoint) - Methode in Klasse pp.battleship.game.client.ClientGameLogic
      +
      +
      Moves the preview ship to the specified position.
      +
      +
      moveTo(int, int) - Methode in Klasse pp.battleship.model.Battleship
      +
      +
      Moves the battleship to the specified coordinates.
      +
      +
      moveTo(IntPosition) - Methode in Klasse pp.battleship.model.Battleship
      +
      +
      Moves the battleship to the specified position.
      +
      +
      movingShip() - Methode in Klasse pp.battleship.game.client.ClientGameLogic
      +
      +
      Checks if there is currently a preview ship.
      +
      +
      +

      N

      +
      +
      NORMAL - Enum-Konstante in Enum-Klasse pp.battleship.model.Battleship.Status
      +
      +
      The ship is in its normal state, not being previewed for placement.
      +
      +
      notifyListener(GameEventListener) - Methode in Datensatzklasse pp.battleship.notification.ClientStateEvent
      +
      +
      Notifies the game event listener of this event.
      +
      +
      notifyListener(GameEventListener) - Methode in Schnittstelle pp.battleship.notification.GameEvent
      +
      +
      Notifies the game event listener of the event.
      +
      +
      notifyListener(GameEventListener) - Methode in Datensatzklasse pp.battleship.notification.InfoTextEvent
      +
      +
      Notifies the game event listener of this event.
      +
      +
      notifyListener(GameEventListener) - Methode in Datensatzklasse pp.battleship.notification.ItemAddedEvent
      +
      +
      Notifies the game event listener of this event.
      +
      +
      notifyListener(GameEventListener) - Methode in Datensatzklasse pp.battleship.notification.ItemRemovedEvent
      +
      +
      Notifies the game event listener of this event.
      +
      +
      notifyListener(GameEventListener) - Methode in Datensatzklasse pp.battleship.notification.SoundEvent
      +
      +
      Notifies the game event listener of this event.
      +
      +
      notifyListeners(GameEvent) - Methode in Klasse pp.battleship.game.client.ClientGameLogic
      +
      +
      Notifies all listeners of a game event.
      +
      +
      notifyListeners(GameEvent) - Methode in Schnittstelle pp.battleship.notification.GameEventBroker
      +
      +
      Notifies all registered listeners about the specified game event.
      +
      +
      +

      P

      +
      +
      Player - Klasse in pp.battleship.game.server
      +
      +
      Class representing a player
      +
      +
      playSound(Sound) - Methode in Klasse pp.battleship.game.client.ClientGameLogic
      +
      +
      Emits an event to play the specified sound.
      +
      +
      pp.battleship - Package pp.battleship
      +
       
      +
      pp.battleship.game.client - Package pp.battleship.game.client
      +
       
      +
      pp.battleship.game.server - Package pp.battleship.game.server
      +
       
      +
      pp.battleship.game.singlemode - Package pp.battleship.game.singlemode
      +
       
      +
      pp.battleship.message.client - Package pp.battleship.message.client
      +
       
      +
      pp.battleship.message.server - Package pp.battleship.message.server
      +
       
      +
      pp.battleship.model - Package pp.battleship.model
      +
       
      +
      pp.battleship.model.dto - Package pp.battleship.model.dto
      +
       
      +
      pp.battleship.notification - Package pp.battleship.notification
      +
       
      +
      +

      R

      +
      +
      received(MapMessage, int) - Methode in Klasse pp.battleship.game.server.ServerGameLogic
      +
      +
      Handles the reception of a MapMessage.
      +
      +
      received(MapMessage, int) - Methode in Schnittstelle pp.battleship.message.client.ClientInterpreter
      +
      +
      Processes a received MapMessage.
      +
      +
      received(ShellAnimationFinishedMessage, int) - Methode in Klasse pp.battleship.game.server.ServerGameLogic
      +
      +
      Handles the reception of ShellAnimationFinishedMessage.
      +
      +
      received(ShellAnimationFinishedMessage, int) - Methode in Schnittstelle pp.battleship.message.client.ClientInterpreter
      +
       
      +
      received(ShootMessage, int) - Methode in Klasse pp.battleship.game.server.ServerGameLogic
      +
      +
      Handles the reception of a ShootMessage.
      +
      +
      received(ShootMessage, int) - Methode in Schnittstelle pp.battleship.message.client.ClientInterpreter
      +
      +
      Processes a received ShootMessage.
      +
      +
      received(EffectMessage) - Methode in Klasse pp.battleship.game.client.ClientGameLogic
      +
      +
      Reports the effect of a shot based on the server message.
      +
      +
      received(EffectMessage) - Methode in Schnittstelle pp.battleship.message.server.ServerInterpreter
      +
      +
      Handles an EffectMessage received from the server.
      +
      +
      received(GameDetails) - Methode in Klasse pp.battleship.game.client.ClientGameLogic
      +
      +
      Sets the game details provided by the server.
      +
      +
      received(GameDetails) - Methode in Schnittstelle pp.battleship.message.server.ServerInterpreter
      +
      +
      Handles a GameDetails message received from the server.
      +
      +
      received(StartBattleMessage) - Methode in Klasse pp.battleship.game.client.ClientGameLogic
      +
      +
      Starts the battle based on the server message.
      +
      +
      received(StartBattleMessage) - Methode in Schnittstelle pp.battleship.message.server.ServerInterpreter
      +
      +
      Handles a StartBattleMessage received from the server.
      +
      +
      receivedEvent(ClientStateEvent) - Methode in Schnittstelle pp.battleship.notification.GameEventListener
      +
      +
      Indicates that the client's state has changed.
      +
      +
      receivedEvent(InfoTextEvent) - Methode in Schnittstelle pp.battleship.notification.GameEventListener
      +
      +
      Indicates that an info text shall be shown.
      +
      +
      receivedEvent(ItemAddedEvent) - Methode in Schnittstelle pp.battleship.notification.GameEventListener
      +
      +
      Indicates that an item has been added to a map.
      +
      +
      receivedEvent(ItemRemovedEvent) - Methode in Schnittstelle pp.battleship.notification.GameEventListener
      +
      +
      Indicates that an item has been destroyed
      +
      +
      receivedEvent(SoundEvent) - Methode in Schnittstelle pp.battleship.notification.GameEventListener
      +
      +
      Indicates that a sound shall be played.
      +
      +
      remove(Item) - Methode in Klasse pp.battleship.model.ShipMap
      +
      +
      Removes an item from the map and triggers an item removal event.
      +
      +
      removeListener(GameEventListener) - Methode in Klasse pp.battleship.game.client.ClientGameLogic
      +
      +
      Removes a listener from receiving game events.
      +
      +
      Resources - Klasse in pp.battleship
      +
      +
      Provides access to the resource bundle of the game.
      +
      +
      RIGHT - Enum-Konstante in Enum-Klasse pp.battleship.model.Rotation
      +
      +
      Represents the ship facing rightwards.
      +
      +
      rotate() - Methode in Enum-Klasse pp.battleship.model.Rotation
      +
      +
      Rotates the orientation clockwise and returns the next rotation.
      +
      +
      rotated() - Methode in Klasse pp.battleship.model.Battleship
      +
      +
      Rotates the battleship by 90 degrees clockwise.
      +
      +
      rotateShip() - Methode in Klasse pp.battleship.game.client.ClientGameLogic
      +
      +
      Rotates the preview ship.
      +
      +
      Rotation - Enum-Klasse in pp.battleship.model
      +
      +
      Represents the rotation of a ship and provides functionality related to rotation.
      +
      +
      +

      S

      +
      +
      saveMap(File) - Methode in Klasse pp.battleship.game.client.ClientGameLogic
      +
      +
      Saves the player's own map to the specified file.
      +
      +
      saveTo(File) - Methode in Klasse pp.battleship.model.dto.ShipMapDTO
      +
      +
      Saves the current ShipMapDTO to a file in JSON format.
      +
      +
      send(int, ServerMessage) - Methode in Schnittstelle pp.battleship.game.server.ServerSender
      +
      +
      Send the specified message to the client.
      +
      +
      send(int, ServerMessage) - Methode in Klasse pp.battleship.game.singlemode.ServerConnectionMockup
      +
      +
      Forwards the specified message received from the server logic either to the player client or to the + robot client, depending on the specified id.
      +
      +
      send(ClientMessage) - Methode in Schnittstelle pp.battleship.game.client.ClientSender
      +
      +
      Send the specified message to the server.
      +
      +
      send(ClientMessage) - Methode in Klasse pp.battleship.game.singlemode.ServerConnectionMockup
      +
      +
      Forwards the specified message received from the player client to the server logic.
      +
      +
      ServerConnection - Schnittstelle in pp.battleship.game.client
      +
      +
      Interface representing a connection to the server.
      +
      +
      ServerConnectionMockup - Klasse in pp.battleship.game.singlemode
      +
      +
      A mock implementation of the ServerConnection interface for single mode.
      +
      +
      ServerConnectionMockup(BattleshipClient) - Konstruktor für Klasse pp.battleship.game.singlemode.ServerConnectionMockup
      +
      +
      Constructs a ServerConnectionMockup instance for the given Battleship application.
      +
      +
      ServerGameLogic - Klasse in pp.battleship.game.server
      +
      +
      Controls the server-side game logic for Battleship.
      +
      +
      ServerGameLogic(ServerSender, BattleshipConfig) - Konstruktor für Klasse pp.battleship.game.server.ServerGameLogic
      +
      +
      Constructs a ServerGameLogic with the specified sender and configuration.
      +
      +
      ServerInterpreter - Schnittstelle in pp.battleship.message.server
      +
      +
      An interface for processing server messages.
      +
      +
      ServerMessage - Klasse in pp.battleship.message.server
      +
      +
      An abstract base class for server messages used in network transfer.
      +
      +
      ServerMessage() - Konstruktor für Klasse pp.battleship.message.server.ServerMessage
      +
      +
      Constructs a new ServerMessage instance.
      +
      +
      ServerSender - Schnittstelle in pp.battleship.game.server
      +
      +
      Interface for sending messages to a client.
      +
      +
      setRotation(Rotation) - Methode in Klasse pp.battleship.model.Battleship
      +
      +
      Sets the rotation of the battleship.
      +
      +
      setShell(Shell) - Methode in Klasse pp.battleship.model.ShellControl
      +
       
      +
      setStatus(Battleship.Status) - Methode in Klasse pp.battleship.model.Battleship
      +
      +
      Sets the status of the battleship.
      +
      +
      Shell - Klasse in pp.battleship.model
      +
       
      +
      Shell(Vector3f, Vector3f, float) - Konstruktor für Klasse pp.battleship.model.Shell
      +
       
      +
      ShellAnimationFinishedMessage - Klasse in pp.battleship.message.client
      +
       
      +
      ShellAnimationFinishedMessage() - Konstruktor für Klasse pp.battleship.message.client.ShellAnimationFinishedMessage
      +
       
      +
      ShellControl - Klasse in pp.battleship.model
      +
       
      +
      ShellControl(Shell) - Konstruktor für Klasse pp.battleship.model.ShellControl
      +
       
      +
      shipDestroyed(boolean, IntPoint, Battleship) - Statische Methode in Klasse pp.battleship.message.server.EffectMessage
      +
      +
      Creates an EffectMessage indicating a ship was destroyed.
      +
      +
      ShipMap - Klasse in pp.battleship.model
      +
      +
      Represents a rectangular map that holds ships and registers shots fired.
      +
      +
      ShipMap(int, int, GameEventBroker) - Konstruktor für Klasse pp.battleship.model.ShipMap
      +
      +
      Constructs an empty map with the given dimensions.
      +
      +
      ShipMapDTO - Klasse in pp.battleship.model.dto
      +
      +
      A class representing data transfer objects of ship maps for JSON serialization and deserialization.
      +
      +
      ShipMapDTO(ShipMap) - Konstruktor für Klasse pp.battleship.model.dto.ShipMapDTO
      +
      +
      Constructs a ShipMapDTO object from a ShipMap object.
      +
      +
      ShootingAnimationState - Klasse in pp.battleship.game.client
      +
      +
      This class represents the client state during a shooting animation.
      +
      +
      ShootMessage - Klasse in pp.battleship.message.client
      +
      +
      A message sent by the client to indicate a shooting action in the game.
      +
      +
      ShootMessage(IntPoint) - Konstruktor für Klasse pp.battleship.message.client.ShootMessage
      +
      +
      Constructs a ShootMessage with the specified position.
      +
      +
      Shot - Klasse in pp.battleship.model
      +
      +
      Represents a shot in the Battleship game.
      +
      +
      Shot(int, int, boolean) - Konstruktor für Klasse pp.battleship.model.Shot
      +
      +
      Creates a new shot.
      +
      +
      Shot(IntPosition, boolean) - Konstruktor für Klasse pp.battleship.model.Shot
      +
      +
      Creates a new shot.
      +
      +
      showBattle() - Methode in Klasse pp.battleship.game.client.ClientGameLogic
      +
      +
      Checks if the battle state should be shown.
      +
      +
      showBattle() - Methode in Klasse pp.battleship.game.client.ShootingAnimationState
      +
      +
      Indicates that the battle scene should be shown in this state.
      +
      +
      showEditor() - Methode in Klasse pp.battleship.game.client.ClientGameLogic
      +
      +
      Checks if the editor should be shown.
      +
      +
      sound() - Methode in Datensatzklasse pp.battleship.notification.SoundEvent
      +
      +
      Gibt den Wert für die Datensatzkomponente sound zurück.
      +
      +
      Sound - Enum-Klasse in pp.battleship.notification
      +
      +
      Enumeration representing different types of sounds used in the game.
      +
      +
      SoundEvent - Datensatzklasse in pp.battleship.notification
      +
      +
      Event when an item is added to a map.
      +
      +
      SoundEvent(Sound) - Konstruktor für Datensatzklasse pp.battleship.notification.SoundEvent
      +
      +
      Erstellt eine Instanz einer Datensatzklasse SoundEvent.
      +
      +
      SPLASH - Enum-Konstante in Enum-Klasse pp.battleship.notification.Sound
      +
      +
      Sound of a splash.
      +
      +
      StartBattleMessage - Klasse in pp.battleship.message.server
      +
      +
      A message sent by the server to inform clients about the start of the battle.
      +
      +
      StartBattleMessage(boolean) - Konstruktor für Klasse pp.battleship.message.server.StartBattleMessage
      +
      +
      Constructs a StartBattleMessage with the specified turn indicator.
      +
      +
      +

      T

      +
      +
      toString() - Methode in Klasse pp.battleship.game.server.Player
      +
       
      +
      toString() - Methode in Klasse pp.battleship.message.client.MapMessage
      +
      +
      Returns a string representation of the MapMessage.
      +
      +
      toString() - Methode in Klasse pp.battleship.message.client.ShootMessage
      +
      +
      Returns a string representation of the ShootMessage.
      +
      +
      toString() - Methode in Klasse pp.battleship.message.server.EffectMessage
      +
      +
      Returns a string representation of the EffectMessage.
      +
      +
      toString() - Methode in Klasse pp.battleship.message.server.GameDetails
      +
      +
      Returns a string representation of the GameDetails message.
      +
      +
      toString() - Methode in Klasse pp.battleship.message.server.StartBattleMessage
      +
      +
      Returns a string representation of the StartBattleMessage.
      +
      +
      toString() - Methode in Klasse pp.battleship.model.Battleship
      +
      +
      Returns a string representation of the battleship, including its length, position, + and rotation.
      +
      +
      toString() - Methode in Klasse pp.battleship.model.IntPoint
      +
      +
      Returns a string representation of the IntPoint.
      +
      +
      toString() - Methode in Klasse pp.battleship.model.ShipMap
      +
      +
      Returns a string representation of the ship map.
      +
      +
      toString() - Methode in Klasse pp.battleship.model.Shot
      +
      +
      Returns a string representation of the shot.
      +
      +
      toString() - Methode in Datensatzklasse pp.battleship.notification.ClientStateEvent
      +
      +
      Gibt eine Zeichenfolgendarstellung dieser Datensatzklasse zurück.
      +
      +
      toString() - Methode in Datensatzklasse pp.battleship.notification.InfoTextEvent
      +
      +
      Gibt eine Zeichenfolgendarstellung dieser Datensatzklasse zurück.
      +
      +
      toString() - Methode in Datensatzklasse pp.battleship.notification.ItemAddedEvent
      +
      +
      Gibt eine Zeichenfolgendarstellung dieser Datensatzklasse zurück.
      +
      +
      toString() - Methode in Datensatzklasse pp.battleship.notification.ItemRemovedEvent
      +
      +
      Gibt eine Zeichenfolgendarstellung dieser Datensatzklasse zurück.
      +
      +
      toString() - Methode in Datensatzklasse pp.battleship.notification.SoundEvent
      +
      +
      Gibt eine Zeichenfolgendarstellung dieser Datensatzklasse zurück.
      +
      +
      +

      U

      +
      +
      UP - Enum-Konstante in Enum-Klasse pp.battleship.model.Rotation
      +
      +
      Represents the ship facing upwards.
      +
      +
      update(float) - Methode in Klasse pp.battleship.game.client.ClientGameLogic
      +
      +
      Called once per frame by the update loop.
      +
      +
      update(float) - Methode in Klasse pp.battleship.game.client.ShootingAnimationState
      +
      +
      Called once per frame to update the shell's position and check if it has reached the target.
      +
      +
      updatePosition(float) - Methode in Klasse pp.battleship.model.Shell
      +
       
      +
      +

      V

      +
      +
      VALID_PREVIEW - Enum-Konstante in Enum-Klasse pp.battleship.model.Battleship.Status
      +
      +
      The ship is being previewed in a valid position for placement.
      +
      +
      valueOf(String) - Statische Methode in Enum-Klasse pp.battleship.model.Battleship.Status
      +
      +
      Gibt die Enum-Konstante dieser Klasse mit dem angegebenen Namen zurück.
      +
      +
      valueOf(String) - Statische Methode in Enum-Klasse pp.battleship.model.Rotation
      +
      +
      Gibt die Enum-Konstante dieser Klasse mit dem angegebenen Namen zurück.
      +
      +
      valueOf(String) - Statische Methode in Enum-Klasse pp.battleship.notification.Sound
      +
      +
      Gibt die Enum-Konstante dieser Klasse mit dem angegebenen Namen zurück.
      +
      +
      values() - Statische Methode in Enum-Klasse pp.battleship.model.Battleship.Status
      +
      +
      Gibt ein Array mit den Konstanten dieser Enum-Klasse in +der Reihenfolge ihrer Deklaration zurück.
      +
      +
      values() - Statische Methode in Enum-Klasse pp.battleship.model.Rotation
      +
      +
      Gibt ein Array mit den Konstanten dieser Enum-Klasse in +der Reihenfolge ihrer Deklaration zurück.
      +
      +
      values() - Statische Methode in Enum-Klasse pp.battleship.notification.Sound
      +
      +
      Gibt ein Array mit den Konstanten dieser Enum-Klasse in +der Reihenfolge ihrer Deklaration zurück.
      +
      +
      visit(Battleship) - Methode in Schnittstelle pp.battleship.model.Visitor
      +
      +
      Visits a Battleship element.
      +
      +
      visit(Battleship) - Methode in Schnittstelle pp.battleship.model.VoidVisitor
      +
      +
      Visits a Battleship element.
      +
      +
      visit(Shot) - Methode in Schnittstelle pp.battleship.model.Visitor
      +
      +
      Visits a Shot element.
      +
      +
      visit(Shot) - Methode in Schnittstelle pp.battleship.model.VoidVisitor
      +
      +
      Visits a Shot element.
      +
      +
      Visitor<T> - Schnittstelle in pp.battleship.model
      +
      +
      An interface for implementing the Visitor pattern for different types of elements in the Battleship model.
      +
      +
      VoidVisitor - Schnittstelle in pp.battleship.model
      +
      +
      An interface for implementing the Visitor pattern for different types of elements in the Battleship model + without returning any result.
      +
      +
      +

      W

      +
      +
      won(IntPoint, Battleship) - Statische Methode in Klasse pp.battleship.message.server.EffectMessage
      +
      +
      Creates an EffectMessage indicating the player has won the game.
      +
      +
      +A B C D E F G H I K L M N P R S T U V W 
      Alle Klassen und Schnittstellen|Alle Packages
      +
      +
      + + diff --git a/Dokumente/JavaDoc/model/docs/javadoc/index.html b/Dokumente/JavaDoc/model/docs/javadoc/index.html new file mode 100644 index 0000000..a64cb5d --- /dev/null +++ b/Dokumente/JavaDoc/model/docs/javadoc/index.html @@ -0,0 +1,81 @@ + + + + +Überblick (model API) + + + + + + + + + + + + + +
      + + +
      + + diff --git a/Dokumente/JavaDoc/model/docs/javadoc/legal/ADDITIONAL_LICENSE_INFO b/Dokumente/JavaDoc/model/docs/javadoc/legal/ADDITIONAL_LICENSE_INFO new file mode 100644 index 0000000..3f7e921 --- /dev/null +++ b/Dokumente/JavaDoc/model/docs/javadoc/legal/ADDITIONAL_LICENSE_INFO @@ -0,0 +1 @@ +Please see ..\java.base\ADDITIONAL_LICENSE_INFO diff --git a/Dokumente/JavaDoc/model/docs/javadoc/legal/ASSEMBLY_EXCEPTION b/Dokumente/JavaDoc/model/docs/javadoc/legal/ASSEMBLY_EXCEPTION new file mode 100644 index 0000000..e09f918 --- /dev/null +++ b/Dokumente/JavaDoc/model/docs/javadoc/legal/ASSEMBLY_EXCEPTION @@ -0,0 +1 @@ +Please see ..\java.base\ASSEMBLY_EXCEPTION diff --git a/Dokumente/JavaDoc/model/docs/javadoc/legal/LICENSE b/Dokumente/JavaDoc/model/docs/javadoc/legal/LICENSE new file mode 100644 index 0000000..940481e --- /dev/null +++ b/Dokumente/JavaDoc/model/docs/javadoc/legal/LICENSE @@ -0,0 +1 @@ +Please see ..\java.base\LICENSE diff --git a/Dokumente/JavaDoc/model/docs/javadoc/legal/jquery.md b/Dokumente/JavaDoc/model/docs/javadoc/legal/jquery.md new file mode 100644 index 0000000..d468b31 --- /dev/null +++ b/Dokumente/JavaDoc/model/docs/javadoc/legal/jquery.md @@ -0,0 +1,72 @@ +## jQuery v3.6.1 + +### jQuery License +``` +jQuery v 3.6.1 +Copyright OpenJS Foundation and other contributors, https://openjsf.org/ + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +****************************************** + +The jQuery JavaScript Library v3.6.1 also includes Sizzle.js + +Sizzle.js includes the following license: + +Copyright JS Foundation and other contributors, https://js.foundation/ + +This software consists of voluntary contributions made by many +individuals. For exact contribution history, see the revision history +available at https://github.com/jquery/sizzle + +The following license applies to all parts of this software except as +documented below: + +==== + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +==== + +All files located in the node_modules and external directories are +externally maintained libraries used by this software which have their +own licenses; we recommend you read them, as their terms may differ from +the terms above. + +********************* + +``` diff --git a/Dokumente/JavaDoc/model/docs/javadoc/legal/jqueryUI.md b/Dokumente/JavaDoc/model/docs/javadoc/legal/jqueryUI.md new file mode 100644 index 0000000..9f4c9e9 --- /dev/null +++ b/Dokumente/JavaDoc/model/docs/javadoc/legal/jqueryUI.md @@ -0,0 +1,49 @@ +## jQuery UI v1.13.1 + +### jQuery UI License +``` +Copyright jQuery Foundation and other contributors, https://jquery.org/ + +This software consists of voluntary contributions made by many +individuals. For exact contribution history, see the revision history +available at https://github.com/jquery/jquery-ui + +The following license applies to all parts of this software except as +documented below: + +==== + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +==== + +Copyright and related rights for sample code are waived via CC0. Sample +code is defined as all source code contained within the demos directory. + +CC0: http://creativecommons.org/publicdomain/zero/1.0/ + +==== + +All files located in the node_modules and external directories are +externally maintained libraries used by this software which have their +own licenses; we recommend you read them, as their terms may differ from +the terms above. + +``` diff --git a/Dokumente/JavaDoc/model/docs/javadoc/member-search-index.js b/Dokumente/JavaDoc/model/docs/javadoc/member-search-index.js new file mode 100644 index 0000000..4f2ba66 --- /dev/null +++ b/Dokumente/JavaDoc/model/docs/javadoc/member-search-index.js @@ -0,0 +1 @@ +memberSearchIndex = [{"p":"pp.battleship.message.client","c":"ClientMessage","l":"accept(ClientInterpreter, int)","u":"accept(pp.battleship.message.client.ClientInterpreter,int)"},{"p":"pp.battleship.message.client","c":"MapMessage","l":"accept(ClientInterpreter, int)","u":"accept(pp.battleship.message.client.ClientInterpreter,int)"},{"p":"pp.battleship.message.client","c":"ShellAnimationFinishedMessage","l":"accept(ClientInterpreter, int)","u":"accept(pp.battleship.message.client.ClientInterpreter,int)"},{"p":"pp.battleship.message.client","c":"ShootMessage","l":"accept(ClientInterpreter, int)","u":"accept(pp.battleship.message.client.ClientInterpreter,int)"},{"p":"pp.battleship.message.server","c":"EffectMessage","l":"accept(ServerInterpreter)","u":"accept(pp.battleship.message.server.ServerInterpreter)"},{"p":"pp.battleship.message.server","c":"GameDetails","l":"accept(ServerInterpreter)","u":"accept(pp.battleship.message.server.ServerInterpreter)"},{"p":"pp.battleship.message.server","c":"ServerMessage","l":"accept(ServerInterpreter)","u":"accept(pp.battleship.message.server.ServerInterpreter)"},{"p":"pp.battleship.message.server","c":"StartBattleMessage","l":"accept(ServerInterpreter)","u":"accept(pp.battleship.message.server.ServerInterpreter)"},{"p":"pp.battleship.model","c":"Battleship","l":"accept(Visitor)","u":"accept(pp.battleship.model.Visitor)"},{"p":"pp.battleship.model","c":"Item","l":"accept(Visitor)","u":"accept(pp.battleship.model.Visitor)"},{"p":"pp.battleship.model","c":"Shot","l":"accept(Visitor)","u":"accept(pp.battleship.model.Visitor)"},{"p":"pp.battleship.model","c":"Battleship","l":"accept(VoidVisitor)","u":"accept(pp.battleship.model.VoidVisitor)"},{"p":"pp.battleship.model","c":"Item","l":"accept(VoidVisitor)","u":"accept(pp.battleship.model.VoidVisitor)"},{"p":"pp.battleship.model","c":"Shot","l":"accept(VoidVisitor)","u":"accept(pp.battleship.model.VoidVisitor)"},{"p":"pp.battleship.model","c":"ShipMap","l":"add(Battleship)","u":"add(pp.battleship.model.Battleship)"},{"p":"pp.battleship.model","c":"ShipMap","l":"add(Shot)","u":"add(pp.battleship.model.Shot)"},{"p":"pp.battleship.game.client","c":"ClientGameLogic","l":"addListener(GameEventListener)","u":"addListener(pp.battleship.notification.GameEventListener)"},{"p":"pp.battleship.game.server","c":"ServerGameLogic","l":"addPlayer(int)"},{"p":"pp.battleship.model","c":"Battleship","l":"Battleship(int, int, int, Rotation)","u":"%3Cinit%3E(int,int,int,pp.battleship.model.Rotation)"},{"p":"pp.battleship.game.singlemode","c":"BattleshipClientConfig","l":"BattleshipClientConfig()","u":"%3Cinit%3E()"},{"p":"pp.battleship","c":"BattleshipConfig","l":"BattleshipConfig()","u":"%3Cinit%3E()"},{"p":"pp.battleship","c":"Resources","l":"BUNDLE"},{"p":"pp.battleship.model","c":"ShipMap","l":"clear()"},{"p":"pp.battleship.game.client","c":"ClientGameLogic","l":"clickHarbor(IntPoint)","u":"clickHarbor(pp.battleship.model.IntPoint)"},{"p":"pp.battleship.game.client","c":"ClientGameLogic","l":"clickOpponentMap(IntPoint)","u":"clickOpponentMap(pp.battleship.model.IntPoint)"},{"p":"pp.battleship.game.client","c":"ClientGameLogic","l":"clickOwnMap(IntPoint)","u":"clickOwnMap(pp.battleship.model.IntPoint)"},{"p":"pp.battleship.game.client","c":"ClientGameLogic","l":"ClientGameLogic(ClientSender)","u":"%3Cinit%3E(pp.battleship.game.client.ClientSender)"},{"p":"pp.battleship.message.client","c":"ClientMessage","l":"ClientMessage()","u":"%3Cinit%3E()"},{"p":"pp.battleship.notification","c":"ClientStateEvent","l":"ClientStateEvent()","u":"%3Cinit%3E()"},{"p":"pp.battleship.model","c":"Battleship","l":"collidesWith(Battleship)","u":"collidesWith(pp.battleship.model.Battleship)"},{"p":"pp.battleship.game.client","c":"ServerConnection","l":"connect()"},{"p":"pp.battleship.game.singlemode","c":"ServerConnectionMockup","l":"connect()"},{"p":"pp.battleship.model","c":"Battleship","l":"contains(int, int)","u":"contains(int,int)"},{"p":"pp.battleship.model","c":"Battleship","l":"contains(IntPosition)","u":"contains(pp.battleship.model.IntPosition)"},{"p":"pp.battleship.model","c":"ShellControl","l":"controlRender(RenderManager, ViewPort)","u":"controlRender(com.jme3.renderer.RenderManager,com.jme3.renderer.ViewPort)"},{"p":"pp.battleship.model","c":"ShellControl","l":"controlUpdate(float)"},{"p":"pp.battleship.notification","c":"Sound","l":"DESTROYED_SHIP"},{"p":"pp.battleship.game.client","c":"ServerConnection","l":"disconnect()"},{"p":"pp.battleship.game.singlemode","c":"ServerConnectionMockup","l":"disconnect()"},{"p":"pp.battleship.model","c":"Rotation","l":"DOWN"},{"p":"pp.battleship.model","c":"Rotation","l":"dx()"},{"p":"pp.battleship.model","c":"Rotation","l":"dy()"},{"p":"pp.battleship.game.client","c":"BattleshipClient","l":"enqueue(Runnable)","u":"enqueue(java.lang.Runnable)"},{"p":"pp.battleship.model","c":"IntPoint","l":"equals(Object)","u":"equals(java.lang.Object)"},{"p":"pp.battleship.model","c":"Shot","l":"equals(Object)","u":"equals(java.lang.Object)"},{"p":"pp.battleship.notification","c":"ClientStateEvent","l":"equals(Object)","u":"equals(java.lang.Object)"},{"p":"pp.battleship.notification","c":"InfoTextEvent","l":"equals(Object)","u":"equals(java.lang.Object)"},{"p":"pp.battleship.notification","c":"ItemAddedEvent","l":"equals(Object)","u":"equals(java.lang.Object)"},{"p":"pp.battleship.notification","c":"ItemRemovedEvent","l":"equals(Object)","u":"equals(java.lang.Object)"},{"p":"pp.battleship.notification","c":"SoundEvent","l":"equals(Object)","u":"equals(java.lang.Object)"},{"p":"pp.battleship.notification","c":"Sound","l":"EXPLOSION"},{"p":"pp.battleship.model","c":"ShipMap","l":"findShipAt(int, int)","u":"findShipAt(int,int)"},{"p":"pp.battleship.model","c":"ShipMap","l":"findShipAt(IntPosition)","u":"findShipAt(pp.battleship.model.IntPosition)"},{"p":"pp.battleship.model.dto","c":"ShipMapDTO","l":"fits(GameDetails)","u":"fits(pp.battleship.message.server.GameDetails)"},{"p":"pp.battleship.message.server","c":"GameDetails","l":"GameDetails(BattleshipConfig)","u":"%3Cinit%3E(pp.battleship.BattleshipConfig)"},{"p":"pp.battleship.game.client","c":"BattleshipClient","l":"getConfig()"},{"p":"pp.battleship.model","c":"Shell","l":"getCurrentPosition()"},{"p":"pp.battleship.model","c":"Battleship","l":"getDamaged()"},{"p":"pp.battleship.game.singlemode","c":"BattleshipClientConfig","l":"getDelay()"},{"p":"pp.battleship.message.server","c":"EffectMessage","l":"getDestroyedShip()"},{"p":"pp.battleship.game.client","c":"BattleshipClient","l":"getGameLogic()"},{"p":"pp.battleship.game.client","c":"ClientGameLogic","l":"getHarbor()"},{"p":"pp.battleship.message.server","c":"GameDetails","l":"getHeight()"},{"p":"pp.battleship.model","c":"ShipMap","l":"getHeight()"},{"p":"pp.battleship.game.server","c":"Player","l":"getId()"},{"p":"pp.battleship.message.server","c":"EffectMessage","l":"getInfoTextKey()"},{"p":"pp.battleship.message.server","c":"GameDetails","l":"getInfoTextKey()"},{"p":"pp.battleship.message.server","c":"ServerMessage","l":"getInfoTextKey()"},{"p":"pp.battleship.message.server","c":"StartBattleMessage","l":"getInfoTextKey()"},{"p":"pp.battleship.model","c":"ShipMap","l":"getItems()"},{"p":"pp.battleship.model","c":"Battleship","l":"getLength()"},{"p":"pp.battleship.game.server","c":"Player","l":"getMap()"},{"p":"pp.battleship","c":"BattleshipConfig","l":"getMapHeight()"},{"p":"pp.battleship","c":"BattleshipConfig","l":"getMapWidth()"},{"p":"pp.battleship.model","c":"Battleship","l":"getMaxX()"},{"p":"pp.battleship.model","c":"Battleship","l":"getMaxY()"},{"p":"pp.battleship.model","c":"Battleship","l":"getMinX()"},{"p":"pp.battleship.model","c":"Battleship","l":"getMinY()"},{"p":"pp.battleship.game.client","c":"ClientGameLogic","l":"getOpponentMap()"},{"p":"pp.battleship.game.singlemode","c":"BattleshipClientConfig","l":"getOpponentMap()"},{"p":"pp.battleship.game.client","c":"ClientGameLogic","l":"getOwnMap()"},{"p":"pp.battleship.game.singlemode","c":"BattleshipClientConfig","l":"getOwnMap()"},{"p":"pp.battleship.game.server","c":"ServerGameLogic","l":"getPlayerById(int)"},{"p":"pp.battleship","c":"BattleshipConfig","l":"getPort()"},{"p":"pp.battleship.message.client","c":"ShootMessage","l":"getPosition()"},{"p":"pp.battleship.message.server","c":"EffectMessage","l":"getRemainingOpponentShips()"},{"p":"pp.battleship.model","c":"ShipMap","l":"getRemainingShips()"},{"p":"pp.battleship.game.singlemode","c":"BattleshipClientConfig","l":"getRobotTargets()"},{"p":"pp.battleship.model","c":"Battleship","l":"getRot()"},{"p":"pp.battleship.model","c":"ShellControl","l":"getShell()"},{"p":"pp.battleship","c":"BattleshipConfig","l":"getShipNums()"},{"p":"pp.battleship.message.server","c":"GameDetails","l":"getShipNums()"},{"p":"pp.battleship.message.client","c":"MapMessage","l":"getShips()"},{"p":"pp.battleship.model.dto","c":"ShipMapDTO","l":"getShips()"},{"p":"pp.battleship.model","c":"ShipMap","l":"getShips()"},{"p":"pp.battleship.message.server","c":"EffectMessage","l":"getShot()"},{"p":"pp.battleship.model","c":"ShipMap","l":"getShots()"},{"p":"pp.battleship.model","c":"Battleship","l":"getStatus()"},{"p":"pp.battleship.message.server","c":"GameDetails","l":"getWidth()"},{"p":"pp.battleship.model","c":"ShipMap","l":"getWidth()"},{"p":"pp.battleship.model","c":"Battleship","l":"getX()"},{"p":"pp.battleship.model","c":"IntPoint","l":"getX()"},{"p":"pp.battleship.model","c":"IntPosition","l":"getX()"},{"p":"pp.battleship.model","c":"Shot","l":"getX()"},{"p":"pp.battleship.model","c":"Battleship","l":"getY()"},{"p":"pp.battleship.model","c":"IntPoint","l":"getY()"},{"p":"pp.battleship.model","c":"IntPosition","l":"getY()"},{"p":"pp.battleship.model","c":"Shot","l":"getY()"},{"p":"pp.battleship.model","c":"IntPoint","l":"hashCode()"},{"p":"pp.battleship.model","c":"Shot","l":"hashCode()"},{"p":"pp.battleship.notification","c":"ClientStateEvent","l":"hashCode()"},{"p":"pp.battleship.notification","c":"InfoTextEvent","l":"hashCode()"},{"p":"pp.battleship.notification","c":"ItemAddedEvent","l":"hashCode()"},{"p":"pp.battleship.notification","c":"ItemRemovedEvent","l":"hashCode()"},{"p":"pp.battleship.notification","c":"SoundEvent","l":"hashCode()"},{"p":"pp.battleship.message.server","c":"EffectMessage","l":"hit(boolean, IntPoint)","u":"hit(boolean,pp.battleship.model.IntPoint)"},{"p":"pp.battleship.model","c":"Battleship","l":"hit(int, int)","u":"hit(int,int)"},{"p":"pp.battleship.model","c":"Battleship","l":"hit(IntPosition)","u":"hit(pp.battleship.model.IntPosition)"},{"p":"pp.battleship.notification","c":"InfoTextEvent","l":"InfoTextEvent(String)","u":"%3Cinit%3E(java.lang.String)"},{"p":"pp.battleship.model","c":"IntPoint","l":"IntPoint(int, int)","u":"%3Cinit%3E(int,int)"},{"p":"pp.battleship.model","c":"Battleship.Status","l":"INVALID_PREVIEW"},{"p":"pp.battleship.model","c":"Shell","l":"isAtTarget()"},{"p":"pp.battleship.game.client","c":"ServerConnection","l":"isConnected()"},{"p":"pp.battleship.game.singlemode","c":"ServerConnectionMockup","l":"isConnected()"},{"p":"pp.battleship.model","c":"Battleship","l":"isDestroyed()"},{"p":"pp.battleship.message.server","c":"EffectMessage","l":"isGameLost()"},{"p":"pp.battleship.message.server","c":"EffectMessage","l":"isGameOver()"},{"p":"pp.battleship.message.server","c":"EffectMessage","l":"isGameWon()"},{"p":"pp.battleship.model","c":"Shot","l":"isHit()"},{"p":"pp.battleship.game.client","c":"ClientGameLogic","l":"isMapComplete()"},{"p":"pp.battleship.message.server","c":"EffectMessage","l":"isMyTurn()"},{"p":"pp.battleship.message.server","c":"StartBattleMessage","l":"isMyTurn()"},{"p":"pp.battleship.message.server","c":"EffectMessage","l":"isOwnShot()"},{"p":"pp.battleship.game.singlemode","c":"BattleshipClientConfig","l":"isSingleMode()"},{"p":"pp.battleship.model","c":"ShipMap","l":"isValid(Battleship)","u":"isValid(pp.battleship.model.Battleship)"},{"p":"pp.battleship.model","c":"ShipMap","l":"isValid(int, int)","u":"isValid(int,int)"},{"p":"pp.battleship.model","c":"ShipMap","l":"isValid(IntPosition)","u":"isValid(pp.battleship.model.IntPosition)"},{"p":"pp.battleship.notification","c":"ItemAddedEvent","l":"item()"},{"p":"pp.battleship.notification","c":"ItemRemovedEvent","l":"item()"},{"p":"pp.battleship.notification","c":"ItemAddedEvent","l":"ItemAddedEvent(Item, ShipMap)","u":"%3Cinit%3E(pp.battleship.model.Item,pp.battleship.model.ShipMap)"},{"p":"pp.battleship.notification","c":"ItemRemovedEvent","l":"ItemRemovedEvent(Item, ShipMap)","u":"%3Cinit%3E(pp.battleship.model.Item,pp.battleship.model.ShipMap)"},{"p":"pp.battleship.notification","c":"InfoTextEvent","l":"key()"},{"p":"pp.battleship.model","c":"Rotation","l":"LEFT"},{"p":"pp.battleship.model.dto","c":"ShipMapDTO","l":"loadFrom(File)","u":"loadFrom(java.io.File)"},{"p":"pp.battleship.game.client","c":"ClientGameLogic","l":"loadMap(File)","u":"loadMap(java.io.File)"},{"p":"pp.battleship","c":"Resources","l":"lookup(String)","u":"lookup(java.lang.String)"},{"p":"pp.battleship.message.server","c":"EffectMessage","l":"lost(IntPoint, Battleship, List)","u":"lost(pp.battleship.model.IntPoint,pp.battleship.model.Battleship,java.util.List)"},{"p":"pp.battleship.notification","c":"ItemAddedEvent","l":"map()"},{"p":"pp.battleship.notification","c":"ItemRemovedEvent","l":"map()"},{"p":"pp.battleship.game.client","c":"ClientGameLogic","l":"mapFinished()"},{"p":"pp.battleship.message.client","c":"MapMessage","l":"MapMessage(List)","u":"%3Cinit%3E(java.util.List)"},{"p":"pp.battleship.game.client","c":"ClientGameLogic","l":"mayLoadMap()"},{"p":"pp.battleship.game.client","c":"ClientGameLogic","l":"maySaveMap()"},{"p":"pp.battleship.message.server","c":"EffectMessage","l":"miss(boolean, IntPoint)","u":"miss(boolean,pp.battleship.model.IntPoint)"},{"p":"pp.battleship.game.client","c":"ClientGameLogic","l":"movePreview(IntPoint)","u":"movePreview(pp.battleship.model.IntPoint)"},{"p":"pp.battleship.model","c":"Battleship","l":"moveTo(int, int)","u":"moveTo(int,int)"},{"p":"pp.battleship.model","c":"Battleship","l":"moveTo(IntPosition)","u":"moveTo(pp.battleship.model.IntPosition)"},{"p":"pp.battleship.game.client","c":"ClientGameLogic","l":"movingShip()"},{"p":"pp.battleship.model","c":"Battleship.Status","l":"NORMAL"},{"p":"pp.battleship.notification","c":"ClientStateEvent","l":"notifyListener(GameEventListener)","u":"notifyListener(pp.battleship.notification.GameEventListener)"},{"p":"pp.battleship.notification","c":"GameEvent","l":"notifyListener(GameEventListener)","u":"notifyListener(pp.battleship.notification.GameEventListener)"},{"p":"pp.battleship.notification","c":"InfoTextEvent","l":"notifyListener(GameEventListener)","u":"notifyListener(pp.battleship.notification.GameEventListener)"},{"p":"pp.battleship.notification","c":"ItemAddedEvent","l":"notifyListener(GameEventListener)","u":"notifyListener(pp.battleship.notification.GameEventListener)"},{"p":"pp.battleship.notification","c":"ItemRemovedEvent","l":"notifyListener(GameEventListener)","u":"notifyListener(pp.battleship.notification.GameEventListener)"},{"p":"pp.battleship.notification","c":"SoundEvent","l":"notifyListener(GameEventListener)","u":"notifyListener(pp.battleship.notification.GameEventListener)"},{"p":"pp.battleship.game.client","c":"ClientGameLogic","l":"notifyListeners(GameEvent)","u":"notifyListeners(pp.battleship.notification.GameEvent)"},{"p":"pp.battleship.notification","c":"GameEventBroker","l":"notifyListeners(GameEvent)","u":"notifyListeners(pp.battleship.notification.GameEvent)"},{"p":"pp.battleship.game.client","c":"ClientGameLogic","l":"playSound(Sound)","u":"playSound(pp.battleship.notification.Sound)"},{"p":"pp.battleship.game.client","c":"ClientGameLogic","l":"received(EffectMessage)","u":"received(pp.battleship.message.server.EffectMessage)"},{"p":"pp.battleship.message.server","c":"ServerInterpreter","l":"received(EffectMessage)","u":"received(pp.battleship.message.server.EffectMessage)"},{"p":"pp.battleship.game.client","c":"ClientGameLogic","l":"received(GameDetails)","u":"received(pp.battleship.message.server.GameDetails)"},{"p":"pp.battleship.message.server","c":"ServerInterpreter","l":"received(GameDetails)","u":"received(pp.battleship.message.server.GameDetails)"},{"p":"pp.battleship.game.server","c":"ServerGameLogic","l":"received(MapMessage, int)","u":"received(pp.battleship.message.client.MapMessage,int)"},{"p":"pp.battleship.message.client","c":"ClientInterpreter","l":"received(MapMessage, int)","u":"received(pp.battleship.message.client.MapMessage,int)"},{"p":"pp.battleship.game.server","c":"ServerGameLogic","l":"received(ShellAnimationFinishedMessage, int)","u":"received(pp.battleship.message.client.ShellAnimationFinishedMessage,int)"},{"p":"pp.battleship.message.client","c":"ClientInterpreter","l":"received(ShellAnimationFinishedMessage, int)","u":"received(pp.battleship.message.client.ShellAnimationFinishedMessage,int)"},{"p":"pp.battleship.game.server","c":"ServerGameLogic","l":"received(ShootMessage, int)","u":"received(pp.battleship.message.client.ShootMessage,int)"},{"p":"pp.battleship.message.client","c":"ClientInterpreter","l":"received(ShootMessage, int)","u":"received(pp.battleship.message.client.ShootMessage,int)"},{"p":"pp.battleship.game.client","c":"ClientGameLogic","l":"received(StartBattleMessage)","u":"received(pp.battleship.message.server.StartBattleMessage)"},{"p":"pp.battleship.message.server","c":"ServerInterpreter","l":"received(StartBattleMessage)","u":"received(pp.battleship.message.server.StartBattleMessage)"},{"p":"pp.battleship.notification","c":"GameEventListener","l":"receivedEvent(ClientStateEvent)","u":"receivedEvent(pp.battleship.notification.ClientStateEvent)"},{"p":"pp.battleship.notification","c":"GameEventListener","l":"receivedEvent(InfoTextEvent)","u":"receivedEvent(pp.battleship.notification.InfoTextEvent)"},{"p":"pp.battleship.notification","c":"GameEventListener","l":"receivedEvent(ItemAddedEvent)","u":"receivedEvent(pp.battleship.notification.ItemAddedEvent)"},{"p":"pp.battleship.notification","c":"GameEventListener","l":"receivedEvent(ItemRemovedEvent)","u":"receivedEvent(pp.battleship.notification.ItemRemovedEvent)"},{"p":"pp.battleship.notification","c":"GameEventListener","l":"receivedEvent(SoundEvent)","u":"receivedEvent(pp.battleship.notification.SoundEvent)"},{"p":"pp.battleship.model","c":"ShipMap","l":"remove(Item)","u":"remove(pp.battleship.model.Item)"},{"p":"pp.battleship.game.client","c":"ClientGameLogic","l":"removeListener(GameEventListener)","u":"removeListener(pp.battleship.notification.GameEventListener)"},{"p":"pp.battleship.model","c":"Rotation","l":"RIGHT"},{"p":"pp.battleship.model","c":"Rotation","l":"rotate()"},{"p":"pp.battleship.model","c":"Battleship","l":"rotated()"},{"p":"pp.battleship.game.client","c":"ClientGameLogic","l":"rotateShip()"},{"p":"pp.battleship.game.client","c":"ClientGameLogic","l":"saveMap(File)","u":"saveMap(java.io.File)"},{"p":"pp.battleship.model.dto","c":"ShipMapDTO","l":"saveTo(File)","u":"saveTo(java.io.File)"},{"p":"pp.battleship.game.client","c":"ClientSender","l":"send(ClientMessage)","u":"send(pp.battleship.message.client.ClientMessage)"},{"p":"pp.battleship.game.singlemode","c":"ServerConnectionMockup","l":"send(ClientMessage)","u":"send(pp.battleship.message.client.ClientMessage)"},{"p":"pp.battleship.game.server","c":"ServerSender","l":"send(int, ServerMessage)","u":"send(int,pp.battleship.message.server.ServerMessage)"},{"p":"pp.battleship.game.singlemode","c":"ServerConnectionMockup","l":"send(int, ServerMessage)","u":"send(int,pp.battleship.message.server.ServerMessage)"},{"p":"pp.battleship.game.singlemode","c":"ServerConnectionMockup","l":"ServerConnectionMockup(BattleshipClient)","u":"%3Cinit%3E(pp.battleship.game.client.BattleshipClient)"},{"p":"pp.battleship.game.server","c":"ServerGameLogic","l":"ServerGameLogic(ServerSender, BattleshipConfig)","u":"%3Cinit%3E(pp.battleship.game.server.ServerSender,pp.battleship.BattleshipConfig)"},{"p":"pp.battleship.message.server","c":"ServerMessage","l":"ServerMessage()","u":"%3Cinit%3E()"},{"p":"pp.battleship.model","c":"Battleship","l":"setRotation(Rotation)","u":"setRotation(pp.battleship.model.Rotation)"},{"p":"pp.battleship.model","c":"ShellControl","l":"setShell(Shell)","u":"setShell(pp.battleship.model.Shell)"},{"p":"pp.battleship.model","c":"Battleship","l":"setStatus(Battleship.Status)","u":"setStatus(pp.battleship.model.Battleship.Status)"},{"p":"pp.battleship.model","c":"Shell","l":"Shell(Vector3f, Vector3f, float)","u":"%3Cinit%3E(com.jme3.math.Vector3f,com.jme3.math.Vector3f,float)"},{"p":"pp.battleship.message.client","c":"ShellAnimationFinishedMessage","l":"ShellAnimationFinishedMessage()","u":"%3Cinit%3E()"},{"p":"pp.battleship.model","c":"ShellControl","l":"ShellControl(Shell)","u":"%3Cinit%3E(pp.battleship.model.Shell)"},{"p":"pp.battleship.message.server","c":"EffectMessage","l":"shipDestroyed(boolean, IntPoint, Battleship)","u":"shipDestroyed(boolean,pp.battleship.model.IntPoint,pp.battleship.model.Battleship)"},{"p":"pp.battleship.model","c":"ShipMap","l":"ShipMap(int, int, GameEventBroker)","u":"%3Cinit%3E(int,int,pp.battleship.notification.GameEventBroker)"},{"p":"pp.battleship.model.dto","c":"ShipMapDTO","l":"ShipMapDTO(ShipMap)","u":"%3Cinit%3E(pp.battleship.model.ShipMap)"},{"p":"pp.battleship.message.client","c":"ShootMessage","l":"ShootMessage(IntPoint)","u":"%3Cinit%3E(pp.battleship.model.IntPoint)"},{"p":"pp.battleship.model","c":"Shot","l":"Shot(int, int, boolean)","u":"%3Cinit%3E(int,int,boolean)"},{"p":"pp.battleship.model","c":"Shot","l":"Shot(IntPosition, boolean)","u":"%3Cinit%3E(pp.battleship.model.IntPosition,boolean)"},{"p":"pp.battleship.game.client","c":"ClientGameLogic","l":"showBattle()"},{"p":"pp.battleship.game.client","c":"ShootingAnimationState","l":"showBattle()"},{"p":"pp.battleship.game.client","c":"ClientGameLogic","l":"showEditor()"},{"p":"pp.battleship.notification","c":"SoundEvent","l":"sound()"},{"p":"pp.battleship.notification","c":"SoundEvent","l":"SoundEvent(Sound)","u":"%3Cinit%3E(pp.battleship.notification.Sound)"},{"p":"pp.battleship.notification","c":"Sound","l":"SPLASH"},{"p":"pp.battleship.message.server","c":"StartBattleMessage","l":"StartBattleMessage(boolean)","u":"%3Cinit%3E(boolean)"},{"p":"pp.battleship.game.server","c":"Player","l":"toString()"},{"p":"pp.battleship.message.client","c":"MapMessage","l":"toString()"},{"p":"pp.battleship.message.client","c":"ShootMessage","l":"toString()"},{"p":"pp.battleship.message.server","c":"EffectMessage","l":"toString()"},{"p":"pp.battleship.message.server","c":"GameDetails","l":"toString()"},{"p":"pp.battleship.message.server","c":"StartBattleMessage","l":"toString()"},{"p":"pp.battleship.model","c":"Battleship","l":"toString()"},{"p":"pp.battleship.model","c":"IntPoint","l":"toString()"},{"p":"pp.battleship.model","c":"ShipMap","l":"toString()"},{"p":"pp.battleship.model","c":"Shot","l":"toString()"},{"p":"pp.battleship.notification","c":"ClientStateEvent","l":"toString()"},{"p":"pp.battleship.notification","c":"InfoTextEvent","l":"toString()"},{"p":"pp.battleship.notification","c":"ItemAddedEvent","l":"toString()"},{"p":"pp.battleship.notification","c":"ItemRemovedEvent","l":"toString()"},{"p":"pp.battleship.notification","c":"SoundEvent","l":"toString()"},{"p":"pp.battleship.model","c":"Rotation","l":"UP"},{"p":"pp.battleship.game.client","c":"ClientGameLogic","l":"update(float)"},{"p":"pp.battleship.game.client","c":"ShootingAnimationState","l":"update(float)"},{"p":"pp.battleship.model","c":"Shell","l":"updatePosition(float)"},{"p":"pp.battleship.model","c":"Battleship.Status","l":"VALID_PREVIEW"},{"p":"pp.battleship.model","c":"Battleship.Status","l":"valueOf(String)","u":"valueOf(java.lang.String)"},{"p":"pp.battleship.model","c":"Rotation","l":"valueOf(String)","u":"valueOf(java.lang.String)"},{"p":"pp.battleship.notification","c":"Sound","l":"valueOf(String)","u":"valueOf(java.lang.String)"},{"p":"pp.battleship.model","c":"Battleship.Status","l":"values()"},{"p":"pp.battleship.model","c":"Rotation","l":"values()"},{"p":"pp.battleship.notification","c":"Sound","l":"values()"},{"p":"pp.battleship.model","c":"Visitor","l":"visit(Battleship)","u":"visit(pp.battleship.model.Battleship)"},{"p":"pp.battleship.model","c":"VoidVisitor","l":"visit(Battleship)","u":"visit(pp.battleship.model.Battleship)"},{"p":"pp.battleship.model","c":"Visitor","l":"visit(Shot)","u":"visit(pp.battleship.model.Shot)"},{"p":"pp.battleship.model","c":"VoidVisitor","l":"visit(Shot)","u":"visit(pp.battleship.model.Shot)"},{"p":"pp.battleship.message.server","c":"EffectMessage","l":"won(IntPoint, Battleship)","u":"won(pp.battleship.model.IntPoint,pp.battleship.model.Battleship)"}];updateSearchResults(); \ No newline at end of file diff --git a/Dokumente/JavaDoc/model/docs/javadoc/module-search-index.js b/Dokumente/JavaDoc/model/docs/javadoc/module-search-index.js new file mode 100644 index 0000000..0d59754 --- /dev/null +++ b/Dokumente/JavaDoc/model/docs/javadoc/module-search-index.js @@ -0,0 +1 @@ +moduleSearchIndex = [];updateSearchResults(); \ No newline at end of file diff --git a/Dokumente/JavaDoc/model/docs/javadoc/overview-summary.html b/Dokumente/JavaDoc/model/docs/javadoc/overview-summary.html new file mode 100644 index 0000000..4b458ef --- /dev/null +++ b/Dokumente/JavaDoc/model/docs/javadoc/overview-summary.html @@ -0,0 +1,25 @@ + + + + +model API + + + + + + + + + + +
      + +

      index.html

      +
      + + diff --git a/Dokumente/JavaDoc/model/docs/javadoc/overview-tree.html b/Dokumente/JavaDoc/model/docs/javadoc/overview-tree.html new file mode 100644 index 0000000..beb05ae --- /dev/null +++ b/Dokumente/JavaDoc/model/docs/javadoc/overview-tree.html @@ -0,0 +1,176 @@ + + + + +Klassenhierarchie (model API) + + + + + + + + + + + + + +
      + +
      +
      +
      +

      Hierarchie für alle Packages

      +
      +Packagehierarchien: + +
      +

      Klassenhierarchie

      + +
      +
      +

      Schnittstellenhierarchie

      + +
      +
      +

      Enum-Klassenhierarchie

      + +
      +
      +

      Datensatz-Klassenhierarchie

      + +
      +
      +
      +
      + + diff --git a/Dokumente/JavaDoc/model/docs/javadoc/package-search-index.js b/Dokumente/JavaDoc/model/docs/javadoc/package-search-index.js new file mode 100644 index 0000000..b39564d --- /dev/null +++ b/Dokumente/JavaDoc/model/docs/javadoc/package-search-index.js @@ -0,0 +1 @@ +packageSearchIndex = [{"l":"Alle Packages","u":"allpackages-index.html"},{"l":"pp.battleship"},{"l":"pp.battleship.game.client"},{"l":"pp.battleship.game.server"},{"l":"pp.battleship.game.singlemode"},{"l":"pp.battleship.message.client"},{"l":"pp.battleship.message.server"},{"l":"pp.battleship.model"},{"l":"pp.battleship.model.dto"},{"l":"pp.battleship.notification"}];updateSearchResults(); \ No newline at end of file diff --git a/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/BattleshipConfig.html b/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/BattleshipConfig.html new file mode 100644 index 0000000..913303f --- /dev/null +++ b/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/BattleshipConfig.html @@ -0,0 +1,257 @@ + + + + +BattleshipConfig (model API) + + + + + + + + + + + + + +
      + +
      +
      + +
      +
      Package pp.battleship
      +

      Klasse BattleshipConfig

      +
      +
      java.lang.Object +
      pp.util.config.Config +
      pp.battleship.BattleshipConfig
      +
      +
      +
      +
      +
      Bekannte direkte Unterklassen:
      +
      BattleshipClientConfig
      +
      +
      +
      public class BattleshipConfig +extends pp.util.config.Config
      +
      Provides access to the configuration settings for the Battleship game. +

      + This class allows for loading configuration settings from a properties file, + including the server port, map dimensions, and the number of ships of various lengths. +

      +

      + Note: Attributes of this class are not marked as final to allow + for proper initialization when reading from a properties file. +

      +
      +
      +
        + +
      • +
        +

        Verschachtelte Klassen - Übersicht

        +
        +

        Von Klasse geerbte verschachtelte Klassen/Schnittstellen pp.util.config.Config

        +pp.util.config.Config.Property, pp.util.config.Config.Separator
        +
        +
      • + +
      • +
        +

        Konstruktorübersicht

        +
        Konstruktoren
        +
        +
        Konstruktor
        +
        Beschreibung
        + +
        +
        Creates an instance of BattleshipConfig with default settings.
        +
        +
        +
        +
      • + +
      • +
        +

        Methodenübersicht

        +
        +
        +
        +
        +
        Modifizierer und Typ
        +
        Methode
        +
        Beschreibung
        +
        int
        + +
        +
        Returns the height of the game map.
        +
        +
        int
        + +
        +
        Returns the width of the game map.
        +
        +
        int
        + +
        +
        Returns the port number configured for the Battleship server.
        +
        + + +
        +
        Returns a map representing the number of ships for each length.
        +
        +
        +
        +
        +
        +

        Von Klasse geerbte Methoden pp.util.config.Config

        +convertToType, readFrom, readFrom, readFromIfExists, toString
        +
        +

        Von Klasse geerbte Methoden java.lang.Object

        +clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
        +
        +
      • +
      +
      +
      +
        + +
      • +
        +

        Konstruktordetails

        +
          +
        • +
          +

          BattleshipConfig

          +
          public BattleshipConfig()
          +
          Creates an instance of BattleshipConfig with default settings.
          +
          +
        • +
        +
        +
      • + +
      • +
        +

        Methodendetails

        +
          +
        • +
          +

          getPort

          +
          public int getPort()
          +
          Returns the port number configured for the Battleship server.
          +
          +
          Gibt zurück:
          +
          the port number
          +
          +
          +
        • +
        • +
          +

          getMapWidth

          +
          public int getMapWidth()
          +
          Returns the width of the game map. The width is guaranteed to be at least 2 units.
          +
          +
          Gibt zurück:
          +
          the width of the game map
          +
          +
          +
        • +
        • +
          +

          getMapHeight

          +
          public int getMapHeight()
          +
          Returns the height of the game map. The height is guaranteed to be at least 2 units.
          +
          +
          Gibt zurück:
          +
          the height of the game map
          +
          +
          +
        • +
        • +
          +

          getShipNums

          +
          public Map<Integer,Integer> getShipNums()
          +
          Returns a map representing the number of ships for each length. + The keys are ship lengths, and the values are the corresponding number of ships.
          +
          +
          Gibt zurück:
          +
          a map of ship lengths to the number of ships
          +
          +
          +
        • +
        +
        +
      • +
      +
      + +
      +
      +
      + + diff --git a/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/Resources.html b/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/Resources.html new file mode 100644 index 0000000..7fcfb56 --- /dev/null +++ b/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/Resources.html @@ -0,0 +1,198 @@ + + + + +Resources (model API) + + + + + + + + + + + + + +
      + +
      +
      + +
      +
      Package pp.battleship
      +

      Klasse Resources

      +
      +
      java.lang.Object +
      pp.battleship.Resources
      +
      +
      +
      +
      public class Resources +extends Object
      +
      Provides access to the resource bundle of the game.
      +
      +
      Siehe auch:
      +
      + +
      +
      +
      +
      + +
      +
      +
        + +
      • +
        +

        Felddetails

        +
          +
        • +
          +

          BUNDLE

          +
          public static final ResourceBundle BUNDLE
          +
          The resource bundle for the Battleship game.
          +
          +
        • +
        +
        +
      • + +
      • +
        +

        Methodendetails

        +
          +
        • +
          +

          lookup

          +
          public static String lookup(String key)
          +
          Gets a string for the given key from the resource bundle in BUNDLE.
          +
          +
          Parameter:
          +
          key - the key for the desired string
          +
          Gibt zurück:
          +
          the string for the given key
          +
          Löst aus:
          +
          NullPointerException - if key is null
          +
          MissingResourceException - if no object for the given key can be found
          +
          ClassCastException - if the object found for the given key is not a string
          +
          +
          +
        • +
        +
        +
      • +
      +
      + +
      +
      +
      + + diff --git a/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/game/client/BattleshipClient.html b/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/game/client/BattleshipClient.html new file mode 100644 index 0000000..2a4b9a4 --- /dev/null +++ b/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/game/client/BattleshipClient.html @@ -0,0 +1,178 @@ + + + + +BattleshipClient (model API) + + + + + + + + + + + + + +
      + +
      +
      + +
      + +

      Schnittstelle BattleshipClient

      +
      +
      +
      +
      public interface BattleshipClient
      +
      Interface representing a Battleship client. + Provides methods to access game logic, configuration, and to enqueue tasks.
      +
      +
      +
        + +
      • +
        +

        Methodenübersicht

        +
        +
        +
        +
        +
        Modifizierer und Typ
        +
        Methode
        +
        Beschreibung
        +
        void
        +
        enqueue(Runnable runnable)
        +
        +
        Enqueues a task to be executed by the client.
        +
        + + +
        +
        Returns the configuration associated with this client.
        +
        + + +
        +
        Returns the game logic associated with this client.
        +
        +
        +
        +
        +
        +
      • +
      +
      +
      +
        + +
      • +
        +

        Methodendetails

        +
          +
        • +
          +

          getGameLogic

          +
          ClientGameLogic getGameLogic()
          +
          Returns the game logic associated with this client.
          +
          +
          Gibt zurück:
          +
          the ClientGameLogic instance
          +
          +
          +
        • +
        • +
          +

          getConfig

          + +
          Returns the configuration associated with this client.
          +
          +
          Gibt zurück:
          +
          the BattleshipConfig instance
          +
          +
          +
        • +
        • +
          +

          enqueue

          +
          void enqueue(Runnable runnable)
          +
          Enqueues a task to be executed by the client.
          +
          +
          Parameter:
          +
          runnable - the task to be executed
          +
          +
          +
        • +
        +
        +
      • +
      +
      + +
      +
      +
      + + diff --git a/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/game/client/ClientGameLogic.html b/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/game/client/ClientGameLogic.html new file mode 100644 index 0000000..d0a6d6d --- /dev/null +++ b/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/game/client/ClientGameLogic.html @@ -0,0 +1,582 @@ + + + + +ClientGameLogic (model API) + + + + + + + + + + + + + +
      + +
      +
      + +
      + +

      Klasse ClientGameLogic

      +
      +
      java.lang.Object +
      pp.battleship.game.client.ClientGameLogic
      +
      +
      +
      +
      Alle implementierten Schnittstellen:
      +
      ServerInterpreter, GameEventBroker
      +
      +
      +
      public class ClientGameLogic +extends Object +implements ServerInterpreter, GameEventBroker
      +
      Controls the client-side game logic for Battleship. + Manages the player's ship placement, interactions with the map, and response to server messages.
      +
      +
      + +
      +
      +
        + +
      • +
        +

        Konstruktordetails

        +
          +
        • +
          +

          ClientGameLogic

          +
          public ClientGameLogic(ClientSender clientSender)
          +
          Constructs a ClientGameLogic with the specified sender object.
          +
          +
          Parameter:
          +
          clientSender - the object used to send messages to the server
          +
          +
          +
        • +
        +
        +
      • + +
      • +
        +

        Methodendetails

        +
          +
        • +
          +

          getOwnMap

          +
          public ShipMap getOwnMap()
          +
          Returns the player's own map.
          +
          +
          Gibt zurück:
          +
          the player's own map
          +
          +
          +
        • +
        • +
          +

          getOpponentMap

          +
          public ShipMap getOpponentMap()
          +
          Returns the opponent's map.
          +
          +
          Gibt zurück:
          +
          the opponent's map
          +
          +
          +
        • +
        • +
          +

          getHarbor

          +
          public ShipMap getHarbor()
          +
          Returns the harbor map.
          +
          +
          Gibt zurück:
          +
          the harbor map
          +
          +
          +
        • +
        • +
          +

          showEditor

          +
          public boolean showEditor()
          +
          Checks if the editor should be shown.
          +
          +
          Gibt zurück:
          +
          true if the editor should be shown, false otherwise
          +
          +
          +
        • +
        • +
          +

          showBattle

          +
          public boolean showBattle()
          +
          Checks if the battle state should be shown.
          +
          +
          Gibt zurück:
          +
          true if the battle state should be shown, false otherwise
          +
          +
          +
        • +
        • +
          +

          received

          +
          public void received(GameDetails details)
          +
          Sets the game details provided by the server.
          +
          +
          Angegeben von:
          +
          received in Schnittstelle ServerInterpreter
          +
          Parameter:
          +
          details - the game details including map size and ships
          +
          +
          +
        • +
        • +
          +

          movePreview

          +
          public void movePreview(IntPoint pos)
          +
          Moves the preview ship to the specified position.
          +
          +
          Parameter:
          +
          pos - the new position for the preview ship
          +
          +
          +
        • +
        • +
          +

          clickOwnMap

          +
          public void clickOwnMap(IntPoint pos)
          +
          Handles a click on the player's own map.
          +
          +
          Parameter:
          +
          pos - the position where the click occurred
          +
          +
          +
        • +
        • +
          +

          clickHarbor

          +
          public void clickHarbor(IntPoint pos)
          +
          Handles a click on the harbor map.
          +
          +
          Parameter:
          +
          pos - the position where the click occurred
          +
          +
          +
        • +
        • +
          +

          clickOpponentMap

          +
          public void clickOpponentMap(IntPoint pos)
          +
          Handles a click on the opponent's map.
          +
          +
          Parameter:
          +
          pos - the position where the click occurred
          +
          +
          +
        • +
        • +
          +

          rotateShip

          +
          public void rotateShip()
          +
          Rotates the preview ship.
          +
          +
        • +
        • +
          +

          mapFinished

          +
          public void mapFinished()
          +
          Marks the player's map as finished.
          +
          +
        • +
        • +
          +

          isMapComplete

          +
          public boolean isMapComplete()
          +
          Checks if the player's map is complete (i.e., all ships are placed).
          +
          +
          Gibt zurück:
          +
          true if all ships are placed, false otherwise
          +
          +
          +
        • +
        • +
          +

          movingShip

          +
          public boolean movingShip()
          +
          Checks if there is currently a preview ship.
          +
          +
          Gibt zurück:
          +
          true if there is currently a preview ship, false otherwise
          +
          +
          +
        • +
        • +
          +

          received

          +
          public void received(StartBattleMessage msg)
          +
          Starts the battle based on the server message.
          +
          +
          Angegeben von:
          +
          received in Schnittstelle ServerInterpreter
          +
          Parameter:
          +
          msg - the message indicating whose turn it is to shoot
          +
          +
          +
        • +
        • +
          +

          received

          +
          public void received(EffectMessage msg)
          +
          Reports the effect of a shot based on the server message.
          +
          +
          Angegeben von:
          +
          received in Schnittstelle ServerInterpreter
          +
          Parameter:
          +
          msg - the message containing the effect of the shot
          +
          +
          +
        • +
        • +
          +

          playSound

          +
          public void playSound(Sound sound)
          +
          Emits an event to play the specified sound.
          +
          +
          Parameter:
          +
          sound - the sound to be played.
          +
          +
          +
        • +
        • +
          +

          loadMap

          +
          public void loadMap(File file) + throws IOException
          +
          Loads a map from the specified file.
          +
          +
          Parameter:
          +
          file - the file to load the map from
          +
          Löst aus:
          +
          IOException - if an I/O error occurs
          +
          +
          +
        • +
        • +
          +

          mayLoadMap

          +
          public boolean mayLoadMap()
          +
          Checks if the player's own map may be loaded from a file.
          +
          +
          Gibt zurück:
          +
          true if the own map may be loaded from file, false otherwise
          +
          +
          +
        • +
        • +
          +

          maySaveMap

          +
          public boolean maySaveMap()
          +
          Checks if the player's own map may be saved to a file.
          +
          +
          Gibt zurück:
          +
          true if the own map may be saved to file, false otherwise
          +
          +
          +
        • +
        • +
          +

          saveMap

          +
          public void saveMap(File file) + throws IOException
          +
          Saves the player's own map to the specified file.
          +
          +
          Parameter:
          +
          file - the file to save the map to
          +
          Löst aus:
          +
          IOException - if the map cannot be saved in the current state
          +
          +
          +
        • +
        • +
          +

          addListener

          +
          public void addListener(GameEventListener listener)
          +
          Adds a listener to receive game events.
          +
          +
          Parameter:
          +
          listener - the listener to add
          +
          +
          +
        • +
        • +
          +

          removeListener

          +
          public void removeListener(GameEventListener listener)
          +
          Removes a listener from receiving game events.
          +
          +
          Parameter:
          +
          listener - the listener to remove
          +
          +
          +
        • +
        • +
          +

          notifyListeners

          +
          public void notifyListeners(GameEvent event)
          +
          Notifies all listeners of a game event.
          +
          +
          Angegeben von:
          +
          notifyListeners in Schnittstelle GameEventBroker
          +
          Parameter:
          +
          event - the game event to notify listeners of
          +
          +
          +
        • +
        • +
          +

          update

          +
          public void update(float delta)
          +
          Called once per frame by the update loop.
          +
          +
          Parameter:
          +
          delta - time in seconds since the last update call
          +
          +
          +
        • +
        +
        +
      • +
      +
      + +
      +
      +
      + + diff --git a/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/game/client/ClientSender.html b/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/game/client/ClientSender.html new file mode 100644 index 0000000..1fc0457 --- /dev/null +++ b/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/game/client/ClientSender.html @@ -0,0 +1,153 @@ + + + + +ClientSender (model API) + + + + + + + + + + + + + +
      + +
      +
      + +
      + +

      Schnittstelle ClientSender

      +
      +
      +
      +
      Alle bekannten Unterschnittstellen:
      +
      ServerConnection
      +
      +
      +
      Alle bekannten Implementierungsklassen:
      +
      ServerConnectionMockup
      +
      +
      +
      public interface ClientSender
      +
      Interface for sending messages to the server.
      +
      +
      +
        + +
      • +
        +

        Methodenübersicht

        +
        +
        +
        +
        +
        Modifizierer und Typ
        +
        Methode
        +
        Beschreibung
        +
        void
        + +
        +
        Send the specified message to the server.
        +
        +
        +
        +
        +
        +
      • +
      +
      +
      +
        + +
      • +
        +

        Methodendetails

        +
          +
        • +
          +

          send

          +
          void send(ClientMessage message)
          +
          Send the specified message to the server.
          +
          +
          Parameter:
          +
          message - the message
          +
          +
          +
        • +
        +
        +
      • +
      +
      + +
      +
      +
      + + diff --git a/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/game/client/ServerConnection.html b/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/game/client/ServerConnection.html new file mode 100644 index 0000000..5a8dc23 --- /dev/null +++ b/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/game/client/ServerConnection.html @@ -0,0 +1,182 @@ + + + + +ServerConnection (model API) + + + + + + + + + + + + + +
      + +
      +
      + +
      + +

      Schnittstelle ServerConnection

      +
      +
      +
      +
      Alle Superschnittstellen:
      +
      ClientSender
      +
      +
      +
      Alle bekannten Implementierungsklassen:
      +
      ServerConnectionMockup
      +
      +
      +
      public interface ServerConnection +extends ClientSender
      +
      Interface representing a connection to the server. + Extends ClientSender to allow sending messages to the server.
      +
      +
      +
        + +
      • +
        +

        Methodenübersicht

        +
        +
        +
        +
        +
        Modifizierer und Typ
        +
        Methode
        +
        Beschreibung
        +
        void
        + +
        +
        Establishes a connection to the server.
        +
        +
        void
        + +
        +
        Disconnects from the server.
        +
        +
        boolean
        + +
        +
        Checks if the client is currently connected to the server.
        +
        +
        +
        +
        +
        +

        Von Schnittstelle geerbte Methoden pp.battleship.game.client.ClientSender

        +send
        +
        +
      • +
      +
      +
      +
        + +
      • +
        +

        Methodendetails

        +
          +
        • +
          +

          isConnected

          +
          boolean isConnected()
          +
          Checks if the client is currently connected to the server.
          +
          +
          Gibt zurück:
          +
          true if connected, false otherwise.
          +
          +
          +
        • +
        • +
          +

          connect

          +
          void connect()
          +
          Establishes a connection to the server.
          +
          +
        • +
        • +
          +

          disconnect

          +
          void disconnect()
          +
          Disconnects from the server.
          +
          +
        • +
        +
        +
      • +
      +
      + +
      +
      +
      + + diff --git a/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/game/client/ShootingAnimationState.html b/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/game/client/ShootingAnimationState.html new file mode 100644 index 0000000..5385148 --- /dev/null +++ b/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/game/client/ShootingAnimationState.html @@ -0,0 +1,171 @@ + + + + +ShootingAnimationState (model API) + + + + + + + + + + + + + +
      + +
      +
      + +
      + +

      Klasse ShootingAnimationState

      +
      +
      java.lang.Object +
      pp.battleship.game.client.ShootingAnimationState
      +
      +
      +
      +
      public class ShootingAnimationState +extends Object
      +
      This class represents the client state during a shooting animation. + It handles the logic for the animation of a fired shell and ensures + that the client notifies the server when the animation is complete.
      +
      +
      +
        + +
      • +
        +

        Methodenübersicht

        +
        +
        +
        +
        +
        Modifizierer und Typ
        +
        Methode
        +
        Beschreibung
        +
        boolean
        + +
        +
        Indicates that the battle scene should be shown in this state.
        +
        +
        void
        +
        update(float deltaTime)
        +
        +
        Called once per frame to update the shell's position and check if it has reached the target.
        +
        +
        +
        +
        +
        +

        Von Klasse geerbte Methoden java.lang.Object

        +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
        +
        +
      • +
      +
      +
      +
        + +
      • +
        +

        Methodendetails

        +
          +
        • +
          +

          showBattle

          +
          public boolean showBattle()
          +
          Indicates that the battle scene should be shown in this state.
          +
          +
          Gibt zurück:
          +
          true because the battle view is active during the shooting animation
          +
          +
          +
        • +
        • +
          +

          update

          +
          public void update(float deltaTime)
          +
          Called once per frame to update the shell's position and check if it has reached the target. + If the shell reaches the target, a message is sent to the server.
          +
          +
          Parameter:
          +
          deltaTime - time in seconds since the last update call
          +
          +
          +
        • +
        +
        +
      • +
      +
      + +
      +
      +
      + + diff --git a/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/game/client/package-summary.html b/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/game/client/package-summary.html new file mode 100644 index 0000000..9f3ae67 --- /dev/null +++ b/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/game/client/package-summary.html @@ -0,0 +1,110 @@ + + + + +pp.battleship.game.client (model API) + + + + + + + + + + + + + +
      + +
      +
      +
      +

      Package pp.battleship.game.client

      +
      +
      +
      package pp.battleship.game.client
      +
      +
        +
      • +
        +
        +
        +
        +
        Klasse
        +
        Beschreibung
        + +
        +
        Interface representing a Battleship client.
        +
        + +
        +
        Controls the client-side game logic for Battleship.
        +
        + +
        +
        Interface for sending messages to the server.
        +
        + +
        +
        Interface representing a connection to the server.
        +
        + +
        +
        This class represents the client state during a shooting animation.
        +
        +
        +
        +
        +
      • +
      +
      +
      +
      +
      + + diff --git a/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/game/client/package-tree.html b/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/game/client/package-tree.html new file mode 100644 index 0000000..36dbea5 --- /dev/null +++ b/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/game/client/package-tree.html @@ -0,0 +1,82 @@ + + + + +pp.battleship.game.client Klassenhierarchie (model API) + + + + + + + + + + + + + +
      + +
      +
      +
      +

      Hierarchie für Package pp.battleship.game.client

      +
      +Packagehierarchien: + +
      +

      Klassenhierarchie

      + +
      +
      +

      Schnittstellenhierarchie

      + +
      +
      +
      +
      + + diff --git a/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/game/server/Player.html b/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/game/server/Player.html new file mode 100644 index 0000000..fec9c6e --- /dev/null +++ b/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/game/server/Player.html @@ -0,0 +1,178 @@ + + + + +Player (model API) + + + + + + + + + + + + + +
      + +
      +
      + +
      + +

      Klasse Player

      +
      +
      java.lang.Object +
      pp.battleship.game.server.Player
      +
      +
      +
      +
      public class Player +extends Object
      +
      Class representing a player
      +
      +
      + +
      +
      +
        + +
      • +
        +

        Methodendetails

        +
          +
        • +
          +

          getId

          +
          public int getId()
          +
          Returns the id of the connection to the client represented by this player.
          +
          +
          Gibt zurück:
          +
          the id
          +
          +
          +
        • +
        • +
          +

          toString

          +
          public String toString()
          +
          +
          Setzt außer Kraft:
          +
          toString in Klasse Object
          +
          +
          +
        • +
        • +
          +

          getMap

          +
          public ShipMap getMap()
          +
          +
          Gibt zurück:
          +
          map containing own ships and shots
          +
          +
          +
        • +
        +
        +
      • +
      +
      + +
      +
      +
      + + diff --git a/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/game/server/ServerGameLogic.html b/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/game/server/ServerGameLogic.html new file mode 100644 index 0000000..393788e --- /dev/null +++ b/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/game/server/ServerGameLogic.html @@ -0,0 +1,281 @@ + + + + +ServerGameLogic (model API) + + + + + + + + + + + + + +
      + +
      +
      + +
      + +

      Klasse ServerGameLogic

      +
      +
      java.lang.Object +
      pp.battleship.game.server.ServerGameLogic
      +
      +
      +
      +
      Alle implementierten Schnittstellen:
      +
      ClientInterpreter
      +
      +
      +
      public class ServerGameLogic +extends Object +implements ClientInterpreter
      +
      Controls the server-side game logic for Battleship. + Manages game states, player interactions, and message handling.
      +
      +
      + +
      +
      +
        + +
      • +
        +

        Konstruktordetails

        +
          +
        • +
          +

          ServerGameLogic

          +
          public ServerGameLogic(ServerSender serverSender, + BattleshipConfig config)
          +
          Constructs a ServerGameLogic with the specified sender and configuration.
          +
          +
          Parameter:
          +
          serverSender - the sender used to send messages to clients
          +
          config - the game configuration
          +
          +
          +
        • +
        +
        +
      • + +
      • +
        +

        Methodendetails

        +
          +
        • +
          +

          getPlayerById

          +
          public Player getPlayerById(int id)
          +
          Returns the player representing the client with the specified connection ID.
          +
          +
          Parameter:
          +
          id - the ID of the client
          +
          Gibt zurück:
          +
          the player associated with the client ID, or null if not found
          +
          +
          +
        • +
        • +
          +

          addPlayer

          +
          public Player addPlayer(int id)
          +
          Adds a new player to the game if there are less than two players. + Transitions the state to SET_UP if two players are present.
          +
          +
          Parameter:
          +
          id - the connection ID of the new player
          +
          Gibt zurück:
          +
          the player added to the game, or null if the game is not in the right state
          +
          +
          +
        • +
        • +
          +

          received

          +
          public void received(MapMessage msg, + int from)
          +
          Handles the reception of a MapMessage. + Also tests if Map is in correct format
          +
          +
          Angegeben von:
          +
          received in Schnittstelle ClientInterpreter
          +
          Parameter:
          +
          msg - the received MapMessage
          +
          from - the ID of the sender client
          +
          +
          +
        • +
        • +
          +

          received

          +
          public void received(ShootMessage msg, + int from)
          +
          Handles the reception of a ShootMessage.
          +
          +
          Angegeben von:
          +
          received in Schnittstelle ClientInterpreter
          +
          Parameter:
          +
          msg - the received ShootMessage
          +
          from - the ID of the sender client
          +
          +
          +
        • +
        • +
          +

          received

          +
          public void received(ShellAnimationFinishedMessage msg, + int from)
          +
          Handles the reception of ShellAnimationFinishedMessage. + This method is called when a client signals that its shell animation is complete.
          +
          +
          Angegeben von:
          +
          received in Schnittstelle ClientInterpreter
          +
          Parameter:
          +
          msg - the received ShellAnimationFinishedMessage
          +
          from - the ID of the sender client
          +
          +
          +
        • +
        +
        +
      • +
      +
      + +
      +
      +
      + + diff --git a/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/game/server/ServerSender.html b/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/game/server/ServerSender.html new file mode 100644 index 0000000..0edc781 --- /dev/null +++ b/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/game/server/ServerSender.html @@ -0,0 +1,152 @@ + + + + +ServerSender (model API) + + + + + + + + + + + + + +
      + +
      +
      + +
      + +

      Schnittstelle ServerSender

      +
      +
      +
      +
      Alle bekannten Implementierungsklassen:
      +
      ServerConnectionMockup
      +
      +
      +
      public interface ServerSender
      +
      Interface for sending messages to a client.
      +
      +
      +
        + +
      • +
        +

        Methodenübersicht

        +
        +
        +
        +
        +
        Modifizierer und Typ
        +
        Methode
        +
        Beschreibung
        +
        void
        +
        send(int id, + ServerMessage message)
        +
        +
        Send the specified message to the client.
        +
        +
        +
        +
        +
        +
      • +
      +
      +
      +
        + +
      • +
        +

        Methodendetails

        +
          +
        • +
          +

          send

          +
          void send(int id, + ServerMessage message)
          +
          Send the specified message to the client.
          +
          +
          Parameter:
          +
          id - the id of the client that shall receive the message
          +
          message - the message
          +
          +
          +
        • +
        +
        +
      • +
      +
      + +
      +
      +
      + + diff --git a/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/game/server/package-summary.html b/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/game/server/package-summary.html new file mode 100644 index 0000000..516444b --- /dev/null +++ b/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/game/server/package-summary.html @@ -0,0 +1,102 @@ + + + + +pp.battleship.game.server (model API) + + + + + + + + + + + + + +
      + +
      +
      +
      +

      Package pp.battleship.game.server

      +
      +
      +
      package pp.battleship.game.server
      +
      +
        +
      • +
        +
        +
        +
        +
        Klasse
        +
        Beschreibung
        + +
        +
        Class representing a player
        +
        + +
        +
        Controls the server-side game logic for Battleship.
        +
        + +
        +
        Interface for sending messages to a client.
        +
        +
        +
        +
        +
      • +
      +
      +
      +
      +
      + + diff --git a/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/game/server/package-tree.html b/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/game/server/package-tree.html new file mode 100644 index 0000000..fb6b1a1 --- /dev/null +++ b/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/game/server/package-tree.html @@ -0,0 +1,77 @@ + + + + +pp.battleship.game.server Klassenhierarchie (model API) + + + + + + + + + + + + + +
      + +
      +
      +
      +

      Hierarchie für Package pp.battleship.game.server

      +
      +Packagehierarchien: + +
      +

      Klassenhierarchie

      + +
      +
      +

      Schnittstellenhierarchie

      + +
      +
      +
      +
      + + diff --git a/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/game/singlemode/BattleshipClientConfig.html b/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/game/singlemode/BattleshipClientConfig.html new file mode 100644 index 0000000..789eb75 --- /dev/null +++ b/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/game/singlemode/BattleshipClientConfig.html @@ -0,0 +1,274 @@ + + + + +BattleshipClientConfig (model API) + + + + + + + + + + + + + +
      + +
      +
      + +
      + +

      Klasse BattleshipClientConfig

      +
      +
      java.lang.Object +
      pp.util.config.Config +
      pp.battleship.BattleshipConfig +
      pp.battleship.game.singlemode.BattleshipClientConfig
      +
      +
      +
      +
      +
      +
      public class BattleshipClientConfig +extends BattleshipConfig
      +
      Class providing access to the Battleship client configuration. + Extends BattleshipConfig to include additional properties specific to the client. + This class manages configuration settings related to the RobotClient's behavior + and the game maps used in single mode. +

      + Note: Attributes of this class should not be marked as final + to ensure proper functionality when reading from a properties file. +

      +
      +
      +
        + +
      • +
        +

        Verschachtelte Klassen - Übersicht

        +
        +

        Von Klasse geerbte verschachtelte Klassen/Schnittstellen pp.util.config.Config

        +pp.util.config.Config.Property, pp.util.config.Config.Separator
        +
        +
      • + +
      • +
        +

        Konstruktorübersicht

        +
        Konstruktoren
        +
        +
        Konstruktor
        +
        Beschreibung
        + +
        +
        Creates a default BattleshipClientConfig with predefined values.
        +
        +
        +
        +
      • + +
      • +
        +

        Methodenübersicht

        +
        +
        +
        +
        +
        Modifizierer und Typ
        +
        Methode
        +
        Beschreibung
        +
        int
        + +
        +
        Returns the delay (in milliseconds) between shots by the RobotClient.
        +
        + + +
        +
        Returns the file representing the opponent's map.
        +
        + + +
        +
        Returns the file representing the player's own map.
        +
        + + +
        +
        Returns an iterator of IntPoint objects representing the predefined + shooting locations for the RobotClient.
        +
        +
        boolean
        + +
        +
        Determines if the game is in single mode based on the presence of an opponent map.
        +
        +
        +
        +
        +
        +

        Von Klasse geerbte Methoden pp.battleship.BattleshipConfig

        +getMapHeight, getMapWidth, getPort, getShipNums
        +
        +

        Von Klasse geerbte Methoden pp.util.config.Config

        +convertToType, readFrom, readFrom, readFromIfExists, toString
        +
        +

        Von Klasse geerbte Methoden java.lang.Object

        +clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
        +
        +
      • +
      +
      +
      +
        + +
      • +
        +

        Konstruktordetails

        +
          +
        • +
          +

          BattleshipClientConfig

          +
          public BattleshipClientConfig()
          +
          Creates a default BattleshipClientConfig with predefined values.
          +
          +
        • +
        +
        +
      • + +
      • +
        +

        Methodendetails

        +
          +
        • +
          +

          getRobotTargets

          +
          public Iterator<IntPoint> getRobotTargets()
          +
          Returns an iterator of IntPoint objects representing the predefined + shooting locations for the RobotClient.
          +
          +
          Gibt zurück:
          +
          an iterator of IntPoint representing the shooting locations.
          +
          +
          +
        • +
        • +
          +

          getDelay

          +
          public int getDelay()
          +
          Returns the delay (in milliseconds) between shots by the RobotClient.
          +
          +
          Gibt zurück:
          +
          the delay in milliseconds.
          +
          +
          +
        • +
        • +
          +

          getOpponentMap

          +
          public File getOpponentMap()
          +
          Returns the file representing the opponent's map.
          +
          +
          Gibt zurück:
          +
          the opponent's map file, or null if not set.
          +
          +
          +
        • +
        • +
          +

          getOwnMap

          +
          public File getOwnMap()
          +
          Returns the file representing the player's own map.
          +
          +
          Gibt zurück:
          +
          the player's own map file, or null if not set.
          +
          +
          +
        • +
        • +
          +

          isSingleMode

          +
          public boolean isSingleMode()
          +
          Determines if the game is in single mode based on the presence of an opponent map.
          +
          +
          Gibt zurück:
          +
          true if the opponent map is set, indicating single mode; false otherwise.
          +
          +
          +
        • +
        +
        +
      • +
      +
      + +
      +
      +
      + + diff --git a/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/game/singlemode/ServerConnectionMockup.html b/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/game/singlemode/ServerConnectionMockup.html new file mode 100644 index 0000000..0846dea --- /dev/null +++ b/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/game/singlemode/ServerConnectionMockup.html @@ -0,0 +1,277 @@ + + + + +ServerConnectionMockup (model API) + + + + + + + + + + + + + +
      + +
      +
      + +
      + +

      Klasse ServerConnectionMockup

      +
      +
      java.lang.Object +
      pp.battleship.game.singlemode.ServerConnectionMockup
      +
      +
      +
      +
      Alle implementierten Schnittstellen:
      +
      ClientSender, ServerConnection, ServerSender
      +
      +
      +
      public class ServerConnectionMockup +extends Object +implements ServerConnection, ServerSender
      +
      A mock implementation of the ServerConnection interface for single mode. + Simulates a server connection without actual network communication. + Handles a mock player named RobotClient and schedules its shots when due.
      +
      +
      +
        + +
      • +
        +

        Konstruktorübersicht

        +
        Konstruktoren
        +
        +
        Konstruktor
        +
        Beschreibung
        + +
        +
        Constructs a ServerConnectionMockup instance for the given Battleship application.
        +
        +
        +
        +
      • + +
      • +
        +

        Methodenübersicht

        +
        +
        +
        +
        +
        Modifizierer und Typ
        +
        Methode
        +
        Beschreibung
        +
        void
        + +
        +
        Simulates connecting to a server by adding the PlayerClient and the RobotClient to the serverGameLogic.
        +
        +
        void
        + +
        +
        Does nothing upon shutdown of the app.
        +
        +
        boolean
        + +
        +
        Always returns true as this is a mock connection.
        +
        +
        void
        +
        send(int id, + ServerMessage message)
        +
        +
        Forwards the specified message received from the server logic either to the player client or to the + robot client, depending on the specified id.
        +
        +
        void
        + +
        +
        Forwards the specified message received from the player client to the server logic.
        +
        +
        +
        +
        +
        +

        Von Klasse geerbte Methoden java.lang.Object

        +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
        +
        +
      • +
      +
      +
      +
        + +
      • +
        +

        Konstruktordetails

        +
          +
        • +
          +

          ServerConnectionMockup

          +
          public ServerConnectionMockup(BattleshipClient playerClient)
          +
          Constructs a ServerConnectionMockup instance for the given Battleship application. + Creates a RobotClient instance and an instance of ServerGameLogic.
          +
          +
          Parameter:
          +
          playerClient - The Battleship client instance, e.g., a BattleshipApp instance.
          +
          +
          +
        • +
        +
        +
      • + +
      • +
        +

        Methodendetails

        +
          +
        • +
          +

          isConnected

          +
          public boolean isConnected()
          +
          Always returns true as this is a mock connection.
          +
          +
          Angegeben von:
          +
          isConnected in Schnittstelle ServerConnection
          +
          Gibt zurück:
          +
          true, indicating the mock connection is always considered connected.
          +
          +
          +
        • +
        • +
          +

          connect

          +
          public void connect()
          +
          Simulates connecting to a server by adding the PlayerClient and the RobotClient to the serverGameLogic. + Loads the map of the PlayerClient and triggers sending it to the serverGameLogic.
          +
          +
          Angegeben von:
          +
          connect in Schnittstelle ServerConnection
          +
          +
          +
        • +
        • +
          +

          disconnect

          +
          public void disconnect()
          +
          Does nothing upon shutdown of the app.
          +
          +
          Angegeben von:
          +
          disconnect in Schnittstelle ServerConnection
          +
          +
          +
        • +
        • +
          +

          send

          +
          public void send(ClientMessage message)
          +
          Forwards the specified message received from the player client to the server logic.
          +
          +
          Angegeben von:
          +
          send in Schnittstelle ClientSender
          +
          Parameter:
          +
          message - The message from the player client to be processed.
          +
          +
          +
        • +
        • +
          +

          send

          +
          public void send(int id, + ServerMessage message)
          +
          Forwards the specified message received from the server logic either to the player client or to the + robot client, depending on the specified id.
          +
          +
          Angegeben von:
          +
          send in Schnittstelle ServerSender
          +
          Parameter:
          +
          id - The recipient id
          +
          message - The server message to be processed
          +
          Siehe auch:
          +
          +
            +
          • PLAYER_CLIENT
          • +
          • ROBOT_CLIENT
          • +
          +
          +
          +
          +
        • +
        +
        +
      • +
      +
      + +
      +
      +
      + + diff --git a/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/game/singlemode/package-summary.html b/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/game/singlemode/package-summary.html new file mode 100644 index 0000000..266b537 --- /dev/null +++ b/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/game/singlemode/package-summary.html @@ -0,0 +1,96 @@ + + + + +pp.battleship.game.singlemode (model API) + + + + + + + + + + + + + +
      + +
      +
      +
      +

      Package pp.battleship.game.singlemode

      +
      +
      +
      package pp.battleship.game.singlemode
      +
      +
        +
      • +
        +
        Klassen
        +
        +
        Klasse
        +
        Beschreibung
        + +
        +
        Class providing access to the Battleship client configuration.
        +
        + +
        +
        A mock implementation of the ServerConnection interface for single mode.
        +
        +
        +
        +
      • +
      +
      +
      +
      +
      + + diff --git a/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/game/singlemode/package-tree.html b/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/game/singlemode/package-tree.html new file mode 100644 index 0000000..5d15b52 --- /dev/null +++ b/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/game/singlemode/package-tree.html @@ -0,0 +1,79 @@ + + + + +pp.battleship.game.singlemode Klassenhierarchie (model API) + + + + + + + + + + + + + +
      + +
      +
      +
      +

      Hierarchie für Package pp.battleship.game.singlemode

      +
      +Packagehierarchien: + +
      +

      Klassenhierarchie

      + +
      +
      +
      +
      + + diff --git a/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/message/client/ClientInterpreter.html b/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/message/client/ClientInterpreter.html new file mode 100644 index 0000000..92346d7 --- /dev/null +++ b/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/message/client/ClientInterpreter.html @@ -0,0 +1,182 @@ + + + + +ClientInterpreter (model API) + + + + + + + + + + + + + +
      + +
      +
      + +
      + +

      Schnittstelle ClientInterpreter

      +
      +
      +
      +
      Alle bekannten Implementierungsklassen:
      +
      ServerGameLogic
      +
      +
      +
      public interface ClientInterpreter
      +
      Visitor interface for processing all client messages.
      +
      +
      +
        + +
      • +
        +

        Methodenübersicht

        +
        +
        +
        +
        +
        Modifizierer und Typ
        +
        Methode
        +
        Beschreibung
        +
        void
        +
        received(MapMessage msg, + int from)
        +
        +
        Processes a received MapMessage.
        +
        +
        void
        +
        received(ShellAnimationFinishedMessage shellAnimationFinishedMessage, + int from)
        +
         
        +
        void
        +
        received(ShootMessage msg, + int from)
        +
        +
        Processes a received ShootMessage.
        +
        +
        +
        +
        +
        +
      • +
      +
      +
      +
        + +
      • +
        +

        Methodendetails

        +
          +
        • +
          +

          received

          +
          void received(ShootMessage msg, + int from)
          +
          Processes a received ShootMessage.
          +
          +
          Parameter:
          +
          msg - the ShootMessage to be processed
          +
          from - the connection ID from which the message was received
          +
          +
          +
        • +
        • +
          +

          received

          +
          void received(MapMessage msg, + int from)
          +
          Processes a received MapMessage.
          +
          +
          Parameter:
          +
          msg - the MapMessage to be processed
          +
          from - the connection ID from which the message was received
          +
          +
          +
        • +
        • +
          +

          received

          +
          void received(ShellAnimationFinishedMessage shellAnimationFinishedMessage, + int from)
          +
          +
        • +
        +
        +
      • +
      +
      + +
      +
      +
      + + diff --git a/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/message/client/ClientMessage.html b/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/message/client/ClientMessage.html new file mode 100644 index 0000000..98b38e6 --- /dev/null +++ b/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/message/client/ClientMessage.html @@ -0,0 +1,201 @@ + + + + +ClientMessage (model API) + + + + + + + + + + + + + +
      + +
      +
      + +
      + +

      Klasse ClientMessage

      +
      +
      java.lang.Object +
      com.jme3.network.AbstractMessage +
      pp.battleship.message.client.ClientMessage
      +
      +
      +
      +
      +
      Alle implementierten Schnittstellen:
      +
      com.jme3.network.Message
      +
      +
      +
      Bekannte direkte Unterklassen:
      +
      MapMessage, ShellAnimationFinishedMessage, ShootMessage
      +
      +
      +
      public abstract class ClientMessage +extends com.jme3.network.AbstractMessage
      +
      An abstract base class for client messages used in network transfer. + It extends the AbstractMessage class provided by the jme3-network library.
      +
      +
      +
        + +
      • +
        +

        Konstruktorübersicht

        +
        Konstruktoren
        +
        +
        Modifizierer
        +
        Konstruktor
        +
        Beschreibung
        +
        protected
        + +
        +
        Constructs a new ClientMessage instance.
        +
        +
        +
        +
      • + +
      • +
        +

        Methodenübersicht

        +
        +
        +
        +
        +
        Modifizierer und Typ
        +
        Methode
        +
        Beschreibung
        +
        abstract void
        +
        accept(ClientInterpreter interpreter, + int from)
        +
        +
        Accepts a visitor for processing this message.
        +
        +
        +
        +
        +
        +

        Von Klasse geerbte Methoden com.jme3.network.AbstractMessage

        +isReliable, setReliable
        +
        +

        Von Klasse geerbte Methoden java.lang.Object

        +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
        +
        +
      • +
      +
      +
      +
        + +
      • +
        +

        Konstruktordetails

        +
          +
        • +
          +

          ClientMessage

          +
          protected ClientMessage()
          +
          Constructs a new ClientMessage instance.
          +
          +
        • +
        +
        +
      • + +
      • +
        +

        Methodendetails

        +
          +
        • +
          +

          accept

          +
          public abstract void accept(ClientInterpreter interpreter, + int from)
          +
          Accepts a visitor for processing this message.
          +
          +
          Parameter:
          +
          interpreter - the visitor to be used for processing
          +
          from - the connection ID of the sender
          +
          +
          +
        • +
        +
        +
      • +
      +
      + +
      +
      +
      + + diff --git a/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/message/client/MapMessage.html b/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/message/client/MapMessage.html new file mode 100644 index 0000000..14b0f35 --- /dev/null +++ b/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/message/client/MapMessage.html @@ -0,0 +1,236 @@ + + + + +MapMessage (model API) + + + + + + + + + + + + + +
      + +
      +
      + +
      + +

      Klasse MapMessage

      +
      +
      java.lang.Object +
      com.jme3.network.AbstractMessage +
      pp.battleship.message.client.ClientMessage +
      pp.battleship.message.client.MapMessage
      +
      +
      +
      +
      +
      +
      Alle implementierten Schnittstellen:
      +
      com.jme3.network.Message
      +
      +
      +
      public class MapMessage +extends ClientMessage
      +
      A message sent by the client containing the positions of the ships on the player's map.
      +
      +
      +
        + +
      • +
        +

        Konstruktorübersicht

        +
        Konstruktoren
        +
        +
        Konstruktor
        +
        Beschreibung
        + +
        +
        Constructs a MapMessage with the specified list of ships.
        +
        +
        +
        +
      • + +
      • +
        +

        Methodenübersicht

        +
        +
        +
        +
        +
        Modifizierer und Typ
        +
        Methode
        +
        Beschreibung
        +
        void
        +
        accept(ClientInterpreter interpreter, + int from)
        +
        +
        Accepts a visitor to process this message.
        +
        + + +
        +
        Returns the list of ships on the player's map.
        +
        + + +
        +
        Returns a string representation of the MapMessage.
        +
        +
        +
        +
        +
        +

        Von Klasse geerbte Methoden com.jme3.network.AbstractMessage

        +isReliable, setReliable
        +
        +

        Von Klasse geerbte Methoden java.lang.Object

        +clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
        +
        +
      • +
      +
      +
      +
        + +
      • +
        +

        Konstruktordetails

        +
          +
        • +
          +

          MapMessage

          +
          public MapMessage(List<Battleship> ships)
          +
          Constructs a MapMessage with the specified list of ships.
          +
          +
          Parameter:
          +
          ships - the list of ships placed on the player's map
          +
          +
          +
        • +
        +
        +
      • + +
      • +
        +

        Methodendetails

        +
          +
        • +
          +

          getShips

          +
          public List<Battleship> getShips()
          +
          Returns the list of ships on the player's map.
          +
          +
          Gibt zurück:
          +
          the list of ships
          +
          +
          +
        • +
        • +
          +

          toString

          +
          public String toString()
          +
          Returns a string representation of the MapMessage.
          +
          +
          Setzt außer Kraft:
          +
          toString in Klasse Object
          +
          Gibt zurück:
          +
          a string representation of the MapMessage
          +
          +
          +
        • +
        • +
          +

          accept

          +
          public void accept(ClientInterpreter interpreter, + int from)
          +
          Accepts a visitor to process this message.
          +
          +
          Angegeben von:
          +
          accept in Klasse ClientMessage
          +
          Parameter:
          +
          interpreter - the visitor to process this message
          +
          from - the connection ID from which the message was received
          +
          +
          +
        • +
        +
        +
      • +
      +
      + +
      +
      +
      + + diff --git a/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/message/client/ShellAnimationFinishedMessage.html b/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/message/client/ShellAnimationFinishedMessage.html new file mode 100644 index 0000000..acde9ec --- /dev/null +++ b/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/message/client/ShellAnimationFinishedMessage.html @@ -0,0 +1,195 @@ + + + + +ShellAnimationFinishedMessage (model API) + + + + + + + + + + + + + +
      + +
      +
      + +
      + +

      Klasse ShellAnimationFinishedMessage

      +
      +
      java.lang.Object +
      com.jme3.network.AbstractMessage +
      pp.battleship.message.client.ClientMessage +
      pp.battleship.message.client.ShellAnimationFinishedMessage
      +
      +
      +
      +
      +
      +
      Alle implementierten Schnittstellen:
      +
      com.jme3.network.Message
      +
      +
      +
      public class ShellAnimationFinishedMessage +extends ClientMessage
      +
      +
      + +
      +
      +
        + +
      • +
        +

        Konstruktordetails

        +
          +
        • +
          +

          ShellAnimationFinishedMessage

          +
          public ShellAnimationFinishedMessage()
          +
          +
        • +
        +
        +
      • + +
      • +
        +

        Methodendetails

        +
          +
        • +
          +

          accept

          +
          public void accept(ClientInterpreter interpreter, + int from)
          +
          Beschreibung aus Klasse kopiert: ClientMessage
          +
          Accepts a visitor for processing this message.
          +
          +
          Angegeben von:
          +
          accept in Klasse ClientMessage
          +
          Parameter:
          +
          interpreter - the visitor to be used for processing
          +
          from - the connection ID of the sender
          +
          +
          +
        • +
        +
        +
      • +
      +
      + +
      +
      +
      + + diff --git a/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/message/client/ShootMessage.html b/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/message/client/ShootMessage.html new file mode 100644 index 0000000..08e13f4 --- /dev/null +++ b/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/message/client/ShootMessage.html @@ -0,0 +1,236 @@ + + + + +ShootMessage (model API) + + + + + + + + + + + + + +
      + +
      +
      + +
      + +

      Klasse ShootMessage

      +
      +
      java.lang.Object +
      com.jme3.network.AbstractMessage +
      pp.battleship.message.client.ClientMessage +
      pp.battleship.message.client.ShootMessage
      +
      +
      +
      +
      +
      +
      Alle implementierten Schnittstellen:
      +
      com.jme3.network.Message
      +
      +
      +
      public class ShootMessage +extends ClientMessage
      +
      A message sent by the client to indicate a shooting action in the game.
      +
      +
      +
        + +
      • +
        +

        Konstruktorübersicht

        +
        Konstruktoren
        +
        +
        Konstruktor
        +
        Beschreibung
        + +
        +
        Constructs a ShootMessage with the specified position.
        +
        +
        +
        +
      • + +
      • +
        +

        Methodenübersicht

        +
        +
        +
        +
        +
        Modifizierer und Typ
        +
        Methode
        +
        Beschreibung
        +
        void
        +
        accept(ClientInterpreter interpreter, + int from)
        +
        +
        Accepts a visitor to process this message.
        +
        + + +
        +
        Returns the position of the shot.
        +
        + + +
        +
        Returns a string representation of the ShootMessage.
        +
        +
        +
        +
        +
        +

        Von Klasse geerbte Methoden com.jme3.network.AbstractMessage

        +isReliable, setReliable
        +
        +

        Von Klasse geerbte Methoden java.lang.Object

        +clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
        +
        +
      • +
      +
      +
      +
        + +
      • +
        +

        Konstruktordetails

        +
          +
        • +
          +

          ShootMessage

          +
          public ShootMessage(IntPoint position)
          +
          Constructs a ShootMessage with the specified position.
          +
          +
          Parameter:
          +
          position - the position where the shot is fired
          +
          +
          +
        • +
        +
        +
      • + +
      • +
        +

        Methodendetails

        +
          +
        • +
          +

          getPosition

          +
          public IntPoint getPosition()
          +
          Returns the position of the shot.
          +
          +
          Gibt zurück:
          +
          the position of the shot
          +
          +
          +
        • +
        • +
          +

          toString

          +
          public String toString()
          +
          Returns a string representation of the ShootMessage.
          +
          +
          Setzt außer Kraft:
          +
          toString in Klasse Object
          +
          Gibt zurück:
          +
          a string representation of the ShootMessage
          +
          +
          +
        • +
        • +
          +

          accept

          +
          public void accept(ClientInterpreter interpreter, + int from)
          +
          Accepts a visitor to process this message.
          +
          +
          Angegeben von:
          +
          accept in Klasse ClientMessage
          +
          Parameter:
          +
          interpreter - the visitor to process this message
          +
          from - the connection ID from which the message was received
          +
          +
          +
        • +
        +
        +
      • +
      +
      + +
      +
      +
      + + diff --git a/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/message/client/package-summary.html b/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/message/client/package-summary.html new file mode 100644 index 0000000..138c8ba --- /dev/null +++ b/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/message/client/package-summary.html @@ -0,0 +1,108 @@ + + + + +pp.battleship.message.client (model API) + + + + + + + + + + + + + +
      + +
      +
      +
      +

      Package pp.battleship.message.client

      +
      +
      +
      package pp.battleship.message.client
      +
      +
        +
      • +
        +
        +
        +
        +
        Klasse
        +
        Beschreibung
        + +
        +
        Visitor interface for processing all client messages.
        +
        + +
        +
        An abstract base class for client messages used in network transfer.
        +
        + +
        +
        A message sent by the client containing the positions of the ships on the player's map.
        +
        + +
         
        + +
        +
        A message sent by the client to indicate a shooting action in the game.
        +
        +
        +
        +
        +
      • +
      +
      +
      +
      +
      + + diff --git a/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/message/client/package-tree.html b/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/message/client/package-tree.html new file mode 100644 index 0000000..ebc547b --- /dev/null +++ b/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/message/client/package-tree.html @@ -0,0 +1,86 @@ + + + + +pp.battleship.message.client Klassenhierarchie (model API) + + + + + + + + + + + + + +
      + +
      +
      +
      +

      Hierarchie für Package pp.battleship.message.client

      +
      +Packagehierarchien: + +
      +

      Klassenhierarchie

      + +
      +
      +

      Schnittstellenhierarchie

      + +
      +
      +
      +
      + + diff --git a/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/message/server/EffectMessage.html b/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/message/server/EffectMessage.html new file mode 100644 index 0000000..4e81540 --- /dev/null +++ b/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/message/server/EffectMessage.html @@ -0,0 +1,440 @@ + + + + +EffectMessage (model API) + + + + + + + + + + + + + +
      + +
      +
      + +
      + +

      Klasse EffectMessage

      +
      +
      java.lang.Object +
      com.jme3.network.AbstractMessage +
      pp.battleship.message.server.ServerMessage +
      pp.battleship.message.server.EffectMessage
      +
      +
      +
      +
      +
      +
      Alle implementierten Schnittstellen:
      +
      com.jme3.network.Message
      +
      +
      +
      public class EffectMessage +extends ServerMessage
      +
      A message sent by the server to inform clients about the effects of a shot in the Battleship game.
      +
      +
      + +
      +
      +
        + +
      • +
        +

        Methodendetails

        +
          +
        • +
          +

          hit

          +
          public static EffectMessage hit(boolean ownShot, + IntPoint pos)
          +
          Creates an EffectMessage indicating a hit.
          +
          +
          Parameter:
          +
          ownShot - true if the shot was fired by the player, false if by the opponent
          +
          pos - the position of the shot
          +
          Gibt zurück:
          +
          an EffectMessage indicating a hit
          +
          +
          +
        • +
        • +
          +

          miss

          +
          public static EffectMessage miss(boolean ownShot, + IntPoint pos)
          +
          Creates an EffectMessage indicating a miss.
          +
          +
          Parameter:
          +
          ownShot - true if the shot was fired by the player, false if by the opponent
          +
          pos - the position of the shot
          +
          Gibt zurück:
          +
          an EffectMessage indicating a miss
          +
          +
          +
        • +
        • +
          +

          shipDestroyed

          +
          public static EffectMessage shipDestroyed(boolean ownShot, + IntPoint pos, + Battleship destroyedShip)
          +
          Creates an EffectMessage indicating a ship was destroyed.
          +
          +
          Parameter:
          +
          ownShot - true if the shot was fired by the player, false if by the opponent
          +
          pos - the position of the shot
          +
          destroyedShip - the ship that was destroyed
          +
          Gibt zurück:
          +
          an EffectMessage indicating a ship was destroyed
          +
          +
          +
        • +
        • +
          +

          won

          +
          public static EffectMessage won(IntPoint pos, + Battleship destroyedShip)
          +
          Creates an EffectMessage indicating the player has won the game.
          +
          +
          Parameter:
          +
          pos - the position of the shot
          +
          destroyedShip - the ship that was destroyed
          +
          Gibt zurück:
          +
          an EffectMessage indicating the player has won
          +
          +
          +
        • +
        • +
          +

          lost

          +
          public static EffectMessage lost(IntPoint pos, + Battleship destroyedShip, + List<Battleship> remainingOpponentShips)
          +
          Creates an EffectMessage indicating the player has lost the game.
          +
          +
          Parameter:
          +
          pos - the position of the shot
          +
          destroyedShip - the ship that was destroyed
          +
          remainingOpponentShips - the list of opponent's remaining ships
          +
          Gibt zurück:
          +
          an EffectMessage indicating the player has lost
          +
          +
          +
        • +
        • +
          +

          accept

          +
          public void accept(ServerInterpreter interpreter)
          +
          Accepts a visitor to process this message.
          +
          +
          Angegeben von:
          +
          accept in Klasse ServerMessage
          +
          Parameter:
          +
          interpreter - the visitor to process this message
          +
          +
          +
        • +
        • +
          +

          isOwnShot

          +
          public boolean isOwnShot()
          +
          Checks if the shot was fired by the player.
          +
          +
          Gibt zurück:
          +
          true if the shot was fired by the player, false otherwise
          +
          +
          +
        • +
        • +
          +

          getShot

          +
          public Shot getShot()
          +
          Returns the shot fired.
          +
          +
          Gibt zurück:
          +
          the shot fired
          +
          +
          +
        • +
        • +
          +

          getDestroyedShip

          +
          public Battleship getDestroyedShip()
          +
          Returns the ship that was destroyed by the shot.
          +
          +
          Gibt zurück:
          +
          the destroyed ship, null if no ship was destroyed
          +
          +
          +
        • +
        • +
          +

          getRemainingOpponentShips

          +
          public List<Battleship> getRemainingOpponentShips()
          +
          Returns the list of opponent's remaining ships after the shot.
          +
          +
          Gibt zurück:
          +
          the list of opponent's remaining ships, null if the game is not yet over
          +
          +
          +
        • +
        • +
          +

          isGameOver

          +
          public boolean isGameOver()
          +
          Checks if the game is over.
          +
          +
          Gibt zurück:
          +
          true if the game is over, false otherwise
          +
          +
          +
        • +
        • +
          +

          isGameWon

          +
          public boolean isGameWon()
          +
          Checks if the game is won by the player.
          +
          +
          Gibt zurück:
          +
          true if the game is won by the player, false otherwise
          +
          +
          +
        • +
        • +
          +

          isGameLost

          +
          public boolean isGameLost()
          +
          Checks if the game is lost by the player.
          +
          +
          Gibt zurück:
          +
          true if the game is lost by the player, false otherwise
          +
          +
          +
        • +
        • +
          +

          isMyTurn

          +
          public boolean isMyTurn()
          +
          Checks if it's currently the player's turn.
          +
          +
          Gibt zurück:
          +
          true if it's the player's turn, false otherwise
          +
          +
          +
        • +
        • +
          +

          toString

          +
          public String toString()
          +
          Returns a string representation of the EffectMessage.
          +
          +
          Setzt außer Kraft:
          +
          toString in Klasse Object
          +
          Gibt zurück:
          +
          a string representation of the EffectMessage
          +
          +
          +
        • +
        • +
          +

          getInfoTextKey

          +
          public String getInfoTextKey()
          +
          Returns the key for the informational text associated with this message.
          +
          +
          Angegeben von:
          +
          getInfoTextKey in Klasse ServerMessage
          +
          Gibt zurück:
          +
          the key for the informational text
          +
          +
          +
        • +
        +
        +
      • +
      +
      + +
      +
      +
      + + diff --git a/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/message/server/GameDetails.html b/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/message/server/GameDetails.html new file mode 100644 index 0000000..1424c6f --- /dev/null +++ b/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/message/server/GameDetails.html @@ -0,0 +1,285 @@ + + + + +GameDetails (model API) + + + + + + + + + + + + + +
      + +
      +
      + +
      + +

      Klasse GameDetails

      +
      +
      java.lang.Object +
      com.jme3.network.AbstractMessage +
      pp.battleship.message.server.ServerMessage +
      pp.battleship.message.server.GameDetails
      +
      +
      +
      +
      +
      +
      Alle implementierten Schnittstellen:
      +
      com.jme3.network.Message
      +
      +
      +
      public class GameDetails +extends ServerMessage
      +
      A message sent by the server to provide details about the game configuration.
      +
      +
      +
        + +
      • +
        +

        Konstruktorübersicht

        +
        Konstruktoren
        +
        +
        Konstruktor
        +
        Beschreibung
        + +
        +
        Constructs a GameDetails message with the specified BattleshipConfig.
        +
        +
        +
        +
      • + +
      • +
        +

        Methodenübersicht

        +
        +
        +
        +
        +
        Modifizierer und Typ
        +
        Methode
        +
        Beschreibung
        +
        void
        + +
        +
        Accepts a visitor to process this message.
        +
        +
        int
        + +
        +
        Returns the height of the game map.
        +
        + + +
        +
        Returns the key for the informational text associated with this message.
        +
        + + +
        +
        Returns a map where the keys represent ship lengths + and the values represent the number of ships of that length.
        +
        +
        int
        + +
        +
        Returns the width of the game map.
        +
        + + +
        +
        Returns a string representation of the GameDetails message.
        +
        +
        +
        +
        +
        +

        Von Klasse geerbte Methoden com.jme3.network.AbstractMessage

        +isReliable, setReliable
        +
        +

        Von Klasse geerbte Methoden java.lang.Object

        +clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
        +
        +
      • +
      +
      +
      +
        + +
      • +
        +

        Konstruktordetails

        +
          +
        • +
          +

          GameDetails

          +
          public GameDetails(BattleshipConfig config)
          +
          Constructs a GameDetails message with the specified BattleshipConfig.
          +
          +
          Parameter:
          +
          config - the BattleshipConfig containing game configuration details
          +
          +
          +
        • +
        +
        +
      • + +
      • +
        +

        Methodendetails

        +
          +
        • +
          +

          accept

          +
          public void accept(ServerInterpreter interpreter)
          +
          Accepts a visitor to process this message.
          +
          +
          Angegeben von:
          +
          accept in Klasse ServerMessage
          +
          Parameter:
          +
          interpreter - the visitor to process this message
          +
          +
          +
        • +
        • +
          +

          getShipNums

          +
          public Map<Integer,Integer> getShipNums()
          +
          Returns a map where the keys represent ship lengths + and the values represent the number of ships of that length.
          +
          +
          Gibt zurück:
          +
          a map of ship lengths to the number of ships
          +
          +
          +
        • +
        • +
          +

          getWidth

          +
          public int getWidth()
          +
          Returns the width of the game map.
          +
          +
          Gibt zurück:
          +
          the width of the game map
          +
          +
          +
        • +
        • +
          +

          getHeight

          +
          public int getHeight()
          +
          Returns the height of the game map.
          +
          +
          Gibt zurück:
          +
          the height of the game map
          +
          +
          +
        • +
        • +
          +

          toString

          +
          public String toString()
          +
          Returns a string representation of the GameDetails message.
          +
          +
          Setzt außer Kraft:
          +
          toString in Klasse Object
          +
          Gibt zurück:
          +
          a string representation of the GameDetails message
          +
          +
          +
        • +
        • +
          +

          getInfoTextKey

          +
          public String getInfoTextKey()
          +
          Returns the key for the informational text associated with this message.
          +
          +
          Angegeben von:
          +
          getInfoTextKey in Klasse ServerMessage
          +
          Gibt zurück:
          +
          the key for the informational text
          +
          +
          +
        • +
        +
        +
      • +
      +
      + +
      +
      +
      + + diff --git a/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/message/server/ServerInterpreter.html b/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/message/server/ServerInterpreter.html new file mode 100644 index 0000000..88c8dd7 --- /dev/null +++ b/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/message/server/ServerInterpreter.html @@ -0,0 +1,182 @@ + + + + +ServerInterpreter (model API) + + + + + + + + + + + + + +
      + +
      +
      + +
      + +

      Schnittstelle ServerInterpreter

      +
      +
      +
      +
      Alle bekannten Implementierungsklassen:
      +
      ClientGameLogic
      +
      +
      +
      public interface ServerInterpreter
      +
      An interface for processing server messages. + Implementations of this interface can be used to handle different types of server messages.
      +
      +
      +
        + +
      • +
        +

        Methodenübersicht

        +
        +
        +
        +
        +
        Modifizierer und Typ
        +
        Methode
        +
        Beschreibung
        +
        void
        + +
        +
        Handles an EffectMessage received from the server.
        +
        +
        void
        + +
        +
        Handles a GameDetails message received from the server.
        +
        +
        void
        + +
        +
        Handles a StartBattleMessage received from the server.
        +
        +
        +
        +
        +
        +
      • +
      +
      +
      +
        + +
      • +
        +

        Methodendetails

        +
          +
        • +
          +

          received

          +
          void received(GameDetails msg)
          +
          Handles a GameDetails message received from the server.
          +
          +
          Parameter:
          +
          msg - the GameDetails message received
          +
          +
          +
        • +
        • +
          +

          received

          +
          void received(StartBattleMessage msg)
          +
          Handles a StartBattleMessage received from the server.
          +
          +
          Parameter:
          +
          msg - the StartBattleMessage received
          +
          +
          +
        • +
        • +
          +

          received

          +
          void received(EffectMessage msg)
          +
          Handles an EffectMessage received from the server.
          +
          +
          Parameter:
          +
          msg - the EffectMessage received
          +
          +
          +
        • +
        +
        +
      • +
      +
      + +
      +
      +
      + + diff --git a/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/message/server/ServerMessage.html b/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/message/server/ServerMessage.html new file mode 100644 index 0000000..df647a2 --- /dev/null +++ b/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/message/server/ServerMessage.html @@ -0,0 +1,215 @@ + + + + +ServerMessage (model API) + + + + + + + + + + + + + +
      + +
      +
      + +
      + +

      Klasse ServerMessage

      +
      +
      java.lang.Object +
      com.jme3.network.AbstractMessage +
      pp.battleship.message.server.ServerMessage
      +
      +
      +
      +
      +
      Alle implementierten Schnittstellen:
      +
      com.jme3.network.Message
      +
      +
      +
      Bekannte direkte Unterklassen:
      +
      EffectMessage, GameDetails, StartBattleMessage
      +
      +
      +
      public abstract class ServerMessage +extends com.jme3.network.AbstractMessage
      +
      An abstract base class for server messages used in network transfer. + It extends the AbstractMessage class provided by the jme3-network library.
      +
      +
      +
        + +
      • +
        +

        Konstruktorübersicht

        +
        Konstruktoren
        +
        +
        Modifizierer
        +
        Konstruktor
        +
        Beschreibung
        +
        protected
        + +
        +
        Constructs a new ServerMessage instance.
        +
        +
        +
        +
      • + +
      • +
        +

        Methodenübersicht

        +
        +
        +
        +
        +
        Modifizierer und Typ
        +
        Methode
        +
        Beschreibung
        +
        abstract void
        + +
        +
        Accepts a visitor for processing this message.
        +
        +
        abstract String
        + +
        +
        Gets the bundle key of the informational text to be shown at the client.
        +
        +
        +
        +
        +
        +

        Von Klasse geerbte Methoden com.jme3.network.AbstractMessage

        +isReliable, setReliable
        +
        +

        Von Klasse geerbte Methoden java.lang.Object

        +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
        +
        +
      • +
      +
      +
      +
        + +
      • +
        +

        Konstruktordetails

        +
          +
        • +
          +

          ServerMessage

          +
          protected ServerMessage()
          +
          Constructs a new ServerMessage instance.
          +
          +
        • +
        +
        +
      • + +
      • +
        +

        Methodendetails

        +
          +
        • +
          +

          accept

          +
          public abstract void accept(ServerInterpreter interpreter)
          +
          Accepts a visitor for processing this message.
          +
          +
          Parameter:
          +
          interpreter - the visitor to be used for processing
          +
          +
          +
        • +
        • +
          +

          getInfoTextKey

          +
          public abstract String getInfoTextKey()
          +
          Gets the bundle key of the informational text to be shown at the client. + This key is used to retrieve the appropriate localized text for display.
          +
          +
          Gibt zurück:
          +
          the bundle key of the informational text
          +
          +
          +
        • +
        +
        +
      • +
      +
      + +
      +
      +
      + + diff --git a/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/message/server/StartBattleMessage.html b/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/message/server/StartBattleMessage.html new file mode 100644 index 0000000..e9e6df7 --- /dev/null +++ b/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/message/server/StartBattleMessage.html @@ -0,0 +1,251 @@ + + + + +StartBattleMessage (model API) + + + + + + + + + + + + + +
      + +
      +
      + +
      + +

      Klasse StartBattleMessage

      +
      +
      java.lang.Object +
      com.jme3.network.AbstractMessage +
      pp.battleship.message.server.ServerMessage +
      pp.battleship.message.server.StartBattleMessage
      +
      +
      +
      +
      +
      +
      Alle implementierten Schnittstellen:
      +
      com.jme3.network.Message
      +
      +
      +
      public class StartBattleMessage +extends ServerMessage
      +
      A message sent by the server to inform clients about the start of the battle.
      +
      +
      +
        + +
      • +
        +

        Konstruktorübersicht

        +
        Konstruktoren
        +
        +
        Konstruktor
        +
        Beschreibung
        +
        StartBattleMessage(boolean myTurn)
        +
        +
        Constructs a StartBattleMessage with the specified turn indicator.
        +
        +
        +
        +
      • + +
      • +
        +

        Methodenübersicht

        +
        +
        +
        +
        +
        Modifizierer und Typ
        +
        Methode
        +
        Beschreibung
        +
        void
        + +
        +
        Accepts a visitor to process this message.
        +
        + + +
        +
        Returns the key for the informational text associated with this message.
        +
        +
        boolean
        + +
        +
        Checks if it's the client's turn to shoot.
        +
        + + +
        +
        Returns a string representation of the StartBattleMessage.
        +
        +
        +
        +
        +
        +

        Von Klasse geerbte Methoden com.jme3.network.AbstractMessage

        +isReliable, setReliable
        +
        +

        Von Klasse geerbte Methoden java.lang.Object

        +clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
        +
        +
      • +
      +
      +
      +
        + +
      • +
        +

        Konstruktordetails

        +
          +
        • +
          +

          StartBattleMessage

          +
          public StartBattleMessage(boolean myTurn)
          +
          Constructs a StartBattleMessage with the specified turn indicator.
          +
          +
          Parameter:
          +
          myTurn - true if it's the client's turn to shoot, false otherwise
          +
          +
          +
        • +
        +
        +
      • + +
      • +
        +

        Methodendetails

        +
          +
        • +
          +

          accept

          +
          public void accept(ServerInterpreter interpreter)
          +
          Accepts a visitor to process this message.
          +
          +
          Angegeben von:
          +
          accept in Klasse ServerMessage
          +
          Parameter:
          +
          interpreter - the visitor to process this message
          +
          +
          +
        • +
        • +
          +

          isMyTurn

          +
          public boolean isMyTurn()
          +
          Checks if it's the client's turn to shoot.
          +
          +
          Gibt zurück:
          +
          true if it's the client's turn, false otherwise
          +
          +
          +
        • +
        • +
          +

          toString

          +
          public String toString()
          +
          Returns a string representation of the StartBattleMessage.
          +
          +
          Setzt außer Kraft:
          +
          toString in Klasse Object
          +
          Gibt zurück:
          +
          a string representation of the StartBattleMessage
          +
          +
          +
        • +
        • +
          +

          getInfoTextKey

          +
          public String getInfoTextKey()
          +
          Returns the key for the informational text associated with this message.
          +
          +
          Angegeben von:
          +
          getInfoTextKey in Klasse ServerMessage
          +
          Gibt zurück:
          +
          the key for the informational text
          +
          +
          +
        • +
        +
        +
      • +
      +
      + +
      +
      +
      + + diff --git a/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/message/server/package-summary.html b/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/message/server/package-summary.html new file mode 100644 index 0000000..9053821 --- /dev/null +++ b/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/message/server/package-summary.html @@ -0,0 +1,110 @@ + + + + +pp.battleship.message.server (model API) + + + + + + + + + + + + + +
      + +
      +
      +
      +

      Package pp.battleship.message.server

      +
      +
      +
      package pp.battleship.message.server
      +
      +
        +
      • +
        +
        +
        +
        +
        Klasse
        +
        Beschreibung
        + +
        +
        A message sent by the server to inform clients about the effects of a shot in the Battleship game.
        +
        + +
        +
        A message sent by the server to provide details about the game configuration.
        +
        + +
        +
        An interface for processing server messages.
        +
        + +
        +
        An abstract base class for server messages used in network transfer.
        +
        + +
        +
        A message sent by the server to inform clients about the start of the battle.
        +
        +
        +
        +
        +
      • +
      +
      +
      +
      +
      + + diff --git a/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/message/server/package-tree.html b/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/message/server/package-tree.html new file mode 100644 index 0000000..101861f --- /dev/null +++ b/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/message/server/package-tree.html @@ -0,0 +1,86 @@ + + + + +pp.battleship.message.server Klassenhierarchie (model API) + + + + + + + + + + + + + +
      + +
      +
      +
      +

      Hierarchie für Package pp.battleship.message.server

      +
      +Packagehierarchien: + +
      +

      Klassenhierarchie

      + +
      +
      +

      Schnittstellenhierarchie

      + +
      +
      +
      +
      + + diff --git a/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/model/Battleship.Status.html b/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/model/Battleship.Status.html new file mode 100644 index 0000000..ab9df2f --- /dev/null +++ b/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/model/Battleship.Status.html @@ -0,0 +1,252 @@ + + + + +Battleship.Status (model API) + + + + + + + + + + + + + +
      + +
      +
      + +
      + +

      Enum-Klasse Battleship.Status

      +
      +
      java.lang.Object +
      java.lang.Enum<Battleship.Status> +
      pp.battleship.model.Battleship.Status
      +
      +
      +
      +
      +
      Alle implementierten Schnittstellen:
      +
      Serializable, Comparable<Battleship.Status>, Constable
      +
      +
      +
      Umschließende Klasse:
      +
      Battleship
      +
      +
      +
      public static enum Battleship.Status +extends Enum<Battleship.Status>
      +
      Enumeration representing the different statuses a battleship can have during the game.
      +
      +
      + +
      +
      +
        + +
      • +
        +

        Enum-Konstanten - Details

        +
          +
        • +
          +

          NORMAL

          +
          public static final Battleship.Status NORMAL
          +
          The ship is in its normal state, not being previewed for placement.
          +
          +
        • +
        • +
          +

          VALID_PREVIEW

          +
          public static final Battleship.Status VALID_PREVIEW
          +
          The ship is being previewed in a valid position for placement.
          +
          +
        • +
        • +
          +

          INVALID_PREVIEW

          +
          public static final Battleship.Status INVALID_PREVIEW
          +
          The ship is being previewed in an invalid position for placement.
          +
          +
        • +
        +
        +
      • + +
      • +
        +

        Methodendetails

        +
          +
        • +
          +

          values

          +
          public static Battleship.Status[] values()
          +
          Gibt ein Array mit den Konstanten dieser Enum-Klasse in +der Reihenfolge ihrer Deklaration zurück.
          +
          +
          Gibt zurück:
          +
          ein Array mit den Konstanten dieser Enum-Klasse in der Reihenfolge ihrer Deklaration
          +
          +
          +
        • +
        • +
          +

          valueOf

          +
          public static Battleship.Status valueOf(String name)
          +
          Gibt die Enum-Konstante dieser Klasse mit dem angegebenen Namen zurück. +Die Zeichenfolge muss exakt mit einer ID übereinstimmen, +mit der eine Enum-Konstante in dieser Klasse deklariert wird. +(Zusätzliche Leerzeichen sind nicht zulässig.)
          +
          +
          Parameter:
          +
          name - Name der zurückzugebenden Enumerationskonstante.
          +
          Gibt zurück:
          +
          Enumerationskonstante mit dem angegebenen Namen
          +
          Löst aus:
          +
          IllegalArgumentException - wenn diese Enum-Klasse keine Konstante mit dem angegebenen Namen enthält
          +
          NullPointerException - wenn das Argument nicht angegeben wird
          +
          +
          +
        • +
        +
        +
      • +
      +
      + +
      +
      +
      + + diff --git a/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/model/Battleship.html b/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/model/Battleship.html new file mode 100644 index 0000000..3ec82f2 --- /dev/null +++ b/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/model/Battleship.html @@ -0,0 +1,643 @@ + + + + +Battleship (model API) + + + + + + + + + + + + + +
      + +
      +
      + +
      + +

      Klasse Battleship

      +
      +
      java.lang.Object +
      pp.battleship.model.Battleship
      +
      +
      +
      +
      Alle implementierten Schnittstellen:
      +
      Item
      +
      +
      +
      public class Battleship +extends Object +implements Item
      +
      Represents a battleship in the game. A battleship is characterized by its length, position, + rotation, and status. It can be moved, rotated, and hit during the game. This class also + provides methods to check for collisions with other ships and to determine whether the + battleship has been destroyed.
      +
      +
      +
        + +
      • +
        +

        Verschachtelte Klassen - Übersicht

        +
        Verschachtelte Klassen
        +
        +
        Modifizierer und Typ
        +
        Klasse
        +
        Beschreibung
        +
        static enum 
        + +
        +
        Enumeration representing the different statuses a battleship can have during the game.
        +
        +
        +
        +
      • + +
      • +
        +

        Konstruktorübersicht

        +
        Konstruktoren
        +
        +
        Konstruktor
        +
        Beschreibung
        +
        Battleship(int length, + int x, + int y, + Rotation rot)
        +
        +
        Constructs a new Battleship with the specified length, position, and rotation.
        +
        +
        +
        +
      • + +
      • +
        +

        Methodenübersicht

        +
        +
        +
        +
        +
        Modifizierer und Typ
        +
        Methode
        +
        Beschreibung
        +
        <T> T
        +
        accept(Visitor<T> visitor)
        +
        +
        Accepts a visitor that returns a value of type T.
        +
        +
        void
        + +
        +
        Accepts a visitor that does not return a value.
        +
        +
        boolean
        + +
        +
        Checks whether this battleship collides with another battleship.
        +
        +
        boolean
        +
        contains(int x, + int y)
        +
        +
        Checks whether the specified position is covered by the battleship.
        +
        +
        boolean
        + +
        +
        Checks whether the specified position is covered by the battleship.
        +
        + + +
        +
        Returns the positions of this battleship that have been hit.
        +
        +
        int
        + +
        +
        Returns the length of the battleship.
        +
        +
        int
        + +
        +
        Returns the maximum x-coordinate that the battleship occupies based on its current position and rotation.
        +
        +
        int
        + +
        +
        Returns the maximum y-coordinate that the battleship occupies based on its current position and rotation.
        +
        +
        int
        + +
        +
        Returns the minimum x-coordinate that the battleship occupies based on its current position and rotation.
        +
        +
        int
        + +
        +
        Returns the minimum y-coordinate that the battleship occupies based on its current position and rotation.
        +
        + + +
        +
        Returns the current rotation of the battleship.
        +
        + + +
        +
        Returns the current status of the battleship.
        +
        +
        int
        + +
        +
        Returns the current x-coordinate of the battleship's position.
        +
        +
        int
        + +
        +
        Returns the current y-coordinate of the battleship's position.
        +
        +
        boolean
        +
        hit(int x, + int y)
        +
        +
        Attempts to hit the battleship at the specified position.
        +
        +
        boolean
        +
        hit(IntPosition position)
        +
        +
        Attempts to hit the battleship at the specified position.
        +
        +
        boolean
        + +
        +
        Determines if the battleship has been completely destroyed.
        +
        +
        void
        +
        moveTo(int x, + int y)
        +
        +
        Moves the battleship to the specified coordinates.
        +
        +
        void
        + +
        +
        Moves the battleship to the specified position.
        +
        +
        void
        + +
        +
        Rotates the battleship by 90 degrees clockwise.
        +
        +
        void
        + +
        +
        Sets the rotation of the battleship.
        +
        +
        void
        + +
        +
        Sets the status of the battleship.
        +
        + + +
        +
        Returns a string representation of the battleship, including its length, position, + and rotation.
        +
        +
        +
        +
        +
        +

        Von Klasse geerbte Methoden java.lang.Object

        +clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
        +
        +
      • +
      +
      +
      +
        + +
      • +
        +

        Konstruktordetails

        +
          +
        • +
          +

          Battleship

          +
          public Battleship(int length, + int x, + int y, + Rotation rot)
          +
          Constructs a new Battleship with the specified length, position, and rotation.
          +
          +
          Parameter:
          +
          length - the length of the battleship
          +
          x - the x-coordinate of the battleship's initial position
          +
          y - the y-coordinate of the battleship's initial position
          +
          rot - the rotation of the battleship
          +
          +
          +
        • +
        +
        +
      • + +
      • +
        +

        Methodendetails

        +
          +
        • +
          +

          getX

          +
          public int getX()
          +
          Returns the current x-coordinate of the battleship's position.
          +
          +
          Gibt zurück:
          +
          the x-coordinate of the battleship
          +
          +
          +
        • +
        • +
          +

          getY

          +
          public int getY()
          +
          Returns the current y-coordinate of the battleship's position.
          +
          +
          Gibt zurück:
          +
          the y-coordinate of the battleship
          +
          +
          +
        • +
        • +
          +

          moveTo

          +
          public void moveTo(int x, + int y)
          +
          Moves the battleship to the specified coordinates.
          +
          +
          Parameter:
          +
          x - the new x-coordinate of the battleship's position
          +
          y - the new y-coordinate of the battleship's position
          +
          +
          +
        • +
        • +
          +

          moveTo

          +
          public void moveTo(IntPosition pos)
          +
          Moves the battleship to the specified position.
          +
          +
          Parameter:
          +
          pos - the new position of the battleship
          +
          +
          +
        • +
        • +
          +

          getStatus

          +
          public Battleship.Status getStatus()
          +
          Returns the current status of the battleship.
          +
          +
          Gibt zurück:
          +
          the status of the battleship
          +
          +
          +
        • +
        • +
          +

          setStatus

          +
          public void setStatus(Battleship.Status status)
          +
          Sets the status of the battleship.
          +
          +
          Parameter:
          +
          status - the new status to be set for the battleship
          +
          +
          +
        • +
        • +
          +

          getLength

          +
          public int getLength()
          +
          Returns the length of the battleship.
          +
          +
          Gibt zurück:
          +
          the length of the battleship
          +
          +
          +
        • +
        • +
          +

          getMinX

          +
          public int getMinX()
          +
          Returns the minimum x-coordinate that the battleship occupies based on its current position and rotation.
          +
          +
          Gibt zurück:
          +
          the minimum x-coordinate of the battleship
          +
          +
          +
        • +
        • +
          +

          getMaxX

          +
          public int getMaxX()
          +
          Returns the maximum x-coordinate that the battleship occupies based on its current position and rotation.
          +
          +
          Gibt zurück:
          +
          the maximum x-coordinate of the battleship
          +
          +
          +
        • +
        • +
          +

          getMinY

          +
          public int getMinY()
          +
          Returns the minimum y-coordinate that the battleship occupies based on its current position and rotation.
          +
          +
          Gibt zurück:
          +
          the minimum y-coordinate of the battleship
          +
          +
          +
        • +
        • +
          +

          getMaxY

          +
          public int getMaxY()
          +
          Returns the maximum y-coordinate that the battleship occupies based on its current position and rotation.
          +
          +
          Gibt zurück:
          +
          the maximum y-coordinate of the battleship
          +
          +
          +
        • +
        • +
          +

          getRot

          +
          public Rotation getRot()
          +
          Returns the current rotation of the battleship.
          +
          +
          Gibt zurück:
          +
          the rotation of the battleship
          +
          +
          +
        • +
        • +
          +

          setRotation

          +
          public void setRotation(Rotation rot)
          +
          Sets the rotation of the battleship.
          +
          +
          Parameter:
          +
          rot - the new rotation to be set for the battleship
          +
          +
          +
        • +
        • +
          +

          rotated

          +
          public void rotated()
          +
          Rotates the battleship by 90 degrees clockwise.
          +
          +
        • +
        • +
          +

          hit

          +
          public boolean hit(int x, + int y)
          +
          Attempts to hit the battleship at the specified position. + If the position is part of the battleship, the hit is recorded.
          +
          +
          Parameter:
          +
          x - the x-coordinate of the position to hit
          +
          y - the y-coordinate of the position to hit
          +
          Gibt zurück:
          +
          true if the position is part of the battleship, false otherwise
          +
          Siehe auch:
          +
          + +
          +
          +
          +
        • +
        • +
          +

          hit

          +
          public boolean hit(IntPosition position)
          +
          Attempts to hit the battleship at the specified position. + If the position is part of the battleship, the hit is recorded. + This is a convenience method for hit(int, int).
          +
          +
          Parameter:
          +
          position - the position to hit
          +
          Gibt zurück:
          +
          true if the position is part of the battleship, false otherwise
          +
          +
          +
        • +
        • +
          +

          getDamaged

          +
          public Set<IntPoint> getDamaged()
          +
          Returns the positions of this battleship that have been hit.
          +
          +
          Gibt zurück:
          +
          a set of positions that have been hit
          +
          Siehe auch:
          +
          + +
          +
          +
          +
        • +
        • +
          +

          contains

          +
          public boolean contains(IntPosition pos)
          +
          Checks whether the specified position is covered by the battleship. This method does + not record a hit, only checks coverage. + This is a convenience method for contains(int, int).
          +
          +
          Parameter:
          +
          pos - the position to check
          +
          Gibt zurück:
          +
          true if the position is covered by the battleship, false otherwise
          +
          +
          +
        • +
        • +
          +

          contains

          +
          public boolean contains(int x, + int y)
          +
          Checks whether the specified position is covered by the battleship. This method does + not record a hit, only checks coverage.
          +
          +
          Parameter:
          +
          x - the x-coordinate of the position to check
          +
          y - the y-coordinate of the position to check
          +
          Gibt zurück:
          +
          true if the position is covered by the battleship, false otherwise
          +
          +
          +
        • +
        • +
          +

          isDestroyed

          +
          public boolean isDestroyed()
          +
          Determines if the battleship has been completely destroyed. A battleship is considered + destroyed if all of its positions have been hit.
          +
          +
          Gibt zurück:
          +
          true if the battleship is destroyed, false otherwise
          +
          Siehe auch:
          +
          + +
          +
          +
          +
        • +
        • +
          +

          collidesWith

          +
          public boolean collidesWith(Battleship other)
          +
          Checks whether this battleship collides with another battleship. Two battleships collide + if any of their occupied positions overlap.
          +
          +
          Parameter:
          +
          other - the other battleship to check collision with
          +
          Gibt zurück:
          +
          true if the battleships collide, false otherwise
          +
          +
          +
        • +
        • +
          +

          toString

          +
          public String toString()
          +
          Returns a string representation of the battleship, including its length, position, + and rotation.
          +
          +
          Setzt außer Kraft:
          +
          toString in Klasse Object
          +
          Gibt zurück:
          +
          a string representation of the battleship
          +
          +
          +
        • +
        • +
          +

          accept

          +
          public <T> T accept(Visitor<T> visitor)
          +
          Accepts a visitor that returns a value of type T. This method is part of the + Visitor design pattern.
          +
          +
          Angegeben von:
          +
          accept in Schnittstelle Item
          +
          Typparameter:
          +
          T - the type of the value returned by the visitor
          +
          Parameter:
          +
          visitor - the visitor to accept
          +
          Gibt zurück:
          +
          the value returned by the visitor
          +
          +
          +
        • +
        • +
          +

          accept

          +
          public void accept(VoidVisitor visitor)
          +
          Accepts a visitor that does not return a value. This method is part of the + Visitor design pattern.
          +
          +
          Angegeben von:
          +
          accept in Schnittstelle Item
          +
          Parameter:
          +
          visitor - the visitor to accept
          +
          +
          +
        • +
        +
        +
      • +
      +
      + +
      +
      +
      + + diff --git a/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/model/IntPoint.html b/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/model/IntPoint.html new file mode 100644 index 0000000..86aea18 --- /dev/null +++ b/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/model/IntPoint.html @@ -0,0 +1,270 @@ + + + + +IntPoint (model API) + + + + + + + + + + + + + +
      + +
      +
      + +
      + +

      Klasse IntPoint

      +
      +
      java.lang.Object +
      pp.battleship.model.IntPoint
      +
      +
      +
      +
      Alle implementierten Schnittstellen:
      +
      IntPosition
      +
      +
      +
      public final class IntPoint +extends Object +implements IntPosition
      +
      Represents a point in the two-dimensional plane with integer coordinates.
      +
      +
      +
        + +
      • +
        +

        Konstruktorübersicht

        +
        Konstruktoren
        +
        +
        Konstruktor
        +
        Beschreibung
        +
        IntPoint(int x, + int y)
        +
        +
        Constructs a new IntPoint with the specified coordinates.
        +
        +
        +
        +
      • + +
      • +
        +

        Methodenübersicht

        +
        +
        +
        +
        +
        Modifizierer und Typ
        +
        Methode
        +
        Beschreibung
        +
        boolean
        + +
        +
        Indicates whether some other object is "equal to" this one.
        +
        +
        int
        + +
        +
        Gets the x-coordinate of the point.
        +
        +
        int
        + +
        +
        Gets the y-coordinate of the point.
        +
        +
        int
        + +
        +
        Returns a hash code value for the IntPoint.
        +
        + + +
        +
        Returns a string representation of the IntPoint.
        +
        +
        +
        +
        +
        +

        Von Klasse geerbte Methoden java.lang.Object

        +clone, finalize, getClass, notify, notifyAll, wait, wait, wait
        +
        +
      • +
      +
      +
      +
        + +
      • +
        +

        Konstruktordetails

        +
          +
        • +
          +

          IntPoint

          +
          public IntPoint(int x, + int y)
          +
          Constructs a new IntPoint with the specified coordinates.
          +
          +
          Parameter:
          +
          x - the x-coordinate of the point
          +
          y - the y-coordinate of the point
          +
          +
          +
        • +
        +
        +
      • + +
      • +
        +

        Methodendetails

        +
          +
        • +
          +

          getX

          +
          public int getX()
          +
          Gets the x-coordinate of the point.
          +
          +
          Angegeben von:
          +
          getX in Schnittstelle IntPosition
          +
          Gibt zurück:
          +
          the x-coordinate
          +
          +
          +
        • +
        • +
          +

          getY

          +
          public int getY()
          +
          Gets the y-coordinate of the point.
          +
          +
          Angegeben von:
          +
          getY in Schnittstelle IntPosition
          +
          Gibt zurück:
          +
          the y-coordinate
          +
          +
          +
        • +
        • +
          +

          equals

          +
          public boolean equals(Object obj)
          +
          Indicates whether some other object is "equal to" this one.
          +
          +
          Setzt außer Kraft:
          +
          equals in Klasse Object
          +
          Parameter:
          +
          obj - the reference object with which to compare
          +
          Gibt zurück:
          +
          true if this object is the same as the obj argument; false otherwise
          +
          +
          +
        • +
        • +
          +

          hashCode

          +
          public int hashCode()
          +
          Returns a hash code value for the IntPoint.
          +
          +
          Setzt außer Kraft:
          +
          hashCode in Klasse Object
          +
          Gibt zurück:
          +
          a hash code value for this object
          +
          +
          +
        • +
        • +
          +

          toString

          +
          public String toString()
          +
          Returns a string representation of the IntPoint.
          +
          +
          Setzt außer Kraft:
          +
          toString in Klasse Object
          +
          Gibt zurück:
          +
          a string representation of the object
          +
          +
          +
        • +
        +
        +
      • +
      +
      + +
      +
      +
      + + diff --git a/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/model/IntPosition.html b/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/model/IntPosition.html new file mode 100644 index 0000000..3243536 --- /dev/null +++ b/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/model/IntPosition.html @@ -0,0 +1,165 @@ + + + + +IntPosition (model API) + + + + + + + + + + + + + +
      + +
      +
      + +
      + +

      Schnittstelle IntPosition

      +
      +
      +
      +
      Alle bekannten Implementierungsklassen:
      +
      IntPoint, Shot
      +
      +
      +
      public interface IntPosition
      +
      Interface representing a position with X and Y coordinates.
      +
      +
      +
        + +
      • +
        +

        Methodenübersicht

        +
        +
        +
        +
        +
        Modifizierer und Typ
        +
        Methode
        +
        Beschreibung
        +
        int
        + +
        +
        Returns the X coordinate of this position.
        +
        +
        int
        + +
        +
        Returns the Y coordinate of this position.
        +
        +
        +
        +
        +
        +
      • +
      +
      +
      +
        + +
      • +
        +

        Methodendetails

        +
          +
        • +
          +

          getX

          +
          int getX()
          +
          Returns the X coordinate of this position.
          +
          +
          Gibt zurück:
          +
          the X coordinate.
          +
          +
          +
        • +
        • +
          +

          getY

          +
          int getY()
          +
          Returns the Y coordinate of this position.
          +
          +
          Gibt zurück:
          +
          the Y coordinate.
          +
          +
          +
        • +
        +
        +
      • +
      +
      + +
      +
      +
      + + diff --git a/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/model/Item.html b/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/model/Item.html new file mode 100644 index 0000000..940f0da --- /dev/null +++ b/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/model/Item.html @@ -0,0 +1,170 @@ + + + + +Item (model API) + + + + + + + + + + + + + +
      + +
      +
      + +
      + +

      Schnittstelle Item

      +
      +
      +
      +
      Alle bekannten Implementierungsklassen:
      +
      Battleship, Shot
      +
      +
      +
      public interface Item
      +
      An interface representing any item on a ship map. + It extends the IntPosition interface to provide position information.
      +
      +
      +
        + +
      • +
        +

        Methodenübersicht

        +
        +
        +
        +
        +
        Modifizierer und Typ
        +
        Methode
        +
        Beschreibung
        +
        <T> T
        +
        accept(Visitor<T> visitor)
        +
        +
        Accepts a visitor to perform operations on the item.
        +
        +
        void
        + +
        +
        Accepts a visitor to perform operations on the item without returning a result.
        +
        +
        +
        +
        +
        +
      • +
      +
      +
      +
        + +
      • +
        +

        Methodendetails

        +
          +
        • +
          +

          accept

          +
          <T> T accept(Visitor<T> visitor)
          +
          Accepts a visitor to perform operations on the item.
          +
          +
          Typparameter:
          +
          T - the type of result returned by the visitor
          +
          Parameter:
          +
          visitor - the visitor performing operations on the item
          +
          Gibt zurück:
          +
          the result of the visitor's operation on the item
          +
          +
          +
        • +
        • +
          +

          accept

          +
          void accept(VoidVisitor visitor)
          +
          Accepts a visitor to perform operations on the item without returning a result.
          +
          +
          Parameter:
          +
          visitor - the visitor performing operations on the item
          +
          +
          +
        • +
        +
        +
      • +
      +
      + +
      +
      +
      + + diff --git a/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/model/Rotation.html b/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/model/Rotation.html new file mode 100644 index 0000000..20d9e4c --- /dev/null +++ b/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/model/Rotation.html @@ -0,0 +1,308 @@ + + + + +Rotation (model API) + + + + + + + + + + + + + +
      + +
      +
      + +
      + +

      Enum-Klasse Rotation

      +
      +
      java.lang.Object +
      java.lang.Enum<Rotation> +
      pp.battleship.model.Rotation
      +
      +
      +
      +
      +
      Alle implementierten Schnittstellen:
      +
      Serializable, Comparable<Rotation>, Constable
      +
      +
      +
      public enum Rotation +extends Enum<Rotation> +implements Serializable
      +
      Represents the rotation of a ship and provides functionality related to rotation.
      +
      +
      +
        + +
      • +
        +

        Verschachtelte Klassen - Übersicht

        +
        +

        Von Klasse geerbte verschachtelte Klassen/Schnittstellen java.lang.Enum

        +Enum.EnumDesc<E extends Enum<E>>
        +
        +
      • + +
      • +
        +

        Enum-Konstanten - Übersicht

        +
        Enum-Konstanten
        +
        +
        Enum-Konstante
        +
        Beschreibung
        + +
        +
        Represents the ship facing downwards.
        +
        + +
        +
        Represents the ship facing leftwards.
        +
        + +
        +
        Represents the ship facing rightwards.
        +
        + +
        +
        Represents the ship facing upwards.
        +
        +
        +
        +
      • + +
      • +
        +

        Methodenübersicht

        +
        +
        +
        +
        +
        Modifizierer und Typ
        +
        Methode
        +
        Beschreibung
        +
        int
        +
        dx()
        +
        +
        Gets the change in x-coordinate corresponding to this rotation.
        +
        +
        int
        +
        dy()
        +
        +
        Gets the change in y-coordinate corresponding to this rotation.
        +
        + + +
        +
        Rotates the orientation clockwise and returns the next rotation.
        +
        +
        static Rotation
        + +
        +
        Gibt die Enum-Konstante dieser Klasse mit dem angegebenen Namen zurück.
        +
        +
        static Rotation[]
        + +
        +
        Gibt ein Array mit den Konstanten dieser Enum-Klasse in +der Reihenfolge ihrer Deklaration zurück.
        +
        +
        +
        +
        + +
        +

        Von Klasse geerbte Methoden java.lang.Object

        +getClass, notify, notifyAll, wait, wait, wait
        +
        +
      • +
      +
      +
      +
        + +
      • +
        +

        Enum-Konstanten - Details

        +
          +
        • +
          +

          UP

          +
          public static final Rotation UP
          +
          Represents the ship facing upwards.
          +
          +
        • +
        • + +
        • +
        • +
          +

          DOWN

          +
          public static final Rotation DOWN
          +
          Represents the ship facing downwards.
          +
          +
        • +
        • +
          +

          LEFT

          +
          public static final Rotation LEFT
          +
          Represents the ship facing leftwards.
          +
          +
        • +
        +
        +
      • + +
      • +
        +

        Methodendetails

        +
          +
        • +
          +

          values

          +
          public static Rotation[] values()
          +
          Gibt ein Array mit den Konstanten dieser Enum-Klasse in +der Reihenfolge ihrer Deklaration zurück.
          +
          +
          Gibt zurück:
          +
          ein Array mit den Konstanten dieser Enum-Klasse in der Reihenfolge ihrer Deklaration
          +
          +
          +
        • +
        • +
          +

          valueOf

          +
          public static Rotation valueOf(String name)
          +
          Gibt die Enum-Konstante dieser Klasse mit dem angegebenen Namen zurück. +Die Zeichenfolge muss exakt mit einer ID übereinstimmen, +mit der eine Enum-Konstante in dieser Klasse deklariert wird. +(Zusätzliche Leerzeichen sind nicht zulässig.)
          +
          +
          Parameter:
          +
          name - Name der zurückzugebenden Enumerationskonstante.
          +
          Gibt zurück:
          +
          Enumerationskonstante mit dem angegebenen Namen
          +
          Löst aus:
          +
          IllegalArgumentException - wenn diese Enum-Klasse keine Konstante mit dem angegebenen Namen enthält
          +
          NullPointerException - wenn das Argument nicht angegeben wird
          +
          +
          +
        • +
        • +
          +

          dx

          +
          public int dx()
          +
          Gets the change in x-coordinate corresponding to this rotation.
          +
          +
          Gibt zurück:
          +
          the change in x-coordinate
          +
          +
          +
        • +
        • +
          +

          dy

          +
          public int dy()
          +
          Gets the change in y-coordinate corresponding to this rotation.
          +
          +
          Gibt zurück:
          +
          the change in y-coordinate
          +
          +
          +
        • +
        • +
          +

          rotate

          +
          public Rotation rotate()
          +
          Rotates the orientation clockwise and returns the next rotation.
          +
          +
          Gibt zurück:
          +
          the next rotation after rotating clockwise
          +
          +
          +
        • +
        +
        +
      • +
      +
      + +
      +
      +
      + + diff --git a/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/model/Shell.html b/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/model/Shell.html new file mode 100644 index 0000000..a50f575 --- /dev/null +++ b/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/model/Shell.html @@ -0,0 +1,193 @@ + + + + +Shell (model API) + + + + + + + + + + + + + +
      + +
      +
      + +
      + +

      Klasse Shell

      +
      +
      java.lang.Object +
      pp.battleship.model.Shell
      +
      +
      +
      +
      public class Shell +extends Object
      +
      +
      + +
      +
      +
        + +
      • +
        +

        Konstruktordetails

        +
          +
        • +
          +

          Shell

          +
          public Shell(com.jme3.math.Vector3f startPosition, + com.jme3.math.Vector3f targetPosition, + float speed)
          +
          +
        • +
        +
        +
      • + +
      • +
        +

        Methodendetails

        +
          +
        • +
          +

          updatePosition

          +
          public void updatePosition(float deltaTime)
          +
          +
        • +
        • +
          +

          getCurrentPosition

          +
          public com.jme3.math.Vector3f getCurrentPosition()
          +
          +
        • +
        • +
          +

          isAtTarget

          +
          public boolean isAtTarget()
          +
          +
        • +
        +
        +
      • +
      +
      + +
      +
      +
      + + diff --git a/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/model/ShellControl.html b/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/model/ShellControl.html new file mode 100644 index 0000000..f3203ff --- /dev/null +++ b/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/model/ShellControl.html @@ -0,0 +1,226 @@ + + + + +ShellControl (model API) + + + + + + + + + + + + + +
      + +
      +
      + +
      + +

      Klasse ShellControl

      +
      +
      java.lang.Object +
      com.jme3.scene.control.AbstractControl +
      pp.battleship.model.ShellControl
      +
      +
      +
      +
      +
      Alle implementierten Schnittstellen:
      +
      com.jme3.export.Savable, com.jme3.scene.control.Control, com.jme3.util.clone.JmeCloneable, Cloneable
      +
      +
      +
      public class ShellControl +extends com.jme3.scene.control.AbstractControl
      +
      +
      +
        + +
      • +
        +

        Feldübersicht

        +
        +

        Von Klasse geerbte Felder com.jme3.scene.control.AbstractControl

        +enabled, spatial
        +
        +
      • + +
      • +
        +

        Konstruktorübersicht

        +
        Konstruktoren
        +
        +
        Konstruktor
        +
        Beschreibung
        + +
         
        +
        +
        +
      • + +
      • +
        +

        Methodenübersicht

        +
        +
        +
        +
        +
        Modifizierer und Typ
        +
        Methode
        +
        Beschreibung
        +
        protected void
        +
        controlRender(com.jme3.renderer.RenderManager rm, + com.jme3.renderer.ViewPort vp)
        +
         
        +
        protected void
        +
        controlUpdate(float deltaTime)
        +
         
        + + +
         
        +
        void
        +
        setShell(Shell shell)
        +
         
        +
        +
        +
        +
        +

        Von Klasse geerbte Methoden com.jme3.scene.control.AbstractControl

        +cloneFields, cloneForSpatial, getSpatial, isEnabled, jmeClone, read, render, setEnabled, setSpatial, update, write
        +
        +

        Von Klasse geerbte Methoden java.lang.Object

        +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
        +
        +
      • +
      +
      +
      +
        + +
      • +
        +

        Konstruktordetails

        +
          +
        • +
          +

          ShellControl

          +
          public ShellControl(Shell shell)
          +
          +
        • +
        +
        +
      • + +
      • +
        +

        Methodendetails

        +
          +
        • +
          +

          controlUpdate

          +
          protected void controlUpdate(float deltaTime)
          +
          +
          Angegeben von:
          +
          controlUpdate in Klasse com.jme3.scene.control.AbstractControl
          +
          +
          +
        • +
        • +
          +

          setShell

          +
          public void setShell(Shell shell)
          +
          +
        • +
        • +
          +

          getShell

          +
          public Shell getShell()
          +
          +
        • +
        • +
          +

          controlRender

          +
          protected void controlRender(com.jme3.renderer.RenderManager rm, + com.jme3.renderer.ViewPort vp)
          +
          +
          Angegeben von:
          +
          controlRender in Klasse com.jme3.scene.control.AbstractControl
          +
          +
          +
        • +
        +
        +
      • +
      +
      + +
      +
      +
      + + diff --git a/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/model/ShipMap.html b/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/model/ShipMap.html new file mode 100644 index 0000000..e90a5db --- /dev/null +++ b/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/model/ShipMap.html @@ -0,0 +1,462 @@ + + + + +ShipMap (model API) + + + + + + + + + + + + + +
      + +
      +
      + +
      + +

      Klasse ShipMap

      +
      +
      java.lang.Object +
      pp.battleship.model.ShipMap
      +
      +
      +
      +
      public class ShipMap +extends Object
      +
      Represents a rectangular map that holds ships and registers shots fired. + It also supports event notification for game state changes such as item addition or removal. + Valid positions on this map have x-coordinates in the range of 0 to width-1 and y-coordinates + in the range of 0 to height-1.
      +
      +
      Siehe auch:
      +
      + +
      +
      +
      +
      +
        + +
      • +
        +

        Konstruktorübersicht

        +
        Konstruktoren
        +
        +
        Konstruktor
        +
        Beschreibung
        +
        ShipMap(int width, + int height, + GameEventBroker eventBroker)
        +
        +
        Constructs an empty map with the given dimensions.
        +
        +
        +
        +
      • + +
      • +
        +

        Methodenübersicht

        +
        +
        +
        +
        +
        Modifizierer und Typ
        +
        Methode
        +
        Beschreibung
        +
        void
        + +
        +
        Adds a battleship to the map and triggers an item addition event.
        +
        +
        void
        +
        add(Shot shot)
        +
        +
        Registers a shot on the map, updates the state of the affected ship (if any), + and triggers an item addition event.
        +
        +
        void
        + +
        +
        Removes all items from the map and triggers corresponding removal events for each.
        +
        + +
        findShipAt(int x, + int y)
        +
        +
        Finds a battleship at the specified coordinates.
        +
        + + +
        +
        Finds a battleship at the specified position.
        +
        +
        int
        + +
        +
        Returns the height (number of rows) of the map.
        +
        + + +
        +
        Returns an unmodifiable list of all items currently on the map.
        +
        + + +
        +
        Returns a list of all remaining battleships that have not been destroyed.
        +
        + + +
        +
        Returns a stream of all battleships currently on the map.
        +
        + + +
        +
        Returns a stream of all shots fired on the map.
        +
        +
        int
        + +
        +
        Returns the width (number of columns) of the map.
        +
        +
        boolean
        +
        isValid(int x, + int y)
        +
        +
        Checks if the specified coordinates are within the map boundaries.
        +
        +
        boolean
        + +
        +
        Checks if the given ship is in a valid position (within the map bounds and non-colliding with other ships).
        +
        +
        boolean
        + +
        +
        Validates whether the specified position is within the map boundaries.
        +
        +
        void
        +
        remove(Item item)
        +
        +
        Removes an item from the map and triggers an item removal event.
        +
        + + +
        +
        Returns a string representation of the ship map.
        +
        +
        +
        +
        +
        +

        Von Klasse geerbte Methoden java.lang.Object

        +clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
        +
        +
      • +
      +
      +
      +
        + +
      • +
        +

        Konstruktordetails

        +
          +
        • +
          +

          ShipMap

          +
          public ShipMap(int width, + int height, + GameEventBroker eventBroker)
          +
          Constructs an empty map with the given dimensions. The specified event broker + will handle the notification of changes in the map state, such as adding or removing items. + Passing null as the event broker is allowed, but in that case, no notifications will occur.
          +
          +
          Parameter:
          +
          width - the number of columns (width) of the map
          +
          height - the number of rows (height) of the map
          +
          eventBroker - the event broker used for notifying listeners, or null if event distribution is not needed
          +
          +
          +
        • +
        +
        +
      • + +
      • +
        +

        Methodendetails

        +
          +
        • +
          +

          add

          +
          public void add(Battleship ship)
          +
          Adds a battleship to the map and triggers an item addition event.
          +
          +
          Parameter:
          +
          ship - the battleship to be added to the map
          +
          +
          +
        • +
        • +
          +

          add

          +
          public void add(Shot shot)
          +
          Registers a shot on the map, updates the state of the affected ship (if any), + and triggers an item addition event.
          +
          +
          Parameter:
          +
          shot - the shot to be registered on the map
          +
          +
          +
        • +
        • +
          +

          remove

          +
          public void remove(Item item)
          +
          Removes an item from the map and triggers an item removal event.
          +
          +
          Parameter:
          +
          item - the item to be removed from the map
          +
          +
          +
        • +
        • +
          +

          clear

          +
          public void clear()
          +
          Removes all items from the map and triggers corresponding removal events for each.
          +
          +
        • +
        • +
          +

          getShips

          +
          public Stream<Battleship> getShips()
          +
          Returns a stream of all battleships currently on the map.
          +
          +
          Gibt zurück:
          +
          a stream of battleships
          +
          +
          +
        • +
        • +
          +

          getRemainingShips

          +
          public List<Battleship> getRemainingShips()
          +
          Returns a list of all remaining battleships that have not been destroyed.
          +
          +
          Gibt zurück:
          +
          a list of remaining battleships
          +
          +
          +
        • +
        • +
          +

          getShots

          +
          public Stream<Shot> getShots()
          +
          Returns a stream of all shots fired on the map.
          +
          +
          Gibt zurück:
          +
          a stream of shots
          +
          +
          +
        • +
        • +
          +

          getItems

          +
          public List<Item> getItems()
          +
          Returns an unmodifiable list of all items currently on the map.
          +
          +
          Gibt zurück:
          +
          an unmodifiable list of all items
          +
          +
          +
        • +
        • +
          +

          getWidth

          +
          public int getWidth()
          +
          Returns the width (number of columns) of the map.
          +
          +
          Gibt zurück:
          +
          the width of the map
          +
          +
          +
        • +
        • +
          +

          getHeight

          +
          public int getHeight()
          +
          Returns the height (number of rows) of the map.
          +
          +
          Gibt zurück:
          +
          the height of the map
          +
          +
          +
        • +
        • +
          +

          isValid

          +
          public boolean isValid(Battleship ship)
          +
          Checks if the given ship is in a valid position (within the map bounds and non-colliding with other ships).
          +
          +
          Parameter:
          +
          ship - the battleship to validate
          +
          Gibt zurück:
          +
          true if the ship's position is valid, false otherwise
          +
          +
          +
        • +
        • +
          +

          findShipAt

          +
          public Battleship findShipAt(int x, + int y)
          +
          Finds a battleship at the specified coordinates.
          +
          +
          Parameter:
          +
          x - the x-coordinate of the position
          +
          y - the y-coordinate of the position
          +
          Gibt zurück:
          +
          the ship at the specified coordinates, or null if none is found
          +
          +
          +
        • +
        • +
          +

          findShipAt

          +
          public Battleship findShipAt(IntPosition position)
          +
          Finds a battleship at the specified position. This is a convenience method.
          +
          +
          Parameter:
          +
          position - the position within the map
          +
          Gibt zurück:
          +
          the ship at the specified position, or null if none is found
          +
          +
          +
        • +
        • +
          +

          isValid

          +
          public boolean isValid(IntPosition pos)
          +
          Validates whether the specified position is within the map boundaries.
          +
          +
          Parameter:
          +
          pos - the position to validate
          +
          Gibt zurück:
          +
          true if the position is within the map, false otherwise
          +
          +
          +
        • +
        • +
          +

          isValid

          +
          public boolean isValid(int x, + int y)
          +
          Checks if the specified coordinates are within the map boundaries.
          +
          +
          Parameter:
          +
          x - the x-coordinate to validate
          +
          y - the y-coordinate to validate
          +
          Gibt zurück:
          +
          true if the coordinates are valid, false otherwise
          +
          +
          +
        • +
        • +
          +

          toString

          +
          public String toString()
          +
          Returns a string representation of the ship map.
          +
          +
          Setzt außer Kraft:
          +
          toString in Klasse Object
          +
          Gibt zurück:
          +
          a string representation of the ship map
          +
          +
          +
        • +
        +
        +
      • +
      +
      + +
      +
      +
      + + diff --git a/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/model/Shot.html b/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/model/Shot.html new file mode 100644 index 0000000..0cf03a2 --- /dev/null +++ b/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/model/Shot.html @@ -0,0 +1,349 @@ + + + + +Shot (model API) + + + + + + + + + + + + + +
      + +
      +
      + +
      + +

      Klasse Shot

      +
      +
      java.lang.Object +
      pp.battleship.model.Shot
      +
      +
      +
      +
      Alle implementierten Schnittstellen:
      +
      IntPosition, Item
      +
      +
      +
      public final class Shot +extends Object +implements Item, IntPosition
      +
      Represents a shot in the Battleship game. + A shot is defined by its coordinates and whether it was a hit or miss.
      +
      +
      +
        + +
      • +
        +

        Konstruktorübersicht

        +
        Konstruktoren
        +
        +
        Konstruktor
        +
        Beschreibung
        +
        Shot(int x, + int y, + boolean hit)
        +
        +
        Creates a new shot.
        +
        +
        Shot(IntPosition pos, + boolean hit)
        +
        +
        Creates a new shot.
        +
        +
        +
        +
      • + +
      • +
        +

        Methodenübersicht

        +
        +
        +
        +
        +
        Modifizierer und Typ
        +
        Methode
        +
        Beschreibung
        +
        <T> T
        +
        accept(Visitor<T> visitor)
        +
        +
        Accepts a visitor with a return value.
        +
        +
        void
        + +
        +
        Accepts a visitor without a return value.
        +
        +
        boolean
        + +
        +
        Checks if this shot is equal to another object.
        +
        +
        int
        + +
        +
        Gets the x-coordinate of the shot.
        +
        +
        int
        + +
        +
        Gets the y-coordinate of the shot.
        +
        +
        int
        + +
        +
        Computes the hash code of this shot.
        +
        +
        boolean
        + +
        +
        Checks if the shot was a hit.
        +
        + + +
        +
        Returns a string representation of the shot.
        +
        +
        +
        +
        +
        +

        Von Klasse geerbte Methoden java.lang.Object

        +clone, finalize, getClass, notify, notifyAll, wait, wait, wait
        +
        +
      • +
      +
      +
      +
        + +
      • +
        +

        Konstruktordetails

        +
          +
        • +
          +

          Shot

          +
          public Shot(int x, + int y, + boolean hit)
          +
          Creates a new shot.
          +
          +
          Parameter:
          +
          x - the x-coordinate of the shot
          +
          y - the y-coordinate of the shot
          +
          hit - indicates whether the shot was a hit
          +
          +
          +
        • +
        • +
          +

          Shot

          +
          public Shot(IntPosition pos, + boolean hit)
          +
          Creates a new shot.
          +
          +
          Parameter:
          +
          pos - the position of the shot
          +
          hit - indicates whether the shot was a hit
          +
          +
          +
        • +
        +
        +
      • + +
      • +
        +

        Methodendetails

        +
          +
        • +
          +

          getX

          +
          public int getX()
          +
          Gets the x-coordinate of the shot.
          +
          +
          Angegeben von:
          +
          getX in Schnittstelle IntPosition
          +
          Gibt zurück:
          +
          the x-coordinate of the shot
          +
          +
          +
        • +
        • +
          +

          getY

          +
          public int getY()
          +
          Gets the y-coordinate of the shot.
          +
          +
          Angegeben von:
          +
          getY in Schnittstelle IntPosition
          +
          Gibt zurück:
          +
          the y-coordinate of the shot
          +
          +
          +
        • +
        • +
          +

          isHit

          +
          public boolean isHit()
          +
          Checks if the shot was a hit.
          +
          +
          Gibt zurück:
          +
          true if the shot was a hit, false otherwise
          +
          +
          +
        • +
        • +
          +

          equals

          +
          public boolean equals(Object obj)
          +
          Checks if this shot is equal to another object. + Two shots are considered equal if they have the same coordinates and hit status.
          +
          +
          Setzt außer Kraft:
          +
          equals in Klasse Object
          +
          Parameter:
          +
          obj - the object to compare with
          +
          Gibt zurück:
          +
          true if the objects are equal, false otherwise
          +
          +
          +
        • +
        • +
          +

          hashCode

          +
          public int hashCode()
          +
          Computes the hash code of this shot.
          +
          +
          Setzt außer Kraft:
          +
          hashCode in Klasse Object
          +
          Gibt zurück:
          +
          the hash code of this shot
          +
          +
          +
        • +
        • +
          +

          toString

          +
          public String toString()
          +
          Returns a string representation of the shot.
          +
          +
          Setzt außer Kraft:
          +
          toString in Klasse Object
          +
          Gibt zurück:
          +
          a string representation of the shot
          +
          +
          +
        • +
        • +
          +

          accept

          +
          public <T> T accept(Visitor<T> visitor)
          +
          Accepts a visitor with a return value.
          +
          +
          Angegeben von:
          +
          accept in Schnittstelle Item
          +
          Typparameter:
          +
          T - the type of the return value
          +
          Parameter:
          +
          visitor - the visitor to accept
          +
          Gibt zurück:
          +
          the result of the visitor's visit method
          +
          +
          +
        • +
        • +
          +

          accept

          +
          public void accept(VoidVisitor visitor)
          +
          Accepts a visitor without a return value.
          +
          +
          Angegeben von:
          +
          accept in Schnittstelle Item
          +
          Parameter:
          +
          visitor - the visitor to accept
          +
          +
          +
        • +
        +
        +
      • +
      +
      + +
      +
      +
      + + diff --git a/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/model/Visitor.html b/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/model/Visitor.html new file mode 100644 index 0000000..1073e24 --- /dev/null +++ b/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/model/Visitor.html @@ -0,0 +1,169 @@ + + + + +Visitor (model API) + + + + + + + + + + + + + +
      + +
      +
      + +
      + +

      Schnittstelle Visitor<T>

      +
      +
      +
      +
      Typparameter:
      +
      T - the type of result returned by the visit methods
      +
      +
      +
      public interface Visitor<T>
      +
      An interface for implementing the Visitor pattern for different types of elements in the Battleship model.
      +
      +
      +
        + +
      • +
        +

        Methodenübersicht

        +
        +
        +
        +
        +
        Modifizierer und Typ
        +
        Methode
        +
        Beschreibung
        + + +
        +
        Visits a Battleship element.
        +
        + +
        visit(Shot shot)
        +
        +
        Visits a Shot element.
        +
        +
        +
        +
        +
        +
      • +
      +
      +
      +
        + +
      • +
        +

        Methodendetails

        +
          +
        • +
          +

          visit

          +
          T visit(Shot shot)
          +
          Visits a Shot element.
          +
          +
          Parameter:
          +
          shot - the Shot element to visit
          +
          Gibt zurück:
          +
          the result of visiting the Shot element
          +
          +
          +
        • +
        • +
          +

          visit

          +
          T visit(Battleship ship)
          +
          Visits a Battleship element.
          +
          +
          Parameter:
          +
          ship - the Battleship element to visit
          +
          Gibt zurück:
          +
          the result of visiting the Battleship element
          +
          +
          +
        • +
        +
        +
      • +
      +
      + +
      +
      +
      + + diff --git a/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/model/VoidVisitor.html b/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/model/VoidVisitor.html new file mode 100644 index 0000000..38141cc --- /dev/null +++ b/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/model/VoidVisitor.html @@ -0,0 +1,162 @@ + + + + +VoidVisitor (model API) + + + + + + + + + + + + + +
      + +
      +
      + +
      + +

      Schnittstelle VoidVisitor

      +
      +
      +
      +
      public interface VoidVisitor
      +
      An interface for implementing the Visitor pattern for different types of elements in the Battleship model + without returning any result.
      +
      +
      +
        + +
      • +
        +

        Methodenübersicht

        +
        +
        +
        +
        +
        Modifizierer und Typ
        +
        Methode
        +
        Beschreibung
        +
        void
        + +
        +
        Visits a Battleship element.
        +
        +
        void
        +
        visit(Shot shot)
        +
        +
        Visits a Shot element.
        +
        +
        +
        +
        +
        +
      • +
      +
      +
      +
        + +
      • +
        +

        Methodendetails

        +
          +
        • +
          +

          visit

          +
          void visit(Shot shot)
          +
          Visits a Shot element.
          +
          +
          Parameter:
          +
          shot - the Shot element to visit
          +
          +
          +
        • +
        • +
          +

          visit

          +
          void visit(Battleship ship)
          +
          Visits a Battleship element.
          +
          +
          Parameter:
          +
          ship - the Battleship element to visit
          +
          +
          +
        • +
        +
        +
      • +
      +
      + +
      +
      +
      + + diff --git a/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/model/dto/ShipMapDTO.html b/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/model/dto/ShipMapDTO.html new file mode 100644 index 0000000..3ed286a --- /dev/null +++ b/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/model/dto/ShipMapDTO.html @@ -0,0 +1,244 @@ + + + + +ShipMapDTO (model API) + + + + + + + + + + + + + +
      + +
      +
      + +
      + +

      Klasse ShipMapDTO

      +
      +
      java.lang.Object +
      pp.battleship.model.dto.ShipMapDTO
      +
      +
      +
      +
      public class ShipMapDTO +extends Object
      +
      A class representing data transfer objects of ship maps for JSON serialization and deserialization.
      +
      +
      +
        + +
      • +
        +

        Konstruktorübersicht

        +
        Konstruktoren
        +
        +
        Konstruktor
        +
        Beschreibung
        + +
        +
        Constructs a ShipMapDTO object from a ShipMap object.
        +
        +
        +
        +
      • + +
      • +
        +

        Methodenübersicht

        +
        +
        +
        +
        +
        Modifizierer und Typ
        +
        Methode
        +
        Beschreibung
        +
        boolean
        +
        fits(GameDetails details)
        +
        +
        Checks if the current ship map fits the game details provided.
        +
        + + +
        +
        Returns the ships stored in this DTO.
        +
        +
        static ShipMapDTO
        +
        loadFrom(File file)
        +
        +
        Loads a ShipMapDTO from a file containing JSON data.
        +
        +
        void
        +
        saveTo(File file)
        +
        +
        Saves the current ShipMapDTO to a file in JSON format.
        +
        +
        +
        +
        +
        +

        Von Klasse geerbte Methoden java.lang.Object

        +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
        +
        +
      • +
      +
      +
      +
        + +
      • +
        +

        Konstruktordetails

        +
          +
        • +
          +

          ShipMapDTO

          +
          public ShipMapDTO(ShipMap map)
          +
          Constructs a ShipMapDTO object from a ShipMap object.
          +
          +
          Parameter:
          +
          map - the ShipMap object to be converted
          +
          +
          +
        • +
        +
        +
      • + +
      • +
        +

        Methodendetails

        +
          +
        • +
          +

          fits

          +
          public boolean fits(GameDetails details)
          +
          Checks if the current ship map fits the game details provided.
          +
          +
          Parameter:
          +
          details - the game details to be matched against
          +
          Gibt zurück:
          +
          true if the ship map fits the game details, false otherwise
          +
          +
          +
        • +
        • +
          +

          getShips

          +
          public List<Battleship> getShips()
          +
          Returns the ships stored in this DTO.
          +
          +
          Gibt zurück:
          +
          the ships stored in this DTO
          +
          +
          +
        • +
        • +
          +

          saveTo

          +
          public void saveTo(File file) + throws IOException
          +
          Saves the current ShipMapDTO to a file in JSON format.
          +
          +
          Parameter:
          +
          file - the file to which the ShipMapDTO will be saved
          +
          Löst aus:
          +
          IOException - if an I/O error occurs
          +
          +
          +
        • +
        • +
          +

          loadFrom

          +
          public static ShipMapDTO loadFrom(File file) + throws IOException
          +
          Loads a ShipMapDTO from a file containing JSON data.
          +
          +
          Parameter:
          +
          file - the file from which the ShipMapDTO will be loaded
          +
          Gibt zurück:
          +
          the loaded ShipMapDTO object
          +
          Löst aus:
          +
          IOException - if an I/O error occurs or if the JSON is invalid
          +
          +
          +
        • +
        +
        +
      • +
      +
      + +
      +
      +
      + + diff --git a/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/model/dto/package-summary.html b/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/model/dto/package-summary.html new file mode 100644 index 0000000..7d89ca6 --- /dev/null +++ b/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/model/dto/package-summary.html @@ -0,0 +1,103 @@ + + + + +pp.battleship.model.dto (model API) + + + + + + + + + + + + + +
      + +
      +
      +
      +

      Package pp.battleship.model.dto

      +
      +
      +
      package pp.battleship.model.dto
      +
      +
        +
      • + +
      • +
      • +
        +
        Klassen
        +
        +
        Klasse
        +
        Beschreibung
        + +
        +
        A class representing data transfer objects of ship maps for JSON serialization and deserialization.
        +
        +
        +
        +
      • +
      +
      +
      +
      +
      + + diff --git a/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/model/dto/package-tree.html b/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/model/dto/package-tree.html new file mode 100644 index 0000000..78118df --- /dev/null +++ b/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/model/dto/package-tree.html @@ -0,0 +1,70 @@ + + + + +pp.battleship.model.dto Klassenhierarchie (model API) + + + + + + + + + + + + + +
      + +
      +
      +
      +

      Hierarchie für Package pp.battleship.model.dto

      +
      +Packagehierarchien: + +
      +

      Klassenhierarchie

      + +
      +
      +
      +
      + + diff --git a/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/model/package-summary.html b/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/model/package-summary.html new file mode 100644 index 0000000..aeba077 --- /dev/null +++ b/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/model/package-summary.html @@ -0,0 +1,150 @@ + + + + +pp.battleship.model (model API) + + + + + + + + + + + + + +
      + +
      +
      +
      +

      Package pp.battleship.model

      +
      +
      +
      package pp.battleship.model
      +
      +
        +
      • + +
      • +
      • +
        +
        +
        +
        +
        Klasse
        +
        Beschreibung
        + +
        +
        Represents a battleship in the game.
        +
        + +
        +
        Enumeration representing the different statuses a battleship can have during the game.
        +
        + +
        +
        Represents a point in the two-dimensional plane with integer coordinates.
        +
        + +
        +
        Interface representing a position with X and Y coordinates.
        +
        + +
        +
        An interface representing any item on a ship map.
        +
        + +
        +
        Represents the rotation of a ship and provides functionality related to rotation.
        +
        + +
         
        + +
         
        + +
        +
        Represents a rectangular map that holds ships and registers shots fired.
        +
        + +
        +
        Represents a shot in the Battleship game.
        +
        + +
        +
        An interface for implementing the Visitor pattern for different types of elements in the Battleship model.
        +
        + +
        +
        An interface for implementing the Visitor pattern for different types of elements in the Battleship model + without returning any result.
        +
        +
        +
        +
        +
      • +
      +
      +
      +
      +
      + + diff --git a/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/model/package-tree.html b/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/model/package-tree.html new file mode 100644 index 0000000..9249673 --- /dev/null +++ b/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/model/package-tree.html @@ -0,0 +1,103 @@ + + + + +pp.battleship.model Klassenhierarchie (model API) + + + + + + + + + + + + + +
      + +
      +
      +
      +

      Hierarchie für Package pp.battleship.model

      +
      +Packagehierarchien: + +
      +

      Klassenhierarchie

      +
        +
      • java.lang.Object +
          +
        • com.jme3.scene.control.AbstractControl (implements com.jme3.scene.control.Control, com.jme3.util.clone.JmeCloneable) + +
        • +
        • pp.battleship.model.Battleship (implements pp.battleship.model.Item)
        • +
        • pp.battleship.model.IntPoint (implements pp.battleship.model.IntPosition)
        • +
        • pp.battleship.model.Shell
        • +
        • pp.battleship.model.ShipMap
        • +
        • pp.battleship.model.Shot (implements pp.battleship.model.IntPosition, pp.battleship.model.Item)
        • +
        +
      • +
      +
      +
      +

      Schnittstellenhierarchie

      + +
      +
      +

      Enum-Klassenhierarchie

      + +
      +
      +
      +
      + + diff --git a/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/notification/ClientStateEvent.html b/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/notification/ClientStateEvent.html new file mode 100644 index 0000000..34b732c --- /dev/null +++ b/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/notification/ClientStateEvent.html @@ -0,0 +1,247 @@ + + + + +ClientStateEvent (model API) + + + + + + + + + + + + + +
      + +
      +
      + +
      + +

      Datensatzklasse ClientStateEvent

      +
      +
      java.lang.Object +
      java.lang.Record +
      pp.battleship.notification.ClientStateEvent
      +
      +
      +
      +
      +
      Alle implementierten Schnittstellen:
      +
      GameEvent
      +
      +
      +
      public record ClientStateEvent() +extends Record +implements GameEvent
      +
      Event when an item is added to a map.
      +
      +
      +
        + +
      • +
        +

        Konstruktorübersicht

        +
        Konstruktoren
        +
        +
        Konstruktor
        +
        Beschreibung
        + +
        +
        Erstellt eine Instanz einer Datensatzklasse ClientStateEvent.
        +
        +
        +
        +
      • + +
      • +
        +

        Methodenübersicht

        +
        +
        +
        +
        +
        Modifizierer und Typ
        +
        Methode
        +
        Beschreibung
        +
        final boolean
        + +
        +
        Gibt an, ob ein anderes Objekt diesem gleich ("equal to") ist.
        +
        +
        final int
        + +
        +
        Gibt einen Hashcodewert für diese Objekt zurück.
        +
        +
        void
        + +
        +
        Notifies the game event listener of this event.
        +
        +
        final String
        + +
        +
        Gibt eine Zeichenfolgendarstellung dieser Datensatzklasse zurück.
        +
        +
        +
        +
        +
        +

        Von Klasse geerbte Methoden java.lang.Object

        +clone, finalize, getClass, notify, notifyAll, wait, wait, wait
        +
        +
      • +
      +
      +
      +
        + +
      • +
        +

        Konstruktordetails

        +
          +
        • +
          +

          ClientStateEvent

          +
          public ClientStateEvent()
          +
          Erstellt eine Instanz einer Datensatzklasse ClientStateEvent.
          +
          +
        • +
        +
        +
      • + +
      • +
        +

        Methodendetails

        +
          +
        • +
          +

          notifyListener

          +
          public void notifyListener(GameEventListener listener)
          +
          Notifies the game event listener of this event.
          +
          +
          Angegeben von:
          +
          notifyListener in Schnittstelle GameEvent
          +
          Parameter:
          +
          listener - the game event listener
          +
          +
          +
        • +
        • +
          +

          toString

          +
          public final String toString()
          +
          Gibt eine Zeichenfolgendarstellung dieser Datensatzklasse zurück. Die Darstellung enthält den Namen der Klasse, gefolgt vom Namen und Wert jeder der Datensatzkomponenten.
          +
          +
          Angegeben von:
          +
          toString in Klasse Record
          +
          Gibt zurück:
          +
          eine Zeichenfolgendarstellung dieses Objekts
          +
          +
          +
        • +
        • +
          +

          hashCode

          +
          public final int hashCode()
          +
          Gibt einen Hashcodewert für diese Objekt zurück. Der Wert wird vom Hashcode jeder der Datensatzkomponenten abgeleitet.
          +
          +
          Angegeben von:
          +
          hashCode in Klasse Record
          +
          Gibt zurück:
          +
          ein Hashcodewert für dieses Objekt
          +
          +
          +
        • +
        • +
          +

          equals

          +
          public final boolean equals(Object o)
          +
          Gibt an, ob ein anderes Objekt diesem gleich ("equal to") ist. Die Objekte sind gleich, wenn das andere Objekt der gleichen Klasse angehört und alle Datensatzkomponenten gleich sind.
          +
          +
          Angegeben von:
          +
          equals in Klasse Record
          +
          Parameter:
          +
          o - das Objekt, mit dem verglichen wird
          +
          Gibt zurück:
          +
          true, wenn dieses Objekt gleich dem Argument o ist, andernfalls false.
          +
          +
          +
        • +
        +
        +
      • +
      +
      + +
      +
      +
      + + diff --git a/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/notification/GameEvent.html b/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/notification/GameEvent.html new file mode 100644 index 0000000..8302dba --- /dev/null +++ b/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/notification/GameEvent.html @@ -0,0 +1,149 @@ + + + + +GameEvent (model API) + + + + + + + + + + + + + +
      + +
      +
      + +
      + +

      Schnittstelle GameEvent

      +
      +
      +
      +
      Alle bekannten Implementierungsklassen:
      +
      ClientStateEvent, InfoTextEvent, ItemAddedEvent, ItemRemovedEvent, SoundEvent
      +
      +
      +
      public interface GameEvent
      +
      An interface used for all game events.
      +
      +
      +
        + +
      • +
        +

        Methodenübersicht

        +
        +
        +
        +
        +
        Modifizierer und Typ
        +
        Methode
        +
        Beschreibung
        +
        void
        + +
        +
        Notifies the game event listener of the event.
        +
        +
        +
        +
        +
        +
      • +
      +
      +
      +
        + +
      • +
        +

        Methodendetails

        +
          +
        • +
          +

          notifyListener

          +
          void notifyListener(GameEventListener listener)
          +
          Notifies the game event listener of the event.
          +
          +
          Parameter:
          +
          listener - the game event listener to be notified
          +
          +
          +
        • +
        +
        +
      • +
      +
      + +
      +
      +
      + + diff --git a/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/notification/GameEventBroker.html b/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/notification/GameEventBroker.html new file mode 100644 index 0000000..3754ace --- /dev/null +++ b/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/notification/GameEventBroker.html @@ -0,0 +1,149 @@ + + + + +GameEventBroker (model API) + + + + + + + + + + + + + +
      + +
      +
      + +
      + +

      Schnittstelle GameEventBroker

      +
      +
      +
      +
      Alle bekannten Implementierungsklassen:
      +
      ClientGameLogic
      +
      +
      +
      public interface GameEventBroker
      +
      Defines a broker for distributing game events to registered listeners.
      +
      +
      +
        + +
      • +
        +

        Methodenübersicht

        +
        +
        +
        +
        +
        Modifizierer und Typ
        +
        Methode
        +
        Beschreibung
        +
        void
        + +
        +
        Notifies all registered listeners about the specified game event.
        +
        +
        +
        +
        +
        +
      • +
      +
      +
      +
        + +
      • +
        +

        Methodendetails

        +
          +
        • +
          +

          notifyListeners

          +
          void notifyListeners(GameEvent event)
          +
          Notifies all registered listeners about the specified game event.
          +
          +
          Parameter:
          +
          event - the game event to be broadcast to listeners
          +
          +
          +
        • +
        +
        +
      • +
      +
      + +
      +
      +
      + + diff --git a/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/notification/GameEventListener.html b/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/notification/GameEventListener.html new file mode 100644 index 0000000..1b6ab32 --- /dev/null +++ b/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/notification/GameEventListener.html @@ -0,0 +1,209 @@ + + + + +GameEventListener (model API) + + + + + + + + + + + + + +
      + +
      +
      + +
      + +

      Schnittstelle GameEventListener

      +
      +
      +
      +
      public interface GameEventListener
      +
      Listener interface for all events implemented by subclasses of GameEvent.
      +
      +
      + +
      +
      +
        + +
      • +
        +

        Methodendetails

        +
          +
        • +
          +

          receivedEvent

          +
          default void receivedEvent(ItemRemovedEvent event)
          +
          Indicates that an item has been destroyed
          +
          +
          Parameter:
          +
          event - the received event
          +
          +
          +
        • +
        • +
          +

          receivedEvent

          +
          default void receivedEvent(ItemAddedEvent event)
          +
          Indicates that an item has been added to a map.
          +
          +
          Parameter:
          +
          event - the received event
          +
          +
          +
        • +
        • +
          +

          receivedEvent

          +
          default void receivedEvent(InfoTextEvent event)
          +
          Indicates that an info text shall be shown.
          +
          +
          Parameter:
          +
          event - the received event
          +
          +
          +
        • +
        • +
          +

          receivedEvent

          +
          default void receivedEvent(SoundEvent event)
          +
          Indicates that a sound shall be played.
          +
          +
          Parameter:
          +
          event - the received event
          +
          +
          +
        • +
        • +
          +

          receivedEvent

          +
          default void receivedEvent(ClientStateEvent event)
          +
          Indicates that the client's state has changed.
          +
          +
          Parameter:
          +
          event - the received event
          +
          +
          +
        • +
        +
        +
      • +
      +
      + +
      +
      +
      + + diff --git a/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/notification/InfoTextEvent.html b/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/notification/InfoTextEvent.html new file mode 100644 index 0000000..3d8dcf3 --- /dev/null +++ b/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/notification/InfoTextEvent.html @@ -0,0 +1,271 @@ + + + + +InfoTextEvent (model API) + + + + + + + + + + + + + +
      + +
      +
      + +
      + +

      Datensatzklasse InfoTextEvent

      +
      +
      java.lang.Object +
      java.lang.Record +
      pp.battleship.notification.InfoTextEvent
      +
      +
      +
      +
      +
      Datensatzkomponenten:
      +
      key - the bundle key for the message
      +
      +
      +
      Alle implementierten Schnittstellen:
      +
      GameEvent
      +
      +
      +
      public record InfoTextEvent(String key) +extends Record +implements GameEvent
      +
      Event when an item is added to a map.
      +
      +
      +
        + +
      • +
        +

        Konstruktorübersicht

        +
        Konstruktoren
        +
        +
        Konstruktor
        +
        Beschreibung
        + +
        +
        Erstellt eine Instanz einer Datensatzklasse InfoTextEvent.
        +
        +
        +
        +
      • + +
      • +
        +

        Methodenübersicht

        +
        +
        +
        +
        +
        Modifizierer und Typ
        +
        Methode
        +
        Beschreibung
        +
        final boolean
        + +
        +
        Gibt an, ob ein anderes Objekt diesem gleich ("equal to") ist.
        +
        +
        final int
        + +
        +
        Gibt einen Hashcodewert für diese Objekt zurück.
        +
        + +
        key()
        +
        +
        Gibt den Wert für die Datensatzkomponente key zurück.
        +
        +
        void
        + +
        +
        Notifies the game event listener of this event.
        +
        +
        final String
        + +
        +
        Gibt eine Zeichenfolgendarstellung dieser Datensatzklasse zurück.
        +
        +
        +
        +
        +
        +

        Von Klasse geerbte Methoden java.lang.Object

        +clone, finalize, getClass, notify, notifyAll, wait, wait, wait
        +
        +
      • +
      +
      +
      +
        + +
      • +
        +

        Konstruktordetails

        +
          +
        • +
          +

          InfoTextEvent

          +
          public InfoTextEvent(String key)
          +
          Erstellt eine Instanz einer Datensatzklasse InfoTextEvent.
          +
          +
          Parameter:
          +
          key - Wert für die Datensatzkomponente key
          +
          +
          +
        • +
        +
        +
      • + +
      • +
        +

        Methodendetails

        +
          +
        • +
          +

          notifyListener

          +
          public void notifyListener(GameEventListener listener)
          +
          Notifies the game event listener of this event.
          +
          +
          Angegeben von:
          +
          notifyListener in Schnittstelle GameEvent
          +
          Parameter:
          +
          listener - the game event listener
          +
          +
          +
        • +
        • +
          +

          toString

          +
          public final String toString()
          +
          Gibt eine Zeichenfolgendarstellung dieser Datensatzklasse zurück. Die Darstellung enthält den Namen der Klasse, gefolgt vom Namen und Wert jeder der Datensatzkomponenten.
          +
          +
          Angegeben von:
          +
          toString in Klasse Record
          +
          Gibt zurück:
          +
          eine Zeichenfolgendarstellung dieses Objekts
          +
          +
          +
        • +
        • +
          +

          hashCode

          +
          public final int hashCode()
          +
          Gibt einen Hashcodewert für diese Objekt zurück. Der Wert wird vom Hashcode jeder der Datensatzkomponenten abgeleitet.
          +
          +
          Angegeben von:
          +
          hashCode in Klasse Record
          +
          Gibt zurück:
          +
          ein Hashcodewert für dieses Objekt
          +
          +
          +
        • +
        • +
          +

          equals

          +
          public final boolean equals(Object o)
          +
          Gibt an, ob ein anderes Objekt diesem gleich ("equal to") ist. Die Objekte sind gleich, wenn das andere Objekt der gleichen Klasse angehört und alle Datensatzkomponenten gleich sind. Alle Komponenten in dieser Datensatzklasse werden verglichen mit Objects::equals(Object,Object).
          +
          +
          Angegeben von:
          +
          equals in Klasse Record
          +
          Parameter:
          +
          o - das Objekt, mit dem verglichen wird
          +
          Gibt zurück:
          +
          true, wenn dieses Objekt gleich dem Argument o ist, andernfalls false.
          +
          +
          +
        • +
        • +
          +

          key

          +
          public String key()
          +
          Gibt den Wert für die Datensatzkomponente key zurück.
          +
          +
          Gibt zurück:
          +
          Wert der Datensatzkomponente key
          +
          +
          +
        • +
        +
        +
      • +
      +
      + +
      +
      +
      + + diff --git a/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/notification/ItemAddedEvent.html b/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/notification/ItemAddedEvent.html new file mode 100644 index 0000000..2771c13 --- /dev/null +++ b/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/notification/ItemAddedEvent.html @@ -0,0 +1,291 @@ + + + + +ItemAddedEvent (model API) + + + + + + + + + + + + + +
      + +
      +
      + +
      + +

      Datensatzklasse ItemAddedEvent

      +
      +
      java.lang.Object +
      java.lang.Record +
      pp.battleship.notification.ItemAddedEvent
      +
      +
      +
      +
      +
      Datensatzkomponenten:
      +
      item - the added item
      +
      map - the map that got the additional item
      +
      +
      +
      Alle implementierten Schnittstellen:
      +
      GameEvent
      +
      +
      +
      public record ItemAddedEvent(Item item, ShipMap map) +extends Record +implements GameEvent
      +
      Event when an item is added to a map.
      +
      +
      +
        + +
      • +
        +

        Konstruktorübersicht

        +
        Konstruktoren
        +
        +
        Konstruktor
        +
        Beschreibung
        +
        ItemAddedEvent(Item item, + ShipMap map)
        +
        +
        Erstellt eine Instanz einer Datensatzklasse ItemAddedEvent.
        +
        +
        +
        +
      • + +
      • +
        +

        Methodenübersicht

        +
        +
        +
        +
        +
        Modifizierer und Typ
        +
        Methode
        +
        Beschreibung
        +
        final boolean
        + +
        +
        Gibt an, ob ein anderes Objekt diesem gleich ("equal to") ist.
        +
        +
        final int
        + +
        +
        Gibt einen Hashcodewert für diese Objekt zurück.
        +
        + + +
        +
        Gibt den Wert für die Datensatzkomponente item zurück.
        +
        + +
        map()
        +
        +
        Gibt den Wert für die Datensatzkomponente map zurück.
        +
        +
        void
        + +
        +
        Notifies the game event listener of this event.
        +
        +
        final String
        + +
        +
        Gibt eine Zeichenfolgendarstellung dieser Datensatzklasse zurück.
        +
        +
        +
        +
        +
        +

        Von Klasse geerbte Methoden java.lang.Object

        +clone, finalize, getClass, notify, notifyAll, wait, wait, wait
        +
        +
      • +
      +
      +
      +
        + +
      • +
        +

        Konstruktordetails

        +
          +
        • +
          +

          ItemAddedEvent

          +
          public ItemAddedEvent(Item item, + ShipMap map)
          +
          Erstellt eine Instanz einer Datensatzklasse ItemAddedEvent.
          +
          +
          Parameter:
          +
          item - Wert für die Datensatzkomponente item
          +
          map - Wert für die Datensatzkomponente map
          +
          +
          +
        • +
        +
        +
      • + +
      • +
        +

        Methodendetails

        +
          +
        • +
          +

          notifyListener

          +
          public void notifyListener(GameEventListener listener)
          +
          Notifies the game event listener of this event.
          +
          +
          Angegeben von:
          +
          notifyListener in Schnittstelle GameEvent
          +
          Parameter:
          +
          listener - the game event listener
          +
          +
          +
        • +
        • +
          +

          toString

          +
          public final String toString()
          +
          Gibt eine Zeichenfolgendarstellung dieser Datensatzklasse zurück. Die Darstellung enthält den Namen der Klasse, gefolgt vom Namen und Wert jeder der Datensatzkomponenten.
          +
          +
          Angegeben von:
          +
          toString in Klasse Record
          +
          Gibt zurück:
          +
          eine Zeichenfolgendarstellung dieses Objekts
          +
          +
          +
        • +
        • +
          +

          hashCode

          +
          public final int hashCode()
          +
          Gibt einen Hashcodewert für diese Objekt zurück. Der Wert wird vom Hashcode jeder der Datensatzkomponenten abgeleitet.
          +
          +
          Angegeben von:
          +
          hashCode in Klasse Record
          +
          Gibt zurück:
          +
          ein Hashcodewert für dieses Objekt
          +
          +
          +
        • +
        • +
          +

          equals

          +
          public final boolean equals(Object o)
          +
          Gibt an, ob ein anderes Objekt diesem gleich ("equal to") ist. Die Objekte sind gleich, wenn das andere Objekt der gleichen Klasse angehört und alle Datensatzkomponenten gleich sind. Alle Komponenten in dieser Datensatzklasse werden verglichen mit Objects::equals(Object,Object).
          +
          +
          Angegeben von:
          +
          equals in Klasse Record
          +
          Parameter:
          +
          o - das Objekt, mit dem verglichen wird
          +
          Gibt zurück:
          +
          true, wenn dieses Objekt gleich dem Argument o ist, andernfalls false.
          +
          +
          +
        • +
        • +
          +

          item

          +
          public Item item()
          +
          Gibt den Wert für die Datensatzkomponente item zurück.
          +
          +
          Gibt zurück:
          +
          Wert der Datensatzkomponente item
          +
          +
          +
        • +
        • +
          +

          map

          +
          public ShipMap map()
          +
          Gibt den Wert für die Datensatzkomponente map zurück.
          +
          +
          Gibt zurück:
          +
          Wert der Datensatzkomponente map
          +
          +
          +
        • +
        +
        +
      • +
      +
      + +
      +
      +
      + + diff --git a/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/notification/ItemRemovedEvent.html b/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/notification/ItemRemovedEvent.html new file mode 100644 index 0000000..c8fad53 --- /dev/null +++ b/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/notification/ItemRemovedEvent.html @@ -0,0 +1,290 @@ + + + + +ItemRemovedEvent (model API) + + + + + + + + + + + + + +
      + +
      +
      + +
      + +

      Datensatzklasse ItemRemovedEvent

      +
      +
      java.lang.Object +
      java.lang.Record +
      pp.battleship.notification.ItemRemovedEvent
      +
      +
      +
      +
      +
      Datensatzkomponenten:
      +
      item - the destroyed item
      +
      +
      +
      Alle implementierten Schnittstellen:
      +
      GameEvent
      +
      +
      +
      public record ItemRemovedEvent(Item item, ShipMap map) +extends Record +implements GameEvent
      +
      Event when an item gets removed.
      +
      +
      +
        + +
      • +
        +

        Konstruktorübersicht

        +
        Konstruktoren
        +
        +
        Konstruktor
        +
        Beschreibung
        + +
        +
        Erstellt eine Instanz einer Datensatzklasse ItemRemovedEvent.
        +
        +
        +
        +
      • + +
      • +
        +

        Methodenübersicht

        +
        +
        +
        +
        +
        Modifizierer und Typ
        +
        Methode
        +
        Beschreibung
        +
        final boolean
        + +
        +
        Gibt an, ob ein anderes Objekt diesem gleich ("equal to") ist.
        +
        +
        final int
        + +
        +
        Gibt einen Hashcodewert für diese Objekt zurück.
        +
        + + +
        +
        Gibt den Wert für die Datensatzkomponente item zurück.
        +
        + +
        map()
        +
        +
        Gibt den Wert für die Datensatzkomponente map zurück.
        +
        +
        void
        + +
        +
        Notifies the game event listener of this event.
        +
        +
        final String
        + +
        +
        Gibt eine Zeichenfolgendarstellung dieser Datensatzklasse zurück.
        +
        +
        +
        +
        +
        +

        Von Klasse geerbte Methoden java.lang.Object

        +clone, finalize, getClass, notify, notifyAll, wait, wait, wait
        +
        +
      • +
      +
      +
      +
        + +
      • +
        +

        Konstruktordetails

        +
          +
        • +
          +

          ItemRemovedEvent

          +
          public ItemRemovedEvent(Item item, + ShipMap map)
          +
          Erstellt eine Instanz einer Datensatzklasse ItemRemovedEvent.
          +
          +
          Parameter:
          +
          item - Wert für die Datensatzkomponente item
          +
          map - Wert für die Datensatzkomponente map
          +
          +
          +
        • +
        +
        +
      • + +
      • +
        +

        Methodendetails

        +
          +
        • +
          +

          notifyListener

          +
          public void notifyListener(GameEventListener listener)
          +
          Notifies the game event listener of this event.
          +
          +
          Angegeben von:
          +
          notifyListener in Schnittstelle GameEvent
          +
          Parameter:
          +
          listener - the game event listener
          +
          +
          +
        • +
        • +
          +

          toString

          +
          public final String toString()
          +
          Gibt eine Zeichenfolgendarstellung dieser Datensatzklasse zurück. Die Darstellung enthält den Namen der Klasse, gefolgt vom Namen und Wert jeder der Datensatzkomponenten.
          +
          +
          Angegeben von:
          +
          toString in Klasse Record
          +
          Gibt zurück:
          +
          eine Zeichenfolgendarstellung dieses Objekts
          +
          +
          +
        • +
        • +
          +

          hashCode

          +
          public final int hashCode()
          +
          Gibt einen Hashcodewert für diese Objekt zurück. Der Wert wird vom Hashcode jeder der Datensatzkomponenten abgeleitet.
          +
          +
          Angegeben von:
          +
          hashCode in Klasse Record
          +
          Gibt zurück:
          +
          ein Hashcodewert für dieses Objekt
          +
          +
          +
        • +
        • +
          +

          equals

          +
          public final boolean equals(Object o)
          +
          Gibt an, ob ein anderes Objekt diesem gleich ("equal to") ist. Die Objekte sind gleich, wenn das andere Objekt der gleichen Klasse angehört und alle Datensatzkomponenten gleich sind. Alle Komponenten in dieser Datensatzklasse werden verglichen mit Objects::equals(Object,Object).
          +
          +
          Angegeben von:
          +
          equals in Klasse Record
          +
          Parameter:
          +
          o - das Objekt, mit dem verglichen wird
          +
          Gibt zurück:
          +
          true, wenn dieses Objekt gleich dem Argument o ist, andernfalls false.
          +
          +
          +
        • +
        • +
          +

          item

          +
          public Item item()
          +
          Gibt den Wert für die Datensatzkomponente item zurück.
          +
          +
          Gibt zurück:
          +
          Wert der Datensatzkomponente item
          +
          +
          +
        • +
        • +
          +

          map

          +
          public ShipMap map()
          +
          Gibt den Wert für die Datensatzkomponente map zurück.
          +
          +
          Gibt zurück:
          +
          Wert der Datensatzkomponente map
          +
          +
          +
        • +
        +
        +
      • +
      +
      + +
      +
      +
      + + diff --git a/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/notification/Sound.html b/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/notification/Sound.html new file mode 100644 index 0000000..bd1e7f5 --- /dev/null +++ b/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/notification/Sound.html @@ -0,0 +1,248 @@ + + + + +Sound (model API) + + + + + + + + + + + + + +
      + +
      +
      + +
      + +

      Enum-Klasse Sound

      +
      +
      java.lang.Object +
      java.lang.Enum<Sound> +
      pp.battleship.notification.Sound
      +
      +
      +
      +
      +
      Alle implementierten Schnittstellen:
      +
      Serializable, Comparable<Sound>, Constable
      +
      +
      +
      public enum Sound +extends Enum<Sound>
      +
      Enumeration representing different types of sounds used in the game.
      +
      +
      + +
      +
      +
        + +
      • +
        +

        Enum-Konstanten - Details

        +
          +
        • +
          +

          EXPLOSION

          +
          public static final Sound EXPLOSION
          +
          Sound of an explosion.
          +
          +
        • +
        • +
          +

          SPLASH

          +
          public static final Sound SPLASH
          +
          Sound of a splash.
          +
          +
        • +
        • +
          +

          DESTROYED_SHIP

          +
          public static final Sound DESTROYED_SHIP
          +
          Sound of a ship being destroyed.
          +
          +
        • +
        +
        +
      • + +
      • +
        +

        Methodendetails

        +
          +
        • +
          +

          values

          +
          public static Sound[] values()
          +
          Gibt ein Array mit den Konstanten dieser Enum-Klasse in +der Reihenfolge ihrer Deklaration zurück.
          +
          +
          Gibt zurück:
          +
          ein Array mit den Konstanten dieser Enum-Klasse in der Reihenfolge ihrer Deklaration
          +
          +
          +
        • +
        • +
          +

          valueOf

          +
          public static Sound valueOf(String name)
          +
          Gibt die Enum-Konstante dieser Klasse mit dem angegebenen Namen zurück. +Die Zeichenfolge muss exakt mit einer ID übereinstimmen, +mit der eine Enum-Konstante in dieser Klasse deklariert wird. +(Zusätzliche Leerzeichen sind nicht zulässig.)
          +
          +
          Parameter:
          +
          name - Name der zurückzugebenden Enumerationskonstante.
          +
          Gibt zurück:
          +
          Enumerationskonstante mit dem angegebenen Namen
          +
          Löst aus:
          +
          IllegalArgumentException - wenn diese Enum-Klasse keine Konstante mit dem angegebenen Namen enthält
          +
          NullPointerException - wenn das Argument nicht angegeben wird
          +
          +
          +
        • +
        +
        +
      • +
      +
      + +
      +
      +
      + + diff --git a/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/notification/SoundEvent.html b/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/notification/SoundEvent.html new file mode 100644 index 0000000..48594e7 --- /dev/null +++ b/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/notification/SoundEvent.html @@ -0,0 +1,271 @@ + + + + +SoundEvent (model API) + + + + + + + + + + + + + +
      + +
      +
      + +
      + +

      Datensatzklasse SoundEvent

      +
      +
      java.lang.Object +
      java.lang.Record +
      pp.battleship.notification.SoundEvent
      +
      +
      +
      +
      +
      Datensatzkomponenten:
      +
      sound - the sound to be played
      +
      +
      +
      Alle implementierten Schnittstellen:
      +
      GameEvent
      +
      +
      +
      public record SoundEvent(Sound sound) +extends Record +implements GameEvent
      +
      Event when an item is added to a map.
      +
      +
      +
        + +
      • +
        +

        Konstruktorübersicht

        +
        Konstruktoren
        +
        +
        Konstruktor
        +
        Beschreibung
        + +
        +
        Erstellt eine Instanz einer Datensatzklasse SoundEvent.
        +
        +
        +
        +
      • + +
      • +
        +

        Methodenübersicht

        +
        +
        +
        +
        +
        Modifizierer und Typ
        +
        Methode
        +
        Beschreibung
        +
        final boolean
        + +
        +
        Gibt an, ob ein anderes Objekt diesem gleich ("equal to") ist.
        +
        +
        final int
        + +
        +
        Gibt einen Hashcodewert für diese Objekt zurück.
        +
        +
        void
        + +
        +
        Notifies the game event listener of this event.
        +
        + + +
        +
        Gibt den Wert für die Datensatzkomponente sound zurück.
        +
        +
        final String
        + +
        +
        Gibt eine Zeichenfolgendarstellung dieser Datensatzklasse zurück.
        +
        +
        +
        +
        +
        +

        Von Klasse geerbte Methoden java.lang.Object

        +clone, finalize, getClass, notify, notifyAll, wait, wait, wait
        +
        +
      • +
      +
      +
      +
        + +
      • +
        +

        Konstruktordetails

        +
          +
        • +
          +

          SoundEvent

          +
          public SoundEvent(Sound sound)
          +
          Erstellt eine Instanz einer Datensatzklasse SoundEvent.
          +
          +
          Parameter:
          +
          sound - Wert für die Datensatzkomponente sound
          +
          +
          +
        • +
        +
        +
      • + +
      • +
        +

        Methodendetails

        +
          +
        • +
          +

          notifyListener

          +
          public void notifyListener(GameEventListener listener)
          +
          Notifies the game event listener of this event.
          +
          +
          Angegeben von:
          +
          notifyListener in Schnittstelle GameEvent
          +
          Parameter:
          +
          listener - the game event listener
          +
          +
          +
        • +
        • +
          +

          toString

          +
          public final String toString()
          +
          Gibt eine Zeichenfolgendarstellung dieser Datensatzklasse zurück. Die Darstellung enthält den Namen der Klasse, gefolgt vom Namen und Wert jeder der Datensatzkomponenten.
          +
          +
          Angegeben von:
          +
          toString in Klasse Record
          +
          Gibt zurück:
          +
          eine Zeichenfolgendarstellung dieses Objekts
          +
          +
          +
        • +
        • +
          +

          hashCode

          +
          public final int hashCode()
          +
          Gibt einen Hashcodewert für diese Objekt zurück. Der Wert wird vom Hashcode jeder der Datensatzkomponenten abgeleitet.
          +
          +
          Angegeben von:
          +
          hashCode in Klasse Record
          +
          Gibt zurück:
          +
          ein Hashcodewert für dieses Objekt
          +
          +
          +
        • +
        • +
          +

          equals

          +
          public final boolean equals(Object o)
          +
          Gibt an, ob ein anderes Objekt diesem gleich ("equal to") ist. Die Objekte sind gleich, wenn das andere Objekt der gleichen Klasse angehört und alle Datensatzkomponenten gleich sind. Alle Komponenten in dieser Datensatzklasse werden verglichen mit Objects::equals(Object,Object).
          +
          +
          Angegeben von:
          +
          equals in Klasse Record
          +
          Parameter:
          +
          o - das Objekt, mit dem verglichen wird
          +
          Gibt zurück:
          +
          true, wenn dieses Objekt gleich dem Argument o ist, andernfalls false.
          +
          +
          +
        • +
        • +
          +

          sound

          +
          public Sound sound()
          +
          Gibt den Wert für die Datensatzkomponente sound zurück.
          +
          +
          Gibt zurück:
          +
          Wert der Datensatzkomponente sound
          +
          +
          +
        • +
        +
        +
      • +
      +
      + +
      +
      +
      + + diff --git a/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/notification/package-summary.html b/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/notification/package-summary.html new file mode 100644 index 0000000..8bff213 --- /dev/null +++ b/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/notification/package-summary.html @@ -0,0 +1,139 @@ + + + + +pp.battleship.notification (model API) + + + + + + + + + + + + + +
      + +
      +
      +
      +

      Package pp.battleship.notification

      +
      +
      +
      package pp.battleship.notification
      +
      +
        +
      • + +
      • +
      • +
        +
        +
        +
        +
        Klasse
        +
        Beschreibung
        + +
        +
        Event when an item is added to a map.
        +
        + +
        +
        An interface used for all game events.
        +
        + +
        +
        Defines a broker for distributing game events to registered listeners.
        +
        + +
        +
        Listener interface for all events implemented by subclasses of GameEvent.
        +
        + +
        +
        Event when an item is added to a map.
        +
        + +
        +
        Event when an item is added to a map.
        +
        + +
        +
        Event when an item gets removed.
        +
        + +
        +
        Enumeration representing different types of sounds used in the game.
        +
        + +
        +
        Event when an item is added to a map.
        +
        +
        +
        +
        +
      • +
      +
      +
      +
      +
      + + diff --git a/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/notification/package-tree.html b/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/notification/package-tree.html new file mode 100644 index 0000000..0c6b216 --- /dev/null +++ b/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/notification/package-tree.html @@ -0,0 +1,100 @@ + + + + +pp.battleship.notification Klassenhierarchie (model API) + + + + + + + + + + + + + +
      + +
      +
      +
      +

      Hierarchie für Package pp.battleship.notification

      +
      +Packagehierarchien: + +
      +

      Schnittstellenhierarchie

      + +
      +
      +

      Enum-Klassenhierarchie

      + +
      +
      +

      Datensatz-Klassenhierarchie

      + +
      +
      +
      +
      + + diff --git a/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/package-summary.html b/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/package-summary.html new file mode 100644 index 0000000..6e6e259 --- /dev/null +++ b/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/package-summary.html @@ -0,0 +1,109 @@ + + + + +pp.battleship (model API) + + + + + + + + + + + + + +
      + +
      +
      +
      +

      Package pp.battleship

      +
      +
      +
      package pp.battleship
      +
      + +
      +
      +
      +
      + + diff --git a/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/package-tree.html b/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/package-tree.html new file mode 100644 index 0000000..1d2f10e --- /dev/null +++ b/Dokumente/JavaDoc/model/docs/javadoc/pp/battleship/package-tree.html @@ -0,0 +1,75 @@ + + + + +pp.battleship Klassenhierarchie (model API) + + + + + + + + + + + + + +
      + +
      +
      +
      +

      Hierarchie für Package pp.battleship

      +
      +Packagehierarchien: + +
      +

      Klassenhierarchie

      + +
      +
      +
      +
      + + diff --git a/Dokumente/JavaDoc/model/docs/javadoc/resources/glass.png b/Dokumente/JavaDoc/model/docs/javadoc/resources/glass.png new file mode 100644 index 0000000..a7f591f Binary files /dev/null and b/Dokumente/JavaDoc/model/docs/javadoc/resources/glass.png differ diff --git a/Dokumente/JavaDoc/model/docs/javadoc/resources/x.png b/Dokumente/JavaDoc/model/docs/javadoc/resources/x.png new file mode 100644 index 0000000..30548a7 Binary files /dev/null and b/Dokumente/JavaDoc/model/docs/javadoc/resources/x.png differ diff --git a/Dokumente/JavaDoc/model/docs/javadoc/script-dir/jquery-3.6.1.min.js b/Dokumente/JavaDoc/model/docs/javadoc/script-dir/jquery-3.6.1.min.js new file mode 100644 index 0000000..2c69bc9 --- /dev/null +++ b/Dokumente/JavaDoc/model/docs/javadoc/script-dir/jquery-3.6.1.min.js @@ -0,0 +1,2 @@ +/*! jQuery v3.6.1 | (c) OpenJS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,y=n.hasOwnProperty,a=y.toString,l=a.call(Object),v={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.6.1",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&v(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!y||!y.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ve(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ye(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ve(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],y=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&y.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||y.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||y.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||y.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||y.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||y.push(".#.+[+~]"),e.querySelectorAll("\\\f"),y.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&y.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&y.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&y.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),y.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),y=y.length&&new RegExp(y.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),v=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&v(p,e)?-1:t==C||t.ownerDocument==p&&v(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!y||!y.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),v.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",v.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",v.option=!!ce.lastChild;var ge={thead:[1,"","
      "],col:[2,"","
      "],tr:[2,"","
      "],td:[3,"","
      "],_default:[0,"",""]};function ye(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ve(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Ut,Xt=[],Vt=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Xt.pop()||S.expando+"_"+Ct.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Vt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Vt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Vt,"$1"+r):!1!==e.jsonp&&(e.url+=(Et.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Xt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),v.createHTMLDocument=((Ut=E.implementation.createHTMLDocument("").body).innerHTML="
      ",2===Ut.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(v.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return B(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=_e(v.pixelPosition,function(e,t){if(t)return t=Be(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return B(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0",options:{classes:{},disabled:!1,create:null},_createWidget:function(t,e){e=x(e||this.defaultElement||this)[0],this.element=x(e),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=x(),this.hoverable=x(),this.focusable=x(),this.classesElementLookup={},e!==this&&(x.data(e,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===e&&this.destroy()}}),this.document=x(e.style?e.ownerDocument:e.document||e),this.window=x(this.document[0].defaultView||this.document[0].parentWindow)),this.options=x.widget.extend({},this.options,this._getCreateOptions(),t),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:x.noop,_create:x.noop,_init:x.noop,destroy:function(){var i=this;this._destroy(),x.each(this.classesElementLookup,function(t,e){i._removeClass(e,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:x.noop,widget:function(){return this.element},option:function(t,e){var i,s,n,o=t;if(0===arguments.length)return x.widget.extend({},this.options);if("string"==typeof t)if(o={},t=(i=t.split(".")).shift(),i.length){for(s=o[t]=x.widget.extend({},this.options[t]),n=0;n
      "),i=e.children()[0];return x("body").append(e),t=i.offsetWidth,e.css("overflow","scroll"),t===(i=i.offsetWidth)&&(i=e[0].clientWidth),e.remove(),s=t-i},getScrollInfo:function(t){var e=t.isWindow||t.isDocument?"":t.element.css("overflow-x"),i=t.isWindow||t.isDocument?"":t.element.css("overflow-y"),e="scroll"===e||"auto"===e&&t.widthC(E(s),E(n))?o.important="horizontal":o.important="vertical",c.using.call(this,t,o)}),l.offset(x.extend(u,{using:t}))})},x.ui.position={fit:{left:function(t,e){var i=e.within,s=i.isWindow?i.scrollLeft:i.offset.left,n=i.width,o=t.left-e.collisionPosition.marginLeft,l=s-o,a=o+e.collisionWidth-n-s;e.collisionWidth>n?0n?0",delay:300,options:{icons:{submenu:"ui-icon-caret-1-e"},items:"> *",menus:"ul",position:{my:"left top",at:"right top"},role:"menu",blur:null,focus:null,select:null},_create:function(){this.activeMenu=this.element,this.mouseHandled=!1,this.lastMousePosition={x:null,y:null},this.element.uniqueId().attr({role:this.options.role,tabIndex:0}),this._addClass("ui-menu","ui-widget ui-widget-content"),this._on({"mousedown .ui-menu-item":function(t){t.preventDefault(),this._activateItem(t)},"click .ui-menu-item":function(t){var e=x(t.target),i=x(x.ui.safeActiveElement(this.document[0]));!this.mouseHandled&&e.not(".ui-state-disabled").length&&(this.select(t),t.isPropagationStopped()||(this.mouseHandled=!0),e.has(".ui-menu").length?this.expand(t):!this.element.is(":focus")&&i.closest(".ui-menu").length&&(this.element.trigger("focus",[!0]),this.active&&1===this.active.parents(".ui-menu").length&&clearTimeout(this.timer)))},"mouseenter .ui-menu-item":"_activateItem","mousemove .ui-menu-item":"_activateItem",mouseleave:"collapseAll","mouseleave .ui-menu":"collapseAll",focus:function(t,e){var i=this.active||this._menuItems().first();e||this.focus(t,i)},blur:function(t){this._delay(function(){x.contains(this.element[0],x.ui.safeActiveElement(this.document[0]))||this.collapseAll(t)})},keydown:"_keydown"}),this.refresh(),this._on(this.document,{click:function(t){this._closeOnDocumentClick(t)&&this.collapseAll(t,!0),this.mouseHandled=!1}})},_activateItem:function(t){var e,i;this.previousFilter||t.clientX===this.lastMousePosition.x&&t.clientY===this.lastMousePosition.y||(this.lastMousePosition={x:t.clientX,y:t.clientY},e=x(t.target).closest(".ui-menu-item"),i=x(t.currentTarget),e[0]===i[0]&&(i.is(".ui-state-active")||(this._removeClass(i.siblings().children(".ui-state-active"),null,"ui-state-active"),this.focus(t,i))))},_destroy:function(){var t=this.element.find(".ui-menu-item").removeAttr("role aria-disabled").children(".ui-menu-item-wrapper").removeUniqueId().removeAttr("tabIndex role aria-haspopup");this.element.removeAttr("aria-activedescendant").find(".ui-menu").addBack().removeAttr("role aria-labelledby aria-expanded aria-hidden aria-disabled tabIndex").removeUniqueId().show(),t.children().each(function(){var t=x(this);t.data("ui-menu-submenu-caret")&&t.remove()})},_keydown:function(t){var e,i,s,n=!0;switch(t.keyCode){case x.ui.keyCode.PAGE_UP:this.previousPage(t);break;case x.ui.keyCode.PAGE_DOWN:this.nextPage(t);break;case x.ui.keyCode.HOME:this._move("first","first",t);break;case x.ui.keyCode.END:this._move("last","last",t);break;case x.ui.keyCode.UP:this.previous(t);break;case x.ui.keyCode.DOWN:this.next(t);break;case x.ui.keyCode.LEFT:this.collapse(t);break;case x.ui.keyCode.RIGHT:this.active&&!this.active.is(".ui-state-disabled")&&this.expand(t);break;case x.ui.keyCode.ENTER:case x.ui.keyCode.SPACE:this._activate(t);break;case x.ui.keyCode.ESCAPE:this.collapse(t);break;default:e=this.previousFilter||"",s=n=!1,i=96<=t.keyCode&&t.keyCode<=105?(t.keyCode-96).toString():String.fromCharCode(t.keyCode),clearTimeout(this.filterTimer),i===e?s=!0:i=e+i,e=this._filterMenuItems(i),(e=s&&-1!==e.index(this.active.next())?this.active.nextAll(".ui-menu-item"):e).length||(i=String.fromCharCode(t.keyCode),e=this._filterMenuItems(i)),e.length?(this.focus(t,e),this.previousFilter=i,this.filterTimer=this._delay(function(){delete this.previousFilter},1e3)):delete this.previousFilter}n&&t.preventDefault()},_activate:function(t){this.active&&!this.active.is(".ui-state-disabled")&&(this.active.children("[aria-haspopup='true']").length?this.expand(t):this.select(t))},refresh:function(){var t,e,s=this,n=this.options.icons.submenu,i=this.element.find(this.options.menus);this._toggleClass("ui-menu-icons",null,!!this.element.find(".ui-icon").length),e=i.filter(":not(.ui-menu)").hide().attr({role:this.options.role,"aria-hidden":"true","aria-expanded":"false"}).each(function(){var t=x(this),e=t.prev(),i=x("").data("ui-menu-submenu-caret",!0);s._addClass(i,"ui-menu-icon","ui-icon "+n),e.attr("aria-haspopup","true").prepend(i),t.attr("aria-labelledby",e.attr("id"))}),this._addClass(e,"ui-menu","ui-widget ui-widget-content ui-front"),(t=i.add(this.element).find(this.options.items)).not(".ui-menu-item").each(function(){var t=x(this);s._isDivider(t)&&s._addClass(t,"ui-menu-divider","ui-widget-content")}),i=(e=t.not(".ui-menu-item, .ui-menu-divider")).children().not(".ui-menu").uniqueId().attr({tabIndex:-1,role:this._itemRole()}),this._addClass(e,"ui-menu-item")._addClass(i,"ui-menu-item-wrapper"),t.filter(".ui-state-disabled").attr("aria-disabled","true"),this.active&&!x.contains(this.element[0],this.active[0])&&this.blur()},_itemRole:function(){return{menu:"menuitem",listbox:"option"}[this.options.role]},_setOption:function(t,e){var i;"icons"===t&&(i=this.element.find(".ui-menu-icon"),this._removeClass(i,null,this.options.icons.submenu)._addClass(i,null,e.submenu)),this._super(t,e)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",String(t)),this._toggleClass(null,"ui-state-disabled",!!t)},focus:function(t,e){var i;this.blur(t,t&&"focus"===t.type),this._scrollIntoView(e),this.active=e.first(),i=this.active.children(".ui-menu-item-wrapper"),this._addClass(i,null,"ui-state-active"),this.options.role&&this.element.attr("aria-activedescendant",i.attr("id")),i=this.active.parent().closest(".ui-menu-item").children(".ui-menu-item-wrapper"),this._addClass(i,null,"ui-state-active"),t&&"keydown"===t.type?this._close():this.timer=this._delay(function(){this._close()},this.delay),(i=e.children(".ui-menu")).length&&t&&/^mouse/.test(t.type)&&this._startOpening(i),this.activeMenu=e.parent(),this._trigger("focus",t,{item:e})},_scrollIntoView:function(t){var e,i,s;this._hasScroll()&&(i=parseFloat(x.css(this.activeMenu[0],"borderTopWidth"))||0,s=parseFloat(x.css(this.activeMenu[0],"paddingTop"))||0,e=t.offset().top-this.activeMenu.offset().top-i-s,i=this.activeMenu.scrollTop(),s=this.activeMenu.height(),t=t.outerHeight(),e<0?this.activeMenu.scrollTop(i+e):s",options:{appendTo:null,autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null,change:null,close:null,focus:null,open:null,response:null,search:null,select:null},requestIndex:0,pending:0,liveRegionTimer:null,_create:function(){var i,s,n,t=this.element[0].nodeName.toLowerCase(),e="textarea"===t,t="input"===t;this.isMultiLine=e||!t&&this._isContentEditable(this.element),this.valueMethod=this.element[e||t?"val":"text"],this.isNewMenu=!0,this._addClass("ui-autocomplete-input"),this.element.attr("autocomplete","off"),this._on(this.element,{keydown:function(t){if(this.element.prop("readOnly"))s=n=i=!0;else{s=n=i=!1;var e=x.ui.keyCode;switch(t.keyCode){case e.PAGE_UP:i=!0,this._move("previousPage",t);break;case e.PAGE_DOWN:i=!0,this._move("nextPage",t);break;case e.UP:i=!0,this._keyEvent("previous",t);break;case e.DOWN:i=!0,this._keyEvent("next",t);break;case e.ENTER:this.menu.active&&(i=!0,t.preventDefault(),this.menu.select(t));break;case e.TAB:this.menu.active&&this.menu.select(t);break;case e.ESCAPE:this.menu.element.is(":visible")&&(this.isMultiLine||this._value(this.term),this.close(t),t.preventDefault());break;default:s=!0,this._searchTimeout(t)}}},keypress:function(t){if(i)return i=!1,void(this.isMultiLine&&!this.menu.element.is(":visible")||t.preventDefault());if(!s){var e=x.ui.keyCode;switch(t.keyCode){case e.PAGE_UP:this._move("previousPage",t);break;case e.PAGE_DOWN:this._move("nextPage",t);break;case e.UP:this._keyEvent("previous",t);break;case e.DOWN:this._keyEvent("next",t)}}},input:function(t){if(n)return n=!1,void t.preventDefault();this._searchTimeout(t)},focus:function(){this.selectedItem=null,this.previous=this._value()},blur:function(t){clearTimeout(this.searching),this.close(t),this._change(t)}}),this._initSource(),this.menu=x("
        ").appendTo(this._appendTo()).menu({role:null}).hide().attr({unselectable:"on"}).menu("instance"),this._addClass(this.menu.element,"ui-autocomplete","ui-front"),this._on(this.menu.element,{mousedown:function(t){t.preventDefault()},menufocus:function(t,e){var i,s;if(this.isNewMenu&&(this.isNewMenu=!1,t.originalEvent&&/^mouse/.test(t.originalEvent.type)))return this.menu.blur(),void this.document.one("mousemove",function(){x(t.target).trigger(t.originalEvent)});s=e.item.data("ui-autocomplete-item"),!1!==this._trigger("focus",t,{item:s})&&t.originalEvent&&/^key/.test(t.originalEvent.type)&&this._value(s.value),(i=e.item.attr("aria-label")||s.value)&&String.prototype.trim.call(i).length&&(clearTimeout(this.liveRegionTimer),this.liveRegionTimer=this._delay(function(){this.liveRegion.html(x("
        ").text(i))},100))},menuselect:function(t,e){var i=e.item.data("ui-autocomplete-item"),s=this.previous;this.element[0]!==x.ui.safeActiveElement(this.document[0])&&(this.element.trigger("focus"),this.previous=s,this._delay(function(){this.previous=s,this.selectedItem=i})),!1!==this._trigger("select",t,{item:i})&&this._value(i.value),this.term=this._value(),this.close(t),this.selectedItem=i}}),this.liveRegion=x("
        ",{role:"status","aria-live":"assertive","aria-relevant":"additions"}).appendTo(this.document[0].body),this._addClass(this.liveRegion,null,"ui-helper-hidden-accessible"),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_destroy:function(){clearTimeout(this.searching),this.element.removeAttr("autocomplete"),this.menu.element.remove(),this.liveRegion.remove()},_setOption:function(t,e){this._super(t,e),"source"===t&&this._initSource(),"appendTo"===t&&this.menu.element.appendTo(this._appendTo()),"disabled"===t&&e&&this.xhr&&this.xhr.abort()},_isEventTargetInWidget:function(t){var e=this.menu.element[0];return t.target===this.element[0]||t.target===e||x.contains(e,t.target)},_closeOnClickOutside:function(t){this._isEventTargetInWidget(t)||this.close()},_appendTo:function(){var t=this.options.appendTo;return t=!(t=!(t=t&&(t.jquery||t.nodeType?x(t):this.document.find(t).eq(0)))||!t[0]?this.element.closest(".ui-front, dialog"):t).length?this.document[0].body:t},_initSource:function(){var i,s,n=this;Array.isArray(this.options.source)?(i=this.options.source,this.source=function(t,e){e(x.ui.autocomplete.filter(i,t.term))}):"string"==typeof this.options.source?(s=this.options.source,this.source=function(t,e){n.xhr&&n.xhr.abort(),n.xhr=x.ajax({url:s,data:t,dataType:"json",success:function(t){e(t)},error:function(){e([])}})}):this.source=this.options.source},_searchTimeout:function(s){clearTimeout(this.searching),this.searching=this._delay(function(){var t=this.term===this._value(),e=this.menu.element.is(":visible"),i=s.altKey||s.ctrlKey||s.metaKey||s.shiftKey;t&&(e||i)||(this.selectedItem=null,this.search(null,s))},this.options.delay)},search:function(t,e){return t=null!=t?t:this._value(),this.term=this._value(),t.length").append(x("
        ").text(e.label)).appendTo(t)},_move:function(t,e){if(this.menu.element.is(":visible"))return this.menu.isFirstItem()&&/^previous/.test(t)||this.menu.isLastItem()&&/^next/.test(t)?(this.isMultiLine||this._value(this.term),void this.menu.blur()):void this.menu[t](e);this.search(null,e)},widget:function(){return this.menu.element},_value:function(){return this.valueMethod.apply(this.element,arguments)},_keyEvent:function(t,e){this.isMultiLine&&!this.menu.element.is(":visible")||(this._move(t,e),e.preventDefault())},_isContentEditable:function(t){if(!t.length)return!1;var e=t.prop("contentEditable");return"inherit"===e?this._isContentEditable(t.parent()):"true"===e}}),x.extend(x.ui.autocomplete,{escapeRegex:function(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")},filter:function(t,e){var i=new RegExp(x.ui.autocomplete.escapeRegex(e),"i");return x.grep(t,function(t){return i.test(t.label||t.value||t)})}}),x.widget("ui.autocomplete",x.ui.autocomplete,{options:{messages:{noResults:"No search results.",results:function(t){return t+(1").text(e))},100))}});x.ui.autocomplete}); \ No newline at end of file diff --git a/Dokumente/JavaDoc/model/docs/javadoc/script.js b/Dokumente/JavaDoc/model/docs/javadoc/script.js new file mode 100644 index 0000000..1e8a64f --- /dev/null +++ b/Dokumente/JavaDoc/model/docs/javadoc/script.js @@ -0,0 +1,268 @@ +/* + * Copyright (c) 2013, 2022, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +var moduleSearchIndex; +var packageSearchIndex; +var typeSearchIndex; +var memberSearchIndex; +var tagSearchIndex; + +var oddRowColor = "odd-row-color"; +var evenRowColor = "even-row-color"; +var sortAsc = "sort-asc"; +var sortDesc = "sort-desc"; +var tableTab = "table-tab"; +var activeTableTab = "active-table-tab"; + +function loadScripts(doc, tag) { + createElem(doc, tag, 'search.js'); + + createElem(doc, tag, 'module-search-index.js'); + createElem(doc, tag, 'package-search-index.js'); + createElem(doc, tag, 'type-search-index.js'); + createElem(doc, tag, 'member-search-index.js'); + createElem(doc, tag, 'tag-search-index.js'); +} + +function createElem(doc, tag, path) { + var script = doc.createElement(tag); + var scriptElement = doc.getElementsByTagName(tag)[0]; + script.src = pathtoroot + path; + scriptElement.parentNode.insertBefore(script, scriptElement); +} + +// Helper for making content containing release names comparable lexicographically +function makeComparable(s) { + return s.toLowerCase().replace(/(\d+)/g, + function(n, m) { + return ("000" + m).slice(-4); + }); +} + +// Switches between two styles depending on a condition +function toggleStyle(classList, condition, trueStyle, falseStyle) { + if (condition) { + classList.remove(falseStyle); + classList.add(trueStyle); + } else { + classList.remove(trueStyle); + classList.add(falseStyle); + } +} + +// Sorts the rows in a table lexicographically by the content of a specific column +function sortTable(header, columnIndex, columns) { + var container = header.parentElement; + var descending = header.classList.contains(sortAsc); + container.querySelectorAll("div.table-header").forEach( + function(header) { + header.classList.remove(sortAsc); + header.classList.remove(sortDesc); + } + ) + var cells = container.children; + var rows = []; + for (var i = columns; i < cells.length; i += columns) { + rows.push(Array.prototype.slice.call(cells, i, i + columns)); + } + var comparator = function(a, b) { + var ka = makeComparable(a[columnIndex].textContent); + var kb = makeComparable(b[columnIndex].textContent); + if (ka < kb) + return descending ? 1 : -1; + if (ka > kb) + return descending ? -1 : 1; + return 0; + }; + var sorted = rows.sort(comparator); + var visible = 0; + sorted.forEach(function(row) { + if (row[0].style.display !== 'none') { + var isEvenRow = visible++ % 2 === 0; + } + row.forEach(function(cell) { + toggleStyle(cell.classList, isEvenRow, evenRowColor, oddRowColor); + container.appendChild(cell); + }) + }); + toggleStyle(header.classList, descending, sortDesc, sortAsc); +} + +// Toggles the visibility of a table category in all tables in a page +function toggleGlobal(checkbox, selected, columns) { + var display = checkbox.checked ? '' : 'none'; + document.querySelectorAll("div.table-tabs").forEach(function(t) { + var id = t.parentElement.getAttribute("id"); + var selectedClass = id + "-tab" + selected; + // if selected is empty string it selects all uncategorized entries + var selectUncategorized = !Boolean(selected); + var visible = 0; + document.querySelectorAll('div.' + id) + .forEach(function(elem) { + if (selectUncategorized) { + if (elem.className.indexOf(selectedClass) === -1) { + elem.style.display = display; + } + } else if (elem.classList.contains(selectedClass)) { + elem.style.display = display; + } + if (elem.style.display === '') { + var isEvenRow = visible++ % (columns * 2) < columns; + toggleStyle(elem.classList, isEvenRow, evenRowColor, oddRowColor); + } + }); + var displaySection = visible === 0 ? 'none' : ''; + t.parentElement.style.display = displaySection; + document.querySelector("li#contents-" + id).style.display = displaySection; + }) +} + +// Shows the elements of a table belonging to a specific category +function show(tableId, selected, columns) { + if (tableId !== selected) { + document.querySelectorAll('div.' + tableId + ':not(.' + selected + ')') + .forEach(function(elem) { + elem.style.display = 'none'; + }); + } + document.querySelectorAll('div.' + selected) + .forEach(function(elem, index) { + elem.style.display = ''; + var isEvenRow = index % (columns * 2) < columns; + toggleStyle(elem.classList, isEvenRow, evenRowColor, oddRowColor); + }); + updateTabs(tableId, selected); +} + +function updateTabs(tableId, selected) { + document.querySelector('div#' + tableId +' .summary-table') + .setAttribute('aria-labelledby', selected); + document.querySelectorAll('button[id^="' + tableId + '"]') + .forEach(function(tab, index) { + if (selected === tab.id || (tableId === selected && index === 0)) { + tab.className = activeTableTab; + tab.setAttribute('aria-selected', true); + tab.setAttribute('tabindex',0); + } else { + tab.className = tableTab; + tab.setAttribute('aria-selected', false); + tab.setAttribute('tabindex',-1); + } + }); +} + +function switchTab(e) { + var selected = document.querySelector('[aria-selected=true]'); + if (selected) { + if ((e.keyCode === 37 || e.keyCode === 38) && selected.previousSibling) { + // left or up arrow key pressed: move focus to previous tab + selected.previousSibling.click(); + selected.previousSibling.focus(); + e.preventDefault(); + } else if ((e.keyCode === 39 || e.keyCode === 40) && selected.nextSibling) { + // right or down arrow key pressed: move focus to next tab + selected.nextSibling.click(); + selected.nextSibling.focus(); + e.preventDefault(); + } + } +} + +var updateSearchResults = function() {}; + +function indexFilesLoaded() { + return moduleSearchIndex + && packageSearchIndex + && typeSearchIndex + && memberSearchIndex + && tagSearchIndex; +} +// Copy the contents of the local snippet to the clipboard +function copySnippet(button) { + copyToClipboard(button.nextElementSibling.innerText); + switchCopyLabel(button.firstElementChild, button.parentElement); +} +// Copy the link to the adjacent header to the clipboard +function copyUrl(button) { + var id; + var header = button.parentElement; + if (header.hasAttribute("id")) { + id = header.getAttribute("id"); + } else if (header.parentElement.tagName === 'SECTION' && header.parentElement.hasAttribute("id")) { + id = header.parentElement.getAttribute("id"); + } else if (header.firstElementChild && header.firstElementChild.tagName === "A" + && header.firstElementChild.hasAttribute("id")) { + id = header.firstElementChild.getAttribute("id"); + } + var url = document.location.href; + if (url.indexOf("#") > -1) { + url = url.substring(0, url.indexOf("#")); + } + copyToClipboard(url + "#" + id); + switchCopyLabel(button.lastElementChild, button.parentElement); +} +function copyToClipboard(content) { + var textarea = document.createElement("textarea"); + textarea.style.height = 0; + document.body.appendChild(textarea); + textarea.value = content; + textarea.select(); + document.execCommand("copy"); + document.body.removeChild(textarea); +} +function switchCopyLabel(span, parent) { + var copied = span.getAttribute("data-copied"); + if (span.innerHTML !== copied) { + var initialLabel = span.innerHTML; + span.innerHTML = copied; + parent.onmouseleave = parent.ontouchend = function() { + span.innerHTML = initialLabel; + }; + } +} +// Workaround for scroll position not being included in browser history (8249133) +document.addEventListener("DOMContentLoaded", function(e) { + var contentDiv = document.querySelector("div.flex-content"); + window.addEventListener("popstate", function(e) { + if (e.state !== null) { + contentDiv.scrollTop = e.state; + } + }); + window.addEventListener("hashchange", function(e) { + history.replaceState(contentDiv.scrollTop, document.title); + }); + var timeoutId; + contentDiv.addEventListener("scroll", function(e) { + if (timeoutId) { + clearTimeout(timeoutId); + } + timeoutId = setTimeout(function() { + history.replaceState(contentDiv.scrollTop, document.title); + }, 100); + }); + if (!location.hash) { + history.replaceState(contentDiv.scrollTop, document.title); + } +}); diff --git a/Dokumente/JavaDoc/model/docs/javadoc/search-page.js b/Dokumente/JavaDoc/model/docs/javadoc/search-page.js new file mode 100644 index 0000000..342465b --- /dev/null +++ b/Dokumente/JavaDoc/model/docs/javadoc/search-page.js @@ -0,0 +1,299 @@ +/* + * Copyright (c) 2022, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +"use strict"; +$(function() { + var copy = $("#page-search-copy"); + var expand = $("#page-search-expand"); + var searchLink = $("span#page-search-link"); + var redirect = $("input#search-redirect"); + function setSearchUrlTemplate() { + var href = document.location.href.split(/[#?]/)[0]; + href += "?q=" + "%s"; + if (redirect.is(":checked")) { + href += "&r=1"; + } + searchLink.html(href); + copy[0].onmouseenter(); + } + function copyLink(e) { + var textarea = document.createElement("textarea"); + textarea.style.height = 0; + document.body.appendChild(textarea); + textarea.value = this.previousSibling.innerText; + textarea.select(); + document.execCommand("copy"); + document.body.removeChild(textarea); + var span = this.lastElementChild; + var copied = span.getAttribute("data-copied"); + if (span.innerHTML !== copied) { + var initialLabel = span.innerHTML; + span.innerHTML = copied; + var parent = this.parentElement.parentElement; + parent.onmouseleave = parent.ontouchend = copy[0].onmouseenter = function() { + span.innerHTML = initialLabel; + }; + } + } + copy.click(copyLink); + copy[0].onmouseenter = function() {}; + redirect.click(setSearchUrlTemplate); + setSearchUrlTemplate(); + copy.prop("disabled", false); + redirect.prop("disabled", false); + expand.click(function (e) { + var searchInfo = $("div.page-search-info"); + if(this.parentElement.hasAttribute("open")) { + searchInfo.attr("style", "border-width: 0;"); + } else { + searchInfo.attr("style", "border-width: 1px;").height(searchInfo.prop("scrollHeight")); + } + }); +}); +$(window).on("load", function() { + var input = $("#page-search-input"); + var reset = $("#page-search-reset"); + var notify = $("#page-search-notify"); + var resultSection = $("div#result-section"); + var resultContainer = $("div#result-container"); + var searchTerm = ""; + var activeTab = ""; + var fixedTab = false; + var visibleTabs = []; + var feelingLucky = false; + function renderResults(result) { + if (!result.length) { + notify.html(messages.noResult); + } else if (result.length === 1) { + notify.html(messages.oneResult); + } else { + notify.html(messages.manyResults.replace("{0}", result.length)); + } + resultContainer.empty(); + var r = { + "types": [], + "members": [], + "packages": [], + "modules": [], + "searchTags": [] + }; + for (var i in result) { + var item = result[i]; + var arr = r[item.category]; + arr.push(item); + } + if (!activeTab || r[activeTab].length === 0 || !fixedTab) { + Object.keys(r).reduce(function(prev, curr) { + if (r[curr].length > 0 && r[curr][0].score > prev) { + activeTab = curr; + return r[curr][0].score; + } + return prev; + }, 0); + } + if (feelingLucky && activeTab) { + notify.html(messages.redirecting) + var firstItem = r[activeTab][0]; + window.location = getURL(firstItem.indexItem, firstItem.category); + return; + } + if (result.length > 20) { + if (searchTerm[searchTerm.length - 1] === ".") { + if (activeTab === "types" && r["members"].length > r["types"].length) { + activeTab = "members"; + } else if (activeTab === "packages" && r["types"].length > r["packages"].length) { + activeTab = "types"; + } + } + } + var categoryCount = Object.keys(r).reduce(function(prev, curr) { + return prev + (r[curr].length > 0 ? 1 : 0); + }, 0); + visibleTabs = []; + var tabContainer = $("
        ").appendTo(resultContainer); + for (var key in r) { + var id = "#result-tab-" + key.replace("searchTags", "search_tags"); + if (r[key].length) { + var count = r[key].length >= 1000 ? "999+" : r[key].length; + if (result.length > 20 && categoryCount > 1) { + var button = $("").appendTo(tabContainer); + button.click(key, function(e) { + fixedTab = true; + renderResult(e.data, $(this)); + }); + visibleTabs.push(key); + } else { + $("" + categories[key] + + " (" + count + ")").appendTo(tabContainer); + renderTable(key, r[key]).appendTo(resultContainer); + tabContainer = $("
        ").appendTo(resultContainer); + + } + } + } + if (activeTab && result.length > 20 && categoryCount > 1) { + $("button#result-tab-" + activeTab).addClass("active-table-tab"); + renderTable(activeTab, r[activeTab]).appendTo(resultContainer); + } + resultSection.show(); + function renderResult(category, button) { + activeTab = category; + setSearchUrl(); + resultContainer.find("div.summary-table").remove(); + renderTable(activeTab, r[activeTab]).appendTo(resultContainer); + button.siblings().removeClass("active-table-tab"); + button.addClass("active-table-tab"); + } + } + function selectTab(category) { + $("button#result-tab-" + category).click(); + } + function renderTable(category, items) { + var table = $("
        ") + .addClass(category === "modules" + ? "one-column-search-results" + : "two-column-search-results"); + var col1, col2; + if (category === "modules") { + col1 = "Module"; + } else if (category === "packages") { + col1 = "Module"; + col2 = "Package"; + } else if (category === "types") { + col1 = "Package"; + col2 = "Class" + } else if (category === "members") { + col1 = "Class"; + col2 = "Member"; + } else if (category === "searchTags") { + col1 = "Location"; + col2 = "Name"; + } + $("
        " + col1 + "
        ").appendTo(table); + if (category !== "modules") { + $("
        " + col2 + "
        ").appendTo(table); + } + $.each(items, function(index, item) { + var rowColor = index % 2 ? "odd-row-color" : "even-row-color"; + renderItem(item, table, rowColor); + }); + return table; + } + function renderItem(item, table, rowColor) { + var label = getHighlightedText(item.input, item.boundaries, item.prefix.length, item.input.length); + var link = $("") + .attr("href", getURL(item.indexItem, item.category)) + .attr("tabindex", "0") + .addClass("search-result-link") + .html(label); + var container = getHighlightedText(item.input, item.boundaries, 0, item.prefix.length - 1); + if (item.category === "searchTags") { + container = item.indexItem.h || ""; + } + if (item.category !== "modules") { + $("
        ").html(container).addClass("col-plain").addClass(rowColor).appendTo(table); + } + $("
        ").html(link).addClass("col-last").addClass(rowColor).appendTo(table); + } + var timeout; + function schedulePageSearch() { + if (timeout) { + clearTimeout(timeout); + } + timeout = setTimeout(function () { + doPageSearch() + }, 100); + } + function doPageSearch() { + setSearchUrl(); + var term = searchTerm = input.val().trim(); + if (term === "") { + notify.html(messages.enterTerm); + activeTab = ""; + fixedTab = false; + resultContainer.empty(); + resultSection.hide(); + } else { + notify.html(messages.searching); + doSearch({ term: term, maxResults: 1200 }, renderResults); + } + } + function setSearchUrl() { + var query = input.val().trim(); + var url = document.location.pathname; + if (query) { + url += "?q=" + encodeURI(query); + if (activeTab && fixedTab) { + url += "&c=" + activeTab; + } + } + history.replaceState({query: query}, "", url); + } + input.on("input", function(e) { + feelingLucky = false; + schedulePageSearch(); + }); + $(document).keydown(function(e) { + if ((e.ctrlKey || e.metaKey) && (e.key === "ArrowLeft" || e.key === "ArrowRight")) { + if (activeTab && visibleTabs.length > 1) { + var idx = visibleTabs.indexOf(activeTab); + idx += e.key === "ArrowLeft" ? visibleTabs.length - 1 : 1; + selectTab(visibleTabs[idx % visibleTabs.length]); + return false; + } + } + }); + reset.click(function() { + notify.html(messages.enterTerm); + resultSection.hide(); + activeTab = ""; + fixedTab = false; + resultContainer.empty(); + input.val('').focus(); + setSearchUrl(); + }); + input.prop("disabled", false); + reset.prop("disabled", false); + + var urlParams = new URLSearchParams(window.location.search); + if (urlParams.has("q")) { + input.val(urlParams.get("q")) + } + if (urlParams.has("c")) { + activeTab = urlParams.get("c"); + fixedTab = true; + } + if (urlParams.get("r")) { + feelingLucky = true; + } + if (input.val()) { + doPageSearch(); + } else { + notify.html(messages.enterTerm); + } + input.select().focus(); +}); diff --git a/Dokumente/JavaDoc/model/docs/javadoc/search.html b/Dokumente/JavaDoc/model/docs/javadoc/search.html new file mode 100644 index 0000000..58acce8 --- /dev/null +++ b/Dokumente/JavaDoc/model/docs/javadoc/search.html @@ -0,0 +1,71 @@ + + + + +Suchen (model API) + + + + + + + + + + + + + +
        + +
        +
        +

        Suchen

        +
        + + +
        +Zusätzliche Ressourcen +
        +
        +
        +

        Die Hilfeseite enthält eine Einführung in den Umfang und die Syntax der JavaDoc-Suche.

        +

        Sie können die <STRG>- oder <CMD>-Taste zusammen mit den Pfeiltasten nach links und rechts verwenden, um zwischen Ergebnisregisterkarten auf dieser Seite zu wechseln.

        +

        Mit der URL-Vorlage unten können Sie diese Seite als Suchmaschine in Browsern konfigurieren, die dieses Feature unterstützen. Das Feature wurde erfolgreich mit Google Chrome und Mozilla Firefox getestet. Beachten Sie, dass andere Browser dieses Feature möglicherweise nicht unterstützen oder ein anderes URL-Format erfordern.

        +link +

        + +

        +
        +

        Suchindex wird geladen...

        + +
        +
        +
        + + diff --git a/Dokumente/JavaDoc/model/docs/javadoc/search.js b/Dokumente/JavaDoc/model/docs/javadoc/search.js new file mode 100644 index 0000000..ef787b7 --- /dev/null +++ b/Dokumente/JavaDoc/model/docs/javadoc/search.js @@ -0,0 +1,458 @@ +/* + * Copyright (c) 2015, 2022, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ +"use strict"; +const messages = { + enterTerm: "Geben Sie einen Suchbegriff ein", + noResult: "Keine Ergebnisse gefunden", + oneResult: "Ein Ergebnis gefunden", + manyResults: "{0} Ergebnisse gefunden", + loading: "Suchindex wird geladen...", + searching: "Suche wird ausgeführt...", + redirecting: "Zum ersten Ergebnis wird umgeleitet...", + copyUrl: "URL kopieren", + urlCopied: "Kopiert." +} +const categories = { + modules: "Module", + packages: "Packages", + types: "Klassen und Schnittstellen", + members: "Mitglieder", + searchTags: "Tags suchen" +}; +const highlight = "$&"; +const NO_MATCH = {}; +const MAX_RESULTS = 300; +function checkUnnamed(name, separator) { + return name === "" || !name ? "" : name + separator; +} +function escapeHtml(str) { + return str.replace(//g, ">"); +} +function getHighlightedText(str, boundaries, from, to) { + var start = from; + var text = ""; + for (var i = 0; i < boundaries.length; i += 2) { + var b0 = boundaries[i]; + var b1 = boundaries[i + 1]; + if (b0 >= to || b1 <= from) { + continue; + } + text += escapeHtml(str.slice(start, Math.max(start, b0))); + text += ""; + text += escapeHtml(str.slice(Math.max(start, b0), Math.min(to, b1))); + text += ""; + start = Math.min(to, b1); + } + text += escapeHtml(str.slice(start, to)); + return text; +} +function getURLPrefix(item, category) { + var urlPrefix = ""; + var slash = "/"; + if (category === "modules") { + return item.l + slash; + } else if (category === "packages" && item.m) { + return item.m + slash; + } else if (category === "types" || category === "members") { + if (item.m) { + urlPrefix = item.m + slash; + } else { + $.each(packageSearchIndex, function(index, it) { + if (it.m && item.p === it.l) { + urlPrefix = it.m + slash; + } + }); + } + } + return urlPrefix; +} +function getURL(item, category) { + if (item.url) { + return item.url; + } + var url = getURLPrefix(item, category); + if (category === "modules") { + url += "module-summary.html"; + } else if (category === "packages") { + if (item.u) { + url = item.u; + } else { + url += item.l.replace(/\./g, '/') + "/package-summary.html"; + } + } else if (category === "types") { + if (item.u) { + url = item.u; + } else { + url += checkUnnamed(item.p, "/").replace(/\./g, '/') + item.l + ".html"; + } + } else if (category === "members") { + url += checkUnnamed(item.p, "/").replace(/\./g, '/') + item.c + ".html" + "#"; + if (item.u) { + url += item.u; + } else { + url += item.l; + } + } else if (category === "searchTags") { + url += item.u; + } + item.url = url; + return url; +} +function createMatcher(term, camelCase) { + if (camelCase && !isUpperCase(term)) { + return null; // no need for camel-case matcher for lower case query + } + var pattern = ""; + var upperCase = []; + term.trim().split(/\s+/).forEach(function(w, index, array) { + var tokens = w.split(/(?=[A-Z,.()<>?[\/])/); + for (var i = 0; i < tokens.length; i++) { + var s = tokens[i]; + // ',' and '?' are the only delimiters commonly followed by space in java signatures + pattern += "(" + $.ui.autocomplete.escapeRegex(s).replace(/[,?]/g, "$&\\s*?") + ")"; + upperCase.push(false); + var isWordToken = /\w$/.test(s); + if (isWordToken) { + if (i === tokens.length - 1 && index < array.length - 1) { + // space in query string matches all delimiters + pattern += "(.*?)"; + upperCase.push(isUpperCase(s[0])); + } else { + if (!camelCase && isUpperCase(s) && s.length === 1) { + pattern += "()"; + } else { + pattern += "([a-z0-9$<>?[\\]]*?)"; + } + upperCase.push(isUpperCase(s[0])); + } + } else { + pattern += "()"; + upperCase.push(false); + } + } + }); + var re = new RegExp(pattern, "gi"); + re.upperCase = upperCase; + return re; +} +function findMatch(matcher, input, startOfName, endOfName) { + var from = startOfName; + matcher.lastIndex = from; + var match = matcher.exec(input); + // Expand search area until we get a valid result or reach the beginning of the string + while (!match || match.index + match[0].length < startOfName || endOfName < match.index) { + if (from === 0) { + return NO_MATCH; + } + from = input.lastIndexOf(".", from - 2) + 1; + matcher.lastIndex = from; + match = matcher.exec(input); + } + var boundaries = []; + var matchEnd = match.index + match[0].length; + var score = 5; + var start = match.index; + var prevEnd = -1; + for (var i = 1; i < match.length; i += 2) { + var isUpper = isUpperCase(input[start]); + var isMatcherUpper = matcher.upperCase[i]; + // capturing groups come in pairs, match and non-match + boundaries.push(start, start + match[i].length); + // make sure groups are anchored on a left word boundary + var prevChar = input[start - 1] || ""; + var nextChar = input[start + 1] || ""; + if (start !== 0 && !/[\W_]/.test(prevChar) && !/[\W_]/.test(input[start])) { + if (isUpper && (isLowerCase(prevChar) || isLowerCase(nextChar))) { + score -= 0.1; + } else if (isMatcherUpper && start === prevEnd) { + score -= isUpper ? 0.1 : 1.0; + } else { + return NO_MATCH; + } + } + prevEnd = start + match[i].length; + start += match[i].length + match[i + 1].length; + + // lower score for parts of the name that are missing + if (match[i + 1] && prevEnd < endOfName) { + score -= rateNoise(match[i + 1]); + } + } + // lower score if a type name contains unmatched camel-case parts + if (input[matchEnd - 1] !== "." && endOfName > matchEnd) + score -= rateNoise(input.slice(matchEnd, endOfName)); + score -= rateNoise(input.slice(0, Math.max(startOfName, match.index))); + + if (score <= 0) { + return NO_MATCH; + } + return { + input: input, + score: score, + boundaries: boundaries + }; +} +function isUpperCase(s) { + return s !== s.toLowerCase(); +} +function isLowerCase(s) { + return s !== s.toUpperCase(); +} +function rateNoise(str) { + return (str.match(/([.(])/g) || []).length / 5 + + (str.match(/([A-Z]+)/g) || []).length / 10 + + str.length / 20; +} +function doSearch(request, response) { + var term = request.term.trim(); + var maxResults = request.maxResults || MAX_RESULTS; + if (term.length === 0) { + return this.close(); + } + var matcher = { + plainMatcher: createMatcher(term, false), + camelCaseMatcher: createMatcher(term, true) + } + var indexLoaded = indexFilesLoaded(); + + function getPrefix(item, category) { + switch (category) { + case "packages": + return checkUnnamed(item.m, "/"); + case "types": + return checkUnnamed(item.p, "."); + case "members": + return checkUnnamed(item.p, ".") + item.c + "."; + default: + return ""; + } + } + function useQualifiedName(category) { + switch (category) { + case "packages": + return /[\s/]/.test(term); + case "types": + case "members": + return /[\s.]/.test(term); + default: + return false; + } + } + function searchIndex(indexArray, category) { + var matches = []; + if (!indexArray) { + if (!indexLoaded) { + matches.push({ l: messages.loading, category: category }); + } + return matches; + } + $.each(indexArray, function (i, item) { + var prefix = getPrefix(item, category); + var simpleName = item.l; + var qualifiedName = prefix + simpleName; + var useQualified = useQualifiedName(category); + var input = useQualified ? qualifiedName : simpleName; + var startOfName = useQualified ? prefix.length : 0; + var endOfName = category === "members" && input.indexOf("(", startOfName) > -1 + ? input.indexOf("(", startOfName) : input.length; + var m = findMatch(matcher.plainMatcher, input, startOfName, endOfName); + if (m === NO_MATCH && matcher.camelCaseMatcher) { + m = findMatch(matcher.camelCaseMatcher, input, startOfName, endOfName); + } + if (m !== NO_MATCH) { + m.indexItem = item; + m.prefix = prefix; + m.category = category; + if (!useQualified) { + m.input = qualifiedName; + m.boundaries = m.boundaries.map(function(b) { + return b + prefix.length; + }); + } + matches.push(m); + } + return true; + }); + return matches.sort(function(e1, e2) { + return e2.score - e1.score; + }).slice(0, maxResults); + } + + var result = searchIndex(moduleSearchIndex, "modules") + .concat(searchIndex(packageSearchIndex, "packages")) + .concat(searchIndex(typeSearchIndex, "types")) + .concat(searchIndex(memberSearchIndex, "members")) + .concat(searchIndex(tagSearchIndex, "searchTags")); + + if (!indexLoaded) { + updateSearchResults = function() { + doSearch(request, response); + } + } else { + updateSearchResults = function() {}; + } + response(result); +} +// JQuery search menu implementation +$.widget("custom.catcomplete", $.ui.autocomplete, { + _create: function() { + this._super(); + this.widget().menu("option", "items", "> .result-item"); + // workaround for search result scrolling + this.menu._scrollIntoView = function _scrollIntoView( item ) { + var borderTop, paddingTop, offset, scroll, elementHeight, itemHeight; + if ( this._hasScroll() ) { + borderTop = parseFloat( $.css( this.activeMenu[ 0 ], "borderTopWidth" ) ) || 0; + paddingTop = parseFloat( $.css( this.activeMenu[ 0 ], "paddingTop" ) ) || 0; + offset = item.offset().top - this.activeMenu.offset().top - borderTop - paddingTop; + scroll = this.activeMenu.scrollTop(); + elementHeight = this.activeMenu.height() - 26; + itemHeight = item.outerHeight(); + + if ( offset < 0 ) { + this.activeMenu.scrollTop( scroll + offset ); + } else if ( offset + itemHeight > elementHeight ) { + this.activeMenu.scrollTop( scroll + offset - elementHeight + itemHeight ); + } + } + }; + }, + _renderMenu: function(ul, items) { + var currentCategory = ""; + var widget = this; + widget.menu.bindings = $(); + $.each(items, function(index, item) { + if (item.category && item.category !== currentCategory) { + ul.append("
      • " + categories[item.category] + "
      • "); + currentCategory = item.category; + } + var li = widget._renderItemData(ul, item); + if (item.category) { + li.attr("aria-label", categories[item.category] + " : " + item.l); + } else { + li.attr("aria-label", item.l); + } + li.attr("class", "result-item"); + }); + ul.append(""); + }, + _renderItem: function(ul, item) { + var li = $("
      • ").appendTo(ul); + var div = $("
        ").appendTo(li); + var label = item.l + ? item.l + : getHighlightedText(item.input, item.boundaries, 0, item.input.length); + var idx = item.indexItem; + if (item.category === "searchTags" && idx.h) { + if (idx.d) { + div.html(label + " (" + idx.h + ")
        " + + idx.d + "
        "); + } else { + div.html(label + " (" + idx.h + ")"); + } + } else { + div.html(label); + } + return li; + } +}); +$(function() { + var expanded = false; + var windowWidth; + function collapse() { + if (expanded) { + $("div#navbar-top").removeAttr("style"); + $("button#navbar-toggle-button") + .removeClass("expanded") + .attr("aria-expanded", "false"); + expanded = false; + } + } + $("button#navbar-toggle-button").click(function (e) { + if (expanded) { + collapse(); + } else { + var navbar = $("div#navbar-top"); + navbar.height(navbar.prop("scrollHeight")); + $("button#navbar-toggle-button") + .addClass("expanded") + .attr("aria-expanded", "true"); + expanded = true; + windowWidth = window.innerWidth; + } + }); + $("ul.sub-nav-list-small li a").click(collapse); + $("input#search-input").focus(collapse); + $("main").click(collapse); + $("section[id] > :header, :header[id], :header:has(a[id])").hover( + function () { + $(this).append($("")); + }, + function () { + $(this).find("button:last").remove(); + } + ); + $(window).on("orientationchange", collapse).on("resize", function(e) { + if (expanded && windowWidth !== window.innerWidth) collapse(); + }); + var search = $("#search-input"); + var reset = $("#reset-button"); + search.catcomplete({ + minLength: 1, + delay: 200, + source: doSearch, + response: function(event, ui) { + if (!ui.content.length) { + ui.content.push({ l: messages.noResult }); + } else { + $("#search-input").empty(); + } + }, + autoFocus: true, + focus: function(event, ui) { + return false; + }, + position: { + collision: "flip" + }, + select: function(event, ui) { + if (ui.item.indexItem) { + var url = getURL(ui.item.indexItem, ui.item.category); + window.location.href = pathtoroot + url; + $("#search-input").focus(); + } + } + }); + search.val(''); + search.prop("disabled", false); + reset.prop("disabled", false); + reset.click(function() { + search.val('').focus(); + }); + search.focus(); +}); diff --git a/Dokumente/JavaDoc/model/docs/javadoc/stylesheet.css b/Dokumente/JavaDoc/model/docs/javadoc/stylesheet.css new file mode 100644 index 0000000..cc0c20f --- /dev/null +++ b/Dokumente/JavaDoc/model/docs/javadoc/stylesheet.css @@ -0,0 +1,1264 @@ +/* + * Javadoc style sheet + */ + +@import url('resources/fonts/dejavu.css'); + +/* + * These CSS custom properties (variables) define the core color and font + * properties used in this stylesheet. + */ +:root { + /* body, block and code fonts */ + --body-font-family: 'DejaVu Sans', Arial, Helvetica, sans-serif; + --block-font-family: 'DejaVu Serif', Georgia, "Times New Roman", Times, serif; + --code-font-family: 'DejaVu Sans Mono', monospace; + /* Base font sizes for body and code elements */ + --body-font-size: 14px; + --code-font-size: 14px; + /* Text colors for body and block elements */ + --body-text-color: #353833; + --block-text-color: #474747; + /* Background colors for various structural elements */ + --body-background-color: #ffffff; + --section-background-color: #f8f8f8; + --detail-background-color: #ffffff; + /* Colors for navigation bar and table captions */ + --navbar-background-color: #4D7A97; + --navbar-text-color: #ffffff; + /* Background color for subnavigation and various headers */ + --subnav-background-color: #dee3e9; + /* Background and text colors for selected tabs and navigation items */ + --selected-background-color: #f8981d; + --selected-text-color: #253441; + --selected-link-color: #1f389c; + /* Background colors for generated tables */ + --even-row-color: #ffffff; + --odd-row-color: #eeeeef; + /* Text color for page title */ + --title-color: #2c4557; + /* Text colors for links */ + --link-color: #4A6782; + --link-color-active: #bb7a2a; + /* Snippet colors */ + --snippet-background-color: #ebecee; + --snippet-text-color: var(--block-text-color); + --snippet-highlight-color: #f7c590; + /* Border colors for structural elements and user defined tables */ + --border-color: #ededed; + --table-border-color: #000000; + /* Search input colors */ + --search-input-background-color: #ffffff; + --search-input-text-color: #000000; + --search-input-placeholder-color: #909090; + /* Highlight color for active search tag target */ + --search-tag-highlight-color: #ffff00; + /* Adjustments for icon and active background colors of copy-to-clipboard buttons */ + --copy-icon-brightness: 100%; + --copy-button-background-color-active: rgba(168, 168, 176, 0.3); + /* Colors for invalid tag notifications */ + --invalid-tag-background-color: #ffe6e6; + --invalid-tag-text-color: #000000; +} +/* + * Styles for individual HTML elements. + * + * These are styles that are specific to individual HTML elements. Changing them affects the style of a particular + * HTML element throughout the page. + */ +body { + background-color:var(--body-background-color); + color:var(--body-text-color); + font-family:var(--body-font-family); + font-size:var(--body-font-size); + margin:0; + padding:0; + height:100%; + width:100%; +} +iframe { + margin:0; + padding:0; + height:100%; + width:100%; + overflow-y:scroll; + border:none; +} +a:link, a:visited { + text-decoration:none; + color:var(--link-color); +} +a[href]:hover, a[href]:focus { + text-decoration:none; + color:var(--link-color-active); +} +pre { + font-family:var(--code-font-family); + font-size:1em; +} +h1 { + font-size:1.428em; +} +h2 { + font-size:1.285em; +} +h3 { + font-size:1.14em; +} +h4 { + font-size:1.072em; +} +h5 { + font-size:1.001em; +} +h6 { + font-size:0.93em; +} +/* Disable font boosting for selected elements */ +h1, h2, h3, h4, h5, h6, div.member-signature { + max-height: 1000em; +} +ul { + list-style-type:disc; +} +code, tt { + font-family:var(--code-font-family); +} +:not(h1, h2, h3, h4, h5, h6) > code, +:not(h1, h2, h3, h4, h5, h6) > tt { + font-size:var(--code-font-size); + padding-top:4px; + margin-top:8px; + line-height:1.4em; +} +dt code { + font-family:var(--code-font-family); + font-size:1em; + padding-top:4px; +} +.summary-table dt code { + font-family:var(--code-font-family); + font-size:1em; + vertical-align:top; + padding-top:4px; +} +sup { + font-size:8px; +} +button { + font-family: var(--body-font-family); + font-size: 1em; +} +/* + * Styles for HTML generated by javadoc. + * + * These are style classes that are used by the standard doclet to generate HTML documentation. + */ + +/* + * Styles for document title and copyright. + */ +.about-language { + float:right; + padding:0 21px 8px 8px; + font-size:0.915em; + margin-top:-9px; + height:2.9em; +} +.legal-copy { + margin-left:.5em; +} +/* + * Styles for navigation bar. + */ +@media screen { + div.flex-box { + position:fixed; + display:flex; + flex-direction:column; + height: 100%; + width: 100%; + } + header.flex-header { + flex: 0 0 auto; + } + div.flex-content { + flex: 1 1 auto; + overflow-y: auto; + } +} +.top-nav { + background-color:var(--navbar-background-color); + color:var(--navbar-text-color); + float:left; + width:100%; + clear:right; + min-height:2.8em; + padding:10px 0 0 0; + overflow:hidden; + font-size:0.857em; +} +button#navbar-toggle-button { + display:none; +} +ul.sub-nav-list-small { + display: none; +} +.sub-nav { + background-color:var(--subnav-background-color); + float:left; + width:100%; + overflow:hidden; + font-size:0.857em; +} +.sub-nav div { + clear:left; + float:left; + padding:6px; + text-transform:uppercase; +} +.sub-nav .sub-nav-list { + padding-top:4px; +} +ul.nav-list { + display:block; + margin:0 25px 0 0; + padding:0; +} +ul.sub-nav-list { + float:left; + margin:0 25px 0 0; + padding:0; +} +ul.nav-list li { + list-style:none; + float:left; + padding: 5px 6px; + text-transform:uppercase; +} +.sub-nav .nav-list-search { + float:right; + margin:0; + padding:6px; + clear:none; + text-align:right; + position:relative; +} +ul.sub-nav-list li { + list-style:none; + float:left; +} +.top-nav a:link, .top-nav a:active, .top-nav a:visited { + color:var(--navbar-text-color); + text-decoration:none; + text-transform:uppercase; +} +.top-nav a:hover { + color:var(--link-color-active); +} +.nav-bar-cell1-rev { + background-color:var(--selected-background-color); + color:var(--selected-text-color); + margin: auto 5px; +} +.skip-nav { + position:absolute; + top:auto; + left:-9999px; + overflow:hidden; +} +/* + * Hide navigation links and search box in print layout + */ +@media print { + ul.nav-list, div.sub-nav { + display:none; + } +} +/* + * Styles for page header. + */ +.title { + color:var(--title-color); + margin:10px 0; +} +.sub-title { + margin:5px 0 0 0; +} +ul.contents-list { + margin: 0 0 15px 0; + padding: 0; + list-style: none; +} +ul.contents-list li { + font-size:0.93em; +} +/* + * Styles for headings. + */ +body.class-declaration-page .summary h2, +body.class-declaration-page .details h2, +body.class-use-page h2, +body.module-declaration-page .block-list h2 { + font-style: italic; + padding:0; + margin:15px 0; +} +body.class-declaration-page .summary h3, +body.class-declaration-page .details h3, +body.class-declaration-page .summary .inherited-list h2 { + background-color:var(--subnav-background-color); + border:1px solid var(--border-color); + margin:0 0 6px -8px; + padding:7px 5px; +} +/* + * Styles for page layout containers. + */ +main { + clear:both; + padding:10px 20px; + position:relative; +} +dl.notes > dt { + font-family: var(--body-font-family); + font-size:0.856em; + font-weight:bold; + margin:10px 0 0 0; + color:var(--body-text-color); +} +dl.notes > dd { + margin:5px 10px 10px 0; + font-size:1em; + font-family:var(--block-font-family) +} +dl.name-value > dt { + margin-left:1px; + font-size:1.1em; + display:inline; + font-weight:bold; +} +dl.name-value > dd { + margin:0 0 0 1px; + font-size:1.1em; + display:inline; +} +/* + * Styles for lists. + */ +li.circle { + list-style:circle; +} +ul.horizontal li { + display:inline; + font-size:0.9em; +} +div.inheritance { + margin:0; + padding:0; +} +div.inheritance div.inheritance { + margin-left:2em; +} +ul.block-list, +ul.details-list, +ul.member-list, +ul.summary-list { + margin:10px 0 10px 0; + padding:0; +} +ul.block-list > li, +ul.details-list > li, +ul.member-list > li, +ul.summary-list > li { + list-style:none; + margin-bottom:15px; + line-height:1.4; +} +ul.ref-list { + padding:0; + margin:0; +} +ul.ref-list > li { + list-style:none; +} +.summary-table dl, .summary-table dl dt, .summary-table dl dd { + margin-top:0; + margin-bottom:1px; +} +ul.tag-list, ul.tag-list-long { + padding-left: 0; + list-style: none; +} +ul.tag-list li { + display: inline; +} +ul.tag-list li:not(:last-child):after, +ul.tag-list-long li:not(:last-child):after +{ + content: ", "; + white-space: pre-wrap; +} +ul.preview-feature-list { + list-style: none; + margin:0; + padding:0.1em; + line-height: 1.6em; +} +/* + * Styles for tables. + */ +.summary-table, .details-table { + width:100%; + border-spacing:0; + border:1px solid var(--border-color); + border-top:0; + padding:0; +} +.caption { + position:relative; + text-align:left; + background-repeat:no-repeat; + color:var(--selected-text-color); + clear:none; + overflow:hidden; + padding: 10px 0 0 1px; + margin:0; +} +.caption a:link, .caption a:visited { + color:var(--selected-link-color); +} +.caption a:hover, +.caption a:active { + color:var(--navbar-text-color); +} +.caption span { + font-weight:bold; + white-space:nowrap; + padding:5px 12px 7px 12px; + display:inline-block; + float:left; + background-color:var(--selected-background-color); + border: none; + height:16px; +} +div.table-tabs { + padding:10px 0 0 1px; + margin:10px 0 0 0; +} +div.table-tabs > button { + border: none; + cursor: pointer; + padding: 5px 12px 7px 12px; + font-weight: bold; + margin-right: 8px; +} +div.table-tabs > .active-table-tab { + background: var(--selected-background-color); + color: var(--selected-text-color); +} +div.table-tabs > button.table-tab { + background: var(--navbar-background-color); + color: var(--navbar-text-color); +} +.two-column-search-results { + display: grid; + grid-template-columns: minmax(400px, max-content) minmax(400px, auto); +} +div.checkboxes { + line-height: 2em; +} +div.checkboxes > span { + margin-left: 10px; +} +div.checkboxes > label { + margin-left: 8px; + white-space: nowrap; +} +div.checkboxes > label > input { + margin: 0 2px; +} +.two-column-summary { + display: grid; + grid-template-columns: minmax(25%, max-content) minmax(25%, auto); +} +.three-column-summary { + display: grid; + grid-template-columns: minmax(15%, max-content) minmax(20%, max-content) minmax(20%, auto); +} +.three-column-release-summary { + display: grid; + grid-template-columns: minmax(40%, max-content) minmax(10%, max-content) minmax(40%, auto); +} +.four-column-summary { + display: grid; + grid-template-columns: minmax(10%, max-content) minmax(15%, max-content) minmax(15%, max-content) minmax(15%, auto); +} +@media screen and (max-width: 1000px) { + .four-column-summary { + display: grid; + grid-template-columns: minmax(15%, max-content) minmax(15%, auto); + } +} +@media screen and (max-width: 800px) { + .two-column-search-results { + display: grid; + grid-template-columns: minmax(40%, max-content) minmax(40%, auto); + } + .three-column-summary { + display: grid; + grid-template-columns: minmax(10%, max-content) minmax(25%, auto); + } + .three-column-release-summary { + display: grid; + grid-template-columns: minmax(70%, max-content) minmax(30%, max-content) + } + .three-column-summary .col-last, + .three-column-release-summary .col-last{ + grid-column-end: span 2; + } +} +@media screen and (max-width: 600px) { + .two-column-summary { + display: grid; + grid-template-columns: 1fr; + } +} +.summary-table > div, .details-table > div { + text-align:left; + padding: 8px 3px 3px 7px; + overflow-x: auto; + scrollbar-width: thin; +} +.col-first, .col-second, .col-last, .col-constructor-name, .col-summary-item-name { + vertical-align:top; + padding-right:0; + padding-top:8px; + padding-bottom:3px; +} +.table-header { + background:var(--subnav-background-color); + font-weight: bold; +} +/* Sortable table columns */ +.table-header[onclick] { + cursor: pointer; +} +.table-header[onclick]::after { + content:""; + display:inline-block; + background-image:url('data:image/svg+xml; utf8, \ + \ + '); + background-size:100% 100%; + width:9px; + height:14px; + margin-left:4px; + margin-bottom:-3px; +} +.table-header[onclick].sort-asc::after { + background-image:url('data:image/svg+xml; utf8, \ + \ + \ + '); + +} +.table-header[onclick].sort-desc::after { + background-image:url('data:image/svg+xml; utf8, \ + \ + \ + '); +} +.col-first, .col-first { + font-size:0.93em; +} +.col-second, .col-second, .col-last, .col-constructor-name, .col-summary-item-name, .col-last { + font-size:0.93em; +} +.col-first, .col-second, .col-constructor-name { + vertical-align:top; + overflow: auto; +} +.col-last { + white-space:normal; +} +.col-first a:link, .col-first a:visited, +.col-second a:link, .col-second a:visited, +.col-first a:link, .col-first a:visited, +.col-second a:link, .col-second a:visited, +.col-constructor-name a:link, .col-constructor-name a:visited, +.col-summary-item-name a:link, .col-summary-item-name a:visited { + font-weight:bold; +} +.even-row-color, .even-row-color .table-header { + background-color:var(--even-row-color); +} +.odd-row-color, .odd-row-color .table-header { + background-color:var(--odd-row-color); +} +/* + * Styles for contents. + */ +div.block { + font-size:var(--body-font-size); + font-family:var(--block-font-family); +} +.col-last div { + padding-top:0; +} +.col-last a { + padding-bottom:3px; +} +.module-signature, +.package-signature, +.type-signature, +.member-signature { + font-family:var(--code-font-family); + font-size:1em; + margin:14px 0; + white-space: pre-wrap; +} +.module-signature, +.package-signature, +.type-signature { + margin-top: 0; +} +.member-signature .type-parameters-long, +.member-signature .parameters, +.member-signature .exceptions { + display: inline-block; + vertical-align: top; + white-space: pre; +} +.member-signature .type-parameters { + white-space: normal; +} +/* + * Styles for formatting effect. + */ +.source-line-no { + /* Color of line numbers in source pages can be set via custom property below */ + color:var(--source-linenumber-color, green); + padding:0 30px 0 0; +} +.block { + display:block; + margin:0 10px 5px 0; + color:var(--block-text-color); +} +.deprecated-label, .description-from-type-label, .implementation-label, .member-name-link, +.module-label-in-package, .module-label-in-type, .package-label-in-type, +.package-hierarchy-label, .type-name-label, .type-name-link, .search-tag-link, .preview-label { + font-weight:bold; +} +.deprecation-comment, .help-footnote, .preview-comment { + font-style:italic; +} +.deprecation-block { + font-size:1em; + font-family:var(--block-font-family); + border-style:solid; + border-width:thin; + border-radius:10px; + padding:10px; + margin-bottom:10px; + margin-right:10px; + display:inline-block; +} +.preview-block { + font-size:1em; + font-family:var(--block-font-family); + border-style:solid; + border-width:thin; + border-radius:10px; + padding:10px; + margin-bottom:10px; + margin-right:10px; + display:inline-block; +} +div.block div.deprecation-comment { + font-style:normal; +} +details.invalid-tag, span.invalid-tag { + font-size:1em; + font-family:var(--block-font-family); + color: var(--invalid-tag-text-color); + background: var(--invalid-tag-background-color); + border: thin solid var(--table-border-color); + border-radius:2px; + padding: 2px 4px; + display:inline-block; +} +details summary { + cursor: pointer; +} +/* + * Styles specific to HTML5 elements. + */ +main, nav, header, footer, section { + display:block; +} +/* + * Styles for javadoc search. + */ +.ui-state-active { + /* Overrides the color of selection used in jQuery UI */ + background: var(--selected-background-color); + border: 1px solid var(--selected-background-color); + color: var(--selected-text-color); +} +.ui-autocomplete-category { + font-weight:bold; + font-size:15px; + padding:7px 0 7px 3px; + background-color:var(--navbar-background-color); + color:var(--navbar-text-color); +} +.ui-autocomplete { + max-height:85%; + max-width:65%; + overflow-y:auto; + overflow-x:auto; + scrollbar-width: thin; + white-space:nowrap; + box-shadow: 0 3px 6px rgba(0,0,0,0.16), 0 3px 6px rgba(0,0,0,0.23); +} +ul.ui-autocomplete { + position:fixed; + z-index:1; + background-color: var(--body-background-color); +} +ul.ui-autocomplete li { + float:left; + clear:both; + min-width:100%; +} +ul.ui-autocomplete li.ui-static-link { + position:sticky; + bottom:0; + left:0; + background: var(--subnav-background-color); + padding: 5px 0; + font-family: var(--body-font-family); + font-size: 0.93em; + font-weight: bolder; + z-index: 2; +} +li.ui-static-link a, li.ui-static-link a:visited { + text-decoration:none; + color:var(--link-color); + float:right; + margin-right:20px; +} +.ui-autocomplete .result-item { + font-size: inherit; +} +.ui-autocomplete .result-highlight { + font-weight:bold; +} +#search-input, #page-search-input { + background-image:url('resources/glass.png'); + background-size:13px; + background-repeat:no-repeat; + background-position:2px 3px; + background-color: var(--search-input-background-color); + color: var(--search-input-text-color); + border-color: var(--border-color); + padding-left:20px; + width: 250px; + margin: 0; +} +#search-input { + margin-left: 4px; +} +#reset-button { + background-color: transparent; + background-image:url('resources/x.png'); + background-repeat:no-repeat; + background-size:contain; + border:0; + border-radius:0; + width:12px; + height:12px; + position:absolute; + right:12px; + top:10px; + font-size:0; +} +::placeholder { + color:var(--search-input-placeholder-color); + opacity: 1; +} +.search-tag-desc-result { + font-style:italic; + font-size:11px; +} +.search-tag-holder-result { + font-style:italic; + font-size:12px; +} +.search-tag-result:target { + background-color:var(--search-tag-highlight-color); +} +details.page-search-details { + display: inline-block; +} +div#result-container { + font-size: 1em; +} +div#result-container a.search-result-link { + padding: 0; + margin: 4px 0; + width: 100%; +} +#result-container .result-highlight { + font-weight:bolder; +} +.page-search-info { + background-color: var(--subnav-background-color); + border-radius: 3px; + border: 0 solid var(--border-color); + padding: 0 8px; + overflow: hidden; + height: 0; + transition: all 0.2s ease; +} +div.table-tabs > button.table-tab { + background: var(--navbar-background-color); + color: var(--navbar-text-color); +} +.page-search-header { + padding: 5px 12px 7px 12px; + font-weight: bold; + margin-right: 3px; + background-color:var(--navbar-background-color); + color:var(--navbar-text-color); + display: inline-block; +} +button.page-search-header { + border: none; + cursor: pointer; +} +span#page-search-link { + text-decoration: underline; +} +.module-graph span, .sealed-graph span { + display:none; + position:absolute; +} +.module-graph:hover span, .sealed-graph:hover span { + display:block; + margin: -100px 0 0 100px; + z-index: 1; +} +.inherited-list { + margin: 10px 0 10px 0; +} +section.class-description { + line-height: 1.4; +} +.summary section[class$="-summary"], .details section[class$="-details"], +.class-uses .detail, .serialized-class-details { + padding: 0 20px 5px 10px; + border: 1px solid var(--border-color); + background-color: var(--section-background-color); +} +.inherited-list, section[class$="-details"] .detail { + padding:0 0 5px 8px; + background-color:var(--detail-background-color); + border:none; +} +.vertical-separator { + padding: 0 5px; +} +ul.help-section-list { + margin: 0; +} +ul.help-subtoc > li { + display: inline-block; + padding-right: 5px; + font-size: smaller; +} +ul.help-subtoc > li::before { + content: "\2022" ; + padding-right:2px; +} +.help-note { + font-style: italic; +} +/* + * Indicator icon for external links. + */ +main a[href*="://"]::after { + content:""; + display:inline-block; + background-image:url('data:image/svg+xml; utf8, \ + \ + \ + '); + background-size:100% 100%; + width:7px; + height:7px; + margin-left:2px; + margin-bottom:4px; +} +main a[href*="://"]:hover::after, +main a[href*="://"]:focus::after { + background-image:url('data:image/svg+xml; utf8, \ + \ + \ + '); +} +/* + * Styles for copy-to-clipboard buttons + */ +button.copy { + opacity: 80%; + border: none; + border-radius: 3px; + position: relative; + background:none; + transition: opacity 0.2s; + cursor: pointer; +} +button.copy:hover, +button.copy:active { + opacity: 100%; +} +button.copy img { + position: relative; + background: none; + filter: brightness(var(--copy-icon-brightness)); +} +button.copy:active { + background-color: var(--copy-button-background-color-active); +} +button.copy span { + color: var(--body-text-color); + position: relative; + top: -0.1em; + transition: all 0.1s; + font-size: 0.76rem; + line-height: 1.2em; +} +/* header/section copy button */ +button.copy-header { + margin: 0 0.2em; + padding: 0 4px; + height: 1.16em; +} +button.copy-header img { + height: 0.88em; + top: 0.1em; +} +/* search page copy button */ +button#page-search-copy { + margin-left: 0.4em; + padding:0.3em; + top:0.13em; +} +button#page-search-copy img { + width: 1.2em; + height: 1.2em; + padding: 0.01em 0; + top: 0.15em; +} +button#page-search-copy span { + color: var(--body-text-color); + content: attr(aria-label); + line-height: 1.2em; + padding: 0.2em; + top: -0.18em; + opacity: 0; +} +div.page-search-info:hover button#page-search-copy, +div.page-search-info:hover button#page-search-copy span { + opacity: 90%; +} +/* snippet copy button */ +button.snippet-copy { + position: absolute; + top: 6px; + right: 6px; + height: 1.7em; + opacity: 50%; + padding: 2px; +} +button.snippet-copy img { + width: 18px; + height: 18px; + padding: 0.05em 0; +} +button.snippet-copy span { + content: attr(aria-label); + line-height: 1.2em; + padding: 0.2em; + position: relative; + top: -0.5em; + display: none; +} +div.snippet-container:hover button.snippet-copy span { + display: inline; +} +div.snippet-container:hover button.snippet-copy { + opacity: 80%; +} +div.snippet-container button.snippet-copy:hover { + opacity: 100%; +} +/* + * Styles for user-provided tables. + * + * borderless: + * No borders, vertical margins, styled caption. + * This style is provided for use with existing doc comments. + * In general, borderless tables should not be used for layout purposes. + * + * plain: + * Plain borders around table and cells, vertical margins, styled caption. + * Best for small tables or for complex tables for tables with cells that span + * rows and columns, when the "striped" style does not work well. + * + * striped: + * Borders around the table and vertical borders between cells, striped rows, + * vertical margins, styled caption. + * Best for tables that have a header row, and a body containing a series of simple rows. + */ + +table.borderless, +table.plain, +table.striped { + margin-top: 10px; + margin-bottom: 10px; +} +table.borderless > caption, +table.plain > caption, +table.striped > caption { + font-weight: bold; + font-size: smaller; +} +table.borderless th, table.borderless td, +table.plain th, table.plain td, +table.striped th, table.striped td { + padding: 2px 5px; +} +table.borderless, +table.borderless > thead > tr > th, table.borderless > tbody > tr > th, table.borderless > tr > th, +table.borderless > thead > tr > td, table.borderless > tbody > tr > td, table.borderless > tr > td { + border: none; +} +table.borderless > thead > tr, table.borderless > tbody > tr, table.borderless > tr { + background-color: transparent; +} +table.plain { + border-collapse: collapse; + border: 1px solid var(--table-border-color); +} +table.plain > thead > tr, table.plain > tbody tr, table.plain > tr { + background-color: transparent; +} +table.plain > thead > tr > th, table.plain > tbody > tr > th, table.plain > tr > th, +table.plain > thead > tr > td, table.plain > tbody > tr > td, table.plain > tr > td { + border: 1px solid var(--table-border-color); +} +table.striped { + border-collapse: collapse; + border: 1px solid var(--table-border-color); +} +table.striped > thead { + background-color: var(--subnav-background-color); +} +table.striped > thead > tr > th, table.striped > thead > tr > td { + border: 1px solid var(--table-border-color); +} +table.striped > tbody > tr:nth-child(even) { + background-color: var(--odd-row-color) +} +table.striped > tbody > tr:nth-child(odd) { + background-color: var(--even-row-color) +} +table.striped > tbody > tr > th, table.striped > tbody > tr > td { + border-left: 1px solid var(--table-border-color); + border-right: 1px solid var(--table-border-color); +} +table.striped > tbody > tr > th { + font-weight: normal; +} +/** + * Tweak style for small screens. + */ +@media screen and (max-width: 920px) { + header.flex-header { + max-height: 100vh; + overflow-y: auto; + } + div#navbar-top { + height: 2.8em; + transition: height 0.35s ease; + } + ul.nav-list { + display: block; + width: 40%; + float:left; + clear: left; + margin: 10px 0 0 0; + padding: 0; + } + ul.nav-list li { + float: none; + padding: 6px; + margin-left: 10px; + margin-top: 2px; + } + ul.sub-nav-list-small { + display:block; + height: 100%; + width: 50%; + float: right; + clear: right; + background-color: var(--subnav-background-color); + color: var(--body-text-color); + margin: 6px 0 0 0; + padding: 0; + } + ul.sub-nav-list-small ul { + padding-left: 20px; + } + ul.sub-nav-list-small a:link, ul.sub-nav-list-small a:visited { + color:var(--link-color); + } + ul.sub-nav-list-small a:hover { + color:var(--link-color-active); + } + ul.sub-nav-list-small li { + list-style:none; + float:none; + padding: 6px; + margin-top: 1px; + text-transform:uppercase; + } + ul.sub-nav-list-small > li { + margin-left: 10px; + } + ul.sub-nav-list-small li p { + margin: 5px 0; + } + div#navbar-sub-list { + display: none; + } + .top-nav a:link, .top-nav a:active, .top-nav a:visited { + display: block; + } + button#navbar-toggle-button { + width: 3.4em; + height: 2.8em; + background-color: transparent; + display: block; + float: left; + border: 0; + margin: 0 10px; + cursor: pointer; + font-size: 10px; + } + button#navbar-toggle-button .nav-bar-toggle-icon { + display: block; + width: 24px; + height: 3px; + margin: 1px 0 4px 0; + border-radius: 2px; + transition: all 0.1s; + background-color: var(--navbar-text-color); + } + button#navbar-toggle-button.expanded span.nav-bar-toggle-icon:nth-child(1) { + transform: rotate(45deg); + transform-origin: 10% 10%; + width: 26px; + } + button#navbar-toggle-button.expanded span.nav-bar-toggle-icon:nth-child(2) { + opacity: 0; + } + button#navbar-toggle-button.expanded span.nav-bar-toggle-icon:nth-child(3) { + transform: rotate(-45deg); + transform-origin: 10% 90%; + width: 26px; + } +} +@media screen and (max-width: 800px) { + .about-language { + padding-right: 16px; + } + ul.nav-list li { + margin-left: 5px; + } + ul.sub-nav-list-small > li { + margin-left: 5px; + } + main { + padding: 10px; + } + .summary section[class$="-summary"], .details section[class$="-details"], + .class-uses .detail, .serialized-class-details { + padding: 0 8px 5px 8px; + } + body { + -webkit-text-size-adjust: none; + } +} +@media screen and (max-width: 400px) { + .about-language { + font-size: 10px; + padding-right: 12px; + } +} +@media screen and (max-width: 400px) { + .nav-list-search { + width: 94%; + } + #search-input, #page-search-input { + width: 70%; + } +} +@media screen and (max-width: 320px) { + .nav-list-search > label { + display: none; + } + .nav-list-search { + width: 90%; + } + #search-input, #page-search-input { + width: 80%; + } +} + +pre.snippet { + background-color: var(--snippet-background-color); + color: var(--snippet-text-color); + padding: 10px; + margin: 12px 0; + overflow: auto; + white-space: pre; +} +div.snippet-container { + position: relative; +} +@media screen and (max-width: 800px) { + pre.snippet { + padding-top: 26px; + } + button.snippet-copy { + top: 4px; + right: 4px; + } +} +pre.snippet .italic { + font-style: italic; +} +pre.snippet .bold { + font-weight: bold; +} +pre.snippet .highlighted { + background-color: var(--snippet-highlight-color); + border-radius: 10%; +} diff --git a/Dokumente/JavaDoc/model/docs/javadoc/tag-search-index.js b/Dokumente/JavaDoc/model/docs/javadoc/tag-search-index.js new file mode 100644 index 0000000..0367dae --- /dev/null +++ b/Dokumente/JavaDoc/model/docs/javadoc/tag-search-index.js @@ -0,0 +1 @@ +tagSearchIndex = [];updateSearchResults(); \ No newline at end of file diff --git a/Dokumente/JavaDoc/model/docs/javadoc/type-search-index.js b/Dokumente/JavaDoc/model/docs/javadoc/type-search-index.js new file mode 100644 index 0000000..e27e49e --- /dev/null +++ b/Dokumente/JavaDoc/model/docs/javadoc/type-search-index.js @@ -0,0 +1 @@ +typeSearchIndex = [{"l":"Alle Klassen und Schnittstellen","u":"allclasses-index.html"},{"p":"pp.battleship.model","l":"Battleship"},{"p":"pp.battleship.game.client","l":"BattleshipClient"},{"p":"pp.battleship.game.singlemode","l":"BattleshipClientConfig"},{"p":"pp.battleship","l":"BattleshipConfig"},{"p":"pp.battleship.game.client","l":"ClientGameLogic"},{"p":"pp.battleship.message.client","l":"ClientInterpreter"},{"p":"pp.battleship.message.client","l":"ClientMessage"},{"p":"pp.battleship.game.client","l":"ClientSender"},{"p":"pp.battleship.notification","l":"ClientStateEvent"},{"p":"pp.battleship.message.server","l":"EffectMessage"},{"p":"pp.battleship.message.server","l":"GameDetails"},{"p":"pp.battleship.notification","l":"GameEvent"},{"p":"pp.battleship.notification","l":"GameEventBroker"},{"p":"pp.battleship.notification","l":"GameEventListener"},{"p":"pp.battleship.notification","l":"InfoTextEvent"},{"p":"pp.battleship.model","l":"IntPoint"},{"p":"pp.battleship.model","l":"IntPosition"},{"p":"pp.battleship.model","l":"Item"},{"p":"pp.battleship.notification","l":"ItemAddedEvent"},{"p":"pp.battleship.notification","l":"ItemRemovedEvent"},{"p":"pp.battleship.message.client","l":"MapMessage"},{"p":"pp.battleship.game.server","l":"Player"},{"p":"pp.battleship","l":"Resources"},{"p":"pp.battleship.model","l":"Rotation"},{"p":"pp.battleship.game.client","l":"ServerConnection"},{"p":"pp.battleship.game.singlemode","l":"ServerConnectionMockup"},{"p":"pp.battleship.game.server","l":"ServerGameLogic"},{"p":"pp.battleship.message.server","l":"ServerInterpreter"},{"p":"pp.battleship.message.server","l":"ServerMessage"},{"p":"pp.battleship.game.server","l":"ServerSender"},{"p":"pp.battleship.model","l":"Shell"},{"p":"pp.battleship.message.client","l":"ShellAnimationFinishedMessage"},{"p":"pp.battleship.model","l":"ShellControl"},{"p":"pp.battleship.model","l":"ShipMap"},{"p":"pp.battleship.model.dto","l":"ShipMapDTO"},{"p":"pp.battleship.game.client","l":"ShootingAnimationState"},{"p":"pp.battleship.message.client","l":"ShootMessage"},{"p":"pp.battleship.model","l":"Shot"},{"p":"pp.battleship.notification","l":"Sound"},{"p":"pp.battleship.notification","l":"SoundEvent"},{"p":"pp.battleship.message.server","l":"StartBattleMessage"},{"p":"pp.battleship.model","l":"Battleship.Status"},{"p":"pp.battleship.model","l":"Visitor"},{"p":"pp.battleship.model","l":"VoidVisitor"}];updateSearchResults(); \ No newline at end of file diff --git a/Dokumente/JavaDoc/server/docs/javadoc/allclasses-index.html b/Dokumente/JavaDoc/server/docs/javadoc/allclasses-index.html new file mode 100644 index 0000000..50b4e2c --- /dev/null +++ b/Dokumente/JavaDoc/server/docs/javadoc/allclasses-index.html @@ -0,0 +1,66 @@ + + + + +Alle Klassen und Schnittstellen (server API) + + + + + + + + + + + + + +
        + +
        +
        +
        +

        Alle Klassen und Schnittstellen

        +
        +
        +
        Klassen
        +
        +
        Klasse
        +
        Beschreibung
        + +
        +
        Server implementing the visitor pattern as MessageReceiver for ClientMessages
        +
        +
        +
        +
        +
        +
        + + diff --git a/Dokumente/JavaDoc/server/docs/javadoc/allpackages-index.html b/Dokumente/JavaDoc/server/docs/javadoc/allpackages-index.html new file mode 100644 index 0000000..c103a65 --- /dev/null +++ b/Dokumente/JavaDoc/server/docs/javadoc/allpackages-index.html @@ -0,0 +1,62 @@ + + + + +Alle Packages (server API) + + + + + + + + + + + + + +
        + +
        +
        +
        +

        Alle Packages

        +
        +
        Packageübersicht
        +
        +
        Package
        +
        Beschreibung
        + +
         
        +
        +
        +
        +
        + + diff --git a/Dokumente/JavaDoc/server/docs/javadoc/copy.svg b/Dokumente/JavaDoc/server/docs/javadoc/copy.svg new file mode 100644 index 0000000..b4c4945 --- /dev/null +++ b/Dokumente/JavaDoc/server/docs/javadoc/copy.svg @@ -0,0 +1,33 @@ + + + + + + + + diff --git a/Dokumente/JavaDoc/server/docs/javadoc/element-list b/Dokumente/JavaDoc/server/docs/javadoc/element-list new file mode 100644 index 0000000..7f8678e --- /dev/null +++ b/Dokumente/JavaDoc/server/docs/javadoc/element-list @@ -0,0 +1 @@ +pp.battleship.server diff --git a/Dokumente/JavaDoc/server/docs/javadoc/help-doc.html b/Dokumente/JavaDoc/server/docs/javadoc/help-doc.html new file mode 100644 index 0000000..8adbb43 --- /dev/null +++ b/Dokumente/JavaDoc/server/docs/javadoc/help-doc.html @@ -0,0 +1,176 @@ + + + + +API-Hilfe (server API) + + + + + + + + + + + + + +
        + +
        +
        +

        Hilfe zu JavaDoc

        + +
        +
        +

        Navigation

        +Ausgehend von der Seite Überblick können Sie die Dokumentation mithilfe der Links durchsuchen, die sich auf jeder Seite und in der Navigationsleiste oben auf jeder Seite befinden. Mit Index und dem Suchfeld können Sie zu spezifischen Deklarationen und Übersichtsseiten navigieren, wie Alle Packages, Alle Klassen und Schnittstellen + +
        +
        +
        +

        Seitenarten

        +Die folgenden Abschnitte beschreiben die verschiedenen Seitenarten in dieser Collection. +
        +

        Package

        +

        Für jedes Package ist eine Seite vorhanden, die eine Liste der Klassen und Schnittstellen mit jeweils einer Übersicht dafür enthält. Diese Seiten können die folgenden Kategorien enthalten:

        +
          +
        • Schnittstellen
        • +
        • Klassen
        • +
        • Enum-Klassen
        • +
        • Ausnahmeklassen
        • +
        • Annotationsschnittstellen
        • +
        +
        +
        +

        Klasse oder Schnittstelle

        +

        Für jede Klasse, Schnittstelle, verschachtelte Klasse und verschachtelte Schnittstelle ist eine separate Seite vorhanden. Jede dieser Seiten enthält drei Abschnitte, die aus einer Deklaration und Beschreibung, Mitgliederübersichtstabellen und detaillierten Mitgliederbeschreibungen bestehen. Die Einträge in diesen Abschnitten werden weggelassen, wenn sie leer oder nicht anwendbar sind.

        +
          +
        • Klassenvererbungsdiagramm
        • +
        • Direkte Unterklassen
        • +
        • Alle bekannten Unterschnittstellen
        • +
        • Alle bekannten Implementierungsklassen
        • +
        • Klassen- oder Schnittstellendeklaration
        • +
        • Klassen- oder Schnittstellenbeschreibung
        • +
        +
        +
          +
        • Verschachtelte Klassen - Übersicht
        • +
        • Enum-Konstanten - Übersicht
        • +
        • Feldübersicht
        • +
        • Eigenschaftsübersicht
        • +
        • Konstruktorübersicht
        • +
        • Methodenübersicht
        • +
        • Erforderliche Elemente - Übersicht
        • +
        • Optionale Elemente - Übersicht
        • +
        +
        +
          +
        • Enum-Konstanten - Details
        • +
        • Felddetails
        • +
        • Eigenschaftsdetails
        • +
        • Konstruktordetails
        • +
        • Methodendetails
        • +
        • Elementdetails
        • +
        +

        Hinweis: Annotationsschnittstellen haben erforderliche und optionale Elemente, aber nicht Methoden. Nur Enum-Klassen haben Enum-Konstanten. Die Komponenten einer Datensatzklasse werden als Teil der Deklaration der Datensatzklasse angezeigt. Eigenschaften sind ein Feature von JavaFX.

        +

        Die Übersichtseinträge sind alphabetisch geordnet, während die detaillierten Beschreibungen in der Reihenfolge aufgeführt werden, in der sie im Quellcode auftreten. So werden die vom Programmierer festgelegten logischen Gruppierungen beibehalten.

        +
        +
        +

        Weitere Dateien

        +

        Packages und Module können Seiten mit weiteren Informationen zu den Deklarationen in der Nähe enthalten.

        +
        +
        +

        Baum (Klassenhierarchie)

        +

        Es gibt eine Seite Klassenhierarchie für alle Packages, und für jedes Package gibt es eine Hierarchie. Jede Hierarchieseite enthält eine Klassen- und eine Schnittstellenliste. Die Klassen sind nach Vererbungsstruktur organisiert, beginnend mit java.lang.Object. Die Schnittstellen erben nicht von java.lang.Object.

        +
          +
        • Wenn Sie auf der Übersichtsseite auf "Baum" klicken, wird die Hierarchie für alle Packages angezeigt.
        • +
        • Wenn Sie eine bestimmte Package-, Klassen- oder Schnittstellenseite anzeigen und auf "Baum" klicken, wird die Hierarchie nur für dieses Package angezeigt.
        • +
        +
        +
        +

        Alle Packages

        +

        Die Seite Alle Packages enthält einen alphabetischen Index aller Packages, die in der Dokumentation enthalten sind.

        +
        +
        +

        Alle Klassen und Schnittstellen

        +

        Die Seite Alle Klassen und Schnittstellen enthält einen alphabetischen Index aller Klassen und Schnittstellen in der Dokumentation, einschließlich Annotationsschnittstellen, Enum-Klassen und Datensatzklassen.

        +
        +
        +

        Index

        +

        Die Index enthält einen alphabetischen Index aller Klassen, Schnittstellen, Konstruktoren, Methoden und Felder in der Dokumentation sowie Übersichtsseiten wie Alle Packages, Alle Klassen und Schnittstellen.

        +
        +
        +
        +Diese Hilfedatei gilt für die vom Standard-Doclet generierte API-Dokumentation.
        +
        +
        + + diff --git a/Dokumente/JavaDoc/server/docs/javadoc/index-all.html b/Dokumente/JavaDoc/server/docs/javadoc/index-all.html new file mode 100644 index 0000000..d221864 --- /dev/null +++ b/Dokumente/JavaDoc/server/docs/javadoc/index-all.html @@ -0,0 +1,96 @@ + + + + +Index (server API) + + + + + + + + + + + + + +
        + +
        +
        +
        +

        Index

        +
        +B C M P R S 
        Alle Klassen und Schnittstellen|Alle Packages +

        B

        +
        +
        BattleshipServer - Klasse in pp.battleship.server
        +
        +
        Server implementing the visitor pattern as MessageReceiver for ClientMessages
        +
        +
        +

        C

        +
        +
        connectionAdded(Server, HostedConnection) - Methode in Klasse pp.battleship.server.BattleshipServer
        +
         
        +
        connectionRemoved(Server, HostedConnection) - Methode in Klasse pp.battleship.server.BattleshipServer
        +
         
        +
        +

        M

        +
        +
        main(String[]) - Statische Methode in Klasse pp.battleship.server.BattleshipServer
        +
        +
        Starts the Battleships server.
        +
        +
        messageReceived(HostedConnection, Message) - Methode in Klasse pp.battleship.server.BattleshipServer
        +
         
        +
        +

        P

        +
        +
        pp.battleship.server - Package pp.battleship.server
        +
         
        +
        +

        R

        +
        +
        run() - Methode in Klasse pp.battleship.server.BattleshipServer
        +
         
        +
        +

        S

        +
        +
        send(int, ServerMessage) - Methode in Klasse pp.battleship.server.BattleshipServer
        +
        +
        Send the specified message to the specified connection.
        +
        +
        +B C M P R S 
        Alle Klassen und Schnittstellen|Alle Packages
        +
        +
        + + diff --git a/Dokumente/JavaDoc/server/docs/javadoc/index.html b/Dokumente/JavaDoc/server/docs/javadoc/index.html new file mode 100644 index 0000000..51dd1ad --- /dev/null +++ b/Dokumente/JavaDoc/server/docs/javadoc/index.html @@ -0,0 +1,25 @@ + + + + +server API + + + + + + + + + + +
        + +

        pp/battleship/server/package-summary.html

        +
        + + diff --git a/Dokumente/JavaDoc/server/docs/javadoc/legal/ADDITIONAL_LICENSE_INFO b/Dokumente/JavaDoc/server/docs/javadoc/legal/ADDITIONAL_LICENSE_INFO new file mode 100644 index 0000000..3f7e921 --- /dev/null +++ b/Dokumente/JavaDoc/server/docs/javadoc/legal/ADDITIONAL_LICENSE_INFO @@ -0,0 +1 @@ +Please see ..\java.base\ADDITIONAL_LICENSE_INFO diff --git a/Dokumente/JavaDoc/server/docs/javadoc/legal/ASSEMBLY_EXCEPTION b/Dokumente/JavaDoc/server/docs/javadoc/legal/ASSEMBLY_EXCEPTION new file mode 100644 index 0000000..e09f918 --- /dev/null +++ b/Dokumente/JavaDoc/server/docs/javadoc/legal/ASSEMBLY_EXCEPTION @@ -0,0 +1 @@ +Please see ..\java.base\ASSEMBLY_EXCEPTION diff --git a/Dokumente/JavaDoc/server/docs/javadoc/legal/LICENSE b/Dokumente/JavaDoc/server/docs/javadoc/legal/LICENSE new file mode 100644 index 0000000..940481e --- /dev/null +++ b/Dokumente/JavaDoc/server/docs/javadoc/legal/LICENSE @@ -0,0 +1 @@ +Please see ..\java.base\LICENSE diff --git a/Dokumente/JavaDoc/server/docs/javadoc/legal/jquery.md b/Dokumente/JavaDoc/server/docs/javadoc/legal/jquery.md new file mode 100644 index 0000000..d468b31 --- /dev/null +++ b/Dokumente/JavaDoc/server/docs/javadoc/legal/jquery.md @@ -0,0 +1,72 @@ +## jQuery v3.6.1 + +### jQuery License +``` +jQuery v 3.6.1 +Copyright OpenJS Foundation and other contributors, https://openjsf.org/ + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +****************************************** + +The jQuery JavaScript Library v3.6.1 also includes Sizzle.js + +Sizzle.js includes the following license: + +Copyright JS Foundation and other contributors, https://js.foundation/ + +This software consists of voluntary contributions made by many +individuals. For exact contribution history, see the revision history +available at https://github.com/jquery/sizzle + +The following license applies to all parts of this software except as +documented below: + +==== + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +==== + +All files located in the node_modules and external directories are +externally maintained libraries used by this software which have their +own licenses; we recommend you read them, as their terms may differ from +the terms above. + +********************* + +``` diff --git a/Dokumente/JavaDoc/server/docs/javadoc/legal/jqueryUI.md b/Dokumente/JavaDoc/server/docs/javadoc/legal/jqueryUI.md new file mode 100644 index 0000000..9f4c9e9 --- /dev/null +++ b/Dokumente/JavaDoc/server/docs/javadoc/legal/jqueryUI.md @@ -0,0 +1,49 @@ +## jQuery UI v1.13.1 + +### jQuery UI License +``` +Copyright jQuery Foundation and other contributors, https://jquery.org/ + +This software consists of voluntary contributions made by many +individuals. For exact contribution history, see the revision history +available at https://github.com/jquery/jquery-ui + +The following license applies to all parts of this software except as +documented below: + +==== + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +==== + +Copyright and related rights for sample code are waived via CC0. Sample +code is defined as all source code contained within the demos directory. + +CC0: http://creativecommons.org/publicdomain/zero/1.0/ + +==== + +All files located in the node_modules and external directories are +externally maintained libraries used by this software which have their +own licenses; we recommend you read them, as their terms may differ from +the terms above. + +``` diff --git a/Dokumente/JavaDoc/server/docs/javadoc/member-search-index.js b/Dokumente/JavaDoc/server/docs/javadoc/member-search-index.js new file mode 100644 index 0000000..8a7fad1 --- /dev/null +++ b/Dokumente/JavaDoc/server/docs/javadoc/member-search-index.js @@ -0,0 +1 @@ +memberSearchIndex = [{"p":"pp.battleship.server","c":"BattleshipServer","l":"connectionAdded(Server, HostedConnection)","u":"connectionAdded(com.jme3.network.Server,com.jme3.network.HostedConnection)"},{"p":"pp.battleship.server","c":"BattleshipServer","l":"connectionRemoved(Server, HostedConnection)","u":"connectionRemoved(com.jme3.network.Server,com.jme3.network.HostedConnection)"},{"p":"pp.battleship.server","c":"BattleshipServer","l":"main(String[])","u":"main(java.lang.String[])"},{"p":"pp.battleship.server","c":"BattleshipServer","l":"messageReceived(HostedConnection, Message)","u":"messageReceived(com.jme3.network.HostedConnection,com.jme3.network.Message)"},{"p":"pp.battleship.server","c":"BattleshipServer","l":"run()"},{"p":"pp.battleship.server","c":"BattleshipServer","l":"send(int, ServerMessage)","u":"send(int,pp.battleship.message.server.ServerMessage)"}];updateSearchResults(); \ No newline at end of file diff --git a/Dokumente/JavaDoc/server/docs/javadoc/module-search-index.js b/Dokumente/JavaDoc/server/docs/javadoc/module-search-index.js new file mode 100644 index 0000000..0d59754 --- /dev/null +++ b/Dokumente/JavaDoc/server/docs/javadoc/module-search-index.js @@ -0,0 +1 @@ +moduleSearchIndex = [];updateSearchResults(); \ No newline at end of file diff --git a/Dokumente/JavaDoc/server/docs/javadoc/overview-tree.html b/Dokumente/JavaDoc/server/docs/javadoc/overview-tree.html new file mode 100644 index 0000000..24286a2 --- /dev/null +++ b/Dokumente/JavaDoc/server/docs/javadoc/overview-tree.html @@ -0,0 +1,69 @@ + + + + +Klassenhierarchie (server API) + + + + + + + + + + + + + +
        + +
        +
        +
        +

        Hierarchie für alle Packages

        +
        +Packagehierarchien: + +
        +

        Klassenhierarchie

        +
          +
        • java.lang.Object +
            +
          • pp.battleship.server.BattleshipServer (implements com.jme3.network.ConnectionListener, com.jme3.network.MessageListener<S>, pp.battleship.game.server.ServerSender)
          • +
          +
        • +
        +
        +
        +
        +
        + + diff --git a/Dokumente/JavaDoc/server/docs/javadoc/package-search-index.js b/Dokumente/JavaDoc/server/docs/javadoc/package-search-index.js new file mode 100644 index 0000000..4d82946 --- /dev/null +++ b/Dokumente/JavaDoc/server/docs/javadoc/package-search-index.js @@ -0,0 +1 @@ +packageSearchIndex = [{"l":"Alle Packages","u":"allpackages-index.html"},{"l":"pp.battleship.server"}];updateSearchResults(); \ No newline at end of file diff --git a/Dokumente/JavaDoc/server/docs/javadoc/pp/battleship/server/BattleshipServer.html b/Dokumente/JavaDoc/server/docs/javadoc/pp/battleship/server/BattleshipServer.html new file mode 100644 index 0000000..7f3abe9 --- /dev/null +++ b/Dokumente/JavaDoc/server/docs/javadoc/pp/battleship/server/BattleshipServer.html @@ -0,0 +1,227 @@ + + + + +BattleshipServer (server API) + + + + + + + + + + + + + +
        + +
        +
        + +
        + +

        Klasse BattleshipServer

        +
        +
        java.lang.Object +
        pp.battleship.server.BattleshipServer
        +
        +
        +
        +
        Alle implementierten Schnittstellen:
        +
        com.jme3.network.ConnectionListener, com.jme3.network.MessageListener<com.jme3.network.HostedConnection>, pp.battleship.game.server.ServerSender
        +
        +
        +
        public class BattleshipServer +extends Object +implements com.jme3.network.MessageListener<com.jme3.network.HostedConnection>, com.jme3.network.ConnectionListener, pp.battleship.game.server.ServerSender
        +
        Server implementing the visitor pattern as MessageReceiver for ClientMessages
        +
        +
        +
          + +
        • +
          +

          Methodenübersicht

          +
          +
          +
          +
          +
          Modifizierer und Typ
          +
          Methode
          +
          Beschreibung
          +
          void
          +
          connectionAdded(com.jme3.network.Server server, + com.jme3.network.HostedConnection hostedConnection)
          +
           
          +
          void
          +
          connectionRemoved(com.jme3.network.Server server, + com.jme3.network.HostedConnection hostedConnection)
          +
           
          +
          static void
          +
          main(String[] args)
          +
          +
          Starts the Battleships server.
          +
          +
          void
          +
          messageReceived(com.jme3.network.HostedConnection source, + com.jme3.network.Message message)
          +
           
          +
          void
          +
          run()
          +
           
          +
          void
          +
          send(int id, + pp.battleship.message.server.ServerMessage message)
          +
          +
          Send the specified message to the specified connection.
          +
          +
          +
          +
          +
          +

          Von Klasse geerbte Methoden java.lang.Object

          +clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
          +
          +
        • +
        +
        +
        +
          + +
        • +
          +

          Methodendetails

          +
            +
          • +
            +

            main

            +
            public static void main(String[] args)
            +
            Starts the Battleships server.
            +
            +
          • +
          • +
            +

            run

            +
            public void run()
            +
            +
          • +
          • +
            +

            messageReceived

            +
            public void messageReceived(com.jme3.network.HostedConnection source, + com.jme3.network.Message message)
            +
            +
            Angegeben von:
            +
            messageReceived in Schnittstelle com.jme3.network.MessageListener<com.jme3.network.HostedConnection>
            +
            +
            +
          • +
          • +
            +

            connectionAdded

            +
            public void connectionAdded(com.jme3.network.Server server, + com.jme3.network.HostedConnection hostedConnection)
            +
            +
            Angegeben von:
            +
            connectionAdded in Schnittstelle com.jme3.network.ConnectionListener
            +
            +
            +
          • +
          • +
            +

            connectionRemoved

            +
            public void connectionRemoved(com.jme3.network.Server server, + com.jme3.network.HostedConnection hostedConnection)
            +
            +
            Angegeben von:
            +
            connectionRemoved in Schnittstelle com.jme3.network.ConnectionListener
            +
            +
            +
          • +
          • +
            +

            send

            +
            public void send(int id, + pp.battleship.message.server.ServerMessage message)
            +
            Send the specified message to the specified connection.
            +
            +
            Angegeben von:
            +
            send in Schnittstelle pp.battleship.game.server.ServerSender
            +
            Parameter:
            +
            id - the connection id
            +
            message - the message
            +
            +
            +
          • +
          +
          +
        • +
        +
        + +
        +
        +
        + + diff --git a/Dokumente/JavaDoc/server/docs/javadoc/pp/battleship/server/package-summary.html b/Dokumente/JavaDoc/server/docs/javadoc/pp/battleship/server/package-summary.html new file mode 100644 index 0000000..b01ae5f --- /dev/null +++ b/Dokumente/JavaDoc/server/docs/javadoc/pp/battleship/server/package-summary.html @@ -0,0 +1,91 @@ + + + + +pp.battleship.server (server API) + + + + + + + + + + + + + +
        + +
        +
        +
        +

        Package pp.battleship.server

        +
        +
        +
        package pp.battleship.server
        +
        +
          +
        • +
          +
          Klassen
          +
          +
          Klasse
          +
          Beschreibung
          + +
          +
          Server implementing the visitor pattern as MessageReceiver for ClientMessages
          +
          +
          +
          +
        • +
        +
        +
        +
        +
        + + diff --git a/Dokumente/JavaDoc/server/docs/javadoc/pp/battleship/server/package-tree.html b/Dokumente/JavaDoc/server/docs/javadoc/pp/battleship/server/package-tree.html new file mode 100644 index 0000000..dcd2faf --- /dev/null +++ b/Dokumente/JavaDoc/server/docs/javadoc/pp/battleship/server/package-tree.html @@ -0,0 +1,65 @@ + + + + +pp.battleship.server Klassenhierarchie (server API) + + + + + + + + + + + + + +
        + +
        +
        +
        +

        Hierarchie für Package pp.battleship.server

        +
        +
        +

        Klassenhierarchie

        +
          +
        • java.lang.Object +
            +
          • pp.battleship.server.BattleshipServer (implements com.jme3.network.ConnectionListener, com.jme3.network.MessageListener<S>, pp.battleship.game.server.ServerSender)
          • +
          +
        • +
        +
        +
        +
        +
        + + diff --git a/Dokumente/JavaDoc/server/docs/javadoc/resources/glass.png b/Dokumente/JavaDoc/server/docs/javadoc/resources/glass.png new file mode 100644 index 0000000..a7f591f Binary files /dev/null and b/Dokumente/JavaDoc/server/docs/javadoc/resources/glass.png differ diff --git a/Dokumente/JavaDoc/server/docs/javadoc/resources/x.png b/Dokumente/JavaDoc/server/docs/javadoc/resources/x.png new file mode 100644 index 0000000..30548a7 Binary files /dev/null and b/Dokumente/JavaDoc/server/docs/javadoc/resources/x.png differ diff --git a/Dokumente/JavaDoc/server/docs/javadoc/script-dir/jquery-3.6.1.min.js b/Dokumente/JavaDoc/server/docs/javadoc/script-dir/jquery-3.6.1.min.js new file mode 100644 index 0000000..2c69bc9 --- /dev/null +++ b/Dokumente/JavaDoc/server/docs/javadoc/script-dir/jquery-3.6.1.min.js @@ -0,0 +1,2 @@ +/*! jQuery v3.6.1 | (c) OpenJS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,y=n.hasOwnProperty,a=y.toString,l=a.call(Object),v={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.6.1",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&v(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!y||!y.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ve(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ye(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ve(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],y=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&y.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||y.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||y.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||y.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||y.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||y.push(".#.+[+~]"),e.querySelectorAll("\\\f"),y.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&y.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&y.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&y.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),y.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),y=y.length&&new RegExp(y.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),v=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&v(p,e)?-1:t==C||t.ownerDocument==p&&v(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!y||!y.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),v.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",v.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",v.option=!!ce.lastChild;var ge={thead:[1,"","
        "],col:[2,"","
        "],tr:[2,"","
        "],td:[3,"","
        "],_default:[0,"",""]};function ye(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ve(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Ut,Xt=[],Vt=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Xt.pop()||S.expando+"_"+Ct.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Vt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Vt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Vt,"$1"+r):!1!==e.jsonp&&(e.url+=(Et.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Xt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),v.createHTMLDocument=((Ut=E.implementation.createHTMLDocument("").body).innerHTML="
        ",2===Ut.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(v.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return B(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=_e(v.pixelPosition,function(e,t){if(t)return t=Be(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return B(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0",options:{classes:{},disabled:!1,create:null},_createWidget:function(t,e){e=x(e||this.defaultElement||this)[0],this.element=x(e),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=x(),this.hoverable=x(),this.focusable=x(),this.classesElementLookup={},e!==this&&(x.data(e,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===e&&this.destroy()}}),this.document=x(e.style?e.ownerDocument:e.document||e),this.window=x(this.document[0].defaultView||this.document[0].parentWindow)),this.options=x.widget.extend({},this.options,this._getCreateOptions(),t),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:x.noop,_create:x.noop,_init:x.noop,destroy:function(){var i=this;this._destroy(),x.each(this.classesElementLookup,function(t,e){i._removeClass(e,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:x.noop,widget:function(){return this.element},option:function(t,e){var i,s,n,o=t;if(0===arguments.length)return x.widget.extend({},this.options);if("string"==typeof t)if(o={},t=(i=t.split(".")).shift(),i.length){for(s=o[t]=x.widget.extend({},this.options[t]),n=0;n
        "),i=e.children()[0];return x("body").append(e),t=i.offsetWidth,e.css("overflow","scroll"),t===(i=i.offsetWidth)&&(i=e[0].clientWidth),e.remove(),s=t-i},getScrollInfo:function(t){var e=t.isWindow||t.isDocument?"":t.element.css("overflow-x"),i=t.isWindow||t.isDocument?"":t.element.css("overflow-y"),e="scroll"===e||"auto"===e&&t.widthC(E(s),E(n))?o.important="horizontal":o.important="vertical",c.using.call(this,t,o)}),l.offset(x.extend(u,{using:t}))})},x.ui.position={fit:{left:function(t,e){var i=e.within,s=i.isWindow?i.scrollLeft:i.offset.left,n=i.width,o=t.left-e.collisionPosition.marginLeft,l=s-o,a=o+e.collisionWidth-n-s;e.collisionWidth>n?0n?0",delay:300,options:{icons:{submenu:"ui-icon-caret-1-e"},items:"> *",menus:"ul",position:{my:"left top",at:"right top"},role:"menu",blur:null,focus:null,select:null},_create:function(){this.activeMenu=this.element,this.mouseHandled=!1,this.lastMousePosition={x:null,y:null},this.element.uniqueId().attr({role:this.options.role,tabIndex:0}),this._addClass("ui-menu","ui-widget ui-widget-content"),this._on({"mousedown .ui-menu-item":function(t){t.preventDefault(),this._activateItem(t)},"click .ui-menu-item":function(t){var e=x(t.target),i=x(x.ui.safeActiveElement(this.document[0]));!this.mouseHandled&&e.not(".ui-state-disabled").length&&(this.select(t),t.isPropagationStopped()||(this.mouseHandled=!0),e.has(".ui-menu").length?this.expand(t):!this.element.is(":focus")&&i.closest(".ui-menu").length&&(this.element.trigger("focus",[!0]),this.active&&1===this.active.parents(".ui-menu").length&&clearTimeout(this.timer)))},"mouseenter .ui-menu-item":"_activateItem","mousemove .ui-menu-item":"_activateItem",mouseleave:"collapseAll","mouseleave .ui-menu":"collapseAll",focus:function(t,e){var i=this.active||this._menuItems().first();e||this.focus(t,i)},blur:function(t){this._delay(function(){x.contains(this.element[0],x.ui.safeActiveElement(this.document[0]))||this.collapseAll(t)})},keydown:"_keydown"}),this.refresh(),this._on(this.document,{click:function(t){this._closeOnDocumentClick(t)&&this.collapseAll(t,!0),this.mouseHandled=!1}})},_activateItem:function(t){var e,i;this.previousFilter||t.clientX===this.lastMousePosition.x&&t.clientY===this.lastMousePosition.y||(this.lastMousePosition={x:t.clientX,y:t.clientY},e=x(t.target).closest(".ui-menu-item"),i=x(t.currentTarget),e[0]===i[0]&&(i.is(".ui-state-active")||(this._removeClass(i.siblings().children(".ui-state-active"),null,"ui-state-active"),this.focus(t,i))))},_destroy:function(){var t=this.element.find(".ui-menu-item").removeAttr("role aria-disabled").children(".ui-menu-item-wrapper").removeUniqueId().removeAttr("tabIndex role aria-haspopup");this.element.removeAttr("aria-activedescendant").find(".ui-menu").addBack().removeAttr("role aria-labelledby aria-expanded aria-hidden aria-disabled tabIndex").removeUniqueId().show(),t.children().each(function(){var t=x(this);t.data("ui-menu-submenu-caret")&&t.remove()})},_keydown:function(t){var e,i,s,n=!0;switch(t.keyCode){case x.ui.keyCode.PAGE_UP:this.previousPage(t);break;case x.ui.keyCode.PAGE_DOWN:this.nextPage(t);break;case x.ui.keyCode.HOME:this._move("first","first",t);break;case x.ui.keyCode.END:this._move("last","last",t);break;case x.ui.keyCode.UP:this.previous(t);break;case x.ui.keyCode.DOWN:this.next(t);break;case x.ui.keyCode.LEFT:this.collapse(t);break;case x.ui.keyCode.RIGHT:this.active&&!this.active.is(".ui-state-disabled")&&this.expand(t);break;case x.ui.keyCode.ENTER:case x.ui.keyCode.SPACE:this._activate(t);break;case x.ui.keyCode.ESCAPE:this.collapse(t);break;default:e=this.previousFilter||"",s=n=!1,i=96<=t.keyCode&&t.keyCode<=105?(t.keyCode-96).toString():String.fromCharCode(t.keyCode),clearTimeout(this.filterTimer),i===e?s=!0:i=e+i,e=this._filterMenuItems(i),(e=s&&-1!==e.index(this.active.next())?this.active.nextAll(".ui-menu-item"):e).length||(i=String.fromCharCode(t.keyCode),e=this._filterMenuItems(i)),e.length?(this.focus(t,e),this.previousFilter=i,this.filterTimer=this._delay(function(){delete this.previousFilter},1e3)):delete this.previousFilter}n&&t.preventDefault()},_activate:function(t){this.active&&!this.active.is(".ui-state-disabled")&&(this.active.children("[aria-haspopup='true']").length?this.expand(t):this.select(t))},refresh:function(){var t,e,s=this,n=this.options.icons.submenu,i=this.element.find(this.options.menus);this._toggleClass("ui-menu-icons",null,!!this.element.find(".ui-icon").length),e=i.filter(":not(.ui-menu)").hide().attr({role:this.options.role,"aria-hidden":"true","aria-expanded":"false"}).each(function(){var t=x(this),e=t.prev(),i=x("").data("ui-menu-submenu-caret",!0);s._addClass(i,"ui-menu-icon","ui-icon "+n),e.attr("aria-haspopup","true").prepend(i),t.attr("aria-labelledby",e.attr("id"))}),this._addClass(e,"ui-menu","ui-widget ui-widget-content ui-front"),(t=i.add(this.element).find(this.options.items)).not(".ui-menu-item").each(function(){var t=x(this);s._isDivider(t)&&s._addClass(t,"ui-menu-divider","ui-widget-content")}),i=(e=t.not(".ui-menu-item, .ui-menu-divider")).children().not(".ui-menu").uniqueId().attr({tabIndex:-1,role:this._itemRole()}),this._addClass(e,"ui-menu-item")._addClass(i,"ui-menu-item-wrapper"),t.filter(".ui-state-disabled").attr("aria-disabled","true"),this.active&&!x.contains(this.element[0],this.active[0])&&this.blur()},_itemRole:function(){return{menu:"menuitem",listbox:"option"}[this.options.role]},_setOption:function(t,e){var i;"icons"===t&&(i=this.element.find(".ui-menu-icon"),this._removeClass(i,null,this.options.icons.submenu)._addClass(i,null,e.submenu)),this._super(t,e)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",String(t)),this._toggleClass(null,"ui-state-disabled",!!t)},focus:function(t,e){var i;this.blur(t,t&&"focus"===t.type),this._scrollIntoView(e),this.active=e.first(),i=this.active.children(".ui-menu-item-wrapper"),this._addClass(i,null,"ui-state-active"),this.options.role&&this.element.attr("aria-activedescendant",i.attr("id")),i=this.active.parent().closest(".ui-menu-item").children(".ui-menu-item-wrapper"),this._addClass(i,null,"ui-state-active"),t&&"keydown"===t.type?this._close():this.timer=this._delay(function(){this._close()},this.delay),(i=e.children(".ui-menu")).length&&t&&/^mouse/.test(t.type)&&this._startOpening(i),this.activeMenu=e.parent(),this._trigger("focus",t,{item:e})},_scrollIntoView:function(t){var e,i,s;this._hasScroll()&&(i=parseFloat(x.css(this.activeMenu[0],"borderTopWidth"))||0,s=parseFloat(x.css(this.activeMenu[0],"paddingTop"))||0,e=t.offset().top-this.activeMenu.offset().top-i-s,i=this.activeMenu.scrollTop(),s=this.activeMenu.height(),t=t.outerHeight(),e<0?this.activeMenu.scrollTop(i+e):s",options:{appendTo:null,autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null,change:null,close:null,focus:null,open:null,response:null,search:null,select:null},requestIndex:0,pending:0,liveRegionTimer:null,_create:function(){var i,s,n,t=this.element[0].nodeName.toLowerCase(),e="textarea"===t,t="input"===t;this.isMultiLine=e||!t&&this._isContentEditable(this.element),this.valueMethod=this.element[e||t?"val":"text"],this.isNewMenu=!0,this._addClass("ui-autocomplete-input"),this.element.attr("autocomplete","off"),this._on(this.element,{keydown:function(t){if(this.element.prop("readOnly"))s=n=i=!0;else{s=n=i=!1;var e=x.ui.keyCode;switch(t.keyCode){case e.PAGE_UP:i=!0,this._move("previousPage",t);break;case e.PAGE_DOWN:i=!0,this._move("nextPage",t);break;case e.UP:i=!0,this._keyEvent("previous",t);break;case e.DOWN:i=!0,this._keyEvent("next",t);break;case e.ENTER:this.menu.active&&(i=!0,t.preventDefault(),this.menu.select(t));break;case e.TAB:this.menu.active&&this.menu.select(t);break;case e.ESCAPE:this.menu.element.is(":visible")&&(this.isMultiLine||this._value(this.term),this.close(t),t.preventDefault());break;default:s=!0,this._searchTimeout(t)}}},keypress:function(t){if(i)return i=!1,void(this.isMultiLine&&!this.menu.element.is(":visible")||t.preventDefault());if(!s){var e=x.ui.keyCode;switch(t.keyCode){case e.PAGE_UP:this._move("previousPage",t);break;case e.PAGE_DOWN:this._move("nextPage",t);break;case e.UP:this._keyEvent("previous",t);break;case e.DOWN:this._keyEvent("next",t)}}},input:function(t){if(n)return n=!1,void t.preventDefault();this._searchTimeout(t)},focus:function(){this.selectedItem=null,this.previous=this._value()},blur:function(t){clearTimeout(this.searching),this.close(t),this._change(t)}}),this._initSource(),this.menu=x("
          ").appendTo(this._appendTo()).menu({role:null}).hide().attr({unselectable:"on"}).menu("instance"),this._addClass(this.menu.element,"ui-autocomplete","ui-front"),this._on(this.menu.element,{mousedown:function(t){t.preventDefault()},menufocus:function(t,e){var i,s;if(this.isNewMenu&&(this.isNewMenu=!1,t.originalEvent&&/^mouse/.test(t.originalEvent.type)))return this.menu.blur(),void this.document.one("mousemove",function(){x(t.target).trigger(t.originalEvent)});s=e.item.data("ui-autocomplete-item"),!1!==this._trigger("focus",t,{item:s})&&t.originalEvent&&/^key/.test(t.originalEvent.type)&&this._value(s.value),(i=e.item.attr("aria-label")||s.value)&&String.prototype.trim.call(i).length&&(clearTimeout(this.liveRegionTimer),this.liveRegionTimer=this._delay(function(){this.liveRegion.html(x("
          ").text(i))},100))},menuselect:function(t,e){var i=e.item.data("ui-autocomplete-item"),s=this.previous;this.element[0]!==x.ui.safeActiveElement(this.document[0])&&(this.element.trigger("focus"),this.previous=s,this._delay(function(){this.previous=s,this.selectedItem=i})),!1!==this._trigger("select",t,{item:i})&&this._value(i.value),this.term=this._value(),this.close(t),this.selectedItem=i}}),this.liveRegion=x("
          ",{role:"status","aria-live":"assertive","aria-relevant":"additions"}).appendTo(this.document[0].body),this._addClass(this.liveRegion,null,"ui-helper-hidden-accessible"),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_destroy:function(){clearTimeout(this.searching),this.element.removeAttr("autocomplete"),this.menu.element.remove(),this.liveRegion.remove()},_setOption:function(t,e){this._super(t,e),"source"===t&&this._initSource(),"appendTo"===t&&this.menu.element.appendTo(this._appendTo()),"disabled"===t&&e&&this.xhr&&this.xhr.abort()},_isEventTargetInWidget:function(t){var e=this.menu.element[0];return t.target===this.element[0]||t.target===e||x.contains(e,t.target)},_closeOnClickOutside:function(t){this._isEventTargetInWidget(t)||this.close()},_appendTo:function(){var t=this.options.appendTo;return t=!(t=!(t=t&&(t.jquery||t.nodeType?x(t):this.document.find(t).eq(0)))||!t[0]?this.element.closest(".ui-front, dialog"):t).length?this.document[0].body:t},_initSource:function(){var i,s,n=this;Array.isArray(this.options.source)?(i=this.options.source,this.source=function(t,e){e(x.ui.autocomplete.filter(i,t.term))}):"string"==typeof this.options.source?(s=this.options.source,this.source=function(t,e){n.xhr&&n.xhr.abort(),n.xhr=x.ajax({url:s,data:t,dataType:"json",success:function(t){e(t)},error:function(){e([])}})}):this.source=this.options.source},_searchTimeout:function(s){clearTimeout(this.searching),this.searching=this._delay(function(){var t=this.term===this._value(),e=this.menu.element.is(":visible"),i=s.altKey||s.ctrlKey||s.metaKey||s.shiftKey;t&&(e||i)||(this.selectedItem=null,this.search(null,s))},this.options.delay)},search:function(t,e){return t=null!=t?t:this._value(),this.term=this._value(),t.length").append(x("
          ").text(e.label)).appendTo(t)},_move:function(t,e){if(this.menu.element.is(":visible"))return this.menu.isFirstItem()&&/^previous/.test(t)||this.menu.isLastItem()&&/^next/.test(t)?(this.isMultiLine||this._value(this.term),void this.menu.blur()):void this.menu[t](e);this.search(null,e)},widget:function(){return this.menu.element},_value:function(){return this.valueMethod.apply(this.element,arguments)},_keyEvent:function(t,e){this.isMultiLine&&!this.menu.element.is(":visible")||(this._move(t,e),e.preventDefault())},_isContentEditable:function(t){if(!t.length)return!1;var e=t.prop("contentEditable");return"inherit"===e?this._isContentEditable(t.parent()):"true"===e}}),x.extend(x.ui.autocomplete,{escapeRegex:function(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")},filter:function(t,e){var i=new RegExp(x.ui.autocomplete.escapeRegex(e),"i");return x.grep(t,function(t){return i.test(t.label||t.value||t)})}}),x.widget("ui.autocomplete",x.ui.autocomplete,{options:{messages:{noResults:"No search results.",results:function(t){return t+(1").text(e))},100))}});x.ui.autocomplete}); \ No newline at end of file diff --git a/Dokumente/JavaDoc/server/docs/javadoc/script.js b/Dokumente/JavaDoc/server/docs/javadoc/script.js new file mode 100644 index 0000000..1e8a64f --- /dev/null +++ b/Dokumente/JavaDoc/server/docs/javadoc/script.js @@ -0,0 +1,268 @@ +/* + * Copyright (c) 2013, 2022, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +var moduleSearchIndex; +var packageSearchIndex; +var typeSearchIndex; +var memberSearchIndex; +var tagSearchIndex; + +var oddRowColor = "odd-row-color"; +var evenRowColor = "even-row-color"; +var sortAsc = "sort-asc"; +var sortDesc = "sort-desc"; +var tableTab = "table-tab"; +var activeTableTab = "active-table-tab"; + +function loadScripts(doc, tag) { + createElem(doc, tag, 'search.js'); + + createElem(doc, tag, 'module-search-index.js'); + createElem(doc, tag, 'package-search-index.js'); + createElem(doc, tag, 'type-search-index.js'); + createElem(doc, tag, 'member-search-index.js'); + createElem(doc, tag, 'tag-search-index.js'); +} + +function createElem(doc, tag, path) { + var script = doc.createElement(tag); + var scriptElement = doc.getElementsByTagName(tag)[0]; + script.src = pathtoroot + path; + scriptElement.parentNode.insertBefore(script, scriptElement); +} + +// Helper for making content containing release names comparable lexicographically +function makeComparable(s) { + return s.toLowerCase().replace(/(\d+)/g, + function(n, m) { + return ("000" + m).slice(-4); + }); +} + +// Switches between two styles depending on a condition +function toggleStyle(classList, condition, trueStyle, falseStyle) { + if (condition) { + classList.remove(falseStyle); + classList.add(trueStyle); + } else { + classList.remove(trueStyle); + classList.add(falseStyle); + } +} + +// Sorts the rows in a table lexicographically by the content of a specific column +function sortTable(header, columnIndex, columns) { + var container = header.parentElement; + var descending = header.classList.contains(sortAsc); + container.querySelectorAll("div.table-header").forEach( + function(header) { + header.classList.remove(sortAsc); + header.classList.remove(sortDesc); + } + ) + var cells = container.children; + var rows = []; + for (var i = columns; i < cells.length; i += columns) { + rows.push(Array.prototype.slice.call(cells, i, i + columns)); + } + var comparator = function(a, b) { + var ka = makeComparable(a[columnIndex].textContent); + var kb = makeComparable(b[columnIndex].textContent); + if (ka < kb) + return descending ? 1 : -1; + if (ka > kb) + return descending ? -1 : 1; + return 0; + }; + var sorted = rows.sort(comparator); + var visible = 0; + sorted.forEach(function(row) { + if (row[0].style.display !== 'none') { + var isEvenRow = visible++ % 2 === 0; + } + row.forEach(function(cell) { + toggleStyle(cell.classList, isEvenRow, evenRowColor, oddRowColor); + container.appendChild(cell); + }) + }); + toggleStyle(header.classList, descending, sortDesc, sortAsc); +} + +// Toggles the visibility of a table category in all tables in a page +function toggleGlobal(checkbox, selected, columns) { + var display = checkbox.checked ? '' : 'none'; + document.querySelectorAll("div.table-tabs").forEach(function(t) { + var id = t.parentElement.getAttribute("id"); + var selectedClass = id + "-tab" + selected; + // if selected is empty string it selects all uncategorized entries + var selectUncategorized = !Boolean(selected); + var visible = 0; + document.querySelectorAll('div.' + id) + .forEach(function(elem) { + if (selectUncategorized) { + if (elem.className.indexOf(selectedClass) === -1) { + elem.style.display = display; + } + } else if (elem.classList.contains(selectedClass)) { + elem.style.display = display; + } + if (elem.style.display === '') { + var isEvenRow = visible++ % (columns * 2) < columns; + toggleStyle(elem.classList, isEvenRow, evenRowColor, oddRowColor); + } + }); + var displaySection = visible === 0 ? 'none' : ''; + t.parentElement.style.display = displaySection; + document.querySelector("li#contents-" + id).style.display = displaySection; + }) +} + +// Shows the elements of a table belonging to a specific category +function show(tableId, selected, columns) { + if (tableId !== selected) { + document.querySelectorAll('div.' + tableId + ':not(.' + selected + ')') + .forEach(function(elem) { + elem.style.display = 'none'; + }); + } + document.querySelectorAll('div.' + selected) + .forEach(function(elem, index) { + elem.style.display = ''; + var isEvenRow = index % (columns * 2) < columns; + toggleStyle(elem.classList, isEvenRow, evenRowColor, oddRowColor); + }); + updateTabs(tableId, selected); +} + +function updateTabs(tableId, selected) { + document.querySelector('div#' + tableId +' .summary-table') + .setAttribute('aria-labelledby', selected); + document.querySelectorAll('button[id^="' + tableId + '"]') + .forEach(function(tab, index) { + if (selected === tab.id || (tableId === selected && index === 0)) { + tab.className = activeTableTab; + tab.setAttribute('aria-selected', true); + tab.setAttribute('tabindex',0); + } else { + tab.className = tableTab; + tab.setAttribute('aria-selected', false); + tab.setAttribute('tabindex',-1); + } + }); +} + +function switchTab(e) { + var selected = document.querySelector('[aria-selected=true]'); + if (selected) { + if ((e.keyCode === 37 || e.keyCode === 38) && selected.previousSibling) { + // left or up arrow key pressed: move focus to previous tab + selected.previousSibling.click(); + selected.previousSibling.focus(); + e.preventDefault(); + } else if ((e.keyCode === 39 || e.keyCode === 40) && selected.nextSibling) { + // right or down arrow key pressed: move focus to next tab + selected.nextSibling.click(); + selected.nextSibling.focus(); + e.preventDefault(); + } + } +} + +var updateSearchResults = function() {}; + +function indexFilesLoaded() { + return moduleSearchIndex + && packageSearchIndex + && typeSearchIndex + && memberSearchIndex + && tagSearchIndex; +} +// Copy the contents of the local snippet to the clipboard +function copySnippet(button) { + copyToClipboard(button.nextElementSibling.innerText); + switchCopyLabel(button.firstElementChild, button.parentElement); +} +// Copy the link to the adjacent header to the clipboard +function copyUrl(button) { + var id; + var header = button.parentElement; + if (header.hasAttribute("id")) { + id = header.getAttribute("id"); + } else if (header.parentElement.tagName === 'SECTION' && header.parentElement.hasAttribute("id")) { + id = header.parentElement.getAttribute("id"); + } else if (header.firstElementChild && header.firstElementChild.tagName === "A" + && header.firstElementChild.hasAttribute("id")) { + id = header.firstElementChild.getAttribute("id"); + } + var url = document.location.href; + if (url.indexOf("#") > -1) { + url = url.substring(0, url.indexOf("#")); + } + copyToClipboard(url + "#" + id); + switchCopyLabel(button.lastElementChild, button.parentElement); +} +function copyToClipboard(content) { + var textarea = document.createElement("textarea"); + textarea.style.height = 0; + document.body.appendChild(textarea); + textarea.value = content; + textarea.select(); + document.execCommand("copy"); + document.body.removeChild(textarea); +} +function switchCopyLabel(span, parent) { + var copied = span.getAttribute("data-copied"); + if (span.innerHTML !== copied) { + var initialLabel = span.innerHTML; + span.innerHTML = copied; + parent.onmouseleave = parent.ontouchend = function() { + span.innerHTML = initialLabel; + }; + } +} +// Workaround for scroll position not being included in browser history (8249133) +document.addEventListener("DOMContentLoaded", function(e) { + var contentDiv = document.querySelector("div.flex-content"); + window.addEventListener("popstate", function(e) { + if (e.state !== null) { + contentDiv.scrollTop = e.state; + } + }); + window.addEventListener("hashchange", function(e) { + history.replaceState(contentDiv.scrollTop, document.title); + }); + var timeoutId; + contentDiv.addEventListener("scroll", function(e) { + if (timeoutId) { + clearTimeout(timeoutId); + } + timeoutId = setTimeout(function() { + history.replaceState(contentDiv.scrollTop, document.title); + }, 100); + }); + if (!location.hash) { + history.replaceState(contentDiv.scrollTop, document.title); + } +}); diff --git a/Dokumente/JavaDoc/server/docs/javadoc/search-page.js b/Dokumente/JavaDoc/server/docs/javadoc/search-page.js new file mode 100644 index 0000000..342465b --- /dev/null +++ b/Dokumente/JavaDoc/server/docs/javadoc/search-page.js @@ -0,0 +1,299 @@ +/* + * Copyright (c) 2022, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +"use strict"; +$(function() { + var copy = $("#page-search-copy"); + var expand = $("#page-search-expand"); + var searchLink = $("span#page-search-link"); + var redirect = $("input#search-redirect"); + function setSearchUrlTemplate() { + var href = document.location.href.split(/[#?]/)[0]; + href += "?q=" + "%s"; + if (redirect.is(":checked")) { + href += "&r=1"; + } + searchLink.html(href); + copy[0].onmouseenter(); + } + function copyLink(e) { + var textarea = document.createElement("textarea"); + textarea.style.height = 0; + document.body.appendChild(textarea); + textarea.value = this.previousSibling.innerText; + textarea.select(); + document.execCommand("copy"); + document.body.removeChild(textarea); + var span = this.lastElementChild; + var copied = span.getAttribute("data-copied"); + if (span.innerHTML !== copied) { + var initialLabel = span.innerHTML; + span.innerHTML = copied; + var parent = this.parentElement.parentElement; + parent.onmouseleave = parent.ontouchend = copy[0].onmouseenter = function() { + span.innerHTML = initialLabel; + }; + } + } + copy.click(copyLink); + copy[0].onmouseenter = function() {}; + redirect.click(setSearchUrlTemplate); + setSearchUrlTemplate(); + copy.prop("disabled", false); + redirect.prop("disabled", false); + expand.click(function (e) { + var searchInfo = $("div.page-search-info"); + if(this.parentElement.hasAttribute("open")) { + searchInfo.attr("style", "border-width: 0;"); + } else { + searchInfo.attr("style", "border-width: 1px;").height(searchInfo.prop("scrollHeight")); + } + }); +}); +$(window).on("load", function() { + var input = $("#page-search-input"); + var reset = $("#page-search-reset"); + var notify = $("#page-search-notify"); + var resultSection = $("div#result-section"); + var resultContainer = $("div#result-container"); + var searchTerm = ""; + var activeTab = ""; + var fixedTab = false; + var visibleTabs = []; + var feelingLucky = false; + function renderResults(result) { + if (!result.length) { + notify.html(messages.noResult); + } else if (result.length === 1) { + notify.html(messages.oneResult); + } else { + notify.html(messages.manyResults.replace("{0}", result.length)); + } + resultContainer.empty(); + var r = { + "types": [], + "members": [], + "packages": [], + "modules": [], + "searchTags": [] + }; + for (var i in result) { + var item = result[i]; + var arr = r[item.category]; + arr.push(item); + } + if (!activeTab || r[activeTab].length === 0 || !fixedTab) { + Object.keys(r).reduce(function(prev, curr) { + if (r[curr].length > 0 && r[curr][0].score > prev) { + activeTab = curr; + return r[curr][0].score; + } + return prev; + }, 0); + } + if (feelingLucky && activeTab) { + notify.html(messages.redirecting) + var firstItem = r[activeTab][0]; + window.location = getURL(firstItem.indexItem, firstItem.category); + return; + } + if (result.length > 20) { + if (searchTerm[searchTerm.length - 1] === ".") { + if (activeTab === "types" && r["members"].length > r["types"].length) { + activeTab = "members"; + } else if (activeTab === "packages" && r["types"].length > r["packages"].length) { + activeTab = "types"; + } + } + } + var categoryCount = Object.keys(r).reduce(function(prev, curr) { + return prev + (r[curr].length > 0 ? 1 : 0); + }, 0); + visibleTabs = []; + var tabContainer = $("
          ").appendTo(resultContainer); + for (var key in r) { + var id = "#result-tab-" + key.replace("searchTags", "search_tags"); + if (r[key].length) { + var count = r[key].length >= 1000 ? "999+" : r[key].length; + if (result.length > 20 && categoryCount > 1) { + var button = $("").appendTo(tabContainer); + button.click(key, function(e) { + fixedTab = true; + renderResult(e.data, $(this)); + }); + visibleTabs.push(key); + } else { + $("" + categories[key] + + " (" + count + ")").appendTo(tabContainer); + renderTable(key, r[key]).appendTo(resultContainer); + tabContainer = $("
          ").appendTo(resultContainer); + + } + } + } + if (activeTab && result.length > 20 && categoryCount > 1) { + $("button#result-tab-" + activeTab).addClass("active-table-tab"); + renderTable(activeTab, r[activeTab]).appendTo(resultContainer); + } + resultSection.show(); + function renderResult(category, button) { + activeTab = category; + setSearchUrl(); + resultContainer.find("div.summary-table").remove(); + renderTable(activeTab, r[activeTab]).appendTo(resultContainer); + button.siblings().removeClass("active-table-tab"); + button.addClass("active-table-tab"); + } + } + function selectTab(category) { + $("button#result-tab-" + category).click(); + } + function renderTable(category, items) { + var table = $("
          ") + .addClass(category === "modules" + ? "one-column-search-results" + : "two-column-search-results"); + var col1, col2; + if (category === "modules") { + col1 = "Module"; + } else if (category === "packages") { + col1 = "Module"; + col2 = "Package"; + } else if (category === "types") { + col1 = "Package"; + col2 = "Class" + } else if (category === "members") { + col1 = "Class"; + col2 = "Member"; + } else if (category === "searchTags") { + col1 = "Location"; + col2 = "Name"; + } + $("
          " + col1 + "
          ").appendTo(table); + if (category !== "modules") { + $("
          " + col2 + "
          ").appendTo(table); + } + $.each(items, function(index, item) { + var rowColor = index % 2 ? "odd-row-color" : "even-row-color"; + renderItem(item, table, rowColor); + }); + return table; + } + function renderItem(item, table, rowColor) { + var label = getHighlightedText(item.input, item.boundaries, item.prefix.length, item.input.length); + var link = $("") + .attr("href", getURL(item.indexItem, item.category)) + .attr("tabindex", "0") + .addClass("search-result-link") + .html(label); + var container = getHighlightedText(item.input, item.boundaries, 0, item.prefix.length - 1); + if (item.category === "searchTags") { + container = item.indexItem.h || ""; + } + if (item.category !== "modules") { + $("
          ").html(container).addClass("col-plain").addClass(rowColor).appendTo(table); + } + $("
          ").html(link).addClass("col-last").addClass(rowColor).appendTo(table); + } + var timeout; + function schedulePageSearch() { + if (timeout) { + clearTimeout(timeout); + } + timeout = setTimeout(function () { + doPageSearch() + }, 100); + } + function doPageSearch() { + setSearchUrl(); + var term = searchTerm = input.val().trim(); + if (term === "") { + notify.html(messages.enterTerm); + activeTab = ""; + fixedTab = false; + resultContainer.empty(); + resultSection.hide(); + } else { + notify.html(messages.searching); + doSearch({ term: term, maxResults: 1200 }, renderResults); + } + } + function setSearchUrl() { + var query = input.val().trim(); + var url = document.location.pathname; + if (query) { + url += "?q=" + encodeURI(query); + if (activeTab && fixedTab) { + url += "&c=" + activeTab; + } + } + history.replaceState({query: query}, "", url); + } + input.on("input", function(e) { + feelingLucky = false; + schedulePageSearch(); + }); + $(document).keydown(function(e) { + if ((e.ctrlKey || e.metaKey) && (e.key === "ArrowLeft" || e.key === "ArrowRight")) { + if (activeTab && visibleTabs.length > 1) { + var idx = visibleTabs.indexOf(activeTab); + idx += e.key === "ArrowLeft" ? visibleTabs.length - 1 : 1; + selectTab(visibleTabs[idx % visibleTabs.length]); + return false; + } + } + }); + reset.click(function() { + notify.html(messages.enterTerm); + resultSection.hide(); + activeTab = ""; + fixedTab = false; + resultContainer.empty(); + input.val('').focus(); + setSearchUrl(); + }); + input.prop("disabled", false); + reset.prop("disabled", false); + + var urlParams = new URLSearchParams(window.location.search); + if (urlParams.has("q")) { + input.val(urlParams.get("q")) + } + if (urlParams.has("c")) { + activeTab = urlParams.get("c"); + fixedTab = true; + } + if (urlParams.get("r")) { + feelingLucky = true; + } + if (input.val()) { + doPageSearch(); + } else { + notify.html(messages.enterTerm); + } + input.select().focus(); +}); diff --git a/Dokumente/JavaDoc/server/docs/javadoc/search.html b/Dokumente/JavaDoc/server/docs/javadoc/search.html new file mode 100644 index 0000000..94bb1ce --- /dev/null +++ b/Dokumente/JavaDoc/server/docs/javadoc/search.html @@ -0,0 +1,70 @@ + + + + +Suchen (server API) + + + + + + + + + + + + + +
          + +
          +
          +

          Suchen

          +
          + + +
          +Zusätzliche Ressourcen +
          +
          +
          +

          Die Hilfeseite enthält eine Einführung in den Umfang und die Syntax der JavaDoc-Suche.

          +

          Sie können die <STRG>- oder <CMD>-Taste zusammen mit den Pfeiltasten nach links und rechts verwenden, um zwischen Ergebnisregisterkarten auf dieser Seite zu wechseln.

          +

          Mit der URL-Vorlage unten können Sie diese Seite als Suchmaschine in Browsern konfigurieren, die dieses Feature unterstützen. Das Feature wurde erfolgreich mit Google Chrome und Mozilla Firefox getestet. Beachten Sie, dass andere Browser dieses Feature möglicherweise nicht unterstützen oder ein anderes URL-Format erfordern.

          +link +

          + +

          +
          +

          Suchindex wird geladen...

          + +
          +
          +
          + + diff --git a/Dokumente/JavaDoc/server/docs/javadoc/search.js b/Dokumente/JavaDoc/server/docs/javadoc/search.js new file mode 100644 index 0000000..ef787b7 --- /dev/null +++ b/Dokumente/JavaDoc/server/docs/javadoc/search.js @@ -0,0 +1,458 @@ +/* + * Copyright (c) 2015, 2022, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ +"use strict"; +const messages = { + enterTerm: "Geben Sie einen Suchbegriff ein", + noResult: "Keine Ergebnisse gefunden", + oneResult: "Ein Ergebnis gefunden", + manyResults: "{0} Ergebnisse gefunden", + loading: "Suchindex wird geladen...", + searching: "Suche wird ausgeführt...", + redirecting: "Zum ersten Ergebnis wird umgeleitet...", + copyUrl: "URL kopieren", + urlCopied: "Kopiert." +} +const categories = { + modules: "Module", + packages: "Packages", + types: "Klassen und Schnittstellen", + members: "Mitglieder", + searchTags: "Tags suchen" +}; +const highlight = "$&"; +const NO_MATCH = {}; +const MAX_RESULTS = 300; +function checkUnnamed(name, separator) { + return name === "" || !name ? "" : name + separator; +} +function escapeHtml(str) { + return str.replace(//g, ">"); +} +function getHighlightedText(str, boundaries, from, to) { + var start = from; + var text = ""; + for (var i = 0; i < boundaries.length; i += 2) { + var b0 = boundaries[i]; + var b1 = boundaries[i + 1]; + if (b0 >= to || b1 <= from) { + continue; + } + text += escapeHtml(str.slice(start, Math.max(start, b0))); + text += ""; + text += escapeHtml(str.slice(Math.max(start, b0), Math.min(to, b1))); + text += ""; + start = Math.min(to, b1); + } + text += escapeHtml(str.slice(start, to)); + return text; +} +function getURLPrefix(item, category) { + var urlPrefix = ""; + var slash = "/"; + if (category === "modules") { + return item.l + slash; + } else if (category === "packages" && item.m) { + return item.m + slash; + } else if (category === "types" || category === "members") { + if (item.m) { + urlPrefix = item.m + slash; + } else { + $.each(packageSearchIndex, function(index, it) { + if (it.m && item.p === it.l) { + urlPrefix = it.m + slash; + } + }); + } + } + return urlPrefix; +} +function getURL(item, category) { + if (item.url) { + return item.url; + } + var url = getURLPrefix(item, category); + if (category === "modules") { + url += "module-summary.html"; + } else if (category === "packages") { + if (item.u) { + url = item.u; + } else { + url += item.l.replace(/\./g, '/') + "/package-summary.html"; + } + } else if (category === "types") { + if (item.u) { + url = item.u; + } else { + url += checkUnnamed(item.p, "/").replace(/\./g, '/') + item.l + ".html"; + } + } else if (category === "members") { + url += checkUnnamed(item.p, "/").replace(/\./g, '/') + item.c + ".html" + "#"; + if (item.u) { + url += item.u; + } else { + url += item.l; + } + } else if (category === "searchTags") { + url += item.u; + } + item.url = url; + return url; +} +function createMatcher(term, camelCase) { + if (camelCase && !isUpperCase(term)) { + return null; // no need for camel-case matcher for lower case query + } + var pattern = ""; + var upperCase = []; + term.trim().split(/\s+/).forEach(function(w, index, array) { + var tokens = w.split(/(?=[A-Z,.()<>?[\/])/); + for (var i = 0; i < tokens.length; i++) { + var s = tokens[i]; + // ',' and '?' are the only delimiters commonly followed by space in java signatures + pattern += "(" + $.ui.autocomplete.escapeRegex(s).replace(/[,?]/g, "$&\\s*?") + ")"; + upperCase.push(false); + var isWordToken = /\w$/.test(s); + if (isWordToken) { + if (i === tokens.length - 1 && index < array.length - 1) { + // space in query string matches all delimiters + pattern += "(.*?)"; + upperCase.push(isUpperCase(s[0])); + } else { + if (!camelCase && isUpperCase(s) && s.length === 1) { + pattern += "()"; + } else { + pattern += "([a-z0-9$<>?[\\]]*?)"; + } + upperCase.push(isUpperCase(s[0])); + } + } else { + pattern += "()"; + upperCase.push(false); + } + } + }); + var re = new RegExp(pattern, "gi"); + re.upperCase = upperCase; + return re; +} +function findMatch(matcher, input, startOfName, endOfName) { + var from = startOfName; + matcher.lastIndex = from; + var match = matcher.exec(input); + // Expand search area until we get a valid result or reach the beginning of the string + while (!match || match.index + match[0].length < startOfName || endOfName < match.index) { + if (from === 0) { + return NO_MATCH; + } + from = input.lastIndexOf(".", from - 2) + 1; + matcher.lastIndex = from; + match = matcher.exec(input); + } + var boundaries = []; + var matchEnd = match.index + match[0].length; + var score = 5; + var start = match.index; + var prevEnd = -1; + for (var i = 1; i < match.length; i += 2) { + var isUpper = isUpperCase(input[start]); + var isMatcherUpper = matcher.upperCase[i]; + // capturing groups come in pairs, match and non-match + boundaries.push(start, start + match[i].length); + // make sure groups are anchored on a left word boundary + var prevChar = input[start - 1] || ""; + var nextChar = input[start + 1] || ""; + if (start !== 0 && !/[\W_]/.test(prevChar) && !/[\W_]/.test(input[start])) { + if (isUpper && (isLowerCase(prevChar) || isLowerCase(nextChar))) { + score -= 0.1; + } else if (isMatcherUpper && start === prevEnd) { + score -= isUpper ? 0.1 : 1.0; + } else { + return NO_MATCH; + } + } + prevEnd = start + match[i].length; + start += match[i].length + match[i + 1].length; + + // lower score for parts of the name that are missing + if (match[i + 1] && prevEnd < endOfName) { + score -= rateNoise(match[i + 1]); + } + } + // lower score if a type name contains unmatched camel-case parts + if (input[matchEnd - 1] !== "." && endOfName > matchEnd) + score -= rateNoise(input.slice(matchEnd, endOfName)); + score -= rateNoise(input.slice(0, Math.max(startOfName, match.index))); + + if (score <= 0) { + return NO_MATCH; + } + return { + input: input, + score: score, + boundaries: boundaries + }; +} +function isUpperCase(s) { + return s !== s.toLowerCase(); +} +function isLowerCase(s) { + return s !== s.toUpperCase(); +} +function rateNoise(str) { + return (str.match(/([.(])/g) || []).length / 5 + + (str.match(/([A-Z]+)/g) || []).length / 10 + + str.length / 20; +} +function doSearch(request, response) { + var term = request.term.trim(); + var maxResults = request.maxResults || MAX_RESULTS; + if (term.length === 0) { + return this.close(); + } + var matcher = { + plainMatcher: createMatcher(term, false), + camelCaseMatcher: createMatcher(term, true) + } + var indexLoaded = indexFilesLoaded(); + + function getPrefix(item, category) { + switch (category) { + case "packages": + return checkUnnamed(item.m, "/"); + case "types": + return checkUnnamed(item.p, "."); + case "members": + return checkUnnamed(item.p, ".") + item.c + "."; + default: + return ""; + } + } + function useQualifiedName(category) { + switch (category) { + case "packages": + return /[\s/]/.test(term); + case "types": + case "members": + return /[\s.]/.test(term); + default: + return false; + } + } + function searchIndex(indexArray, category) { + var matches = []; + if (!indexArray) { + if (!indexLoaded) { + matches.push({ l: messages.loading, category: category }); + } + return matches; + } + $.each(indexArray, function (i, item) { + var prefix = getPrefix(item, category); + var simpleName = item.l; + var qualifiedName = prefix + simpleName; + var useQualified = useQualifiedName(category); + var input = useQualified ? qualifiedName : simpleName; + var startOfName = useQualified ? prefix.length : 0; + var endOfName = category === "members" && input.indexOf("(", startOfName) > -1 + ? input.indexOf("(", startOfName) : input.length; + var m = findMatch(matcher.plainMatcher, input, startOfName, endOfName); + if (m === NO_MATCH && matcher.camelCaseMatcher) { + m = findMatch(matcher.camelCaseMatcher, input, startOfName, endOfName); + } + if (m !== NO_MATCH) { + m.indexItem = item; + m.prefix = prefix; + m.category = category; + if (!useQualified) { + m.input = qualifiedName; + m.boundaries = m.boundaries.map(function(b) { + return b + prefix.length; + }); + } + matches.push(m); + } + return true; + }); + return matches.sort(function(e1, e2) { + return e2.score - e1.score; + }).slice(0, maxResults); + } + + var result = searchIndex(moduleSearchIndex, "modules") + .concat(searchIndex(packageSearchIndex, "packages")) + .concat(searchIndex(typeSearchIndex, "types")) + .concat(searchIndex(memberSearchIndex, "members")) + .concat(searchIndex(tagSearchIndex, "searchTags")); + + if (!indexLoaded) { + updateSearchResults = function() { + doSearch(request, response); + } + } else { + updateSearchResults = function() {}; + } + response(result); +} +// JQuery search menu implementation +$.widget("custom.catcomplete", $.ui.autocomplete, { + _create: function() { + this._super(); + this.widget().menu("option", "items", "> .result-item"); + // workaround for search result scrolling + this.menu._scrollIntoView = function _scrollIntoView( item ) { + var borderTop, paddingTop, offset, scroll, elementHeight, itemHeight; + if ( this._hasScroll() ) { + borderTop = parseFloat( $.css( this.activeMenu[ 0 ], "borderTopWidth" ) ) || 0; + paddingTop = parseFloat( $.css( this.activeMenu[ 0 ], "paddingTop" ) ) || 0; + offset = item.offset().top - this.activeMenu.offset().top - borderTop - paddingTop; + scroll = this.activeMenu.scrollTop(); + elementHeight = this.activeMenu.height() - 26; + itemHeight = item.outerHeight(); + + if ( offset < 0 ) { + this.activeMenu.scrollTop( scroll + offset ); + } else if ( offset + itemHeight > elementHeight ) { + this.activeMenu.scrollTop( scroll + offset - elementHeight + itemHeight ); + } + } + }; + }, + _renderMenu: function(ul, items) { + var currentCategory = ""; + var widget = this; + widget.menu.bindings = $(); + $.each(items, function(index, item) { + if (item.category && item.category !== currentCategory) { + ul.append("
        • " + categories[item.category] + "
        • "); + currentCategory = item.category; + } + var li = widget._renderItemData(ul, item); + if (item.category) { + li.attr("aria-label", categories[item.category] + " : " + item.l); + } else { + li.attr("aria-label", item.l); + } + li.attr("class", "result-item"); + }); + ul.append(""); + }, + _renderItem: function(ul, item) { + var li = $("
        • ").appendTo(ul); + var div = $("
          ").appendTo(li); + var label = item.l + ? item.l + : getHighlightedText(item.input, item.boundaries, 0, item.input.length); + var idx = item.indexItem; + if (item.category === "searchTags" && idx.h) { + if (idx.d) { + div.html(label + " (" + idx.h + ")
          " + + idx.d + "
          "); + } else { + div.html(label + " (" + idx.h + ")"); + } + } else { + div.html(label); + } + return li; + } +}); +$(function() { + var expanded = false; + var windowWidth; + function collapse() { + if (expanded) { + $("div#navbar-top").removeAttr("style"); + $("button#navbar-toggle-button") + .removeClass("expanded") + .attr("aria-expanded", "false"); + expanded = false; + } + } + $("button#navbar-toggle-button").click(function (e) { + if (expanded) { + collapse(); + } else { + var navbar = $("div#navbar-top"); + navbar.height(navbar.prop("scrollHeight")); + $("button#navbar-toggle-button") + .addClass("expanded") + .attr("aria-expanded", "true"); + expanded = true; + windowWidth = window.innerWidth; + } + }); + $("ul.sub-nav-list-small li a").click(collapse); + $("input#search-input").focus(collapse); + $("main").click(collapse); + $("section[id] > :header, :header[id], :header:has(a[id])").hover( + function () { + $(this).append($("")); + }, + function () { + $(this).find("button:last").remove(); + } + ); + $(window).on("orientationchange", collapse).on("resize", function(e) { + if (expanded && windowWidth !== window.innerWidth) collapse(); + }); + var search = $("#search-input"); + var reset = $("#reset-button"); + search.catcomplete({ + minLength: 1, + delay: 200, + source: doSearch, + response: function(event, ui) { + if (!ui.content.length) { + ui.content.push({ l: messages.noResult }); + } else { + $("#search-input").empty(); + } + }, + autoFocus: true, + focus: function(event, ui) { + return false; + }, + position: { + collision: "flip" + }, + select: function(event, ui) { + if (ui.item.indexItem) { + var url = getURL(ui.item.indexItem, ui.item.category); + window.location.href = pathtoroot + url; + $("#search-input").focus(); + } + } + }); + search.val(''); + search.prop("disabled", false); + reset.prop("disabled", false); + reset.click(function() { + search.val('').focus(); + }); + search.focus(); +}); diff --git a/Dokumente/JavaDoc/server/docs/javadoc/stylesheet.css b/Dokumente/JavaDoc/server/docs/javadoc/stylesheet.css new file mode 100644 index 0000000..cc0c20f --- /dev/null +++ b/Dokumente/JavaDoc/server/docs/javadoc/stylesheet.css @@ -0,0 +1,1264 @@ +/* + * Javadoc style sheet + */ + +@import url('resources/fonts/dejavu.css'); + +/* + * These CSS custom properties (variables) define the core color and font + * properties used in this stylesheet. + */ +:root { + /* body, block and code fonts */ + --body-font-family: 'DejaVu Sans', Arial, Helvetica, sans-serif; + --block-font-family: 'DejaVu Serif', Georgia, "Times New Roman", Times, serif; + --code-font-family: 'DejaVu Sans Mono', monospace; + /* Base font sizes for body and code elements */ + --body-font-size: 14px; + --code-font-size: 14px; + /* Text colors for body and block elements */ + --body-text-color: #353833; + --block-text-color: #474747; + /* Background colors for various structural elements */ + --body-background-color: #ffffff; + --section-background-color: #f8f8f8; + --detail-background-color: #ffffff; + /* Colors for navigation bar and table captions */ + --navbar-background-color: #4D7A97; + --navbar-text-color: #ffffff; + /* Background color for subnavigation and various headers */ + --subnav-background-color: #dee3e9; + /* Background and text colors for selected tabs and navigation items */ + --selected-background-color: #f8981d; + --selected-text-color: #253441; + --selected-link-color: #1f389c; + /* Background colors for generated tables */ + --even-row-color: #ffffff; + --odd-row-color: #eeeeef; + /* Text color for page title */ + --title-color: #2c4557; + /* Text colors for links */ + --link-color: #4A6782; + --link-color-active: #bb7a2a; + /* Snippet colors */ + --snippet-background-color: #ebecee; + --snippet-text-color: var(--block-text-color); + --snippet-highlight-color: #f7c590; + /* Border colors for structural elements and user defined tables */ + --border-color: #ededed; + --table-border-color: #000000; + /* Search input colors */ + --search-input-background-color: #ffffff; + --search-input-text-color: #000000; + --search-input-placeholder-color: #909090; + /* Highlight color for active search tag target */ + --search-tag-highlight-color: #ffff00; + /* Adjustments for icon and active background colors of copy-to-clipboard buttons */ + --copy-icon-brightness: 100%; + --copy-button-background-color-active: rgba(168, 168, 176, 0.3); + /* Colors for invalid tag notifications */ + --invalid-tag-background-color: #ffe6e6; + --invalid-tag-text-color: #000000; +} +/* + * Styles for individual HTML elements. + * + * These are styles that are specific to individual HTML elements. Changing them affects the style of a particular + * HTML element throughout the page. + */ +body { + background-color:var(--body-background-color); + color:var(--body-text-color); + font-family:var(--body-font-family); + font-size:var(--body-font-size); + margin:0; + padding:0; + height:100%; + width:100%; +} +iframe { + margin:0; + padding:0; + height:100%; + width:100%; + overflow-y:scroll; + border:none; +} +a:link, a:visited { + text-decoration:none; + color:var(--link-color); +} +a[href]:hover, a[href]:focus { + text-decoration:none; + color:var(--link-color-active); +} +pre { + font-family:var(--code-font-family); + font-size:1em; +} +h1 { + font-size:1.428em; +} +h2 { + font-size:1.285em; +} +h3 { + font-size:1.14em; +} +h4 { + font-size:1.072em; +} +h5 { + font-size:1.001em; +} +h6 { + font-size:0.93em; +} +/* Disable font boosting for selected elements */ +h1, h2, h3, h4, h5, h6, div.member-signature { + max-height: 1000em; +} +ul { + list-style-type:disc; +} +code, tt { + font-family:var(--code-font-family); +} +:not(h1, h2, h3, h4, h5, h6) > code, +:not(h1, h2, h3, h4, h5, h6) > tt { + font-size:var(--code-font-size); + padding-top:4px; + margin-top:8px; + line-height:1.4em; +} +dt code { + font-family:var(--code-font-family); + font-size:1em; + padding-top:4px; +} +.summary-table dt code { + font-family:var(--code-font-family); + font-size:1em; + vertical-align:top; + padding-top:4px; +} +sup { + font-size:8px; +} +button { + font-family: var(--body-font-family); + font-size: 1em; +} +/* + * Styles for HTML generated by javadoc. + * + * These are style classes that are used by the standard doclet to generate HTML documentation. + */ + +/* + * Styles for document title and copyright. + */ +.about-language { + float:right; + padding:0 21px 8px 8px; + font-size:0.915em; + margin-top:-9px; + height:2.9em; +} +.legal-copy { + margin-left:.5em; +} +/* + * Styles for navigation bar. + */ +@media screen { + div.flex-box { + position:fixed; + display:flex; + flex-direction:column; + height: 100%; + width: 100%; + } + header.flex-header { + flex: 0 0 auto; + } + div.flex-content { + flex: 1 1 auto; + overflow-y: auto; + } +} +.top-nav { + background-color:var(--navbar-background-color); + color:var(--navbar-text-color); + float:left; + width:100%; + clear:right; + min-height:2.8em; + padding:10px 0 0 0; + overflow:hidden; + font-size:0.857em; +} +button#navbar-toggle-button { + display:none; +} +ul.sub-nav-list-small { + display: none; +} +.sub-nav { + background-color:var(--subnav-background-color); + float:left; + width:100%; + overflow:hidden; + font-size:0.857em; +} +.sub-nav div { + clear:left; + float:left; + padding:6px; + text-transform:uppercase; +} +.sub-nav .sub-nav-list { + padding-top:4px; +} +ul.nav-list { + display:block; + margin:0 25px 0 0; + padding:0; +} +ul.sub-nav-list { + float:left; + margin:0 25px 0 0; + padding:0; +} +ul.nav-list li { + list-style:none; + float:left; + padding: 5px 6px; + text-transform:uppercase; +} +.sub-nav .nav-list-search { + float:right; + margin:0; + padding:6px; + clear:none; + text-align:right; + position:relative; +} +ul.sub-nav-list li { + list-style:none; + float:left; +} +.top-nav a:link, .top-nav a:active, .top-nav a:visited { + color:var(--navbar-text-color); + text-decoration:none; + text-transform:uppercase; +} +.top-nav a:hover { + color:var(--link-color-active); +} +.nav-bar-cell1-rev { + background-color:var(--selected-background-color); + color:var(--selected-text-color); + margin: auto 5px; +} +.skip-nav { + position:absolute; + top:auto; + left:-9999px; + overflow:hidden; +} +/* + * Hide navigation links and search box in print layout + */ +@media print { + ul.nav-list, div.sub-nav { + display:none; + } +} +/* + * Styles for page header. + */ +.title { + color:var(--title-color); + margin:10px 0; +} +.sub-title { + margin:5px 0 0 0; +} +ul.contents-list { + margin: 0 0 15px 0; + padding: 0; + list-style: none; +} +ul.contents-list li { + font-size:0.93em; +} +/* + * Styles for headings. + */ +body.class-declaration-page .summary h2, +body.class-declaration-page .details h2, +body.class-use-page h2, +body.module-declaration-page .block-list h2 { + font-style: italic; + padding:0; + margin:15px 0; +} +body.class-declaration-page .summary h3, +body.class-declaration-page .details h3, +body.class-declaration-page .summary .inherited-list h2 { + background-color:var(--subnav-background-color); + border:1px solid var(--border-color); + margin:0 0 6px -8px; + padding:7px 5px; +} +/* + * Styles for page layout containers. + */ +main { + clear:both; + padding:10px 20px; + position:relative; +} +dl.notes > dt { + font-family: var(--body-font-family); + font-size:0.856em; + font-weight:bold; + margin:10px 0 0 0; + color:var(--body-text-color); +} +dl.notes > dd { + margin:5px 10px 10px 0; + font-size:1em; + font-family:var(--block-font-family) +} +dl.name-value > dt { + margin-left:1px; + font-size:1.1em; + display:inline; + font-weight:bold; +} +dl.name-value > dd { + margin:0 0 0 1px; + font-size:1.1em; + display:inline; +} +/* + * Styles for lists. + */ +li.circle { + list-style:circle; +} +ul.horizontal li { + display:inline; + font-size:0.9em; +} +div.inheritance { + margin:0; + padding:0; +} +div.inheritance div.inheritance { + margin-left:2em; +} +ul.block-list, +ul.details-list, +ul.member-list, +ul.summary-list { + margin:10px 0 10px 0; + padding:0; +} +ul.block-list > li, +ul.details-list > li, +ul.member-list > li, +ul.summary-list > li { + list-style:none; + margin-bottom:15px; + line-height:1.4; +} +ul.ref-list { + padding:0; + margin:0; +} +ul.ref-list > li { + list-style:none; +} +.summary-table dl, .summary-table dl dt, .summary-table dl dd { + margin-top:0; + margin-bottom:1px; +} +ul.tag-list, ul.tag-list-long { + padding-left: 0; + list-style: none; +} +ul.tag-list li { + display: inline; +} +ul.tag-list li:not(:last-child):after, +ul.tag-list-long li:not(:last-child):after +{ + content: ", "; + white-space: pre-wrap; +} +ul.preview-feature-list { + list-style: none; + margin:0; + padding:0.1em; + line-height: 1.6em; +} +/* + * Styles for tables. + */ +.summary-table, .details-table { + width:100%; + border-spacing:0; + border:1px solid var(--border-color); + border-top:0; + padding:0; +} +.caption { + position:relative; + text-align:left; + background-repeat:no-repeat; + color:var(--selected-text-color); + clear:none; + overflow:hidden; + padding: 10px 0 0 1px; + margin:0; +} +.caption a:link, .caption a:visited { + color:var(--selected-link-color); +} +.caption a:hover, +.caption a:active { + color:var(--navbar-text-color); +} +.caption span { + font-weight:bold; + white-space:nowrap; + padding:5px 12px 7px 12px; + display:inline-block; + float:left; + background-color:var(--selected-background-color); + border: none; + height:16px; +} +div.table-tabs { + padding:10px 0 0 1px; + margin:10px 0 0 0; +} +div.table-tabs > button { + border: none; + cursor: pointer; + padding: 5px 12px 7px 12px; + font-weight: bold; + margin-right: 8px; +} +div.table-tabs > .active-table-tab { + background: var(--selected-background-color); + color: var(--selected-text-color); +} +div.table-tabs > button.table-tab { + background: var(--navbar-background-color); + color: var(--navbar-text-color); +} +.two-column-search-results { + display: grid; + grid-template-columns: minmax(400px, max-content) minmax(400px, auto); +} +div.checkboxes { + line-height: 2em; +} +div.checkboxes > span { + margin-left: 10px; +} +div.checkboxes > label { + margin-left: 8px; + white-space: nowrap; +} +div.checkboxes > label > input { + margin: 0 2px; +} +.two-column-summary { + display: grid; + grid-template-columns: minmax(25%, max-content) minmax(25%, auto); +} +.three-column-summary { + display: grid; + grid-template-columns: minmax(15%, max-content) minmax(20%, max-content) minmax(20%, auto); +} +.three-column-release-summary { + display: grid; + grid-template-columns: minmax(40%, max-content) minmax(10%, max-content) minmax(40%, auto); +} +.four-column-summary { + display: grid; + grid-template-columns: minmax(10%, max-content) minmax(15%, max-content) minmax(15%, max-content) minmax(15%, auto); +} +@media screen and (max-width: 1000px) { + .four-column-summary { + display: grid; + grid-template-columns: minmax(15%, max-content) minmax(15%, auto); + } +} +@media screen and (max-width: 800px) { + .two-column-search-results { + display: grid; + grid-template-columns: minmax(40%, max-content) minmax(40%, auto); + } + .three-column-summary { + display: grid; + grid-template-columns: minmax(10%, max-content) minmax(25%, auto); + } + .three-column-release-summary { + display: grid; + grid-template-columns: minmax(70%, max-content) minmax(30%, max-content) + } + .three-column-summary .col-last, + .three-column-release-summary .col-last{ + grid-column-end: span 2; + } +} +@media screen and (max-width: 600px) { + .two-column-summary { + display: grid; + grid-template-columns: 1fr; + } +} +.summary-table > div, .details-table > div { + text-align:left; + padding: 8px 3px 3px 7px; + overflow-x: auto; + scrollbar-width: thin; +} +.col-first, .col-second, .col-last, .col-constructor-name, .col-summary-item-name { + vertical-align:top; + padding-right:0; + padding-top:8px; + padding-bottom:3px; +} +.table-header { + background:var(--subnav-background-color); + font-weight: bold; +} +/* Sortable table columns */ +.table-header[onclick] { + cursor: pointer; +} +.table-header[onclick]::after { + content:""; + display:inline-block; + background-image:url('data:image/svg+xml; utf8, \ + \ + '); + background-size:100% 100%; + width:9px; + height:14px; + margin-left:4px; + margin-bottom:-3px; +} +.table-header[onclick].sort-asc::after { + background-image:url('data:image/svg+xml; utf8, \ + \ + \ + '); + +} +.table-header[onclick].sort-desc::after { + background-image:url('data:image/svg+xml; utf8, \ + \ + \ + '); +} +.col-first, .col-first { + font-size:0.93em; +} +.col-second, .col-second, .col-last, .col-constructor-name, .col-summary-item-name, .col-last { + font-size:0.93em; +} +.col-first, .col-second, .col-constructor-name { + vertical-align:top; + overflow: auto; +} +.col-last { + white-space:normal; +} +.col-first a:link, .col-first a:visited, +.col-second a:link, .col-second a:visited, +.col-first a:link, .col-first a:visited, +.col-second a:link, .col-second a:visited, +.col-constructor-name a:link, .col-constructor-name a:visited, +.col-summary-item-name a:link, .col-summary-item-name a:visited { + font-weight:bold; +} +.even-row-color, .even-row-color .table-header { + background-color:var(--even-row-color); +} +.odd-row-color, .odd-row-color .table-header { + background-color:var(--odd-row-color); +} +/* + * Styles for contents. + */ +div.block { + font-size:var(--body-font-size); + font-family:var(--block-font-family); +} +.col-last div { + padding-top:0; +} +.col-last a { + padding-bottom:3px; +} +.module-signature, +.package-signature, +.type-signature, +.member-signature { + font-family:var(--code-font-family); + font-size:1em; + margin:14px 0; + white-space: pre-wrap; +} +.module-signature, +.package-signature, +.type-signature { + margin-top: 0; +} +.member-signature .type-parameters-long, +.member-signature .parameters, +.member-signature .exceptions { + display: inline-block; + vertical-align: top; + white-space: pre; +} +.member-signature .type-parameters { + white-space: normal; +} +/* + * Styles for formatting effect. + */ +.source-line-no { + /* Color of line numbers in source pages can be set via custom property below */ + color:var(--source-linenumber-color, green); + padding:0 30px 0 0; +} +.block { + display:block; + margin:0 10px 5px 0; + color:var(--block-text-color); +} +.deprecated-label, .description-from-type-label, .implementation-label, .member-name-link, +.module-label-in-package, .module-label-in-type, .package-label-in-type, +.package-hierarchy-label, .type-name-label, .type-name-link, .search-tag-link, .preview-label { + font-weight:bold; +} +.deprecation-comment, .help-footnote, .preview-comment { + font-style:italic; +} +.deprecation-block { + font-size:1em; + font-family:var(--block-font-family); + border-style:solid; + border-width:thin; + border-radius:10px; + padding:10px; + margin-bottom:10px; + margin-right:10px; + display:inline-block; +} +.preview-block { + font-size:1em; + font-family:var(--block-font-family); + border-style:solid; + border-width:thin; + border-radius:10px; + padding:10px; + margin-bottom:10px; + margin-right:10px; + display:inline-block; +} +div.block div.deprecation-comment { + font-style:normal; +} +details.invalid-tag, span.invalid-tag { + font-size:1em; + font-family:var(--block-font-family); + color: var(--invalid-tag-text-color); + background: var(--invalid-tag-background-color); + border: thin solid var(--table-border-color); + border-radius:2px; + padding: 2px 4px; + display:inline-block; +} +details summary { + cursor: pointer; +} +/* + * Styles specific to HTML5 elements. + */ +main, nav, header, footer, section { + display:block; +} +/* + * Styles for javadoc search. + */ +.ui-state-active { + /* Overrides the color of selection used in jQuery UI */ + background: var(--selected-background-color); + border: 1px solid var(--selected-background-color); + color: var(--selected-text-color); +} +.ui-autocomplete-category { + font-weight:bold; + font-size:15px; + padding:7px 0 7px 3px; + background-color:var(--navbar-background-color); + color:var(--navbar-text-color); +} +.ui-autocomplete { + max-height:85%; + max-width:65%; + overflow-y:auto; + overflow-x:auto; + scrollbar-width: thin; + white-space:nowrap; + box-shadow: 0 3px 6px rgba(0,0,0,0.16), 0 3px 6px rgba(0,0,0,0.23); +} +ul.ui-autocomplete { + position:fixed; + z-index:1; + background-color: var(--body-background-color); +} +ul.ui-autocomplete li { + float:left; + clear:both; + min-width:100%; +} +ul.ui-autocomplete li.ui-static-link { + position:sticky; + bottom:0; + left:0; + background: var(--subnav-background-color); + padding: 5px 0; + font-family: var(--body-font-family); + font-size: 0.93em; + font-weight: bolder; + z-index: 2; +} +li.ui-static-link a, li.ui-static-link a:visited { + text-decoration:none; + color:var(--link-color); + float:right; + margin-right:20px; +} +.ui-autocomplete .result-item { + font-size: inherit; +} +.ui-autocomplete .result-highlight { + font-weight:bold; +} +#search-input, #page-search-input { + background-image:url('resources/glass.png'); + background-size:13px; + background-repeat:no-repeat; + background-position:2px 3px; + background-color: var(--search-input-background-color); + color: var(--search-input-text-color); + border-color: var(--border-color); + padding-left:20px; + width: 250px; + margin: 0; +} +#search-input { + margin-left: 4px; +} +#reset-button { + background-color: transparent; + background-image:url('resources/x.png'); + background-repeat:no-repeat; + background-size:contain; + border:0; + border-radius:0; + width:12px; + height:12px; + position:absolute; + right:12px; + top:10px; + font-size:0; +} +::placeholder { + color:var(--search-input-placeholder-color); + opacity: 1; +} +.search-tag-desc-result { + font-style:italic; + font-size:11px; +} +.search-tag-holder-result { + font-style:italic; + font-size:12px; +} +.search-tag-result:target { + background-color:var(--search-tag-highlight-color); +} +details.page-search-details { + display: inline-block; +} +div#result-container { + font-size: 1em; +} +div#result-container a.search-result-link { + padding: 0; + margin: 4px 0; + width: 100%; +} +#result-container .result-highlight { + font-weight:bolder; +} +.page-search-info { + background-color: var(--subnav-background-color); + border-radius: 3px; + border: 0 solid var(--border-color); + padding: 0 8px; + overflow: hidden; + height: 0; + transition: all 0.2s ease; +} +div.table-tabs > button.table-tab { + background: var(--navbar-background-color); + color: var(--navbar-text-color); +} +.page-search-header { + padding: 5px 12px 7px 12px; + font-weight: bold; + margin-right: 3px; + background-color:var(--navbar-background-color); + color:var(--navbar-text-color); + display: inline-block; +} +button.page-search-header { + border: none; + cursor: pointer; +} +span#page-search-link { + text-decoration: underline; +} +.module-graph span, .sealed-graph span { + display:none; + position:absolute; +} +.module-graph:hover span, .sealed-graph:hover span { + display:block; + margin: -100px 0 0 100px; + z-index: 1; +} +.inherited-list { + margin: 10px 0 10px 0; +} +section.class-description { + line-height: 1.4; +} +.summary section[class$="-summary"], .details section[class$="-details"], +.class-uses .detail, .serialized-class-details { + padding: 0 20px 5px 10px; + border: 1px solid var(--border-color); + background-color: var(--section-background-color); +} +.inherited-list, section[class$="-details"] .detail { + padding:0 0 5px 8px; + background-color:var(--detail-background-color); + border:none; +} +.vertical-separator { + padding: 0 5px; +} +ul.help-section-list { + margin: 0; +} +ul.help-subtoc > li { + display: inline-block; + padding-right: 5px; + font-size: smaller; +} +ul.help-subtoc > li::before { + content: "\2022" ; + padding-right:2px; +} +.help-note { + font-style: italic; +} +/* + * Indicator icon for external links. + */ +main a[href*="://"]::after { + content:""; + display:inline-block; + background-image:url('data:image/svg+xml; utf8, \ + \ + \ + '); + background-size:100% 100%; + width:7px; + height:7px; + margin-left:2px; + margin-bottom:4px; +} +main a[href*="://"]:hover::after, +main a[href*="://"]:focus::after { + background-image:url('data:image/svg+xml; utf8, \ + \ + \ + '); +} +/* + * Styles for copy-to-clipboard buttons + */ +button.copy { + opacity: 80%; + border: none; + border-radius: 3px; + position: relative; + background:none; + transition: opacity 0.2s; + cursor: pointer; +} +button.copy:hover, +button.copy:active { + opacity: 100%; +} +button.copy img { + position: relative; + background: none; + filter: brightness(var(--copy-icon-brightness)); +} +button.copy:active { + background-color: var(--copy-button-background-color-active); +} +button.copy span { + color: var(--body-text-color); + position: relative; + top: -0.1em; + transition: all 0.1s; + font-size: 0.76rem; + line-height: 1.2em; +} +/* header/section copy button */ +button.copy-header { + margin: 0 0.2em; + padding: 0 4px; + height: 1.16em; +} +button.copy-header img { + height: 0.88em; + top: 0.1em; +} +/* search page copy button */ +button#page-search-copy { + margin-left: 0.4em; + padding:0.3em; + top:0.13em; +} +button#page-search-copy img { + width: 1.2em; + height: 1.2em; + padding: 0.01em 0; + top: 0.15em; +} +button#page-search-copy span { + color: var(--body-text-color); + content: attr(aria-label); + line-height: 1.2em; + padding: 0.2em; + top: -0.18em; + opacity: 0; +} +div.page-search-info:hover button#page-search-copy, +div.page-search-info:hover button#page-search-copy span { + opacity: 90%; +} +/* snippet copy button */ +button.snippet-copy { + position: absolute; + top: 6px; + right: 6px; + height: 1.7em; + opacity: 50%; + padding: 2px; +} +button.snippet-copy img { + width: 18px; + height: 18px; + padding: 0.05em 0; +} +button.snippet-copy span { + content: attr(aria-label); + line-height: 1.2em; + padding: 0.2em; + position: relative; + top: -0.5em; + display: none; +} +div.snippet-container:hover button.snippet-copy span { + display: inline; +} +div.snippet-container:hover button.snippet-copy { + opacity: 80%; +} +div.snippet-container button.snippet-copy:hover { + opacity: 100%; +} +/* + * Styles for user-provided tables. + * + * borderless: + * No borders, vertical margins, styled caption. + * This style is provided for use with existing doc comments. + * In general, borderless tables should not be used for layout purposes. + * + * plain: + * Plain borders around table and cells, vertical margins, styled caption. + * Best for small tables or for complex tables for tables with cells that span + * rows and columns, when the "striped" style does not work well. + * + * striped: + * Borders around the table and vertical borders between cells, striped rows, + * vertical margins, styled caption. + * Best for tables that have a header row, and a body containing a series of simple rows. + */ + +table.borderless, +table.plain, +table.striped { + margin-top: 10px; + margin-bottom: 10px; +} +table.borderless > caption, +table.plain > caption, +table.striped > caption { + font-weight: bold; + font-size: smaller; +} +table.borderless th, table.borderless td, +table.plain th, table.plain td, +table.striped th, table.striped td { + padding: 2px 5px; +} +table.borderless, +table.borderless > thead > tr > th, table.borderless > tbody > tr > th, table.borderless > tr > th, +table.borderless > thead > tr > td, table.borderless > tbody > tr > td, table.borderless > tr > td { + border: none; +} +table.borderless > thead > tr, table.borderless > tbody > tr, table.borderless > tr { + background-color: transparent; +} +table.plain { + border-collapse: collapse; + border: 1px solid var(--table-border-color); +} +table.plain > thead > tr, table.plain > tbody tr, table.plain > tr { + background-color: transparent; +} +table.plain > thead > tr > th, table.plain > tbody > tr > th, table.plain > tr > th, +table.plain > thead > tr > td, table.plain > tbody > tr > td, table.plain > tr > td { + border: 1px solid var(--table-border-color); +} +table.striped { + border-collapse: collapse; + border: 1px solid var(--table-border-color); +} +table.striped > thead { + background-color: var(--subnav-background-color); +} +table.striped > thead > tr > th, table.striped > thead > tr > td { + border: 1px solid var(--table-border-color); +} +table.striped > tbody > tr:nth-child(even) { + background-color: var(--odd-row-color) +} +table.striped > tbody > tr:nth-child(odd) { + background-color: var(--even-row-color) +} +table.striped > tbody > tr > th, table.striped > tbody > tr > td { + border-left: 1px solid var(--table-border-color); + border-right: 1px solid var(--table-border-color); +} +table.striped > tbody > tr > th { + font-weight: normal; +} +/** + * Tweak style for small screens. + */ +@media screen and (max-width: 920px) { + header.flex-header { + max-height: 100vh; + overflow-y: auto; + } + div#navbar-top { + height: 2.8em; + transition: height 0.35s ease; + } + ul.nav-list { + display: block; + width: 40%; + float:left; + clear: left; + margin: 10px 0 0 0; + padding: 0; + } + ul.nav-list li { + float: none; + padding: 6px; + margin-left: 10px; + margin-top: 2px; + } + ul.sub-nav-list-small { + display:block; + height: 100%; + width: 50%; + float: right; + clear: right; + background-color: var(--subnav-background-color); + color: var(--body-text-color); + margin: 6px 0 0 0; + padding: 0; + } + ul.sub-nav-list-small ul { + padding-left: 20px; + } + ul.sub-nav-list-small a:link, ul.sub-nav-list-small a:visited { + color:var(--link-color); + } + ul.sub-nav-list-small a:hover { + color:var(--link-color-active); + } + ul.sub-nav-list-small li { + list-style:none; + float:none; + padding: 6px; + margin-top: 1px; + text-transform:uppercase; + } + ul.sub-nav-list-small > li { + margin-left: 10px; + } + ul.sub-nav-list-small li p { + margin: 5px 0; + } + div#navbar-sub-list { + display: none; + } + .top-nav a:link, .top-nav a:active, .top-nav a:visited { + display: block; + } + button#navbar-toggle-button { + width: 3.4em; + height: 2.8em; + background-color: transparent; + display: block; + float: left; + border: 0; + margin: 0 10px; + cursor: pointer; + font-size: 10px; + } + button#navbar-toggle-button .nav-bar-toggle-icon { + display: block; + width: 24px; + height: 3px; + margin: 1px 0 4px 0; + border-radius: 2px; + transition: all 0.1s; + background-color: var(--navbar-text-color); + } + button#navbar-toggle-button.expanded span.nav-bar-toggle-icon:nth-child(1) { + transform: rotate(45deg); + transform-origin: 10% 10%; + width: 26px; + } + button#navbar-toggle-button.expanded span.nav-bar-toggle-icon:nth-child(2) { + opacity: 0; + } + button#navbar-toggle-button.expanded span.nav-bar-toggle-icon:nth-child(3) { + transform: rotate(-45deg); + transform-origin: 10% 90%; + width: 26px; + } +} +@media screen and (max-width: 800px) { + .about-language { + padding-right: 16px; + } + ul.nav-list li { + margin-left: 5px; + } + ul.sub-nav-list-small > li { + margin-left: 5px; + } + main { + padding: 10px; + } + .summary section[class$="-summary"], .details section[class$="-details"], + .class-uses .detail, .serialized-class-details { + padding: 0 8px 5px 8px; + } + body { + -webkit-text-size-adjust: none; + } +} +@media screen and (max-width: 400px) { + .about-language { + font-size: 10px; + padding-right: 12px; + } +} +@media screen and (max-width: 400px) { + .nav-list-search { + width: 94%; + } + #search-input, #page-search-input { + width: 70%; + } +} +@media screen and (max-width: 320px) { + .nav-list-search > label { + display: none; + } + .nav-list-search { + width: 90%; + } + #search-input, #page-search-input { + width: 80%; + } +} + +pre.snippet { + background-color: var(--snippet-background-color); + color: var(--snippet-text-color); + padding: 10px; + margin: 12px 0; + overflow: auto; + white-space: pre; +} +div.snippet-container { + position: relative; +} +@media screen and (max-width: 800px) { + pre.snippet { + padding-top: 26px; + } + button.snippet-copy { + top: 4px; + right: 4px; + } +} +pre.snippet .italic { + font-style: italic; +} +pre.snippet .bold { + font-weight: bold; +} +pre.snippet .highlighted { + background-color: var(--snippet-highlight-color); + border-radius: 10%; +} diff --git a/Dokumente/JavaDoc/server/docs/javadoc/tag-search-index.js b/Dokumente/JavaDoc/server/docs/javadoc/tag-search-index.js new file mode 100644 index 0000000..0367dae --- /dev/null +++ b/Dokumente/JavaDoc/server/docs/javadoc/tag-search-index.js @@ -0,0 +1 @@ +tagSearchIndex = [];updateSearchResults(); \ No newline at end of file diff --git a/Dokumente/JavaDoc/server/docs/javadoc/type-search-index.js b/Dokumente/JavaDoc/server/docs/javadoc/type-search-index.js new file mode 100644 index 0000000..4072f28 --- /dev/null +++ b/Dokumente/JavaDoc/server/docs/javadoc/type-search-index.js @@ -0,0 +1 @@ +typeSearchIndex = [{"l":"Alle Klassen und Schnittstellen","u":"allclasses-index.html"},{"p":"pp.battleship.server","l":"BattleshipServer"}];updateSearchResults(); \ No newline at end of file diff --git a/Projekte/battleship/client/build.gradle b/Projekte/battleship/client/build.gradle index ce156f9..248d1e8 100644 --- a/Projekte/battleship/client/build.gradle +++ b/Projekte/battleship/client/build.gradle @@ -21,4 +21,3 @@ application { mainClass = 'pp.battleship.client.BattleshipApp' applicationName = 'battleship' } - diff --git a/Projekte/battleship/client/src/main/java/pp/battleship/client/GameSound.java b/Projekte/battleship/client/src/main/java/pp/battleship/client/GameSound.java index 0fdcef6..22e6b0b 100644 --- a/Projekte/battleship/client/src/main/java/pp/battleship/client/GameSound.java +++ b/Projekte/battleship/client/src/main/java/pp/battleship/client/GameSound.java @@ -34,6 +34,7 @@ public class GameSound extends AbstractAppState implements GameEventListener { private AudioNode splashSound; private AudioNode shipDestroyedSound; private AudioNode explosionSound; + private AudioNode shellFlyingSound; /** * Checks if sound is enabled in the preferences. @@ -78,6 +79,7 @@ public class GameSound extends AbstractAppState implements GameEventListener { shipDestroyedSound = loadSound(app, "Sound/Effects/sunken.wav"); //NON-NLS splashSound = loadSound(app, "Sound/Effects/splash.wav"); //NON-NLS explosionSound = loadSound(app, "Sound/Effects/explosion.wav"); //NON-NLS + shellFlyingSound = loadSound(app, "Sound/Effects/shell_flying.wav"); } /** @@ -124,12 +126,27 @@ public class GameSound extends AbstractAppState implements GameEventListener { shipDestroyedSound.playInstance(); } + /** + * Plays the shell flying sound effect. + */ + public void shellFly() { + if (isEnabled() && shellFlyingSound != null) { + shellFlyingSound.playInstance(); + } + } + + /** + * Handles a recieved {@code SoundEvent} and plays the according sound. + * + * @param event the Sound event to be processed + */ @Override public void receivedEvent(SoundEvent event) { switch (event.sound()) { case EXPLOSION -> explosion(); case SPLASH -> splash(); case DESTROYED_SHIP -> shipDestroyed(); + case SHELL_FLYING -> shellFly(); } } } diff --git a/Projekte/battleship/client/src/main/java/pp/battleship/client/gui/GameMusic.java b/Projekte/battleship/client/src/main/java/pp/battleship/client/gui/GameMusic.java index 8b3c44e..29e305e 100644 --- a/Projekte/battleship/client/src/main/java/pp/battleship/client/gui/GameMusic.java +++ b/Projekte/battleship/client/src/main/java/pp/battleship/client/gui/GameMusic.java @@ -14,6 +14,9 @@ import com.jme3.asset.AssetNotFoundException; import com.jme3.audio.AudioData; import com.jme3.audio.AudioNode; +/** + * Handles the background music beeing played. Is able to start and stop the music. Set the Volume of the Audio. + */ public class GameMusic extends AbstractAppState{ private static final Logger LOGGER = System.getLogger(GameMusic.class.getName()); private static final Preferences PREFERENCES = getPreferences(GameMusic.class); diff --git a/Projekte/battleship/client/src/main/java/pp/battleship/client/gui/MapView.java b/Projekte/battleship/client/src/main/java/pp/battleship/client/gui/MapView.java index bd16c83..81f348b 100644 --- a/Projekte/battleship/client/src/main/java/pp/battleship/client/gui/MapView.java +++ b/Projekte/battleship/client/src/main/java/pp/battleship/client/gui/MapView.java @@ -28,7 +28,7 @@ import pp.util.Position; * and interaction between the model and the view. */ class MapView { - private static final float FIELD_SIZE = 40f; + public static final float FIELD_SIZE = 40f; private static final float GRID_LINE_WIDTH = 2f; private static final float BACKGROUND_DEPTH = -4f; private static final float GRID_DEPTH = -1f; diff --git a/Projekte/battleship/client/src/main/java/pp/battleship/client/gui/MapViewSynchronizer.java b/Projekte/battleship/client/src/main/java/pp/battleship/client/gui/MapViewSynchronizer.java index 453e1d6..684dab9 100644 --- a/Projekte/battleship/client/src/main/java/pp/battleship/client/gui/MapViewSynchronizer.java +++ b/Projekte/battleship/client/src/main/java/pp/battleship/client/gui/MapViewSynchronizer.java @@ -7,16 +7,23 @@ package pp.battleship.client.gui; +import com.jme3.material.Material; +import com.jme3.material.RenderState; +import com.jme3.material.RenderState.BlendMode; import com.jme3.math.ColorRGBA; -import com.jme3.math.Vector3f; import com.jme3.scene.Geometry; import com.jme3.scene.Node; import com.jme3.scene.Spatial; +import com.jme3.scene.shape.Sphere; + import pp.battleship.model.Battleship; import pp.battleship.model.Shell; import pp.battleship.model.Shot; import pp.util.Position; +import static com.jme3.material.Materials.UNSHADED; + + /** * Synchronizes the visual representation of the ship map with the game model. * It handles the rendering of ships and shots on the map view, updating the view @@ -38,7 +45,6 @@ class MapViewSynchronizer extends ShipMapSynchronizer { // The MapView associated with this synchronizer private final MapView view; - private Shell shell; /** * Constructs a new MapViewSynchronizer for the given MapView. @@ -126,18 +132,23 @@ class MapViewSynchronizer extends ShipMapSynchronizer { return view.getApp().getDraw().makeFatLine(x1, y1, x2, y2, SHIP_DEPTH, color, SHIP_LINE_WIDTH); } - /** - * - * @param deltaTime + /** + * Creates and returns a Spatial representation of the given {@code Shell} object + * for 2D visualization in the game. The shell is represented as a circle. + * + * @param shell The {@code Shell} object to be visualized. + * @return A {@code Spatial} object representing the shell on the map. */ - public void update(float deltaTime) { - if (shell != null) { - shell.updatePosition(deltaTime); - drawShell(shell.getCurrentPosition()); - } - } - - private void drawShell(Vector3f position) { - // Methode zum Zeichnen des Geschosses auf der 2D-Karte TODO - } + @Override + public Spatial visit(Shell shell) { + final ColorRGBA color = ColorRGBA.Black; + Geometry ellipse = new Geometry("ellipse", new Sphere(50, 50, MapView.FIELD_SIZE / 2 * 0.8f)); + Material mat = new Material(view.getApp().getAssetManager(), UNSHADED); //NON-NLS + mat.getAdditionalRenderState().setBlendMode(BlendMode.Alpha); + mat.getAdditionalRenderState().setFaceCullMode(RenderState.FaceCullMode.Off); + mat.setColor("Color", color); + ellipse.setMaterial(mat); + ellipse.addControl(new Shell2DControl(view, shell)); + return ellipse; + } } diff --git a/Projekte/battleship/client/src/main/java/pp/battleship/client/gui/SeaSynchronizer.java b/Projekte/battleship/client/src/main/java/pp/battleship/client/gui/SeaSynchronizer.java index 1bd8987..f1736e8 100644 --- a/Projekte/battleship/client/src/main/java/pp/battleship/client/gui/SeaSynchronizer.java +++ b/Projekte/battleship/client/src/main/java/pp/battleship/client/gui/SeaSynchronizer.java @@ -20,6 +20,7 @@ import com.jme3.scene.shape.Cylinder; import pp.battleship.client.BattleshipApp; import pp.battleship.model.Battleship; import pp.battleship.model.Rotation; +import pp.battleship.model.Shell; import pp.battleship.model.ShipMap; import pp.battleship.model.Shot; @@ -39,6 +40,7 @@ class SeaSynchronizer extends ShipMapSynchronizer { private static final String BOAT_SMALL_MODEL = "Models/BoatSmall/12219_boat_v2_L2.j3o"; //NON-NLS private static final String CV_MODEL = "Models/CV/CV.j3o"; //NON-NLS private static final String BATTLE_MODEL = "Models/Battle/Battle.j3o"; //NON-NLS + private static final String LIGHTING = "Common/MatDefs/Light/Lighting.j3md"; private static final String COLOR = "Color"; //NON-NLS private static final String SHIP = "ship"; //NON-NLS private static final String SHOT = "shot"; //NON-NLS @@ -101,8 +103,8 @@ class SeaSynchronizer extends ShipMapSynchronizer { * @param ship the ship to be sunk */ private void sinkAndRemoveShip(Battleship ship) { - Battleship snikAndRemove = ship; - final Node shipNode = (Node) getSpatial(snikAndRemove); + Battleship wilkeningklaunichtmeinencode = ship; + final Node shipNode = (Node) getSpatial(wilkeningklaunichtmeinencode); if (shipNode == null) return; // Add sinking control to animate the sinking @@ -352,4 +354,25 @@ class SeaSynchronizer extends ShipMapSynchronizer { case UP -> PI; }; } + + /** + * Creates and returns a 3D model representation of the given {@code Shell} object + * for visualization in the game. + * + * @param shell The {@code Shell} object to be visualized. + * @return A {@code Spatial} object representing the 3D model of the shell. + */ + @Override + public Spatial visit(Shell shell) { + final Spatial model = app.getAssetManager().loadModel("Models/Shell/shell.j3o"); + model.setLocalScale(.05f); + model.setShadowMode(ShadowMode.CastAndReceive); + Material mat = new Material(app.getAssetManager(), LIGHTING); + mat.setTexture("DiffuseMap", app.getAssetManager().loadTexture("Models/Shell/shell_color.png")); + mat.setReceivesShadows(true); + model.setMaterial(mat); + + model.addControl(new ShellControl(shell)); + return model; + } } diff --git a/Projekte/battleship/client/src/main/java/pp/battleship/client/gui/Shell2DControl.java b/Projekte/battleship/client/src/main/java/pp/battleship/client/gui/Shell2DControl.java new file mode 100644 index 0000000..676a3ed --- /dev/null +++ b/Projekte/battleship/client/src/main/java/pp/battleship/client/gui/Shell2DControl.java @@ -0,0 +1,57 @@ +package pp.battleship.client.gui; + +import com.jme3.math.Vector3f; +import com.jme3.renderer.RenderManager; +import com.jme3.renderer.ViewPort; +import com.jme3.scene.control.AbstractControl; +import pp.battleship.model.Shell; +import pp.util.Position; + +/** + * Controls the 2D representation of a {@code Shell} in the game, updating its position + * based on the shell's current state in the game model. The {@code Shell2DControl} class + * is responsible for translating the shell's 3D position to a 2D view position within + * the game's map view. + */ +public class Shell2DControl extends AbstractControl { + private final Shell shell; + private final MapView view; + + /** + * Constructs a new {@code Shell2DControl} to manage the 2D visualization of the given {@code Shell}. + * + * @param view The {@code MapView} used to get information about the map to display. + * @param shell The {@code Shell} being visualized. + */ + public Shell2DControl(MapView view, Shell shell){ + this.shell = shell; + this.view = view; + } + + /** + * Updates the position of the shell's 2D representation based on the shell's current + * 3D position in the game model. The position is mapped from model space to view space + * coordinates and translated to the appropriate location within the {@code MapView}. + * + * @param tpf Time per frame, representing the time elapsed since the last frame. + */ + @Override + protected void controlUpdate(float tpf) { + Vector3f shellPos = shell.getPosition(); + Position viewPos = view.modelToView(shellPos.x, shellPos.z); + spatial.setLocalTranslation(viewPos.getX() + MapView.FIELD_SIZE / 2, viewPos.getY() + MapView.FIELD_SIZE / 2, 0); + } + + /** + * This method is called during the rendering phase, but it does not perform any + * operations in this implementation as the control only influences the spatial's + * transformation, not its rendering process. + * + * @param rm the RenderManager rendering the controlled Spatial (not null) + * @param vp the ViewPort being rendered (not null) + */ + @Override + protected void controlRender(RenderManager rm, ViewPort vp) { + // No rendering-specific behavior required for this control + } +} diff --git a/Projekte/battleship/client/src/main/java/pp/battleship/client/gui/ShellControl.java b/Projekte/battleship/client/src/main/java/pp/battleship/client/gui/ShellControl.java new file mode 100644 index 0000000..361f4b7 --- /dev/null +++ b/Projekte/battleship/client/src/main/java/pp/battleship/client/gui/ShellControl.java @@ -0,0 +1,58 @@ +package pp.battleship.client.gui; + +import com.jme3.math.Vector3f; +import com.jme3.renderer.RenderManager; +import com.jme3.renderer.ViewPort; +import com.jme3.scene.control.AbstractControl; +import pp.battleship.model.Shell; + +import static pp.util.FloatMath.PI; + +/** + * Controls the 3D representation of a {@code Shell} in the game, updating its position + * and rotation based on the shell's current state in the game model. The {@code ShellControl} + * class ensures that the spatial associated with the shell is positioned and oriented correctly + * within the world. + */ +public class ShellControl extends AbstractControl { + private final Shell shell; + + /** + * Constructs a new {@code ShellControl} to manage the 3D visualization of the given {@code Shell}. + * + * @param shell The {@code Shell} being visualized and controlled. + */ + public ShellControl(Shell shell){ + super(); + this.shell = shell; + } + + /** + * Updates the 3D position and rotation of the shell based on its current state. + * Converts map coordinates to world coordinates and applies the shell's orientation. + * + * @param tpf Time per frame, representing the elapsed time since the last update. + */ + @Override + protected void controlUpdate(float tpf) { + Vector3f pos = shell.getPosition(); + Vector3f fixed = new Vector3f(pos.z + 0.5f, pos.y, pos.x + 0.5f); + fixed.setY(pos.y); + spatial.setLocalTranslation(fixed); + spatial.setLocalRotation(shell.getRotation()); + spatial.rotate(PI/2,0,0); + } + + /** + * This method is called during the rendering phase, but it does not perform any + * operations in this implementation as the control only influences the spatial's + * transformation, not its rendering process. + * + * @param rm the RenderManager rendering the controlled Spatial (not null) + * @param vp the ViewPort being rendered (not null) + */ + @Override + protected void controlRender(RenderManager rm, ViewPort vp) { + // No rendering-specific behavior required for this control + } +} diff --git a/Projekte/battleship/client/src/main/java/pp/battleship/client/gui/SinkingControl.java b/Projekte/battleship/client/src/main/java/pp/battleship/client/gui/SinkingControl.java index 845d50e..8c0b497 100644 --- a/Projekte/battleship/client/src/main/java/pp/battleship/client/gui/SinkingControl.java +++ b/Projekte/battleship/client/src/main/java/pp/battleship/client/gui/SinkingControl.java @@ -46,6 +46,14 @@ class SinkingControl extends AbstractControl { } } + /** + * This method is called during the rendering phase, but it does not perform any + * operations in this implementation as the control only influences the spatial's + * transformation, not its rendering process. + * + * @param rm the RenderManager rendering the controlled Spatial (not null) + * @param vp the ViewPort being rendered (not null) + */ @Override protected void controlRender(RenderManager rm, ViewPort vp) { // No rendering-related code needed diff --git a/Projekte/battleship/client/src/main/java/pp/battleship/server/BattleshipServer.java b/Projekte/battleship/client/src/main/java/pp/battleship/server/BattleshipServer.java index 1ad0a2e..d10a5d9 100644 --- a/Projekte/battleship/client/src/main/java/pp/battleship/server/BattleshipServer.java +++ b/Projekte/battleship/client/src/main/java/pp/battleship/server/BattleshipServer.java @@ -18,6 +18,7 @@ import pp.battleship.BattleshipConfig; import pp.battleship.game.server.Player; import pp.battleship.game.server.ServerGameLogic; import pp.battleship.game.server.ServerSender; +import pp.battleship.message.client.AnimationFinishedMessage; import pp.battleship.message.client.ClientMessage; import pp.battleship.message.client.MapMessage; import pp.battleship.message.client.ShootMessage; @@ -115,6 +116,7 @@ public class BattleshipServer implements MessageListener, Conn Serializer.registerClass(MapMessage.class); Serializer.registerClass(ShootMessage.class); Serializer.registerClass(EffectMessage.class); + Serializer.registerClass(AnimationFinishedMessage.class); Serializer.registerClass(Battleship.class); Serializer.registerClass(IntPoint.class); Serializer.registerClass(Shot.class); @@ -123,6 +125,7 @@ public class BattleshipServer implements MessageListener, Conn private void registerListeners() { myServer.addMessageListener(this, MapMessage.class); myServer.addMessageListener(this, ShootMessage.class); + myServer.addMessageListener(this, AnimationFinishedMessage.class); myServer.addConnectionListener(this); } diff --git a/Projekte/battleship/client/src/main/resources/Models/Shell/shell.j3o b/Projekte/battleship/client/src/main/resources/Models/Shell/shell.j3o new file mode 100644 index 0000000..66a97a1 Binary files /dev/null and b/Projekte/battleship/client/src/main/resources/Models/Shell/shell.j3o differ diff --git a/Projekte/battleship/client/src/main/resources/Models/Shell/shell_color.png b/Projekte/battleship/client/src/main/resources/Models/Shell/shell_color.png new file mode 100644 index 0000000..885f84b Binary files /dev/null and b/Projekte/battleship/client/src/main/resources/Models/Shell/shell_color.png differ diff --git a/Projekte/battleship/client/src/main/resources/Sound/Effects/shell_flying.wav b/Projekte/battleship/client/src/main/resources/Sound/Effects/shell_flying.wav new file mode 100644 index 0000000..35bcb09 Binary files /dev/null and b/Projekte/battleship/client/src/main/resources/Sound/Effects/shell_flying.wav differ diff --git a/Projekte/battleship/model/src/main/java/pp/battleship/game/client/BattleState.java b/Projekte/battleship/model/src/main/java/pp/battleship/game/client/BattleState.java index 99df8d0..ec6785b 100644 --- a/Projekte/battleship/model/src/main/java/pp/battleship/game/client/BattleState.java +++ b/Projekte/battleship/model/src/main/java/pp/battleship/game/client/BattleState.java @@ -10,6 +10,7 @@ package pp.battleship.game.client; import pp.battleship.message.client.ShootMessage; import pp.battleship.message.server.EffectMessage; import pp.battleship.model.IntPoint; +import pp.battleship.model.Shell; import pp.battleship.model.ShipMap; import pp.battleship.notification.Sound; @@ -53,16 +54,13 @@ class BattleState extends ClientState { @Override public void receivedEffect(EffectMessage msg) { ClientGameLogic.LOGGER.log(Level.INFO, "report effect: {0}", msg); //NON-NLS - playSound(msg); + myTurn = msg.isMyTurn(); logic.setInfoText(msg.getInfoTextKey()); - affectedMap(msg).add(msg.getShot()); - if (destroyedOpponentShip(msg)) - logic.getOpponentMap().add(msg.getDestroyedShip()); - if (msg.isGameOver()) { - msg.getRemainingOpponentShips().forEach(logic.getOpponentMap()::add); - logic.setState(new GameOverState(logic)); - } + Shell shell = new Shell(msg.getShot()); + affectedMap(msg).add(shell); + logic.playSound(Sound.SHELL_FLYING); + logic.setState(new ShootingState(logic, shell, myTurn, msg)); } /** @@ -74,29 +72,4 @@ class BattleState extends ClientState { private ShipMap affectedMap(EffectMessage msg) { return msg.isOwnShot() ? logic.getOpponentMap() : logic.getOwnMap(); } - - /** - * Checks if the opponent's ship was destroyed by the player's shot. - * - * @param msg the effect message received from the server - * @return true if the shot destroyed an opponent's ship, false otherwise - */ - private boolean destroyedOpponentShip(EffectMessage msg) { - return msg.getDestroyedShip() != null && msg.isOwnShot(); - } - - /** - * Plays a sound based on the outcome of the shot. Different sounds are played for a miss, hit, - * or destruction of a ship. - * - * @param msg the effect message containing the result of the shot - */ - private void playSound(EffectMessage msg) { - if (!msg.getShot().isHit()) - logic.playSound(Sound.SPLASH); - else if (msg.getDestroyedShip() == null) - logic.playSound(Sound.EXPLOSION); - else - logic.playSound(Sound.DESTROYED_SHIP); - } } diff --git a/Projekte/battleship/model/src/main/java/pp/battleship/game/client/ShootingAnimationState.java b/Projekte/battleship/model/src/main/java/pp/battleship/game/client/ShootingAnimationState.java deleted file mode 100644 index 2ad0ead..0000000 --- a/Projekte/battleship/model/src/main/java/pp/battleship/game/client/ShootingAnimationState.java +++ /dev/null @@ -1,93 +0,0 @@ -package pp.battleship.game.client; - -import pp.battleship.message.client.ShellAnimationFinishedMessage; -import pp.battleship.message.server.EffectMessage; -import pp.battleship.model.Shell; - -import java.lang.System.Logger.Level; - -/** - * This class represents the client state during a shooting animation. - * It handles the logic for the animation of a fired shell and ensures - * that the client notifies the server when the animation is complete. - */ -public class ShootingAnimationState extends ClientState { - - // The shell object representing the fired shell's movement - private final Shell shell; - - /** - * Constructs the ShootingAnimationState with the given game logic and shell. - * - * @param logic the game logic instance managing the state - * @param shell the shell object representing the fired projectile - */ - ShootingAnimationState(ClientGameLogic logic, Shell shell) { - super(logic); - this.shell = shell; - } - - /** - * Indicates that the battle scene should be shown in this state. - * - * @return true because the battle view is active during the shooting animation - */ - @Override - public boolean showBattle() { - return true; - } - - /** - * Handles the effect message received from the server. - * Logs the received effect for debugging purposes. - * - * @param msg the effect message received from the server - */ - @Override - void receivedEffect(EffectMessage msg) { - ClientGameLogic.LOGGER.log(Level.INFO, "report effect: {0}", msg); //NON-NLS - // Here, you could implement additional logic to display the effects of the shot, - // like a visual indication of a hit or a miss. - } - - /** - * Called once per frame to update the shell's position and check if it has reached the target. - * If the shell reaches the target, a message is sent to the server. - * - * @param deltaTime time in seconds since the last update call - */ - @Override - public void update(float deltaTime) { - if (shell != null) { - // Update the position of the shell based on the elapsed time - shell.updatePosition(deltaTime); - - // Check if the shell has reached its target - if (shell.isAtTarget()) { - // If the shell has reached the target, notify the server that the animation is complete - sendAnimationCompleteMessage(); - } - } - } - - /** - * Sends a message to the server indicating that the shooting animation has finished. - */ - private void sendAnimationCompleteMessage() { - ShellAnimationFinishedMessage message = new ShellAnimationFinishedMessage(); - // Send the message to the server via the game's logic communication system - logic.send(message); - logic.setState(new BattleState(logic, true)); - ClientGameLogic.LOGGER.log(Level.INFO, "Shell animation complete, message sent to server."); - } - - /** - * Optionally, you can add an entry method if there is any setup that needs to happen when entering the state. - * By default, this is empty. - */ - @Override - void entry() { - super.entry(); // Call the parent entry method - ClientGameLogic.LOGGER.log(Level.INFO, "Entered ShootingAnimationState."); - } -} diff --git a/Projekte/battleship/model/src/main/java/pp/battleship/game/client/ShootingState.java b/Projekte/battleship/model/src/main/java/pp/battleship/game/client/ShootingState.java new file mode 100644 index 0000000..75312b2 --- /dev/null +++ b/Projekte/battleship/model/src/main/java/pp/battleship/game/client/ShootingState.java @@ -0,0 +1,114 @@ +package pp.battleship.game.client; + +import pp.battleship.message.client.AnimationFinishedMessage; +import pp.battleship.message.server.EffectMessage; +import pp.battleship.model.Battleship; +import pp.battleship.model.Shell; +import pp.battleship.model.ShipMap; +import pp.battleship.notification.Sound; + +/** + * Represents the shooting state of the game where a shell is fired at the opponent. + */ +public class ShootingState extends ClientState { + private float shootValue; + private final static float SHELL_SPEED = 0.3f; + private final Shell shell; + private final boolean myTurn; + private final EffectMessage msg; + + /** + * Constructs a shooting state with the specified game logic. + * + * @param logic the game logic + * @param shell the shell being shot + * @param myTurn indicates if it is the player's turn + * @param msg the effect message associated with the shooting action + */ + public ShootingState(ClientGameLogic logic, Shell shell, boolean myTurn, EffectMessage msg) { + super(logic); + this.msg = msg; + this.myTurn = myTurn; + this.shell = shell; + this.shootValue = 0; + shell.move(shootValue); + } + + @Override + public boolean showBattle() { + return true; + } + + /** + * Updates the shooting state by moving the shell based on the elapsed time. + * + * @param delta the time in seconds since the last update + */ + @Override + void update(float delta) { + super.update(delta); + if (shootValue > 1) { + endState(); + } + else { + shootValue += delta * SHELL_SPEED; + shell.move(shootValue); + } + } + + /** + * Ends the shooting state and processes the effects of the shot. + */ + private void endState() { + playSound(msg); + affectedMap(msg).add(msg.getShot()); + affectedMap(msg).remove(shell); + + if (destroyedOpponentShip(msg)) + logic.getOpponentMap().add(msg.getDestroyedShip()); + if (msg.isGameOver()) { + for (Battleship ship : msg.getRemainingOpponentShips()) { + logic.getOpponentMap().add(ship); + } + logic.setState(new GameOverState(logic)); + return; + } + logic.send(new AnimationFinishedMessage()); + logic.setState(new BattleState(logic, myTurn)); + } + + /** + * Checks if an opponent's ship was destroyed by the shot. + * + * @param msg the effect message containing the shot details + * @return true if an opponent's ship was destroyed, false otherwise + */ + private boolean destroyedOpponentShip(EffectMessage msg) { + return msg.getDestroyedShip() != null && msg.isOwnShot(); + } + + /** + * Retrieves the affected map based on whether the shot was owned by the player or the opponent. + * + * @param msg the effect message containing shot details + * @return the ShipMap that was affected by the shot + */ + private ShipMap affectedMap(EffectMessage msg) { + return msg.isOwnShot() ? logic.getOpponentMap() : logic.getOwnMap(); + } + + /** + * Plays a sound based on the outcome of the shot. Different sounds are played for a miss, hit, + * or destruction of a ship. + * + * @param msg the effect message containing the result of the shot + */ + private void playSound(EffectMessage msg) { + if (!msg.getShot().isHit()) + logic.playSound(Sound.SPLASH); + else if (msg.getDestroyedShip() == null) + logic.playSound(Sound.EXPLOSION); + else + logic.playSound(Sound.DESTROYED_SHIP); + } +} diff --git a/Projekte/battleship/model/src/main/java/pp/battleship/game/server/ServerGameLogic.java b/Projekte/battleship/model/src/main/java/pp/battleship/game/server/ServerGameLogic.java index f0db4c1..9f36179 100644 --- a/Projekte/battleship/model/src/main/java/pp/battleship/game/server/ServerGameLogic.java +++ b/Projekte/battleship/model/src/main/java/pp/battleship/game/server/ServerGameLogic.java @@ -8,9 +8,9 @@ package pp.battleship.game.server; import pp.battleship.BattleshipConfig; +import pp.battleship.message.client.AnimationFinishedMessage; import pp.battleship.message.client.ClientInterpreter; import pp.battleship.message.client.MapMessage; -import pp.battleship.message.client.ShellAnimationFinishedMessage; import pp.battleship.message.client.ShootMessage; import pp.battleship.message.server.EffectMessage; import pp.battleship.message.server.GameDetails; @@ -36,10 +36,10 @@ public class ServerGameLogic implements ClientInterpreter { private final BattleshipConfig config; private final List players = new ArrayList<>(2); private final Set readyPlayers = new HashSet<>(); - private Set playersFinishedShellAnimation = new HashSet<>(); private final ServerSender serverSender; private Player activePlayer; private ServerState state = ServerState.WAIT; + private Set waitPlayers = new HashSet<>(); /** * Constructs a ServerGameLogic with the specified sender and configuration. @@ -53,7 +53,7 @@ public class ServerGameLogic implements ClientInterpreter { } /** - * Returns the state of the game. + * Returns the state of the game. */ ServerState getState() { return state; @@ -136,7 +136,6 @@ public class ServerGameLogic implements ClientInterpreter { /** * Handles the reception of a MapMessage. - * Also tests if Map is in correct format * * @param msg the received MapMessage * @param from the ID of the sender client @@ -145,59 +144,74 @@ public class ServerGameLogic implements ClientInterpreter { public void received(MapMessage msg, int from) { if (state != ServerState.SET_UP) LOGGER.log(Level.ERROR, "playerReady not allowed in {0}", state); //NON-NLS - - Player cp = getPlayerById(from); - List ships = msg.getShips(); - - if (!validateShips(ships)) { - LOGGER.log(Level.ERROR, "Invalid ship placement by player {0}", from); - send(cp, null ); - return; + else { + if (checkMap(msg.getShips())) { + playerReady(getPlayerById(from), msg.getShips()); + } + else { + LOGGER.log(Level.WARNING, "Invalid Map sent from player {0}", from); //NON-NLS + send(players.get(from), new GameDetails(config)); + } } - - playerReady(cp, ships); } - /** - * Validates a list of ships. - * Validates the list, that no ships are out of bounds or overlap with each other - * - * @param ships list of ships to validate - * @return {@code true} if all ships positions are valid, {@code false} otherwise + * Handles the reception of a AnimationFinishedMessage. + * + * @param msg the received MapMessage + * @param from the ID of the sender client */ - private boolean validateShips(List ships) { - Set occupiedPoints = new HashSet<>(); - - for (Battleship ship : ships) { - if (!isWithinBounds(ship)) { - return false; + @Override + public void received(AnimationFinishedMessage msg, int from) { + if (state != ServerState.ANIMATION) { + LOGGER.log(Level.ERROR, "animation finished not allowed in {0}", state); + } + else { + LOGGER.log(Level.DEBUG, "anim received from {0}", getPlayerById(from)); + Player player = getPlayerById(from); + if (!waitPlayers.add(player)) { + LOGGER.log(Level.ERROR, "{0} already sent animation finished", player); //NON-NLS + return; } - - for (int x = ship.getMinX(); x <= ship.getMaxX(); x++) { - for (int y = ship.getMinY(); y <= ship.getMaxY(); y++) { - IntPoint point = new IntPoint(x, y); - if (!occupiedPoints.add(point)) { - return false; - } - } + if (waitPlayers.size() == 2) { + waitPlayers = new HashSet<>(); + setState(ServerState.BATTLE); + } + } + } + + /** + * Validates the placement of battleships on the map. + * Ensures that: + *
            + *
          • The number of ships matches the configuration.
          • + *
          • Ships are within the map's boundaries.
          • + *
          • Ships do not overlap.
          • + *
          + * + * @param ships the list of {@link Battleship} objects to validate + * @return {@code true} if all ships are placed correctly; {@code false} otherwise + */ + private boolean checkMap(List ships) { + int numShips = config.getShipNums().values().stream().mapToInt(Integer::intValue).sum(); + if (numShips != ships.size()) return false; + + List occupied = new ArrayList<>(); + + for (Battleship battleship : ships) { + int x = battleship.getX(); + int y = battleship.getY(); + for (int i = 0; i < battleship.getLength(); i++) { + if (x >= 0 && x < config.getMapWidth() && y >= 0 && y < config.getMapHeight() && !occupied.contains(new IntPoint(x, y))) { + occupied.add(new IntPoint(x, y)); + x += battleship.getRot().dx(); + y += battleship.getRot().dy(); + } + else return false; } } - return true; } - - - /** - * Test if a ship is inside the map - * @param ship the ship to validate - * @return {@code true} if a ship is within bounds, {@code false} otherwise - */ - private boolean isWithinBounds(Battleship ship) { - return ship.getMinX() >= 0 && ship.getMaxX() < config.getMapWidth() && - ship.getMinY() >= 0 && ship.getMaxY() < config.getMapHeight(); - } - /** * Handles the reception of a ShootMessage. @@ -209,8 +223,11 @@ public class ServerGameLogic implements ClientInterpreter { public void received(ShootMessage msg, int from) { if (state != ServerState.BATTLE) LOGGER.log(Level.ERROR, "shoot not allowed in {0}", state); //NON-NLS - else + else{ + setState(ServerState.ANIMATION); shoot(getPlayerById(from), msg.getPosition()); + } + } /** @@ -241,10 +258,6 @@ public class ServerGameLogic implements ClientInterpreter { */ void shoot(Player p, IntPoint pos) { if (p != activePlayer) return; - - setState(ServerState.SHELL_IN_FLIGHT); - // setState(ServerState.BATTLE); - final Player otherPlayer = getOpponent(activePlayer); final Battleship selectedShip = otherPlayer.getMap().findShipAt(pos); if (selectedShip == null) { @@ -274,29 +287,4 @@ public class ServerGameLogic implements ClientInterpreter { } } } - - /** - * Handles the reception of ShellAnimationFinishedMessage. - * This method is called when a client signals that its shell animation is complete. - * - * @param msg the received ShellAnimationFinishedMessage - * @param from the ID of the sender client - */ - @Override - public void received(ShellAnimationFinishedMessage msg, int from) { - // Add the player to the set of players who have finished the animation - playersFinishedShellAnimation.add(from); - - // Check if both players have finished the shell animation - if (playersFinishedShellAnimation.size() == 2) { - // Clear the set of players who have finished the animation for the next shot - playersFinishedShellAnimation.clear(); - - // Transition back to the BATTLE state - setState(ServerState.BATTLE); - - // Log the completion of the shell animation - LOGGER.log(Level.INFO, "Both players finished shell animation. Returning to BATTLE state."); - } - } } diff --git a/Projekte/battleship/model/src/main/java/pp/battleship/game/server/ServerState.java b/Projekte/battleship/model/src/main/java/pp/battleship/game/server/ServerState.java index e4e494a..52f11e4 100644 --- a/Projekte/battleship/model/src/main/java/pp/battleship/game/server/ServerState.java +++ b/Projekte/battleship/model/src/main/java/pp/battleship/game/server/ServerState.java @@ -26,12 +26,13 @@ enum ServerState { */ BATTLE, + /** + * The server is waiting for all clients to finish the shoot animation. + */ + ANIMATION, + /** * The game has ended because all the ships of one player have been destroyed. */ - GAME_OVER, - /** - * The games is frozen as long as the shell animation is running - */ - SHELL_IN_FLIGHT + GAME_OVER } diff --git a/Projekte/battleship/model/src/main/java/pp/battleship/game/singlemode/Copycat.java b/Projekte/battleship/model/src/main/java/pp/battleship/game/singlemode/Copycat.java index eb21c74..c5185f4 100644 --- a/Projekte/battleship/model/src/main/java/pp/battleship/game/singlemode/Copycat.java +++ b/Projekte/battleship/model/src/main/java/pp/battleship/game/singlemode/Copycat.java @@ -7,10 +7,10 @@ package pp.battleship.game.singlemode; +import pp.battleship.message.client.AnimationFinishedMessage; import pp.battleship.message.client.ClientInterpreter; import pp.battleship.message.client.ClientMessage; import pp.battleship.message.client.MapMessage; -import pp.battleship.message.client.ShellAnimationFinishedMessage; import pp.battleship.message.client.ShootMessage; import pp.battleship.model.Battleship; @@ -64,6 +64,11 @@ class Copycat implements ClientInterpreter { copiedMessage = new MapMessage(msg.getShips().stream().map(Copycat::copy).toList()); } + @Override + public void received(AnimationFinishedMessage msg, int from) { + copiedMessage = msg; + } + /** * Creates a copy of the provided {@link Battleship}. * @@ -73,10 +78,4 @@ class Copycat implements ClientInterpreter { private static Battleship copy(Battleship ship) { return new Battleship(ship.getLength(), ship.getX(), ship.getY(), ship.getRot()); } - - @Override - public void received(ShellAnimationFinishedMessage shellAnimationFinishedMessage, int from) { - // TODO Auto-generated method stub - throw new UnsupportedOperationException("Unimplemented method 'received'"); - } } diff --git a/Projekte/battleship/model/src/main/java/pp/battleship/game/singlemode/RobotClient.java b/Projekte/battleship/model/src/main/java/pp/battleship/game/singlemode/RobotClient.java index d7831a7..405a1d9 100644 --- a/Projekte/battleship/model/src/main/java/pp/battleship/game/singlemode/RobotClient.java +++ b/Projekte/battleship/model/src/main/java/pp/battleship/game/singlemode/RobotClient.java @@ -1,6 +1,7 @@ package pp.battleship.game.singlemode; import pp.battleship.game.client.BattleshipClient; +import pp.battleship.message.client.AnimationFinishedMessage; import pp.battleship.message.client.MapMessage; import pp.battleship.message.client.ShootMessage; import pp.battleship.message.server.EffectMessage; @@ -71,6 +72,7 @@ class RobotClient implements ServerInterpreter { * Makes the RobotClient take a shot by sending a ShootMessage with the target position. */ private void robotShot() { + connection.sendRobotMessage(new ShootMessage(getShotPosition())); } @@ -121,6 +123,7 @@ class RobotClient implements ServerInterpreter { @Override public void received(EffectMessage msg) { LOGGER.log(Level.INFO, "Received EffectMessage: {0}", msg); //NON-NLS + connection.sendRobotMessage(new AnimationFinishedMessage()); if (msg.isMyTurn()) shoot(); } diff --git a/Projekte/battleship/model/src/main/java/pp/battleship/message/client/AnimationFinishedMessage.java b/Projekte/battleship/model/src/main/java/pp/battleship/message/client/AnimationFinishedMessage.java new file mode 100644 index 0000000..51cfb49 --- /dev/null +++ b/Projekte/battleship/model/src/main/java/pp/battleship/message/client/AnimationFinishedMessage.java @@ -0,0 +1,24 @@ +package pp.battleship.message.client; + +import com.jme3.network.serializing.Serializable; + +/** + * Represents a message indicating that an animation has finished on the client side. + */ +@Serializable +public class AnimationFinishedMessage extends ClientMessage { + public AnimationFinishedMessage() { + super(); + } + + /** + * Accepts a visitor to process this message. + * + * @param interpreter the visitor to process this message + * @param from the connection ID from which the message was received + */ + @Override + public void accept(ClientInterpreter interpreter, int from) { + interpreter.received(this, from); + } +} diff --git a/Projekte/battleship/model/src/main/java/pp/battleship/message/client/ClientInterpreter.java b/Projekte/battleship/model/src/main/java/pp/battleship/message/client/ClientInterpreter.java index bc5974d..f1b332b 100644 --- a/Projekte/battleship/model/src/main/java/pp/battleship/message/client/ClientInterpreter.java +++ b/Projekte/battleship/model/src/main/java/pp/battleship/message/client/ClientInterpreter.java @@ -27,6 +27,11 @@ public interface ClientInterpreter { */ void received(MapMessage msg, int from); - // TODO - void received(ShellAnimationFinishedMessage shellAnimationFinishedMessage, int from); + /** + * Processes a received AnimationFinishedMessage. + * + * @param msg the MapMessage to be processed + * @param from the connection ID from which the message was received + */ + void received(AnimationFinishedMessage msg, int from); } diff --git a/Projekte/battleship/model/src/main/java/pp/battleship/message/client/ShellAnimationFinishedMessage.java b/Projekte/battleship/model/src/main/java/pp/battleship/message/client/ShellAnimationFinishedMessage.java deleted file mode 100644 index dba92d2..0000000 --- a/Projekte/battleship/model/src/main/java/pp/battleship/message/client/ShellAnimationFinishedMessage.java +++ /dev/null @@ -1,10 +0,0 @@ -package pp.battleship.message.client; - -public class ShellAnimationFinishedMessage extends ClientMessage{ - - @Override - public void accept(ClientInterpreter interpreter, int from) { - interpreter.received(this, from); - } - -} diff --git a/Projekte/battleship/model/src/main/java/pp/battleship/model/Shell.java b/Projekte/battleship/model/src/main/java/pp/battleship/model/Shell.java index c0d488c..6888cfe 100644 --- a/Projekte/battleship/model/src/main/java/pp/battleship/model/Shell.java +++ b/Projekte/battleship/model/src/main/java/pp/battleship/model/Shell.java @@ -1,47 +1,125 @@ package pp.battleship.model; +import com.jme3.math.Quaternion; import com.jme3.math.Vector3f; -public class Shell { - private Vector3f startPosition; - private Vector3f targetPosition; - private Vector3f currentPosition; - private float speed; - private boolean isAtTarget; +/** + * The {@code Shell} class represents a projectile fired by a ship in the Battleship game. + * It models the position and rotation of the projectile and allows for its movement along + * a Bezier curve. + */ +public class Shell implements Item { + /** + * Initial position of the shell + */ + private final static Vector3f INIT_POS = new Vector3f(-3, 7, -3); + /** + * The overshot difference vector used to get a shallower flight path + */ + private final static Vector3f OVER_SHOT_DIFF = new Vector3f(-1, -1, -1); + // Target shot position + private final Vector3f shotPosition; + // Position on top of shotPosition used for Bezier curve + private final Vector3f overShotPosition; + // Current position of the shell + private Vector3f position; + // Current rotation of the shell + private final Quaternion rotation; - public Shell(Vector3f startPosition, Vector3f targetPosition, float speed) { - this.startPosition = startPosition; - this.targetPosition = targetPosition; - this.currentPosition = new Vector3f(startPosition); - this.speed = speed; - this.isAtTarget = true; + /** + * Constructs a new {@code Shell} object using the given {@code Shot} target. + * The initial position, target position, and overshot position are calculated. + * + * @param shot The target {@code Shot} object containing the destination coordinates. + */ + public Shell(Shot shot) { + this.shotPosition = new Vector3f(shot.getX(), 0, shot.getY()); + this.overShotPosition = new Vector3f(shotPosition.x, INIT_POS.y, shotPosition.z).add(OVER_SHOT_DIFF); + this.position = INIT_POS; + this.rotation = new Quaternion(); } - // Aktualisiert die Position des Geschosses basierend auf der verstrichenen Zeit - public void updatePosition(float deltaTime) { - if (!isAtTarget) { - // Berechne die Richtung des Geschosses - Vector3f direction = targetPosition.subtract(currentPosition).normalize(); - // Berechne die Bewegung basierend auf der Geschwindigkeit und der verstrichenen Zeit - Vector3f movement = direction.mult(speed * deltaTime); - currentPosition.addLocal(movement); + /** + * Gets the current position of the shell. + * + * @return The current position as a {@code Vector3f}. + */ + public Vector3f getPosition() { + return this.position; + } - // Prüfe, ob das Geschoss das Ziel erreicht hat - if (currentPosition.distance(targetPosition) < speed * deltaTime) { - currentPosition.set(targetPosition); - isAtTarget = true; - } + /** + * Gets the current rotation of the shell. + * + * @return The current rotation as a {@code Quaternion}. + */ + public Quaternion getRotation() { + return this.rotation; + } + + /** + * Moves the shell along a Bezier curve based on the given time factor {@code t}. + * The position and rotation of the shell are updated. + * + * @param t The time factor between 0 and 1, representing the progress of the shell's flight. + */ + public void move(float t) { + if (t > 1f) t = 1f; + Vector3f newPosition = bezInt(INIT_POS, overShotPosition, shotPosition, t); + updateRotation(position, newPosition); + this.position = newPosition; + } + + /** + * Performs a quadratic Bezier interpolation between three points based on the time factor {@code t}. + * + * @param p1 The start position. + * @param p2 The overshot position. + * @param p3 The target position. + * @param t The time factor for interpolation. + * @return The interpolated position as a {@code Vector3f}. + */ + private Vector3f bezInt(Vector3f p1, Vector3f p2, Vector3f p3, float t) { + Vector3f inA = linInt(p1, p2, t); + Vector3f inB = linInt(p2, p3, t); + return linInt(inA, inB, t); + } + + /** + * Performs linear interpolation between two points {@code p1} and {@code p2} based on the time factor {@code t}. + * + * @param p1 The start position. + * @param p2 The end position. + * @param t The time factor for interpolation. + * @return The interpolated position as a {@code Vector3f}. + */ + private Vector3f linInt(Vector3f p1, Vector3f p2, float t) { + float x = p1.getX() + t * (p2.getX() - p1.getX()); + float y = p1.getY() + t * (p2.getY() - p1.getY()); + float z = p1.getZ() + t * (p2.getZ() - p1.getZ()); + return new Vector3f(x, y, z); + } + + /** + * Updates the rotation of the shell to face the new position along its flight path. + * + * @param oldPos The previous position of the shell. + * @param newPos The new position of the shell. + */ + private void updateRotation(Vector3f oldPos, Vector3f newPos) { + Vector3f direction = newPos.subtract(oldPos).normalize(); + if (direction.lengthSquared() > 0) { + this.rotation.lookAt(direction, Vector3f.UNIT_Y); } } - // Gibt die aktuelle Position des Geschosses zurück - public Vector3f getCurrentPosition() { - return currentPosition; + @Override + public T accept(Visitor visitor) { + return visitor.visit(this); } - // Überprüft, ob das Geschoss das Ziel erreicht hat - public boolean isAtTarget() { - return isAtTarget; + @Override + public void accept(VoidVisitor visitor) { + visitor.visit(this); } } - diff --git a/Projekte/battleship/model/src/main/java/pp/battleship/model/ShellControl.java b/Projekte/battleship/model/src/main/java/pp/battleship/model/ShellControl.java deleted file mode 100644 index a4c8c45..0000000 --- a/Projekte/battleship/model/src/main/java/pp/battleship/model/ShellControl.java +++ /dev/null @@ -1,48 +0,0 @@ -package pp.battleship.model; - -import com.jme3.math.Vector3f; -import com.jme3.renderer.RenderManager; -import com.jme3.renderer.ViewPort; -import com.jme3.scene.Spatial; -import com.jme3.scene.control.AbstractControl; - -public class ShellControl extends AbstractControl { - - private Shell shell; // Das Shell-Objekt, das die Bewegung des Geschosses enthält - - public ShellControl(Shell shell) { - this.shell = shell; - } - - // Die Methode wird in jedem Frame aufgerufen, um die Logik zu aktualisieren - @Override - protected void controlUpdate(float deltaTime) { - if (shell != null) { - // Aktualisiere die Position des Geschosses basierend auf der verstrichenen Zeit - shell.updatePosition(deltaTime); - - // Setze die neue Position des Geschosses im 3D-Raum - spatial.setLocalTranslation(shell.getCurrentPosition()); - - // Optionale Animation oder Effekte hinzufügen (z.B. Rauch oder Funkenflug) - // addParticleEffects(); - } - } - - - // Setze das Shell-Objekt neu, um es während des Spiels zu ändern - public void setShell(Shell shell) { - this.shell = shell; - } - - // Gibt das aktuell verwendete Shell-Objekt zurück - public Shell getShell() { - return this.shell; - } - - @Override - protected void controlRender(RenderManager rm, ViewPort vp) { - // TODO Auto-generated method stub - } -} - diff --git a/Projekte/battleship/model/src/main/java/pp/battleship/model/ShipMap.java b/Projekte/battleship/model/src/main/java/pp/battleship/model/ShipMap.java index 5a16278..773e7ff 100644 --- a/Projekte/battleship/model/src/main/java/pp/battleship/model/ShipMap.java +++ b/Projekte/battleship/model/src/main/java/pp/battleship/model/ShipMap.java @@ -78,6 +78,15 @@ public class ShipMap { addItem(ship); } + /** + * Registers a shot on the map and triggers an item addition event. + * + * @param shell the shell to be registered on the map + */ + public void add(Shell shell) { + addItem(shell); + } + /** * Registers a shot on the map, updates the state of the affected ship (if any), * and triggers an item addition event. diff --git a/Projekte/battleship/model/src/main/java/pp/battleship/model/Visitor.java b/Projekte/battleship/model/src/main/java/pp/battleship/model/Visitor.java index f490451..b8e1954 100644 --- a/Projekte/battleship/model/src/main/java/pp/battleship/model/Visitor.java +++ b/Projekte/battleship/model/src/main/java/pp/battleship/model/Visitor.java @@ -28,4 +28,12 @@ public interface Visitor { * @return the result of visiting the Battleship element */ T visit(Battleship ship); + + /** + * Visits a Shell element + * + * @param shell the Shell element to visit + * @return the result of visitung the Battleship element + */ + T visit(Shell shell); } diff --git a/Projekte/battleship/model/src/main/java/pp/battleship/model/VoidVisitor.java b/Projekte/battleship/model/src/main/java/pp/battleship/model/VoidVisitor.java index 871c063..24c78b4 100644 --- a/Projekte/battleship/model/src/main/java/pp/battleship/model/VoidVisitor.java +++ b/Projekte/battleship/model/src/main/java/pp/battleship/model/VoidVisitor.java @@ -25,4 +25,10 @@ public interface VoidVisitor { * @param ship the Battleship element to visit */ void visit(Battleship ship); + + /** + * Visits a Shell element + * @param shell the Shell element to visit + */ + void visit(Shell shell); } diff --git a/Projekte/battleship/model/src/main/java/pp/battleship/notification/Sound.java b/Projekte/battleship/model/src/main/java/pp/battleship/notification/Sound.java index d82ab69..933c1d4 100644 --- a/Projekte/battleship/model/src/main/java/pp/battleship/notification/Sound.java +++ b/Projekte/battleship/model/src/main/java/pp/battleship/notification/Sound.java @@ -22,5 +22,9 @@ public enum Sound { /** * Sound of a ship being destroyed. */ - DESTROYED_SHIP + DESTROYED_SHIP, + /** + * Sound of a shell flying + */ + SHELL_FLYING } diff --git a/Projekte/battleship/server/src/main/java/pp/battleship/server/BattleshipServer.java b/Projekte/battleship/server/src/main/java/pp/battleship/server/BattleshipServer.java index 1ad0a2e..d10a5d9 100644 --- a/Projekte/battleship/server/src/main/java/pp/battleship/server/BattleshipServer.java +++ b/Projekte/battleship/server/src/main/java/pp/battleship/server/BattleshipServer.java @@ -18,6 +18,7 @@ import pp.battleship.BattleshipConfig; import pp.battleship.game.server.Player; import pp.battleship.game.server.ServerGameLogic; import pp.battleship.game.server.ServerSender; +import pp.battleship.message.client.AnimationFinishedMessage; import pp.battleship.message.client.ClientMessage; import pp.battleship.message.client.MapMessage; import pp.battleship.message.client.ShootMessage; @@ -115,6 +116,7 @@ public class BattleshipServer implements MessageListener, Conn Serializer.registerClass(MapMessage.class); Serializer.registerClass(ShootMessage.class); Serializer.registerClass(EffectMessage.class); + Serializer.registerClass(AnimationFinishedMessage.class); Serializer.registerClass(Battleship.class); Serializer.registerClass(IntPoint.class); Serializer.registerClass(Shot.class); @@ -123,6 +125,7 @@ public class BattleshipServer implements MessageListener, Conn private void registerListeners() { myServer.addMessageListener(this, MapMessage.class); myServer.addMessageListener(this, ShootMessage.class); + myServer.addMessageListener(this, AnimationFinishedMessage.class); myServer.addConnectionListener(this); }