private void doCheckin() {
   Logger.i("doCheckin() called");
   scheduler = parent.getScheduler();
   if (scheduler != null) {
     lastCheckinTimeText.setText("Checking in...");
     scheduler.handleCheckin(true);
   }
 }
 private void updateLastCheckinTime() {
   Logger.i("updateLastCheckinTime() called");
   scheduler = parent.getScheduler();
   if (scheduler != null) {
     Date lastCheckin = scheduler.getLastCheckinTime();
     if (lastCheckin != null) {
       lastCheckinTimeText.setText("Last checkin " + lastCheckin);
     } else {
       lastCheckinTimeText.setText("No checkins yet");
     }
   }
 }
 private void updateConsole() {
   Logger.i("updateConsole() called");
   scheduler = parent.getScheduler();
   if (scheduler != null) {
     AbstractCollection<MeasurementTask> tasks = scheduler.getTaskQueue();
     consoleContent.clear();
     taskMap.clear();
     for (MeasurementTask task : tasks) {
       String taskStr = task.toString();
       consoleContent.add(taskStr);
       taskMap.put(taskStr, task.getDescription().key);
     }
   }
   updateLastCheckinTime();
 }
 /** Handles the deletion of the measurement tasks when the user clicks the context menu */
 @Override
 public boolean onContextItemSelected(MenuItem item) {
   AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
   switch (item.getItemId()) {
     case R.id.ctxMenuDeleteTask:
       scheduler = parent.getScheduler();
       if (scheduler != null) {
         String selectedTaskString = consoleContent.getItem(longClickedItemPosition);
         String taskKey = taskMap.get(selectedTaskString);
         if (taskKey != null) {
           scheduler.removeTaskByKey(taskKey);
         }
       }
       updateConsole();
       return true;
     default:
   }
   return false;
 }