flex中的XML编辑器UI

时间:2011-04-27 05:17:21

标签: xml flex actionscript-3

我想在flex中创建一个xml编辑器UI。基本上我想在textarea中呈现xml。用户可以编辑xml并将其保存在database.Also中,根据登录用户的权限,编辑级别允许变化。普通用户可以编辑属性值以及节点值,但不能编辑属性名称和节点名称。

例如:考虑这个XML

<users>
    <user id="1" country="aaaa">XASD</user>
    <user id="2" country="aaaa6">XASQWED</user>
    <user id="3" country="aaaa4">XASDRQQ</user>
</users>

普通用户只能编辑id值('1','2','3'),国家/地区值('aaaa','aaaa6','aaaa4')和用户名('XASD','XASQWED') ,'XASDRQQ')。但不是节点名称('用户','用户')和属性名称('id','country')。

我更喜欢在界面等编辑器中向用户呈现XML,并在那里限制编辑,而不是使用网格界面,其中属性名称和值列在不同的列中,并且仅允许编辑值列。

知道如何实现这种选择性编辑(在textarea中?)?

2 个答案:

答案 0 :(得分:4)

这可能在TextArea中太复杂了:

  • 子类TextArea访问受保护的IUITextField
  • 自己解析XML,找到文本可编辑的位置,而不是
  • 如果在可编辑区域中选择,则从文本字段传递CHANGE事件,否则将阻止它们
  • 每次更改后重新分析XML /更新位置

以这种方式处理文本位置可能非常容易出错。考虑另一种方法:
在自定义布局中显示XML,其中不可编辑的部分是标签或文本,可编辑的是TextField。单个标签可能是HBX中填充了Flow4中FlowLayout的这些控件。 TextFields必须验证其内容以保持XML有效 要创建编辑器,迭代标签/属性,创建控件。要获取XML,请迭代控件,查看其类型并创建标记/属性。您唯一丢失的是多个标签/行上的文本选择 的更新 实际上,这应该是非常简单的:

                     <VBox>
<tag>                  Label (<tag>)
    <subtag id="1"/>   HBox [ Label (<subtag ) Label(id=") TextInput(1) Label("/>) ]
</tag>                 Label (</tag>)
                     </VBox>

答案 1 :(得分:1)

就个人而言,我不会使用'文本编辑器'试图限制你不希望用户触摸的东西是太多的工作。如果我是你,我会为每个节点创建一个带有项呈示器的DataGroup。这样一切都是数据驱动的,易于解释/改变。