r1656 - in trunk: . src/main/java/cc/kune/chat/client src/main/java/cc/kune/chat/client/actions src/main/java/cc/kune/client src/main/java/cc/kune/core/client src/main/java/cc/kune/core/client/actions src/main/java/cc/kune/core/client/auth src/main/java/cc/kune/core/client/cnt src/main/java/cc/kune/core/client/contacts src/main/java/cc/kune/core/client/dnd src/main/java/cc/kune/core/client/events src/main/java/cc/kune/core/client/i18n src/main/java/cc/kune/core/client/init src/main/java/cc/ku
Author: vjrj_ Date: 2012-01-09 00:06:53 +0100 (Mon, 09 Jan 2012) New Revision: 1656 Added: trunk/src/main/java/cc/kune/core/client/actions/RolComparator.java trunk/src/main/java/cc/kune/core/client/contacts/ trunk/src/main/java/cc/kune/core/client/contacts/SimpleContactManager.java trunk/src/main/java/cc/kune/core/client/events/AccessRightsChangedEvent.java trunk/src/main/java/cc/kune/core/client/events/AppStartEvent.java trunk/src/main/java/cc/kune/core/client/events/AppStopEvent.java trunk/src/main/java/cc/kune/core/client/events/GroupChangedEvent.java trunk/src/main/java/cc/kune/core/client/events/SocialNetworkChangedEvent.java trunk/src/main/java/cc/kune/core/client/events/StateChangedEvent.java trunk/src/main/java/cc/kune/core/client/events/ToolChangedEvent.java trunk/src/main/java/cc/kune/core/client/events/UserSignInEvent.java trunk/src/main/java/cc/kune/core/client/events/UserSignInOrSignOutEvent.java trunk/src/main/java/cc/kune/core/client/events/UserSignOutEvent.java trunk/src/main/java/cc/kune/core/client/sn/actions/GroupSNModerationSubMenu.java trunk/src/main/java/cc/kune/core/client/sn/actions/GroupSNOptionsMenu.java trunk/src/main/java/cc/kune/core/client/sn/actions/GroupSNVisibilitySubMenu.java trunk/src/main/java/cc/kune/core/client/state/impl/ trunk/src/main/java/cc/kune/core/client/state/impl/ContentCacheDefault.java trunk/src/main/java/cc/kune/core/client/state/impl/HistoryWrapperDefault.java trunk/src/main/java/cc/kune/core/client/state/impl/SessionDefault.java trunk/src/main/java/cc/kune/core/client/state/impl/StateManagerDefault.java trunk/src/main/java/cc/kune/core/server/i18n/I18nTranslationServiceMultiLang.java trunk/src/main/java/cc/kune/core/server/i18n/impl/ trunk/src/main/java/cc/kune/core/server/i18n/impl/I18nTranslationServiceDefault.java trunk/src/main/java/cc/kune/core/server/manager/SearchResult.java trunk/src/main/java/cc/kune/core/server/manager/impl/TagUserContentManagerDefault.java trunk/src/main/java/cc/kune/core/server/rack/RackServletFilter.java trunk/src/main/java/cc/kune/core/server/rack/utils/ trunk/src/main/java/cc/kune/core/server/rack/utils/RackHelper.java trunk/src/main/java/cc/kune/gspace/client/armor/ trunk/src/main/java/cc/kune/gspace/client/armor/GSpaceArmor.java trunk/src/main/java/cc/kune/gspace/client/armor/impl/ trunk/src/main/java/cc/kune/gspace/client/armor/impl/GSpaceArmorImpl.java trunk/src/main/java/cc/kune/gspace/client/armor/impl/GSpaceArmorImpl.ui.xml trunk/src/main/java/cc/kune/gspace/client/armor/resources/ trunk/src/main/java/cc/kune/gspace/client/events/ trunk/src/main/java/cc/kune/gspace/client/events/CurrentEntityChangedEvent.java trunk/src/main/java/cc/kune/gspace/client/viewers/items/ trunk/src/main/java/cc/kune/gspace/client/viewers/items/FolderItemDescriptor.java trunk/src/main/java/cc/kune/gspace/client/viewers/items/FolderItemWidget.java trunk/src/main/java/cc/kune/gspace/client/viewers/items/FolderItemWidget.ui.xml trunk/src/main/java/cc/kune/wave/client/KuneStagesProvider.java.seg trunk/src/main/java/cc/kune/wave/client/WaveClientClearEvent.java trunk/src/main/java/cc/kune/wave/client/WaveStatusIndicator.java trunk/src/main/java/cc/kune/wave/client/resources/ trunk/src/main/java/cc/kune/wave/client/resources/KuneConversation.css trunk/src/main/java/cc/kune/wave/client/resources/KuneWaveResources.java trunk/src/main/java/cc/kune/wave/client/resources/toolbar_empty.png trunk/src/main/java/cc/kune/wave/server/kspecific/ trunk/src/main/java/cc/kune/wave/server/kspecific/KuneAgent.java trunk/src/main/java/cc/kune/wave/server/kspecific/KuneWaveService.java trunk/src/main/java/cc/kune/wave/server/kspecific/KuneWaveServiceDefault.java trunk/src/main/java/cc/kune/wave/server/kspecific/WaveEmailNotifier.java trunk/src/test/java/cc/kune/core/client/state/impl/ trunk/src/test/java/cc/kune/core/client/state/impl/EventBusTester.java trunk/src/test/java/cc/kune/core/client/state/impl/StateManagerDefaultTest.java trunk/src/test/java/cc/kune/core/client/state/impl/StateTokenTest.java trunk/src/test/java/cc/kune/core/client/state/impl/TokenMatcherTest.java Removed: trunk/src/main/java/cc/kune/core/client/init/AppStartEvent.java trunk/src/main/java/cc/kune/core/client/init/AppStopEvent.java trunk/src/main/java/cc/kune/core/client/sn/SimpleContactManager.java trunk/src/main/java/cc/kune/core/client/sn/actions/RolComparator.java trunk/src/main/java/cc/kune/core/client/state/AccessRightsChangedEvent.java trunk/src/main/java/cc/kune/core/client/state/ContentCacheDefault.java trunk/src/main/java/cc/kune/core/client/state/GroupChangedEvent.java trunk/src/main/java/cc/kune/core/client/state/HistoryWrapperDefault.java trunk/src/main/java/cc/kune/core/client/state/SessionDefault.java trunk/src/main/java/cc/kune/core/client/state/SocialNetworkChangedEvent.java trunk/src/main/java/cc/kune/core/client/state/StateChangedEvent.java trunk/src/main/java/cc/kune/core/client/state/StateManagerDefault.java trunk/src/main/java/cc/kune/core/client/state/ToolChangedEvent.java trunk/src/main/java/cc/kune/core/client/state/UserSignInEvent.java trunk/src/main/java/cc/kune/core/client/state/UserSignInOrSignOutEvent.java trunk/src/main/java/cc/kune/core/client/state/UserSignOutEvent.java trunk/src/main/java/cc/kune/core/server/i18n/I18nTranslationServiceDefault.java trunk/src/main/java/cc/kune/core/server/manager/TagUserContentManagerDefault.java trunk/src/main/java/cc/kune/core/server/manager/impl/SearchResult.java trunk/src/main/java/cc/kune/core/server/rack/RackHelper.java trunk/src/main/java/cc/kune/core/server/rack/RackServletFilter.java trunk/src/main/java/cc/kune/gspace/client/GSpaceArmor.java trunk/src/main/java/cc/kune/gspace/client/GSpaceArmorImpl.java trunk/src/main/java/cc/kune/gspace/client/GSpaceArmorImpl.ui.xml trunk/src/main/java/cc/kune/gspace/client/options/logo/CurrentEntityChangedEvent.java trunk/src/main/java/cc/kune/gspace/client/resources/ trunk/src/main/java/cc/kune/gspace/client/viewers/FolderItemDescriptor.java trunk/src/main/java/cc/kune/gspace/client/viewers/FolderItemWidget.java trunk/src/main/java/cc/kune/gspace/client/viewers/FolderItemWidget.ui.xml trunk/src/main/java/cc/kune/wave/client/KuneConversation.css trunk/src/main/java/cc/kune/wave/client/KuneWaveResources.java trunk/src/main/java/cc/kune/wave/client/WaveClientClearEvent.java trunk/src/main/java/cc/kune/wave/client/WaveStatusIndicator.java trunk/src/main/java/cc/kune/wave/client/toolbar_empty.png trunk/src/main/java/cc/kune/wave/server/KuneAgent.java trunk/src/main/java/cc/kune/wave/server/KuneWaveService.java trunk/src/main/java/cc/kune/wave/server/KuneWaveServiceDefault.java trunk/src/main/java/cc/kune/wave/server/WaveEmailNotifier.java trunk/src/test/java/cc/kune/core/client/state/EventBusTester.java trunk/src/test/java/cc/kune/core/client/state/StateManagerDefaultTest.java trunk/src/test/java/cc/kune/core/client/state/StateTokenTest.java trunk/src/test/java/cc/kune/core/client/state/TokenMatcherTest.java Modified: trunk/.classpath trunk/pom.xml trunk/src/main/java/cc/kune/chat/client/ChatClient.java trunk/src/main/java/cc/kune/chat/client/ChatClientDefault.java trunk/src/main/java/cc/kune/chat/client/ChatGinModule.java trunk/src/main/java/cc/kune/chat/client/ChatParts.java trunk/src/main/java/cc/kune/chat/client/actions/AddAsBuddieHeaderButton.java trunk/src/main/java/cc/kune/chat/client/actions/OpenGroupPublicChatRoomAction.java trunk/src/main/java/cc/kune/chat/client/actions/StartAssemblyWithMembers.java trunk/src/main/java/cc/kune/client/OnAppStartFactory.java trunk/src/main/java/cc/kune/core/client/CoreGinModule.java trunk/src/main/java/cc/kune/core/client/CoreParts.java trunk/src/main/java/cc/kune/core/client/actions/RolActionAutoUpdated.java trunk/src/main/java/cc/kune/core/client/auth/AnonUsersManager.java trunk/src/main/java/cc/kune/core/client/auth/WaveClientSimpleAuthenticator.java trunk/src/main/java/cc/kune/core/client/cnt/AbstractContentPanel.java trunk/src/main/java/cc/kune/core/client/cnt/ActionContentToolbarImpl.java trunk/src/main/java/cc/kune/core/client/cnt/FoldableContentPanel.java trunk/src/main/java/cc/kune/core/client/cnt/FoldableContentPresenter.java trunk/src/main/java/cc/kune/core/client/dnd/FolderViewerDropController.java trunk/src/main/java/cc/kune/core/client/dnd/KuneDragController.java trunk/src/main/java/cc/kune/core/client/dnd/NotImplementedDropManager.java trunk/src/main/java/cc/kune/core/client/i18n/I18nUITranslationService.java trunk/src/main/java/cc/kune/core/client/i18n/KuneConstants.properties trunk/src/main/java/cc/kune/core/client/i18n/KuneConstants_fr.properties trunk/src/main/java/cc/kune/core/client/init/AppStarterDefault.java trunk/src/main/java/cc/kune/core/client/sitebar/SiteUserOptionsPresenter.java trunk/src/main/java/cc/kune/core/client/sitebar/SitebarActionsPanel.java trunk/src/main/java/cc/kune/core/client/sitebar/SitebarActionsPresenter.java trunk/src/main/java/cc/kune/core/client/sitebar/SitebarSignInLink.java trunk/src/main/java/cc/kune/core/client/sitebar/SitebarSignOutLink.java trunk/src/main/java/cc/kune/core/client/sitebar/logo/SiteLogo.java trunk/src/main/java/cc/kune/core/client/sitebar/search/SitebarSearchPanel.java trunk/src/main/java/cc/kune/core/client/sitebar/spaces/SpaceSelectorPanel.java trunk/src/main/java/cc/kune/core/client/sitebar/spaces/SpaceSelectorPanel.ui.xml trunk/src/main/java/cc/kune/core/client/sitebar/spaces/SpaceSelectorPresenter.java trunk/src/main/java/cc/kune/core/client/sn/AbstractSNPanel.java trunk/src/main/java/cc/kune/core/client/sn/GroupSNPanel.java trunk/src/main/java/cc/kune/core/client/sn/GroupSNPresenter.java trunk/src/main/java/cc/kune/core/client/sn/UserSNPanel.java trunk/src/main/java/cc/kune/core/client/sn/UserSNPresenter.java trunk/src/main/java/cc/kune/core/client/sn/actions/AddNewBuddiesAction.java trunk/src/main/java/cc/kune/core/client/sn/actions/SessionAction.java trunk/src/main/java/cc/kune/core/client/sn/actions/WriteToAdmins.java trunk/src/main/java/cc/kune/core/client/sn/actions/WriteToBuddyHeaderButton.java trunk/src/main/java/cc/kune/core/client/sn/actions/WriteToMembers.java trunk/src/main/java/cc/kune/core/client/sn/actions/conditions/IsBuddieCondition.java trunk/src/main/java/cc/kune/core/client/sn/actions/conditions/IsNotBuddieCondition.java trunk/src/main/java/cc/kune/core/client/sn/actions/registry/GroupSNConfActions.java trunk/src/main/java/cc/kune/core/client/sn/actions/registry/UserSNConfActions.java trunk/src/main/java/cc/kune/core/client/state/AccessRightsClientManager.java trunk/src/main/java/cc/kune/core/client/state/Session.java trunk/src/main/java/cc/kune/core/client/state/StateManager.java trunk/src/main/java/cc/kune/core/client/ws/CoreViewImpl.java trunk/src/main/java/cc/kune/core/client/ws/entheader/EntityHeaderPanel.java trunk/src/main/java/cc/kune/core/client/ws/entheader/EntityHeaderPresenter.java trunk/src/main/java/cc/kune/core/server/PlatformServerModule.java trunk/src/main/java/cc/kune/core/server/content/ContainerManager.java trunk/src/main/java/cc/kune/core/server/content/ContainerManagerDefault.java trunk/src/main/java/cc/kune/core/server/content/ContentManager.java trunk/src/main/java/cc/kune/core/server/content/ContentManagerDefault.java trunk/src/main/java/cc/kune/core/server/content/CreationServiceDefault.java trunk/src/main/java/cc/kune/core/server/init/DatabaseInitializer.java trunk/src/main/java/cc/kune/core/server/manager/GroupManager.java trunk/src/main/java/cc/kune/core/server/manager/Manager.java trunk/src/main/java/cc/kune/core/server/manager/UserManager.java trunk/src/main/java/cc/kune/core/server/manager/impl/DefaultManager.java trunk/src/main/java/cc/kune/core/server/manager/impl/GroupManagerDefault.java trunk/src/main/java/cc/kune/core/server/manager/impl/KuneWaveManagerDefault.java trunk/src/main/java/cc/kune/core/server/manager/impl/UserManagerDefault.java trunk/src/main/java/cc/kune/core/server/mapper/DozerMapper.java trunk/src/main/java/cc/kune/core/server/mapper/Mapper.java trunk/src/main/java/cc/kune/core/server/notifier/NotifySenderDefault.java trunk/src/main/java/cc/kune/core/server/notifier/NotifyService.java trunk/src/main/java/cc/kune/core/server/rack/filters/AbstractInjectedFilter.java trunk/src/main/java/cc/kune/core/server/rack/filters/ForwardFilter.java trunk/src/main/java/cc/kune/core/server/rack/filters/LogFilter.java trunk/src/main/java/cc/kune/core/server/rack/filters/gwts/GWTServiceFilter.java trunk/src/main/java/cc/kune/core/server/rack/filters/rest/RESTServiceFilter.java trunk/src/main/java/cc/kune/core/server/rack/filters/servlet/ServletServiceFilter.java trunk/src/main/java/cc/kune/core/server/rest/ContentJSONService.java trunk/src/main/java/cc/kune/core/server/rest/GroupJSONService.java trunk/src/main/java/cc/kune/core/server/rest/UserJSONService.java trunk/src/main/java/cc/kune/core/server/state/StateServiceDefault.java trunk/src/main/java/cc/kune/events/client/viewer/CalendarViewerPanel.java trunk/src/main/java/cc/kune/gspace/client/GSpaceArmorEntryPoint.java trunk/src/main/java/cc/kune/gspace/client/GSpaceGinModule.java trunk/src/main/java/cc/kune/gspace/client/GSpaceParts.java trunk/src/main/java/cc/kune/gspace/client/actions/AbstractEditorsMenu.java trunk/src/main/java/cc/kune/gspace/client/actions/AbstractFoldableToolActions.java trunk/src/main/java/cc/kune/gspace/client/actions/GiveUsFeedbackBtn.java trunk/src/main/java/cc/kune/gspace/client/actions/GotoTokenAction.java trunk/src/main/java/cc/kune/gspace/client/armor/resources/GSpaceArmorResources.java trunk/src/main/java/cc/kune/gspace/client/options/GroupOptionsPresenter.java trunk/src/main/java/cc/kune/gspace/client/options/UserOptionsPresenter.java trunk/src/main/java/cc/kune/gspace/client/options/general/EntityOptGeneralPresenter.java trunk/src/main/java/cc/kune/gspace/client/options/general/GroupOptGeneralPresenter.java trunk/src/main/java/cc/kune/gspace/client/options/general/UserOptGeneralPresenter.java trunk/src/main/java/cc/kune/gspace/client/options/license/GroupOptDefLicensePresenter.java trunk/src/main/java/cc/kune/gspace/client/options/license/UserOptDefLicensePresenter.java trunk/src/main/java/cc/kune/gspace/client/options/logo/EntityOptLogoPresenter.java trunk/src/main/java/cc/kune/gspace/client/options/logo/GroupOptLogoPresenter.java trunk/src/main/java/cc/kune/gspace/client/options/logo/UserOptLogoPresenter.java trunk/src/main/java/cc/kune/gspace/client/options/style/EntityOptStylePresenter.java trunk/src/main/java/cc/kune/gspace/client/options/tools/GroupOptToolsPresenter.java trunk/src/main/java/cc/kune/gspace/client/options/tools/UserOptToolsPresenter.java trunk/src/main/java/cc/kune/gspace/client/style/GSpaceBackManagerImpl.java trunk/src/main/java/cc/kune/gspace/client/tags/TagsSummaryPanel.java trunk/src/main/java/cc/kune/gspace/client/tags/TagsSummaryPresenter.java trunk/src/main/java/cc/kune/gspace/client/themes/GSpaceThemeManager.java trunk/src/main/java/cc/kune/gspace/client/themes/GSpaceThemeSelectorPresenter.java trunk/src/main/java/cc/kune/gspace/client/tool/ContentViewerSelector.java trunk/src/main/java/cc/kune/gspace/client/tool/selector/ToolSelectorPanel.java trunk/src/main/java/cc/kune/gspace/client/tool/selector/ToolSelectorPresenter.java trunk/src/main/java/cc/kune/gspace/client/ui/footer/license/EntityLicensePanel.java trunk/src/main/java/cc/kune/gspace/client/ui/footer/license/EntityLicensePresenter.java trunk/src/main/java/cc/kune/gspace/client/viewers/AbstractFolderViewerPanel.java trunk/src/main/java/cc/kune/gspace/client/viewers/AbstractFolderViewerView.java trunk/src/main/java/cc/kune/gspace/client/viewers/ContentTitleWidget.java trunk/src/main/java/cc/kune/gspace/client/viewers/ContentViewerPanel.java trunk/src/main/java/cc/kune/gspace/client/viewers/ContentViewerPresenter.java trunk/src/main/java/cc/kune/gspace/client/viewers/FolderViewerAsFlowPanel.java trunk/src/main/java/cc/kune/gspace/client/viewers/FolderViewerAsTablePanel.java trunk/src/main/java/cc/kune/gspace/client/viewers/FolderViewerUtils.java trunk/src/main/java/cc/kune/gspace/client/viewers/NoHomePageViewer.java trunk/src/main/java/cc/kune/hspace/client/HSpacePanel.java trunk/src/main/java/cc/kune/hspace/client/HSpaceParts.java trunk/src/main/java/cc/kune/hspace/client/HSpacePresenter.java trunk/src/main/java/cc/kune/lists/server/ListsServerTool.java trunk/src/main/java/cc/kune/pspace/client/PSpaceInDevelopment.java trunk/src/main/java/cc/kune/pspace/client/PSpacePanel.java trunk/src/main/java/cc/kune/pspace/client/PSpaceParts.java trunk/src/main/java/cc/kune/pspace/client/PSpacePresenter.java trunk/src/main/java/cc/kune/wave/client/KuneStagesProvider.java trunk/src/main/java/cc/kune/wave/client/WaveClientManager.java trunk/src/main/java/cc/kune/wave/client/WaveParts.java trunk/src/main/java/cc/kune/wave/client/inboxcount/InboxCountPresenter.java trunk/src/main/java/cc/kune/wave/server/CustomUserRegistrationServlet.java trunk/src/main/java/org/waveprotocol/wave/client/wavepanel/view/dom/full/KuneWavePanelResourceLoader.java trunk/src/test/java/cc/kune/core/server/manager/ContentManagerDefaultTest.java trunk/src/test/java/cc/kune/core/server/manager/GroupManagerDefaultTest.java trunk/src/test/java/cc/kune/core/server/manager/TagUserContentTest.java trunk/src/test/java/cc/kune/core/server/manager/UserManagerDefaultTest.java trunk/src/test/java/cc/kune/gspace/client/tags/TagsSummaryPresenterTest.java trunk/src/test/java/cc/kune/gspace/client/tool/selector/ToolSelectorPresenterTest.java trunk/src/test/java/cc/kune/wave/server/KuneAgentTest.java trunk/src/test/java/cc/kune/wave/server/KuneWaveServiceDefaultTest.java Log: Refactorization and Wave update Modified: trunk/.classpath =================================================================== --- trunk/.classpath 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/.classpath 2012-01-08 23:06:53 UTC (rev 1656) @@ -13,19 +13,19 @@ <classpathentry kind="var" path="M2_REPO/aopalliance/aopalliance/1.0/aopalliance-1.0.jar" sourcepath="M2_REPO/aopalliance/aopalliance/1.0/aopalliance-1.0-sources.jar"/> <classpathentry kind="var" path="M2_REPO/avalon-framework/avalon-framework/4.1.3/avalon-framework-4.1.3.jar"/> <classpathentry kind="var" path="M2_REPO/backport-util-concurrent/backport-util-concurrent/3.1/backport-util-concurrent-3.1.jar" sourcepath="M2_REPO/backport-util-concurrent/backport-util-concurrent/3.1/backport-util-concurrent-3.1-sources.jar"/> - <classpathentry kind="var" path="M2_REPO/org/waveprotocol/box/0.3.8/box-0.3.8.jar"/> - <classpathentry kind="var" path="M2_REPO/org/waveprotocol/box-src/0.3.8/box-src-0.3.8.jar" sourcepath="M2_REPO/org/waveprotocol/box-src/0.3.8/box-src-0.3.8-sources.jar"/> + <classpathentry kind="var" path="M2_REPO/org/waveprotocol/box/0.3.9/box-0.3.9.jar"/> + <classpathentry kind="var" path="M2_REPO/org/waveprotocol/box-src/0.3.9/box-src-0.3.9.jar" sourcepath="M2_REPO/org/waveprotocol/box-src/0.3.9/box-src-0.3.9-sources.jar"/> <classpathentry kind="var" path="M2_REPO/org/beanshell/bsh/2.0b4/bsh-2.0b4.jar"/> <classpathentry kind="var" path="M2_REPO/c3p0/c3p0/0.9.1/c3p0-0.9.1.jar" sourcepath="M2_REPO/c3p0/c3p0/0.9.1/c3p0-0.9.1-sources.jar"/> <classpathentry kind="var" path="M2_REPO/cglib/cglib-nodep/2.1_3/cglib-nodep-2.1_3.jar" sourcepath="M2_REPO/cglib/cglib-nodep/2.1_3/cglib-nodep-2.1_3-sources.jar"/> <classpathentry kind="var" path="M2_REPO/classworlds/classworlds/1.1-alpha-2/classworlds-1.1-alpha-2.jar"/> - <classpathentry kind="var" path="M2_REPO/org/waveprotocol/client/0.3.8/client-0.3.8.jar"/> - <classpathentry kind="var" path="M2_REPO/org/waveprotocol/client-common/0.3.8/client-common-0.3.8.jar"/> - <classpathentry kind="var" path="M2_REPO/org/waveprotocol/client-common-src/0.3.8/client-common-src-0.3.8.jar" sourcepath="M2_REPO/org/waveprotocol/client-common-src/0.3.8/client-common-src-0.3.8-sources.jar"/> - <classpathentry kind="var" path="M2_REPO/org/waveprotocol/client-scheduler-src/0.3.8/client-scheduler-src-0.3.8.jar" sourcepath="M2_REPO/org/waveprotocol/client-scheduler-src/0.3.8/client-scheduler-src-0.3.8-sources.jar"/> - <classpathentry kind="var" path="M2_REPO/org/waveprotocol/client-src/0.3.8/client-src-0.3.8.jar" sourcepath="M2_REPO/org/waveprotocol/client-src/0.3.8/client-src-0.3.8-sources.jar"/> + <classpathentry kind="var" path="M2_REPO/org/waveprotocol/client/0.3.9/client-0.3.9.jar"/> + <classpathentry kind="var" path="M2_REPO/org/waveprotocol/client-common/0.3.9/client-common-0.3.9.jar"/> + <classpathentry kind="var" path="M2_REPO/org/waveprotocol/client-common-src/0.3.9/client-common-src-0.3.9.jar" sourcepath="M2_REPO/org/waveprotocol/client-common-src/0.3.9/client-common-src-0.3.9-sources.jar"/> + <classpathentry kind="var" path="M2_REPO/org/waveprotocol/client-scheduler-src/0.3.9/client-scheduler-src-0.3.9.jar" sourcepath="M2_REPO/org/waveprotocol/client-scheduler-src/0.3.9/client-scheduler-src-0.3.9-sources.jar"/> + <classpathentry kind="var" path="M2_REPO/org/waveprotocol/client-src/0.3.9/client-src-0.3.9.jar" sourcepath="M2_REPO/org/waveprotocol/client-src/0.3.9/client-src-0.3.9-sources.jar"/> <classpathentry kind="var" path="M2_REPO/org/cobogw/gwt/cobogw/1.3.1/cobogw-1.3.1.jar"/> - <classpathentry kind="var" path="M2_REPO/org/waveprotocol/common-src/0.3.8/common-src-0.3.8.jar" sourcepath="M2_REPO/org/waveprotocol/common-src/0.3.8/common-src-0.3.8-sources.jar"/> + <classpathentry kind="var" path="M2_REPO/org/waveprotocol/common-src/0.3.9/common-src-0.3.9.jar" sourcepath="M2_REPO/org/waveprotocol/common-src/0.3.9/common-src-0.3.9-sources.jar"/> <classpathentry kind="var" path="M2_REPO/commons-beanutils/commons-beanutils/1.7.0/commons-beanutils-1.7.0.jar" sourcepath="M2_REPO/commons-beanutils/commons-beanutils/1.7.0/commons-beanutils-1.7.0-sources.jar"/> <classpathentry kind="var" path="M2_REPO/commons-cli/commons-cli/1.2/commons-cli-1.2.jar" sourcepath="M2_REPO/commons-cli/commons-cli/1.2/commons-cli-1.2-sources.jar"/> <classpathentry kind="var" path="M2_REPO/commons-codec/commons-codec/1.4/commons-codec-1.4.jar" sourcepath="M2_REPO/commons-codec/commons-codec/1.4/commons-codec-1.4-sources.jar"/> @@ -34,8 +34,8 @@ <classpathentry kind="var" path="M2_REPO/commons-io/commons-io/1.3.1/commons-io-1.3.1.jar" sourcepath="M2_REPO/commons-io/commons-io/1.3.1/commons-io-1.3.1-sources.jar"/> <classpathentry kind="var" path="M2_REPO/commons-lang/commons-lang/2.5/commons-lang-2.5.jar" sourcepath="M2_REPO/commons-lang/commons-lang/2.5/commons-lang-2.5-sources.jar"/> <classpathentry kind="var" path="M2_REPO/commons-logging/commons-logging/1.1/commons-logging-1.1.jar" sourcepath="M2_REPO/commons-logging/commons-logging/1.1/commons-logging-1.1-sources.jar"/> - <classpathentry kind="var" path="M2_REPO/org/waveprotocol/communication-src/0.3.8/communication-src-0.3.8.jar" sourcepath="M2_REPO/org/waveprotocol/communication-src/0.3.8/communication-src-0.3.8-sources.jar"/> - <classpathentry kind="var" path="M2_REPO/org/waveprotocol/concurrencycontrol-src/0.3.8/concurrencycontrol-src-0.3.8.jar" sourcepath="M2_REPO/org/waveprotocol/concurrencycontrol-src/0.3.8/concurrencycontrol-src-0.3.8-sources.jar"/> + <classpathentry kind="var" path="M2_REPO/org/waveprotocol/communication-src/0.3.9/communication-src-0.3.9.jar" sourcepath="M2_REPO/org/waveprotocol/communication-src/0.3.9/communication-src-0.3.9-sources.jar"/> + <classpathentry kind="var" path="M2_REPO/org/waveprotocol/concurrencycontrol-src/0.3.9/concurrencycontrol-src-0.3.9.jar" sourcepath="M2_REPO/org/waveprotocol/concurrencycontrol-src/0.3.9/concurrencycontrol-src-0.3.9-sources.jar"/> <classpathentry kind="var" path="M2_REPO/net/sourceforge/cssparser/cssparser/0.9.5/cssparser-0.9.5.jar" sourcepath="M2_REPO/net/sourceforge/cssparser/cssparser/0.9.5/cssparser-0.9.5-sources.jar"/> <classpathentry kind="var" path="M2_REPO/dom4j/dom4j/1.6.1/dom4j-1.6.1.jar" sourcepath="M2_REPO/dom4j/dom4j/1.6.1/dom4j-1.6.1-sources.jar"/> <classpathentry kind="var" path="M2_REPO/net/sf/dozer/dozer/4.0/dozer-4.0.jar" sourcepath="M2_REPO/net/sf/dozer/dozer/4.0/dozer-4.0-sources.jar"/> @@ -57,7 +57,7 @@ <classpathentry kind="var" path="M2_REPO/com/allen_sauer/gwt/log/gwt-log/gwt-log/3.0.1/gwt-log-3.0.1.jar"/> <classpathentry kind="var" path="M2_REPO/com/google/gwt/gwt-servlet/2.1.1/gwt-servlet-2.1.1.jar" sourcepath="M2_REPO/com/google/gwt/gwt-servlet/2.1.1/gwt-servlet-2.1.1-sources.jar"/> <classpathentry kind="var" path="M2_REPO/com/google/gwt/gwt-user/2.1.1/gwt-user-2.1.1.jar" sourcepath="M2_REPO/com/google/gwt/gwt-user/2.1.1/gwt-user-2.1.1-sources.jar"/> - <classpathentry kind="var" path="M2_REPO/org/waveprotocol/gwt-util-src/0.3.8/gwt-util-src-0.3.8.jar" sourcepath="M2_REPO/org/waveprotocol/gwt-util-src/0.3.8/gwt-util-src-0.3.8-sources.jar"/> + <classpathentry kind="var" path="M2_REPO/org/waveprotocol/gwt-util-src/0.3.9/gwt-util-src-0.3.9.jar" sourcepath="M2_REPO/org/waveprotocol/gwt-util-src/0.3.9/gwt-util-src-0.3.9-sources.jar"/> <classpathentry kind="var" path="M2_REPO/com/allen_sauer/gwt/voices/gwt-voices/gwt-voices/2.0.0/gwt-voices-2.0.0.jar"/> <classpathentry kind="var" path="M2_REPO/com/gwtplatform/gwtp-all/0.5/gwtp-all-0.5.jar" sourcepath="M2_REPO/com/gwtplatform/gwtp-all/0.5/gwtp-all-0.5-sources.jar"/> <classpathentry kind="var" path="M2_REPO/com/gwtplatform/gwtp-clients-common/0.5/gwtp-clients-common-0.5.jar" sourcepath="M2_REPO/com/gwtplatform/gwtp-clients-common/0.5/gwtp-clients-common-0.5-sources.jar"/> @@ -114,16 +114,16 @@ <classpathentry kind="var" path="M2_REPO/org/apache/maven/maven-profile/2.0/maven-profile-2.0.jar" sourcepath="M2_REPO/org/apache/maven/maven-profile/2.0/maven-profile-2.0-sources.jar"/> <classpathentry kind="var" path="M2_REPO/org/apache/maven/maven-project/2.0/maven-project-2.0.jar" sourcepath="M2_REPO/org/apache/maven/maven-project/2.0/maven-project-2.0-sources.jar"/> <classpathentry kind="var" path="M2_REPO/org/apache/maven/maven-repository-metadata/2.0/maven-repository-metadata-2.0.jar" sourcepath="M2_REPO/org/apache/maven/maven-repository-metadata/2.0/maven-repository-metadata-2.0-sources.jar"/> - <classpathentry kind="var" path="M2_REPO/org/waveprotocol/media-src/0.3.8/media-src-0.3.8.jar" sourcepath="M2_REPO/org/waveprotocol/media-src/0.3.8/media-src-0.3.8-sources.jar"/> + <classpathentry kind="var" path="M2_REPO/org/waveprotocol/media-src/0.3.9/media-src-0.3.9.jar" sourcepath="M2_REPO/org/waveprotocol/media-src/0.3.9/media-src-0.3.9-sources.jar"/> <classpathentry kind="var" path="M2_REPO/org/mockito/mockito-core/1.8.5/mockito-core-1.8.5.jar" sourcepath="M2_REPO/org/mockito/mockito-core/1.8.5/mockito-core-1.8.5-sources.jar"/> - <classpathentry kind="var" path="M2_REPO/org/waveprotocol/model-src/0.3.8/model-src-0.3.8.jar" sourcepath="M2_REPO/org/waveprotocol/model-src/0.3.8/model-src-0.3.8-sources.jar"/> + <classpathentry kind="var" path="M2_REPO/org/waveprotocol/model-src/0.3.9/model-src-0.3.9.jar" sourcepath="M2_REPO/org/waveprotocol/model-src/0.3.9/model-src-0.3.9-sources.jar"/> <classpathentry kind="var" path="M2_REPO/org/mvel/mvel2/2.0.16/mvel2-2.0.16.jar" sourcepath="M2_REPO/org/mvel/mvel2/2.0.16/mvel2-2.0.16-sources.jar"/> <classpathentry kind="var" path="M2_REPO/mysql/mysql-connector-java/5.1.13/mysql-connector-java-5.1.13.jar"/> <classpathentry kind="var" path="M2_REPO/net/sourceforge/nekohtml/nekohtml/1.9.15/nekohtml-1.9.15.jar" sourcepath="M2_REPO/net/sourceforge/nekohtml/nekohtml/1.9.15/nekohtml-1.9.15-sources.jar"/> <classpathentry kind="var" path="M2_REPO/org/objenesis/objenesis/1.0/objenesis-1.0.jar" sourcepath="M2_REPO/org/objenesis/objenesis/1.0/objenesis-1.0-sources.jar"/> <classpathentry kind="var" path="M2_REPO/org/codehaus/plexus/plexus-container-default/1.0-alpha-8/plexus-container-default-1.0-alpha-8.jar" sourcepath="M2_REPO/org/codehaus/plexus/plexus-container-default/1.0-alpha-8/plexus-container-default-1.0-alpha-8-sources.jar"/> <classpathentry kind="var" path="M2_REPO/org/codehaus/plexus/plexus-utils/1.0.4/plexus-utils-1.0.4.jar" sourcepath="M2_REPO/org/codehaus/plexus/plexus-utils/1.0.4/plexus-utils-1.0.4-sources.jar"/> - <classpathentry kind="var" path="M2_REPO/org/waveprotocol/proto-msg/0.3.8/proto-msg-0.3.8.jar"/> + <classpathentry kind="var" path="M2_REPO/org/waveprotocol/proto-msg/0.3.9/proto-msg-0.3.9.jar"/> <classpathentry kind="var" path="M2_REPO/org/quartz-scheduler/quartz/2.1.0/quartz-2.1.0.jar" sourcepath="M2_REPO/org/quartz-scheduler/quartz/2.1.0/quartz-2.1.0-sources.jar"/> <classpathentry kind="var" path="M2_REPO/org/w3c/css/sac/1.3/sac-1.3.jar" sourcepath="M2_REPO/org/w3c/css/sac/1.3/sac-1.3-sources.jar"/> <classpathentry kind="var" path="M2_REPO/org/seleniumhq/selenium/selenium-android-driver/2.12.0/selenium-android-driver-2.12.0.jar" sourcepath="M2_REPO/org/seleniumhq/selenium/selenium-android-driver/2.12.0/selenium-android-driver-2.12.0-sources.jar"/> @@ -148,9 +148,9 @@ <classpathentry kind="var" path="M2_REPO/stax/stax-api/1.0.1/stax-api-1.0.1.jar"/> <classpathentry kind="var" path="M2_REPO/org/testng/testng/6.2.1/testng-6.2.1.jar" sourcepath="M2_REPO/org/testng/testng/6.2.1/testng-6.2.1-sources.jar"/> <classpathentry kind="var" path="M2_REPO/tigase/tigase-xmltools/3.3.5/tigase-xmltools-3.3.5.jar" sourcepath="M2_REPO/tigase/tigase-xmltools/3.3.5/tigase-xmltools-3.3.5-sources.jar"/> - <classpathentry kind="var" path="M2_REPO/org/waveprotocol/util-src/0.3.8/util-src-0.3.8.jar" sourcepath="M2_REPO/org/waveprotocol/util-src/0.3.8/util-src-0.3.8-sources.jar"/> + <classpathentry kind="var" path="M2_REPO/org/waveprotocol/util-src/0.3.9/util-src-0.3.9.jar" sourcepath="M2_REPO/org/waveprotocol/util-src/0.3.9/util-src-0.3.9-sources.jar"/> <classpathentry kind="var" path="M2_REPO/org/apache/maven/wagon/wagon-provider-api/1.0-alpha-5/wagon-provider-api-1.0-alpha-5.jar" sourcepath="M2_REPO/org/apache/maven/wagon/wagon-provider-api/1.0-alpha-5/wagon-provider-api-1.0-alpha-5-sources.jar"/> - <classpathentry kind="var" path="M2_REPO/org/waveprotocol/waveinabox-server-0.3/0.3.8/waveinabox-server-0.3-0.3.8.jar"/> + <classpathentry kind="var" path="M2_REPO/org/waveprotocol/waveinabox-server-0.3/0.3.9/waveinabox-server-0.3-0.3.9.jar"/> <classpathentry kind="var" path="M2_REPO/xalan/xalan/2.7.1/xalan-2.7.1.jar" sourcepath="M2_REPO/xalan/xalan/2.7.1/xalan-2.7.1-sources.jar"/> <classpathentry kind="var" path="M2_REPO/xerces/xercesImpl/2.9.1/xercesImpl-2.9.1.jar"/> <classpathentry kind="var" path="M2_REPO/xml-apis/xml-apis/1.0.b2/xml-apis-1.0.b2.jar" sourcepath="M2_REPO/xml-apis/xml-apis/1.0.b2/xml-apis-1.0.b2-sources.jar"/> Modified: trunk/pom.xml =================================================================== --- trunk/pom.xml 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/pom.xml 2012-01-08 23:06:53 UTC (rev 1656) @@ -19,7 +19,7 @@ <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <slf4j.version>1.6.1</slf4j.version> <openjpa.version>2.0.1</openjpa.version> - <wiab.version>0.3.8</wiab.version> + <wiab.version>0.3.9</wiab.version> <skipTests>true</skipTests> </properties> <repositories> Modified: trunk/src/main/java/cc/kune/chat/client/ChatClient.java =================================================================== --- trunk/src/main/java/cc/kune/chat/client/ChatClient.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/chat/client/ChatClient.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -19,7 +19,7 @@ */ package cc.kune.chat.client; -import cc.kune.core.client.sn.SimpleContactManager; +import cc.kune.core.client.contacts.SimpleContactManager; import com.calclab.emite.core.client.xmpp.stanzas.XmppURI; import com.calclab.emite.xep.muc.client.Room; Modified: trunk/src/main/java/cc/kune/chat/client/ChatClientDefault.java =================================================================== --- trunk/src/main/java/cc/kune/chat/client/ChatClientDefault.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/chat/client/ChatClientDefault.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -40,18 +40,18 @@ import cc.kune.common.client.utils.WindowUtils; import cc.kune.common.shared.i18n.I18nTranslationService; import cc.kune.common.shared.utils.TextUtils; +import cc.kune.core.client.events.AppStartEvent; +import cc.kune.core.client.events.AppStopEvent; import cc.kune.core.client.events.AvatarChangedEvent; import cc.kune.core.client.events.NewUserRegisteredEvent; -import cc.kune.core.client.init.AppStartEvent; -import cc.kune.core.client.init.AppStopEvent; +import cc.kune.core.client.events.UserSignInEvent; +import cc.kune.core.client.events.UserSignOutEvent; +import cc.kune.core.client.events.UserSignInEvent.UserSignInHandler; +import cc.kune.core.client.events.UserSignOutEvent.UserSignOutHandler; import cc.kune.core.client.resources.CoreResources; import cc.kune.core.client.services.ClientFileDownloadUtils; import cc.kune.core.client.sitebar.SitebarActions; import cc.kune.core.client.state.Session; -import cc.kune.core.client.state.UserSignInEvent; -import cc.kune.core.client.state.UserSignInEvent.UserSignInHandler; -import cc.kune.core.client.state.UserSignOutEvent; -import cc.kune.core.client.state.UserSignOutEvent.UserSignOutHandler; import cc.kune.core.shared.dto.UserInfoDTO; import com.calclab.emite.core.client.xmpp.session.XmppSession; Modified: trunk/src/main/java/cc/kune/chat/client/ChatGinModule.java =================================================================== --- trunk/src/main/java/cc/kune/chat/client/ChatGinModule.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/chat/client/ChatGinModule.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -25,7 +25,7 @@ import cc.kune.core.client.ExtendedGinModule; import cc.kune.core.client.avatar.MediumAvatarDecorator; import cc.kune.core.client.avatar.SmallAvatarDecorator; -import cc.kune.core.client.sn.SimpleContactManager; +import cc.kune.core.client.contacts.SimpleContactManager; public class ChatGinModule extends ExtendedGinModule { /* Modified: trunk/src/main/java/cc/kune/chat/client/ChatParts.java =================================================================== --- trunk/src/main/java/cc/kune/chat/client/ChatParts.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/chat/client/ChatParts.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -34,8 +34,8 @@ import cc.kune.common.client.actions.PropertyChangeListener; import cc.kune.common.client.actions.ui.descrip.MenuItemDescriptor; import cc.kune.common.shared.i18n.I18nTranslationService; -import cc.kune.core.client.init.AppStartEvent; -import cc.kune.core.client.init.AppStartEvent.AppStartHandler; +import cc.kune.core.client.events.AppStartEvent; +import cc.kune.core.client.events.AppStartEvent.AppStartHandler; import cc.kune.core.client.sn.GroupSNPresenter; import cc.kune.core.client.sn.actions.conditions.IsBuddieCondition; import cc.kune.core.client.sn.actions.conditions.IsCurrentStateAGroupCondition; Modified: trunk/src/main/java/cc/kune/chat/client/actions/AddAsBuddieHeaderButton.java =================================================================== --- trunk/src/main/java/cc/kune/chat/client/actions/AddAsBuddieHeaderButton.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/chat/client/actions/AddAsBuddieHeaderButton.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -29,11 +29,11 @@ import cc.kune.common.client.actions.PropertyChangeListener; import cc.kune.common.client.actions.ui.descrip.ButtonDescriptor; import cc.kune.common.shared.i18n.I18nTranslationService; +import cc.kune.core.client.events.StateChangedEvent; +import cc.kune.core.client.events.StateChangedEvent.StateChangedHandler; import cc.kune.core.client.resources.CoreMessages; import cc.kune.core.client.resources.CoreResources; import cc.kune.core.client.state.Session; -import cc.kune.core.client.state.StateChangedEvent; -import cc.kune.core.client.state.StateChangedEvent.StateChangedHandler; import cc.kune.core.client.state.StateManager; import cc.kune.core.client.ws.entheader.EntityHeader; import cc.kune.core.shared.dto.StateAbstractDTO; Modified: trunk/src/main/java/cc/kune/chat/client/actions/OpenGroupPublicChatRoomAction.java =================================================================== --- trunk/src/main/java/cc/kune/chat/client/actions/OpenGroupPublicChatRoomAction.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/chat/client/actions/OpenGroupPublicChatRoomAction.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -29,10 +29,10 @@ import cc.kune.common.client.actions.ActionEvent; import cc.kune.common.shared.i18n.I18nTranslationService; import cc.kune.core.client.actions.RolActionAutoUpdated; +import cc.kune.core.client.events.StateChangedEvent; +import cc.kune.core.client.events.StateChangedEvent.StateChangedHandler; import cc.kune.core.client.state.AccessRightsClientManager; import cc.kune.core.client.state.Session; -import cc.kune.core.client.state.StateChangedEvent; -import cc.kune.core.client.state.StateChangedEvent.StateChangedHandler; import cc.kune.core.client.state.StateManager; import cc.kune.core.shared.dto.AccessRolDTO; import cc.kune.core.shared.dto.GroupDTO; Modified: trunk/src/main/java/cc/kune/chat/client/actions/StartAssemblyWithMembers.java =================================================================== --- trunk/src/main/java/cc/kune/chat/client/actions/StartAssemblyWithMembers.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/chat/client/actions/StartAssemblyWithMembers.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -21,7 +21,7 @@ import cc.kune.common.client.actions.ui.descrip.MenuItemDescriptor; import cc.kune.common.shared.i18n.I18nTranslationService; -import cc.kune.core.client.sn.actions.registry.GroupSNConfActions; +import cc.kune.core.client.sn.actions.GroupSNOptionsMenu; import com.google.inject.Inject; @@ -29,12 +29,12 @@ @Inject public StartAssemblyWithMembers(final StartAssemblyWithMembersAction action, - final I18nTranslationService i18n) { + final I18nTranslationService i18n, final GroupSNOptionsMenu optionsMenu) { super(action); action.setInviteMembers(true); withText(i18n.t("Start a public assembly with members")).withToolTip( i18n.t("Enter to this group public chat room and invite members")); - setParent(GroupSNConfActions.OPTIONS_MENU); + setParent(optionsMenu); setPosition(0); } } Modified: trunk/src/main/java/cc/kune/client/OnAppStartFactory.java =================================================================== --- trunk/src/main/java/cc/kune/client/OnAppStartFactory.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/client/OnAppStartFactory.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -20,9 +20,9 @@ package cc.kune.client; import cc.kune.core.client.auth.SignIn; +import cc.kune.core.client.events.AppStartEvent; +import cc.kune.core.client.events.AppStartEvent.AppStartHandler; import cc.kune.core.client.groups.newgroup.NewGroup; -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.core.client.state.SiteTokenListeners; Modified: trunk/src/main/java/cc/kune/core/client/CoreGinModule.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/CoreGinModule.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/core/client/CoreGinModule.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -93,17 +93,17 @@ import cc.kune.core.client.sn.actions.registry.UserSNMenuItemsRegistry; import cc.kune.core.client.state.AccessRightsClientManager; import cc.kune.core.client.state.ContentCache; -import cc.kune.core.client.state.ContentCacheDefault; import cc.kune.core.client.state.HistoryWrapper; -import cc.kune.core.client.state.HistoryWrapperDefault; import cc.kune.core.client.state.Session; -import cc.kune.core.client.state.SessionDefault; import cc.kune.core.client.state.SessionExpirationManager; import cc.kune.core.client.state.SiteTokenListeners; import cc.kune.core.client.state.SiteTokens; import cc.kune.core.client.state.StateManager; -import cc.kune.core.client.state.StateManagerDefault; import cc.kune.core.client.state.TokenMatcher; +import cc.kune.core.client.state.impl.ContentCacheDefault; +import cc.kune.core.client.state.impl.HistoryWrapperDefault; +import cc.kune.core.client.state.impl.SessionDefault; +import cc.kune.core.client.state.impl.StateManagerDefault; import cc.kune.core.client.sub.SubtitlesManager; import cc.kune.core.client.sub.SubtitlesWidget; import cc.kune.core.client.ws.CorePresenter; Modified: trunk/src/main/java/cc/kune/core/client/CoreParts.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/CoreParts.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/core/client/CoreParts.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -22,9 +22,9 @@ import cc.kune.core.client.auth.AnonUsersManager; import cc.kune.core.client.auth.Register; import cc.kune.core.client.auth.SignIn; +import cc.kune.core.client.events.AppStartEvent; +import cc.kune.core.client.events.AppStartEvent.AppStartHandler; import cc.kune.core.client.groups.newgroup.NewGroup; -import cc.kune.core.client.init.AppStartEvent; -import cc.kune.core.client.init.AppStartEvent.AppStartHandler; import cc.kune.core.client.sitebar.AboutKuneDialog; import cc.kune.core.client.sitebar.SiteUserOptionsPresenter; import cc.kune.core.client.sitebar.spaces.Space; Modified: trunk/src/main/java/cc/kune/core/client/actions/RolActionAutoUpdated.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/actions/RolActionAutoUpdated.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/core/client/actions/RolActionAutoUpdated.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -21,9 +21,8 @@ import cc.kune.common.client.actions.AbstractExtendedAction; import cc.kune.common.client.actions.ui.descrip.GuiActionDescrip; -import cc.kune.core.client.sn.actions.RolComparator; -import cc.kune.core.client.state.AccessRightsChangedEvent; -import cc.kune.core.client.state.AccessRightsChangedEvent.AccessRightsChangedHandler; +import cc.kune.core.client.events.AccessRightsChangedEvent; +import cc.kune.core.client.events.AccessRightsChangedEvent.AccessRightsChangedHandler; import cc.kune.core.client.state.AccessRightsClientManager; import cc.kune.core.client.state.Session; import cc.kune.core.client.state.StateManager; Copied: trunk/src/main/java/cc/kune/core/client/actions/RolComparator.java (from rev 1655, trunk/src/main/java/cc/kune/core/client/sn/actions/RolComparator.java) =================================================================== --- trunk/src/main/java/cc/kune/core/client/actions/RolComparator.java (rev 0) +++ trunk/src/main/java/cc/kune/core/client/actions/RolComparator.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -0,0 +1,45 @@ +/* + * + * Copyright (C) 2007-2011 The kune development team (see CREDITS for details) + * This file is part of kune. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ +package cc.kune.core.client.actions; + +import cc.kune.core.shared.domain.utils.AccessRights; +import cc.kune.core.shared.dto.AccessRolDTO; + +public final class RolComparator { + + public static boolean isEnabled(final AccessRolDTO rolRequired, final AccessRights rights) { + switch (rolRequired) { + case Administrator: + return rights.isAdministrable(); + case Editor: + return rights.isEditable(); + case Viewer: + return rights.isVisible(); + } + return false; + } + + public static boolean isMember(final AccessRights newRights) { + return newRights.isAdministrable() || newRights.isEditable(); + } + + private RolComparator() { + } +} Modified: trunk/src/main/java/cc/kune/core/client/auth/AnonUsersManager.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/auth/AnonUsersManager.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/core/client/auth/AnonUsersManager.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -23,13 +23,13 @@ import cc.kune.common.client.notify.UserNotifyEvent; import cc.kune.common.shared.utils.TextUtils; import cc.kune.core.client.cookies.CookiesManager; +import cc.kune.core.client.events.AppStartEvent; +import cc.kune.core.client.events.UserSignInEvent; +import cc.kune.core.client.events.AppStartEvent.AppStartHandler; +import cc.kune.core.client.events.UserSignInEvent.UserSignInHandler; import cc.kune.core.client.i18n.I18nUITranslationService; -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.core.client.state.SiteTokens; -import cc.kune.core.client.state.UserSignInEvent; -import cc.kune.core.client.state.UserSignInEvent.UserSignInHandler; import com.google.gwt.event.shared.EventBus; import com.google.inject.Inject; Modified: trunk/src/main/java/cc/kune/core/client/auth/WaveClientSimpleAuthenticator.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/auth/WaveClientSimpleAuthenticator.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/core/client/auth/WaveClientSimpleAuthenticator.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -20,7 +20,7 @@ package cc.kune.core.client.auth; import cc.kune.core.client.events.StackErrorEvent; -import cc.kune.gspace.client.GSpaceArmor; +import cc.kune.gspace.client.armor.GSpaceArmor; import com.google.gwt.event.shared.EventBus; import com.google.gwt.http.client.Request; Modified: trunk/src/main/java/cc/kune/core/client/cnt/AbstractContentPanel.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/cnt/AbstractContentPanel.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/core/client/cnt/AbstractContentPanel.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -19,7 +19,7 @@ */ package cc.kune.core.client.cnt; -import cc.kune.gspace.client.GSpaceArmor; +import cc.kune.gspace.client.armor.GSpaceArmor; import com.google.gwt.user.client.ui.InsertPanel.ForIsWidget; import com.google.gwt.user.client.ui.Widget; Modified: trunk/src/main/java/cc/kune/core/client/cnt/ActionContentToolbarImpl.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/cnt/ActionContentToolbarImpl.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/core/client/cnt/ActionContentToolbarImpl.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -22,7 +22,7 @@ import cc.kune.common.client.actions.ui.ActionFlowPanel; import cc.kune.common.client.actions.ui.GuiProvider; import cc.kune.common.shared.i18n.I18nTranslationService; -import cc.kune.gspace.client.GSpaceArmor; +import cc.kune.gspace.client.armor.GSpaceArmor; import com.google.gwt.user.client.ui.InsertPanel.ForIsWidget; import com.google.inject.Inject; Modified: trunk/src/main/java/cc/kune/core/client/cnt/FoldableContentPanel.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/cnt/FoldableContentPanel.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/core/client/cnt/FoldableContentPanel.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -24,7 +24,7 @@ import cc.kune.common.client.resources.CommonResources; import cc.kune.common.client.ui.IconLabel; import cc.kune.common.shared.i18n.I18nTranslationService; -import cc.kune.gspace.client.GSpaceArmor; +import cc.kune.gspace.client.armor.GSpaceArmor; import cc.kune.wave.client.WaveClientManager; import com.google.gwt.event.dom.client.ClickEvent; Modified: trunk/src/main/java/cc/kune/core/client/cnt/FoldableContentPresenter.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/cnt/FoldableContentPresenter.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/core/client/cnt/FoldableContentPresenter.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -22,12 +22,12 @@ import cc.kune.common.client.actions.ui.descrip.GuiActionDescCollection; import cc.kune.common.client.notify.NotifyUser; import cc.kune.common.shared.i18n.I18nTranslationService; +import cc.kune.core.client.events.StateChangedEvent; +import cc.kune.core.client.events.StateChangedEvent.StateChangedHandler; import cc.kune.core.client.services.ClientFileDownloadUtils; import cc.kune.core.client.services.ImageSize; import cc.kune.core.client.services.MediaUtils; import cc.kune.core.client.state.Session; -import cc.kune.core.client.state.StateChangedEvent; -import cc.kune.core.client.state.StateChangedEvent.StateChangedHandler; import cc.kune.core.client.state.StateManager; import cc.kune.core.shared.domain.utils.StateToken; import cc.kune.core.shared.dto.BasicMimeTypeDTO; Copied: trunk/src/main/java/cc/kune/core/client/contacts/SimpleContactManager.java (from rev 1655, trunk/src/main/java/cc/kune/core/client/sn/SimpleContactManager.java) =================================================================== --- trunk/src/main/java/cc/kune/core/client/contacts/SimpleContactManager.java (rev 0) +++ trunk/src/main/java/cc/kune/core/client/contacts/SimpleContactManager.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -0,0 +1,30 @@ +/* + * + * Copyright (C) 2007-2011 The kune development team (see CREDITS for details) + * This file is part of kune. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ +package cc.kune.core.client.contacts; + +public interface SimpleContactManager { + + void addNewBuddy(String shortName); + + void chat(String shortName); + + boolean isBuddy(String shortName); + +} Modified: trunk/src/main/java/cc/kune/core/client/dnd/FolderViewerDropController.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/dnd/FolderViewerDropController.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/core/client/dnd/FolderViewerDropController.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -30,7 +30,7 @@ import cc.kune.core.client.state.StateManager; import cc.kune.core.shared.domain.utils.StateToken; import cc.kune.core.shared.dto.StateContainerDTO; -import cc.kune.gspace.client.viewers.FolderItemWidget; +import cc.kune.gspace.client.viewers.items.FolderItemWidget; import com.allen_sauer.gwt.dnd.client.DragContext; import com.allen_sauer.gwt.dnd.client.VetoDragException; @@ -41,14 +41,6 @@ import com.google.gwt.user.client.ui.Widget; import com.google.inject.Inject; -/** - * @author vjrj - * - */ -/** - * @author vjrj - * - */ public class FolderViewerDropController implements DropTarget { private final ContentCache contentCache; Modified: trunk/src/main/java/cc/kune/core/client/dnd/KuneDragController.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/dnd/KuneDragController.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/core/client/dnd/KuneDragController.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -19,7 +19,7 @@ */ package cc.kune.core.client.dnd; -import cc.kune.gspace.client.GSpaceArmor; +import cc.kune.gspace.client.armor.GSpaceArmor; import com.allen_sauer.gwt.dnd.client.PickupDragController; import com.google.gwt.core.client.Scheduler; Modified: trunk/src/main/java/cc/kune/core/client/dnd/NotImplementedDropManager.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/dnd/NotImplementedDropManager.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/core/client/dnd/NotImplementedDropManager.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -20,7 +20,7 @@ package cc.kune.core.client.dnd; import cc.kune.common.shared.i18n.I18nTranslationService; -import cc.kune.gspace.client.GSpaceArmor; +import cc.kune.gspace.client.armor.GSpaceArmor; import com.google.gwt.event.logical.shared.AttachEvent; import com.google.gwt.event.logical.shared.AttachEvent.Handler; Copied: trunk/src/main/java/cc/kune/core/client/events/AccessRightsChangedEvent.java (from rev 1655, trunk/src/main/java/cc/kune/core/client/state/AccessRightsChangedEvent.java) =================================================================== --- trunk/src/main/java/cc/kune/core/client/events/AccessRightsChangedEvent.java (rev 0) +++ trunk/src/main/java/cc/kune/core/client/events/AccessRightsChangedEvent.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -0,0 +1,115 @@ +/* + * + * Copyright (C) 2007-2011 The kune development team (see CREDITS for details) + * This file is part of kune. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ +package cc.kune.core.client.events; + +import com.google.gwt.event.shared.EventHandler; +import com.google.gwt.event.shared.GwtEvent; +import com.google.gwt.event.shared.HandlerRegistration; +import com.google.gwt.event.shared.HasHandlers; + +public class AccessRightsChangedEvent extends GwtEvent<AccessRightsChangedEvent.AccessRightsChangedHandler> { + + public interface HasAccessRightsChangedHandlers extends HasHandlers { + HandlerRegistration addAccessRightsChangedHandler(AccessRightsChangedHandler handler); + } + + public interface AccessRightsChangedHandler extends EventHandler { + public void onAccessRightsChanged(AccessRightsChangedEvent event); + } + + private static final Type<AccessRightsChangedHandler> TYPE = new Type<AccessRightsChangedHandler>(); + + public static void fire(HasHandlers source, cc.kune.core.shared.domain.utils.AccessRights previousRights, cc.kune.core.shared.domain.utils.AccessRights currentRights) { + source.fireEvent(new AccessRightsChangedEvent(previousRights, currentRights)); + } + + public static Type<AccessRightsChangedHandler> getType() { + return TYPE; + } + + cc.kune.core.shared.domain.utils.AccessRights previousRights; + cc.kune.core.shared.domain.utils.AccessRights currentRights; + + public AccessRightsChangedEvent(cc.kune.core.shared.domain.utils.AccessRights previousRights, cc.kune.core.shared.domain.utils.AccessRights currentRights) { + this.previousRights = previousRights; + this.currentRights = currentRights; + } + + protected AccessRightsChangedEvent() { + // Possibly for serialization. + } + + @Override + public Type<AccessRightsChangedHandler> getAssociatedType() { + return TYPE; + } + + public cc.kune.core.shared.domain.utils.AccessRights getPreviousRights() { + return previousRights; + } + + public cc.kune.core.shared.domain.utils.AccessRights getCurrentRights() { + return currentRights; + } + + @Override + protected void dispatch(AccessRightsChangedHandler handler) { + handler.onAccessRightsChanged(this); + } + + @Override + public boolean equals(Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (getClass() != obj.getClass()) + return false; + AccessRightsChangedEvent other = (AccessRightsChangedEvent) obj; + if (previousRights == null) { + if (other.previousRights != null) + return false; + } else if (!previousRights.equals(other.previousRights)) + return false; + if (currentRights == null) { + if (other.currentRights != null) + return false; + } else if (!currentRights.equals(other.currentRights)) + return false; + return true; + } + + @Override + public int hashCode() { + int hashCode = 23; + hashCode = (hashCode * 37) + (previousRights == null ? 1 : previousRights.hashCode()); + hashCode = (hashCode * 37) + (currentRights == null ? 1 : currentRights.hashCode()); + return hashCode; + } + + @Override + public String toString() { + return "AccessRightsChangedEvent[" + + previousRights + + "," + + currentRights + + "]"; + } +} Copied: trunk/src/main/java/cc/kune/core/client/events/AppStartEvent.java (from rev 1655, trunk/src/main/java/cc/kune/core/client/init/AppStartEvent.java) =================================================================== --- trunk/src/main/java/cc/kune/core/client/events/AppStartEvent.java (rev 0) +++ trunk/src/main/java/cc/kune/core/client/events/AppStartEvent.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -0,0 +1,94 @@ +/* + * + * Copyright (C) 2007-2011 The kune development team (see CREDITS for details) + * This file is part of kune. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ +package cc.kune.core.client.events; + +import com.google.gwt.event.shared.EventHandler; +import com.google.gwt.event.shared.GwtEvent; +import com.google.gwt.event.shared.HandlerRegistration; +import com.google.gwt.event.shared.HasHandlers; +import com.gwtplatform.mvp.client.HasEventBus; + +public class AppStartEvent extends GwtEvent<AppStartEvent.AppStartHandler> { + + public interface HasAppStartHandlers extends HasHandlers { + HandlerRegistration addAppStartHandler(AppStartHandler handler); + } + + public interface AppStartHandler extends EventHandler { + public void onAppStart(AppStartEvent event); + } + + private static final Type<AppStartHandler> TYPE = new Type<AppStartHandler>(); + + public static void fire(HasEventBus source, cc.kune.core.shared.dto.InitDataDTO initData) { + source.fireEvent(new AppStartEvent(initData)); + } + + public static Type<AppStartHandler> getType() { + return TYPE; + } + + private final cc.kune.core.shared.dto.InitDataDTO initData; + + public AppStartEvent(cc.kune.core.shared.dto.InitDataDTO initData) { + this.initData = initData; + } + + @Override + public Type<AppStartHandler> getAssociatedType() { + return TYPE; + } + + public cc.kune.core.shared.dto.InitDataDTO getInitData() { + return initData; + } + + @Override + protected void dispatch(AppStartHandler handler) { + handler.onAppStart(this); + } + + @Override + public boolean equals(Object other) { + if (other != null && other.getClass().equals(this.getClass())) { + AppStartEvent o = (AppStartEvent) other; + return true + && ((o.initData == null && this.initData == null) || (o.initData != null && o.initData.equals(this.initData))) + ; + } + return false; + } + + @Override + public int hashCode() { + int hashCode = 23; + hashCode = (hashCode * 37) + getClass().hashCode(); + hashCode = (hashCode * 37) + (initData == null ? 1 : initData.hashCode()); + return hashCode; + } + + @Override + public String toString() { + return "AppStartEvent[" + + initData + + "]"; + } + +} Copied: trunk/src/main/java/cc/kune/core/client/events/AppStopEvent.java (from rev 1655, trunk/src/main/java/cc/kune/core/client/init/AppStopEvent.java) =================================================================== --- trunk/src/main/java/cc/kune/core/client/events/AppStopEvent.java (rev 0) +++ trunk/src/main/java/cc/kune/core/client/events/AppStopEvent.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -0,0 +1,85 @@ +/* + * + * Copyright (C) 2007-2011 The kune development team (see CREDITS for details) + * This file is part of kune. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ +package cc.kune.core.client.events; + +import com.google.gwt.event.shared.EventHandler; +import com.google.gwt.event.shared.GwtEvent; +import com.google.gwt.event.shared.HandlerRegistration; +import com.google.gwt.event.shared.HasHandlers; +import com.gwtplatform.mvp.client.HasEventBus; + +public class AppStopEvent extends GwtEvent<AppStopEvent.AppStopHandler> { + + public interface HasAppStopHandlers extends HasHandlers { + HandlerRegistration addAppStopHandler(AppStopHandler handler); + } + + public interface AppStopHandler extends EventHandler { + public void onAppStop(AppStopEvent event); + } + + private static final Type<AppStopHandler> TYPE = new Type<AppStopHandler>(); + + public static void fire(HasEventBus source) { + source.fireEvent(new AppStopEvent()); + } + + public static Type<AppStopHandler> getType() { + return TYPE; + } + + + public AppStopEvent() { + } + + @Override + public Type<AppStopHandler> getAssociatedType() { + return TYPE; + } + + @Override + protected void dispatch(AppStopHandler handler) { + handler.onAppStop(this); + } + + @Override + public boolean equals(Object other) { + if (other != null && other.getClass().equals(this.getClass())) { + AppStopEvent o = (AppStopEvent) other; + return true + ; + } + return false; + } + + @Override + public int hashCode() { + int hashCode = 23; + hashCode = (hashCode * 37) + getClass().hashCode(); + return hashCode; + } + + @Override + public String toString() { + return "AppStopEvent[" + + "]"; + } + +} Copied: trunk/src/main/java/cc/kune/core/client/events/GroupChangedEvent.java (from rev 1655, trunk/src/main/java/cc/kune/core/client/state/GroupChangedEvent.java) =================================================================== --- trunk/src/main/java/cc/kune/core/client/events/GroupChangedEvent.java (rev 0) +++ trunk/src/main/java/cc/kune/core/client/events/GroupChangedEvent.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -0,0 +1,115 @@ +/* + * + * Copyright (C) 2007-2011 The kune development team (see CREDITS for details) + * This file is part of kune. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ +package cc.kune.core.client.events; + +import com.google.gwt.event.shared.EventHandler; +import com.google.gwt.event.shared.GwtEvent; +import com.google.gwt.event.shared.HandlerRegistration; +import com.google.gwt.event.shared.HasHandlers; + +public class GroupChangedEvent extends GwtEvent<GroupChangedEvent.GroupChangedHandler> { + + public interface HasGroupChangedHandlers extends HasHandlers { + HandlerRegistration addGroupChangedHandler(GroupChangedHandler handler); + } + + public interface GroupChangedHandler extends EventHandler { + public void onGroupChanged(GroupChangedEvent event); + } + + private static final Type<GroupChangedHandler> TYPE = new Type<GroupChangedHandler>(); + + public static void fire(HasHandlers source, java.lang.String previousGroup, java.lang.String newGroup) { + source.fireEvent(new GroupChangedEvent(previousGroup, newGroup)); + } + + public static Type<GroupChangedHandler> getType() { + return TYPE; + } + + java.lang.String previousGroup; + java.lang.String newGroup; + + public GroupChangedEvent(java.lang.String previousGroup, java.lang.String newGroup) { + this.previousGroup = previousGroup; + this.newGroup = newGroup; + } + + protected GroupChangedEvent() { + // Possibly for serialization. + } + + @Override + public Type<GroupChangedHandler> getAssociatedType() { + return TYPE; + } + + public java.lang.String getPreviousGroup() { + return previousGroup; + } + + public java.lang.String getNewGroup() { + return newGroup; + } + + @Override + protected void dispatch(GroupChangedHandler handler) { + handler.onGroupChanged(this); + } + + @Override + public boolean equals(Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (getClass() != obj.getClass()) + return false; + GroupChangedEvent other = (GroupChangedEvent) obj; + if (previousGroup == null) { + if (other.previousGroup != null) + return false; + } else if (!previousGroup.equals(other.previousGroup)) + return false; + if (newGroup == null) { + if (other.newGroup != null) + return false; + } else if (!newGroup.equals(other.newGroup)) + return false; + return true; + } + + @Override + public int hashCode() { + int hashCode = 23; + hashCode = (hashCode * 37) + (previousGroup == null ? 1 : previousGroup.hashCode()); + hashCode = (hashCode * 37) + (newGroup == null ? 1 : newGroup.hashCode()); + return hashCode; + } + + @Override + public String toString() { + return "GroupChangedEvent[" + + previousGroup + + "," + + newGroup + + "]"; + } +} Copied: trunk/src/main/java/cc/kune/core/client/events/SocialNetworkChangedEvent.java (from rev 1655, trunk/src/main/java/cc/kune/core/client/state/SocialNetworkChangedEvent.java) =================================================================== --- trunk/src/main/java/cc/kune/core/client/events/SocialNetworkChangedEvent.java (rev 0) +++ trunk/src/main/java/cc/kune/core/client/events/SocialNetworkChangedEvent.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -0,0 +1,101 @@ +/* + * + * Copyright (C) 2007-2011 The kune development team (see CREDITS for details) + * This file is part of kune. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ +package cc.kune.core.client.events; + +import com.google.gwt.event.shared.EventHandler; +import com.google.gwt.event.shared.GwtEvent; +import com.google.gwt.event.shared.HandlerRegistration; +import com.google.gwt.event.shared.HasHandlers; + +public class SocialNetworkChangedEvent extends GwtEvent<SocialNetworkChangedEvent.SocialNetworkChangedHandler> { + + public interface HasSocialNetworkChangedHandlers extends HasHandlers { + HandlerRegistration addSocialNetworkChangedHandler(SocialNetworkChangedHandler handler); + } + + public interface SocialNetworkChangedHandler extends EventHandler { + public void onSocialNetworkChanged(SocialNetworkChangedEvent event); + } + + private static final Type<SocialNetworkChangedHandler> TYPE = new Type<SocialNetworkChangedHandler>(); + + public static void fire(HasHandlers source, cc.kune.core.shared.dto.StateAbstractDTO state) { + source.fireEvent(new SocialNetworkChangedEvent(state)); + } + + public static Type<SocialNetworkChangedHandler> getType() { + return TYPE; + } + + cc.kune.core.shared.dto.StateAbstractDTO state; + + public SocialNetworkChangedEvent(cc.kune.core.shared.dto.StateAbstractDTO state) { + this.state = state; + } + + protected SocialNetworkChangedEvent() { + // Possibly for serialization. + } + + @Override + public Type<SocialNetworkChangedHandler> getAssociatedType() { + return TYPE; + } + + public cc.kune.core.shared.dto.StateAbstractDTO getState() { + return state; + } + + @Override + protected void dispatch(SocialNetworkChangedHandler handler) { + handler.onSocialNetworkChanged(this); + } + + @Override + public boolean equals(Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (getClass() != obj.getClass()) + return false; + SocialNetworkChangedEvent other = (SocialNetworkChangedEvent) obj; + if (state == null) { + if (other.state != null) + return false; + } else if (!state.equals(other.state)) + return false; + return true; + } + + @Override + public int hashCode() { + int hashCode = 23; + hashCode = (hashCode * 37) + (state == null ? 1 : state.hashCode()); + return hashCode; + } + + @Override + public String toString() { + return "SocialNetworkChangedEvent[" + + state + + "]"; + } +} Copied: trunk/src/main/java/cc/kune/core/client/events/StateChangedEvent.java (from rev 1655, trunk/src/main/java/cc/kune/core/client/state/StateChangedEvent.java) =================================================================== --- trunk/src/main/java/cc/kune/core/client/events/StateChangedEvent.java (rev 0) +++ trunk/src/main/java/cc/kune/core/client/events/StateChangedEvent.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -0,0 +1,101 @@ +/* + * + * Copyright (C) 2007-2011 The kune development team (see CREDITS for details) + * This file is part of kune. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ +package cc.kune.core.client.events; + +import com.google.gwt.event.shared.EventHandler; +import com.google.gwt.event.shared.GwtEvent; +import com.google.gwt.event.shared.HandlerRegistration; +import com.google.gwt.event.shared.HasHandlers; + +public class StateChangedEvent extends GwtEvent<StateChangedEvent.StateChangedHandler> { + + public interface HasStateChangedHandlers extends HasHandlers { + HandlerRegistration addStateChangedHandler(StateChangedHandler handler); + } + + public interface StateChangedHandler extends EventHandler { + public void onStateChanged(StateChangedEvent event); + } + + private static final Type<StateChangedHandler> TYPE = new Type<StateChangedHandler>(); + + public static void fire(HasHandlers source, cc.kune.core.shared.dto.StateAbstractDTO state) { + source.fireEvent(new StateChangedEvent(state)); + } + + public static Type<StateChangedHandler> getType() { + return TYPE; + } + + cc.kune.core.shared.dto.StateAbstractDTO state; + + public StateChangedEvent(cc.kune.core.shared.dto.StateAbstractDTO state) { + this.state = state; + } + + protected StateChangedEvent() { + // Possibly for serialization. + } + + @Override + public Type<StateChangedHandler> getAssociatedType() { + return TYPE; + } + + public cc.kune.core.shared.dto.StateAbstractDTO getState() { + return state; + } + + @Override + protected void dispatch(StateChangedHandler handler) { + handler.onStateChanged(this); + } + + @Override + public boolean equals(Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (getClass() != obj.getClass()) + return false; + StateChangedEvent other = (StateChangedEvent) obj; + if (state == null) { + if (other.state != null) + return false; + } else if (!state.equals(other.state)) + return false; + return true; + } + + @Override + public int hashCode() { + int hashCode = 23; + hashCode = (hashCode * 37) + (state == null ? 1 : state.hashCode()); + return hashCode; + } + + @Override + public String toString() { + return "StateChangedEvent[" + + state + + "]"; + } +} Copied: trunk/src/main/java/cc/kune/core/client/events/ToolChangedEvent.java (from rev 1655, trunk/src/main/java/cc/kune/core/client/state/ToolChangedEvent.java) =================================================================== --- trunk/src/main/java/cc/kune/core/client/events/ToolChangedEvent.java (rev 0) +++ trunk/src/main/java/cc/kune/core/client/events/ToolChangedEvent.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -0,0 +1,130 @@ +/* + * + * Copyright (C) 2007-2011 The kune development team (see CREDITS for details) + * This file is part of kune. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ +package cc.kune.core.client.events; + +import cc.kune.core.shared.domain.utils.StateToken; + +import com.google.gwt.event.shared.EventHandler; +import com.google.gwt.event.shared.GwtEvent; +import com.google.gwt.event.shared.HandlerRegistration; +import com.google.gwt.event.shared.HasHandlers; + +public class ToolChangedEvent extends GwtEvent<ToolChangedEvent.ToolChangedHandler> { + + public interface HasToolChangedHandlers extends HasHandlers { + HandlerRegistration addToolChangedHandler(ToolChangedHandler handler); + } + + public interface ToolChangedHandler extends EventHandler { + public void onToolChanged(ToolChangedEvent event); + } + + private static final Type<ToolChangedHandler> TYPE = new Type<ToolChangedHandler>(); + + public static void fire(final HasHandlers source, final StateToken previousToken, + final StateToken newToken) { + source.fireEvent(new ToolChangedEvent(previousToken, newToken)); + } + + public static Type<ToolChangedHandler> getType() { + return TYPE; + } + + private StateToken newToken; + private StateToken previousToken; + + protected ToolChangedEvent() { + // Possibly for serialization. + } + + public ToolChangedEvent(final StateToken previousToken, final StateToken newToken) { + this.previousToken = previousToken; + this.newToken = newToken; + } + + @Override + protected void dispatch(final ToolChangedHandler handler) { + handler.onToolChanged(this); + } + + @Override + public boolean equals(final Object obj) { + if (this == obj) { + return true; + } + if (obj == null) { + return false; + } + if (getClass() != obj.getClass()) { + return false; + } + final ToolChangedEvent other = (ToolChangedEvent) obj; + if (newToken == null) { + if (other.newToken != null) { + return false; + } + } else if (!newToken.equals(other.newToken)) { + return false; + } + if (previousToken == null) { + if (other.previousToken != null) { + return false; + } + } else if (!previousToken.equals(other.previousToken)) { + return false; + } + return true; + } + + @Override + public Type<ToolChangedHandler> getAssociatedType() { + return TYPE; + } + + public StateToken getNewToken() { + return newToken; + } + + public java.lang.String getNewTool() { + return newToken != null ? newToken.getTool() : null; + } + + public StateToken getPreviousToken() { + return previousToken; + } + + public java.lang.String getPreviousTool() { + return previousToken != null ? previousToken.getTool() : null; + } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((newToken == null) ? 0 : newToken.hashCode()); + result = prime * result + ((previousToken == null) ? 0 : previousToken.hashCode()); + return result; + } + + @Override + public String toString() { + return "ToolChangedEvent[" + getPreviousTool() + "," + getNewTool() + "]"; + } +} Copied: trunk/src/main/java/cc/kune/core/client/events/UserSignInEvent.java (from rev 1655, trunk/src/main/java/cc/kune/core/client/state/UserSignInEvent.java) =================================================================== --- trunk/src/main/java/cc/kune/core/client/events/UserSignInEvent.java (rev 0) +++ trunk/src/main/java/cc/kune/core/client/events/UserSignInEvent.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -0,0 +1,85 @@ +/* + * + * Copyright (C) 2007-2011 The kune development team (see CREDITS for details) + * This file is part of kune. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ +package cc.kune.core.client.events; + +import com.google.gwt.event.shared.EventHandler; +import com.google.gwt.event.shared.GwtEvent; +import com.google.gwt.event.shared.HandlerRegistration; +import com.google.gwt.event.shared.HasHandlers; + +public class UserSignInEvent extends GwtEvent<UserSignInEvent.UserSignInHandler> { + + public interface HasUserSignInHandlers extends HasHandlers { + HandlerRegistration addUserSignInHandler(UserSignInHandler handler); + } + + public interface UserSignInHandler extends EventHandler { + public void onUserSignIn(UserSignInEvent event); + } + + private static final Type<UserSignInHandler> TYPE = new Type<UserSignInHandler>(); + + public static Type<UserSignInHandler> getType() { + return TYPE; + } + + private final cc.kune.core.shared.dto.UserInfoDTO userInfo; + + public UserSignInEvent(final cc.kune.core.shared.dto.UserInfoDTO userInfo) { + this.userInfo = userInfo; + } + + @Override + protected void dispatch(final UserSignInHandler handler) { + handler.onUserSignIn(this); + } + + @Override + public boolean equals(final Object other) { + if (other != null && other.getClass().equals(this.getClass())) { + final UserSignInEvent o = (UserSignInEvent) other; + return true && ((o.userInfo == null && this.userInfo == null) || (o.userInfo != null && o.userInfo.equals(this.userInfo))); + } + return false; + } + + @Override + public Type<UserSignInHandler> getAssociatedType() { + return TYPE; + } + + public cc.kune.core.shared.dto.UserInfoDTO getUserInfo() { + return userInfo; + } + + @Override + public int hashCode() { + int hashCode = 23; + hashCode = (hashCode * 37) + getClass().hashCode(); + hashCode = (hashCode * 37) + (userInfo == null ? 1 : userInfo.hashCode()); + return hashCode; + } + + @Override + public String toString() { + return "UserSignInEvent[" + userInfo + "]"; + } + +} Copied: trunk/src/main/java/cc/kune/core/client/events/UserSignInOrSignOutEvent.java (from rev 1655, trunk/src/main/java/cc/kune/core/client/state/UserSignInOrSignOutEvent.java) =================================================================== --- trunk/src/main/java/cc/kune/core/client/events/UserSignInOrSignOutEvent.java (rev 0) +++ trunk/src/main/java/cc/kune/core/client/events/UserSignInOrSignOutEvent.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -0,0 +1,94 @@ +/* + * + * Copyright (C) 2007-2011 The kune development team (see CREDITS for details) + * This file is part of kune. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ +package cc.kune.core.client.events; + +import com.google.gwt.event.shared.EventHandler; +import com.google.gwt.event.shared.GwtEvent; +import com.google.gwt.event.shared.HandlerRegistration; +import com.google.gwt.event.shared.HasHandlers; + +public class UserSignInOrSignOutEvent extends GwtEvent<UserSignInOrSignOutEvent.UserSignInOrSignOutHandler> { + + public interface HasUserSignInOrSignOutHandlers extends HasHandlers { + HandlerRegistration addUserSignInOrSignOutHandler(UserSignInOrSignOutHandler handler); + } + + public interface UserSignInOrSignOutHandler extends EventHandler { + public void onUserSignInOrSignOut(UserSignInOrSignOutEvent event); + } + + private static final Type<UserSignInOrSignOutHandler> TYPE = new Type<UserSignInOrSignOutHandler>(); + + public static Type<UserSignInOrSignOutHandler> getType() { + return TYPE; + } + + private final boolean loggedin; + + public UserSignInOrSignOutEvent(final boolean loggedin) { + this.loggedin = loggedin; + } + + @Override + protected void dispatch(final UserSignInOrSignOutHandler handler) { + handler.onUserSignInOrSignOut(this); + } + + @Override + public boolean equals(final Object obj) { + if (this == obj) { + return true; + } + if (obj == null) { + return false; + } + if (getClass() != obj.getClass()) { + return false; + } + final UserSignInOrSignOutEvent other = (UserSignInOrSignOutEvent) obj; + if (loggedin != other.loggedin) { + return false; + } + return true; + } + + @Override + public Type<UserSignInOrSignOutHandler> getAssociatedType() { + return TYPE; + } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + (loggedin ? 1231 : 1237); + return result; + } + + public boolean isLogged() { + return loggedin; + } + + @Override + public String toString() { + return "UserSignInOrSignOutEvent[" + loggedin + "]"; + } + +} Copied: trunk/src/main/java/cc/kune/core/client/events/UserSignOutEvent.java (from rev 1655, trunk/src/main/java/cc/kune/core/client/state/UserSignOutEvent.java) =================================================================== --- trunk/src/main/java/cc/kune/core/client/events/UserSignOutEvent.java (rev 0) +++ trunk/src/main/java/cc/kune/core/client/events/UserSignOutEvent.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -0,0 +1,81 @@ +/* + * + * Copyright (C) 2007-2011 The kune development team (see CREDITS for details) + * This file is part of kune. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ +package cc.kune.core.client.events; + +import com.google.gwt.event.shared.EventHandler; +import com.google.gwt.event.shared.GwtEvent; +import com.google.gwt.event.shared.HandlerRegistration; +import com.google.gwt.event.shared.HasHandlers; +import com.gwtplatform.mvp.client.HasEventBus; + +public class UserSignOutEvent extends GwtEvent<UserSignOutEvent.UserSignOutHandler> { + + public interface HasUserSignOutHandlers extends HasHandlers { + HandlerRegistration addUserSignOutHandler(UserSignOutHandler handler); + } + + public interface UserSignOutHandler extends EventHandler { + public void onUserSignOut(UserSignOutEvent event); + } + + private static final Type<UserSignOutHandler> TYPE = new Type<UserSignOutHandler>(); + + public static void fire(final HasEventBus source) { + source.fireEvent(new UserSignOutEvent()); + } + + public static Type<UserSignOutHandler> getType() { + return TYPE; + } + + public UserSignOutEvent() { + } + + @Override + protected void dispatch(final UserSignOutHandler handler) { + handler.onUserSignOut(this); + } + + @Override + public boolean equals(final Object other) { + if (other != null && other.getClass().equals(this.getClass())) { + return true; + } + return false; + } + + @Override + public Type<UserSignOutHandler> getAssociatedType() { + return TYPE; + } + + @Override + public int hashCode() { + int hashCode = 23; + hashCode = (hashCode * 37) + getClass().hashCode(); + return hashCode; + } + + @Override + public String toString() { + return "UserSignOutEvent[" + "]"; + } + +} Modified: trunk/src/main/java/cc/kune/core/client/i18n/I18nUITranslationService.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/i18n/I18nUITranslationService.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/core/client/i18n/I18nUITranslationService.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -35,10 +35,10 @@ import cc.kune.common.client.utils.WindowUtils; import cc.kune.common.shared.i18n.I18nTranslationService; import cc.kune.common.shared.utils.TextUtils; +import cc.kune.core.client.events.UserSignInEvent; +import cc.kune.core.client.events.UserSignInEvent.UserSignInHandler; import cc.kune.core.client.rpcservices.I18nServiceAsync; import cc.kune.core.client.state.Session; -import cc.kune.core.client.state.UserSignInEvent; -import cc.kune.core.client.state.UserSignInEvent.UserSignInHandler; import cc.kune.core.shared.dto.I18nLanguageDTO; import com.google.gwt.core.client.Scheduler; Modified: trunk/src/main/java/cc/kune/core/client/i18n/KuneConstants.properties =================================================================== --- trunk/src/main/java/cc/kune/core/client/i18n/KuneConstants.properties 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/core/client/i18n/KuneConstants.properties 2012-01-08 23:06:53 UTC (rev 1656) @@ -102,7 +102,7 @@ andNExternalUser = and [%d] external user thisIsOnlyAPreviewOfHowThisPageWouldLookLikeToTheGeneralPublicOnTheInternet = This is only a preview of how this page would look like to the general public on the internet. preview = Preview -paramUnderLicenseParam = � [%s], under license: [%s] +paramUnderLicenseParam = © [%s], under license: [%s] clickToRename = Click to rename createANewDocumentIfYouChooseToPublishItThisDocumentWillAppearAsANewPageInThePublicWeb = Create a New Document. If you choose to publish it, this document will appear as a new 'Page' in the public web reloadCurrentPage = Reload current page @@ -343,8 +343,8 @@ error = Error toJoinAChatroomYouNeedToBeOnline = To join a chatroom you need to be 'online' licenseWizard = License wizard -backUsedInButton = � Back -nextUsedInButton = Next � +backUsedInButton = « Back +nextUsedInButton = Next » select = Select finishUsedInButton = Finish selectTheLicenseYouPreferUsingForSharingYourGroupContentsWithOtherPeople = Select the license you prefer using for sharing your group contents with other people: @@ -433,7 +433,6 @@ nowadaysTheGadgetsMapsPollsEtcAreExperimentalInSomeBrowsersYouMightExperienceProblemsWithCertainGadg = Nowadays the gadgets (maps, polls, etc) are experimental. In some browsers you might experience problems with certain gadgets errorConfiguringTheTool = Error configuring the tool youDoNotHaveRightsToPerformThatAction = You do not have rights to perform that action -0 = 0 signInOrRegisterToHelpWithTheTranslation = Sign in or register to help with the translation thisNameAlreadyExistsItIsUsedWhenAFileOrAFolderWithTheSameNameAlreadyExists = This name already exists doYouWantToAddParamAsAMemberOfParam = Do you want to add '[%s]' as a member of '[%s]'? Modified: trunk/src/main/java/cc/kune/core/client/i18n/KuneConstants_fr.properties =================================================================== --- trunk/src/main/java/cc/kune/core/client/i18n/KuneConstants_fr.properties 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/core/client/i18n/KuneConstants_fr.properties 2012-01-08 23:06:53 UTC (rev 1656) @@ -431,7 +431,6 @@ nowadaysTheGadgetsMapsPollsEtcAreExperimentalInSomeBrowsersYouMightExperienceProblemsWithCertainGadg = Les gadgets (cartes, sondages, etc) sont encore expérimentaux. Dans certains navigateurs, vous pourrez avoir des problèmes avec certains gadgets errorConfiguringTheTool = Erreur lors de la configuration de l'outil youDoNotHaveRightsToPerformThatAction = Vous n'avez pas les permissions suffisantes pour accomplir cette action -0 = 0 signInOrRegisterToHelpWithTheTranslation = Connectez-vous ou créez un compte pour aider à la traduction thisNameAlreadyExistsItIsUsedWhenAFileOrAFolderWithTheSameNameAlreadyExists = Ce nom existe déjà doYouWantToAddParamAsAMemberOfParam = Voulez-vous ajouter '[%s]' comme membre de '[%s]' ? Deleted: trunk/src/main/java/cc/kune/core/client/init/AppStartEvent.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/init/AppStartEvent.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/core/client/init/AppStartEvent.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -1,94 +0,0 @@ -/* - * - * Copyright (C) 2007-2011 The kune development team (see CREDITS for details) - * This file is part of kune. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * - */ -package cc.kune.core.client.init; - -import com.google.gwt.event.shared.EventHandler; -import com.google.gwt.event.shared.GwtEvent; -import com.google.gwt.event.shared.HandlerRegistration; -import com.google.gwt.event.shared.HasHandlers; -import com.gwtplatform.mvp.client.HasEventBus; - -public class AppStartEvent extends GwtEvent<AppStartEvent.AppStartHandler> { - - public interface HasAppStartHandlers extends HasHandlers { - HandlerRegistration addAppStartHandler(AppStartHandler handler); - } - - public interface AppStartHandler extends EventHandler { - public void onAppStart(AppStartEvent event); - } - - private static final Type<AppStartHandler> TYPE = new Type<AppStartHandler>(); - - public static void fire(HasEventBus source, cc.kune.core.shared.dto.InitDataDTO initData) { - source.fireEvent(new AppStartEvent(initData)); - } - - public static Type<AppStartHandler> getType() { - return TYPE; - } - - private final cc.kune.core.shared.dto.InitDataDTO initData; - - public AppStartEvent(cc.kune.core.shared.dto.InitDataDTO initData) { - this.initData = initData; - } - - @Override - public Type<AppStartHandler> getAssociatedType() { - return TYPE; - } - - public cc.kune.core.shared.dto.InitDataDTO getInitData() { - return initData; - } - - @Override - protected void dispatch(AppStartHandler handler) { - handler.onAppStart(this); - } - - @Override - public boolean equals(Object other) { - if (other != null && other.getClass().equals(this.getClass())) { - AppStartEvent o = (AppStartEvent) other; - return true - && ((o.initData == null && this.initData == null) || (o.initData != null && o.initData.equals(this.initData))) - ; - } - return false; - } - - @Override - public int hashCode() { - int hashCode = 23; - hashCode = (hashCode * 37) + getClass().hashCode(); - hashCode = (hashCode * 37) + (initData == null ? 1 : initData.hashCode()); - return hashCode; - } - - @Override - public String toString() { - return "AppStartEvent[" - + initData - + "]"; - } - -} Modified: trunk/src/main/java/cc/kune/core/client/init/AppStarterDefault.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/init/AppStarterDefault.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/core/client/init/AppStarterDefault.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -26,6 +26,8 @@ import cc.kune.common.client.notify.UserNotifyEvent; import cc.kune.common.client.resources.CommonResources; import cc.kune.common.client.utils.SimpleResponseCallback; +import cc.kune.core.client.events.AppStartEvent; +import cc.kune.core.client.events.AppStopEvent; import cc.kune.core.client.rpcservices.SiteServiceAsync; import cc.kune.core.client.state.Session; import cc.kune.core.shared.dto.InitDataDTO; Deleted: trunk/src/main/java/cc/kune/core/client/init/AppStopEvent.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/init/AppStopEvent.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/core/client/init/AppStopEvent.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -1,85 +0,0 @@ -/* - * - * Copyright (C) 2007-2011 The kune development team (see CREDITS for details) - * This file is part of kune. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * - */ -package cc.kune.core.client.init; - -import com.google.gwt.event.shared.EventHandler; -import com.google.gwt.event.shared.GwtEvent; -import com.google.gwt.event.shared.HandlerRegistration; -import com.google.gwt.event.shared.HasHandlers; -import com.gwtplatform.mvp.client.HasEventBus; - -public class AppStopEvent extends GwtEvent<AppStopEvent.AppStopHandler> { - - public interface HasAppStopHandlers extends HasHandlers { - HandlerRegistration addAppStopHandler(AppStopHandler handler); - } - - public interface AppStopHandler extends EventHandler { - public void onAppStop(AppStopEvent event); - } - - private static final Type<AppStopHandler> TYPE = new Type<AppStopHandler>(); - - public static void fire(HasEventBus source) { - source.fireEvent(new AppStopEvent()); - } - - public static Type<AppStopHandler> getType() { - return TYPE; - } - - - public AppStopEvent() { - } - - @Override - public Type<AppStopHandler> getAssociatedType() { - return TYPE; - } - - @Override - protected void dispatch(AppStopHandler handler) { - handler.onAppStop(this); - } - - @Override - public boolean equals(Object other) { - if (other != null && other.getClass().equals(this.getClass())) { - AppStopEvent o = (AppStopEvent) other; - return true - ; - } - return false; - } - - @Override - public int hashCode() { - int hashCode = 23; - hashCode = (hashCode * 37) + getClass().hashCode(); - return hashCode; - } - - @Override - public String toString() { - return "AppStopEvent[" - + "]"; - } - -} Modified: trunk/src/main/java/cc/kune/core/client/sitebar/SiteUserOptionsPresenter.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/sitebar/SiteUserOptionsPresenter.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/core/client/sitebar/SiteUserOptionsPresenter.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -31,16 +31,16 @@ import cc.kune.common.client.actions.ui.descrip.ToolbarSeparatorDescriptor; import cc.kune.common.client.actions.ui.descrip.ToolbarSeparatorDescriptor.Type; import cc.kune.common.shared.i18n.I18nTranslationService; +import cc.kune.core.client.events.UserSignInEvent; +import cc.kune.core.client.events.UserSignOutEvent; +import cc.kune.core.client.events.UserSignInEvent.UserSignInHandler; +import cc.kune.core.client.events.UserSignOutEvent.UserSignOutHandler; import cc.kune.core.client.resources.CoreMessages; import cc.kune.core.client.resources.CoreResources; import cc.kune.core.client.services.ClientFileDownloadUtils; import cc.kune.core.client.sn.actions.GotoGroupAction; import cc.kune.core.client.state.Session; import cc.kune.core.client.state.StateManager; -import cc.kune.core.client.state.UserSignInEvent; -import cc.kune.core.client.state.UserSignInEvent.UserSignInHandler; -import cc.kune.core.client.state.UserSignOutEvent; -import cc.kune.core.client.state.UserSignOutEvent.UserSignOutHandler; import cc.kune.core.shared.dto.GroupDTO; import cc.kune.core.shared.dto.UserInfoDTO; Modified: trunk/src/main/java/cc/kune/core/client/sitebar/SitebarActionsPanel.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/sitebar/SitebarActionsPanel.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/core/client/sitebar/SitebarActionsPanel.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -24,7 +24,7 @@ import cc.kune.common.shared.i18n.I18nTranslationService; import cc.kune.core.client.sitebar.SitebarActionsPresenter.SitebarActionsView; import cc.kune.core.client.sitebar.logo.SiteLogo; -import cc.kune.gspace.client.GSpaceArmor; +import cc.kune.gspace.client.armor.GSpaceArmor; import com.google.gwt.user.client.ui.Widget; import com.google.inject.Inject; Modified: trunk/src/main/java/cc/kune/core/client/sitebar/SitebarActionsPresenter.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/sitebar/SitebarActionsPresenter.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/core/client/sitebar/SitebarActionsPresenter.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -33,7 +33,7 @@ import cc.kune.common.client.resources.CommonResources; import cc.kune.common.client.ui.KuneWindowUtils; import cc.kune.common.shared.i18n.I18nTranslationService; -import cc.kune.core.client.init.AppStartEvent; +import cc.kune.core.client.events.AppStartEvent; import cc.kune.core.client.resources.CoreResources; import com.google.gwt.event.shared.EventBus; Modified: trunk/src/main/java/cc/kune/core/client/sitebar/SitebarSignInLink.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/sitebar/SitebarSignInLink.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/core/client/sitebar/SitebarSignInLink.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -23,14 +23,14 @@ import cc.kune.common.client.actions.Action; import cc.kune.common.client.actions.ActionEvent; import cc.kune.common.client.actions.ui.descrip.ButtonDescriptor; +import cc.kune.core.client.events.UserSignInEvent; +import cc.kune.core.client.events.UserSignOutEvent; +import cc.kune.core.client.events.UserSignInEvent.UserSignInHandler; +import cc.kune.core.client.events.UserSignOutEvent.UserSignOutHandler; import cc.kune.core.client.i18n.I18nUITranslationService; import cc.kune.core.client.state.Session; import cc.kune.core.client.state.SiteTokens; import cc.kune.core.client.state.StateManager; -import cc.kune.core.client.state.UserSignInEvent; -import cc.kune.core.client.state.UserSignInEvent.UserSignInHandler; -import cc.kune.core.client.state.UserSignOutEvent; -import cc.kune.core.client.state.UserSignOutEvent.UserSignOutHandler; import com.google.gwt.event.shared.EventBus; import com.google.inject.Inject; Modified: trunk/src/main/java/cc/kune/core/client/sitebar/SitebarSignOutLink.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/sitebar/SitebarSignOutLink.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/core/client/sitebar/SitebarSignOutLink.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -33,12 +33,12 @@ import cc.kune.core.client.errors.ErrorHandler; import cc.kune.core.client.errors.SessionExpiredException; import cc.kune.core.client.errors.UserMustBeLoggedException; +import cc.kune.core.client.events.UserSignInEvent; +import cc.kune.core.client.events.UserSignOutEvent; +import cc.kune.core.client.events.UserSignInEvent.UserSignInHandler; +import cc.kune.core.client.events.UserSignOutEvent.UserSignOutHandler; import cc.kune.core.client.rpcservices.UserServiceAsync; import cc.kune.core.client.state.Session; -import cc.kune.core.client.state.UserSignInEvent; -import cc.kune.core.client.state.UserSignInEvent.UserSignInHandler; -import cc.kune.core.client.state.UserSignOutEvent; -import cc.kune.core.client.state.UserSignOutEvent.UserSignOutHandler; import com.google.gwt.event.shared.EventBus; import com.google.gwt.user.client.rpc.AsyncCallback; Modified: trunk/src/main/java/cc/kune/core/client/sitebar/logo/SiteLogo.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/sitebar/logo/SiteLogo.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/core/client/sitebar/logo/SiteLogo.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -20,9 +20,9 @@ package cc.kune.core.client.sitebar.logo; import cc.kune.common.client.tooltip.Tooltip; +import cc.kune.core.client.events.AppStartEvent; +import cc.kune.core.client.events.AppStartEvent.AppStartHandler; import cc.kune.core.client.i18n.I18nUITranslationService; -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.core.client.state.SiteTokens; import cc.kune.core.client.state.StateManager; Modified: trunk/src/main/java/cc/kune/core/client/sitebar/search/SitebarSearchPanel.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/sitebar/search/SitebarSearchPanel.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/core/client/sitebar/search/SitebarSearchPanel.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -24,7 +24,7 @@ import cc.kune.core.client.sitebar.search.SitebarSearchPresenter.SitebarSearchView; import cc.kune.core.client.state.Session; import cc.kune.core.client.state.StateManager; -import cc.kune.gspace.client.GSpaceArmor; +import cc.kune.gspace.client.armor.GSpaceArmor; import com.google.gwt.event.dom.client.HasAllFocusHandlers; import com.google.gwt.event.dom.client.HasClickHandlers; Modified: trunk/src/main/java/cc/kune/core/client/sitebar/spaces/SpaceSelectorPanel.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/sitebar/spaces/SpaceSelectorPanel.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/core/client/sitebar/spaces/SpaceSelectorPanel.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -24,8 +24,8 @@ import cc.kune.core.client.i18n.I18nUITranslationService; import cc.kune.core.client.sitebar.spaces.SpaceSelectorPresenter.SpaceSelectorView; import cc.kune.core.client.state.Session; -import cc.kune.gspace.client.GSpaceArmor; -import cc.kune.gspace.client.resources.GSpaceArmorResources; +import cc.kune.gspace.client.armor.GSpaceArmor; +import cc.kune.gspace.client.armor.resources.GSpaceArmorResources; import com.google.gwt.core.client.GWT; import com.google.gwt.event.dom.client.HasClickHandlers; Modified: trunk/src/main/java/cc/kune/core/client/sitebar/spaces/SpaceSelectorPanel.ui.xml =================================================================== --- trunk/src/main/java/cc/kune/core/client/sitebar/spaces/SpaceSelectorPanel.ui.xml 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/core/client/sitebar/spaces/SpaceSelectorPanel.ui.xml 2012-01-08 23:06:53 UTC (rev 1656) @@ -2,7 +2,7 @@ <ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder" xmlns:g="urn:import:com.google.gwt.user.client.ui"> <ui:with field='img' - type='cc.kune.gspace.client.resources.GSpaceArmorResources' /> + type='cc.kune.gspace.client.armor.resources.GSpaceArmorResources' /> <g:FlowPanel ui:field="panel" addStyleNames="k-space-sel k-10corners k-floatleft k-pointer" > <g:ToggleButton ui:field="homeButton" styleName="k-space-sel-btn"> <g:upFace image='{img.homeSpaceDisabled}' /> Modified: trunk/src/main/java/cc/kune/core/client/sitebar/spaces/SpaceSelectorPresenter.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/sitebar/spaces/SpaceSelectorPresenter.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/core/client/sitebar/spaces/SpaceSelectorPresenter.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -24,14 +24,14 @@ import cc.kune.common.client.ui.MaskWidgetView; import cc.kune.common.shared.i18n.I18nTranslationService; import cc.kune.core.client.auth.SignIn; +import cc.kune.core.client.events.AppStartEvent; +import cc.kune.core.client.events.UserSignOutEvent; import cc.kune.core.client.events.WindowFocusEvent; -import cc.kune.core.client.init.AppStartEvent; import cc.kune.core.client.state.Session; import cc.kune.core.client.state.SiteTokens; import cc.kune.core.client.state.StateManager; import cc.kune.core.client.state.TokenUtils; -import cc.kune.core.client.state.UserSignOutEvent; -import cc.kune.gspace.client.GSpaceArmor; +import cc.kune.gspace.client.armor.GSpaceArmor; import cc.kune.gspace.client.style.GSpaceBackManager; import com.google.gwt.event.dom.client.ClickEvent; Modified: trunk/src/main/java/cc/kune/core/client/sn/AbstractSNPanel.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/sn/AbstractSNPanel.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/core/client/sn/AbstractSNPanel.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -33,7 +33,7 @@ import cc.kune.core.client.dnd.KuneDragController; import cc.kune.core.client.dnd.NotImplementedDropManager; import cc.kune.core.client.ui.BasicDragableThumb; -import cc.kune.gspace.client.GSpaceArmor; +import cc.kune.gspace.client.armor.GSpaceArmor; import com.google.gwt.core.client.GWT; import com.google.gwt.event.dom.client.ClickEvent; Modified: trunk/src/main/java/cc/kune/core/client/sn/GroupSNPanel.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/sn/GroupSNPanel.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/core/client/sn/GroupSNPanel.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -30,7 +30,7 @@ import cc.kune.core.client.sn.GroupSNPresenter.GroupSNView; import cc.kune.core.client.ui.BasicDragableThumb; import cc.kune.core.shared.dto.GroupDTO; -import cc.kune.gspace.client.GSpaceArmor; +import cc.kune.gspace.client.armor.GSpaceArmor; import com.google.gwt.user.client.ui.Widget; import com.google.inject.Inject; Modified: trunk/src/main/java/cc/kune/core/client/sn/GroupSNPresenter.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/sn/GroupSNPresenter.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/core/client/sn/GroupSNPresenter.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -23,19 +23,19 @@ import cc.kune.common.client.actions.ui.IsActionExtensible; import cc.kune.common.client.actions.ui.descrip.GuiActionDescCollection; +import cc.kune.core.client.events.SocialNetworkChangedEvent; +import cc.kune.core.client.events.StateChangedEvent; +import cc.kune.core.client.events.UserSignInEvent; +import cc.kune.core.client.events.UserSignOutEvent; +import cc.kune.core.client.events.UserSignInEvent.UserSignInHandler; +import cc.kune.core.client.events.UserSignOutEvent.UserSignOutHandler; import cc.kune.core.client.services.ClientFileDownloadUtils; import cc.kune.core.client.sn.actions.registry.GroupSNAdminsMenuItemsRegistry; import cc.kune.core.client.sn.actions.registry.GroupSNCollabsMenuItemsRegistry; import cc.kune.core.client.sn.actions.registry.GroupSNConfActions; import cc.kune.core.client.sn.actions.registry.GroupSNPendingsMenuItemsRegistry; import cc.kune.core.client.state.Session; -import cc.kune.core.client.state.SocialNetworkChangedEvent; -import cc.kune.core.client.state.StateChangedEvent; import cc.kune.core.client.state.StateManager; -import cc.kune.core.client.state.UserSignInEvent; -import cc.kune.core.client.state.UserSignInEvent.UserSignInHandler; -import cc.kune.core.client.state.UserSignOutEvent; -import cc.kune.core.client.state.UserSignOutEvent.UserSignOutHandler; import cc.kune.core.shared.domain.utils.AccessRights; import cc.kune.core.shared.dto.AccessListsDTO; import cc.kune.core.shared.dto.GroupDTO; Deleted: trunk/src/main/java/cc/kune/core/client/sn/SimpleContactManager.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/sn/SimpleContactManager.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/core/client/sn/SimpleContactManager.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -1,30 +0,0 @@ -/* - * - * Copyright (C) 2007-2011 The kune development team (see CREDITS for details) - * This file is part of kune. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * - */ -package cc.kune.core.client.sn; - -public interface SimpleContactManager { - - void addNewBuddy(String shortName); - - void chat(String shortName); - - boolean isBuddy(String shortName); - -} Modified: trunk/src/main/java/cc/kune/core/client/sn/UserSNPanel.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/sn/UserSNPanel.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/core/client/sn/UserSNPanel.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -31,7 +31,7 @@ import cc.kune.core.client.ui.BasicDragableThumb; import cc.kune.core.shared.dto.GroupDTO; import cc.kune.core.shared.dto.UserSimpleDTO; -import cc.kune.gspace.client.GSpaceArmor; +import cc.kune.gspace.client.armor.GSpaceArmor; import com.google.gwt.user.client.ui.Label; import com.google.gwt.user.client.ui.Widget; Modified: trunk/src/main/java/cc/kune/core/client/sn/UserSNPresenter.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/sn/UserSNPresenter.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/core/client/sn/UserSNPresenter.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -24,19 +24,19 @@ import cc.kune.common.client.actions.ui.IsActionExtensible; import cc.kune.common.client.actions.ui.descrip.GuiActionDescCollection; import cc.kune.common.shared.i18n.I18nTranslationService; +import cc.kune.core.client.events.SocialNetworkChangedEvent; +import cc.kune.core.client.events.StateChangedEvent; +import cc.kune.core.client.events.UserSignInEvent; +import cc.kune.core.client.events.UserSignOutEvent; +import cc.kune.core.client.events.UserSignInEvent.UserSignInHandler; +import cc.kune.core.client.events.UserSignOutEvent.UserSignOutHandler; import cc.kune.core.client.services.ClientFileDownloadUtils; import cc.kune.core.client.sn.UserSNPresenter.UserSNProxy; import cc.kune.core.client.sn.UserSNPresenter.UserSNView; import cc.kune.core.client.sn.actions.registry.UserSNConfActions; import cc.kune.core.client.sn.actions.registry.UserSNMenuItemsRegistry; import cc.kune.core.client.state.Session; -import cc.kune.core.client.state.SocialNetworkChangedEvent; -import cc.kune.core.client.state.StateChangedEvent; import cc.kune.core.client.state.StateManager; -import cc.kune.core.client.state.UserSignInEvent; -import cc.kune.core.client.state.UserSignInEvent.UserSignInHandler; -import cc.kune.core.client.state.UserSignOutEvent; -import cc.kune.core.client.state.UserSignOutEvent.UserSignOutHandler; import cc.kune.core.shared.dto.GroupDTO; import cc.kune.core.shared.dto.ParticipationDataDTO; import cc.kune.core.shared.dto.StateAbstractDTO; Modified: trunk/src/main/java/cc/kune/core/client/sn/actions/AddNewBuddiesAction.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/sn/actions/AddNewBuddiesAction.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/core/client/sn/actions/AddNewBuddiesAction.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -25,10 +25,10 @@ import cc.kune.common.client.notify.NotifyUser; import cc.kune.common.client.utils.SimpleResponseCallback; import cc.kune.common.shared.i18n.I18nTranslationService; +import cc.kune.core.client.contacts.SimpleContactManager; import cc.kune.core.client.resources.CoreResources; import cc.kune.core.client.sitebar.search.EntitySearchPanel; import cc.kune.core.client.sitebar.search.OnEntitySelectedInSearch; -import cc.kune.core.client.sn.SimpleContactManager; import com.google.inject.Inject; Added: trunk/src/main/java/cc/kune/core/client/sn/actions/GroupSNModerationSubMenu.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/sn/actions/GroupSNModerationSubMenu.java (rev 0) +++ trunk/src/main/java/cc/kune/core/client/sn/actions/GroupSNModerationSubMenu.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -0,0 +1,9 @@ +package cc.kune.core.client.sn.actions; + +import cc.kune.common.client.actions.ui.descrip.SubMenuDescriptor; + +import com.google.inject.Singleton; + +@Singleton +public class GroupSNModerationSubMenu extends SubMenuDescriptor { +} Added: trunk/src/main/java/cc/kune/core/client/sn/actions/GroupSNOptionsMenu.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/sn/actions/GroupSNOptionsMenu.java (rev 0) +++ trunk/src/main/java/cc/kune/core/client/sn/actions/GroupSNOptionsMenu.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -0,0 +1,9 @@ +package cc.kune.core.client.sn.actions; + +import cc.kune.common.client.actions.ui.descrip.MenuDescriptor; + +import com.google.inject.Singleton; + +@Singleton +public class GroupSNOptionsMenu extends MenuDescriptor { +} Added: trunk/src/main/java/cc/kune/core/client/sn/actions/GroupSNVisibilitySubMenu.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/sn/actions/GroupSNVisibilitySubMenu.java (rev 0) +++ trunk/src/main/java/cc/kune/core/client/sn/actions/GroupSNVisibilitySubMenu.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -0,0 +1,9 @@ +package cc.kune.core.client.sn.actions; + +import cc.kune.common.client.actions.ui.descrip.SubMenuDescriptor; + +import com.google.inject.Singleton; + +@Singleton +public class GroupSNVisibilitySubMenu extends SubMenuDescriptor { +} Deleted: trunk/src/main/java/cc/kune/core/client/sn/actions/RolComparator.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/sn/actions/RolComparator.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/core/client/sn/actions/RolComparator.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -1,45 +0,0 @@ -/* - * - * Copyright (C) 2007-2011 The kune development team (see CREDITS for details) - * This file is part of kune. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * - */ -package cc.kune.core.client.sn.actions; - -import cc.kune.core.shared.domain.utils.AccessRights; -import cc.kune.core.shared.dto.AccessRolDTO; - -public final class RolComparator { - - public static boolean isEnabled(final AccessRolDTO rolRequired, final AccessRights rights) { - switch (rolRequired) { - case Administrator: - return rights.isAdministrable(); - case Editor: - return rights.isEditable(); - case Viewer: - return rights.isVisible(); - } - return false; - } - - public static boolean isMember(final AccessRights newRights) { - return newRights.isAdministrable() || newRights.isEditable(); - } - - private RolComparator() { - } -} Modified: trunk/src/main/java/cc/kune/core/client/sn/actions/SessionAction.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/sn/actions/SessionAction.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/core/client/sn/actions/SessionAction.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -21,9 +21,9 @@ import cc.kune.common.client.actions.AbstractExtendedAction; import cc.kune.common.client.actions.ui.descrip.GuiActionDescrip; +import cc.kune.core.client.events.UserSignInOrSignOutEvent; +import cc.kune.core.client.events.UserSignInOrSignOutEvent.UserSignInOrSignOutHandler; import cc.kune.core.client.state.Session; -import cc.kune.core.client.state.UserSignInOrSignOutEvent; -import cc.kune.core.client.state.UserSignInOrSignOutEvent.UserSignInOrSignOutHandler; import com.google.inject.Inject; Modified: trunk/src/main/java/cc/kune/core/client/sn/actions/WriteToAdmins.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/sn/actions/WriteToAdmins.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/core/client/sn/actions/WriteToAdmins.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -21,18 +21,18 @@ import cc.kune.common.client.actions.ui.descrip.MenuItemDescriptor; import cc.kune.common.shared.i18n.I18nTranslationService; -import cc.kune.core.client.sn.actions.registry.GroupSNConfActions; import com.google.inject.Inject; public class WriteToAdmins extends MenuItemDescriptor { @Inject - public WriteToAdmins(final WriteToAction action, final I18nTranslationService i18n) { + public WriteToAdmins(final WriteToAction action, final I18nTranslationService i18n, + final GroupSNOptionsMenu optionsMenu) { super(action); action.setOnlyToAdmin(true); withText(i18n.t("Write to the administrators of this group")); - setParent(GroupSNConfActions.OPTIONS_MENU); + setParent(optionsMenu); setPosition(0); } } Modified: trunk/src/main/java/cc/kune/core/client/sn/actions/WriteToBuddyHeaderButton.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/sn/actions/WriteToBuddyHeaderButton.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/core/client/sn/actions/WriteToBuddyHeaderButton.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -23,10 +23,10 @@ import cc.kune.common.client.actions.PropertyChangeEvent; import cc.kune.common.client.actions.PropertyChangeListener; import cc.kune.common.client.actions.ui.descrip.ButtonDescriptor; -import cc.kune.core.client.sn.SimpleContactManager; +import cc.kune.core.client.contacts.SimpleContactManager; +import cc.kune.core.client.events.StateChangedEvent; +import cc.kune.core.client.events.StateChangedEvent.StateChangedHandler; import cc.kune.core.client.state.Session; -import cc.kune.core.client.state.StateChangedEvent; -import cc.kune.core.client.state.StateChangedEvent.StateChangedHandler; import cc.kune.core.client.state.StateManager; import cc.kune.core.client.ws.entheader.EntityHeader; import cc.kune.core.shared.dto.GroupDTO; Modified: trunk/src/main/java/cc/kune/core/client/sn/actions/WriteToMembers.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/sn/actions/WriteToMembers.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/core/client/sn/actions/WriteToMembers.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -21,18 +21,18 @@ import cc.kune.common.client.actions.ui.descrip.MenuItemDescriptor; import cc.kune.common.shared.i18n.I18nTranslationService; -import cc.kune.core.client.sn.actions.registry.GroupSNConfActions; import com.google.inject.Inject; public class WriteToMembers extends MenuItemDescriptor { @Inject - public WriteToMembers(final WriteToAction action, final I18nTranslationService i18n) { + public WriteToMembers(final WriteToAction action, final I18nTranslationService i18n, + final GroupSNOptionsMenu optionsMenu) { super(action); action.setOnlyToAdmin(false); withText(i18n.t("Write to the members of this group")); - setParent(GroupSNConfActions.OPTIONS_MENU); + setParent(optionsMenu); setPosition(0); } } Modified: trunk/src/main/java/cc/kune/core/client/sn/actions/conditions/IsBuddieCondition.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/sn/actions/conditions/IsBuddieCondition.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/core/client/sn/actions/conditions/IsBuddieCondition.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -22,7 +22,7 @@ import cc.kune.common.client.actions.ui.descrip.GuiActionDescrip; import cc.kune.common.client.actions.ui.descrip.GuiAddCondition; import cc.kune.common.client.errors.UIException; -import cc.kune.core.client.sn.SimpleContactManager; +import cc.kune.core.client.contacts.SimpleContactManager; import cc.kune.core.client.state.Session; import cc.kune.core.shared.dto.GroupDTO; import cc.kune.core.shared.dto.UserSimpleDTO; Modified: trunk/src/main/java/cc/kune/core/client/sn/actions/conditions/IsNotBuddieCondition.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/sn/actions/conditions/IsNotBuddieCondition.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/core/client/sn/actions/conditions/IsNotBuddieCondition.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -20,7 +20,7 @@ package cc.kune.core.client.sn.actions.conditions; import cc.kune.common.client.actions.ui.descrip.GuiActionDescrip; -import cc.kune.core.client.sn.SimpleContactManager; +import cc.kune.core.client.contacts.SimpleContactManager; import cc.kune.core.client.state.Session; import com.google.inject.Inject; Modified: trunk/src/main/java/cc/kune/core/client/sn/actions/registry/GroupSNConfActions.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/sn/actions/registry/GroupSNConfActions.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/core/client/sn/actions/registry/GroupSNConfActions.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -21,15 +21,18 @@ import cc.kune.common.client.actions.ui.descrip.ButtonDescriptor; import cc.kune.common.client.actions.ui.descrip.GuiActionDescrip; -import cc.kune.common.client.actions.ui.descrip.MenuDescriptor; import cc.kune.common.client.actions.ui.descrip.MenuItemDescriptor; import cc.kune.common.client.actions.ui.descrip.MenuRadioItemDescriptor; import cc.kune.common.client.actions.ui.descrip.MenuTitleItemDescriptor; -import cc.kune.common.client.actions.ui.descrip.SubMenuDescriptor; import cc.kune.common.shared.i18n.I18nTranslationService; +import cc.kune.core.client.events.StateChangedEvent; +import cc.kune.core.client.events.StateChangedEvent.StateChangedHandler; import cc.kune.core.client.resources.CoreResources; import cc.kune.core.client.sn.GroupSNPresenter; import cc.kune.core.client.sn.actions.AddEntityToThisGroupAction; +import cc.kune.core.client.sn.actions.GroupSNModerationSubMenu; +import cc.kune.core.client.sn.actions.GroupSNOptionsMenu; +import cc.kune.core.client.sn.actions.GroupSNVisibilitySubMenu; import cc.kune.core.client.sn.actions.JoinGroupAction; import cc.kune.core.client.sn.actions.MembersModerationMenuItem; import cc.kune.core.client.sn.actions.MembersVisibilityMenuItem; @@ -39,8 +42,6 @@ import cc.kune.core.client.sn.actions.conditions.IsGroupCondition; import cc.kune.core.client.sn.actions.conditions.IsLoggedCondition; import cc.kune.core.client.state.Session; -import cc.kune.core.client.state.StateChangedEvent; -import cc.kune.core.client.state.StateChangedEvent.StateChangedHandler; import cc.kune.core.client.state.StateManager; import cc.kune.core.shared.domain.AdmissionType; import cc.kune.core.shared.domain.SocialNetworkVisibility; @@ -60,10 +61,7 @@ @SuppressWarnings("serial") public class GroupSNConfActions extends AbstractSNActionsRegistry { - public static final SubMenuDescriptor MODERATION_SUBMENU = new SubMenuDescriptor(); - public static final MenuDescriptor OPTIONS_MENU = new MenuDescriptor(); public static final String OPTIONS_STYLES = "k-sn-options-menu, k-noborder, k-nobackcolor, k-no-backimage, k-btn-min"; - public static final SubMenuDescriptor VISIBILITY_SUBMENU = new SubMenuDescriptor(); @Inject public GroupSNConfActions(final Session session, final StateManager stateManager, @@ -72,8 +70,9 @@ final IsLoggedCondition isLoggedCondition, final JoinGroupAction joinGroupAction, final WriteToMembers writeToMembers, final WriteToAdmins writeToAdmins, final IsGroupCondition isGroupCondition, final UnJoinFromCurrentGroupAction unJoinGroupAction, - final AddEntityToThisGroupAction addEntityToThisGroupAction) { - OPTIONS_MENU.withToolTip(i18n.t("Options")).withIcon(res.arrowdownsitebar()).withStyles( + final AddEntityToThisGroupAction addEntityToThisGroupAction, final GroupSNOptionsMenu optionsMenu, + final GroupSNModerationSubMenu moderationSubMenu, final GroupSNVisibilitySubMenu visibilitySubMenu) { + optionsMenu.withToolTip(i18n.t("Options")).withIcon(res.arrowdownsitebar()).withStyles( OPTIONS_STYLES); final MenuRadioItemDescriptor anyoneItem = membersVisibility.get().withVisibility( SocialNetworkVisibility.anyone); @@ -87,19 +86,19 @@ AdmissionType.Moderated); final MenuRadioItemDescriptor openItem = membersModeration.get().withModeration(AdmissionType.Open); - addImpl(OPTIONS_MENU); - new MenuTitleItemDescriptor(i18n.t("Options")).withParent(OPTIONS_MENU); - new MenuItemDescriptor(addEntityToThisGroupAction).withParent(OPTIONS_MENU).setPosition(0); - new MenuItemDescriptor(unJoinGroupAction).withParent(OPTIONS_MENU).setPosition(1); + addImpl(optionsMenu); + new MenuTitleItemDescriptor(i18n.t("Options")).withParent(optionsMenu); + new MenuItemDescriptor(addEntityToThisGroupAction).withParent(optionsMenu).setPosition(0); + new MenuItemDescriptor(unJoinGroupAction).withParent(optionsMenu).setPosition(1); - VISIBILITY_SUBMENU.withText(i18n.t("Users who can view this member list")).withParent(OPTIONS_MENU); - MODERATION_SUBMENU.withText(i18n.t("New members policy")).withParent(OPTIONS_MENU); - anyoneItem.withParent(VISIBILITY_SUBMENU).withText(i18n.t("anyone")); - onlyMembersItem.withParent(VISIBILITY_SUBMENU).withText(i18n.t("only members")); - onlyAdminsItem.withParent(VISIBILITY_SUBMENU).withText(i18n.t("only administrators")); - moderatedItem.withParent(MODERATION_SUBMENU).withText(i18n.t("moderate request to join")); - openItem.withParent(MODERATION_SUBMENU).withText(i18n.t("auto accept request to join")); - closedItem.withParent(MODERATION_SUBMENU).withText(i18n.t("closed for new members")); + visibilitySubMenu.withText(i18n.t("Users who can view this member list")).withParent(optionsMenu); + moderationSubMenu.withText(i18n.t("New members policy")).withParent(optionsMenu); + anyoneItem.withParent(visibilitySubMenu).withText(i18n.t("anyone")); + onlyMembersItem.withParent(visibilitySubMenu).withText(i18n.t("only members")); + onlyAdminsItem.withParent(visibilitySubMenu).withText(i18n.t("only administrators")); + moderatedItem.withParent(moderationSubMenu).withText(i18n.t("moderate request to join")); + openItem.withParent(moderationSubMenu).withText(i18n.t("auto accept request to join")); + closedItem.withParent(moderationSubMenu).withText(i18n.t("closed for new members")); final ButtonDescriptor joinBtn = new ButtonDescriptor(joinGroupAction); // final ButtonDescriptor unJoinBtn = new @@ -116,8 +115,8 @@ @Override public void onStateChanged(final StateChangedEvent event) { final boolean administrable = event.getState().getGroupRights().isAdministrable(); - OPTIONS_MENU.setVisible(administrable); - OPTIONS_MENU.setEnabled(administrable); + optionsMenu.setVisible(administrable); + optionsMenu.setEnabled(administrable); final StateAbstractDTO state = event.getState(); final GroupDTO currentGroup = state.getGroup(); if (currentGroup.isNotPersonal()) { Modified: trunk/src/main/java/cc/kune/core/client/sn/actions/registry/UserSNConfActions.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/sn/actions/registry/UserSNConfActions.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/core/client/sn/actions/registry/UserSNConfActions.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -25,14 +25,14 @@ import cc.kune.common.client.actions.ui.descrip.MenuRadioItemDescriptor; import cc.kune.common.client.actions.ui.descrip.SubMenuDescriptor; import cc.kune.common.shared.i18n.I18nTranslationService; +import cc.kune.core.client.events.StateChangedEvent; +import cc.kune.core.client.events.StateChangedEvent.StateChangedHandler; import cc.kune.core.client.resources.CoreResources; import cc.kune.core.client.sn.UserSNPresenter; import cc.kune.core.client.sn.actions.AddNewBuddiesAction; import cc.kune.core.client.sn.actions.UserSNVisibilityMenuItem; import cc.kune.core.client.sn.actions.conditions.IsGroupCondition; import cc.kune.core.client.state.Session; -import cc.kune.core.client.state.StateChangedEvent; -import cc.kune.core.client.state.StateChangedEvent.StateChangedHandler; import cc.kune.core.client.state.StateManager; import cc.kune.core.shared.domain.UserSNetVisibility; import cc.kune.core.shared.dto.StateAbstractDTO; Deleted: trunk/src/main/java/cc/kune/core/client/state/AccessRightsChangedEvent.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/state/AccessRightsChangedEvent.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/core/client/state/AccessRightsChangedEvent.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -1,115 +0,0 @@ -/* - * - * Copyright (C) 2007-2011 The kune development team (see CREDITS for details) - * This file is part of kune. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * - */ -package cc.kune.core.client.state; - -import com.google.gwt.event.shared.EventHandler; -import com.google.gwt.event.shared.GwtEvent; -import com.google.gwt.event.shared.HandlerRegistration; -import com.google.gwt.event.shared.HasHandlers; - -public class AccessRightsChangedEvent extends GwtEvent<AccessRightsChangedEvent.AccessRightsChangedHandler> { - - public interface HasAccessRightsChangedHandlers extends HasHandlers { - HandlerRegistration addAccessRightsChangedHandler(AccessRightsChangedHandler handler); - } - - public interface AccessRightsChangedHandler extends EventHandler { - public void onAccessRightsChanged(AccessRightsChangedEvent event); - } - - private static final Type<AccessRightsChangedHandler> TYPE = new Type<AccessRightsChangedHandler>(); - - public static void fire(HasHandlers source, cc.kune.core.shared.domain.utils.AccessRights previousRights, cc.kune.core.shared.domain.utils.AccessRights currentRights) { - source.fireEvent(new AccessRightsChangedEvent(previousRights, currentRights)); - } - - public static Type<AccessRightsChangedHandler> getType() { - return TYPE; - } - - cc.kune.core.shared.domain.utils.AccessRights previousRights; - cc.kune.core.shared.domain.utils.AccessRights currentRights; - - public AccessRightsChangedEvent(cc.kune.core.shared.domain.utils.AccessRights previousRights, cc.kune.core.shared.domain.utils.AccessRights currentRights) { - this.previousRights = previousRights; - this.currentRights = currentRights; - } - - protected AccessRightsChangedEvent() { - // Possibly for serialization. - } - - @Override - public Type<AccessRightsChangedHandler> getAssociatedType() { - return TYPE; - } - - public cc.kune.core.shared.domain.utils.AccessRights getPreviousRights() { - return previousRights; - } - - public cc.kune.core.shared.domain.utils.AccessRights getCurrentRights() { - return currentRights; - } - - @Override - protected void dispatch(AccessRightsChangedHandler handler) { - handler.onAccessRightsChanged(this); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) - return true; - if (obj == null) - return false; - if (getClass() != obj.getClass()) - return false; - AccessRightsChangedEvent other = (AccessRightsChangedEvent) obj; - if (previousRights == null) { - if (other.previousRights != null) - return false; - } else if (!previousRights.equals(other.previousRights)) - return false; - if (currentRights == null) { - if (other.currentRights != null) - return false; - } else if (!currentRights.equals(other.currentRights)) - return false; - return true; - } - - @Override - public int hashCode() { - int hashCode = 23; - hashCode = (hashCode * 37) + (previousRights == null ? 1 : previousRights.hashCode()); - hashCode = (hashCode * 37) + (currentRights == null ? 1 : currentRights.hashCode()); - return hashCode; - } - - @Override - public String toString() { - return "AccessRightsChangedEvent[" - + previousRights - + "," - + currentRights - + "]"; - } -} Modified: trunk/src/main/java/cc/kune/core/client/state/AccessRightsClientManager.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/state/AccessRightsClientManager.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/core/client/state/AccessRightsClientManager.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -19,7 +19,9 @@ */ package cc.kune.core.client.state; -import cc.kune.core.client.state.StateChangedEvent.StateChangedHandler; +import cc.kune.core.client.events.AccessRightsChangedEvent; +import cc.kune.core.client.events.StateChangedEvent; +import cc.kune.core.client.events.StateChangedEvent.StateChangedHandler; import cc.kune.core.shared.domain.utils.AccessRights; import cc.kune.core.shared.dto.StateAbstractDTO; Deleted: trunk/src/main/java/cc/kune/core/client/state/ContentCacheDefault.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/state/ContentCacheDefault.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/core/client/state/ContentCacheDefault.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -1,107 +0,0 @@ -/* - * - * Copyright (C) 2007-2011 The kune development team (see CREDITS for details) - * This file is part of kune. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * - */ -package cc.kune.core.client.state; - -import java.util.HashMap; -import java.util.Map; - -import cc.kune.common.client.notify.ProgressShowEvent; -import cc.kune.core.client.init.AppStartEvent; -import cc.kune.core.client.init.AppStartEvent.AppStartHandler; -import cc.kune.core.client.rpcservices.ContentServiceAsync; -import cc.kune.core.client.state.UserSignInOrSignOutEvent.UserSignInOrSignOutHandler; -import cc.kune.core.shared.domain.utils.StateToken; -import cc.kune.core.shared.dto.StateAbstractDTO; - -import com.google.gwt.event.shared.EventBus; -import com.google.gwt.user.client.rpc.AsyncCallback; -import com.google.inject.Inject; - -public class ContentCacheDefault implements ContentCache { - private final Map<StateToken, StateAbstractDTO> cacheMap; - private final EventBus eventBus; - private final ContentServiceAsync server; - private boolean useCache = false; - - @Inject - public ContentCacheDefault(final ContentServiceAsync server, final EventBus eventBus, - final Session session) { - this.server = server; - this.eventBus = eventBus; - this.cacheMap = new HashMap<StateToken, StateAbstractDTO>(); - // Better, don't use while we don't check changes in the server (by others) - // and we do server pub/sub - session.onAppStart(true, new AppStartHandler() { - @Override - public void onAppStart(final AppStartEvent event) { - useCache = event.getInitData().useClientContentCache(); - } - }); - useCache = true; - session.onUserSignInOrSignOut(false, new UserSignInOrSignOutHandler() { - @Override - public void onUserSignInOrSignOut(final UserSignInOrSignOutEvent event) { - cacheMap.clear(); - } - }); - } - - @Override - public void cache(final StateToken encodeState, final StateAbstractDTO content) { - assert encodeState != null; - if (useCache) { - cacheMap.put(encodeState, content); - } - } - - private StateAbstractDTO getCached(final StateToken newState) { - assert newState != null; - return useCache ? cacheMap.get(newState) : null; - } - - @Override - public void getContent(final String user, final StateToken newState, - final AsyncCallback<StateAbstractDTO> callback) { - assert newState != null; - eventBus.fireEvent(new ProgressShowEvent("")); - final StateAbstractDTO catched = getCached(newState); - if (catched != null) { - callback.onSuccess(catched); - } else { - // NotifyUser.info("Getting state of: " + newState, true); - server.getContent(user, newState, callback); - } - } - - @Override - public void remove(final StateToken token) { - cacheMap.remove(token); - } - - @Override - public void removeCacheOfGroup(final String group) { - for (final StateToken entry : cacheMap.keySet()) { - if (entry.getGroup().equals(group)) { - cacheMap.put(entry, null); - } - } - } - -} Deleted: trunk/src/main/java/cc/kune/core/client/state/GroupChangedEvent.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/state/GroupChangedEvent.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/core/client/state/GroupChangedEvent.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -1,115 +0,0 @@ -/* - * - * Copyright (C) 2007-2011 The kune development team (see CREDITS for details) - * This file is part of kune. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * - */ -package cc.kune.core.client.state; - -import com.google.gwt.event.shared.EventHandler; -import com.google.gwt.event.shared.GwtEvent; -import com.google.gwt.event.shared.HandlerRegistration; -import com.google.gwt.event.shared.HasHandlers; - -public class GroupChangedEvent extends GwtEvent<GroupChangedEvent.GroupChangedHandler> { - - public interface HasGroupChangedHandlers extends HasHandlers { - HandlerRegistration addGroupChangedHandler(GroupChangedHandler handler); - } - - public interface GroupChangedHandler extends EventHandler { - public void onGroupChanged(GroupChangedEvent event); - } - - private static final Type<GroupChangedHandler> TYPE = new Type<GroupChangedHandler>(); - - public static void fire(HasHandlers source, java.lang.String previousGroup, java.lang.String newGroup) { - source.fireEvent(new GroupChangedEvent(previousGroup, newGroup)); - } - - public static Type<GroupChangedHandler> getType() { - return TYPE; - } - - java.lang.String previousGroup; - java.lang.String newGroup; - - public GroupChangedEvent(java.lang.String previousGroup, java.lang.String newGroup) { - this.previousGroup = previousGroup; - this.newGroup = newGroup; - } - - protected GroupChangedEvent() { - // Possibly for serialization. - } - - @Override - public Type<GroupChangedHandler> getAssociatedType() { - return TYPE; - } - - public java.lang.String getPreviousGroup() { - return previousGroup; - } - - public java.lang.String getNewGroup() { - return newGroup; - } - - @Override - protected void dispatch(GroupChangedHandler handler) { - handler.onGroupChanged(this); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) - return true; - if (obj == null) - return false; - if (getClass() != obj.getClass()) - return false; - GroupChangedEvent other = (GroupChangedEvent) obj; - if (previousGroup == null) { - if (other.previousGroup != null) - return false; - } else if (!previousGroup.equals(other.previousGroup)) - return false; - if (newGroup == null) { - if (other.newGroup != null) - return false; - } else if (!newGroup.equals(other.newGroup)) - return false; - return true; - } - - @Override - public int hashCode() { - int hashCode = 23; - hashCode = (hashCode * 37) + (previousGroup == null ? 1 : previousGroup.hashCode()); - hashCode = (hashCode * 37) + (newGroup == null ? 1 : newGroup.hashCode()); - return hashCode; - } - - @Override - public String toString() { - return "GroupChangedEvent[" - + previousGroup - + "," - + newGroup - + "]"; - } -} Deleted: trunk/src/main/java/cc/kune/core/client/state/HistoryWrapperDefault.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/state/HistoryWrapperDefault.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/core/client/state/HistoryWrapperDefault.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -1,41 +0,0 @@ -/* - * - * Copyright (C) 2007-2011 The kune development team (see CREDITS for details) - * This file is part of kune. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * - */ -package cc.kune.core.client.state; - -import com.google.gwt.user.client.History; - -public class HistoryWrapperDefault implements HistoryWrapper { - - @Override - public String getToken() { - return History.getToken(); - } - - @Override - public void newItem(final String historyToken) { - History.newItem(historyToken); - } - - @Override - public void newItem(final String historyToken, final boolean issueEvent) { - History.newItem(historyToken, issueEvent); - } - -} Modified: trunk/src/main/java/cc/kune/core/client/state/Session.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/state/Session.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/core/client/state/Session.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -41,7 +41,10 @@ import java.util.Collection; import java.util.List; -import cc.kune.core.client.init.AppStartEvent; +import cc.kune.core.client.events.AppStartEvent; +import cc.kune.core.client.events.UserSignInEvent; +import cc.kune.core.client.events.UserSignInOrSignOutEvent; +import cc.kune.core.client.events.UserSignOutEvent; import cc.kune.core.client.rpcservices.AsyncCallbackSimple; import cc.kune.core.shared.domain.utils.StateToken; import cc.kune.core.shared.dto.I18nCountryDTO; Deleted: trunk/src/main/java/cc/kune/core/client/state/SessionDefault.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/state/SessionDefault.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/core/client/state/SessionDefault.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -1,373 +0,0 @@ -/* - * - * Copyright (C) 2007-2011 The kune development team (see CREDITS for details) - * This file is part of kune. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * - */ -package cc.kune.core.client.state; - -import java.util.Collection; -import java.util.List; - -import cc.kune.common.client.log.Log; -import cc.kune.core.client.cookies.CookiesManager; -import cc.kune.core.client.init.AppStartEvent; -import cc.kune.core.client.init.AppStartEvent.AppStartHandler; -import cc.kune.core.client.rpcservices.AsyncCallbackSimple; -import cc.kune.core.client.rpcservices.UserServiceAsync; -import cc.kune.core.client.state.UserSignInEvent.UserSignInHandler; -import cc.kune.core.client.state.UserSignInOrSignOutEvent.UserSignInOrSignOutHandler; -import cc.kune.core.client.state.UserSignOutEvent.UserSignOutHandler; -import cc.kune.core.shared.domain.utils.StateToken; -import cc.kune.core.shared.dto.I18nCountryDTO; -import cc.kune.core.shared.dto.I18nLanguageDTO; -import cc.kune.core.shared.dto.I18nLanguageSimpleDTO; -import cc.kune.core.shared.dto.InitDataDTO; -import cc.kune.core.shared.dto.LicenseDTO; -import cc.kune.core.shared.dto.StateAbstractDTO; -import cc.kune.core.shared.dto.StateContainerDTO; -import cc.kune.core.shared.dto.StateContentDTO; -import cc.kune.core.shared.dto.ToolSimpleDTO; -import cc.kune.core.shared.dto.UserInfoDTO; -import cc.kune.core.shared.dto.UserSimpleDTO; - -import com.google.gwt.core.client.GWT; -import com.google.gwt.event.shared.EventBus; -import com.google.inject.Inject; -import com.google.inject.Provider; - -public class SessionDefault implements Session { - private final CookiesManager cookieManager; - private Object[][] countriesArray; - private I18nLanguageDTO currentLanguage; - private StateAbstractDTO currentState; - private UserInfoDTO currentUserInfo; - private final EventBus eventBus; - private InitDataDTO initData; - private Object[][] languagesArray; - private Object[][] timezonesArray; - private String userHash; - private final Provider<UserServiceAsync> userServiceProvider; - - @Inject - public SessionDefault(final CookiesManager cookieManager, - final Provider<UserServiceAsync> userServiceProvider, final EventBus eventBus) { - this.cookieManager = cookieManager; - this.eventBus = eventBus; - this.userHash = cookieManager.getAuthCookie(); - this.userHash = userHash == null || userHash.equals("null") ? null : userHash; - this.userServiceProvider = userServiceProvider; - languagesArray = null; - check(new AsyncCallbackSimple<Void>() { - @Override - public void onSuccess(final Void result) { - } - }); - } - - @Override - public void check(final AsyncCallbackSimple<Void> callback) { - Log.debug("Checking session (userhash: " + getUserHash() + ")"); - userServiceProvider.get().onlyCheckSession(getUserHash(), callback); - } - - @Override - public StateContainerDTO getContainerState() { - return (StateContainerDTO) currentState; - } - - @Override - public StateContentDTO getContentState() { - return (StateContentDTO) currentState; - } - - @Override - public List<I18nCountryDTO> getCountries() { - return initData.getCountries(); - } - - @Override - public Object[][] getCountriesArray() { - if (countriesArray == null) { - countriesArray = mapCountries(); - } - return countriesArray.clone(); - } - - @Override - public String getCurrentCCversion() { - return initData.getCurrentCCversion(); - } - - @Override - public String getCurrentGroupShortName() { - return currentState == null ? null : currentState.getStateToken().getGroup(); - } - - @Override - public I18nLanguageDTO getCurrentLanguage() { - return currentLanguage; - } - - @Override - public StateAbstractDTO getCurrentState() { - return currentState; - } - - @Override - public StateToken getCurrentStateToken() { - return currentState == null ? null : currentState.getStateToken(); - } - - @Override - public UserSimpleDTO getCurrentUser() { - return currentUserInfo == null ? null : currentUserInfo.getUser(); - } - - @Override - public UserInfoDTO getCurrentUserInfo() { - return currentUserInfo; - } - - @Override - public LicenseDTO getDefLicense() { - return initData.getDefaultLicense(); - } - - @Override - public String getGalleryPermittedExtensions() { - return initData.getGalleryPermittedExtensions(); - } - - @Override - public Collection<ToolSimpleDTO> getGroupTools() { - return initData.getGroupTools(); - } - - @Override - public int getImgCropsize() { - return initData.getImgCropsize(); - } - - @Override - public int getImgIconsize() { - return initData.getImgIconsize(); - } - - @Override - public int getImgResizewidth() { - return initData.getImgResizewidth(); - } - - @Override - public int getImgThumbsize() { - return initData.getImgThumbsize(); - } - - @Override - public InitDataDTO getInitData() { - return initData; - } - - @Override - public List<I18nLanguageSimpleDTO> getLanguages() { - return initData.getLanguages(); - } - - @Override - public Object[][] getLanguagesArray() { - if (languagesArray == null) { - languagesArray = mapLangs(); - } - return languagesArray.clone(); - } - - @Override - public List<LicenseDTO> getLicenses() { - return initData.getLicenses(); - } - - @Override - public boolean getShowDeletedContent() { - return currentUserInfo == null ? false : currentUserInfo.getShowDeletedContent(); - } - - @Override - public String getSiteUrl() { - final String baseURL = GWT.getModuleBaseURL(); - return baseURL.substring(0, baseURL.lastIndexOf("/" + GWT.getModuleName())); - } - - @Override - public Object[][] getTimezones() { - if (timezonesArray == null) { - mapTimezones(); - } - return timezonesArray.clone(); - } - - @Override - public String getUserHash() { - return userHash; - } - - @Override - public Collection<ToolSimpleDTO> getUserTools() { - return initData.getUserTools(); - } - - @Override - public boolean inSameToken(final StateToken token) { - return getCurrentStateToken().equals(token); - } - - @Override - public boolean isCurrentStateAContent() { - return currentState instanceof StateContentDTO; - } - - @Override - public boolean isCurrentStateAGroup() { - return currentState == null ? false : !currentState.getGroup().isPersonal(); - } - - @Override - public boolean isCurrentStateAPerson() { - return currentState == null ? false : currentState.getGroup().isPersonal(); - } - - @Override - public boolean isInCurrentUserSpace() { - if (!isLogged()) { - return false; - } - if (getCurrentStateToken().getGroup().equals(getCurrentUser().getShortName())) { - return true; - } - return false; - } - - @Override - public boolean isLogged() { - return userHash != null; - } - - @Override - public boolean isNotLogged() { - return !isLogged(); - } - - private Object[][] mapCountries() { - assert initData != null; - final Object[][] objs = new Object[initData.getCountries().size()][1]; - int i = 0; - for (final I18nCountryDTO country : initData.getCountries()) { - final Object[] obj = new Object[] { country.getCode(), country.getEnglishName() }; - objs[i++] = obj; - } - return objs; - } - - private Object[][] mapLangs() { - assert initData != null; - final Object[][] objs = new Object[initData.getLanguages().size()][1]; - int i = 0; - for (final I18nLanguageSimpleDTO language : initData.getLanguages()) { - final Object[] obj = new Object[] { language.getCode(), language.getEnglishName() }; - objs[i++] = obj; - } - return objs; - } - - private void mapTimezones() { - assert initData != null; - timezonesArray = new Object[initData.getTimezones().length][1]; - for (int i = 0; i < getTimezones().length; i++) { - final Object[] obj = new Object[] { initData.getTimezones()[i] }; - timezonesArray[i] = obj; - } - } - - @Override - public void onAppStart(final boolean fireNow, final AppStartHandler handler) { - eventBus.addHandler(AppStartEvent.getType(), handler); - if (fireNow && initData != null) { - handler.onAppStart(new AppStartEvent(initData)); - } - } - - @Override - public void onUserSignIn(final boolean fireNow, final UserSignInHandler handler) { - eventBus.addHandler(UserSignInEvent.getType(), handler); - if (fireNow && isLogged() && currentUserInfo != null) { - handler.onUserSignIn(new UserSignInEvent(currentUserInfo)); - } - } - - @Override - public void onUserSignInOrSignOut(final boolean fireNow, final UserSignInOrSignOutHandler handler) { - eventBus.addHandler(UserSignInOrSignOutEvent.getType(), handler); - if (fireNow) { - handler.onUserSignInOrSignOut(new UserSignInOrSignOutEvent(isLogged())); - } - } - - @Override - public void onUserSignOut(final boolean fireNow, final UserSignOutHandler handler) { - eventBus.addHandler(UserSignOutEvent.getType(), handler); - if (fireNow && isNotLogged()) { - handler.onUserSignOut(new UserSignOutEvent()); - } - } - - @Override - public void setCurrentLanguage(final I18nLanguageDTO currentLanguage) { - this.currentLanguage = currentLanguage; - } - - @Override - public void setCurrentState(final StateAbstractDTO currentState) { - this.currentState = currentState; - } - - @Override - public void setCurrentUserInfo(final UserInfoDTO currentUserInfo) { - this.currentUserInfo = currentUserInfo; - if (currentUserInfo != null) { - eventBus.fireEvent(new UserSignInEvent(this.currentUserInfo)); - } else { - eventBus.fireEvent(new UserSignOutEvent()); - } - eventBus.fireEvent(new UserSignInOrSignOutEvent(isLogged())); - } - - @Override - public void setInitData(final InitDataDTO initData) { - this.initData = initData; - } - - @Override - public void setUserHash(final String userHash) { - this.userHash = userHash; - } - - @Override - public void signOut() { - cookieManager.removeAuthCookie(); - setUserHash(null); - setCurrentUserInfo(null); - } -} Deleted: trunk/src/main/java/cc/kune/core/client/state/SocialNetworkChangedEvent.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/state/SocialNetworkChangedEvent.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/core/client/state/SocialNetworkChangedEvent.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -1,101 +0,0 @@ -/* - * - * Copyright (C) 2007-2011 The kune development team (see CREDITS for details) - * This file is part of kune. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * - */ -package cc.kune.core.client.state; - -import com.google.gwt.event.shared.EventHandler; -import com.google.gwt.event.shared.GwtEvent; -import com.google.gwt.event.shared.HandlerRegistration; -import com.google.gwt.event.shared.HasHandlers; - -public class SocialNetworkChangedEvent extends GwtEvent<SocialNetworkChangedEvent.SocialNetworkChangedHandler> { - - public interface HasSocialNetworkChangedHandlers extends HasHandlers { - HandlerRegistration addSocialNetworkChangedHandler(SocialNetworkChangedHandler handler); - } - - public interface SocialNetworkChangedHandler extends EventHandler { - public void onSocialNetworkChanged(SocialNetworkChangedEvent event); - } - - private static final Type<SocialNetworkChangedHandler> TYPE = new Type<SocialNetworkChangedHandler>(); - - public static void fire(HasHandlers source, cc.kune.core.shared.dto.StateAbstractDTO state) { - source.fireEvent(new SocialNetworkChangedEvent(state)); - } - - public static Type<SocialNetworkChangedHandler> getType() { - return TYPE; - } - - cc.kune.core.shared.dto.StateAbstractDTO state; - - public SocialNetworkChangedEvent(cc.kune.core.shared.dto.StateAbstractDTO state) { - this.state = state; - } - - protected SocialNetworkChangedEvent() { - // Possibly for serialization. - } - - @Override - public Type<SocialNetworkChangedHandler> getAssociatedType() { - return TYPE; - } - - public cc.kune.core.shared.dto.StateAbstractDTO getState() { - return state; - } - - @Override - protected void dispatch(SocialNetworkChangedHandler handler) { - handler.onSocialNetworkChanged(this); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) - return true; - if (obj == null) - return false; - if (getClass() != obj.getClass()) - return false; - SocialNetworkChangedEvent other = (SocialNetworkChangedEvent) obj; - if (state == null) { - if (other.state != null) - return false; - } else if (!state.equals(other.state)) - return false; - return true; - } - - @Override - public int hashCode() { - int hashCode = 23; - hashCode = (hashCode * 37) + (state == null ? 1 : state.hashCode()); - return hashCode; - } - - @Override - public String toString() { - return "SocialNetworkChangedEvent[" - + state - + "]"; - } -} Deleted: trunk/src/main/java/cc/kune/core/client/state/StateChangedEvent.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/state/StateChangedEvent.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/core/client/state/StateChangedEvent.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -1,101 +0,0 @@ -/* - * - * Copyright (C) 2007-2011 The kune development team (see CREDITS for details) - * This file is part of kune. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * - */ -package cc.kune.core.client.state; - -import com.google.gwt.event.shared.EventHandler; -import com.google.gwt.event.shared.GwtEvent; -import com.google.gwt.event.shared.HandlerRegistration; -import com.google.gwt.event.shared.HasHandlers; - -public class StateChangedEvent extends GwtEvent<StateChangedEvent.StateChangedHandler> { - - public interface HasStateChangedHandlers extends HasHandlers { - HandlerRegistration addStateChangedHandler(StateChangedHandler handler); - } - - public interface StateChangedHandler extends EventHandler { - public void onStateChanged(StateChangedEvent event); - } - - private static final Type<StateChangedHandler> TYPE = new Type<StateChangedHandler>(); - - public static void fire(HasHandlers source, cc.kune.core.shared.dto.StateAbstractDTO state) { - source.fireEvent(new StateChangedEvent(state)); - } - - public static Type<StateChangedHandler> getType() { - return TYPE; - } - - cc.kune.core.shared.dto.StateAbstractDTO state; - - public StateChangedEvent(cc.kune.core.shared.dto.StateAbstractDTO state) { - this.state = state; - } - - protected StateChangedEvent() { - // Possibly for serialization. - } - - @Override - public Type<StateChangedHandler> getAssociatedType() { - return TYPE; - } - - public cc.kune.core.shared.dto.StateAbstractDTO getState() { - return state; - } - - @Override - protected void dispatch(StateChangedHandler handler) { - handler.onStateChanged(this); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) - return true; - if (obj == null) - return false; - if (getClass() != obj.getClass()) - return false; - StateChangedEvent other = (StateChangedEvent) obj; - if (state == null) { - if (other.state != null) - return false; - } else if (!state.equals(other.state)) - return false; - return true; - } - - @Override - public int hashCode() { - int hashCode = 23; - hashCode = (hashCode * 37) + (state == null ? 1 : state.hashCode()); - return hashCode; - } - - @Override - public String toString() { - return "StateChangedEvent[" - + state - + "]"; - } -} Modified: trunk/src/main/java/cc/kune/core/client/state/StateManager.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/state/StateManager.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/core/client/state/StateManager.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -20,6 +20,10 @@ package cc.kune.core.client.state; import cc.kune.common.client.actions.BeforeActionListener; +import cc.kune.core.client.events.GroupChangedEvent; +import cc.kune.core.client.events.SocialNetworkChangedEvent; +import cc.kune.core.client.events.StateChangedEvent; +import cc.kune.core.client.events.ToolChangedEvent; import cc.kune.core.shared.domain.utils.StateToken; import cc.kune.core.shared.dto.SocialNetworkDataDTO; import cc.kune.core.shared.dto.StateAbstractDTO; Deleted: trunk/src/main/java/cc/kune/core/client/state/StateManagerDefault.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/state/StateManagerDefault.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/core/client/state/StateManagerDefault.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -1,461 +0,0 @@ -/* - * - - * Copyright (C) 2007-2011 The kune development team (see CREDITS for details) - * This file is part of kune. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * - */ -package cc.kune.core.client.state; - -import org.waveprotocol.box.webclient.client.ClientEvents; -import org.waveprotocol.box.webclient.client.events.WaveSelectionEvent; -import org.waveprotocol.wave.model.waveref.InvalidWaveRefException; -import org.waveprotocol.wave.util.escapers.GwtWaverefEncoder; - -import cc.kune.common.client.actions.BeforeActionCollection; -import cc.kune.common.client.actions.BeforeActionListener; -import cc.kune.common.client.log.Log; -import cc.kune.common.client.notify.ProgressHideEvent; -import cc.kune.common.client.utils.Pair; -import cc.kune.core.client.events.GoHomeEvent; -import cc.kune.core.client.init.AppStartEvent; -import cc.kune.core.client.init.AppStartEvent.AppStartHandler; -import cc.kune.core.client.rpcservices.AsyncCallbackSimple; -import cc.kune.core.client.sitebar.spaces.Space; -import cc.kune.core.client.sitebar.spaces.SpaceConfEvent; -import cc.kune.core.client.sitebar.spaces.SpaceSelectEvent; -import cc.kune.core.client.state.GroupChangedEvent.GroupChangedHandler; -import cc.kune.core.client.state.SocialNetworkChangedEvent.SocialNetworkChangedHandler; -import cc.kune.core.client.state.StateChangedEvent.StateChangedHandler; -import cc.kune.core.client.state.ToolChangedEvent.ToolChangedHandler; -import cc.kune.core.shared.domain.utils.StateToken; -import cc.kune.core.shared.dto.SocialNetworkDataDTO; -import cc.kune.core.shared.dto.StateAbstractDTO; - -import com.google.gwt.event.logical.shared.ValueChangeEvent; -import com.google.gwt.event.logical.shared.ValueChangeHandler; -import com.google.gwt.event.shared.EventBus; -import com.google.inject.Inject; - -public class StateManagerDefault implements StateManager, ValueChangeHandler<String> { - private final BeforeActionCollection beforeStateChangeCollection; - private final ContentCache contentCache; - private final EventBus eventBus; - private final HistoryWrapper history; - private StateToken previousGroupToken; - /** - * When a historyChanged is interrupted (for instance because you are editing - * something), the new history token is stored here - */ - private String resumedHistoryToken; - private final Session session; - private final SiteTokenListeners siteTokens; - private final TokenMatcher tokenMatcher; - - @Inject - public StateManagerDefault(final ContentCache contentProvider, final Session session, - final HistoryWrapper history, final TokenMatcher tokenMatcher, final EventBus eventBus, - final SiteTokenListeners siteTokens) { - this.tokenMatcher = tokenMatcher; - this.eventBus = eventBus; - this.contentCache = contentProvider; - this.session = session; - this.history = history; - this.previousGroupToken = null; - this.resumedHistoryToken = null; - tokenMatcher.init(GwtWaverefEncoder.INSTANCE); - this.siteTokens = siteTokens; - beforeStateChangeCollection = new BeforeActionCollection(); - session.onAppStart(true, new AppStartHandler() { - @Override - public void onAppStart(final AppStartEvent event) { - session.onUserSignIn(false, new UserSignInEvent.UserSignInHandler() { - @Override - public void onUserSignIn(final UserSignInEvent event) { - // refreshCurrentGroupState(); - } - }); - session.onUserSignOut(false, new UserSignOutEvent.UserSignOutHandler() { - @Override - public void onUserSignOut(final UserSignOutEvent event) { - refreshCurrentStateWithoutCache(); - } - }); - processCurrentHistoryToken(); - } - }); - onSocialNetworkChanged(false, new SocialNetworkChangedHandler() { - @Override - public void onSocialNetworkChanged(final SocialNetworkChangedEvent event) { - contentCache.removeCacheOfGroup(event.getState().getStateToken().getGroup()); - } - }); - eventBus.addHandler(GoHomeEvent.getType(), new GoHomeEvent.GoHomeHandler() { - @Override - public void onGoHome(final GoHomeEvent event) { - gotoDefaultHomepage(); - } - }); - } - - @Override - public void addBeforeStateChangeListener(final BeforeActionListener listener) { - beforeStateChangeCollection.add(listener); - } - - @Override - public void addSiteToken(final String token, final HistoryTokenCallback callback) { - siteTokens.put(token.toLowerCase(), callback); - } - - private void checkGroupAndToolChange(final StateAbstractDTO newState) { - final String newGroup = newState.getStateToken().getGroup(); - final String previousGroup = getPreviousGroup(); - if (startingUp() || !previousGroup.equals(newGroup)) { - GroupChangedEvent.fire(eventBus, previousGroup, newGroup); - } - final String previousToolName = getPreviousTool(); - final String newTokenTool = newState.getStateToken().getTool(); - final String newToolName = newTokenTool == null ? "" : newTokenTool; - if (startingUp() || previousToolName == null || !previousToolName.equals(newToolName)) { - ToolChangedEvent.fire(eventBus, previousGroupToken, newState.getStateToken()); - } - } - - private void getContent(final StateToken newState) { - getContent(newState, false); - } - - private void getContent(final StateToken newState, final boolean setBrowserHistory) { - // NotifyUser.info("loading: " + newState + " because current:" + - // session.getCurrentStateToken()); - contentCache.getContent(session.getUserHash(), newState, - new AsyncCallbackSimple<StateAbstractDTO>() { - @Override - public void onSuccess(final StateAbstractDTO newState) { - setState(newState); - final String currentToken = newState.getStateToken().toString(); - SpaceConfEvent.fire(eventBus, Space.groupSpace, currentToken); - SpaceConfEvent.fire(eventBus, Space.publicSpace, TokenUtils.preview(currentToken)); - if (setBrowserHistory) { - history.newItem(currentToken, false); - SpaceSelectEvent.fire(eventBus, Space.groupSpace); - } - } - }); - } - - @Override - public String getCurrentToken() { - return history.getToken(); - } - - private String getPreviousGroup() { - final String previousGroup = startingUp() ? "" : previousGroupToken.getGroup(); - return previousGroup; - } - - private String getPreviousTool() { - final String previousTool = startingUp() ? "" : previousGroupToken.getTool(); - return previousTool; - } - - @Override - public void gotoDefaultHomepage() { - getContent(new StateToken(SiteTokens.GROUP_HOME), true); - } - - @Override - public void gotoHistoryToken(final String token) { - Log.debug("StateManager: history goto-string-token: " + token); - history.newItem(token); - } - - @Override - public void gotoHistoryTokenButRedirectToCurrent(final String token) { - gotoHistoryToken(TokenUtils.addRedirect(token, history.getToken())); - - } - - @Override - public void gotoStateToken(final StateToken newToken) { - Log.debug("StateManager: history goto-token: " + newToken + ", previous: " + previousGroupToken); - history.newItem(newToken.getEncoded()); - } - - @Override - public void gotoStateToken(final StateToken token, final boolean useCache) { - if (!useCache) { - contentCache.remove(token); - } - gotoStateToken(token); - } - - @Override - public void onGroupChanged(final boolean fireNow, final GroupChangedHandler handler) { - eventBus.addHandler(GroupChangedEvent.getType(), handler); - final StateAbstractDTO currentState = session.getCurrentState(); - if (fireNow && currentState != null) { - handler.onGroupChanged(new GroupChangedEvent(getPreviousGroup(), - currentState.getStateToken().getGroup())); - } - - } - - @Override - public void onSocialNetworkChanged(final boolean fireNow, final SocialNetworkChangedHandler handler) { - eventBus.addHandler(SocialNetworkChangedEvent.getType(), handler); - final StateAbstractDTO currentState = session.getCurrentState(); - if (fireNow && currentState != null) { - handler.onSocialNetworkChanged(new SocialNetworkChangedEvent(currentState)); - } - } - - @Override - public void onStateChanged(final boolean fireNow, final StateChangedHandler handler) { - eventBus.addHandler(StateChangedEvent.getType(), handler); - final StateAbstractDTO currentState = session.getCurrentState(); - if (fireNow && currentState != null) { - handler.onStateChanged(new StateChangedEvent(currentState)); - } - } - - @Override - public void onToolChanged(final boolean fireNow, final ToolChangedHandler handler) { - eventBus.addHandler(ToolChangedEvent.getType(), handler); - final StateAbstractDTO currentState = session.getCurrentState(); - if (fireNow && currentState != null) { - handler.onToolChanged(new ToolChangedEvent(previousGroupToken, currentState.getStateToken())); - } - } - - @Override - public void onValueChange(final ValueChangeEvent<String> event) { - Log.info("History event value changed: " + event.getValue()); - processHistoryToken(event.getValue()); - } - - private void processCurrentHistoryToken() { - processHistoryToken(history.getToken()); - } - - void processHistoryToken(final String newHistoryToken) { - // http://code.google.com/p/google-web-toolkit-doc-1-5/wiki/DevGuideHistory - if (beforeStateChangeCollection.checkBeforeAction()) { - // There isn't a beforeStateChange listener that stops this history - // change - HistoryTokenCallback tokenListener = null; - if (newHistoryToken != null) { - final String nToken = newHistoryToken.toLowerCase(); - tokenListener = siteTokens.get(nToken); - } - Log.debug("StateManager: on history changed (" + newHistoryToken + ")"); - if (tokenListener == null) { - // Log.debug("Is not a special hash"); - // token is not one of #newgroup #signin #translate ... - final String nToken = newHistoryToken != null ? newHistoryToken.toLowerCase() : null; - if (nToken != null && tokenMatcher.hasRedirect(nToken)) { - final Pair<String, String> redirect = tokenMatcher.getRedirect(nToken); - final String firstToken = redirect.getLeft(); - final String sndToken = redirect.getRight(); - if (firstToken.equals(SiteTokens.PREVIEW)) { - SpaceSelectEvent.fire(eventBus, Space.publicSpace); - SpaceConfEvent.fire(eventBus, Space.groupSpace, sndToken); - SpaceConfEvent.fire(eventBus, Space.publicSpace, TokenUtils.preview(sndToken)); - getContent(new StateToken(sndToken)); - } else if (firstToken.equals(SiteTokens.SUBTITLES)) { - siteTokens.get(SiteTokens.SUBTITLES).onHistoryToken( - tokenMatcher.getRedirect(newHistoryToken).getRight()); - } else if (firstToken.equals(SiteTokens.NEWGROUP)) { - siteTokens.get(SiteTokens.NEWGROUP).onHistoryToken(newHistoryToken); - } else if (firstToken.equals(SiteTokens.SIGNIN)) { - if (session.isLogged()) { - // We are logged, then redirect: - history.newItem(sndToken, false); - processHistoryToken(sndToken); - } else { - // We have to loggin - siteTokens.get(SiteTokens.SIGNIN).onHistoryToken(newHistoryToken); - } - } - } else - // No redirection - if (tokenMatcher.isWaveToken(newHistoryToken)) { - if (session.isLogged()) { - SpaceConfEvent.fire(eventBus, Space.userSpace, newHistoryToken); - SpaceSelectEvent.fire(eventBus, Space.userSpace); - try { - ClientEvents.get().fireEvent( - new WaveSelectionEvent(GwtWaverefEncoder.decodeWaveRefFromPath(newHistoryToken))); - } catch (final InvalidWaveRefException e) { - Log.error(nToken, e); - } - } else { - // Wave, but don't logged - history.newItem(TokenUtils.addRedirect(SiteTokens.SIGNIN, newHistoryToken)); - if (startingUp()) { - // Starting application (with Wave) - getContent(new StateToken(SiteTokens.GROUP_HOME), false); - } - } - } else if (tokenMatcher.isGroupToken(newHistoryToken)) { - SpaceConfEvent.fire(eventBus, Space.groupSpace, newHistoryToken); - SpaceConfEvent.fire(eventBus, Space.publicSpace, TokenUtils.preview(newHistoryToken)); - SpaceSelectEvent.fire(eventBus, Space.groupSpace); - getContent(new StateToken(newHistoryToken)); - } else { - gotoDefaultHomepage(); - } - } else { - // token is one of #newgroup #signin #translate ... - if (startingUp()) { - // Starting with some token like "signin": load defContent - // also - getContent(new StateToken(SiteTokens.GROUP_HOME), false); - // processHistoryToken(SiteTokens.GROUP_HOME); - // SpaceSelectEvent.fire(eventBus, Space.groupSpace); - } - // Fire the listener of this #hash token - tokenListener.onHistoryToken(newHistoryToken); - } - } else { - resumedHistoryToken = newHistoryToken; - } - } - - @Override - public void redirectOrRestorePreviousToken() { - final String token = history.getToken(); - if (tokenMatcher.hasRedirect(token)) { - // URL of the form signin(group.tool) - final String previousToken = tokenMatcher.getRedirect(token).getRight(); - if (previousToken.equals(SiteTokens.WAVEINBOX) && session.isNotLogged()) { - // signin(inbox) && cancel - restorePreviousToken(); - } else { - history.newItem(previousToken); // FIXMEKK - } - } else { - // No redirect then restore previous token - restorePreviousToken(); - } - } - - /** - * <p> - * Reload current state (using client cache if available) - * </p> - */ - @Override - public void refreshCurrentState() { - processHistoryToken(history.getToken()); - } - - /** - * <p> - * Reload current state (not using client cache) - * </p> - */ - @Override - public void refreshCurrentStateWithoutCache() { - final StateToken currentStateToken = session.getCurrentStateToken(); - if (currentStateToken == null) { - processCurrentHistoryToken(); - } else { - contentCache.remove(currentStateToken); - getContent(currentStateToken); - } - } - - @Override - public void removeBeforeStateChangeListener(final BeforeActionListener listener) { - beforeStateChangeCollection.remove(listener); - } - - @Override - public void removeCache(final StateToken parentToken) { - contentCache.remove(parentToken); - } - - @Override - public void removeCacheOfGroup(final String group) { - contentCache.removeCacheOfGroup(group); - } - - @Override - public void removeSiteToken(final String token) { - siteTokens.remove(token); - } - - @Override - public void restorePreviousToken() { - if (previousGroupToken != null) { - gotoStateToken(previousGroupToken); - } - } - - @Override - public void resumeTokenChange() { - if (resumedHistoryToken != null) { - // Is this reload redundant? - refreshCurrentState(); - gotoHistoryToken(resumedHistoryToken); - resumedHistoryToken = null; - } - } - - @Override - public void setRetrievedState(final StateAbstractDTO newState) { - contentCache.cache(newState.getStateToken(), newState); - } - - @Override - public void setRetrievedStateAndGo(final StateAbstractDTO newState) { - setRetrievedState(newState); - final String token = newState.getStateToken().toString(); - if (history.getToken().equals(token)) { - setState(newState); - } - history.newItem(token); - } - - @Override - public void setSocialNetwork(final SocialNetworkDataDTO socialNet) { - StateAbstractDTO state; - if (session != null && (state = session.getCurrentState()) != null) { - // After a SN operation, usually returns a SocialNetworkResultDTO - // with new SN data and we refresh the state - // to avoid to reload() again the state - state.setSocialNetworkData(socialNet); - SocialNetworkChangedEvent.fire(eventBus, state); - } - } - - void setState(final StateAbstractDTO newState) { - session.setCurrentState(newState); - final StateToken newToken = newState.getStateToken(); - contentCache.cache(newToken, newState); - // history.newItem(newToken.toString(), false); - StateChangedEvent.fire(eventBus, newState); - checkGroupAndToolChange(newState); - previousGroupToken = newToken.copy(); - eventBus.fireEvent(new ProgressHideEvent()); - } - - private boolean startingUp() { - return previousGroupToken == null; - } -} Deleted: trunk/src/main/java/cc/kune/core/client/state/ToolChangedEvent.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/state/ToolChangedEvent.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/core/client/state/ToolChangedEvent.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -1,130 +0,0 @@ -/* - * - * Copyright (C) 2007-2011 The kune development team (see CREDITS for details) - * This file is part of kune. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * - */ -package cc.kune.core.client.state; - -import cc.kune.core.shared.domain.utils.StateToken; - -import com.google.gwt.event.shared.EventHandler; -import com.google.gwt.event.shared.GwtEvent; -import com.google.gwt.event.shared.HandlerRegistration; -import com.google.gwt.event.shared.HasHandlers; - -public class ToolChangedEvent extends GwtEvent<ToolChangedEvent.ToolChangedHandler> { - - public interface HasToolChangedHandlers extends HasHandlers { - HandlerRegistration addToolChangedHandler(ToolChangedHandler handler); - } - - public interface ToolChangedHandler extends EventHandler { - public void onToolChanged(ToolChangedEvent event); - } - - private static final Type<ToolChangedHandler> TYPE = new Type<ToolChangedHandler>(); - - public static void fire(final HasHandlers source, final StateToken previousToken, - final StateToken newToken) { - source.fireEvent(new ToolChangedEvent(previousToken, newToken)); - } - - public static Type<ToolChangedHandler> getType() { - return TYPE; - } - - private StateToken newToken; - private StateToken previousToken; - - protected ToolChangedEvent() { - // Possibly for serialization. - } - - public ToolChangedEvent(final StateToken previousToken, final StateToken newToken) { - this.previousToken = previousToken; - this.newToken = newToken; - } - - @Override - protected void dispatch(final ToolChangedHandler handler) { - handler.onToolChanged(this); - } - - @Override - public boolean equals(final Object obj) { - if (this == obj) { - return true; - } - if (obj == null) { - return false; - } - if (getClass() != obj.getClass()) { - return false; - } - final ToolChangedEvent other = (ToolChangedEvent) obj; - if (newToken == null) { - if (other.newToken != null) { - return false; - } - } else if (!newToken.equals(other.newToken)) { - return false; - } - if (previousToken == null) { - if (other.previousToken != null) { - return false; - } - } else if (!previousToken.equals(other.previousToken)) { - return false; - } - return true; - } - - @Override - public Type<ToolChangedHandler> getAssociatedType() { - return TYPE; - } - - public StateToken getNewToken() { - return newToken; - } - - public java.lang.String getNewTool() { - return newToken != null ? newToken.getTool() : null; - } - - public StateToken getPreviousToken() { - return previousToken; - } - - public java.lang.String getPreviousTool() { - return previousToken != null ? previousToken.getTool() : null; - } - - @Override - public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result + ((newToken == null) ? 0 : newToken.hashCode()); - result = prime * result + ((previousToken == null) ? 0 : previousToken.hashCode()); - return result; - } - - @Override - public String toString() { - return "ToolChangedEvent[" + getPreviousTool() + "," + getNewTool() + "]"; - } -} Deleted: trunk/src/main/java/cc/kune/core/client/state/UserSignInEvent.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/state/UserSignInEvent.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/core/client/state/UserSignInEvent.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -1,85 +0,0 @@ -/* - * - * Copyright (C) 2007-2011 The kune development team (see CREDITS for details) - * This file is part of kune. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * - */ -package cc.kune.core.client.state; - -import com.google.gwt.event.shared.EventHandler; -import com.google.gwt.event.shared.GwtEvent; -import com.google.gwt.event.shared.HandlerRegistration; -import com.google.gwt.event.shared.HasHandlers; - -public class UserSignInEvent extends GwtEvent<UserSignInEvent.UserSignInHandler> { - - public interface HasUserSignInHandlers extends HasHandlers { - HandlerRegistration addUserSignInHandler(UserSignInHandler handler); - } - - public interface UserSignInHandler extends EventHandler { - public void onUserSignIn(UserSignInEvent event); - } - - private static final Type<UserSignInHandler> TYPE = new Type<UserSignInHandler>(); - - public static Type<UserSignInHandler> getType() { - return TYPE; - } - - private final cc.kune.core.shared.dto.UserInfoDTO userInfo; - - public UserSignInEvent(final cc.kune.core.shared.dto.UserInfoDTO userInfo) { - this.userInfo = userInfo; - } - - @Override - protected void dispatch(final UserSignInHandler handler) { - handler.onUserSignIn(this); - } - - @Override - public boolean equals(final Object other) { - if (other != null && other.getClass().equals(this.getClass())) { - final UserSignInEvent o = (UserSignInEvent) other; - return true && ((o.userInfo == null && this.userInfo == null) || (o.userInfo != null && o.userInfo.equals(this.userInfo))); - } - return false; - } - - @Override - public Type<UserSignInHandler> getAssociatedType() { - return TYPE; - } - - public cc.kune.core.shared.dto.UserInfoDTO getUserInfo() { - return userInfo; - } - - @Override - public int hashCode() { - int hashCode = 23; - hashCode = (hashCode * 37) + getClass().hashCode(); - hashCode = (hashCode * 37) + (userInfo == null ? 1 : userInfo.hashCode()); - return hashCode; - } - - @Override - public String toString() { - return "UserSignInEvent[" + userInfo + "]"; - } - -} Deleted: trunk/src/main/java/cc/kune/core/client/state/UserSignInOrSignOutEvent.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/state/UserSignInOrSignOutEvent.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/core/client/state/UserSignInOrSignOutEvent.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -1,94 +0,0 @@ -/* - * - * Copyright (C) 2007-2011 The kune development team (see CREDITS for details) - * This file is part of kune. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * - */ -package cc.kune.core.client.state; - -import com.google.gwt.event.shared.EventHandler; -import com.google.gwt.event.shared.GwtEvent; -import com.google.gwt.event.shared.HandlerRegistration; -import com.google.gwt.event.shared.HasHandlers; - -public class UserSignInOrSignOutEvent extends GwtEvent<UserSignInOrSignOutEvent.UserSignInOrSignOutHandler> { - - public interface HasUserSignInOrSignOutHandlers extends HasHandlers { - HandlerRegistration addUserSignInOrSignOutHandler(UserSignInOrSignOutHandler handler); - } - - public interface UserSignInOrSignOutHandler extends EventHandler { - public void onUserSignInOrSignOut(UserSignInOrSignOutEvent event); - } - - private static final Type<UserSignInOrSignOutHandler> TYPE = new Type<UserSignInOrSignOutHandler>(); - - public static Type<UserSignInOrSignOutHandler> getType() { - return TYPE; - } - - private final boolean loggedin; - - public UserSignInOrSignOutEvent(final boolean loggedin) { - this.loggedin = loggedin; - } - - @Override - protected void dispatch(final UserSignInOrSignOutHandler handler) { - handler.onUserSignInOrSignOut(this); - } - - @Override - public boolean equals(final Object obj) { - if (this == obj) { - return true; - } - if (obj == null) { - return false; - } - if (getClass() != obj.getClass()) { - return false; - } - final UserSignInOrSignOutEvent other = (UserSignInOrSignOutEvent) obj; - if (loggedin != other.loggedin) { - return false; - } - return true; - } - - @Override - public Type<UserSignInOrSignOutHandler> getAssociatedType() { - return TYPE; - } - - @Override - public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result + (loggedin ? 1231 : 1237); - return result; - } - - public boolean isLogged() { - return loggedin; - } - - @Override - public String toString() { - return "UserSignInOrSignOutEvent[" + loggedin + "]"; - } - -} Deleted: trunk/src/main/java/cc/kune/core/client/state/UserSignOutEvent.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/state/UserSignOutEvent.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/core/client/state/UserSignOutEvent.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -1,81 +0,0 @@ -/* - * - * Copyright (C) 2007-2011 The kune development team (see CREDITS for details) - * This file is part of kune. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * - */ -package cc.kune.core.client.state; - -import com.google.gwt.event.shared.EventHandler; -import com.google.gwt.event.shared.GwtEvent; -import com.google.gwt.event.shared.HandlerRegistration; -import com.google.gwt.event.shared.HasHandlers; -import com.gwtplatform.mvp.client.HasEventBus; - -public class UserSignOutEvent extends GwtEvent<UserSignOutEvent.UserSignOutHandler> { - - public interface HasUserSignOutHandlers extends HasHandlers { - HandlerRegistration addUserSignOutHandler(UserSignOutHandler handler); - } - - public interface UserSignOutHandler extends EventHandler { - public void onUserSignOut(UserSignOutEvent event); - } - - private static final Type<UserSignOutHandler> TYPE = new Type<UserSignOutHandler>(); - - public static void fire(final HasEventBus source) { - source.fireEvent(new UserSignOutEvent()); - } - - public static Type<UserSignOutHandler> getType() { - return TYPE; - } - - public UserSignOutEvent() { - } - - @Override - protected void dispatch(final UserSignOutHandler handler) { - handler.onUserSignOut(this); - } - - @Override - public boolean equals(final Object other) { - if (other != null && other.getClass().equals(this.getClass())) { - return true; - } - return false; - } - - @Override - public Type<UserSignOutHandler> getAssociatedType() { - return TYPE; - } - - @Override - public int hashCode() { - int hashCode = 23; - hashCode = (hashCode * 37) + getClass().hashCode(); - return hashCode; - } - - @Override - public String toString() { - return "UserSignOutEvent[" + "]"; - } - -} Copied: trunk/src/main/java/cc/kune/core/client/state/impl/ContentCacheDefault.java (from rev 1655, trunk/src/main/java/cc/kune/core/client/state/ContentCacheDefault.java) =================================================================== --- trunk/src/main/java/cc/kune/core/client/state/impl/ContentCacheDefault.java (rev 0) +++ trunk/src/main/java/cc/kune/core/client/state/impl/ContentCacheDefault.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -0,0 +1,110 @@ +/* + * + * Copyright (C) 2007-2011 The kune development team (see CREDITS for details) + * This file is part of kune. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ +package cc.kune.core.client.state.impl; + +import java.util.HashMap; +import java.util.Map; + +import cc.kune.common.client.notify.ProgressShowEvent; +import cc.kune.core.client.events.AppStartEvent; +import cc.kune.core.client.events.UserSignInOrSignOutEvent; +import cc.kune.core.client.events.AppStartEvent.AppStartHandler; +import cc.kune.core.client.events.UserSignInOrSignOutEvent.UserSignInOrSignOutHandler; +import cc.kune.core.client.rpcservices.ContentServiceAsync; +import cc.kune.core.client.state.ContentCache; +import cc.kune.core.client.state.Session; +import cc.kune.core.shared.domain.utils.StateToken; +import cc.kune.core.shared.dto.StateAbstractDTO; + +import com.google.gwt.event.shared.EventBus; +import com.google.gwt.user.client.rpc.AsyncCallback; +import com.google.inject.Inject; + +public class ContentCacheDefault implements ContentCache { + private final Map<StateToken, StateAbstractDTO> cacheMap; + private final EventBus eventBus; + private final ContentServiceAsync server; + private boolean useCache = false; + + @Inject + public ContentCacheDefault(final ContentServiceAsync server, final EventBus eventBus, + final Session session) { + this.server = server; + this.eventBus = eventBus; + this.cacheMap = new HashMap<StateToken, StateAbstractDTO>(); + // Better, don't use while we don't check changes in the server (by others) + // and we do server pub/sub + session.onAppStart(true, new AppStartHandler() { + @Override + public void onAppStart(final AppStartEvent event) { + useCache = event.getInitData().useClientContentCache(); + } + }); + useCache = true; + session.onUserSignInOrSignOut(false, new UserSignInOrSignOutHandler() { + @Override + public void onUserSignInOrSignOut(final UserSignInOrSignOutEvent event) { + cacheMap.clear(); + } + }); + } + + @Override + public void cache(final StateToken encodeState, final StateAbstractDTO content) { + assert encodeState != null; + if (useCache) { + cacheMap.put(encodeState, content); + } + } + + private StateAbstractDTO getCached(final StateToken newState) { + assert newState != null; + return useCache ? cacheMap.get(newState) : null; + } + + @Override + public void getContent(final String user, final StateToken newState, + final AsyncCallback<StateAbstractDTO> callback) { + assert newState != null; + eventBus.fireEvent(new ProgressShowEvent("")); + final StateAbstractDTO catched = getCached(newState); + if (catched != null) { + callback.onSuccess(catched); + } else { + // NotifyUser.info("Getting state of: " + newState, true); + server.getContent(user, newState, callback); + } + } + + @Override + public void remove(final StateToken token) { + cacheMap.remove(token); + } + + @Override + public void removeCacheOfGroup(final String group) { + for (final StateToken entry : cacheMap.keySet()) { + if (entry.getGroup().equals(group)) { + cacheMap.put(entry, null); + } + } + } + +} Copied: trunk/src/main/java/cc/kune/core/client/state/impl/HistoryWrapperDefault.java (from rev 1655, trunk/src/main/java/cc/kune/core/client/state/HistoryWrapperDefault.java) =================================================================== --- trunk/src/main/java/cc/kune/core/client/state/impl/HistoryWrapperDefault.java (rev 0) +++ trunk/src/main/java/cc/kune/core/client/state/impl/HistoryWrapperDefault.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -0,0 +1,43 @@ +/* + * + * Copyright (C) 2007-2011 The kune development team (see CREDITS for details) + * This file is part of kune. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ +package cc.kune.core.client.state.impl; + +import cc.kune.core.client.state.HistoryWrapper; + +import com.google.gwt.user.client.History; + +public class HistoryWrapperDefault implements HistoryWrapper { + + @Override + public String getToken() { + return History.getToken(); + } + + @Override + public void newItem(final String historyToken) { + History.newItem(historyToken); + } + + @Override + public void newItem(final String historyToken, final boolean issueEvent) { + History.newItem(historyToken, issueEvent); + } + +} Copied: trunk/src/main/java/cc/kune/core/client/state/impl/SessionDefault.java (from rev 1655, trunk/src/main/java/cc/kune/core/client/state/SessionDefault.java) =================================================================== --- trunk/src/main/java/cc/kune/core/client/state/impl/SessionDefault.java (rev 0) +++ trunk/src/main/java/cc/kune/core/client/state/impl/SessionDefault.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -0,0 +1,377 @@ +/* + * + * Copyright (C) 2007-2011 The kune development team (see CREDITS for details) + * This file is part of kune. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ +package cc.kune.core.client.state.impl; + +import java.util.Collection; +import java.util.List; + +import cc.kune.common.client.log.Log; +import cc.kune.core.client.cookies.CookiesManager; +import cc.kune.core.client.events.AppStartEvent; +import cc.kune.core.client.events.AppStartEvent.AppStartHandler; +import cc.kune.core.client.events.UserSignInEvent; +import cc.kune.core.client.events.UserSignInEvent.UserSignInHandler; +import cc.kune.core.client.events.UserSignInOrSignOutEvent; +import cc.kune.core.client.events.UserSignInOrSignOutEvent.UserSignInOrSignOutHandler; +import cc.kune.core.client.events.UserSignOutEvent; +import cc.kune.core.client.events.UserSignOutEvent.UserSignOutHandler; +import cc.kune.core.client.rpcservices.AsyncCallbackSimple; +import cc.kune.core.client.rpcservices.UserServiceAsync; +import cc.kune.core.client.state.Session; +import cc.kune.core.shared.domain.utils.StateToken; +import cc.kune.core.shared.dto.I18nCountryDTO; +import cc.kune.core.shared.dto.I18nLanguageDTO; +import cc.kune.core.shared.dto.I18nLanguageSimpleDTO; +import cc.kune.core.shared.dto.InitDataDTO; +import cc.kune.core.shared.dto.LicenseDTO; +import cc.kune.core.shared.dto.StateAbstractDTO; +import cc.kune.core.shared.dto.StateContainerDTO; +import cc.kune.core.shared.dto.StateContentDTO; +import cc.kune.core.shared.dto.ToolSimpleDTO; +import cc.kune.core.shared.dto.UserInfoDTO; +import cc.kune.core.shared.dto.UserSimpleDTO; + +import com.google.gwt.core.client.GWT; +import com.google.gwt.event.shared.EventBus; +import com.google.inject.Inject; +import com.google.inject.Provider; + +public class SessionDefault implements Session { + private final CookiesManager cookieManager; + private Object[][] countriesArray; + private I18nLanguageDTO currentLanguage; + private StateAbstractDTO currentState; + private UserInfoDTO currentUserInfo; + private final EventBus eventBus; + private InitDataDTO initData; + private Object[][] languagesArray; + private Object[][] timezonesArray; + private String userHash; + private final Provider<UserServiceAsync> userServiceProvider; + + @Inject + public SessionDefault(final CookiesManager cookieManager, + final Provider<UserServiceAsync> userServiceProvider, final EventBus eventBus) { + this.cookieManager = cookieManager; + this.eventBus = eventBus; + this.userHash = cookieManager.getAuthCookie(); + this.userHash = userHash == null || userHash.equals("null") ? null : userHash; + this.userServiceProvider = userServiceProvider; + languagesArray = null; + check(new AsyncCallbackSimple<Void>() { + @Override + public void onSuccess(final Void result) { + } + }); + } + + @Override + public void check(final AsyncCallbackSimple<Void> callback) { + Log.debug("Checking session (userhash: " + getUserHash() + ")"); + userServiceProvider.get().onlyCheckSession(getUserHash(), callback); + } + + @Override + public StateContainerDTO getContainerState() { + return (StateContainerDTO) currentState; + } + + @Override + public StateContentDTO getContentState() { + return (StateContentDTO) currentState; + } + + @Override + public List<I18nCountryDTO> getCountries() { + return initData.getCountries(); + } + + @Override + public Object[][] getCountriesArray() { + if (countriesArray == null) { + countriesArray = mapCountries(); + } + return countriesArray; + } + + @Override + public String getCurrentCCversion() { + return initData.getCurrentCCversion(); + } + + @Override + public String getCurrentGroupShortName() { + return currentState == null ? null : currentState.getStateToken().getGroup(); + } + + @Override + public I18nLanguageDTO getCurrentLanguage() { + return currentLanguage; + } + + @Override + public StateAbstractDTO getCurrentState() { + return currentState; + } + + @Override + public StateToken getCurrentStateToken() { + return currentState == null ? null : currentState.getStateToken(); + } + + @Override + public UserSimpleDTO getCurrentUser() { + return currentUserInfo == null ? null : currentUserInfo.getUser(); + } + + @Override + public UserInfoDTO getCurrentUserInfo() { + return currentUserInfo; + } + + @Override + public LicenseDTO getDefLicense() { + return initData.getDefaultLicense(); + } + + @Override + public String getGalleryPermittedExtensions() { + return initData.getGalleryPermittedExtensions(); + } + + @Override + public Collection<ToolSimpleDTO> getGroupTools() { + return initData.getGroupTools(); + } + + @Override + public int getImgCropsize() { + return initData.getImgCropsize(); + } + + @Override + public int getImgIconsize() { + return initData.getImgIconsize(); + } + + @Override + public int getImgResizewidth() { + return initData.getImgResizewidth(); + } + + @Override + public int getImgThumbsize() { + return initData.getImgThumbsize(); + } + + @Override + public InitDataDTO getInitData() { + return initData; + } + + @Override + public List<I18nLanguageSimpleDTO> getLanguages() { + return initData.getLanguages(); + } + + @Override + public Object[][] getLanguagesArray() { + if (languagesArray == null) { + languagesArray = mapLangs(); + } + return languagesArray; + } + + @Override + public List<LicenseDTO> getLicenses() { + return initData.getLicenses(); + } + + @Override + public boolean getShowDeletedContent() { + return currentUserInfo == null ? false : currentUserInfo.getShowDeletedContent(); + } + + @Override + public String getSiteUrl() { + final String baseURL = GWT.getModuleBaseURL(); + return baseURL.substring(0, baseURL.lastIndexOf("/" + GWT.getModuleName())); + } + + @Override + public Object[][] getTimezones() { + if (timezonesArray == null) { + mapTimezones(); + } + return timezonesArray; + } + + @Override + public String getUserHash() { + return userHash; + } + + @Override + public Collection<ToolSimpleDTO> getUserTools() { + return initData.getUserTools(); + } + + @Override + public boolean inSameToken(final StateToken token) { + return getCurrentStateToken().equals(token); + } + + @Override + public boolean isCurrentStateAContent() { + return currentState instanceof StateContentDTO; + } + + @Override + public boolean isCurrentStateAGroup() { + return currentState == null ? false : !currentState.getGroup().isPersonal(); + } + + @Override + public boolean isCurrentStateAPerson() { + return currentState == null ? false : currentState.getGroup().isPersonal(); + } + + @Override + public boolean isInCurrentUserSpace() { + if (!isLogged()) { + return false; + } + if (getCurrentStateToken().getGroup().equals(getCurrentUser().getShortName())) { + return true; + } + return false; + } + + @Override + public boolean isLogged() { + return userHash != null; + } + + @Override + public boolean isNotLogged() { + return !isLogged(); + } + + private Object[][] mapCountries() { + assert initData != null; + final Object[][] objs = new Object[initData.getCountries().size()][1]; + int i = 0; + for (final I18nCountryDTO country : initData.getCountries()) { + final Object[] obj = new Object[] { country.getCode(), country.getEnglishName() }; + objs[i++] = obj; + } + return objs; + } + + private Object[][] mapLangs() { + assert initData != null; + final Object[][] objs = new Object[initData.getLanguages().size()][1]; + int i = 0; + for (final I18nLanguageSimpleDTO language : initData.getLanguages()) { + final Object[] obj = new Object[] { language.getCode(), language.getEnglishName() }; + objs[i++] = obj; + } + return objs; + } + + private void mapTimezones() { + assert initData != null; + timezonesArray = new Object[initData.getTimezones().length][1]; + for (int i = 0; i < getTimezones().length; i++) { + final Object[] obj = new Object[] { initData.getTimezones()[i] }; + timezonesArray[i] = obj; + } + } + + @Override + public void onAppStart(final boolean fireNow, final AppStartHandler handler) { + eventBus.addHandler(AppStartEvent.getType(), handler); + if (fireNow && initData != null) { + handler.onAppStart(new AppStartEvent(initData)); + } + } + + @Override + public void onUserSignIn(final boolean fireNow, final UserSignInHandler handler) { + eventBus.addHandler(UserSignInEvent.getType(), handler); + if (fireNow && isLogged() && currentUserInfo != null) { + handler.onUserSignIn(new UserSignInEvent(currentUserInfo)); + } + } + + @Override + public void onUserSignInOrSignOut(final boolean fireNow, final UserSignInOrSignOutHandler handler) { + eventBus.addHandler(UserSignInOrSignOutEvent.getType(), handler); + if (fireNow) { + handler.onUserSignInOrSignOut(new UserSignInOrSignOutEvent(isLogged())); + } + } + + @Override + public void onUserSignOut(final boolean fireNow, final UserSignOutHandler handler) { + eventBus.addHandler(UserSignOutEvent.getType(), handler); + if (fireNow && isNotLogged()) { + handler.onUserSignOut(new UserSignOutEvent()); + } + } + + @Override + public void setCurrentLanguage(final I18nLanguageDTO currentLanguage) { + this.currentLanguage = currentLanguage; + } + + @Override + public void setCurrentState(final StateAbstractDTO currentState) { + this.currentState = currentState; + } + + @Override + public void setCurrentUserInfo(final UserInfoDTO currentUserInfo) { + this.currentUserInfo = currentUserInfo; + if (currentUserInfo != null) { + eventBus.fireEvent(new UserSignInEvent(this.currentUserInfo)); + } else { + eventBus.fireEvent(new UserSignOutEvent()); + } + eventBus.fireEvent(new UserSignInOrSignOutEvent(isLogged())); + } + + @Override + public void setInitData(final InitDataDTO initData) { + this.initData = initData; + } + + @Override + public void setUserHash(final String userHash) { + this.userHash = userHash; + } + + @Override + public void signOut() { + cookieManager.removeAuthCookie(); + setUserHash(null); + setCurrentUserInfo(null); + } +} Copied: trunk/src/main/java/cc/kune/core/client/state/impl/StateManagerDefault.java (from rev 1655, trunk/src/main/java/cc/kune/core/client/state/StateManagerDefault.java) =================================================================== --- trunk/src/main/java/cc/kune/core/client/state/impl/StateManagerDefault.java (rev 0) +++ trunk/src/main/java/cc/kune/core/client/state/impl/StateManagerDefault.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -0,0 +1,476 @@ +/* + * + + * Copyright (C) 2007-2011 The kune development team (see CREDITS for details) + * This file is part of kune. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ +package cc.kune.core.client.state.impl; + +import org.waveprotocol.box.webclient.client.ClientEvents; +import org.waveprotocol.box.webclient.client.events.WaveSelectionEvent; +import org.waveprotocol.wave.model.waveref.InvalidWaveRefException; +import org.waveprotocol.wave.util.escapers.GwtWaverefEncoder; + +import cc.kune.common.client.actions.BeforeActionCollection; +import cc.kune.common.client.actions.BeforeActionListener; +import cc.kune.common.client.log.Log; +import cc.kune.common.client.notify.ProgressHideEvent; +import cc.kune.common.client.utils.Pair; +import cc.kune.core.client.events.AppStartEvent; +import cc.kune.core.client.events.GoHomeEvent; +import cc.kune.core.client.events.GroupChangedEvent; +import cc.kune.core.client.events.SocialNetworkChangedEvent; +import cc.kune.core.client.events.StateChangedEvent; +import cc.kune.core.client.events.ToolChangedEvent; +import cc.kune.core.client.events.UserSignInEvent; +import cc.kune.core.client.events.UserSignOutEvent; +import cc.kune.core.client.events.AppStartEvent.AppStartHandler; +import cc.kune.core.client.events.GroupChangedEvent.GroupChangedHandler; +import cc.kune.core.client.events.SocialNetworkChangedEvent.SocialNetworkChangedHandler; +import cc.kune.core.client.events.StateChangedEvent.StateChangedHandler; +import cc.kune.core.client.events.ToolChangedEvent.ToolChangedHandler; +import cc.kune.core.client.rpcservices.AsyncCallbackSimple; +import cc.kune.core.client.sitebar.spaces.Space; +import cc.kune.core.client.sitebar.spaces.SpaceConfEvent; +import cc.kune.core.client.sitebar.spaces.SpaceSelectEvent; +import cc.kune.core.client.state.ContentCache; +import cc.kune.core.client.state.HistoryTokenCallback; +import cc.kune.core.client.state.HistoryWrapper; +import cc.kune.core.client.state.Session; +import cc.kune.core.client.state.SiteTokenListeners; +import cc.kune.core.client.state.SiteTokens; +import cc.kune.core.client.state.StateManager; +import cc.kune.core.client.state.TokenMatcher; +import cc.kune.core.client.state.TokenUtils; +import cc.kune.core.shared.domain.utils.StateToken; +import cc.kune.core.shared.dto.SocialNetworkDataDTO; +import cc.kune.core.shared.dto.StateAbstractDTO; + +import com.google.gwt.event.logical.shared.ValueChangeEvent; +import com.google.gwt.event.logical.shared.ValueChangeHandler; +import com.google.gwt.event.shared.EventBus; +import com.google.inject.Inject; + +public class StateManagerDefault implements StateManager, ValueChangeHandler<String> { + private final BeforeActionCollection beforeStateChangeCollection; + private final ContentCache contentCache; + private final EventBus eventBus; + private final HistoryWrapper history; + private StateToken previousGroupToken; + /** + * When a historyChanged is interrupted (for instance because you are editing + * something), the new history token is stored here + */ + private String resumedHistoryToken; + private final Session session; + private final SiteTokenListeners siteTokens; + private final TokenMatcher tokenMatcher; + + @Inject + public StateManagerDefault(final ContentCache contentProvider, final Session session, + final HistoryWrapper history, final TokenMatcher tokenMatcher, final EventBus eventBus, + final SiteTokenListeners siteTokens) { + this.tokenMatcher = tokenMatcher; + this.eventBus = eventBus; + this.contentCache = contentProvider; + this.session = session; + this.history = history; + this.previousGroupToken = null; + this.resumedHistoryToken = null; + tokenMatcher.init(GwtWaverefEncoder.INSTANCE); + this.siteTokens = siteTokens; + beforeStateChangeCollection = new BeforeActionCollection(); + session.onAppStart(true, new AppStartHandler() { + @Override + public void onAppStart(final AppStartEvent event) { + session.onUserSignIn(false, new UserSignInEvent.UserSignInHandler() { + @Override + public void onUserSignIn(final UserSignInEvent event) { + // refreshCurrentGroupState(); + } + }); + session.onUserSignOut(false, new UserSignOutEvent.UserSignOutHandler() { + @Override + public void onUserSignOut(final UserSignOutEvent event) { + refreshCurrentStateWithoutCache(); + } + }); + processCurrentHistoryToken(); + } + }); + onSocialNetworkChanged(false, new SocialNetworkChangedHandler() { + @Override + public void onSocialNetworkChanged(final SocialNetworkChangedEvent event) { + contentCache.removeCacheOfGroup(event.getState().getStateToken().getGroup()); + } + }); + eventBus.addHandler(GoHomeEvent.getType(), new GoHomeEvent.GoHomeHandler() { + @Override + public void onGoHome(final GoHomeEvent event) { + gotoDefaultHomepage(); + } + }); + } + + @Override + public void addBeforeStateChangeListener(final BeforeActionListener listener) { + beforeStateChangeCollection.add(listener); + } + + @Override + public void addSiteToken(final String token, final HistoryTokenCallback callback) { + siteTokens.put(token.toLowerCase(), callback); + } + + private void checkGroupAndToolChange(final StateAbstractDTO newState) { + final String newGroup = newState.getStateToken().getGroup(); + final String previousGroup = getPreviousGroup(); + if (startingUp() || !previousGroup.equals(newGroup)) { + GroupChangedEvent.fire(eventBus, previousGroup, newGroup); + } + final String previousToolName = getPreviousTool(); + final String newTokenTool = newState.getStateToken().getTool(); + final String newToolName = newTokenTool == null ? "" : newTokenTool; + if (startingUp() || previousToolName == null || !previousToolName.equals(newToolName)) { + ToolChangedEvent.fire(eventBus, previousGroupToken, newState.getStateToken()); + } + } + + private void getContent(final StateToken newState) { + getContent(newState, false); + } + + private void getContent(final StateToken newState, final boolean setBrowserHistory) { + // NotifyUser.info("loading: " + newState + " because current:" + + // session.getCurrentStateToken()); + contentCache.getContent(session.getUserHash(), newState, + new AsyncCallbackSimple<StateAbstractDTO>() { + @Override + public void onSuccess(final StateAbstractDTO newState) { + setState(newState); + final String currentToken = newState.getStateToken().toString(); + SpaceConfEvent.fire(eventBus, Space.groupSpace, currentToken); + SpaceConfEvent.fire(eventBus, Space.publicSpace, TokenUtils.preview(currentToken)); + if (setBrowserHistory) { + history.newItem(currentToken, false); + SpaceSelectEvent.fire(eventBus, Space.groupSpace); + } + } + }); + } + + @Override + public String getCurrentToken() { + return history.getToken(); + } + + private String getPreviousGroup() { + final String previousGroup = startingUp() ? "" : previousGroupToken.getGroup(); + return previousGroup; + } + + private String getPreviousTool() { + final String previousTool = startingUp() ? "" : previousGroupToken.getTool(); + return previousTool; + } + + @Override + public void gotoDefaultHomepage() { + getContent(new StateToken(SiteTokens.GROUP_HOME), true); + } + + @Override + public void gotoHistoryToken(final String token) { + Log.debug("StateManager: history goto-string-token: " + token); + history.newItem(token); + } + + @Override + public void gotoHistoryTokenButRedirectToCurrent(final String token) { + gotoHistoryToken(TokenUtils.addRedirect(token, history.getToken())); + + } + + @Override + public void gotoStateToken(final StateToken newToken) { + Log.debug("StateManager: history goto-token: " + newToken + ", previous: " + previousGroupToken); + history.newItem(newToken.getEncoded()); + } + + @Override + public void gotoStateToken(final StateToken token, final boolean useCache) { + if (!useCache) { + contentCache.remove(token); + } + gotoStateToken(token); + } + + @Override + public void onGroupChanged(final boolean fireNow, final GroupChangedHandler handler) { + eventBus.addHandler(GroupChangedEvent.getType(), handler); + final StateAbstractDTO currentState = session.getCurrentState(); + if (fireNow && currentState != null) { + handler.onGroupChanged(new GroupChangedEvent(getPreviousGroup(), + currentState.getStateToken().getGroup())); + } + + } + + @Override + public void onSocialNetworkChanged(final boolean fireNow, final SocialNetworkChangedHandler handler) { + eventBus.addHandler(SocialNetworkChangedEvent.getType(), handler); + final StateAbstractDTO currentState = session.getCurrentState(); + if (fireNow && currentState != null) { + handler.onSocialNetworkChanged(new SocialNetworkChangedEvent(currentState)); + } + } + + @Override + public void onStateChanged(final boolean fireNow, final StateChangedHandler handler) { + eventBus.addHandler(StateChangedEvent.getType(), handler); + final StateAbstractDTO currentState = session.getCurrentState(); + if (fireNow && currentState != null) { + handler.onStateChanged(new StateChangedEvent(currentState)); + } + } + + @Override + public void onToolChanged(final boolean fireNow, final ToolChangedHandler handler) { + eventBus.addHandler(ToolChangedEvent.getType(), handler); + final StateAbstractDTO currentState = session.getCurrentState(); + if (fireNow && currentState != null) { + handler.onToolChanged(new ToolChangedEvent(previousGroupToken, currentState.getStateToken())); + } + } + + @Override + public void onValueChange(final ValueChangeEvent<String> event) { + Log.info("History event value changed: " + event.getValue()); + processHistoryToken(event.getValue()); + } + + private void processCurrentHistoryToken() { + processHistoryToken(history.getToken()); + } + + void processHistoryToken(final String newHistoryToken) { + // http://code.google.com/p/google-web-toolkit-doc-1-5/wiki/DevGuideHistory + if (beforeStateChangeCollection.checkBeforeAction()) { + // There isn't a beforeStateChange listener that stops this history + // change + HistoryTokenCallback tokenListener = null; + if (newHistoryToken != null) { + final String nToken = newHistoryToken.toLowerCase(); + tokenListener = siteTokens.get(nToken); + } + Log.debug("StateManager: on history changed (" + newHistoryToken + ")"); + if (tokenListener == null) { + // Log.debug("Is not a special hash"); + // token is not one of #newgroup #signin #translate ... + final String nToken = newHistoryToken != null ? newHistoryToken.toLowerCase() : null; + if (nToken != null && tokenMatcher.hasRedirect(nToken)) { + final Pair<String, String> redirect = tokenMatcher.getRedirect(nToken); + final String firstToken = redirect.getLeft(); + final String sndToken = redirect.getRight(); + if (firstToken.equals(SiteTokens.PREVIEW)) { + SpaceSelectEvent.fire(eventBus, Space.publicSpace); + SpaceConfEvent.fire(eventBus, Space.groupSpace, sndToken); + SpaceConfEvent.fire(eventBus, Space.publicSpace, TokenUtils.preview(sndToken)); + getContent(new StateToken(sndToken)); + } else if (firstToken.equals(SiteTokens.SUBTITLES)) { + siteTokens.get(SiteTokens.SUBTITLES).onHistoryToken( + tokenMatcher.getRedirect(newHistoryToken).getRight()); + } else if (firstToken.equals(SiteTokens.NEWGROUP)) { + siteTokens.get(SiteTokens.NEWGROUP).onHistoryToken(newHistoryToken); + } else if (firstToken.equals(SiteTokens.SIGNIN)) { + if (session.isLogged()) { + // We are logged, then redirect: + history.newItem(sndToken, false); + processHistoryToken(sndToken); + } else { + // We have to loggin + siteTokens.get(SiteTokens.SIGNIN).onHistoryToken(newHistoryToken); + } + } + } else + // No redirection + if (tokenMatcher.isWaveToken(newHistoryToken)) { + if (session.isLogged()) { + SpaceConfEvent.fire(eventBus, Space.userSpace, newHistoryToken); + SpaceSelectEvent.fire(eventBus, Space.userSpace); + try { + ClientEvents.get().fireEvent( + new WaveSelectionEvent(GwtWaverefEncoder.decodeWaveRefFromPath(newHistoryToken))); + } catch (final InvalidWaveRefException e) { + Log.error(nToken, e); + } + } else { + // Wave, but don't logged + history.newItem(TokenUtils.addRedirect(SiteTokens.SIGNIN, newHistoryToken)); + if (startingUp()) { + // Starting application (with Wave) + getContent(new StateToken(SiteTokens.GROUP_HOME), false); + } + } + } else if (tokenMatcher.isGroupToken(newHistoryToken)) { + SpaceConfEvent.fire(eventBus, Space.groupSpace, newHistoryToken); + SpaceConfEvent.fire(eventBus, Space.publicSpace, TokenUtils.preview(newHistoryToken)); + SpaceSelectEvent.fire(eventBus, Space.groupSpace); + getContent(new StateToken(newHistoryToken)); + } else { + gotoDefaultHomepage(); + } + } else { + // token is one of #newgroup #signin #translate ... + if (startingUp()) { + // Starting with some token like "signin": load defContent + // also + getContent(new StateToken(SiteTokens.GROUP_HOME), false); + // processHistoryToken(SiteTokens.GROUP_HOME); + // SpaceSelectEvent.fire(eventBus, Space.groupSpace); + } + // Fire the listener of this #hash token + tokenListener.onHistoryToken(newHistoryToken); + } + } else { + resumedHistoryToken = newHistoryToken; + } + } + + @Override + public void redirectOrRestorePreviousToken() { + final String token = history.getToken(); + if (tokenMatcher.hasRedirect(token)) { + // URL of the form signin(group.tool) + final String previousToken = tokenMatcher.getRedirect(token).getRight(); + if (previousToken.equals(SiteTokens.WAVEINBOX) && session.isNotLogged()) { + // signin(inbox) && cancel + restorePreviousToken(); + } else { + history.newItem(previousToken); // FIXMEKK + } + } else { + // No redirect then restore previous token + restorePreviousToken(); + } + } + + /** + * <p> + * Reload current state (using client cache if available) + * </p> + */ + @Override + public void refreshCurrentState() { + processHistoryToken(history.getToken()); + } + + /** + * <p> + * Reload current state (not using client cache) + * </p> + */ + @Override + public void refreshCurrentStateWithoutCache() { + final StateToken currentStateToken = session.getCurrentStateToken(); + if (currentStateToken == null) { + processCurrentHistoryToken(); + } else { + contentCache.remove(currentStateToken); + getContent(currentStateToken); + } + } + + @Override + public void removeBeforeStateChangeListener(final BeforeActionListener listener) { + beforeStateChangeCollection.remove(listener); + } + + @Override + public void removeCache(final StateToken parentToken) { + contentCache.remove(parentToken); + } + + @Override + public void removeCacheOfGroup(final String group) { + contentCache.removeCacheOfGroup(group); + } + + @Override + public void removeSiteToken(final String token) { + siteTokens.remove(token); + } + + @Override + public void restorePreviousToken() { + if (previousGroupToken != null) { + gotoStateToken(previousGroupToken); + } + } + + @Override + public void resumeTokenChange() { + if (resumedHistoryToken != null) { + // Is this reload redundant? + refreshCurrentState(); + gotoHistoryToken(resumedHistoryToken); + resumedHistoryToken = null; + } + } + + @Override + public void setRetrievedState(final StateAbstractDTO newState) { + contentCache.cache(newState.getStateToken(), newState); + } + + @Override + public void setRetrievedStateAndGo(final StateAbstractDTO newState) { + setRetrievedState(newState); + final String token = newState.getStateToken().toString(); + if (history.getToken().equals(token)) { + setState(newState); + } + history.newItem(token); + } + + @Override + public void setSocialNetwork(final SocialNetworkDataDTO socialNet) { + StateAbstractDTO state; + if (session != null && (state = session.getCurrentState()) != null) { + // After a SN operation, usually returns a SocialNetworkResultDTO + // with new SN data and we refresh the state + // to avoid to reload() again the state + state.setSocialNetworkData(socialNet); + SocialNetworkChangedEvent.fire(eventBus, state); + } + } + + void setState(final StateAbstractDTO newState) { + session.setCurrentState(newState); + final StateToken newToken = newState.getStateToken(); + contentCache.cache(newToken, newState); + // history.newItem(newToken.toString(), false); + StateChangedEvent.fire(eventBus, newState); + checkGroupAndToolChange(newState); + previousGroupToken = newToken.copy(); + eventBus.fireEvent(new ProgressHideEvent()); + } + + private boolean startingUp() { + return previousGroupToken == null; + } +} Modified: trunk/src/main/java/cc/kune/core/client/ws/CoreViewImpl.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/ws/CoreViewImpl.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/core/client/ws/CoreViewImpl.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -20,9 +20,9 @@ package cc.kune.core.client.ws; import cc.kune.core.client.resources.CoreResources; -import cc.kune.core.client.state.StateManagerDefault; -import cc.kune.gspace.client.GSpaceArmorImpl; -import cc.kune.gspace.client.resources.GSpaceArmorResources; +import cc.kune.core.client.state.impl.StateManagerDefault; +import cc.kune.gspace.client.armor.impl.GSpaceArmorImpl; +import cc.kune.gspace.client.armor.resources.GSpaceArmorResources; import com.google.gwt.core.client.GWT; import com.google.gwt.user.client.History; Modified: trunk/src/main/java/cc/kune/core/client/ws/entheader/EntityHeaderPanel.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/ws/entheader/EntityHeaderPanel.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/core/client/ws/entheader/EntityHeaderPanel.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -30,7 +30,7 @@ import cc.kune.core.shared.FileConstants; import cc.kune.core.shared.domain.utils.StateToken; import cc.kune.core.shared.dto.GroupDTO; -import cc.kune.gspace.client.GSpaceArmor; +import cc.kune.gspace.client.armor.GSpaceArmor; import com.google.gwt.user.client.ui.AbstractImagePrototype; import com.google.gwt.user.client.ui.HorizontalPanel; Modified: trunk/src/main/java/cc/kune/core/client/ws/entheader/EntityHeaderPresenter.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/ws/entheader/EntityHeaderPresenter.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/core/client/ws/entheader/EntityHeaderPresenter.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -20,13 +20,13 @@ package cc.kune.core.client.ws.entheader; import cc.kune.common.client.actions.ui.descrip.GuiActionDescrip; -import cc.kune.core.client.state.GroupChangedEvent; -import cc.kune.core.client.state.GroupChangedEvent.GroupChangedHandler; +import cc.kune.core.client.events.GroupChangedEvent; +import cc.kune.core.client.events.GroupChangedEvent.GroupChangedHandler; import cc.kune.core.client.state.Session; import cc.kune.core.client.state.StateManager; import cc.kune.core.shared.dto.GroupDTO; -import cc.kune.gspace.client.options.logo.CurrentEntityChangedEvent; -import cc.kune.gspace.client.options.logo.CurrentEntityChangedEvent.CurrentEntityChangedHandler; +import cc.kune.gspace.client.events.CurrentEntityChangedEvent; +import cc.kune.gspace.client.events.CurrentEntityChangedEvent.CurrentEntityChangedHandler; import com.google.gwt.event.shared.EventBus; import com.google.gwt.user.client.ui.IsWidget; Modified: trunk/src/main/java/cc/kune/core/server/PlatformServerModule.java =================================================================== --- trunk/src/main/java/cc/kune/core/server/PlatformServerModule.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/core/server/PlatformServerModule.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -49,7 +49,8 @@ import cc.kune.core.server.content.CreationService; import cc.kune.core.server.content.CreationServiceDefault; import cc.kune.core.server.content.XMLActionReader; -import cc.kune.core.server.i18n.I18nTranslationServiceDefault; +import cc.kune.core.server.i18n.I18nTranslationServiceMultiLang; +import cc.kune.core.server.i18n.impl.I18nTranslationServiceDefault; import cc.kune.core.server.mail.MailService; import cc.kune.core.server.mail.MailServiceDefault; import cc.kune.core.server.manager.ExtMediaDescripManager; @@ -64,7 +65,6 @@ import cc.kune.core.server.manager.SocialNetworkManager; import cc.kune.core.server.manager.TagManager; import cc.kune.core.server.manager.TagUserContentManager; -import cc.kune.core.server.manager.TagUserContentManagerDefault; import cc.kune.core.server.manager.ToolConfigurationManager; import cc.kune.core.server.manager.UserManager; import cc.kune.core.server.manager.file.EntityLogoDownloadManager; @@ -82,6 +82,7 @@ import cc.kune.core.server.manager.impl.RateManagerDefault; import cc.kune.core.server.manager.impl.SocialNetworkManagerDefault; import cc.kune.core.server.manager.impl.TagManagerDefault; +import cc.kune.core.server.manager.impl.TagUserContentManagerDefault; import cc.kune.core.server.manager.impl.ToolConfigurationManagerDefault; import cc.kune.core.server.manager.impl.UserManagerDefault; import cc.kune.core.server.mapper.DozerMapper; @@ -110,10 +111,10 @@ import cc.kune.hspace.client.ClientStatsService; import cc.kune.lists.client.rpc.ListsService; import cc.kune.lists.server.rpc.ListsRPC; -import cc.kune.wave.server.KuneWaveService; -import cc.kune.wave.server.KuneWaveServiceDefault; import cc.kune.wave.server.ParticipantUtils; -import cc.kune.wave.server.WaveEmailNotifier; +import cc.kune.wave.server.kspecific.KuneWaveService; +import cc.kune.wave.server.kspecific.KuneWaveServiceDefault; +import cc.kune.wave.server.kspecific.WaveEmailNotifier; import com.google.inject.Singleton; import com.google.inject.matcher.Matchers; @@ -168,6 +169,7 @@ bind(FinderService.class).to(FinderServiceDefault.class); bind(StateService.class).to(StateServiceDefault.class); bind(I18nTranslationService.class).to(I18nTranslationServiceDefault.class); + bind(I18nTranslationServiceMultiLang.class).to(I18nTranslationServiceDefault.class); bind(KuneWaveService.class).to(KuneWaveServiceDefault.class); bind(MailService.class).to(MailServiceDefault.class); bind(XMLActionReader.class); Modified: trunk/src/main/java/cc/kune/core/server/content/ContainerManager.java =================================================================== --- trunk/src/main/java/cc/kune/core/server/content/ContainerManager.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/core/server/content/ContainerManager.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -21,7 +21,7 @@ import cc.kune.core.client.errors.DefaultException; import cc.kune.core.server.manager.Manager; -import cc.kune.core.server.manager.impl.SearchResult; +import cc.kune.core.server.manager.SearchResult; import cc.kune.domain.AccessLists; import cc.kune.domain.Container; import cc.kune.domain.Group; Modified: trunk/src/main/java/cc/kune/core/server/content/ContainerManagerDefault.java =================================================================== --- trunk/src/main/java/cc/kune/core/server/content/ContainerManagerDefault.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/core/server/content/ContainerManagerDefault.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -30,9 +30,9 @@ import cc.kune.core.client.errors.DefaultException; import cc.kune.core.client.errors.MoveOnSameContainerException; import cc.kune.core.client.errors.NameInUseException; +import cc.kune.core.server.manager.SearchResult; import cc.kune.core.server.manager.file.FileUtils; import cc.kune.core.server.manager.impl.DefaultManager; -import cc.kune.core.server.manager.impl.SearchResult; import cc.kune.core.server.manager.impl.ServerManagerException; import cc.kune.core.server.utils.FilenameUtils; import cc.kune.domain.AccessLists; Modified: trunk/src/main/java/cc/kune/core/server/content/ContentManager.java =================================================================== --- trunk/src/main/java/cc/kune/core/server/content/ContentManager.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/core/server/content/ContentManager.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -23,7 +23,7 @@ import cc.kune.core.client.errors.DefaultException; import cc.kune.core.server.manager.Manager; -import cc.kune.core.server.manager.impl.SearchResult; +import cc.kune.core.server.manager.SearchResult; import cc.kune.core.shared.domain.ContentStatus; import cc.kune.core.shared.domain.RateResult; import cc.kune.domain.Container; Modified: trunk/src/main/java/cc/kune/core/server/content/ContentManagerDefault.java =================================================================== --- trunk/src/main/java/cc/kune/core/server/content/ContentManagerDefault.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/core/server/content/ContentManagerDefault.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -38,10 +38,10 @@ import cc.kune.core.client.errors.NameInUseException; import cc.kune.core.client.errors.UserNotFoundException; import cc.kune.core.server.access.FinderService; +import cc.kune.core.server.manager.SearchResult; import cc.kune.core.server.manager.TagUserContentManager; import cc.kune.core.server.manager.file.FileUtils; import cc.kune.core.server.manager.impl.DefaultManager; -import cc.kune.core.server.manager.impl.SearchResult; import cc.kune.core.server.manager.impl.ServerManagerException; import cc.kune.core.server.utils.FilenameUtils; import cc.kune.core.shared.domain.ContentStatus; @@ -56,9 +56,9 @@ import cc.kune.domain.finders.ContentFinder; import cc.kune.domain.finders.I18nLanguageFinder; import cc.kune.domain.finders.UserFinder; -import cc.kune.wave.server.KuneWaveService; import cc.kune.wave.server.KuneWaveUtils; import cc.kune.wave.server.ParticipantUtils; +import cc.kune.wave.server.kspecific.KuneWaveService; import com.google.inject.Inject; import com.google.inject.Provider; Modified: trunk/src/main/java/cc/kune/core/server/content/CreationServiceDefault.java =================================================================== --- trunk/src/main/java/cc/kune/core/server/content/CreationServiceDefault.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/core/server/content/CreationServiceDefault.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -35,7 +35,7 @@ import cc.kune.domain.Group; import cc.kune.domain.I18nLanguage; import cc.kune.domain.User; -import cc.kune.wave.server.KuneWaveService; +import cc.kune.wave.server.kspecific.KuneWaveService; import com.google.inject.Inject; import com.google.inject.Singleton; Deleted: trunk/src/main/java/cc/kune/core/server/i18n/I18nTranslationServiceDefault.java =================================================================== --- trunk/src/main/java/cc/kune/core/server/i18n/I18nTranslationServiceDefault.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/core/server/i18n/I18nTranslationServiceDefault.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -1,99 +0,0 @@ -/* - * - * Copyright (C) 2007-2011 The kune development team (see CREDITS for details) - * This file is part of kune. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * - */ -package cc.kune.core.server.i18n; - -import cc.kune.common.shared.i18n.I18nTranslationService; -import cc.kune.common.shared.utils.TextUtils; -import cc.kune.core.server.UserSessionManager; -import cc.kune.core.server.manager.I18nTranslationManager; -import cc.kune.domain.I18nTranslation; - -import com.google.inject.Inject; -import com.google.inject.Provider; -import com.google.inject.Singleton; - -@Singleton -public class I18nTranslationServiceDefault extends I18nTranslationService { - - private boolean initiliazied = false; - private final I18nTranslationManager translationManager; - private final Provider<UserSessionManager> userSessionManager; - - @Inject - public I18nTranslationServiceDefault(final I18nTranslationManager translationManager, - final Provider<UserSessionManager> userSessionManager) { - this.translationManager = translationManager; - this.userSessionManager = userSessionManager; - } - - public void init() { - initiliazied = true; - } - - @Override - public boolean isRTL() { - return userSessionManager.get().isUserLoggedIn() ? userSessionManager.get().getUser().getLanguage().getDirection().equals( - RTL) - : false; - } - - /** - * If the text is not in the db, it stores the text pending for translation. - * - * Warning: text is escaped as html before insert in the db. Don't use html - * here (o user this method with params). - * - * @param text - * @return text translated in the current language - */ - @Override - public String t(final String text) { - return tWithNT(text, ""); - } - - /** - * If the text is not in the db, it stores the text pending for translation. - * - * Warning: text is escaped as html before insert in the db. Don't use html - * here (o user this method with params). - * - * @param text - * @param noteForTranslators - * some note for facilitate the translation - * - * @return text translated in the current language - */ - @Override - public String tWithNT(final String text, final String noteForTranslators) { - String language; - if (initiliazied && userSessionManager.get().isUserLoggedIn()) { - language = userSessionManager.get().getUser().getLanguage().getCode(); - } else { - language = I18nTranslation.DEFAULT_LANG; - } - final String encodeText = TextUtils.escapeHtmlLight(text); - String translation = translationManager.getTranslation(language, text, noteForTranslators); - if (translation == UNTRANSLATED_VALUE) { - // Not translated but in db, return text - translation = encodeText; - } - return decodeHtml(translation); - } -} Added: trunk/src/main/java/cc/kune/core/server/i18n/I18nTranslationServiceMultiLang.java =================================================================== --- trunk/src/main/java/cc/kune/core/server/i18n/I18nTranslationServiceMultiLang.java (rev 0) +++ trunk/src/main/java/cc/kune/core/server/i18n/I18nTranslationServiceMultiLang.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -0,0 +1,20 @@ +package cc.kune.core.server.i18n; + +import cc.kune.domain.I18nLanguage; + +public interface I18nTranslationServiceMultiLang { + /** + * If the text is not in the db, it stores the text pending for translation. + * + * Warning: text is escaped as html before insert in the db. Don't use html + * here (o user this method with params). + * + * @param text + * @param noteForTranslators + * some note for facilitate the translation + * @param lang + * translation for some specific language + * @return text translated in the specified language + */ + public String tWithNT(I18nLanguage lang, final String text, final String noteForTranslators); +} Copied: trunk/src/main/java/cc/kune/core/server/i18n/impl/I18nTranslationServiceDefault.java (from rev 1655, trunk/src/main/java/cc/kune/core/server/i18n/I18nTranslationServiceDefault.java) =================================================================== --- trunk/src/main/java/cc/kune/core/server/i18n/impl/I18nTranslationServiceDefault.java (rev 0) +++ trunk/src/main/java/cc/kune/core/server/i18n/impl/I18nTranslationServiceDefault.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -0,0 +1,114 @@ +/* + * + * Copyright (C) 2007-2011 The kune development team (see CREDITS for details) + * This file is part of kune. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ +package cc.kune.core.server.i18n.impl; + +import cc.kune.common.shared.i18n.I18nTranslationService; +import cc.kune.common.shared.utils.TextUtils; +import cc.kune.core.server.UserSessionManager; +import cc.kune.core.server.i18n.I18nTranslationServiceMultiLang; +import cc.kune.core.server.manager.I18nLanguageManager; +import cc.kune.core.server.manager.I18nTranslationManager; +import cc.kune.domain.I18nLanguage; +import cc.kune.domain.I18nTranslation; + +import com.google.inject.Inject; +import com.google.inject.Provider; +import com.google.inject.Singleton; + +@Singleton +public class I18nTranslationServiceDefault extends I18nTranslationService implements + I18nTranslationServiceMultiLang { + + private boolean initiliazied = false; + private final I18nLanguageManager languageManager; + private final I18nTranslationManager translationManager; + private final Provider<UserSessionManager> userSessionManager; + + @Inject + public I18nTranslationServiceDefault(final I18nTranslationManager translationManager, + final Provider<UserSessionManager> userSessionManager, final I18nLanguageManager languageManager) { + this.translationManager = translationManager; + this.userSessionManager = userSessionManager; + this.languageManager = languageManager; + } + + private I18nLanguage defLang() { + return languageManager.findByCode(I18nTranslation.DEFAULT_LANG); + } + + public void init() { + initiliazied = true; + } + + @Override + public boolean isRTL() { + return userSessionManager.get().isUserLoggedIn() ? userSessionManager.get().getUser().getLanguage().getDirection().equals( + RTL) + : false; + } + + /** + * If the text is not in the db, it stores the text pending for translation. + * + * Warning: text is escaped as html before insert in the db. Don't use html + * here (o user this method with params). + * + * @param text + * @return text translated in the current language + */ + @Override + public String t(final String text) { + return tWithNT(text, ""); + } + + @Override + public String tWithNT(final I18nLanguage language, final String text, final String noteForTranslators) { + final String encodeText = TextUtils.escapeHtmlLight(text); + String translation = translationManager.getTranslation(language.getCode(), text, noteForTranslators); + if (translation == UNTRANSLATED_VALUE) { + // Not translated but in db, return text + translation = encodeText; + } + return decodeHtml(translation); + } + + /** + * If the text is not in the db, it stores the text pending for translation. + * + * Warning: text is escaped as html before insert in the db. Don't use html + * here (o user this method with params). + * + * @param text + * @param noteForTranslators + * some note for facilitate the translation + * + * @return text translated in the current language + */ + @Override + public String tWithNT(final String text, final String noteForTranslators) { + I18nLanguage language; + if (initiliazied && userSessionManager.get().isUserLoggedIn()) { + language = userSessionManager.get().getUser().getLanguage(); + } else { + language = defLang(); + } + return tWithNT(language, text, noteForTranslators); + } +} Modified: trunk/src/main/java/cc/kune/core/server/init/DatabaseInitializer.java =================================================================== --- trunk/src/main/java/cc/kune/core/server/init/DatabaseInitializer.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/core/server/init/DatabaseInitializer.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -29,7 +29,7 @@ import cc.kune.core.client.errors.UserMustBeLoggedException; import cc.kune.core.server.content.ContentManager; -import cc.kune.core.server.i18n.I18nTranslationServiceDefault; +import cc.kune.core.server.i18n.impl.I18nTranslationServiceDefault; import cc.kune.core.server.manager.GroupManager; import cc.kune.core.server.manager.I18nCountryManager; import cc.kune.core.server.manager.I18nLanguageManager; Modified: trunk/src/main/java/cc/kune/core/server/manager/GroupManager.java =================================================================== --- trunk/src/main/java/cc/kune/core/server/manager/GroupManager.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/core/server/manager/GroupManager.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -26,7 +26,6 @@ import cc.kune.core.client.errors.EmailAddressInUseException; import cc.kune.core.client.errors.GroupShortNameInUseException; import cc.kune.core.client.errors.UserMustBeLoggedException; -import cc.kune.core.server.manager.impl.SearchResult; import cc.kune.core.shared.dto.GroupDTO; import cc.kune.domain.Content; import cc.kune.domain.Group; Modified: trunk/src/main/java/cc/kune/core/server/manager/Manager.java =================================================================== --- trunk/src/main/java/cc/kune/core/server/manager/Manager.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/core/server/manager/Manager.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -21,7 +21,6 @@ import org.apache.lucene.search.BooleanClause; -import cc.kune.core.server.manager.impl.SearchResult; public interface Manager<T, X> { Copied: trunk/src/main/java/cc/kune/core/server/manager/SearchResult.java (from rev 1655, trunk/src/main/java/cc/kune/core/server/manager/impl/SearchResult.java) =================================================================== --- trunk/src/main/java/cc/kune/core/server/manager/SearchResult.java (rev 0) +++ trunk/src/main/java/cc/kune/core/server/manager/SearchResult.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -0,0 +1,62 @@ +/* + * + * Copyright (C) 2007-2011 The kune development team (see CREDITS for details) + * This file is part of kune. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ +package cc.kune.core.server.manager; + +import java.util.List; + +public class SearchResult<T> { + List<T> list; + int size; + + public SearchResult() { + this(0, null); + } + + public SearchResult(final int count, final List<T> list) { + this.list = list; + this.size = count; + } + + public List<T> getList() { + return list; + } + + /** + * Gets the size of total results (may differ from list size). + * + * @return the size + */ + public int getSize() { + return size; + } + + public void setList(final List<T> list) { + this.list = list; + } + + public void setSize(final int size) { + this.size = size; + } + + @Override + public String toString() { + return "SearchResult[(" + getSize() + "): " + list + "]"; + } +} Deleted: trunk/src/main/java/cc/kune/core/server/manager/TagUserContentManagerDefault.java =================================================================== --- trunk/src/main/java/cc/kune/core/server/manager/TagUserContentManagerDefault.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/core/server/manager/TagUserContentManagerDefault.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -1,127 +0,0 @@ -/* - * - * Copyright (C) 2007-2011 The kune development team (see CREDITS for details) - * This file is part of kune. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * - */ -package cc.kune.core.server.manager; - -import java.util.ArrayList; -import java.util.List; - -import javax.persistence.EntityManager; -import javax.persistence.NoResultException; - - -import cc.kune.common.shared.utils.TextUtils; -import cc.kune.core.server.manager.impl.DefaultManager; -import cc.kune.core.shared.domain.TagCloudResult; -import cc.kune.core.shared.domain.TagCount; -import cc.kune.domain.Content; -import cc.kune.domain.Group; -import cc.kune.domain.Tag; -import cc.kune.domain.TagUserContent; -import cc.kune.domain.User; -import cc.kune.domain.finders.TagUserContentFinder; - -import com.google.inject.Inject; -import com.google.inject.Provider; -import com.google.inject.Singleton; - -@Singleton -public class TagUserContentManagerDefault extends DefaultManager<TagUserContent, Long> implements TagUserContentManager { - private final TagUserContentFinder finder; - private final Provider<EntityManager> provider; - private final TagManager tagManager; - - @Inject - public TagUserContentManagerDefault(final Provider<EntityManager> provider, final TagManager tagManager, - final TagUserContentFinder finder) { - super(provider, TagUserContent.class); - this.provider = provider; - this.tagManager = tagManager; - this.finder = finder; - } - - List<Tag> find(final User user, final Content content) { - return finder.findTags(user, content); - } - - private int getMaxCount(final Group group) { - return finder.getMaxGrouped(group).intValue(); - } - - private int getMinCount(final Group group) { - return finder.getMinGrouped(group).intValue(); - } - - private List<TagCount> getSummaryByGroup(final Group group) { - return finder.getTagsGroups(group); - } - - @Override - public TagCloudResult getTagCloudResultByGroup(final Group group) { - try { - return new TagCloudResult(getSummaryByGroup(group), getMaxCount(group), getMinCount(group)); - } catch (final NoResultException e) { - return new TagCloudResult(); - } - } - - @Override - public String getTagsAsString(final User user, final Content content) { - final StringBuffer tagConcatenated = new StringBuffer(); - if (user.getId() != null) { - // FIXME: User must be persisted (this fails on tests) - final List<Tag> tags = find(user, content); - for (final Tag tag : tags) { - tagConcatenated.append(" ").append(tag.getName()); - } - } - return tagConcatenated.toString().replaceFirst(" ", ""); - } - - @Override - public void remove(final User user, final Content content) { - for (final TagUserContent item : finder.find(user, content)) { - provider.get().remove(item); - } - } - - @Override - public void setTags(final User user, final Content content, final String tags) { - final ArrayList<String> tagsStripped = TextUtils.splitTags(tags); - final ArrayList<Tag> tagList = new ArrayList<Tag>(); - - for (final String tagString : tagsStripped) { - Tag tag; - try { - tag = tagManager.findByTagName(tagString); - } catch (final NoResultException e) { - tag = new Tag(tagString); - tagManager.persist(tag); - } - if (!tagList.contains(tag)) { - tagList.add(tag); - } - } - remove(user, content); - for (final Tag tag : tagList) { - final TagUserContent tagUserContent = new TagUserContent(tag, user, content); - persist(tagUserContent); - } - } -} Modified: trunk/src/main/java/cc/kune/core/server/manager/UserManager.java =================================================================== --- trunk/src/main/java/cc/kune/core/server/manager/UserManager.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/core/server/manager/UserManager.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -22,7 +22,6 @@ import org.waveprotocol.box.server.authentication.PasswordDigest; import cc.kune.core.client.errors.I18nNotFoundException; -import cc.kune.core.server.manager.impl.SearchResult; import cc.kune.core.shared.domain.UserSNetVisibility; import cc.kune.core.shared.dto.I18nLanguageSimpleDTO; import cc.kune.core.shared.dto.UserDTO; Modified: trunk/src/main/java/cc/kune/core/server/manager/impl/DefaultManager.java =================================================================== --- trunk/src/main/java/cc/kune/core/server/manager/impl/DefaultManager.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/core/server/manager/impl/DefaultManager.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -34,6 +34,8 @@ import org.hibernate.search.jpa.FullTextQuery; import org.hibernate.search.jpa.Search; +import cc.kune.core.server.manager.SearchResult; + import com.google.inject.Provider; public abstract class DefaultManager<T, K> { Modified: trunk/src/main/java/cc/kune/core/server/manager/impl/GroupManagerDefault.java =================================================================== --- trunk/src/main/java/cc/kune/core/server/manager/impl/GroupManagerDefault.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/core/server/manager/impl/GroupManagerDefault.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -42,6 +42,7 @@ import cc.kune.core.server.manager.FileManager; import cc.kune.core.server.manager.GroupManager; import cc.kune.core.server.manager.LicenseManager; +import cc.kune.core.server.manager.SearchResult; import cc.kune.core.server.manager.file.FileUtils; import cc.kune.core.server.properties.KuneBasicProperties; import cc.kune.core.server.properties.KuneProperties; Modified: trunk/src/main/java/cc/kune/core/server/manager/impl/KuneWaveManagerDefault.java =================================================================== --- trunk/src/main/java/cc/kune/core/server/manager/impl/KuneWaveManagerDefault.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/core/server/manager/impl/KuneWaveManagerDefault.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -36,9 +36,9 @@ import cc.kune.domain.User; import cc.kune.domain.UserBuddiesData; import cc.kune.domain.finders.GroupFinder; -import cc.kune.wave.server.KuneWaveService; import cc.kune.wave.server.KuneWaveUtils; import cc.kune.wave.server.ParticipantUtils; +import cc.kune.wave.server.kspecific.KuneWaveService; import com.google.inject.Inject; import com.google.inject.Singleton; Deleted: trunk/src/main/java/cc/kune/core/server/manager/impl/SearchResult.java =================================================================== --- trunk/src/main/java/cc/kune/core/server/manager/impl/SearchResult.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/core/server/manager/impl/SearchResult.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -1,62 +0,0 @@ -/* - * - * Copyright (C) 2007-2011 The kune development team (see CREDITS for details) - * This file is part of kune. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * - */ -package cc.kune.core.server.manager.impl; - -import java.util.List; - -public class SearchResult<T> { - List<T> list; - int size; - - public SearchResult() { - this(0, null); - } - - public SearchResult(final int count, final List<T> list) { - this.list = list; - this.size = count; - } - - public List<T> getList() { - return list; - } - - /** - * Gets the size of total results (may differ from list size). - * - * @return the size - */ - public int getSize() { - return size; - } - - public void setList(final List<T> list) { - this.list = list; - } - - public void setSize(final int size) { - this.size = size; - } - - @Override - public String toString() { - return "SearchResult[(" + getSize() + "): " + list + "]"; - } -} Copied: trunk/src/main/java/cc/kune/core/server/manager/impl/TagUserContentManagerDefault.java (from rev 1655, trunk/src/main/java/cc/kune/core/server/manager/TagUserContentManagerDefault.java) =================================================================== --- trunk/src/main/java/cc/kune/core/server/manager/impl/TagUserContentManagerDefault.java (rev 0) +++ trunk/src/main/java/cc/kune/core/server/manager/impl/TagUserContentManagerDefault.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -0,0 +1,128 @@ +/* + * + * Copyright (C) 2007-2011 The kune development team (see CREDITS for details) + * This file is part of kune. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ +package cc.kune.core.server.manager.impl; + +import java.util.ArrayList; +import java.util.List; + +import javax.persistence.EntityManager; +import javax.persistence.NoResultException; + +import cc.kune.common.shared.utils.TextUtils; +import cc.kune.core.server.manager.TagManager; +import cc.kune.core.server.manager.TagUserContentManager; +import cc.kune.core.shared.domain.TagCloudResult; +import cc.kune.core.shared.domain.TagCount; +import cc.kune.domain.Content; +import cc.kune.domain.Group; +import cc.kune.domain.Tag; +import cc.kune.domain.TagUserContent; +import cc.kune.domain.User; +import cc.kune.domain.finders.TagUserContentFinder; + +import com.google.inject.Inject; +import com.google.inject.Provider; +import com.google.inject.Singleton; + +@Singleton +public class TagUserContentManagerDefault extends DefaultManager<TagUserContent, Long> implements + TagUserContentManager { + private final TagUserContentFinder finder; + private final Provider<EntityManager> provider; + private final TagManager tagManager; + + @Inject + public TagUserContentManagerDefault(final Provider<EntityManager> provider, + final TagManager tagManager, final TagUserContentFinder finder) { + super(provider, TagUserContent.class); + this.provider = provider; + this.tagManager = tagManager; + this.finder = finder; + } + + public List<Tag> find(final User user, final Content content) { + return finder.findTags(user, content); + } + + private int getMaxCount(final Group group) { + return finder.getMaxGrouped(group).intValue(); + } + + private int getMinCount(final Group group) { + return finder.getMinGrouped(group).intValue(); + } + + private List<TagCount> getSummaryByGroup(final Group group) { + return finder.getTagsGroups(group); + } + + @Override + public TagCloudResult getTagCloudResultByGroup(final Group group) { + try { + return new TagCloudResult(getSummaryByGroup(group), getMaxCount(group), getMinCount(group)); + } catch (final NoResultException e) { + return new TagCloudResult(); + } + } + + @Override + public String getTagsAsString(final User user, final Content content) { + final StringBuffer tagConcatenated = new StringBuffer(); + if (user.getId() != null) { + // FIXME: User must be persisted (this fails on tests) + final List<Tag> tags = find(user, content); + for (final Tag tag : tags) { + tagConcatenated.append(" ").append(tag.getName()); + } + } + return tagConcatenated.toString().replaceFirst(" ", ""); + } + + @Override + public void remove(final User user, final Content content) { + for (final TagUserContent item : finder.find(user, content)) { + provider.get().remove(item); + } + } + + @Override + public void setTags(final User user, final Content content, final String tags) { + final ArrayList<String> tagsStripped = TextUtils.splitTags(tags); + final ArrayList<Tag> tagList = new ArrayList<Tag>(); + + for (final String tagString : tagsStripped) { + Tag tag; + try { + tag = tagManager.findByTagName(tagString); + } catch (final NoResultException e) { + tag = new Tag(tagString); + tagManager.persist(tag); + } + if (!tagList.contains(tag)) { + tagList.add(tag); + } + } + remove(user, content); + for (final Tag tag : tagList) { + final TagUserContent tagUserContent = new TagUserContent(tag, user, content); + persist(tagUserContent); + } + } +} Modified: trunk/src/main/java/cc/kune/core/server/manager/impl/UserManagerDefault.java =================================================================== --- trunk/src/main/java/cc/kune/core/server/manager/impl/UserManagerDefault.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/core/server/manager/impl/UserManagerDefault.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -55,6 +55,7 @@ import cc.kune.core.server.manager.GroupManager; import cc.kune.core.server.manager.I18nCountryManager; import cc.kune.core.server.manager.I18nLanguageManager; +import cc.kune.core.server.manager.SearchResult; import cc.kune.core.server.manager.UserManager; import cc.kune.core.server.notifier.NotifyService; import cc.kune.core.server.properties.ChatProperties; @@ -72,8 +73,8 @@ import cc.kune.domain.UserBuddiesData; import cc.kune.domain.finders.UserFinder; import cc.kune.wave.server.CustomUserRegistrationServlet; -import cc.kune.wave.server.KuneWaveService; import cc.kune.wave.server.ParticipantUtils; +import cc.kune.wave.server.kspecific.KuneWaveService; import com.google.inject.Inject; import com.google.inject.Provider; Modified: trunk/src/main/java/cc/kune/core/server/mapper/DozerMapper.java =================================================================== --- trunk/src/main/java/cc/kune/core/server/mapper/DozerMapper.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/core/server/mapper/DozerMapper.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -24,7 +24,7 @@ import net.sf.dozer.util.mapping.DozerBeanMapperSingletonWrapper; import net.sf.dozer.util.mapping.MapperIF; -import cc.kune.core.server.manager.impl.SearchResult; +import cc.kune.core.server.manager.SearchResult; import cc.kune.core.shared.dto.SearchResultDTO; import com.google.inject.Singleton; Modified: trunk/src/main/java/cc/kune/core/server/mapper/Mapper.java =================================================================== --- trunk/src/main/java/cc/kune/core/server/mapper/Mapper.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/core/server/mapper/Mapper.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -22,7 +22,7 @@ import java.util.List; -import cc.kune.core.server.manager.impl.SearchResult; +import cc.kune.core.server.manager.SearchResult; import cc.kune.core.shared.dto.SearchResultDTO; public interface Mapper { Modified: trunk/src/main/java/cc/kune/core/server/notifier/NotifySenderDefault.java =================================================================== --- trunk/src/main/java/cc/kune/core/server/notifier/NotifySenderDefault.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/core/server/notifier/NotifySenderDefault.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -8,14 +8,14 @@ import org.apache.commons.logging.LogFactory; import cc.kune.common.shared.utils.TextUtils; +import cc.kune.core.server.i18n.I18nTranslationServiceMultiLang; import cc.kune.core.server.mail.FormatedString; import cc.kune.core.server.mail.MailService; -import cc.kune.core.server.manager.I18nTranslationManager; import cc.kune.core.server.properties.KuneProperties; import cc.kune.core.server.xmpp.XmppManager; import cc.kune.core.shared.domain.dto.EmailNotificationFrequency; import cc.kune.domain.User; -import cc.kune.wave.server.KuneWaveService; +import cc.kune.wave.server.kspecific.KuneWaveService; import com.google.common.base.Preconditions; import com.google.inject.Inject; @@ -25,14 +25,14 @@ public class NotifySenderDefault implements NotifySender { public static final Log LOG = LogFactory.getLog(NotifySenderDefault.class); private final String emailTemplate; - private final I18nTranslationManager i18n; + private final I18nTranslationServiceMultiLang i18n; private final MailService mailService; private final KuneWaveService waveService; private final XmppManager xmppManager; @Inject public NotifySenderDefault(final MailService mailService, final KuneWaveService waveService, - final XmppManager xmppManager, final I18nTranslationManager i18n, + final XmppManager xmppManager, final I18nTranslationServiceMultiLang i18n, final KuneProperties kuneProperties) throws IOException { this.mailService = mailService; this.waveService = waveService; @@ -51,20 +51,20 @@ final String username = user.getShortName(); if (subject.shouldBeTranslated()) { // Translate per recipient language - final String subjectTranslation = i18n.getTranslation(user.getLanguage().getCode(), - subject.getTemplate(), ""); - if (subjectTranslation != null) { - // Right now commented because we are only testing - // subject.setTemplate(subjectTranslation); - } + // final String subjectTranslation = i18n.tWithNT(user.getLanguage(), + // subject.getTemplate(), ""); + // if (subjectTranslation != null) { + // Right now commented because we are only testing + // subject.setTemplate(subjectTranslation); + // } } if (body.shouldBeTranslated()) { - final String bodyTranslation = i18n.getTranslation(user.getLanguage().getCode(), - body.getTemplate(), ""); - if (bodyTranslation != null) { - // Right now commented because we are only testing - // body.setTemplate(bodyTranslation); - } + // final String bodyTranslation = i18n.tWithNT(user.getLanguage(), + // body.getTemplate(), ""); + // if (bodyTranslation != null) { + // Right now commented because we are only testing + // body.setTemplate(bodyTranslation); + // } } switch (notifyType) { case chat: Modified: trunk/src/main/java/cc/kune/core/server/notifier/NotifyService.java =================================================================== --- trunk/src/main/java/cc/kune/core/server/notifier/NotifyService.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/core/server/notifier/NotifyService.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -33,6 +33,7 @@ this.userFinder = userFinder; } + @SuppressWarnings("unchecked") private void getAllUserMembers(final Set<User> users, final Group groupToNotify, final boolean onlyAdmins) { final Collection<Group> members; @@ -60,7 +61,6 @@ } - @SuppressWarnings("unchecked") public void notifyGroup(final Group groupToNotify, final Group groupSender, final String subject, final String message) { final Set<User> members = new HashSet<User>(); Deleted: trunk/src/main/java/cc/kune/core/server/rack/RackHelper.java =================================================================== --- trunk/src/main/java/cc/kune/core/server/rack/RackHelper.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/core/server/rack/RackHelper.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -1,57 +0,0 @@ -/* - * - * Copyright (C) 2007-2011 The kune development team (see CREDITS for details) - * This file is part of kune. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * - */ -package cc.kune.core.server.rack; - -import javax.servlet.ServletRequest; -import javax.servlet.http.HttpServletRequest; - -public final class RackHelper { - public static String buildForwardString(final ServletRequest request, final String forward) { - String parameters = RackHelper.extractParameters(request); - return new StringBuilder(forward).append(parameters).toString(); - } - - public static String extractParameters(final ServletRequest request) { - HttpServletRequest httpServletRequest = (HttpServletRequest) request; - String uri = httpServletRequest.getRequestURI(); - int index = uri.indexOf('?'); - if (index > 0) { - return uri.substring(index); - } else { - return ""; - } - } - - public static String getRelativeURL(final ServletRequest request) { - HttpServletRequest req = (HttpServletRequest) request; - String contextPath = req.getContextPath(); - String uri = req.getRequestURI(); - return uri.substring(contextPath.length()); - } - - public static String getURI(final ServletRequest request) { - HttpServletRequest httpServletRequest = (HttpServletRequest) request; - return httpServletRequest.getRequestURI(); - } - - private RackHelper() { - } - -} Deleted: trunk/src/main/java/cc/kune/core/server/rack/RackServletFilter.java =================================================================== --- trunk/src/main/java/cc/kune/core/server/rack/RackServletFilter.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/core/server/rack/RackServletFilter.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -1,192 +0,0 @@ -/* - * - * Copyright (C) 2007-2011 The kune development team (see CREDITS for details) - * This file is part of kune. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * - */ -package cc.kune.core.server.rack; - -import java.io.IOException; -import java.util.Iterator; -import java.util.List; - -import javax.servlet.Filter; -import javax.servlet.FilterChain; -import javax.servlet.FilterConfig; -import javax.servlet.ServletException; -import javax.servlet.ServletRequest; -import javax.servlet.ServletResponse; - -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.quartz.SchedulerException; -import org.waveprotocol.box.server.rpc.ServerRpcProvider; - -import cc.kune.core.server.error.ServerException; -import cc.kune.core.server.rack.dock.Dock; -import cc.kune.core.server.rack.dock.RequestMatcher; -import cc.kune.core.server.scheduler.CronServerTasksManager; -import cc.kune.wave.server.WaveEmailNotifier; - -import com.google.inject.Injector; - -public class RackServletFilter implements Filter { - public static class DockChain implements FilterChain { - private final Iterator<Dock> iterator; - - public DockChain(final Iterator<Dock> iterator) { - this.iterator = iterator; - } - - @Override - public void doFilter(final ServletRequest request, final ServletResponse response) - throws IOException, ServletException { - Dock dock = null; - boolean matched = false; - - final String relative = RackHelper.getRelativeURL(request); - while (!matched && iterator.hasNext()) { - dock = iterator.next(); - matched = dock.matches(relative); - } - if (matched) { - execute(dock.getFilter(), request, response); - } - } - - private void execute(final Filter filter, final ServletRequest request, - final ServletResponse response) throws IOException, ServletException { - // log.debug("RACK FILTER: " + filter.getClass().getSimpleName()); - filter.doFilter(request, response, this); - } - } - - public static final String INJECTOR_ATTRIBUTE = Injector.class.getName() + "Child"; - public static final String INJECTOR_PARENT_ATTRIBUTE = ServerRpcProvider.INJECTOR_ATTRIBUTE; - private static final Log LOG = LogFactory.getLog(RackServletFilter.class); - private static final String MODULE_PARAMETER = RackModule.class.getName(); - private List<Dock> docks; - - private List<RequestMatcher> excludes; - private Injector injector; - private Rack rack; - - @Override - public void destroy() { - for (final Dock dock : docks) { - dock.getFilter().destroy(); - } - } - - @Override - public void doFilter(final ServletRequest request, final ServletResponse response, - final FilterChain chain) throws IOException, ServletException { - - final String relative = RackHelper.getRelativeURL(request); - for (final RequestMatcher matcher : excludes) { - if (matcher.matches(relative)) { - LOG.info("Excluded (from Guice): " + relative); - chain.doFilter(request, response); - return; - } - } - LOG.debug("REQUEST: " + relative); - final FilterChain newChain = new DockChain(docks.iterator()); - newChain.doFilter(request, response); - } - - @Override - protected void finalize() throws Throwable { - super.finalize(); - stopContainerListeners(rack.getListeners(), injector); - } - - private RackModule getModule(final FilterConfig filterConfig) { - final String moduleName = getModuleName(filterConfig); - try { - final Class<?> clazz = Class.forName(moduleName); - final RackModule module = (RackModule) clazz.newInstance(); - return module; - } catch (final Exception e) { - throw new ServerException("couldn't instantiate the rack module", e); - } - } - - private String getModuleName(final FilterConfig filterConfig) { - final String moduleName = filterConfig.getInitParameter(MODULE_PARAMETER); - if (moduleName == null) { - throw new ServerException("Rack module name can't be null!"); - } - return moduleName; - } - - @Override - public void init(final FilterConfig filterConfig) throws ServletException { - LOG.debug("INITIALIZING RackServletFilter..."); - final RackModule module = getModule(filterConfig); - final RackBuilder builder = new RackBuilder(); - module.configure(builder); - rack = builder.getRack(); - injector = (Injector) filterConfig.getServletContext().getAttribute(INJECTOR_PARENT_ATTRIBUTE); - final Injector kuneChildInjector = installInjector(filterConfig, rack, injector); - startContainerListeners(rack.getListeners(), kuneChildInjector); - docks = rack.getDocks(); - excludes = rack.getExcludes(); - initFilters(filterConfig); - kuneChildInjector.getInstance(WaveEmailNotifier.class); - try { - kuneChildInjector.getInstance(CronServerTasksManager.class).start(); - } catch (final SchedulerException e) { - LOG.error("Error starting cron scheduler", e); - } - LOG.debug("INITIALIZATION DONE!"); - } - - private void initFilters(final FilterConfig filterConfig) throws ServletException { - for (final Dock dock : docks) { - dock.getFilter().init(filterConfig); - } - } - - private Injector installInjector(final FilterConfig filterConfig, final Rack rack, - final Injector waveChildInjector) { - // final Injector injector = Guice.createInjector(); - final Injector childInjector = waveChildInjector.createChildInjector(rack.getGuiceModules()); - filterConfig.getServletContext().setAttribute(INJECTOR_ATTRIBUTE, childInjector); - return childInjector; - } - - private void startContainerListeners(final List<Class<? extends ContainerListener>> listenerClasses, - final Injector injector) { - LOG.debug("STARTING CONTAINER LISTENERS..."); - for (final Class<? extends ContainerListener> listenerClass : listenerClasses) { - final ContainerListener listener = injector.getInstance(listenerClass); - listener.start(); - } - } - - // FIXME: Dani, never used this: - @SuppressWarnings("unused") - private void stopContainerListeners(final List<Class<? extends ContainerListener>> listenerClasses, - final Injector injector) { - LOG.debug("STOPING CONTAINER LISTENERS..."); - for (final Class<? extends ContainerListener> listenerClass : listenerClasses) { - final ContainerListener listener = injector.getInstance(listenerClass); - listener.stop(); - } - } - -} Added: trunk/src/main/java/cc/kune/core/server/rack/RackServletFilter.java =================================================================== --- trunk/src/main/java/cc/kune/core/server/rack/RackServletFilter.java (rev 0) +++ trunk/src/main/java/cc/kune/core/server/rack/RackServletFilter.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -0,0 +1,191 @@ +/* + * + * Copyright (C) 2007-2011 The kune development team (see CREDITS for details) + * This file is part of kune. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ +package cc.kune.core.server.rack; + +import java.io.IOException; +import java.util.Iterator; +import java.util.List; + +import javax.servlet.Filter; +import javax.servlet.FilterChain; +import javax.servlet.FilterConfig; +import javax.servlet.ServletException; +import javax.servlet.ServletRequest; +import javax.servlet.ServletResponse; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.quartz.SchedulerException; +import org.waveprotocol.box.server.rpc.ServerRpcProvider; + +import cc.kune.core.server.error.ServerException; +import cc.kune.core.server.rack.dock.Dock; +import cc.kune.core.server.rack.dock.RequestMatcher; +import cc.kune.core.server.rack.utils.RackHelper; +import cc.kune.core.server.scheduler.CronServerTasksManager; +import cc.kune.wave.server.kspecific.WaveEmailNotifier; + +import com.google.inject.Injector; + +public class RackServletFilter implements Filter { + public static class DockChain implements FilterChain { + private final Iterator<Dock> iterator; + + public DockChain(final Iterator<Dock> iterator) { + this.iterator = iterator; + } + + @Override + public void doFilter(final ServletRequest request, final ServletResponse response) + throws IOException, ServletException { + Dock dock = null; + boolean matched = false; + + final String relative = RackHelper.getRelativeURL(request); + while (!matched && iterator.hasNext()) { + dock = iterator.next(); + matched = dock.matches(relative); + } + if (matched) { + execute(dock.getFilter(), request, response); + } + } + + private void execute(final Filter filter, final ServletRequest request, + final ServletResponse response) throws IOException, ServletException { + // log.debug("RACK FILTER: " + filter.getClass().getSimpleName()); + filter.doFilter(request, response, this); + } + } + + public static final String INJECTOR_ATTRIBUTE = Injector.class.getName() + "Child"; + public static final String INJECTOR_PARENT_ATTRIBUTE = ServerRpcProvider.INJECTOR_ATTRIBUTE; + private static final Log LOG = LogFactory.getLog(RackServletFilter.class); + private static final String MODULE_PARAMETER = RackModule.class.getName(); + private List<Dock> docks; + + private List<RequestMatcher> excludes; + private Injector injector; + private Rack rack; + + @Override + public void destroy() { + for (final Dock dock : docks) { + dock.getFilter().destroy(); + } + } + + @Override + public void doFilter(final ServletRequest request, final ServletResponse response, + final FilterChain chain) throws IOException, ServletException { + + final String relative = RackHelper.getRelativeURL(request); + for (final RequestMatcher matcher : excludes) { + if (matcher.matches(relative)) { + LOG.info("Excluded (from Guice): " + relative); + chain.doFilter(request, response); + return; + } + } + LOG.debug("REQUEST: " + relative); + final FilterChain newChain = new DockChain(docks.iterator()); + newChain.doFilter(request, response); + } + + @Override + protected void finalize() throws Throwable { + super.finalize(); + stopContainerListeners(rack.getListeners(), injector); + } + + private RackModule getModule(final FilterConfig filterConfig) { + final String moduleName = getModuleName(filterConfig); + try { + final Class<?> clazz = Class.forName(moduleName); + final RackModule module = (RackModule) clazz.newInstance(); + return module; + } catch (final Exception e) { + throw new ServerException("couldn't instantiate the rack module", e); + } + } + + private String getModuleName(final FilterConfig filterConfig) { + final String moduleName = filterConfig.getInitParameter(MODULE_PARAMETER); + if (moduleName == null) { + throw new ServerException("Rack module name can't be null!"); + } + return moduleName; + } + + @Override + public void init(final FilterConfig filterConfig) throws ServletException { + LOG.debug("INITIALIZING RackServletFilter..."); + final RackModule module = getModule(filterConfig); + final RackBuilder builder = new RackBuilder(); + module.configure(builder); + rack = builder.getRack(); + injector = (Injector) filterConfig.getServletContext().getAttribute(INJECTOR_PARENT_ATTRIBUTE); + final Injector kuneChildInjector = installInjector(filterConfig, rack, injector); + startContainerListeners(rack.getListeners(), kuneChildInjector); + docks = rack.getDocks(); + excludes = rack.getExcludes(); + initFilters(filterConfig); + kuneChildInjector.getInstance(WaveEmailNotifier.class); + try { + kuneChildInjector.getInstance(CronServerTasksManager.class).start(); + } catch (final SchedulerException e) { + LOG.error("Error starting cron scheduler", e); + } + LOG.debug("INITIALIZATION DONE!"); + } + + private void initFilters(final FilterConfig filterConfig) throws ServletException { + for (final Dock dock : docks) { + dock.getFilter().init(filterConfig); + } + } + + private Injector installInjector(final FilterConfig filterConfig, final Rack rack, + final Injector waveChildInjector) { + // final Injector injector = Guice.createInjector(); + final Injector childInjector = waveChildInjector.createChildInjector(rack.getGuiceModules()); + filterConfig.getServletContext().setAttribute(INJECTOR_ATTRIBUTE, childInjector); + return childInjector; + } + + private void startContainerListeners(final List<Class<? extends ContainerListener>> listenerClasses, + final Injector injector) { + LOG.debug("STARTING CONTAINER LISTENERS..."); + for (final Class<? extends ContainerListener> listenerClass : listenerClasses) { + final ContainerListener listener = injector.getInstance(listenerClass); + listener.start(); + } + } + + private void stopContainerListeners(final List<Class<? extends ContainerListener>> listenerClasses, + final Injector injector) { + LOG.debug("STOPING CONTAINER LISTENERS..."); + for (final Class<? extends ContainerListener> listenerClass : listenerClasses) { + final ContainerListener listener = injector.getInstance(listenerClass); + listener.stop(); + } + } + +} Modified: trunk/src/main/java/cc/kune/core/server/rack/filters/AbstractInjectedFilter.java =================================================================== --- trunk/src/main/java/cc/kune/core/server/rack/filters/AbstractInjectedFilter.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/core/server/rack/filters/AbstractInjectedFilter.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -31,23 +31,23 @@ public abstract class AbstractInjectedFilter implements Filter { - protected ServletContext ctx; + protected ServletContext ctx; - @Override - public abstract void destroy(); + @Override + public abstract void destroy(); - public <T> T getInstance(final Class<T> type) { - return getInjector().getInstance(type); - } + private Injector getInjector() { + return (Injector) ctx.getAttribute(RackServletFilter.INJECTOR_ATTRIBUTE); + } - @Override - public void init(final FilterConfig filterConfig) throws ServletException { - this.ctx = filterConfig.getServletContext(); - getInjector().injectMembers(this); - } + public <T> T getInstance(final Class<T> type) { + return getInjector().getInstance(type); + } - private Injector getInjector() { - return (Injector) ctx.getAttribute(RackServletFilter.INJECTOR_ATTRIBUTE); - } + @Override + public void init(final FilterConfig filterConfig) throws ServletException { + this.ctx = filterConfig.getServletContext(); + getInjector().injectMembers(this); + } } Modified: trunk/src/main/java/cc/kune/core/server/rack/filters/ForwardFilter.java =================================================================== --- trunk/src/main/java/cc/kune/core/server/rack/filters/ForwardFilter.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/core/server/rack/filters/ForwardFilter.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -29,7 +29,7 @@ import javax.servlet.ServletResponse; import javax.servlet.http.HttpServletRequest; -import cc.kune.core.server.rack.RackHelper; +import cc.kune.core.server.rack.utils.RackHelper; public class ForwardFilter extends AbstractInjectedFilter { // private static final Log log = LogFactory.getLog(ForwardFilter.class); Modified: trunk/src/main/java/cc/kune/core/server/rack/filters/LogFilter.java =================================================================== --- trunk/src/main/java/cc/kune/core/server/rack/filters/LogFilter.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/core/server/rack/filters/LogFilter.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -31,7 +31,7 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import cc.kune.core.server.rack.RackHelper; +import cc.kune.core.server.rack.utils.RackHelper; public class LogFilter implements Filter { public static final Log LOG = LogFactory.getLog(LogFilter.class); Modified: trunk/src/main/java/cc/kune/core/server/rack/filters/gwts/GWTServiceFilter.java =================================================================== --- trunk/src/main/java/cc/kune/core/server/rack/filters/gwts/GWTServiceFilter.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/core/server/rack/filters/gwts/GWTServiceFilter.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -32,8 +32,8 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import cc.kune.core.server.rack.RackHelper; import cc.kune.core.server.rack.filters.AbstractInjectedFilter; +import cc.kune.core.server.rack.utils.RackHelper; import com.google.gwt.user.client.rpc.RemoteService; Modified: trunk/src/main/java/cc/kune/core/server/rack/filters/rest/RESTServiceFilter.java =================================================================== --- trunk/src/main/java/cc/kune/core/server/rack/filters/rest/RESTServiceFilter.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/core/server/rack/filters/rest/RESTServiceFilter.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -32,8 +32,8 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import cc.kune.core.server.rack.RackHelper; import cc.kune.core.server.rack.filters.AbstractInjectedFilter; +import cc.kune.core.server.rack.utils.RackHelper; import com.google.inject.Inject; Modified: trunk/src/main/java/cc/kune/core/server/rack/filters/servlet/ServletServiceFilter.java =================================================================== --- trunk/src/main/java/cc/kune/core/server/rack/filters/servlet/ServletServiceFilter.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/core/server/rack/filters/servlet/ServletServiceFilter.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -31,8 +31,8 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import cc.kune.core.server.rack.RackHelper; import cc.kune.core.server.rack.filters.AbstractInjectedFilter; +import cc.kune.core.server.rack.utils.RackHelper; public class ServletServiceFilter extends AbstractInjectedFilter { Log log = LogFactory.getLog(ServletServiceFilter.class); Copied: trunk/src/main/java/cc/kune/core/server/rack/utils/RackHelper.java (from rev 1655, trunk/src/main/java/cc/kune/core/server/rack/RackHelper.java) =================================================================== --- trunk/src/main/java/cc/kune/core/server/rack/utils/RackHelper.java (rev 0) +++ trunk/src/main/java/cc/kune/core/server/rack/utils/RackHelper.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -0,0 +1,57 @@ +/* + * + * Copyright (C) 2007-2011 The kune development team (see CREDITS for details) + * This file is part of kune. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ +package cc.kune.core.server.rack.utils; + +import javax.servlet.ServletRequest; +import javax.servlet.http.HttpServletRequest; + +public final class RackHelper { + public static String buildForwardString(final ServletRequest request, final String forward) { + String parameters = RackHelper.extractParameters(request); + return new StringBuilder(forward).append(parameters).toString(); + } + + public static String extractParameters(final ServletRequest request) { + HttpServletRequest httpServletRequest = (HttpServletRequest) request; + String uri = httpServletRequest.getRequestURI(); + int index = uri.indexOf('?'); + if (index > 0) { + return uri.substring(index); + } else { + return ""; + } + } + + public static String getRelativeURL(final ServletRequest request) { + HttpServletRequest req = (HttpServletRequest) request; + String contextPath = req.getContextPath(); + String uri = req.getRequestURI(); + return uri.substring(contextPath.length()); + } + + public static String getURI(final ServletRequest request) { + HttpServletRequest httpServletRequest = (HttpServletRequest) request; + return httpServletRequest.getRequestURI(); + } + + private RackHelper() { + } + +} Modified: trunk/src/main/java/cc/kune/core/server/rest/ContentJSONService.java =================================================================== --- trunk/src/main/java/cc/kune/core/server/rest/ContentJSONService.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/core/server/rest/ContentJSONService.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -22,7 +22,7 @@ import cc.kune.core.server.content.ContainerManager; import cc.kune.core.server.content.ContentManager; -import cc.kune.core.server.manager.impl.SearchResult; +import cc.kune.core.server.manager.SearchResult; import cc.kune.core.server.mapper.Mapper; import cc.kune.core.server.rack.filters.rest.REST; import cc.kune.core.shared.SearcherConstants; Modified: trunk/src/main/java/cc/kune/core/server/rest/GroupJSONService.java =================================================================== --- trunk/src/main/java/cc/kune/core/server/rest/GroupJSONService.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/core/server/rest/GroupJSONService.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -21,7 +21,7 @@ import cc.kune.core.server.manager.GroupManager; -import cc.kune.core.server.manager.impl.SearchResult; +import cc.kune.core.server.manager.SearchResult; import cc.kune.core.server.mapper.Mapper; import cc.kune.core.server.rack.filters.rest.REST; import cc.kune.core.shared.SearcherConstants; Modified: trunk/src/main/java/cc/kune/core/server/rest/UserJSONService.java =================================================================== --- trunk/src/main/java/cc/kune/core/server/rest/UserJSONService.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/core/server/rest/UserJSONService.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -20,8 +20,8 @@ package cc.kune.core.server.rest; +import cc.kune.core.server.manager.SearchResult; import cc.kune.core.server.manager.UserManager; -import cc.kune.core.server.manager.impl.SearchResult; import cc.kune.core.server.mapper.Mapper; import cc.kune.core.server.rack.filters.rest.REST; import cc.kune.core.shared.SearcherConstants; Modified: trunk/src/main/java/cc/kune/core/server/state/StateServiceDefault.java =================================================================== --- trunk/src/main/java/cc/kune/core/server/state/StateServiceDefault.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/core/server/state/StateServiceDefault.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -35,7 +35,7 @@ import cc.kune.domain.License; import cc.kune.domain.Revision; import cc.kune.domain.User; -import cc.kune.wave.server.KuneWaveService; +import cc.kune.wave.server.kspecific.KuneWaveService; import com.google.inject.Inject; import com.google.inject.Singleton; Modified: trunk/src/main/java/cc/kune/events/client/viewer/CalendarViewerPanel.java =================================================================== --- trunk/src/main/java/cc/kune/events/client/viewer/CalendarViewerPanel.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/events/client/viewer/CalendarViewerPanel.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -10,9 +10,9 @@ import cc.kune.core.client.registry.ContentCapabilitiesRegistry; import cc.kune.core.client.resources.CoreResources; import cc.kune.events.client.viewer.CalendarViewerPresenter.CalendarViewerView; -import cc.kune.gspace.client.GSpaceArmor; +import cc.kune.gspace.client.armor.GSpaceArmor; import cc.kune.gspace.client.viewers.AbstractFolderViewerPanel; -import cc.kune.gspace.client.viewers.FolderItemDescriptor; +import cc.kune.gspace.client.viewers.items.FolderItemDescriptor; import com.bradrydzewski.gwt.calendar.client.Appointment; import com.bradrydzewski.gwt.calendar.client.AppointmentStyle; Deleted: trunk/src/main/java/cc/kune/gspace/client/GSpaceArmor.java =================================================================== --- trunk/src/main/java/cc/kune/gspace/client/GSpaceArmor.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/gspace/client/GSpaceArmor.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -1,83 +0,0 @@ -/* - * - * Copyright (C) 2007-2011 The kune development team (see CREDITS for details) - * This file is part of kune. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * - */ -package cc.kune.gspace.client; - -import cc.kune.common.client.actions.ui.IsActionExtensible; - -import com.google.gwt.user.client.ui.InsertPanel.ForIsWidget; -import com.google.gwt.user.client.ui.IsWidget; -import com.google.gwt.user.client.ui.SimplePanel; - -public interface GSpaceArmor { - - void clearBackImage(); - - void enableCenterScroll(boolean enable); - - ForIsWidget getDocContainer(); - - ForIsWidget getDocFooter(); - - IsActionExtensible getDocFooterToolbar(); - - ForIsWidget getDocHeader(); - - ForIsWidget getDocSubheader(); - - ForIsWidget getEntityFooter(); - - IsActionExtensible getEntityFooterToolbar(); - - ForIsWidget getEntityHeader(); - - ForIsWidget getEntityToolsCenter(); - - ForIsWidget getEntityToolsNorth(); - - ForIsWidget getEntityToolsSouth(); - - IsActionExtensible getHeaderToolbar(); - - SimplePanel getHomeSpace(); - - IsWidget getMainpanel(); - - SimplePanel getPublicSpace(); - - ForIsWidget getSitebar(); - - IsActionExtensible getSubheaderToolbar(); - - IsActionExtensible getToolsSouthToolbar(); - - ForIsWidget getUserSpace(); - - void selectGroupSpace(); - - void selectHomeSpace(); - - void selectPublicSpace(); - - void selectUserSpace(); - - void setBackImage(String url); - - void setContentVisible(boolean visible); -} \ No newline at end of file Modified: trunk/src/main/java/cc/kune/gspace/client/GSpaceArmorEntryPoint.java =================================================================== --- trunk/src/main/java/cc/kune/gspace/client/GSpaceArmorEntryPoint.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/gspace/client/GSpaceArmorEntryPoint.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -19,7 +19,8 @@ */ package cc.kune.gspace.client; -import cc.kune.gspace.client.resources.GSpaceArmorResources; +import cc.kune.gspace.client.armor.impl.GSpaceArmorImpl; +import cc.kune.gspace.client.armor.resources.GSpaceArmorResources; import com.google.gwt.core.client.EntryPoint; import com.google.gwt.core.client.GWT; Deleted: trunk/src/main/java/cc/kune/gspace/client/GSpaceArmorImpl.java =================================================================== --- trunk/src/main/java/cc/kune/gspace/client/GSpaceArmorImpl.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/gspace/client/GSpaceArmorImpl.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -1,277 +0,0 @@ -/* - * - * Copyright (C) 2007-2011 The kune development team (see CREDITS for details) - * This file is part of kune. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * - */ -package cc.kune.gspace.client; - -import org.cobogw.gwt.user.client.CSS; - -import cc.kune.common.client.actions.ui.ActionFlowPanel; -import cc.kune.common.client.actions.ui.IsActionExtensible; - -import com.google.gwt.core.client.GWT; -import com.google.gwt.dom.client.Style.Overflow; -import com.google.gwt.dom.client.Style.Position; -import com.google.gwt.uibinder.client.UiBinder; -import com.google.gwt.uibinder.client.UiField; -import com.google.gwt.user.client.DOM; -import com.google.gwt.user.client.Element; -import com.google.gwt.user.client.ui.Composite; -import com.google.gwt.user.client.ui.DockLayoutPanel; -import com.google.gwt.user.client.ui.FlowPanel; -import com.google.gwt.user.client.ui.InsertPanel.ForIsWidget; -import com.google.gwt.user.client.ui.IsWidget; -import com.google.gwt.user.client.ui.ScrollPanel; -import com.google.gwt.user.client.ui.SimplePanel; -import com.google.gwt.user.client.ui.SplitLayoutPanel; -import com.google.gwt.user.client.ui.TabLayoutPanel; -import com.google.gwt.user.client.ui.Widget; -import com.google.inject.Inject; -import com.google.inject.Provider; - -public class GSpaceArmorImpl extends Composite implements GSpaceArmor { - - interface WsArmorImplUiBinder extends UiBinder<Widget, GSpaceArmorImpl> { - } - - private static WsArmorImplUiBinder uiBinder = GWT.create(WsArmorImplUiBinder.class); - - @UiField - ScrollPanel centerScroll; - @UiField - FlowPanel docContainer; - @UiField - DockLayoutPanel docContainerParent; - @UiField - FlowPanel docFooter; - private final ActionFlowPanel docFooterToolbar; - @UiField - FlowPanel docHeader; - @UiField - FlowPanel docSubheader; - @UiField - FlowPanel entityFooter; - private final ActionFlowPanel entityFooterToolbar; - @UiField - FlowPanel entityHeader; - @UiField - FlowPanel entityToolsCenter; - @UiField - FlowPanel entityToolsContainer; - @UiField - FlowPanel entityToolsNorth; - @UiField - FlowPanel entityToolsSouth; - @UiField - SplitLayoutPanel groupSpace; - @UiField - SimplePanel groupSpaceWrapper; - private final ActionFlowPanel headerToolbar; - @UiField - SimplePanel homeSpace; - @UiField - DockLayoutPanel mainpanel; - @UiField - SimplePanel publicSpace; - @UiField - FlowPanel sitebar; - @UiField - DockLayoutPanel splitCenter; - @UiField - DockLayoutPanel splitEast; - private final ActionFlowPanel subheaderToolbar; - @UiField - TabLayoutPanel tabs; - private final ActionFlowPanel toolsSouthToolbar; - @UiField - FlowPanel userSpace; - - @Inject - public GSpaceArmorImpl(final Provider<ActionFlowPanel> toolbarProv) { - initWidget(uiBinder.createAndBindUi(this)); - groupSpace.setWidgetMinSize(splitEast, 150); - DOM.setStyleAttribute((Element) groupSpace.getWidgetContainerElement(splitEast), "overflow", - "visible"); - DOM.setStyleAttribute((Element) splitEast.getWidgetContainerElement(entityToolsContainer), - "overflow", "visible"); - docFooterToolbar = toolbarProv.get(); - headerToolbar = toolbarProv.get(); - subheaderToolbar = toolbarProv.get(); - toolsSouthToolbar = toolbarProv.get(); - entityFooterToolbar = toolbarProv.get(); - getDocHeader().add(headerToolbar); - getDocSubheader().add(subheaderToolbar); - getDocFooter().add(docFooterToolbar); - getEntityToolsSouth().add(toolsSouthToolbar); - getEntityFooter().add(entityFooterToolbar); - entityToolsNorth.getElement().getStyle().setPosition(Position.RELATIVE); - // entityToolsSouth.setVisible(false); - mainpanel.getWidgetContainerElement(tabs).addClassName("k-spaces"); - enableCenterScroll(true); - } - - @Override - public void clearBackImage() { - final String bodyProp = "#FFFFFF"; - DOM.setStyleAttribute(groupSpaceWrapper.getElement(), CSS.A.BACKGROUND, bodyProp); - } - - @Override - public void enableCenterScroll(final boolean enable) { - // TODO use here Element.getStyle()... - if (enable) { - centerScroll.setAlwaysShowScrollBars(false); - DOM.setStyleAttribute(centerScroll.getElement(), "position", "absolute"); - DOM.setStyleAttribute((Element) centerScroll.getElement().getFirstChildElement(), "position", - "relative"); - } else { - centerScroll.getElement().getStyle().setOverflow(Overflow.HIDDEN); - DOM.setStyleAttribute(centerScroll.getElement(), "position", ""); - DOM.setStyleAttribute((Element) centerScroll.getElement().getFirstChildElement(), "position", ""); - } - } - - @Override - public ForIsWidget getDocContainer() { - return docContainer; - } - - @Override - public ForIsWidget getDocFooter() { - return docFooter; - } - - @Override - public IsActionExtensible getDocFooterToolbar() { - return docFooterToolbar; - } - - @Override - public ForIsWidget getDocHeader() { - return docHeader; - } - - @Override - public ForIsWidget getDocSubheader() { - return docSubheader; - } - - @Override - public ForIsWidget getEntityFooter() { - return entityFooter; - } - - @Override - public IsActionExtensible getEntityFooterToolbar() { - return entityFooterToolbar; - } - - @Override - public ForIsWidget getEntityHeader() { - return entityHeader; - } - - @Override - public ForIsWidget getEntityToolsCenter() { - return entityToolsCenter; - } - - @Override - public ForIsWidget getEntityToolsNorth() { - return entityToolsNorth; - } - - @Override - public ForIsWidget getEntityToolsSouth() { - return entityToolsSouth; - } - - @Override - public IsActionExtensible getHeaderToolbar() { - return headerToolbar; - } - - @Override - public SimplePanel getHomeSpace() { - return homeSpace; - } - - @Override - public IsWidget getMainpanel() { - return mainpanel; - } - - @Override - public SimplePanel getPublicSpace() { - return publicSpace; - } - - @Override - public ForIsWidget getSitebar() { - return sitebar; - } - - @Override - public IsActionExtensible getSubheaderToolbar() { - return subheaderToolbar; - } - - @Override - public IsActionExtensible getToolsSouthToolbar() { - return toolsSouthToolbar; - } - - @Override - public ForIsWidget getUserSpace() { - return userSpace; - } - - @Override - public void selectGroupSpace() { - tabs.selectTab(groupSpaceWrapper); - } - - @Override - public void selectHomeSpace() { - tabs.selectTab(homeSpace); - } - - @Override - public void selectPublicSpace() { - tabs.selectTab(publicSpace); - } - - @Override - public void selectUserSpace() { - tabs.selectTab(userSpace); - } - - @Override - public void setBackImage(final String url) { - final String bodyProp = "#FFFFFF url('" + url + "') fixed top left"; - DOM.setStyleAttribute(groupSpaceWrapper.getElement(), CSS.A.BACKGROUND, bodyProp); - } - - @Override - public void setContentVisible(final boolean visible) { - // FIXME: remove this? - // NotifyUser.info("Visible: " + visible); - // docContainer.getElement().getStyle().setOpacity(visible ? 1d : .0d); - // docFooter.getElement().getStyle().setOpacity(visible ? 1d : .0d); - } -} Deleted: trunk/src/main/java/cc/kune/gspace/client/GSpaceArmorImpl.ui.xml =================================================================== --- trunk/src/main/java/cc/kune/gspace/client/GSpaceArmorImpl.ui.xml 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/gspace/client/GSpaceArmorImpl.ui.xml 2012-01-08 23:06:53 UTC (rev 1656) @@ -1,126 +0,0 @@ -<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent"> -<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder" - xmlns:co="urn:import:cc.kune.core.client" xmlns:kp="urn:import:cc.kune.pspace.client" - xmlns:g="urn:import:com.google.gwt.user.client.ui"> - <ui:with field='res' - type='cc.kune.gspace.client.resources.GSpaceArmorResources'/> - <ui:style> - .frame { - border: 0px; - margin: 0px; - } - </ui:style> - <g:DockLayoutPanel ui:field="mainpanel" styleName='{res.style.mainPanel}' - unit="PX"> - <g:north size="23"> - <g:FlowPanel ui:field="sitebar" height="23px" - styleName='{res.style.siteBar}'> - </g:FlowPanel> - </g:north> - <g:center> - <g:TabLayoutPanel width="100%" height="100%" - barUnit='PX' barHeight='0' ui:field="tabs"> - <g:tab> - <g:header size='0'/> - <g:SimplePanel styleName="k-space" ui:field="homeSpace" - width="100%" height="100%"></g:SimplePanel> - </g:tab> - <g:tab> - <g:header size='0'/> - <g:FlowPanel ui:field="userSpace" styleName="k-space" - width="100%" height="100%"> - <!-- <g:Frame url="/" styleName="{style.frame}" --> - <!-- ui:field="frame" width="100%" height="100%" /> --> - </g:FlowPanel> - </g:tab> - <g:tab> - <g:header size='0'/> - <g:SimplePanel ui:field="groupSpaceWrapper" - styleName="k-group-space"> - <g:SplitLayoutPanel width="100%" height="100%" - styleName="k-space" ui:field="groupSpace"> - <g:center size="1.0"> - <g:DockLayoutPanel unit="PX" ui:field="splitCenter" - styleName="{res.style.entityCentralContainer}"> - <g:north size="153"> - <g:VerticalPanel width="100%" - height="153px"> - <g:FlowPanel height="70px" width="100%" - styleName="{res.style.entityHeader}" ui:field="entityHeader"> - <!--<g:RichTextArea width="100%" height="70px" /> --> - </g:FlowPanel> - <g:FlowPanel width="100%" height="38px" - styleName="{res.style.docHeader}" ui:field="docHeader"> - </g:FlowPanel> - <g:HTMLPanel ui:field="arrow" - styleName="{res.style.docSubheaderArrow}"/> - <g:FlowPanel width="100%" height="45px" - styleName="{res.style.docSubheader}" ui:field="docSubheader"> - </g:FlowPanel> - </g:VerticalPanel> - </g:north> - <g:center> - <g:DockLayoutPanel unit="PX" - styleName="{res.style.docEditorMargin}" ui:field="docContainerParent"> - <g:west size="10"> - <g:SimplePanel/> - </g:west> - <g:east size="10"> - <g:SimplePanel/> - </g:east> - <g:center> - <g:ScrollPanel ui:field="centerScroll" - styleName="{res.style.docEditor}"> - <g:FlowPanel width="auto" height="auto" - styleName="{res.style.docEditorContainer}" - ui:field="docContainer"/> - </g:ScrollPanel> - </g:center> - <g:south size="33.0"> - <g:VerticalPanel height="33px" - width="100%" styleName="{res.style.docFooter}"> - <g:FlowPanel width="100%" height="33" - ui:field="docFooter"> - </g:FlowPanel> - </g:VerticalPanel> - </g:south> - </g:DockLayoutPanel> - </g:center> - <g:south size="36"> - <g:FlowPanel height="36px" width="100%" - styleName="{res.style.entityFooter}" ui:field="entityFooter"> - </g:FlowPanel> - </g:south> - </g:DockLayoutPanel> - </g:center> - <!-- east to RTL (plus css changes in corners and menus) --> - <g:west size="200.0"> - <g:DockLayoutPanel unit="PX" - styleName="{res.style.entityTools}" ui:field="splitEast"> - <g:center> - <g:FlowPanel ui:field="entityToolsContainer"> - <g:FlowPanel width="100%" ui:field="entityToolsNorth" - styleName="{res.style.entityToolsNorth}"></g:FlowPanel> - <g:FlowPanel width="100%" ui:field="entityToolsCenter" - styleName="{res.style.entityToolsCenter}"> - </g:FlowPanel> - </g:FlowPanel> - </g:center> - <g:south size="98"> - <g:FlowPanel styleName="{res.style.entityToolsSouth}" - ui:field="entityToolsSouth" width="100%"/> - </g:south> - </g:DockLayoutPanel> - </g:west> - </g:SplitLayoutPanel> - </g:SimplePanel> - </g:tab> - <g:tab> - <g:header size='0'/> - <g:SimplePanel ui:field="publicSpace" width="100%" - styleName="k-space" height="100%"></g:SimplePanel> - </g:tab> - </g:TabLayoutPanel> - </g:center> - </g:DockLayoutPanel> -</ui:UiBinder> \ No newline at end of file Modified: trunk/src/main/java/cc/kune/gspace/client/GSpaceGinModule.java =================================================================== --- trunk/src/main/java/cc/kune/gspace/client/GSpaceGinModule.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/gspace/client/GSpaceGinModule.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -26,6 +26,8 @@ import cc.kune.gspace.client.actions.ContentViewerOptionsMenu; import cc.kune.gspace.client.actions.GiveUsFeedbackBtn; import cc.kune.gspace.client.actions.RenameAction; +import cc.kune.gspace.client.armor.GSpaceArmor; +import cc.kune.gspace.client.armor.impl.GSpaceArmorImpl; import cc.kune.gspace.client.i18n.I18nTranslator; import cc.kune.gspace.client.i18n.I18nTranslatorPanel; import cc.kune.gspace.client.i18n.I18nTranslatorPresenter; Modified: trunk/src/main/java/cc/kune/gspace/client/GSpaceParts.java =================================================================== --- trunk/src/main/java/cc/kune/gspace/client/GSpaceParts.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/gspace/client/GSpaceParts.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -19,8 +19,8 @@ */ package cc.kune.gspace.client; -import cc.kune.core.client.init.AppStartEvent; -import cc.kune.core.client.init.AppStartEvent.AppStartHandler; +import cc.kune.core.client.events.AppStartEvent; +import cc.kune.core.client.events.AppStartEvent.AppStartHandler; import cc.kune.core.client.sitebar.search.SitebarSearchPresenter; import cc.kune.core.client.sn.actions.WriteToBuddyHeaderButton; import cc.kune.core.client.state.HistoryTokenCallback; Modified: trunk/src/main/java/cc/kune/gspace/client/actions/AbstractEditorsMenu.java =================================================================== --- trunk/src/main/java/cc/kune/gspace/client/actions/AbstractEditorsMenu.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/gspace/client/actions/AbstractEditorsMenu.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -20,8 +20,8 @@ package cc.kune.gspace.client.actions; import cc.kune.common.client.actions.ui.descrip.MenuDescriptor; -import cc.kune.core.client.state.AccessRightsChangedEvent; -import cc.kune.core.client.state.AccessRightsChangedEvent.AccessRightsChangedHandler; +import cc.kune.core.client.events.AccessRightsChangedEvent; +import cc.kune.core.client.events.AccessRightsChangedEvent.AccessRightsChangedHandler; import cc.kune.core.client.state.AccessRightsClientManager; public class AbstractEditorsMenu extends MenuDescriptor { Modified: trunk/src/main/java/cc/kune/gspace/client/actions/AbstractFoldableToolActions.java =================================================================== --- trunk/src/main/java/cc/kune/gspace/client/actions/AbstractFoldableToolActions.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/gspace/client/actions/AbstractFoldableToolActions.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -20,9 +20,9 @@ package cc.kune.gspace.client.actions; import cc.kune.core.client.actions.ActionRegistryByType; +import cc.kune.core.client.events.AppStartEvent; +import cc.kune.core.client.events.AppStartEvent.AppStartHandler; import cc.kune.core.client.i18n.I18nUITranslationService; -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.core.client.state.StateManager; Modified: trunk/src/main/java/cc/kune/gspace/client/actions/GiveUsFeedbackBtn.java =================================================================== --- trunk/src/main/java/cc/kune/gspace/client/actions/GiveUsFeedbackBtn.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/gspace/client/actions/GiveUsFeedbackBtn.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -22,7 +22,7 @@ import cc.kune.common.client.actions.ui.descrip.ButtonDescriptor; import cc.kune.core.client.i18n.I18nUITranslationService; import cc.kune.core.client.resources.nav.NavResources; -import cc.kune.gspace.client.GSpaceArmor; +import cc.kune.gspace.client.armor.GSpaceArmor; import com.google.inject.Inject; Modified: trunk/src/main/java/cc/kune/gspace/client/actions/GotoTokenAction.java =================================================================== --- trunk/src/main/java/cc/kune/gspace/client/actions/GotoTokenAction.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/gspace/client/actions/GotoTokenAction.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -23,8 +23,8 @@ import cc.kune.common.client.actions.Action; import cc.kune.common.client.actions.ActionEvent; import cc.kune.core.client.events.RenameContentEvent; -import cc.kune.core.client.state.SocialNetworkChangedEvent; -import cc.kune.core.client.state.SocialNetworkChangedEvent.SocialNetworkChangedHandler; +import cc.kune.core.client.events.SocialNetworkChangedEvent; +import cc.kune.core.client.events.SocialNetworkChangedEvent.SocialNetworkChangedHandler; import cc.kune.core.client.state.StateManager; import cc.kune.core.shared.domain.utils.StateToken; Copied: trunk/src/main/java/cc/kune/gspace/client/armor/GSpaceArmor.java (from rev 1655, trunk/src/main/java/cc/kune/gspace/client/GSpaceArmor.java) =================================================================== --- trunk/src/main/java/cc/kune/gspace/client/armor/GSpaceArmor.java (rev 0) +++ trunk/src/main/java/cc/kune/gspace/client/armor/GSpaceArmor.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -0,0 +1,83 @@ +/* + * + * Copyright (C) 2007-2011 The kune development team (see CREDITS for details) + * This file is part of kune. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ +package cc.kune.gspace.client.armor; + +import cc.kune.common.client.actions.ui.IsActionExtensible; + +import com.google.gwt.user.client.ui.InsertPanel.ForIsWidget; +import com.google.gwt.user.client.ui.IsWidget; +import com.google.gwt.user.client.ui.SimplePanel; + +public interface GSpaceArmor { + + void clearBackImage(); + + void enableCenterScroll(boolean enable); + + ForIsWidget getDocContainer(); + + ForIsWidget getDocFooter(); + + IsActionExtensible getDocFooterToolbar(); + + ForIsWidget getDocHeader(); + + ForIsWidget getDocSubheader(); + + ForIsWidget getEntityFooter(); + + IsActionExtensible getEntityFooterToolbar(); + + ForIsWidget getEntityHeader(); + + ForIsWidget getEntityToolsCenter(); + + ForIsWidget getEntityToolsNorth(); + + ForIsWidget getEntityToolsSouth(); + + IsActionExtensible getHeaderToolbar(); + + SimplePanel getHomeSpace(); + + IsWidget getMainpanel(); + + SimplePanel getPublicSpace(); + + ForIsWidget getSitebar(); + + IsActionExtensible getSubheaderToolbar(); + + IsActionExtensible getToolsSouthToolbar(); + + ForIsWidget getUserSpace(); + + void selectGroupSpace(); + + void selectHomeSpace(); + + void selectPublicSpace(); + + void selectUserSpace(); + + void setBackImage(String url); + + void setContentVisible(boolean visible); +} \ No newline at end of file Copied: trunk/src/main/java/cc/kune/gspace/client/armor/impl/GSpaceArmorImpl.java (from rev 1655, trunk/src/main/java/cc/kune/gspace/client/GSpaceArmorImpl.java) =================================================================== --- trunk/src/main/java/cc/kune/gspace/client/armor/impl/GSpaceArmorImpl.java (rev 0) +++ trunk/src/main/java/cc/kune/gspace/client/armor/impl/GSpaceArmorImpl.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -0,0 +1,278 @@ +/* + * + * Copyright (C) 2007-2011 The kune development team (see CREDITS for details) + * This file is part of kune. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ +package cc.kune.gspace.client.armor.impl; + +import org.cobogw.gwt.user.client.CSS; + +import cc.kune.common.client.actions.ui.ActionFlowPanel; +import cc.kune.common.client.actions.ui.IsActionExtensible; +import cc.kune.gspace.client.armor.GSpaceArmor; + +import com.google.gwt.core.client.GWT; +import com.google.gwt.dom.client.Style.Overflow; +import com.google.gwt.dom.client.Style.Position; +import com.google.gwt.uibinder.client.UiBinder; +import com.google.gwt.uibinder.client.UiField; +import com.google.gwt.user.client.DOM; +import com.google.gwt.user.client.Element; +import com.google.gwt.user.client.ui.Composite; +import com.google.gwt.user.client.ui.DockLayoutPanel; +import com.google.gwt.user.client.ui.FlowPanel; +import com.google.gwt.user.client.ui.InsertPanel.ForIsWidget; +import com.google.gwt.user.client.ui.IsWidget; +import com.google.gwt.user.client.ui.ScrollPanel; +import com.google.gwt.user.client.ui.SimplePanel; +import com.google.gwt.user.client.ui.SplitLayoutPanel; +import com.google.gwt.user.client.ui.TabLayoutPanel; +import com.google.gwt.user.client.ui.Widget; +import com.google.inject.Inject; +import com.google.inject.Provider; + +public class GSpaceArmorImpl extends Composite implements GSpaceArmor { + + interface WsArmorImplUiBinder extends UiBinder<Widget, GSpaceArmorImpl> { + } + + private static WsArmorImplUiBinder uiBinder = GWT.create(WsArmorImplUiBinder.class); + + @UiField + ScrollPanel centerScroll; + @UiField + FlowPanel docContainer; + @UiField + DockLayoutPanel docContainerParent; + @UiField + FlowPanel docFooter; + private final ActionFlowPanel docFooterToolbar; + @UiField + FlowPanel docHeader; + @UiField + FlowPanel docSubheader; + @UiField + FlowPanel entityFooter; + private final ActionFlowPanel entityFooterToolbar; + @UiField + FlowPanel entityHeader; + @UiField + FlowPanel entityToolsCenter; + @UiField + FlowPanel entityToolsContainer; + @UiField + FlowPanel entityToolsNorth; + @UiField + FlowPanel entityToolsSouth; + @UiField + SplitLayoutPanel groupSpace; + @UiField + SimplePanel groupSpaceWrapper; + private final ActionFlowPanel headerToolbar; + @UiField + SimplePanel homeSpace; + @UiField + DockLayoutPanel mainpanel; + @UiField + SimplePanel publicSpace; + @UiField + FlowPanel sitebar; + @UiField + DockLayoutPanel splitCenter; + @UiField + DockLayoutPanel splitEast; + private final ActionFlowPanel subheaderToolbar; + @UiField + TabLayoutPanel tabs; + private final ActionFlowPanel toolsSouthToolbar; + @UiField + FlowPanel userSpace; + + @Inject + public GSpaceArmorImpl(final Provider<ActionFlowPanel> toolbarProv) { + initWidget(uiBinder.createAndBindUi(this)); + groupSpace.setWidgetMinSize(splitEast, 150); + DOM.setStyleAttribute((Element) groupSpace.getWidgetContainerElement(splitEast), "overflow", + "visible"); + DOM.setStyleAttribute((Element) splitEast.getWidgetContainerElement(entityToolsContainer), + "overflow", "visible"); + docFooterToolbar = toolbarProv.get(); + headerToolbar = toolbarProv.get(); + subheaderToolbar = toolbarProv.get(); + toolsSouthToolbar = toolbarProv.get(); + entityFooterToolbar = toolbarProv.get(); + getDocHeader().add(headerToolbar); + getDocSubheader().add(subheaderToolbar); + getDocFooter().add(docFooterToolbar); + getEntityToolsSouth().add(toolsSouthToolbar); + getEntityFooter().add(entityFooterToolbar); + entityToolsNorth.getElement().getStyle().setPosition(Position.RELATIVE); + // entityToolsSouth.setVisible(false); + mainpanel.getWidgetContainerElement(tabs).addClassName("k-spaces"); + enableCenterScroll(true); + } + + @Override + public void clearBackImage() { + final String bodyProp = "#FFFFFF"; + DOM.setStyleAttribute(groupSpaceWrapper.getElement(), CSS.A.BACKGROUND, bodyProp); + } + + @Override + public void enableCenterScroll(final boolean enable) { + // TODO use here Element.getStyle()... + if (enable) { + centerScroll.setAlwaysShowScrollBars(false); + DOM.setStyleAttribute(centerScroll.getElement(), "position", "absolute"); + DOM.setStyleAttribute((Element) centerScroll.getElement().getFirstChildElement(), "position", + "relative"); + } else { + centerScroll.getElement().getStyle().setOverflow(Overflow.HIDDEN); + DOM.setStyleAttribute(centerScroll.getElement(), "position", ""); + DOM.setStyleAttribute((Element) centerScroll.getElement().getFirstChildElement(), "position", ""); + } + } + + @Override + public ForIsWidget getDocContainer() { + return docContainer; + } + + @Override + public ForIsWidget getDocFooter() { + return docFooter; + } + + @Override + public IsActionExtensible getDocFooterToolbar() { + return docFooterToolbar; + } + + @Override + public ForIsWidget getDocHeader() { + return docHeader; + } + + @Override + public ForIsWidget getDocSubheader() { + return docSubheader; + } + + @Override + public ForIsWidget getEntityFooter() { + return entityFooter; + } + + @Override + public IsActionExtensible getEntityFooterToolbar() { + return entityFooterToolbar; + } + + @Override + public ForIsWidget getEntityHeader() { + return entityHeader; + } + + @Override + public ForIsWidget getEntityToolsCenter() { + return entityToolsCenter; + } + + @Override + public ForIsWidget getEntityToolsNorth() { + return entityToolsNorth; + } + + @Override + public ForIsWidget getEntityToolsSouth() { + return entityToolsSouth; + } + + @Override + public IsActionExtensible getHeaderToolbar() { + return headerToolbar; + } + + @Override + public SimplePanel getHomeSpace() { + return homeSpace; + } + + @Override + public IsWidget getMainpanel() { + return mainpanel; + } + + @Override + public SimplePanel getPublicSpace() { + return publicSpace; + } + + @Override + public ForIsWidget getSitebar() { + return sitebar; + } + + @Override + public IsActionExtensible getSubheaderToolbar() { + return subheaderToolbar; + } + + @Override + public IsActionExtensible getToolsSouthToolbar() { + return toolsSouthToolbar; + } + + @Override + public ForIsWidget getUserSpace() { + return userSpace; + } + + @Override + public void selectGroupSpace() { + tabs.selectTab(groupSpaceWrapper); + } + + @Override + public void selectHomeSpace() { + tabs.selectTab(homeSpace); + } + + @Override + public void selectPublicSpace() { + tabs.selectTab(publicSpace); + } + + @Override + public void selectUserSpace() { + tabs.selectTab(userSpace); + } + + @Override + public void setBackImage(final String url) { + final String bodyProp = "#FFFFFF url('" + url + "') fixed top left"; + DOM.setStyleAttribute(groupSpaceWrapper.getElement(), CSS.A.BACKGROUND, bodyProp); + } + + @Override + public void setContentVisible(final boolean visible) { + // FIXME: remove this? + // NotifyUser.info("Visible: " + visible); + // docContainer.getElement().getStyle().setOpacity(visible ? 1d : .0d); + // docFooter.getElement().getStyle().setOpacity(visible ? 1d : .0d); + } +} Copied: trunk/src/main/java/cc/kune/gspace/client/armor/impl/GSpaceArmorImpl.ui.xml (from rev 1655, trunk/src/main/java/cc/kune/gspace/client/GSpaceArmorImpl.ui.xml) =================================================================== --- trunk/src/main/java/cc/kune/gspace/client/armor/impl/GSpaceArmorImpl.ui.xml (rev 0) +++ trunk/src/main/java/cc/kune/gspace/client/armor/impl/GSpaceArmorImpl.ui.xml 2012-01-08 23:06:53 UTC (rev 1656) @@ -0,0 +1,126 @@ +<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent"> +<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder" + xmlns:co="urn:import:cc.kune.core.client" xmlns:kp="urn:import:cc.kune.pspace.client" + xmlns:g="urn:import:com.google.gwt.user.client.ui"> + <ui:with field='res' + type='cc.kune.gspace.client.armor.resources.GSpaceArmorResources'/> + <ui:style> + .frame { + border: 0px; + margin: 0px; + } + </ui:style> + <g:DockLayoutPanel ui:field="mainpanel" styleName='{res.style.mainPanel}' + unit="PX"> + <g:north size="23"> + <g:FlowPanel ui:field="sitebar" height="23px" + styleName='{res.style.siteBar}'> + </g:FlowPanel> + </g:north> + <g:center> + <g:TabLayoutPanel width="100%" height="100%" + barUnit='PX' barHeight='0' ui:field="tabs"> + <g:tab> + <g:header size='0'/> + <g:SimplePanel styleName="k-space" ui:field="homeSpace" + width="100%" height="100%"></g:SimplePanel> + </g:tab> + <g:tab> + <g:header size='0'/> + <g:FlowPanel ui:field="userSpace" styleName="k-space" + width="100%" height="100%"> + <!-- <g:Frame url="/" styleName="{style.frame}" --> + <!-- ui:field="frame" width="100%" height="100%" /> --> + </g:FlowPanel> + </g:tab> + <g:tab> + <g:header size='0'/> + <g:SimplePanel ui:field="groupSpaceWrapper" + styleName="k-group-space"> + <g:SplitLayoutPanel width="100%" height="100%" + styleName="k-space" ui:field="groupSpace"> + <g:center size="1.0"> + <g:DockLayoutPanel unit="PX" ui:field="splitCenter" + styleName="{res.style.entityCentralContainer}"> + <g:north size="153"> + <g:VerticalPanel width="100%" + height="153px"> + <g:FlowPanel height="70px" width="100%" + styleName="{res.style.entityHeader}" ui:field="entityHeader"> + <!--<g:RichTextArea width="100%" height="70px" /> --> + </g:FlowPanel> + <g:FlowPanel width="100%" height="38px" + styleName="{res.style.docHeader}" ui:field="docHeader"> + </g:FlowPanel> + <g:HTMLPanel ui:field="arrow" + styleName="{res.style.docSubheaderArrow}"/> + <g:FlowPanel width="100%" height="45px" + styleName="{res.style.docSubheader}" ui:field="docSubheader"> + </g:FlowPanel> + </g:VerticalPanel> + </g:north> + <g:center> + <g:DockLayoutPanel unit="PX" + styleName="{res.style.docEditorMargin}" ui:field="docContainerParent"> + <g:west size="10"> + <g:SimplePanel/> + </g:west> + <g:east size="10"> + <g:SimplePanel/> + </g:east> + <g:center> + <g:ScrollPanel ui:field="centerScroll" + styleName="{res.style.docEditor}"> + <g:FlowPanel width="auto" height="auto" + styleName="{res.style.docEditorContainer}" + ui:field="docContainer"/> + </g:ScrollPanel> + </g:center> + <g:south size="33.0"> + <g:VerticalPanel height="33px" + width="100%" styleName="{res.style.docFooter}"> + <g:FlowPanel width="100%" height="33" + ui:field="docFooter"> + </g:FlowPanel> + </g:VerticalPanel> + </g:south> + </g:DockLayoutPanel> + </g:center> + <g:south size="36"> + <g:FlowPanel height="36px" width="100%" + styleName="{res.style.entityFooter}" ui:field="entityFooter"> + </g:FlowPanel> + </g:south> + </g:DockLayoutPanel> + </g:center> + <!-- east to RTL (plus css changes in corners and menus) --> + <g:west size="200.0"> + <g:DockLayoutPanel unit="PX" + styleName="{res.style.entityTools}" ui:field="splitEast"> + <g:center> + <g:FlowPanel ui:field="entityToolsContainer"> + <g:FlowPanel width="100%" ui:field="entityToolsNorth" + styleName="{res.style.entityToolsNorth}"></g:FlowPanel> + <g:FlowPanel width="100%" ui:field="entityToolsCenter" + styleName="{res.style.entityToolsCenter}"> + </g:FlowPanel> + </g:FlowPanel> + </g:center> + <g:south size="98"> + <g:FlowPanel styleName="{res.style.entityToolsSouth}" + ui:field="entityToolsSouth" width="100%"/> + </g:south> + </g:DockLayoutPanel> + </g:west> + </g:SplitLayoutPanel> + </g:SimplePanel> + </g:tab> + <g:tab> + <g:header size='0'/> + <g:SimplePanel ui:field="publicSpace" width="100%" + styleName="k-space" height="100%"></g:SimplePanel> + </g:tab> + </g:TabLayoutPanel> + </g:center> + </g:DockLayoutPanel> +</ui:UiBinder> \ No newline at end of file Copied: trunk/src/main/java/cc/kune/gspace/client/armor/resources (from rev 1655, trunk/src/main/java/cc/kune/gspace/client/resources) Modified: trunk/src/main/java/cc/kune/gspace/client/armor/resources/GSpaceArmorResources.java =================================================================== --- trunk/src/main/java/cc/kune/gspace/client/resources/GSpaceArmorResources.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/gspace/client/armor/resources/GSpaceArmorResources.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -17,7 +17,7 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. * */ -package cc.kune.gspace.client.resources; +package cc.kune.gspace.client.armor.resources; import com.google.gwt.resources.client.ClientBundle; import com.google.gwt.resources.client.CssResource; Copied: trunk/src/main/java/cc/kune/gspace/client/events/CurrentEntityChangedEvent.java (from rev 1655, trunk/src/main/java/cc/kune/gspace/client/options/logo/CurrentEntityChangedEvent.java) =================================================================== --- trunk/src/main/java/cc/kune/gspace/client/events/CurrentEntityChangedEvent.java (rev 0) +++ trunk/src/main/java/cc/kune/gspace/client/events/CurrentEntityChangedEvent.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -0,0 +1,74 @@ +/* + * + * Copyright (C) 2007-2011 The kune development team (see CREDITS for details) + * This file is part of kune. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ +package cc.kune.gspace.client.events; + +import com.google.gwt.event.shared.EventHandler; +import com.google.gwt.event.shared.GwtEvent; +import com.google.gwt.event.shared.HandlerRegistration; +import com.google.gwt.event.shared.HasHandlers; + +public class CurrentEntityChangedEvent extends GwtEvent<CurrentEntityChangedEvent.CurrentEntityChangedHandler> { + + public interface CurrentEntityChangedHandler extends EventHandler { + public void onCurrentLogoChanged(CurrentEntityChangedEvent event); + } + + public interface HasCurrentLogoChangedHandlers extends HasHandlers { + HandlerRegistration addCurrentLogoChangedHandler(CurrentEntityChangedHandler handler); + } + + private static final Type<CurrentEntityChangedHandler> TYPE = new Type<CurrentEntityChangedHandler>(); + + public static void fire(final HasHandlers source) { + source.fireEvent(new CurrentEntityChangedEvent()); + } + + public static Type<CurrentEntityChangedHandler> getType() { + return TYPE; + } + + public CurrentEntityChangedEvent() { + } + + @Override + protected void dispatch(final CurrentEntityChangedHandler handler) { + handler.onCurrentLogoChanged(this); + } + + @Override + public boolean equals(final Object obj) { + return super.equals(obj); + } + + @Override + public Type<CurrentEntityChangedHandler> getAssociatedType() { + return TYPE; + } + + @Override + public int hashCode() { + return super.hashCode(); + } + + @Override + public String toString() { + return "CurrentLogoChangedEvent[" + "]"; + } +} Modified: trunk/src/main/java/cc/kune/gspace/client/options/GroupOptionsPresenter.java =================================================================== --- trunk/src/main/java/cc/kune/gspace/client/options/GroupOptionsPresenter.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/gspace/client/options/GroupOptionsPresenter.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -25,13 +25,13 @@ import cc.kune.common.client.actions.ui.descrip.ButtonDescriptor; import cc.kune.common.client.actions.ui.descrip.GuiActionDescrip; import cc.kune.common.shared.i18n.I18nTranslationService; +import cc.kune.core.client.events.StateChangedEvent; +import cc.kune.core.client.events.UserSignOutEvent; +import cc.kune.core.client.events.StateChangedEvent.StateChangedHandler; +import cc.kune.core.client.events.UserSignOutEvent.UserSignOutHandler; import cc.kune.core.client.resources.CoreResources; import cc.kune.core.client.state.Session; -import cc.kune.core.client.state.StateChangedEvent; -import cc.kune.core.client.state.StateChangedEvent.StateChangedHandler; import cc.kune.core.client.state.StateManager; -import cc.kune.core.client.state.UserSignOutEvent; -import cc.kune.core.client.state.UserSignOutEvent.UserSignOutHandler; import cc.kune.core.client.ui.dialogs.tabbed.AbstractTabbedDialogPresenter; import cc.kune.core.shared.dto.StateAbstractDTO; import cc.kune.gspace.client.options.GroupOptionsPresenter.GroupOptionsView; Modified: trunk/src/main/java/cc/kune/gspace/client/options/UserOptionsPresenter.java =================================================================== --- trunk/src/main/java/cc/kune/gspace/client/options/UserOptionsPresenter.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/gspace/client/options/UserOptionsPresenter.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -24,14 +24,14 @@ import cc.kune.common.client.actions.ActionEvent; import cc.kune.common.client.actions.ui.descrip.MenuItemDescriptor; import cc.kune.common.shared.i18n.I18nTranslationService; +import cc.kune.core.client.events.UserSignInEvent; +import cc.kune.core.client.events.UserSignOutEvent; +import cc.kune.core.client.events.UserSignInEvent.UserSignInHandler; +import cc.kune.core.client.events.UserSignOutEvent.UserSignOutHandler; import cc.kune.core.client.resources.CoreResources; import cc.kune.core.client.sitebar.SiteUserOptions; import cc.kune.core.client.state.Session; import cc.kune.core.client.state.StateManager; -import cc.kune.core.client.state.UserSignInEvent; -import cc.kune.core.client.state.UserSignInEvent.UserSignInHandler; -import cc.kune.core.client.state.UserSignOutEvent; -import cc.kune.core.client.state.UserSignOutEvent.UserSignOutHandler; import cc.kune.core.client.ui.dialogs.tabbed.AbstractTabbedDialogPresenter; import cc.kune.gspace.client.options.UserOptionsPresenter.UserOptionsView; Modified: trunk/src/main/java/cc/kune/gspace/client/options/general/EntityOptGeneralPresenter.java =================================================================== --- trunk/src/main/java/cc/kune/gspace/client/options/general/EntityOptGeneralPresenter.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/gspace/client/options/general/EntityOptGeneralPresenter.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -22,8 +22,8 @@ import cc.kune.core.client.i18n.I18nUITranslationService; import cc.kune.core.client.state.Session; import cc.kune.core.client.state.StateManager; +import cc.kune.gspace.client.events.CurrentEntityChangedEvent; import cc.kune.gspace.client.options.EntityOptions; -import cc.kune.gspace.client.options.logo.CurrentEntityChangedEvent; import com.google.gwt.event.dom.client.ChangeEvent; import com.google.gwt.event.dom.client.ChangeHandler; Modified: trunk/src/main/java/cc/kune/gspace/client/options/general/GroupOptGeneralPresenter.java =================================================================== --- trunk/src/main/java/cc/kune/gspace/client/options/general/GroupOptGeneralPresenter.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/gspace/client/options/general/GroupOptGeneralPresenter.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -20,11 +20,11 @@ package cc.kune.gspace.client.options.general; import cc.kune.common.client.notify.NotifyUser; +import cc.kune.core.client.events.GroupChangedEvent; +import cc.kune.core.client.events.GroupChangedEvent.GroupChangedHandler; import cc.kune.core.client.i18n.I18nUITranslationService; import cc.kune.core.client.rpcservices.AsyncCallbackSimple; import cc.kune.core.client.rpcservices.GroupServiceAsync; -import cc.kune.core.client.state.GroupChangedEvent; -import cc.kune.core.client.state.GroupChangedEvent.GroupChangedHandler; import cc.kune.core.client.state.Session; import cc.kune.core.client.state.StateManager; import cc.kune.core.shared.domain.utils.StateToken; Modified: trunk/src/main/java/cc/kune/gspace/client/options/general/UserOptGeneralPresenter.java =================================================================== --- trunk/src/main/java/cc/kune/gspace/client/options/general/UserOptGeneralPresenter.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/gspace/client/options/general/UserOptGeneralPresenter.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -20,14 +20,14 @@ package cc.kune.gspace.client.options.general; import cc.kune.common.client.notify.NotifyUser; +import cc.kune.core.client.events.UserSignInEvent; +import cc.kune.core.client.events.UserSignInEvent.UserSignInHandler; import cc.kune.core.client.i18n.I18nUITranslationService; import cc.kune.core.client.i18n.I18nUITranslationService.I18nLanguageChangeNeeded; import cc.kune.core.client.rpcservices.AsyncCallbackSimple; import cc.kune.core.client.rpcservices.UserServiceAsync; import cc.kune.core.client.state.Session; import cc.kune.core.client.state.StateManager; -import cc.kune.core.client.state.UserSignInEvent; -import cc.kune.core.client.state.UserSignInEvent.UserSignInHandler; import cc.kune.core.shared.domain.dto.EmailNotificationFrequency; import cc.kune.core.shared.dto.I18nLanguageSimpleDTO; import cc.kune.core.shared.dto.StateAbstractDTO; Modified: trunk/src/main/java/cc/kune/gspace/client/options/license/GroupOptDefLicensePresenter.java =================================================================== --- trunk/src/main/java/cc/kune/gspace/client/options/license/GroupOptDefLicensePresenter.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/gspace/client/options/license/GroupOptDefLicensePresenter.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -19,10 +19,10 @@ */ package cc.kune.gspace.client.options.license; +import cc.kune.core.client.events.UserSignInEvent; +import cc.kune.core.client.events.UserSignInEvent.UserSignInHandler; import cc.kune.core.client.state.Session; import cc.kune.core.client.state.StateManager; -import cc.kune.core.client.state.UserSignInEvent; -import cc.kune.core.client.state.UserSignInEvent.UserSignInHandler; import cc.kune.core.shared.domain.utils.StateToken; import cc.kune.core.shared.dto.LicenseDTO; import cc.kune.gspace.client.licensewizard.LicenseChangeAction; Modified: trunk/src/main/java/cc/kune/gspace/client/options/license/UserOptDefLicensePresenter.java =================================================================== --- trunk/src/main/java/cc/kune/gspace/client/options/license/UserOptDefLicensePresenter.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/gspace/client/options/license/UserOptDefLicensePresenter.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -19,9 +19,9 @@ */ package cc.kune.gspace.client.options.license; +import cc.kune.core.client.events.UserSignInEvent; +import cc.kune.core.client.events.UserSignInEvent.UserSignInHandler; import cc.kune.core.client.state.Session; -import cc.kune.core.client.state.UserSignInEvent; -import cc.kune.core.client.state.UserSignInEvent.UserSignInHandler; import cc.kune.core.shared.domain.utils.StateToken; import cc.kune.core.shared.dto.LicenseDTO; import cc.kune.gspace.client.licensewizard.LicenseChangeAction; Deleted: trunk/src/main/java/cc/kune/gspace/client/options/logo/CurrentEntityChangedEvent.java =================================================================== --- trunk/src/main/java/cc/kune/gspace/client/options/logo/CurrentEntityChangedEvent.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/gspace/client/options/logo/CurrentEntityChangedEvent.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -1,74 +0,0 @@ -/* - * - * Copyright (C) 2007-2011 The kune development team (see CREDITS for details) - * This file is part of kune. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * - */ -package cc.kune.gspace.client.options.logo; - -import com.google.gwt.event.shared.EventHandler; -import com.google.gwt.event.shared.GwtEvent; -import com.google.gwt.event.shared.HandlerRegistration; -import com.google.gwt.event.shared.HasHandlers; - -public class CurrentEntityChangedEvent extends GwtEvent<CurrentEntityChangedEvent.CurrentEntityChangedHandler> { - - public interface CurrentEntityChangedHandler extends EventHandler { - public void onCurrentLogoChanged(CurrentEntityChangedEvent event); - } - - public interface HasCurrentLogoChangedHandlers extends HasHandlers { - HandlerRegistration addCurrentLogoChangedHandler(CurrentEntityChangedHandler handler); - } - - private static final Type<CurrentEntityChangedHandler> TYPE = new Type<CurrentEntityChangedHandler>(); - - public static void fire(final HasHandlers source) { - source.fireEvent(new CurrentEntityChangedEvent()); - } - - public static Type<CurrentEntityChangedHandler> getType() { - return TYPE; - } - - public CurrentEntityChangedEvent() { - } - - @Override - protected void dispatch(final CurrentEntityChangedHandler handler) { - handler.onCurrentLogoChanged(this); - } - - @Override - public boolean equals(final Object obj) { - return super.equals(obj); - } - - @Override - public Type<CurrentEntityChangedHandler> getAssociatedType() { - return TYPE; - } - - @Override - public int hashCode() { - return super.hashCode(); - } - - @Override - public String toString() { - return "CurrentLogoChangedEvent[" + "]"; - } -} Modified: trunk/src/main/java/cc/kune/gspace/client/options/logo/EntityOptLogoPresenter.java =================================================================== --- trunk/src/main/java/cc/kune/gspace/client/options/logo/EntityOptLogoPresenter.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/gspace/client/options/logo/EntityOptLogoPresenter.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -27,6 +27,7 @@ import cc.kune.common.shared.i18n.I18nTranslationService; import cc.kune.core.client.rpcservices.UserServiceAsync; import cc.kune.core.client.state.Session; +import cc.kune.gspace.client.events.CurrentEntityChangedEvent; import cc.kune.gspace.client.options.EntityOptions; import com.google.gwt.event.shared.EventBus; Modified: trunk/src/main/java/cc/kune/gspace/client/options/logo/GroupOptLogoPresenter.java =================================================================== --- trunk/src/main/java/cc/kune/gspace/client/options/logo/GroupOptLogoPresenter.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/gspace/client/options/logo/GroupOptLogoPresenter.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -20,9 +20,9 @@ package cc.kune.gspace.client.options.logo; import cc.kune.common.shared.i18n.I18nTranslationService; +import cc.kune.core.client.events.GroupChangedEvent; +import cc.kune.core.client.events.GroupChangedEvent.GroupChangedHandler; import cc.kune.core.client.rpcservices.UserServiceAsync; -import cc.kune.core.client.state.GroupChangedEvent; -import cc.kune.core.client.state.GroupChangedEvent.GroupChangedHandler; import cc.kune.core.client.state.Session; import cc.kune.core.client.state.StateManager; import cc.kune.gspace.client.options.GroupOptions; Modified: trunk/src/main/java/cc/kune/gspace/client/options/logo/UserOptLogoPresenter.java =================================================================== --- trunk/src/main/java/cc/kune/gspace/client/options/logo/UserOptLogoPresenter.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/gspace/client/options/logo/UserOptLogoPresenter.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -22,12 +22,12 @@ import gwtupload.client.IUploader; import cc.kune.common.shared.i18n.I18nTranslationService; import cc.kune.core.client.events.AvatarChangedEvent; +import cc.kune.core.client.events.UserSignInEvent; +import cc.kune.core.client.events.UserSignInEvent.UserSignInHandler; import cc.kune.core.client.rpcservices.AsyncCallbackSimple; import cc.kune.core.client.rpcservices.UserServiceAsync; import cc.kune.core.client.state.Session; import cc.kune.core.client.state.StateManager; -import cc.kune.core.client.state.UserSignInEvent; -import cc.kune.core.client.state.UserSignInEvent.UserSignInHandler; import cc.kune.core.shared.dto.GroupDTO; import cc.kune.gspace.client.options.UserOptions; Modified: trunk/src/main/java/cc/kune/gspace/client/options/style/EntityOptStylePresenter.java =================================================================== --- trunk/src/main/java/cc/kune/gspace/client/options/style/EntityOptStylePresenter.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/gspace/client/options/style/EntityOptStylePresenter.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -26,13 +26,13 @@ import cc.kune.common.client.notify.NotifyUser; import cc.kune.common.shared.i18n.I18nTranslationService; import cc.kune.common.shared.utils.TextUtils; +import cc.kune.core.client.events.StateChangedEvent; +import cc.kune.core.client.events.StateChangedEvent.StateChangedHandler; import cc.kune.core.client.rpcservices.AsyncCallbackSimple; import cc.kune.core.client.rpcservices.GroupServiceAsync; import cc.kune.core.client.services.ClientFileDownloadUtils; import cc.kune.core.client.services.ImageSize; import cc.kune.core.client.state.Session; -import cc.kune.core.client.state.StateChangedEvent; -import cc.kune.core.client.state.StateChangedEvent.StateChangedHandler; import cc.kune.core.client.state.StateManager; import cc.kune.core.shared.domain.utils.StateToken; import cc.kune.core.shared.dto.GroupDTO; Modified: trunk/src/main/java/cc/kune/gspace/client/options/tools/GroupOptToolsPresenter.java =================================================================== --- trunk/src/main/java/cc/kune/gspace/client/options/tools/GroupOptToolsPresenter.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/gspace/client/options/tools/GroupOptToolsPresenter.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -23,9 +23,9 @@ import java.util.List; import cc.kune.common.shared.i18n.I18nTranslationService; +import cc.kune.core.client.events.GroupChangedEvent; +import cc.kune.core.client.events.GroupChangedEvent.GroupChangedHandler; import cc.kune.core.client.rpcservices.GroupServiceAsync; -import cc.kune.core.client.state.GroupChangedEvent; -import cc.kune.core.client.state.GroupChangedEvent.GroupChangedHandler; import cc.kune.core.client.state.Session; import cc.kune.core.client.state.StateManager; import cc.kune.core.shared.domain.utils.StateToken; Modified: trunk/src/main/java/cc/kune/gspace/client/options/tools/UserOptToolsPresenter.java =================================================================== --- trunk/src/main/java/cc/kune/gspace/client/options/tools/UserOptToolsPresenter.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/gspace/client/options/tools/UserOptToolsPresenter.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -23,11 +23,11 @@ import java.util.List; import cc.kune.common.shared.i18n.I18nTranslationService; +import cc.kune.core.client.events.UserSignInEvent; +import cc.kune.core.client.events.UserSignInEvent.UserSignInHandler; import cc.kune.core.client.rpcservices.GroupServiceAsync; import cc.kune.core.client.state.Session; import cc.kune.core.client.state.StateManager; -import cc.kune.core.client.state.UserSignInEvent; -import cc.kune.core.client.state.UserSignInEvent.UserSignInHandler; import cc.kune.core.shared.domain.utils.StateToken; import cc.kune.core.shared.dto.ToolSimpleDTO; import cc.kune.gspace.client.options.UserOptions; Modified: trunk/src/main/java/cc/kune/gspace/client/style/GSpaceBackManagerImpl.java =================================================================== --- trunk/src/main/java/cc/kune/gspace/client/style/GSpaceBackManagerImpl.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/gspace/client/style/GSpaceBackManagerImpl.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -22,9 +22,8 @@ import javax.annotation.Nonnull; import cc.kune.core.client.services.ClientFileDownloadUtils; -import cc.kune.core.client.state.StateManager; import cc.kune.core.shared.domain.utils.StateToken; -import cc.kune.gspace.client.GSpaceArmor; +import cc.kune.gspace.client.armor.GSpaceArmor; import com.google.inject.Inject; @@ -34,14 +33,11 @@ private final ClientFileDownloadUtils downloadUtils; private final GSpaceArmor gSpaceArmor; private StateToken lastToken; - private final StateManager stateManager; @Inject - public GSpaceBackManagerImpl(final ClientFileDownloadUtils downloadUtils, final GSpaceArmor gSpaceArmor, - final StateManager stateManager) { + public GSpaceBackManagerImpl(final ClientFileDownloadUtils downloadUtils, final GSpaceArmor gSpaceArmor) { this.downloadUtils = downloadUtils; this.gSpaceArmor = gSpaceArmor; - this.stateManager = stateManager; lastToken = NO_TOKEN; } Modified: trunk/src/main/java/cc/kune/gspace/client/tags/TagsSummaryPanel.java =================================================================== --- trunk/src/main/java/cc/kune/gspace/client/tags/TagsSummaryPanel.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/gspace/client/tags/TagsSummaryPanel.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -20,7 +20,7 @@ package cc.kune.gspace.client.tags; import cc.kune.common.shared.i18n.I18nTranslationService; -import cc.kune.gspace.client.GSpaceArmor; +import cc.kune.gspace.client.armor.GSpaceArmor; import cc.kune.gspace.client.tags.TagsSummaryPresenter.TagsSummaryView; import com.google.gwt.event.dom.client.ClickHandler; Modified: trunk/src/main/java/cc/kune/gspace/client/tags/TagsSummaryPresenter.java =================================================================== --- trunk/src/main/java/cc/kune/gspace/client/tags/TagsSummaryPresenter.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/gspace/client/tags/TagsSummaryPresenter.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -21,9 +21,9 @@ import cc.kune.common.client.log.Log; import cc.kune.common.client.notify.NotifyUser; +import cc.kune.core.client.events.StateChangedEvent; +import cc.kune.core.client.events.StateChangedEvent.StateChangedHandler; import cc.kune.core.client.state.Session; -import cc.kune.core.client.state.StateChangedEvent; -import cc.kune.core.client.state.StateChangedEvent.StateChangedHandler; import cc.kune.core.client.state.StateManager; import cc.kune.core.shared.domain.TagCloudResult; import cc.kune.core.shared.domain.TagCount; Modified: trunk/src/main/java/cc/kune/gspace/client/themes/GSpaceThemeManager.java =================================================================== --- trunk/src/main/java/cc/kune/gspace/client/themes/GSpaceThemeManager.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/gspace/client/themes/GSpaceThemeManager.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -23,12 +23,12 @@ import cc.kune.common.client.notify.NotifyUser; import cc.kune.common.client.utils.CSSUtils; -import cc.kune.core.client.init.AppStartEvent; -import cc.kune.core.client.init.AppStartEvent.AppStartHandler; +import cc.kune.core.client.events.AppStartEvent; +import cc.kune.core.client.events.GroupChangedEvent; +import cc.kune.core.client.events.AppStartEvent.AppStartHandler; +import cc.kune.core.client.events.GroupChangedEvent.GroupChangedHandler; import cc.kune.core.client.rpcservices.AsyncCallbackSimple; import cc.kune.core.client.rpcservices.GroupServiceAsync; -import cc.kune.core.client.state.GroupChangedEvent; -import cc.kune.core.client.state.GroupChangedEvent.GroupChangedHandler; import cc.kune.core.client.state.Session; import cc.kune.core.client.state.StateManager; import cc.kune.core.shared.domain.utils.StateToken; @@ -36,7 +36,7 @@ import cc.kune.core.shared.dto.GroupDTO; import cc.kune.core.shared.dto.InitDataDTO; import cc.kune.core.shared.dto.StateAbstractDTO; -import cc.kune.gspace.client.resources.GSpaceArmorResources; +import cc.kune.gspace.client.armor.resources.GSpaceArmorResources; import cc.kune.gspace.client.style.GSpaceBackManager; import com.google.gwt.dom.client.StyleElement; Modified: trunk/src/main/java/cc/kune/gspace/client/themes/GSpaceThemeSelectorPresenter.java =================================================================== --- trunk/src/main/java/cc/kune/gspace/client/themes/GSpaceThemeSelectorPresenter.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/gspace/client/themes/GSpaceThemeSelectorPresenter.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -28,8 +28,8 @@ import cc.kune.common.client.actions.ui.descrip.MenuDescriptor; import cc.kune.common.client.actions.ui.descrip.MenuRadioItemDescriptor; import cc.kune.common.shared.i18n.I18nTranslationService; -import cc.kune.core.client.init.AppStartEvent; -import cc.kune.core.client.init.AppStartEvent.AppStartHandler; +import cc.kune.core.client.events.AppStartEvent; +import cc.kune.core.client.events.AppStartEvent.AppStartHandler; import cc.kune.core.client.resources.CoreResources; import cc.kune.core.client.state.Session; import cc.kune.core.shared.dto.GSpaceTheme; Modified: trunk/src/main/java/cc/kune/gspace/client/tool/ContentViewerSelector.java =================================================================== --- trunk/src/main/java/cc/kune/gspace/client/tool/ContentViewerSelector.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/gspace/client/tool/ContentViewerSelector.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -27,11 +27,11 @@ import cc.kune.common.client.log.Log; import cc.kune.common.client.notify.NotifyUser; -import cc.kune.core.client.init.AppStartEvent; -import cc.kune.core.client.init.AppStartEvent.AppStartHandler; +import cc.kune.core.client.events.AppStartEvent; +import cc.kune.core.client.events.StateChangedEvent; +import cc.kune.core.client.events.AppStartEvent.AppStartHandler; +import cc.kune.core.client.events.StateChangedEvent.StateChangedHandler; import cc.kune.core.client.state.Session; -import cc.kune.core.client.state.StateChangedEvent; -import cc.kune.core.client.state.StateChangedEvent.StateChangedHandler; import cc.kune.core.client.state.StateManager; import cc.kune.core.shared.dto.HasContent; import cc.kune.core.shared.dto.StateAbstractDTO; Modified: trunk/src/main/java/cc/kune/gspace/client/tool/selector/ToolSelectorPanel.java =================================================================== --- trunk/src/main/java/cc/kune/gspace/client/tool/selector/ToolSelectorPanel.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/gspace/client/tool/selector/ToolSelectorPanel.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -20,7 +20,7 @@ package cc.kune.gspace.client.tool.selector; import cc.kune.core.client.dnd.FolderViewerDropController; -import cc.kune.gspace.client.GSpaceArmor; +import cc.kune.gspace.client.armor.GSpaceArmor; import cc.kune.gspace.client.tool.selector.ToolSelectorItemPresenter.ToolSelectorItemView; import cc.kune.gspace.client.tool.selector.ToolSelectorPresenter.ToolSelectorView; Modified: trunk/src/main/java/cc/kune/gspace/client/tool/selector/ToolSelectorPresenter.java =================================================================== --- trunk/src/main/java/cc/kune/gspace/client/tool/selector/ToolSelectorPresenter.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/gspace/client/tool/selector/ToolSelectorPresenter.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -25,13 +25,13 @@ import cc.kune.common.client.errors.UIException; import cc.kune.common.client.log.Log; import cc.kune.common.shared.utils.TextUtils; -import cc.kune.core.client.state.GroupChangedEvent; -import cc.kune.core.client.state.GroupChangedEvent.GroupChangedHandler; -import cc.kune.core.client.state.StateChangedEvent; -import cc.kune.core.client.state.StateChangedEvent.StateChangedHandler; +import cc.kune.core.client.events.GroupChangedEvent; +import cc.kune.core.client.events.StateChangedEvent; +import cc.kune.core.client.events.ToolChangedEvent; +import cc.kune.core.client.events.GroupChangedEvent.GroupChangedHandler; +import cc.kune.core.client.events.StateChangedEvent.StateChangedHandler; +import cc.kune.core.client.events.ToolChangedEvent.ToolChangedHandler; import cc.kune.core.client.state.StateManager; -import cc.kune.core.client.state.ToolChangedEvent; -import cc.kune.core.client.state.ToolChangedEvent.ToolChangedHandler; import cc.kune.core.shared.domain.utils.StateToken; import cc.kune.gspace.client.tool.selector.ToolSelectorItemPresenter.ToolSelectorItemView; Modified: trunk/src/main/java/cc/kune/gspace/client/ui/footer/license/EntityLicensePanel.java =================================================================== --- trunk/src/main/java/cc/kune/gspace/client/ui/footer/license/EntityLicensePanel.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/gspace/client/ui/footer/license/EntityLicensePanel.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -23,7 +23,7 @@ import cc.kune.common.client.ui.KuneWindowUtils; import cc.kune.common.shared.i18n.I18nTranslationService; import cc.kune.core.shared.dto.LicenseDTO; -import cc.kune.gspace.client.GSpaceArmor; +import cc.kune.gspace.client.armor.GSpaceArmor; import cc.kune.gspace.client.ui.footer.license.EntityLicensePresenter.EntityLicenseView; import com.google.gwt.core.client.GWT; Modified: trunk/src/main/java/cc/kune/gspace/client/ui/footer/license/EntityLicensePresenter.java =================================================================== --- trunk/src/main/java/cc/kune/gspace/client/ui/footer/license/EntityLicensePresenter.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/gspace/client/ui/footer/license/EntityLicensePresenter.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -19,9 +19,9 @@ */ package cc.kune.gspace.client.ui.footer.license; +import cc.kune.core.client.events.StateChangedEvent; +import cc.kune.core.client.events.StateChangedEvent.StateChangedHandler; import cc.kune.core.client.state.Session; -import cc.kune.core.client.state.StateChangedEvent; -import cc.kune.core.client.state.StateChangedEvent.StateChangedHandler; import cc.kune.core.client.state.StateManager; import cc.kune.core.shared.dto.HasContent; import cc.kune.core.shared.dto.LicenseDTO; Modified: trunk/src/main/java/cc/kune/gspace/client/viewers/AbstractFolderViewerPanel.java =================================================================== --- trunk/src/main/java/cc/kune/gspace/client/viewers/AbstractFolderViewerPanel.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/gspace/client/viewers/AbstractFolderViewerPanel.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -28,7 +28,7 @@ import cc.kune.core.client.dnd.KuneDragController; import cc.kune.core.client.registry.ContentCapabilitiesRegistry; import cc.kune.core.shared.dto.StateContainerDTO; -import cc.kune.gspace.client.GSpaceArmor; +import cc.kune.gspace.client.armor.GSpaceArmor; import cc.kune.gspace.client.viewers.FolderViewerPresenter.FolderViewerView; import com.google.gwt.user.client.Window; Modified: trunk/src/main/java/cc/kune/gspace/client/viewers/AbstractFolderViewerView.java =================================================================== --- trunk/src/main/java/cc/kune/gspace/client/viewers/AbstractFolderViewerView.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/gspace/client/viewers/AbstractFolderViewerView.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -3,6 +3,7 @@ import cc.kune.common.client.actions.ui.descrip.GuiActionDescCollection; import cc.kune.common.client.ui.HasEditHandler; import cc.kune.core.shared.dto.StateContainerDTO; +import cc.kune.gspace.client.viewers.items.FolderItemDescriptor; import com.google.gwt.event.dom.client.ClickHandler; import com.google.gwt.event.dom.client.DoubleClickHandler; Modified: trunk/src/main/java/cc/kune/gspace/client/viewers/ContentTitleWidget.java =================================================================== --- trunk/src/main/java/cc/kune/gspace/client/viewers/ContentTitleWidget.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/gspace/client/viewers/ContentTitleWidget.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -25,7 +25,7 @@ import cc.kune.common.shared.i18n.I18nTranslationService; import cc.kune.core.client.registry.IconsRegistry; import cc.kune.core.shared.dto.BasicMimeTypeDTO; -import cc.kune.gspace.client.GSpaceArmor; +import cc.kune.gspace.client.armor.GSpaceArmor; import com.google.gwt.resources.client.ImageResource; import com.google.gwt.user.client.ui.Composite; Modified: trunk/src/main/java/cc/kune/gspace/client/viewers/ContentViewerPanel.java =================================================================== --- trunk/src/main/java/cc/kune/gspace/client/viewers/ContentViewerPanel.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/gspace/client/viewers/ContentViewerPanel.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -39,7 +39,7 @@ import cc.kune.core.client.registry.ContentCapabilitiesRegistry; import cc.kune.core.client.state.StateManager; import cc.kune.core.shared.dto.StateContentDTO; -import cc.kune.gspace.client.GSpaceArmor; +import cc.kune.gspace.client.armor.GSpaceArmor; import cc.kune.gspace.client.viewers.ContentViewerPresenter.ContentViewerView; import cc.kune.wave.client.KuneStagesProvider; import cc.kune.wave.client.WaveClientClearEvent; Modified: trunk/src/main/java/cc/kune/gspace/client/viewers/ContentViewerPresenter.java =================================================================== --- trunk/src/main/java/cc/kune/gspace/client/viewers/ContentViewerPresenter.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/gspace/client/viewers/ContentViewerPresenter.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -29,12 +29,12 @@ import cc.kune.common.client.ui.EditEvent.EditHandler; import cc.kune.common.client.ui.HasEditHandler; import cc.kune.core.client.actions.ActionRegistryByType; +import cc.kune.core.client.events.UserSignInEvent; +import cc.kune.core.client.events.UserSignOutEvent; +import cc.kune.core.client.events.UserSignInEvent.UserSignInHandler; +import cc.kune.core.client.events.UserSignOutEvent.UserSignOutHandler; import cc.kune.core.client.state.Session; import cc.kune.core.client.state.StateManager; -import cc.kune.core.client.state.UserSignInEvent; -import cc.kune.core.client.state.UserSignInEvent.UserSignInHandler; -import cc.kune.core.client.state.UserSignOutEvent; -import cc.kune.core.client.state.UserSignOutEvent.UserSignOutHandler; import cc.kune.core.shared.domain.utils.AccessRights; import cc.kune.core.shared.domain.utils.StateToken; import cc.kune.core.shared.dto.HasContent; Deleted: trunk/src/main/java/cc/kune/gspace/client/viewers/FolderItemDescriptor.java =================================================================== --- trunk/src/main/java/cc/kune/gspace/client/viewers/FolderItemDescriptor.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/gspace/client/viewers/FolderItemDescriptor.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -1,100 +0,0 @@ -/* - * - * Copyright (C) 2007-2011 The kune development team (see CREDITS for details) - * This file is part of kune. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * - \*/ -package cc.kune.gspace.client.viewers; - -import cc.kune.common.client.actions.ui.descrip.GuiActionDescCollection; -import cc.kune.core.shared.domain.ContentStatus; -import cc.kune.core.shared.domain.utils.StateToken; - -public class FolderItemDescriptor { - private final GuiActionDescCollection actionCollection; - private final boolean allowDrag; - private final boolean allowDrop; - private final ContentStatus contentStatus; - private final Object icon; - private final String id; - private final long modififiedOn; - private final String parentId; - private final String text; - private final StateToken token; - private final String tooltip; - - public FolderItemDescriptor(final String id, final String parentId, final Object icon, - final String text, final String tooltip, final ContentStatus contentStatus, - final StateToken token, final long modififiedOn, final boolean allowDrag, final boolean allowDrop, - final GuiActionDescCollection actionCollection) { - this.id = id; - this.parentId = parentId; - this.icon = icon; - this.text = text; - this.tooltip = tooltip; - this.contentStatus = contentStatus; - this.token = token; - this.modififiedOn = modififiedOn; - this.allowDrag = allowDrag; - this.allowDrop = allowDrop; - this.actionCollection = actionCollection; - } - - public GuiActionDescCollection getActionCollection() { - return actionCollection; - } - - public ContentStatus getContentStatus() { - return contentStatus; - } - - public Object getIcon() { - return icon; - } - - public String getId() { - return id; - } - - public long getModififiedOn() { - return modififiedOn; - } - - public String getParentId() { - return parentId; - } - - public StateToken getStateToken() { - return token; - } - - public String getText() { - return text; - } - - public String getTooltip() { - return tooltip; - } - - public boolean isDraggable() { - return allowDrag; - } - - public boolean isDroppable() { - return allowDrop; - } - -} Deleted: trunk/src/main/java/cc/kune/gspace/client/viewers/FolderItemWidget.java =================================================================== --- trunk/src/main/java/cc/kune/gspace/client/viewers/FolderItemWidget.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/gspace/client/viewers/FolderItemWidget.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -1,165 +0,0 @@ -/* - * - * Copyright (C) 2007-2011 The kune development team (see CREDITS for details) - * This file is part of kune. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * - */ -package cc.kune.gspace.client.viewers; - -import cc.kune.common.client.actions.ui.ActionSimplePanel; -import cc.kune.core.shared.domain.utils.StateToken; - -import com.google.gwt.core.client.GWT; -import com.google.gwt.event.dom.client.BlurEvent; -import com.google.gwt.event.dom.client.FocusEvent; -import com.google.gwt.event.dom.client.HasAllFocusHandlers; -import com.google.gwt.event.dom.client.HasAllMouseHandlers; -import com.google.gwt.event.dom.client.HasClickHandlers; -import com.google.gwt.event.dom.client.HasDoubleClickHandlers; -import com.google.gwt.event.dom.client.MouseOutEvent; -import com.google.gwt.event.dom.client.MouseOverEvent; -import com.google.gwt.resources.client.ImageResource; -import com.google.gwt.uibinder.client.UiBinder; -import com.google.gwt.uibinder.client.UiField; -import com.google.gwt.uibinder.client.UiHandler; -import com.google.gwt.user.client.ui.Composite; -import com.google.gwt.user.client.ui.FlowPanel; -import com.google.gwt.user.client.ui.FocusPanel; -import com.google.gwt.user.client.ui.HasText; -import com.google.gwt.user.client.ui.Image; -import com.google.gwt.user.client.ui.InlineLabel; -import com.google.gwt.user.client.ui.SimplePanel; -import com.google.gwt.user.client.ui.Widget; - -public class FolderItemWidget extends Composite implements HasText { - - interface FolderItemWidgetUiBinder extends UiBinder<Widget, FolderItemWidget> { - } - - private static FolderItemWidgetUiBinder uiBinder = GWT.create(FolderItemWidgetUiBinder.class); - - @UiField - FlowPanel flow; - @UiField - FocusPanel focusPanel; - @UiField - Image icon; - @UiField - SimplePanel menu; - @UiField - InlineLabel modified; - @UiField - InlineLabel title; - - private final StateToken token; - - public FolderItemWidget(final ImageResource iconResource, final String title, final StateToken token) { - this.token = token; - initWidget(uiBinder.createAndBindUi(this)); - this.title.setText(title); - icon.setResource(iconResource); - } - - private void clearFocusStyles() { - focusPanel.removeStyleDependentName("nofocused"); - focusPanel.removeStyleDependentName("focused"); - } - - FlowPanel getFlow() { - return flow; - } - - Widget getIcon() { - return icon; - } - - HasClickHandlers getRowClick() { - return focusPanel; - } - - HasDoubleClickHandlers getRowDoubleClick() { - return focusPanel; - } - - HasAllFocusHandlers getRowFocus() { - return focusPanel; - } - - HasAllMouseHandlers getRowMouse() { - return focusPanel; - } - - @Override - public String getText() { - return title.getText(); - } - - Widget getTitleWidget() { - return title; - } - - public StateToken getToken() { - return token; - } - - @UiHandler("focusPanel") - public void onBlur(final BlurEvent event) { - clearFocusStyles(); - focusPanel.addStyleDependentName("nofocused"); - } - - @UiHandler("focusPanel") - public void onFocus(final FocusEvent event) { - clearFocusStyles(); - focusPanel.addStyleDependentName("focused"); - } - - @UiHandler("focusPanel") - public void onOut(final MouseOutEvent event) { - clearFocusStyles(); - focusPanel.addStyleDependentName("nofocused"); - } - - @UiHandler("focusPanel") - public void onOver(final MouseOverEvent event) { - clearFocusStyles(); - focusPanel.addStyleDependentName("focused"); - } - - public void setMenu(final ActionSimplePanel toolbar) { - menu.add(toolbar); - } - - public void setMenuVisible(final boolean visible) { - menu.getElement().getStyle().setOpacity(visible ? 1d : 0.2d); - } - - public void setModifiedText(final String text) { - modified.setText(text); - } - - public void setSelect(final boolean selected) { - clearFocusStyles(); - focusPanel.removeStyleDependentName(selected ? "noselected" : "selected"); - focusPanel.addStyleDependentName(selected ? "selected" : "noselected"); - } - - @Override - public void setText(final String text) { - title.setText(text); - } - -} Deleted: trunk/src/main/java/cc/kune/gspace/client/viewers/FolderItemWidget.ui.xml =================================================================== --- trunk/src/main/java/cc/kune/gspace/client/viewers/FolderItemWidget.ui.xml 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/gspace/client/viewers/FolderItemWidget.ui.xml 2012-01-08 23:06:53 UTC (rev 1656) @@ -1,79 +0,0 @@ -<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent"> -<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder" - xmlns:co="urn:ui:cc.kune.core.client" xmlns:g="urn:import:com.google.gwt.user.client.ui"> - <ui:style> - @external .k-folderitem-focus; - @external .k-folderitem-focus-focused; - @external .k-folderitem-focus-selected; - @external .k-folderitem-focus-noselected; - @external .k-folderitem-focus-nofocused; - .k-folderitem-focus { - background-color: none; - border: solid 2px transparent; - -moz-border-radius: 4px; - -webkit-border-radius: 4px; - border-radius: 4px; - } - - .k-folderitem-focus-focused { - background-color: #F2F5FD; - } - - .k-folderitem-focus-selected { - background-color: #E3E9FF; - } - - .k-folderitem-focus-noselected { - - } - - .k-folderitem-focus-nofocused { - - } - - .flow { - cursor: pointer; - border-bottom: 1px solid #F3F3F3; - line-height: 1.3em; - height: 28px; - outline: 0; - } - - .modified { - margin-right: 5px; - color: #A05A2C; - font-size: 17px; - line-height: 1.3em; - -moz-user-select: none; - -khtml-user-select: none; - float: right; - font-style: italic; - } - - .title { - margin-left: 5px; - color: #A05A2C; - font-size: 19px; - line-height: 1.3em; - -moz-user-select: none; - -khtml-user-select: none; - } - - .icon { - margin: 5px; - } - - .menu { - float: right; - } - </ui:style> - <g:FocusPanel ui:field="focusPanel" styleName="{style.k-folderitem-focus}"> - <g:FlowPanel styleName="{style.flow}" ui:field="flow"> - <g:Image styleName="{style.icon}" ui:field="icon"/> - <g:InlineLabel styleName="{style.title}" ui:field="title"/> - <g:SimplePanel styleName="{style.menu}" ui:field="menu"/> - <g:InlineLabel styleName="{style.modified}" - ui:field="modified"/> - </g:FlowPanel> - </g:FocusPanel> -</ui:UiBinder> \ No newline at end of file Modified: trunk/src/main/java/cc/kune/gspace/client/viewers/FolderViewerAsFlowPanel.java =================================================================== --- trunk/src/main/java/cc/kune/gspace/client/viewers/FolderViewerAsFlowPanel.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/gspace/client/viewers/FolderViewerAsFlowPanel.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -29,7 +29,8 @@ import cc.kune.core.client.registry.ContentCapabilitiesRegistry; import cc.kune.core.client.ui.BasicDragableThumb; import cc.kune.core.shared.dto.StateContainerDTO; -import cc.kune.gspace.client.GSpaceArmor; +import cc.kune.gspace.client.armor.GSpaceArmor; +import cc.kune.gspace.client.viewers.items.FolderItemDescriptor; import com.google.gwt.core.client.GWT; import com.google.gwt.event.dom.client.ClickEvent; Modified: trunk/src/main/java/cc/kune/gspace/client/viewers/FolderViewerAsTablePanel.java =================================================================== --- trunk/src/main/java/cc/kune/gspace/client/viewers/FolderViewerAsTablePanel.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/gspace/client/viewers/FolderViewerAsTablePanel.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -34,8 +34,10 @@ import cc.kune.core.client.resources.CoreResources; import cc.kune.core.shared.domain.ContentStatus; import cc.kune.core.shared.dto.StateContainerDTO; -import cc.kune.gspace.client.GSpaceArmor; +import cc.kune.gspace.client.armor.GSpaceArmor; import cc.kune.gspace.client.viewers.FolderViewerPresenter.FolderViewerView; +import cc.kune.gspace.client.viewers.items.FolderItemDescriptor; +import cc.kune.gspace.client.viewers.items.FolderItemWidget; import com.google.gwt.core.client.GWT; import com.google.gwt.event.dom.client.ClickEvent; Modified: trunk/src/main/java/cc/kune/gspace/client/viewers/FolderViewerUtils.java =================================================================== --- trunk/src/main/java/cc/kune/gspace/client/viewers/FolderViewerUtils.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/gspace/client/viewers/FolderViewerUtils.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -24,6 +24,7 @@ import cc.kune.core.shared.dto.StateContainerDTO; import cc.kune.gspace.client.actions.ActionGroups; import cc.kune.gspace.client.viewers.FolderViewerPresenter.FolderViewerView; +import cc.kune.gspace.client.viewers.items.FolderItemDescriptor; import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.event.dom.client.ClickHandler; Modified: trunk/src/main/java/cc/kune/gspace/client/viewers/NoHomePageViewer.java =================================================================== --- trunk/src/main/java/cc/kune/gspace/client/viewers/NoHomePageViewer.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/gspace/client/viewers/NoHomePageViewer.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -24,7 +24,7 @@ import cc.kune.core.client.registry.ContentCapabilitiesRegistry; import cc.kune.core.client.resources.CoreMessages; import cc.kune.core.shared.dto.HasContent; -import cc.kune.gspace.client.GSpaceArmor; +import cc.kune.gspace.client.armor.GSpaceArmor; import cc.kune.gspace.client.tool.ContentViewer; import com.google.inject.Inject; Copied: trunk/src/main/java/cc/kune/gspace/client/viewers/items/FolderItemDescriptor.java (from rev 1655, trunk/src/main/java/cc/kune/gspace/client/viewers/FolderItemDescriptor.java) =================================================================== --- trunk/src/main/java/cc/kune/gspace/client/viewers/items/FolderItemDescriptor.java (rev 0) +++ trunk/src/main/java/cc/kune/gspace/client/viewers/items/FolderItemDescriptor.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -0,0 +1,100 @@ +/* + * + * Copyright (C) 2007-2011 The kune development team (see CREDITS for details) + * This file is part of kune. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + \*/ +package cc.kune.gspace.client.viewers.items; + +import cc.kune.common.client.actions.ui.descrip.GuiActionDescCollection; +import cc.kune.core.shared.domain.ContentStatus; +import cc.kune.core.shared.domain.utils.StateToken; + +public class FolderItemDescriptor { + private final GuiActionDescCollection actionCollection; + private final boolean allowDrag; + private final boolean allowDrop; + private final ContentStatus contentStatus; + private final Object icon; + private final String id; + private final long modififiedOn; + private final String parentId; + private final String text; + private final StateToken token; + private final String tooltip; + + public FolderItemDescriptor(final String id, final String parentId, final Object icon, + final String text, final String tooltip, final ContentStatus contentStatus, + final StateToken token, final long modififiedOn, final boolean allowDrag, final boolean allowDrop, + final GuiActionDescCollection actionCollection) { + this.id = id; + this.parentId = parentId; + this.icon = icon; + this.text = text; + this.tooltip = tooltip; + this.contentStatus = contentStatus; + this.token = token; + this.modififiedOn = modififiedOn; + this.allowDrag = allowDrag; + this.allowDrop = allowDrop; + this.actionCollection = actionCollection; + } + + public GuiActionDescCollection getActionCollection() { + return actionCollection; + } + + public ContentStatus getContentStatus() { + return contentStatus; + } + + public Object getIcon() { + return icon; + } + + public String getId() { + return id; + } + + public long getModififiedOn() { + return modififiedOn; + } + + public String getParentId() { + return parentId; + } + + public StateToken getStateToken() { + return token; + } + + public String getText() { + return text; + } + + public String getTooltip() { + return tooltip; + } + + public boolean isDraggable() { + return allowDrag; + } + + public boolean isDroppable() { + return allowDrop; + } + +} Copied: trunk/src/main/java/cc/kune/gspace/client/viewers/items/FolderItemWidget.java (from rev 1655, trunk/src/main/java/cc/kune/gspace/client/viewers/FolderItemWidget.java) =================================================================== --- trunk/src/main/java/cc/kune/gspace/client/viewers/items/FolderItemWidget.java (rev 0) +++ trunk/src/main/java/cc/kune/gspace/client/viewers/items/FolderItemWidget.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -0,0 +1,165 @@ +/* + * + * Copyright (C) 2007-2011 The kune development team (see CREDITS for details) + * This file is part of kune. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ +package cc.kune.gspace.client.viewers.items; + +import cc.kune.common.client.actions.ui.ActionSimplePanel; +import cc.kune.core.shared.domain.utils.StateToken; + +import com.google.gwt.core.client.GWT; +import com.google.gwt.event.dom.client.BlurEvent; +import com.google.gwt.event.dom.client.FocusEvent; +import com.google.gwt.event.dom.client.HasAllFocusHandlers; +import com.google.gwt.event.dom.client.HasAllMouseHandlers; +import com.google.gwt.event.dom.client.HasClickHandlers; +import com.google.gwt.event.dom.client.HasDoubleClickHandlers; +import com.google.gwt.event.dom.client.MouseOutEvent; +import com.google.gwt.event.dom.client.MouseOverEvent; +import com.google.gwt.resources.client.ImageResource; +import com.google.gwt.uibinder.client.UiBinder; +import com.google.gwt.uibinder.client.UiField; +import com.google.gwt.uibinder.client.UiHandler; +import com.google.gwt.user.client.ui.Composite; +import com.google.gwt.user.client.ui.FlowPanel; +import com.google.gwt.user.client.ui.FocusPanel; +import com.google.gwt.user.client.ui.HasText; +import com.google.gwt.user.client.ui.Image; +import com.google.gwt.user.client.ui.InlineLabel; +import com.google.gwt.user.client.ui.SimplePanel; +import com.google.gwt.user.client.ui.Widget; + +public class FolderItemWidget extends Composite implements HasText { + + interface FolderItemWidgetUiBinder extends UiBinder<Widget, FolderItemWidget> { + } + + private static FolderItemWidgetUiBinder uiBinder = GWT.create(FolderItemWidgetUiBinder.class); + + @UiField + FlowPanel flow; + @UiField + FocusPanel focusPanel; + @UiField + Image icon; + @UiField + SimplePanel menu; + @UiField + InlineLabel modified; + @UiField + InlineLabel title; + + private final StateToken token; + + public FolderItemWidget(final ImageResource iconResource, final String title, final StateToken token) { + this.token = token; + initWidget(uiBinder.createAndBindUi(this)); + this.title.setText(title); + icon.setResource(iconResource); + } + + private void clearFocusStyles() { + focusPanel.removeStyleDependentName("nofocused"); + focusPanel.removeStyleDependentName("focused"); + } + + public FlowPanel getFlow() { + return flow; + } + + public Widget getIcon() { + return icon; + } + + public HasClickHandlers getRowClick() { + return focusPanel; + } + + public HasDoubleClickHandlers getRowDoubleClick() { + return focusPanel; + } + + public HasAllFocusHandlers getRowFocus() { + return focusPanel; + } + + public HasAllMouseHandlers getRowMouse() { + return focusPanel; + } + + @Override + public String getText() { + return title.getText(); + } + + public Widget getTitleWidget() { + return title; + } + + public StateToken getToken() { + return token; + } + + @UiHandler("focusPanel") + public void onBlur(final BlurEvent event) { + clearFocusStyles(); + focusPanel.addStyleDependentName("nofocused"); + } + + @UiHandler("focusPanel") + public void onFocus(final FocusEvent event) { + clearFocusStyles(); + focusPanel.addStyleDependentName("focused"); + } + + @UiHandler("focusPanel") + public void onOut(final MouseOutEvent event) { + clearFocusStyles(); + focusPanel.addStyleDependentName("nofocused"); + } + + @UiHandler("focusPanel") + public void onOver(final MouseOverEvent event) { + clearFocusStyles(); + focusPanel.addStyleDependentName("focused"); + } + + public void setMenu(final ActionSimplePanel toolbar) { + menu.add(toolbar); + } + + public void setMenuVisible(final boolean visible) { + menu.getElement().getStyle().setOpacity(visible ? 1d : 0.2d); + } + + public void setModifiedText(final String text) { + modified.setText(text); + } + + public void setSelect(final boolean selected) { + clearFocusStyles(); + focusPanel.removeStyleDependentName(selected ? "noselected" : "selected"); + focusPanel.addStyleDependentName(selected ? "selected" : "noselected"); + } + + @Override + public void setText(final String text) { + title.setText(text); + } + +} Copied: trunk/src/main/java/cc/kune/gspace/client/viewers/items/FolderItemWidget.ui.xml (from rev 1655, trunk/src/main/java/cc/kune/gspace/client/viewers/FolderItemWidget.ui.xml) =================================================================== --- trunk/src/main/java/cc/kune/gspace/client/viewers/items/FolderItemWidget.ui.xml (rev 0) +++ trunk/src/main/java/cc/kune/gspace/client/viewers/items/FolderItemWidget.ui.xml 2012-01-08 23:06:53 UTC (rev 1656) @@ -0,0 +1,79 @@ +<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent"> +<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder" + xmlns:co="urn:ui:cc.kune.core.client" xmlns:g="urn:import:com.google.gwt.user.client.ui"> + <ui:style> + @external .k-folderitem-focus; + @external .k-folderitem-focus-focused; + @external .k-folderitem-focus-selected; + @external .k-folderitem-focus-noselected; + @external .k-folderitem-focus-nofocused; + .k-folderitem-focus { + background-color: none; + border: solid 2px transparent; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; + } + + .k-folderitem-focus-focused { + background-color: #F2F5FD; + } + + .k-folderitem-focus-selected { + background-color: #E3E9FF; + } + + .k-folderitem-focus-noselected { + + } + + .k-folderitem-focus-nofocused { + + } + + .flow { + cursor: pointer; + border-bottom: 1px solid #F3F3F3; + line-height: 1.3em; + height: 28px; + outline: 0; + } + + .modified { + margin-right: 5px; + color: #A05A2C; + font-size: 17px; + line-height: 1.3em; + -moz-user-select: none; + -khtml-user-select: none; + float: right; + font-style: italic; + } + + .title { + margin-left: 5px; + color: #A05A2C; + font-size: 19px; + line-height: 1.3em; + -moz-user-select: none; + -khtml-user-select: none; + } + + .icon { + margin: 5px; + } + + .menu { + float: right; + } + </ui:style> + <g:FocusPanel ui:field="focusPanel" styleName="{style.k-folderitem-focus}"> + <g:FlowPanel styleName="{style.flow}" ui:field="flow"> + <g:Image styleName="{style.icon}" ui:field="icon"/> + <g:InlineLabel styleName="{style.title}" ui:field="title"/> + <g:SimplePanel styleName="{style.menu}" ui:field="menu"/> + <g:InlineLabel styleName="{style.modified}" + ui:field="modified"/> + </g:FlowPanel> + </g:FocusPanel> +</ui:UiBinder> \ No newline at end of file Modified: trunk/src/main/java/cc/kune/hspace/client/HSpacePanel.java =================================================================== --- trunk/src/main/java/cc/kune/hspace/client/HSpacePanel.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/hspace/client/HSpacePanel.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -30,7 +30,7 @@ import cc.kune.core.shared.dto.ContentSimpleDTO; import cc.kune.core.shared.dto.GroupDTO; import cc.kune.core.shared.utils.SharedFileDownloadUtils; -import cc.kune.gspace.client.GSpaceArmor; +import cc.kune.gspace.client.armor.GSpaceArmor; import cc.kune.hspace.client.HSpacePresenter.HSpaceView; import com.calclab.emite.core.client.packet.TextUtils; Modified: trunk/src/main/java/cc/kune/hspace/client/HSpaceParts.java =================================================================== --- trunk/src/main/java/cc/kune/hspace/client/HSpaceParts.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/hspace/client/HSpaceParts.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -19,8 +19,8 @@ */ package cc.kune.hspace.client; -import cc.kune.core.client.init.AppStartEvent; -import cc.kune.core.client.init.AppStartEvent.AppStartHandler; +import cc.kune.core.client.events.AppStartEvent; +import cc.kune.core.client.events.AppStartEvent.AppStartHandler; import cc.kune.core.client.state.Session; import com.google.inject.Inject; Modified: trunk/src/main/java/cc/kune/hspace/client/HSpacePresenter.java =================================================================== --- trunk/src/main/java/cc/kune/hspace/client/HSpacePresenter.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/hspace/client/HSpacePresenter.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -23,10 +23,10 @@ import cc.kune.common.shared.i18n.I18nTranslationService; import cc.kune.core.client.events.InboxUnreadUpdatedEvent; +import cc.kune.core.client.events.UserSignInOrSignOutEvent; +import cc.kune.core.client.events.UserSignInOrSignOutEvent.UserSignInOrSignOutHandler; import cc.kune.core.client.rpcservices.AsyncCallbackSimple; import cc.kune.core.client.state.Session; -import cc.kune.core.client.state.UserSignInOrSignOutEvent; -import cc.kune.core.client.state.UserSignInOrSignOutEvent.UserSignInOrSignOutHandler; import cc.kune.core.shared.dto.ContentSimpleDTO; import cc.kune.core.shared.dto.GroupDTO; import cc.kune.core.shared.dto.HomeStatsDTO; Modified: trunk/src/main/java/cc/kune/lists/server/ListsServerTool.java =================================================================== --- trunk/src/main/java/cc/kune/lists/server/ListsServerTool.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/lists/server/ListsServerTool.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -44,8 +44,8 @@ import cc.kune.domain.Content; import cc.kune.domain.Group; import cc.kune.domain.User; -import cc.kune.wave.server.KuneWaveService; import cc.kune.wave.server.KuneWaveUtils; +import cc.kune.wave.server.kspecific.KuneWaveService; import com.google.inject.Inject; Modified: trunk/src/main/java/cc/kune/pspace/client/PSpaceInDevelopment.java =================================================================== --- trunk/src/main/java/cc/kune/pspace/client/PSpaceInDevelopment.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/pspace/client/PSpaceInDevelopment.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -22,16 +22,16 @@ import cc.kune.common.shared.i18n.I18nTranslationService; import cc.kune.common.shared.utils.TextUtils; import cc.kune.common.shared.utils.UrlParam; +import cc.kune.core.client.events.GroupChangedEvent; +import cc.kune.core.client.events.GroupChangedEvent.GroupChangedHandler; import cc.kune.core.client.resources.CoreResources; import cc.kune.core.client.services.ClientFileDownloadUtils; -import cc.kune.core.client.state.GroupChangedEvent; -import cc.kune.core.client.state.GroupChangedEvent.GroupChangedHandler; import cc.kune.core.client.state.Session; import cc.kune.core.client.state.StateManager; import cc.kune.core.shared.domain.utils.StateToken; import cc.kune.core.shared.dto.GroupDTO; -import cc.kune.gspace.client.options.logo.CurrentEntityChangedEvent; -import cc.kune.gspace.client.options.logo.CurrentEntityChangedEvent.CurrentEntityChangedHandler; +import cc.kune.gspace.client.events.CurrentEntityChangedEvent; +import cc.kune.gspace.client.events.CurrentEntityChangedEvent.CurrentEntityChangedHandler; import com.google.gwt.core.client.GWT; import com.google.gwt.event.shared.EventBus; Modified: trunk/src/main/java/cc/kune/pspace/client/PSpacePanel.java =================================================================== --- trunk/src/main/java/cc/kune/pspace/client/PSpacePanel.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/pspace/client/PSpacePanel.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -24,7 +24,7 @@ import cc.kune.common.client.actions.ui.IsActionExtensible; import cc.kune.common.shared.i18n.I18nTranslationService; import cc.kune.core.client.resources.CoreResources; -import cc.kune.gspace.client.GSpaceArmor; +import cc.kune.gspace.client.armor.GSpaceArmor; import cc.kune.pspace.client.PSpacePresenter.PSpaceView; import com.google.gwt.core.client.GWT; Modified: trunk/src/main/java/cc/kune/pspace/client/PSpaceParts.java =================================================================== --- trunk/src/main/java/cc/kune/pspace/client/PSpaceParts.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/pspace/client/PSpaceParts.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -19,8 +19,8 @@ */ package cc.kune.pspace.client; -import cc.kune.core.client.init.AppStartEvent; -import cc.kune.core.client.init.AppStartEvent.AppStartHandler; +import cc.kune.core.client.events.AppStartEvent; +import cc.kune.core.client.events.AppStartEvent.AppStartHandler; import cc.kune.core.client.state.Session; import com.google.inject.Inject; Modified: trunk/src/main/java/cc/kune/pspace/client/PSpacePresenter.java =================================================================== --- trunk/src/main/java/cc/kune/pspace/client/PSpacePresenter.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/pspace/client/PSpacePresenter.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -22,10 +22,10 @@ import cc.kune.common.client.actions.ui.IsActionExtensible; import cc.kune.common.shared.i18n.I18nTranslationService; import cc.kune.common.shared.utils.TextUtils; -import cc.kune.core.client.init.AppStartEvent; +import cc.kune.core.client.events.AppStartEvent; +import cc.kune.core.client.events.StateChangedEvent; +import cc.kune.core.client.events.StateChangedEvent.StateChangedHandler; import cc.kune.core.client.state.Session; -import cc.kune.core.client.state.StateChangedEvent; -import cc.kune.core.client.state.StateChangedEvent.StateChangedHandler; import cc.kune.core.client.state.StateManager; import cc.kune.core.client.state.StateTokenUtils; import cc.kune.core.shared.domain.ContentStatus; Deleted: trunk/src/main/java/cc/kune/wave/client/KuneConversation.css =================================================================== --- trunk/src/main/java/cc/kune/wave/client/KuneConversation.css 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/wave/client/KuneConversation.css 2012-01-08 23:06:53 UTC (rev 1656) @@ -1,31 +0,0 @@ -/* - * CSS for conversations. - * - * Author: [email protected] (Reuben Kan) - */ -.fixedSelf { - position: absolute; - top: 0; - bottom: 0; - left: 0; - right: 0; - z-index: 0; -} - -.fixedThread { - /* - * Allow scrolling. Also, keep the scrollbar there permanently, so that content does not get - * horizontally resized by the addition and removal of a scrollbar. - */ - overflow-y: scroll; - /* position: absolute; */ /* position: relative; */ - /* top: 24px; */ - top: 0; - /* left: 0; */ /* right: 0; */ /* bottom: 0; */ - /* Layout under siblings (participant panel etc). */ - z-index: -1; -} - -@sprite .toolbar { - gwt-image: 'emptyToolbar'; -} Modified: trunk/src/main/java/cc/kune/wave/client/KuneStagesProvider.java =================================================================== --- trunk/src/main/java/cc/kune/wave/client/KuneStagesProvider.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/wave/client/KuneStagesProvider.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -49,12 +49,14 @@ import org.waveprotocol.wave.client.wavepanel.view.dom.full.DomRenderer; import org.waveprotocol.wave.client.widget.popup.PopupChromeFactory; import org.waveprotocol.wave.client.widget.popup.PopupFactory; +import org.waveprotocol.wave.model.conversation.Conversation; +import org.waveprotocol.wave.model.conversation.ConversationBlip; import org.waveprotocol.wave.model.conversation.ConversationView; import org.waveprotocol.wave.model.id.IdGenerator; +import org.waveprotocol.wave.model.id.ModernIdSerialiser; import org.waveprotocol.wave.model.wave.ParticipantId; import org.waveprotocol.wave.model.waveref.WaveRef; -import cc.kune.common.client.log.Log; import cc.kune.common.shared.i18n.I18nTranslationService; import com.google.gwt.dom.client.Element; @@ -68,30 +70,29 @@ private final static AsyncHolder<Object> HALT = new AsyncHolder<Object>() { @Override - public void call(final Accessor<Object> accessor) { + public void call(Accessor<Object> accessor) { // Never ready, so never notify the accessor. } }; + private final Element wavePanelElement; + private final LogicalPanel rootPanel; + private final WaveRef waveRef; private final RemoteViewServiceMultiplexer channel; - private boolean closed; private final I18nTranslationService i18n; private final IdGenerator idGenerator; + private final ProfileManager profiles; + private final WaveStore waveStore; private final boolean isNewWave; private final String localDomain; - private StageOne one; - private final ProfileManager profiles; - private final LogicalPanel rootPanel; private final boolean showParticipantsPanel; + private boolean closed; + private StageOne one; + private StageTwo two; private StageThree three; - private StageTwo two; private WaveContext wave; - private final Element wavePanelElement; - private final WaveRef waveRef; - private final WaveStore waveStore; - /** * @param wavePanelElement The dom element to become the wave panel * @param rootPanel A panel that this an ancestor of wavePanelElement. This is @@ -102,9 +103,9 @@ * @param isNewWave true if the wave is a new client-created wave * @param idGenerator */ - public KuneStagesProvider(final Element wavePanelElement, final LogicalPanel rootPanel, final WaveRef waveRef, - final RemoteViewServiceMultiplexer channel, final IdGenerator idGenerator, final ProfileManager profiles, - final WaveStore store, final boolean isNewWave, final String localDomain, final boolean showParticipantsPanel, final I18nTranslationService i18n) { + public KuneStagesProvider(Element wavePanelElement, LogicalPanel rootPanel, WaveRef waveRef, + RemoteViewServiceMultiplexer channel, IdGenerator idGenerator, ProfileManager profiles, + WaveStore store, boolean isNewWave, String localDomain, boolean showParticipantsPanel, I18nTranslationService i18n) { this.wavePanelElement = wavePanelElement; this.rootPanel = rootPanel; this.waveRef = waveRef; @@ -119,17 +120,43 @@ } @Override - protected AsyncHolder<StageOne> createStageOneLoader(final StageZero zero) { + protected AsyncHolder<StageZero> createStageZeroLoader() { + return haltIfClosed(super.createStageZeroLoader()); + } + + @Override + protected AsyncHolder<StageOne> createStageOneLoader(StageZero zero) { return haltIfClosed(new StageOne.DefaultProvider(zero) { @Override + protected Element createWaveHolder() { + return wavePanelElement; + } + + @Override protected LogicalPanel createWaveContainer() { return rootPanel; } + }); + } + @Override + protected AsyncHolder<StageTwo> createStageTwoLoader(StageOne one) { + return haltIfClosed(new StageTwoProvider( + this.one = one, waveRef.getWaveId(), channel, isNewWave, idGenerator, profiles) { + // Kune patch @Override - protected Element createWaveHolder() { - return wavePanelElement; + protected DomRenderer createRenderer() { + return KuneFullDomWaveRendererImpl.create(getConversations(), getProfileManager(), + getBlipDetailer(), getViewIdMapper(), getBlipQueue(), getThreadReadStateMonitor(), + createViewFactories(), showParticipantsPanel); } + + // Warning: this run into issue #73 + // @Override + // protected void installFeatures() { + // WavePanelResourceLoader.loadCss(); + // // KuneWavePanelResourceLoader.loadCss(); + // } }); } @@ -141,7 +168,7 @@ // Prepend an init wave flow onto the stage continuation. super.create(new Accessor<StageThree>() { @Override - public void use(final StageThree x) { + public void use(StageThree x) { onStageThreeLoaded(x, whenReady); } }); @@ -178,31 +205,64 @@ }); } - @Override - protected AsyncHolder<StageTwo> createStageTwoLoader(final StageOne one) { - return haltIfClosed(new StageTwoProvider( - this.one = one, waveRef, channel, isNewWave, idGenerator, profiles) { - // Kune patch - @Override - protected DomRenderer createRenderer() { - return KuneFullDomWaveRendererImpl.create(getConversations(), getProfileManager(), - getBlipDetailer(), getViewIdMapper(), getBlipQueue(), getThreadReadStateMonitor(), - createViewFactories(), showParticipantsPanel); - } + private void onStageThreeLoaded(StageThree x, Accessor<StageThree> whenReady) { + if (closed) { + // Stop the loading process. + return; + } + three = x; + if (isNewWave) { + initNewWave(x); + } else { + handleExistingWave(x); + } + wave = new WaveContext( + two.getWave(), two.getConversations(), two.getSupplement(), two.getReadMonitor()); + waveStore.add(wave); + whenReady.use(x); + } - // Warning: this run into issue #73 - // @Override - // protected void installFeatures() { - // WavePanelResourceLoader.loadCss(); - // // KuneWavePanelResourceLoader.loadCss(); - // } - }); + private void initNewWave(StageThree three) { + // Do the new-wave flow. + ModelAsViewProvider views = two.getModelAsViewProvider(); + BlipQueueRenderer blipQueue = two.getBlipQueue(); + ConversationView wave = two.getConversations(); + + // Force rendering to finish. + blipQueue.flush(); + BlipView blipUi = views.getBlipView(wave.getRoot().getRootThread().getFirstBlip()); + three.getEditActions().startEditing(blipUi); } - @Override - protected AsyncHolder<StageZero> createStageZeroLoader() { - return haltIfClosed(super.createStageZeroLoader()); + private void handleExistingWave(StageThree three) { + // If there's blip reference then focus on that blip. + String documentId = waveRef.getDocumentId(); + if (documentId != null) { + ModelAsViewProvider views = two.getModelAsViewProvider(); + BlipQueueRenderer blipQueue = two.getBlipQueue(); + ConversationView wave = two.getConversations(); + blipQueue.flush(); + // Find conversation + Conversation conversation; + if (waveRef.hasWaveletId()) { + String id = ModernIdSerialiser.INSTANCE.serialiseWaveletId(waveRef.getWaveletId()); + conversation = wave.getConversation(id); + } else { + // Unspecified wavelet means root. + conversation = wave.getRoot(); + } + if (conversation != null) { + // Find selected blip. + ConversationBlip blip = wave.getRoot().getBlip(documentId); + if (blip != null) { + BlipView blipUi = views.getBlipView(blip); + if (blipUi != null) { + two.getStageOne().getFocusFrame().focus(blipUi); } + } + } + } + } public void destroy() { if (wave != null) { @@ -210,27 +270,15 @@ wave = null; } if (three != null) { - try { three.getEditActions().stopEditing(); - } catch (final Exception e) { - Log.info("Some exception stoping editing", e); - } three = null; } if (two != null) { - try { two.getConnector().close(); - } catch (final Exception e) { - Log.info("Some exception closing connector", e); - } two = null; } if (one != null) { - try { one.getWavePanel().destroy(); - } catch (final Exception e) { - Log.info("Some exception destroying panel", e); - } one = null; } closed = true; @@ -241,41 +289,7 @@ * given provider. */ @SuppressWarnings("unchecked") // HALT is safe as a holder for any type - private <T> AsyncHolder<T> haltIfClosed(final AsyncHolder<T> provider) { + private <T> AsyncHolder<T> haltIfClosed(AsyncHolder<T> provider) { return closed ? (AsyncHolder<T>) HALT : provider; } - - private void handleExistingWave(final StageThree three) { - final BlipQueueRenderer blipQueue = two.getBlipQueue(); - blipQueue.flush(); - } - - private void initNewWave(final StageThree three) { - // Do the new-wave flow. - final ModelAsViewProvider views = two.getModelAsViewProvider(); - final BlipQueueRenderer blipQueue = two.getBlipQueue(); - final ConversationView wave = two.getConversations(); - - // Force rendering to finish. - blipQueue.flush(); - final BlipView blipUi = views.getBlipView(wave.getRoot().getRootThread().getFirstBlip()); - three.getEditActions().startEditing(blipUi); - } - - private void onStageThreeLoaded(final StageThree x, final Accessor<StageThree> whenReady) { - if (closed) { - // Stop the loading process. - return; - } - three = x; - if (isNewWave) { - initNewWave(x); - } else { - handleExistingWave(x); - } - wave = new WaveContext( - two.getWave(), two.getConversations(), two.getSupplement(), two.getReadMonitor()); - waveStore.add(wave); - whenReady.use(x); - } } Added: trunk/src/main/java/cc/kune/wave/client/KuneStagesProvider.java.seg =================================================================== --- trunk/src/main/java/cc/kune/wave/client/KuneStagesProvider.java.seg (rev 0) +++ trunk/src/main/java/cc/kune/wave/client/KuneStagesProvider.java.seg 2012-01-08 23:06:53 UTC (rev 1656) @@ -0,0 +1,295 @@ +// @formatter:off +/** + * Copyright 2010 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 cc.kune.wave.client; + +import org.waveprotocol.box.webclient.client.RemoteViewServiceMultiplexer; +import org.waveprotocol.box.webclient.client.StageTwoProvider; +import org.waveprotocol.box.webclient.search.WaveContext; +import org.waveprotocol.box.webclient.search.WaveStore; +import org.waveprotocol.wave.client.StageOne; +import org.waveprotocol.wave.client.StageThree; +import org.waveprotocol.wave.client.StageTwo; +import org.waveprotocol.wave.client.StageZero; +import org.waveprotocol.wave.client.Stages; +import org.waveprotocol.wave.client.account.ProfileManager; +import org.waveprotocol.wave.client.common.util.AsyncHolder; +import org.waveprotocol.wave.client.common.util.AsyncHolder.Accessor; +import org.waveprotocol.wave.client.common.util.LogicalPanel; +import org.waveprotocol.wave.client.editor.EditorStaticDeps; +import org.waveprotocol.wave.client.wavepanel.impl.WavePanelImpl; +import org.waveprotocol.wave.client.wavepanel.impl.edit.Actions; +import org.waveprotocol.wave.client.wavepanel.impl.edit.EditController; +import org.waveprotocol.wave.client.wavepanel.impl.edit.EditSession; +import org.waveprotocol.wave.client.wavepanel.impl.edit.KeepFocusInView; +import org.waveprotocol.wave.client.wavepanel.impl.focus.FocusFramePresenter; +import org.waveprotocol.wave.client.wavepanel.impl.indicator.ReplyIndicatorController; +import org.waveprotocol.wave.client.wavepanel.impl.menu.MenuController; +import org.waveprotocol.wave.client.wavepanel.impl.title.WaveTitleHandler; +import org.waveprotocol.wave.client.wavepanel.impl.toolbar.ToolbarSwitcher; +import org.waveprotocol.wave.client.wavepanel.view.BlipView; +import org.waveprotocol.wave.client.wavepanel.view.dom.ModelAsViewProvider; +import org.waveprotocol.wave.client.wavepanel.view.dom.full.BlipQueueRenderer; +import org.waveprotocol.wave.client.wavepanel.view.dom.full.DomRenderer; +import org.waveprotocol.wave.client.widget.popup.PopupChromeFactory; +import org.waveprotocol.wave.client.widget.popup.PopupFactory; +import org.waveprotocol.wave.model.conversation.Conversation; +import org.waveprotocol.wave.model.conversation.ConversationBlip; +import org.waveprotocol.wave.model.conversation.ConversationView; +import org.waveprotocol.wave.model.id.IdGenerator; +import org.waveprotocol.wave.model.id.ModernIdSerialiser; +import org.waveprotocol.wave.model.wave.ParticipantId; +import org.waveprotocol.wave.model.waveref.WaveRef; + +import cc.kune.common.shared.i18n.I18nTranslationService; + +import com.google.gwt.dom.client.Element; + +/** + * Stages for loading the undercurrent Wave Panel + * + * @author [email protected] (David Wang) + */ +public class KuneStagesProvider extends Stages { + + private final static AsyncHolder<Object> HALT = new AsyncHolder<Object>() { + @Override + public void call(Accessor<Object> accessor) { + // Never ready, so never notify the accessor. + } + }; + + private final Element wavePanelElement; + private final LogicalPanel rootPanel; + private final WaveRef waveRef; + private final RemoteViewServiceMultiplexer channel; + private final I18nTranslationService i18n; + private final IdGenerator idGenerator; + private final ProfileManager profiles; + private final WaveStore waveStore; + private final boolean isNewWave; + private final String localDomain; + + private final boolean showParticipantsPanel; + private boolean closed; + private StageOne one; + private StageTwo two; + private StageThree three; + private WaveContext wave; + + /** + * @param wavePanelElement The dom element to become the wave panel + * @param rootPanel A panel that this an ancestor of wavePanelElement. This is + * used for adopting to the GWT widget tree. + * @param waveRef the id of the wave to open. If null, it means, create a new + * wave. + * @param channel communication channel. + * @param isNewWave true if the wave is a new client-created wave + * @param idGenerator + */ + public KuneStagesProvider(Element wavePanelElement, LogicalPanel rootPanel, WaveRef waveRef, + RemoteViewServiceMultiplexer channel, IdGenerator idGenerator, ProfileManager profiles, + WaveStore store, boolean isNewWave, String localDomain, boolean showParticipantsPanel, I18nTranslationService i18n) { + this.wavePanelElement = wavePanelElement; + this.rootPanel = rootPanel; + this.waveRef = waveRef; + this.channel = channel; + this.idGenerator = idGenerator; + this.profiles = profiles; + this.waveStore = store; + this.isNewWave = isNewWave; + this.localDomain = localDomain; + this.showParticipantsPanel = showParticipantsPanel; + this.i18n = i18n; + } + + @Override + protected AsyncHolder<StageZero> createStageZeroLoader() { + return haltIfClosed(super.createStageZeroLoader()); + } + + @Override + protected AsyncHolder<StageOne> createStageOneLoader(StageZero zero) { + return haltIfClosed(new StageOne.DefaultProvider(zero) { + @Override + protected Element createWaveHolder() { + return wavePanelElement; + } + + @Override + protected LogicalPanel createWaveContainer() { + return rootPanel; + } + }); + } + + @Override + protected AsyncHolder<StageTwo> createStageTwoLoader(StageOne one) { + return haltIfClosed(new StageTwoProvider( + this.one = one, waveRef.getWaveId(), channel, isNewWave, idGenerator, profiles) { + // Kune patch + @Override + protected DomRenderer createRenderer() { + return KuneFullDomWaveRendererImpl.create(getConversations(), getProfileManager(), + getBlipDetailer(), getViewIdMapper(), getBlipQueue(), getThreadReadStateMonitor(), + createViewFactories(), showParticipantsPanel); + } + + // Warning: this run into issue #73 + // @Override + // protected void installFeatures() { + // WavePanelResourceLoader.loadCss(); + // // KuneWavePanelResourceLoader.loadCss(); + // } + }); + } + + @Override + protected AsyncHolder<StageThree> createStageThreeLoader(final StageTwo two) { + return haltIfClosed(new StageThree.DefaultProvider(this.two = two) { + @Override + protected void create(final Accessor<StageThree> whenReady) { + // Prepend an init wave flow onto the stage continuation. + super.create(new Accessor<StageThree>() { + @Override + public void use(StageThree x) { + onStageThreeLoaded(x, whenReady); + } + }); + } + + @Override + protected String getLocalDomain() { + return localDomain; + } + @Override + protected void install() { + EditorStaticDeps.setPopupProvider(PopupFactory.getProvider()); + EditorStaticDeps.setPopupChromeProvider(PopupChromeFactory.getProvider()); + + // Eagerly install some features. + final WavePanelImpl panel = stageTwo.getStageOne().getWavePanel(); + final FocusFramePresenter focus = stageTwo.getStageOne().getFocusFrame(); + final ParticipantId user = stageTwo.getSignedInUser(); + final ModelAsViewProvider models = stageTwo.getModelAsViewProvider(); + final ProfileManager profiles = stageTwo.getProfileManager(); + + final Actions actions = getEditActions(); + final EditSession edit = getEditSession(); + MenuController.install(actions, panel); + ToolbarSwitcher.install(stageTwo.getStageOne().getWavePanel(), getEditSession(), + getViewToolbar(), getEditToolbar()); + WaveTitleHandler.install(edit, models); + ReplyIndicatorController.install(actions, edit, panel); + EditController.install(focus, actions, panel); + KuneParticipantController.install(panel, models, profiles, getLocalDomain(), i18n); + KeepFocusInView.install(edit, panel); + stageTwo.getDiffController().upgrade(edit); + } + }); + } + + private void onStageThreeLoaded(StageThree x, Accessor<StageThree> whenReady) { + if (closed) { + // Stop the loading process. + return; + } + three = x; + if (isNewWave) { + initNewWave(x); + } else { + handleExistingWave(x); + } + wave = new WaveContext( + two.getWave(), two.getConversations(), two.getSupplement(), two.getReadMonitor()); + waveStore.add(wave); + whenReady.use(x); + } + + private void initNewWave(StageThree three) { + // Do the new-wave flow. + ModelAsViewProvider views = two.getModelAsViewProvider(); + BlipQueueRenderer blipQueue = two.getBlipQueue(); + ConversationView wave = two.getConversations(); + + // Force rendering to finish. + blipQueue.flush(); + BlipView blipUi = views.getBlipView(wave.getRoot().getRootThread().getFirstBlip()); + three.getEditActions().startEditing(blipUi); + } + + private void handleExistingWave(StageThree three) { + // If there's blip reference then focus on that blip. + String documentId = waveRef.getDocumentId(); + if (documentId != null) { + ModelAsViewProvider views = two.getModelAsViewProvider(); + BlipQueueRenderer blipQueue = two.getBlipQueue(); + ConversationView wave = two.getConversations(); + blipQueue.flush(); + // Find conversation + Conversation conversation; + if (waveRef.hasWaveletId()) { + String id = ModernIdSerialiser.INSTANCE.serialiseWaveletId(waveRef.getWaveletId()); + conversation = wave.getConversation(id); + } else { + // Unspecified wavelet means root. + conversation = wave.getRoot(); + } + if (conversation != null) { + // Find selected blip. + ConversationBlip blip = wave.getRoot().getBlip(documentId); + if (blip != null) { + BlipView blipUi = views.getBlipView(blip); + if (blipUi != null) { + two.getStageOne().getFocusFrame().focus(blipUi); + } + } + } + } + } + + public void destroy() { + if (wave != null) { + waveStore.remove(wave); + wave = null; + } + if (three != null) { + three.getEditActions().stopEditing(); + three = null; + } + if (two != null) { + two.getConnector().close(); + two = null; + } + if (one != null) { + one.getWavePanel().destroy(); + one = null; + } + closed = true; + } + + /** + * @return a halting provider if this stage is closed. Otherwise, returns the + * given provider. + */ + @SuppressWarnings("unchecked") // HALT is safe as a holder for any type + private <T> AsyncHolder<T> haltIfClosed(AsyncHolder<T> provider) { + return closed ? (AsyncHolder<T>) HALT : provider; + } +} Deleted: trunk/src/main/java/cc/kune/wave/client/KuneWaveResources.java =================================================================== --- trunk/src/main/java/cc/kune/wave/client/KuneWaveResources.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/wave/client/KuneWaveResources.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -1,41 +0,0 @@ -/* - * - * Copyright (C) 2007-2011 The kune development team (see CREDITS for details) - * This file is part of kune. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * - */ -package cc.kune.wave.client; - -import org.waveprotocol.wave.client.wavepanel.view.dom.full.TopConversationViewBuilder; - -import com.google.gwt.resources.client.ClientBundle; -import com.google.gwt.resources.client.ImageResource; -import com.google.gwt.resources.client.ImageResource.ImageOptions; -import com.google.gwt.resources.client.ImageResource.RepeatStyle; - -public class KuneWaveResources { - // Not used now - public interface Conversation extends ClientBundle { - // Note: the CSS file contains a gwt-image reference, so must be defined - // after the referenced images in this interface. - @Source("KuneConversation.css") - TopConversationViewBuilder.Css css(); - - @ImageOptions(repeatStyle = RepeatStyle.Horizontal) - @Source("toolbar_empty.png") - ImageResource emptyToolbar(); - } -} Deleted: trunk/src/main/java/cc/kune/wave/client/WaveClientClearEvent.java =================================================================== --- trunk/src/main/java/cc/kune/wave/client/WaveClientClearEvent.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/wave/client/WaveClientClearEvent.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -1,77 +0,0 @@ -/* - * - * Copyright (C) 2007-2011 The kune development team (see CREDITS for details) - * This file is part of kune. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * - */ -package cc.kune.wave.client; - -import com.google.gwt.event.shared.EventHandler; -import com.google.gwt.event.shared.GwtEvent; -import com.google.gwt.event.shared.HandlerRegistration; - -import com.google.gwt.event.shared.HasHandlers; - -public class WaveClientClearEvent extends GwtEvent<WaveClientClearEvent.WaveClientClearHandler> { - - public interface HasWaveClientClearHandlers extends HasHandlers { - HandlerRegistration addWaveClientClearHandler(WaveClientClearHandler handler); - } - - public interface WaveClientClearHandler extends EventHandler { - public void onWaveClientClear(WaveClientClearEvent event); - } - - private static final Type<WaveClientClearHandler> TYPE = new Type<WaveClientClearHandler>(); - - public static void fire(HasHandlers source) { - source.fireEvent(new WaveClientClearEvent()); - } - - public static Type<WaveClientClearHandler> getType() { - return TYPE; - } - - - public WaveClientClearEvent() { - } - - @Override - public Type<WaveClientClearHandler> getAssociatedType() { - return TYPE; - } - - @Override - protected void dispatch(WaveClientClearHandler handler) { - handler.onWaveClientClear(this); - } - - @Override - public boolean equals(Object obj) { - return super.equals(obj); - } - - @Override - public int hashCode() { - return super.hashCode(); - } - - @Override - public String toString() { - return "WaveClientClearEvent[" - + "]"; - } -} Added: trunk/src/main/java/cc/kune/wave/client/WaveClientClearEvent.java =================================================================== --- trunk/src/main/java/cc/kune/wave/client/WaveClientClearEvent.java (rev 0) +++ trunk/src/main/java/cc/kune/wave/client/WaveClientClearEvent.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -0,0 +1,77 @@ +/* + * + * Copyright (C) 2007-2011 The kune development team (see CREDITS for details) + * This file is part of kune. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ +package cc.kune.wave.client; + +import com.google.gwt.event.shared.EventHandler; +import com.google.gwt.event.shared.GwtEvent; +import com.google.gwt.event.shared.HandlerRegistration; + +import com.google.gwt.event.shared.HasHandlers; + +public class WaveClientClearEvent extends GwtEvent<WaveClientClearEvent.WaveClientClearHandler> { + + public interface HasWaveClientClearHandlers extends HasHandlers { + HandlerRegistration addWaveClientClearHandler(WaveClientClearHandler handler); + } + + public interface WaveClientClearHandler extends EventHandler { + public void onWaveClientClear(WaveClientClearEvent event); + } + + private static final Type<WaveClientClearHandler> TYPE = new Type<WaveClientClearHandler>(); + + public static void fire(HasHandlers source) { + source.fireEvent(new WaveClientClearEvent()); + } + + public static Type<WaveClientClearHandler> getType() { + return TYPE; + } + + + public WaveClientClearEvent() { + } + + @Override + public Type<WaveClientClearHandler> getAssociatedType() { + return TYPE; + } + + @Override + protected void dispatch(WaveClientClearHandler handler) { + handler.onWaveClientClear(this); + } + + @Override + public boolean equals(Object obj) { + return super.equals(obj); + } + + @Override + public int hashCode() { + return super.hashCode(); + } + + @Override + public String toString() { + return "WaveClientClearEvent[" + + "]"; + } +} Modified: trunk/src/main/java/cc/kune/wave/client/WaveClientManager.java =================================================================== --- trunk/src/main/java/cc/kune/wave/client/WaveClientManager.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/wave/client/WaveClientManager.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -20,17 +20,17 @@ package cc.kune.wave.client; import cc.kune.common.client.log.Log; +import cc.kune.core.client.events.UserSignInEvent; +import cc.kune.core.client.events.UserSignOutEvent; +import cc.kune.core.client.events.UserSignInEvent.UserSignInHandler; +import cc.kune.core.client.events.UserSignOutEvent.UserSignOutHandler; import cc.kune.core.client.rpcservices.AsyncCallbackSimple; import cc.kune.core.client.rpcservices.UserServiceAsync; import cc.kune.core.client.state.Session; import cc.kune.core.client.state.StateManager; import cc.kune.core.client.state.TokenMatcher; -import cc.kune.core.client.state.UserSignInEvent; -import cc.kune.core.client.state.UserSignInEvent.UserSignInHandler; -import cc.kune.core.client.state.UserSignOutEvent; -import cc.kune.core.client.state.UserSignOutEvent.UserSignOutHandler; import cc.kune.core.shared.dto.WaveClientParams; -import cc.kune.gspace.client.GSpaceArmor; +import cc.kune.gspace.client.armor.GSpaceArmor; import cc.kune.wave.client.inboxcount.InboxCountPresenter; import com.google.gwt.core.client.JavaScriptObject; Modified: trunk/src/main/java/cc/kune/wave/client/WaveParts.java =================================================================== --- trunk/src/main/java/cc/kune/wave/client/WaveParts.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/wave/client/WaveParts.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -19,8 +19,8 @@ */ package cc.kune.wave.client; -import cc.kune.core.client.init.AppStartEvent; -import cc.kune.core.client.init.AppStartEvent.AppStartHandler; +import cc.kune.core.client.events.AppStartEvent; +import cc.kune.core.client.events.AppStartEvent.AppStartHandler; import cc.kune.core.client.state.Session; import cc.kune.wave.client.inboxcount.InboxCountPresenter; Deleted: trunk/src/main/java/cc/kune/wave/client/WaveStatusIndicator.java =================================================================== --- trunk/src/main/java/cc/kune/wave/client/WaveStatusIndicator.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/wave/client/WaveStatusIndicator.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -1,92 +0,0 @@ -/* - * - * Copyright (C) 2007-2011 The kune development team (see CREDITS for details) - * This file is part of kune. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * - */ -package cc.kune.wave.client; - -import org.waveprotocol.box.webclient.client.ClientEvents; -import org.waveprotocol.box.webclient.client.events.NetworkStatusEvent; -import org.waveprotocol.box.webclient.client.events.NetworkStatusEventHandler; - -import cc.kune.common.client.actions.AbstractAction; -import cc.kune.common.client.actions.Action; -import cc.kune.common.client.actions.ActionEvent; -import cc.kune.common.client.actions.ui.descrip.IconLabelDescriptor; -import cc.kune.common.client.notify.NotifyUser; -import cc.kune.common.shared.i18n.I18nTranslationService; -import cc.kune.core.client.rpcservices.AsyncCallbackSimple; -import cc.kune.core.client.sitebar.SitebarActionsPresenter; -import cc.kune.core.client.sn.actions.SessionAction; -import cc.kune.core.client.state.Session; - -import com.google.inject.Inject; - -public class WaveStatusIndicator { - - public static class WaveStatusAction extends SessionAction { - - @Inject - public WaveStatusAction(final Session session, final I18nTranslationService i18n) { - super(session, true); - setVisible(false); - ClientEvents.get().addNetworkStatusEventHandler(new NetworkStatusEventHandler() { - private void goOnline() { - putValue(Action.NAME, ""); // i18n.t("Online")); - putValue(AbstractAction.STYLES, "k-sitebar-wave-status, k-sitebar-wave-status-online"); - setVisible(false); - NotifyUser.hideProgress(); - } - - @Override - public void onNetworkStatus(final NetworkStatusEvent event) { - switch (event.getStatus()) { - case CONNECTED: - case RECONNECTED: - session.check(new AsyncCallbackSimple<Void>() { - @Override - public void onSuccess(final Void result) { - goOnline(); - } - }); - break; - case DISCONNECTED: - NotifyUser.showProgress(i18n.t("Connecting")); - case RECONNECTING: - putValue(Action.NAME, i18n.t("Offline")); - putValue(AbstractAction.STYLES, "k-sitebar-wave-status, k-sitebar-wave-status-offline"); - setVisible(true); - break; - } - } - }); - } - - @Override - public void actionPerformed(final ActionEvent event) { - // Do nothing - } - - } - - @Inject - public WaveStatusIndicator(final SitebarActionsPresenter sitebar, final WaveStatusAction action) { - final IconLabelDescriptor status = new IconLabelDescriptor(action); - status.setPosition(1); - sitebar.getRightToolbar().add(status); - } -} Added: trunk/src/main/java/cc/kune/wave/client/WaveStatusIndicator.java =================================================================== --- trunk/src/main/java/cc/kune/wave/client/WaveStatusIndicator.java (rev 0) +++ trunk/src/main/java/cc/kune/wave/client/WaveStatusIndicator.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -0,0 +1,92 @@ +/* + * + * Copyright (C) 2007-2011 The kune development team (see CREDITS for details) + * This file is part of kune. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ +package cc.kune.wave.client; + +import org.waveprotocol.box.webclient.client.ClientEvents; +import org.waveprotocol.box.webclient.client.events.NetworkStatusEvent; +import org.waveprotocol.box.webclient.client.events.NetworkStatusEventHandler; + +import cc.kune.common.client.actions.AbstractAction; +import cc.kune.common.client.actions.Action; +import cc.kune.common.client.actions.ActionEvent; +import cc.kune.common.client.actions.ui.descrip.IconLabelDescriptor; +import cc.kune.common.client.notify.NotifyUser; +import cc.kune.common.shared.i18n.I18nTranslationService; +import cc.kune.core.client.rpcservices.AsyncCallbackSimple; +import cc.kune.core.client.sitebar.SitebarActionsPresenter; +import cc.kune.core.client.sn.actions.SessionAction; +import cc.kune.core.client.state.Session; + +import com.google.inject.Inject; + +public class WaveStatusIndicator { + + public static class WaveStatusAction extends SessionAction { + + @Inject + public WaveStatusAction(final Session session, final I18nTranslationService i18n) { + super(session, true); + setVisible(false); + ClientEvents.get().addNetworkStatusEventHandler(new NetworkStatusEventHandler() { + private void goOnline() { + putValue(Action.NAME, ""); // i18n.t("Online")); + putValue(AbstractAction.STYLES, "k-sitebar-wave-status, k-sitebar-wave-status-online"); + setVisible(false); + NotifyUser.hideProgress(); + } + + @Override + public void onNetworkStatus(final NetworkStatusEvent event) { + switch (event.getStatus()) { + case CONNECTED: + case RECONNECTED: + session.check(new AsyncCallbackSimple<Void>() { + @Override + public void onSuccess(final Void result) { + goOnline(); + } + }); + break; + case DISCONNECTED: + NotifyUser.showProgress(i18n.t("Connecting")); + case RECONNECTING: + putValue(Action.NAME, i18n.t("Offline")); + putValue(AbstractAction.STYLES, "k-sitebar-wave-status, k-sitebar-wave-status-offline"); + setVisible(true); + break; + } + } + }); + } + + @Override + public void actionPerformed(final ActionEvent event) { + // Do nothing + } + + } + + @Inject + public WaveStatusIndicator(final SitebarActionsPresenter sitebar, final WaveStatusAction action) { + final IconLabelDescriptor status = new IconLabelDescriptor(action); + status.setPosition(1); + sitebar.getRightToolbar().add(status); + } +} Modified: trunk/src/main/java/cc/kune/wave/client/inboxcount/InboxCountPresenter.java =================================================================== --- trunk/src/main/java/cc/kune/wave/client/inboxcount/InboxCountPresenter.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/wave/client/inboxcount/InboxCountPresenter.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -29,9 +29,9 @@ import cc.kune.core.client.events.InboxUnreadUpdatedEvent; import cc.kune.core.client.events.NewUserRegisteredEvent; import cc.kune.core.client.events.SndClickEvent; +import cc.kune.core.client.events.UserSignInOrSignOutEvent; +import cc.kune.core.client.events.UserSignInOrSignOutEvent.UserSignInOrSignOutHandler; import cc.kune.core.client.state.Session; -import cc.kune.core.client.state.UserSignInOrSignOutEvent; -import cc.kune.core.client.state.UserSignInOrSignOutEvent.UserSignInOrSignOutHandler; import com.google.gwt.event.shared.EventBus; import com.google.gwt.user.client.Timer; Copied: trunk/src/main/java/cc/kune/wave/client/resources/KuneConversation.css (from rev 1655, trunk/src/main/java/cc/kune/wave/client/KuneConversation.css) =================================================================== --- trunk/src/main/java/cc/kune/wave/client/resources/KuneConversation.css (rev 0) +++ trunk/src/main/java/cc/kune/wave/client/resources/KuneConversation.css 2012-01-08 23:06:53 UTC (rev 1656) @@ -0,0 +1,31 @@ +/* + * CSS for conversations. + * + * Author: [email protected] (Reuben Kan) + */ +.fixedSelf { + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; + z-index: 0; +} + +.fixedThread { + /* + * Allow scrolling. Also, keep the scrollbar there permanently, so that content does not get + * horizontally resized by the addition and removal of a scrollbar. + */ + overflow-y: scroll; + /* position: absolute; */ /* position: relative; */ + /* top: 24px; */ + top: 0; + /* left: 0; */ /* right: 0; */ /* bottom: 0; */ + /* Layout under siblings (participant panel etc). */ + z-index: -1; +} + +@sprite .toolbar { + gwt-image: 'emptyToolbar'; +} Copied: trunk/src/main/java/cc/kune/wave/client/resources/KuneWaveResources.java (from rev 1655, trunk/src/main/java/cc/kune/wave/client/KuneWaveResources.java) =================================================================== --- trunk/src/main/java/cc/kune/wave/client/resources/KuneWaveResources.java (rev 0) +++ trunk/src/main/java/cc/kune/wave/client/resources/KuneWaveResources.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -0,0 +1,41 @@ +/* + * + * Copyright (C) 2007-2011 The kune development team (see CREDITS for details) + * This file is part of kune. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ +package cc.kune.wave.client.resources; + +import org.waveprotocol.wave.client.wavepanel.view.dom.full.TopConversationViewBuilder; + +import com.google.gwt.resources.client.ClientBundle; +import com.google.gwt.resources.client.ImageResource; +import com.google.gwt.resources.client.ImageResource.ImageOptions; +import com.google.gwt.resources.client.ImageResource.RepeatStyle; + +public class KuneWaveResources { + // Not used now + public interface Conversation extends ClientBundle { + // Note: the CSS file contains a gwt-image reference, so must be defined + // after the referenced images in this interface. + @Source("KuneConversation.css") + TopConversationViewBuilder.Css css(); + + @ImageOptions(repeatStyle = RepeatStyle.Horizontal) + @Source("toolbar_empty.png") + ImageResource emptyToolbar(); + } +} Copied: trunk/src/main/java/cc/kune/wave/client/resources/toolbar_empty.png (from rev 1655, trunk/src/main/java/cc/kune/wave/client/toolbar_empty.png) =================================================================== (Binary files differ) Deleted: trunk/src/main/java/cc/kune/wave/client/toolbar_empty.png =================================================================== (Binary files differ) Modified: trunk/src/main/java/cc/kune/wave/server/CustomUserRegistrationServlet.java =================================================================== --- trunk/src/main/java/cc/kune/wave/server/CustomUserRegistrationServlet.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/wave/server/CustomUserRegistrationServlet.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -44,7 +44,7 @@ /** * The user registration servlet allows new users to register accounts. - * + * * @author [email protected] (Joseph Gentle) */ @SuppressWarnings("serial") @@ -53,17 +53,18 @@ private final AccountStore accountStore; private final String domain; - // private final WelcomeRobot welcomeBot; + private final boolean registrationDisabled; private final Log LOG = Log.get(CustomUserRegistrationServlet.class); @Inject public CustomUserRegistrationServlet(AccountStore accountStore, - @Named(CoreSettings.WAVE_SERVER_DOMAIN) String domain) { - //, WelcomeRobot welcomeBot) { + @Named(CoreSettings.WAVE_SERVER_DOMAIN) String domain, + @Named(CoreSettings.DISABLE_REGISTRATION) boolean registrationDisabled) { this.accountStore = accountStore; this.domain = domain; // this.welcomeBot = welcomeBot; + this.registrationDisabled = registrationDisabled; } @Override @@ -71,26 +72,29 @@ writeRegistrationPage("", AuthenticationServlet.RESPONSE_STATUS_NONE, req.getLocale(), resp); } - @SuppressWarnings("unchecked") @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws IOException { req.setCharacterEncoding("UTF-8"); + String message = null; + String responseType; String password = req.getParameter(HttpRequestBasedCallbackHandler.PASSWORD_FIELD); if (password == null) { // Register the user with an empty password. password = ""; } + if (!registrationDisabled) { final PasswordDigest passwordDigest = new PasswordDigest(password.toCharArray()); - String message = + message = tryCreateUser(req.getParameter(HttpRequestBasedCallbackHandler.ADDRESS_FIELD), passwordDigest); - String responseType = AuthenticationServlet.RESPONSE_STATUS_SUCCESS; + } - if (message != null) { + if (message != null || registrationDisabled) { resp.setStatus(HttpServletResponse.SC_FORBIDDEN); responseType = AuthenticationServlet.RESPONSE_STATUS_FAILED; } else { message = "Registration complete."; resp.setStatus(HttpServletResponse.SC_OK); + responseType = AuthenticationServlet.RESPONSE_STATUS_SUCCESS; } writeRegistrationPage(message, responseType, req.getLocale(), resp); @@ -101,7 +105,6 @@ * returns a string containing an error message. On success, returns null. */ public String tryCreateUser(String username, final PasswordDigest passwordDigest) { // NOPMD by vjrj on 27/04/11 8:36 - final String message = null; ParticipantId id = null; try { @@ -159,6 +162,6 @@ dest.setCharacterEncoding("UTF-8"); dest.setContentType("text/html;charset=utf-8"); UserRegistrationPage.write(dest.getWriter(), new GxpContext(locale), domain, message, - responseType); + responseType, registrationDisabled); } } Deleted: trunk/src/main/java/cc/kune/wave/server/KuneAgent.java =================================================================== --- trunk/src/main/java/cc/kune/wave/server/KuneAgent.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/wave/server/KuneAgent.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -1,193 +0,0 @@ -/* - * - * Copyright (C) 2007-2011 The kune development team (see CREDITS for details) - * This file is part of kune. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * - */ -package cc.kune.wave.server; - -import java.net.URL; -import java.util.HashSet; -import java.util.logging.Logger; - -import javax.annotation.Nonnull; - -import org.waveprotocol.box.server.robots.agent.AbstractBaseRobotAgent; -import org.waveprotocol.wave.model.id.WaveId; -import org.waveprotocol.wave.model.id.WaveletId; -import org.waveprotocol.wave.model.wave.ParticipantId; -import org.waveprotocol.wave.model.waveref.WaveRef; - -import com.google.inject.Inject; -import com.google.inject.Injector; -import com.google.inject.Singleton; -import com.google.wave.api.Wavelet; - -@SuppressWarnings("serial") -@Singleton -public class KuneAgent extends AbstractBaseRobotAgent implements KuneWaveService { - - private static final Logger LOG = Logger.getLogger(KuneAgent.class.getName()); - - private static final String NO_TITLE = ""; - public static final String ROBOT_URI = AGENT_PREFIX_URI + "/kune-agent"; - - @Inject - public KuneAgent(final Injector injector) { - super(injector); - } - - // public KuneAgent(final String waveDomain, final AccountStore accountStore, - // final TokenGenerator tokenGenerator, final ServerFrontendAddressHolder - // frontendAddressHolder) { - // super(waveDomain, accountStore, tokenGenerator, frontendAddressHolder); - // } - - @Override - public void addGadget(final WaveRef waveName, final String author, final URL gadgetUrl) { - // TODO Auto-generated method stub - - } - - @Override - public void addParticipants(final WaveRef waveName, final String author, final String userWhoAdd, - final String... newParticipants) { - // TODO Auto-generated method stub - - } - - @Override - public WaveRef createWave(final String message, final ParticipantId... participants) { - return createWave(NO_TITLE, message, participants); - } - - @Override - public WaveRef createWave(@Nonnull final String title, final String message, - @Nonnull final ParticipantId... participantsArray) { - return createWave(title, message, WITHOUT_GADGET, participantsArray); - } - - @Override - public WaveRef createWave(final String title, final String message, final String... participantsArray) { - // TODO Auto-generated method stub - return null; - } - - @Override - public WaveRef createWave(final String title, final String message, final String waveIdToCopy, - final URL gadgetUrl, final ParticipantId... participantsArray) { - // TODO Auto-generated method stub - return null; - } - - @Override - public WaveRef createWave(final String title, final String message, final URL gadgetUrl, - final ParticipantId... participantsArray) { - // super.newWave(getWaveDomain(), participantsArray); - final HashSet<String> parts = new HashSet<String>(); - for (final ParticipantId part : participantsArray) { - parts.add(part.getAddress()); - } - final Wavelet wave = newWave(getWaveDomain(), parts); - return WaveRef.of(wave.getWaveId(), wave.getWaveletId()); - } - - @Override - public void delParticipants(final WaveRef waveName, final String whoDel, final String... participants) { - // TODO Auto-generated method stub - - } - - @Override - public Wavelet fetchWave(final WaveId waveId, final WaveletId waveletId, final String author) { - // TODO Auto-generated method stub - return null; - } - - @Override - public Wavelet fetchWave(final WaveRef waveRef, final String author) { - // // Preconditions.checkNotNull(author); - // RobotAccountData account = null; - // final String rpcUrl = "http://" + getFrontEndAddress() + "/robot/rpc"; - // try { - // account = getAccountStore().getAccount( - // ParticipantId.ofUnsafe(getRobotId() + "@" + getWaveDomain())).asRobot(); - // } catch (final PersistenceException e) { - // LOG.log(Level.WARNING, "Cannot fetch account data for robot id: " + - // getRobotId(), e); - // } - // if (account != null) { - // setupOAuth(account.getId().getAddress(), account.getConsumerSecret(), - // rpcUrl); - // try { - // return super.fetchWavelet(waveRef.getWaveId(), waveRef.getWaveletId(), - // "http://" - // + getFrontEndAddress() + "/robot/rpc"); - // } catch (final IOException e) { - // e.printStackTrace(); - // return null; - // } - // } - return null; - } - - @Override - public String getRobotId() { - return "kune-agent"; - } - - @Override - protected String getRobotName() { - return "Kune Agent"; - } - - @Override - public String getRobotUri() { - return ROBOT_URI; - } - - @Override - public boolean isParticipant(final Wavelet wavelet, final String user) { - // TODO Auto-generated method stub - return false; - } - - @Override - public String render(final Wavelet wavelet) { - // TODO Auto-generated method stub - return null; - } - - @Override - public String render(final WaveRef waveRef, final String author) { - // TODO Auto-generated method stub - return null; - } - - @Override - public void setGadgetProperty(final WaveRef waveletName, final String author, final URL gadgetUrl, - final String someProperty, final String someValue) { - // TODO Auto-generated method stub - - } - - @Override - public void setTitle(final WaveRef waveName, final String title, final String author) { - // TODO Auto-generated method stub - - } - -} Deleted: trunk/src/main/java/cc/kune/wave/server/KuneWaveService.java =================================================================== --- trunk/src/main/java/cc/kune/wave/server/KuneWaveService.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/wave/server/KuneWaveService.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -1,68 +0,0 @@ -/* - * - * Copyright (C) 2007-2011 The kune development team (see CREDITS for details) - * This file is part of kune. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * - */ -package cc.kune.wave.server; - -import java.net.URL; - -import org.waveprotocol.wave.model.id.WaveId; -import org.waveprotocol.wave.model.id.WaveletId; -import org.waveprotocol.wave.model.wave.ParticipantId; -import org.waveprotocol.wave.model.waveref.WaveRef; - -import com.google.wave.api.Wavelet; - -public interface KuneWaveService { - public static final String NO_MESSAGE = ""; - public static final String NO_TITLE = ""; - public static final URL WITHOUT_GADGET = null; - - void addGadget(WaveRef waveName, String author, URL gadgetUrl); - - void addParticipants(WaveRef waveName, String author, String userWhoAdd, String... newParticipants); - - WaveRef createWave(String message, ParticipantId... participants); - - WaveRef createWave(String title, String message, ParticipantId... participantsArray); - - WaveRef createWave(String title, String message, String... participantsArray); - - WaveRef createWave(String title, String message, String waveIdToCopy, URL gadgetUrl, - ParticipantId... participantsArray); - - WaveRef createWave(String title, String message, URL gadgetUrl, ParticipantId... participantsArray); - - void delParticipants(WaveRef waveName, String whoDel, String... participants); - - Wavelet fetchWave(WaveId waveId, WaveletId waveletId, String author); - - Wavelet fetchWave(WaveRef waveRef, String author); - - boolean isParticipant(Wavelet wavelet, String user); - - String render(Wavelet wavelet); - - String render(WaveRef waveRef, String author); - - void setGadgetProperty(WaveRef waveletName, String author, URL gadgetUrl, String someProperty, - String someValue); - - void setTitle(WaveRef waveName, String title, String author); - -} Deleted: trunk/src/main/java/cc/kune/wave/server/KuneWaveServiceDefault.java =================================================================== --- trunk/src/main/java/cc/kune/wave/server/KuneWaveServiceDefault.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/wave/server/KuneWaveServiceDefault.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -1,491 +0,0 @@ -/* - * - * Copyright (C) 2007-2011 The kune development team (see CREDITS for details) - * This file is part of kune. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * - */ -package cc.kune.wave.server; - -import java.net.URL; -import java.util.Arrays; -import java.util.Collections; -import java.util.HashMap; -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; -import java.util.Set; -import java.util.TreeSet; - -import javax.annotation.Nonnull; - -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.waveprotocol.box.server.CoreSettings; -import org.waveprotocol.box.server.robots.OperationContextImpl; -import org.waveprotocol.box.server.robots.OperationServiceRegistry; -import org.waveprotocol.box.server.robots.util.ConversationUtil; -import org.waveprotocol.box.server.robots.util.OperationUtil; -import org.waveprotocol.box.server.waveserver.WaveletProvider; -import org.waveprotocol.box.server.waveserver.WaveletProvider.SubmitRequestListener; -import org.waveprotocol.wave.model.id.InvalidIdException; -import org.waveprotocol.wave.model.id.WaveId; -import org.waveprotocol.wave.model.id.WaveletId; -import org.waveprotocol.wave.model.version.HashedVersion; -import org.waveprotocol.wave.model.wave.ParticipantId; -import org.waveprotocol.wave.model.waveref.WaveRef; - -import cc.kune.common.shared.utils.TextUtils; -import cc.kune.core.client.errors.DefaultException; - -import com.google.common.collect.ImmutableMap; -import com.google.common.collect.Lists; -import com.google.common.collect.Maps; -import com.google.inject.Inject; -import com.google.inject.name.Named; -import com.google.wave.api.Annotation; -import com.google.wave.api.ApiIdSerializer; -import com.google.wave.api.Blip; -import com.google.wave.api.BlipContent; -import com.google.wave.api.BlipData; -import com.google.wave.api.BlipThread; -import com.google.wave.api.Element; -import com.google.wave.api.ElementType; -import com.google.wave.api.FormElement; -import com.google.wave.api.Gadget; -import com.google.wave.api.Image; -import com.google.wave.api.JsonRpcConstant.ParamsProperty; -import com.google.wave.api.JsonRpcResponse; -import com.google.wave.api.Line; -import com.google.wave.api.OperationQueue; -import com.google.wave.api.OperationRequest; -import com.google.wave.api.OperationRequest.Parameter; -import com.google.wave.api.Participants; -import com.google.wave.api.ProtocolVersion; -import com.google.wave.api.Range; -import com.google.wave.api.Wavelet; -import com.google.wave.api.data.converter.EventDataConverterManager; -import com.google.wave.api.impl.DocumentModifyAction; -import com.google.wave.api.impl.DocumentModifyAction.BundledAnnotation; -import com.google.wave.api.impl.DocumentModifyAction.ModifyHow; -import com.google.wave.api.impl.DocumentModifyQuery; -import com.google.wave.api.impl.WaveletData; -import com.google.wave.splash.rpc.ClientAction; -import com.google.wave.splash.web.template.WaveRenderer; - -public class KuneWaveServiceDefault implements KuneWaveService { - public static final Log LOG = LogFactory.getLog(KuneWaveServiceDefault.class); - - // See: DocumentModifyServiceTest - private static final String NO_ANNOTATION_KEY = null; - private static final List<BundledAnnotation> NO_BUNDLED_ANNOTATIONS = Collections.emptyList(); - private static final List<String> NO_VALUES = Collections.<String> emptyList(); - private static final String NO_WAVE_TO_COPY = null; - - /** - * - * Copy blips - * - * @param fromBlip - * @param toBlip - * - * @author [email protected] (Yuri Zelikov) - * - */ - public static void copyWavelet(final Blip fromBlip, final Blip toBlip) { - for (final BlipContent blipContent : fromBlip.all().values()) { - toBlip.append(blipContent); - } - // Deep copy annotations - for (final Annotation annotation : fromBlip.getAnnotations()) { - final Range range = annotation.getRange(); - try { - toBlip.range(range.getStart() + 1, range.getEnd() + 1).annotate(annotation.getName(), - annotation.getValue()); - } catch (final IndexOutOfBoundsException e) { - // Don't copy faulty annotations - } - } - } - - public static void copyWaveletElements(final Blip fromBlip, final Blip toBlip) { - // Deep copy form elements. - // DocumentModifyService don't permit this: - // "Can't insert other elements than text and gadgets at the moment"); - for (final Entry<Integer, Element> entry : fromBlip.getElements().entrySet()) { - final ElementType type = entry.getValue().getType(); - Element result = null; - if (FormElement.getFormElementTypes().contains(type)) { - result = new FormElement(type, entry.getValue().getProperties()); - } else if (type == ElementType.GADGET) { - result = new Gadget(entry.getValue().getProperties()); - } else if (type == ElementType.IMAGE) { - result = new Image(entry.getValue().getProperties()); - } else if (type == ElementType.LINE) { - result = new Line(entry.getValue().getProperties()); - } else { - result = new Element(type, entry.getValue().getProperties()); - } - toBlip.append(result); - } - } - - private final ConversationUtil conversationUtil; - private final EventDataConverterManager converterManager; - private final String domain; - private final OperationServiceRegistry operationRegistry; - private final ParticipantUtils participantUtils; - private final WaveletProvider waveletProvider; - private final WaveRenderer waveRenderer; - - @Inject - public KuneWaveServiceDefault(final EventDataConverterManager converterManager, - @Named("DataApiRegistry") final OperationServiceRegistry operationRegistry, - final WaveletProvider waveletProvider, final ConversationUtil conversationUtil, - final ParticipantUtils participantUtils, final WaveRenderer waveRenderer, - @Named(CoreSettings.WAVE_SERVER_DOMAIN) final String domain) { - this.converterManager = converterManager; - this.waveletProvider = waveletProvider; - this.conversationUtil = conversationUtil; - this.operationRegistry = operationRegistry; - this.participantUtils = participantUtils; - this.waveRenderer = waveRenderer; - this.domain = domain; - } - - @Override - public void addGadget(final WaveRef waveName, final String author, final URL gadgetUrl) { - // See DocumentModifyServiceTest - final List<Element> elementsIn = Lists.newArrayListWithCapacity(1); - final Map<String, String> properties = Maps.newHashMap(); - properties.put(Gadget.URL, gadgetUrl.toString()); - properties.put(Gadget.AUTHOR, participantUtils.of(author).getAddress()); - final Gadget gadget = new Gadget(properties); - - elementsIn.add(gadget); - final Wavelet wavelet = fetchWave(waveName, author); - final OperationQueue opQueue = new OperationQueue(); - final Blip rootBlip = wavelet.getRootBlip(); - - final OperationRequest operationRequest = opQueue.modifyDocument(rootBlip); - operationRequest.addParameter(Parameter.of(ParamsProperty.MODIFY_ACTION, new DocumentModifyAction( - ModifyHow.INSERT, NO_VALUES, NO_ANNOTATION_KEY, elementsIn, NO_BUNDLED_ANNOTATIONS, false))); - operationRequest.addParameter(Parameter.of(ParamsProperty.INDEX, 1)); - doOperation(author, opQueue, "add gadget"); - } - - @Override - public void addParticipants(final WaveRef waveName, final String author, final String userWhoAdds, - final String... newLocalParticipants) { - final Wavelet wavelet = fetchWave(waveName, author); - final Participants currentParticipants = wavelet.getParticipants(); - // Removing duplicates - for (final String participant : toSet(newLocalParticipants)) { - final String newPartWithDomain = participantUtils.of(participant).toString(); - if (!currentParticipants.contains(newPartWithDomain)) { - // FIXME This is very costly. Seems like only one participant per - // opQueue is added (try to - // fix this in WAVE) - final OperationQueue opQueue = new OperationQueue(); - LOG.debug("Adding as participant: " + newPartWithDomain); - opQueue.addParticipantToWavelet(wavelet, newPartWithDomain); - final String whoAdd = wavelet.getParticipants().contains(participantUtils.of(userWhoAdds)) ? userWhoAdds - : author; - doOperation(whoAdd, opQueue, "add participant"); - } - } - } - - @Override - public WaveRef createWave(final String message, final ParticipantId... participants) { - return createWave(NO_TITLE, message, participants); - } - - @Override - public WaveRef createWave(@Nonnull final String title, final String message, - @Nonnull final ParticipantId... participantsArray) { - return createWave(title, message, WITHOUT_GADGET, participantsArray); - } - - @Override - public WaveRef createWave(final String title, final String message, final String... participantsArray) { - return createWave(title, message, participantUtils.listFrom(participantsArray)); - } - - @Override - public WaveRef createWave(@Nonnull final String title, final String message, - final String waveIdToCopy, final URL gadgetUrl, @Nonnull final ParticipantId... participantsArray) { - String newWaveId = null; - String newWaveletId = null; - final Set<String> participants = new HashSet<String>(); - for (final ParticipantId participant : participantsArray) { - participants.add(participant.toString()); - } - final ParticipantId user = participantsArray[0]; - final OperationQueue opQueue = new OperationQueue(); - final Wavelet newWavelet = opQueue.createWavelet(domain, participants); - opQueue.setTitleOfWavelet(newWavelet, title); - final Blip rootBlip = newWavelet.getRootBlip(); - rootBlip.append(new com.google.wave.api.Markup(message).getText()); - - if (waveIdToCopy != NO_WAVE_TO_COPY && TextUtils.notEmpty(waveIdToCopy)) { - try { - WaveId copyWaveId; - copyWaveId = WaveId.ofChecked(domain, waveIdToCopy); - final Wavelet waveletToCopy = fetchWave(copyWaveId, WaveletId.of(domain, "conv+root"), - participantsArray[0].toString()); - if (waveletToCopy != null) { - copyWavelet(waveletToCopy.getRootBlip(), rootBlip); - } - } catch (final InvalidIdException e) { - LOG.error("Error copying wave content", e); - } catch (final DefaultException e2) { - LOG.error("Error copying wave content", e2); - } - } - - if (gadgetUrl != WITHOUT_GADGET) { - final Gadget gadget = new Gadget(gadgetUrl.toString()); - rootBlip.append(gadget); - } - - final OperationContextImpl context = new OperationContextImpl(waveletProvider, - converterManager.getEventDataConverter(ProtocolVersion.DEFAULT), conversationUtil); - for (final OperationRequest req : opQueue.getPendingOperations()) { - OperationUtil.executeOperation(req, operationRegistry, context, user); - final String reqId = req.getId(); - final JsonRpcResponse response = context.getResponse(reqId); - if (response != null) { - if (response.isError()) { - onFailure(context.getResponse(reqId).getErrorMessage()); - } else { - final Object responseWaveId = response.getData().get(ParamsProperty.WAVE_ID); - final Object responseWaveletId = response.getData().get(ParamsProperty.WAVELET_ID); - if (responseWaveId != null && responseWaveletId != null) { - // This is serialized use - // ApiIdSerializer.instance().deserialiseWaveId (see - // WaveService) - newWaveId = (String) responseWaveId; - newWaveletId = (String) responseWaveletId; - } - } - } - } - OperationUtil.submitDeltas(context, waveletProvider, new SubmitRequestListener() { - @Override - public void onFailure(final String arg0) { - KuneWaveServiceDefault.this.onFailure("Wave creation failed, onFailure: " + arg0); - } - - @Override - public void onSuccess(final int arg0, final HashedVersion arg1, final long arg2) { - LOG.info("Wave creation success: " + arg1); - } - }); - LOG.info("WaveId: " + newWaveId + " waveletId: " + newWaveletId); - WaveRef wavename; - try { - wavename = WaveRef.of(ApiIdSerializer.instance().deserialiseWaveId(newWaveId), - ApiIdSerializer.instance().deserialiseWaveletId(newWaveletId)); - } catch (final InvalidIdException e) { - throw new DefaultException("Error getting wave id"); - } - return wavename; - } - - @Override - public WaveRef createWave(@Nonnull final String title, final String message, final URL gadgetUrl, - @Nonnull final ParticipantId... participantsArray) { - return createWave(title, message, NO_WAVE_TO_COPY, gadgetUrl, participantsArray); - } - - @Override - public void delParticipants(final WaveRef waveName, final String whoDel, - final String... participantsToDel) { - final Wavelet wavelet = fetchWave(waveName, whoDel); - final Participants currentParticipants = wavelet.getParticipants(); - final Set<String> set = toSet(participantsToDel); - LOG.debug("Removing participants: " + set.toString()); - for (final String participant : set) { - // FIXME Seems like only one participant per opQueue is added (try to fix - // this in WAVE) - final String partWithDomain = participantUtils.of(participant).toString(); - if (currentParticipants.contains(partWithDomain)) { - final OperationQueue opQueue = new OperationQueue(); - LOG.debug("Removing as participant: " + partWithDomain); - opQueue.removeParticipantFromWavelet(wavelet, partWithDomain); - doOperation(whoDel, opQueue, "del participant"); - } - } - } - - private void doOperation(final String author, final OperationQueue opQueue, final String logComment) { - // FIXME: do here a callback!!! - final OperationContextImpl context = new OperationContextImpl(waveletProvider, - converterManager.getEventDataConverter(ProtocolVersion.DEFAULT), conversationUtil); - for (final OperationRequest request : opQueue.getPendingOperations()) { - // final OperationRequest request = opQueue.getPendingOperations().get(0); - OperationUtil.executeOperation(request, operationRegistry, context, participantUtils.of(author)); - final String reqId = request.getId(); - final JsonRpcResponse response = context.getResponse(reqId); - if (response != null && response.isError()) { - onFailure(context.getResponse(reqId).getErrorMessage()); - } - OperationUtil.submitDeltas(context, waveletProvider, new SubmitRequestListener() { - @Override - public void onFailure(final String arg0) { - KuneWaveServiceDefault.this.onFailure("Wave " + logComment + " failed, onFailure: " + arg0); - } - - @Override - public void onSuccess(final int arg0, final HashedVersion arg1, final long arg2) { - LOG.info("Wave " + logComment + " success: " + arg1); - } - }); - } - } - - public void doOperations(final WaveRef waveName, final String author, final OperationQueue opQueue, - final SubmitRequestListener listener) { - final OperationContextImpl context = new OperationContextImpl(waveletProvider, - converterManager.getEventDataConverter(ProtocolVersion.DEFAULT), conversationUtil); - for (final OperationRequest req : opQueue.getPendingOperations()) { - OperationUtil.executeOperation(req, operationRegistry, context, participantUtils.of(author)); - } - OperationUtil.submitDeltas(context, waveletProvider, listener); - } - - @Override - public Wavelet fetchWave(final WaveId waveId, final WaveletId waveletId, final String author) { - final OperationQueue opQueue = new OperationQueue(); - opQueue.fetchWavelet(waveId, waveletId); - Wavelet wavelet = null; - final OperationContextImpl context = new OperationContextImpl(waveletProvider, - converterManager.getEventDataConverter(ProtocolVersion.DEFAULT), conversationUtil); - final OperationRequest request = opQueue.getPendingOperations().get(0); - OperationUtil.executeOperation(request, operationRegistry, context, participantUtils.of(author)); - final String reqId = request.getId(); - final JsonRpcResponse response = context.getResponse(reqId); - if (response != null && response.isError()) { - onFailure(context.getResponse(reqId).getErrorMessage()); - } else { - // Duplicate code from WaveService - assert response != null; - final WaveletData waveletData = (WaveletData) response.getData().get(ParamsProperty.WAVELET_DATA); - final Map<String, Blip> blips = new HashMap<String, Blip>(); - final Map<String, BlipThread> threads = new HashMap<String, BlipThread>(); - wavelet = Wavelet.deserialize(opQueue, blips, threads, waveletData); - - // Deserialize threads. - @SuppressWarnings("unchecked") - final Map<String, BlipThread> tempThreads = (Map<String, BlipThread>) response.getData().get( - ParamsProperty.THREADS); - for (final Map.Entry<String, BlipThread> entry : tempThreads.entrySet()) { - final BlipThread thread = entry.getValue(); - threads.put(entry.getKey(), - new BlipThread(thread.getId(), thread.getLocation(), thread.getBlipIds(), blips)); - } - - // Deserialize blips. - @SuppressWarnings("unchecked") - final Map<String, BlipData> blipDatas = (Map<String, BlipData>) response.getData().get( - ParamsProperty.BLIPS); - for (final Map.Entry<String, BlipData> entry : blipDatas.entrySet()) { - blips.put(entry.getKey(), Blip.deserialize(opQueue, wavelet, entry.getValue())); - } - } - return wavelet; - } - - @Override - public Wavelet fetchWave(final WaveRef waveName, final String author) { - final WaveId waveId = waveName.getWaveId(); - final WaveletId waveletId = waveName.getWaveletId(); - return fetchWave(waveId, waveletId, author); - } - - @Override - public boolean isParticipant(final Wavelet wavelet, final String user) { - return wavelet.getParticipants().contains(participantUtils.of(user).toString()); - } - - private void onFailure(final String message) { - final String errorMsg = TextUtils.notEmpty(message) ? message : "Wave operation failed"; - LOG.error(errorMsg); - throw new DefaultException(errorMsg); - } - - @Override - public String render(final Wavelet wavelet) { - final ClientAction clientPage = waveRenderer.render(wavelet, 0); - final String html = clientPage.getHtml(); - return html; - } - - @Override - public String render(final WaveRef waveRef, final String author) { - return render(fetchWave(waveRef, author)); - } - - @Override - public void setGadgetProperty(final WaveRef waveletName, final String author, final URL gadgetUrl, - final String someProperty, final String someValue) { - // See BlipContentRefs DocumentModifyService - final Wavelet wavelet = fetchWave(waveletName, author); - // FIXME - final OperationQueue opQueue = new OperationQueue(); - final Blip rootBlip = wavelet.getRootBlip(); - for (final Element elem : rootBlip.getElements().values()) { - if (elem.isGadget()) { - final Map<String, String> properties = elem.getProperties(); - if (properties.get(Gadget.URL).equals(gadgetUrl.toString())) { - // This is the gadget we want to modify (the first of that type) - final List<Element> updatedElementsIn = Lists.newArrayListWithCapacity(1); - properties.put(someProperty, someValue); - // properties.put(propertyNameToDelete, null); - final Gadget gadget = (Gadget) elem; - gadget.setProperty(someProperty, someValue); - // updatedElementsIn.add(new Gadget(properties)); - updatedElementsIn.add(gadget); - final OperationRequest operationRequest = opQueue.modifyDocument(rootBlip); - operationRequest.addParameter(Parameter.of(ParamsProperty.MODIFY_ACTION, - new DocumentModifyAction(ModifyHow.UPDATE_ELEMENT, NO_VALUES, NO_ANNOTATION_KEY, - updatedElementsIn, NO_BUNDLED_ANNOTATIONS, false))); - operationRequest.addParameter(Parameter.of( - ParamsProperty.MODIFY_QUERY, - new DocumentModifyQuery(ElementType.GADGET, ImmutableMap.of(Gadget.URL, - gadgetUrl.toString()), 1))); - doOperation(author, opQueue, "set gadget property"); - break; - } - } - } - } - - @Override - public void setTitle(final WaveRef waveName, final String title, final String author) { - final Wavelet wavelet = fetchWave(waveName, author); - final OperationQueue opQueue = new OperationQueue(); - opQueue.setTitleOfWavelet(wavelet, title); - doOperation(author, opQueue, "set title"); - } - - private Set<String> toSet(final String[] array) { - final Set<String> set = new TreeSet<String>(Collections.reverseOrder()); - set.addAll(Arrays.asList(array)); - return set; - } -} Deleted: trunk/src/main/java/cc/kune/wave/server/WaveEmailNotifier.java =================================================================== --- trunk/src/main/java/cc/kune/wave/server/WaveEmailNotifier.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/cc/kune/wave/server/WaveEmailNotifier.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -1,84 +0,0 @@ -package cc.kune.wave.server; - -import javax.persistence.NoResultException; - -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.waveprotocol.box.common.DeltaSequence; -import org.waveprotocol.box.server.waveserver.WaveBus; -import org.waveprotocol.box.server.waveserver.WaveBus.Subscriber; -import org.waveprotocol.wave.model.id.IdUtil; -import org.waveprotocol.wave.model.id.WaveletId; -import org.waveprotocol.wave.model.id.WaveletName; -import org.waveprotocol.wave.model.operation.wave.AddParticipant; -import org.waveprotocol.wave.model.operation.wave.TransformedWaveletDelta; -import org.waveprotocol.wave.model.operation.wave.WaveletBlipOperation; -import org.waveprotocol.wave.model.operation.wave.WaveletOperation; -import org.waveprotocol.wave.model.version.HashedVersion; -import org.waveprotocol.wave.model.wave.ParticipantId; -import org.waveprotocol.wave.model.wave.data.ReadableWaveletData; -import org.waveprotocol.wave.model.waveref.WaveRef; - -import cc.kune.core.server.LogThis; -import cc.kune.core.server.mail.FormatedString; -import cc.kune.core.server.notifier.NotifySender; -import cc.kune.core.server.notifier.NotifyType; -import cc.kune.core.server.notifier.UsersOnline; -import cc.kune.core.server.properties.KuneBasicProperties; -import cc.kune.domain.User; -import cc.kune.domain.finders.UserFinder; - -import com.google.inject.Inject; - -@LogThis -public class WaveEmailNotifier { - public static final Log LOG = LogFactory.getLog(WaveEmailNotifier.class); - - @Inject - public WaveEmailNotifier(final WaveBus waveBus, final NotifySender notifyService, - final UsersOnline usersOnline, final KuneBasicProperties basicProperties, - final ParticipantUtils partUtils, final UserFinder userFinder) { - waveBus.subscribe(new Subscriber() { - @Override - public void waveletCommitted(final WaveletName waveletName, final HashedVersion version) { - } - - @Override - public void waveletUpdate(final ReadableWaveletData wavelet, final DeltaSequence deltas) { - final WaveletId waveletId = wavelet.getWaveletId(); - if (IdUtil.isUserDataWavelet(waveletId)) { - return; - } - for (final TransformedWaveletDelta delta : deltas) { - for (final WaveletOperation op : delta) { - if (op instanceof AddParticipant) { - final ParticipantId participant = ((AddParticipant) op).getParticipantId(); - final String url = KuneWaveUtils.getUrl(WaveRef.of(wavelet.getWaveId(), waveletId)); - final FormatedString body = FormatedString.build( - "Hi there,<br><br>You have a new message in %s. <a href=\"%s#%s\">Read more</a>.<br>", - basicProperties.getSiteCommonName(), basicProperties.getSiteUrl(), url); - final String address = participant.getAddress(); - if (partUtils.isLocal(address)) { - final String userName = partUtils.getAddressName(address); - // FIXME only for testing - try { - final User user = userFinder.findByShortName(userName); - if (true || !usersOnline.isLogged(userName)) { - notifyService.send(NotifyType.email, FormatedString.build("You have a new message"), - body, true, user); - notifyService.send(NotifyType.chat, FormatedString.build("New message"), body, true, - user); - } - } catch (final NoResultException e) { - // Seems is not a local user - } - } - } else if (op instanceof WaveletBlipOperation) { - - } - } - } - } - }); - } -} Copied: trunk/src/main/java/cc/kune/wave/server/kspecific/KuneAgent.java (from rev 1655, trunk/src/main/java/cc/kune/wave/server/KuneAgent.java) =================================================================== --- trunk/src/main/java/cc/kune/wave/server/kspecific/KuneAgent.java (rev 0) +++ trunk/src/main/java/cc/kune/wave/server/kspecific/KuneAgent.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -0,0 +1,193 @@ +/* + * + * Copyright (C) 2007-2011 The kune development team (see CREDITS for details) + * This file is part of kune. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ +package cc.kune.wave.server.kspecific; + +import java.net.URL; +import java.util.HashSet; +import java.util.logging.Logger; + +import javax.annotation.Nonnull; + +import org.waveprotocol.box.server.robots.agent.AbstractBaseRobotAgent; +import org.waveprotocol.wave.model.id.WaveId; +import org.waveprotocol.wave.model.id.WaveletId; +import org.waveprotocol.wave.model.wave.ParticipantId; +import org.waveprotocol.wave.model.waveref.WaveRef; + +import com.google.inject.Inject; +import com.google.inject.Injector; +import com.google.inject.Singleton; +import com.google.wave.api.Wavelet; + +@SuppressWarnings("serial") +@Singleton +public class KuneAgent extends AbstractBaseRobotAgent implements KuneWaveService { + + private static final Logger LOG = Logger.getLogger(KuneAgent.class.getName()); + + private static final String NO_TITLE = ""; + public static final String ROBOT_URI = AGENT_PREFIX_URI + "/kune-agent"; + + @Inject + public KuneAgent(final Injector injector) { + super(injector); + } + + // public KuneAgent(final String waveDomain, final AccountStore accountStore, + // final TokenGenerator tokenGenerator, final ServerFrontendAddressHolder + // frontendAddressHolder) { + // super(waveDomain, accountStore, tokenGenerator, frontendAddressHolder); + // } + + @Override + public void addGadget(final WaveRef waveName, final String author, final URL gadgetUrl) { + // TODO Auto-generated method stub + + } + + @Override + public void addParticipants(final WaveRef waveName, final String author, final String userWhoAdd, + final String... newParticipants) { + // TODO Auto-generated method stub + + } + + @Override + public WaveRef createWave(final String message, final ParticipantId... participants) { + return createWave(NO_TITLE, message, participants); + } + + @Override + public WaveRef createWave(@Nonnull final String title, final String message, + @Nonnull final ParticipantId... participantsArray) { + return createWave(title, message, WITHOUT_GADGET, participantsArray); + } + + @Override + public WaveRef createWave(final String title, final String message, final String... participantsArray) { + // TODO Auto-generated method stub + return null; + } + + @Override + public WaveRef createWave(final String title, final String message, final String waveIdToCopy, + final URL gadgetUrl, final ParticipantId... participantsArray) { + // TODO Auto-generated method stub + return null; + } + + @Override + public WaveRef createWave(final String title, final String message, final URL gadgetUrl, + final ParticipantId... participantsArray) { + // super.newWave(getWaveDomain(), participantsArray); + final HashSet<String> parts = new HashSet<String>(); + for (final ParticipantId part : participantsArray) { + parts.add(part.getAddress()); + } + final Wavelet wave = newWave(getWaveDomain(), parts); + return WaveRef.of(wave.getWaveId(), wave.getWaveletId()); + } + + @Override + public void delParticipants(final WaveRef waveName, final String whoDel, final String... participants) { + // TODO Auto-generated method stub + + } + + @Override + public Wavelet fetchWave(final WaveId waveId, final WaveletId waveletId, final String author) { + // TODO Auto-generated method stub + return null; + } + + @Override + public Wavelet fetchWave(final WaveRef waveRef, final String author) { + // // Preconditions.checkNotNull(author); + // RobotAccountData account = null; + // final String rpcUrl = "http://" + getFrontEndAddress() + "/robot/rpc"; + // try { + // account = getAccountStore().getAccount( + // ParticipantId.ofUnsafe(getRobotId() + "@" + getWaveDomain())).asRobot(); + // } catch (final PersistenceException e) { + // LOG.log(Level.WARNING, "Cannot fetch account data for robot id: " + + // getRobotId(), e); + // } + // if (account != null) { + // setupOAuth(account.getId().getAddress(), account.getConsumerSecret(), + // rpcUrl); + // try { + // return super.fetchWavelet(waveRef.getWaveId(), waveRef.getWaveletId(), + // "http://" + // + getFrontEndAddress() + "/robot/rpc"); + // } catch (final IOException e) { + // e.printStackTrace(); + // return null; + // } + // } + return null; + } + + @Override + public String getRobotId() { + return "kune-agent"; + } + + @Override + protected String getRobotName() { + return "Kune Agent"; + } + + @Override + public String getRobotUri() { + return ROBOT_URI; + } + + @Override + public boolean isParticipant(final Wavelet wavelet, final String user) { + // TODO Auto-generated method stub + return false; + } + + @Override + public String render(final Wavelet wavelet) { + // TODO Auto-generated method stub + return null; + } + + @Override + public String render(final WaveRef waveRef, final String author) { + // TODO Auto-generated method stub + return null; + } + + @Override + public void setGadgetProperty(final WaveRef waveletName, final String author, final URL gadgetUrl, + final String someProperty, final String someValue) { + // TODO Auto-generated method stub + + } + + @Override + public void setTitle(final WaveRef waveName, final String title, final String author) { + // TODO Auto-generated method stub + + } + +} Copied: trunk/src/main/java/cc/kune/wave/server/kspecific/KuneWaveService.java (from rev 1655, trunk/src/main/java/cc/kune/wave/server/KuneWaveService.java) =================================================================== --- trunk/src/main/java/cc/kune/wave/server/kspecific/KuneWaveService.java (rev 0) +++ trunk/src/main/java/cc/kune/wave/server/kspecific/KuneWaveService.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -0,0 +1,68 @@ +/* + * + * Copyright (C) 2007-2011 The kune development team (see CREDITS for details) + * This file is part of kune. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ +package cc.kune.wave.server.kspecific; + +import java.net.URL; + +import org.waveprotocol.wave.model.id.WaveId; +import org.waveprotocol.wave.model.id.WaveletId; +import org.waveprotocol.wave.model.wave.ParticipantId; +import org.waveprotocol.wave.model.waveref.WaveRef; + +import com.google.wave.api.Wavelet; + +public interface KuneWaveService { + public static final String NO_MESSAGE = ""; + public static final String NO_TITLE = ""; + public static final URL WITHOUT_GADGET = null; + + void addGadget(WaveRef waveName, String author, URL gadgetUrl); + + void addParticipants(WaveRef waveName, String author, String userWhoAdd, String... newParticipants); + + WaveRef createWave(String message, ParticipantId... participants); + + WaveRef createWave(String title, String message, ParticipantId... participantsArray); + + WaveRef createWave(String title, String message, String... participantsArray); + + WaveRef createWave(String title, String message, String waveIdToCopy, URL gadgetUrl, + ParticipantId... participantsArray); + + WaveRef createWave(String title, String message, URL gadgetUrl, ParticipantId... participantsArray); + + void delParticipants(WaveRef waveName, String whoDel, String... participants); + + Wavelet fetchWave(WaveId waveId, WaveletId waveletId, String author); + + Wavelet fetchWave(WaveRef waveRef, String author); + + boolean isParticipant(Wavelet wavelet, String user); + + String render(Wavelet wavelet); + + String render(WaveRef waveRef, String author); + + void setGadgetProperty(WaveRef waveletName, String author, URL gadgetUrl, String someProperty, + String someValue); + + void setTitle(WaveRef waveName, String title, String author); + +} Copied: trunk/src/main/java/cc/kune/wave/server/kspecific/KuneWaveServiceDefault.java (from rev 1655, trunk/src/main/java/cc/kune/wave/server/KuneWaveServiceDefault.java) =================================================================== --- trunk/src/main/java/cc/kune/wave/server/kspecific/KuneWaveServiceDefault.java (rev 0) +++ trunk/src/main/java/cc/kune/wave/server/kspecific/KuneWaveServiceDefault.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -0,0 +1,492 @@ +/* + * + * Copyright (C) 2007-2011 The kune development team (see CREDITS for details) + * This file is part of kune. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ +package cc.kune.wave.server.kspecific; + +import java.net.URL; +import java.util.Arrays; +import java.util.Collections; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Map.Entry; +import java.util.Set; +import java.util.TreeSet; + +import javax.annotation.Nonnull; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.waveprotocol.box.server.CoreSettings; +import org.waveprotocol.box.server.robots.OperationContextImpl; +import org.waveprotocol.box.server.robots.OperationServiceRegistry; +import org.waveprotocol.box.server.robots.util.ConversationUtil; +import org.waveprotocol.box.server.robots.util.OperationUtil; +import org.waveprotocol.box.server.waveserver.WaveletProvider; +import org.waveprotocol.box.server.waveserver.WaveletProvider.SubmitRequestListener; +import org.waveprotocol.wave.model.id.InvalidIdException; +import org.waveprotocol.wave.model.id.WaveId; +import org.waveprotocol.wave.model.id.WaveletId; +import org.waveprotocol.wave.model.version.HashedVersion; +import org.waveprotocol.wave.model.wave.ParticipantId; +import org.waveprotocol.wave.model.waveref.WaveRef; + +import cc.kune.common.shared.utils.TextUtils; +import cc.kune.core.client.errors.DefaultException; +import cc.kune.wave.server.ParticipantUtils; + +import com.google.common.collect.ImmutableMap; +import com.google.common.collect.Lists; +import com.google.common.collect.Maps; +import com.google.inject.Inject; +import com.google.inject.name.Named; +import com.google.wave.api.Annotation; +import com.google.wave.api.ApiIdSerializer; +import com.google.wave.api.Blip; +import com.google.wave.api.BlipContent; +import com.google.wave.api.BlipData; +import com.google.wave.api.BlipThread; +import com.google.wave.api.Element; +import com.google.wave.api.ElementType; +import com.google.wave.api.FormElement; +import com.google.wave.api.Gadget; +import com.google.wave.api.Image; +import com.google.wave.api.JsonRpcConstant.ParamsProperty; +import com.google.wave.api.JsonRpcResponse; +import com.google.wave.api.Line; +import com.google.wave.api.OperationQueue; +import com.google.wave.api.OperationRequest; +import com.google.wave.api.OperationRequest.Parameter; +import com.google.wave.api.Participants; +import com.google.wave.api.ProtocolVersion; +import com.google.wave.api.Range; +import com.google.wave.api.Wavelet; +import com.google.wave.api.data.converter.EventDataConverterManager; +import com.google.wave.api.impl.DocumentModifyAction; +import com.google.wave.api.impl.DocumentModifyAction.BundledAnnotation; +import com.google.wave.api.impl.DocumentModifyAction.ModifyHow; +import com.google.wave.api.impl.DocumentModifyQuery; +import com.google.wave.api.impl.WaveletData; +import com.google.wave.splash.rpc.ClientAction; +import com.google.wave.splash.web.template.WaveRenderer; + +public class KuneWaveServiceDefault implements KuneWaveService { + public static final Log LOG = LogFactory.getLog(KuneWaveServiceDefault.class); + + // See: DocumentModifyServiceTest + private static final String NO_ANNOTATION_KEY = null; + private static final List<BundledAnnotation> NO_BUNDLED_ANNOTATIONS = Collections.emptyList(); + private static final List<String> NO_VALUES = Collections.<String> emptyList(); + private static final String NO_WAVE_TO_COPY = null; + + /** + * + * Copy blips + * + * @param fromBlip + * @param toBlip + * + * @author [email protected] (Yuri Zelikov) + * + */ + public static void copyWavelet(final Blip fromBlip, final Blip toBlip) { + for (final BlipContent blipContent : fromBlip.all().values()) { + toBlip.append(blipContent); + } + // Deep copy annotations + for (final Annotation annotation : fromBlip.getAnnotations()) { + final Range range = annotation.getRange(); + try { + toBlip.range(range.getStart() + 1, range.getEnd() + 1).annotate(annotation.getName(), + annotation.getValue()); + } catch (final IndexOutOfBoundsException e) { + // Don't copy faulty annotations + } + } + } + + public static void copyWaveletElements(final Blip fromBlip, final Blip toBlip) { + // Deep copy form elements. + // DocumentModifyService don't permit this: + // "Can't insert other elements than text and gadgets at the moment"); + for (final Entry<Integer, Element> entry : fromBlip.getElements().entrySet()) { + final ElementType type = entry.getValue().getType(); + Element result = null; + if (FormElement.getFormElementTypes().contains(type)) { + result = new FormElement(type, entry.getValue().getProperties()); + } else if (type == ElementType.GADGET) { + result = new Gadget(entry.getValue().getProperties()); + } else if (type == ElementType.IMAGE) { + result = new Image(entry.getValue().getProperties()); + } else if (type == ElementType.LINE) { + result = new Line(entry.getValue().getProperties()); + } else { + result = new Element(type, entry.getValue().getProperties()); + } + toBlip.append(result); + } + } + + private final ConversationUtil conversationUtil; + private final EventDataConverterManager converterManager; + private final String domain; + private final OperationServiceRegistry operationRegistry; + private final ParticipantUtils participantUtils; + private final WaveletProvider waveletProvider; + private final WaveRenderer waveRenderer; + + @Inject + public KuneWaveServiceDefault(final EventDataConverterManager converterManager, + @Named("DataApiRegistry") final OperationServiceRegistry operationRegistry, + final WaveletProvider waveletProvider, final ConversationUtil conversationUtil, + final ParticipantUtils participantUtils, final WaveRenderer waveRenderer, + @Named(CoreSettings.WAVE_SERVER_DOMAIN) final String domain) { + this.converterManager = converterManager; + this.waveletProvider = waveletProvider; + this.conversationUtil = conversationUtil; + this.operationRegistry = operationRegistry; + this.participantUtils = participantUtils; + this.waveRenderer = waveRenderer; + this.domain = domain; + } + + @Override + public void addGadget(final WaveRef waveName, final String author, final URL gadgetUrl) { + // See DocumentModifyServiceTest + final List<Element> elementsIn = Lists.newArrayListWithCapacity(1); + final Map<String, String> properties = Maps.newHashMap(); + properties.put(Gadget.URL, gadgetUrl.toString()); + properties.put(Gadget.AUTHOR, participantUtils.of(author).getAddress()); + final Gadget gadget = new Gadget(properties); + + elementsIn.add(gadget); + final Wavelet wavelet = fetchWave(waveName, author); + final OperationQueue opQueue = new OperationQueue(); + final Blip rootBlip = wavelet.getRootBlip(); + + final OperationRequest operationRequest = opQueue.modifyDocument(rootBlip); + operationRequest.addParameter(Parameter.of(ParamsProperty.MODIFY_ACTION, new DocumentModifyAction( + ModifyHow.INSERT, NO_VALUES, NO_ANNOTATION_KEY, elementsIn, NO_BUNDLED_ANNOTATIONS, false))); + operationRequest.addParameter(Parameter.of(ParamsProperty.INDEX, 1)); + doOperation(author, opQueue, "add gadget"); + } + + @Override + public void addParticipants(final WaveRef waveName, final String author, final String userWhoAdds, + final String... newLocalParticipants) { + final Wavelet wavelet = fetchWave(waveName, author); + final Participants currentParticipants = wavelet.getParticipants(); + // Removing duplicates + for (final String participant : toSet(newLocalParticipants)) { + final String newPartWithDomain = participantUtils.of(participant).toString(); + if (!currentParticipants.contains(newPartWithDomain)) { + // FIXME This is very costly. Seems like only one participant per + // opQueue is added (try to + // fix this in WAVE) + final OperationQueue opQueue = new OperationQueue(); + LOG.debug("Adding as participant: " + newPartWithDomain); + opQueue.addParticipantToWavelet(wavelet, newPartWithDomain); + final String whoAdd = wavelet.getParticipants().contains(participantUtils.of(userWhoAdds)) ? userWhoAdds + : author; + doOperation(whoAdd, opQueue, "add participant"); + } + } + } + + @Override + public WaveRef createWave(final String message, final ParticipantId... participants) { + return createWave(NO_TITLE, message, participants); + } + + @Override + public WaveRef createWave(@Nonnull final String title, final String message, + @Nonnull final ParticipantId... participantsArray) { + return createWave(title, message, WITHOUT_GADGET, participantsArray); + } + + @Override + public WaveRef createWave(final String title, final String message, final String... participantsArray) { + return createWave(title, message, participantUtils.listFrom(participantsArray)); + } + + @Override + public WaveRef createWave(@Nonnull final String title, final String message, + final String waveIdToCopy, final URL gadgetUrl, @Nonnull final ParticipantId... participantsArray) { + String newWaveId = null; + String newWaveletId = null; + final Set<String> participants = new HashSet<String>(); + for (final ParticipantId participant : participantsArray) { + participants.add(participant.toString()); + } + final ParticipantId user = participantsArray[0]; + final OperationQueue opQueue = new OperationQueue(); + final Wavelet newWavelet = opQueue.createWavelet(domain, participants); + opQueue.setTitleOfWavelet(newWavelet, title); + final Blip rootBlip = newWavelet.getRootBlip(); + rootBlip.append(new com.google.wave.api.Markup(message).getText()); + + if (waveIdToCopy != NO_WAVE_TO_COPY && TextUtils.notEmpty(waveIdToCopy)) { + try { + WaveId copyWaveId; + copyWaveId = WaveId.ofChecked(domain, waveIdToCopy); + final Wavelet waveletToCopy = fetchWave(copyWaveId, WaveletId.of(domain, "conv+root"), + participantsArray[0].toString()); + if (waveletToCopy != null) { + copyWavelet(waveletToCopy.getRootBlip(), rootBlip); + } + } catch (final InvalidIdException e) { + LOG.error("Error copying wave content", e); + } catch (final DefaultException e2) { + LOG.error("Error copying wave content", e2); + } + } + + if (gadgetUrl != WITHOUT_GADGET) { + final Gadget gadget = new Gadget(gadgetUrl.toString()); + rootBlip.append(gadget); + } + + final OperationContextImpl context = new OperationContextImpl(waveletProvider, + converterManager.getEventDataConverter(ProtocolVersion.DEFAULT), conversationUtil); + for (final OperationRequest req : opQueue.getPendingOperations()) { + OperationUtil.executeOperation(req, operationRegistry, context, user); + final String reqId = req.getId(); + final JsonRpcResponse response = context.getResponse(reqId); + if (response != null) { + if (response.isError()) { + onFailure(context.getResponse(reqId).getErrorMessage()); + } else { + final Object responseWaveId = response.getData().get(ParamsProperty.WAVE_ID); + final Object responseWaveletId = response.getData().get(ParamsProperty.WAVELET_ID); + if (responseWaveId != null && responseWaveletId != null) { + // This is serialized use + // ApiIdSerializer.instance().deserialiseWaveId (see + // WaveService) + newWaveId = (String) responseWaveId; + newWaveletId = (String) responseWaveletId; + } + } + } + } + OperationUtil.submitDeltas(context, waveletProvider, new SubmitRequestListener() { + @Override + public void onFailure(final String arg0) { + KuneWaveServiceDefault.this.onFailure("Wave creation failed, onFailure: " + arg0); + } + + @Override + public void onSuccess(final int arg0, final HashedVersion arg1, final long arg2) { + LOG.info("Wave creation success: " + arg1); + } + }); + LOG.info("WaveId: " + newWaveId + " waveletId: " + newWaveletId); + WaveRef wavename; + try { + wavename = WaveRef.of(ApiIdSerializer.instance().deserialiseWaveId(newWaveId), + ApiIdSerializer.instance().deserialiseWaveletId(newWaveletId)); + } catch (final InvalidIdException e) { + throw new DefaultException("Error getting wave id"); + } + return wavename; + } + + @Override + public WaveRef createWave(@Nonnull final String title, final String message, final URL gadgetUrl, + @Nonnull final ParticipantId... participantsArray) { + return createWave(title, message, NO_WAVE_TO_COPY, gadgetUrl, participantsArray); + } + + @Override + public void delParticipants(final WaveRef waveName, final String whoDel, + final String... participantsToDel) { + final Wavelet wavelet = fetchWave(waveName, whoDel); + final Participants currentParticipants = wavelet.getParticipants(); + final Set<String> set = toSet(participantsToDel); + LOG.debug("Removing participants: " + set.toString()); + for (final String participant : set) { + // FIXME Seems like only one participant per opQueue is added (try to fix + // this in WAVE) + final String partWithDomain = participantUtils.of(participant).toString(); + if (currentParticipants.contains(partWithDomain)) { + final OperationQueue opQueue = new OperationQueue(); + LOG.debug("Removing as participant: " + partWithDomain); + opQueue.removeParticipantFromWavelet(wavelet, partWithDomain); + doOperation(whoDel, opQueue, "del participant"); + } + } + } + + private void doOperation(final String author, final OperationQueue opQueue, final String logComment) { + // FIXME: do here a callback!!! + final OperationContextImpl context = new OperationContextImpl(waveletProvider, + converterManager.getEventDataConverter(ProtocolVersion.DEFAULT), conversationUtil); + for (final OperationRequest request : opQueue.getPendingOperations()) { + // final OperationRequest request = opQueue.getPendingOperations().get(0); + OperationUtil.executeOperation(request, operationRegistry, context, participantUtils.of(author)); + final String reqId = request.getId(); + final JsonRpcResponse response = context.getResponse(reqId); + if (response != null && response.isError()) { + onFailure(context.getResponse(reqId).getErrorMessage()); + } + OperationUtil.submitDeltas(context, waveletProvider, new SubmitRequestListener() { + @Override + public void onFailure(final String arg0) { + KuneWaveServiceDefault.this.onFailure("Wave " + logComment + " failed, onFailure: " + arg0); + } + + @Override + public void onSuccess(final int arg0, final HashedVersion arg1, final long arg2) { + LOG.info("Wave " + logComment + " success: " + arg1); + } + }); + } + } + + public void doOperations(final WaveRef waveName, final String author, final OperationQueue opQueue, + final SubmitRequestListener listener) { + final OperationContextImpl context = new OperationContextImpl(waveletProvider, + converterManager.getEventDataConverter(ProtocolVersion.DEFAULT), conversationUtil); + for (final OperationRequest req : opQueue.getPendingOperations()) { + OperationUtil.executeOperation(req, operationRegistry, context, participantUtils.of(author)); + } + OperationUtil.submitDeltas(context, waveletProvider, listener); + } + + @Override + public Wavelet fetchWave(final WaveId waveId, final WaveletId waveletId, final String author) { + final OperationQueue opQueue = new OperationQueue(); + opQueue.fetchWavelet(waveId, waveletId); + Wavelet wavelet = null; + final OperationContextImpl context = new OperationContextImpl(waveletProvider, + converterManager.getEventDataConverter(ProtocolVersion.DEFAULT), conversationUtil); + final OperationRequest request = opQueue.getPendingOperations().get(0); + OperationUtil.executeOperation(request, operationRegistry, context, participantUtils.of(author)); + final String reqId = request.getId(); + final JsonRpcResponse response = context.getResponse(reqId); + if (response != null && response.isError()) { + onFailure(context.getResponse(reqId).getErrorMessage()); + } else { + // Duplicate code from WaveService + assert response != null; + final WaveletData waveletData = (WaveletData) response.getData().get(ParamsProperty.WAVELET_DATA); + final Map<String, Blip> blips = new HashMap<String, Blip>(); + final Map<String, BlipThread> threads = new HashMap<String, BlipThread>(); + wavelet = Wavelet.deserialize(opQueue, blips, threads, waveletData); + + // Deserialize threads. + @SuppressWarnings("unchecked") + final Map<String, BlipThread> tempThreads = (Map<String, BlipThread>) response.getData().get( + ParamsProperty.THREADS); + for (final Map.Entry<String, BlipThread> entry : tempThreads.entrySet()) { + final BlipThread thread = entry.getValue(); + threads.put(entry.getKey(), + new BlipThread(thread.getId(), thread.getLocation(), thread.getBlipIds(), blips)); + } + + // Deserialize blips. + @SuppressWarnings("unchecked") + final Map<String, BlipData> blipDatas = (Map<String, BlipData>) response.getData().get( + ParamsProperty.BLIPS); + for (final Map.Entry<String, BlipData> entry : blipDatas.entrySet()) { + blips.put(entry.getKey(), Blip.deserialize(opQueue, wavelet, entry.getValue())); + } + } + return wavelet; + } + + @Override + public Wavelet fetchWave(final WaveRef waveName, final String author) { + final WaveId waveId = waveName.getWaveId(); + final WaveletId waveletId = waveName.getWaveletId(); + return fetchWave(waveId, waveletId, author); + } + + @Override + public boolean isParticipant(final Wavelet wavelet, final String user) { + return wavelet.getParticipants().contains(participantUtils.of(user).toString()); + } + + private void onFailure(final String message) { + final String errorMsg = TextUtils.notEmpty(message) ? message : "Wave operation failed"; + LOG.error(errorMsg); + throw new DefaultException(errorMsg); + } + + @Override + public String render(final Wavelet wavelet) { + final ClientAction clientPage = waveRenderer.render(wavelet, 0); + final String html = clientPage.getHtml(); + return html; + } + + @Override + public String render(final WaveRef waveRef, final String author) { + return render(fetchWave(waveRef, author)); + } + + @Override + public void setGadgetProperty(final WaveRef waveletName, final String author, final URL gadgetUrl, + final String someProperty, final String someValue) { + // See BlipContentRefs DocumentModifyService + final Wavelet wavelet = fetchWave(waveletName, author); + // FIXME + final OperationQueue opQueue = new OperationQueue(); + final Blip rootBlip = wavelet.getRootBlip(); + for (final Element elem : rootBlip.getElements().values()) { + if (elem.isGadget()) { + final Map<String, String> properties = elem.getProperties(); + if (properties.get(Gadget.URL).equals(gadgetUrl.toString())) { + // This is the gadget we want to modify (the first of that type) + final List<Element> updatedElementsIn = Lists.newArrayListWithCapacity(1); + properties.put(someProperty, someValue); + // properties.put(propertyNameToDelete, null); + final Gadget gadget = (Gadget) elem; + gadget.setProperty(someProperty, someValue); + // updatedElementsIn.add(new Gadget(properties)); + updatedElementsIn.add(gadget); + final OperationRequest operationRequest = opQueue.modifyDocument(rootBlip); + operationRequest.addParameter(Parameter.of(ParamsProperty.MODIFY_ACTION, + new DocumentModifyAction(ModifyHow.UPDATE_ELEMENT, NO_VALUES, NO_ANNOTATION_KEY, + updatedElementsIn, NO_BUNDLED_ANNOTATIONS, false))); + operationRequest.addParameter(Parameter.of( + ParamsProperty.MODIFY_QUERY, + new DocumentModifyQuery(ElementType.GADGET, ImmutableMap.of(Gadget.URL, + gadgetUrl.toString()), 1))); + doOperation(author, opQueue, "set gadget property"); + break; + } + } + } + } + + @Override + public void setTitle(final WaveRef waveName, final String title, final String author) { + final Wavelet wavelet = fetchWave(waveName, author); + final OperationQueue opQueue = new OperationQueue(); + opQueue.setTitleOfWavelet(wavelet, title); + doOperation(author, opQueue, "set title"); + } + + private Set<String> toSet(final String[] array) { + final Set<String> set = new TreeSet<String>(Collections.reverseOrder()); + set.addAll(Arrays.asList(array)); + return set; + } +} Copied: trunk/src/main/java/cc/kune/wave/server/kspecific/WaveEmailNotifier.java (from rev 1655, trunk/src/main/java/cc/kune/wave/server/WaveEmailNotifier.java) =================================================================== --- trunk/src/main/java/cc/kune/wave/server/kspecific/WaveEmailNotifier.java (rev 0) +++ trunk/src/main/java/cc/kune/wave/server/kspecific/WaveEmailNotifier.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -0,0 +1,86 @@ +package cc.kune.wave.server.kspecific; + +import javax.persistence.NoResultException; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.waveprotocol.box.common.DeltaSequence; +import org.waveprotocol.box.server.waveserver.WaveBus; +import org.waveprotocol.box.server.waveserver.WaveBus.Subscriber; +import org.waveprotocol.wave.model.id.IdUtil; +import org.waveprotocol.wave.model.id.WaveletId; +import org.waveprotocol.wave.model.id.WaveletName; +import org.waveprotocol.wave.model.operation.wave.AddParticipant; +import org.waveprotocol.wave.model.operation.wave.TransformedWaveletDelta; +import org.waveprotocol.wave.model.operation.wave.WaveletBlipOperation; +import org.waveprotocol.wave.model.operation.wave.WaveletOperation; +import org.waveprotocol.wave.model.version.HashedVersion; +import org.waveprotocol.wave.model.wave.ParticipantId; +import org.waveprotocol.wave.model.wave.data.ReadableWaveletData; +import org.waveprotocol.wave.model.waveref.WaveRef; + +import cc.kune.core.server.LogThis; +import cc.kune.core.server.mail.FormatedString; +import cc.kune.core.server.notifier.NotifySender; +import cc.kune.core.server.notifier.NotifyType; +import cc.kune.core.server.notifier.UsersOnline; +import cc.kune.core.server.properties.KuneBasicProperties; +import cc.kune.domain.User; +import cc.kune.domain.finders.UserFinder; +import cc.kune.wave.server.KuneWaveUtils; +import cc.kune.wave.server.ParticipantUtils; + +import com.google.inject.Inject; + +@LogThis +public class WaveEmailNotifier { + public static final Log LOG = LogFactory.getLog(WaveEmailNotifier.class); + + @Inject + public WaveEmailNotifier(final WaveBus waveBus, final NotifySender notifyService, + final UsersOnline usersOnline, final KuneBasicProperties basicProperties, + final ParticipantUtils partUtils, final UserFinder userFinder) { + waveBus.subscribe(new Subscriber() { + @Override + public void waveletCommitted(final WaveletName waveletName, final HashedVersion version) { + } + + @Override + public void waveletUpdate(final ReadableWaveletData wavelet, final DeltaSequence deltas) { + final WaveletId waveletId = wavelet.getWaveletId(); + if (IdUtil.isUserDataWavelet(waveletId)) { + return; + } + for (final TransformedWaveletDelta delta : deltas) { + for (final WaveletOperation op : delta) { + if (op instanceof AddParticipant) { + final ParticipantId participant = ((AddParticipant) op).getParticipantId(); + final String url = KuneWaveUtils.getUrl(WaveRef.of(wavelet.getWaveId(), waveletId)); + final FormatedString body = FormatedString.build( + "Hi there,<br><br>You have a new message in %s. <a href=\"%s#%s\">Read more</a>.<br>", + basicProperties.getSiteCommonName(), basicProperties.getSiteUrl(), url); + final String address = participant.getAddress(); + if (partUtils.isLocal(address)) { + final String userName = partUtils.getAddressName(address); + // FIXME only for testing + try { + final User user = userFinder.findByShortName(userName); + if (!usersOnline.isLogged(userName)) { + notifyService.send(NotifyType.email, FormatedString.build("You have a new message"), + body, true, user); + notifyService.send(NotifyType.chat, FormatedString.build("New message"), body, true, + user); + } + } catch (final NoResultException e) { + // Seems is not a local user + } + } + } else if (op instanceof WaveletBlipOperation) { + + } + } + } + } + }); + } +} Modified: trunk/src/main/java/org/waveprotocol/wave/client/wavepanel/view/dom/full/KuneWavePanelResourceLoader.java =================================================================== --- trunk/src/main/java/org/waveprotocol/wave/client/wavepanel/view/dom/full/KuneWavePanelResourceLoader.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/main/java/org/waveprotocol/wave/client/wavepanel/view/dom/full/KuneWavePanelResourceLoader.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -18,7 +18,7 @@ import org.waveprotocol.wave.client.editor.EditorImpl; -import cc.kune.wave.client.KuneWaveResources; +import cc.kune.wave.client.resources.KuneWaveResources; import com.google.gwt.core.client.GWT; import com.google.gwt.dom.client.StyleInjector; Deleted: trunk/src/test/java/cc/kune/core/client/state/EventBusTester.java =================================================================== --- trunk/src/test/java/cc/kune/core/client/state/EventBusTester.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/test/java/cc/kune/core/client/state/EventBusTester.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -1,59 +0,0 @@ -/* - * - * Copyright (C) 2007-2011 The kune development team (see CREDITS for details) - * This file is part of kune. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * - */ -package cc.kune.core.client.state; - -import java.util.ArrayList; - -import com.google.gwt.event.shared.GwtEvent; -import com.google.gwt.event.shared.SimpleEventBus; - -public class EventBusTester extends SimpleEventBus { - private final ArrayList<GwtEvent<?>> all; - private GwtEvent<?> lastEvent; - - public EventBusTester() { - all = new ArrayList<GwtEvent<?>>(); - } - - @Override - public void fireEvent(final GwtEvent<?> event) { - all.add(event); - this.lastEvent = event; - super.fireEvent(event); - } - - public GwtEvent<?> getLastEvent() { - return lastEvent; - } - - @SuppressWarnings("unchecked") - public <T extends GwtEvent<?>> Class<T> getLastEventClass() { - return (Class<T>) lastEvent.getClass(); - } - - public boolean receivedEventOfClass(final Class<? extends GwtEvent<?>> eventClass) { - for (final GwtEvent<?> event : all) { - if (eventClass.equals(event.getClass())) { - return true; - } - } - return false; - } -} Deleted: trunk/src/test/java/cc/kune/core/client/state/StateManagerDefaultTest.java =================================================================== --- trunk/src/test/java/cc/kune/core/client/state/StateManagerDefaultTest.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/test/java/cc/kune/core/client/state/StateManagerDefaultTest.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -1,329 +0,0 @@ -/* - * - * Copyright (C) 2007-2011 The kune development team (see CREDITS for details) - * This file is part of kune. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * - */ -package cc.kune.core.client.state; - -import static org.mockito.Matchers.anyBoolean; - -import org.junit.Before; -import org.junit.Test; -import org.mockito.Mockito; -import org.mockito.invocation.InvocationOnMock; -import org.mockito.stubbing.Answer; - -import cc.kune.common.client.actions.BeforeActionListener; -import cc.kune.core.client.init.AppStartEvent; -import cc.kune.core.client.init.AppStartEvent.AppStartHandler; -import cc.kune.core.client.state.GroupChangedEvent.GroupChangedHandler; -import cc.kune.core.client.state.StateChangedEvent.StateChangedHandler; -import cc.kune.core.client.state.ToolChangedEvent.ToolChangedHandler; -import cc.kune.core.client.state.UserSignInEvent.UserSignInHandler; -import cc.kune.core.client.state.UserSignOutEvent.UserSignOutHandler; -import cc.kune.core.shared.domain.utils.StateToken; -import cc.kune.core.shared.dto.InitDataDTO; -import cc.kune.core.shared.dto.StateAbstractDTO; - -import com.google.gwt.user.client.rpc.AsyncCallback; - -public class StateManagerDefaultTest { - - private static final StateToken EMPTY_TOKEN = null; - private static final StateToken GROUP1_TOOL1 = new StateToken("group1.tool1"); - private static final StateToken GROUP1_TOOL2 = new StateToken("group1.tool2"); - private static final StateToken GROUP2_TOOL1 = new StateToken("group2.tool1"); - private static final String HASH = "someUserHash"; - private BeforeActionListener beforeChangeListener1; - private BeforeActionListener beforeChangeListener2; - private ContentCache contentProvider; - private EventBusTester eventBus; - private GroupChangedHandler groupChangeHandler; - private HistoryWrapper history; - private Session session; - private SiteTokenListeners siteTokens; - private StateAbstractDTO state; - private StateChangedHandler stateChangeHandler; - private StateManagerDefault stateManager; - private TokenMatcher tokenMatcher; - private ToolChangedHandler toolChangeHandler; - - @Before - public void before() { - contentProvider = Mockito.mock(ContentCache.class); - session = Mockito.mock(Session.class); - history = Mockito.mock(HistoryWrapper.class); - tokenMatcher = Mockito.mock(TokenMatcher.class); - siteTokens = Mockito.mock(SiteTokenListeners.class); - eventBus = new EventBusTester(); - Mockito.when(session.getUserHash()).thenReturn(HASH); - Mockito.doAnswer(new Answer<Object>() { - @Override - public Object answer(final InvocationOnMock invocation) throws Throwable { - eventBus.addHandler(UserSignInEvent.getType(), (UserSignInHandler) invocation.getArguments()[1]); - return null; - } - }).when(session).onUserSignIn(anyBoolean(), (UserSignInHandler) Mockito.anyObject()); - Mockito.doAnswer(new Answer<Object>() { - @Override - public Object answer(final InvocationOnMock invocation) throws Throwable { - eventBus.addHandler(UserSignOutEvent.getType(), - (UserSignOutHandler) invocation.getArguments()[1]); - return null; - } - }).when(session).onUserSignOut(anyBoolean(), (UserSignOutHandler) Mockito.anyObject()); - Mockito.doAnswer(new Answer<Object>() { - @Override - public Object answer(final InvocationOnMock invocation) throws Throwable { - eventBus.addHandler(AppStartEvent.getType(), (AppStartHandler) invocation.getArguments()[1]); - return null; - } - }).when(session).onAppStart(anyBoolean(), (AppStartHandler) Mockito.anyObject()); - state = Mockito.mock(StateAbstractDTO.class); - stateManager = new StateManagerDefault(contentProvider, session, history, tokenMatcher, eventBus, - siteTokens); - stateChangeHandler = Mockito.mock(StateChangedHandler.class); - groupChangeHandler = Mockito.mock(GroupChangedHandler.class); - toolChangeHandler = Mockito.mock(ToolChangedHandler.class); - beforeChangeListener1 = Mockito.mock(BeforeActionListener.class); - beforeChangeListener2 = Mockito.mock(BeforeActionListener.class); - eventBus.addHandler(StateChangedEvent.getType(), stateChangeHandler); - eventBus.addHandler(GroupChangedEvent.getType(), groupChangeHandler); - eventBus.addHandler(ToolChangedEvent.getType(), toolChangeHandler); - // new NotifyUser(null, null); - } - - @Test - public void changeGroupWithNoTool() { - changeState("group1", "group2"); - Mockito.verify(stateChangeHandler, Mockito.times(2)).onStateChanged( - (StateChangedEvent) Mockito.anyObject()); - Mockito.verify(groupChangeHandler, Mockito.times(2)).onGroupChanged( - (GroupChangedEvent) Mockito.anyObject()); - Mockito.verify(groupChangeHandler, Mockito.times(2)).onGroupChanged( - (GroupChangedEvent) Mockito.anyObject()); - } - - private void changeState(final String... tokens) { - for (final String token : tokens) { - Mockito.when(state.getStateToken()).thenReturn(new StateToken(token)); - stateManager.setState(state); - } - } - - @Test - public void changeStateWithDifferentAndGroupsToolsMustFireListener() { - changeState("group2.tool1", "group1.tool2"); - Mockito.verify(stateChangeHandler, Mockito.times(2)).onStateChanged( - (StateChangedEvent) Mockito.anyObject()); - Mockito.verify(groupChangeHandler, Mockito.times(2)).onGroupChanged( - (GroupChangedEvent) Mockito.anyObject()); - Mockito.verify(toolChangeHandler, Mockito.times(2)).onToolChanged( - (ToolChangedEvent) Mockito.anyObject()); - Mockito.verify(groupChangeHandler, Mockito.times(1)).onGroupChanged( - new GroupChangedEvent("", "group2")); - Mockito.verify(groupChangeHandler, Mockito.times(1)).onGroupChanged( - new GroupChangedEvent("group2", "group1")); - Mockito.verify(toolChangeHandler, Mockito.times(1)).onToolChanged( - new ToolChangedEvent(EMPTY_TOKEN, GROUP2_TOOL1)); - Mockito.verify(toolChangeHandler, Mockito.times(1)).onToolChanged( - new ToolChangedEvent(GROUP2_TOOL1, GROUP1_TOOL2)); - } - - @Test - public void changeStateWithDifferentGroupsMustFireListener() { - changeState("group1.tool1", "group2.tool1"); - // assertTrue(stateChangeListener.isCalled(2)); - // assertTrue(groupChangeListener.isCalledWithEquals("", "group1", - // "group1", "group2")); - // assertTrue(toolChangeListener.isCalledWithEquals("", "tool1")); - Mockito.verify(stateChangeHandler, Mockito.times(2)).onStateChanged( - (StateChangedEvent) Mockito.anyObject()); - Mockito.verify(groupChangeHandler, Mockito.times(2)).onGroupChanged( - (GroupChangedEvent) Mockito.anyObject()); - Mockito.verify(toolChangeHandler, Mockito.times(1)).onToolChanged( - (ToolChangedEvent) Mockito.anyObject()); - Mockito.verify(groupChangeHandler, Mockito.times(1)).onGroupChanged( - new GroupChangedEvent("", "group1")); - Mockito.verify(groupChangeHandler, Mockito.times(1)).onGroupChanged( - new GroupChangedEvent("group1", "group2")); - Mockito.verify(toolChangeHandler, Mockito.times(1)).onToolChanged( - new ToolChangedEvent(null, GROUP1_TOOL1)); - - } - - @Test - public void changeStateWithDifferentToolsMustFireListener() { - changeState("group1.tool1", "group1.tool2"); - Mockito.verify(stateChangeHandler, Mockito.times(2)).onStateChanged( - (StateChangedEvent) Mockito.anyObject()); - Mockito.verify(groupChangeHandler, Mockito.times(1)).onGroupChanged( - (GroupChangedEvent) Mockito.anyObject()); - Mockito.verify(toolChangeHandler, Mockito.times(2)).onToolChanged( - (ToolChangedEvent) Mockito.anyObject()); - Mockito.verify(groupChangeHandler, Mockito.times(1)).onGroupChanged( - new GroupChangedEvent("", "group1")); - Mockito.verify(toolChangeHandler, Mockito.times(1)).onToolChanged( - new ToolChangedEvent(EMPTY_TOKEN, GROUP1_TOOL1)); - Mockito.verify(toolChangeHandler, Mockito.times(1)).onToolChanged( - new ToolChangedEvent(GROUP1_TOOL1, GROUP1_TOOL2)); - } - - @Test - public void changeToNoTool() { - changeState("group1.tool1", "group1"); - Mockito.verify(stateChangeHandler, Mockito.times(2)).onStateChanged( - (StateChangedEvent) Mockito.anyObject()); - Mockito.verify(groupChangeHandler, Mockito.times(1)).onGroupChanged( - (GroupChangedEvent) Mockito.anyObject()); - Mockito.verify(toolChangeHandler, Mockito.times(2)).onToolChanged( - (ToolChangedEvent) Mockito.anyObject()); - Mockito.verify(groupChangeHandler, Mockito.times(1)).onGroupChanged( - new GroupChangedEvent("", "group1")); - Mockito.verify(toolChangeHandler, Mockito.times(1)).onToolChanged( - new ToolChangedEvent(EMPTY_TOKEN, GROUP1_TOOL1)); - Mockito.verify(toolChangeHandler, Mockito.times(1)).onToolChanged( - new ToolChangedEvent(GROUP1_TOOL1, new StateToken("group1"))); - } - - @Test - public void changeToSameToken() { - changeState("group1.tool1", "group1.tool1"); - Mockito.verify(stateChangeHandler, Mockito.times(2)).onStateChanged( - (StateChangedEvent) Mockito.anyObject()); - Mockito.verify(groupChangeHandler, Mockito.times(1)).onGroupChanged( - (GroupChangedEvent) Mockito.anyObject()); - Mockito.verify(toolChangeHandler, Mockito.times(1)).onToolChanged( - (ToolChangedEvent) Mockito.anyObject()); - Mockito.verify(groupChangeHandler, Mockito.times(1)).onGroupChanged( - new GroupChangedEvent("", "group1")); - Mockito.verify(toolChangeHandler, Mockito.times(1)).onToolChanged( - new ToolChangedEvent(EMPTY_TOKEN, GROUP1_TOOL1)); - } - - private String confBeforeStateChangeListeners(final boolean value, final boolean value2) { - stateManager.addBeforeStateChangeListener(beforeChangeListener1); - stateManager.addBeforeStateChangeListener(beforeChangeListener2); - final String newToken = "something"; - Mockito.when(beforeChangeListener1.beforeAction()).thenReturn(value); - Mockito.when(beforeChangeListener2.beforeAction()).thenReturn(value2); - return newToken; - } - - @SuppressWarnings("unchecked") - @Test - public void getDefGroup() { - stateManager.processHistoryToken("site.docs"); - verifyGetServerContent(); - } - - public void getWaveToken() { - stateManager.processHistoryToken("example.com/w+abcd/~/conv+root/b+45kg"); - } - - @SuppressWarnings("unchecked") - @Test - public void normalStartLoggedUser() { - // When a user enter reload state, also if the application is starting - // (and the user was logged) - Mockito.when(history.getToken()).thenReturn(""); - stateManager.refreshCurrentState(); - verifyGetServerContent(); - } - - @SuppressWarnings("unchecked") - @Test - public void oneBeforeStateChangeListenerAddAndRemove() { - final String newToken = confBeforeStateChangeListeners(false, false); - stateManager.processHistoryToken(newToken); - removeBeforeStateChangeListener(); - stateManager.processHistoryToken(newToken); - verifyGetServerContent(); - } - - @Test - public void oneBeforeStateChangeListenerFalseAndResume() { - final String token = confBeforeStateChangeListeners(false, true); - stateManager.processHistoryToken(token); - Mockito.verify(history, Mockito.never()).newItem(token); - removeBeforeStateChangeListener(); - stateManager.resumeTokenChange(); - Mockito.verify(history, Mockito.times(1)).newItem(token); - } - - @SuppressWarnings("unchecked") - @Test - public void oneBeforeStateChangeListenerReturnFalse() { - stateManager.processHistoryToken(confBeforeStateChangeListeners(true, false)); - Mockito.verify(contentProvider, Mockito.never()).getContent(Mockito.anyString(), - (StateToken) Mockito.anyObject(), (AsyncCallback<StateAbstractDTO>) Mockito.anyObject()); - } - - @SuppressWarnings("unchecked") - @Test - public void oneBeforeStateChangeListenerReturnFalseWithTwo() { - stateManager.processHistoryToken(confBeforeStateChangeListeners(false, false)); - Mockito.verify(contentProvider, Mockito.never()).getContent(Mockito.anyString(), - (StateToken) Mockito.anyObject(), (AsyncCallback<StateAbstractDTO>) Mockito.anyObject()); - } - - @SuppressWarnings("unchecked") - @Test - public void oneBeforeStateChangeListenerReturnTrue() { - stateManager.processHistoryToken(confBeforeStateChangeListeners(true, true)); - verifyGetServerContent(); - } - - private void removeBeforeStateChangeListener() { - stateManager.removeBeforeStateChangeListener(beforeChangeListener1); - stateManager.removeBeforeStateChangeListener(beforeChangeListener2); - } - - @SuppressWarnings("unchecked") - @Test - public void siteTokenFirstLoadDefContentAndFireListener() { - final HistoryTokenCallback listener = Mockito.mock(HistoryTokenCallback.class); - final String token = SiteTokens.SIGNIN; - stateManager.addSiteToken(token, listener); - Mockito.when(siteTokens.get(SiteTokens.SIGNIN)).thenReturn(listener); - stateManager.processHistoryToken(token); - Mockito.verify(listener, Mockito.times(1)).onHistoryToken(Mockito.anyString()); - verifyGetServerContent(); - } - - @Test - public void siteTokenTest() { - final HistoryTokenCallback listener = Mockito.mock(HistoryTokenCallback.class); - stateManager.addSiteToken(SiteTokens.SIGNIN, listener); - Mockito.when(siteTokens.get(SiteTokens.SIGNIN)).thenReturn(listener); - stateManager.processHistoryToken("signIn"); - Mockito.verify(listener, Mockito.times(1)).onHistoryToken(Mockito.anyString()); - } - - @Test - public void startMustLoadContent() { - final InitDataDTO initData = Mockito.mock(InitDataDTO.class); - Mockito.when(history.getToken()).thenReturn(""); - eventBus.fireEvent(new AppStartEvent(initData)); - verifyGetServerContent(); - } - - private void verifyGetServerContent() { - Mockito.verify(contentProvider, Mockito.times(1)).getContent(Mockito.anyString(), - (StateToken) Mockito.anyObject(), (AsyncCallback<StateAbstractDTO>) Mockito.anyObject()); - } -} Deleted: trunk/src/test/java/cc/kune/core/client/state/StateTokenTest.java =================================================================== --- trunk/src/test/java/cc/kune/core/client/state/StateTokenTest.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/test/java/cc/kune/core/client/state/StateTokenTest.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -1,72 +0,0 @@ -/* - * - * Copyright (C) 2007-2011 The kune development team (see CREDITS for details) - * This file is part of kune. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * - */ -package cc.kune.core.client.state; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertNull; - -import org.junit.Test; - -import cc.kune.core.shared.domain.utils.StateToken; - -public class StateTokenTest { - - @Test - public void checkAllEmpty() { - final StateToken token = new StateToken(""); - assertNull(token.getGroup()); - assertNull(token.getTool()); - assertNull(token.getFolder()); - assertNull(token.getDocument()); - } - - @Test - public void checkEquals() { - final StateToken token1 = new StateToken("abc", "da", "1", "1"); - final StateToken token2 = new StateToken("abc", "da", "1", "1"); - assertEquals(token1, token2); - } - - @Test - public void checkEqualsEncoded() { - final StateToken token1 = new StateToken("abc.da.1.1"); - final StateToken token2 = new StateToken("abc.da.1.1"); - assertEquals(token1, token2); - } - - @Test - public void checkNoEquals() { - final StateToken token1 = new StateToken("abc", "da", "1", "1"); - final StateToken token2 = new StateToken("abc", "da", 1L); - assertFalse(token1.equals(token2)); - } - - @Test - public void parseEncodedNotCatched() { - final StateToken token1 = new StateToken(); - final StateToken token2 = new StateToken(); - token1.getEncoded(); - token2.getEncoded(); - token1.setEncoded("abc.da.1.1"); - token2.setEncoded("abc.da.1.2"); - assertFalse(token1.equals(token2)); - } -} Deleted: trunk/src/test/java/cc/kune/core/client/state/TokenMatcherTest.java =================================================================== --- trunk/src/test/java/cc/kune/core/client/state/TokenMatcherTest.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/test/java/cc/kune/core/client/state/TokenMatcherTest.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -1,152 +0,0 @@ -/* - * - * Copyright (C) 2007-2011 The kune development team (see CREDITS for details) - * This file is part of kune. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * - */ -package cc.kune.core.client.state; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertTrue; - -import org.junit.Before; -import org.junit.Test; -import org.waveprotocol.wave.util.escapers.jvm.JavaWaverefEncoder; - -import cc.kune.core.shared.dto.ReservedWordsRegistryDTO; - -public class TokenMatcherTest { - - private static final String DEF_SITE_TOKEN = ""; - private static final String GROUP_TOKEN = "site.docs.1"; - private static final String GROUP_TOKEN_ONLY_PROJECT = "site"; - private static final String GROUP_TOKEN_ONLY_PROJECT_AND_TOOL = "site.docs"; - private static final String REDIRECT_LINK = "example.com/w+jsdKixyHhZA"; - private static final String SIGNIN_TOKEN = "signin"; - private static final String SIGNIN_TOKEN_WITH_REDIRECT = SIGNIN_TOKEN + "(" + REDIRECT_LINK + ")"; - private static final String SIGNIN_TOKEN_WITH_REDIRECT_TO_PREVIEW = SIGNIN_TOKEN + "(" + SiteTokens.PREVIEW + "(" - + REDIRECT_LINK + "))"; - private static final String WAVE_TOKEN_SAMPLE1 = "example.com/w+abcd"; - private static final String WAVE_TOKEN_SAMPLE2 = "example.com/w+abcd/~/conv+root"; - private static final String WAVE_TOKEN_SAMPLE3 = "example.com/w+abcd/~/conv+root/b+45kg"; - private TokenMatcher tokenMatcher; - - @Before - public void before() { - final ReservedWordsRegistryDTO reservedWords = new ReservedWordsRegistryDTO(); - reservedWords.add(SIGNIN_TOKEN); - tokenMatcher = new TokenMatcher(reservedWords); - tokenMatcher.init(JavaWaverefEncoder.INSTANCE); - } - - private void dontMatchGroupToken(final String token) { - assertFalse("Expected '" + token + "' dont match isGroup", tokenMatcher.isGroupToken(token)); - } - - @Test - public void dontMatchRedirect() { - dontMatchWaveToken(SIGNIN_TOKEN_WITH_REDIRECT); - dontMatchGroupToken(SIGNIN_TOKEN_WITH_REDIRECT); - assertFalse(tokenMatcher.hasRedirect(SIGNIN_TOKEN)); - } - - private void dontMatchWaveToken(final String token) { - assertFalse("Expected '" + token + "' dont match isWaveToken", tokenMatcher.isWaveToken(token)); - } - - private void matchGroupToken(final String token) { - assertTrue("Expected '" + token + "' match isGroup", tokenMatcher.isGroupToken(token)); - } - - private void matchWaveToken(final String token) { - assertTrue("Expected '" + token + "' match isWaveToken", tokenMatcher.isWaveToken(token)); - } - - @Test - public void matchWaveToken2() { - matchWaveToken(WAVE_TOKEN_SAMPLE2); - dontMatchGroupToken(WAVE_TOKEN_SAMPLE2); - } - - @Test - public void matchWaveToken3() { - matchWaveToken(WAVE_TOKEN_SAMPLE3); - dontMatchGroupToken(WAVE_TOKEN_SAMPLE3); - } - - @Test - public void shouldDontMatchNull() { - dontMatchWaveToken(null); - dontMatchWaveToken(""); - dontMatchGroupToken(null); - dontMatchGroupToken(""); - } - - @Test - public void shouldExtractRedirect() { - assertTrue(tokenMatcher.hasRedirect(SIGNIN_TOKEN_WITH_REDIRECT)); - assertEquals(SIGNIN_TOKEN, tokenMatcher.getRedirect(SIGNIN_TOKEN_WITH_REDIRECT).getLeft()); - assertEquals(REDIRECT_LINK, tokenMatcher.getRedirect(SIGNIN_TOKEN_WITH_REDIRECT).getRight()); - } - - @Test - public void shouldExtractRedirectInSignPreview() { - assertTrue(tokenMatcher.hasRedirect(SIGNIN_TOKEN_WITH_REDIRECT_TO_PREVIEW)); - assertEquals( - "Expected " + SIGNIN_TOKEN + " but: " - + tokenMatcher.getRedirect(SIGNIN_TOKEN_WITH_REDIRECT_TO_PREVIEW).getLeft(), SIGNIN_TOKEN, - tokenMatcher.getRedirect(SIGNIN_TOKEN_WITH_REDIRECT_TO_PREVIEW).getLeft()); - // assertEquals(REDIRECT_LINK, - // tokenMatcher.getRedirect(SIGNIN_TOKEN_WITH_REDIRECT).getRight()); - } - - @Test - public void shoulMatchCompleteToken() { - matchGroupToken(GROUP_TOKEN); - dontMatchWaveToken(GROUP_TOKEN); - } - - @Test - public void shoulMatchGroupToken() { - matchGroupToken(GROUP_TOKEN_ONLY_PROJECT); - dontMatchWaveToken(GROUP_TOKEN_ONLY_PROJECT); - } - - @Test - public void shoulMatchGroupToolToken() { - matchGroupToken(GROUP_TOKEN_ONLY_PROJECT_AND_TOOL); - dontMatchWaveToken(GROUP_TOKEN_ONLY_PROJECT_AND_TOOL); - } - - @Test - public void testDefSiteTokenDontMatch() { - dontMatchWaveToken(DEF_SITE_TOKEN); - dontMatchGroupToken(DEF_SITE_TOKEN); - } - - @Test - public void testMatchWaveToken1() { - matchWaveToken(WAVE_TOKEN_SAMPLE1); - dontMatchGroupToken(WAVE_TOKEN_SAMPLE1); - } - - @Test - public void testOtherSiteTokensDontMatch() { - dontMatchWaveToken(SIGNIN_TOKEN); - dontMatchGroupToken(SIGNIN_TOKEN); - } -} Copied: trunk/src/test/java/cc/kune/core/client/state/impl/EventBusTester.java (from rev 1655, trunk/src/test/java/cc/kune/core/client/state/EventBusTester.java) =================================================================== --- trunk/src/test/java/cc/kune/core/client/state/impl/EventBusTester.java (rev 0) +++ trunk/src/test/java/cc/kune/core/client/state/impl/EventBusTester.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -0,0 +1,59 @@ +/* + * + * Copyright (C) 2007-2011 The kune development team (see CREDITS for details) + * This file is part of kune. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ +package cc.kune.core.client.state.impl; + +import java.util.ArrayList; + +import com.google.gwt.event.shared.GwtEvent; +import com.google.gwt.event.shared.SimpleEventBus; + +public class EventBusTester extends SimpleEventBus { + private final ArrayList<GwtEvent<?>> all; + private GwtEvent<?> lastEvent; + + public EventBusTester() { + all = new ArrayList<GwtEvent<?>>(); + } + + @Override + public void fireEvent(final GwtEvent<?> event) { + all.add(event); + this.lastEvent = event; + super.fireEvent(event); + } + + public GwtEvent<?> getLastEvent() { + return lastEvent; + } + + @SuppressWarnings("unchecked") + public <T extends GwtEvent<?>> Class<T> getLastEventClass() { + return (Class<T>) lastEvent.getClass(); + } + + public boolean receivedEventOfClass(final Class<? extends GwtEvent<?>> eventClass) { + for (final GwtEvent<?> event : all) { + if (eventClass.equals(event.getClass())) { + return true; + } + } + return false; + } +} Copied: trunk/src/test/java/cc/kune/core/client/state/impl/StateManagerDefaultTest.java (from rev 1655, trunk/src/test/java/cc/kune/core/client/state/StateManagerDefaultTest.java) =================================================================== --- trunk/src/test/java/cc/kune/core/client/state/impl/StateManagerDefaultTest.java (rev 0) +++ trunk/src/test/java/cc/kune/core/client/state/impl/StateManagerDefaultTest.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -0,0 +1,342 @@ +/* + * + * Copyright (C) 2007-2011 The kune development team (see CREDITS for details) + * This file is part of kune. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ +package cc.kune.core.client.state.impl; + +import static org.mockito.Matchers.anyBoolean; + +import org.junit.Before; +import org.junit.Test; +import org.mockito.Mockito; +import org.mockito.invocation.InvocationOnMock; +import org.mockito.stubbing.Answer; + +import cc.kune.common.client.actions.BeforeActionListener; +import cc.kune.core.client.events.AppStartEvent; +import cc.kune.core.client.events.GroupChangedEvent; +import cc.kune.core.client.events.StateChangedEvent; +import cc.kune.core.client.events.ToolChangedEvent; +import cc.kune.core.client.events.UserSignInEvent; +import cc.kune.core.client.events.UserSignOutEvent; +import cc.kune.core.client.events.AppStartEvent.AppStartHandler; +import cc.kune.core.client.events.GroupChangedEvent.GroupChangedHandler; +import cc.kune.core.client.events.StateChangedEvent.StateChangedHandler; +import cc.kune.core.client.events.ToolChangedEvent.ToolChangedHandler; +import cc.kune.core.client.events.UserSignInEvent.UserSignInHandler; +import cc.kune.core.client.events.UserSignOutEvent.UserSignOutHandler; +import cc.kune.core.client.state.ContentCache; +import cc.kune.core.client.state.HistoryTokenCallback; +import cc.kune.core.client.state.HistoryWrapper; +import cc.kune.core.client.state.Session; +import cc.kune.core.client.state.SiteTokenListeners; +import cc.kune.core.client.state.SiteTokens; +import cc.kune.core.client.state.TokenMatcher; +import cc.kune.core.client.state.impl.StateManagerDefault; +import cc.kune.core.shared.domain.utils.StateToken; +import cc.kune.core.shared.dto.InitDataDTO; +import cc.kune.core.shared.dto.StateAbstractDTO; + +import com.google.gwt.user.client.rpc.AsyncCallback; + +public class StateManagerDefaultTest { + + private static final StateToken EMPTY_TOKEN = null; + private static final StateToken GROUP1_TOOL1 = new StateToken("group1.tool1"); + private static final StateToken GROUP1_TOOL2 = new StateToken("group1.tool2"); + private static final StateToken GROUP2_TOOL1 = new StateToken("group2.tool1"); + private static final String HASH = "someUserHash"; + private BeforeActionListener beforeChangeListener1; + private BeforeActionListener beforeChangeListener2; + private ContentCache contentProvider; + private EventBusTester eventBus; + private GroupChangedHandler groupChangeHandler; + private HistoryWrapper history; + private Session session; + private SiteTokenListeners siteTokens; + private StateAbstractDTO state; + private StateChangedHandler stateChangeHandler; + private StateManagerDefault stateManager; + private TokenMatcher tokenMatcher; + private ToolChangedHandler toolChangeHandler; + + @Before + public void before() { + contentProvider = Mockito.mock(ContentCache.class); + session = Mockito.mock(Session.class); + history = Mockito.mock(HistoryWrapper.class); + tokenMatcher = Mockito.mock(TokenMatcher.class); + siteTokens = Mockito.mock(SiteTokenListeners.class); + eventBus = new EventBusTester(); + Mockito.when(session.getUserHash()).thenReturn(HASH); + Mockito.doAnswer(new Answer<Object>() { + @Override + public Object answer(final InvocationOnMock invocation) throws Throwable { + eventBus.addHandler(UserSignInEvent.getType(), (UserSignInHandler) invocation.getArguments()[1]); + return null; + } + }).when(session).onUserSignIn(anyBoolean(), (UserSignInHandler) Mockito.anyObject()); + Mockito.doAnswer(new Answer<Object>() { + @Override + public Object answer(final InvocationOnMock invocation) throws Throwable { + eventBus.addHandler(UserSignOutEvent.getType(), + (UserSignOutHandler) invocation.getArguments()[1]); + return null; + } + }).when(session).onUserSignOut(anyBoolean(), (UserSignOutHandler) Mockito.anyObject()); + Mockito.doAnswer(new Answer<Object>() { + @Override + public Object answer(final InvocationOnMock invocation) throws Throwable { + eventBus.addHandler(AppStartEvent.getType(), (AppStartHandler) invocation.getArguments()[1]); + return null; + } + }).when(session).onAppStart(anyBoolean(), (AppStartHandler) Mockito.anyObject()); + state = Mockito.mock(StateAbstractDTO.class); + stateManager = new StateManagerDefault(contentProvider, session, history, tokenMatcher, eventBus, + siteTokens); + stateChangeHandler = Mockito.mock(StateChangedHandler.class); + groupChangeHandler = Mockito.mock(GroupChangedHandler.class); + toolChangeHandler = Mockito.mock(ToolChangedHandler.class); + beforeChangeListener1 = Mockito.mock(BeforeActionListener.class); + beforeChangeListener2 = Mockito.mock(BeforeActionListener.class); + eventBus.addHandler(StateChangedEvent.getType(), stateChangeHandler); + eventBus.addHandler(GroupChangedEvent.getType(), groupChangeHandler); + eventBus.addHandler(ToolChangedEvent.getType(), toolChangeHandler); + // new NotifyUser(null, null); + } + + @Test + public void changeGroupWithNoTool() { + changeState("group1", "group2"); + Mockito.verify(stateChangeHandler, Mockito.times(2)).onStateChanged( + (StateChangedEvent) Mockito.anyObject()); + Mockito.verify(groupChangeHandler, Mockito.times(2)).onGroupChanged( + (GroupChangedEvent) Mockito.anyObject()); + Mockito.verify(groupChangeHandler, Mockito.times(2)).onGroupChanged( + (GroupChangedEvent) Mockito.anyObject()); + } + + private void changeState(final String... tokens) { + for (final String token : tokens) { + Mockito.when(state.getStateToken()).thenReturn(new StateToken(token)); + stateManager.setState(state); + } + } + + @Test + public void changeStateWithDifferentAndGroupsToolsMustFireListener() { + changeState("group2.tool1", "group1.tool2"); + Mockito.verify(stateChangeHandler, Mockito.times(2)).onStateChanged( + (StateChangedEvent) Mockito.anyObject()); + Mockito.verify(groupChangeHandler, Mockito.times(2)).onGroupChanged( + (GroupChangedEvent) Mockito.anyObject()); + Mockito.verify(toolChangeHandler, Mockito.times(2)).onToolChanged( + (ToolChangedEvent) Mockito.anyObject()); + Mockito.verify(groupChangeHandler, Mockito.times(1)).onGroupChanged( + new GroupChangedEvent("", "group2")); + Mockito.verify(groupChangeHandler, Mockito.times(1)).onGroupChanged( + new GroupChangedEvent("group2", "group1")); + Mockito.verify(toolChangeHandler, Mockito.times(1)).onToolChanged( + new ToolChangedEvent(EMPTY_TOKEN, GROUP2_TOOL1)); + Mockito.verify(toolChangeHandler, Mockito.times(1)).onToolChanged( + new ToolChangedEvent(GROUP2_TOOL1, GROUP1_TOOL2)); + } + + @Test + public void changeStateWithDifferentGroupsMustFireListener() { + changeState("group1.tool1", "group2.tool1"); + // assertTrue(stateChangeListener.isCalled(2)); + // assertTrue(groupChangeListener.isCalledWithEquals("", "group1", + // "group1", "group2")); + // assertTrue(toolChangeListener.isCalledWithEquals("", "tool1")); + Mockito.verify(stateChangeHandler, Mockito.times(2)).onStateChanged( + (StateChangedEvent) Mockito.anyObject()); + Mockito.verify(groupChangeHandler, Mockito.times(2)).onGroupChanged( + (GroupChangedEvent) Mockito.anyObject()); + Mockito.verify(toolChangeHandler, Mockito.times(1)).onToolChanged( + (ToolChangedEvent) Mockito.anyObject()); + Mockito.verify(groupChangeHandler, Mockito.times(1)).onGroupChanged( + new GroupChangedEvent("", "group1")); + Mockito.verify(groupChangeHandler, Mockito.times(1)).onGroupChanged( + new GroupChangedEvent("group1", "group2")); + Mockito.verify(toolChangeHandler, Mockito.times(1)).onToolChanged( + new ToolChangedEvent(null, GROUP1_TOOL1)); + + } + + @Test + public void changeStateWithDifferentToolsMustFireListener() { + changeState("group1.tool1", "group1.tool2"); + Mockito.verify(stateChangeHandler, Mockito.times(2)).onStateChanged( + (StateChangedEvent) Mockito.anyObject()); + Mockito.verify(groupChangeHandler, Mockito.times(1)).onGroupChanged( + (GroupChangedEvent) Mockito.anyObject()); + Mockito.verify(toolChangeHandler, Mockito.times(2)).onToolChanged( + (ToolChangedEvent) Mockito.anyObject()); + Mockito.verify(groupChangeHandler, Mockito.times(1)).onGroupChanged( + new GroupChangedEvent("", "group1")); + Mockito.verify(toolChangeHandler, Mockito.times(1)).onToolChanged( + new ToolChangedEvent(EMPTY_TOKEN, GROUP1_TOOL1)); + Mockito.verify(toolChangeHandler, Mockito.times(1)).onToolChanged( + new ToolChangedEvent(GROUP1_TOOL1, GROUP1_TOOL2)); + } + + @Test + public void changeToNoTool() { + changeState("group1.tool1", "group1"); + Mockito.verify(stateChangeHandler, Mockito.times(2)).onStateChanged( + (StateChangedEvent) Mockito.anyObject()); + Mockito.verify(groupChangeHandler, Mockito.times(1)).onGroupChanged( + (GroupChangedEvent) Mockito.anyObject()); + Mockito.verify(toolChangeHandler, Mockito.times(2)).onToolChanged( + (ToolChangedEvent) Mockito.anyObject()); + Mockito.verify(groupChangeHandler, Mockito.times(1)).onGroupChanged( + new GroupChangedEvent("", "group1")); + Mockito.verify(toolChangeHandler, Mockito.times(1)).onToolChanged( + new ToolChangedEvent(EMPTY_TOKEN, GROUP1_TOOL1)); + Mockito.verify(toolChangeHandler, Mockito.times(1)).onToolChanged( + new ToolChangedEvent(GROUP1_TOOL1, new StateToken("group1"))); + } + + @Test + public void changeToSameToken() { + changeState("group1.tool1", "group1.tool1"); + Mockito.verify(stateChangeHandler, Mockito.times(2)).onStateChanged( + (StateChangedEvent) Mockito.anyObject()); + Mockito.verify(groupChangeHandler, Mockito.times(1)).onGroupChanged( + (GroupChangedEvent) Mockito.anyObject()); + Mockito.verify(toolChangeHandler, Mockito.times(1)).onToolChanged( + (ToolChangedEvent) Mockito.anyObject()); + Mockito.verify(groupChangeHandler, Mockito.times(1)).onGroupChanged( + new GroupChangedEvent("", "group1")); + Mockito.verify(toolChangeHandler, Mockito.times(1)).onToolChanged( + new ToolChangedEvent(EMPTY_TOKEN, GROUP1_TOOL1)); + } + + private String confBeforeStateChangeListeners(final boolean value, final boolean value2) { + stateManager.addBeforeStateChangeListener(beforeChangeListener1); + stateManager.addBeforeStateChangeListener(beforeChangeListener2); + final String newToken = "something"; + Mockito.when(beforeChangeListener1.beforeAction()).thenReturn(value); + Mockito.when(beforeChangeListener2.beforeAction()).thenReturn(value2); + return newToken; + } + + @SuppressWarnings("unchecked") + @Test + public void getDefGroup() { + stateManager.processHistoryToken("site.docs"); + verifyGetServerContent(); + } + + public void getWaveToken() { + stateManager.processHistoryToken("example.com/w+abcd/~/conv+root/b+45kg"); + } + + @SuppressWarnings("unchecked") + @Test + public void normalStartLoggedUser() { + // When a user enter reload state, also if the application is starting + // (and the user was logged) + Mockito.when(history.getToken()).thenReturn(""); + stateManager.refreshCurrentState(); + verifyGetServerContent(); + } + + @SuppressWarnings("unchecked") + @Test + public void oneBeforeStateChangeListenerAddAndRemove() { + final String newToken = confBeforeStateChangeListeners(false, false); + stateManager.processHistoryToken(newToken); + removeBeforeStateChangeListener(); + stateManager.processHistoryToken(newToken); + verifyGetServerContent(); + } + + @Test + public void oneBeforeStateChangeListenerFalseAndResume() { + final String token = confBeforeStateChangeListeners(false, true); + stateManager.processHistoryToken(token); + Mockito.verify(history, Mockito.never()).newItem(token); + removeBeforeStateChangeListener(); + stateManager.resumeTokenChange(); + Mockito.verify(history, Mockito.times(1)).newItem(token); + } + + @SuppressWarnings("unchecked") + @Test + public void oneBeforeStateChangeListenerReturnFalse() { + stateManager.processHistoryToken(confBeforeStateChangeListeners(true, false)); + Mockito.verify(contentProvider, Mockito.never()).getContent(Mockito.anyString(), + (StateToken) Mockito.anyObject(), (AsyncCallback<StateAbstractDTO>) Mockito.anyObject()); + } + + @SuppressWarnings("unchecked") + @Test + public void oneBeforeStateChangeListenerReturnFalseWithTwo() { + stateManager.processHistoryToken(confBeforeStateChangeListeners(false, false)); + Mockito.verify(contentProvider, Mockito.never()).getContent(Mockito.anyString(), + (StateToken) Mockito.anyObject(), (AsyncCallback<StateAbstractDTO>) Mockito.anyObject()); + } + + @SuppressWarnings("unchecked") + @Test + public void oneBeforeStateChangeListenerReturnTrue() { + stateManager.processHistoryToken(confBeforeStateChangeListeners(true, true)); + verifyGetServerContent(); + } + + private void removeBeforeStateChangeListener() { + stateManager.removeBeforeStateChangeListener(beforeChangeListener1); + stateManager.removeBeforeStateChangeListener(beforeChangeListener2); + } + + @SuppressWarnings("unchecked") + @Test + public void siteTokenFirstLoadDefContentAndFireListener() { + final HistoryTokenCallback listener = Mockito.mock(HistoryTokenCallback.class); + final String token = SiteTokens.SIGNIN; + stateManager.addSiteToken(token, listener); + Mockito.when(siteTokens.get(SiteTokens.SIGNIN)).thenReturn(listener); + stateManager.processHistoryToken(token); + Mockito.verify(listener, Mockito.times(1)).onHistoryToken(Mockito.anyString()); + verifyGetServerContent(); + } + + @Test + public void siteTokenTest() { + final HistoryTokenCallback listener = Mockito.mock(HistoryTokenCallback.class); + stateManager.addSiteToken(SiteTokens.SIGNIN, listener); + Mockito.when(siteTokens.get(SiteTokens.SIGNIN)).thenReturn(listener); + stateManager.processHistoryToken("signIn"); + Mockito.verify(listener, Mockito.times(1)).onHistoryToken(Mockito.anyString()); + } + + @Test + public void startMustLoadContent() { + final InitDataDTO initData = Mockito.mock(InitDataDTO.class); + Mockito.when(history.getToken()).thenReturn(""); + eventBus.fireEvent(new AppStartEvent(initData)); + verifyGetServerContent(); + } + + private void verifyGetServerContent() { + Mockito.verify(contentProvider, Mockito.times(1)).getContent(Mockito.anyString(), + (StateToken) Mockito.anyObject(), (AsyncCallback<StateAbstractDTO>) Mockito.anyObject()); + } +} Copied: trunk/src/test/java/cc/kune/core/client/state/impl/StateTokenTest.java (from rev 1655, trunk/src/test/java/cc/kune/core/client/state/StateTokenTest.java) =================================================================== --- trunk/src/test/java/cc/kune/core/client/state/impl/StateTokenTest.java (rev 0) +++ trunk/src/test/java/cc/kune/core/client/state/impl/StateTokenTest.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -0,0 +1,72 @@ +/* + * + * Copyright (C) 2007-2011 The kune development team (see CREDITS for details) + * This file is part of kune. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ +package cc.kune.core.client.state.impl; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNull; + +import org.junit.Test; + +import cc.kune.core.shared.domain.utils.StateToken; + +public class StateTokenTest { + + @Test + public void checkAllEmpty() { + final StateToken token = new StateToken(""); + assertNull(token.getGroup()); + assertNull(token.getTool()); + assertNull(token.getFolder()); + assertNull(token.getDocument()); + } + + @Test + public void checkEquals() { + final StateToken token1 = new StateToken("abc", "da", "1", "1"); + final StateToken token2 = new StateToken("abc", "da", "1", "1"); + assertEquals(token1, token2); + } + + @Test + public void checkEqualsEncoded() { + final StateToken token1 = new StateToken("abc.da.1.1"); + final StateToken token2 = new StateToken("abc.da.1.1"); + assertEquals(token1, token2); + } + + @Test + public void checkNoEquals() { + final StateToken token1 = new StateToken("abc", "da", "1", "1"); + final StateToken token2 = new StateToken("abc", "da", 1L); + assertFalse(token1.equals(token2)); + } + + @Test + public void parseEncodedNotCatched() { + final StateToken token1 = new StateToken(); + final StateToken token2 = new StateToken(); + token1.getEncoded(); + token2.getEncoded(); + token1.setEncoded("abc.da.1.1"); + token2.setEncoded("abc.da.1.2"); + assertFalse(token1.equals(token2)); + } +} Copied: trunk/src/test/java/cc/kune/core/client/state/impl/TokenMatcherTest.java (from rev 1655, trunk/src/test/java/cc/kune/core/client/state/TokenMatcherTest.java) =================================================================== --- trunk/src/test/java/cc/kune/core/client/state/impl/TokenMatcherTest.java (rev 0) +++ trunk/src/test/java/cc/kune/core/client/state/impl/TokenMatcherTest.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -0,0 +1,154 @@ +/* + * + * Copyright (C) 2007-2011 The kune development team (see CREDITS for details) + * This file is part of kune. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ +package cc.kune.core.client.state.impl; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; + +import org.junit.Before; +import org.junit.Test; +import org.waveprotocol.wave.util.escapers.jvm.JavaWaverefEncoder; + +import cc.kune.core.client.state.SiteTokens; +import cc.kune.core.client.state.TokenMatcher; +import cc.kune.core.shared.dto.ReservedWordsRegistryDTO; + +public class TokenMatcherTest { + + private static final String DEF_SITE_TOKEN = ""; + private static final String GROUP_TOKEN = "site.docs.1"; + private static final String GROUP_TOKEN_ONLY_PROJECT = "site"; + private static final String GROUP_TOKEN_ONLY_PROJECT_AND_TOOL = "site.docs"; + private static final String REDIRECT_LINK = "example.com/w+jsdKixyHhZA"; + private static final String SIGNIN_TOKEN = "signin"; + private static final String SIGNIN_TOKEN_WITH_REDIRECT = SIGNIN_TOKEN + "(" + REDIRECT_LINK + ")"; + private static final String SIGNIN_TOKEN_WITH_REDIRECT_TO_PREVIEW = SIGNIN_TOKEN + "(" + SiteTokens.PREVIEW + "(" + + REDIRECT_LINK + "))"; + private static final String WAVE_TOKEN_SAMPLE1 = "example.com/w+abcd"; + private static final String WAVE_TOKEN_SAMPLE2 = "example.com/w+abcd/~/conv+root"; + private static final String WAVE_TOKEN_SAMPLE3 = "example.com/w+abcd/~/conv+root/b+45kg"; + private TokenMatcher tokenMatcher; + + @Before + public void before() { + final ReservedWordsRegistryDTO reservedWords = new ReservedWordsRegistryDTO(); + reservedWords.add(SIGNIN_TOKEN); + tokenMatcher = new TokenMatcher(reservedWords); + tokenMatcher.init(JavaWaverefEncoder.INSTANCE); + } + + private void dontMatchGroupToken(final String token) { + assertFalse("Expected '" + token + "' dont match isGroup", tokenMatcher.isGroupToken(token)); + } + + @Test + public void dontMatchRedirect() { + dontMatchWaveToken(SIGNIN_TOKEN_WITH_REDIRECT); + dontMatchGroupToken(SIGNIN_TOKEN_WITH_REDIRECT); + assertFalse(tokenMatcher.hasRedirect(SIGNIN_TOKEN)); + } + + private void dontMatchWaveToken(final String token) { + assertFalse("Expected '" + token + "' dont match isWaveToken", tokenMatcher.isWaveToken(token)); + } + + private void matchGroupToken(final String token) { + assertTrue("Expected '" + token + "' match isGroup", tokenMatcher.isGroupToken(token)); + } + + private void matchWaveToken(final String token) { + assertTrue("Expected '" + token + "' match isWaveToken", tokenMatcher.isWaveToken(token)); + } + + @Test + public void matchWaveToken2() { + matchWaveToken(WAVE_TOKEN_SAMPLE2); + dontMatchGroupToken(WAVE_TOKEN_SAMPLE2); + } + + @Test + public void matchWaveToken3() { + matchWaveToken(WAVE_TOKEN_SAMPLE3); + dontMatchGroupToken(WAVE_TOKEN_SAMPLE3); + } + + @Test + public void shouldDontMatchNull() { + dontMatchWaveToken(null); + dontMatchWaveToken(""); + dontMatchGroupToken(null); + dontMatchGroupToken(""); + } + + @Test + public void shouldExtractRedirect() { + assertTrue(tokenMatcher.hasRedirect(SIGNIN_TOKEN_WITH_REDIRECT)); + assertEquals(SIGNIN_TOKEN, tokenMatcher.getRedirect(SIGNIN_TOKEN_WITH_REDIRECT).getLeft()); + assertEquals(REDIRECT_LINK, tokenMatcher.getRedirect(SIGNIN_TOKEN_WITH_REDIRECT).getRight()); + } + + @Test + public void shouldExtractRedirectInSignPreview() { + assertTrue(tokenMatcher.hasRedirect(SIGNIN_TOKEN_WITH_REDIRECT_TO_PREVIEW)); + assertEquals( + "Expected " + SIGNIN_TOKEN + " but: " + + tokenMatcher.getRedirect(SIGNIN_TOKEN_WITH_REDIRECT_TO_PREVIEW).getLeft(), SIGNIN_TOKEN, + tokenMatcher.getRedirect(SIGNIN_TOKEN_WITH_REDIRECT_TO_PREVIEW).getLeft()); + // assertEquals(REDIRECT_LINK, + // tokenMatcher.getRedirect(SIGNIN_TOKEN_WITH_REDIRECT).getRight()); + } + + @Test + public void shoulMatchCompleteToken() { + matchGroupToken(GROUP_TOKEN); + dontMatchWaveToken(GROUP_TOKEN); + } + + @Test + public void shoulMatchGroupToken() { + matchGroupToken(GROUP_TOKEN_ONLY_PROJECT); + dontMatchWaveToken(GROUP_TOKEN_ONLY_PROJECT); + } + + @Test + public void shoulMatchGroupToolToken() { + matchGroupToken(GROUP_TOKEN_ONLY_PROJECT_AND_TOOL); + dontMatchWaveToken(GROUP_TOKEN_ONLY_PROJECT_AND_TOOL); + } + + @Test + public void testDefSiteTokenDontMatch() { + dontMatchWaveToken(DEF_SITE_TOKEN); + dontMatchGroupToken(DEF_SITE_TOKEN); + } + + @Test + public void testMatchWaveToken1() { + matchWaveToken(WAVE_TOKEN_SAMPLE1); + dontMatchGroupToken(WAVE_TOKEN_SAMPLE1); + } + + @Test + public void testOtherSiteTokensDontMatch() { + dontMatchWaveToken(SIGNIN_TOKEN); + dontMatchGroupToken(SIGNIN_TOKEN); + } +} Modified: trunk/src/test/java/cc/kune/core/server/manager/ContentManagerDefaultTest.java =================================================================== --- trunk/src/test/java/cc/kune/core/server/manager/ContentManagerDefaultTest.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/test/java/cc/kune/core/server/manager/ContentManagerDefaultTest.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -30,7 +30,6 @@ import cc.kune.core.client.errors.MoveOnSameContainerException; import cc.kune.core.client.errors.NameInUseException; import cc.kune.core.server.PersistencePreLoadedDataTest; -import cc.kune.core.server.manager.impl.SearchResult; import cc.kune.domain.BasicMimeType; import cc.kune.domain.Content; Modified: trunk/src/test/java/cc/kune/core/server/manager/GroupManagerDefaultTest.java =================================================================== --- trunk/src/test/java/cc/kune/core/server/manager/GroupManagerDefaultTest.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/test/java/cc/kune/core/server/manager/GroupManagerDefaultTest.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -34,7 +34,6 @@ import cc.kune.core.client.errors.I18nNotFoundException; import cc.kune.core.client.errors.UserRegistrationException; import cc.kune.core.server.PersistencePreLoadedDataTest; -import cc.kune.core.server.manager.impl.SearchResult; import cc.kune.core.shared.dto.GroupType; import cc.kune.domain.AccessLists; import cc.kune.domain.Group; Modified: trunk/src/test/java/cc/kune/core/server/manager/TagUserContentTest.java =================================================================== --- trunk/src/test/java/cc/kune/core/server/manager/TagUserContentTest.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/test/java/cc/kune/core/server/manager/TagUserContentTest.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -29,7 +29,7 @@ import cc.kune.core.server.PersistencePreLoadedDataTest; import cc.kune.core.server.manager.TagManager; -import cc.kune.core.server.manager.TagUserContentManagerDefault; +import cc.kune.core.server.manager.impl.TagUserContentManagerDefault; import cc.kune.domain.Tag; import cc.kune.domain.TagUserContent; import cc.kune.domain.finders.TagUserContentFinder; Modified: trunk/src/test/java/cc/kune/core/server/manager/UserManagerDefaultTest.java =================================================================== --- trunk/src/test/java/cc/kune/core/server/manager/UserManagerDefaultTest.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/test/java/cc/kune/core/server/manager/UserManagerDefaultTest.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -34,7 +34,6 @@ import cc.kune.core.client.errors.GroupShortNameInUseException; import cc.kune.core.client.errors.I18nNotFoundException; import cc.kune.core.server.PersistencePreLoadedDataTest; -import cc.kune.core.server.manager.impl.SearchResult; import cc.kune.core.shared.domain.UserSNetVisibility; import cc.kune.domain.Group; import cc.kune.domain.User; Modified: trunk/src/test/java/cc/kune/gspace/client/tags/TagsSummaryPresenterTest.java =================================================================== --- trunk/src/test/java/cc/kune/gspace/client/tags/TagsSummaryPresenterTest.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/test/java/cc/kune/gspace/client/tags/TagsSummaryPresenterTest.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -25,9 +25,9 @@ import org.junit.Test; import org.mockito.Mockito; -import cc.kune.core.client.state.EventBusTester; import cc.kune.core.client.state.Session; import cc.kune.core.client.state.StateManager; +import cc.kune.core.client.state.impl.EventBusTester; import cc.kune.core.shared.domain.TagCloudResult; import cc.kune.core.shared.domain.TagCount; import cc.kune.core.shared.dto.StateContainerDTO; Modified: trunk/src/test/java/cc/kune/gspace/client/tool/selector/ToolSelectorPresenterTest.java =================================================================== --- trunk/src/test/java/cc/kune/gspace/client/tool/selector/ToolSelectorPresenterTest.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/test/java/cc/kune/gspace/client/tool/selector/ToolSelectorPresenterTest.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -23,8 +23,8 @@ import org.junit.Test; import org.mockito.Mockito; -import cc.kune.core.client.state.EventBusTester; import cc.kune.core.client.state.StateManager; +import cc.kune.core.client.state.impl.EventBusTester; import cc.kune.core.shared.domain.utils.StateToken; import cc.kune.gspace.client.tool.selector.ToolSelectorPresenter.ToolSelectorProxy; import cc.kune.gspace.client.tool.selector.ToolSelectorPresenter.ToolSelectorView; Modified: trunk/src/test/java/cc/kune/wave/server/KuneAgentTest.java =================================================================== --- trunk/src/test/java/cc/kune/wave/server/KuneAgentTest.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/test/java/cc/kune/wave/server/KuneAgentTest.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -37,6 +37,8 @@ import org.waveprotocol.wave.model.wave.ParticipantId; import org.waveprotocol.wave.model.waveref.WaveRef; +import cc.kune.wave.server.kspecific.KuneAgent; + import com.google.common.collect.Lists; import com.google.wave.api.Wavelet; Modified: trunk/src/test/java/cc/kune/wave/server/KuneWaveServiceDefaultTest.java =================================================================== --- trunk/src/test/java/cc/kune/wave/server/KuneWaveServiceDefaultTest.java 2012-01-06 20:54:28 UTC (rev 1655) +++ trunk/src/test/java/cc/kune/wave/server/KuneWaveServiceDefaultTest.java 2012-01-08 23:06:53 UTC (rev 1656) @@ -40,6 +40,7 @@ import cc.kune.core.client.errors.DefaultException; import cc.kune.core.server.integration.IntegrationTest; import cc.kune.core.server.integration.IntegrationTestHelper; +import cc.kune.wave.server.kspecific.KuneWaveService; import com.google.inject.Inject; import com.google.wave.api.Element;
participants (1)
-
Vicente J. Ruiz Jurado