# Artifact-Editor in RCP-Anwendung



## philox (15. Jul 2015)

Hallo,

gegeben ist eine lauffähige rcp-Anwendung. Nun benötige ich einen Mechanismus, um bestimmte Artefakte aus einem Repository über die swt-Oberfläche auswählen zu können.
Das kann beispielsweise ein "Filechooser" sein. Vorstellbar ist jedoch auch die Darstellung des Repositorys in einer Baumstruktur. 

Jedoch weiß ich zur Zeit nicht mal wie die Verbindung zwischen Anwendung und Repository zu erreichen ist, geschweige denn die Auswahl der Dateien.

Ich brauche also einen Dialog, der auf einem Repo (https://projects...) arbeitet und die darin enthaltenen Dateien auswählbar macht.
Ich bin für jede Hilfe sehr dankbar. Das Repo lokal zu klonen ist nicht möglich, dafür ist es zu groß.

Viele Grüße


----------



## lam_tr (15. Jul 2015)

Hi philox,

Baumansicht hört sich dor schon mal sehr gut an?
Was soll das für eine Repository sein?

Wenn du SVN oder Git (auch CVS) benutzt, dann kannst du doch bestehende Plug-Ins von EGit oder SVN angucken.

Ansonsten wie gesagt Baumansicht und beim Anklicken/Ausklappen des Knoten die den Ast fetchen.

Gruß lam


----------



## philox (15. Jul 2015)

Ich will das aber nicht während meiner Entwicklung in Eclipse tun, sondern in die rcp-Anwendung integrieren. Ich habe eine rcp-Anwendung gegeben, die mit Eclipse an sich nicht mehr viel zu tun hat. Die Auswahl von Dateien aus dem Repository soll über einen Menüpunkt an der oberen Leiste laufen. Dieser Menüpunkt öffnet dann einen Editor oder einen Dialog, den ich schreibe. Zum Beispiel kann das dann eben die Baumstruktur sein die dargestellt wird oder ein Filedialog mit dem man das Repository durchsuchen kann. Die ausgewählte Datei muss ich auch abgreifbar sein.

Die EGit oder svn - Fenster kann ich dafür nicht benutzen oder? Das soll so in der Form für den Nutzer gar nicht zu sehen sein, es soll einfach nur die Auswahl da sein in einem eigenen Fenster.

Habt ihr da noch Ideen?

Viele Grüße


----------



## lam_tr (15. Jul 2015)

> Ich will das aber nicht während meiner Entwicklung in Eclipse tun, sondern in die rcp-Anwendung integrieren. Ich habe eine rcp-Anwendung gegeben, die mit Eclipse an sich nicht mehr viel zu tun hat.


Nee du muss nichts in Eclipse machen, ich wollte nur sagen dass du die Plug-Ins angucken kannst, wie die Daten geholt werden kann.



> Die EGit oder svn - Fenster kann ich dafür nicht benutzen oder? Das soll so in der Form für den Nutzer gar nicht zu sehen sein, es soll einfach nur die Auswahl da sein in einem eigenen Fenster.


An sich sind es nur Views in bestimmte Plug-Ins die du in deiner RCP wiederverwenden kannst, wenn du sie in deine plugin.XML erweiterst.

Ich habe irgendwie dein Anliegen immer noch nicht verstanden.

Wenn du ein Menü zum Auswählen des Repository und einen Editor/FileChooser->Dilaog, dann dürft es doch recht einfach gehen?

Gruß lam


----------



## philox (15. Jul 2015)

Hmm ok, dann schaue ich mir das mal genauer an. Du meinst also, dass ich das neue, leere "Fenster" mit dem Plugin (z.B svn) verbinden kann, sodass ich die gleiche Sicht wie im "svn-Fenster" auch in meinem eigenen Dialog habe. Und an der Stelle kann ich dann auch die Auswahl "managen"...hört sich ja ganz gut an. Ich schau mir das mal an. 

Wenn du noch was hast, trotzdem immer her damit. ;-) Vielen Dank erstmal.


----------



## lam_tr (15. Jul 2015)

philox hat gesagt.:


> Hmm ok, dann schaue ich mir das mal genauer an. Du meinst also, dass ich das neue, leere "Fenster" mit dem Plugin (z.B svn) verbinden kann, sodass ich die gleiche Sicht wie im "svn-Fenster" auch in meinem eigenen Dialog habe. Und an der Stelle kann ich dann auch die Auswahl "managen"...hört sich ja ganz gut an. Ich schau mir das mal an.
> 
> Wenn du noch was hast, trotzdem immer her damit. ;-) Vielen Dank erstmal.



Kennst du dich mit Rcp aus?

Wenn du in die Dependency die SVN-Plug-Ins hinzufügst, dann kannst du die Views von SVN in deiner RCP Anwendung wiederverwenden. Aber der Baum von der SVN-ViewPart kannst du nicht in deiner View/EditorPart verwenden, sondern muss du eine eigene implementieren.

Wieso verwendest du nicht einfach die SVN-View und bastelst noch eine eigene View die auf dieser SVN-View horcht per SelectionService. Wenn du sogar EAPprogrammierst, kannst du über EventBroker schön kommunizieren.

Gruß lam


----------



## philox (15. Jul 2015)

lam_tr hat gesagt.:


> Aber der Baum von der SVN-ViewPart kannst du nicht in deiner View/EditorPart verwenden, sondern muss du eine eigene implementieren.



Was genau meinst du damit? Heißt das ich kann auf die Informationen aus dem SVN-Viewpart zugreifen, jedoch lässt sich der Baum nicht in meiner eigenen View darstellen? Daher baue ich meine eigene View, die auf den Informationen arbeitet. Das wäre ja dann Dein Ansatz im letzten Satz. Das muss ich mir mal genauer ansehen.^^


----------



## lam_tr (15. Jul 2015)

Ich bin mir da ehrlich gesagt nicht sicher. Aber wir reden hier doch von dieser View oder?
https://eclipse.org/subversive/documentation/teamSupport/repos_view.php

Ich weiß nicht ob die den Baum als Container haben oder direkt in die ViewPart gepflanzt haben.

Guck dir am Besten den Code hier mal nach unter Subversive Project:
git://git.eclipse.org/gitroot/project/repo

Wenn es direkt in der View ist, dann kannst du trotzdem partiell Sachen rauskopieren.

Gruss lam


----------



## philox (15. Jul 2015)

Denkst du, dass es nicht möglich ist sich von einer url die directory geben zu lassen? Mit der ganzen directory im Speicher(gesamte baumstruktur), ließe sich da ein filechooser draufsetzen....? Das macht einen sehr viel einfacheren Eindruck.
Ansonsten werde ich mir Deinen Ansatz mal zu Gemüte führen. Das hört sich auch sehr sinnvoll an, jedoch auch nicht gerade trivial. ;-)


----------



## lam_tr (15. Jul 2015)

Hmm es hört sich so einfach an bei dir?

Reicht es überhaupt aus per URL auf die Repository zu zugreifen?
Was ist mit Authentigizierung?
Dann brauchst du noch Datenmodell, dass die Repository mappt und dir als TreeViewer zurückgibt.
Damit die Oberfläche nicht einfriert muss du wahrscheinlich noch ein Algo ausdenken, wie tief das Fetchen gell soll.
Ansonsten kannst du auch im Hintergrund laufen lassen, dann wird deine UI erst geupdatet sobald fertig gefetcht ist.

Ich denke da kommen noch ein paar Punkte dazu.

Ich weiß nicht, vielleicht stelle ich mir alles nur sehr kompliziert vor.


----------



## philox (15. Jul 2015)

Das mit der Authentifizierung stimmt auf jeden Fall. Ich bin gerade dabei mich da einzulesen...


----------



## philox (16. Jul 2015)

Nach langer Recherche habe ich neue Informationen.
1. Es handelt sich um ein Maven, nicht um ein svn-Repository.
2. Die hier angesprochenen Lösungen werden so nicht funktionieren.
3. Ich habe https://eclipse.org/aether/ gefunden. Allerdings steige ich da noch nicht wirklich durch. Anscheinend soll damit mein Problem damit lösbar sein. 

Meinst du, du kannst da mal einen Blick drauf werfen? Da ich "nur" Maven-Artefakte aus dem Repository "ziehen" möchte, dürfte man von der library nur einen Bruchteil benötigen.


----------



## lam_tr (16. Jul 2015)

Hallo,

ich hätte eigentlich drauf kommen sollen dass du von Maven hast. Du redest doch schon die ganze Zeit von Artefakte 

Aether sieht auf den ersten Blick doch gar nicht mal so schlecht aus. Zuerst mal, wie willst du auf die Repository zugreifen? Ich hab mal in das Example Repository reingeschaut, das hier sieht doch gar nicht mal so schlecht aus http://git.eclipse.org/c/aether/aet.../eclipse/aether/examples/ResolveArtifact.java

Kann eventuell klappen.


----------



## philox (18. Jul 2015)

Hallo nochmal,

aether scheint recht vielversprechend zu sein, allerdings habe ich Probleme bei der Anwendung.
Das könnte hiermit zusammenhängen:

"The latest release of Aether Core can be obtained as a bundle with JARs and Javadoc. Note that this bundle contains only artifacts produced by this project, 3rd party dependencies are not included and need to be obtained separately as needed." -https://www.eclipse.org/aether/download/-

Ich habe mit der Klasse ResolveArtifact aus der Demo begonnen, bei der Klasse Booter fehlt mir dann schon bspw. MavenRepositorySystemUtils.

Fehlen mir da jars oder so?

Viele Grüße


----------



## lam_tr (19. Jul 2015)

Wie es aussschaut muss du Abhängigkeiten selber in dein Projekt hinzufügen.

Abhängigkeiten kannst du in der plugin.xml nachlesen.

Gruß lam


----------

