Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  package com.google.sitebricks.rendering.control;
  
 
 import java.util.Map;

Author(s):
Dhanji R. Prasanna (dhanji@gmail.com)
 
 class DefaultWidgetRegistry implements WidgetRegistry {
   public static final String TEXT_WIDGET = "__w:wRawText_Widget";
 
   private final Injector injector;
   private final Evaluator evaluator;
   private final PageBook pageBook;
 
   private final ConcurrentMap<StringWidgetWrapperwidgets = new MapMaker().makeMap();
 
   @Inject
   public DefaultWidgetRegistry(Evaluator evaluatorPageBook pageBookInjector injector) {
     this. = evaluator;
     this. = pageBook;
     this. = injector;
 
     //register core sitebricks controllers.
   }
 
   private void addCoreControllers() {
     //TODO make these case sensitive
     add("textfield"TextFieldWidget.class);
     add("repeat"RepeatWidget.class);
     add("showif"ShowIfWidget.class);
     add("choose"ChooseWidget.class);
     add("include"IncludeWidget.class);
     add("decorated"DecorateWidget.class);
   }
 
   public void add(String keyClass<? extends Renderablewidget) {
     .put(key.toLowerCase().trim(), WidgetWrapper.forWidget(keywidget));
   }
 
   public boolean isSelfRendering(String widget) {
     WidgetWrapper wrapper = .get(widget);
 
     if (null == wrapper) {
       throw new NoSuchWidgetException(
           "No widget found matching the name: @"
               + widget + " ; Did you forget to bind your"
               + " widget class using the embed().as() rule?");
     }
 
     return wrapper.isSelfRendering();
   }
 
 
   public RepeatToken parseRepeat(String expression) {
     //parse and convert widget into metadata annotation
     final Map<StringStringbindMap = Parsing.toBindMap(expression);
 
     //noinspection OverlyComplexAnonymousInnerClass
     return new RepeatToken() {
 
       public String items() {
         return bindMap.get(.);
       }
 
       public String var() {
         final String var = bindMap.get(.);
 
         return null != var ? Parsing.stripQuotes(var) : null;
       }
 
       public String pageVar() {
         final String pageVar = bindMap.get(.);
 
         return null == pageVar ? . : pageVar;
       }
     };
   }
 
   public Renderable headWidget(WidgetChain childsChildren,
                                Map<StringStringattribsEvaluatorCompiler compiler)
       throws ExpressionCompileException {
     return new HeaderWidget(childsChildrenattribscompiler);
  }
  public XmlWidget xmlWidget(WidgetChain childsChildrenString elementName,
                             Map<StringStringattribs,
                             EvaluatorCompiler compilerthrows ExpressionCompileException {
    final XmlWidget widget = new XmlWidget(childsChildrenelementNamecompilerattribs);
    .injectMembers(widget);
    return widget;
  }
  public Renderable newWidget(String keyString expressionWidgetChain widgetChain,
                              EvaluatorCompiler compiler)
      throws ExpressionCompileException {
    if (!.containsKey(key)) {
      throw new NoSuchWidgetException("No such widget registered (did you add"
          + " it correctly in module setup?): " + key);
    }
    if (.equals(key))
      return new TextWidget(nullcompiler);
    //otherwise construct via reflection (all sitebricks MUST have
    // a constructor with: widgetchain, expression, evaluator; in that order)
    final Renderable widget = 
        .get(key)
        .newWidget(widgetChainexpression);
    //add some injection (some sitebricks require it). It's a bit hacky, maybe we can reimplement some stuff later with @AssistedInject
    .injectMembers(widget);
    return widget;
  }
  public Renderable requireWidget(XmlWidget xmlWidget)
      throws ExpressionCompileException {
    return new RequireWidget(xmlWidget);
  }
  public Renderable textWidget(String templateEvaluatorCompiler compiler)
      throws ExpressionCompileException {
    return new TextWidget(templatecompiler);
  }
  public Renderable rawTextWidget(String templateEvaluatorCompiler compiler)
      throws ExpressionCompileException {
    return new RawTextWidget(templatecompiler);
  }
  public Renderable xmlDirectiveWidget(String wholeDeclarationEvaluatorCompiler evaluatorCompiler)
      throws ExpressionCompileException {
    return new XmlDirectiveWidget(wholeDeclarationevaluatorCompiler);
  }
  public void addEmbed(String embedAs) {
    add(embedAsEmbedWidget.class);
  }
  public void addArgument(String callWith) {
    add(callWithArgumentWidget.class);
  }
New to GrepCode? Check out our FAQ X