Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  package org.jboss.errai.ui.rebind.chain;
  
  import static org.jboss.errai.ui.rebind.chain.TranslateCommand.Constants.DONE;
  import static org.jboss.errai.ui.rebind.chain.TranslateCommand.Constants.FRAGMENT;
  import static org.jboss.errai.ui.rebind.chain.TranslateCommand.Constants.PREFIX;
  import static org.jboss.errai.ui.rebind.chain.TranslateCommand.Constants.VALUES;
  
  import java.util.HashMap;
 import java.util.Map;
 
Command version of the TemplateVisitor this command executes in a chain of commands for each element in the DOM tree.

Author(s):
edewit@redhat.com
 
 public class TranslateCommand extends TemplateVisitor implements Command {
   protected Map<MetaClassContextcontexts = new HashMap<MetaClassContext>();
 
   public class Constants {
     public static final String PREFIX ="i18nPrefix";
     public static final String VALUES = "i18nValues";
     public static final String FRAGMENT = "templateFragment";
     public static final String DONE = "done";
   }
 
   private Element fragmentRoot;
   
   private String templateFragment;
 
   public TranslateCommand() {
     super("");
   }
 
   @Override
   public boolean visit(Element element) {
     if ( == null) {
       return super.visit(element);
     }
     
     // if we've found the fragment root already, check if we're still under it 
     if ( != null) {
       if ( (.compareDocumentPosition(element) & .) != 0) {
         // still under it
         return super.visit(element);
       }
       else {
         // went past it
         return true;
       }
     }
 
     // check if this is the fragment root
     if (.equals(element.getAttribute("data-field"))) {
        = element;
       return super.visit(element);
     }
     
     // haven't reached fragment root yet
     return true;
   }
 
   @Override
   public Context createInitialContext() {
     final Collection<MetaClasstemplatedAnnotatedClasses = ClassScanner.getTypesAnnotatedWith(Templated.class);
     for (MetaClass templatedAnnotatedClass : templatedAnnotatedClasses) {
       String templateFileName = TemplatedCodeDecorator.getTemplateFileName(templatedAnnotatedClass);
       String templateFragment = TemplatedCodeDecorator.getTemplateFragmentName(templatedAnnotatedClass);
       String i18nPrefix = TemplateUtil.getI18nPrefix(templateFileName);
 
       Context subContext = new Context();
       subContext.put(i18nPrefix);
       if (templateFragment != null && templateFragment.trim().length() > 0) {
         subContext.put(templateFragment);
       }
 
       .put(templatedAnnotatedClasssubContext);
     }
 
     return new Context();
   }
 
   @Override
   public void execute(Context context) {
     Node parent = (Nodecontext.get();
     Element element = (Elementcontext.get(.);
     if (parent != null) {
       if (isElementParentOf(parentelement)) {
         return;
      } else {
        context.remove();
      }
    }
    final MetaClass template = (MetaClasscontext.get(.);
    Context subContext = .get(template);
    context.putAll(subContext);
    setI18nPrefix((Stringcontext.get());
    context.put(getI18nValues());
    String newTemplateFragment = (Stringcontext.get();
    if (areDifferent(newTemplateFragment)) {
       = null;
    }
     = newTemplateFragment;
    if (!visit(element)) {
      context.put(element);
    }
  }
  private boolean isElementParentOf(Node parentElement element) {
    Node elementParent = element.getParentNode();
    while (elementParent != null) {
      if (elementParent.isEqualNode(parent)) {
        return true;
      }
      elementParent = elementParent.getParentNode();
    }
    return false;
  }
  
  private static boolean areDifferent(String s1String s2) {
    if (s1 == s2return false;
    if (s1 != null && s1.equals(s2)) return false;
    return true;
  }
New to GrepCode? Check out our FAQ X