我正在尝试创建一个编辑器,用户可以在其中选择现有项目或内联创建新项目。例如,想象一下典型的人-地址关系。我想要一个表单,用户在编辑一个人时,可以从一组现有地址中选择一个地址,也可以创建一个新地址,而无需移动到单独的表单。
天真地,这似乎需要两个不同的编辑器来处理同一个属性。假设我有一个PersonwhichAddress getAddress()和setAddress(Address)。我的PersonEditor班级需要有两个名为address不同类型的子编辑;一个选择一个现有的人,另一个是编辑器的组合以进入该Address类型并允许编辑其属性。
通过阅读 上的文档CompositeEditor,似乎我必须利用它来动态选择子编辑器。但是,文档不够详细,无法让我真正理解应该如何实现接口。我已经尝试查看线索的实现方式ListEditor和实施方式,但还是有用的。由于我的副编辑编辑不同的路径,这似乎不太合适。OptionalFieldEditorListEditor
例如,尝试使用CompositeEditor,我不清楚在我的情况下应该返回什么createEditorForTraversal以及getPathElement应该返回什么。
如何动态地将两种不同类型的编辑器之一附加到一个属性?