001         package com.croftsoft.core.gui;
002    
003         import java.awt.*;
004         import java.awt.event.*;
005         import java.io.*;
006         import java.net.*;
007         import javax.swing.*;
008         import javax.swing.event.*;
009         import javax.swing.border.*;
010    
011         import com.croftsoft.core.lang.NullArgumentException;
012    
013         /*********************************************************************
014         * Creates pre-configured GUI widgets.
015         *
016         * <p>
017         * Useful for instantiating GUI widgets without creating a subclass.
018         * </p>
019         *
020         * @version
021         *   2001-09-21
022         * @since
023         *   2001-07-29
024         * @author
025         *   <a href="https://www.croftsoft.com/">David Wallace Croft</a>
026         *********************************************************************/
027    
028         public final class  GuiCreator
029         //////////////////////////////////////////////////////////////////////
030         //////////////////////////////////////////////////////////////////////
031         {
032    
033         /*********************************************************************
034         * Creates a JEditorPane for displaying HTML text.
035         *
036         * <p>
037         * The pane in non-editable and the caret position is set to zero.
038         * </p>
039         *
040         * <p>
041         * <b>Reference:</b><br />
042         * Kim Topley,
043         * <a target="_blank" href=
044         * "http://www.amazon.com/exec/obidos/ASIN/0130832928/croftsoft-20">
045         * Core Swing:  Advanced Programming</a>,
046         * 2000,
047         * Chapter 4 "JEditorPane and the Swing HTML Package",
048         * Section "Hypertext Links",
049         * p476.
050         * </p>
051         *
052         * @param  hyperlinkListener
053         *
054         *   May be null.
055         *   
056         *********************************************************************/
057         public static JEditorPane  createHtmlPane (
058           String             html,
059           HyperlinkListener  hyperlinkListener )
060         //////////////////////////////////////////////////////////////////////
061         {
062           JEditorPane  jEditorPane = new JEditorPane ( "text/html", html );
063    
064           jEditorPane.setEditable ( false );
065    
066           jEditorPane.setCaretPosition ( 0 );
067    
068           if ( hyperlinkListener != null )
069           {
070             jEditorPane.addHyperlinkListener ( hyperlinkListener );
071           }
072    
073           return jEditorPane;
074         }
075    
076         /*********************************************************************
077         * Creates a JEditorPane for displaying HTML text.
078         *
079         * <p>
080         * The pane in non-editable and the caret position is set to zero.
081         * </p>
082         *
083         * <p>
084         * <b>Reference:</b><br />
085         * Kim Topley,
086         * <a target="_blank" href=
087         * "http://www.amazon.com/exec/obidos/ASIN/0130832928/croftsoft-20">
088         * Core Swing:  Advanced Programming</a>,
089         * 2000,
090         * Chapter 4 "JEditorPane and the Swing HTML Package",
091         * Section "Hypertext Links",
092         * p476.
093         * </p>
094         *
095         * @param  hyperlinkListener
096         *
097         *   May be null.
098         *
099         * @throws IOException
100         *
101         *   If URL is null or cannot be accessed.
102         *********************************************************************/
103         public static JEditorPane  createHtmlPane (
104           URL                initialPage,
105           HyperlinkListener  hyperlinkListener )
106           throws IOException
107         //////////////////////////////////////////////////////////////////////
108         {
109           JEditorPane  jEditorPane = new JEditorPane ( initialPage );
110    
111           jEditorPane.setEditable ( false );
112    
113           jEditorPane.setCaretPosition ( 0 );
114    
115           if ( hyperlinkListener != null )
116           {
117             jEditorPane.addHyperlinkListener ( hyperlinkListener );
118           }
119    
120           return jEditorPane;
121         }
122    
123         //////////////////////////////////////////////////////////////////////
124         //////////////////////////////////////////////////////////////////////
125    
126         private  GuiCreator ( ) { }
127    
128         //////////////////////////////////////////////////////////////////////
129         //////////////////////////////////////////////////////////////////////
130         }