Das Notes Forum

Lotus Notes / Domino Sonstiges => Java und .NET mit Notes/Domino => Thema gestartet von: flaite am 14.08.06 - 17:57:34

Titel: eclipse plug-in Entwicklung: Kommt man da rein?
Beitrag von: flaite am 14.08.06 - 17:57:34
Hi,

wir haben hier einen wirklich sehr konkreten Bedarf verschiedene Entwicklungsaktivitäten unter eine Plattform zu stellen.
Weil ich
- neu bin
- fest daran glaube, dass am Ende alles gut wird
- und ich ja schliesslich mittelfristig irgendwie meinen senior Status legitimieren will,
hab ich mich freiwillig als Eclipse-Plugin Entwickler gemeldet.

Eine große Klappe gibts nicht umsonst. Trifft man kühne Aussagen, so steht man immer in der Gefahr, dass sich im inneren Auge die Umwelt in eine Horde von Zombies transformiert, "und ist es fertig?" murmelt und einen selber immer mehr einkreist.
Deshalb habe ich in den vergangenen Jahren zunehmend Projektrisiken durch die Klassiker "echtes arbeiten" und "gute Bücher" bekämpft. Manchmal hilft das.

Für Leute aus dem Lotus-Notes Umfeld sind Eclipse-Plugins nicht unbedingt abwegig, zumal der angekündigte Hannover-Client auf Eclipse-Technologien beruht. Man sollte eine gewisse Afinität zu Java haben und es ist ein ziemlich "abstraktes Thema", soviel ist sicher.

Inhaltlich sind die Aufgaben bislang recht einfach. Das kann sich aber noch ändern. Wenn es gefällt, droht der Kunde möglicherweise mit einem Folgeauftrag.
Bisher sollen:
1. Eine Gruppe von mit einem Excel-File generierten xml Dateien per Knopfdruck und Festlegung des Speicherorts der von excel generierten Artefakte in ein Eclipse-Projekt (und damit natürlich auch in das cvs-System) importiert werden. 
2. Im Eclipse Projekt soll man dann eine bestimmte Art von Java Klassen (Projekt-spezifischer Name: Prozess-Scripte) schreiben.
3. Die Inhalte der xml-Artefakte aus Excel und er Inhalt der Java Klassen sollen dann an bestimmte Felder von bestimmten Dokumenten einer per Konfiguration festgelegte Domino-.nsf eingefügt werden. 

Eclipse wird so eine Art zentrale Entwicklungsoberfläche für die speziellen Java Files Prozesskripte und die xml Dateien. Die xml Dateien sollen auf Wohlgeformtheit und Validität geprüft werden. Um die Aufgaben xml-Engineering und Java Entwicklung selbst brauch ich mich gar nicht mehr zu kümmern, weil es dafür prima plug-ins gibt. Für einen Eclipse-Pug-in-Entwickler ist die Java Entwicklungs Umgebung (jdt) ist ja nix anderes als ein plug-in. Für xml Engineering gibts in den WebTools Erweiterungen und anderswo prima Tools. Auch für Entwicklungs-Versionierung und -Kolaborationsplattformen wie cvs oder subversion ist Eclipse prima bestückt.

Somit brauche ich mich nur noch auf sehr enge und einfache projektspezifische Aufgaben konzentrieren:
- Der Import von xml Dateien aus einem bestimmten Ordner im Dateisystem des OS.
- Der Export des Text-Inhalts von xml und .java Dateien in bestimmte Stellen einer bestimmten Notes-Datenbank.

In Folge ein paar Bemerkungen:
- wie es ist
- welche guten Knowledge-Ressourcen es gibt
- ob es Probleme gibt
- ob ich das empfehlen kann.

Gruß Axel
Titel: Re: eclipse plug-in Entwicklung: Kommt man da rein?
Beitrag von: flaite am 15.08.06 - 10:59:49
Bin bislang sehr angetan von der ganzen Geschichte und scheine wirklich schnell brauchbare Ergebnisse zu bekommen.
In jedem Fall benötigt man ein gutes Buch.
Ich arbeite mit:
http://www.amazon.de/gp/product/3827322545/302-8239942-3268002?v=glance&n=299956&s=gateway&v=glance
Hab aber auch:
http://www.amazon.de/gp/product/0321228472/302-8239942-3268002?v=glance&n=52044011
(leider die leicht veraltete Version).

Das erste Buch ist sehr gut. In einer CD- gibts eine Menge an Beispielprojekten zu den einzelnen Themen (wichtig). Die Erklärung sind gut und der didaktische Aufbau - ich würd sagen - herausragend.

Erst ab Seite 197 wird mit der plug-in Entwicklung angefangen (vorher gehts über Eclipse aus Anwenderperspektive). Es beginnt mit einem komplexen aber gehaltvollen Übersichtsartikel bzgl. der erstmal zu verdauenden plug-in Architektur.
Im nächsten Abschnitt gehts um die - sagen wir - Frontend Klassen.
Dann folgt ein sehr wichtiges Kapitel über die Backendfunktionalitäten des Eclipse-Frameworks für plug-in Aufgaben (File Verarbeitung und Zugriff, Erweiterung/Manipulation des IDE Editors).
Als letztes dann noch ein Kapitel über -sagen wir - erweiterte Backendfunktionalitäten zum Erfüllen von nicht-funktionalen requirements (Diagnose, Responsivität, Internationalisierung, Performance Tuning, sowie speziales wie ActiveX/OLE/Swing Interoperabilität).
Ganz hinten gibt es dann noch ein Kapitel mit Schritt für Schritt Anleitungen. Leider beziehen sich 6 von 9 dieser Kapitel auf den Eclipse Anwenderteil. Die 3 Anleitungen für Eclipse Plug-In sowie Eclipse Rich Client Entwicklung waren sehr hilfreich. Da es auf der CD für die anderen Eclipse-plug-in Entwicklungs-Kapitel Beispielprojekte gibt, braucht man vielleicht auch nicht mehr.

Ich bin natürlich schon eine lange Zeit Eclipse Anwender. Auf jeden Fall erhöht aber dieses Entwickeln von plug-ins noch einmal das Verständnis von Eclipse. Aus einer Notes Perspektive kann dies für die Zukunft bspws. hilfreich für Fehleranalyse sein (Hannover basiert auf Eclipse).
Mit Hilfe des Buchs und vor allem auch der Beispiele scheine ich hier einen Großteil der Funktionalität in der Evaluierungsphase programmieren zu können.
Es scheint nun einfacher zu sein als es zunächst aussah.

Letztenendes ist ein Eclipse-plugin nix anderes als ein xml-File (plug-in xml) und ein paar Java Klassen.

eclipse rocks.

Gruß Axel
Titel: Re: eclipse plug-in Entwicklung: Kommt man da rein?
Beitrag von: flaite am 16.08.06 - 09:51:20
Weiter aus der Reihe pimp-up-your-tool.
Es ist wirklich ziemlich logisch aufgebaut:

Eclipse ist eine Sammlung an Plug-ins. Plug-ins haben haufenweise extension points. Z.B. gibt es einen extension point für Einträge in Kontext-Menüs von Ansichten. Da dockt man in dem plugin-xml seines eigenen plug-ins an.
Code
 <extension
         point="org.eclipse.ui.popupMenus">
      <objectContribution
            objectClass="org.eclipse.core.resources.IProject"
            id="de.axel.menu">
            
            <action
               label="Export Into Portal"
               icon="icons/notes.gif"
               class="de.axel.menu.ExportToDominoAction"
               
               id="DirectAction"/>     
        </objectContribution>
   </extension>

<extension
         point="org.eclipse.ui.popupMenus">
      <objectContribution
            objectClass="org.eclipse.core.resources.IProject"
            id="de.axel.menu">
            
            <action
               label="Import ConfigBuilder Output"
               icon="icons/excelzeichen.gif"
               class="de.axel.ImportXmlArtefactsAction"
               
               id="DirectAction"/>     
        </objectContribution>
   </extension>
Es wird dann automatisch die run Methode der im extension xml Zeugs(oben) angegebenen class aufgerufen (de.axel.ImportXmlArtefactsAction). Diese Klasse muß noch 2 interfaces implementieren: implements IViewActionDelegate, IWorkspaceRunnable

Bei Guis und langläufigen Aufgaben, ist es oft gut die GUI und die langläufige Aufgaben (hier kopieren von files) in unterschiedliche Threads zu legen. Dafür gibts bei Eclipse extra Job Apis. Das ist einfacher als invokeLater() und invokeAndWait() in Swing. Für das rumhampeln mit Files gibts mit IFile, IResource, etc eigene Klassen. Bisher klappt alles.

Es ist in einem Aspekt auf jeden Fall sehr ähnlich wie Notes programmieren: Man programmiert auf Basis eines komplexen Produktes an wohl definierten Stellen ein paar Erweiterungen. Vom unterliegenden Produkt (Eclipse oder Notes) ist man sehr abhängig und beide haben sicher noch Tücken, die ich nicht kenne. Vorteil ist aber, dass man da im Idealfall nur noch seine eigene Businesslogik in etwas einklinkt, dass wohlgetestet ist, gut funktioniert, den Anwendern vertraut, usw.
Aber das weiss eh jeder.

Gruß Axel 
Titel: Re: eclipse plug-in Entwicklung: Kommt man da rein?
Beitrag von: flaite am 18.08.06 - 16:03:08
Die Erfahrungen bleiben weitgehend positiv.
Ein bischen ein gotcha war, dass man tatsächlich jedes genutzte jar im plug-in xml, Abteilung runtime anmelden muß. Bisher sind das.
Code
  <runtime>
      <library name="integration_tool.jar">
      </library>
      <library name="lib/dom4j-1.6.1.jar">
         <export name="*"/>
      </library>
      <library name="lib/domingo-1.1.jar">
         <export name="*"/>
      </library>
      <library name="lib/jaxen-1.1-beta-8.jar">
         <export name="*"/>
      </library>
      <library name="lib/Notes.jar">
         <export name="*"/>
      </library>
   </runtime>

Classloader Probleme in Java sind natürlich immer Sch... .
Titel: Re: eclipse plug-in Entwicklung: Kommt man da rein?
Beitrag von: flaite am 23.08.06 - 10:01:54
Was z.Zt. ziemlich verwirrend ist, ist zu kontrollieren, wo meine extensions landen.
Code
<extension
         point="org.eclipse.ui.popupMenus">
      <objectContribution
            objectClass="org.eclipse.jdt.core.IJavaProject"
            id="com.ibm.jdg2e.resources.programming.menu">
            
            <action
               label="Import ConfigBuilder Output"
               icon="icons/excelzeichen.gif"
               class="de.aja.eip.integration_tool.interact.ImportXmlArtefactsAction"
              
               id="DirectAction"/>     
        </objectContribution>
   </extension>
Das wird zu einer rechte Maustaste Menüaktion auf Java Projekte. Genau wie ich wollte.
Dafür muss man aber erst mal wissen, wie extension class und Object class heissen. Und das hat jetzt 2 Stunden gedauert.
V.a. die Objectclass org.eclipse.jdt.core.IJavaProject find ich schwer herauszufinden. Weiss auch nicht, wo das dokumentiert ist.  ???

ZUR Zeit behelfe ich mir damit, dass ich mir die plug-in xmls von mir bekannten plug-ins anschaue. Eclipse selbst ist mir noch zu verwirrend.
Es gibt jedenfalls Tonnen von extension points und object classes von object contributions, die regeln, wo sich meine Erweiterung reinpluggt.
Falls jemand dafür eine gute Doku kennt, immer her damit.
Titel: Re: eclipse plug-in Entwicklung: Kommt man da rein?
Beitrag von: flaite am 23.08.06 - 18:38:24
Hat man dann aber den Punkt gefunden, wo die extensions landen sollen, ist mit wenig Code eine Menge möglich. Ausserdem lagern sich die eigenen "Teilmasken" und "Masken" sehr nahtlos an für den Eclipse logischen Stellen ein.

Im Screenshot z.B. das "Konfigurations-Dokument" für mein kleines plug-in. Das ist bei rechte Maustaste auf das Projekt und lagert sich in die übrigen Projekt-Settings ein, die dort schon von Hause aus da sind (im Screenshot ein Java-Projekt).

Allerdings ist für mich das Objektmodell nach wie vor der Hammer. Werd mal am Wochenende nach einer guten newsgroup suchen. Es gibt eine Menge Details, die mich (noch) aufhalten. Schön sind die vielen Beispiele.
Also: KOmplexes Objekmodell. Hat man aber erst einmal den Bogen raus, muß man wenig code schreiben. Kenntnisse in Swing sind für die Maskengeschichten sehr hilfreich, da SWT, JFace schon in vielen sehr ähnlich sind.

In dem Bild kann dieses plug-in Ding irgendwie deutlich werden. die "Teilmaske" im Tab Java Build Path (Beispiel) sind von ein paar OpenSorsern, die für ein Plug-in der Eclipse Software Foundations programmiert haben. Das EIP CPEED Settings Tab ist von mir.
Eclipse pluggt das da rein. Oder besser gesagt: Eclipse hat einen Mechanismus, der das da reinpluggen läßt. Man muß eben nur den richtigen extension point/object class kennnen.

Gruß Axel

Titel: Re: eclipse plug-in Entwicklung: Kommt man da rein?
Beitrag von: flaite am 24.08.06 - 14:49:14
Ich mußte mir natürlich jetzt noch das ganz neue "eclipse building commercial quality plug-ins" von Clayberg, Rubel kaufen.
Die Webseite hat die ersten 4 Kapitel als download (http://www.qualityeclipse.com/) und auch weitere interessante Informationen: z.B. die Links.
Vor allem der Anfang des Kapitels 3 kann so etwas wie den Beginn eines Einblicks verschaffen. Meine derzeitige Perzeption der entsprechenden Diskussionen auf edbrill.com und vowe.de gehen in eine Richtung, die mich nicht überrascht (um es als Gentleman auszurücken).

Gruß Axel
Titel: Re: eclipse plug-in Entwicklung: Kommt man da rein?
Beitrag von: flaite am 24.08.06 - 15:40:42
Eclipse/RCP für die Ohren:
Frank Westphal hat mal eine gute Podcastsendung mit ein paar deutschen RCP-Entwicklern/Buchautoren gemacht:
http://www.frankwestphal.de/Tonabnehmer6-FrankGerhardt-BerndKolb-MartinLippert-EclipseRCP.html

Auf javalobby gibts eine Reihe zu mehreren Eclipse-Großprojekten. Am meisten mag ich den über das Birt Projekt (Reporting. Sowas wie Chrystal Reports). Zuerst glaubt man, Wenfeng Li  spricht das komische Englisch. Später stellt man fest, es ist Jason Weathersby. Ich trainier mir gerade seine Aussprache von plaaaaaaaaa ..... ggiiin (ehemals plug-in )an.
(http://www.javalobby.org/spotlights.jsp dort Callisto podcast series)

Gruß Axel 
Titel: Re: eclipse plug-in Entwicklung: Kommt man da rein?
Beitrag von: Mark³ am 25.08.06 - 09:47:34
Schön dass ich bald einen Ansprechpartner für alle meine RCP-Fragen habe :-)

Ich habe ja auch gewisse Erfahrungen mit RCP und bin vom Prinzip her begeistert. Sametime 7.5 ist hier ein sehr gutes Beispiel wie gut Produkte damit sein können. Die grösste Schwachstelle ist meines Erachtens die Vielzahl an kleinen Fehlerchen in den Wizards in Eclipse, die einen ab und an dazu zwingen mal hinter die Kulissen zu schauen und doch manuell die xml-Dateien zu bearbeiten.
Auch die Standards scheinen in jeder Version anders definiert zu werden (Eclipse 3.0, 3.1, 3.2).

Titel: Re: eclipse plug-in Entwicklung: Kommt man da rein?
Beitrag von: flaite am 25.08.06 - 12:00:24
Schön dass ich bald einen Ansprechpartner für alle meine RCP-Fragen habe :-)
rcp mach ich ein bischen mit. Ich will da z.B. an dem Test auf javablackbelt ein bischen mitarbeiten.
http://www.javablackbelt.com/ (auf der rechten Seite eclipse rcp Test).
Auf Eclipse plug-ins buch ich zur Zeit 90% meiner Arbeitszeit. Ich werd langsam fit.

Zitat

Auch die Standards scheinen in jeder Version anders definiert zu werden (Eclipse 3.0, 3.1, 3.2).
Fehlerchen im eigentlichen Sinne sind mir nicht begegnet. Die Api ändert sich manchmal ein wenig. Das kann ausdrücklich auch ein gutes Zeichen sein.
Gute Bücher sind aus meinen konkreten Erfahrungen ein MUSS. Hätte auch nur 1 der beiden angesprochenen Bücher gefehlt, wäre ich an bestimmten STellen in die falsche Richtung gallopiert. So ist das aber z.Zt. sehr erfreulich.

Gruß Axel
Titel: Re: eclipse plug-in Entwicklung: Kommt man da rein?
Beitrag von: flaite am 29.08.06 - 10:10:08
Macht nach wie vor Spaß.

Mein Plug-in klinkt sich in einen automatisierten Entwicklungsprozess von einer bestimmten, klar definierten Form von Versicherungsanwendungen ein.

In diesem Entwicklungsprozess sollen die Entwickler aus Excel generierte xml Dateien nach Eclipse importieren.
In Eclipse können sie die xml Dateien verändern.
In Eclipse können sie ausserdem einen bestimmten Typ von Java Klassen (Prozess Skripte) schreiben.
All dieser Code wird in einer Notes-Datenbank gehalten.

In meinem Plugin können die nun per rechter Maustaste auf das Eclipse-Projekt klicken und per Aktion in der dropDown Liste anfordern, dass die Daten in Eclipse mit den Daten in den Notes-Datenbanken repliziert werden.
Dafür erhalten sie den folgenden Report.

Per Klick auf den Details Button erhalten sie ausführlichere Informationen.
Mit Eclipse kann man solch eine solche Reportmaske mit 80 Zeilen erzeugen. Und dabei hab ich das noch sehr flexibel erzeugt. Das ist allenfalls sehr lose verdrahtet und der interessierte Anwendungsentwickler besitzt sehr viel Flexibilität.

ECLIPSE ROCKS  O0

Gruß Axel



Titel: Re: eclipse plug-in Entwicklung: Kommt man da rein?
Beitrag von: flaite am 29.08.06 - 16:22:09
And now the weird part:
46 Zeilen xml, um eine einfache hide when Funktionalität zu implementieren:

Das ist aus dem plug-in.xml von org.codehaus.xfire.eclipse.ui_1.0.0.xfire112.jar
Code
<extension
         point="org.eclipse.ui.popupMenus">
      <objectContribution
            adaptable="true"
            id="org.codehaus.xfire.eclipse.ui.xfireProject"
            objectClass="org.eclipse.core.resources.IProject">
         <visibility>
            <and>
               <objectState
                     name="nature"
                     value="org.eclipse.jdt.core.javanature"/>
               <objectState
                     name="nature"
                     value="org.codehaus.xfire.eclipse.xfirenature"/>
            </and>
         </visibility>
         <action
               class="org.codehaus.xfire.eclipse.ui.popup.actions.AddRemoveNature"
               enablesFor="+"
               icon="icons/x16.png"
               id="org.codehaus.xfire.eclipse.ui.actions.removeNature"
               label="%popup.menu.nature.remove"/>
      </objectContribution>
      <objectContribution
            adaptable="true"
            id="org.codehaus.xfire.eclipse.ui.noXfireProject"
            objectClass="org.eclipse.core.resources.IProject">
         <visibility>
            <and>
               <objectState
                     name="nature"
                     value="org.eclipse.jdt.core.javanature"/>
               <not>
                  <objectState
                        name="nature"
                        value="org.codehaus.xfire.eclipse.xfirenature"/>
               </not>
            </and>
         </visibility>
         <action
               class="org.codehaus.xfire.eclipse.ui.popup.actions.AddRemoveNature"
               enablesFor="+"
               icon="icons/x16.png"
               id="org.codehaus.xfire.eclipse.ui.actions.addNature"
               label="%popup.menu.nature.add"/>
      </objectContribution>
   </extension>
Tja. Und ich hab jetzt 4 Stunden rumprobiert und bin nicht drauf gekommen. Die erfolgreichen, fiebrigen und glücklichen Überstunden von gestern abend sind somit buchhalterisch wieder weg.
Wie kann man nur so dumm sein, darauf nicht zu kommen.
Schliesslich gibts neben dem <visibility> nur <filter> und <selection> für Funktionalität, die ich erstmal unter dem zugegeben etwas grobkörnigen Begriff hide-when subsumiere.  ;D

Ende gut alles gut. Und xml ist wirklich der absolute Burner zur Deklaration von Boolescher Logik:
Code

            <and>
               <objectState
                     name="nature"
                     value="org.eclipse.jdt.core.javanature"/>
               <not>
                  <objectState
                        name="nature"
                        value="org.codehaus.xfire.eclipse.xfirenature"/>
               </not>
            </and>
         </visibility>
Wenn das Projekt eine java Nature und eine xfirenatue hat, dann zeige den Kontextmenü-Eintrag.

Ich kann das jetzt gut auf meinen eigenen Bedarf anpassen.
Am Wochenende werd ich ein kleines Programm schreiben, dass mir jederzeit sämtliche plugin.xml von meiner Festplatte scanned und in ein großes File packt :-) Die Dinger beginnen für mich eine Bedeutung zu gewinnen wie Gold-Nuggets in Klondike für Dagobert Duck.
Ein Vorteil von openSource ist wirklich, dass jederzeit geschaut werden kann was andere bereits gemacht haben.

Gruß Axel
Titel: Re: eclipse plug-in Entwicklung: Kommt man da rein?
Beitrag von: flaite am 04.09.06 - 19:53:35
Eclipse gerät nun mehr in den Fokus und ich versuche (nach Eclipse-Art) in die entsprechenden Textstellen meine eigenen Punkte einzupluggen.
 
http://www.itbusinessnet.com/articles/viewarticle.jsp?id=61731
Zitat
Notes developers will, in contrast, notice quite a few changes.
Die Entwickler werden am meisten von den Änderungen spüren.

Zitat
"If you want functionality, you can just add it," he said, by writing a plug-in so that Eclipse will understand and debug... well, COBOL, if you felt like it.
... das sind natürlich starke Aussagen. Eclipse besitzt natürlich ein sehr effektives plug-in Konzept. Aber um damit umgehen zu können, gibts schon sowas wie eine Lernkurve.
Du brauchst Funktionalität? Kleines Hütchenspiel? Kein Problem. Du schreibst einfach ein plug-in in Cobol, Dänisch oder Kisuaheli und zack... es läuft.
Zitat
To create plug-ins -- the Eclipse contribution mechanism -- you typically write the code in the Eclipse PDE or in Rational RAD, and package it into what Eclipse calls a "feature" (which just means a set of plug-ins).
Das ist imho leicht irreführend. Es gibt einfach unterschiedliche Möglichkeiten plug-ins zu verteilen. Das besondere ist: Man muß sie nicht in einer zentralen Registry anmelden. Eclipse findet sie selber.
Jede Eclipse-Installation hat ein plugin Unterverzeichnis.
Da liegen die "plugins selbst" drin.
Das einzelne "plugin selbst" ist einfach erstmal ein Ordner mit bestimmten Dateien drin (immer ein plugin.xml und seit neuerem auch ein manifest.mf in META.INF).
Seit neueren kann diese Dateistruktur auch als .jar-Datei (kann von Winzip geöffnet werden, .jar ist von der Dateistruktur .zip) gepackt sein.
Die plugins können auf unterschiedliche Weise auf die Clients verteilt (in Java heisst das "deployed") werden.
Und jetzt erst kommen features im Spiel. Über features kann man einen update Server schaffen, von dem Clients die neuesten plug-ins automatisch herunterladen. Schöne Sache.

Zur Entwicklung
Plug-ins bestehen aus diesen esoterischen plugin.xml und Manifest.mf Dateien sowie einer Reihe von - zumeist - Java Dateien.
Das PDE (Plug-in Development Environment) ist eine besondere Eclipse Perspektive, die einen bei der Entwicklung von plug-ins unterstützt.
Also in Notes-Sprache: PDE ist ein Designer für Eclipse Clients.
Und Perspektive in Notes-Sprache? Eine bestimmte Zusammenstellung von Ansichten und Masken.
Und wie bekomme ich diesen PDE? Der ist bei jeder normalen Eclipse Installation dabei.

Um plug-ins schreiben zu können muß man nicht nur Java können, sondern eben auch die ganze plug-in API mit Lebenszyklen der Objekte, etc. verstehen. Das geht aber (zumindest im meinen Fall). Vor allem gibt es eine Menge Beispiele, von denen ich abschreibe.
ABER: Das heisst nicht, dass man einen Rooky mit ein paar Java-kenntnissen da ranlassen sollte. Zumindest nicht alleine.
 
Zitat
You can write the code once for multiple products, so that the same plug-in (assuming I understood Eisen correctly) will work with both Hannover and Sametime.
Irgendwie ist das so. Falls man für Hannover und Sametime die gleiche Funktionalität benötigt.
Eclipse-Plugin Entwicklung ist erstmal GUI Entwicklung. Man erweitert den Client. Das könnte man auch mit Java-Swing machen. Eclipse bewirkt aber, dass man schon eine Menge Sachen, die in Eclipse vorhanden sind, verwenden kann. Ausserdem ist man in einem ziemlich coolen und gut funktionierenenden plug-in Konzept. D.h. der eigene Code bindet sich nahtlos in bestimmte vorhandene Extension points ein. Das macht die Entwicklung zwar kompakter (im Sinne von echt wenig Code zu schreiben) aber eben auch abstrakter und komplexer. Das hab ich erwartet und das denke ich zu bekommen, seit 5 Wochen intensiv.
Zitat
A lot of Hannover's "look," says Eisen, is defined in CSS, and other parts of the product rely heavily on XML.
Beides geht in die selbe Richtung wie im vorherigen Abschnitt angesprochen.
Das macht die Entwicklung zwar kompakter (im Sinne von echt wenig Code zu schreiben) aber eben auch abstrakter und komplexer.
Zitat
At their simplest, composite applications are a bunch of components that "bring the portal integration model to the rich client," said Eisen. Hannover supports loosely coupled component interactions, and uses a common definition for both the Web and rich clients. One advantage to composite apps is that they can help you access Domino data from Java. You can get indirect access to the data through composite applications and a property broker -- among several other methods.
Esther Schindler: loosely coupled component interactions
Axel Janßen: Oh. Indeed. Lovely.
E.S.: uses a common definition for both the Web and rich clients.
A.J.: das ist ein bischen konkreter. Strebt eine gemeinsame Entwicklung für Notes und Web Client an. Wobei... Auch mit Eclipse unter der Haube sind Client - Server Notes Anwendungen etwas anderes wie Webanwendung. Von der Kommunikation her. Auch in Zeiten von Web2.0. Es verwundert mich hier nicht, dass bei Leuten wie vowe Assoziationen mit dem gescheiterten Notes-Web Ideen des Jahres 2000 auftauchen. Zumindest interpretiere ich so einige Aussagen. Nur ist das imho nicht ganz richtig.
Vergangenheit:Ich war übrigens 1999 nach 5 Minuten gegen Applets in Notes. Bei der Präsentation eines Notes 5 Alpha Releases. Und die Trainer fanden es toll. Und ich kämpfte mit JavaScript/DHTML/eine Menge Notes-Tricks Webinterfaces, inspieriert von Rose Kellehers Buch. Ich konnte (und mochte) damals Java. Hab trotzdem die Applets nach 5 Minuten gehasst. Eclipse ist anders.

E.S.: One advantage to composite apps is that they can help you access Domino data from Java.
A.J.: Na. Klasse. ERst stark anfangen von wegen loosely coupled component interactions und wenns dann konkret wird... Boah. Wir können aus Java auf Domino Objekte zugreifen. Das gibt ja ganz neue Perspektiven :-) . Gut wir können das natürlich schon seit ewigen Zeiten und mit der Zeit ist man auch mit den gotchas klargekommen.
E.S.: you can get indirect access to the data through composite applications and a property broker -- among several other methods.
A.J.: Weiss nicht, was sie meint.

Zitat
You don't have to drop everything and become an Eclipse expert. (Not that it would hurt.) You'll still use Domino Designer for Notes application development; that isn't Eclipse-based. YET, stressed Eisen.
Aus meiner Sicht gilt hier das gleiche wie Java. Der lila Eclipse Elephant ist einfach zu groß als dass man ihn an einem Wochenende verspeisen könnte. Genau wie den Weißen Java Wal.
Zitat
The Domino Designer will now support DB2 (that was "limited availability" in ND7), and your apps can consume Web services.
Natürlich braucht man in der realen Welt bei der DB2 gestützten Entwicklung auch Leute, die was von RDBMS und DB2 verstehen. Die geforderte Tiefe des Verständnisses richtet sich nach der Komplexität der Aufgabe. Das gleiche gilt natürlich für Webservices/XML und Service Oriented Architecture (SOA).

Zitat
Composite apps will add a few new wrinkles for Notes administrators, most of which are positive. Admins should be more than pleased by new functionality related to user policy management (particularly related to other new features, such as spam filters and message recall), and more control over the way Notes applications are kept up to date.
Hmm. Composite Apps. Weiss jetzt nicht was dieses Konzept jetzt genau sagen will. Hört sich wie ein Marketing Konzept an. Nix gegen Marketing. Aber mein Job besteht zum großen Teil darin, dass ich die technische Seite verstehe und da hab ich die Erfahrung gemacht, dass Marketing Begriffe eine Fauna an Bodendeckern liefern, die die Sichtweise auf die nackten technischen Tatsachen eher verstellen. Aber nein. Ich hab damit kein Problem.
Zitat
They expect to add more composite application functionality, such as a Click-2-Action UI and templated Notes components, and eventually to have full support of Java views for more than PIM. Though, Eisen said wryly, "You're welcome to try now." Later enhancements, he says, should include APIs for productivity editors and deeper RSS/ATOM integration.
Schaun mer mal. Besser "Time is on my side" von den Stones als "I am still waiting" von Donna Summer. Also rolle ich meine eigenen plug-ins. Wär schlimm, wenn ich für Click-2-Action IBM bräuchte. Was heisst das. Ich klicke irgendwo und es startet eine Aktion ? Wahnsinn. Das da keiner früher drauf gekommen ist.

Bernward Vesper

PS.
Das war ein kleiner Scherz. Ich möchte nur dieses kleine Buch empfehlen. Wirklich ein gutes Buch. Zumindest für mich.
http://www.amazon.de/Ensslin-Baader-Urszenen-deutschen-Terrorismus/dp/3596156912/sr=8-2/qid=1157392571/ref=pd_ka_2/303-2025857-5155415?ie=UTF8&s=gateway
Titel: Re: eclipse plug-in Entwicklung: Kommt man da rein?
Beitrag von: flaite am 06.09.06 - 08:27:57
Gestern habe ich mir nun ein weiteres Buch gekauft:
Berhold Daum, Rich Client Entwicklung mit eclipse 3.1
http://www.amazon.de/Rich-Client-Entwicklung-mit-Eclipse-3-1/dp/3898643530/ref=pd_bxgy_w_text_b/303-2025857-5155415?ie=UTF8
Berthold Daum hat vorher bereits Bücher über Eclipse Entwicklung herausgegeben. Sie sind z.T. in Englisch und wirklich interessant.
Ralf hat dieses Buch gekauft und bei Amazon.de mit 2 Sternen bewertet (zu viele Themen, oberflächlich). Ich stimme dem teilweise zu. Auch für RCP Entwicklung sind die von mir oben angesprochenen plug-in Bücher die besseren Tutorials. Daums Buch beschreibt da eher RichClient Application mässige Erweiterungen. Das aber hochinteressant.

In den mehr Tutorial-Artigen Büchern gibts den lineareren Aufbau:
-> plugin-Architektur -> einzelnes plug-in grober Aufbau -> swt-api -> jface-Api -> Views -> Editoren -> Aktionen -> Wizzards, Dialogs -> Perspektives -> Preference & Property Pages -> IDE spezifisches -> Java Development Tools spezifisches -> Help -> Internationalization -> Deployment & Packaging.
Bei Daum ist es weniger linear. Es scheint mir sogar auf die plug-in Bücher aufzusetzen.
Eclipse RCP gibts ja erst seit 3.1 in dieser Form; für Leute, die bereits Erfahrungen mit eclipse-plug-in Entwicklung allgemein haben.
Physisch von den Plug-ins hergesehen ist Eclipse RCP erstmal eine Teilmenge von Eclipse. Die IDE-spezifischen Teile werden da nicht benötigt. Daum schlägt nun mehrere Lösungen für verschiedene Rich Client mässigen Erweiterungen vor:
- Datenspeicherung in xml und RDBMS
- Synchronisation der Daten zwischen Clients und Server
- Erweiterungen basierend auf dem Graphical Editing Framework
- OpenOffice einbinden
- PDF Generierung

Auf die Verteilung der Clients und dem update Mechanismus der Anwendungen wird sehr umfassend eigegangen.

Nach ein paar Leseproben habe ich den Eindruck, dass das Buch sehr gut und differenziert geschrieben ist, sich aber an den erfahreneren Eclipse plug-in Entwickler richtet.

Gruß Axel
Titel: Re: eclipse plug-in Entwicklung: Kommt man da rein?
Beitrag von: Mark³ am 06.09.06 - 09:36:46
ich habe das Buch von Daum als Einstieg in die Entwicklung mit Eclipse genutzt, leider habe ich es nur halb durchgearbeitet bisher. Es waren ganz gute Aspekte drin, aber oft war es mir zu speziell und an sein Beispiel gebunden, welches ich nicht einmal komplett importieren konnte da da viele Abhängigkeiten zu anderen Sachen drin waren und auf der Webseite die Update-Site nicht funktionierte (letztes Jahr Weihnachten habe ich das gekauft).

Zumindest konnte ich auch mit Hilfe des Buches meine ersten kleinen RCPs erstellen. Bei der Problematik mit Fehlern bei der Projekterstellung und manuell zu bearbeitenden Manifest-Dateien etc konnte das Buch nicht helfen, da muss man wohl grundlegendere Sachen nehmen.
Titel: Re: eclipse plug-in Entwicklung: Kommt man da rein?
Beitrag von: flaite am 08.09.06 - 08:39:19
Eclipse besitzt ein wirklich komplexeres Objektmodell. Da ist gerade das sehr tutoriumsartig aufgebaute Buch von Eric Clayberg wirklich hilfreich. Für mich zumindest. Da bekommt man z.B. die zahlreichen Aspekte einer View erklärt. ContentProvider, Sorter, Filter, LabelProvider und und und. Ist zwar nicht grenzenlos, aber sicher auch nicht gerade klein.
Vertieft man sich da ein bischen mehr, kann man auch nicht triviale Dinge zu OO mitbekommen. Schliesslich kamen zumindest in der Anfangszeit die meisten Eclipse-Entwickler von den Visual Age Produkten (die in Small Talk entwickelt waren, viele Small Talk Entwickler wechselten auf Java). Die brachten also schon 1998 oder 99 klare und komplexe Ideen bezüglich von Objektmodellen für IDEs mit.
Wirklich flexible Objektgebilde verursachen eine gewisse Komplexität. Detailierte Erklärungen sind hier für mich hilfreich.
Titel: Re: eclipse plug-in Entwicklung: Kommt man da rein?
Beitrag von: Ralf_M_Petter am 08.09.06 - 09:28:00
Möchte nochmal zu dem Daum Buch zurückkommen. Bin nachwievor verärgert mir das Buch gekauft zu haben, da es wirklich eine buntes Sammelsurium verschiedenster Themen ist, die teilweise zwar mit RCP zu tun haben, aber viel besser in anderen Büchern erklärt werden. z. B. hätte man sich die Datenbankengeschichte hier sparen können. und dafür etwas mehr über die Entwicklung von Plugins und wie man die dann zu einer RCP Anwendung zusammenführt. Das kommt in dem Buch viel zu kurz. Werde mir mal die anderen Bücher die Axel erwähnt hat anschauen. Wobei sehr gut sind auch die kurzen Tutorials die IBM jetzt zu Sametime veräffentlicht. Das sind nämlich leichter zu verstehen weil man auch echten Nutzen sieht.

Grüße

Ralf
Titel: Re: eclipse plug-in Entwicklung: Kommt man da rein?
Beitrag von: flaite am 08.09.06 - 10:05:33
Ralf,

ich stimm dem nicht ganz zu. B. Daum ist auf jeden Fall kein Poser (wie so mancher andere Autor) und kennt das Thema. Manche Darstellungen isnd wirklich gut. Z.B. "Die Kernklassen der Eclipse Plattform" hab ich so nirgendwo anders gesehen. Anderes Beispiel: Er ist der einzige, der über das Forms Api schreibt.

Je nach Perspektive sind die Themen in Teil 3 (z.B. Integration mit Hibernate), 4  (z.B. Integration mit OpenOffice) und 5 nicht unbedingt wahllos. Gerade für RichClient Anwendung sind Persistenz, Integration von "DesktopAnwendungen" und Datensynchronisation Themen.
Nur ist das nicht unbedingt glücklich als Einstieg in plug-in Entwicklung.
Für mich ist Eclipse selbst so komplex, dass kleinschrittigere, tutorialartige Bücher notwendiger erscheinen.
Hab mir das Daum Buch aber auch gekauft.  ;)

Gruß Axel
Titel: Re: eclipse plug-in Entwicklung: Kommt man da rein?
Beitrag von: flaite am 12.09.06 - 15:24:55
Für das reale Projek, dessen Alpha Version soeben abgenommen wurde und ab morgen im produktiven Einsatz sein wird, brauche ich alle Bücher zusammen, d.h. v.a. Jim D' Anjou et. al. und Clayberg, Rubel. Clayberg hat seine Stärken bei den Basics, die sehr, sehr gut & gründlich behandelt werden und Jim D' Anjou bei den etwas weitergehenden Sachen wie Workspace Resource Programming (Dateien in Projekt programmatisch verwalten) und der Erweiterung der Eclipse Java Development Tools von Eclipse. Beides sind wichtige Themenbereiche in meinem Projekt.
Je mehr man versteht, desto eher kann man sich von den zahlreich vorhandenen plug-ins "inspirieren" lassen. Eine solide Beherrschung der Basics ist sehr wichtig.

Gruß Axel
Titel: Re: eclipse plug-in Entwicklung: Kommt man da rein?
Beitrag von: flaite am 12.09.06 - 16:37:14
Eine unschuldiges
Code
throw new RuntimeException("test-Exception");
(zum Test meiner Errorhandlingstrategie) wirft diesen Stacktrace:

Code
java.lang.RuntimeException: test-Exception
	at com.eip.cbeed.integration_tool.interact.ImportXmlArtefactsAction.doImport(ImportXmlArtefactsAction.java:246)
	at com.eip.cbeed.integration_tool.interact.ImportXmlArtefactsAction.createDirectly(ImportXmlArtefactsAction.java:163)
	at com.eip.cbeed.integration_tool.interact.ImportXmlArtefactsAction.run(ImportXmlArtefactsAction.java:145)
	at org.eclipse.ui.internal.PluginAction.runWithEvent(PluginAction.java:254)
	at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:539)
	at org.eclipse.jface.action.ActionContributionItem.access$2(ActionContributionItem.java:488)
	at org.eclipse.jface.action.ActionContributionItem$5.handleEvent(ActionContributionItem.java:400)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:66)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:928)
	at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3348)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:2968)
	at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:1914)
	at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:1878)
	at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:419)
	at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
	at org.eclipse.ui.internal.ide.IDEApplication.run(IDEApplication.java:95)
	at org.eclipse.core.internal.runtime.PlatformActivator$1.run(PlatformActivator.java:78)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:92)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:68)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:400)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:177)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:585)
	at org.eclipse.core.launcher.Main.invokeFramework(Main.java:336)
	at org.eclipse.core.launcher.Main.basicRun(Main.java:280)
	at org.eclipse.core.launcher.Main.run(Main.java:977)
	at org.eclipse.core.launcher.Main.main(Main.java:952)
Wer denkt "IT würde immer einfacher", der irrt sich.

Axel
Titel: Re: eclipse plug-in Entwicklung: Kommt man da rein?
Beitrag von: flaite am 12.09.06 - 20:13:06
Tja. Und irgendwann verlässt man die Grundschule und schaut sich in den eclipse-plugin Foren um.
Es gibt ein Webinterface sowie eine nach Themenbereichen detailliert untergliederte Suche.
Ohne die hätte ich es nicht geschafft:

http://dev.eclipse.org/newslists/news.eclipse.tools.jdt/msg01000.html

So macht man programmatisch aus einen "normalen" Ordner einen Source-Folder, Bestandteil des Classpath des Projekts.
Als Beispiel dafür, dass ich manche Teile für historisch gewachsen halte. Geht aber. Oder besser: Geht nur, wenn man weiss, wo man nachschauen könnte und selbst dann braucht es ein wenig für die Suche.
Code
		// Add a folder to the classpath. 
//		IJavaProject jProject = project.getProject();
		//1. create the folder (new File()...)
		//2. Obtain a reference to your project (as IProject)
		//3. Obtain a reference to your java project (as IJavaProject)
		//4. Fetch e.g. the raw classpath with getRawClasspath() (on IJavaProject)
		//5. Add your new entry (set the type to IClasspathEntry.CPE_SOURCE) to the
		//previously fetched classpath array.
		//6. Set the new raw classpath on your IJavaProject.
		//folder.getR 
		
		
		IJavaProject jProject = JavaCore.create(project);
		IFolder folder = project.getFolder("/src1");
		IPath newPathEntry = folder.getFullPath();
		IClasspathEntry[] cpEntries = jProject.getRawClasspath();
		/*
		for (IClasspathEntry cpEntry : cpEntries) {
			System.out.println("cpEntry=" + cpEntry);
		}
		*/
		IClasspathEntry pSourceEntryNew = JavaCore.newSourceEntry(newPathEntry);
		
		List <IClasspathEntry> pEntriesList = new ArrayList(Arrays.asList(cpEntries));
		pEntriesList.add(pSourceEntryNew);
		IClasspathEntry[] cpEntriesNew = new IClasspathEntry[cpEntries.length + 1];
		
		pEntriesList.toArray(cpEntriesNew);
		jProject.setRawClasspath(cpEntriesNew, null);
      
Titel: Re: eclipse plug-in Entwicklung: Kommt man da rein?
Beitrag von: flaite am 13.09.06 - 13:44:03
Tja. Und irgendwann verlässt man die Grundschule


Tja_2. Und am Folgetag fällt einem auf, dass man wieder in den Kindergarten zurücksollte.
Einen Array um 1 Mitglied zu erweitern geht natürlich mit Systems.arraycopy und nicht mit der Unendlichen Geschichte da oben.  ::)

Code
		IJavaProject jProject = JavaCore.create(project);

		IPath newPathEntry = folder.getFullPath();
		IClasspathEntry[] cpEntries = jProject.getRawClasspath();
		/*
		 * for (IClasspathEntry cpEntry : cpEntries) {
		 * System.out.println("cpEntry=" + cpEntry); }
		 */
		IClasspathEntry pSourceEntryNew = JavaCore.newSourceEntry(newPathEntry);

		// if a sourcefolder with the same path does allready exist, return
		for (IClasspathEntry cpEntry : cpEntries) {
			if (cpEntry.getPath().equals(pSourceEntryNew.getPath())) {

				return false;
			}
		}

		// add the new sourceFolder at the 1st position.
		IClasspathEntry[] newCPEntries = new IClasspathEntry[cpEntries.length + 1];
		System.arraycopy(cpEntries, 0, newCPEntries, 1, cpEntries.length);
		newCPEntries[0] = pSourceEntryNew;
		jProject.setRawClasspath(newCPEntries, null);

		return true;


Titel: Re: eclipse plug-in Entwicklung: Kommt man da rein?
Beitrag von: flaite am 20.09.06 - 11:55:50
Eine plug-in Seite lässt sich schnell erstellen.
Dafür muss man das/die plug-ins erstmal in ein feature packen.
Die plug-in Seite ist dann eine Webseite (ein Geraffel aus xml, html, Bildern, die plug-ins als jars zum downloaden).
In Eclipse kann dann der plug-in User über help / software updates  problemlos updates beziehen.
Dies ist eine gute Lösung für das traditionelle Client-Server Problem: wie mache ich updates auf die clients.
Die Website (d.h. das von Eclipse erzeugte xml, html, jar-zum-download, bilder-Geraffel legt man auf einen html Server. Ich nehm für sowas Tomcat, apache, IIS, was-auch-immer gehen aber auch.
So ganz automatisch ist es bei mir für das update leider nicht gelaufen. Allen Beteiligten (plugin, feature, update-site) die neue Versionsnummer 1.0.1 beizubringen war nicht so einfach, ging aber nach einigen Kampf doch. Ich hab wohl noch etwas falsch gemacht. Egal.
In der update Seite kann man dann noch branding-Elemente und Lizenzbestimmungen angeben. Sieht dann wirklich ziemlich professionell aus. Und ich seh das eindeutig als eine Herausforderung für die Geschäftsführung. Den hiesigen Admin dazu zu motivieren, dass Eclipse plug-in Administration das DING überhaupt ist, fällt ein bischen schwieriger. Ingo glaubt eben leider nicht alles.  :'(
Titel: Re: eclipse plug-in Entwicklung: Kommt man da rein?
Beitrag von: Mark³ am 20.09.06 - 12:06:08
dieser Wust an Versionsnummern bringt mich immer zur Verzweiflung...

In meiner RCP-Anwendung habe ich anfangs versucht, Änderungen durch neue Versionsnummern zu dokumentieren. Leider kam ich schnell durcheinander mit den Versionsnummern für Plug-Ins und Products und welche Version nutzt das Product von meinem Plugin etc. Hier ist das alte Phänomen bei Eclipse zu sehen: Einige Dinge passieren automatisch, andere aber nicht, so dass man dann doch alle xml- und Manifestdateien etc. im Quelltext durchsuchen muss und überall die Versionsnummern angleichen muss.
Aus Anwendersicht möchte ich bei Änderungen im Quellcode einfach einen Dialog bekommen: Versionsnummer hochzählen? Ja/Nein. Vielleicht in Eclipse 4.0 !?
Titel: Re: eclipse plug-in Entwicklung: Kommt man da rein?
Beitrag von: flaite am 20.09.06 - 13:52:03
Ich hab
1 Feature
1 Plugin
Ich zähle beide parallel hoch.
Das Feature wird dann in der update-Site referenziert (und das feature referenziert das plug-in).

Wenn plug-in 1.0.1 bekommt, bekommt das feature auch 1.0.1
Das geht eigentlich.
Nur leider eben nicht wirklich automatisch. Vielleicht finde ich noch einen Weg.

Ein bischen ätzend ist, dass (für den Anfänger wie mich) bestimmte Sachen nicht einfach zu implementieren sind, obwohl es für die Anwender einfach aussieht. Z.B. soll jetzt ein Eintrag in der dropDown Liste nicht nur auf rechte Maustaste Projekt erscheinen sondern eben auch auf rechte Maustaste xml-Datei. Oder Rechte Maustaste .Java Datei. Oder rechte Maustaste Ordner. Jeder erzählt mir hier, dass das bestimmt sehr einfach zu implementieren ist. Ist es für mich aber leider z.Zt. nicht. Sieht nur einfach aus. Aber gut.
Titel: Re: eclipse plug-in Entwicklung: Kommt man da rein?
Beitrag von: Mark³ am 20.09.06 - 14:01:25
bzgl. rechtes Maustastenmenü: Meinst du folgendes?

Code
// create context menu
MenuManager manager = new MenuManager();
Menu menu = manager.createContextMenu(viewer.getControl());
viewer.getControl().setMenu(menu);
manager.add(new UnrelateCiContextAction(viewer));

Dies ist der Kot um ein Kontextmenü einzubinden. So kannst du eine ganz normale Action einbinden.
Titel: Re: eclipse plug-in Entwicklung: Kommt man da rein?
Beitrag von: flaite am 20.09.06 - 15:31:25
Vielleicht so ähnlich oder ganz anders.

Ich hab die Kontextmenüs jetzt so: 
Code
 <extension
         point="org.eclipse.ui.popupMenus">
[...]
<!-- 1. -->
  <objectContribution
            id="com.eip.cbeed.programming.menu"
            objectClass="org.eclipse.jdt.core.IJavaProject">    
            <visibility>
            <and>
               <objectState
                     name="nature"
                     value="org.eclipse.jdt.core.javanature"/>
               <objectState
                     name="nature"
                     value="com.eip.cbeed.eipNature"/>
            </and>
         </visibility>
            
            <action
               label="Export Into Ergo Portal"
               icon="icons/notes.gif"
               class="com.eip.cbeed.interact.ExportToDominoAction"
               id="Project"/>     

        </objectContribution>

<!-- 2. -->

      <objectContribution
            id="com.eip.cbeed.programming.menu"
            objectClass="org.eclipse.core.resources.IFolder">    
           
            
            <action
               label="Export Into Ergo Portal 2"
               icon="icons/notes.gif"
               class="com.eip.cbeed.interact.ExportToDominoAction"
               id="Folder"/>     

        </objectContribution>
<!-- 3. -->
      <objectContribution
            id="com.eip.cbeed.programming.menu"
            objectClass="org.eclipse.core.resources.IFile">    
           
            
            <action
               label="Export Into Ergo Portal 3"
               icon="icons/notes.gif"
               class="com.eip.cbeed.interact.ExportToDominoAction"
               id="File"/>     

        </objectContribution>
[...] 
</extension>
       
   
Praktisch in 3facher Ausführung. Das oberste ist für rechte Maustaste/Projekt sichtbar, das 2. für rechte Maustaste/Folder und die 3. und letzte für rechte Maustaste/File.
Das funktioniert auch soweit. Das Problem ist nur, dass ich nur die erste Aktion schön verborgen bekomme für Projekte, die nicht EIP Nature haben. Bei den anderen Aktionen klappt das nicht. Die sind dann in allen Projekten sichtbar und das soll nicht so sein.

 
Diese 3 popup Extensions rufen jeweils automatisch die Methode dieser Klasse auf. Nach der ID (s. action.id im xml):
Code
public class ExportToDominoAction extends ActionResourceAction implements
		IViewActionDelegate, IWorkspaceRunnable {
[...]
public void run(IAction action) {
		LogHelper.logInfo("run(IAction action) called [action=" + action + "]");
		if (action.getId().equals("Project")) {
			
			
			project = getIProject(this.selection.getFirstElement());
			
		
			doExport();
		} else if (action.getId().equals("Folder")) {
			IFolder folder = (IFolder) this.selection.getFirstElement();
			project = folder.getProject();
		} else if (action.getId().equals("File")) {
			IFile file = (IFile) this.selection.getFirstElement();
			project = file.getProject();
			
		}
Noch nicht fertig, da nur der oberste if doExport aufruft (und da ist die Business Logik).

Titel: Re: eclipse plug-in Entwicklung: Kommt man da rein?
Beitrag von: Mark³ am 20.09.06 - 15:49:27
das ist dann wohl eher anders bei dir...
ich habe während der Erstellung meiner Actions schon irgendwie mitbekommen dass es hier verschiedene Paradigmen gibt, wie man Actions einbindet. Das Ganze ist für einen aus der Krabbelgruppe wie mich dann doch alles sehr verwirrend. Zumal ich nur das RCP-Buch hatteund keins deiner Grundlagenbücher...
Aber eigentlich will ich mich auch gar nicht in diesen XML-Dateien tummeln sondern möchte die Actions mit Eclipse-Gui anlegen...
Titel: Re: eclipse plug-in Entwicklung: Kommt man da rein?
Beitrag von: flaite am 20.09.06 - 17:04:18
Meine Methode hat natürlich den Vorteil das ich gar keine view erstelle. Das sind globale extensions des popUp extensionPoints.
Titel: Re: eclipse plug-in Entwicklung: Kommt man da rein?
Beitrag von: flaite am 21.09.06 - 07:29:24
Aber eigentlich will ich mich auch gar nicht in diesen XML-Dateien tummeln sondern möchte die Actions mit Eclipse-Gui anlegen...
Es ist in plugins.xml. Dafür gibts ja auch eine GUI Maske.
Titel: Re: eclipse plug-in Entwicklung: Kommt man da rein?
Beitrag von: Mark³ am 21.09.06 - 07:54:47
das zeigt mir wieder, dass man zwar viel erreichen kann, ohne alles komplett zu verstehen, für bestimmte Details dann aber doch ein fundiertes Hintergrundwissen erforderlich ist.
Wenn ich plugin.xml im Manifest-Editor öffne sehe ich viele Extensions (org.eclipse.ui.views, ...commands etc) aber keine Extension Points. Ich kann mir allerdings den Extension Point für org.eclipse.ui.views anzeigen lassen, wenn ich danach suche. Er erscheint aber nicht in der Ansicht 'All Extension points' des Manifest-Editors, weil hier dann offenbar nur selbst erzeugte auftauchen.
Wie gern würde ich mich mal richtig einarbeiten in RCP, momentan komme ich leider nicht dazu und muss mit meinem Halbwissen kämpfen...
Titel: Re: eclipse plug-in Entwicklung: Kommt man da rein?
Beitrag von: flaite am 05.10.06 - 11:10:44
Nur leider eben nicht wirklich automatisch. Vielleicht finde ich noch einen Weg.
Das geht jetzt. Wobei ich im site.xml des update site Projekts immer noch ein bischen manuell nachhelfen muß.
1. Schritt: Version Nummer des/der plug-ins im plugin.xml um 1 hochzählen. SPEICHERN.
2. Schritt: feature.xml des Features öffnen.
3. Schritt: In Feature.xml auf plug-ins Tab wechseln. Dort rechte Maustaste. Synchronize Version. Die Version der eingebundenen plugins zählt 1 hoch. Dann Version des Features selber im ersten Tab von feature.xml hochzählen. SPEICHERN)
4. Schritt: site.xml in update-Site Projekt öffnen. Hier alle Referenzen manuell auf die neue Versionsnummer ändern (jars, usw.). SPEICHERN.
5. Auf den ersten Reiter der site.xml wechseln. Site mit Maus highlighten. Build-Button drücken.

Fertig. So kann ich bei Bedarf innerhalb von 10 Minuten eine neue Version auf den Server bringen, den das Team dann in ihr Eclipse läd. Die müssen dann ihr Eclipse neu starten.

Bei manchen - zur Zeit für das Projekt zum Glück nicht wirklich kritischen - Themen rätsel ich noch rum. Zum Beispiel läuft die Verbindung von Infoboxen für den Anwender und Userinitiierte Prozesse über die (multithreaded) Job-Api nicht richtig. Da muß ich mal nachforschen.

Absolut positiv: Man bekommt überall Beispielcode. Z.B.: Dominiclipse - immerhin ein plug-in mit dem man laut Ben Poole problemlos Java Code aus Notes Agents nach Eclipse auslagern kann - ist openSource und ich habs mir den Source Code des Plug-ins in eins meiner Eclipse Installationen runtergeladen, weiss wie ich es debuggen kann, etc. (http://benpoole.com/weblog/200610031509).  Gleiches gilt für allemöglichen Eclipse-plugins (z.B. von Jboss) oder Rich Client Produkte (z.B. http://jlibrary.sourceforge.net/)

Gruß Axel

 
Titel: Re: eclipse plug-in Entwicklung: Kommt man da rein?
Beitrag von: flaite am 07.11.06 - 14:09:49
Jedenfalls macht die ziemlich lose plug-in Struktur die ganze Geschichte nicht einfacher.
Gestern hab ich ca. 6 Stunden benötigt um herauszufinden, dass ich aus Versehen einen Default-Konstruktor gelöscht habe.
Danach startete das plug-in zwar noch, warf aber bei absolut jeder Funktion einen Fehler.
Den Konstruktor habe ich mir aus einen Buch kopiert, so dass mir das wahre Ausmaß seiner Bedeutung nicht wirklich klar war.
Naja. Erfahrung sollte klug machen.
Aber solche Dinge passieren.
Titel: Re: eclipse plug-in Entwicklung: Kommt man da rein?
Beitrag von: flaite am 14.11.06 - 07:58:39
Nun hat auch aus meiner Sichtjemand seine Meinung bezüglich Lotus-on-Eclipse geändert, der in den letzten Monaten durch seine bekannt "fundierten Kritiken" an Lotus-on-Eclipse aufgefallen ist.
Ich spreche über den Stolz und die Zierde Südhessens.
http://vowe.net/archives/007886.html
Für mich geht aus dem Artikel hervor, dass ihm Insider bei ein paar Bembel Wein die Sache mal ein bischen klarer dargestellt haben. Vorher wars ihm einfach zu marketing-chifriert. Naja. Vielleicht ist dem guten Mann die Welt des Marketings einfach zu fremd.
Zu Lotus Expeditor:
http://entwickler-magazin.de/zonen/magazine/psecom,id,6,news,31786,p,0.html
Titel: Re: eclipse plug-in Entwicklung: Kommt man da rein?
Beitrag von: Mark³ am 14.11.06 - 09:48:44
ich konnte keinen lesenswerten Inhalt in Vowes Seite finden. Da mach ich liebr weiter mit meinem RCP.
Ich rufe beim Starten erstmal einen LoginDialog auf, bevor ich die Workbench starte. Leider sind meine Controls nicht sichtbar im Popup...Ist sicher ein läppisches Anfängerproblem aber ich sehs nicht momentan...Falls ich nicht selbst drauf komme werde ich mal im Forum nachfragen ;-)
Titel: Re: eclipse plug-in Entwicklung: Kommt man da rein?
Beitrag von: flaite am 14.11.06 - 11:14:16
Ich schau mir soweit es meine Zeit zuläßt Plug-ins und RCP-Produkte von anderen Leuten an.
Interessant find ich z.Zt.:
Dominiclipse
http://www.domiclipse.com/
und das wesentlich größere JLibrary von Martin Perez u.a. oder besser y o
http://jlibrary.sourceforge.net/

Titel: Re: eclipse plug-in Entwicklung: Kommt man da rein?
Beitrag von: flaite am 14.11.06 - 14:38:37
Expeditor scheint ein extra-Lotus Ding auf Eclipse Basis zu sein. Open Source btw.
Eine gemeinsame, eclipse-technologie-basierte Anwendungsplattform für mobile und Desktopdevices wie es aussieht.  ::)
Hoffentlich haben die sich damit nicht verstrickt  :-\
Titel: Re: eclipse plug-in Entwicklung: Kommt man da rein?
Beitrag von: Mark³ am 15.11.06 - 07:36:08
Lotus Expeditor 6.1 gibt es als Download in der Partnerworld. Ich lad das mal runter um zu sehen was das sein soll...
Ich dachte das wäre nur ein neuer Name für die Workplace-Geschichten??
Titel: Re: eclipse plug-in Entwicklung: Kommt man da rein?
Beitrag von: Mark³ am 15.11.06 - 08:22:29
Aus der Hilfe:
Zitat
Lotus Expeditor Version 6.1 ist der neue Name und die neue Version der früher unter dem Namen IBM WebSphere Everyplace Deployment vertriebenen Software
Das hätte man ja auch gleich sagen können...
Titel: Re: eclipse plug-in Entwicklung: Kommt man da rein?
Beitrag von: flaite am 15.11.06 - 08:51:32
Aber es bekommt eine ganz neue Rolle... glaub ich.
Es fehlen einfach in der IBM User community Leute, die dies k.r.i.t.i.s.c.h. und k.o.m.p.e.t.e.n.t. unter die Lupe nehmen.
Und eben nicht die business consultants, die sich technische geben, dann aber permanent von einem technischen Standpunkt unhaltbare Kritik äußern, um nach ein paar Bembeln Wein dramatisch umzukippen. In anderen Umgebungen geht die Kritik gegen kritikwürdige Punkte und zwar weil die Leute sich mit dem Gegenstand über den sie sich äußern wirklich beschäftigen. Ich brauch das. Ich kann nicht alles selbst zu Ende denken.
Es existieren genug Sachen allein in der Eclipse Plattform, die kritikwürdig sind. Davon soll hier in Folge (auch) die Rede sein.
Titel: Re: eclipse plug-in Entwicklung: Kommt man da rein?
Beitrag von: Mark³ am 15.11.06 - 10:47:22
zurück zu RCP: ich kriege keinen LoginDialog hin  :'( >:(

In meiner Application (IPlatformRunnable) möchte ich vor Erstellen der Workbench eine Authentifizierung haben:
Code
public Object run(Object args) { 
	        WorkbenchAdvisor workbenchAdvisor = new ApplicationWorkbenchAdvisor(); 
	        Display display = PlatformUI.createDisplay();

	        if (authenticate(display)) { 
	            int returnCode = PlatformUI.createAndRunWorkbench(display, 
	                                        workbenchAdvisor); 

	            if (returnCode == PlatformUI.RETURN_RESTART) { 
	                return IPlatformRunnable.EXIT_RESTART; 
	            } else { 
	                return IPlatformRunnable.EXIT_OK; 
	            } 

	        } else 
	            return IPlatformRunnable.EXIT_OK; 
	    } 

	    private boolean authenticate(Display display) { 
	        Shell shell = new Shell(display, SWT.NONE); 
	        LoginDialog loginDialog = new LoginDialog(shell); 
	        loginDialog.setBlockOnOpen(true); 
	        loginDialog.open();
	    Application.serverConnection  = loginDialog.serverConnection;
	        return loginDialog.isAuthenticated; 
	    } 

Den Login-Dialog erzeuge ich mit dem VisualEditor, geht ganz einfach und sieht genau so aus wie ich mir das vorstelle...Nur leider wird er leer angezeigt wenn meine Anwendung ihn aufruft. Hier ist der Code:

Code
public class LoginDialog extends TitleAreaDialog {

	

	private Shell sShell = null;  //  @jve:decl-index=0:visual-constraint="0,0"
	private Composite composite = null;
	private Group logonGroup = null;
	public boolean isAuthenticated;
	private Label labelServer = null;
	public ApiSDSession serverConnection;

	public LoginDialog(Shell arg0) {
		super(arg0);
		// TODO Auto-generated constructor stub
	}
	
	/**
	 * This method initializes sShell	
	 *
	 */
	private void createSShell() {
		sShell = new Shell();
		sShell.setLayout(new GridLayout());
		sShell.setText("Login Dialog");
		createComposite();
		sShell.setSize(new Point(447, 260));
	}

	/**
	 * This method initializes composite	
	 *
	 */
	private void createComposite() {
		composite = new Composite(sShell, SWT.NONE);
		composite.setLayout(new GridLayout());
		createLogonGroup();
	}

	/**
	 * This method initializes logonGroup	
	 *
	 */
	private void createLogonGroup() {
		logonGroup = new Group(composite, SWT.NONE);
		logonGroup.setLayout(new GridLayout());
		labelServer = new Label(logonGroup, SWT.NONE);
		labelServer.setText("Label");
	}

}  //  @jve:decl-index=0:visual-constraint="0,0"

Komisch ist, dass normalerweise immer createContentArea implementiert wird im TitleAreaDialog, aber der VisualEditor macht das leider anders. Ausserdem habe ich sonne komische JavaBean this im VisualEditor, die mir seit kurzem immer ein NullpointerException(null) anzeigt (der VisualEditor arbeitet aber normal weiter). Also alles Mist mit VE (ich habe übrigens Callisto 3.2)  Was fehlt denn an meinem LoginDialog? Kann ich da was ergänzen oder wie schreibe ich den ohne Visual Dreck?
Titel: Re: eclipse plug-in Entwicklung: Kommt man da rein?
Beitrag von: flaite am 15.11.06 - 12:31:33
Auf automatische Gui-GenerierTools die Exceptions werfen, kannst du dich eigentlich nicht verlassen.
Oft entdeckt man die Probleme dann auch im Debugger.
Ich vermute, dass du Teile von createSShell() und createSShell()  in eine extra Methode auslagern mußt die du extra ansprichst.
(vor loginDialog.open()).

Gruß Axel
Titel: Re: eclipse plug-in Entwicklung: Kommt man da rein?
Beitrag von: Mark³ am 16.11.06 - 16:00:06
hab jetzt das Buch
Zitat
Eclipse Rich Client Platform: Designing, Coding, and Packaging Java™ Applications
das ist viel besser als das von bdaum.

Da ist auch ein LoginDialog drin genau wie ich ihn brauche. Nun fehlt mir das Darstellen einer csv-Datei in einer View (mit StructuredContentprovider muss das wohl gehen). Leider ist im Internet kein Beispiel dafür vorhanden  ;D
Titel: Re: eclipse plug-in Entwicklung: Kommt man da rein?
Beitrag von: Mark³ am 17.11.06 - 09:08:56
zur Anzeige einer CSV-Datei nehme ich besser einen Editor, genauer gesagt einen Cell Editor. Aber wie ich die CSV daran knüpfe hab ich noch nicht raus. Komisch dass ich da keine Beispiele finde, sowas braucht doch jeder mal irgendwann...

EDIT: Ich glaube Cell Editor war das Stichwort, schau ich doch mal hier: http://devresource.hp.com/drc/technical_white_papers/ecCustomEd/index.jsp
Titel: Re: eclipse plug-in Entwicklung: Kommt man da rein?
Beitrag von: Mark³ am 17.11.06 - 11:20:04
die geniale Lösung von HP scheint nicht zu klappen, da org.eclipse.ui.part.FileEditorInput nicht verfügbar ist. Fehlt wohl im RCP, da man sonst eine Eclipse-Anwendung hätte  :-:  Die Zusammenhänge verstehe ich nicht, aber wahrscheinlich sind da zu viele Abhängigkeiten drin.

Ich hab mal eine Anfrage im Eclipseforum gestellt: http://www.eclipsezone.com/forums/thread.jspa?threadID=84508

Da das sicher wenige atnotesler lesen ist das hoffentlich kein wirkliches x-Posting ???