Wiederverwendung von Eclipse Images & "Öffnen mit..."

G

Gonzo17

Gast
Hallihallo,

ich hab mal zwei kleine Fragen, wobei sich die erste vielleicht allgemein auf Plug-Ins bezieht, die zweite jedoch speziell auf RCP, weil es darum geht, wie ich meine Standalone Anwendung modifizieren kann.

Im Titel steht es schon, ich würde gerne erstmal wissen, wie man Images von Eclipse wiederverwenden kann. Ich hab bisher nur die Klassen "WorkbenchImages" und "IDEInternalWorkbenchImages" gefunden, aber beide beinhalten nicht die Images, die ich gerade bräuchte. Ich persönlich bräuchte gerade das Image, das unter New > General > Project zu sehen ist. Aber auch generell stellt sich mir die Frage, wie ich relativ problemlos Bilder von Eclipse und auch von anderen Plug-Ins nutzen kann.
Ich habe das jetzt mal so gelöst:

Java:
URL imageURL = Platform.getBundle("org.eclipse.wst.xml.ui")
				.getResource("/icons/XMLFile.gif");
		ImageDescriptor imageDesc = imageURL == null ? null : ImageDescriptor
				.createFromURL(imageURL);

Da krieg ich jetzt das Image (bzw den ImageDescriptor) für das XML aus dem entsprechenden Plug-In. Geht das nur so? Gerade bei Eclipse-Images hatte ich gehofft, dass das einfacher geht.

Meine nächste Frage ist jetzt etwas spezieller auf RCP bezogen. Wenn ich mein Product exportiere, dann hab ich ja ein Standalone, das sich über eine .exe öffnen lässt. Jetzt möchte ich aber auch, dass ich ne beliebige Datei aus dem Explorer per Rechtsklick > "Öffnen mit" in meinem Standalone öffnen kann. Ich hab leider garkeinen Ansatz, wie das funktionieren soll. Ich schätze mal da wird ganz normal das Programm gestartet (zumindest sah das bei den Tests so aus), allerdings muss wohl irgendwo ein Parameter übergeben werden (vll steht da URI drin oder so?), damit ich auch was damit anfangen kann. Hat jemand ne Idee? Oder geht das garnich? Ich wäre schon dankbar, wenn jemand nen Ansatz hätte, wo ich forschen könnte. :)
 

Sonecc

Gesperrter Benutzer
ich hab jetzt nicht nachgeschaut oder es überprüft, aber ich meine mich erinnern zu können, dass eclipse die Kommandozeilenargumente irgendwo sichert, so dass man sie in der RCP abrufen kann...
Wenn du nun beim Start der Anwendung prüfst, ob ein Parameter "openFile" (o.ä. wie auch immer der bei dir heißen soll) existiert und den Pfad ermittelst (der vl im Parameter steht), dann kannst du sicher auch den passenden Editor öffnen.

Edit meint ich soll erwähnen, dass es Platform.getCommandLineArguments() ö.ä war
Und nochmal Edit... Sie meint ich sollte auch noch das hier erwähnen: Eclipse-Icons - Nur Scheuer Blog
 
Zuletzt bearbeitet:
G

Gonzo17

Gast
ich hab jetzt nicht nachgeschaut oder es überprüft, aber ich meine mich erinnern zu können, dass eclipse die Kommandozeilenargumente irgendwo sichert, so dass man sie in der RCP abrufen kann...
Wenn du nun beim Start der Anwendung prüfst, ob ein Parameter "openFile" (o.ä. wie auch immer der bei dir heißen soll) existiert und den Pfad ermittelst (der vl im Parameter steht), dann kannst du sicher auch den passenden Editor öffnen.

Edit meint ich soll erwähnen, dass es Platform.getCommandLineArguments() ö.ä war

Ja, wie ich nen Editor dann öffne, wenn ich das entsprechende File hab, das bekomme ich hin. Vielen Dank für deine Idee, ich werds mir anschauen. :)

Und nochmal Edit... Sie meint ich sollte auch noch das hier erwähnen: Eclipse-Icons - Nur Scheuer Blog

Hm, das möchte ich eben möglichst vermeiden. Ich will nicht Icons nochmal verwenden müssen, die schonmal irgendwo in irgendnem Plug-In liegen, ich möchte mein Programm möglichst klein halten. Deswegen tu ich auch lieber so wie oben beschrieben dann das Image im Plug-In suchen als es neu einzubinden.
 
G

Gonzo17

Gast
Generell funktioniert es, danke. Ich verstehe nicht so ganz, weshalb man das in so viele Klassen einteilt, aber gut. Allerdings funktioniert es nicht bei den Projekt-Images im normalen Navigator View. Die wurden vorher schon nicht angezeigt und werden es jetzt immer noch nicht. Erster Lösungsvorschlag:

Java:
		Bundle ideBundle = Platform.getBundle(IDEWorkbenchPlugin.IDE_WORKBENCH);

		String banner = "icons/full/obj16/prj_obj.gif"; //$NON-NLS-1$
		URL url = ideBundle.getEntry(banner);
		ImageDescriptor desc = ImageDescriptor.createFromURL(url);
		configurer.declareImage(SharedImages.IMG_OBJ_PROJECT, desc, true);

Wenn man jetzt aber aufs Verrecken die Grafik eines geschlossenen Projekts nicht findet, dann bringt das auch nicht viel. :autsch:
 
G

Gonzo17

Gast
Meine nächste Frage ist jetzt etwas spezieller auf RCP bezogen. Wenn ich mein Product exportiere, dann hab ich ja ein Standalone, das sich über eine .exe öffnen lässt. Jetzt möchte ich aber auch, dass ich ne beliebige Datei aus dem Explorer per Rechtsklick > "Öffnen mit" in meinem Standalone öffnen kann. Ich hab leider garkeinen Ansatz, wie das funktionieren soll. Ich schätze mal da wird ganz normal das Programm gestartet (zumindest sah das bei den Tests so aus), allerdings muss wohl irgendwo ein Parameter übergeben werden (vll steht da URI drin oder so?), damit ich auch was damit anfangen kann. Hat jemand ne Idee? Oder geht das garnich? Ich wäre schon dankbar, wenn jemand nen Ansatz hätte, wo ich forschen könnte. :)

Bezüglich diesem Thema hätte ich noch ne Frage. Also prinzipiell funktionierts wunderbar, wenn ich die Kommandozeilen-Argumente auswerte und die Dateien im Editor öffne. Aber nun gibts ein Problem, das wohl eclipse-spezifisch ist. Wähle ich eine beliebige Datei im Dateisystem, macht Rechtsklickt und wähle bei "Öffnen mit" meine Anwendung, dann startet meine Anwendung zwar brav, aber der Workspace ist nun auf einmal dort, wo die Datei liegt. Ich möchte nicht, dass der Workspace überhaupt irgendwie ohne nachzufragen geändert wird und am liebsten wär mirs, wenn er erstmal so oder so fest bleibt. Wie kann ich verhindern, dass der Workspace sicher ändert?
 

Wildcard

Top Contributor
Wie ist dein RCP Konfiguriert? In /configuration/config.ini kann zB eine Default Workspace Location hinterlegt werden:
osgi.instance.area.default=@user.home/workspace
Zusätzlich kann (wenn dein RCP so konfiguriert wurde) auch einfach der letzte verwendet werden. Siehe dazu in /configuration/.settings/org.eclipse.ui.ide.prefs
Die dritte Möglichkeit ist die Kommandozeile. Der -data Parameter steuert den Workspace.
Die Frage ist also wie ist dein RCP Konfiguriert und wie genau wird er gestartet (Kommandozeile).

Zu Images: Ja, das ist kompliziert, weil diese Icons nicht öffentlich sind, sondern interna des Bundles. Sie zu verwenden setzt dich dem Risiko aus das sie im nächsten Release einfach verschwunden sind.
Wenn ein Bundle Images explizit veröffentlichen will und dir zusichert das es dort auch ein Zukunft ein Bild gibt, dann hat es in der Regel ein ISharedImages Interface aus dem du dich bedienen darfst (wenn es nicht als internal markiert ist).
 
G

Gonzo17

Gast
Wie ist dein RCP Konfiguriert? In /configuration/config.ini kann zB eine Default Workspace Location hinterlegt werden:
osgi.instance.area.default=@user.home/workspace
Zusätzlich kann (wenn dein RCP so konfiguriert wurde) auch einfach der letzte verwendet werden. Siehe dazu in /configuration/.settings/org.eclipse.ui.ide.prefs
Die dritte Möglichkeit ist die Kommandozeile. Der -data Parameter steuert den Workspace.
Die Frage ist also wie ist dein RCP Konfiguriert und wie genau wird er gestartet (Kommandozeile).

Ok, vielen Dank auf jeden Fall mal. :) Ich werde mal ein bisschen experimentieren.
Zu meinen Konfigurationen kann ich nicht viel sagen, ich habe eigentlich nicht viel an den Standard-Konfigurationen eines RCP Plug-Ins geändert, weil das aktuelle Projekt noch nicht so alt ist. Die Frage ist, ob der User seinen Workspace ändern darf oder nicht, das muss ich mir noch überlegen. Ansonsten könnte ich einfach immer nen festen Parameter in der Kommandozeile hinzufügen.


Zu Images: Ja, das ist kompliziert, weil diese Icons nicht öffentlich sind, sondern interna des Bundles. Sie zu verwenden setzt dich dem Risiko aus das sie im nächsten Release einfach verschwunden sind.
Wenn ein Bundle Images explizit veröffentlichen will und dir zusichert das es dort auch ein Zukunft ein Bild gibt, dann hat es in der Regel ein ISharedImages Interface aus dem du dich bedienen darfst (wenn es nicht als internal markiert ist).

Nungut, dann muss ich damit erstmal leben. Klappt bisher ja problemlos.
 
G

Gonzo17

Gast
Hm, hab mal ein bisschen getestet.

Wie ist dein RCP Konfiguriert? In /configuration/config.ini kann zB eine Default Workspace Location hinterlegt werden:
osgi.instance.area.default=@user.home/workspace

Ich will nicht das Benutzverzeichnis als Überverzeichnis meines Workspaces, sondern genau den Ordner, in dem meine RCP Application liegt. Das wäre dann statt user.home eben user.dir. Das Problem dabei ist ja aber, dass user.dir sich ändert, wenn ich von einem andern Punkte aus ändere. Öffne ich eine Datei mit dem Pfad F:\test\test.xml, dann ist user.dir doch F:\test, oder nicht? Und genau das ist ja dann das Problem. Ich möchte immer den gleichen Pfad zum Workspace. Nur wie weiss meine Anwendung, wo sie liegt?


Zusätzlich kann (wenn dein RCP so konfiguriert wurde) auch einfach der letzte verwendet werden. Siehe dazu in /configuration/.settings/org.eclipse.ui.ide.prefs

Dazu hab ich leider nichts gefunden, einen Ordner .settings gibts in meinem configuration-Ordner auch nicht. Vielleicht muss ich da irgendwas einstellen, damit diese Einstellung gesetzt und benutzt wird?


Die dritte Möglichkeit ist die Kommandozeile. Der -data Parameter steuert den Workspace.
Die Frage ist also wie ist dein RCP Konfiguriert und wie genau wird er gestartet (Kommandozeile).

Da hab ich ja wieder ein ähnliches Problem. Klar, funktioniert natürlich auch hier. Aber wie gebe ich einen "nicht hartkodierten" Pfad ein? Gibts irgendne Variable, die meiner Anwendung sagt, wo sie ist?


Zu allem Überfluss hab ich jetzt auch noch das seltsame Problem, dass ich meine .exe zwar über "Öffnen Mit" auswählen kann, die erscheint aber dann trotzdem nicht in der Liste, der Programme, die man auswählen kann. Das ist erst seit heute irgendwann so und ich weiss ehrlich gesagt nicht warum. Die Änderung, die ich zuvor gemacht hab (vorher gings, danach nichmehr) war lediglich die Launching Arguments anzupassen. Auch wenn ich die zurücksetze funktionierts nicht. :bahnhof:
 

Wildcard

Top Contributor
Du bist dir bewusst das es üblich ist nicht mit root Rechten zu arbeiten? Programme zu installieren ist ein administrativer Task. Ein Benutzer mit root Rechten wird deinen RCP also installieren nach, sagen wir /opt/deinRCP auf einer Linux Kiste oder C:\Programme\deinRCP auf einer Windows Kiste.
Der Benutzer der das Programm später verwenden soll hat dort kein Schreibrecht, kann dort also auch keinen Workspace anlegen. Sicher das du das so haben willst?
 
G

Gonzo17

Gast
Der Benutzer der das Programm später verwenden soll hat dort kein Schreibrecht, kann dort also auch keinen Workspace anlegen. Sicher das du das so haben willst?

Das stimmt schon, aber so wie ich das beobachtet habe legt jede RCP Application einen eigenen Workspace im Ordner an.
Anfangs sieht es so aus. Meine Ordner mit der Anwendung liegt meinetwegen unter C:\Programme\meinRCP mit den Unterordnern "configuration" und "plugins", sowie einer .ini-Datei, einer .exe-Datei und einem ".eclipseproduct". Habe ich nun nirgends (zB per Parameter data) einen Workspace festgelegt, dann wird beim Starten der Anwendung automatisch ein Workspace in diesem Ordner "meinRCP" angelegt. Das geschieht doch unabhängig von den Rechten des Nutzers oder der Lage des Ordners oder irre ich mich? Weil das ist ja auch ganz genau das, was ich will. Dieser Workspace soll genutzt werden und vorerst mal kein anderer. Nur das Problem, das jetzt eben auftritt, wenn ich ne beliebige Datei wie oben beschrieben öffnen möchte, ist eben, dass der Workspace sich ändert, obwohl er das nicht soll.
 

Wildcard

Top Contributor
Du irrst dich. Wenn deine Applikation einen Workspace anlegen möchte, das aufgrund der Rechte aber nicht kann, dann wird sie wohl gar nicht starten. Brauchst du denn überhaupt einen Workspace? Und wenn ja, warum legst du ihn dann nicht einfach in User Home und konfigurierst das beim Starten kein Prompt nach dem Workspace erfolgen soll?
 
G

Gonzo17

Gast
Brauchst du denn überhaupt einen Workspace?

Ja, den brauch ich.

Und wenn ja, warum legst du ihn dann nicht einfach in User Home und konfigurierst das beim Starten kein Prompt nach dem Workspace erfolgen soll?

Hm, den ins User-Verzeichnis zu legen wäre ne Überlegung. Aber was ist denn ein "Prompt"?

Edit:
Nungut, ich wollte es jetzt umstellen, dass der Workspace nicht mehr fest ist, sondern (wie in Eclipse) ausgewählt werden kann. Und dazu gleich die Frage. Wie kann ich den Dialog zum Wählen des Workspaces direkt beim Start der Anwendung aufrufen? Und wenn ich dann in meiner Anwendung bin und "Switch Workspace" wähle, dann funktioniert das nur, wenn ich den Parameter vm gesetzt habe, allerdings tut er beim Neustart trotzdem noch den alten Workspace nehmen (der Parameter data ändert sich einfach nicht ???:L). Gibts da vielleicht irgendwo ein kleines Tutorial, wie man die Sache mit den Workspaces in Eclipse regelt bei nem eigenen RCP Projekt?
 
Zuletzt bearbeitet von einem Moderator:
Ähnliche Java Themen
  Titel Forum Antworten Datum
E OSGi Eclipse Plug-in programmierung: java.lang.NullPointerException: Cannot enter synchronized block because "profile" is null Plattformprogrammierung 4
R Eclipse Bundles Plattformprogrammierung 2
Robertop RCP Command in bereits bestehendes Eclipse-Menü einbauen Plattformprogrammierung 4
T Java Projekt läuft nur in Eclipse Plattformprogrammierung 6
M Eclipse Plugin PreferencePage BooleanFieldEditor Plattformprogrammierung 1
F OSGi Plugin unter Eclipse arbeitet anders als wenn veröffentlicht Plattformprogrammierung 2
D RCP P2-Repository für Eclipse-Plugins Plattformprogrammierung 0
M Debuging in Eclipse Annotations Processor Plattformprogrammierung 0
D Nach Sprachpaket Installation kann eclipse nicht mehr gestartet werden Plattformprogrammierung 4
L0MiN Wie kann ich ein Klassendiagramm aus Eclipse heraus erstellen? Plattformprogrammierung 5
M Eclipse Probleme beim Ausführen eines Programms Plattformprogrammierung 3
feinperligekohlensaeure Eclipse Workspace gemeinsam Nutzen -> keine .project Datei Plattformprogrammierung 1
F Eclipse Build Path auf benötigte Projekte Plattformprogrammierung 4
B Daten von Eclipse extern sichern Plattformprogrammierung 2
B Eclipse zeigt Fehler nach Java-Update auf 1.8.0_40 Plattformprogrammierung 3
VfL_Freak [Eclipse] Fehleranzeige im Reiter "Problems" Plattformprogrammierung 1
S Errors in workspace bei eclipse Plattformprogrammierung 3
T eclipse bietet keine META-INF an Plattformprogrammierung 1
N Eclipse wo starten Plattformprogrammierung 6
A Eclipse schließt einfach ohne Fehlermeldung Plattformprogrammierung 4
W Eclipse vergißt beim Exportieren Resources-Ordner Plattformprogrammierung 11
A RCP Eclipse e4 und Injection-Contexts Plattformprogrammierung 0
K Eclipse fährt nicht mehr hoch. Metadatendatei schuld? Plattformprogrammierung 7
C [Eclipse RCP E4]InjectionException: no actual value was found for the argument "MDirtyable" Plattformprogrammierung 8
T Eclipse Eigenschaften hinzufügen Plattformprogrammierung 2
M RCP [Eclipse RCP 3.4] ViewTab Kontextmenu "Alle schließen" Plattformprogrammierung 0
D Problem mit eclipse Plattformprogrammierung 2
S Verschieben des Verzeichnis .eclipse aus Userprofile Plattformprogrammierung 3
A RCP Kann kein Eclipse 4 Projekt anlegen Plattformprogrammierung 0
S RCP Exportiertes RCP Produkt lädt Datei nicht, bei Start aus Eclipse wird Datei jedoch gefunden Plattformprogrammierung 6
G Eine Library in Eclipse zur Verfügung stellen Plattformprogrammierung 14
Gregorrr Eclipse RCP Product Build-Nummer + Jenkins Plattformprogrammierung 6
R Einfaches Eclipse-Plugin-Beispiel funktioniert nicht Plattformprogrammierung 5
H OSGi OSGi + Logback + slf4j - Eclipse Run Configuration Plattformprogrammierung 7
C plugin development environment eclipse Plattformprogrammierung 4
R RCP Commands nutzen / org.eclipse.ui.file.save Plattformprogrammierung 7
O Installiere externe Methode "containsNone" in Eclipse Plattformprogrammierung 2
M Keybinding in Eclipse Plugin Plattformprogrammierung 3
TheWhiteShadow RCP Konstrukt für Editor in Eclipse gesucht. Plattformprogrammierung 3
B Eclipse Probleme mit build Plattformprogrammierung 8
H Keine Hilfe/API mehr in Eclipse Juno? Plattformprogrammierung 4
B Neue SuppressWarning in Eclipse Juno Plattformprogrammierung 6
B Eclipse Property Page Plattformprogrammierung 6
B Eclipse PreferencePage Plattformprogrammierung 3
B Eclipse Plugin Einstellungsleiste Plattformprogrammierung 2
B Birt-Previewer über Eclipse Plattformprogrammierung 14
J Eclipse Plug-In für UML-Diagramme Problem Plattformprogrammierung 4
O Eclipse Plugin - Einfachstes Problem, das es gibt. Plattformprogrammierung 2
R Eclipse RCP Tabellen-View (Anfängerfrage) Plattformprogrammierung 3
C Eclipse: Notification beim umbennen von Methoden? Plattformprogrammierung 4
schalentier Eclipse Sourcecode Plattformprogrammierung 4
A Eclipse undo/redo button reagiert nicht auf Änderungen in der OperationHistory Plattformprogrammierung 5
P Eclipse M2_REPO (NON MODIFIABLE) Plattformprogrammierung 8
B Eclipse: Contextmenu id erhalten? Plattformprogrammierung 9
H Datei in eclipse wird nicht erkannt Plattformprogrammierung 3
O Neues Tastenkürzel für Eclipse Editorfenster registrieren Plattformprogrammierung 2
3 Eclipse Editor Plugin selektiert Projekt nicht Plattformprogrammierung 10
Madlip RCP eclipse.ui.bindings (Key-Problematik) Plattformprogrammierung 2
S Eclipse vs. JavaMail vs. Ubuntu vs. Windows Plattformprogrammierung 3
M eclipse führt applikationen nicht mehr aus Plattformprogrammierung 6
S Eclipse: Auf CTRL-C/CTRL-V im Package Explorer? Plattformprogrammierung 4
M Eclipse und Hilfen Plattformprogrammierung 5
G Eclipse buggt rum!!! Plattformprogrammierung 4
B Eclipse RCP und Java 7 Plattformprogrammierung 7
G RCP Eclipse Editor + Guice Plattformprogrammierung 8
T RCP Eclipse RCP: Wo/wann im Plugin ist workbench initialisiert? Plattformprogrammierung 14
G Eclipse Plug-in: wie refreshe ich eine combobox? Plattformprogrammierung 4
M Eclipse Plug-in: Wie eine Grafik einfügen? Plattformprogrammierung 20
M RCP [Eclipse RCP] Feature Export und "Fehler"... Plattformprogrammierung 3
P Eclipse speichert keine Änderungen Plattformprogrammierung 5
M Eclipse - Dokumentation nicht über das Internet benutzen Plattformprogrammierung 3
C Eclipse Plugin NoClassDefFoundError Plattformprogrammierung 4
E org.eclipse.ui.dialogs.ListSelectionDialog erzeugt ClassNotFoundException zur Laufzeit Plattformprogrammierung 4
M Eclipse Plugin Entwicklung - NoClassDefFoundError Plattformprogrammierung 10
C RCP Verständnisfrage Eclipse/Equinox Plattformprogrammierung 4
D eclipse-RCP von der Konsole baut nicht Plattformprogrammierung 3
L RCP Eclipse Popupmenu im PackageExplorer erweitern? Plattformprogrammierung 7
C Eclipse Plugin Entwicklung: Editor für Flussdiagramme Plattformprogrammierung 6
S (OSGI - EQUINOX) Welche Eclipse IDE? Plattformprogrammierung 3
C Pdf in jar datei einbinden mit eclipse Plattformprogrammierung 23
G neuer branch in SVN mit Eclipse Plattformprogrammierung 6
F RCP eclipse rcp ohne eclipse? Plattformprogrammierung 15
dzim RCP Eclipse Provisioning Plattformprogrammierung 3
G RCP Abhängigkeiten von Eclipse Plugins Plattformprogrammierung 9
K Eclipse RCP, EMF, Hibernate Problem Plattformprogrammierung 7
B RCP eigenes Eclipse Plugin wird nicht aufgelöst Plattformprogrammierung 7
T Eclipse Helios XMLUnit importieren Plattformprogrammierung 6
R Verwendung pdfbox in Maven-Projekt in Eclipse Plattformprogrammierung 3
lumo RCP wechseln der Font von Eclipse per code Plattformprogrammierung 10
lumo RCP Eclipse internationalisierung Plattformprogrammierung 5
jemandzehage Kurze Fehlernachricht beim starten in Eclipse Plattformprogrammierung 5
A RCP java.lang.ClassNotFoundException: org.eclipse.core.runtime.adaptor.EclipseStarter Plattformprogrammierung 7
P Wie bekomme ich ICompilationUnit aus dem event? bei Eclipse-Plugin Plattformprogrammierung 3
Rudolf External Libs dauerhaft in Eclipse einbinden Plattformprogrammierung 3
G RCP Eclipse UI Forms Plattformprogrammierung 10
musiKk RCP Eclipse: Speichern von Spaltenbreiten Plattformprogrammierung 9
X Datei in einem Eclipse Projekt über Plugin zugreifen Plattformprogrammierung 2
P Eclipse Help: Wie Links zu anderer Hilfeseite setzen ? Plattformprogrammierung 5
F Eclipse EMF Modelltransformation Plattformprogrammierung 3
tfa RCP Compilereinstellungen festlegen bei Eclipse-Batch-Build Plattformprogrammierung 9

Ähnliche Java Themen


Oben