![]() |
|
|
|||||||
| Plattformprogrammierung OSGi, Eclipse RCP und Co. |
|
|
|
Themen-Optionen | Thema durchsuchen | Ansicht |
| #1 (permalink) | |
|
Stammbenutzer
Kilobyte
Registriert seit: 21.04.2008
Beiträge: 347
Abgegebene Danke: 5
Erhielt 2 Danke für 2 Beiträge
|
Hallo Zusammen,
ich habe folgendes kleines Problem: Ich habe - ähnlich wie es in Eclipse getan wird - einen Dialog, der noch vorm Application-Start geöffnet wird, um mir einen Workspace auszuwählen. Das funktioniert so weit so gut, aber heute fiel mir auf, das in meiner App, immer noch der "workspace"-Ordner in meinen Programm-Ordner erstellt wird, in dem alle DialogSetting, Preferences u.s.w. liegen. Ich denke, ich müsste hier einen Switch zu der eigentlichen API machen: Sprich, den Workspace anhand meiner Auswahl setzen und evtl. auch mehr mit den preference scopes rum spielen. Meine Fragen: * wie kann ich den Workspace einstellen (im RessourcePlugin konnte ich ihn nur auslesen...) * wo werden die Preferences gespeichert (Verzeichnis/Datei), wenn ich z.B. das hier mache Code:
Preferences prefs = new InstanceScope() .getNode(SSDToolPlugin.PLUGIN_ID); prefs.put(SSDToolPreferenceConstants.SSDTOOL_RECENT_WORKSPACES_SHOW, "" + showWSDialog); Vielen Dank schon mal, Daniel edit: bisher mache ich es so: Code:
SSDToolPlugin.getDefault().getPreferenceStore().setValue( SSDToolPreferenceConstants.SSDTOOL_RECENT_WORKSPACES_SHOW, showWSDialog); Und wird in meinen installationsverzeichnis unter workspace/.metadata/.plugins/org.eclipse.core.runtime/.settings/com.mycompany.ssdtool.prefs gespeichert Geändert von dzim (22.01.2010 um 11:20 Uhr) |
|
|
|
| #2 (permalink) | |
|
Java-Forum Team
Moderator
Registriert seit: 10.11.2004
Beiträge: 18.262
Abgegebene Danke: 0
Erhielt 128 Danke für 126 Beiträge
|
Der -data Startup Parameter legt den Workspace fest. Da bir dir wohl die Platform schon läuft, schau am besten mal in den Code des Eclipse eigenen Dialogs um zu sehen was dort genau passiert.
Instance Scope ist genau das gleiche wie der Default Scope, die settings landen also ebenfalls in workspace/.metadata. Es gibt per Default 3 Scopes: -Project Scope -> Pro Project, in PROJECT/.settings -Instance Scope -> Pro Workspace in .metadata -Installation Scope -> Pro Eclipse Installation, wo genau hängt von den Dateisystemrechten ab. Entweder in ECLIPSE/.configuration, oder in user home
__________________
Take back the Desktop |
|
|
|
| Danke sagt: |
dzim (16.03.2010)
|
| #3 (permalink) | |
|
Stammbenutzer
Kilobyte
Themenstarter
Registriert seit: 21.04.2008
Beiträge: 347
Abgegebene Danke: 5
Erhielt 2 Danke für 2 Beiträge
|
Interessant ist, das aus Eclipse heraus der -data Parameter immer gesetzt wird (der Ordner wird anscheinend im Reiter Main in der location festgelegt - mach Sinn)
Aber auch, wenn ich das Programm exportiere und mittels Platform.getInstanceLocation() mir den Workspace rausgeben lasse, ist er auf den Ordner des exportierten Programms mit dem Unterordner workspace gesetzt. In org.eclipse.ui.ide in der IDEApplication wird der Workspace-Auswahl-Dialog gezeigt und - wenn man nicht mit -data bereits was übergeben hat - der gewaähle Ordner mittels der (deprecated-)Methode Location.setURL(URL) gesetzt. Ich habe das in meiner Anwendung probiert, mit dem Ergebnis, dass ich eine Exception bekommen, die mir mitteilt, das ich einen bereits gesetzten Workspace nicht umsetzten kann (ohne Neustart). So weit so gut, das versteh ich ja noch - wird ja auch in der javadoc so beschrieben. Was ich gerade nicht verstehe: Ich mache es im Prinzip genau so, wie es in Eclipse gemacht wird (ich habe die entsprechende Methode kopiert und angepasst) und trotzdem geht es nicht! Das ist echt Mist... |
|
|
|
| #4 (permalink) | |
|
Java-Forum Team
Moderator
Registriert seit: 10.11.2004
Beiträge: 18.262
Abgegebene Danke: 0
Erhielt 128 Danke für 126 Beiträge
|
Und du rufst das in deiner eigenen Application auf bevor ein Workspace festgelegt wurde?
Setz mal einen Breakpoint in die setLocation und schau nach wer das aufruft (remote debugging)
__________________
Take back the Desktop |
|
|
|
| #5 (permalink) | |
|
Stammbenutzer
Kilobyte
Registriert seit: 18.12.2008
Beiträge: 298
Abgegebene Danke: 15
Erhielt 5 Danke für 5 Beiträge
|
Ich hab aktuell das selbe Problem, weiss aber auch nicht wie man es lösen könnte set von Location wird direkt nach dem Starten der Anwendung schonmal ausgeführt noch bevor irgendwelche Plugins zum Greifen kommen. Aber wie kann man es trotz allem löschen den Workspace zu ändern?
Ich hab mir mal die Action methode angeschaut die das ganze über einen Neustart regelt. Aber wirklich helfen tut das auch nichts. Denn ein Workbench ist noch nicht erstellt. Mein aktuelles Ziel ist es vor dem erstellen des workbenches mit .createAndRunWorkbench() den Pfad für die ganzen Plugindaten etc zu ändern. Scheinbar kommt mir in die Quere das ja die Plugins schon geladen sind und damit auf einen workspace arbeiten. Ich möchte einfach jeden nutzer meines Programmes einen eigenen workspace anbieten. Die nutzer haben alle ein login im programm. Daher auch einen eigenen nutzernamen. Ich möchte nun den Workspace auf diesen namen umbiegen. Aktuelle Idee ist den nutzernamen und passwort eingeben lassen. Schauen ob der Workspace richtig gelegt ist, wenn ja das ganze fortführen, wenn nein muss ich den Pfad mit -Data neu setzen und die Anwendung neustarten, ich halte das nur für ziemlich viel Aufwand für wenig nutzen. Da fällt mir noch ein. Ich müsste ja dann Passwort und Login beim neustart auch wieder per VM Args übergeben, wie sicher wäre denn das? Wie lese ich das am günstigsten wieder aus es gibt ja nicht mehr sowas wie String[] args in der main. ich kann mir AFAIK mit System.getProperty die Commandline ranholen aber parsen muss ich die dann wohl von hand? Geändert von SegFault (27.01.2010 um 14:01 Uhr) |
|
|
|
| #6 (permalink) | |
|
Stammbenutzer
Kilobyte
Themenstarter
Registriert seit: 21.04.2008
Beiträge: 347
Abgegebene Danke: 5
Erhielt 2 Danke für 2 Beiträge
|
Ich hab das ganze gestern noch etwas verfolgt, aber mehr, als dass es anscheinend aus einem Service Bundle geholt wird, hab ich bisher noch nicht rausgefunden.
Ich probier mich dann mal am Remote Debugging - so was hab ich bisher nur vom Hörensagen gekannt
|
|
|
|
| #7 (permalink) | |||
|
Stammbenutzer
Kilobyte
Themenstarter
Registriert seit: 21.04.2008
Beiträge: 347
Abgegebene Danke: 5
Erhielt 2 Danke für 2 Beiträge
|
Konkret holt sich die Platform die instanceLocation aus der Klasse InternalPlatiform über den Filter für den ServiceTracker "Location.INSTANCE_FILTER"
Die Methode ist
Den zugehörigen Service habe ich aber noch nicht gefunden. |
||
|
|
|
| #8 (permalink) | |||
|
Stammbenutzer
Kilobyte
Themenstarter
Registriert seit: 21.04.2008
Beiträge: 347
Abgegebene Danke: 5
Erhielt 2 Danke für 2 Beiträge
|
Woah! Das ist ja unglaublich!
Lange hatte ich mich nicht mehr mit diesem Problem beschäftigt, aber gestern habe ich mich mal wieder ran gewagt. @Wildcard: Verspätet, aber: Danke noch mal für den Tipp mit dem -data Parameter - ich habe den mir noch einmal zur Brust genommen und mir ist klar geworden, das -data @noDefault der Parameter meiner Wahl ist. Was habe ich geändert? 1) -data @noDefault als Startparameter, damit nicht das Problem mit dem bereits gesetzten Workspace auftauchen kann und ich noch die Möglichkeit habe, diesen selbst zu setzen. 2) Ich habe alle Preferences, die für die Auswahl des Workspaces zuständig sein könnten, also bei einem Dialog, der noch vor dem Start der Workbench auftauchen soll, nicht wie bisher über Plugin.getDefault().getPreferenceStore() geholt, da diese nur Instance Scope haben. Stattdessen bin ich dort auf Installation Scope (ConfigurationScope - hier auch noch mal danke @Vogella - Eclipse Preferences - Tutorial ) ungeschwenkt, so dass diese Prefs wie bei Eclipse pro Installation gültig sind. 3) Habe den Startvorgang von Eclipse selbst - so gut es eben geht - kopiert und bei mir eingebaut. Das wichtige ist hier eigentlich folgendes (alles in der Application-Klasse):
Jetzt geht es so weit. Vielleicht gibt es bessere Annäherungen an das Problem, ich weiß es nicht, wenn ja: Bitte posten ![]() Das selbe gilt für Verbesserungen... Viele Grüße und viel Spaß damit, falls ihr es nicht schon selbst hinbekommen habt! Daniel |
||
|
|
|
|
| Lesezeichen |
Latex Maths & Physics Editor ...
|
| Themen-Optionen | Thema durchsuchen |
| Ansicht | |
|
|
Ähnliche Themen
|
||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Gleiche Preference Page für mehrere Preferences | SegFault | Plattformprogrammierung | 2 | 12.01.2010 10:24 |
| preference page plugin | noisebreath | Plattformprogrammierung | 3 | 19.04.2009 16:15 |
| Fehler beim Starten von Eclipse | ide? | IDEs und Tools | 5 | 15.04.2008 19:56 |
| Eclipse RessourceChangeListener wie Workspace festlegen? | schuetzejanett | IDEs und Tools | 3 | 02.09.2007 22:29 |
| 3.2.0 M6 verweigert Workspace | 0xdeadbeef | IDEs und Tools | 6 | 21.04.2006 20:53 |