| /* | |
| * | |
| * Copyright (c) 2007, 2021, Oracle and/or its affiliates. All rights reserved. | |
| * | |
| * Redistribution and use in source and binary forms, with or without | |
| * modification, are permitted provided that the following conditions | |
| * are met: | |
| * | |
| * - Redistributions of source code must retain the above copyright | |
| * notice, this list of conditions and the following disclaimer. | |
| * | |
| * - Redistributions in binary form must reproduce the above copyright | |
| * notice, this list of conditions and the following disclaimer in the | |
| * documentation and/or other materials provided with the distribution. | |
| * | |
| * - Neither the name of Oracle nor the names of its | |
| * contributors may be used to endorse or promote products derived | |
| * from this software without specific prior written permission. | |
| * | |
| * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS | |
| * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, | |
| * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR | |
| * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR | |
| * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, | |
| * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, | |
| * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR | |
| * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF | |
| * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING | |
| * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | |
| * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |
| */ | |
| import javax.swing.JEditorPane; | |
| import javax.swing.JScrollPane; | |
| import javax.swing.JViewport; | |
| import javax.swing.event.HyperlinkEvent.EventType; | |
| import javax.swing.event.HyperlinkEvent; | |
| import javax.swing.event.HyperlinkListener; | |
| import javax.swing.text.html.HTMLDocument; | |
| import javax.swing.text.html.HTMLFrameHyperlinkEvent; | |
| import java.awt.BorderLayout; | |
| import java.io.IOException; | |
| import java.net.MalformedURLException; | |
| import java.net.URL; | |
| /** | |
| * Html Demo | |
| * | |
| * @author Jeff Dinkins | |
| */ | |
| public class HtmlDemo extends DemoModule { | |
| JEditorPane html; | |
| /** | |
| * main method allows us to run as a standalone demo. | |
| */ | |
| public static void main(String[] args) { | |
| HtmlDemo demo = new HtmlDemo(null); | |
| demo.mainImpl(); | |
| } | |
| /** | |
| * HtmlDemo Constructor | |
| */ | |
| public HtmlDemo(SwingSet2 swingset) { | |
| // Set the title for this demo, and an icon used to represent this | |
| // demo inside the SwingSet2 app. | |
| super(swingset, "HtmlDemo", "toolbar/JEditorPane.gif"); | |
| try { | |
| URL url = null; | |
| // System.getProperty("user.dir") + | |
| // System.getProperty("file.separator"); | |
| String path = null; | |
| try { | |
| path = "/resources/index.html"; | |
| url = getClass().getResource(path); | |
| } catch (Exception e) { | |
| System.err.println("Failed to open " + path); | |
| url = null; | |
| } | |
| if(url != null) { | |
| html = new JEditorPane(url); | |
| html.setEditable(false); | |
| html.addHyperlinkListener(createHyperLinkListener()); | |
| JScrollPane scroller = new JScrollPane(); | |
| JViewport vp = scroller.getViewport(); | |
| vp.add(html); | |
| getDemoPanel().add(scroller, BorderLayout.CENTER); | |
| } | |
| } catch (MalformedURLException e) { | |
| System.out.println("Malformed URL: " + e); | |
| } catch (IOException e) { | |
| System.out.println("IOException: " + e); | |
| } | |
| } | |
| public HyperlinkListener createHyperLinkListener() { | |
| return new HyperlinkListener() { | |
| public void hyperlinkUpdate(HyperlinkEvent e) { | |
| if (e.getEventType() == HyperlinkEvent.EventType.ACTIVATED) { | |
| if (e instanceof HTMLFrameHyperlinkEvent) { | |
| ((HTMLDocument)html.getDocument()).processHTMLFrameHyperlinkEvent( | |
| (HTMLFrameHyperlinkEvent)e); | |
| } else { | |
| try { | |
| html.setPage(e.getURL()); | |
| } catch (IOException ioe) { | |
| System.out.println("IOE: " + ioe); | |
| } | |
| } | |
| } | |
| } | |
| }; | |
| } | |
| void updateDragEnabled(boolean dragEnabled) { | |
| html.setDragEnabled(dragEnabled); | |
| } | |
| } |