Repository: incubator-wave
Updated Branches:
  refs/heads/wavy 4c37cd2e1 -> 051db0928


http://git-wip-us.apache.org/repos/asf/incubator-wave/blob/051db092/wave/src/main/java/org/waveprotocol/wave/client/doodad/experimental/htmltemplate/CajolerFacade.java
----------------------------------------------------------------------
diff --git 
a/wave/src/main/java/org/waveprotocol/wave/client/doodad/experimental/htmltemplate/CajolerFacade.java
 
b/wave/src/main/java/org/waveprotocol/wave/client/doodad/experimental/htmltemplate/CajolerFacade.java
deleted file mode 100644
index 1c91483..0000000
--- 
a/wave/src/main/java/org/waveprotocol/wave/client/doodad/experimental/htmltemplate/CajolerFacade.java
+++ /dev/null
@@ -1,194 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.waveprotocol.wave.client.doodad.experimental.htmltemplate;
-
-import com.google.gwt.core.client.GWT;
-import com.google.gwt.core.client.JavaScriptObject;
-import com.google.gwt.dom.client.DivElement;
-import com.google.gwt.dom.client.Document;
-import com.google.gwt.dom.client.Element;
-import com.google.gwt.dom.client.IFrameElement;
-import com.google.gwt.dom.client.StyleInjector;
-import com.google.gwt.resources.client.ClientBundle;
-import com.google.gwt.resources.client.CssResource;
-import com.google.gwt.resources.client.TextResource;
-import com.google.gwt.user.client.ui.HTML;
-
-import 
org.waveprotocol.wave.client.doodad.experimental.htmltemplate.CajoleService.CajolerResponse;
-import org.waveprotocol.wave.client.scheduler.Scheduler.Task;
-import org.waveprotocol.wave.client.scheduler.SchedulerInstance;
-import org.waveprotocol.wave.model.util.CollectionUtils;
-import org.waveprotocol.wave.model.util.StringMap;
-
-/**
- * Interface to the Caja machinery that prepares the surrounding native HTML
- * page and instantiates each HtmlTemplate doodad within a GWT HTML widget
- * supplied by the client.
- *
- * @author [email protected] (Jasvir Nagra)
- * @author [email protected] (Ihab Awad)
- */
-class CajolerFacade {
-  interface Css extends CssResource {
-    String outerHull();
-
-    String innerHull();
-  }
-
-  interface Resources extends ClientBundle {
-    @Source("secureStyles.css")
-    Css secureStyles();
-
-    @Source("supporting_js.jslib")
-    TextResource supportingJs();
-
-    @Source("taming.js")
-    TextResource taming();
-  }
-
-  private static final Resources RESOURCES = GWT.create(Resources.class);
-
-  static {
-    StyleInjector.inject(RESOURCES.secureStyles().getText(), true);
-  }
-
-  // Enable to true once tested more thoroughly.
-  private static final CajolerFacade instance = create();
-
-  // Enable once a cache replacement policy is established.  Timeout?
-  private static final boolean ENABLE_CACHE = false;
-
-  private final CajoleService cajoleService;
-  private final IFrameElement cajaFrame;
-  private final StringMap<CajolerResponse> cache = 
CollectionUtils.createStringMap();
-
-  public static CajolerFacade instance() {
-    return instance;
-  }
-
-  private static CajolerFacade create() {
-    IFrameElement cajaFrame = createCajaFrame();
-    CajoleService service = new HttpCajoleService();
-    return new CajolerFacade(service, cajaFrame);
-  }
-
-  private static IFrameElement createCajaFrame() {
-    IFrameElement cajaFrame = Document.get().createIFrameElement();
-    cajaFrame.setFrameBorder(0);
-    cajaFrame.setAttribute("width", "0");
-    cajaFrame.setAttribute("height", "0");
-    Document.get().getBody().appendChild(cajaFrame);
-    Document cajaFrameDoc = cajaFrame.getContentDocument();
-    cajaFrameDoc.getBody().appendChild(
-        cajaFrameDoc.createScriptElement(RESOURCES.supportingJs().getText()));
-    cajaFrameDoc.getBody().appendChild(
-        cajaFrameDoc.createScriptElement(RESOURCES.taming().getText()));
-    return cajaFrame;
-  }
-
-  private CajolerFacade(CajoleService service, IFrameElement cajaFrame) {
-    this.cajoleService = service;
-    this.cajaFrame = cajaFrame;
-  }
-
-  private void appendToDocument(HTML target, PluginContext pluginContext, 
CajolerResponse response) {
-    DivElement domitaVdocElement = Document.get().createDivElement();
-    domitaVdocElement.setClassName("innerHull");
-
-    target.getElement().setInnerHTML("");
-    target.getElement().setClassName("outerHull");
-    target.getElement().appendChild(domitaVdocElement);
-
-    initializeDoodadEnvironment(
-        cajaFrame, domitaVdocElement, pluginContext.getJSOInterface());
-
-    // Render HTML
-    domitaVdocElement.setInnerHTML(response.getHtml());
-
-    // Inject JS
-    Document cajaFrameDoc = cajaFrame.getContentDocument();
-    
cajaFrameDoc.getBody().appendChild(cajaFrameDoc.createScriptElement(response.getJs()));
-  }
-
-  private static native void initializeDoodadEnvironment(
-      Element cajaFrame, Element domitaVdocElement, JavaScriptObject wave) /*-{
-    cajaFrame.contentWindow.caja___.initialize(domitaVdocElement, wave);
-  }-*/;
-
-  private void handleSuccessfulResponse(
-      String url, HTML target, PluginContext pluginContext, CajolerResponse 
cajoled) {
-    if (ENABLE_CACHE) {
-      cache.put(url, cajoled);
-    }
-
-    appendToDocument(target, pluginContext, cajoled);
-  }
-
-  /**
-   * Given a GWT {@code HTML} widget, instantiate an HTML Template doodad 
within
-   * that widget.
-   *
-   * @param target a GWT {@code HTML} widget. The contents of this widget will
-   *        be cleared out and replaced with the dynamic content created by the
-   *        HTML Template doodad.
-   * @param pluginContext an object which will be exposed to the HTML Template
-   *        doodad as a global window variable named {@code wave}. This
-   *        represents the Wave API to the doodad's JavaScript.
-   * @param url the URL of an HTML file that will be cajoled (via Caja) and
-   *        instantiated as the contents of the supplied {@code HTML} widget.
-   */
-  // This should be @SuppressWarnings("deadCode"), to ignore the branch 
disabled
-  // by the ENABLE_CACHE value, but Eclipse does not recognise "deadCode".
-  @SuppressWarnings("all")
-  public void instantiateDoodadInHTML(
-      final HTML target, final PluginContext pluginContext, final String url) {
-    if (ENABLE_CACHE && cache.containsKey(url)) {
-      SchedulerInstance.getMediumPriorityTimer().schedule(new Task() {
-        @Override
-        public void execute() {
-          // Use isAttached as a cheap approximation of doodad still being 
active.
-          if (target.isAttached()) {
-            appendToDocument(target, pluginContext, cache.get(url));
-          }
-        }
-      });
-    } else {
-      cajoleService.cajole(url, new Callback<CajolerResponse>() {
-        @Override
-        public void onSuccess(CajolerResponse cajoled) {
-          handleSuccessfulResponse(url, target, pluginContext, cajoled);
-        }
-
-        @Override
-        public void onError(String message) {
-          // log.
-        }
-      });
-    }
-  }
-
-  public JavaScriptObject getTaming() {
-    return doGetCajaObject(cajaFrame);
-  }
-
-  private static native JavaScriptObject doGetCajaObject(JavaScriptObject 
cajaFrame) /*-{
-    return cajaFrame.contentWindow.caja___;
-  }-*/;
-}

Reply via email to