Вопрос теоретического характера:
Переделываю свой старый проект, и вот в нем есть одно место, которое мне очень не нравится, а придумать, как бы его переделать не могу...
Вобщем, что есть: набор из полтора десятка разных форм, каждая из которых состоит из еще 1-2 десятка контролов. Все формы при изменении значения в хотя бы одном контроле сабмитят новое значение обработчику который должен 1. обновить состояние экрана, 2. обновить ХМЛ представление того, что происходит на экране + иногда обновить состояние связаных контролов (например, можно одновременно изменить ширину и положение по Х объекта - нужно обновить сразу 2 значения). Сейчас обработчик выглядит как длинющий switch-case с вложенными switch-case примерно так:

Код:
onSubmit(evt:FormEvent):void
{
switch(evt.form)
case 1:
switch(evt.formElement)
{
case 1:
screen.layer[1].updateElement(elementID = 1, elementValue = evt.value);
xml.form[1].@formElement = evt.value;
...
case 2:
...
}
case 2:
...
case N:
...
}
Проблема еще и в том, что значение контрола может быть чем угодно, т.е. строкой, числом, массивом... на форме может быть несколько однотипных контролов, которые можно различить только по ID, но тем не менее, нужно выполнить разные действия при изменении значения в том и другом.
Недостатки такого метода очевидны - если на форме добавится / удалится 1 контрол нужно делать изменения в обработчике. Не возможно сгенерить форму "на лету", т.е. технически, конечно, можно, но обработчик не будет знать что делать с импутом от такой формы... + этот switch-case неимоверной длины (строк 400 чтоб не соврать) и вобщем, выглядит это крайне удручающе =)
Вопрос: как бы перепроектировать это дело, чтобы 1. можно было избежать switch-case, 2. создавать формы "на лету"?