<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">% Messtechnik Praktikum G
% Vorbereitung Set 4.12 SS2011
% Hauptdokument
%\documentclass[a4paper,12pt]{article}
\documentclass{article}


% Packete einbinden
\usepackage[ngerman]{babel}
\usepackage[utf8]{inputenc} 
\usepackage[pdftex]{graphicx}
\usepackage{amsmath, amsthm, amssymb}
\usepackage{geometry}
\usepackage{fancyhdr}
\usepackage{lmodern}
\usepackage{graphicx} 
\usepackage{subfigure} 


% Formatierungen festlegen
%\baselineskip20pt %Zeilenabstand
\setlength{\parindent}{0pt}
\setlength{\parskip}{\baselineskip}
\bibliographystyle{plainnat}
\geometry{
	outer=23mm,
	inner=22mm
}
%\pagestyle{fancy}



%Schriftart
\fontfamily{ptm}\selectfont %Schriftart Times



% Trennverhalten
%\hyphenpenalty=1000
\hyphenation{}

%\textsc

\begin{document} 

\setcounter{secnumdepth}{5}

\part{Packages und Klassen}
In den folgenden Abschnitten sollen die Packeages und die darin enthaltenen Klassen und Methoden nÃ¤her erlÃ¤utert werden.

\section{Package de.BibTexMaker}
Das Package \emph{de.BibTexMaker} beinhaltet das gesamte Programm \textsc{BibTexMaker}. Die darin enthaltenen Packages und Klassen werden im folgenden aufgezÃ¤hlt und deren Funktion erlÃ¤utert.
\begin{figure} [!ht] 
	\centering 
	\includegraphics[scale=0.5]{./Images/BibTexMaker.jpg}
	\caption{Klassendiagramm Package \emph{de.BibTexMaker}}
	\label{fig:./Images/BibTexMaker.jpg} 
\end{figure}

\subsection{Klasse BibTexMaker}
Die Klasse \emph{BibTexMaker} beinhaltet die Methoden \emph{main, createFile} und \emph{getFile}. Die Klasse bildet den Einstieg in das Programm \textsc{BibTexMaker}

Die Methode \emph{main} ist der Einstieg in das Programm \textsc{BibTexMaker}. Sie prÃ¼ft ob Argumente Ã¼bergeben wurden und reagiert entsprechend. Wurde ein Dateiname mit Pfad fÃ¼r eine BibTexMaker-Datenbank-Datei Ã¼bergeben, so veranlasst die Methode das Laden dieser. Ansonsten wird eine leere Datenbank (./library.xml) angelegt. Dabei greift die Methode \emph{main} auf die Methode \emph{getFile} zu und Ã¼bergibt dieser die Argumentenliste.

Die Methode \emph{getFile} liest die dem Programm Ã¼bergebenen Parameter aus und wertet den Parameter \emph{-f} aus und gibt den Dateinamen mit Pfadangabe zurÃ¼ck. Der Parameter \emph{-f} ist dafÃ¼r gedacht eine bereits vorhanden Datenbankdatei direkt beim Programmstart zu laden. Wurde kein Parameter \emph{-f} Ã¼bergeben, so wird der MEthode \emph{main} ein leerer String zurÃ¼ckgegeben.

Die Methode \emph{main} prÃ¼ft nun ob die Datei exisitert. Existiert die Datei noch nicht wird diese erzeugt. Dazu wird die Methode \emph{createFile} aufgerufen.

Die Methode \emph{createFile} erstellt eine neue Datenbankdatei mit dem entsprechenden Format. AnschlieÃŸend Ã¼bergibt die Methode \emph{main} den Pfad und den Dateinahmen der Datenbank, so dass diese die Daten laden kann. 

Zum Schluss startet die Methode \emph{main} die GUI.

\subsection{Package de.BibTexMaker.GUI}
Das Package \emph{de.BibTexMaker.GUI} beinhaltet alle Packages und Klassen welche zum Graphical User Interface (GUI) gehÃ¶ren. 
\begin{figure} [!ht] 
	\centering 
	\includegraphics[scale=0.5]{./Images/GUI.jpg}
	\caption{Klassendiagramm Package \emph{de.BibTexMaker.GUI}}
	\label{fig:./Images/GUI.jpg} 
\end{figure}


\subsubsection{Klasse GUI}
Die Klasse \emph{GUI} ist, wie die AbkÃ¼rzung schon vermuten lÃ¤sst, das Graphic Unit Interface des Programms bzw. beinhaltet alle notwendigen Methoden, um dieses darzustellen. Die Klasse ist nach dem Singleton-Pattern-Verfahren programmiert. Das heiÃŸt es kann im Programm nur eine Instanz der Klasse \emph{GUI} erzeugt werden. Dazu wurde der Konstruktor private gekennzeichnet und eine Methode \emph{getInstance} implementiert. Mithilfe der Methode \emph{getInstance} kann auf die Instanz der Klasse zugegriffen werden. Ist die Instanz noch nicht angelegt, wird Sie durch die Methode \emph{getInstance} erzeugt. 

Mithilfe der Methode \emph{run} wird die GUI zur Anzeige gebracht. Die Methode stellt dabei die GrÃ¶ÃŸe des Bildschirms fest und berechnet entsprechend die GrÃ¶ÃŸe des Hauptfensters und setzt dieses in die Mitte des Bildschirms.

Die Methode \emph{close} kann dazu genutzt werden einen Window\_Closing-Event auszulÃ¶sen, um damit das Fenster oder das Programm zu beenden.

Mit der Methode \emph{RenewNorthPanel} wird veranlasst, dass das NorthPanel neu aufgebaut wird und somit aktualisiert wird. Das NorthPanel beinhaltet die Buttons, die Comboboxen zur Auswahl des Publikationstypen usw.

Die Methode \emph{drop} reagiert auf einen Drop-Event und veranlasst das PrÃ¼fen des Ã¼bergebenen Elementes. Liegt hier eine BibTex-Datei vor, so wird diese an den Parser weitergeleitet, damit die enthaltenden Daten in die Datenbank aufgenommen werden. 

Die Methode updateFilter lÃ¶st das aktualisieren des Filters aus.

Alle anderen Methoden haben keine Funktion, sondern sind vorhanden, da dies die Implementation der Interfaces ActionListener und DropTargetListener erfordert.

\subsubsection{Klasse WindowClosingAdapter}

Die Klasse WindowClosingAdapter dient zur Entscheidung, ob nur das Hauptfenster geschlossen werden soll oder das gesamte Programm beendet werden soll, wenn ein Window\_Closing-Event ausgelÃ¶st wird.

Dazu kann die Klasse Ã¼ber zwei Konstruktoren instantiiert werden. Wird ein Objekt der Klasse \emph{WindowClosingAdapter} ohne Ã¼bergabe des Parameters \emph{exitSystem} Ã¼bergeben, so wird bei auslÃ¶sen des Window\_Closing-Events lediglich das Hauptfenster geschlossen. Wird der Parameter Ã¼bergeben, dann wird bei true auch das Programm beendet und nicht nur das Hauptfenster geschlossen.

Wird nun ein Window\_Closing-Event ausgelÃ¶st, dann wird die Methode \emph{windowClosing} ausgefÃ¼hrt. Dabei schlieÃŸt Sie das Filterfenster falls geÃ¶ffnet und das Hauptfenster. AnschlieÃŸend wird geprÃ¼ft ob das Attribut \emph{exitSystem} auf true gesetzt wurde. Ist dies der Fall veranlasst die Methode das Beenden des Programmes.

\newpage

\subsubsection{Package MainPanel}
Das Package \emph{MainPanel} beinhaltet alle Klassen zum Aufbau des Hauptfensters.
\begin{figure} [!ht] 
	\centering 
	\includegraphics[scale=0.4]{./Images/MainPanel.jpg}
	\caption{Klassendiagramm Package \emph{de.BibTexMaker.GUI.MainPanel}}
	\label{fig:./Images/GUI.jpg} 
\end{figure}

\paragraph{Klasse MainPanel}
Die Klasse MainPanel beinhaltet alle Methoden zum Aufbau des Hauptfensters. Dazu wird im Konstruktor das Hauptfenster initialisiert.  Dazu wird das Layout und die Border festgelegt. Als Layout wird das BorderLayout verwendet. An die Position North kommt das NorthPanel, Center das CenterPanel und an die Position South das SouthPanel. Es werden als Attribut jeweils ein Objekt des North-, Center- und SouthPanel angelegt.

Des Weiteren meldet der Konstruktor das CenterPanel und das SouthPanel am NorthPanelListener an, damit diese auf NorthPanelEvents reagieren kÃ¶nnen. 

Zum Schluss wird die Methode \emph{initFieldsPanel} des NorthPanels ausgefÃ¼hrt, um die Comboboxen fÃ¼r den Publikationstyp und der Auswhl der Publikation zu fÃ¼llen.

Zur Klasse \emph{NorthPanel} gehÃ¶ren auch noch die Methoden \emph{RenewNorthPanel} und \emph{updateFilter}, welche das Aktualisieren des Filterfensters und des NorthPanels veranlassen.

Das MainPanel ist eine abgeleitete Klasse von JPanel.

\paragraph{Klasse NorthPanel}


\paragraph{Interface NorthPanelListener}

\paragraph{Klasse NorthPanelEvent}

\paragraph{Klasse CenterPanel}

\paragraph{Klasse SouthPanel}

\subsubsection{Package MainMenu}

\paragraph{Klasse MainMenu}

\paragraph{Klasse DatabaseMenu}

\paragraph{Klasse BibTexMenu}

\paragraph{Interface MenuModule}

\subsubsection{Package Filter}

\paragraph{Klasse Filter}

\paragraph{Klasse FilterWindow}

\subsubsection{Package InsertWindow}

\paragraph{Klasse InsertWindow}

\paragraph{Klasse CenterPanel}

\paragraph{Klasse ArticlePanel}

\paragraph{Klasse BookPanel}

\paragraph{Klasse BookletPanel}

\paragraph{Klasse ConferencePanel}

\paragraph{Klasse InbookPanel}

\paragraph{Klasse TechreportPanel}

\paragraph{Klasse MiscPanel}

\paragraph{Klasse InproceedingsPanel}

\paragraph{Klasse PhdthesisPanel}

\paragraph{Klasse IncollectionPanel}

\paragraph{Klasse MastersthesisPanel}

\paragraph{Klasse ProceedingsPanel}

\paragraph{Klasse UnpublishedPanel}

\paragraph{Klasse ManualPanel}

\subsubsection{Package EditWindow}

\paragraph{Klasse EditWindow}

\paragraph{Klasse CenterPanel}

\paragraph{Klasse EditPanelListener}

\paragraph{Klasse EditPanelEvent}

\paragraph{Klasse PhdthesisPanel}

\paragraph{Klasse ConferencePanel}

\paragraph{Klasse ManualPanel}

\paragraph{Klasse MastersthesisPanel}

\paragraph{Klasse IncollectionPanel}

\paragraph{Klasse InproceedingsPanel}

\paragraph{Klasse InbookPanel}

\paragraph{Klasse ProceedingsPanel}

\paragraph{Klasse TechreportPanel}

\paragraph{Klasse BookPanel}

\paragraph{Klasse UnpublishedPanel}

\paragraph{Klasse BookletPanel}

\paragraph{Klasse ArticlePanel}

\paragraph{Klasse MiscPanel}

\subsubsection{Package createWindow}

\paragraph{Klasse createWindow}

\newpage

\subsection{Package de.BibTexMaker.Database}

\begin{figure} [!ht] 
	\centering 
	\includegraphics[scale=0.47]{./Images/Database.jpg}
	\caption{Klassendiagramm Package \emph{de.BibTexMaker.Database}}
	\label{fig:./Images/Database.jpg} 
\end{figure}

\subsubsection{Klasse Database}

\paragraph{Klasse Indizes}

\paragraph{Packages Factories}

\subsection{Package de.BibTexMaker.BibTex}

\subsubsection{Klasse Parser}

\subsubsection{Klasse ParserException}

\subsubsection{Klasse Serializer}

\subsubsection{Klasse Validator}

\subsection{Package de.BibTexMaker.Utiles}

\subsubsection{Klasse Fields}

\subsubsection{Klasse BibTexFileFilter}

\subsubsection{Klasse EntryTypes}

\end{document} 
  
</pre></body></html>