World Wind Java Fenggui

From World Wind Wiki

(Difference between revisions)
Jump to: navigation, search
Revision as of 08:35, 11 January 2018 (edit)
Monday (Talk | contribs)

← Previous diff
Current revision (21:14, 21 August 2019) (edit) (undo)
F0urtyfive (Talk | contribs)
m (Reverted edits by Monday (Talk); changed back to last version by 76.21.41.59)
 
Line 1: Line 1:
-hll20180112+[[Category:Java]]
-http://www.outletmichaelkorsonline.us.com+[[Category:WWJ Dev Documentation]]
-http://www.coach-outletonlines.us.com+ 
-http://www.mulberry-bags.me.uk+== FengGUI Layer in WorldWind ==
-http://www.ralphlaurensale-clearance.me.uk+ 
-http://www.adidasnmdr1.us.com+Here is the code for a simple FengGUI layer. You should be able to use any of the FengGUI widgets within it. I included a small sample creating a layer panel using FengGUI.
-http://www.ultraboost.us+ 
-http://wwwcanadagoose-uk.com.co+Screenshot:
-http://www.longchampoutletus.us.com+ 
-http://www.philippplein-outlet.com+[[Image:fenggui_worldwind.jpg]]
-http://www.polooutlets.us.org+ 
-http://www.katespadeonlineoutlet.us.com+Sample code using the layer:
-http://www.canadagoosesalejackets.us.com+ 
-http://www.hermes.us.org+<pre>
-http://www.ralphlaurensale-clearance.org.uk+ GUIBuilder builder = new FengGUILayer.GUIBuilder() {
-http://www.burberry-outlet-canada.ca+ public void buildGUI(Display display)
-http://www.cheapoakleysunglassesofficial.us.com+ {
-http://www.cheapraybans.com.co+ Window w = new Window(false, false, false);
-http://www.air-max2018.us.com+ w.setTitle("Layers");
-http://www.red-bottoms.us.com+ 
-http://www.pandorajewelrypandora.us.com+ w.setXY(50, 50);
-http://www.yeezyboost-350.us.com+ 
-http://www.canadagoosejacketscanada.ca+ w.getContentContainer().setLayoutManager(new RowLayout(false));
-http://www.uggbootsonline.us+ 
-http://www.canadagoosesaleoutlet.us.com+ for (final Layer layer : wwd.getModel().getLayers())
-http://www.uggbootswomen.us.com+ {
-http://wwwcanadagoose-jacketsuk.com.co+ if (!layer.getName().equals("Renderable"))
-http://www.polooutlet.in.net+ {
-http://www.canadagooseoutletus.us.com+ CheckBox fcb = new CheckBox(layer.getName());
-http://www.airmax-2018.com+ fcb.setSelected(layer.isEnabled());
-http://www.adidasyeezyboost-350.us.com+ fcb.addSelectionChangedListener(new ISelectionChangedListener() {
-http://www.hermes-handbags.us+ public void selectionChanged(
-http://www.michaelkorsoutlet.us.org+ SelectionChangedEvent evt)
-http://www.cheapnfljerseysnflwholesale.us.com+ {
-http://www.uggsboots.name+ layer.setEnabled(evt.isSelected());
-http://www.adidas-yeezyshoes.us.com+ wwd.redraw();
-http://www.ralphlauren-outlet.me.uk+ }
-http://www.ralphlauren.me.uk+ });
-http://www.pandora.us.com+ w.getContentContainer().addWidget(fcb);
-http://www.michaelkorsfactoryoutletsale.us.com+ }
-http://www.pandora-charms.us.org+ }
-http://www.uggsoutletonlines.us.com+ 
-http://www.timberland-outlets.us+ w.pack();
-http://www.cheapnfljerseysofficial.us.com+ display.addWidget(w);
-http://www.harden-vol1.com+ display.layout();
-http://www.uggoutletstore.name+ }
-http://www.toryburchoutletonline.com.co+};
-http://www.polo-ralphlauren.in.net+</pre>
-http://www.canadagooseoutlet.name+ 
-http://www.ralphlaurenoutlet.in.net+FengGUILayer:
-http://www.michael-korsoutlet.ca+ 
-http://www.uggoutletonline.name+<pre>
-http://www.cheapjordans.in.net+import gov.nasa.worldwind.WorldWindow;
-http://www.nikeoutlet.us.com+import gov.nasa.worldwind.event.InputHandler;
-http://www.nikeairmax.in.net+import gov.nasa.worldwind.render.DrawContext;
-http://www.uggs-boots.us.org+import gov.nasa.worldwind.render.OrderedRenderable;
-http://www.yeezyboost.org.uk+ 
-http://www.nike-store.us.com+import java.awt.Point;
-http://www.uggsaustralia.fr+import java.awt.event.KeyEvent;
-http://www.uggsoutlet.cc+import java.awt.event.KeyListener;
-http://www.coachfactoryoutlet-storeonline.us.com+import java.awt.event.MouseEvent;
-http://www.moncler-outlet.us.org+import java.awt.event.MouseListener;
-http://www.air-jordans.us.com+import java.awt.event.MouseMotionListener;
-http://www.pandoracharms.us.com+import java.awt.event.MouseWheelEvent;
-http://www.oakley.nom.co+import java.awt.event.MouseWheelListener;
-http://www.coachhandbagsoutlet.us.com+ 
-http://www.moncleroutlets.us.org+import javax.media.opengl.GLAutoDrawable;
-http://www.uggscanadaugg.ca+import javax.media.opengl.GLCanvas;
-http://www.christianlouboutinoutlet.us+import javax.media.opengl.GLEventListener;
-http://www.outletlouisvuitton.us.com+ 
-http://www.jordanretro.name+import org.fenggui.Display;
-http://www.guccihandbagsoutlet.us.com+import org.fenggui.FengGUI;
-http://www.oakleysunglassesforwomen.us.com+import org.fenggui.render.jogl.EventHelper;
-http://www.michael-korshandbags.me.uk+ 
-http://www.outletuggoutlet.us.com+public class FengGUILayer implements GLEventListener, OrderedRenderable
-http://www.uggs-boots.fr+{
-http://www.salvatoreferragamoshoes.us.com+ // the canvas on which the OpenGL will draw his stuff. We keep
-http://www.katespadeoutletstoreonline.us.com+ // it as a field because we need the canvas to instantiate the
-http://www.canadagoosejacketssale.com.co+ // JOGL binding.
-http://www.canadagooseukjackets.me.uk+ private GLCanvas canvas = null;
-http://www.nikezoom.us+ 
-http://www.airmax-97.us+ // The root of the Widget tree.
-http://www.uggoutlet-store.us+ private Display display = null;
-http://www.canadagooseoutlet-jackets.us+ 
-http://www.timberlandbootsoutlets.us.com+ private WorldWindow wwd;
-http://www.coachoutlet-onlinesale.us.com+ 
-http://www.raybansunglasses.net.co+ private OrderedRenderable orderedImage = new OrderedRenderable()
-http://www.ralph-laurenoutlet.com.co+ {
-http://www.pandoracharmssaleclearance.uk+ // Set distance to -1 so FengGUI windows will appear in front
-http://www.canadagooseoutletjackets.com.co+ // of the WorldWind compass
-http://www.mbtshoessale.us.com+ public double getDistanceFromEye()
-http://www.coachoutletstoreonline.com.co+ {
-http://www.adidasnmd-shoes.us+ return -1;
-http://www.kate-spade.us.com+ }
-http://www.louisvuittonoutlet.us.org+ 
-http://www.michaelkorsoutletclearance.in.net+ public void pick(DrawContext dc, Point pickPoint)
-http://www.adidasshoe.us.com+ {
-http://www.canadagooseoutletjackets.us+ // Not implemented
-http://www.michaelkorsoutletonlinemichaelkors.us.com+ }
-http://www.uggsoutletclearance.us.com+ 
-http://www.canadagoose-outlet.name+ public void render(DrawContext dc)
-http://www.canadagoosejacketsoutlet.name+ {
-http://www.ralphlaurenoutletonline-polo.us.com+ FengGUILayer.this.display.display();
-http://www.adidas-nmd.us.com+ }
-http://www.adidasnmd.us.org+ };
-http://www.katespade.in.net+ 
-http://www.louboutinshoes.in.net+ private GUIBuilder builder;
-http://www.monclerjacketsoutlet.in.net+ 
-http://www.uggsoutletstoreonline.us.com+ public FengGUILayer(WorldWindow wwd, GUIBuilder builder)
-http://www.hermesbirkin.in.net+ {
-http://www.adidas-shoes.us.com+ this.wwd = wwd;
-http://www.poloralphlaurenoutletonline.us.com+ this.canvas = (GLCanvas) wwd;
-http://www.michaelkors-outlet.ca+ this.builder = builder;
-http://www.coachfactory-outletonline.us.org+ 
-http://www.nikeoutlet.in.net+ canvas.addGLEventListener(this);
-http://www.uggsbootsonline.us.com+ }
-http://www.cheapmlbjerseyschina.us.com+ 
-http://www.oakleysunglassessalecheap.us.com+ private void buildGUI()
-http://www.katespadehandbagsclearance.us.com+ {
-http://www.nikeshoes.in.net+ display = FengGUI.createDisplay(new MyJOGLBinding(canvas));
-http://www.fitflopssale-clearance.us.org+ display.setDepthTestEnabled(true);
-http://www.longchamp-outlet.us.com+ 
-http://www.pandoracharms.name+ new EventBinding(wwd.getInputHandler());
-http://www.outletcanadagoose.us+ 
-http://www.airmax-97.us.com+ builder.buildGUI(display);
-http://www.raybansunglassessalecheap.us.com+ }
-http://www.uggbootssales.us.com+ 
-http://www.cheapoakleysunglasses.com.co+ public void display(GLAutoDrawable arg0)
-http://www.coachoutlet-online.us.org+ {
-http://www.michaelkorsoutletshopping.us.com+ // Display is done in the render method
-http://www.ralphlaurenoutletpolo.org.uk+ }
-http://www.canadiangoose.us.com+ 
-http://www.pandora-outlet.us.com+ public void render(DrawContext dc)
-http://www.jordanshoesforsale.us.com+ {
-http://www.michaelkorsoutlet1.us.com+ dc.addOrderedRenderable(this.orderedImage);
-http://www.ralph-laurenoutlet.org.uk+ }
-http://www.ralph-laurenuk.org.uk+ 
-http://www.coach-outletonline.us.org+ public void reshape(GLAutoDrawable drawable, int x, int y, int width,
-http://www.timberlandbootsoutlet.us.com+ int height)
-http://www.raybansunglasse.com+ {
-http://www.adidas-superstar.us.com+ // does nothing
-http://www.northface-jackets.us.com+ }
-http://www.coachoutletcanada.ca+ 
-http://www.canadagooseukjackets.org.uk+ /**
-http://www.michael-korsoutlets.us.com+ * JOGL callback method
-http://www.ralphlaurenoutletsale.us.com+ */
-http://www.nikeshoes.us.com+ public void displayChanged(GLAutoDrawable arg0, boolean arg1, boolean arg2)
-http://www.supremeclothing.us.org+ {
-http://www.thenorthfacejacketsoutlet.us.com+ // does nothing
-http://www.monclerjacketsuk.org.uk+ }
-http://www.uggoutletonlines.us+ 
-http://www.doudounemonclerpascher.fr+ /**
-http://www.coachoutletus.us.com+ * JOGL callback method
-http://www.outletcoachoutlet.us.com+ */
-http://www.ugg-boots.net.co+ public void init(GLAutoDrawable drawable)
-http://www.airjordanshoes.in.net+ {
-http://www.cheapjordans-shoes.us.com+ buildGUI();
-http://www.cheapjordanshoes.us.com+ }
-http://www.raybanssunglassesoutlet.us.com+ 
-http://www.moncleroutlet.me.uk+ public double getDistanceFromEye()
-http://www.michaelkorsoutlet.co.uk+ {
-http://www.uggbootsoutletstores.us.com+ // TODO Auto-generated method stub
-http://www.oakley--sunglasses.us.org+ return 0;
-http://www.louisvuitton-outlet.us.com+ }
-http://www.cheapjordan-shoes.in.net+ 
-http://www.uggsoutletus.us.com+ public void pick(DrawContext dc, Point pickPoint)
-http://www.adadassuperstar.com+ {
-http://www.cheapjordans.com.co+ // TODO Auto-generated method stub
-http://www.catboots.us+ 
-http://www.ralphlaurenoutletmalls.us.com+ }
-http://www.vuittonlouis.us.com+ 
-http://www.cheapuggs.com.co+ private class EventBinding implements KeyListener, MouseMotionListener,
-http://www.burberryoutlet.in.net+ MouseListener, MouseWheelListener
-http://www.christianlouboutinshoes.us.org+ {
-http://www.michaelkorsoutletonlineclearance.in.net+ private boolean mouseDragging = false;
-http://www.outletcoachonline.us.com+ private boolean mousePressed = false;
-http://ugg.bootsoutlet.us.com+ private boolean mouseReleased = false;
-http://www.valentinoshoesoutlets.us.com+ 
-http://www.pandoracharmssale-clearance.us.com+ /**
-http://www.fitflopssale.us.com+ * Creates a new Binding.
-http://www.nfljerseyscheapwholesale.us.com+ * @param c the JOGLUI canvas
-http://www.coach-factory-outlet.us.org+ * @param d the FengGUI Display
-http://www.yeezyboost.us.com+ */
-http://www.thenorthface.us.com+ public EventBinding(InputHandler handler)
-http://www.2017nikeairmax.us+ {
-http://www.monclerjacketssale.us.com+ // makes FengGUI listen to tab keys
-http://www.supremenewyork.us.com+ // http://answers.google.com/answers/threadview?id=126916
-http://www.coachfactoryonlineoutlet.com.co+ canvas.setFocusTraversalKeysEnabled(false);
-http://www.coach-factoryoutletonline.us.org+ 
-http://www.pandorastore.us.com+ handler.addMouseListener(this);
-http://www.ralphlauren-outletpolo.us.com+ handler.addMouseMotionListener(this);
-http://www.coachoutletonlinecoachfactoryoutlet.us.com+ handler.addMouseWheelListener(this);
-http://www.coach-factoryoutlet-online.us.com+ canvas.addKeyListener(this);
-http://www.ugg-outlets.us+ }
-http://www.canadagoosejacketscoats.org.uk+ 
-http://www.fredperrypoloshirts.us+ /**
-http://www.adidascampusshoes.us+ * Forwards the key typed event to the Display.
-http://www.coachoutletmalls.us.com+ * @param e the event
-http://www.canadagoosejackets-outlet.us+ */
-http://wwwmonclerjacketsuk.com.co+ public void keyTyped(KeyEvent e)
-http://www.ugg-outletstores.us.com+ {
-http://www.ferragamo-outlet.us.com+ if (display.fireKeyTypedEvent(e.getKeyChar()))
-http://www.adidas.us.com+ {
-http://www.redbottomsshoes.us.com+ e.consume();
-http://www.burberry.us.com+ }
-http://www.canadagoosejacketsofficial.us.com+ }
-http://www.korsmichaeloutlet.us.com+ 
-http://www.coachoutletsonlines.us.com+ /**
-http://www.michael-kors-handbags.us.org+ * Forwards the key pressed event to the Display.
-http://www.airjordans.us.com+ * @param e the event
-http://www.canadagooseoutletjackets.us.com+ */
-http://www.supreme-clothing.us.com+ public void keyPressed(KeyEvent e)
-http://www.uggsbootscanada.ca+ {
-http://www.pandora-jewelryoutlet.us.com+ if (display.fireKeyPressedEvent(e.getKeyChar(), EventHelper
-http://www.longchamphandbagsuk.org.uk+ .getKeyPressed(e)))
-http://www.coachfactory-outletstore.us.com+ {
-http://www.poloralphlaurenoutletpolo.us.com+ e.consume();
-http://www.uggoutlet-clearance.us.com+ }
-http://www.uggbootsoutletsale.us.com+ }
-http://www.northfacejacketssale.us.com+ 
-http://www.canadagooseoutletcanada.com.co+ /**
-http://www.columbiasportswear.us.com+ * Forwards the key released event to the Display.
-http://www.canadagoosesoutlet.ca+ * @param e the event
-http://www.canadagooseoutletjackets.ca+ */
-http://www.coachoutletstoreonlineclearances.in.net+ public void keyReleased(KeyEvent e)
-http://www.burberryoutletsale.com.co+ {
-http://www.cheapuggssale.com.co+ if (display.fireKeyReleasedEvent(e.getKeyChar(), EventHelper
-http://www.mulberryoutlet.org.uk+ .getKeyPressed(e)))
-http://www.coach-outlets.us.com+ {
-http://www.hermesbag.us.com+ e.consume();
-http://www.yeezyboost-350.co.uk+ }
-http://www.northfaceoutlet.us.com+ }
-http://www.supremeclothing.org.uk+ 
-http://www.uggsoutlets.name+ /**
-http://www.adidas-yeezyboost.us.com+ * Forwards the mouse dragged event to the Display.
-http://www.coachfactory-outlet.us.com+ * @param e the event
-http://www.canadagooseoutlets.us+ */
-http://www.adidas-outlet.us.com+ public void mouseDragged(MouseEvent e)
-http://www.canadagooseclothing.us.com+ {
-http://www.michaelkorsoutlets.us.com+ if (display.fireMouseDraggedEvent(e.getX(), display.getHeight()
-http://www.rayban-sunglasseoutlet.us.com+ - e.getY(), EventHelper.getMouseButton(e)))
-http://www.northfacejacketsoutlet.com.co+ {
-http://www.birkenstocks.us+ mouseDragging = true;
-http://www.philipppleinshirt.com+ }
-http://www.jacketscanadagoose.org.uk+ if (mouseDragging)
-http://www.fitflops-sale-clearance.us.com+ {
-http://www.cheapuggs.net.co+ e.consume();
-http://www.adidasoutlet.us.com+ }
-http://www.canadagooseoutletonlines.us+ }
-http://www.uggsbootsaustralia.us.com+ 
-http://www.coachfactoryoutletsonlines.us.com+ /**
-http://www.coachoutlets.us.org+ * Forwards the mouse moved event to the Display.
-http://www.cheapuggboots.us.com+ * @param e the event
-http://www.michael-korsoutlet.us.com+ */
-http://www.moncler-outlets.us.com+ public void mouseMoved(MouseEvent e)
-http://www.pandoracharms-uk.org.uk+ {
-http://www.pandoracharms.com.co+ if (display.fireMouseMovedEvent(e.getX(), display.getHeight()
-http://www.uggs-boots.us+ - e.getY()))
-http://www.adidasyeezyshoes.us.com+ {
-http://www.canadagooseoutletstores.us+ e.consume();
-http://www.nikeoutletonline.us.com+ }
-http://www.uggshoes.us.com+ }
-http://www.coachcanadaoutlet.ca+ 
-http://www.mbtshoes.name+ /**
-http://www.pandorajewelryoutlet.in.net+ * Does nothing.
-http://www.cheapuggs-boots.us.com+ * @param arg0 the event
-http://www.outletcanadagooseoutlet.us.com+ */
-http://www.moncleroutletonlines.us.com+ public void mouseClicked(MouseEvent e)
-http://www.guccioutlets.us.org+ {
-http://www.uggoutlets.name+ if (mousePressed && mouseReleased)
-hll20180112+ {
 + e.consume();
 + }
 + mousePressed = false;
 + mouseReleased = false;
 + }
 + 
 + /**
 + * Forwards the mouse pressed event to the Display.
 + * @param e the event
 + */
 + public void mousePressed(MouseEvent e)
 + {
 + if (display.fireMousePressedEvent(e.getX(), display.getHeight()
 + - e.getY(), EventHelper.getMouseButton(e), e
 + .getClickCount()))
 + {
 + e.consume();
 + mousePressed = true;
 + }
 + }
 + 
 + /**
 + * Forwards the mouse released event to the Display.
 + * @param e the event
 + */
 + public void mouseReleased(MouseEvent e)
 + {
 + if (display.fireMouseReleasedEvent(e.getX(), display.getHeight()
 + - e.getY(), EventHelper.getMouseButton(e), e
 + .getClickCount()))
 + {
 + e.consume();
 + mouseReleased = true;
 + }
 + mouseDragging = false;
 + }
 + 
 + /**
 + * Does nothing.
 + * @param e the event
 + */
 + public void mouseEntered(MouseEvent e)
 + {
 + }
 + 
 + /**
 + * Does nothing.
 + * @param e the event
 + */
 + public void mouseExited(MouseEvent e)
 + {
 + }
 + 
 + /* (non-Javadoc)
 + * @see java.awt.event.MouseWheelListener#mouseWheelMoved(java.awt.event.MouseWheelEvent)
 + */
 + public void mouseWheelMoved(MouseWheelEvent e)
 + {
 + if (display.fireMouseWheel(e.getX(), e.getY(),
 + e.getWheelRotation() < 0, Math.abs(e.getWheelRotation())))
 + {
 + e.consume();
 + }
 + }
 + }
 + 
 + public interface GUIBuilder
 + {
 + public void buildGUI(Display display);
 + }
 +}
 +</pre>

Current revision


[edit] FengGUI Layer in WorldWind

Here is the code for a simple FengGUI layer. You should be able to use any of the FengGUI widgets within it. I included a small sample creating a layer panel using FengGUI.

Screenshot:

Image:fenggui_worldwind.jpg

Sample code using the layer:

      	GUIBuilder builder = new FengGUILayer.GUIBuilder() {
	public void buildGUI(Display display)
	{
		Window w = new Window(false, false, false);
		w.setTitle("Layers");

		w.setXY(50, 50);

		w.getContentContainer().setLayoutManager(new RowLayout(false));

		for (final Layer layer : wwd.getModel().getLayers())
		{
			if (!layer.getName().equals("Renderable"))
			{
				CheckBox fcb = new CheckBox(layer.getName());
				fcb.setSelected(layer.isEnabled());
				fcb.addSelectionChangedListener(new ISelectionChangedListener() {
					public void selectionChanged(
							SelectionChangedEvent evt)
					{
						layer.setEnabled(evt.isSelected());
						wwd.redraw();
					}
				});
				w.getContentContainer().addWidget(fcb);
			}
		}

		w.pack();
		display.addWidget(w);
		display.layout();
	}
};

FengGUILayer:

import gov.nasa.worldwind.WorldWindow;
import gov.nasa.worldwind.event.InputHandler;
import gov.nasa.worldwind.render.DrawContext;
import gov.nasa.worldwind.render.OrderedRenderable;

import java.awt.Point;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import java.awt.event.MouseWheelEvent;
import java.awt.event.MouseWheelListener;

import javax.media.opengl.GLAutoDrawable;
import javax.media.opengl.GLCanvas;
import javax.media.opengl.GLEventListener;

import org.fenggui.Display;
import org.fenggui.FengGUI;
import org.fenggui.render.jogl.EventHelper;

public class FengGUILayer implements GLEventListener, OrderedRenderable
{
	// the canvas on which the OpenGL will draw his stuff. We keep
	// it as a field because we need the canvas to instantiate the
	// JOGL binding.
	private GLCanvas canvas = null;

	// The root of the Widget tree.
	private Display display = null;

	private WorldWindow wwd;

	private OrderedRenderable orderedImage = new OrderedRenderable()
	{
		// Set distance to -1 so FengGUI windows will appear in front
		// of the WorldWind compass
		public double getDistanceFromEye()
		{
			return -1;
		}

		public void pick(DrawContext dc, Point pickPoint)
		{
			// Not implemented
		}

		public void render(DrawContext dc)
		{
			FengGUILayer.this.display.display();
		}
	};

	private GUIBuilder builder;

	public FengGUILayer(WorldWindow wwd, GUIBuilder builder)
	{
		this.wwd = wwd;
		this.canvas = (GLCanvas) wwd;
		this.builder = builder;

		canvas.addGLEventListener(this);
	}

	private void buildGUI()
	{
		display = FengGUI.createDisplay(new MyJOGLBinding(canvas));
		display.setDepthTestEnabled(true);

		new EventBinding(wwd.getInputHandler());

		builder.buildGUI(display);
	}

	public void display(GLAutoDrawable arg0)
	{
		// Display is done in the render method
	}

	public void render(DrawContext dc)
	{
		dc.addOrderedRenderable(this.orderedImage);
	}

	public void reshape(GLAutoDrawable drawable, int x, int y, int width,
			int height)
	{
		// does nothing
	}

	/**
	 * JOGL callback method
	 */
	public void displayChanged(GLAutoDrawable arg0, boolean arg1, boolean arg2)
	{
		// does nothing
	}

	/**
	 * JOGL callback method
	 */
	public void init(GLAutoDrawable drawable)
	{
		buildGUI();
	}

	public double getDistanceFromEye()
	{
		// TODO Auto-generated method stub
		return 0;
	}

	public void pick(DrawContext dc, Point pickPoint)
	{
		// TODO Auto-generated method stub

	}

	private class EventBinding implements KeyListener, MouseMotionListener,
			MouseListener, MouseWheelListener
	{
		private boolean mouseDragging = false;
		private boolean mousePressed = false;
		private boolean mouseReleased = false;

		/**
		 * Creates a new Binding.
		 * @param c the JOGLUI canvas
		 * @param d the FengGUI Display
		 */
		public EventBinding(InputHandler handler)
		{
			// makes FengGUI listen to tab keys
			// http://answers.google.com/answers/threadview?id=126916
			canvas.setFocusTraversalKeysEnabled(false);

			handler.addMouseListener(this);
			handler.addMouseMotionListener(this);
			handler.addMouseWheelListener(this);
			canvas.addKeyListener(this);
		}

		/**
		 * Forwards the key typed event to the Display.
		 * @param e the event
		 */
		public void keyTyped(KeyEvent e)
		{
			if (display.fireKeyTypedEvent(e.getKeyChar()))
			{
				e.consume();
			}
		}

		/**
		 * Forwards the key pressed event to the Display.
		 * @param e the event
		 */
		public void keyPressed(KeyEvent e)
		{
			if (display.fireKeyPressedEvent(e.getKeyChar(), EventHelper
					.getKeyPressed(e)))
			{
				e.consume();
			}
		}

		/**
		 * Forwards the key released event to the Display.
		 * @param e the event
		 */
		public void keyReleased(KeyEvent e)
		{
			if (display.fireKeyReleasedEvent(e.getKeyChar(), EventHelper
					.getKeyPressed(e)))
			{
				e.consume();
			}
		}

		/**
		 * Forwards the mouse dragged event to the Display.
		 * @param e the event
		 */
		public void mouseDragged(MouseEvent e)
		{
			if (display.fireMouseDraggedEvent(e.getX(), display.getHeight()
					- e.getY(), EventHelper.getMouseButton(e)))
			{
				mouseDragging = true;
			}
			if (mouseDragging)
			{
				e.consume();
			}
		}

		/**
		 * Forwards the mouse moved event to the Display.
		 * @param e the event
		 */
		public void mouseMoved(MouseEvent e)
		{
			if (display.fireMouseMovedEvent(e.getX(), display.getHeight()
					- e.getY()))
			{
				e.consume();
			}
		}

		/**
		 * Does nothing.
		 * @param arg0 the event
		 */
		public void mouseClicked(MouseEvent e)
		{
			if (mousePressed && mouseReleased)
			{
				e.consume();
			}
			mousePressed = false;
			mouseReleased = false;
		}

		/**
		 * Forwards the mouse pressed event to the Display.
		 * @param e the event
		 */
		public void mousePressed(MouseEvent e)
		{
			if (display.fireMousePressedEvent(e.getX(), display.getHeight()
					- e.getY(), EventHelper.getMouseButton(e), e
					.getClickCount()))
			{
				e.consume();
				mousePressed = true;
			}
		}

		/**
		 * Forwards the mouse released event to the Display.
		 * @param e the event
		 */
		public void mouseReleased(MouseEvent e)
		{
			if (display.fireMouseReleasedEvent(e.getX(), display.getHeight()
					- e.getY(), EventHelper.getMouseButton(e), e
					.getClickCount()))
			{
				e.consume();
				mouseReleased = true;
			}
			mouseDragging = false;
		}

		/**
		 * Does nothing. 
		 * @param e the event
		 */
		public void mouseEntered(MouseEvent e)
		{
		}

		/**
		 * Does nothing. 
		 * @param e the event
		 */
		public void mouseExited(MouseEvent e)
		{
		}

		/* (non-Javadoc)
		 * @see java.awt.event.MouseWheelListener#mouseWheelMoved(java.awt.event.MouseWheelEvent)
		 */
		public void mouseWheelMoved(MouseWheelEvent e)
		{
			if (display.fireMouseWheel(e.getX(), e.getY(),
					e.getWheelRotation() < 0, Math.abs(e.getWheelRotation())))
			{
				e.consume();
			}
		}
	}

	public interface GUIBuilder
	{
		public void buildGUI(Display display);
	}
}
Personal tools