Plugin - Properties ohne PropertyPage speichern

dragon_

Mitglied
Guten Tag,
ich arbeite gerade an einem Plugin, dass mithilfe eines Wizards Daten (erstemal Strings) vom Benutzer einliest. Dabei sollen diese Daten gespeichert werden, da sie für den weiteren Verlauf wichtig sind.

Die Frage ist wie speichere ich diese Daten(properties) ab?


  • Ich habe nun zum einen den Begriff persistent properties gefunden, der die properties über den einer Eclispe Session hinaus hällt. Jedoch werden diese properties an eine Resource gebunden, an die ich nur in der PropertyPage mit der Methode
    Java:
    getElement().getAdapter(IResource.class)
    komme. Diese Methode ist aber keine statische Methode sodass eine Instanz vorhanden sein muss. Diese Instanz wiederrum wird aber nur beim Öffnen der PropertyPage erzeugt :(


  • Zum anderne gibt es den Begriff project properties. Hierbei werden die properties für das Projekt gespeichert (eigentlich wie oben auch?!). Hierbei wird über den ProjectScope alles geregelt und die properties als Nodes eingebunden:
    Java:
    IScopeContext context = new ProjectScope(project);
    IEclipsePreferences prefs = context.getNode(Activator.PLUGIN_ID);
    prefs.put(key,value );
    prefs.flush();//speichert alles

    Jedoch besteht hier wiederrum das Problem dass ich nicht weiss wie man an das aktuelle Projekt kommt, ohne zu wissen, wie es heisst. Das heisst die Variable project ist vom Typ IProject. (Es gibt ja keine Selection womit ich das Projekt identifizieren kann)


  • Als dritten Begriff gibts noch den PreferenceStore. Jedoch wenn ich es richtig verstanden habe wird dieser benutzt, um Plugin Preferences zu speichern. D.h. nicht projektbezogene, sondern Plugin- bezoge Einstellungen zu handlen.

Wiess jemand vielleicht Rat bei dem Speichern von Properties, oder gehe ich vielleicht in eine falsche Richtung?

Vielen Dank im Vorraus für jede Antwort.
 

Wildcard

Top Contributor
Erstmal eine Frage:
Dabei sollen diese Daten gespeichert werden, da sie für den weiteren Verlauf wichtig sind.
Sind diese Daten nur für den Wizard wichtig, oder auch relevant nachdem der Wizard beendet wurde? Wenn Ersteres, sind Preferences der falsche Weg.

Wenn letzteres:
Es gibt per Default 4 verschiedene Scopes:
Default - Default Werte
Projekt - bezieht sich auf ein Projekt
Instance - bezieht sich auf einen Workspace
Installation - bezieht sich auf eine Eclipse Installation

Welcher dieser Scopes ist der richtige für dich?
 

dragon_

Mitglied
Ja also es sind Projektinformationen. Also wie, wenn ich bei einem JavaProjekt auf den ContextMenüeintrag "Properties " gehe und auf Resource.

Es sind Informationen, die ich für einen späteren Ablauf im Plugin benötige.

Somit ist Frage zwei auch beantwortet. Ich brauche ProjectScope. Also sie sollen für das Projekt gespeichert werden. Wenn ich ein anderes Projekt habe sollen nur dessen Properties angezeigt werden.
 

Wildcard

Top Contributor
Genau, der ProjectScope ist dann das richtige. Das bedeutet du brauchst eine Referenz auf das Projekt. Wenn dein Wizard ein WorkbenchWizard ist, bekommt er eine selection übergeben. Dort kannst du dann dein Projekt abholen sofern die Action auf einem Projekt aufgerufen wurde.
 

dragon_

Mitglied
Ok das habe ich so noch nicht ganz verstanden.

Also ich habe einen Wizard zum Erstellen eines Java Projektes. Ich habe als Extension "org.eclipse.ui.newWizards" einen Wizard, der von Wizard ableitet und das Interface INewWizard implementiert, eingefügt. Hierbei entstehen nun verschiedene Eingaben vom Benutzer und am Ende gibt es die JavaProjectWizardPages.

Diese Eingaben sollten nun irgendwo gepeichert werden. Hierbei habe ich nicht den Namen des Projektes. Das Projekt wird erst nach dem performFinish() erstellt, daher gibt es dieses vorher nicht.

D.h. das problem ist dass ich keien Selection habe. Weder zum Speichern noch zum Abrufen der Properties. Das Speichern sollte eben intern und nicht von einer Benutzeraktion ausgeführt werden.

Es stellt sich also die Frage wie bekomme ich mein Projekt zur Laufzeit des Plugins.
 

Wildcard

Top Contributor
Diese Eingaben sollten nun irgendwo gepeichert werden. Hierbei habe ich nicht den Namen des Projektes. Das Projekt wird erst nach dem performFinish() erstellt, daher gibt es dieses vorher nicht.
Den Namen musst du haben. Wie willst du das Projekt erstellen, wenn du den Namen nicht kennst?
 

dragon_

Mitglied
Den Namen musst du haben. Wie willst du das Projekt erstellen, wenn du den Namen nicht kennst?

Nein ja also in performFinish() habe ich den Projektnamen. Durch die Methode NewJavaProjectPage.getProjectName() bekommt man diesen. Aber den Namen irgendwo zu speichern ist schlecht. Und zwar aus dem Grund, dass der Benutzer sein Projekt umbenennen kann und dann hat man ein Problem wenn man mit diesen Namen, den man bei der Erstellung angegeben hat, benutzt. Deshalb war die Frage wie kommt man an den Namen des Projektes zur Laufzeit ohne Selection??
 

Wildcard

Top Contributor
Wer redet denn davon den Namen des Projekts irgendwo zu speichern? Du brauchst den Namen nur zum performFinish Zeitpunkt um den richtigen Projekt Scope zu erstellen und dort deine Settings zu hinterlegen.
 

dragon_

Mitglied
Jop ok danke , genau soviel habe ich auch verstanden. Sorry ich bin schon ein Schritt weiter gegangen.
Ok also die Einstellungen kann ich nun speichern.


Die nächste Frage wäre nun, wie ich auf die Einstellungen zugreife? Man wird hierfür ja auch den ProjectScope benötigen.
Java:
IScopeContext context = new ProjectScope(project);
IEclipsePreferences prefs = context.getNode(Activator.PLUGIN_ID);
prefs.put(key,value );

Der einzige Unterschied wird sein, dass man anstelle von put, ein get benutzt.
D.h. wie kommt man nun dazu, auf die properties zuzugreifen?
 

dragon_

Mitglied
OK, vielleicht habe ich auch nur gerade einen Gedankenfehler. Also Szenario:

  • Ich baue als erstes mir mit Hilfe des Wizards ein neues Java Projekt. Bei dem Klick auf Finish (performFinish Methode) speichere ich mir meine Einstellungen ab. Hierbei ist alles klasse.
  • Ich beende Eclipse und starte es neu. Ich gehe nun auf das Projekt und rufe die propertiesPage auf um die Properties dort auszulesen und anzuzeigen. Ok hierbei werde ich wohl mit Hilfe der getElement().getAdapter(IProject.class) auf das Projekt kommen.
  • Nun will ich z.B eine Funktion anstoßen, bei der diese properties gebraucht werden. Dabei muss ich auch wiederrum über das Contextmenü das Projekt auswählen, wodurch ich eine ISelection habe. Damit würde ich auch an das Projekt glaube ich kommen.

Ok ich habe nun meinen Gedankenfehler gemerkt ;) Sorry. Ich habs nur nochmal für andere Leser zusammengefasst, was ich machen wollte.

Ich werde es gleich oder morgen früh einmal so ausprobieren und schaun ob ich noch Fragen habe oder das Thema als erledigt markieren kann.

Schon einmal einen rießen Dank an Wildcard. :applaus:
 

Wildcard

Top Contributor
Ich glaube jetzt hast du's :)
Noch zur Info: die Einstellungen liegen dann auch tatsächlich im Projekt. Genauer im versteckten Verzeichnis .setings. Der angenehme Seiteneffekt: damit können die Projektspezifischen Eigenschaften ins Repository committed werden und sind damit allen Team Mitgliedern zugänglich.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Eclipse Plugin PreferencePage BooleanFieldEditor Plattformprogrammierung 1
F OSGi Plugin unter Eclipse arbeitet anders als wenn veröffentlicht Plattformprogrammierung 2
R Aktuelle Datei in Plugin bearbeiten Plattformprogrammierung 2
Farbtopf Tomcat durch anderes Plugin neustarten Plattformprogrammierung 0
Farbtopf Plugin Wunsch Plattformprogrammierung 0
J Charset-Problem nach Plugin-Export Plattformprogrammierung 1
J RCP File Path von selected File in Package Explorer für RCP Plugin Plattformprogrammierung 2
TheWhiteShadow RCP Problem mit Plugin Interaktion Plattformprogrammierung 6
R Einfaches Eclipse-Plugin-Beispiel funktioniert nicht Plattformprogrammierung 5
C plugin development environment eclipse Plattformprogrammierung 4
M Keybinding in Eclipse Plugin Plattformprogrammierung 3
M RCP Plugin Extension Point ist NULL Plattformprogrammierung 7
B Eclipse Plugin Einstellungsleiste Plattformprogrammierung 2
M Plugin - Property Page - Get IResource in View Plattformprogrammierung 4
O Eclipse Plugin - Einfachstes Problem, das es gibt. Plattformprogrammierung 2
L RCP Plugin Template erweitern Plattformprogrammierung 2
I Plugin Testen mit Fragment Project Plattformprogrammierung 2
3 Eclipse Editor Plugin selektiert Projekt nicht Plattformprogrammierung 10
A OSGi Plugin als Service exportieren und verwenden Plattformprogrammierung 12
T RCP Eclipse RCP: Wo/wann im Plugin ist workbench initialisiert? Plattformprogrammierung 14
V Eigenständige Applikation als Jar in Plugin einbinden Plattformprogrammierung 2
D Plugin - JUnit - Tests aus einem anderen Projekt ausführen Plattformprogrammierung 7
F [FileLocator] Verzeichnisse im Plugin Plattformprogrammierung 2
L RCP Plugin mit häufig benutzen third libraries Plattformprogrammierung 11
C Eclipse Plugin NoClassDefFoundError Plattformprogrammierung 4
M Eclipse Plugin Entwicklung - NoClassDefFoundError Plattformprogrammierung 10
C Eclipse Plugin Entwicklung: Editor für Flussdiagramme Plattformprogrammierung 6
F Ecilpse plugin und MWE Workflow: classpath Problem Plattformprogrammierung 12
M RCP Aktivierung eines CommandHandlers, Änderungen in der plugin.xml wirken sich nicht aus... Plattformprogrammierung 2
R Frage zum RCP Plugin-Mechanismus. Plattformprogrammierung 2
B RCP eigenes Eclipse Plugin wird nicht aufgelöst Plattformprogrammierung 7
P Wie bekomme ich ICompilationUnit aus dem event? bei Eclipse-Plugin Plattformprogrammierung 3
M RCP Resources Plugin nutzen und erweitern... aber wie? Plattformprogrammierung 6
X Datei in einem Eclipse Projekt über Plugin zugreifen Plattformprogrammierung 2
J Plugin wird nicht mit gestartet Plattformprogrammierung 4
D Team Plugin Erweiterung Plattformprogrammierung 4
L RCP Plugin als Bundle geklarieren? Plattformprogrammierung 3
hdi Frage zu Eclipse Plugin Development Plattformprogrammierung 12
D Canvas auf View in Eclipse PlugIn Plattformprogrammierung 3
M Eclipe RCP-Application oder Plugin Einstieg Plattformprogrammierung 6
O Problem mit relativen Pfaden in einem RCP-Plugin Plattformprogrammierung 5
hdi Plugin Icon wird nicht angezeigt Plattformprogrammierung 7
H Bibliotheken in Eclipse-Plugin-Projekt verwenden. Plattformprogrammierung 18
T Java Rcp Plugin laden Plattformprogrammierung 4
H Eclipse-Plugin erstellen Plattformprogrammierung 22
hdi Schwierigkeiten mit Plugin für EPF (Eclipse Process Framework) Plattformprogrammierung 3
S Plugin: View beim Button-Klick austauschen Plattformprogrammierung 7
M Fehler bei Plugin Export für eigene Target Platform Plattformprogrammierung 3
hdi Problem bei Eclipse Plugin Export Plattformprogrammierung 9
H Eclipse Plugin Dateihandling Plattformprogrammierung 2
S Plugin Abhängigkeiten/Circle References Plattformprogrammierung 6
G Plugin einbindung Plattformprogrammierung 9
T Erstellen eines "Ersetzten Plugin" aus GEF Plattformprogrammierung 2
S RCP Anwendung nicht weiterladen bei Exception in Plugin Plattformprogrammierung 2
A Eclipse Plugin Programmierung Dateien Refreshen Plattformprogrammierung 2
F Eclipse Plugin - Rückgabewert einer Methode Plattformprogrammierung 4
M Klasse aus PLugin /Fragment anhand von String laden Plattformprogrammierung 3
M Problem beim Zugriff auf Klasse aus Fragment in einem anderen Plugin Plattformprogrammierung 3
T Plugin eines bestehenden Editors hinzufügen Plattformprogrammierung 2
R Eclipse RCP - Plugin erstellen Plattformprogrammierung 2
lumo [Eclipse RCP] Plugin OHNE visuals Plattformprogrammierung 7
S In einem Plugin main einer anderen Klasse aufrufen Plattformprogrammierung 18
N Mit Plugin externe Dateien liefern Plattformprogrammierung 6
R Eclipse RCP vs. Plugin Entwicklung Plattformprogrammierung 5
K Einträge von einem PlugIn unterbinden. Plattformprogrammierung 6
B Eclipse plugin fuer dummys Plattformprogrammierung 11
P ViewPart dynamisch (Install/Deinstall Plugin) anzeigen in Perspektive? Plattformprogrammierung 12
N Eclipse RCP Plugin aus jar starten Plattformprogrammierung 7
M Eclipse Plugin Depedencies auslesen... Plattformprogrammierung 14
reibi Edclipse PlugIn-Entwicklung Plattformprogrammierung 21
N plugin als dependencie Plattformprogrammierung 3
N Benutzen von eigene Plugin im Plugin Plattformprogrammierung 36
N plugin dependencies innerhalb eines projects halten Plattformprogrammierung 11
R Wo/Wie Eclipse Plugin einhängen für Jar-Export? Plattformprogrammierung 14
Spot84 compareeditor in eclipsercp plugin verhält sich komisch Plattformprogrammierung 3
M Plugin wird nicht mehr geladen Plattformprogrammierung 3
M Dateien in PlugIn ansprechen Plattformprogrammierung 12
N einfaches Projekt in Plugin umwandeln Plattformprogrammierung 3
V [erledigt] Eclipse plugin startet nicht Plattformprogrammierung 3
M External JARs in Plugin Plattformprogrammierung 5
N preference page plugin Plattformprogrammierung 3
N programm in plugin umwandeln Plattformprogrammierung 3
N plugin architektur Plattformprogrammierung 15
S Eclipse-Plugin + Velocity + Files lesen Plattformprogrammierung 3
dzim immer noch Probleme bei PlugIn-Integrierung Plattformprogrammierung 2
C AST (Abstract Syntax Tree)-Generierung für Eclipse-Plugin Plattformprogrammierung 5
M Plugin JUnit Test Plattformprogrammierung 4
F RCP und JMF PlugIn Registrierung Plattformprogrammierung 6
R Plugin-Lokalisierung für Ganymede Plattformprogrammierung 12
G Plugin Export Plattformprogrammierung 4
V Javadoc an Eclipse Plugin anfügen Plattformprogrammierung 4
V JNI in Eclipse Plugin Plattformprogrammierung 17
F Eclipse plugin ausserhalb von Eclipse starten Plattformprogrammierung 4
S RCP mit canvas plugin ! Plattformprogrammierung 2
byte [ Eclipse ] NoClassDefFoundError bei neuem Plugin Plattformprogrammierung 4
rgubler Plugin mit eigenem ClassLoader Plattformprogrammierung 2
G neues project -> Plug-in project. Wie plugin starten? Plattformprogrammierung 6
G subMenue per PlugIn.xml Plattformprogrammierung 3
Linad RCP - Plugin mit Fragment Plattformprogrammierung 2
A Plugin konzepte: OSGI oder JPF? Plattformprogrammierung 5

Ähnliche Java Themen


Oben