--- /dev/null
+package tim.prune.tips;
+
+/**
+ * Definition of a tip, including key and whether the tip
+ * has already been shown or not.
+ * This class is only visible within this package
+ */
+class TipDefinition
+{
+ /** Key of message to show when fired */
+ private String _messageKey = null;
+ /** Threshold of calls before tip is shown */
+ private int _threshold = 0;
+ /** Number of times this tip has been hit */
+ private int _hitCount = 0;
+ /** Flag whether tip is active or has already been shown */
+ private boolean _active = true;
+
+ /**
+ * Constructor
+ * @param inKey key for message to show
+ */
+ TipDefinition(String inKey)
+ {
+ this(inKey, 0);
+ }
+
+ /**
+ * Constructor
+ * @param inKey message key
+ * @param inThreshold threshold
+ */
+ TipDefinition(String inKey, int inThreshold)
+ {
+ _messageKey = inKey;
+ _threshold = inThreshold;
+ }
+
+ /**
+ * Hit this definition and check the threshold
+ * @return true if the message should be shown
+ */
+ boolean shouldShowMessage()
+ {
+ if (_active)
+ {
+ boolean overThreshold = (_hitCount >= _threshold);
+ if (!overThreshold) {
+ _hitCount++;
+ }
+ else {
+ _active = false; // only fire once
+ }
+ return overThreshold;
+ }
+ // not active
+ return false;
+ }
+
+ /**
+ * @return message key
+ */
+ String getMessageKey() {
+ return _messageKey;
+ }
+}