package org.jzy3d.chart.controllers.keyboard.camera;

import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;

import org.jzy3d.chart.Chart;
import org.jzy3d.chart.controllers.camera.AbstractCameraController;
import org.jzy3d.maths.Coord2d;



public class AWTCameraKeyController extends AbstractCameraController implements KeyListener, ICameraKeyController{
		
	public AWTCameraKeyController(){
	}
	
	public AWTCameraKeyController(Chart chart){
		register(chart);
	}
	
	@Override
    public void register(Chart chart){
		super.register(chart);
		chart.getCanvas().addKeyController(this);
	}
	
	@Override
    public void dispose(){
		for(Chart c: targets){
			c.getCanvas().removeKeyController(this);
		}
		
		super.dispose(); // i.e. target=null
	}
	
	/*********************************************************/
	
    @Override
    public void keyPressed(KeyEvent e) {
    	// rotation
    	if(!e.isShiftDown()){
    		Coord2d move = new Coord2d();
    		float offset = 0.1f;
    		switch(e.getKeyCode()){
    		case KeyEvent.VK_DOWN:
    			move.y = move.y + offset; rotate( move ); break;
    		case KeyEvent.VK_UP:
    			move.y = move.y - offset; rotate( move ); break;
    		case KeyEvent.VK_LEFT:
    			move.x = move.x - offset; rotate( move ); break;
    		case KeyEvent.VK_RIGHT:
    			move.x = move.x + offset; rotate( move ); break;
    		default:
    			break;
    		}
    	}
    	// zoom
    	else{    		
    		switch(e.getKeyCode()){
    		// shift
    		case KeyEvent.VK_DOWN:
    			shift( 0.1f ); break;
    		case KeyEvent.VK_UP:
    			shift( -0.1f ); break;
    		// zoom
    		case KeyEvent.VK_LEFT:
    			zoomZ( 0.9f ); break;
    		case KeyEvent.VK_RIGHT:
    			zoomZ( 1.1f ); break;
    		default:
    			break;
    		}
    	}
    }
    
    @Override
    public void keyTyped(KeyEvent e) {
    }
    
    @Override
    public void keyReleased(KeyEvent e) {
    }
}

 

Ads help maintain this website.