//package Sorter; import java.awt.Color; public class GraphicSorter extends ACompareSorter { public final static int TimeSlice = 1000; /** @SBGen Variable (,decoree,,0) */ private ACompareSorter _aCSorter; public GraphicSorter(ACompareSorter aCSorter) { _aCSorter = aCSorter; } public int split(IOrdered[] A, int lo, int hi) { System.out.println ("Sort from " + lo + " to " + hi); int s = _aCSorter.split (A,lo, hi); // delegates to decoree // s > lo SorterColor color = (SorterColor) ((IColored)A[s]).getColor (); Color splitColor = color.getLoSplit (); for(int i = lo; i < s; i++) { ((IColored) A[i]).setColor (splitColor); } splitColor = color.getHiSplit (); for(int i=s;i<=hi;i++) { ((IColored) A[i]).setColor (splitColor); } try { System.out.println ("Split at " + s); Thread.sleep(TimeSlice); } catch(Exception e){} return s; } public void join(IOrdered[] A, int lo, int s, int hi) { // lo < hi _aCSorter.join(A,lo,s,hi); // delegates to decoree SorterColor loColor = (SorterColor)(((IColored) A[lo]).getColor()); SorterColor hiColor = (SorterColor)(((IColored) A[hi]).getColor()); SorterColor color = loColor.join(hiColor); for(int i=lo;i<=hi;i++) { ((IColored) A[i]).setColor(color); } try { System.out.println ("Join at " + s); Thread.sleep(TimeSlice); System.out.println ("Done sorting from " + lo + " to " + hi); } catch(Exception e){} } }