X-Git-Url: http://gitweb.fperrin.net/?a=blobdiff_plain;f=tim%2Fprune%2FUpdateMessageBroker.java;h=b584ed88384249eb5a639e8dfec993b6c61b4df8;hb=a6197ddcaac11c0b943183da7d46169742d024af;hp=417d05547aa9b54e8bf3f7b09c0d11d2edae0f8d;hpb=d3679d647d57c2ee7376ddbf6def2d5b23c04307;p=GpsPrune.git diff --git a/tim/prune/UpdateMessageBroker.java b/tim/prune/UpdateMessageBroker.java index 417d055..b584ed8 100644 --- a/tim/prune/UpdateMessageBroker.java +++ b/tim/prune/UpdateMessageBroker.java @@ -4,39 +4,41 @@ package tim.prune; * Class responsible for distributing update information * to all registered listeners */ -public class UpdateMessageBroker +public abstract class UpdateMessageBroker { - private DataSubscriber[] _subscribers; - private int _subscriberNum = 0; - private static final int MAXIMUM_NUMBER_SUBSCRIBERS = 4; - - - /** - * Constructor - * @param inTrack Track object - */ - public UpdateMessageBroker() - { - _subscribers = new DataSubscriber[MAXIMUM_NUMBER_SUBSCRIBERS]; - } + private static final int MAXIMUM_NUMBER_SUBSCRIBERS = 7; + /** Array of all subscribers */ + private static DataSubscriber[] _subscribers = new DataSubscriber[MAXIMUM_NUMBER_SUBSCRIBERS]; + /** Counter of the number of subscribers added so far */ + private static int _subscriberNum = 0; + /** Enable/disabled flag */ + private static boolean _enabled = true; /** * Add a data subscriber to the list * @param inSub DataSubscriber to add */ - public void addSubscriber(DataSubscriber inSub) + public static void addSubscriber(DataSubscriber inSub) { _subscribers[_subscriberNum] = inSub; _subscriberNum++; } + /** + * Enable or disable the messaging (to allow temporary disabling for multiple operations) + * @param inEnabled false to disable, true to enable again + */ + public static void enableMessaging(boolean inEnabled) + { + _enabled = inEnabled; + } /** * Send a message to all subscribers that * the data has been updated */ - public void informSubscribers() + public static void informSubscribers() { informSubscribers(DataSubscriber.ALL); } @@ -46,8 +48,10 @@ public class UpdateMessageBroker * Send message to all subscribers * @param inChange Change that occurred */ - public void informSubscribers(byte inChange) + public static void informSubscribers(byte inChange) { + // TODO: Launch separate thread so that whatever caused the inform can finish + if (!_enabled) return; for (int i=0; i<_subscribers.length; i++) { if (_subscribers[i] != null) @@ -56,4 +60,20 @@ public class UpdateMessageBroker } } } + + /** + * Send message to all subscribers + * @param inMessage message to display informing of action completed + */ + public static void informSubscribers(String inMessage) + { + if (!_enabled) return; + for (int i=0; i<_subscribers.length; i++) + { + if (_subscribers[i] != null) + { + _subscribers[i].actionCompleted(inMessage); + } + } + } }