On 30.08.2014 12:30, Matthias Bohnstedt wrote:

Hallo,

wie Herr Prechelt schon schrieb bin ich gerade dabei meine Masterarbeit vorzubereiten. Die erste Idee Richtung GUI-Testframework für Saros/I macht wirklich nicht so viel Sinn, wenn die UI noch im Wandel ist.

Das UI von Saros/E ist auch ab und zu im Wandel, und trotzdem haben wir GUI Tests ....

Ich habe verstanden, dass Teile (wie viele genau?) der GUI von SAROS/E mit der SWT-Browser Komponente realisiert wurden. Und, dass sich die Frage stellt ob es ein Äquivalent zu dieser Komponente auch in IntelJ gibt, um die UI dort ähnlich zu realsieren. Das Ganze mit dem Ziel die Gemeinsamkeiten zu vergrößern (bzw. genauer die Plattformabhänigkeit der UI zu minimieren).

Es sind bis jetzt genau NULL Teile im Saros UI mit dieser Technik/Technologie erstellt worden.

Beim von Kahlert beschriebenen Workflow, ist mir nicht klar was "Facade" ist -- einfach eine Klasse/Bibo? Ich denke es würde mir sehr helfen den Workflow als Code zu sehen um überhaupt einschätzen zu können wie sich das auf IntelliJ übertragen lässt. Wo sollte ich da am besten anfangen?

Was die "IntelliJ GUI-Komponente mit bidirektionale Kommunikation und Callback" angeht, IntelJ benutzt soweit ich es auf den ersten Blick verstanden habe für die Gesamte GUI Java SWING. Insofern sollte das doch generell machbar sein, oder?


Machbar ist eigentlich immer fast alles. Die Frage ist nur: wie hoch ist der Aufwand. Soweit ich das gesehen habe, gibt es zumindestens keine equivalente Browser Klasse in AWT/Swing die in der Standard Java Distribution enthalten ist.
Und in der IntelliJ API gibt es auch nichts.

Da ich noch nicht sehr tief in der Materie Stecke bin ich für jeden Hinweis oder Einstiegspunkt dankbar.


Grüße

Matthias Bohnstedt


PS: dpp-devel  = Englisch

Gruß,
Stefan


Am 28. August 2014 15:49 schrieb Kahlert, Björn <bjoern.kahl...@fu-berlin.de <mailto:bjoern.kahl...@fu-berlin.de>>:

    /siehe unten/

    On 28.08.2014, at 13:23, Stefan Rossbach <srossb...@arcor.de
    <mailto:srossb...@arcor.de>> wrote:

    Das ganze Technik hat auch einen Namen:
    http://de.wikipedia.org/wiki/Ajax_%28Programmierung%29

    Wenn man die Java-Wrapper-Komponente als Server sieht, könnte man
    das so bezeichnen.
    Ich sehe das einfach nur als typische GUI-Komponente, die
    Funktionsaufrufe (möglicherweise umgebaut) transparent an einen
    gewrappten Browser übergibt.

    Mit rendern meinte ich auch genau was du beschreibst. Die Website
    bestimmt den Inhalt. Es sollte klar sein, dass das technische
    rendern (Daten in den Grafikkartenspeicher schreiben) wohl immer
    lokal ist :P

    Stellt sich halt nur das Problem: Ich finde gerade:

    1. keine Chromium Engine für Java

    SWT greift auf einen installierten Browser zu. An diese Stelle
    besteht erst einmal keine Notwendigkeit einer mitgelieferten Engine.
    Auf Linux scheint das allerdings zu Problemen führen zu können:
    
http://stackoverflow.com/questions/5817263/how-to-get-eclipse-swt-browser-component-running-on-ubuntu-11-04-natty-narwhal

    2. wäre das eine ziemlich große Bibliothek (denke mal > 10 MB)

    Mein Browser-Wrapper, der eine Menge SWT-Funktionalität nutzt, ist
    ~250KB groß.
    Aber wie gesagt: Es ist ein Wrapper. Keine Browser-Engine. So eine
    mitzuliefern würden Abhängigkeiten mit der Host-Umwelt verringern
    aber auch mit einem Aufwand verbunden sein, den ich aktuell nicht
    überblicke.

    3. es muss alles lokal laufen ... externe Browser und/oder
    externe Server zu benutzen
    ist nicht gerade sehr elegant ... und 4xx/5xx "Webseiten" sind
    wirklich "komische" GUI Elemente :P

    Darin sehe ich keinen Nachteil. Die Idee ist ja,
    HTML+CSS+JavaScript zu verwenden, um schnell an individuelle und
    plattformübergreifende Darstellungen zu gelangen.
    Je individueller Komponente benötigt man lediglich eine HTML-Seite
    und deren inkludierte Ressourcen, die man selbstverständlich mit
    in das Plugin packt.





    On 28.08.2014 13:06, Kahlert, Björn wrote:
    Die SWT-Browser-Komponente verwendet den System-Browser (IE
    unter Windows, Safari unter Mac OS, ...) um darin eine beliebige
    Website zu öffnen.
    Ich handhabe das so, dass eben diese Website eine html-Seite
    ist, die Interaktivität mittels JavaScript realisiert und eine
    API (genauer: eine Facade) bereitstellt, mit der dann die
    Java-Welt kommuniziert.
    Das Rendering übernimmt also kein Webdienst o.ä. sondern der
    lokale in einer SWT-Komponente eingebettete System-Browser.

    Workflow:
    1. Single-Page-Website aufsetzen
    2. Website implementieren (d.h. Funktionen bereitstellen, z.B.
    Darstellung einer Liste von Elementen)
    3. Facade in einer globalen Variable bereitstellen (also sollte
    dann sowas wie "window.facade.addItem(item)" möglich sein)
    4. Eigene SWT-Komponente schreiben (also von Composite erben)
    5. Browser in Komponente einbetten (mit FillLayout) und
    Single-Page-Website mittels browser.open(...) öffnen
    6. JavaScript-Facade also Member-Funktionen bereitstellen (z.B.
    addItem(Item item))
    7. Member-Funktion die JavaScript-Facaden-Funktion aufrufen
    lassen, z.B. browser.execute("window.facade.addItem('" + item +
    "');")
    8. ggf. Rückgabe parsen und als typisiertes Objekt zurückgeben

    On 28 Aug 2014, at 12:35, Stefan Rossbach <srossb...@arcor.de
    <mailto:srossb...@arcor.de>> wrote:

    Hallo,

    also quasi sowas hier: http://www.awesomium.com/ ?

    Wenn ich das jetzt richtig verstanden habe, ist der Webserver
    zuständig für das "Rendern" des GUI.

    Da Saros aber auch in Intranets (z.B Firmen) eingesetzt werden
    soll, müsste dann der Webserver lokal irgendwie mitlaufen.

    Ein anderer Ansatz wäre es, dass komplette GUI zu skripten (bei
    dem Freiraum, den Eclipse da zuläßt, weiss ich aber nicht, ob
    das überhaupt Sinnvoll wäre).

    Siehe auch:

    http://www.darkageofcamelot.com/content/xml-user-interface (XML
    only)

    http://www.wowwiki.com/World_of_Warcraft_API  (LUA/XML)

    http://www.lotrointerface.com/wiki/LotRO_API_Reference (LUA)

    http://wiki.riftui.com/Main_Page (LUA)

    http://camelotunchained.com/en/making-a-game-out-of-the-web/
    (HTML, JavaScript, CSS ... also dein Ansatz)

    ....

    Viele Wege führen nach Rom, welche der bequemste ist
    (vielleicht ist es einfach auch nur C&P und replace) muss halt
    analysiert werden.

    Gruß,
    Stefan

    On 28.08.2014 12:10, Kahlert, Björn wrote:
    Hallo,

    noch eine Ergänzung zur Technik:
    In Eclipse verwende ich die SWT Komponente "Browser".
    Diese Komponente öffnet eine selbst zu entwickelnde einseitige
    Website.
    Browser erlaubt JavaScript-Aufrufe und unterstützt Rückgaben.
    So genannte BrowserFunctions können aktiv von JavaScript-Seite
    aufgerufen werden (z.B. im Fälle eines Ereignisses auf
    HTML-Seite).
    Durch Delegation kann eine individuelle SWT-Komponente
    entwickelt werden, die die Natur der Webanwendung vollständig
    verbirgt.
    Je mehr Logik in der Webanwendung steckt, desto weniger
    Code-Duplikation ist vonnöten.
    Man hat nur beschränkt Kontrolle über den verwendeten Browser,
    d.h. die Webanwendung selbst muss Cross-Browser-kompatibel sein.
    Die enorme Optimierung aktueller Major-Browser wirkt sich auf
    die eigene Anwendung positiv aus. In meiner QDA-Anwendung wird
    eine > 10.000px breite Zeitleiste mit mehreren hundert
    Icon-großen Bildern dargestellt ... flüssig ... und in SWT
    undenkbar.

    Diese knappe Beschreibung soll nicht nur die Möglichkeiten
    verdeutlichen, sondern auch als Anforderungsbeschreibung
    dienen. Es wäre sicherzustellen, dass IntelliJ ebenfalls eine
    GUI-Komponente besitzt, die bidirektionale Kommunikation und
    Callback-Funktionen bereit hält.

    Björn

    On 28 Aug 2014, at 09:33, "Lutz Prechelt"
    <prech...@inf.fu-berlin.de
    <mailto:prech...@inf.fu-berlin.de>> wrote:

    Lieber Franz, lieber Holger, lieber Herr Rossbach,

    Björn Kahlert macht in seiner Promotionsforschung qualitative
    Datenanalyse (QDA).
    Da es für seine Datenarten nichts passendes gibt, hat er sich
    selbst
    eine umfangreiche QDA-Anwendung gebaut.
    Und da er ein Eclipse-Crack ist (er hat erhebliche Teile des
    Saros-GUI
    implementiert), hat er Eclipse RCP dafür benutzt.

    Gestern hat er mir erzählt, dass viele der Widgets in seiner
    Anwendung gar nicht mit SWT gebaut sind, sondern immer wieder
    auf der gleichen HTML-Komponente basieren, die er sich gebaut
    hat, und in Wirklichkeit hauptsächlich aus HTML und etwas
    Javascript
    bestehen.
    Trotz des erheblichen Aufwands, den er in den Bau der
    Basiskomponente
    gesteckt hat, findet er, dass er in der Summe damit viel Arbeit
    gespart hat.

    Das hat in mir folgenden Gedanken erzeugt:
    Wenn er das schon aus purer Bequemlichkeit so macht,
    wie hilfreich muss es dann erst sein, wenn man damit die
    Gemeinsamkeiten von Saros-E und Saros-I vergrößern kann,
    weil viel weniger Teile derer GUI tatsächlich plattformspezifisch
    sind?
    Zumindest die Gleich-Förmigkeit der beiden GUIs sollte sich
    doch wohl so viel einfacher herstellen und bewahren lassen.
    Und für die Testautomatisierung könnte das auch ein Segen sein.

    Ich überschaue die Implikationen leider überhaupt nicht und bitte
    deshalb um Kommentare zu dieser Idee (die zugegeben gern ein paar
    Monate früher hätte auftauchen dürfen, ich weiß).

    Wir haben aktuell zwei Aspiranten auf eine Masterarbeit
    (Cikryt und Bohnstedt), die beide bislang tendenziell
    Richtung Testen/Testframework unterwegs sind, was nicht sinnvoll
    ist. Man könnte einen davon Richtung HTML-Basierung umsteuern.

     Lutz






    
------------------------------------------------------------------------------
    Slashdot TV.
    Video for Nerds.  Stuff that matters.
    http://tv.slashdot.org/
    _______________________________________________
    DPP-Devel mailing list
    DPP-Devel@lists.sourceforge.net
    <mailto:DPP-Devel@lists.sourceforge.net>
    https://lists.sourceforge.net/lists/listinfo/dpp-devel




------------------------------------------------------------------------------
Slashdot TV.
Video for Nerds.  Stuff that matters.
http://tv.slashdot.org/


_______________________________________________
DPP-Devel mailing list
DPP-Devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/dpp-devel

------------------------------------------------------------------------------
Slashdot TV.  
Video for Nerds.  Stuff that matters.
http://tv.slashdot.org/
_______________________________________________
DPP-Devel mailing list
DPP-Devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/dpp-devel

Reply via email to