/*========================================================================= Program: FusionViewer Module: $RCSfile: WindowLevelMouseTool.java,v $ Language: Java Date: $Date: 2007/02/02 19:25:27 $ Version: $Revision: 1.2 $ Copyright (c) Insightful Corporation. All rights reserved. See Copyright.txt for details. This software is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the above copyright notice for more information. =========================================================================*/ package org.fusionviewer.display; import java.awt.event.MouseEvent; import org.fusionviewer.model.ImageDisplayModel; /**\class WindowLevelMouseTool *\brief Changes the window and level settings in response to mouse drags horizontally * and vertically. */ public class WindowLevelMouseTool implements MouseTool { private ImageSliceView m_parent; public WindowLevelMouseTool(ImageSliceView parent) { m_parent = parent; } public boolean canHandle(MouseEvent e) { if ((e.getButton() == MouseEvent.BUTTON1) && e.isShiftDown()) return true; else return false; } public void mousePressed(MouseEvent e) { setWindowLevel(e); } public void mouseReleased(MouseEvent e) { m_parent.releaseMouseTool(); } public void mouseDragged(MouseEvent e) { setWindowLevel(e); } private void setWindowLevel(MouseEvent e) { ImageDisplayModel model = m_parent.getViewModel(); int plane = e.isAltDown() ? 1 : 0; float window = (float) e.getX() / (float) (m_parent.getViewWidth() - 1) * model.getPixelRange(plane); float level = (float) e.getY() / (float) (m_parent.getViewHeight() - 1) * model.getPixelRange(plane) + model.getMinValue(plane); model.setWindowLevel(plane, window, level); } public void mouseMoved(MouseEvent e) { } }