--- /dev/null
+package tim.prune.tips;
+
+/**
+ * Class to manage the showing of tips according
+ * to the fixed TipDefinitions
+ */
+public abstract class TipManager
+{
+ public static final int Tip_UseAMapCache = 0;
+ public static final int Tip_LearnTimeParams = 1;
+ public static final int Tip_DownloadSrtm = 2;
+ public static final int Tip_UseSrtmFor3d = 3;
+ public static final int Tip_ManuallyCorrelateOne = 4;
+ private static final int Number_Tips = Tip_ManuallyCorrelateOne + 1;
+
+ /** Array of tip definitions */
+ private static TipDefinition[] TIPDEFS = new TipDefinition[Number_Tips];
+
+ /** Static block to initialise tip definitions */
+ static
+ {
+ TIPDEFS[Tip_UseAMapCache] = new TipDefinition("tip.useamapcache", 150);
+ TIPDEFS[Tip_LearnTimeParams] = new TipDefinition("tip.learntimeparams");
+ TIPDEFS[Tip_DownloadSrtm] = new TipDefinition("tip.downloadsrtm", 5);
+ TIPDEFS[Tip_UseSrtmFor3d] = new TipDefinition("tip.usesrtmfor3d");
+ TIPDEFS[Tip_ManuallyCorrelateOne] = new TipDefinition("tip.manuallycorrelateone");
+ }
+
+ /**
+ * Fire a trigger for the specified tip and get the message key if tip should be shown
+ * @param inTipNumber number of tip from constants
+ * @return message key if a message should be shown, or null otherwise
+ */
+ public static String fireTipTrigger(int inTipNumber)
+ {
+ try {
+ TipDefinition tip = TIPDEFS[inTipNumber];
+ if (tip.shouldShowMessage()) {
+ return tip.getMessageKey();
+ }
+ }
+ catch (ArrayIndexOutOfBoundsException obe) {} // unrecognised tip given
+ return null;
+ }
+}