// 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;
  }
예제 #2
0
  private Widget getSetterLabel() {
    HorizontalPanel horiz = new HorizontalPanel();

    if (mCall.getState() == ActionCallMethod.TYPE_UNDEFINED) {
      Image edit = TestScenarioAltedImages.INSTANCE.AddFieldToFact();
      edit.setTitle(TestScenarioConstants.INSTANCE.AddAnotherFieldToThisSoYouCanSetItsValue());

      edit.addClickHandler(
          new ClickHandler() {

            public void onClick(ClickEvent event) {
              Image w = (Image) event.getSource();
              showAddFieldPopup(w);
            }
          });

      horiz.add(
          new SmallLabel(
              HumanReadable.getActionDisplayName("call")
                  + " ["
                  + mCall.getVariable()
                  + "]")); // NON-NLS
      horiz.add(edit);
    } else {
      horiz.add(
          new SmallLabel(
              HumanReadable.getActionDisplayName("call")
                  + " ["
                  + mCall.getVariable()
                  + "."
                  + mCall.getMethodName()
                  + "]")); // NON-NLS
    }

    return horiz;
  }
  protected Widget getCompositeLabel() {

    ClickHandler click =
        new ClickHandler() {

          public void onClick(ClickEvent event) {
            Widget w = (Widget) event.getSource();
            showFactTypeSelector(w);
          }
        };
    String lbl =
        "<div class='form-field'>" + HumanReadable.getCEDisplayName("from") + "&nbsp;</div>";

    FlexTable panel = new FlexTable();

    int r = 0;

    if (pattern.getFactPattern() == null) {
      panel.setWidget(
          r,
          0,
          new ClickableLabel(
              "<br> <font color='red'>"
                  + GuidedRuleEditorResources.CONSTANTS.clickToAddPatterns()
                  + "</font>",
              click,
              !this.readOnly));
      r++;
    }

    panel.setWidget(r, 0, new HTML(lbl));
    ExpressionBuilder expressionBuilder =
        new ExpressionBuilder(
            this.getModeller(), this.getEventBus(), this.pattern.getExpression(), this.readOnly);
    expressionBuilder.addOnModifiedCommand(
        new Command() {
          public void execute() {
            setModified(true);
          }
        });
    panel.setWidget(r, 1, expressionBuilder);

    return panel;
  }
  @Override
  protected Widget getCompositeLabel() {
    ClickHandler leftPatternclick =
        new ClickHandler() {

          public void onClick(ClickEvent event) {
            Widget w = (Widget) event.getSource();
            showFactTypeSelector(w);
          }
        };
    ClickHandler sourcePatternClick =
        new ClickHandler() {

          public void onClick(ClickEvent event) {
            Widget w = (Widget) event.getSource();
            showSourcePatternSelector(w);
          }
        };

    String lbl =
        "<div class='form-field'>" + HumanReadable.getCEDisplayName("from accumulate") + "</div>";

    DirtyableFlexTable panel = new DirtyableFlexTable();

    int r = 0;

    if (pattern.getFactPattern() == null) {
      panel.setWidget(
          r++,
          0,
          new ClickableLabel(
              "<br> <font color='red'>"
                  + GuidedRuleEditorResources.CONSTANTS.clickToAddPattern()
                  + "</font>",
              leftPatternclick,
              !this.readOnly));
    }

    panel.setWidget(r++, 0, new HTML(lbl));

    if (this.getFromAccumulatePattern().getSourcePattern() == null) {
      panel.setWidget(
          r++,
          0,
          new ClickableLabel(
              "<br> <font color='red'>"
                  + GuidedRuleEditorResources.CONSTANTS.clickToAddPattern()
                  + "</font>",
              sourcePatternClick,
              !this.readOnly));
    } else {
      IPattern rPattern = this.getFromAccumulatePattern().getSourcePattern();

      RuleModellerWidget sourcePatternWidget;
      if (rPattern instanceof FactPattern) {
        sourcePatternWidget =
            new FactPatternWidget(
                this.getModeller(), getEventBus(), rPattern, true, true, this.readOnly);

      } else if (rPattern instanceof FromAccumulateCompositeFactPattern) {
        sourcePatternWidget =
            new FromAccumulateCompositeFactPatternWidget(
                this.getModeller(),
                this.getEventBus(),
                (FromAccumulateCompositeFactPattern) rPattern,
                this.readOnly);

      } else if (rPattern instanceof FromCollectCompositeFactPattern) {
        sourcePatternWidget =
            new FromCollectCompositeFactPatternWidget(
                this.getModeller(),
                this.getEventBus(),
                (FromCollectCompositeFactPattern) rPattern,
                this.readOnly);

      } else if (rPattern instanceof FromEntryPointFactPattern) {
        sourcePatternWidget =
            new FromEntryPointFactPatternWidget(
                this.getModeller(),
                this.getEventBus(),
                (FromEntryPointFactPattern) rPattern,
                this.readOnly);

      } else if (rPattern instanceof FromCompositeFactPattern) {
        sourcePatternWidget =
            new FromCompositeFactPatternWidget(
                this.getModeller(),
                this.getEventBus(),
                (FromCompositeFactPattern) rPattern,
                this.readOnly);
      } else {
        throw new IllegalArgumentException(
            "Unsupported pattern " + rPattern + " for right side of FROM ACCUMULATE");
      }

      sourcePatternWidget.addOnModifiedCommand(
          new Command() {
            public void execute() {
              setModified(true);
            }
          });

      panel.setWidget(
          r++,
          0,
          addRemoveButton(
              sourcePatternWidget,
              new ClickHandler() {

                public void onClick(ClickEvent event) {
                  if (Window.confirm(GuidedRuleEditorResources.CONSTANTS.RemoveThisBlockOfData())) {
                    setModified(true);
                    getFromAccumulatePattern().setSourcePattern(null);
                    getModeller().refreshWidget();
                  }
                }
              }));
    }

    // REVISIT: Nested TabLayoutPanel does not work, its content is truncated.
    // TabLayoutPanel tPanel = new TabLayoutPanel(2, Unit.EM);
    TabPanel tPanel = new TabPanel();

    DirtyableFlexTable codeTable = new DirtyableFlexTable();
    int codeTableRow = 0;
    int codeTableCol = 0;

    codeTable.setWidget(
        codeTableRow,
        codeTableCol++,
        new HTML(
            "<div class='form-field'>" + GuidedRuleEditorResources.CONSTANTS.Init() + ":</div>"));

    final TextBox initField = new TextBox();
    initField.setTitle(GuidedRuleEditorResources.CONSTANTS.InitCode());
    initField.setText(getFromAccumulatePattern().getInitCode());
    initField.setEnabled(!this.readOnly);
    codeTable.setWidget(codeTableRow++, codeTableCol--, initField);

    codeTable.setWidget(
        codeTableRow,
        codeTableCol++,
        new HTML(
            "<div class='form-field'>" + GuidedRuleEditorResources.CONSTANTS.Action() + ":</div>"));
    final TextBox actionField = new TextBox();
    actionField.setTitle(GuidedRuleEditorResources.CONSTANTS.ActionCode());
    actionField.setText(getFromAccumulatePattern().getActionCode());
    actionField.setEnabled(!this.readOnly);
    codeTable.setWidget(codeTableRow++, codeTableCol--, actionField);

    codeTable.setWidget(
        codeTableRow,
        codeTableCol++,
        new HTML(
            "<div class='form-field'>"
                + GuidedRuleEditorResources.CONSTANTS.Reverse()
                + ":</div>"));
    final TextBox reverseField = new TextBox();
    reverseField.setTitle(GuidedRuleEditorResources.CONSTANTS.ReverseCode());
    reverseField.setText(getFromAccumulatePattern().getReverseCode());
    reverseField.setEnabled(!this.readOnly);
    codeTable.setWidget(codeTableRow++, codeTableCol--, reverseField);

    codeTable.setWidget(
        codeTableRow,
        codeTableCol++,
        new HTML(
            "<div class='form-field'>" + GuidedRuleEditorResources.CONSTANTS.Result() + ":</div>"));
    final TextBox resultField = new TextBox();
    resultField.setTitle(GuidedRuleEditorResources.CONSTANTS.ResultCode());
    resultField.setText(getFromAccumulatePattern().getResultCode());
    resultField.setEnabled(!this.readOnly);
    codeTable.setWidget(codeTableRow++, codeTableCol--, resultField);

    // panel.setWidget(r++, 0, codeTable);
    ScrollPanel codePanel = new ScrollPanel();
    codePanel.add(codeTable);

    tPanel.add(codePanel, GuidedRuleEditorResources.CONSTANTS.CustomCode());

    DirtyableFlexTable functionTable = new DirtyableFlexTable();

    functionTable.setWidget(
        0,
        0,
        new HTML(
            "<div class='form-field'>"
                + GuidedRuleEditorResources.CONSTANTS.Function()
                + ":</div>"));
    final TextBox functionField = new TextBox();
    functionField.setTitle(GuidedRuleEditorResources.CONSTANTS.FunctionCode());
    functionField.setText(getFromAccumulatePattern().getFunction());
    functionField.setEnabled(!this.readOnly);
    functionTable.setWidget(0, 1, functionField);

    //        panel.setWidget(r++, 0, functionTable);

    ScrollPanel functionPanel = new ScrollPanel();
    functionPanel.add(functionTable);

    tPanel.add(functionPanel, GuidedRuleEditorResources.CONSTANTS.Function());
    ChangeHandler changehandler =
        new ChangeHandler() {

          public void onChange(ChangeEvent event) {
            Widget sender = (Widget) event.getSource();
            TextBox senderTB = (TextBox) event.getSource();
            String code = senderTB.getText();
            setModified(true);
            if (sender == initField) {
              getFromAccumulatePattern().setFunction(null);
              functionField.setText("");
              getFromAccumulatePattern().setInitCode(code);
            } else if (sender == actionField) {
              getFromAccumulatePattern().setFunction(null);
              functionField.setText("");
              getFromAccumulatePattern().setActionCode(code);
            } else if (sender == reverseField) {
              getFromAccumulatePattern().setFunction(null);
              functionField.setText("");
              getFromAccumulatePattern().setReverseCode(code);
            } else if (sender == resultField) {
              getFromAccumulatePattern().setFunction(null);
              functionField.setText("");
              getFromAccumulatePattern().setResultCode(code);
            } else if (sender == functionField) {
              getFromAccumulatePattern().clearCodeFields();
              initField.setText("");
              actionField.setText("");
              reverseField.setText("");
              resultField.setText("");
              getFromAccumulatePattern().setFunction(code);
            }
          }
        };

    initField.addChangeHandler(changehandler);
    actionField.addChangeHandler(changehandler);
    reverseField.addChangeHandler(changehandler);
    resultField.addChangeHandler(changehandler);
    functionField.addChangeHandler(changehandler);

    boolean useFunction =
        getFromAccumulatePattern()
            .useFunctionOrCode()
            .equals(FromAccumulateCompositeFactPattern.USE_FUNCTION);

    tPanel.selectTab(useFunction ? 1 : 0);

    panel.setWidget(r++, 0, tPanel);

    return panel;
  }