001: /*
002: *
003: *
004: * Copyright 1990-2007 Sun Microsystems, Inc. All Rights Reserved.
005: * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER
006: *
007: * This program is free software; you can redistribute it and/or
008: * modify it under the terms of the GNU General Public License version
009: * 2 only, as published by the Free Software Foundation.
010: *
011: * This program is distributed in the hope that it will be useful, but
012: * WITHOUT ANY WARRANTY; without even the implied warranty of
013: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
014: * General Public License version 2 for more details (a copy is
015: * included at /legal/license.txt).
016: *
017: * You should have received a copy of the GNU General Public License
018: * version 2 along with this work; if not, write to the Free Software
019: * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
020: * 02110-1301 USA
021: *
022: * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa
023: * Clara, CA 95054 or visit www.sun.com if you need additional
024: * information or have any questions.
025: */
026:
027: package com.sun.perseus.model;
028:
029: import java.io.InputStream;
030:
031: /**
032: * A simple <code>UpdateListener</code> implementation which can
033: * check whether or not the document loading succeeded.
034: *
035: * @version $Id: UpdateAdapter.java,v 1.5 2006/04/21 06:39:49 st125089 Exp $
036: */
037: public class UpdateAdapter implements UpdateListener {
038: /**
039: * Set to true if the load complete method is called
040: * Set to false when loadStarting is called.
041: */
042: protected boolean loadComplete = false;
043:
044: /**
045: * Set to true if the loadingFailed method is called.
046: * Set to false when loadStarting is called
047: */
048: protected boolean loadingFailed = false;
049:
050: /**
051: * Set to true if the loadStarting method is called
052: */
053: protected boolean loadStarting = false;
054:
055: /**
056: * The last recorded loadingFailed exception
057: */
058: protected Exception loadingFailedException = null;
059:
060: /**
061: * Invoked when a node's rendering is about to be modified
062: *
063: * @param node the node which is about to be modified
064: */
065: public void modifyingNodeRendering(ModelNode node) {
066: }
067:
068: /**
069: * @return true if the loading has failed.
070: */
071: public boolean hasLoadingFailed() {
072: return loadingFailed;
073: }
074:
075: /**
076: * Invoked when a node has been inserted into the tree
077: *
078: * @param node the newly inserted node
079: */
080: public void nodeInserted(final ModelNode node) {
081: }
082:
083: /**
084: * Invoked when a node is about to be modified
085: *
086: * @param node the node which is about to be modified
087: */
088: public void modifyingNode(final ModelNode node) {
089: }
090:
091: /**
092: * Invoked when a node was just modified
093: *
094: * @param node the node which was modified
095: */
096: public void modifiedNode(final ModelNode node) {
097: }
098:
099: /**
100: * Invoked when the node has finished loading.
101: *
102: * @param node the <code>node</code> for which loading
103: * is complete.
104: */
105: public void loadComplete(final ModelNode node) {
106: if (node instanceof DocumentNode) {
107: loadComplete = true;
108: }
109: }
110:
111: /**
112: * Invoked when a document error happened before finishing loading.
113: *
114: * @param documentNode the <code>DocumentNode</code> for which loading
115: * has failed.
116: * @param error the exception which describes the reason why loading
117: * failed.
118: */
119: public void loadingFailed(final DocumentNode documentNode,
120: final Exception error) {
121: loadingFailed = true;
122: loadingFailedException = error;
123: }
124:
125: /**
126: * Invoked when the document starts loading
127: *
128: * @param documentNode the <code>DocumentNode</code> for which loading
129: * is starting
130: * @param is the <code>InputStream</code> from which SVG content
131: * is loaded.
132: */
133: public void loadStarting(final DocumentNode documentNode,
134: final InputStream is) {
135: loadStarting = true;
136: loadingFailed = false;
137: loadComplete = false;
138: }
139:
140: /**
141: * Invoked when the input node has started loading
142: *
143: * @param node the <code>ModelNode</code> for which loading
144: * has started.
145: */
146: public void loadBegun(final ModelNode node) {
147: }
148:
149: /**
150: * Invoked when a string has been appended, during a load
151: * phase. This is only used when parsing a document and is
152: * used in support of progressive download, like the other
153: * loadXXX methods.
154: *
155: * @param node the <code>ModelNode</code> on which text has been
156: * inserted.
157: */
158: public void textInserted(final ModelNode node) {
159: }
160:
161: /**
162: * @return true if a document loading started and then failed
163: */
164: public boolean loadSuccess() {
165: System.err.println(">>>>>>>>>>>> loadStarting : "
166: + loadStarting);
167: System.err.println(">>>>>>>>>>>> loadComplete : "
168: + loadComplete);
169: System.err.println(">>>>>>>>>>>> loadingFailed: "
170: + loadingFailed);
171:
172: return loadStarting && loadComplete && !loadingFailed;
173: }
174:
175: /**
176: * @return the last loadingFailed exception
177: */
178: public Exception getLoadingFailedException() {
179: return loadingFailedException;
180: }
181: }
|