Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.java.gui > #4440

Re: Swing component to di

From "John B. Matthews" <john.b..matthews@THRWHITE.remove-dii-this>
Subject Re: Swing component to di
Message-ID <nospam-B9F365.11491708112008@feeder.motzarella.org> (permalink)
Newsgroups comp.lang.java.gui
References <4915ae3d$0$6077$7836cce5@newsrazor.net>
Date 2011-04-27 15:50 +0000
Organization TDS.net

Show all headers | View raw


  To: comp.lang.java.gui
In article <4915ae3d$0$6077$7836cce5@newsrazor.net>,
 Daniel Pitts <newsgroup.spamfilter@virtualinfinity.net> wrote:

> lbrtchx@gmail.com wrote:
> > ~
> > I need to display a combination of text, diagrams and MathML based 
> > formulas on a swing component in a way that, say, when you hover 
> > the mouse or click on parts of the text, the corresponding parts in 
> > the diagrams and/or formulas get highlighted or some action happens 
> > on them
> > ~
> > I did a search on:
> > ~
> > MathML formula swing class "import java "
> > ~
> > which gave me nothing useful
> > ~
> > What would be the right swing text container/components to use? Do
> > you know of any example of such a thing out there?
>
> googling for just mathml java turned up
> <http://www.w3.org/Math/Software/mathml_software_cat_editors.html>
> 
> Might be a good place to start.
> 
> You might have to actually write some code if nothing fits out-of-the-box.

For text and diagrams, an HTMLDocument, which implements the Document 
interface, might suffice:

<http://java.sun.com/javase/6/docs/api/javax/swing/text/Document.html>

<code>
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.GridLayout;
import java.io.IOException;
import java.net.URL;
import javax.swing.JEditorPane;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;
import javax.swing.event.HyperlinkEvent;
import javax.swing.event.HyperlinkListener;
import javax.swing.text.BadLocationException;
import javax.swing.text.Document;

/** @author John B. Matthews */
public class HtmlView extends JPanel
    implements DocumentListener, HyperlinkListener {

    private static final String name = "http://www.example.com";
    JEditorPane jep;
    Document doc;

    public HtmlView() {
        this.setLayout(new GridLayout(1, 1));
        jep = new JEditorPane();
        jep.setEditable(false);
        jep.addHyperlinkListener(this);
        loadPage(jep, name);
        doc = jep.getDocument();
        doc.addDocumentListener(this);
        JScrollPane sp = new JScrollPane(jep);
        this.setPreferredSize(new Dimension(640, 480));
        this.add(sp);
    }

    private void loadPage(JEditorPane jep, String name) {
        try {
            jep.setPage(name);
        } catch (IOException ioe) {
            ioe.printStackTrace();
        }
    }

    public void insertUpdate(DocumentEvent e) {}
    public void removeUpdate(DocumentEvent e) {}
    public void changedUpdate(DocumentEvent e) {
        try {
            System.out.println(doc.getText(0, doc.getLength()));
        } catch (BadLocationException ble) {
            ble.printStackTrace();
        }
    }

    public void hyperlinkUpdate(HyperlinkEvent e) {
        HyperlinkEvent.EventType type = e.getEventType();
        final URL url = e.getURL();
        if (type == HyperlinkEvent.EventType.ENTERED) {
            System.out.println("URL: " + url);
        } else if (type == HyperlinkEvent.EventType.ACTIVATED) {
            System.out.println("Following link...");
            try {
                jep.setPage(url);
            } catch (IOException ioException) {
                System.out.println("Invalid link");
                jep.setDocument(doc);
            }
        }
    }

    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                JFrame f = new JFrame();
                f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                f.add(new HtmlView(), BorderLayout.CENTER);
                f.pack();
                f.setVisible(true);
            }
        });
    }
}
</code>

I don't know about MathML, but you might look for a corresponding 
implementation of the Document interface.

-- 
John B. Matthews
trashgod at gmail dot com
http://home.roadrunner.com/~jbmatthews/

---
 * Synchronet * The Whitehouse BBS --- whitehouse.hulds.com --- check it out free usenet!
--- Synchronet 3.15a-Win32 NewsLink 1.92
Time Warp of the Future BBS - telnet://time.synchro.net:24

Back to comp.lang.java.gui | Previous | NextPrevious in thread | Find similar


Thread

Swing component to displa "lbrtchx" <lbrtchx@THRWHITE.remove-dii-this> - 2011-04-27 15:50 +0000
  Re: Swing component to di "Daniel Pitts" <daniel.pitts@THRWHITE.remove-dii-this> - 2011-04-27 15:50 +0000
    Re: Swing component to di "John B. Matthews" <john.b..matthews@THRWHITE.remove-dii-this> - 2011-04-27 15:50 +0000

csiph-web