r1402 - in trunk: . src/main/java/cc/kune/client src/main/java/cc/kune/core src/main/java/cc/kune/core/client src/main/java/cc/kune/core/client/actions src/main/webapp/others
Author: vjrj_ Date: 2011-06-10 05:11:49 +0200 (Fri, 10 Jun 2011) New Revision: 1402 Added: trunk/src/main/java/cc/kune/core/client/actions/WaveExtension.java trunk/src/main/java/cc/kune/core/client/actions/XMLActionsParser.java Modified: trunk/TODO trunk/src/main/java/cc/kune/client/KuneGinjector.java trunk/src/main/java/cc/kune/client/OnAppStartFactory.java trunk/src/main/java/cc/kune/core/KuneCore.gwt.xml trunk/src/main/java/cc/kune/core/client/CoreGinModule.java trunk/src/main/webapp/others/kune-wave-extensions.xml Log: extensions via xml Modified: trunk/TODO =================================================================== --- trunk/TODO 2011-06-09 21:04:18 UTC (rev 1401) +++ trunk/TODO 2011-06-10 03:11:49 UTC (rev 1402) @@ -371,6 +371,8 @@ ** vjrj <v> IconHyperlink.java and IconLabel.java to gwt1.5 * MID-TERM +** Archive of xmpp conversations +*** http://community.igniterealtime.org/docs/DOC-1094 (for openfire) ** Enable two Waves per doc: 1 for the doc (no comments enabled), other for comments. Similar to docs.google.com comments approach. ** TODO start/stop init scripts https://groups.google.com/group/wave-protocol/browse_thread/thread/d9cdcea0d... Modified: trunk/src/main/java/cc/kune/client/KuneGinjector.java =================================================================== --- trunk/src/main/java/cc/kune/client/KuneGinjector.java 2011-06-09 21:04:18 UTC (rev 1401) +++ trunk/src/main/java/cc/kune/client/KuneGinjector.java 2011-06-10 03:11:49 UTC (rev 1402) @@ -32,6 +32,7 @@ import cc.kune.common.client.shortcuts.GlobalShortcutRegister; import cc.kune.core.client.CoreGinModule; import cc.kune.core.client.CoreParts; +import cc.kune.core.client.actions.XMLActionsParser; import cc.kune.core.client.auth.RegisterPresenter; import cc.kune.core.client.auth.SignInPresenter; import cc.kune.core.client.cookies.CookiesManager; @@ -144,4 +145,6 @@ AsyncProvider<UserNotifierPresenter> getUserNotifierPresenter(); WaveParts getWaveParts(); + + XMLActionsParser getXmlActionsParser(); } Modified: trunk/src/main/java/cc/kune/client/OnAppStartFactory.java =================================================================== --- trunk/src/main/java/cc/kune/client/OnAppStartFactory.java 2011-06-09 21:04:18 UTC (rev 1401) +++ trunk/src/main/java/cc/kune/client/OnAppStartFactory.java 2011-06-10 03:11:49 UTC (rev 1402) @@ -19,15 +19,10 @@ */ package cc.kune.client; -import cc.kune.barters.client.BartersClientTool; -import cc.kune.blogs.client.BlogsClientTool; -import cc.kune.chat.client.ChatClientTool; +import cc.kune.core.client.actions.XMLActionsParser; import cc.kune.core.client.init.AppStartEvent; import cc.kune.core.client.init.AppStartEvent.AppStartHandler; import cc.kune.core.client.state.Session; -import cc.kune.docs.client.DocsClientTool; -import cc.kune.meets.client.MeetingsClientTool; -import cc.kune.wiki.client.WikiClientTool; import com.google.inject.Inject; import com.google.inject.Provider; @@ -35,14 +30,18 @@ public class OnAppStartFactory { @Inject - public OnAppStartFactory(final Session session, final Provider<DocsClientTool> docsClientTool, - final Provider<BlogsClientTool> blogsClientTool, - final Provider<BartersClientTool> bartersClientTool, - final Provider<MeetingsClientTool> meetsClientTool, - final Provider<ChatClientTool> chatsClientTool, final Provider<WikiClientTool> wikiClientTool) { + public OnAppStartFactory(final Session session, + // final Provider<DocsClientTool> docsClientTool, + // final Provider<BlogsClientTool> blogsClientTool, + // final Provider<BartersClientTool> bartersClientTool, + // final Provider<MeetingsClientTool> meetsClientTool, + // final Provider<ChatClientTool> chatsClientTool, final + // Provider<WikiClientTool> wikiClientTool, + final Provider<XMLActionsParser> actionsParser) { session.onAppStart(true, new AppStartHandler() { @Override public void onAppStart(final AppStartEvent event) { + actionsParser.get(); } }); } Modified: trunk/src/main/java/cc/kune/core/KuneCore.gwt.xml =================================================================== --- trunk/src/main/java/cc/kune/core/KuneCore.gwt.xml 2011-06-09 21:04:18 UTC (rev 1401) +++ trunk/src/main/java/cc/kune/core/KuneCore.gwt.xml 2011-06-10 03:11:49 UTC (rev 1402) @@ -10,6 +10,7 @@ <public path="public" /> <!-- Dependencies ============================================= --> <inherits name="com.google.gwt.user.User" /> + <inherits name="com.google.gwt.xml.XML" /> <inherits name="cc.kune.gspace.GSpace" /> <inherits name="cc.kune.msgs.KuneMsgs" /> <inherits name="cc.kune.common.KuneCommon" /> Modified: trunk/src/main/java/cc/kune/core/client/CoreGinModule.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/CoreGinModule.java 2011-06-09 21:04:18 UTC (rev 1401) +++ trunk/src/main/java/cc/kune/core/client/CoreGinModule.java 2011-06-10 03:11:49 UTC (rev 1402) @@ -30,6 +30,7 @@ import cc.kune.common.client.ui.MaskWidget; import cc.kune.common.client.ui.MaskWidgetView; import cc.kune.core.client.actions.ActionRegistryByType; +import cc.kune.core.client.actions.XMLActionsParser; import cc.kune.core.client.auth.Register; import cc.kune.core.client.auth.RegisterPanel; import cc.kune.core.client.auth.RegisterPresenter; @@ -115,101 +116,103 @@ public class CoreGinModule extends ExtendedGinModule { - /* - * (non-Javadoc) - * - * @see com.google.gwt.inject.client.AbstractGinModule#configure() - */ - @Override - protected void configure() { - bind(EventBus.class).to(EventBusWithLogging.class).in(Singleton.class); - bind(TokenFormatter.class).to(ParameterTokenFormatter.class).in(Singleton.class); - bind(RootPresenter.class).asEagerSingleton(); - bind(ProxyFailureHandler.class).to(DefaultProxyFailureHandler.class).in(Singleton.class); - s(I18nUITranslationService.class); - bind(I18nTranslationService.class).to(I18nUITranslationService.class).in(Singleton.class); - bind(GlobalShortcutRegister.class).to(DefaultGlobalShortcutRegister.class).in(Singleton.class); + /* + * (non-Javadoc) + * + * @see com.google.gwt.inject.client.AbstractGinModule#configure() + */ + @Override + protected void configure() { + bind(EventBus.class).to(EventBusWithLogging.class).in(Singleton.class); + bind(TokenFormatter.class).to(ParameterTokenFormatter.class).in(Singleton.class); + bind(RootPresenter.class).asEagerSingleton(); + bind(ProxyFailureHandler.class).to(DefaultProxyFailureHandler.class).in(Singleton.class); + s(I18nUITranslationService.class); + bind(I18nTranslationService.class).to(I18nUITranslationService.class).in(Singleton.class); + bind(GlobalShortcutRegister.class).to(DefaultGlobalShortcutRegister.class).in(Singleton.class); - // Presenters - bindPresenter(CorePresenter.class, CorePresenter.CoreView.class, CoreViewImpl.class, - CorePresenter.CoreProxy.class); - bindPresenter(SpinerPresenter.class, SpinerPresenter.SpinerView.class, SpinerViewImpl.class, - SpinerPresenter.SpinerProxy.class); - bindPresenter(UserNotifierPresenter.class, UserNotifierPresenter.UserNotifierView.class, - UserNotifierViewImpl.class, UserNotifierProxy.class); - bindPresenter(SpaceSelectorPresenter.class, SpaceSelectorPresenter.SpaceSelectorView.class, - SpaceSelectorViewImpl.class, SpaceSelectorPresenter.SpaceSelectorProxy.class); - bindPresenter(SiteLogoPresenter.class, SiteLogoPresenter.SiteLogoView.class, SiteLogoViewImpl.class, - SiteLogoPresenter.SiteLogoProxy.class); - bindPresenter(SitebarActionsPresenter.class, SitebarActionsPresenter.SitebarActionsView.class, - SitebarActionsPanel.class, SitebarActionsPresenter.SitebarActionsProxy.class); - bind(SitebarActions.class).to(SitebarActionsPresenter.class).in(Singleton.class); - bindPresenter(NewGroupPresenter.class, NewGroupView.class, NewGroupPanel.class, - NewGroupPresenter.NewGroupProxy.class); - bindPresenter(GroupSNPresenter.class, GroupSNPresenter.GroupSNView.class, GroupSNPanel.class, - GroupSNPresenter.GroupSNProxy.class); - bindPresenter(UserSNPresenter.class, UserSNPresenter.UserSNView.class, UserSNPanel.class, - UserSNPresenter.UserSNProxy.class); - bindPresenter(EntityHeaderPresenter.class, EntityHeaderPresenter.EntityHeaderView.class, - EntityHeaderPanel.class, EntityHeaderPresenter.EntityHeaderProxy.class); - bindPresenter(SignInPresenter.class, SignInView.class, SignInPanel.class, SignInPresenter.SignInProxy.class); - bindPresenter(RegisterPresenter.class, RegisterView.class, RegisterPanel.class, - RegisterPresenter.RegisterProxy.class); - bindPresenter(UserConfirmPresenter.class, UserConfirmPresenter.UserConfirmView.class, UserConfirmPanel.class, - UserConfirmPresenter.UserConfirmProxy.class); + // Presenters + bindPresenter(CorePresenter.class, CorePresenter.CoreView.class, CoreViewImpl.class, + CorePresenter.CoreProxy.class); + bindPresenter(SpinerPresenter.class, SpinerPresenter.SpinerView.class, SpinerViewImpl.class, + SpinerPresenter.SpinerProxy.class); + bindPresenter(UserNotifierPresenter.class, UserNotifierPresenter.UserNotifierView.class, + UserNotifierViewImpl.class, UserNotifierProxy.class); + bindPresenter(SpaceSelectorPresenter.class, SpaceSelectorPresenter.SpaceSelectorView.class, + SpaceSelectorViewImpl.class, SpaceSelectorPresenter.SpaceSelectorProxy.class); + bindPresenter(SiteLogoPresenter.class, SiteLogoPresenter.SiteLogoView.class, SiteLogoViewImpl.class, + SiteLogoPresenter.SiteLogoProxy.class); + bindPresenter(SitebarActionsPresenter.class, SitebarActionsPresenter.SitebarActionsView.class, + SitebarActionsPanel.class, SitebarActionsPresenter.SitebarActionsProxy.class); + bind(SitebarActions.class).to(SitebarActionsPresenter.class).in(Singleton.class); + bindPresenter(NewGroupPresenter.class, NewGroupView.class, NewGroupPanel.class, + NewGroupPresenter.NewGroupProxy.class); + bindPresenter(GroupSNPresenter.class, GroupSNPresenter.GroupSNView.class, GroupSNPanel.class, + GroupSNPresenter.GroupSNProxy.class); + bindPresenter(UserSNPresenter.class, UserSNPresenter.UserSNView.class, UserSNPanel.class, + UserSNPresenter.UserSNProxy.class); + bindPresenter(EntityHeaderPresenter.class, EntityHeaderPresenter.EntityHeaderView.class, + EntityHeaderPanel.class, EntityHeaderPresenter.EntityHeaderProxy.class); + bindPresenter(SignInPresenter.class, SignInView.class, SignInPanel.class, + SignInPresenter.SignInProxy.class); + bindPresenter(RegisterPresenter.class, RegisterView.class, RegisterPanel.class, + RegisterPresenter.RegisterProxy.class); + bindPresenter(UserConfirmPresenter.class, UserConfirmPresenter.UserConfirmView.class, + UserConfirmPanel.class, UserConfirmPresenter.UserConfirmProxy.class); - bind(UserPassAutocompleteManager.class).to(UserPassAutocompleteManagerImpl.class).in(Singleton.class); - bind(SignIn.class).to(SignInPresenter.class).in(Singleton.class); - bind(Register.class).to(RegisterPresenter.class).in(Singleton.class); - bind(NewGroup.class).to(NewGroupPresenter.class).in(Singleton.class); - bind(EntityHeader.class).to(EntityHeaderPresenter.class).in(Singleton.class); + bind(UserPassAutocompleteManager.class).to(UserPassAutocompleteManagerImpl.class).in(Singleton.class); + bind(SignIn.class).to(SignInPresenter.class).in(Singleton.class); + bind(Register.class).to(RegisterPresenter.class).in(Singleton.class); + bind(NewGroup.class).to(NewGroupPresenter.class).in(Singleton.class); + bind(EntityHeader.class).to(EntityHeaderPresenter.class).in(Singleton.class); - s(UserMessagesPresenter.class); - s(UserMessagesPanel.class); - // bind(MessagePanelView.class).to(MessagePanel.class); + s(UserMessagesPresenter.class); + s(UserMessagesPanel.class); + // bind(MessagePanelView.class).to(MessagePanel.class); - // UI - bind(GuiProvider.class).to(DefaultGuiProvider.class).in(Singleton.class); - s(GxtGuiProvider.class); - s(GwtGuiProvider.class); + // UI + bind(GuiProvider.class).to(DefaultGuiProvider.class).in(Singleton.class); + s(GxtGuiProvider.class); + s(GwtGuiProvider.class); - bind(MaskWidgetView.class).to(MaskWidget.class).in(Singleton.class); + bind(MaskWidgetView.class).to(MaskWidget.class).in(Singleton.class); - // Core App - bind(Session.class).to(SessionDefault.class).in(Singleton.class); - s(ErrorHandler.class); - s(StateManagerDefault.class); - bind(StateManager.class).to(StateManagerDefault.class).in(Singleton.class); - s(AccessRightsClientManager.class); - bind(ContentCache.class).to(ContentCacheDefault.class).in(Singleton.class); - bind(HistoryWrapper.class).to(HistoryWrapperDefault.class).in(Singleton.class); - s(PrefetchUtilities.class); - bind(AppStarter.class).to(AppStarterDefault.class).in(Singleton.class); - bind(CookiesManager.class).to(CookiesManagerImpl.class).in(Singleton.class); - s(BeforeSignOut.class); - eagle(SiteTokenListeners.class); - s(SiteTokens.class); - s(ReservedWordsRegistry.class); - eagle(TokenMatcher.class); - s(ActionRegistryByType.class); - s(ContentCapabilitiesRegistry.class); - eagle(CoreParts.class); + // Core App + bind(Session.class).to(SessionDefault.class).in(Singleton.class); + s(ErrorHandler.class); + s(StateManagerDefault.class); + bind(StateManager.class).to(StateManagerDefault.class).in(Singleton.class); + s(AccessRightsClientManager.class); + bind(ContentCache.class).to(ContentCacheDefault.class).in(Singleton.class); + bind(HistoryWrapper.class).to(HistoryWrapperDefault.class).in(Singleton.class); + s(PrefetchUtilities.class); + bind(AppStarter.class).to(AppStarterDefault.class).in(Singleton.class); + bind(CookiesManager.class).to(CookiesManagerImpl.class).in(Singleton.class); + s(BeforeSignOut.class); + eagle(SiteTokenListeners.class); + s(SiteTokens.class); + s(ReservedWordsRegistry.class); + eagle(TokenMatcher.class); + s(ActionRegistryByType.class); + s(ContentCapabilitiesRegistry.class); + eagle(CoreParts.class); - // SN - s(GroupSNAdminsMenuItemsRegistry.class); - s(GroupSNCollabsMenuItemsRegistry.class); - s(GroupSNPendingsMenuItemsRegistry.class); - s(UserSNMenuItemsRegistry.class); - s(GroupSNConfActions.class); - s(UserSNConfActions.class); + // SN + s(GroupSNAdminsMenuItemsRegistry.class); + s(GroupSNCollabsMenuItemsRegistry.class); + s(GroupSNPendingsMenuItemsRegistry.class); + s(UserSNMenuItemsRegistry.class); + s(GroupSNConfActions.class); + s(UserSNConfActions.class); - s(SiteUserOptionsPresenter.class); - s(SiteUserOptions.class, SiteUserOptionsPresenter.class); - s(SitebarNewGroupLink.class); - s(SitebarSignInLink.class); - s(SitebarSignOutLink.class); + s(SiteUserOptionsPresenter.class); + s(SiteUserOptions.class, SiteUserOptionsPresenter.class); + s(SitebarNewGroupLink.class); + s(SitebarSignInLink.class); + s(SitebarSignOutLink.class); - s(ErrorsDialog.class); - } + s(ErrorsDialog.class); + eagle(XMLActionsParser.class); + } } Added: trunk/src/main/java/cc/kune/core/client/actions/WaveExtension.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/actions/WaveExtension.java (rev 0) +++ trunk/src/main/java/cc/kune/core/client/actions/WaveExtension.java 2011-06-10 03:11:49 UTC (rev 1402) @@ -0,0 +1,78 @@ +package cc.kune.core.client.actions; + +public class WaveExtension { + public static class Builder { + private String gadgetUrl; + private String iconCss; + private String iconUrl; + private String installerUrl; + private String name; + + public Builder() { + } + + public WaveExtension build() { + return new WaveExtension(this); + } + + public Builder gadgetUrl(final String gadgetUrl) { + this.gadgetUrl = gadgetUrl; + return this; + } + + public Builder iconCss(final String iconCss) { + this.iconCss = iconCss; + return this; + } + + public Builder iconUrl(final String iconUrl) { + this.iconUrl = iconUrl; + return this; + } + + public Builder installerUrl(final String installerUrl) { + this.installerUrl = installerUrl; + return this; + } + + public Builder name(final String name) { + this.name = name; + return this; + } + } + + private final String gadgetUrl; + private final String iconCss; + private final String iconUrl; + private final String installerUrl; + private final String name; + + public WaveExtension(final Builder builder) { + gadgetUrl = builder.gadgetUrl; + iconCss = builder.iconCss; + iconUrl = builder.iconUrl; + installerUrl = builder.installerUrl; + name = builder.name; + } + + public String getGadgetUrl() { + return gadgetUrl; + } + + public String getIconCss() { + return iconCss; + } + + public String getIconUrl() { + return iconUrl; + } + + public String getInstallerUrl() { + return installerUrl; + } + + public String getName() { + return name; + } + +} Property changes on: trunk/src/main/java/cc/kune/core/client/actions/WaveExtension.java ___________________________________________________________________ Name: svn:mime-type + text/plain Added: trunk/src/main/java/cc/kune/core/client/actions/XMLActionsParser.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/actions/XMLActionsParser.java (rev 0) +++ trunk/src/main/java/cc/kune/core/client/actions/XMLActionsParser.java 2011-06-10 03:11:49 UTC (rev 1402) @@ -0,0 +1,77 @@ +package cc.kune.core.client.actions; + +import java.util.HashMap; +import java.util.Map; + +import cc.kune.core.client.actions.WaveExtension.Builder; +import cc.kune.core.client.errors.ErrorHandler; + +import com.google.gwt.http.client.Request; +import com.google.gwt.http.client.RequestBuilder; +import com.google.gwt.http.client.RequestCallback; +import com.google.gwt.http.client.RequestException; +import com.google.gwt.http.client.Response; +import com.google.gwt.xml.client.Document; +import com.google.gwt.xml.client.Element; +import com.google.gwt.xml.client.Node; +import com.google.gwt.xml.client.NodeList; +import com.google.gwt.xml.client.XMLParser; +import com.google.inject.Inject; + +public class XMLActionsParser { + + private final ErrorHandler errHandler; + private final Map<String, WaveExtension> extensionsMap; + + @Inject + public XMLActionsParser(final ErrorHandler errHandler) { + this.errHandler = errHandler; + extensionsMap = new HashMap<String, WaveExtension>(); + + // Based on: + // http://www.roseindia.net/tutorials/gwt/retrieving-xml-data.shtml + final RequestBuilder requestBuilder = new RequestBuilder(RequestBuilder.GET, + "/others/kune-wave-extensions.xml"); + try { + requestBuilder.sendRequest(null, new RequestCallback() { + @Override + public void onError(final Request request, final Throwable ex) { + onFailed(ex); + } + + @Override + public void onResponseReceived(final Request request, final Response response) { + parseXML(response.getText()); + } + }); + } catch (final RequestException ex) { + onFailed(ex); + } + } + + private String get(final Element extension, final String id) { + final Node child = extension.getElementsByTagName(id).item(0).getFirstChild(); + return child != null ? child.getNodeValue() : ""; + } + + private void onFailed(final Throwable ex) { + errHandler.process(ex); + } + + private void parseXML(final String text) { + final Document parse = XMLParser.parse(text); + final NodeList extensions = parse.getElementsByTagName("extensions"); + for (int i = 0; i < extensions.getLength(); i++) { + final Element extension = (Element) extensions.item(i); + final Builder builder = new WaveExtension.Builder(); + final String name = get(extension, "name"); + builder.name(name); + builder.gadgetUrl(get(extension, "gadgetUrl")); + builder.iconUrl(get(extension, "iconUrl")); + builder.iconCss(get(extension, "iconCss")); + builder.installerUrl(get(extension, "installerUrl")); + extensionsMap.put(name, builder.build()); + } + + } +} Property changes on: trunk/src/main/java/cc/kune/core/client/actions/XMLActionsParser.java ___________________________________________________________________ Name: svn:mime-type + text/plain Modified: trunk/src/main/webapp/others/kune-wave-extensions.xml =================================================================== --- trunk/src/main/webapp/others/kune-wave-extensions.xml 2011-06-09 21:04:18 UTC (rev 1401) +++ trunk/src/main/webapp/others/kune-wave-extensions.xml 2011-06-10 03:11:49 UTC (rev 1402) @@ -1,4 +1,7 @@ +<?xml version="1.0" ?> +<kuneWaveExtensions> + <!-- List of Wave extensions to use in Kune ===================== --> <extensions> @@ -63,3 +66,5 @@ </guiActionDescriptor> </guiActionDescriptors> + +</kuneWaveExtensions> \ No newline at end of file
participants (1)
-
Vicente J. Ruiz Jurado