2011-04-27 2 views
0

Je veux créer un éditeur d'interface XML en flex.Basiquement, je veux présenter le xml dans un textarea.Users peut ensuite modifier le xml et l'enregistrer dans la base de données.En outre, basé sur le privilège de l'utilisateur connecté , le niveau de modification autorisé varie. Un utilisateur normal peut modifier les valeurs d'attribut ainsi que les valeurs de noeud, mais pas les noms d'attribut et les noms de noeud.Éditeur XML UI en flex

Pour exemple: considérer ce XML

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

utilisateur normal ne peut valeurs modifier id ('1', '2', '3'), les valeurs des pays ('AAAA', 'aaaa6', » aaaa4 ') et les noms d'utilisateur (' XASD ',' XASQWED ',' XASDRQQ '), mais pas les noms de noeud (' users ',' user ') et les noms d'attributs (' id ',' country '). Je préfère présenter le XML à l'utilisateur comme dans une interface de type éditeur et en restreindre l'édition, plutôt que d'utiliser une interface de grille dans laquelle les noms et valeurs d'attribut sont listés dans des colonnes séparées et permettent l'édition pour la colonne de valeur seulement.

Une idée de comment réaliser cette édition sélective (dans un textarea?)?

Répondre

4

Ce sera probablement trop complexe pour faire TextArea:

  • TextArea Sous-classe pour un accès protégé IUITextField
  • Parse XML vous de trouver à quels endroits le texte est modifiable et à laquelle ne
  • passe MODIFIER les événements du champ de texte si vous les sélectionnez dans la zone modifiable et les empêcher sinon
  • Réorganiser XML/mettre à jour les positions après chaque modification

L'utilisation de positions de texte de cette manière peut être très sujette aux erreurs. Envisagez une autre approche:
Présentez votre XML dans une mise en page personnalisée, où les parties non éditables sont des étiquettes ou des textes et modifiables sont TextFields. Une seule étiquette peut être remplie avec HBox avec ces contrôles de FlowLayout dans Flex4. TextFields doit valider leur contenu pour garder le XML valide.
Pour créer un éditeur, parcourez les balises/attributs, créez des contrôles. Pour récupérer le XML, parcourez les contrôles, en regardant leur type et créez des tags/attributs. La seule chose que vous perdez est la sélection de texte sur plusieurs étiquettes/lignes.
Mise à jour: En fait, il devrait être assez trivial à faire:

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

Hmmm ... On dirait que des jours difficiles m'attendent .. :) :) – user700284

1

Personnellement, je ne voudrais pas utiliser un « éditeur de texte » Il est trop de travail pour essayer de limiter ce que vous ne voulez pas l'utilisateur à toucher. Si j'étais vous, je créerais un DataGroup avec des rendus d'élément pour chaque noeud. De cette façon, tout est piloté par les données et facile à interpréter/modifier.