Lotus Notes / Domino Sonstiges > Java und .NET mit Notes/Domino

eclipse plug-in Entwicklung: Kommt man da rein?

<< < (5/9) > >>

flaite:
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);

--- Ende Code ---
      

flaite:

--- Zitat von: Axel Janssen am 12.09.06 - 20:13:06 ---Tja. Und irgendwann verlässt man die Grundschule

--- Ende Zitat ---


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;

--- Ende Code ---


flaite:
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.  :'(

Mark³:
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 !?

flaite:
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.

Navigation

[0] Themen-Index

[#] Nächste Seite

[*] Vorherige Sete

Zur normalen Ansicht wechseln