Package org.dykman.dexter.didi

Source Code of org.dykman.dexter.didi.OptionEditor

package org.dykman.dexter.didi;

import org.dykman.dexter.DexteritySyntaxException;
import org.dykman.dexter.base.AbstractDocumentEditor;
import org.dykman.dexter.dexterity.DexterityConstants;
import org.w3c.dom.Attr;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;

public class OptionEditor extends AbstractDocumentEditor
{

  public void edit(String namespace, String name, String value)
  {
    String sep = null;
    if(name.endsWith("s")) {
      sep = value.substring(0,1);
    }
    String dexterity = DexterityConstants.BASE_NAMESPACE;
   
    String[] args = splitArgs(value);
    if(args.length < 1) {
      throw new DexteritySyntaxException("too few arguments in " + name + " attribute");
    }

    if(args[0].startsWith("!")) {
      // make a strict and insert it previously
      args[0] = args[0].substring(1);
      Node nn = element.cloneNode(true);
      NamedNodeMap attr = nn.getAttributes();
      attr.removeNamedItem(name);
      Node parent = element.getParentNode();
      parent.insertBefore(nn, element);
    }
   
    String v;
    NamedNodeMap attr = element.getAttributes();

    Attr a = document.createAttribute(dexterity + ":each");
    v = args[0];
    a.setValue(v);
    attr.setNamedItem(a);
   
    a = document.createAttribute( dexterity + ":text");
    if(args.length > 1) {
      a.setValue(args[1]);
    } else {
      a.setValue(".");
    }
    attr.setNamedItem(a);

    if(args.length > 2) {
      if(sep == null) {
        a = document.createAttribute(dexterity + ":attr");
        v = "value:" + args[2];
        a.setValue(v);
        attr.setNamedItem(a);
      } else {
        a = document.createAttribute(dexterity + ":attrs");
        v = sep + "value:" + args[2];
        a.setValue(v);
        attr.setNamedItem(a);
      }
    }
   
    if(args.length > 3) {
      if(sep == null) {
        a = document.createAttribute(dexterity + ":cattr");
        v = "selected:'true' "  + args[3];
        a.setValue(v);
        attr.setNamedItem(a);
      } else {
        a = document.createAttribute(dexterity + ":cattrs");
        v = sep + "selected:'true'" + sep  + args[3];
        a.setValue(v);
        attr.setNamedItem(a);
      }
    }
  }
}
TOP

Related Classes of org.dykman.dexter.didi.OptionEditor

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.