Что касается инспектора свойств, то я сделал бы так.
Каждое свойство загнать в интерфейс. Обычно бывает много одинаковых свойств, поэтому можно несколько свойств помещать в один интерфейс расширяя интерфейсы. Тут зависит от того какие будут у вас объекты.
Само же свойство сделать отдельным объектом

Код AS3:
class Property{
public function Property(contextObject:RawObject){
}
public var name:String;
public var description:String;
public function setPropertyValue(value:String){
}
public function getPropertyValue():String{
}
}
interface IVertexCount {
function getVertexCount():int;
function setVertexCount(value:int):void;
}
class VertexCountProperty{
public function VertexCountProperty(contextObject:RawObject){
super(contextObject);
name = "Число вершин";
description = "Задайте количество вершин";
}
override public function setPropertyValue(value:String){
(contextObject as IVertexCount).setVertexCount(parseInt(value));
}
override public function getPropertyValue():String{
(contextObject as IVertexCount).getVertexCount().toString();
}
}
Классу RawObject добавим список свойств которые можно изменять
public var properties:Array;
Если выделить на экране ScreenObject, то инспектор свойств получит ссылку на этот объект, возьмет из него RawObject в котором хранятся все доступные для изменения свойства. Пробегаем массив. Строим формочку для отображения свойств.
Когда юзер изменил свойство и нажал "ок", то у соответствующего свойства вызываем setPropertyValue, а у экранного объекта вызываем draw(), чтобы обновить графическое представление изменившейся модели
Добавлено через 5 минут
expl, я отредактировал пост. PolygonSerializer заменил на Format1PolygonSerializer. У меня мысль тут такая: Количество классов сериалайзеров = количество фигур * ко-во форматов