4 Projekte richtig organisieren

4 Projekte richtig organisieren
65
4
Projekte richtig organisieren
In diesem Kapitel diskutieren wir zunächst den Umgang mit den verschiedenen Elementen der Benutzeroberfläche: Editoren, Betrachtern
und Perspektiven. Anschließend behandeln wir die grundlegenden Ressourcentypen: Projekte, Verzeichnisse und Dateien.
Dann wenden wir uns wieder der Java-Programmierung zu. Diesmal geben wir »Hello World« nicht auf der Konsole aus, sondern über
die Soundkarte! Dabei behandeln wir Themen wie den Import und
Export von Dateien und Archiven, das Assoziieren von Quelldateien
zu Binärdateien und die richtige Einstellung der Projekteigenschaften.
4.1
Die Workbench
Wie schon in der Einführung erwähnt, ist das Java Development Toolkit (JDT) nur eines von vielen Plugins für die Eclipse-Workbench. Insofern ist die Eclipse-Workbench völlig unabhängig von Java. Schalten
wir also einmal aus der Java-Perspektive zurück in die Ressourcen-Perspektive (Abb. 4–1). Dort, wo in der Java-Perspektive der PackageExplorer zu sehen war, sehen wir nun den Navigator. Die einzelnen
Packages sind verschwunden, stattdessen sehen wir eine Struktur
geschachtelter Verzeichnisse.
Der Navigator
66
4 Projekte richtig organisieren
Schnellzugriff für
Ressourcen-Perspektive
Navigator
Abb. 4–1 Der Navigator zeigt Projekte, Verzeichnisse und Dateien. Wir haben hier
schon etwas vorgegriffen: Das dargestellte Projekt wird erst in Kapitel 5 entwickelt. Beachten Sie, dass im Ressourcen-Navigator Binär- und Quelldateien getrennt dargestellt werden.
4.2
Ressourcen
Der Navigator der Eclipse-Workbench zeigt einen Überblick über die
von der Eclipse-Workbench verwalteten Ressourcen und gestattet die
Navigation in der Menge der Ressourcen.
4.2 Ressourcen
4.2.1
67
Ressourcentypen
Die Workbench kennt drei verschiedene Ressourcentypen:
! Projekte. Ein Projekt bildet jeweils das Wurzelverzeichnis für einen
Verzeichnisbaum. Projekte können Verzeichnisse und Dateien enthalten.
! Verzeichnisse. Verzeichnisse können andere Verzeichnisse und
Dateien enthalten. Verzeichnisse können beliebig tief geschachtelt
werden.
! Dateien. Dateien bilden die Endpunkte von Ressourcenbäumen,
d.h. eine Datei enthält keine weiteren Ressourcen.
4.2.2
Wo Ressourcen gespeichert werden
Alle Ressourcen werden direkt im Dateisystem des ausführenden Computers gespeichert. Dies ist anders als bei VisualAge, wo die Ressourcen der Workbench in einem Repository gespeichert waren. Bei Eclipse
entspricht jedoch die Struktur aus Projekten und Verzeichnissen direkt
einer entsprechenden Verzeichnisstruktur auf dem ausführenden Computer. Das hat Vorteile bezüglich Crash-Sicherheit und Datensicherung.
Der Speicherort für die Ressourcen der Workbench ist standardmäßig das Verzeichnis \eclipse\workspace. Hier ist jedes Projekt in
einem entsprechenden Unterverzeichnis enthalten. So ist beispielsweise
die Ressource AnimationEvent.java im Pfad \eclipse\workspace\DukeSpeaks\com\sun\speech\freetts\relp\AnimationEvent.java gespeichert.
Freilich lässt sich das Workspace-Verzeichnis mit Hilfe des Kommandozeilenparameters -data auch an anderen Orten einrichten, so z.B.
mit
eclipse.exe -data C:\myOldWorkSpace
oder durch Angabe eines anderen Workspace-Ortes im Workspace
Launcher (siehe Abschnitt 1.1).
4.2.3
Ressourcen synchronisieren
Gelegentlich kommt es vor, dass der Zustand der Dateien in \eclipse\
workspace nicht dem Kenntnisstand von Eclipse entspricht, denn
Eclipse speichert Metadaten über die Ressourcen der Workbench im
Verzeichnis \eclipse\workspace\.metadata. Wurde jedoch eine Datei
der Workbench an Eclipse vorbei verändert, z.B. durch die Anwendung eines externen Werkzeugs, so kann es passieren, dass die Meta-
Refresh
68
4 Projekte richtig organisieren
daten in .metadata nicht mehr mit dem aktuellen Zustand einer Ressource übereinstimmen.
Das ist nicht weiter schlimm. In diesem Fall führt man eine Synchronisierung auf die betroffene Ressource durch. Man selektiert die
betroffene Ressource im Navigator und wendet die Kontextfunktion
Refresh an. Übrigens lässt sich diese Funktion nicht nur auf einzelne
Dateien, sondern auch auf ganze Verzeichnisse oder Projekte anwenden.
4.2.4
Navigation
Die folgenden Kontextfunktionen und Werkzeugtasten stehen im Kontextmenü und auf der Werkzeugleiste des Navigators für die Navigation zur Verfügung:
! Go into. Diese Funktion reduziert die aktuelle Sicht auf den Inhalt
des ausgewählten Projekts oder Verzeichnisses. Wenn man Tausende von Ressourcen in der Workbench hat, weiß man diese
Funktion zu schätzen.
! Back. Diese Taste (Pfeil nach links) wechselt zur vorigen Sicht.
! Forward. Diese Taste (Pfeil nach rechts) macht Back wieder rückgängig.
! Up to. Diese Taste (Ordnersymbol) geht ins nächsthöhere Verzeichnis.
! Mit der Funktion Select Working Set ... kann ein benannter Working Set ausgewählt werden, um die im Navigator angezeigten Ressourcen auf die Ressourcen dieses Working Sets zu beschränken.
Die Funktion gestattet auch die Neuanlage von Working Sets.
! Die Funktion Deselect Working Set entfernt diese Einschränkungen wieder.
! Mit der Funktion Edit Active Working Set ... kann der aktive Working Set modifiziert werden.
! Open in new Window. Wirkt wie die Funktion Go into, nur dass
ein weiteres Fenster (mit einer kompletten Workbench!) geöffnet
wird, bei der nur der Inhalt des ausgewählten Projekts oder Verzeichnisses im Navigator gezeigt wird.
Das Menü der Toolbar (unter dem kleinen Dreieck) bietet noch einige
zusätzliche Funktionen:
! Mit der Sort-Funktion können die Dateien nach Name oder Typ
sortiert angeordnet werden.
! Mit der Filters ...-Funktion können Dateien mit bestimmten Dateierweiterungen aus dem Navigator ausgeblendet werden.
4.3 Assoziationen
69
! Die Funktion Link with Editor schaltet die automatische Synchronisation der Ressourcenselektion mit dem Editorinhalt ein. Wenn
Sie durch einen Klick auf einen Reiter zu einem anderen Editor
wechseln, ändert sich die Selektion im Navigator entsprechend.
4.3
Assoziationen
Der Typ einer Datei wird aus der Dateierweiterung bestimmt. In
Abbildung 4–1 sehen wir textbasierte Dateien wie die .java- und
.html-Dateien, aber auch binäre Dateien wie die .class-Dateien.
Dateierweiterungen bestimmen, was geschieht, wenn eine Datei geöffnet wird.
Wenn wir z.B. eine .java-Datei mit der rechten Maustaste anklicken, so erhalten wir ein Pop-up mit den Kontextfunktionen. Wählen
wir dort das Untermenü Open with ..., erhalten wir ein weiteres Popup mit Editoren. Im ersten Abschnitt sehen wir den für diese Datei
aktiven Editor (normalerweise den Java-Editor). Im zweiten Abschnitt
sehen wir alle für diesen Dateityp registrierten Editoren, darunter auch
Text Editor und System Editor. Der Texteditor ist der im Eclipse SDK
enthaltene Texteditor. Dieser kann für alle textbasierten Dateien
benutzt werden. Der Systemeditor ist der Editor, der auf dem ausführenden Betriebssystem für den jeweiligen Dateityp registriert ist.
Eclipse kann derartige externe Editoren aus der Workbench heraus
starten: Öffnen wir beispielsweise eine HTML-Datei, wird ein Webbrowser gestartet.
Im Wesentlichen werden diese Dateiassoziationen (welcher Editor
mit welchem Dateityp) von den in Eclipse installierten Plugins
bestimmt. Es ist jedoch auch möglich, manuell solche Assoziationen
hinzuzufügen. Hierzu ruft man die Funktion Window>Preferences>
Workbench>File Associations auf. Im oberen Fenster sieht man nun
eine Liste der registrierten Dateierweiterungen. Mit Hilfe der Add- und
Remove-Buttons kann man neue Dateierweiterungen hinzufügen oder
löschen. Im unteren Fenster erscheinen die registrierten Editoren für
die gerade selektierte Dateierweiterung. Auch hier können Editoren
hinzugefügt oder gelöscht werden. Mit dem Default-Button kann ein
bestimmter Editor zum Standardeditor erklärt werden.
Drückt man den Add-Button, so erhält man zunächst eine Liste
der internen, in Eclipse installierten Editoren. Markiert man das Feld
External Programs, erhält man die Liste der im ausführenden Betriebssystem registrierten Programme (siehe Abb. 4–2). Durch einen Doppelklick auf eines dieser Programme wählt man es als neuen Editor
aus.
Öffnen mit ...
Neue Assoziation
festlegen
70
4 Projekte richtig organisieren
Abb. 4–2 So können Dateiassoziationen definiert werden. Hier haben wir zunächst die
Dateierweiterung *.html hinzugefügt und assoziieren dann Microsoft Frontpage mit diesem Dateityp.
4.4
Packages
Schalten wir wieder zurück in die Java-Perspektive, ergibt sich ein
anderes Bild. Der Package-Explorer zeigt die verschiedenen Projekte
mit ihrer Package-Struktur und den Kompiliereinheiten.
4.4.1
Verzeichnisse und Packages
Packages sind keine realen Ressourcen, sondern virtuelle Objekte. Die
Package-Struktur eines Projekts ergibt sich aus den package-Deklarationen am Beginn jeder Java-Quelldatei.
Die Java-Spezifikation verlangt allerdings, dass sich die PackageStruktur isomorph auf eine Verzeichnisstruktur abbilden lässt. So
müssen – wie in Abbildung 4–3 gezeigt – alle Ressourcen des Package
com.sun.speech.freetts.relp im relativen Pfad com/sun/speech/
freetts/relp gespeichert sein. In Eclipse ist diese Pfadangabe immer
relativ zum Quelltext-Wurzelverzeichnis für das Projekt. Der relative
Pfad com/sun/speech/freetts/relp entspricht daher dem physischen
Pfad \eclipse\workspace\DukeSpeaks\com\sun\speech\freetts\relp.
4.4 Packages
Abb. 4–3 Jedes Package kann eindeutig auf einen Knoten im Verzeichnisbaum abgebildet werden. Kompiliereinheiten im Package-Explorer können dagegen aus mehreren
Ressourcen bestehen: aus einer Quelldatei und einer oder mehreren Binärdateien. Im Falle
der Klasse AnimatedAudioPlayer gibt es zwei Binärdateien – eine für AnimatedAudioPlayer
selbst und eine für die innere Klasse JavaClipLineListener.
4.4.2
Navigation
Der Package-Explorer verfügt über ähnliche Navigationsfunktionen
wie der Navigator (siehe Abschnitt 4.2.4). So gibt es auch hier die Kontextfunktionen Go into und Open in new Window, in der Toolbar gibt
es Tasten für die Funktionen Back, Forward und Up to. Unter dem
Drop-down-Menü der Werkzeugleiste finden wir auch die gleichen
Funktionen zur Verwaltung von Working Sets und für die Synchronisierung mit dem Editor.
Außerdem besteht noch die Möglichkeit, den Browser für die
Typhierarchie zu öffnen.
4.4.3
Typhierarchie
Die Typhierarchie zeigt die Super- und Subtypen für Klassen und Interfaces an. Dabei besteht die Möglichkeit, entweder die Sicht nur auf
Super- oder Subtypen zu beschränken oder die komplette Hierarchie
anzuzeigen. Mit der History-Funktion kann man rasch zwischen den
verschiedenen Sichten wechseln oder vorher angezeigte Hierarchien
noch einmal anzeigen (Abb. 4–4).
71
72
4 Projekte richtig organisieren
Abb. 4–4 Der Hierarchie-Browser besteht aus zwei Fenstern. Im oberen Fenster wird
die Typhierarchie angezeigt, im unteren Fenster werden die Felder und Methoden des
selektierten Typs angezeigt.
In der Toolbar des unteren Fensters findet man einige weitere Funktionen. Der erste Button verändert das obere Fenster und zeigt dort nur
die Typen an, die das im unteren Fenster selektierte Feld bzw. die selektierte Methode implementieren. Der zweite Button bewirkt, dass im
unteren Fenster auch die ererbten Methoden und Fenster des aktuellen
Typs angezeigt werden. Die restlichen Buttons verhalten sich wie die
entsprechenden Buttons des Outline-Fensters (siehe nächster Abschnitt).
Der Hierarchie-Browser erweist sich insbesondere dann als nützlich, wenn man vorhandene Projekte oder Bibliotheken analysieren
will. Beim Erstellen eines neuen Projekts wird man ihn in der Regel erst
bei fortgeschrittenem Projektstand benötigen.
Eine schnelle Methode, die Typhierarchie zur Anzeige zu bringen,
ist die Taste F4, die genau wie die Kontextfunktion Open Type Hierarchy wirkt. Alternativ gibt es noch die Tastenkombination Strg+T,
mit der die Typhierarchie in einem Popup-Fenster zur Anzeige
gebracht werden kann.
4.5 Der Outline-View
4.5
73
Der Outline-View
Der Outline-View (Abb. 4–5) gestattet die Navigation innerhalb einer
Quelldatei. Generell ist der Outline-View nicht auf Java-Programme
beschränkt, sondern steht – je nach installierten Plugins – auch für
andere Dateitypen zur Verfügung.
Bei Java-Programmen stellt der Outline-View sowohl die Felder
und Methoden als auch die import-Anweisungen dar. Sind innere
Klassen definiert, werden auch diese Klassen dargestellt: Die Hauptklasse und die inneren Klassen bilden eine Baumstruktur.
Durch einen einfachen Klick auf ein im Outline-View dargestelltes
Feld oder eine Methode wird der Editor auf die Definition des Feldes
bzw. der Methode positioniert. Darüber hinaus gibt es noch eine Reihe
weiterer nützlicher Funktionen. Doch beginnen wir mit der Darstellung der Felder und Methoden im Outline-View.
4.5.1
Darstellung
Abb. 4–5 Die verschiedenen Buttons der Outline-Toolbar erlauben es, bestimmte
Elemente aus dem Outline-View herauszufiltern. Mit dem Sortieren-Button können Felder
und Methoden alphabetisch geordnet werden (andernfalls gilt die Reihenfolge in der
Quelldatei).
Das erste Icon vor einem Eintrag im Outline-View kennzeichnet die
Art des Eintrags (Package, import-Anweisung, Interface, Klasse,
Methode, Feld) und die Sichtbarkeit (public, protected, private).
Icons
74
4 Projekte richtig organisieren
import-Anweisung (importicon.tif)
Interface (interfacedef.tif)
Klasse (classdef.tif)
öffentliche Methode (public) (publicmethod.tif)
geschützte Methode (protected) (protectedmethod.tif)
private Methode (private) (privatemethod.tif)
Standardmethode (ohne Modifikation) (defaultmethod.tif)
öffentliches Feld (public) (publicfield.tif)
geschütztes Feld (protected) (protectedfield.tif)
privates Feld (private) (privatefield.tif)
Standardfeld (ohne Modifikation) (defaultfield.tif)
Zusätzlich zu diesem ersten Icon können noch weitere Icons angezeigt
werden:
Konstruktor (constructor.tif)
statisches Element (static) (static.tif)
unveränderbares Element (final) (final.tif)
überschriebenes Element (override.tif)
Die Darstellung des Outline-View kann über Window>Preferences>Java>Appearance beeinflusst werden:
! Show method return types. Zeigt den Ergebnistyp von Methoden
im Outline-View an.
! Show override indicators ... Zeigt den -Indikator für überschreibende Methoden an.
! Show member in Package Explorer. Ist diese Option gesetzt, so
erscheinen Methoden und Felder auch im Package-Explorer als
Kindelemente von Klassen und Interfaces. Die meisten Funktionen
des Outline-View stehen dann auch dort zur Verfügung.
4.5.2
Kontextfunktionen
Im Outline-View gibt es eine Reihe von Kontextfunktionen. Die wichtigsten sind auch auf der Toolbar des Outline-View als Buttons vorhanden (siehe Abb. 4–5). Hier ist eine Übersicht über die vorhandenen
Kontextfunktionen:
4.6 Suchen
! Open Type Hierarchy. Zeigt die Typhierarchie für das ausgewählte Element (siehe Abschnitt 4.4.3). Diese Funktion kann nicht
nur auf einzelne Typen, sondern auch auf ganze Packages oder
Projekte angewandt werden.
! Open Call Hierarchy. Zeigt die Aufrufhierarchie für die ausgewählte Methode.
! Open Super Implementation. Diese Funktion erscheint nur bei
überschreibenden Elementen. Bei Ausführung der Funktion wird
das überschriebene Element im Editor geöffnet.
! Cut, Copy, Paste, Delete. Die üblichen Kopier- und Löschfunktionen, angewandt auf das im Outline-View ausgewählte Element.
! Refactor>... Verschiedene Funktionen zum Umorganisieren von
Code (siehe Abschnitt 2.3.2).
! Source>... Verschiedene Funktionen zur automatischen Vervollständigung von Code (siehe Abschnitt 2.1.3).
! References>... Sucht nach Verweisen auf das selektierte Element
(siehe nächster Abschnitt).
! Declarations>... Sucht nach Definitionen des selektierten Elements
(siehe nächster Abschnitt).
! Read Access>... Sucht nach Lesezugriffen auf das selektierte Feld
(siehe nächster Abschnitt).
! Write Access>... Sucht nach Schreibzugriffen auf das selektierte
Feld (siehe nächster Abschnitt).
! Occurrences in File. Zeigt im Search View (siehe nächster
Abschnitt), wo das ausgewählte Element in der aktuellen Datei
vorkommt.
! Toggle Watchpoint. Diese Funktion erscheint nur bei Feldern und
gehört zum Instrumentarium des Debuggers (siehe Kapitel 6).
! Toggle Method Breakpoint. Diese Funktion erscheint nur bei
Methoden und gehört zum Instrumentarium des Debuggers (siehe
Kapitel 6).
! Compare With>..., Replace With>..., Restore from Local History ...
Mit diesen Funktionen kann die aktuelle Version mit früheren Versionen zu verglichen bzw. durch frühere Versionen ersetzt werden
(siehe Abschnitt 2.5).
4.6
Suchen
Suchen und Finden sind in Eclipse zweierlei: Die Search-Funktion führt
eine Suche im gesamten Workspace durch, während die Find-Funktion
nach Zeichenketten im aktuellen Dokument sucht.
75
76
4 Projekte richtig organisieren
4.6.1
Die Suchfunktion
Die Eclipse-Suchfunktion besteht aus zwei Komponenten: dem Dialogformular zur Eingabe der Suchkriterien (Abb. 4–6) und der Tabelle der
Suchergebnisse (Abb. 4–7).
Suchkriterien
Wird die Suchfunktion von der Toolbar der Eclipse-Workbench oder
aus dem Eclipse-Hauptmenü heraus aufgerufen, so erscheint zunächst
der Dialog für die Spezifikation der Suchkriterien. Beim Aufruf über
eine Kontextfunktion unterbleibt dieser Schritt, da die Suchkriterien
schon feststehen.
Abb. 4–6 Der Dialog für die Suchkriterien besitzt mehrere Seiten, abhängig von den
installierten Plugins. Hier haben wir eine Seite für die generelle Suche nach Dateien, die
einen Suchbegriff enthalten, eine Seite für die Suche nach Hilfebegriffen, eine Seite für
die Java-spezifische Suche (geöffnet) und eine Seite für die Suche nach Plugins.
Bei der Java-Suche kann als Suchbegriff der Name eines Typs, einer
Methode, eines Package, eines Konstruktors oder eines Felds eingegeben werden. Dabei lässt sich der Name ganz oder nur teilweise qualifizieren. Zusätzlich kann die Suche eingeschränkt werden. Man kann
nur nach Deklarationen oder nur nach Verweisen suchen bzw. nach
beiden. Bei Feldern kann die Suche auf Lese- oder Schreibzugriffe
4.6 Suchen
beschränkt werden. Der Suchbereich lässt sich auf selektierte Ressourcen oder auf Working Sets (benannte Ressourcenmengen) beschränken.
Neben der Java-Suche gibt es im Suchdialog weitere Seiten für die
Suche nach Texten in allgemeinen Ressourcen (in diesem Modus gibt
es auch eine Replace ...-Taste, um Ersetzungsoperationen durchzuführen), für die Suche im Hilfesystem und für die Suche nach Plugins. Mit
der Customize-Taste kann man einzelne Seiten des Suchdialogs ausbzw. einblenden.
Suchergebnisse
Die Ergebnisse der Suche werden im Search-View dargestellt, der in der
Standard-Java-Perspektive den Tasks-View überdeckt. Wurde vorher
im Menü des Views die Option Hierarchical Layout gewählt, können
mit einem Druck auf die entsprechende Werkzeugtaste die Suchergebnisse nach Projekt, Package, Datei oder Klasse gruppiert werden.
Selektierten Eintrag löschen
Nach Ordner gruppieren
Nächster Eintrag
Alle Einträge löschen
Nach Package gruppieren
Alles expandieren
Voriger Eintrag
Nach Datei gruppieren
Alles kollabieren
Nach Typ gruppieren
Suche stoppen
Vorige
Suchergebnisse
Abb. 4–7 Der Search-View zeigt alle Kompiliereinheiten, in denen der Suchbegriff
gefunden wurde. Die Anzahl der Vorkommen wird hinter jedem Eintrag in Klammern
angegeben, wenn der Suchbegriff mehrfach in einer Einheit erscheint. Ein Doppelklick auf
einen Eintrag öffnet die entsprechende Kompiliereinheit im Editor.
Mit den Abwärts- und Aufwärts-Pfeilen in der Toolbar des SearchViews kann man bequem die einzelnen Fundstellen aufsuchen, die entsprechende Kompiliereinheit wird dabei automatisch im Editor geöffnet. In der linken Randzeile des Editors werden Zeilen mit Treffern der
Suchanfrage mit einem gelben Pfeil gekennzeichnet.
Der Search-View speichert auch vorhergehende Suchergebnisse.
Mit den entsprechenden Buttons (oder auch mit dem Menü des
Search-Views) kann man deshalb auch auf die Ergebnisse früherer
Suchanfragen zurückgreifen.
77
78
4 Projekte richtig organisieren
4.6.2
Finden und Ersetzen
Neben der oben diskutierten Suchfunktion gibt es natürlich auch eine
Editorfunktion zum Suchen und Ersetzen von Zeichenketten. Mit der
Funktion Edit>Find/Replace erhält man einen Dialog (siehe Abb. 4–8)
zur Eingabe von Suchbegriffen und verschiedenen Suchoptionen. Ist
beim Aufruf dieser Funktion bereits eine Zeichenkette selektiert, so
wird diese Zeichenkette als Suchbegriff übernommen.
Abb. 4–8 Der Find/Replace-Dialog erlaubt es, Zeichenketten zu suchen und ggf. durch
andere Zeichenketten zu ersetzen. Seit Eclipse 3 werden auch reguläre Ausdrücke sowohl
beim Finden als auch beim Ersetzen unterstützt, wie hier gezeigt.
Bei der Suche besteht die Möglichkeit, vorwärts oder rückwärts zu
suchen und die Suche nur auf die selektierten Zeilen zu beschränken.
Daneben gibt es noch einige weitere Optionen:
! Case Sensitive. Ist dieses Feld markiert, so wird die Groß- und
Kleinschreibung bei der Suche berücksichtigt.
! Wrap Search. Ist dieses Feld markiert, beginnt die Suche am Ende
des Suchbereichs (bzw. am Anfang, wenn rückwärts gesucht wird)
wieder von vorne. Anderenfalls erfolgt eine Fehlermeldung.
! Whole Word. Ist dieses Feld markiert, werden nur ganze Wörter
gesucht.
! Incremental. Ist dieses Feld markiert, so beginnt die Suche sofort
bei der Eingabe des ersten Buchstabens. Bei Eingabe weiterer Buchstaben wird ggf. weitergesucht.
! Regular Expression. Ist dieses Feld markiert, wird der Suchausdruck als regulärer Ausdruck interpretiert. Mit F1 bekommen Sie
4.7 Editoren und Views anordnen
79
Hilfe für die Syntax regulärer Ausdrücke, und mit Strg+Leertaste
erhalten Sie einen Inhaltsassistenten, der Ihnen bei der Konstruktion eines regulären Ausdrucks hilft. Im Suchausdruck können
Capture-Gruppen verwendet werden. Die Ergebnisse stehen im
Ausdruck für die Ersetzung zur Verfügung.
Entsprechend zu diesen Optionen stehen zusätzlich zu Edit>Find/Replace
weitere spezialisierte Suchfunktionen zur Verfügung: Edit>Find Next,
Edit>Find Previous, Edit>Incremental Find.
4.6.3
Gleichnamige Elemente markieren
Wenn Sie unter Window>Preferences>Mark Occurrences die Option
Mark occurrences in file einschalten, so werden in Zukunft, wenn Sie
im Editor ein syntaktisches Element selektieren, auch alle gleichnamigen Elemente in der gleichen Datei markiert. Da diese Markierungen
auch in der rechten Randleiste erscheinen, kann man diese Stellen
leicht mit dem Scrollbalken aufsuchen und erspart sich in vielen Fällen
eine umständliche Suche.
Dabei können Sie in den Einstellungen noch festlegen, für welche
Art von syntaktischen Elementen diese Funktion wirksam sein soll: für
alle Typen, für Methoden, für Konstanten, Felder, Variablen usw.
Wenn Sie zusätzlich noch die Option Sticky einschalten, so bleiben die
Markierungen auch noch erhalten, wenn das betreffende Element
nicht mehr markiert ist.
Die Markierungsfunktion kann mit der Werkzeugtaste Mark
Occurrences an- oder abgeschaltet werden.
4.7
Editoren und Views anordnen
Die Anordnung der verschiedenen Fenster in der Eclipse-Workbench
ist nicht fest vorgegeben, sondern mit Einschränkungen frei konfigurierbar. Dabei gibt es im Wesentlichen vier verschiedene Organisationsprinzipien:
! Anordnung der Fenster neben- bzw. übereinander wie in Abbildung 4–9. Alle Fenster sind gleichzeitig sichtbar. Man kann ein
Fenster an ein anderes Fenster andocken, indem man es bei der
Titelleiste oder beim Reiter packt und an den jeweiligen Rand des
Zielfensters zieht. Erscheint ein Pfeilsymbol, lässt man es los.
! Mehrere Fenster können in einem Stapel angeordnet werden.
Jeweils mit einem Druck auf einen Reiter kann ein Fenster im Stapel nach oben gebracht werden und wird damit sichtbar. Man
Fenster andocken
Gestapelte Fenster
80
4 Projekte richtig organisieren
Als Fenster
FastView
kann ein Fenster auf andere Fenster stapeln, indem man es bei der
Titelleiste oder beim Reiter packt und auf das Zielfenster zieht.
Erscheint ein Stapelsymbol, lässt man es los.
! Views können auch als eigenständige Fenster außerhalb des Workbench-Fensters auf dem Desktop angelegt werden. Das geht allerdings nur unter Windows und Linux GTK. Man packt das Fenster
einfach beim Reiter and legt es auf dem Desktop ab.
! Im so genannten FastView kann ein View auf der FastView-Leiste
der Workbench minimalisiert werden: Es wird nur noch als ein
Icon repräsentiert. Ein Klick auf das Icon und es wird erneut sichtbar, ein weiterer Klick und es verschwindet wieder. Die FastViewLeiste ist allerdings erst sichtbar, wenn mindestens ein View als
FastView angelegt wurde. Um das zu tun, klicken Sie mit der rechten Maustaste auf den Reiter des Views und wählen dann die Kontextfunktion FastView. Auch die FastView-Leiste verfügt über
Abb. 4–9 Hier wurde der Search-View auf den rechten Rand des Problems-View
gezogen. Nun erscheinen beide Views nebeneinander.
4.8 Perspektiven verwalten
81
Kontextfunktionen: Mit der Funktion Orientation kann festgelegt
werden, ob ein FastView vertikal oder horizontal expandiert werden soll. Mit einem Klick auf die Funktion FastView kann das
Häkchen von dieser entfernt werden und der View wieder in den
Originalzustand zurückversetzt werden. Mit der Funktion Dock
On kann festgelegt werden, wo die FastView-Leiste erscheinen soll:
am unteren Rand des Workbench-Fensters (Standard) oder am linken oder rechten Rand.
Selbstverständlich kann man jedes Fenster durch einen Klick auf das
Kreuz in der rechten oberen Ecke des Fensters schließen. Doch wie öffnet man es wieder?
Fenster öffnen und
schließen
! Bei Editoren ist das einfach: Ein Doppelklick auf die entsprechende
Ressource im Navigator oder Package-Explorer öffnet die Ressource im jeweiligen Editor.
! Etwas komplizierter ist es bei Views. Hier benutzt man die Funktion Window>Show View>..., in der man dann den zu öffnenden
View auswählt.
Alle Fenster der Workbench sind maximierbar. Ein Doppelklick auf
den Reiter eines Views oder eines Editors bzw. ein Klick auf das Maximize-Icon maximiert das betreffende Fenster, d.h. das Fenster nimmt
allen Raum in der Workbench ein. Andere Fenster sind dann nicht
mehr sichtbar. Ein weiterer Doppelklick auf den Reiter oder ein Klick
auf das Restore-Icon stellt den alten Zustand wieder her.
Ein Klick auf das Minimize-Icon lässt einen View (und alle anderen
Views, die im selben Bereich gestapelt sind) auf die reine Titelzeile
zusammenschrumpfen. Mit einem Klick auf das Restore-Icon lässt sich
der alte Zustand wiederherstellen.
4.8
Perspektiven verwalten
Eine Perspektive ist eine bestimmte Konfiguration von Editoren, Views
und Menüs in der Workbench. In diesem Kapitel haben wir bereits die
Ressource-Perspektive und die Java-Perspektive kennen gelernt. In
Kapitel 6 werden wir dazu noch die Debug-Perspektive kennen lernen.
4.8.1
Neue Perspektiven definieren
Nehmen wir an, Sie haben nun alle Fenster der Java-Perspektive entsprechend Ihren Vorlieben und Bedürfnissen angeordnet wie in
Fenster maximieren
Views minimieren
82
4 Projekte richtig organisieren
Abbildung 4–9. Gibt es eine Möglichkeit, diese Einstellungen zu speichern?
Ja, und zwar mit der Funktion Window>Save Perspective As ...
(Abb. 4–10). Hier können Sie die aktuelle Konfiguration unter einem
von Ihnen vergebenen Namen als neue Perspektive speichern. Falls Sie
später zu dieser Konfiguration zurückkehren wollen, können Sie das
entweder mit der Funktion Window>Reset Perspective oder mit den
Funktionen Window>Close Perspective und Window>Open Perspective ... erreichen.Die in Abbildung 4–9 veränderte Workbench-Konfiguration speichern wir hier als neue Perspektive unter dem Namen
Java (Search docked to Problems) ab.
Abb. 4–10 Die in Abbildung 4–9 veränderte Workbench-Konfiguration speichern wir
hier als neue Perspektive unter dem Namen Java (Search docked to Problems) ab.
4.8 Perspektiven verwalten
4.8.2
Perspektiven konfigurieren
Mit Hilfe der Funktion Window>Customize Perspective können
bestimmte Aspekte der aktuellen Perspektive geändert werden:
! Der Reiter Shortcuts erlaubt anzugeben, welche Elemente direkt in
einem gegebenen Untermenü aufgelistet werden sollen (andernfalls
müsste man auf Others ... klicken, um zu dem gewünschten Element
zu kommen). Shortcuts können für die Untermenüs File>New,
Window>Open Perspective und Window>Show View definiert
werden.
! Der Reiter Commands erlaubt anzugeben, welche Kommandogruppen (Action Sets) im Menü und der Werkzeugleiste der aktuellen Perspektive sichtbar sein sollen.
Diese Funktion kann übrigens auch bequem mit einem Klick der rechten Maustaste auf die Werkzeugleiste aufgerufen werden.
Abb. 4–11 Mit der Funktion Window>Customize Perspective können ganze Kommandogruppen (Action Sets) aus einer Perspektive herausgenommen bzw. neue Kommandogruppen hineingenommen werden. Das mittlere und rechte Fenster zeigen an, wie sich
die ausgewählte Kommandogruppe auf das Menü und die Werkzeugleiste auswirkt.
Daneben gibt es unter Window>Preferences>Workbench>Perspectives
die Möglichkeit festzulegen, ob neu geöffnete Perspektiven innerhalb
der aktuellen Workbench oder in einem neuen Workbench-Fenster
geöffnet werden. Diese letzte Option macht jedoch nur Sinn bei einem
83
84
4 Projekte richtig organisieren
sehr großen Bildschirm. Bei kleineren Bildschirmen wird man die
Eclipse-Workbench bildschirmfüllend einsetzen. Die Perspektive-Icons
auf der Perspektiven-Leiste der Workbench (rechts oben) sind dann
das geeignete Mittel für einen Perspektivwechsel.
Eine weitere Option erlaubt es, beim Neuanlegen eines Projekts
auch gleichzeitig eine neue Perspektive (im gleichen oder einem neuen
Workbench-Fenster) anzulegen. So könnte jedes Projekt eine eigens
auf es zugeschnittene Perspektive erhalten.
4.9
Dateien importieren
Wir gehen nun daran, unserem HelloWorld-Programm das Sprechen
beizubringen. Seit Version 1.4 enthält Java auch eine Sprachschnittstelle, das Java Speech API (JSAPI). Dazu gibt es die kostenlose Referenzimplementierung FreeTTS, die wir uns aus dem Internet herunterladen können. FreeTTS hat seine Wurzeln im Sprachsynthesizer Flite,
wurde aber komplett nach Java portiert. Interessant dabei ist, dass
Abb. 4–12 Importieren aus einem Dateisystem. Im Feld From Directory enthält die
Drop-down-Liste alle bisher verwendeten Import-Quellen, so dass man sich langwieriges Suchen oft ersparen kann.
4.9 Dateien importieren
FreeTTS erheblich schneller abläuft als Flite. Java scheint also auch in
Sachen Geschwindigkeit C++ immer mehr Konkurrenz zu machen.
FreeTTS (Version 1.2.0) findet man unter http://sourceforge.net/projects/freetts. Nach dem Download der Binär- und
Quelldateien, die zusammen etwa 24 MB groß sind (also ein Fliegengewicht im Vergleich zur Eclipse SDK Distribution), entpackt man die
Binärdateien in ein beliebiges Verzeichnis. Außerdem muss noch das
JSAPI (Java Speech API) entpackt werden, da es einem anderen Lizenzmodell unterliegt. Dazu führen wir einfach das Programm jsapi.exe
im Ordner FreeTTS\lib aus.
Man kann nun der FreeTTS-Installationsanleitung folgen und
FreeTTS ausprobieren. Das lassen wir aber bleiben und gehen daran,
das System direkt nach Eclipse zu importieren.
Zunächst legen wir uns ein neues Java-Projekt namens FreeTTS an.
Dabei kreuzen wir die Option Create separate source and output folders an. In diesem Projekt selektieren wir den Ordner src und rufen
mit der Kontextfunktion Import ... den Import-Wizard auf. Im folgenden Dialog sehen wir eine Liste möglicher Importquellen. Dort wählen
wir Filesystem aus und drücken den Next-Button. Im nun erscheinenden Dialog drücken wir den Browse-Button und navigieren bis zum
Abb. 4–13 Nach dem Import. Die importierte Datei wurde sofort kompiliert, was zu
einer Menge offener Verweise führte.
85
Fremdsoftware
importieren
86
4 Projekte richtig organisieren
Ordner ...\FreeTTS\demo\JSAPI\HelloWorld. Dieser Ordner erscheint
nun im linken Fenster des Dialogs. Wir selektieren ihn und sehen auf
der rechten Seite alle Dateien in diesem Ordner, wie in Abbildung 4–12
gezeigt. Dort machen wir ein Häkchen an HelloWorld.java und drücken den Finish-Button.
Wenn alles richtig gelaufen ist, müsste nun das importierte Programm HelloWorld.java ein Default-Package im Projekt FreeTTS sein
(Abb. 4–13). Doch, oh weh, jede Menge Fehlermeldungen!
Natürlich – das FreeTTS-Laufzeitsystem fehlt noch. Wir haben
zwei Möglichkeiten:
! Wir importieren auch die JAR-Dateien des Laufzeitsystems in den
Workspace. Damit koppeln wir uns aber von Versionswechseln ab.
Neue Versionen der JAR-Dateien müssten dann ggf. neu in den
Workspace importiert werden.
! Wir fügen die JAR-Dateien als externe Dateien dem Java Build
Path zu. Das erspart uns den Import dieser Dateien. So vermeiden
wir das doppelte Vorhalten dieser Archivdateien. Werden diese
Dateien durch neue Versionen ersetzt, werden die Änderungen
auch sofort für unser Projekt wirksam.
4.10
Der Java Build Path
Projekteigenschaften
Wir entscheiden uns bei diesem Beispiel für die zweite Möglichkeit.
Um JAR-Dateien dem Java Build Path hinzuzufügen, rufen wir die
Funktion Project>Properties und dann Java Build Path ... auf und
gehen zur Seite Libraries. Hier sehen wir nur einen einzigen Eintrag,
nämlich das Java-1.4-Laufzeitsystem rt.jar.
Wir drücken die Taste Add External Jars und navigieren zum
Ordner ...\FreeTTS\lib. Von den nun aufgelisteten JAR-Dateien
(cmu_time_awb.jar, ..., jsapi.jar) selektieren wir alle und drücken
dann den Öffnen-Button. Die so ausgewählten JAR-Dateien werden
nun der Libraries-Liste hinzugefügt (Abb. 4–14). Dann drücken wir
noch den Ok-Button und harren der Dinge, die da kommen. Alle Fehlermeldungen sind verschwunden! (Falls nicht, müssen Sie den BuildProzess für das Projekt mit der Kontextfunktion Build Project manuell
ausführen.)
Was uns noch fehlt, ist der Quellcode der FreeTTS-Binärdateien.
Dieser Code ist im heruntergeladenen Archiv freetts-srcs1_2_beta.zip enthalten. Wir müssen diese Datei lediglich den entsprechenden Packages des FreeTTS-Projekts zuordnen. Und das geschieht
so:
4.10 Projekteigenschaften
87
Abb. 4–14 Die Libraries-Seite der Projekteigenschaften nach dem Einfügen der FreeTTSJars.
Für das Package freetts.jar wählen wir die Kontextfunktion Properties. In den dann erscheinenden Package-Eigenschaften wählen wir
Java Source Attachment. Dann drücken wir auf die Taste External File
und navigieren zur Datei freetts-srcs-1_2_beta.zip. Und das war’s
auch schon. Öffnen wir nun eine Datei aus freetts.jar, so erscheint
der zugehörige Quellcode im Editor. Freilich sind diese Dateien nicht
editierbar, sondern dienen lediglich der Ansicht.
Eigentlich können wir das Programm nun ausprobieren. Wir führen es mit demselben Kommando wie schon unser erstes HelloWorldProgramm aus: Run>Run As>Java Application.
Statt der versprochenen Sprachausgabe erhalten wir aber nur folgenden Text auf der Konsole:
Can't find synthesizer.
Make sure that there is a "speech.properties" file at either of
these locations:
user.home
: H:\Dokumente und Einstellungen\Berthold Daum
java.home/lib: C:\j2sdk1.4.0\jre\lib
Richtig, davon war ja in der FreeTTS-Installationsanweisung die Rede.
Wir kopieren die Datei speech.properties aus ...\FreeTTS in eines der
genannten Verzeichnisse und führen dann unser Programm erneut aus.
Kein Bild, kein Ton ...
88
4 Projekte richtig organisieren
Es ertönt:
Hello, World!
Vorausgesetzt freilich, Ihr Computer hat eine Soundkarte (oder Sound
on Board) und Sie haben einen Lautsprecher angeschlossen ...
4.11
Die Java Browsing-Perspektive
Die Java Browsing-Perspektive (Abb. 4–15) erlaubt eine etwas andere
Sicht auf die Struktur eines Java-Projekts und erinnert an VisualAgeZeiten. Wir können diese Perspektive einfach durch einen Druck auf
die Taste »Neue Perspektive« (siehe Abschnitt 1.2) und entsprechende
Auswahl anlegen.
Abb. 4–15 Die Java Browsing-Perspektive erlaubt in den oberen vier Fenstern die hierarchische Auswahl von Projekten, Packages, Typen und Methoden bzw. Feldern. Da man
leicht zwischen dieser Perspektive und der normalen Java-Perspektive hin und her wechseln kann, ist diese Perspektive ein gutes Hilfsmittel, um den Überblick über ein Projekt
nicht zu verlieren.
Was this manual useful for you? yes no
Thank you for your participation!

* Your assessment is very important for improving the work of artificial intelligence, which forms the content of this project

Download PDF

advertisement