@Override
  public boolean onCreateOptionsMenu(final Menu menu) {
    getMenuInflater().inflate(R.menu.abstract_logging_activity, menu);

    final SubMenu menuLog = menu.findItem(R.id.menu_templates).getSubMenu();
    for (final LogTemplate template : LogTemplateProvider.getTemplatesWithSignature()) {
      menuLog.add(0, template.getItemId(), 0, template.getResourceId());
    }

    final SubMenu menuSmilies = menu.findItem(R.id.menu_smilies).getSubMenu();
    for (final Smiley smiley : GCSmiliesProvider.getSmilies()) {
      menuSmilies.add(0, smiley.getItemId(), 0, smiley.text);
    }

    return true;
  }
  @Override
  public boolean onOptionsItemSelected(final MenuItem item) {
    final int id = item.getItemId();
    if (id == R.id.menu_repeat_last) {
      replaceLog(getLastLog());
      return true;
    }

    final LogTemplate template = LogTemplateProvider.getTemplate(id);
    if (template != null) {
      insertIntoLog(template.getValue(getLogContext()), true);
      return true;
    }

    final Smiley smiley = GCSmiliesProvider.getSmiley(id);
    if (smiley != null) {
      insertIntoLog("[" + smiley.text + "]", true);
      return true;
    }

    return super.onOptionsItemSelected(item);
  }