首页 > 解决方案 > 有没有办法为 Faktor-IPS 扩展属性自定义输入元素?

问题描述

我已经成功地创建了一个插件项目,它为 PolicyCmptType 定义了一个扩展属性。这个扩展属性是基于枚举的,所以我想得到一个 ComboBox 作为它的控件,此时创建了一个简单的 Text 控件。有没有简单的方法可以做到这一点?

标签: ide-customizationfaktor-ips

解决方案


Faktor-IPS 允许您通过扩展点的 Eclipse 机制创建自己的 UI 贡献。您已经使用了一个来创建您的扩展属性。对于自定义编辑字段,您可以使用扩展点'org.faktorips.devtools.core.ui.extensionPropertyEditFieldFactory',实现IExtensionPropertyEditFieldFactory并将扩展属性的 id 设置为 'propertyId'。

要创建 EditField,首先使用 UIToolkit 创建 Combo,然后使用 ComboViewerField 配置数据绑定:

 @Override
public EditField<?> newEditField(IIpsObjectPartContainer ipsObjectPart,
        Composite extensionArea,
        UIToolkit toolkit) {
    Combo combo = toolkit.createCombo(extensionArea);
    ComboViewerField<VariationOperand> comboViewerField = new ComboViewerField<VariationOperand>(combo,
            VariationOperand.class);
    comboViewerField.setLabelProvider(new DefaultLabelProvider());
    comboViewerField.setInput(VariationOperand.values());
    return comboViewerField;
}

您还可以创建自己的 LabelProvider 来自定义值的显示方式。


推荐阅读