\hypertarget{classi2bpro_1_1layer_1_1_layer}{
\section{i2bpro.layer.Layer Klassenreferenz}
\label{classi2bpro_1_1layer_1_1_layer}\index{i2bpro::layer::Layer@{i2bpro::layer::Layer}}
}


Zusammengehörigkeiten von i2bpro.layer.Layer:\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=400pt]{classi2bpro_1_1layer_1_1_layer__coll__graph}
\end{center}
\end{figure}
\subsection*{Öffentliche Methoden}
\begin{DoxyCompactItemize}
\item 
void \hyperlink{classi2bpro_1_1layer_1_1_layer_a0c38ff9b72308629d06cccc58f3f45da}{run} ()
\item 
void \hyperlink{classi2bpro_1_1layer_1_1_layer_ac66dc1ea594c6613e9ed7c6486eb9954}{run} (String filename)  throws PlayListException,              FileNotFoundException, IOException, CannotReadException,             TagException, ReadOnlyFileException, InvalidAudioFrameException     
\item 
void \hyperlink{classi2bpro_1_1layer_1_1_layer_a1ad2fec5877752e2e2e823e6293baba2}{Reset} ()
\item 
void \hyperlink{classi2bpro_1_1layer_1_1_layer_ac87299d54e0bffdfec3c2f1589fdae89}{play} ()  throws LayerException, MalformedURLException,             IOException, NoPlayerException     
\item 
void \hyperlink{classi2bpro_1_1layer_1_1_layer_ac9b53e64293edd70836a12aed6d1f2c9}{play} (int new\_\-id)  throws LayerException, MalformedURLException,             IOException, NoPlayerException     
\item 
void \hyperlink{classi2bpro_1_1layer_1_1_layer_a35d1b6d1d726be132881942028359a95}{PlayerStarted} ()
\item 
boolean \hyperlink{classi2bpro_1_1layer_1_1_layer_ad96a42972d85a3b3ef37ae3a79ce9a98}{isPositionUpdate} ()
\item 
void \hyperlink{classi2bpro_1_1layer_1_1_layer_ae0fa220fe5ff95a50abcc78d62ccabc7}{setPositionUpdate} (boolean val)
\item 
void \hyperlink{classi2bpro_1_1layer_1_1_layer_a66274777d3e92911e473c821f9ac5308}{PositionUpdate} ()
\item 
void \hyperlink{classi2bpro_1_1layer_1_1_layer_a39669c652e71500b1155c6cdea956e71}{pause} ()
\item 
void \hyperlink{classi2bpro_1_1layer_1_1_layer_afa47db43dda39d1c9740d10b419a2f11}{PlayerPaused} ()
\item 
void \hyperlink{classi2bpro_1_1layer_1_1_layer_ad35435111c10fcc2aa4608e7c268fac5}{stop} ()
\item 
void \hyperlink{classi2bpro_1_1layer_1_1_layer_a172c7b2c45c8c4e31132b2bb0553b2e4}{PlayerStopped} ()
\item 
void \hyperlink{classi2bpro_1_1layer_1_1_layer_a4d72fc810b8b2ddc88d34d1ceb2bc8a5}{PlayerEndOfMedia} ()  throws LayerException, MalformedURLException,             IOException, NoPlayerException     
\item 
void \hyperlink{classi2bpro_1_1layer_1_1_layer_a669390ebdf781577d02ea5202a6ca3a3}{Prior} ()  throws LayerException, MalformedURLException,             IOException, NoPlayerException     
\item 
void \hyperlink{classi2bpro_1_1layer_1_1_layer_a31cff21b5aa867cd77701618a15bdec1}{Next} ()  throws LayerException, MalformedURLException,             IOException, NoPlayerException     
\item 
void \hyperlink{classi2bpro_1_1layer_1_1_layer_ac10433721b31034823ef1a02f35af515}{toggleMute} ()
\item 
void \hyperlink{classi2bpro_1_1layer_1_1_layer_ad496f335a26fefc4259be8eada93d281}{toggledMute} ()
\item 
void \hyperlink{classi2bpro_1_1layer_1_1_layer_a0311af3b1406d116c6e424adf980b88c}{PlayListChange} ()
\item 
void \hyperlink{classi2bpro_1_1layer_1_1_layer_aa07f6f5da4ca997398c0d01058bf3f9d}{setVolume} (int volume)
\item 
void \hyperlink{classi2bpro_1_1layer_1_1_layer_a85c93abd8fbee066bb7d33d4ced67e32}{setSave} (boolean isSave)
\item 
boolean \hyperlink{classi2bpro_1_1layer_1_1_layer_aecf759a8e5ab06108d900ad4cd80ac67}{isSave} ()
\item 
Integer \hyperlink{classi2bpro_1_1layer_1_1_layer_a3be82b566fa628fda363ac42f4e4bed4}{getID} ()
\item 
void \hyperlink{classi2bpro_1_1layer_1_1_layer_a1d229def2578037ee736ccdf8648ceb4}{DeleteMedia} ()  throws LayerException     
\item 
void \hyperlink{classi2bpro_1_1layer_1_1_layer_afea5526915ecb691d433ab4d2fa72988}{DeleteMedia} (int del\_\-id)  throws LayerException     
\item 
boolean \hyperlink{classi2bpro_1_1layer_1_1_layer_a36e2982ce673cc15039a14964abcfa45}{toggleRandom} ()  throws LayerException, MalformedURLException,             IOException, NoPlayerException     
\end{DoxyCompactItemize}
\subsection*{Öffentliche, statische Methoden}
\begin{DoxyCompactItemize}
\item 
static \hyperlink{classi2bpro_1_1layer_1_1_layer}{Layer} \hyperlink{classi2bpro_1_1layer_1_1_layer_a09adfe6565634f0688d992f3c30a70b7}{getInstance} ()
\end{DoxyCompactItemize}
\subsection*{Paketattribute}
\begin{DoxyCompactItemize}
\item 
\hypertarget{classi2bpro_1_1layer_1_1_layer_a4851d1b4d722dd85ef396b9e77090ea9}{
int {\bfseries first\_\-id}}
\label{classi2bpro_1_1layer_1_1_layer_a4851d1b4d722dd85ef396b9e77090ea9}

\end{DoxyCompactItemize}


\subsection{Ausführliche Beschreibung}
Projektarbeit Informatik IIb -\/ Audioplayer \par
 Klasse: \hyperlink{classi2bpro_1_1layer_1_1_layer}{Layer}

Die Klasse \hyperlink{classi2bpro_1_1layer_1_1_layer}{Layer} ist für die gesamte grafische Oberfläche des Audioplayers verantwortlich und dient sozusagen als Kontrollzentrum. Sie ist von der Klasse JFrame abgeleitet. Es werden für die Darstellung der Elemente des Audioplayers verschiedene Panels angelegt und mit diversen Layouts versehen. Die Klasse \hyperlink{classi2bpro_1_1layer_1_1_layer}{Layer} selber ist in ein BorderLayout eingebetet.

Dabei werden die Unterpanels entsprechend ihrer Ausrichtung im Hauptpanel benannt. So gibt es das EastPanel welches den Lautstärkeregler beinhaltet, das CenterPanel welches die Wiedergabeliste beinhaltet und das Soutpanel, welches die Button und die Zeitsteuerung beinhaltet. Wie zu erkennen ist, sind nicht alle Felder des BorderLayouts belegt. Somit gebe es noch Möglichkeiten das Hauptpannel zu erweitern.

Damit keine weiteren Instanzen der Klasse \hyperlink{classi2bpro_1_1layer_1_1_layer}{Layer} im Audioplayer existieren, wurde die Klasse nach Singleton-\/Pattern programmiert.

\begin{DoxyVersion}{Version}
1.0.0 
\end{DoxyVersion}
\begin{DoxyDate}{Datum}
31.12.2010 
\end{DoxyDate}
\begin{DoxyAuthor}{Autor}
Jürgen Döffinger 
\end{DoxyAuthor}


Definiert in Zeile 56 der Datei Layer.java.



\subsection{Dokumentation der Elementfunktionen}
\hypertarget{classi2bpro_1_1layer_1_1_layer_a1d229def2578037ee736ccdf8648ceb4}{
\index{i2bpro::layer::Layer@{i2bpro::layer::Layer}!DeleteMedia@{DeleteMedia}}
\index{DeleteMedia@{DeleteMedia}!i2bpro::layer::Layer@{i2bpro::layer::Layer}}
\subsubsection[{DeleteMedia}]{\setlength{\rightskip}{0pt plus 5cm}void i2bpro.layer.Layer.DeleteMedia (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)  throws {\bf LayerException}     }}
\label{classi2bpro_1_1layer_1_1_layer_a1d229def2578037ee736ccdf8648ceb4}
Die Methode DeleteMedia startet den Löschvorgang des aktuell in der Wiedergabeliste (JTable/CenterPanel) ausgewählten Audiotitels.


\begin{DoxyExceptions}{Ausnahmebehandlung}
{\em LayerException} & \\
\hline
\end{DoxyExceptions}


Definiert in Zeile 700 der Datei Layer.java.

\hypertarget{classi2bpro_1_1layer_1_1_layer_afea5526915ecb691d433ab4d2fa72988}{
\index{i2bpro::layer::Layer@{i2bpro::layer::Layer}!DeleteMedia@{DeleteMedia}}
\index{DeleteMedia@{DeleteMedia}!i2bpro::layer::Layer@{i2bpro::layer::Layer}}
\subsubsection[{DeleteMedia}]{\setlength{\rightskip}{0pt plus 5cm}void i2bpro.layer.Layer.DeleteMedia (
\begin{DoxyParamCaption}
\item[{int}]{ del\_\-id}
\end{DoxyParamCaption}
)  throws {\bf LayerException}     }}
\label{classi2bpro_1_1layer_1_1_layer_afea5526915ecb691d433ab4d2fa72988}
Diese DeleteMedia Methode löst den Löschvorgang für den im Paramter del\_\-id angegebenen Audiotitels aus.

Dazu wird geprüft ob del\_\-id größer als 0 ist, da alle Audiotitel eine Identifikationsnummer $>$= 0 aufweisen. Ist dies also nicht der Fall, so wird eine Exception ausgelöst.

Anschließend wird geprüft, ob der zu löschende Audiotitel gerade abgespielt wird. Ist dies der Fall wird das Abspielen gestoppt.

Anschließend wird das Löschen ausgelöst. Der Audiotitel wird dabei lediglich aus der Wiedergabeliste gelöscht, jedoch nicht von seinem physikalischen Speicherort.

Danach wird geprüft ob der aktuelle Audiotitel vor oder nach dem gelöschten Audiotitel in der Wiedergabeliste kam und entsprechend wird das Attribut id angepasst und die Selektrierung im Centerpanel (JTable) geändert.


\begin{DoxyParams}{Parameter}
{\em del\_\-id} & Identifikationsnummer des zu löschenden Audiotitels \\
\hline
\end{DoxyParams}

\begin{DoxyExceptions}{Ausnahmebehandlung}
{\em LayerException} & \\
\hline
\end{DoxyExceptions}


Definiert in Zeile 731 der Datei Layer.java.

\hypertarget{classi2bpro_1_1layer_1_1_layer_a3be82b566fa628fda363ac42f4e4bed4}{
\index{i2bpro::layer::Layer@{i2bpro::layer::Layer}!getID@{getID}}
\index{getID@{getID}!i2bpro::layer::Layer@{i2bpro::layer::Layer}}
\subsubsection[{getID}]{\setlength{\rightskip}{0pt plus 5cm}Integer i2bpro.layer.Layer.getID (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)}}
\label{classi2bpro_1_1layer_1_1_layer_a3be82b566fa628fda363ac42f4e4bed4}
Die Methode getID gibt die Identifikationsnummer des aktuellen Audiotitels zurück.

\begin{DoxyReturn}{Rückgabe}
Identifikationsnummer des aktuellen Audiotitels 
\end{DoxyReturn}


Definiert in Zeile 689 der Datei Layer.java.

\hypertarget{classi2bpro_1_1layer_1_1_layer_a09adfe6565634f0688d992f3c30a70b7}{
\index{i2bpro::layer::Layer@{i2bpro::layer::Layer}!getInstance@{getInstance}}
\index{getInstance@{getInstance}!i2bpro::layer::Layer@{i2bpro::layer::Layer}}
\subsubsection[{getInstance}]{\setlength{\rightskip}{0pt plus 5cm}static {\bf Layer} i2bpro.layer.Layer.getInstance (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}static\mbox{]}}}}
\label{classi2bpro_1_1layer_1_1_layer_a09adfe6565634f0688d992f3c30a70b7}
Die Methode getInstance gibt die einzige Instanz der Klasse \hyperlink{classi2bpro_1_1layer_1_1_layer}{Layer} zurück und macht die MEthoden des Layers somit verfügbar.

\begin{DoxyReturn}{Rückgabe}
einzigste Instanz der Klasse \hyperlink{classi2bpro_1_1layer_1_1_layer}{Layer}. 
\end{DoxyReturn}


Definiert in Zeile 141 der Datei Layer.java.

\hypertarget{classi2bpro_1_1layer_1_1_layer_ad96a42972d85a3b3ef37ae3a79ce9a98}{
\index{i2bpro::layer::Layer@{i2bpro::layer::Layer}!isPositionUpdate@{isPositionUpdate}}
\index{isPositionUpdate@{isPositionUpdate}!i2bpro::layer::Layer@{i2bpro::layer::Layer}}
\subsubsection[{isPositionUpdate}]{\setlength{\rightskip}{0pt plus 5cm}boolean i2bpro.layer.Layer.isPositionUpdate (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)}}
\label{classi2bpro_1_1layer_1_1_layer_ad96a42972d85a3b3ef37ae3a79ce9a98}
Die Methode isPostionUpdate gibt den Status wieder, ob die Abspielposition sich geändert hat und es versucht wird, den Positionsmarker des JSlider-\/Objektes zu verändern, welches die Abspielposition anzeigt.

\begin{DoxyReturn}{Rückgabe}
booleascher Ausdruck, der den Status der Abspielpositionsänderung angibt. 
\end{DoxyReturn}


Definiert in Zeile 356 der Datei Layer.java.

\hypertarget{classi2bpro_1_1layer_1_1_layer_aecf759a8e5ab06108d900ad4cd80ac67}{
\index{i2bpro::layer::Layer@{i2bpro::layer::Layer}!isSave@{isSave}}
\index{isSave@{isSave}!i2bpro::layer::Layer@{i2bpro::layer::Layer}}
\subsubsection[{isSave}]{\setlength{\rightskip}{0pt plus 5cm}boolean i2bpro.layer.Layer.isSave (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)}}
\label{classi2bpro_1_1layer_1_1_layer_aecf759a8e5ab06108d900ad4cd80ac67}
Mit der Methode kann abgefragt werden, ob der Save Mode gesetzt ist.

\begin{DoxyReturn}{Rückgabe}
booleascher Ausdruck der Aussagt, ob der Save Mode gesetzt ist oder nicht. 
\end{DoxyReturn}


Definiert in Zeile 678 der Datei Layer.java.

\hypertarget{classi2bpro_1_1layer_1_1_layer_a31cff21b5aa867cd77701618a15bdec1}{
\index{i2bpro::layer::Layer@{i2bpro::layer::Layer}!Next@{Next}}
\index{Next@{Next}!i2bpro::layer::Layer@{i2bpro::layer::Layer}}
\subsubsection[{Next}]{\setlength{\rightskip}{0pt plus 5cm}void i2bpro.layer.Layer.Next (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)  throws {\bf LayerException}, MalformedURLException,             IOException, NoPlayerException     }}
\label{classi2bpro_1_1layer_1_1_layer_a31cff21b5aa867cd77701618a15bdec1}
Die Methode Next versucht den nächsten Audiotitel abzuspielen. Dazu wird geprüft, ob der Audioplayer im Zufallsmodus ist. Ist dies der Fall, so schaut die Methode in der HashMap nachher nach, welcher der nächste Audiotitel ist versucht mit der MEthode play das Abspielen zu starten. Wurde jedoch kein Titel gefunden, so wird die Methode nextRandomTitel aufgerufen, um einen zu generieren.

Befindet sich der Audioplayer nicht im Zufallsmodus, so wird versucht den nächste Audiotitel in der Wiedergabeliste abzuspielen. Ist der aktuelle Titel der Letzte in der Wiedergabeliste, so wird der erste Titel zum aktuellen wird gemacht und es wird mithilfe der Methode play versucht diesen abzuspielen.


\begin{DoxyExceptions}{Ausnahmebehandlung}
{\em LayerException} & \\
\hline
{\em MalformedURLException} & \\
\hline
{\em IOException} & \\
\hline
{\em NoPlayerException} & \\
\hline
\end{DoxyExceptions}


Definiert in Zeile 562 der Datei Layer.java.

\hypertarget{classi2bpro_1_1layer_1_1_layer_a39669c652e71500b1155c6cdea956e71}{
\index{i2bpro::layer::Layer@{i2bpro::layer::Layer}!pause@{pause}}
\index{pause@{pause}!i2bpro::layer::Layer@{i2bpro::layer::Layer}}
\subsubsection[{pause}]{\setlength{\rightskip}{0pt plus 5cm}void i2bpro.layer.Layer.pause (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)}}
\label{classi2bpro_1_1layer_1_1_layer_a39669c652e71500b1155c6cdea956e71}
Die Methode pause wird aufgerufen, um dem Player mitzuteilen, dass er das Abspielen des Audiotitels pausieren soll. Dazu wird geprüft, ob der Player überhaupt einen Audiotitel abspielt (Status 1=Play). 

Definiert in Zeile 403 der Datei Layer.java.

\hypertarget{classi2bpro_1_1layer_1_1_layer_ac87299d54e0bffdfec3c2f1589fdae89}{
\index{i2bpro::layer::Layer@{i2bpro::layer::Layer}!play@{play}}
\index{play@{play}!i2bpro::layer::Layer@{i2bpro::layer::Layer}}
\subsubsection[{play}]{\setlength{\rightskip}{0pt plus 5cm}void i2bpro.layer.Layer.play (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)  throws {\bf LayerException}, MalformedURLException,             IOException, NoPlayerException     }}
\label{classi2bpro_1_1layer_1_1_layer_ac87299d54e0bffdfec3c2f1589fdae89}
Die Methode play wird ausgeführt, wenn kein bestimmter Audiotitel abgespielt werden soll. Somit wird der im Attribut id gespeicherte Audiotitel abgespielt, es sei denn der Player befindet sich nicht in den Modis 0=Stop oder 1=Play, dann wird die id auf den in der Wiedergabeliste ausgewählten Titel gesetzt. Sollte dort kein Audiotitel ausgewählt worden sein, dann wird dies über den dadurch übergebenen Wert in der Methode StartPlay ausgewertet.


\begin{DoxyExceptions}{Ausnahmebehandlung}
{\em LayerException} & \\
\hline
{\em MalformedURLException} & \\
\hline
{\em IOException} & \\
\hline
{\em NoPlayerException} & \\
\hline
\end{DoxyExceptions}


Definiert in Zeile 230 der Datei Layer.java.

\hypertarget{classi2bpro_1_1layer_1_1_layer_ac9b53e64293edd70836a12aed6d1f2c9}{
\index{i2bpro::layer::Layer@{i2bpro::layer::Layer}!play@{play}}
\index{play@{play}!i2bpro::layer::Layer@{i2bpro::layer::Layer}}
\subsubsection[{play}]{\setlength{\rightskip}{0pt plus 5cm}void i2bpro.layer.Layer.play (
\begin{DoxyParamCaption}
\item[{int}]{ new\_\-id}
\end{DoxyParamCaption}
)  throws {\bf LayerException}, MalformedURLException,             IOException, NoPlayerException     }}
\label{classi2bpro_1_1layer_1_1_layer_ac9b53e64293edd70836a12aed6d1f2c9}
Diese MEthode play erwartet als Parameter eine id die auf einen bestimmten Audiotitel in der Wiedergabeliste zeigt. Dieser Audiotitel ist abzuspielen. Dazu wird der Wert new\_\-id dem Attribut id übergeben und die Methode StartPlay aufgerufen.


\begin{DoxyParams}{Parameter}
{\em new\_\-id} & PlayList-\/Identifikationsnummer des abzuspielenden Audiotitels\\
\hline
\end{DoxyParams}

\begin{DoxyExceptions}{Ausnahmebehandlung}
{\em LayerException} & \\
\hline
{\em MalformedURLException} & \\
\hline
{\em IOException} & \\
\hline
{\em NoPlayerException} & \\
\hline
\end{DoxyExceptions}


Definiert in Zeile 256 der Datei Layer.java.

\hypertarget{classi2bpro_1_1layer_1_1_layer_a4d72fc810b8b2ddc88d34d1ceb2bc8a5}{
\index{i2bpro::layer::Layer@{i2bpro::layer::Layer}!PlayerEndOfMedia@{PlayerEndOfMedia}}
\index{PlayerEndOfMedia@{PlayerEndOfMedia}!i2bpro::layer::Layer@{i2bpro::layer::Layer}}
\subsubsection[{PlayerEndOfMedia}]{\setlength{\rightskip}{0pt plus 5cm}void i2bpro.layer.Layer.PlayerEndOfMedia (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)  throws {\bf LayerException}, MalformedURLException,             IOException, NoPlayerException     }}
\label{classi2bpro_1_1layer_1_1_layer_a4d72fc810b8b2ddc88d34d1ceb2bc8a5}
Hat er Audiotitel, dass Ende des Abspielens erreicht und wurde kein Stoppen ausgelöst, so teilt der Player das beenden des Abspielens, aufgrund des Erreichens des Endes des Audiotitels, über die Methode PlayerEndOfMedia mit.

Die Methode prüft nun sich der Audioplayer im Zufallsmodus ist oder nicht. Ist er im Zufallsmodus, so wird die Methode nextRandomTitel aufgerufen. Ansonsten wird versucht den nächsten Titel der Wiedergabeliste zum aktuellen Titel zu machen. Ist dies Möglich, so wird durch Aufruf der MEthode play, dass abspielen des Audiotitels gestartet.


\begin{DoxyExceptions}{Ausnahmebehandlung}
{\em LayerException} & \\
\hline
{\em MalformedURLException} & \\
\hline
{\em IOException} & \\
\hline
{\em NoPlayerException} & \\
\hline
\end{DoxyExceptions}


Definiert in Zeile 477 der Datei Layer.java.

\hypertarget{classi2bpro_1_1layer_1_1_layer_afa47db43dda39d1c9740d10b419a2f11}{
\index{i2bpro::layer::Layer@{i2bpro::layer::Layer}!PlayerPaused@{PlayerPaused}}
\index{PlayerPaused@{PlayerPaused}!i2bpro::layer::Layer@{i2bpro::layer::Layer}}
\subsubsection[{PlayerPaused}]{\setlength{\rightskip}{0pt plus 5cm}void i2bpro.layer.Layer.PlayerPaused (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)}}
\label{classi2bpro_1_1layer_1_1_layer_afa47db43dda39d1c9740d10b419a2f11}
Mit dieser MEthode kann der Oberfläche (\hyperlink{classi2bpro_1_1layer_1_1_layer}{Layer}) mitgeteilt werden, dass der Versuch den Player pausieren zu lassen, erfolgreich war. Die MEthode teilt dies dann den entsprechenden Panels mit, damit diese die Panels entsprechend verändern können. 

Definiert in Zeile 418 der Datei Layer.java.

\hypertarget{classi2bpro_1_1layer_1_1_layer_a35d1b6d1d726be132881942028359a95}{
\index{i2bpro::layer::Layer@{i2bpro::layer::Layer}!PlayerStarted@{PlayerStarted}}
\index{PlayerStarted@{PlayerStarted}!i2bpro::layer::Layer@{i2bpro::layer::Layer}}
\subsubsection[{PlayerStarted}]{\setlength{\rightskip}{0pt plus 5cm}void i2bpro.layer.Layer.PlayerStarted (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)}}
\label{classi2bpro_1_1layer_1_1_layer_a35d1b6d1d726be132881942028359a95}
Die Methode PlayerStarted wird von der Instanz Player aufgerufen, wenn der Startvorgang zum abspielen eines Audiotitels erfolgreich war. Die Methode übergibt diese Meldung nun an die Unterpanels weiter und setzt das old\_\-id Attribut auf die aktuelle id und geht wieder aus dem Status isPlayerStarting raus. 

Definiert in Zeile 333 der Datei Layer.java.

\hypertarget{classi2bpro_1_1layer_1_1_layer_a172c7b2c45c8c4e31132b2bb0553b2e4}{
\index{i2bpro::layer::Layer@{i2bpro::layer::Layer}!PlayerStopped@{PlayerStopped}}
\index{PlayerStopped@{PlayerStopped}!i2bpro::layer::Layer@{i2bpro::layer::Layer}}
\subsubsection[{PlayerStopped}]{\setlength{\rightskip}{0pt plus 5cm}void i2bpro.layer.Layer.PlayerStopped (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)}}
\label{classi2bpro_1_1layer_1_1_layer_a172c7b2c45c8c4e31132b2bb0553b2e4}
Mit der MEthode PlayerStopped teilt der Player mit, dass der Versuch das Abspielen eines Audiotitels zu stoppen, erfolgreich war. Die Methode gibt dies dann an die entsprechenden Panels weiter, so dass diese die Panels entsprechend einstellen können. 

Definiert in Zeile 448 der Datei Layer.java.

\hypertarget{classi2bpro_1_1layer_1_1_layer_a0311af3b1406d116c6e424adf980b88c}{
\index{i2bpro::layer::Layer@{i2bpro::layer::Layer}!PlayListChange@{PlayListChange}}
\index{PlayListChange@{PlayListChange}!i2bpro::layer::Layer@{i2bpro::layer::Layer}}
\subsubsection[{PlayListChange}]{\setlength{\rightskip}{0pt plus 5cm}void i2bpro.layer.Layer.PlayListChange (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)}}
\label{classi2bpro_1_1layer_1_1_layer_a0311af3b1406d116c6e424adf980b88c}
Mit der Methode PlayListChange wird das Ändern der Wiedergabeliste mitgeteilt. Die Methode teilt dies dem CenterPanel über die gleichnamige Methode mit, welches dann das Panel aktualisiert.

Anschließend wird geprüft ob die Wiedergabeliste Audiotitel enthält. Enthält sie keine Audiotitel wird die id auf -\/1 gesetzt, um anzuzeigen, dass kein Audiotitel ausgewählt ist. Gleichzeitig, wird der Menüeintrag \char`\"{}Audiotitel löschen\char`\"{} anwählbar oder nicht anwählbar gesetzt. 

Definiert in Zeile 620 der Datei Layer.java.

\hypertarget{classi2bpro_1_1layer_1_1_layer_a66274777d3e92911e473c821f9ac5308}{
\index{i2bpro::layer::Layer@{i2bpro::layer::Layer}!PositionUpdate@{PositionUpdate}}
\index{PositionUpdate@{PositionUpdate}!i2bpro::layer::Layer@{i2bpro::layer::Layer}}
\subsubsection[{PositionUpdate}]{\setlength{\rightskip}{0pt plus 5cm}void i2bpro.layer.Layer.PositionUpdate (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)}}
\label{classi2bpro_1_1layer_1_1_layer_a66274777d3e92911e473c821f9ac5308}
Mit der MEthode PositionsUpdate wird dem SouthPanel mitgeteilt, dass sich im Player die Abspielposition geändert hat und somit die entsprechenden Elemente im Panel aktuallisiert werden müssen. Entsprechend ruft die Methode Funktionen des Panels auf. Dazu wird der Status PositionsUpdate gesetzt, damit die Elemente wissen, dass die Änderung vom Player und nicht vom User kommt. Würde sie vom User stammen, so müssten die Elemente ihrerseits dem Player diese Änderung mitteilen. Würde der Status also nicht gesetzt werden, so würde eine Endlosschleife entstehen. 

Definiert in Zeile 387 der Datei Layer.java.

\hypertarget{classi2bpro_1_1layer_1_1_layer_a669390ebdf781577d02ea5202a6ca3a3}{
\index{i2bpro::layer::Layer@{i2bpro::layer::Layer}!Prior@{Prior}}
\index{Prior@{Prior}!i2bpro::layer::Layer@{i2bpro::layer::Layer}}
\subsubsection[{Prior}]{\setlength{\rightskip}{0pt plus 5cm}void i2bpro.layer.Layer.Prior (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)  throws {\bf LayerException}, MalformedURLException,             IOException, NoPlayerException     }}
\label{classi2bpro_1_1layer_1_1_layer_a669390ebdf781577d02ea5202a6ca3a3}
Durch Aufruf der Methode Prior wird versucht den vorherigen Titel abzuspielen.

Zunächst wird geprüft, ob die Wiedergabelliste Audiotitel enthält. Enthält die Liste Audiotitel, wird nun geprüft ob der Audioplayer im Zufallsmodus ist. Ist dies der Fall so wird in der HashMap vorher der vorherige Audiotitel ausgelesen und der Methode play zum abspielen übergeben. War der aktuelle Titel jedoch der Erste, so wird keine Aktion ausgelöst.

Ist der Audioplayer nicht im Zufallsmodus, so wird versucht den vorherige Titel abzuspielen. Ist der aktuelle Titel der Erste in der Wiedergabelliste, so wird der letzte Audiotitel der List zum aktuellen gesetzt und das Abspielen dieses gestartet.


\begin{DoxyExceptions}{Ausnahmebehandlung}
{\em LayerException} & \\
\hline
{\em MalformedURLException} & \\
\hline
{\em IOException} & \\
\hline
{\em NoPlayerException} & \\
\hline
\end{DoxyExceptions}


Definiert in Zeile 521 der Datei Layer.java.

\hypertarget{classi2bpro_1_1layer_1_1_layer_a1ad2fec5877752e2e2e823e6293baba2}{
\index{i2bpro::layer::Layer@{i2bpro::layer::Layer}!Reset@{Reset}}
\index{Reset@{Reset}!i2bpro::layer::Layer@{i2bpro::layer::Layer}}
\subsubsection[{Reset}]{\setlength{\rightskip}{0pt plus 5cm}void i2bpro.layer.Layer.Reset (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)}}
\label{classi2bpro_1_1layer_1_1_layer_a1ad2fec5877752e2e2e823e6293baba2}
Die Methode Reset wird von der Klasse ErrorMsg aufgerufen, um den Audioplayer nach einer Exception zurückzusetzen, in einen stabilen Zustand. 

Definiert in Zeile 205 der Datei Layer.java.

\hypertarget{classi2bpro_1_1layer_1_1_layer_a0c38ff9b72308629d06cccc58f3f45da}{
\index{i2bpro::layer::Layer@{i2bpro::layer::Layer}!run@{run}}
\index{run@{run}!i2bpro::layer::Layer@{i2bpro::layer::Layer}}
\subsubsection[{run}]{\setlength{\rightskip}{0pt plus 5cm}void i2bpro.layer.Layer.run (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)}}
\label{classi2bpro_1_1layer_1_1_layer_a0c38ff9b72308629d06cccc58f3f45da}
Die Methode run berechnet anhand der Bildschirmauflösung die Auflösung des Fensters. Dabei wird die Größe des Fensters auf 75\% der Bildschirmauflösung festgelegt. Die Positions des Fensters wird ebenfalls aus der Bildschirmauflösung berechnet. So dass das Fenster mittig erscheint. Nach den Berechnungen wird das Fenster sichtbar geschaltet. 

Definiert in Zeile 155 der Datei Layer.java.

\hypertarget{classi2bpro_1_1layer_1_1_layer_ac66dc1ea594c6613e9ed7c6486eb9954}{
\index{i2bpro::layer::Layer@{i2bpro::layer::Layer}!run@{run}}
\index{run@{run}!i2bpro::layer::Layer@{i2bpro::layer::Layer}}
\subsubsection[{run}]{\setlength{\rightskip}{0pt plus 5cm}void i2bpro.layer.Layer.run (
\begin{DoxyParamCaption}
\item[{String}]{ filename}
\end{DoxyParamCaption}
)  throws {\bf PlayListException},              FileNotFoundException, IOException, CannotReadException,             TagException, ReadOnlyFileException, InvalidAudioFrameException     }}
\label{classi2bpro_1_1layer_1_1_layer_ac66dc1ea594c6613e9ed7c6486eb9954}
Dieser Methode run wird ein Pfad zu einer Wiedergabeliste übergeben. Bevor nun die andere Methode run ausgeführt wird, wird die Pfadangabe der PlayList-\/Instanz übergeben. Des Weiteren wird dem CenterPanel mitgeteilt, dass sich die PlayList geändert hat und das CenterPanel die Tabelle (JTable) neu zeichnen muss.


\begin{DoxyParams}{Parameter}
{\em filename} & Pfadangabe zu einer Wiedergabeliste\\
\hline
\end{DoxyParams}

\begin{DoxyExceptions}{Ausnahmebehandlung}
{\em PlayListException} & \\
\hline
{\em FileNotFoundException} & \\
\hline
{\em IOException} & \\
\hline
{\em CannotReadException} & \\
\hline
{\em TagException} & \\
\hline
{\em ReadOnlyFileException} & \\
\hline
{\em InvalidAudioFrameException} & \\
\hline
\end{DoxyExceptions}


Definiert in Zeile 187 der Datei Layer.java.

\hypertarget{classi2bpro_1_1layer_1_1_layer_ae0fa220fe5ff95a50abcc78d62ccabc7}{
\index{i2bpro::layer::Layer@{i2bpro::layer::Layer}!setPositionUpdate@{setPositionUpdate}}
\index{setPositionUpdate@{setPositionUpdate}!i2bpro::layer::Layer@{i2bpro::layer::Layer}}
\subsubsection[{setPositionUpdate}]{\setlength{\rightskip}{0pt plus 5cm}void i2bpro.layer.Layer.setPositionUpdate (
\begin{DoxyParamCaption}
\item[{boolean}]{ val}
\end{DoxyParamCaption}
)}}
\label{classi2bpro_1_1layer_1_1_layer_ae0fa220fe5ff95a50abcc78d62ccabc7}
Mithilfe der Methode setPositionUpdate kann der Status gesetzt werden, welcher den Versuch der Änderung der Abspielposition im entsprechenden Panel angibt.


\begin{DoxyParams}{Parameter}
{\em val} & booleascher Ausdruck für den Status der Abspielpositionsänderung \\
\hline
\end{DoxyParams}


Definiert in Zeile 370 der Datei Layer.java.

\hypertarget{classi2bpro_1_1layer_1_1_layer_a85c93abd8fbee066bb7d33d4ced67e32}{
\index{i2bpro::layer::Layer@{i2bpro::layer::Layer}!setSave@{setSave}}
\index{setSave@{setSave}!i2bpro::layer::Layer@{i2bpro::layer::Layer}}
\subsubsection[{setSave}]{\setlength{\rightskip}{0pt plus 5cm}void i2bpro.layer.Layer.setSave (
\begin{DoxyParamCaption}
\item[{boolean}]{ isSave}
\end{DoxyParamCaption}
)}}
\label{classi2bpro_1_1layer_1_1_layer_a85c93abd8fbee066bb7d33d4ced67e32}
Mit der Methode wird der Änderungsstatus der Wiedergabeliste gesetzt. Dazu ist mittels des Parameters isSave mitzuteilen, ob sich die Wiedergabeliste oder Werte der Wiedergabeliste geändert haben. Ist dies der Fall so wird der SaveMode eingeschaltet. Dies bedeutet, dass das Speichern der Wiedergabeliste freigeschaltet wird und beim beenden des Audioplayers der User gefragt wird, ob er die Änderungen speichern möchte.


\begin{DoxyParams}{Parameter}
{\em isSave} & booleascher Wert der den Save Mode setzt. \\
\hline
\end{DoxyParams}


Definiert in Zeile 662 der Datei Layer.java.

\hypertarget{classi2bpro_1_1layer_1_1_layer_aa07f6f5da4ca997398c0d01058bf3f9d}{
\index{i2bpro::layer::Layer@{i2bpro::layer::Layer}!setVolume@{setVolume}}
\index{setVolume@{setVolume}!i2bpro::layer::Layer@{i2bpro::layer::Layer}}
\subsubsection[{setVolume}]{\setlength{\rightskip}{0pt plus 5cm}void i2bpro.layer.Layer.setVolume (
\begin{DoxyParamCaption}
\item[{int}]{ volume}
\end{DoxyParamCaption}
)}}
\label{classi2bpro_1_1layer_1_1_layer_aa07f6f5da4ca997398c0d01058bf3f9d}
Die Methode setVolume kann dazu aufgerufen werden, um die Lautstärke zu verändern. Dazu ist über den Parameter volume die neue Lautstärke der Methode mitzuteilen.


\begin{DoxyParams}{Parameter}
{\em volume} & Lautstärkewert zwischen 0 und 100. \\
\hline
\end{DoxyParams}


Definiert in Zeile 642 der Datei Layer.java.

\hypertarget{classi2bpro_1_1layer_1_1_layer_ad35435111c10fcc2aa4608e7c268fac5}{
\index{i2bpro::layer::Layer@{i2bpro::layer::Layer}!stop@{stop}}
\index{stop@{stop}!i2bpro::layer::Layer@{i2bpro::layer::Layer}}
\subsubsection[{stop}]{\setlength{\rightskip}{0pt plus 5cm}void i2bpro.layer.Layer.stop (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)}}
\label{classi2bpro_1_1layer_1_1_layer_ad35435111c10fcc2aa4608e7c268fac5}
Mit der Methode stop wird das Stoppen des Abspielens eines Audiotitels im Player ausgelöst. Dazu wird vorher geprüft, ob der Player überhaupt einen Audiotitel abspielt. 

Definiert in Zeile 433 der Datei Layer.java.

\hypertarget{classi2bpro_1_1layer_1_1_layer_ad496f335a26fefc4259be8eada93d281}{
\index{i2bpro::layer::Layer@{i2bpro::layer::Layer}!toggledMute@{toggledMute}}
\index{toggledMute@{toggledMute}!i2bpro::layer::Layer@{i2bpro::layer::Layer}}
\subsubsection[{toggledMute}]{\setlength{\rightskip}{0pt plus 5cm}void i2bpro.layer.Layer.toggledMute (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)}}
\label{classi2bpro_1_1layer_1_1_layer_ad496f335a26fefc4259be8eada93d281}
Über die Methode toggledMute teilt der Player mit, dass sich der Mute Mode geändert hat. Diese Meldung wird den entsprechenden Panels mitgeteilt, welche die Panels entsprechend des Mute Mode abändern. 

Definiert in Zeile 600 der Datei Layer.java.

\hypertarget{classi2bpro_1_1layer_1_1_layer_ac10433721b31034823ef1a02f35af515}{
\index{i2bpro::layer::Layer@{i2bpro::layer::Layer}!toggleMute@{toggleMute}}
\index{toggleMute@{toggleMute}!i2bpro::layer::Layer@{i2bpro::layer::Layer}}
\subsubsection[{toggleMute}]{\setlength{\rightskip}{0pt plus 5cm}void i2bpro.layer.Layer.toggleMute (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)}}
\label{classi2bpro_1_1layer_1_1_layer_ac10433721b31034823ef1a02f35af515}
Die Methode toggleMute ruft widerum die Methode toggleMute der Instanz Player auf. Diese stellt entsprechend den Mute Mode ein oder aus. 

Definiert in Zeile 586 der Datei Layer.java.

\hypertarget{classi2bpro_1_1layer_1_1_layer_a36e2982ce673cc15039a14964abcfa45}{
\index{i2bpro::layer::Layer@{i2bpro::layer::Layer}!toggleRandom@{toggleRandom}}
\index{toggleRandom@{toggleRandom}!i2bpro::layer::Layer@{i2bpro::layer::Layer}}
\subsubsection[{toggleRandom}]{\setlength{\rightskip}{0pt plus 5cm}boolean i2bpro.layer.Layer.toggleRandom (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)  throws {\bf LayerException}, MalformedURLException,             IOException, NoPlayerException     }}
\label{classi2bpro_1_1layer_1_1_layer_a36e2982ce673cc15039a14964abcfa45}
Mit der Methode toggleRandom kann der Zufallsmodus ein-\/ oder abgeschaltet werden. Jenachdem in welchem Modus sich der Audioplayer befindet. Anschließend wird der Modus zurückgegeben.

\begin{DoxyReturn}{Rückgabe}
booleascher Ausdruck über den Zufallsmodus.
\end{DoxyReturn}

\begin{DoxyExceptions}{Ausnahmebehandlung}
{\em LayerException} & \\
\hline
{\em MalformedURLException} & \\
\hline
{\em IOException} & \\
\hline
{\em NoPlayerException} & \\
\hline
\end{DoxyExceptions}


Definiert in Zeile 756 der Datei Layer.java.



Die Dokumentation für diese Klasse wurde erzeugt aufgrund der Datei:\begin{DoxyCompactItemize}
\item 
C:/Projekte/I2BPro/src/i2bpro/layer/Layer.java\end{DoxyCompactItemize}
