##########################################################################################
Artikel fr den Eclipse Magazin Ausgabe 2/2010
##########################################################################################

AnyEdit plugin ist nicht der erste, den ich geschrieben habe, dafr aber der erfolgreichste.
Allein in den letzten zwei Jahren wurde es ber 160000 mal installiert [1], und auf der EPIC Seite [2]
ist er in den Top-5 "best rated" Plugins aller Zeiten. Wie kam es dazu?

Anfang 2003 (Eclipse 2.1 kam damals im Mrz und nicht wie heute im Juni raus) arbeitete
ich an einer sehr umfangreichen Web-Anwendung. Wie schrieben den JSP Code tatschlich noch
per Hand, und als IDE benutzten wir (was sonst?) Eclipse (ohne Webtools, denn das Projekt
gab es damals noch gar nicht!). Der jsp Code den wir hatten war sehr tief verschachtelt,
jeder "JSP-Include" hat weitere "Includes" referenziert, die weitere "Includes" hatten und
so weiter. Kurzum, es war wirklich mhsam, in dem Code zu navigieren, Spass an der Arbeit
stellt man sich irgendwie anders vor. Mein damaliger Kollege und Mentor Guido Grning
beschwerte sich also laut, dass der dumme Editor die im JSP Code referenzierten "Includes"
oder Java Servlets nicht automatisch navigieren und ffnen kann, obwohl diese doch im
selben Workspace liegen.

Das andere Problem war bei dem jsp code die Einrckung und Leerzeichen am Ende der Zeilen.
Da es damals noch keinen de-fakto Standart fr die jsp-Editoren in Eclipse gab, und einige
Entwickler auch nicht mal Eclipse benuzten, waren die jsp Dateien voll von kreativen
Ideen zum Thema "Ich benutze mal x tabs und y spaces zum Einrcken". Der Code war dann auch
dementsprechend gut lesbar... Ausser dem "stetischen" Aspect ist es sicherlich auch ein
grosses Hindernis, wenn man versuchte, die Logik der verschachtelten jsp Fragmente anhand
der Einrckung nachzuvollziehen. Zustzlich macht es auch noch viel Spass, solche jsp
Dateien zu mergen bzw. die nderungen darin zu verfolgen, wo dann auch noch als das
"i"-Tpfelchen die hngende Leerzeichen am Zeilenende besonders stren (der Compare-Editor
in Eclipse war damals nicht so mchtig wie Heute und markierte die ganze Zeile als verndert an).

Da ich schon mal einige Erfahrung mit Eclipse Programmierung hatte (mein Erstling war
JDepend4Eclipse [3]), hab ich gedacht, dass ich es probieren soll, diese fehlende "Navigation"
und "White-Space-Formatierung" in Eclipse einzubauen. So bekamen Eclipse Editoren
"Open Type under Cursor" und "Open File under Cursor" Menus, und beim Speichern hat AnyEdit
automatisch das "White-Space" korrekt formatiert und lstige Leerzeichen am Zeilenende entfernt.
Zuerst waren das nur einige wenige Editoren, die ich mit Hilfe von AnyEdit "aufgepimpt" habe, aber mit
der Zeit untersttzte AnyEdit mehr und mehr, um nun funktioniert es einfach mit allen Texteditoren.

Weiterer Einsatzgebiet fr die "Open Type" (meine Lieblingsfunktion in AnyEdit) ist definitiv
die Untersttzung von aller Art Server-Logdateien und der Konsolenausgabe, die oft Stack Traces
oder Dateiverweise enthalten. AnyEdit kommt hier zu Hilfe, indem er aus jeder erdenklichen
Textauswahl die passende Datei oder Java Klasse (im richtigen Projekt) berechnen und ffnen kann,
und anschlissend springt er sogar zu der richtigen Zeile.

Angefangen mit der Konvertierung von Tabs zu Leerzeichen, gab es eine logische Vortsetzung
in die Richtung "universelles" Konvertieren von A nach B und zurck. So ist es bei den Servlets
und jsp's blich, html-code "on the fly" zu generieren, und z.B. die Teile der vorformatierten
html-Bausteinen aus dem Datanbanken oder preparierten xml Templates einfgen.
Versteht dann der Datenbank keine Sonderzeichen, oder soll der html code mitten in der xml
Datei stehen, muss man viele Sonderzeichen (und auch "<>") als html-Entities abspeichern.
Dies ist uerst mhsam, Fehleranfllig und macht berhaupt kein Spass. Der html Code, der
davor noch sohnenklar war, sieht pltzlich unleserlich aus, und es ist nicht mal garantiert,
dass es dann beim wiedereinfgen in die html Seite syntaxisch richtig ist. Also, eine
ideale Aufgabe fr AnyEdit :-). Aus der gleichen Ecke kamen dann weitere Erweiterungen:
konvertieren von und zu Unicode, Base64, Camel Case etc.

Als letztes Schmankerl darf ich die "Compare with..." Funktionen vorstellen, die ich fast
tglich benutze. Wenn man Code Reviews macht, hat man oft das Problem die externen Dateien
(auerhalb der Eclipse Workspace), zwei geffneten Editoren oder zwei hnlichen Stellen
in der gleichen Datei vergleichen zu wollen. Eclipse bietet da nichts, und so kommt wie
immer AnyEdit zum Einsatz: um zwei verdchtig hnlichen Stellen in der selben Datei zu
vergleichen, kopiert man einfach eine Stelle in die Zwischenablage und dann vergleicht die
zweite Stelle mittels "Compare with Clipboard" mit der ersten. Der Vergleich von zwei
geffneten Editoren oder externen Dateien ist auch dank AnyEdit kein Problem mehr.

AnyEdit ist voll von vielen anderen kleinen und nutzlichen Funktionen, die mir mein Leben
als Programmierer leichter machen und mich von msamen und langweiligen Aufgaben befreien.

Bei der Entwickling halfen mir besonders die kreativen Vorschlge der AnyEdit Benutzer.
Ohne dieser wrde AnyEdit heute nicht der Schweizermesser unter den Eclipse Werkzeugen sein,
der er ist. Daher anschliessend vielen Dank an alle, die mir mit Kommentaren und Vorschlgen
geholfen haben.

[1] http://code.google.com/p/anyedittools/downloads/
[2] http://www.eclipseplugincentral.com/
[3] http://andrei.gmxhome.de/jdepend4eclipse/index.html