/* * org.openmicroscopy.shoola.util.ui.lens.ZoomWindow.java * *------------------------------------------------------------------------------ * Copyright (C) 2006-2016 University of Dundee. All rights reserved. * * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. * *------------------------------------------------------------------------------ */ package org.openmicroscopy.shoola.util.ui.lens; //Java imports import java.awt.BorderLayout; import java.awt.Container; import java.awt.Dimension; import java.awt.Point; import java.awt.event.ComponentEvent; import java.awt.event.ComponentListener; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import javax.swing.JDialog; import javax.swing.JFrame; import javax.swing.JLayeredPane; import javax.swing.JMenuBar; import omero.model.Length; import omero.model.enums.UnitsLength; //Third-party libraries //Application-internal dependencies /** * ZoomWindow is the component of the zoomWindowUI showing the zoomed version * of the lens. * * @author Jean-Marie Burel      * <a href="mailto:j.burel@dundee.ac.uk">j.burel@dundee.ac.uk</a> * @author Donald MacDonald      * <a href="mailto:donald@lifesci.dundee.ac.uk">donald@lifesci.dundee.ac.uk</a> * @version 3.0 * <small> * (<b>Internal version:</b> $Revision: $Date: $) * </small> * @since OME2.2 */ class ZoomWindow extends JDialog implements ComponentListener { /** The default size of the window. */ static final Dimension DEFAULT_SIZE = new Dimension(300, 300); /** The default location of the window. */ private static final Point DEFAULT_LOC = new Point(900, 200); /** The UI which displays the zoomed image. */ private ZoomWindowUI zoomWindowUI; /** Lens menu bar. */ private JMenuBar menu; /** Lens options popup menu. */ private LensMenu lensMenu; private JLayeredPane layeredPane; /** The statusPanel shows the position, size and zoomFactor of the lens. */ private StatusPanel statusPanel; /** Parent component of the lens and zoomWindowUI. */ private LensComponent lensComponent; private void initComponents() { setTitle("Zoom Window"); //setSize(DEFAULT_SIZE); setLocation(DEFAULT_LOC); //setAlwaysOnTop(true); setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); addWindowListener( new WindowAdapter() { public void windowClosing(WindowEvent e) { lensComponent.zoomWindowClosed(); } }); addComponentListener(this); lensMenu = new LensMenu(lensComponent); statusPanel = new StatusPanel(); } /** Builds and lays out the UI. */ private void buildGUI() { Container c = getContentPane(); c.setLayout(new BorderLayout()); c.add(zoomWindowUI, BorderLayout.CENTER); c.add(statusPanel, BorderLayout.SOUTH); } /** * Creates a new instance. This creates an instance of the * ZoomWindowUI(JDialog). * * @param parent JFrame parent window. * @param lensComponent The parent component of the ZoomWindow. * */ ZoomWindow(JFrame parent, LensComponent lensComponent, LensModel model) { super(parent); if (lensComponent == null) throw new IllegalArgumentException("No parent."); this.lensComponent = lensComponent; zoomWindowUI = new ZoomWindowUI(model); initComponents(); buildGUI(); } /** * Displays in pixels if <code>true</code> or in microns otherwise. * * @param b see above. */ void setDisplayInPixels(boolean b) { statusPanel.setDisplayInPixels(b); statusPanel.repaint(); } /** * Sets the mapping from pixel size to microns along the x and y axis. * * @param x Length of a pixel in x axis. * @param y Length of a pixel in y axis. */ void setXYPixelMicron(Length x, Length y) { statusPanel.setXYPixelSizes(x, y); statusPanel.repaint(); lensMenu.setMicronsMenuEnabled(!x.getUnit().equals(UnitsLength.PIXEL) && !y.getUnit().equals(UnitsLength.PIXEL)); } /** * Sets the X,Y coordinates of the lens on the ZoomWindowUI (in pixels). * * @param x See above. * @param y See above. */ void setLensXY(int x, int y) { statusPanel.setLensXY(x, y); } /** * Sets the w,h size of the lens on the ZoomWindowUI (in pixels). * * @param w See above. * @param h See above. */ void setLensWidthHeight(int w, int h) { statusPanel.setLensWidthHeight(w, h); } /** * Sets the zoomFactor of the lens. * * @param zoomFactor See above. */ void setLensZoomFactor(float zoomFactor) { statusPanel.setLensZoomFactor(zoomFactor); } /** * Sets the size of the zoomWindowUI to scale with the zoomfactor. * * @param w width of zoomed image. * @param h height of the zoomed image. */ void setZoomUISize(float w, float h) { zoomWindowUI.setZoomUISize((int) w, (int) h); } /** * Returns the UI of the zoomWindow. * * @return zoomWindowUI. */ ZoomWindowUI getUI() { return zoomWindowUI; } /** * Forwards call to {@link #zoomWindowUI}. * * @param index The index. */ void setSelectedSize(int index) { lensMenu.setSelectedSize(index); } /** * Forwards call to {@link #zoomWindowUI}. * * @param index The index. */ void setZoomIndex(int index) { lensMenu.setZoomIndex(index); } /** Repaints the image canvas. */ void paintImage() { zoomWindowUI.repaint(); } /** Updates the background color of the view port. */ void updateBackgroundColor() { zoomWindowUI.updateBackgroundColor(); } /** * Ce */ public void componentResized(ComponentEvent e) { zoomWindowUI.setBounds(zoomWindowUI.getBounds()); } public void componentHidden(ComponentEvent e) { } public void componentMoved(ComponentEvent e) { } public void componentShown(ComponentEvent e) { } }