Komplexe HTML-Seiten mit Swing Browsen

  • Themenstarter Themenstarter Guest
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Hallo erstmal,
Dank google bin ich auf eure Seite gestoßen, denn ich habe ein ganz böses Problem.

Ich Arbeite in der Uni an einem sehr umfangreichen Softwareprojekt. Nun ist es meine Aufgabe das Hilfesystem des Programms auf den neuesten Stand zu bringen. Das Programm ist ähnlich wie Eclipse aufgebaut und kann mit verschiedenen Plugins erweitert werden. Jedes Plugin enthält einen Ordner mit Html-Hilfedateien, welche bei Programm start von Lucene indexiert werden. Hat der Nutzer eine Frage, gibt er im entsprechenden Fenster ein Schlüsselwort ein, klickt er auf die Treffer wird die entsprechende Seite in ein JEditorPane geladen.

Lange Rede, kurzer Sinn: Ich will html-Seiten anzeigen die über den üblichen Krimskrams hinaus gehen. Der Grund ist einfach, dass die HTML-Seiten meist Links zu weiterführenden Infos enthalten und spätestens dann nicht mehr angezeigt werden können bzw. nur schlecht.

So ist bei der JEditorPane meist die Schrift winzig klein und Bilder werden nur in Ausnahmefällen geladen.



Was kann ich also machen? Soll ich alle Links in den Hilfedateien entfernen? Das wäre schlecht, da es sich oft um sehr komplexe Betrachtungen handelt (Fuzzy Logik). Kann man der EditorPane evtl. besseres HTML beibringen und das auch noch mit einem erträglichen Maß an Arbeitszeit? Gibt es irgend welche Erweiterungen?

Ich habe bereits von JDIC gehört. Leider ist das nichts für mich, da es mir AWT Komponenten liefert (oder habe ich da was falsch vestanden?) und AWT sich mit Swing ja ein wenig "beißt".

Vielleicht hilft auch ein Blick auf unsere - lange nicht mehr überarbeitete - Webseite.

fuzzyide.htw-dresden.de

Über das Englisch darf gern gelacht werden 😉
 
Naja mit etwas "Tricksen" solltest du auch eine AWT/Swing-Vermischung hinbekommen. Aber was für "Krimskrams" willst du denn in den HTML-Seiten darstellen? Um Hyperlinks zu realisieren musst du nur selber einen HyperlinkListener implementieren.
Vielleicht hilft dir auch diese kleine Komponente von mir weiter, so zeige ich meine Hilfedateien normalerweise an:
Code:
package de.illu.swing;

import java.awt.*;
import java.io.InputStream;
import java.util.Stack;

import javax.swing.JComponent;
import javax.swing.JScrollPane;
import javax.swing.JTextPane;
import javax.swing.event.HyperlinkEvent;
import javax.swing.event.HyperlinkListener;

import de.illu.util.Util;

/**
 * Komponente zeigt eine (als Resource eingebettete) HTML-Datei an. Über Links
 * können andere Dateien geladen werden. ("javascript:history.back();") wird
 * erkannt.
 */
public class HelpViewer extends JComponent
{
    private static final long serialVersionUID = 1128903065873289294L;
    private Stack<String> pages = new Stack<String>();
    private JTextPane mainPane;
    private JScrollPane scrollPane;
    private String actContent;

    public HelpViewer(String mainPage)
    {
        setLayout(new GridLayout(1, 1));

        mainPane = new JTextPane();
        mainPane.setContentType("text/html");
        mainPane.setEditable(false);
        scrollPane = new JScrollPane(mainPane);
        add(scrollPane);

        loadContent(mainPage);
        actContent = mainPage;

        mainPane.addHyperlinkListener(new HyperlinkListener() {

            public void hyperlinkUpdate(HyperlinkEvent e)
            {
                if (e.getEventType() != HyperlinkEvent.EventType.ACTIVATED) {
                    return;
                }
                if (e.getDescription().equals("javascript:history.back();")) {
                    
                    if (!pages.empty()){
                        String load = pages.pop();
                        loadContent(load);
                        actContent = load;
                    }
                } else if (e.getDescription().startsWith("http://www")) {
                    try {
                        Desktop.getDesktop().browse(e.getURL().toURI());
                    } catch (Exception e1) {
                        e1.printStackTrace();
                    }
                } else if (e.getDescription().startsWith("mailto:")) {
                    try {
                        Desktop.getDesktop().mail(e.getURL().toURI());
                    } catch (Exception e1) {
                        e1.printStackTrace();
                    }
                } else {
                    loadContent(e.getDescription());
                    pages.push(actContent);
                    actContent = e.getDescription();
                }
            }

        });

        setPreferredSize(new Dimension(250, 1000));
    }

    private void loadContent(String resource)
    {
        if (resource == null)
            return;
        InputStream stream = ClassLoader.getSystemResourceAsStream(resource);
        mainPane.setText(Util.readStream(stream));
        mainPane.setCaretPosition(0);
    }
}
 
Vielen Dank für die verschiedenen Antworten. Ich werde das morgen in der Uni mal durch gehen.

Mit Krimskrams meinte ich zum Beispiel rein Tabellen gestützte Layouts, wie sie beispielsweise vom CMS Soap generiert werden. Eben jenes wird bei unserer Seite eigesetz und eben jene Seite gilt für mich als Referenzseite. Weiterhin sollten CSS funktionieren. Java Scripte und somit Ajax ist nicht unbedingt nötig.
 
Ich habe mich jetzt mal angemeldet um die Zuordnung zu erleichtern.

@Illuvatar: Ich hätte dein Quelltext gern aus probiert. Aber woher bekomme ich die de.illu.swing und de.illu.util.Util ?

@zilti: Weißt du unter welcher Lizenz der Lobobrowser steht? Ich kann auf der Webseite dazu nichts finden.

Der Lobobrowser scheint wirklich das richtige zu sein. Ich werde ihn mal testen. Vielen Dank für die Hilfe.
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben