// Actual drop-down
  private Widget getDropDown() {

    String selected = "";
    String selectedText = "";

    box = new ListBox();
    box.setEnabled(!isReadOnly);
    box.addItem(HumanReadableConstants.INSTANCE.noCEPWindow(), "");

    for (int i = 0; i < operators.size(); i++) {
      String op = operators.get(i);
      box.addItem(HumanReadable.getOperatorDisplayName(op), op);
      if (op.equals(hcw.getWindow().getOperator())) {
        selected = op;
        selectedText = HumanReadable.getOperatorDisplayName(op);
        box.setSelectedIndex(i + 1);
      }
    }
    selectItem(hcw.getWindow().getOperator());

    // Fire event to ensure parent Widgets correct their state depending on selection
    final HasValueChangeHandlers<OperatorSelection> source = this;
    final OperatorSelection selection = new OperatorSelection(selected, selectedText);
    Scheduler.get()
        .scheduleFinally(
            new Command() {

              public void execute() {
                operatorChanged(selection);
                ValueChangeEvent.fire(source, selection);
              }
            });

    // Signal parent Widget whenever a change happens
    box.addChangeHandler(
        new ChangeHandler() {

          public void onChange(ChangeEvent event) {
            String selected = box.getValue(box.getSelectedIndex());
            String selectedText = box.getItemText(box.getSelectedIndex());
            OperatorSelection selection = new OperatorSelection(selected, selectedText);
            operatorChanged(selection);
            ValueChangeEvent.fire(source, selection);
          }
        });

    return box;
  }