Class StoneTray<E extends <AHREF="../../jrummikub/model/Sizeable.html"title="interface in jrummikub.model">Sizeable</A>></H2>
<PRE>
java.lang.Object
<IMGSRC="../../resources/inherit.gif"ALT="extended by "><B>jrummikub.model.StoneTray<E></B>
</PRE>
<DL>
<DT><DT><B>Type Parameters:</B><DD><CODE>E</CODE> - Type of positioned objects (must implement Sizeable)</DL>
<DL>
<DT><B>All Implemented Interfaces:</B><DD>java.lang.Cloneable, java.lang.Iterable<<AHREF="../../jrummikub/util/Pair.html"title="class in jrummikub.util">Pair</A><E,<AHREF="../../jrummikub/model/Position.html"title="class in jrummikub.model">Position</A>>>, <AHREF="../../jrummikub/model/IStoneTray.html"title="interface in jrummikub.model">IStoneTray</A><E></DD>
</DL>
<DL>
<DT><B>Direct Known Subclasses:</B><DD><AHREF="../../jrummikub/model/Hand.html"title="class in jrummikub.model">Hand</A>, <AHREF="../../jrummikub/model/Table.html"title="class in jrummikub.model">Table</A></DD>
</DL>
<HR>
<DL>
<DT><PRE>public class <B>StoneTray<E extends <AHREF="../../jrummikub/model/Sizeable.html"title="interface in jrummikub.model">Sizeable</A>></B><DT>extends java.lang.Object<DT>implements <AHREF="../../jrummikub/model/IStoneTray.html"title="interface in jrummikub.model">IStoneTray</A><E></DL>
</PRE>
<P>
A StoneTray is a collection of positioned objects (for example <AHREF="../../jrummikub/model/Stone.html"title="class in jrummikub.model"><CODE>Stone</CODE></A>s
or <AHREF="../../jrummikub/model/StoneSet.html"title="class in jrummikub.model"><CODE>StoneSet</CODE></A>s.
<CODE>protected java.util.HashMap<<AHREF="../../jrummikub/model/StoneTray.html"title="type parameter in StoneTray">E</A>,<AHREF="../../jrummikub/util/Pair.html"title="class in jrummikub.util">Pair</A><<AHREF="../../jrummikub/model/StoneTray.html"title="type parameter in StoneTray">E</A>,<AHREF="../../jrummikub/model/Position.html"title="class in jrummikub.model">Position</A>>></CODE></FONT></TD>
<CODE> <AHREF="../../jrummikub/model/IStoneTray.html"title="interface in jrummikub.model">IStoneTray</A><<AHREF="../../jrummikub/model/StoneTray.html"title="type parameter in StoneTray">E</A>></CODE></FONT></TD>
<TD><CODE><B><AHREF="../../jrummikub/model/StoneTray.html#drop(E, jrummikub.model.Position)">drop</A></B>(<AHREF="../../jrummikub/model/StoneTray.html"title="type parameter in StoneTray">E</A> object,
<AHREF="../../jrummikub/model/Position.html"title="class in jrummikub.model">Position</A> position)</CODE>
<BR>
Adds object to the tray</TD>
<CODE>protected <AHREF="../../jrummikub/util/Pair.html"title="class in jrummikub.util">Pair</A><<AHREF="../../jrummikub/model/Position.html"title="class in jrummikub.model">Position</A>,<AHREF="../../jrummikub/model/StoneTray.Direction.html"title="enum in jrummikub.model">StoneTray.Direction</A>></CODE></FONT></TD>
<TD><CODE><B><AHREF="../../jrummikub/model/StoneTray.html#fixInvalidDrop(E, jrummikub.model.Position, jrummikub.model.StoneTray.Direction)">fixInvalidDrop</A></B>(<AHREF="../../jrummikub/model/StoneTray.html"title="type parameter in StoneTray">E</A> object,
<AHREF="../../jrummikub/model/Position.html"title="class in jrummikub.model">Position</A> pos,
<AHREF="../../jrummikub/model/StoneTray.Direction.html"title="enum in jrummikub.model">StoneTray.Direction</A> dir)</CODE>
<BR>
Checks whether the object may be placed on the given position, computes
<CODE> <AHREF="../../jrummikub/model/Position.html"title="class in jrummikub.model">Position</A></CODE></FONT></TD>
<TD><CODE><B><AHREF="../../jrummikub/model/StoneTray.html#getPosition(E)">getPosition</A></B>(<AHREF="../../jrummikub/model/StoneTray.html"title="type parameter in StoneTray">E</A> object)</CODE>
<BR>
Returns the position of an object that is already on the tray</TD>
<CODE> java.util.Iterator<<AHREF="../../jrummikub/util/Pair.html"title="class in jrummikub.util">Pair</A><<AHREF="../../jrummikub/model/StoneTray.html"title="type parameter in StoneTray">E</A>,<AHREF="../../jrummikub/model/Position.html"title="class in jrummikub.model">Position</A>>></CODE></FONT></TD>
<TD><CODE><B><AHREF="../../jrummikub/model/StoneTray.html#pickUp(E)">pickUp</A></B>(<AHREF="../../jrummikub/model/StoneTray.html"title="type parameter in StoneTray">E</A> object)</CODE>
<BR>
Tries to pick up (remove) a given object</TD>
protected java.util.HashMap<<AHREF="../../jrummikub/model/StoneTray.html"title="type parameter in StoneTray">E</A> extends <AHREF="../../jrummikub/model/Sizeable.html"title="interface in jrummikub.model">Sizeable</A>,<AHREF="../../jrummikub/util/Pair.html"title="class in jrummikub.util">Pair</A><<AHREF="../../jrummikub/model/StoneTray.html"title="type parameter in StoneTray">E</A> extends <AHREF="../../jrummikub/model/Sizeable.html"title="interface in jrummikub.model">Sizeable</A>,<AHREF="../../jrummikub/model/Position.html"title="class in jrummikub.model">Position</A>>><B>objects</B></PRE>
public void <B>drop</B>(<AHREF="../../jrummikub/model/StoneTray.html"title="type parameter in StoneTray">E</A> object,
<AHREF="../../jrummikub/model/Position.html"title="class in jrummikub.model">Position</A> position)</PRE>
<DL>
<DD><B>Description copied from interface: <CODE><AHREF="../../jrummikub/model/IStoneTray.html#drop(E, jrummikub.model.Position)">IStoneTray</A></CODE></B></DD>
<DD>Adds object to the tray
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><AHREF="../../jrummikub/model/IStoneTray.html#drop(E, jrummikub.model.Position)">drop</A></CODE> in interface <CODE><AHREF="../../jrummikub/model/IStoneTray.html"title="interface in jrummikub.model">IStoneTray</A><<AHREF="../../jrummikub/model/StoneTray.html"title="type parameter in StoneTray">E</A> extends <AHREF="../../jrummikub/model/Sizeable.html"title="interface in jrummikub.model">Sizeable</A>></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>object</CODE> - object to add to Hand<DD><CODE>position</CODE> - <AHREF="../../jrummikub/model/Position.html"title="class in jrummikub.model"><CODE>Position</CODE></A> to put the object</DL>
protected <AHREF="../../jrummikub/util/Pair.html"title="class in jrummikub.util">Pair</A><<AHREF="../../jrummikub/model/Position.html"title="class in jrummikub.model">Position</A>,<AHREF="../../jrummikub/model/StoneTray.Direction.html"title="enum in jrummikub.model">StoneTray.Direction</A>><B>fixInvalidDrop</B>(<AHREF="../../jrummikub/model/StoneTray.html"title="type parameter in StoneTray">E</A> object,
<AHREF="../../jrummikub/model/Position.html"title="class in jrummikub.model">Position</A> pos,
<AHREF="../../jrummikub/model/StoneTray.Direction.html"title="enum in jrummikub.model">StoneTray.Direction</A> dir)</PRE>
<DL>
<DD>Checks whether the object may be placed on the given position, computes
new position if not
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>object</CODE> - to be dropped<DD><CODE>dir</CODE> - <DD><CODE>pos</CODE> - the object is dropped at
<DT><B>Returns:</B><DD>null if the drop is valid, new position otherwise</DL>
public <AHREF="../../jrummikub/model/Position.html"title="class in jrummikub.model">Position</A><B>getPosition</B>(<AHREF="../../jrummikub/model/StoneTray.html"title="type parameter in StoneTray">E</A> object)</PRE>
<DL>
<DD><B>Description copied from interface: <CODE><AHREF="../../jrummikub/model/IStoneTray.html#getPosition(E)">IStoneTray</A></CODE></B></DD>
<DD>Returns the position of an object that is already on the tray
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><AHREF="../../jrummikub/model/IStoneTray.html#getPosition(E)">getPosition</A></CODE> in interface <CODE><AHREF="../../jrummikub/model/IStoneTray.html"title="interface in jrummikub.model">IStoneTray</A><<AHREF="../../jrummikub/model/StoneTray.html"title="type parameter in StoneTray">E</A> extends <AHREF="../../jrummikub/model/Sizeable.html"title="interface in jrummikub.model">Sizeable</A>></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>object</CODE> - object whose position is requested
<DT><B>Returns:</B><DD>position of the object or null when the object is not on the tray</DL>
</DD>
</DL>
<HR>
<ANAME="iterator()"><!----></A><H3>
iterator</H3>
<PRE>
public java.util.Iterator<<AHREF="../../jrummikub/util/Pair.html"title="class in jrummikub.util">Pair</A><<AHREF="../../jrummikub/model/StoneTray.html"title="type parameter in StoneTray">E</A>,<AHREF="../../jrummikub/model/Position.html"title="class in jrummikub.model">Position</A>>><B>iterator</B>()</PRE>
<DL>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE>iterator</CODE> in interface <CODE>java.lang.Iterable<<AHREF="../../jrummikub/util/Pair.html"title="class in jrummikub.util">Pair</A><<AHREF="../../jrummikub/model/StoneTray.html"title="type parameter in StoneTray">E</A> extends <AHREF="../../jrummikub/model/Sizeable.html"title="interface in jrummikub.model">Sizeable</A>,<AHREF="../../jrummikub/model/Position.html"title="class in jrummikub.model">Position</A>>></CODE></DL>
public boolean <B>pickUp</B>(<AHREF="../../jrummikub/model/StoneTray.html"title="type parameter in StoneTray">E</A> object)</PRE>
<DL>
<DD><B>Description copied from interface: <CODE><AHREF="../../jrummikub/model/IStoneTray.html#pickUp(E)">IStoneTray</A></CODE></B></DD>
<DD>Tries to pick up (remove) a given object
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><AHREF="../../jrummikub/model/IStoneTray.html#pickUp(E)">pickUp</A></CODE> in interface <CODE><AHREF="../../jrummikub/model/IStoneTray.html"title="interface in jrummikub.model">IStoneTray</A><<AHREF="../../jrummikub/model/StoneTray.html"title="type parameter in StoneTray">E</A> extends <AHREF="../../jrummikub/model/Sizeable.html"title="interface in jrummikub.model">Sizeable</A>></CODE></DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>object</CODE> - object to pick up
<DT><B>Returns:</B><DD>true when the object was successfully removed</DL>
</DD>
</DL>
<HR>
<ANAME="clone()"><!----></A><H3>
clone</H3>
<PRE>
public <AHREF="../../jrummikub/model/IStoneTray.html"title="interface in jrummikub.model">IStoneTray</A><<AHREF="../../jrummikub/model/StoneTray.html"title="type parameter in StoneTray">E</A>><B>clone</B>()</PRE>
<DL>
<DD><B>Description copied from interface: <CODE><AHREF="../../jrummikub/model/IStoneTray.html#clone()">IStoneTray</A></CODE></B></DD>
<DD>Create a clone of the StoneTray
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><AHREF="../../jrummikub/model/IStoneTray.html#clone()">clone</A></CODE> in interface <CODE><AHREF="../../jrummikub/model/IStoneTray.html"title="interface in jrummikub.model">IStoneTray</A><<AHREF="../../jrummikub/model/StoneTray.html"title="type parameter in StoneTray">E</A> extends <AHREF="../../jrummikub/model/Sizeable.html"title="interface in jrummikub.model">Sizeable</A>></CODE><DT><B>Overrides:</B><DD><CODE>clone</CODE> in class <CODE>java.lang.Object</CODE></DL>
</DD>
<DD><DL>
<DT><B>Returns:</B><DD>cloned StoneTray</DL>
</DD>
</DL>
<HR>
<ANAME="getSize()"><!----></A><H3>
getSize</H3>
<PRE>
public int <B>getSize</B>()</PRE>
<DL>
<DD><B>Description copied from interface: <CODE><AHREF="../../jrummikub/model/IStoneTray.html#getSize()">IStoneTray</A></CODE></B></DD>
<DD>Return the number of objects on the tray
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><AHREF="../../jrummikub/model/IStoneTray.html#getSize()">getSize</A></CODE> in interface <CODE><AHREF="../../jrummikub/model/IStoneTray.html"title="interface in jrummikub.model">IStoneTray</A><<AHREF="../../jrummikub/model/StoneTray.html"title="type parameter in StoneTray">E</A> extends <AHREF="../../jrummikub/model/Sizeable.html"title="interface in jrummikub.model">Sizeable</A>></CODE></DL>