001: /*
002: * Copyright (c) 2001 Silvere Martin-Michiellot All Rights Reserved.
003: *
004: * Silvere Martin-Michiellot grants you ("Licensee") a non-exclusive,
005: * royalty free, license to use, modify and redistribute this
006: * software in source and binary code form,
007: * provided that i) this copyright notice and license appear on all copies of
008: * the software; and ii) Licensee does not utilize the software in a manner
009: * which is disparaging to Silvere Martin-Michiellot.
010: *
011: * This software is provided "AS IS," without a warranty of any kind. ALL
012: * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, INCLUDING ANY
013: * IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR
014: * NON-INFRINGEMENT, ARE HEREBY EXCLUDED. Silvere Martin-Michiellot
015: * AND ITS LICENSORS SHALL NOT BE LIABLE FOR ANY DAMAGES
016: * SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING
017: * OR DISTRIBUTING THE SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL
018: * Silvere Martin-Michiellot OR ITS LICENSORS BE LIABLE
019: * FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR DIRECT,
020: * INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER
021: * CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF THE USE OF
022: * OR INABILITY TO USE SOFTWARE, EVEN IF Silvere Martin-Michiellot HAS BEEN
023: * ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
024: *
025: * This software is not designed or intended for use in on-line control of
026: * aircraft, air traffic, aircraft navigation or aircraft communications; or in
027: * the design, construction, operation or maintenance of any nuclear
028: * facility. Licensee represents and warrants that it will not use or
029: * redistribute the Software for such purposes.
030: *
031: * @Author: Silvere Martin-Michiellot
032: *
033: */
034:
035: package com.db.viewpoint;
036:
037: // This code is repackaged after the software The Carnival by Douglas Pew
038: // Site http://www.access.digex.net/~dpew/carnival (link is dead)
039: // Email dpew@gmu.edu
040:
041: /*
042: *
043: * This program is free software; you can redistribute it and/or modify
044: * it under the terms of the GNU General Public License as published by
045: * the Free Software Foundation; either version 2 of the License, or
046: * (at your option) any later version.
047: *
048: * This program is distributed in the hope that it will be useful,
049: * but WITHOUT ANY WARRANTY; without even the implied warranty of
050: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
051: * GNU General Public License for more details.
052: *
053: * You should have received a copy of the GNU General Public License
054: * along with this program; if not, write to the Free Software
055: * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
056: *
057: */
058:
059: import com.sun.j3d.utils.behaviors.mouse.MouseBehavior;
060: import com.sun.j3d.utils.behaviors.mouse.MouseZoom;
061: import com.sun.j3d.utils.behaviors.mouse.MouseRotate;
062:
063: import javax.media.j3d.*;
064: import javax.vecmath.*;
065: import java.util.*;
066:
067: /** The LookViewControl provides a specific ViewControl on a TransformGroup: left
068: * mouse button is used to Rotate, middle mouse button is used to zoom.
069: */
070: public class LookViewControl extends ViewControl {
071:
072: private static final String control_name = "Look";
073: private static final String instructions = "Use the left mouse button to rotate\n"
074: + "Use the middle mouse button to zoom";
075: TransformGroup tg;
076: //MouseLook in the orignal program
077: MouseZoom zoom;
078: MouseRotate rotate;
079: Behavior[] behaviors;
080:
081: /** Constructor to build a new LookViewControl to act on a TransformGroup.
082: * @param tgin The TranformGroup on which this ViewControl applies.
083: */
084: public LookViewControl(TransformGroup tgin) {
085:
086: setTransformGroup(tgin);
087:
088: }
089:
090: /** Sets the TransformGroup on which this LookViewControl applies
091: * @param tgin The TransformGroup corresponding to the LookViewControl
092: */
093: public void setTransformGroup(TransformGroup tgin) {
094:
095: BoundingSphere bounds = new BoundingSphere(new Point3d(0.0,
096: 0.0, 0.0), 10000.0);
097:
098: rotate = new MouseRotate(MouseBehavior.INVERT_INPUT);
099: rotate.setTransformGroup(tgin);
100: tgin.addChild(rotate);
101: rotate.setSchedulingBounds(bounds);
102:
103: zoom = new MouseZoom(MouseBehavior.INVERT_INPUT);
104: zoom.setTransformGroup(tgin);
105: tgin.addChild(zoom);
106: zoom.setSchedulingBounds(bounds);
107: behaviors = new Behavior[1];
108: behaviors[0] = rotate;
109: //behaviors[1] = zoom;
110:
111: }
112:
113: /** Schedules this LookViewControl to be taken into account in the event list. */
114: public void activate() {
115:
116: MouseActivator.setActiveList(behaviors);
117:
118: }
119:
120: /** Prevents this LookViewControl to be used. */
121: public void deactivate() {
122:
123: MouseActivator.setActiveList(null);
124:
125: }
126:
127: /** Retrieves the name for this ViewControl
128: * @return The corresponding name for this ViewControl
129: */
130: public String getControlName() {
131:
132: return control_name;
133:
134: }
135:
136: /** Retrieves the instructions for this ViewControl
137: * @return The corresponding instructions for this ViewControl
138: */
139: public String getControlInstructions() {
140:
141: return instructions;
142:
143: }
144:
145: //public void initialize() {
146: //}
147:
148: //public void processStimulus(Enumeration criteria) {
149: //}
150:
151: }
|