001: /*
002: * $RCSfile: Anchor.java,v $
003: *
004: * @(#)Anchor.java 1.22 99/03/15 10:26:58
005: *
006: * Copyright (c) 1996-1998 Sun Microsystems, Inc. All Rights Reserved.
007: *
008: * Sun grants you ("Licensee") a non-exclusive, royalty free, license to use,
009: * modify and redistribute this software in source and binary code form,
010: * provided that i) this copyright notice and license appear on all copies of
011: * the software; and ii) Licensee does not utilize the software in a manner
012: * which is disparaging to Sun.
013: *
014: * This software is provided "AS IS," without a warranty of any kind. ALL
015: * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, INCLUDING ANY
016: * IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR
017: * NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN AND ITS LICENSORS SHALL NOT BE
018: * LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING
019: * OR DISTRIBUTING THE SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR ITS
020: * LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR DIRECT,
021: * INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER
022: * CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF THE USE OF
023: * OR INABILITY TO USE SOFTWARE, EVEN IF SUN HAS BEEN ADVISED OF THE
024: * POSSIBILITY OF SUCH DAMAGES.
025: *
026: * This software is not designed or intended for use in on-line control of
027: * aircraft, air traffic, aircraft navigation or aircraft communications; or in
028: * the design, construction, operation or maintenance of any nuclear
029: * facility. Licensee represents and warrants that it will not use or
030: * redistribute the Software for such purposes.
031: *
032: * $Revision: 1.3 $
033: * $Date: 2006/03/29 16:28:11 $
034: * $State: Exp $
035: */
036: package org.jdesktop.j3d.loaders.vrml97.impl;
037:
038: import java.util.Vector;
039:
040: /**
041: * Description of the Class
042: *
043: *@author Rick Goldberg
044: *@author Doug Gehringer
045: */
046: public class Anchor extends GroupBase implements VrmlSensor {
047:
048: // exposedField
049: SFString description;
050: MFString parameter;
051: MFString url;
052:
053: // Additional fields are in GroupBase
054: javax.media.j3d.Group impl;
055:
056: /**
057: *Constructor for the Anchor object
058: *
059: *@param loader Description of the Parameter
060: */
061: public Anchor(Loader loader) {
062: super (loader);
063: description = new SFString();
064: parameter = new MFString();
065: url = new MFString();
066: initFields();
067: }
068:
069: /**
070: *Constructor for the Anchor object
071: *
072: *@param loader Description of the Parameter
073: *@param children Description of the Parameter
074: *@param bboxCenter Description of the Parameter
075: *@param bboxSize Description of the Parameter
076: *@param description Description of the Parameter
077: *@param parameter Description of the Parameter
078: *@param url Description of the Parameter
079: */
080: public Anchor(Loader loader, MFNode children, SFVec3f bboxCenter,
081: SFVec3f bboxSize, SFString description, MFString parameter,
082: MFString url) {
083: super (loader, children, bboxCenter, bboxSize);
084: this .description = description;
085: this .parameter = parameter;
086: this .url = url;
087: initFields();
088: }
089:
090: /** Description of the Method */
091: public void initImpl() {
092: if (loader.debug) {
093: System.out.println("Anchor.initImpl() called");
094: }
095: impl = new javax.media.j3d.Group();
096: implGroup = impl;
097: implNode = impl;
098: Vector v = new Vector();
099: v.addElement(this );
100: impl.setUserData(v);// need to back track pick
101: impl.setCapability(javax.media.j3d.Node.ENABLE_PICK_REPORTING);
102: impl.setCapability(javax.media.j3d.Node.ALLOW_BOUNDS_READ);
103: impl
104: .setCapability(javax.media.j3d.Node.ALLOW_LOCAL_TO_VWORLD_READ);
105: // must not compile Anchors to get proper picking!
106: impl.setCapability(javax.media.j3d.Group.ALLOW_CHILDREN_READ);
107: impl.setCapability(javax.media.j3d.Group.ALLOW_CHILDREN_EXTEND);
108: impl.setCapability(javax.media.j3d.Group.ALLOW_CHILDREN_WRITE);
109: super .replaceChildren();
110: implReady = true;
111: }
112:
113: /**
114: * Description of the Method
115: *
116: *@param eventInName Description of the Parameter
117: *@param time Description of the Parameter
118: */
119: public void notifyMethod(String eventInName, double time) {
120: if ((eventInName.equals("description"))
121: || (eventInName.equals("parameter"))
122: || (eventInName.equals("url"))) {
123: // NO-OP
124: } else if ((eventInName.equals("route_description"))
125: || (eventInName.equals("route_parameter"))
126: || (eventInName.equals("route_url"))) {
127: // NO-OP
128: } else {
129: super .notifyMethod(eventInName, time);
130: }
131: }
132:
133: /** Description of the Method */
134: void initFields() {
135: initGroupBaseFields();
136: description.init(this , FieldSpec, Field.EXPOSED_FIELD,
137: "description");
138: parameter.init(this , FieldSpec, Field.EXPOSED_FIELD,
139: "parameter");
140: url.init(this , FieldSpec, Field.EXPOSED_FIELD, "url");
141: }
142:
143: /**
144: * Description of the Method
145: *
146: *@return Description of the Return Value
147: */
148: public Object clone() {
149: Anchor a = new Anchor(loader, (MFNode) children.clone(),
150: (SFVec3f) bboxCenter.clone(), (SFVec3f) bboxSize
151: .clone(), (SFString) description.clone(),
152: (MFString) parameter.clone(), (MFString) url.clone());
153: return a;
154: }
155:
156: }
|