# Eclipse Webtools: Project Explorer



## byte (20. Nov 2007)

Moin,

habe grade auf einem Screenshot gesehen, dass es ja offenbar im Project Explorer der Eclipse Webtools spezielle JEE Elemente gibt, z.B. für den Deployment Descriptor. Doch was muss man tun, um diesen zu Gesicht zu bekommen? Ich sehe den Kram nämlich nicht.

Also zunächst nutze ich Eclipse Europa und habe die Webtools 2.x über den Installer gezogen. Das Projekt ist ein Dynamic Web Project. Unter Project Facets steht Dynamic Web Module 2.5, Java 5.0 und WebDoclet 1.2.3. Im Project Explorer unter Customize View -> Contents gibts entsprechende JEE Einträge, die auch alle einen Haken haben (z.B. J2EE Web Deployment Descriptors).

Trotzdem sehe ich nix JEE-spezifisches im Projektbaum. Ich könnte quasi auch den normalen Package Explorer verwenden. Mache ich irgendwas falsch oder ist das noch buggy in den Webtools? Ich weiss, das andere IDEs da sehr nette Features bieten, umso ärgerlicher ist das.

TIA byto


----------



## Wildcard (20. Nov 2007)

Was siehst du wenn du auf Filter klickst und den Tab available Content auswählst (oder meintest du das mit customize view?)?


----------



## byte (20. Nov 2007)

Ja, das meinte ich mit Customize View. Da stehen unter Content diverse J2EE Deployment Sachen. Haben auch alle einen Haken, sind aber nicht sichtbar.


----------



## SnooP (20. Nov 2007)

Also ich hab die dollen Features gesehen nachdem ich mir nen Dynamic Web Project erstellt hab... und sicherstellen, dass die JRE die man verwendet eine > 1.5 ist - evtl. sogar ne 6er ...

aber wie schonmal gesagt das WTP ist der letzte Dreck!


----------



## byte (20. Nov 2007)

Java Version ist 5, daran wirds nicht liegen.
Ich erinner mich noch dunkel, dass sie am Anfang mal da waren. Aber mittlerweile sind sie weg und ich kann machen was ich will, ich kriege sie nicht wieder. Offenbar werden die mit XDoclet erzeugt (WebDoclet). Ich habe die aktuelle Version in Eclipse eingebunden (1.2.3), funktioniert aber nicht.

Wenn ich Run XDoclet ausführe, spuckt die Konsole folgendes aus:


```
Buildfile: D:\workspace\.metadata\.plugins\org.eclipse.jst.j2ee.ejb.annotations.xdoclet\tempAnt.xml
init:
webdoclet:

BUILD FAILED
D:\workspace\.metadata\.plugins\org.eclipse.jst.j2ee.ejb.annotations.xdoclet\tempAnt.xml:66: 2.5 is not a legal value for this attribute
```

Ist jetzt auch nicht furchtbar dramatisch, wäre ja AFAIK eh nur ne Verlinkung auf die entsprechenden Stellen in der web.xml. Aber es sind halt genau solche Sachen, die Webtools noch schlechter machen. 
Ich bin mal gespannt, ob die Webtools mit Version 3 endlich qualitativ zulegen. Milestone 3 gibts ja bereits. War aber bisher zu faul, das zu testen.
Kann jemand berichten?

PS: Es ist mir im übrigen schleierhaft, warum es keine J2EE Views mehr gibt. Früher gabs afaik nen eigenen J2EE Project Explorer, aber den haben die mit dem normalen gemerget. Ist doch selten dämlich. Man könnte da imo einiges machen (andere IDEs machens ja vor, wie es geht).


Edit: Habs jetzt rausgefunden. Es funktioniert nur, wenn man Dynamic Web Module 2.4 auswählt. Bei 2.5 zeigt er den Deployment Descr. Kram nicht an. Tollerweise kann ich das bei meinem bestehenden Projekt nicht von 2.5 auf 2.4 ändern, warum auch immer.


----------



## Wildcard (21. Nov 2007)

byto hat gesagt.:
			
		

> PS: Es ist mir im übrigen schleierhaft, warum es keine J2EE Views mehr gibt. Früher gabs afaik nen eigenen J2EE Project Explorer, aber den haben die mit dem normalen gemerget. Ist doch selten dämlich. Man könnte da imo einiges machen (andere IDEs machens ja vor, wie es geht).


Das hängt damit zusammen das der Project Explorer aus dem Common Navigator Framework entstanden ist und sich alle Eclipse Projekte entsprechend umstellen sollen um die Sache zu vereinheitlichen.
Der Projekt Explorer ist auch designierter Nachfolger des Navigators und vermutlich auch des Package Explorers (in absehbarer Zukunft).


----------



## byte (21. Nov 2007)

Hm, nur ob das so eine gute Idee ist, nun alle Navigationsviews zu mergen, ist eine andere Sache. Derzeit ist er für mich zumindest nicht zu gebrauchen. Ich bin z.B. kein Freund von dieser neuartigen Kombination aus Package Explorer und Outliner (also dass Methoden usw. auch direkt im Explorer aufgehen). Im Package Explorer kann man das vollständig deaktivieren über die Filter, im Project Explorer hingegen nicht. Da geht immernoch ein (total unsinniges) Klassenicon auf.

Ich würde spezialisierte Views bevorzugen. Sehe da eher nur Vorteile, wenn man auf die Domäne abgestimmte Views hat. Übersicht kann man immernoch durch die Perspectives bewahren.

Aus diesem Grund ist Eclipse z.B. für Webentwicklung im Vergleich zu den anderen IDEs eher weniger zu gebrauchen.


----------



## Wildcard (21. Nov 2007)

byto hat gesagt.:
			
		

> Im Package Explorer kann man das vollständig deaktivieren über die Filter, im Project Explorer hingegen nicht. Da geht immernoch ein (total unsinniges) Klassenicon auf.


Einfach den Haken beim Java Content entfernen. 
Im übrigen ist es dank eben diesem Common Navigator Framework extrem einfach spezialisierte Views wie du sie bevorzugst selbst zu schreiben. Mir hingegen ist der Multi Purpose Project Explorer wesentlich lieber.


----------



## byte (21. Nov 2007)

> Einfach den Haken beim Java Content entfernen. 

Wo soll dieser Haken sein? Im Package Explorer kann ich unter Filter -> Java Declaration Filters diese Sachen togglen. Im Project Explorer hingegen gibts das Unter Customize View nicht. Da kann ich zwar vieles deaktivieren (z.b. das Methoden oder Felder angezeigt werden), aber es geht halt immernoch dieses "grüne C" auf. Java Content finde ich da nirgends!?


----------



## Wildcard (21. Nov 2007)

-Auf das kleine Dreieck rechts oben in der View klicken
-Filters
-Tab 'Available Contents'
-Bei 'Java Elements' den Haken rauswerfen


----------



## byte (21. Nov 2007)

Welche Eclipse Version benutzt Du? Bei mir (Europa) hab ich im Project Explorer beim Dreieck nur Customize View, dort dann zwei Reiter Filters und Content. Wenn ich unter Content "Java Elements" wegklicke, sehe ich die Klassen gar nicht mehr. Unter Filters hingegen kann ich ne Menge deaktivieren, nur eben nicht, dass die grünen Klassenicons aufgehen.


----------



## Wildcard (21. Nov 2007)

byto hat gesagt.:
			
		

> Wenn ich unter Content "Java Elements" wegklicke, sehe ich die Klassen gar nicht mehr. Unter Filters hingegen kann ich ne Menge deaktivieren, nur eben nicht, dass die grünen Klassenicons aufgehen.


Ich dachte du wolltest die Klassen weg haben? Dich stört also nur das Klassen Icon?  ???:L 
Das wegzulassen macht aber keinen Sinn, denn eine Datei kann mehrere Klassen beinhalten.
Wenn du das also entfernst, kannst du den Java Content doch gleich komplett ausschalten   :bahnhof:


----------



## byte (21. Nov 2007)

Ich schreibe nie mehr als eine Klasse in eine Datei (ausgenommen innere Klassen). Für mich ist dieses Symbol also absolut sinnfrei da redundant zum Dateiname. Es vergeudet nur Platz auf dem Bildschirm. Ich möchte im ...Explorer einfach nur die Datei wählen, den Rest steuere ich eh über den (Quick-) Outliner.


----------



## Wildcard (21. Nov 2007)

Ganz ehrlich, dann verstehe ich dein Problem nicht. Wenn du Klassen im Explorer nicht aufklappen willst, dann tu es nicht.
Einen ContentProvider zu schreiben der je nachdem wieviele Klassen eine Datei enthält eine andere Children Liste zurückgibt ist ziemlich hässlich (ist dir als  (Ex?)SWT Entwickler ja sicherlich bekannt) und grundsätzlich von nur einer Class pro Datei auszugehen wäre grundfalsch.
Der package Explorer verhält sich doch auch nicht anders.


----------



## byte (21. Nov 2007)

Wildcard hat gesagt.:
			
		

> Wenn du Klassen im Explorer nicht aufklappen willst, dann tu es nicht.


Sie klappen automatisch auf, wenn ich auf die Datei doppelklicke.



> Einen ContentProvider zu schreiben der je nachdem wieviele Klassen eine Datei enthält eine andere Children Liste zurückgibt ist ziemlich hässlich (ist dir als  (Ex?)SWT Entwickler ja sicherlich bekannt) und grundsätzlich von nur einer Class pro Datei auszugehen wäre grundfalsch.


Warum soll das falsch sein? Ich habe seit ich Java programmiere noch nie mehr als eine Klasse in eine Datei geschrieben. Ich habe auch noch nie mit Code zu tun gehabt, wo das der Fall ist. Und wenn ich in Eclipse versuche, zwei Klassen in eine Datei zu schreiben, gibts per Default nen Error.
Ich habe auch nie davon gesprochen, einen ContentProvider zu schreiben, der eine solche Auswahl trifft. Ich möchte einfach nur entsprechend filtern können.



> Der package Explorer verhält sich doch auch nicht anders.


Noch ein allerletztes mal: Im Package Explorer kannst Du die Filter so einstellen, dass ab der Datei nichts mehr aufklappt (keine Klasse, Methode, Feld, ...). Das geht beim Project Explorer aber nicht.


*Jede Information im Explorer unterhalb des Datei-Levels ist redundant mit dem, was der Outliner anzeigt und somit in meinen Augen sinnlos.*


PS: Extra für Dich nochmal getestet:  Der Outliner zeigt auch mehrere Klassen in der gleichen Java-Datei an.


----------



## Wildcard (21. Nov 2007)

byto hat gesagt.:
			
		

> Sie klappen automatisch auf, wenn ich auf die Datei doppelklicke.


AFAIK nur wenn 'link Editor' aktiviert ist.


			
				byto hat gesagt.:
			
		

> Warum soll das falsch sein? Ich habe seit ich Java programmiere noch nie mehr als eine Klasse in eine Datei geschrieben. Ich habe auch noch nie mit Code zu tun gehabt, wo das der Fall ist. Und wenn ich in Eclipse versuche, zwei Klassen in eine Datei zu schreiben, gibts per Default nen Error.


Einen Error wohl sicherlich nicht. Lediglich mehr als eine public class ist verboten.


> Ich habe auch nie davon gesprochen, einen ContentProvider zu schreiben, der eine solche Auswahl trifft. Ich möchte einfach nur entsprechend filtern können.
> Noch ein allerletztes mal: Im Package Explorer kannst Du die Filter so einstellen, dass ab der Datei nichts mehr aufklappt (keine Klasse, Methode, Feld, ...). Das geht beim Project Explorer aber nicht.


Ich bin mal so frei dir den 3 Zeiler zur Verfügung zu stellen der diesen Filter implementiert:

```
public class JavaFilter
    extends ViewerFilter
{

    public boolean select(Viewer viewer, Object parentElement, Object element)
    {
        if (element instanceof IType)
            return false;
        return true;
    }

}
```

Dazu noch in den ExtensionPoint hängen:



```
<extension
        point="org.eclipse.ui.navigator.navigatorContent">
     <commonFilter
           activeByDefault="true"
           class="your.JavaFilter"
           description="your Filter"
           id="your.Filter"
           name="your Filter"/>
  </extension>
  <extension
        point="org.eclipse.ui.navigator.viewer">
     <viewerContentBinding viewerId="org.eclipse.ui.navigator.ProjectExplorer">
        <includes>
           <contentExtension pattern="your.Filter"/>
        </includes>
     </viewerContentBinding>
  </extension>
```





> PS: Extra für Dich nochmal getestet:  Der Outliner zeigt auch mehrere Klassen in der gleichen Java-Datei an.


Habe ich das bestritten?  ???:L


----------



## byte (21. Nov 2007)

Du ignorierst gekonnt, worauf ich eigentlich hinaus wollte, insofern ist die Diskussion für mich hier beendet.


----------

