public ActionSetFieldWidget( RuleModeller mod, EventBus eventBus, ActionSetField set, Boolean readOnly) { super(mod, eventBus); this.model = set; this.layout = new DirtyableFlexTable(); layout.setStyleName("model-builderInner-Background"); DataModelOracle completions = this.getModeller().getSuggestionCompletions(); if (completions.isGlobalVariable(set.getVariable())) { this.fieldCompletions = completions.getFieldCompletionsForGlobalVariable(set.getVariable()); this.variableClass = completions.getGlobalVariable(set.getVariable()); } else { String type = mod.getModel().getLHSBindingType(set.getVariable()); if (type != null) { this.fieldCompletions = completions.getFieldCompletions(FieldAccessorsAndMutators.MUTATOR, type); this.variableClass = type; this.isBoundFact = true; } else { ActionInsertFact patternRhs = mod.getModel().getRHSBoundFact(set.getVariable()); if (patternRhs != null) { this.fieldCompletions = completions.getFieldCompletions( FieldAccessorsAndMutators.MUTATOR, patternRhs.getFactType()); this.variableClass = patternRhs.getFactType(); this.isBoundFact = true; } } } if (this.variableClass == null) { readOnly = true; ErrorPopup.showMessage(Constants.INSTANCE.CouldNotFindTheTypeForVariable0(set.getVariable())); } this.isFactTypeKnown = completions.isFactTypeRecognized(this.variableClass); if (readOnly == null) { this.readOnly = !this.isFactTypeKnown; } else { this.readOnly = readOnly; } if (this.readOnly) { layout.addStyleName("editor-disabled-widget"); } doLayout(); initWidget(this.layout); }
public CompositeFactPatternWidget( RuleModeller modeller, EventBus eventBus, CompositeFactPattern pattern, Boolean readOnly) { super(modeller, eventBus); this.completions = modeller.getSuggestionCompletions(); this.pattern = pattern; this.layout = new DirtyableFlexTable(); this.layout.setStyleName("model-builderInner-Background"); if (readOnly != null) { this.readOnly = readOnly; this.isFactTypeKnown = true; } else { this.readOnly = false; this.isFactTypeKnown = true; if (this.pattern != null && this.pattern.getPatterns() != null) { IFactPattern[] patterns = this.pattern.getPatterns(); for (int i = 0; i < patterns.length; i++) { IFactPattern p = patterns[i]; // for empty FROM / ACCUMULATE / COLLECT patterns if (p.getFactType() == null) { continue; } if (!completions.isFactTypeRecognized(p.getFactType())) { this.readOnly = true; this.isFactTypeKnown = false; break; } } } } if (this.readOnly) { layout.addStyleName("editor-disabled-widget"); } doLayout(); initWidget(layout); }