/*
*------------------------------------------------------------------------------
* Copyright (C) 2006-2015 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.agents.dataBrowser.browser;
import omero.gateway.model.WellSampleData;
import ome.model.units.BigResult;
import omero.model.enums.UnitsLength;
/**
* Display the primary image associated to the wellSample.
*
* @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
* @since 3.0-Beta3
*/
public class WellSampleNode
extends ImageNode
{
/** Reference to the parent of the well. */
private WellImageSet parent;
/** The index of the sample. */
private int index;
/** The height of the title to add to the location.*/
private int titleHeight;
/**
* Creates a new leaf node.
*
* @param title The frame's title.
* @param ho The original object in the image hierarchy which
* is visualized by this node. It has to be an image object in
* this case. Never pass <code>null</code>.
* @param t The thumbnail this node is going to display.
* This is obviously a thumbnail for the image
* object this node represents.
* @param index The index of the sample.
* @param parent Reference to the parent of the well.
*/
public WellSampleNode(String title, Object ho, Thumbnail t, int index,
WellImageSet parent)
{
super(title, ho, t);
if (parent == null)
throw new IllegalArgumentException("No parent.");
setTitleBarType(ImageNode.SMALL_TITLE_BAR);
titleHeight = getTitleBar().getPreferredSize().height;
setTitleBarType(ImageNode.NO_BAR);
this.index = index;
this.parent = parent;
}
/**
* Returns the height of the title.
*
* @return See above.
*/
public int getTitleHeight() { return titleHeight; }
/**
* Returns the x-coordinate of the top-left corner that field on the grid.
*
* @return See above.
*/
public double getPositionX()
{
WellSampleData data = (WellSampleData) getHierarchyObject();
try {
return data.getPositionX(UnitsLength.REFERENCEFRAME).getValue();
} catch (BigResult e) {
// can't do anything sensible at this point
throw new RuntimeException(e);
}
}
/**
* Returns the y-coordinate of the top-left corner that field on the grid.
*
* @return See above.
*/
public double getPositionY()
{
WellSampleData data = (WellSampleData) getHierarchyObject();
try {
return data.getPositionY(UnitsLength.REFERENCEFRAME).getValue();
} catch (BigResult e) {
// can't do anything sensible at this point
throw new RuntimeException(e);
}
}
/**
* Returns the index of the well sample.
*
* @return See above.
*/
public int getIndex() { return index; }
/**
* Returns the position of the well within the plate.
*
* @return See above.
*/
public int getRow() { return parent.getRow(); }
/**
* Returns the position of the well within the plate.
*
* @return See above.
*/
public int getColumn() { return parent.getColumn(); }
/**
* Returns the position of the well within the plate.
*
* @return See above.
*/
public int getLayedoutRow()
{
return parent.getRow()-parent.getIndentRow();
}
/**
* Returns the position of the well within the plate.
*
* @return See above.
*/
public int getLayedoutColumn()
{
return parent.getColumn()-parent.getIndentColumn();
}
/**
* Returns the well related to that wellSample.
*
* @return See above.
*/
public Object getParentObject() { return parent.getHierarchyObject(); }
/**
* Returns the well this sample is part of.
*
* @return See above.
*/
public WellImageSet getParentWell() { return parent; }
}