private synchronized void keyTranslate(int direction) {

		if (allowDragCoordinatePlane) {

			float xmin = xAxis.getMin();
			float xmax = xAxis.getMax();
			float ymin = yAxis.getMin();
			float ymax = yAxis.getMax();

			switch (direction) {
			case KeyEvent.VK_RIGHT:
				float dx = xmax - xmin;
				xmin -= movePercent * dx;
				xmax -= movePercent * dx;
				setXBounds(xmin, xmax);
				break;
			case KeyEvent.VK_LEFT:
				dx = xmax - xmin;
				xmin += movePercent * dx;
				xmax += movePercent * dx;
				setXBounds(xmin, xmax);
				break;
			case KeyEvent.VK_UP:
				float dy = ymax - ymin;
				ymin -= movePercent * dy;
				ymax -= movePercent * dy;
				if (ymin * yScale > -getHeight() * 2)
					setYBounds(ymin, ymax);
				break;
			case KeyEvent.VK_DOWN:
				dy = ymax - ymin;
				ymin += movePercent * dy;
				ymax += movePercent * dy;
				if (ymax * yScale < getHeight() * 2)
					setYBounds(ymin, ymax);
				break;
			}
		}

		repaint();

	}