@Listen("onCellSelectionUpdate = #ss")
  public void onCellSelectionUpdate(CellSelectionUpdateEvent event) {
    StringBuilder info = new StringBuilder();
    info.append("Selection update from[")
        .append(
            Ranges.getAreaRefString(
                event.getOrigRow(),
                event.getOrigColumn(),
                event.getOrigLastRow(),
                event.getOrigLastColumn()))
        .append("] to [")
        .append(Ranges.getAreaRefString(event.getSheet(), event.getArea()))
        .append("]");

    if (isShowEventInfo(event.getName())) {
      addInfo(info.toString());
    }
  }
  @Listen("onCellSelection = #ss")
  public void onCellSelection(CellSelectionEvent event) {
    StringBuilder info = new StringBuilder();
    info.append("Select on[")
        .append(Ranges.getAreaRefString(event.getSheet(), event.getArea()))
        .append("]");

    if (isShowEventInfo(event.getName())) {
      addInfo(info.toString());
    }
  }
  @Listen("onCellFilter = #ss")
  public void onCellFilter(CellFilterEvent event) {
    StringBuilder info = new StringBuilder();

    info.append("Filter button clicked")
        .append(", filter area: ")
        .append(Ranges.getAreaRefString(event.getSheet(), event.getFilterArea()))
        .append(", on field: ")
        .append(event.getField());

    if (isShowEventInfo(event.getName())) {
      addInfo(info.toString());
    }
  }
  @Listen("onAuxAction = #ss")
  public void onAuxAction(AuxActionEvent event) {
    StringBuilder info = new StringBuilder();

    info.append("AuxAction ").append(event.getAction());

    if (!"deleteSheet".equals(event.getAction())) {
      // deleted sheet is unable to access at this moment
      info.append(" on : ").append(Ranges.getAreaRefString(event.getSheet(), event.getSelection()));
    }

    if (isShowEventInfo(event.getName())) {
      addInfo(info.toString());
    }
  }
  @Listen("onAfterCellChange = #ss")
  public void onAfterCellChange(CellAreaEvent event) {
    StringBuilder info = new StringBuilder();

    info.append("Cell changes on ")
        .append(Ranges.getAreaRefString(event.getSheet(), event.getArea()));
    info.append(
        ", first value is \""
            + Ranges.range(event.getSheet(), event.getArea()).getCellFormatText()
            + "\"");

    if (isShowEventInfo(event.getName())) {
      addInfo(info.toString());
    }
  }
  @Listen("onWidgetUpdate = #ss")
  public void onWidgetUpdate(WidgetUpdateEvent event) {
    StringBuilder info = new StringBuilder();
    SheetAnchor anchor = event.getSheetAnchor();

    info.append("Widget ")
        .append(event.getWidgetData())
        .append(" ")
        .append(event.getAction())
        .append(" to ")
        .append(
            Ranges.getAreaRefString(
                anchor.getRow(), anchor.getColumn(), anchor.getLastRow(), anchor.getLastColumn()));

    if (isShowEventInfo(event.getName())) {
      addInfo(info.toString());
    }
  }