Я думаю, вы можете использовать descriptionType для анализа объектов. Я бы, наверное, выбрал совершенно другой подход.
Создайте интерфейс, что-то вроде IObjectIWantToCreatePropertyWindowFor, и ваши соответствующие объекты формы реализуют это. Интерфейс может как-то определять список свойств, которые вы хотите редактировать на объекте. Я мог бы даже сделать это массивом объектов-значений, которые содержат имя свойства, отображаемое имя и тип редактора, который он должен иметь. Каждый объект может жестко закодировать этот список свойств в нем.
Окно свойств может быть записано для перерисовки на основе значений интерфейса. Скорее всего, я бы сделал это, используя класс List с функцией itemRenderer каким-либо образом.
То, что вы хотите сделать, звучит не сложно, но и не тривиально.
Нуга попросил более подробного объяснения. Это весь код псевдо, но:
1) Создать интерфейс:
package com.propertyInspector
{
public interface IPropertyInspectable
{
function get inspectableProperties( ):array;
}
}
2) Создайте класс, который реализует IPropertyInspectable
package com.propertyInspector
{
public class myClass implements IPropertyInspectable
{
public var property1 :String
public var property2 : Int
public function get inspectableProperties():Array{
return [{name:'property1',type:'String'},{name:'property2',type:'String'}, ]
}
}
}
3) Создайте инспектора собственности.
<s:List dataProvider="{someSelectedObjectThatImplementsIPropertyInspectable.inspectableProperties}">
<s:itemRenderer>
<s:Label text="data.name"/><s:TextInput />
</s:itemRenderer>
</s:List>
Вы должны выяснить, как передать объекты в инспектор свойств. И объектам свойств в inspectableProperties, вероятно, потребуется ссылка на фактический объект, на который они ссылаются, чтобы в List могли отображаться значения по умолчанию.
И вы можете использовать функцию itemRenderer для отображения различных редактируемых подходов, основанных на типе. TextInput для строк, NumericStepper для чисел и т. д.