Discussion:
Auf Klick im Browser in Java-Anwendung reagieren?
(zu alt für eine Antwort)
Stefan Matthias Aust
2004-09-09 09:15:34 UTC
Permalink
Das ist jetzt ein ganz bisschen OT:

Ich versuche Browser und Rich-Client-Anwendung zu vereinnen. In etwas,
das wie eine normale Webseite aussieht (und idealerweise eine normale
Webseite sein sollte) möchte ich bestimmte Klicks derart abfangen, dass
(idealerweise abhängig vom mime type) sofort eine bestimmte Aktion
ausgeführt wird: Ich möchte eine Ressource an bestimmter Stelle
speichern und sofort weiterverarbeiten.

Ich möchte nicht diesen "Speichern unter" Dialog sehen. Auch möchte ich
eigentlich nicht mit zwei Fenstern für Browser und meine Anwendung
arbeiten. Gleichzeitig möchte ich _schnell_ (sprich heute) eine Lösung.

Kann ich irgendwie einen Link präparieren, sodass ich direkt angeben
kann, wohin das speichert werden soll? Dieses Verzeichnis könnte ich
dann von meiner Anwendung aus überwachen. Ich vermute mal ganz stark nein.

Ich könnte wohl an einen eigenen mime type das Ausführen eines eigenen
Programms hängen, jedenfalls bei Mozilla
(Navigator/Hilfsanwendungen/Neuer Typ...). Das müsste man aber wohl
einmalig manuell machen :( Dieses merkwürdige RDF-Format in
mimeTypes.rdf verstehe ich nicht so ganz. Unschön.

Außerdem müsste ich in diesem Programm dann per socket meine Anwendung
kontaktieren. Und ich glaube, XPsp2 nörgelt, wenn eine Java-Anwendung
ein Server-Socket öffnet. Unschön.

Momentan verfolge ich den Weg, einen Browser in meine Anwendung
einzubetten und dann bei jedem Link erstmal zu schauen, was das ist.
Leider habe ich nicht Zugriff auf den mime type, nur die URL. Ich nutze
SWT, das sollte ich vielleicht noch sagen, und habe dadurch den echten
IE eingebettet (Windows only ist für mich okay). Ist das eine URL, die
mich interessiert, cancel ich den LocationEvent und mache, was ich für
richtig halte. Funktioniert. Nachteil ist aber das ich mir dadurch
meine Historie im Browser kaputtmache. Da stehe jetzt immer eine
"navigation canceled" Seite... :( Unschön.

Über Swing und dessen JEditorPane hatte ich auch kurz nachgedacht, aber
da ist die Kompatibilität zu HTML nicht so hoch. Außerdem müsste ich da
noch mehr implementieren, um einen Browser mit den üblichen Funktionen
zu haben. Dafür könnte ich wohl immer erstmal die URLConnection öffnen,
mime type anschauen und dann entweder neue Seite rendern oder eben nicht.

Über XML selbst wie HTML rendern hatte ich ganz, ganz kurz nachgedacht,
aber das schaffe ich nicht an nur einem Tag :)

Übersehe ich eine offensichtliche Lösung? Ich will einfach Dokumente
direkt in eine Anwendung (und deren Datenbank) laden, ohne dass der
Benutzer sie irgendwo lokal speichern muss. Die Webseiten kann ich
anpassen, so das nötig wäre.


bye
--
Stefan Matthias Aust // "Zweifel sind der Ansporn des Denkens..." -U
Hermann Scheibe
2004-09-09 10:28:43 UTC
Permalink
Hallo Stefan,
Post by Stefan Matthias Aust
Ich versuche Browser und Rich-Client-Anwendung zu vereinnen. In etwas,
das wie eine normale Webseite aussieht (und idealerweise eine normale
Webseite sein sollte) möchte ich bestimmte Klicks derart abfangen, dass
(idealerweise abhängig vom mime type) sofort eine bestimmte Aktion
ausgeführt wird: Ich möchte eine Ressource an bestimmter Stelle
speichern und sofort weiterverarbeiten.
Ich möchte nicht diesen "Speichern unter" Dialog sehen. Auch möchte ich
eigentlich nicht mit zwei Fenstern für Browser und meine Anwendung
arbeiten. Gleichzeitig möchte ich _schnell_ (sprich heute) eine Lösung.
Kann ich irgendwie einen Link präparieren, sodass ich direkt angeben
kann, wohin das speichert werden soll? Dieses Verzeichnis könnte ich
dann von meiner Anwendung aus überwachen. Ich vermute mal ganz stark nein.
Ich könnte wohl an einen eigenen mime type das Ausführen eines eigenen
Programms hängen, jedenfalls bei Mozilla
(Navigator/Hilfsanwendungen/Neuer Typ...). Das müsste man aber wohl
einmalig manuell machen :( Dieses merkwürdige RDF-Format in
mimeTypes.rdf verstehe ich nicht so ganz. Unschön.
Außerdem müsste ich in diesem Programm dann per socket meine Anwendung
kontaktieren. Und ich glaube, XPsp2 nörgelt, wenn eine Java-Anwendung
ein Server-Socket öffnet. Unschön.
Momentan verfolge ich den Weg, einen Browser in meine Anwendung
einzubetten und dann bei jedem Link erstmal zu schauen, was das ist.
Leider habe ich nicht Zugriff auf den mime type, nur die URL. Ich nutze
SWT, das sollte ich vielleicht noch sagen, und habe dadurch den echten
IE eingebettet (Windows only ist für mich okay). Ist das eine URL, die
mich interessiert, cancel ich den LocationEvent und mache, was ich für
richtig halte. Funktioniert. Nachteil ist aber das ich mir dadurch
meine Historie im Browser kaputtmache. Da stehe jetzt immer eine
"navigation canceled" Seite... :( Unschön.
Über Swing und dessen JEditorPane hatte ich auch kurz nachgedacht, aber
da ist die Kompatibilität zu HTML nicht so hoch. Außerdem müsste ich da
noch mehr implementieren, um einen Browser mit den üblichen Funktionen
zu haben. Dafür könnte ich wohl immer erstmal die URLConnection öffnen,
mime type anschauen und dann entweder neue Seite rendern oder eben nicht.
Über XML selbst wie HTML rendern hatte ich ganz, ganz kurz nachgedacht,
aber das schaffe ich nicht an nur einem Tag :)
Übersehe ich eine offensichtliche Lösung? Ich will einfach Dokumente
direkt in eine Anwendung (und deren Datenbank) laden, ohne dass der
Benutzer sie irgendwo lokal speichern muss. Die Webseiten kann ich
anpassen, so das nötig wäre.
bye
--
Stefan Matthias Aust // "Zweifel sind der Ansporn des Denkens..." -U
eine Alternative zum einbetten eines Browsers unter Windows wäre - ROT
abzufragen.
ROT steht für Running Object Table. Dadurch lässt sich mindestens IE Object
Model kontaktieren
und über COM fernsteuern.

Wenn es hilft : ich habe mal ein Beispiel für geschrieben aber ohne SWT.

HTH
Hermann
Stefan Matthias Aust
2004-09-09 09:56:42 UTC
Permalink
Post by Hermann Scheibe
eine Alternative zum einbetten eines Browsers unter Windows wäre - ROT
abzufragen.
ROT steht für Running Object Table. Dadurch lässt sich mindestens IE Object
Model kontaktieren
und über COM fernsteuern.
Hm, sowas hier? http://www.developer.com/net/cplus/article.php/632481
Das sieht mir doch recht aufwendig aus... da lebe ich glaube ich erstmal
lieber mit der kaputten Historie. Trotzdem danke.


bye
--
Stefan Matthias Aust // "Zweifel sind der Ansporn des Denkens..." -U
Hermann Scheibe
2004-09-09 11:23:16 UTC
Permalink
Hallo Stefan
Post by Stefan Matthias Aust
Post by Hermann Scheibe
eine Alternative zum einbetten eines Browsers unter Windows wäre - ROT
abzufragen.
ROT steht für Running Object Table. Dadurch lässt sich mindestens IE Object
Model kontaktieren
und über COM fernsteuern.
Hm, sowas hier? http://www.developer.com/net/cplus/article.php/632481
Das sieht mir doch recht aufwendig aus... da lebe ich glaube ich erstmal
lieber mit der kaputten Historie. Trotzdem danke.
IE 4.0 war immer eine Krücke ....
Sorry mein Vorschlag mit ROT war ein wenig daneben.
Es gibt für IE aber eine Ausnahme ( sonst wäre es nicht vom MS),
Instanzen registrieren sich nicht im ROT sondern bei
ShellWindows -Kollektion.
Sehe dazu KB 176792

Gruß
Hermann
Stefan Matthias Aust
2004-09-09 11:08:32 UTC
Permalink
Post by Hermann Scheibe
Es gibt für IE aber eine Ausnahme ( sonst wäre es nicht vom MS),
Instanzen registrieren sich nicht im ROT sondern bei
ShellWindows -Kollektion.
Sehe dazu KB 176792
Für VB sieht das hier ->
http://support.microsoft.com/default.aspx?sd=msdn&scid=kb;en-us;176792
recht einfach aus, aber bereits das C++-Beispiel schreckt mich ab. Mit
SWT versuche ich das erst gar nicht... (da müsste ich mir die
OLE-Bibliotheken erstmal bauen) trotzdem danke.


bye
--
Stefan Matthias Aust // "Zweifel sind der Ansporn des Denkens..." -U
Frank Buss
2004-09-09 12:50:46 UTC
Permalink
Post by Stefan Matthias Aust
Für VB sieht das hier ->
http://support.microsoft.com/default.aspx?sd=msdn&scid=kb;en-us;176792
recht einfach aus, aber bereits das C++-Beispiel schreckt mich ab.
dabei verwendet das bereits die Microsoft-C++-COM-Spracherweiterungen. Ich
habe sowas mal zu Fuß (also pure-C++) angebunden und das macht wirklich
keinen Spaß, bei jeder Zeile überlegen zu müssen, ob dieses Objekt denn nun
wieder freigegeben, man sich selber drum kümmern muß oder irgendeine
Funktion mal wieder einen Pointer-of-Pointer erwartet, in das ein Pointer
auf ein angelegtes Objekt geschrieben wird und wie ob denn das v-table/COM-
Mapping richtig funktioniert.
--
Frank Buß, ***@frank-buss.de
http://www.frank-buss.de, http://www.it4-systems.de
Stefan Ram
2004-09-09 09:41:29 UTC
Permalink
Post by Stefan Matthias Aust
Kann ich irgendwie einen Link präparieren, sodass ich direkt
angeben kann, wohin das speichert werden soll? Dieses
Verzeichnis könnte ich dann von meiner Anwendung aus
überwachen. Ich vermute mal ganz stark nein.
Wohl nicht. Du kannst mit HTTP 1.1 nach 19.5.1 in RFC 2616
lediglich einen Dateinamen ohne Verzeichnisangabe vorschlagen.
Frank Buss
2004-09-09 10:33:11 UTC
Permalink
Post by Stefan Matthias Aust
Ich versuche Browser und Rich-Client-Anwendung zu vereinnen. In
etwas, das wie eine normale Webseite aussieht (und idealerweise eine
normale Webseite sein sollte) möchte ich bestimmte Klicks derart
abfangen, dass (idealerweise abhängig vom mime type) sofort eine
bestimmte Aktion ausgeführt wird: Ich möchte eine Ressource an
bestimmter Stelle speichern und sofort weiterverarbeiten.
wenn du den Internet-Explorer als Komponente per SWT eingebunden hast,
dann müsstest du Zugriff auf alle Interface haben und das sollte dir
dann helfen:

http://msdn.microsoft.com/workshop/browser/webbrowser/reference/ifaces/dwebbrowserevents2/beforenavigate2.asp
--
Frank Buß, ***@frank-buss.de
http://www.frank-buss.de, http://www.it4-systems.de
Stefan Matthias Aust
2004-09-09 10:44:52 UTC
Permalink
Post by Frank Buss
wenn du den Internet-Explorer als Komponente per SWT eingebunden hast,
dann müsstest du Zugriff auf alle Interface haben und das sollte dir
http://msdn.microsoft.com/workshop/browser/webbrowser/reference/ifaces/dwebbrowserevents2/beforenavigate2.asp
SWT ist sogar noch besser, denn genau diese Funktion steht für alle
Plattformen zur Verfügung. Das ist, was ich mit Cancel des
LocationEvents meinte.


bye
--
Stefan Matthias Aust // "Zweifel sind der Ansporn des Denkens..." -U
Peter Büttner
2004-09-09 13:58:53 UTC
Permalink
Moin
Post by Stefan Matthias Aust
Ich versuche Browser und Rich-Client-Anwendung zu vereinnen. In etwas,
das wie eine normale Webseite aussieht (und idealerweise eine normale
Webseite sein sollte) möchte ich bestimmte Klicks derart abfangen, dass
(idealerweise abhängig vom mime type) sofort eine bestimmte Aktion
ausgeführt wird: Ich möchte eine Ressource an bestimmter Stelle
speichern und sofort weiterverarbeiten.
[...]

Mit javascript:
onClick im Link (geht dann auch ohne link ). Nun muss man die url
anfragen, wenn es nicht direkt geht in einem hidden Frame oder
internal-Frame (internal: dann muss man im aussenrumliegenden design
nicht so gucken) der (lokale) Socket liefert dann nix, leere seite,etc.
kriegt die Anforderung aber mit und macht das gewünschte.

Vielleicht auch ein Applet, signiert mit allen Rechten, JaveScript
mit LiveConnect? Ich würde da dann eher die andere Lösung wählen.
Post by Stefan Matthias Aust
Ich könnte wohl an einen eigenen mime type das Ausführen eines eigenen
Programms hängen, jedenfalls bei Mozilla
Sollte mit IE auch gehen, gehört dann zur 'Installation'.
Wie Webstart das auch macht.

[...]
Post by Stefan Matthias Aust
Außerdem müsste ich in diesem Programm dann per socket meine Anwendung
kontaktieren. Und ich glaube, XPsp2 nörgelt, wenn eine Java-Anwendung
ein Server-Socket öffnet. Unschön.
Sicher? Na, da werden noch einige andere Apps Probleme haben.
Benutzer-Zielgruppe?
Post by Stefan Matthias Aust
Momentan verfolge ich den Weg, einen Browser in meine Anwendung
einzubetten und dann bei jedem Link erstmal zu schauen, was das ist.
Leider habe ich nicht Zugriff auf den mime type, nur die URL. Ich nutze
Url Reicht doch.
Post by Stefan Matthias Aust
SWT, das sollte ich vielleicht noch sagen, und habe dadurch den echten
IE eingebettet (Windows only ist für mich okay). Ist das eine URL, die
mich interessiert, cancel ich den LocationEvent und mache, was ich für
richtig halte. Funktioniert. Nachteil ist aber das ich mir dadurch
meine Historie im Browser kaputtmache. Da stehe jetzt immer eine
"navigation canceled" Seite... :( Unschön.
?? macht doch nix, was vom Brauser sieht denn der Benutzer? Wenn der
'ganz' eingebettet ist (hab mal ein Prototyartiges gebaut) kommt
der dorch garnicht ran, oder?
Post by Stefan Matthias Aust
Über Swing und dessen JEditorPane hatte ich auch kurz nachgedacht, aber
da ist die Kompatibilität zu HTML nicht so hoch. Außerdem müsste ich da
noch mehr implementieren, um einen Browser mit den üblichen Funktionen
zu haben. Dafür könnte ich wohl immer erstmal die URLConnection öffnen,
mime type anschauen und dann entweder neue Seite rendern oder eben nicht.
'Totale' Kontrolle halt, leicht erweiterbar.
Die Html unterstützung geht so, in einem aktuellen Projekt mit Reports
in der Art von 'Messdaten' reicht das völlig. Und so schlecht ist der
garnicht. Tabellen und Schriftarten bisschen mit css tweaken und es ist
fast hübsch. Kommt aber stark darauf an was dargestellt werden muss.

Was musst du denn implementieren? UrlHandler (oder wie sich das nennt).
Soll das ein kompletter Brauser werden oder ein Hilfsmittel für einfach
zu bauendes Gui?
Was brauchst du denn von der Brauserfunktionalität?
Post by Stefan Matthias Aust
Über XML selbst wie HTML rendern hatte ich ganz, ganz kurz nachgedacht,
aber das schaffe ich nicht an nur einem Tag :)
XML + XSLT -> html


Andere Möglichkeiten:
Mit SWT kann man auch den Mozilla (Mozilla-Control) unter Windows
einbetten (fast sicher) vielleicht gibt es da mehr Möglichkeiten.
Da die com-api deckungsgleich sein soll (ist der Sinn des ganzen)
braucht man wohl 'nur' in einer swt-dll oder jar einen guid-String
{45218402-123...} ändern.
Vielleicht hat irgendwer das auch schon erledigt.



Grüße
Peter
--
Shell&Jar : Individual icons for jars
jMineSweeper : extended
www.PeterBuettner.de
Stefan Matthias Aust
2004-09-09 19:13:33 UTC
Permalink
Post by Peter Büttner
onClick im Link (geht dann auch ohne link ). Nun muss man die url
anfragen, wenn es nicht direkt geht in einem hidden Frame oder
internal-Frame (internal: dann muss man im aussenrumliegenden design
nicht so gucken) der (lokale) Socket liefert dann nix, leere seite,etc.
kriegt die Anforderung aber mit und macht das gewünschte.
Ich verstehe nicht. Willst du mir sagen, mit JavaScript kann ich direkt
eine Datei in ein bestimmtes Verzeichnis ohne Dialog schreiben? Das
kann ich eigentlich nicht glauben, weil das ein Sicherheitsproblem
allererste Güte wäre. Oder soll das eine Lösung sein, den MIME type
herauszubekommen? Dann müsste ich aber die Ressource 2x laden, was auch
suboptimal ist - einmal, um den MIME type zu bestimmen und dann, falls
passend, nochmal so, dass ich es speichern kann.
Post by Peter Büttner
Vielleicht auch ein Applet, signiert mit allen Rechten, JaveScript
mit LiveConnect? Ich würde da dann eher die andere Lösung wählen.
Applet ist mir zu aufwendig. Außerdem kann ich dann nicht SWT für's UI
nehmen.
Post by Peter Büttner
Post by Stefan Matthias Aust
Außerdem müsste ich in diesem Programm dann per socket meine Anwendung
kontaktieren. Und ich glaube, XPsp2 nörgelt, wenn eine Java-Anwendung
ein Server-Socket öffnet. Unschön.
Sicher? Na, da werden noch einige andere Apps Probleme haben.
Benutzer-Zielgruppe?
Nein, nicht sicher. Beim ersten Start von Eclipse nach SP2 hat mich XP
gefragt, ob ich javaw weiter blocken möchte. Ich habe Windows virtuell
in den Hintern getreten, gesagt, dass es die Finger von javaw.exe lassen
soll und seit dem ist Ruhe. Aber wie das bei einer jungfräulichen XP
SP2-Installation wäre kann ich nicht sagen.
Post by Peter Büttner
Post by Stefan Matthias Aust
Momentan verfolge ich den Weg, einen Browser in meine Anwendung
einzubetten und dann bei jedem Link erstmal zu schauen, was das ist.
Leider habe ich nicht Zugriff auf den mime type, nur die URL. Ich nutze
Url Reicht doch.
Mir eigentlich nicht. Die Dateiendung wäre .xml. Und es gibt so
verdammt viele XML-basierte Syntaxen... aber das lässt sich in den Griff
bekommen, etwa mit URL = http://foobar.com/whatever.xml?ext=.download
Post by Peter Büttner
Post by Stefan Matthias Aust
SWT, das sollte ich vielleicht noch sagen, und habe dadurch den echten
IE eingebettet (Windows only ist für mich okay). Ist das eine URL, die
mich interessiert, cancel ich den LocationEvent und mache, was ich für
richtig halte. Funktioniert. Nachteil ist aber das ich mir dadurch
meine Historie im Browser kaputtmache. Da stehe jetzt immer eine
"navigation canceled" Seite... :( Unschön.
?? macht doch nix, was vom Brauser sieht denn der Benutzer?
Alles :) Na eben das Fenster. Und das hat ein Kontextmenü. Und dort
gibt es eine Option "Zurück". Und ich habe die üblichen Buttons dazu
gebaut und mit dem Browser-Widget verknüpft. Auch darüber hat man
Zugriff auf die Historie. Und ein eventuelles JavaScript-Programm in
der HTML-Seite würde natürlich auch die Historie beeinflussen können.
Ich glaube, ich mache mir das alles viel zu schwer und suche nach der
perfekten Lösung, die es nicht gibt...
Post by Peter Büttner
'Totale' Kontrolle halt, leicht erweiterbar.
JEditorPane + HTMLEditKit und leicht erweiterbar? Du musst ein anderes
Stück Software kennen als ich. Das, was ich kenne ist ganz großer Mist,
kann z.B. Tabellen und Stylesheets nicht richtig darstellen und ist
derart geschrieben, dass man das auch nicht ändern kann, weil
grundsätzlich alle wichtigen Methoden und Klassen private oder nur
package-lokal ist.
Post by Peter Büttner
Kommt aber stark darauf an was dargestellt werden muss.
Das ist nicht meine Baustelle und ich gehe daher davon aus, dass es
alles ist, was sich so ein Webdesigner eben ausdenken wird - hauptsache
viele Tabellen und schickes Layout :)
Post by Peter Büttner
Was musst du denn implementieren? UrlHandler (oder wie sich das nennt).
Soll das ein kompletter Brauser werden oder ein Hilfsmittel für einfach
zu bauendes Gui?
Letzteres.
Post by Peter Büttner
Was brauchst du denn von der Brauserfunktionalität?
Ich möchte keine Webanwendung bauen, sondern einen "Rich Client", muss
aber Webseiten anzeigen können. Ich muss leider so divus und
widersprüchlich bleiben, da ich nicht über das Projekt sprechen werde.
Post by Peter Büttner
Post by Stefan Matthias Aust
Über XML selbst wie HTML rendern hatte ich ganz, ganz kurz nachgedacht,
aber das schaffe ich nicht an nur einem Tag :)
XML + XSLT -> html
Und? Das meine ich doch nicht. XML habe ich gesagt, weil das
wohlgeformt und regelmäßiger und damit einfacher zu verarbeiten ist als
HTML, was von einem IE akzeptiert wird. Die Aufgabe wäre, dann das auf
dem Bildschirm zu rendern. Also aus <h1>Bla</h1> wird dann eben ein
"Bla" in Times New Roman Bold in 24pt auf dem Bildschirm.
Post by Peter Büttner
Mit SWT kann man auch den Mozilla (Mozilla-Control) unter Windows
einbetten (fast sicher) vielleicht gibt es da mehr Möglichkeiten.
Warum Mozilla (das geht wohl tatsächlich), wenn es für den IE schon
fertig ist. Auch wenn ich persönlich nur mit Mozilla browse und den IE
verachte, für die Anwendung ist der IE gut genug.
Post by Peter Büttner
Da die com-api deckungsgleich sein soll (ist der Sinn des ganzen)
braucht man wohl 'nur' in einer swt-dll oder jar einen guid-String
{45218402-123...} ändern.
Es gibt angeblich ein ActiveX-Wrapper für Mozilla, der man irgendwo von
mozdev bekommt. Damit könnte man dann vielleicht sogar das vorhandene
Browser-Widget (Was auf ActiveX basiert) von SWT benutzen. Aber das
würde mir bei meinem Problem kein bisschen helfen.

Ich mache jetzt sowas:

browser.addLocationListener(new LocationAdapter() {
public void changing(LocationEvent event) {
if (event.location.endsWith(".xxx")) {
event.doit = false;
download(event.location);
}
}
});

wobei download einen Thread abspaltet, um das im Hintergrund zu machen.
Wehe, jemand klickt zu schnell 2x auf den Link... irgendwie muss ich das
noch verhindern... Am besten wohl mit einem modalen
"Downloading..."-Dialog.

Muss morgen mal sehen, ob ich da noch einen ProgressBar benutzen kann.
Aus der URLConnection müsste ich ja die Content-Länge wissen und wenn
ich diese Stück für Stück aus dem InputStream lade, könnte ich den
Balken fortschreiten lassen...


bye
--
Stefan Matthias Aust // "Zweifel sind der Ansporn des Denkens..." -U
Peter Büttner
2004-09-10 01:46:18 UTC
Permalink
Post by Stefan Matthias Aust
Post by Peter Büttner
onClick im Link (geht dann auch ohne link ). Nun muss man die url
anfragen, wenn es nicht direkt geht in einem hidden Frame oder
internal-Frame (internal: dann muss man im aussenrumliegenden design
nicht so gucken) der (lokale) Socket liefert dann nix, leere seite,etc.
kriegt die Anforderung aber mit und macht das gewünschte.
Ich verstehe nicht. Willst du mir sagen, mit JavaScript kann ich direkt
eine Datei in ein bestimmtes Verzeichnis ohne Dialog schreiben? Das
kann ich eigentlich nicht glauben, weil das ein Sicherheitsproblem
allererste Güte wäre.
Nee, das geht natürlich nicht.
Dich stört doch der kaputte Eintrag in der History. Wenn du das
Ergebnis in einen Frame schickst (<a ... target="dummy"> würde wohl
auch gehen). Dafür meinte ich das JS.

[...]
Post by Stefan Matthias Aust
Applet ist mir zu aufwendig. Außerdem kann ich dann nicht SWT für's UI
nehmen.
Geht das nicht im IE-Container?
Post by Stefan Matthias Aust
Post by Peter Büttner
Post by Stefan Matthias Aust
Außerdem müsste ich in diesem Programm dann per socket meine Anwendung
kontaktieren. Und ich glaube, XPsp2 nörgelt, wenn eine Java-Anwendung
ein Server-Socket öffnet. Unschön.
Sicher? Na, da werden noch einige andere Apps Probleme haben.
Benutzer-Zielgruppe?
Nein, nicht sicher. Beim ersten Start von Eclipse nach SP2 hat mich XP
gefragt, ob ich javaw weiter blocken möchte. Ich habe Windows virtuell
in den Hintern getreten, gesagt, dass es die Finger von javaw.exe lassen
soll und seit dem ist Ruhe. Aber wie das bei einer jungfräulichen XP
SP2-Installation wäre kann ich nicht sagen.
Sieht schlecht aus. Ist auch 'ne Lücke: erst dem User ein jar
unterschieben, schönes Spiel. Der sagt dann Javaw.exe darf alles.
Danach ein 'GamesOfTrojaRemoteControl' das dann doch mehr macht.

Wie wäre das:
Brauser mit Link erzeugt request auf server. App hat (client)socket
zum Server auf und fragt nach Aufträgen (Poll). App lädt herunter
und bearbeitet.
Post by Stefan Matthias Aust
Post by Peter Büttner
Post by Stefan Matthias Aust
Momentan verfolge ich den Weg, einen Browser in meine Anwendung
einzubetten und dann bei jedem Link erstmal zu schauen, was das ist.
Leider habe ich nicht Zugriff auf den mime type, nur die URL. Ich nutze
Url Reicht doch.
Mir eigentlich nicht. Die Dateiendung wäre .xml. Und es gibt so
verdammt viele XML-basierte Syntaxen... aber das lässt sich in den Griff
bekommen, etwa mit URL = http://foobar.com/whatever.xml?ext=.download
Ebent. Wenn du Einfluss auf die url hast kann man doch alles da rein
kodieren. mimetype: den vom server oder die kaputte IE-interpretation?
Post by Stefan Matthias Aust
Post by Peter Büttner
?? macht doch nix, was vom Brauser sieht denn der Benutzer?
Alles :) Na eben das Fenster. Und das hat ein Kontextmenü. Und dort
gibt es eine Option "Zurück". Und ich habe die üblichen Buttons dazu
gebaut und mit dem Browser-Widget verknüpft. Auch darüber hat man
Zugriff auf die Historie. Und ein eventuelles JavaScript-Programm in
der HTML-Seite würde natürlich auch die Historie beeinflussen können.
Ich glaube, ich mache mir das alles viel zu schwer und suche nach der
perfekten Lösung, die es nicht gibt...
Ah, Kontextmenü. Und nach dem 'Präparierten Link' geht das zurück nicht
mehr?

[JEditorPane + HTMLEditKit]
Post by Stefan Matthias Aust
Post by Peter Büttner
'Totale' Kontrolle halt, leicht erweiterbar.
JEditorPane + HTMLEditKit und leicht erweiterbar? Du musst ein anderes
Ich meinte man kann leicht eigene JComponents ein das html einbetten,
ich hab' da letztens ein JFreeChart eingebaut. An Batik für svg könnte
man auch denken.
Post by Stefan Matthias Aust
Stück Software kennen als ich. Das, was ich kenne ist ganz großer Mist,
kann z.B. Tabellen und Stylesheets nicht richtig darstellen und ist
derart geschrieben, dass man das auch nicht ändern kann, weil
grundsätzlich alle wichtigen Methoden und Klassen private oder nur
package-lokal ist.
Ähh ja. Da geht nix. Ausser komplett kopieren und aufweichen.
Post by Stefan Matthias Aust
Post by Peter Büttner
Kommt aber stark darauf an was dargestellt werden muss.
Das ist nicht meine Baustelle und ich gehe daher davon aus, dass es
alles ist, was sich so ein Webdesigner eben ausdenken wird - hauptsache
viele Tabellen und schickes Layout :)
Na dann ist JEditorPane unbrauchbar, oder der Webdesigner kriegt 'nen
infarkt. Die Eigenheiten dieses Dings kennt ja keiner. Und dhtml/JS/...
geht auch nicht. Dachte eher an mein eher einfaches html.
Post by Stefan Matthias Aust
Post by Peter Büttner
Was musst du denn implementieren? UrlHandler (oder wie sich das nennt).
Soll das ein kompletter Brauser werden oder ein Hilfsmittel für einfach
zu bauendes Gui?
Letzteres.
Hmm, ich hab' sowas mal mit VB+IE gemacht, Vorgangs/Dokumentenverwaltung.
Teile wurden auf dem (Notes)Server in html gerendert. Navigation, Listen
etc. als xml runtergeladen.
Post by Stefan Matthias Aust
Post by Peter Büttner
Was brauchst du denn von der Brauserfunktionalität?
Ich möchte keine Webanwendung bauen, sondern einen "Rich Client", muss
aber Webseiten anzeigen können. Ich muss leider so divus und
widersprüchlich bleiben, da ich nicht über das Projekt sprechen werde.
Die lieben Kunden ...
Post by Stefan Matthias Aust
Post by Peter Büttner
Post by Stefan Matthias Aust
Über XML selbst wie HTML rendern hatte ich ganz, ganz kurz nachgedacht,
aber das schaffe ich nicht an nur einem Tag :)
XML + XSLT -> html
Und? Das meine ich doch nicht. XML habe ich gesagt, weil das
wohlgeformt und regelmäßiger und damit einfacher zu verarbeiten ist als
HTML, was von einem IE akzeptiert wird. Die Aufgabe wäre, dann das auf
dem Bildschirm zu rendern. Also aus <h1>Bla</h1> wird dann eben ein
"Bla" in Times New Roman Bold in 24pt auf dem Bildschirm.
Ach so, du wolltest einen xhtml Viewer selbst bauen:-)
Post by Stefan Matthias Aust
Post by Peter Büttner
Mit SWT kann man auch den Mozilla (Mozilla-Control) unter Windows
einbetten (fast sicher) vielleicht gibt es da mehr Möglichkeiten.
Warum Mozilla (das geht wohl tatsächlich), wenn es für den IE schon
fertig ist. Auch wenn ich persönlich nur mit Mozilla browse und den IE
verachte, für die Anwendung ist der IE gut genug.
Ich hätte gehofft das man das Mozilla Control mehr kontrollieren kann.
Im Notfall selbst compilieren:-)
Post by Stefan Matthias Aust
Post by Peter Büttner
Da die com-api deckungsgleich sein soll (ist der Sinn des ganzen)
braucht man wohl 'nur' in einer swt-dll oder jar einen guid-String
{45218402-123...} ändern.
Es gibt angeblich ein ActiveX-Wrapper für Mozilla, der man irgendwo von
mozdev bekommt. Damit könnte man dann vielleicht sogar das vorhandene
Browser-Widget (Was auf ActiveX basiert) von SWT benutzen. Aber das
würde mir bei meinem Problem kein bisschen helfen.
in meinem C:\Programme\mozilla\ gibt es
mozctl.dll & mozctlx.dll
eins davon ist es.
Dann kann man noch eines herunterladen das kleiner ist, kein
kompletter Mozilla, nur das nötigste, ca 3MB(?). Das es auch tut
und ein eigenes Profil hat das nicth mit dem des 'großen' kollidiert.
Ausserdem hätte man so ein definiertes Ding (z.B. Moz 1.8), mit dem
IE musst du nehmen was Kunde/USer gerade installiert hat.

Oder meinst du das Ding das Mozilla in den IE einbettet?
[...]

In meiner App mit VB hatte man im Ole-eingebetteten IE mehr
kontrolle, konnte die Links intern ändern oder abbrechen ohne das es
irgendwo auffiel.
Vielleicht hat sich wer erbarmt die bisher vernachlässigten
events/methoden des IE im SWT einzubauen. Oder selber machen.
Aber in 1 Tag geht das nur wenn man weis wo und was zu drehen ist.
Post by Stefan Matthias Aust
wobei download einen Thread abspaltet, um das im Hintergrund zu machen.
Wehe, jemand klickt zu schnell 2x auf den Link... irgendwie muss ich das
noch verhindern... Am besten wohl mit einem modalen
"Downloading..."-Dialog.
Den download führt doch der javacode in der App aus?





Grüße
Peter
--
Shell&Jar : Individual icons for jars
jMineSweeper : extended
www.PeterBuettner.de
Joachim Praetorius
2004-09-10 10:28:03 UTC
Permalink
Post by Peter Büttner
Post by Stefan Matthias Aust
HTML, was von einem IE akzeptiert wird. Die Aufgabe wäre, dann das auf
dem Bildschirm zu rendern. Also aus <h1>Bla</h1> wird dann eben ein
"Bla" in Times New Roman Bold in 24pt auf dem Bildschirm.
Ach so, du wolltest einen xhtml Viewer selbst bauen:-)
Nur um das mglw. noch etwas zu erleichtern. Es gab imo für den IE die
Möglichkeit in einer XML Datei ein CSS oder auch ein XSL File zu
verlinken, so daß der Browser das mit runter zieht und dann für einen
die Transformation übernimmt, so daß sich diese Darstellung mit dem IE
tatsächlich erschlagen lassen sollte. Links sind dann natürlich immer
noch nicht leichter abzufangen...

just my 0,02 €

joachim
Stefan Matthias Aust
2004-09-11 11:50:49 UTC
Permalink
Post by Peter Büttner
Nee, das geht natürlich nicht.
Dich stört doch der kaputte Eintrag in der History. Wenn du das
Ergebnis in einen Frame schickst (<a ... target="dummy"> würde wohl
auch gehen). Dafür meinte ich das JS.
Ah, verstehe. Das werde ich mal ausprobieren.
Post by Peter Büttner
Post by Stefan Matthias Aust
Applet ist mir zu aufwendig. Außerdem kann ich dann nicht SWT für's UI
nehmen.
Geht das nicht im IE-Container?
Nein.
Post by Peter Büttner
Brauser mit Link erzeugt request auf server. App hat (client)socket
zum Server auf und fragt nach Aufträgen (Poll). App lädt herunter
und bearbeitet.
Klingt mir zu mühsam und pollen ist doof. Hätte zudem natürlich das
gleiche Firewall-Problem. Würde aber andererseits elegant Browser und
App verbinden. Ich werde es im Hinterkopf behalten.
Post by Peter Büttner
Post by Stefan Matthias Aust
Das ist nicht meine Baustelle und ich gehe daher davon aus, dass es
alles ist, was sich so ein Webdesigner eben ausdenken wird - hauptsache
viele Tabellen und schickes Layout :)
Na dann ist JEditorPane unbrauchbar, oder der Webdesigner kriegt 'nen
infarkt.
:) Momentan ist da glaube ich richtig viel JS für hover-Effekte, Menüs
und all 'son Krams damit die Webanwendung Möchtegern-Rich-Client spielen
kann...
Post by Peter Büttner
Ach so, du wolltest einen xhtml Viewer selbst bauen:-)
Klar. Hätte ich Lust zu. Hatte ich mal angefangen, aber das
regelbasierte CSS wurde schwer.
Post by Peter Büttner
Ich hätte gehofft das man das Mozilla Control mehr kontrollieren kann.
Im Notfall selbst compilieren:-)
Klar, ginge wohl irgendwie. Überschreitet aber, was ich bereit bin zu
ändern. Dann würde ich schon eher mit OleAutomation an den IE gehen -
aber wenn das SWT Browser-Widget reicht, ist mir das um so rechter.
Post by Peter Büttner
in meinem C:\Programme\mozilla\ gibt es
mozctl.dll & mozctlx.dll
eins davon ist es.
Das mit dem X... Es scheint so, dass man

regsvr32 mozctlx.dll

aufrufen muss und dann kann man ein Mozilla als ActiveX-Control unter

clsid:1339B54C-3453-11D2-93B9-000000000000

ansprechen. Dummerweise braucht SWT eine progid. Es benutzt momentan
Shell.Explorer, was auf clsid:8856F961-340A-11D0-A96B-00C04FD705A2 mappt.

Kommando zurück: Nach dem Installieren entsteht in der registry ein
Eintrag Mozilla.Browser, der auf obige clsid zeigt.

Ist der jetzt schnittstellenkompatibel zum IE? Scheint so! Ich habe
gerade in Browser.java von SWT den String auf "Mozilla.Browser" geändert
und es funktionert anscheinend!

Ich habe mir außerdem gerade MOZiE installiert und bin begeistert :)
Post by Peter Büttner
Ausserdem hätte man so ein definiertes Ding (z.B. Moz 1.8), mit dem
IE musst du nehmen was Kunde/USer gerade installiert hat.
Jepp... Zudem wird es kompatibler, denn ich habe sowohl unter Windows
als auch unter Linux die selbe Browser-Engine.
Post by Peter Büttner
Den download führt doch der javacode in der App aus?
Ja. In einem Hintergrundthread. Und ich habe mich jetzt mit einem
modalen Dialog gegen doppeltes paralleles Laden geschützt.

Dabei hätte ich ja gerne diesen schicken Download-Dialog von Firefox :)


bye
--
Stefan Matthias Aust // "Zweifel sind der Ansporn des Denkens..." -U
Peter Büttner
2004-09-14 16:08:55 UTC
Permalink
Moin
[...]
Post by Stefan Matthias Aust
Post by Peter Büttner
Brauser mit Link erzeugt request auf server. App hat (client)socket
zum Server auf und fragt nach Aufträgen (Poll). App lädt herunter
und bearbeitet.
Klingt mir zu mühsam und pollen ist doof. Hätte zudem natürlich das
gleiche Firewall-Problem.
Nicht ganz, oder? Macht eine App einen Serversocket auf einem Client
auf ist das eher böse als wenn sie 'nur' was von aussen abholen will.
Scheint mir zumindest, ist aber bischen nach Art der Milchmädchen.

Pollen ist doof: kannst ja einen Socket immer offenlassen auf dem
der Server dann halt meldet wenn was neues da ist.

[...]
Post by Stefan Matthias Aust
Das mit dem X... Es scheint so, dass man
regsvr32 mozctlx.dll
aufrufen muss und dann kann man ein Mozilla als ActiveX-Control unter
clsid:1339B54C-3453-11D2-93B9-000000000000
ansprechen. Dummerweise braucht SWT eine progid. Es benutzt momentan
Shell.Explorer, was auf clsid:8856F961-340A-11D0-A96B-00C04FD705A2 mappt.
Kommando zurück: Nach dem Installieren entsteht in der registry ein
Eintrag Mozilla.Browser, der auf obige clsid zeigt.
Danke, das progid ersetzen wollte ich auch schon mal ausprobieren:-)

Ähh, kann man swt eigentlich auch beibringen ole-controls zu verwenden
ohne registrierung, also nur dll beilegen und los? Das wäre sehr schick.
Das wollte ich auch schon immer mal wissen. Weis nicht ob das mit der
WinAPI überhaupt einfach geht. Wäre gut um als nichtadmin solche
Programme verwenden zu können.
Post by Stefan Matthias Aust
Ist der jetzt schnittstellenkompatibel zum IE? Scheint so! Ich habe
gerade in Browser.java von SWT den String auf "Mozilla.Browser" geändert
und es funktionert anscheinend!
Ich habe mir außerdem gerade MOZiE installiert und bin begeistert :)
Das hatt' ich mir glaube ich mal kurz angesehen. Gecko läuft im IE als
ActiveX Control.
Post by Stefan Matthias Aust
Post by Peter Büttner
Ausserdem hätte man so ein definiertes Ding (z.B. Moz 1.8), mit dem
IE musst du nehmen was Kunde/USer gerade installiert hat.
Jepp... Zudem wird es kompatibler, denn ich habe sowohl unter Windows
als auch unter Linux die selbe Browser-Engine.
Stimmt, gar nicht dran gedacht. Gerade bei so einem Mischclient mit
fullblown html/dhtml/js/... vereinfacht das einiges für den der den
Content generiert.

Kann man denn unter Linux ein (eigenes) Moz-Control unabhängig von
dem was auf dem übrigen System installiert ist einbinden?


[...]


Grüße
Peter
--
Shell&Jar : Individual icons for jars
jMineSweeper : extended
www.PeterBuettner.de
Stefan Matthias Aust
2004-09-19 09:47:04 UTC
Permalink
Post by Peter Büttner
Ähh, kann man swt eigentlich auch beibringen ole-controls zu verwenden
ohne registrierung, also nur dll beilegen und los? Das wäre sehr schick.
Ich glaube, Windows kann das schon nicht. Hat nichts mit SWT zu tun.
Post by Peter Büttner
Post by Stefan Matthias Aust
Ich habe mir außerdem gerade MOZiE installiert und bin begeistert :)
Das hatt' ich mir glaube ich mal kurz angesehen. Gecko läuft im IE als
ActiveX Control.
Korrekt.
Post by Peter Büttner
Kann man denn unter Linux ein (eigenes) Moz-Control unabhängig von
dem was auf dem übrigen System installiert ist einbinden?
Ich glaube, das geht wenn man die Umgebungsvariable "MOZILLA_FIVE_HOME"
korrekt setzt. Das meine ich aus den Sourcen durch überfliegen gelesen
zu haben.


bye
--
Stefan Matthias Aust // "Zweifel sind der Ansporn des Denkens..." -U
Peter Büttner
2004-09-20 15:46:53 UTC
Permalink
Post by Stefan Matthias Aust
Post by Peter Büttner
Ähh, kann man swt eigentlich auch beibringen ole-controls zu verwenden
ohne registrierung, also nur dll beilegen und los? Das wäre sehr schick.
Ich glaube, Windows kann das schon nicht. Hat nichts mit SWT zu tun.
Hmm, im Moment brauche ich das erst mal nicht.
Wenn es auftaucht werde ich danach forschen.

[...]
Post by Stefan Matthias Aust
Post by Peter Büttner
Kann man denn unter Linux ein (eigenes) Moz-Control unabhängig von
dem was auf dem übrigen System installiert ist einbinden?
Ich glaube, das geht wenn man die Umgebungsvariable "MOZILLA_FIVE_HOME"
korrekt setzt. Das meine ich aus den Sourcen durch überfliegen gelesen
zu haben.
Klingt schick, das kann man dann lokal in seiner Anwendung auf seinen
gewünschten Pfad setzen der das Control in der speziell geforderten
Version hat.



Grüße
Peter
--
Shell&Jar : Individual icons for jars
jMineSweeper : extended
www.PeterBuettner.de
Lesen Sie weiter auf narkive:
Suchergebnisse für 'Auf Klick im Browser in Java-Anwendung reagieren?' (Newsgroups und Mailinglisten)
50
Antworten
Java-VM-Update --> Virus gefunden
gestartet 2007-04-30 10:17:56 UTC
de.comp.security.virus
49
Antworten
Java Tuning - Aber wie?
gestartet 2004-08-30 08:40:25 UTC
de.comp.lang.java
11
Antworten
[OT] Ein Java Fenster unter Windows "erkennen" und reagieren
gestartet 2003-12-09 18:37:15 UTC
de.comp.lang.java
28
Antworten
Java und der Desktop - Wieso macht IBM sein Java nicht Open Source?
gestartet 2004-05-09 03:16:17 UTC
de.comp.lang.java
Suchergebnisse für 'Auf Klick im Browser in Java-Anwendung reagieren?' (Fragen und Antworten)
14
Antworten
Ist es akzeptabel, aufgrund meiner Behinderung in der Öffentlichkeit gegen Tischmanieren zu verstoßen?
gestartet 2018-08-03 01:19:21 UTC
zwischenmenschlich
8
Antworten
Soll ich ein Antivirenprogramm für meinen Mac bekommen?
gestartet 2014-07-10 11:30:53 UTC
sicherheit
5
Antworten
Kalenderanwendung für Linux, die gut mit Outlook und Exchange funktioniert und offline funktioniert
gestartet 2014-02-05 04:53:25 UTC
softwareempfehlungen
7
Antworten
Berechnung der Nukleotidfrequenz pro Spalte
gestartet 2017-12-14 22:40:01 UTC
bioinformatik
12
Antworten
FTP-Datei-Editor und Uploader, der auch ein Code-Editor ist?
gestartet 2014-02-05 06:08:40 UTC
softwareempfehlungen
Nicht verwandte, aber interessante Themen
6
Antworten
Ich mag meine "Kopfstimme" nicht. Kann ich irgendetwas tun?
gestartet 2015-01-26 15:11:58 UTC
6
Antworten
Warum ist eine Gitarre beim Stimmen nur für einen Moment gestimmt?
gestartet 2014-09-04 03:14:51 UTC
5
Antworten
Wo kann man bei Instrumenten mit Bünden am besten auf eine Saite drücken, um Ermüdung der Hände und Verletzungsgefahr zu minimieren?
gestartet 2020-02-26 10:37:27 UTC
14
Antworten
Kann jemand lernen, höher zu singen?
gestartet 2012-04-24 04:10:31 UTC
8
Antworten
Musiktheorie hinter einem Akkord in der Tonart G.
gestartet 2019-06-18 01:45:25 UTC
Loading...