r1138 - in trunk: src/main/java src/main/java/com src/main/java/com/google src/main/java/com/google/gwt src/main/java/com/google/gwt/wave src/main/java/com/google/gwt/wave/client src/main/java/com/google/gwt/wave/client/event src/main/java/com/google/gwt/wave/public src/main/java/org/ourproject/kune/app src/main/java/org/ourproject/kune/blogs/client/cnt src/main/java/org/ourproject/kune/docs/client src/main/java/org/ourproject/kune/docs/client/cnt src/main/java/org/ourproject/kune/docs/server
Author: vjrj Date: 2009-07-22 22:31:08 +0200 (Wed, 22 Jul 2009) New Revision: 1138 Added: trunk/src/main/java/com/ trunk/src/main/java/com/google/ trunk/src/main/java/com/google/gwt/ trunk/src/main/java/com/google/gwt/wave/ trunk/src/main/java/com/google/gwt/wave/Wave.gwt.xml trunk/src/main/java/com/google/gwt/wave/client/ trunk/src/main/java/com/google/gwt/wave/client/WaveEmbed.java trunk/src/main/java/com/google/gwt/wave/client/WaveWidget.java trunk/src/main/java/com/google/gwt/wave/client/WaveWidgetTest.java trunk/src/main/java/com/google/gwt/wave/client/event/ trunk/src/main/java/com/google/gwt/wave/client/event/HasWaveLoadHandlers.java trunk/src/main/java/com/google/gwt/wave/client/event/WaveLoadEvent.java trunk/src/main/java/com/google/gwt/wave/client/event/WaveLoadHandler.java trunk/src/main/java/com/google/gwt/wave/client/package.html trunk/src/main/java/com/google/gwt/wave/public/ trunk/src/main/java/com/google/gwt/wave/public/wave_embed.js trunk/war/ws-aux/ Modified: trunk/src/main/java/org/ourproject/kune/app/Kune.gwt.xml trunk/src/main/java/org/ourproject/kune/blogs/client/cnt/BlogViewerPresenter.java trunk/src/main/java/org/ourproject/kune/docs/client/DocumentClientActions.java trunk/src/main/java/org/ourproject/kune/docs/client/DocumentClientTool.java trunk/src/main/java/org/ourproject/kune/docs/client/cnt/DocumentViewerPresenter.java trunk/src/main/java/org/ourproject/kune/docs/server/DocumentServerTool.java trunk/src/main/java/org/ourproject/kune/gallery/client/cnt/GalleryViewerPresenter.java trunk/src/main/java/org/ourproject/kune/platf/client/rpc/ContentService.java trunk/src/main/java/org/ourproject/kune/platf/client/rpc/ContentServiceAsync.java trunk/src/main/java/org/ourproject/kune/platf/server/domain/Content.java trunk/src/main/java/org/ourproject/kune/platf/server/rpc/ContentRPC.java trunk/src/main/java/org/ourproject/kune/platf/server/tool/ServerTool.java trunk/src/main/java/org/ourproject/kune/wiki/client/cnt/WikiViewerPresenter.java trunk/src/main/java/org/ourproject/kune/workspace/client/AbstractFoldableContentActions.java trunk/src/main/java/org/ourproject/kune/workspace/client/cnt/AbstractContentView.java trunk/src/main/java/org/ourproject/kune/workspace/client/cnt/FoldableContentPanel.java trunk/src/main/java/org/ourproject/kune/workspace/client/cnt/FoldableContentPresenter.java trunk/src/main/java/org/ourproject/kune/workspace/client/skel/EntityWorkspace.java trunk/src/main/java/org/ourproject/kune/workspace/client/tool/FoldableAbstractClientTool.java trunk/src/test/java/org/ourproject/kune/platf/integration/IntegrationTestHelper.java Log: Incomplete - taskwave simple integration Added: trunk/src/main/java/com/google/gwt/wave/Wave.gwt.xml =================================================================== --- trunk/src/main/java/com/google/gwt/wave/Wave.gwt.xml 2009-07-22 15:12:39 UTC (rev 1137) +++ trunk/src/main/java/com/google/gwt/wave/Wave.gwt.xml 2009-07-22 20:31:08 UTC (rev 1138) @@ -0,0 +1,24 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE module PUBLIC "-//Google Inc.//DTD Google Web Toolkit 1.6.4//EN" + "http://google-web-toolkit.googlecode.com/svn/tags/1.6.4/distro-source/core/src/gwt-module.dtd"> +<!-- --> +<!-- Copyright 2009 Google Inc. --> +<!-- Licensed under the Apache License, Version 2.0 (the "License"); you --> +<!-- may not use this file except in compliance with the License. You may --> +<!-- 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. License for the specific language governing permissions and --> +<!-- limitations under the License. --> +<module rename-to="wave"> + <inherits name='com.google.gwt.user.User'/> +<!-- + <entry-point class="com.google.gwt.wave.client.WaveWidgetTest"/> + --> + + <script src="wave_embed.js"/> +</module> Added: trunk/src/main/java/com/google/gwt/wave/client/WaveEmbed.java =================================================================== --- trunk/src/main/java/com/google/gwt/wave/client/WaveEmbed.java 2009-07-22 15:12:39 UTC (rev 1137) +++ trunk/src/main/java/com/google/gwt/wave/client/WaveEmbed.java 2009-07-22 20:31:08 UTC (rev 1138) @@ -0,0 +1,136 @@ +package com.google.gwt.wave.client; + +import com.google.gwt.core.client.GWT; +import com.google.gwt.core.client.JavaScriptObject; +import com.google.gwt.core.client.GWT.UncaughtExceptionHandler; +import com.google.gwt.user.client.Element; +import com.google.gwt.wave.client.event.HasWaveLoadHandlers; +import com.google.gwt.wave.client.event.WaveLoadEvent; + +final class WaveEmbed extends JavaScriptObject { + + protected WaveEmbed() { + // Required by JavaScriptObject types + } + + // Undocumented: + // loadSearch + // setContactProvider + // provideContacts + + // Not yet available: + // addParticipant + // addReply + + /** + * Creates a new WaveEmbed using the default Wave server URL: + * <code>http://wave-devel.corp.google.com/a/google.com/</code> + */ + public static native WaveEmbed newInstance() /*-{ + return new $wnd.WavePanel(); + }-*/; + + /** + * Creates a new WaveEmbed using the specified Wave server URL. + * + * @param serverURL The URL of the Wave server to use + */ + public static native WaveEmbed newInstance(String serverURL) /*-{ + return new $wnd.WavePanel(serverURL); + }-*/; + + /** + * Set the UI configuration for the wave. This must be done before init() is + * called. Note that fontSize must be expressed in points, such as "12pts". + * + * @param bgColor + * @param color + * @param font + * @param fontSize + */ + public native void setUIConfig(String bgColor, String color, String font, + String fontSize) /*-{ + this.setUIConfig(bgColor, color, font, fontSize); + }-*/; + + /** + * Actually creates the wave >iframe> inside the given container. This is + * not done in the constructor so the caller can set various initialization + * options before the creation. + * + * @param container The container element which will hold the Wave >IFRAME> + */ + public native void init(Element container) /*-{ + this.init(container); + }-*/; + + /** + * Loads the given wave into the wavePanel. This can be called before or after + * init. + * + * @param waveId The Id of the Wave to load + */ + public native void loadWave(String waveId) /*-{ + this.loadWave(waveId); + }-*/; + + /** + * Loads the given wave into the wavePanel. This can be called before or after + * init. + * + * @param source An instance of HasWaveLoadHandlers where the WaveLoadEvent + * will be dispatched from + * @param waveId The Id of the Wave to load + */ + public native void loadWave(HasWaveLoadHandlers source, String waveId) /*-{ + this.loadWave(waveId, function() { + @com.google.gwt.wave.client.WaveEmbed::fireWaveLoadEvent(Lcom/google/gwt/wave/client/event/HasWaveLoadHandlers;Ljava/lang/String;)(source, waveId); + }) + }-*/; + + // Called from JSNI + @SuppressWarnings("unused") + private static void fireWaveLoadEvent(HasWaveLoadHandlers source, + String waveId) { + UncaughtExceptionHandler ueh = GWT.getUncaughtExceptionHandler(); + WaveLoadEvent event = new WaveLoadEvent(waveId); + + if (ueh != null) { + try { + source.fireEvent(event); + } catch (Exception ex) { + ueh.onUncaughtException(ex); + } + } else { + source.fireEvent(event); + } + } + + /** + * Returns the ID of the created <iframe> + * + * @return the ID of the created <iframe> + */ + public native String getFrameId() /*-{ + return this.getFrameId(); + }-*/; + + /** + * Adds the current user as a participant to the wave. + * <p> + * NOTE: Not yet functional in developer sandbox! + */ + public native void addParticipant() /*-{ + this.addParticipant(); + }-*/; + + /** + * Adds a reply to the currently loaded wave. An empty reply will be added to + * the wave. + * <p> + * NOTE: Not yet functional in developer sandbox! + */ + public native void addReply() /*-{ + this.addReply(); + }-*/; +} Added: trunk/src/main/java/com/google/gwt/wave/client/WaveWidget.java =================================================================== --- trunk/src/main/java/com/google/gwt/wave/client/WaveWidget.java 2009-07-22 15:12:39 UTC (rev 1137) +++ trunk/src/main/java/com/google/gwt/wave/client/WaveWidget.java 2009-07-22 20:31:08 UTC (rev 1138) @@ -0,0 +1,65 @@ +package com.google.gwt.wave.client; + +import com.google.gwt.dom.client.Document; +import com.google.gwt.event.shared.HandlerRegistration; +import com.google.gwt.user.client.ui.Widget; +import com.google.gwt.wave.client.event.HasWaveLoadHandlers; +import com.google.gwt.wave.client.event.WaveLoadEvent; +import com.google.gwt.wave.client.event.WaveLoadHandler; + +public class WaveWidget extends Widget implements HasWaveLoadHandlers { + + private static final String UICONFIG_ERROR = "setUIConfig must be called before the widget is attached."; + + private final WaveEmbed waveEmbed; + + public WaveWidget(final String waveServer) { + setElement(Document.get().createDivElement()); + this.waveEmbed = WaveEmbed.newInstance(waveServer); + } + + public HandlerRegistration addWaveLoadHandler(final WaveLoadHandler handler) { + return addHandler(handler, WaveLoadEvent.getType()); + } + + /** + * Loads the given wave into the WaveWidget. This method may be called at + * any time. + */ + public void loadWave(final String waveId) { + waveEmbed.loadWave(this, waveId); + } + + @Override + public void onLoad() { + waveEmbed.init(getElement()); + } + + /** + * Set the UI configuration for the wave. This must be done before the panel + * is attached to the page. + * + * @param bgColor + * An HTML color for the background, like "#ffffff" + * @param color + * A color for the text, like "#000000" + * @param font + * A font style, like "sans" + * @param fontSize + * The font size, which must be expressed in points, as in "12pt" + */ + public void setUIConfig(final String bgColor, final String color, final String font, final String fontSize) { + assert (!isAttached()) : UICONFIG_ERROR; + waveEmbed.setUIConfig(bgColor, color, font, fontSize); + } + + // Package protected until this is functional on the developer sandbox + void addParticipant() { + waveEmbed.addParticipant(); + } + + // Package protected until this is functional on the developer sandbox + void addReply() { + waveEmbed.addReply(); + } +} Added: trunk/src/main/java/com/google/gwt/wave/client/WaveWidgetTest.java =================================================================== --- trunk/src/main/java/com/google/gwt/wave/client/WaveWidgetTest.java 2009-07-22 15:12:39 UTC (rev 1137) +++ trunk/src/main/java/com/google/gwt/wave/client/WaveWidgetTest.java 2009-07-22 20:31:08 UTC (rev 1138) @@ -0,0 +1,31 @@ +package com.google.gwt.wave.client; + +import com.google.gwt.core.client.EntryPoint; +import com.google.gwt.core.client.GWT; +import com.google.gwt.core.client.GWT.UncaughtExceptionHandler; +import com.google.gwt.user.client.Window; +import com.google.gwt.user.client.ui.RootPanel; +import com.google.gwt.wave.client.event.WaveLoadEvent; +import com.google.gwt.wave.client.event.WaveLoadHandler; + +public class WaveWidgetTest implements EntryPoint { + + public void onModuleLoad() { + GWT.setUncaughtExceptionHandler(new UncaughtExceptionHandler() { + public void onUncaughtException(final Throwable e) { + Window.alert("Uncaught exception: " + e.getMessage()); + } + }); + final WaveWidget ww = new WaveWidget("http://wave.google.com/a/wavesandbox.com/"); + ww.setUIConfig("#333", "#ccc", "sans", "12pt"); + + RootPanel.get().add(ww); + ww.addWaveLoadHandler(new WaveLoadHandler() { + public void onWaveLoad(final WaveLoadEvent event) { + Window.alert("Wave '" + event.getWaveId() + "' loaded!"); + } + }); + ww.loadWave("???"); + } + +} Added: trunk/src/main/java/com/google/gwt/wave/client/event/HasWaveLoadHandlers.java =================================================================== --- trunk/src/main/java/com/google/gwt/wave/client/event/HasWaveLoadHandlers.java 2009-07-22 15:12:39 UTC (rev 1137) +++ trunk/src/main/java/com/google/gwt/wave/client/event/HasWaveLoadHandlers.java 2009-07-22 20:31:08 UTC (rev 1138) @@ -0,0 +1,8 @@ +package com.google.gwt.wave.client.event; + +import com.google.gwt.event.shared.HandlerRegistration; +import com.google.gwt.event.shared.HasHandlers; + +public interface HasWaveLoadHandlers extends HasHandlers { + HandlerRegistration addWaveLoadHandler(WaveLoadHandler handler); +} Added: trunk/src/main/java/com/google/gwt/wave/client/event/WaveLoadEvent.java =================================================================== --- trunk/src/main/java/com/google/gwt/wave/client/event/WaveLoadEvent.java 2009-07-22 15:12:39 UTC (rev 1137) +++ trunk/src/main/java/com/google/gwt/wave/client/event/WaveLoadEvent.java 2009-07-22 20:31:08 UTC (rev 1138) @@ -0,0 +1,88 @@ +/* + * Copyright 2008 Google Inc. + * + * Licensed 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 com.google.gwt.wave.client.event; + +import com.google.gwt.event.shared.GwtEvent; + +/** + * Represents a selection event. + * + * @param <I> + * the type being selected + */ +public class WaveLoadEvent extends GwtEvent<WaveLoadHandler> { + + /** + * Handler type. + */ + private static Type<WaveLoadHandler> type; + + /** + * Fires a selection event on all registered handlers in the handler + * manager.If no such handlers exist, this method will do nothing. + * + * @param <I> + * the selected item type + * @param source + * the source of the handlers + * @param selectedItem + * the selected item + */ + public static <I> void fire(final HasWaveLoadHandlers source, final String waveId) { + if (type != null) { + final WaveLoadEvent event = new WaveLoadEvent(waveId); + source.fireEvent(event); + } + } + + /** + * Gets the type associated with this event. + * + * @return returns the handler type + */ + public static Type<WaveLoadHandler> getType() { + if (type == null) { + type = new Type<WaveLoadHandler>(); + } + return type; + } + + private final String waveId; + + /** + * Creates a new selection event. + * + * @param selectedItem + * selected item + */ + public WaveLoadEvent(final String waveId) { + this.waveId = waveId; + } + + @Override + public final Type<WaveLoadHandler> getAssociatedType() { + return type; + } + + public String getWaveId() { + return waveId; + } + + @Override + protected void dispatch(final WaveLoadHandler handler) { + handler.onWaveLoad(this); + } +} Added: trunk/src/main/java/com/google/gwt/wave/client/event/WaveLoadHandler.java =================================================================== --- trunk/src/main/java/com/google/gwt/wave/client/event/WaveLoadHandler.java 2009-07-22 15:12:39 UTC (rev 1137) +++ trunk/src/main/java/com/google/gwt/wave/client/event/WaveLoadHandler.java 2009-07-22 20:31:08 UTC (rev 1138) @@ -0,0 +1,7 @@ +package com.google.gwt.wave.client.event; + +import com.google.gwt.event.shared.EventHandler; + +public interface WaveLoadHandler extends EventHandler { + void onWaveLoad(WaveLoadEvent event); +} Added: trunk/src/main/java/com/google/gwt/wave/client/package.html =================================================================== --- trunk/src/main/java/com/google/gwt/wave/client/package.html 2009-07-22 15:12:39 UTC (rev 1137) +++ trunk/src/main/java/com/google/gwt/wave/client/package.html 2009-07-22 20:31:08 UTC (rev 1138) @@ -0,0 +1,5 @@ +<html> +<body> +Core classes used in the Google Wave Embed API Library for GWT +</body> +</html> Added: trunk/src/main/java/com/google/gwt/wave/public/wave_embed.js =================================================================== --- trunk/src/main/java/com/google/gwt/wave/public/wave_embed.js 2009-07-22 15:12:39 UTC (rev 1137) +++ trunk/src/main/java/com/google/gwt/wave/public/wave_embed.js 2009-07-22 20:31:08 UTC (rev 1138) @@ -0,0 +1,149 @@ +// embed.js retreived from http://wave-api.appspot.com/public/embed.js on 2009-06-02 +var a, WAVEPANEL_nextId = 0; +if(typeof gadgets == "undefined" || !gadgets.rpc)document.write('<script src="http://wave.google.com/gadgets/js/core:rpc?debug=1&c=1" type="text/javascript"><\/script>'); +function WavePanel(b) { + this.id_ = WAVEPANEL_nextId++; + this.frameId_ = "iframe_panel_" + this.id_; + this.eventListeners_ = {}; + this.init_ = false; + this.waveRootUrl = b || "http://wave-devel.corp.google.com/a/google.com/" +} +WavePanel.prototype.getId = function() { + return this.id_ +}; +WavePanel.prototype.setContactProvider = function(b) { + if(this.init_)throw"Can only set contact provider before calling init";this.contactProvider_ = b +}; +WavePanel.prototype.init = function(b, c) { + this.init_ = true; + if(this.initWaveId_ && this.initSearch_)throw"Both an initial wave ID and a search were specified";this.setupRpc_(c); + this.createFrame_(b, this.contactProvider_, this.initWaveId_, this.initSearch_, this.uiConfig_); + gadgets.rpc.setRelayUrl(this.getFrameId(), this.getRelayUrl_(), false); + delete this.initSearch_; + delete this.initWaveId_ +}; +WavePanel.rpcSetup_ = false; +WavePanel.callbackQueue_ = {}; +WavePanel.nextCallbackId = 0; +WavePanel.pushCallback_ = function(b) { + if(!b)return""; + var c = "" + WavePanel.nextCallbackId; + WavePanel.nextCallbackId++; + WavePanel.callbackQueue_[c] = b; + return c +}; +WavePanel.popCallback_ = function(b) { + if(b == "")return null; + var c = WavePanel.callbackQueue_[b]; + delete WavePanel.callbackQueue_[b]; + return c +}; +a = WavePanel.prototype; +a.setupRpc_ = function(b) { + if(!this.rpcSetup_) { + this.rpcSetup_ = true; + var c = this; + gadgets.rpc.register("load_done", function() { + b && b() + }); + var e = function(d) { + var f = WavePanel.popCallback_(d.a[0]); + f && f(d.a[1]) + }; + gadgets.rpc.register("load_wave_done", function() { + e(this) + }); + gadgets.rpc.register("request_contacts", function() { + if(!c.contactProvider_)throw"Got a contacts request but no contact provider is set.";c.contactProvider_(this.a[0]) + }); + gadgets.rpc.registerDefault(function() { + var d = this.s, f = this.a[0], h = c.eventListeners_[d]; + if(h)for(var g in h)h[g](f) + }) + } +}; +a.createFrame_ = function(b, c, e, d, f) { + var h = document.createElement("div"); + h.innerHTML = '<iframe name="' + this.frameId_ + '" >'; + var g = h.firstChild; + g.id = this.frameId_; + g.width = "100%"; + g.height = "100%"; + g.frameBorder = "no"; + g.scrolling = "no"; + g.marginHeight = 0; + g.marginWidth = 0; + g.className = "embed-iframe"; + g.src = this.iframeUrl_(c, e, d, f); + b = b || document.body; + b.appendChild(g); + return g +}; +a.iframeUrl_ = function(b, c, e, d) { + var f = []; + f.push("client.type=embedded"); + f.push("parent=" + escape("http://" + window.location.host + window.location.pathname)); + b && f.push("ext_contacts=1"); + c && f.push("wave_id=" + encodeURIComponent(c)); + e && f.push("search_query=" + encodeURIComponent(e)); + if(d) { + d.bgcolor && f.push("bgcolor=" + encodeURIComponent(d.bgcolor)); + d.color && f.push("color=" + encodeURIComponent(d.color)); + d.font && f.push("font=" + encodeURIComponent(d.font)); + d.fontsize && f.push("fontsize=" + encodeURIComponent(d.fontsize)) + }return this.waveRootUrl + "?" + f.join("&") +}; +a.addListener = function(b, c) { + var e = this.eventListeners_, d = e[b]; + if(!d) { + d = []; + e[b] = d + }d.push(c) +}; +a.getFrameId = function() { + return this.frameId_ +}; +a.getRelayUrl_ = function() { + var b = this.waveRootUrl, c = b.split("://"); + if(c && c.length > 0) { + var e = c[c.length - 1]; + b = c[0] + "://"; + for(var d = 0;d < e.length;++d) { + if(e[d] == "/")break; + b += e[d] + }b += "/" + }return b + "gadgets/files/container/rpc_relay.html" +}; +a.loadWave = function(b, c) { + if(this.init_) { + var e = WavePanel.pushCallback_(c); + gadgets.rpc.call(this.getFrameId(), "load_wave", null, e, b) + }else this.initWaveId_ = b +}; +a.loadSearch = function(b, c) { + if(this.init_) { + var e = WavePanel.pushCallback_(c); + gadgets.rpc.call(this.getFrameId(), "digest_search", null, e, b) + }else this.initSearch_ = b +}; +a.setUIConfig = function(b, c, e, d) { + if(this.init_)throw"Cannot change the UIConfig after Init has been called.";else this.uiConfig_ = {bgcolor:b, color:c, font:e, fontsize:d} +}; +a.addParticipant = function() { + if(!this.init_)throw"Init not called.";gadgets.rpc.call(this.getFrameId(), "add_participant", null, "") +}; +a.addReply = function(b, c) { + if(!this.init_)throw"Init not called.";var e = WavePanel.pushCallback_(c); + gadgets.rpc.call(this.getFrameId(), "add_reply", null, e, b) +}; +a.provideContacts = function(b) { + if(!this.init_)throw"Init not called.";var c = []; + for(var e in b) { + var d = b[e]; + c.push(e); + c.push(d.firstName); + c.push(d.lastName); + c.push(d.photoUrl) + }c.unshift(c.length / 4); + gadgets.rpc.call(this.getFrameId(), "provide_contacts", null, c) +}; Modified: trunk/src/main/java/org/ourproject/kune/app/Kune.gwt.xml =================================================================== --- trunk/src/main/java/org/ourproject/kune/app/Kune.gwt.xml 2009-07-22 15:12:39 UTC (rev 1137) +++ trunk/src/main/java/org/ourproject/kune/app/Kune.gwt.xml 2009-07-22 20:31:08 UTC (rev 1138) @@ -56,4 +56,6 @@ <!-- <set-property name="user.agent" value="gecko" /> --> + <inherits name='com.google.gwt.wave.Wave' /> + </module> Modified: trunk/src/main/java/org/ourproject/kune/blogs/client/cnt/BlogViewerPresenter.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/blogs/client/cnt/BlogViewerPresenter.java 2009-07-22 15:12:39 UTC (rev 1137) +++ trunk/src/main/java/org/ourproject/kune/blogs/client/cnt/BlogViewerPresenter.java 2009-07-22 20:31:08 UTC (rev 1138) @@ -39,6 +39,7 @@ final ContentActionRegistry actionRegistry, final Provider<FileDownloadUtils> downloadProvider, final Provider<MediaUtils> mediaUtils) { super(BlogClientTool.NAME, stateManager, session, toolbar, actionRegistry, downloadProvider, i18n, mediaUtils); + setUploadType(BlogClientTool.TYPE_UPLOADEDFILE); } public void init(final BlogViewerView view) { @@ -48,7 +49,7 @@ @Override protected void setState(final StateContentDTO state) { super.setState(state); - super.setContent(state, BlogClientTool.TYPE_UPLOADEDFILE); + super.setContent(state); } } Modified: trunk/src/main/java/org/ourproject/kune/docs/client/DocumentClientActions.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/docs/client/DocumentClientActions.java 2009-07-22 15:12:39 UTC (rev 1137) +++ trunk/src/main/java/org/ourproject/kune/docs/client/DocumentClientActions.java 2009-07-22 20:31:08 UTC (rev 1138) @@ -23,6 +23,7 @@ import static org.ourproject.kune.docs.client.DocumentClientTool.TYPE_FOLDER; import static org.ourproject.kune.docs.client.DocumentClientTool.TYPE_ROOT; import static org.ourproject.kune.docs.client.DocumentClientTool.TYPE_UPLOADEDFILE; +import static org.ourproject.kune.docs.client.DocumentClientTool.TYPE_WAVE; import org.ourproject.kune.docs.client.cnt.DocumentViewer; import org.ourproject.kune.platf.client.i18n.I18nUITranslationService; @@ -80,6 +81,8 @@ createNewContentAction(TYPE_DOCUMENT, "images/nav/page_add.png", i18n.t("New document"), parentMenuTitleCtx, Position.ctx, TYPE_ROOT, TYPE_FOLDER); + createWaveAction(TYPE_WAVE, parentMenuTitleCtx, Position.ctx, TYPE_ROOT, TYPE_FOLDER); + createTranslateAction(parentMenuTitle, TYPE_DOCUMENT, TYPE_FOLDER); createContentRenameAction(parentMenuTitle, i18n.t("Rename"), contents); createEditAction(parentMenuTitle, TYPE_DOCUMENT); Modified: trunk/src/main/java/org/ourproject/kune/docs/client/DocumentClientTool.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/docs/client/DocumentClientTool.java 2009-07-22 15:12:39 UTC (rev 1137) +++ trunk/src/main/java/org/ourproject/kune/docs/client/DocumentClientTool.java 2009-07-22 20:31:08 UTC (rev 1138) @@ -32,6 +32,7 @@ public static final String TYPE_FOLDER = NAME + "." + "folder"; public static final String TYPE_DOCUMENT = NAME + "." + "doc"; public static final String TYPE_UPLOADEDFILE = NAME + "." + FoldableAbstractClientTool.UPLOADEDFILE_SUFFIX; + public static final String TYPE_WAVE = NAME + "." + FoldableAbstractClientTool.WAVE_SUFFIX; public DocumentClientTool(final I18nUITranslationService i18n, final ToolSelector toolSelector, final WsThemeManager wsThemePresenter, final WorkspaceSkeleton ws, Modified: trunk/src/main/java/org/ourproject/kune/docs/client/cnt/DocumentViewerPresenter.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/docs/client/cnt/DocumentViewerPresenter.java 2009-07-22 15:12:39 UTC (rev 1137) +++ trunk/src/main/java/org/ourproject/kune/docs/client/cnt/DocumentViewerPresenter.java 2009-07-22 20:31:08 UTC (rev 1138) @@ -40,6 +40,8 @@ final Provider<MediaUtils> mediaUtils) { super(DocumentClientTool.NAME, stateManager, session, toolbar, actionRegistry, downloadProvider, i18n, mediaUtils); + setUploadType(DocumentClientTool.TYPE_UPLOADEDFILE); + setWaveType(DocumentClientTool.TYPE_WAVE); } public void init(final DocumentViewerView view) { @@ -49,6 +51,6 @@ @Override protected void setState(final StateContentDTO state) { super.setState(state); - setContent(state, DocumentClientTool.TYPE_UPLOADEDFILE); + setContent(state); } } Modified: trunk/src/main/java/org/ourproject/kune/docs/server/DocumentServerTool.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/docs/server/DocumentServerTool.java 2009-07-22 15:12:39 UTC (rev 1137) +++ trunk/src/main/java/org/ourproject/kune/docs/server/DocumentServerTool.java 2009-07-22 20:31:08 UTC (rev 1138) @@ -45,6 +45,7 @@ public static final String TYPE_FOLDER = NAME + "." + "folder"; public static final String TYPE_DOCUMENT = NAME + "." + "doc"; public static final String TYPE_UPLOADEDFILE = NAME + "." + ServerTool.UPLOADEDFILE_SUFFIX; + public static final String TYPE_WAVE = NAME + "." + ServerTool.WAVE_SUFFIX; public static final String ROOT_NAME = "documents"; @@ -62,11 +63,11 @@ this.i18n = translationService; } - public void checkTypesBeforeContainerCreation(String parentTypeId, String typeId) { + public void checkTypesBeforeContainerCreation(final String parentTypeId, final String typeId) { checkContainerTypeId(parentTypeId, typeId); } - public void checkTypesBeforeContentCreation(String parentTypeId, String typeId) { + public void checkTypesBeforeContentCreation(final String parentTypeId, final String typeId) { checkContentTypeId(parentTypeId, typeId); } @@ -125,9 +126,10 @@ } void checkContentTypeId(final String parentTypeId, final String typeId) { - if (typeId.equals(TYPE_DOCUMENT) || typeId.equals(TYPE_UPLOADEDFILE)) { + if (typeId.equals(TYPE_DOCUMENT) || typeId.equals(TYPE_UPLOADEDFILE) || typeId.equals(TYPE_WAVE)) { // ok valid content if ((typeId.equals(TYPE_DOCUMENT) && (parentTypeId.equals(TYPE_ROOT) || parentTypeId.equals(TYPE_FOLDER))) + || (typeId.equals(TYPE_WAVE) && (parentTypeId.equals(TYPE_ROOT) || parentTypeId.equals(TYPE_FOLDER))) || (typeId.equals(TYPE_UPLOADEDFILE) && (parentTypeId.equals(TYPE_ROOT) || parentTypeId.equals(TYPE_FOLDER)))) { // ok } else { Modified: trunk/src/main/java/org/ourproject/kune/gallery/client/cnt/GalleryViewerPresenter.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/gallery/client/cnt/GalleryViewerPresenter.java 2009-07-22 15:12:39 UTC (rev 1137) +++ trunk/src/main/java/org/ourproject/kune/gallery/client/cnt/GalleryViewerPresenter.java 2009-07-22 20:31:08 UTC (rev 1138) @@ -40,6 +40,7 @@ final Provider<MediaUtils> mediaUtils) { super(GalleryClientTool.NAME, stateManager, session, toolbar, actionRegistry, downloadProvider, i18n, mediaUtils); + setUploadType(GalleryClientTool.TYPE_UPLOADEDFILE); } public void init(final GalleryViewerView view) { @@ -49,7 +50,7 @@ @Override protected void setState(final StateContentDTO state) { super.setState(state); - setContent(state, GalleryClientTool.TYPE_UPLOADEDFILE); + setContent(state); } } Modified: trunk/src/main/java/org/ourproject/kune/platf/client/rpc/ContentService.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/platf/client/rpc/ContentService.java 2009-07-22 15:12:39 UTC (rev 1137) +++ trunk/src/main/java/org/ourproject/kune/platf/client/rpc/ContentService.java 2009-07-22 20:31:08 UTC (rev 1138) @@ -51,6 +51,8 @@ StateContainerDTO addRoom(String user, StateToken parentToken, String name) throws DefaultException; + StateContentDTO addWave(String userHash, StateToken parentToken, String waveFileType, String waveId); + StateContentDTO delContent(String userHash, StateToken token) throws DefaultException; StateAbstractDTO getContent(String userHash, StateToken token) throws DefaultException; Modified: trunk/src/main/java/org/ourproject/kune/platf/client/rpc/ContentServiceAsync.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/platf/client/rpc/ContentServiceAsync.java 2009-07-22 15:12:39 UTC (rev 1137) +++ trunk/src/main/java/org/ourproject/kune/platf/client/rpc/ContentServiceAsync.java 2009-07-22 20:31:08 UTC (rev 1138) @@ -51,6 +51,9 @@ void addRoom(String user, StateToken parentToken, String name, AsyncCallback<StateContainerDTO> callback); + void addWave(String userHash, StateToken parentToken, String waveFileType, String waveId, + AsyncCallback<StateContentDTO> asyncCallbackSimple); + void delContent(String userHash, StateToken token, AsyncCallback<StateContentDTO> asyncCallback); void getContent(String user, StateToken newState, AsyncCallback<StateAbstractDTO> callback); Modified: trunk/src/main/java/org/ourproject/kune/platf/server/domain/Content.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/platf/server/domain/Content.java 2009-07-22 15:12:39 UTC (rev 1137) +++ trunk/src/main/java/org/ourproject/kune/platf/server/domain/Content.java 2009-07-22 20:31:08 UTC (rev 1138) @@ -95,6 +95,7 @@ @Basic(optional = true) private Date publishedOn; + // @NotNull?? private String typeId; @OneToMany(cascade = CascadeType.ALL) Modified: trunk/src/main/java/org/ourproject/kune/platf/server/rpc/ContentRPC.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/platf/server/rpc/ContentRPC.java 2009-07-22 15:12:39 UTC (rev 1137) +++ trunk/src/main/java/org/ourproject/kune/platf/server/rpc/ContentRPC.java 2009-07-22 20:31:08 UTC (rev 1138) @@ -98,7 +98,7 @@ private final FinderService finderService; @Inject - public ContentRPC(FinderService finderService, final Provider<UserSession> userSessionProvider, + public ContentRPC(final FinderService finderService, final Provider<UserSession> userSessionProvider, final AccessService accessService, final AccessRightsService rightsService, final StateService stateService, final CreationService creationService, final GroupManager groupManager, final XmppManager xmppManager, final ContentManager contentManager, @@ -156,11 +156,8 @@ @Transactional(type = TransactionType.READ_WRITE) public StateContentDTO addContent(final String userHash, final StateToken parentToken, final String title, final String typeId) throws DefaultException { - final User user = getCurrentUser(); - final Container container = accessService.accessToContainer(ContentUtils.parseId(parentToken.getFolder()), - user, AccessRol.Editor); - final Content addedContent = creationService.createContent(title, "", user, container, typeId); - return getState(user, addedContent); + final String body = ""; + return createContent(parentToken, title, typeId, body); } @Authenticated @@ -202,6 +199,14 @@ } @Authenticated + @Authorizated(actionLevel = ActionLevel.container, accessRolRequired = AccessRol.Editor, mustCheckMembership = false) + @Transactional(type = TransactionType.READ_WRITE) + public StateContentDTO addWave(final String userHash, final StateToken parentToken, final String typeId, + final String waveId) throws DefaultException { + return createContent(parentToken, "Wave embeded test", typeId, waveId); + } + + @Authenticated @Authorizated(accessRolRequired = AccessRol.Administrator) @Transactional(type = TransactionType.READ_WRITE) public StateContentDTO delContent(final String userHash, final StateToken token) throws DefaultException { @@ -263,7 +268,7 @@ final Long contentId = ContentUtils.parseId(token.getDocument()); if (isUserLoggedIn()) { - RateResult result = contentManager.rateContent(rater, contentId, value); + final RateResult result = contentManager.rateContent(rater, contentId, value); return mapper.map(result, RateResultDTO.class); } else { throw new AccessViolationException(); @@ -352,7 +357,7 @@ || status.equals(ContentStatusDTO.inTheDustbin)) { throw new AccessViolationException(); } - Content content = contentManager.setStatus(ContentUtils.parseId(token.getDocument()), + final Content content = contentManager.setStatus(ContentUtils.parseId(token.getDocument()), ContentStatus.valueOf(status.toString())); return getState(getCurrentUser(), content); } @@ -362,7 +367,7 @@ @Transactional(type = TransactionType.READ_WRITE) public StateAbstractDTO setStatusAsAdmin(final String userHash, final StateToken token, final ContentStatusDTO status) { - Content content = contentManager.setStatus(ContentUtils.parseId(token.getDocument()), + final Content content = contentManager.setStatus(ContentUtils.parseId(token.getDocument()), ContentStatus.valueOf(status.toString())); return getState(getCurrentUser(), content); } @@ -390,6 +395,15 @@ return mapper.map(comment, CommentDTO.class); } + private StateContentDTO createContent(final StateToken parentToken, final String title, final String typeId, + final String body) { + final User user = getCurrentUser(); + final Container container = accessService.accessToContainer(ContentUtils.parseId(parentToken.getFolder()), + user, AccessRol.Editor); + final Content addedContent = creationService.createContent(title, body, user, container, typeId); + return getState(user, addedContent); + } + private Container createFolder(final String groupShortName, final Long parentFolderId, final String title, final String typeId) throws DefaultException { final User user = getCurrentUser(); @@ -401,9 +415,9 @@ @Authenticated(mandatory = false) @Authorizated(accessRolRequired = AccessRol.Viewer) - private StateAbstractDTO getContentOrDefContent(String userHash, StateToken stateToken, final User user, - final Content content) { - Long id = content.getId(); + private StateAbstractDTO getContentOrDefContent(final String userHash, final StateToken stateToken, + final User user, final Content content) { + final Long id = content.getId(); if (id != null) { // Content return mapState(stateService.create(user, content), user); @@ -418,18 +432,18 @@ return getUserSession().getUser(); } - private StateContainerDTO getState(User user, Container container) { - StateContainer state = stateService.create(user, container); + private StateContainerDTO getState(final User user, final Container container) { + final StateContainer state = stateService.create(user, container); return mapState(state, user); } - private StateContentDTO getState(User user, Content content) { - StateContent state = stateService.create(user, content); + private StateContentDTO getState(final User user, final Content content) { + final StateContent state = stateService.create(user, content); return mapState(state, user); } private TagCloudResultDTO getSummaryTags(final Group group) { - TagCloudResult result = tagManager.getTagCloudResultByGroup(group); + final TagCloudResult result = tagManager.getTagCloudResultByGroup(group); return new TagCloudResultDTO(mapper.mapList(result.getTagCountList(), TagCountDTO.class), result.getMaxValue(), result.getMinValue()); } Modified: trunk/src/main/java/org/ourproject/kune/platf/server/tool/ServerTool.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/platf/server/tool/ServerTool.java 2009-07-22 15:12:39 UTC (rev 1137) +++ trunk/src/main/java/org/ourproject/kune/platf/server/tool/ServerTool.java 2009-07-22 20:31:08 UTC (rev 1138) @@ -34,6 +34,7 @@ /* Same constant in client */ public static final String UPLOADEDFILE_SUFFIX = "uploaded"; + public static final String WAVE_SUFFIX = "wave"; void checkTypesBeforeContainerCreation(String parentTypeId, String typeId); Modified: trunk/src/main/java/org/ourproject/kune/wiki/client/cnt/WikiViewerPresenter.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/wiki/client/cnt/WikiViewerPresenter.java 2009-07-22 15:12:39 UTC (rev 1137) +++ trunk/src/main/java/org/ourproject/kune/wiki/client/cnt/WikiViewerPresenter.java 2009-07-22 20:31:08 UTC (rev 1138) @@ -39,6 +39,7 @@ final ContentActionRegistry actionRegistry, final Provider<FileDownloadUtils> downloadProvider, final Provider<MediaUtils> mediaUtils) { super(WikiClientTool.NAME, stateManager, session, toolbar, actionRegistry, downloadProvider, i18n, mediaUtils); + setUploadType(WikiClientTool.UPLOADEDFILE_SUFFIX); } public void init(final WikiViewerView view) { @@ -48,6 +49,5 @@ @Override protected void setState(final StateContentDTO state) { super.setState(state); - setContent(state, WikiClientTool.TYPE_UPLOADEDFILE); } } Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/AbstractFoldableContentActions.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/workspace/client/AbstractFoldableContentActions.java 2009-07-22 15:12:39 UTC (rev 1137) +++ trunk/src/main/java/org/ourproject/kune/workspace/client/AbstractFoldableContentActions.java 2009-07-22 20:31:08 UTC (rev 1138) @@ -581,6 +581,28 @@ return uploadMedia; } + protected ActionToolbarMenuAndItemDescriptor<StateToken> createWaveAction(final String waveFileType, + final String parentMenuTitle, final Position position, final String... registerInTypes) { + final ActionToolbarMenuAndItemDescriptor<StateToken> addWave = new ActionToolbarMenuAndItemDescriptor<StateToken>( + AccessRolDTO.Editor, CONTEXT_TOPBAR, new Listener<StateToken>() { + public void onEvent(final StateToken parentToken) { + contentServiceProvider.get().addWave(session.getUserHash(), parentToken, waveFileType, + "wavesandbox.com!w+NdlzA9PU%B", new AsyncCallbackSimple<StateContentDTO>() { + public void onSuccess(final StateContentDTO state) { + stateManager.setRetrievedState(state); + } + }); + } + }); + addWave.setTextDescription(i18n.t("Add Wave")); + addWave.setParentMenuTitle(parentMenuTitle); + addWave.setMustBeAuthenticated(true); + addWave.setParentSubMenuTitle(i18n.t("New")); + // addContent.setIconUrl(iconUrl); + register(addWave, position, registerInTypes); + return addWave; + } + protected void downloadContent(final StateToken token) { fileDownloadProvider.get().downloadFile(token); } Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/cnt/AbstractContentView.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/workspace/client/cnt/AbstractContentView.java 2009-07-22 15:12:39 UTC (rev 1137) +++ trunk/src/main/java/org/ourproject/kune/workspace/client/cnt/AbstractContentView.java 2009-07-22 20:31:08 UTC (rev 1138) @@ -19,12 +19,15 @@ */ package org.ourproject.kune.workspace.client.cnt; +import com.calclab.suco.client.events.Listener0; import com.google.gwt.user.client.ui.Widget; public interface AbstractContentView { public void setRawContent(final String content); + public void setWave(String waveId, Listener0 onLoaded); + void attach(); void detach(); Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/cnt/FoldableContentPanel.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/workspace/client/cnt/FoldableContentPanel.java 2009-07-22 15:12:39 UTC (rev 1137) +++ trunk/src/main/java/org/ourproject/kune/workspace/client/cnt/FoldableContentPanel.java 2009-07-22 20:31:08 UTC (rev 1138) @@ -26,6 +26,8 @@ import org.ourproject.kune.platf.client.ui.RoundedPanel; import org.ourproject.kune.workspace.client.skel.WorkspaceSkeleton; +import com.allen_sauer.gwt.log.client.Log; +import com.calclab.suco.client.events.Listener0; import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.event.dom.client.ClickHandler; import com.google.gwt.user.client.ui.HTML; @@ -33,6 +35,9 @@ import com.google.gwt.user.client.ui.Label; import com.google.gwt.user.client.ui.VerticalPanel; import com.google.gwt.user.client.ui.Widget; +import com.google.gwt.wave.client.WaveWidget; +import com.google.gwt.wave.client.event.WaveLoadEvent; +import com.google.gwt.wave.client.event.WaveLoadHandler; public abstract class FoldableContentPanel extends AbstractContentPanel implements AbstractContentView { @@ -86,6 +91,20 @@ setContent(html); } + public void setWave(final String waveId, final Listener0 onLoaded) { + final WaveWidget waveWidget = new WaveWidget("http://wave.google.com/a/wavesandbox.com/"); + waveWidget.setUIConfig("white", "black", "arial, sans", "10pt"); + waveWidget.setHeight("100%"); + waveWidget.addWaveLoadHandler(new WaveLoadHandler() { + public void onWaveLoad(final WaveLoadEvent event) { + Log.info("Wave '" + event.getWaveId() + "' loaded!"); + onLoaded.onEvent(); + } + }); + waveWidget.loadWave(waveId); + setContent(waveWidget); + } + public void setWidgetAsContent(final Widget widget, final boolean setDefMargins) { if (setDefMargins) { widget.addStyleName(DEF_CONTENT_MARGINS_STYLE); Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/cnt/FoldableContentPresenter.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/workspace/client/cnt/FoldableContentPresenter.java 2009-07-22 15:12:39 UTC (rev 1137) +++ trunk/src/main/java/org/ourproject/kune/workspace/client/cnt/FoldableContentPresenter.java 2009-07-22 20:31:08 UTC (rev 1138) @@ -32,10 +32,12 @@ import org.ourproject.kune.platf.client.state.StateManager; import org.ourproject.kune.platf.client.ui.download.FileDownloadUtils; import org.ourproject.kune.platf.client.ui.download.ImageSize; +import org.ourproject.kune.platf.client.ui.noti.NotifyUser; import org.ourproject.kune.platf.client.ui.rte.insertmedia.abstractmedia.MediaUtils; import org.ourproject.kune.workspace.client.AbstractFoldableContentActions; import com.calclab.suco.client.events.Listener; +import com.calclab.suco.client.events.Listener0; import com.calclab.suco.client.ioc.Provider; public abstract class FoldableContentPresenter extends AbstractContentPresenter implements FoldableContent { @@ -47,6 +49,9 @@ private final Provider<FileDownloadUtils> downloadProvider; private final I18nTranslationService i18n; private final Provider<MediaUtils> mediaUtils; + private String uploadType; + private String waveType; + private final Listener0 onWaveLoaded; public FoldableContentPresenter(final String toolName, final StateManager stateManager, final Session session, final ActionContentToolbar toolbar, final ActionRegistry<StateToken> actionRegistry, @@ -64,56 +69,46 @@ setState(state); } }); + onWaveLoaded = new Listener0() { + public void onEvent() { + NotifyUser.hideProgress(); + NotifyUser.info("Wave loaded"); + } + }; } public String getToolName() { return toolName; } + public String getUploadType() { + return uploadType; + } + + public String getWaveType() { + return waveType; + } + public void refreshState() { setState(session.getContentState()); } - protected void setContent(final StateContentDTO state, final String uploadedfileType) { - String typeId = state.getTypeId(); - String contentBody = state.getContent(); - StateToken token = state.getStateToken(); - BasicMimeTypeDTO mimeType = state.getMimeType(); - if (typeId.equals(uploadedfileType)) { - if (mimeType != null) { - FileDownloadUtils fileDownloadUtils = downloadProvider.get(); - if (mimeType.isImage()) { - view.showImage(fileDownloadUtils.getImageUrl(token), fileDownloadUtils.getImageResizedUrl(token, - ImageSize.sized), false); - } else if (mimeType.isPdf()) { - view.showImage(fileDownloadUtils.getImageUrl(token), fileDownloadUtils.getImageResizedUrl(token, - ImageSize.sized), true); - } else if (mimeType.isMp3()) { - view.setRawContent(mediaUtils.get().getMp3Embed(token)); - } else if (mimeType.isOgg()) { - view.setRawContent(mediaUtils.get().getOggEmbed(token)); - } else if (mimeType.isFlv()) { - view.setRawContent(mediaUtils.get().getFlvEmbed(token)); - } else if (mimeType.isAvi()) { - view.setRawContent(mediaUtils.get().getAviEmbed(token)); - } else if (mimeType.isText()) { - view.setContent(contentBody, true); - } else { - view.setNoPreview(); - } - } else { - view.setNoPreview(); - } + public void setUploadType(final String uploadType) { + this.uploadType = uploadType; + } + + public void setWaveType(final String waveType) { + this.waveType = waveType; + } + + protected void setContent(final StateContentDTO state) { + final String typeId = state.getTypeId(); + if (typeId.equals(getUploadType())) { + setUploadedContent(state); + } else if (typeId.equals(getWaveType())) { + setWaveContent(state); } else { - if ((contentBody == null || contentBody.length() == 0)) { - if (state.getContentRights().isEditable()) { - view.setInfoMessage(i18n.t("There is no text in this page. Feel free to edit this page")); - } else { - view.setInfoMessage(i18n.t("There is no text in this page")); - } - } else { - view.setRawContent(contentBody); - } + setNormalContent(state); } view.attach(); } @@ -121,7 +116,7 @@ protected void setState(final StateAbstractDTO state) { toolbar.detach(); if (state instanceof StateContainerDTO) { - StateContainerDTO stateCntCtx = (StateContainerDTO) state; + final StateContainerDTO stateCntCtx = (StateContainerDTO) state; if (stateCntCtx.getToolName().equals(toolName)) { // This tool if (stateCntCtx instanceof StateContentDTO) { @@ -134,13 +129,13 @@ } protected void setState(final StateContainerDTO state) { - ActionItemCollection<StateToken> collection = getActionCollection(state, state.getContainerRights()); + final ActionItemCollection<StateToken> collection = getActionCollection(state, state.getContainerRights()); setToolbar(collection); attach(); } protected void setState(final StateContentDTO state) { - ActionItemCollection<StateToken> collection = getActionCollection(state, state.getContentRights()); + final ActionItemCollection<StateToken> collection = getActionCollection(state, state.getContentRights()); setToolbar(collection); } @@ -150,11 +145,63 @@ true); } + private String getContentBody(final StateContentDTO state) { + final String contentBody = state.getContent(); + return contentBody; + } + + private void setNormalContent(final StateContentDTO state) { + final String contentBody = getContentBody(state); + if ((contentBody == null || contentBody.length() == 0)) { + if (state.getContentRights().isEditable()) { + view.setInfoMessage(i18n.t("There is no text in this page. Feel free to edit this page")); + } else { + view.setInfoMessage(i18n.t("There is no text in this page")); + } + } else { + view.setRawContent(contentBody); + } + } + private void setToolbar(final ActionItemCollection<StateToken> collection) { toolbar.disableMenusAndClearButtons(); toolbar.addActions(collection, AbstractFoldableContentActions.CONTENT_TOPBAR); - ; toolbar.attach(); } + private void setUploadedContent(final StateContentDTO state) { + final String contentBody = state.getContent(); + final StateToken token = state.getStateToken(); + final BasicMimeTypeDTO mimeType = state.getMimeType(); + if (mimeType != null) { + final FileDownloadUtils fileDownloadUtils = downloadProvider.get(); + if (mimeType.isImage()) { + view.showImage(fileDownloadUtils.getImageUrl(token), fileDownloadUtils.getImageResizedUrl(token, + ImageSize.sized), false); + } else if (mimeType.isPdf()) { + view.showImage(fileDownloadUtils.getImageUrl(token), fileDownloadUtils.getImageResizedUrl(token, + ImageSize.sized), true); + } else if (mimeType.isMp3()) { + view.setRawContent(mediaUtils.get().getMp3Embed(token)); + } else if (mimeType.isOgg()) { + view.setRawContent(mediaUtils.get().getOggEmbed(token)); + } else if (mimeType.isFlv()) { + view.setRawContent(mediaUtils.get().getFlvEmbed(token)); + } else if (mimeType.isAvi()) { + view.setRawContent(mediaUtils.get().getAviEmbed(token)); + } else if (mimeType.isText()) { + view.setContent(contentBody, true); + } else { + view.setNoPreview(); + } + } else { + view.setNoPreview(); + } + } + + private void setWaveContent(final StateContentDTO state) { + NotifyUser.showProgressLoading(); + final String waveId = getContentBody(state); + view.setWave(waveId, onWaveLoaded); + } } Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/skel/EntityWorkspace.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/workspace/client/skel/EntityWorkspace.java 2009-07-22 15:12:39 UTC (rev 1137) +++ trunk/src/main/java/org/ourproject/kune/workspace/client/skel/EntityWorkspace.java 2009-07-22 20:31:08 UTC (rev 1138) @@ -61,8 +61,9 @@ mainFitPanel = new Panel(); mainFitPanel.setLayout(new FitLayout()); mainFitPanel.setBorder(false); + mainFitPanel.setAutoScroll(false); - Panel mainAnchorLayout = new Panel(); + final Panel mainAnchorLayout = new Panel(); mainAnchorLayout.setLayout(new AnchorLayout()); mainAnchorLayout.setBorder(false); @@ -133,7 +134,7 @@ contentWrap.add(contentBottomBar.getPanel(), new BorderLayoutData(RegionPosition.SOUTH)); contextWrap.add(contextBottomBar.getPanel(), new BorderLayoutData(RegionPosition.SOUTH)); - BorderLayoutData eastData = new BorderLayoutData(RegionPosition.EAST); + final BorderLayoutData eastData = new BorderLayoutData(RegionPosition.EAST); contextWrap.setWidth(175); eastData.setUseSplitTips(true); eastData.setCollapseModeMini(true); Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/tool/FoldableAbstractClientTool.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/workspace/client/tool/FoldableAbstractClientTool.java 2009-07-22 15:12:39 UTC (rev 1137) +++ trunk/src/main/java/org/ourproject/kune/workspace/client/tool/FoldableAbstractClientTool.java 2009-07-22 20:31:08 UTC (rev 1138) @@ -26,6 +26,7 @@ public abstract class FoldableAbstractClientTool extends AbstractClientTool { public static final String UPLOADEDFILE_SUFFIX = "uploaded"; + public static final String WAVE_SUFFIX = "wave"; protected final ContentCapabilitiesRegistry contentCapabilitiesRegistry; Modified: trunk/src/test/java/org/ourproject/kune/platf/integration/IntegrationTestHelper.java =================================================================== --- trunk/src/test/java/org/ourproject/kune/platf/integration/IntegrationTestHelper.java 2009-07-22 15:12:39 UTC (rev 1137) +++ trunk/src/test/java/org/ourproject/kune/platf/integration/IntegrationTestHelper.java 2009-07-22 20:31:08 UTC (rev 1138) @@ -28,7 +28,7 @@ // memory // test_db: use // mysql - bindConstant().annotatedWith(JpaUnit.class).to("test"); + bindConstant().annotatedWith(JpaUnit.class).to("test_db"); bindConstant().annotatedWith(PropertiesFileName.class).to("kune.properties"); bind(HttpServletRequest.class).to(HttpServletRequestMocked.class); }
participants (1)
-
vjrj