/* * Member Methods */ public void GenerateUI(Appliance a) { /* * Setup dependency listeners */ IEnumerator e = a.GetDependedObjects().GetEnumerator(); while (e.MoveNext()) { ApplianceState state = (ApplianceState)e.Current; DependencyListener listen = new DependencyListener(state.GetReverseDeps()); state.ValueChangedEvent += new ApplianceState.ValueChangedHandler(listen.ValueChanged); } /* * Call the Rule Phases, as set by the main frame at load-time, * in order with the Appliance object as the first input. */ _panel.RemoveAllCIOs(); object input = a; IEnumerator phaseEnum = _rulePhases.GetEnumerator(); while (phaseEnum.MoveNext()) { input = ((RulePhase)phaseEnum.Current).Process(input, _ui); } _panel.FinalSizeNotify(); _ui.Invalidate(); // compute dependencies based on initial state e = a.VariableTable.GetObjectEnumerator(); while (e.MoveNext()) { ((ApplianceObject)e.Current).EvalDependencies(); } }
/* * Process Method */ public override void Process(Appliance a) { generateOrganization(a.GetRoot(), a.GetDependedObjects()); }