+ \r
+ /**\r
+ * Add a menu listener on {@link ITimeGraphEntry}s\r
+ *\r
+ * @param listener\r
+ * The listener to add\r
+ */\r
+ public void addTimeGraphEntryMenuListener(MenuDetectListener listener) {\r
+ if (!_timeGraphEntryMenuListeners.contains(listener)) {\r
+ _timeGraphEntryMenuListeners.add(listener);\r
+ }\r
+ }\r
+\r
+ /**\r
+ * Remove a menu listener on {@link ITimeGraphEntry}s\r
+ *\r
+ * @param listener\r
+ * The listener to remove\r
+ */\r
+ public void removeTimeGraphEntryMenuListener(MenuDetectListener listener) {\r
+ if (_timeGraphEntryMenuListeners.contains(listener)) {\r
+ _timeGraphEntryMenuListeners.remove(listener);\r
+ }\r
+ }\r
+\r
+ /**\r
+ * Menu event callback on {@link ITimeGraphEntry}s\r
+ *\r
+ * @param event\r
+ * The MenuDetectEvent, with field {@link TypedEvent#data} set to the selected {@link ITimeGraphEntry}\r
+ */\r
+ private void fireMenuEventOnTimeGraphEntry(MenuDetectEvent event) {\r
+ for (MenuDetectListener listener : _timeGraphEntryMenuListeners) {\r
+ listener.menuDetected(event);\r
+ }\r
+ }\r
+ \r
+ /**\r
+ * Add a menu listener on {@link ITimeEvent}s\r
+ *\r
+ * @param listener\r
+ * The listener to add\r
+ */\r
+ public void addTimeEventMenuListener(MenuDetectListener listener) {\r
+ if (!_timeEventMenuListeners.contains(listener)) {\r
+ _timeEventMenuListeners.add(listener);\r
+ }\r
+ }\r
+\r
+ /**\r
+ * Remove a menu listener on {@link ITimeEvent}s\r
+ *\r
+ * @param listener\r
+ * The listener to remove\r
+ */\r
+ public void removeTimeEventMenuListener(MenuDetectListener listener) {\r
+ if (_timeEventMenuListeners.contains(listener)) {\r
+ _timeEventMenuListeners.remove(listener);\r
+ }\r
+ }\r
+\r
+ /**\r
+ * Menu event callback on {@link ITimeEvent}s\r
+ *\r
+ * @param event\r
+ * The MenuDetectEvent, with field {@link TypedEvent#data} set to the selected {@link ITimeEvent}\r
+ */\r
+ private void fireMenuEventOnTimeEvent(MenuDetectEvent event) {\r
+ for (MenuDetectListener listener : _timeEventMenuListeners) {\r
+ listener.menuDetected(event);\r
+ }\r
+ }\r