RCP(SWT) Browser-Widget zeigt keine locale HTML-Dateien an

hirsra

Aktives Mitglied
Hallo.

Ich schreibe eine RCP-Applikation welche HTML-Seiten anzeigen soll. Prinzipiell funktioniert das ganze ja auch schon. D.h. wenn ich eine Adresse im Web angebe wird die auch angezeigt.

Da die Zielplatform keinen Internetzugang hat habe ich die Internetseiten mittels Firefox - Datei speichern(komplette Seite) lokal gespeichert(auf Linux). Wenn ich nun als Adresse für den SWT-Browser diese Datei(absoluter kompletten Pfad) angebe wird nichts angezeigt.

Folgende Adressen habe ich probiert:
/home/user/test.html
file:///home/user/test.html

Die zweite Adresse wird mir in der Adresszeile von Firefox angezeigt wenn ich die Datei über das Firefox-Menü öffne. In diesem Fall wird der Dateiinhalt auch angezeigt!

Habe ich da ein Problem mit RCP?

Ich versuche heute abend mal eine normale SWP-Miniapplikation zur erstellen. Bin gespannt ob ich da das Problem auch habe.
 
In der Tat ein RCP-Problem. Da müßte man wohl einen Server aufbauen der die HTML-Datei zur Verfügung stellt.

Als einfache Abhilfe lese ich die HTML-Datei nun als Stringstream ein und baue aus dem Inhalt einen String auf; inkl. Newlines zwischen den Zeilen. Diesen String kann ich anschließend mit browser.setText(htmlString) anzeigen.

Java:
final Bundle bundle = Activator.getDefault().getBundle();
final Path path = new Path("properties/info.html");
URL url = FileLocator.find(bundle, path, Collections.EMPTY_MAP);
final boolean result = LicencesView.browser.setUrl(FileLocator.toFileURL(url).toString());
//final boolean result = LicencesView.browser.setUrl("http://www.spiegel.de");

// Lesen der HTML-Datei als Stringstream und Aufbau des HTML-Strings.
// (inklusive Anzeige)
String line;
String komplett = "";
try {
    //get stream using the FileLocator
    InputStream stream = FileLocator.openStream(bundle, path, false);
    // create a buffered reader
    BufferedReader reader = new BufferedReader(new InputStreamReader(stream));
    //read the file
    while((line = reader.readLine()) != null){
        komplett += line + System.getProperty("line.separator");
    }
    
    // Anzeige des HTML-Strings!!!
    final boolean r = LicencesView.browser.setText(komplett);
}
catch (IOException ioe) {
    System.err.print(ioe.getMessage());
    ioe.printStackTrace(System.err);
}

Hoffe das hilft dem einen oder anderen auch weiter.
 

Zurück
Oben