--- /dev/null
+package tim.prune.gui.colour;
+
+import tim.prune.App;
+import tim.prune.DataSubscriber;
+
+/**
+ * Caretaker of the current PointColourer, responsible for listening
+ * to data changes and updating the colourer
+ */
+public class ColourerCaretaker implements DataSubscriber
+{
+ /** App object for getting the track */
+ private App _app = null;
+ /** PointColourer object for passing details to */
+ private PointColourer _colourer = null;
+
+ /**
+ * Constructor
+ * @param inApp app object to use
+ */
+ public ColourerCaretaker(App inApp)
+ {
+ _app = inApp;
+ }
+
+ /**
+ * @param inColourer current colourer object
+ */
+ public void setColourer(PointColourer inColourer)
+ {
+ _colourer = inColourer;
+ dataUpdated(ALL);
+ }
+
+ /**
+ * @return point colourer, or null
+ */
+ public PointColourer getColourer()
+ {
+ return _colourer;
+ }
+
+ /**
+ * Data has been updated
+ */
+ public void dataUpdated(byte inUpdateType)
+ {
+ if ((inUpdateType &
+ (DataSubscriber.DATA_ADDED_OR_REMOVED | DataSubscriber.DATA_EDITED | DataSubscriber.UNITS_CHANGED)) > 0
+ && _colourer != null)
+ {
+ _colourer.calculateColours(_app.getTrackInfo());
+ }
+ }
+
+ /** Don't care about status */
+ public void actionCompleted(String inMessage) {}
+}