java-forum.org - Java programmieren aus Leidenschaft
Java 6 Einstieg und professioneller Einsatz
Alter Preis: 34,90 EUR
Jetzt: 0,00 EUR

zzgl. Versandkosten

Zurück   java-forum.org - Java programmieren aus Leidenschaft > Java - Programmierung > Plattformprogrammierung

Plattformprogrammierung OSGi, Eclipse RCP und Co.

Antwort     Ist dieses Thema erledigt?
Themen-Optionen Thema durchsuchen Ansicht
Alt 07.09.2011, 14:44   #1 (permalink)
Neuer Benutzer
byte
 
Registriert seit: 27.08.2011
Fachbeiträge: 11
Abgegebene Danke: 1
Erhielt 0 Danke für 0 Beiträge
Standard Plugin - Properties ohne PropertyPage speichern

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 Code: Quelltext in neuem Fenster öffnen
    1
    
    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 Code: Quelltext in neuem Fenster öffnen
    1
    2
    3
    4
    
    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.
dragon_ ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Alt 07.09.2011, 19:58   #2 (permalink)
Premium-Benutzer
 
Benutzerbild von Wildcard
 
Registriert seit: 10.11.2004
Fachbeiträge: 20.047
Abgegebene Danke: 4
Erhielt 429 Danke für 400 Beiträge
Erstmal eine Frage:
Zitat:
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?
__________________
Take back the Desktop
Wildcard ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Danke sagt:
dragon_ (08.09.2011)
Alt 07.09.2011, 20:57   #3 (permalink)
Neuer Benutzer
byte
Themenstarter
 
Registriert seit: 27.08.2011
Fachbeiträge: 11
Abgegebene Danke: 1
Erhielt 0 Danke für 0 Beiträge
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.
dragon_ ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Alt 07.09.2011, 23:46   #4 (permalink)
Premium-Benutzer
 
Benutzerbild von Wildcard
 
Registriert seit: 10.11.2004
Fachbeiträge: 20.047
Abgegebene Danke: 4
Erhielt 429 Danke für 400 Beiträge
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.
__________________
Take back the Desktop
Wildcard ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Alt 08.09.2011, 15:36   #5 (permalink)
Neuer Benutzer
byte
Themenstarter
 
Registriert seit: 27.08.2011
Fachbeiträge: 11
Abgegebene Danke: 1
Erhielt 0 Danke für 0 Beiträge
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.
dragon_ ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Alt 08.09.2011, 21:45   #6 (permalink)
Premium-Benutzer
 
Benutzerbild von Wildcard
 
Registriert seit: 10.11.2004
Fachbeiträge: 20.047
Abgegebene Danke: 4
Erhielt 429 Danke für 400 Beiträge
Zitat:
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?
__________________
Take back the Desktop
Wildcard ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Alt 08.09.2011, 22:46   #7 (permalink)
Neuer Benutzer
byte
Themenstarter
 
Registriert seit: 27.08.2011
Fachbeiträge: 11
Abgegebene Danke: 1
Erhielt 0 Danke für 0 Beiträge
Zitat: Wildcard
Beitrag anzeigen
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??
dragon_ ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Alt 08.09.2011, 22:49   #8 (permalink)
Premium-Benutzer
 
Benutzerbild von Wildcard
 
Registriert seit: 10.11.2004
Fachbeiträge: 20.047
Abgegebene Danke: 4
Erhielt 429 Danke für 400 Beiträge
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.
__________________
Take back the Desktop
Wildcard ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Alt 08.09.2011, 22:55   #9 (permalink)
Neuer Benutzer
byte
Themenstarter
 
Registriert seit: 27.08.2011
Fachbeiträge: 11
Abgegebene Danke: 1
Erhielt 0 Danke für 0 Beiträge
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.
Zitat:
Java Code: Quelltext in neuem Fenster öffnen
1
2
3
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_ ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Alt 08.09.2011, 22:55   #10 (permalink)
Premium-Benutzer
 
Benutzerbild von Wildcard
 
Registriert seit: 10.11.2004
Fachbeiträge: 20.047
Abgegebene Danke: 4
Erhielt 429 Danke für 400 Beiträge
Ja, statt put ein get. Verstehe das Problem nicht wirklich.
__________________
Take back the Desktop
Wildcard ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Alt 08.09.2011, 23:06   #11 (permalink)
Neuer Benutzer
byte
Themenstarter
 
Registriert seit: 27.08.2011
Fachbeiträge: 11
Abgegebene Danke: 1
Erhielt 0 Danke für 0 Beiträge
OK, vielleicht habe ich auch nur gerade einen Gedankenfehler. Also Szenario:
  1. 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.
  2. 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.
  3. 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.
dragon_ ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Alt 08.09.2011, 23:12   #12 (permalink)
Premium-Benutzer
 
Benutzerbild von Wildcard
 
Registriert seit: 10.11.2004
Fachbeiträge: 20.047
Abgegebene Danke: 4
Erhielt 429 Danke für 400 Beiträge
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.
__________________
Take back the Desktop
Wildcard ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Antwort     Ist dieses Thema erledigt?

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Liste als Properties JimK Java Basics - Anfänger-Themen 6 27.07.2011 07:17
Swing Komponente als Bild speichern Kamairo AWT, Swing, JavaFX & SWT 11 02.06.2011 14:54
JAR, Pfad und Properties Camino Allgemeine Java-Themen 17 14.04.2011 17:05
Speichern von Einstellungen mabuhay Allgemeine Java-Themen 13 03.05.2010 21:52
java.lang.ClassCastException maenae Java Basics - Anfänger-Themen 9 26.09.2005 16:39


Lesezeichen

Forumregeln
Es ist Ihnen erlaubt, neue Themen zu verfassen.
Es ist Ihnen erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are aus
Pingbacks are aus
Refbacks are aus


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:26 Uhr.


Powered by vBulletin® Version 3.8.6 (Deutsch)
Copyright ©2000 - 2013, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.3.2
Thanks for Smilies by smilies.4-user.de