01: /*=============================================================================
02: * Copyright Texas Instruments 2001. All Rights Reserved.
03: *
04: * This program is free software; you can redistribute it and/or modify
05: * it under the terms of the GNU General Public License as published by
06: * the Free Software Foundation; either version 2 of the License, or
07: * (at your option) any later version.
08: *
09: * This program is distributed in the hope that it will be useful,
10: * but WITHOUT ANY WARRANTY; without even the implied warranty of
11: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12: * GNU General Public License for more details.
13: *
14: * You should have received a copy of the GNU General Public License
15: * along with this program; if not, write to the Free Software
16: * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17: */
18:
19: package ti.protocols.oscript;
20:
21: /**
22: * This is sorta a kludge! Because the swing text component when rendering
23: * HTML wants to construct a URL instance to pass in an event to whoever is
24: * listening for a link, in order to support links that are script actions
25: * (ie. href="oscript:writeln(21);") we need to provide a <code>URLStreamHandler</code>,
26: * despite the fact that you can't actually open this sort of URL as a stream.
27: *
28: * @author Rob Clark
29: * @version 0.1
30: */
31: public class Handler extends java.net.URLStreamHandler {
32: /**
33: * Opens a connection to the object referenced by the
34: * <code>URL</code> argument.
35: * This method should be overridden by a subclass.
36: *
37: * <p>If for the handler's protocol (such as HTTP or JAR), there
38: * exists a public, specialized URLConnection subclass belonging
39: * to one of the following packages or one of their subpackages:
40: * java.lang, java.io, java.util, java.net, the connection
41: * returned will be of that subclass. For example, for HTTP an
42: * HttpURLConnection will be returned, and for JAR a
43: * JarURLConnection will be returned.
44: *
45: * @param u the URL that this connects to.
46: * @return a <code>URLConnection</code> object for the <code>URL</code>.
47: * @exception IOException if an I/O error occurs while opening the
48: * connection.
49: */
50: protected java.net.URLConnection openConnection(java.net.URL url)
51: throws java.io.IOException {
52: throw new java.io.IOException("can't connect to url: " + url);
53: }
54:
55: /**
56: * Parses the string representation of a <code>URL</code> into a
57: * <code>URL</code> object.
58: * <p>
59: * If there is any inherited context, then it has already been
60: * copied into the <code>URL</code> argument.
61: * <p>
62: * The <code>parseURL</code> method of <code>URLStreamHandler</code>
63: * parses the string representation as if it were an
64: * <code>http</code> specification. Most URL protocol families have a
65: * similar parsing. A stream protocol handler for a protocol that has
66: * a different syntax must override this routine.
67: *
68: * @param u the <code>URL</code> to receive the result of parsing
69: * the spec.
70: * @param spec the <code>String</code> representing the URL that
71: * must be parsed.
72: * @param start the character index at which to begin parsing. This is
73: * just past the '<code>:</code>' (if there is one) that
74: * specifies the determination of the protocol name.
75: * @param limit the character position to stop parsing at. This is the
76: * end of the string or the position of the
77: * "<code>#</code>" character, if present. All information
78: * after the sharp sign indicates an anchor.
79: */
80: protected void parseURL(java.net.URL u, String spec, int start,
81: int limit) {
82: setURL(u, "oscript", null, -1, null, null, spec.substring(
83: start, limit).replace('\'', '\"'), null, null);
84: }
85: }
86:
87: /*
88: * Local Variables:
89: * tab-width: 2
90: * indent-tabs-mode: nil
91: * mode: java
92: * c-indentation-style: java
93: * eval: (c-set-offset 'substatement-open '0)
94: * c-basic-offset: 2
95: * End:
96: */
|