r898 - in trunk/src: main/java/org/ourproject/kune/docs/client main/java/org/ourproject/kune/docs/client/cnt main/java/org/ourproject/kune/platf/client/actions main/java/org/ourproject/kune/platf/client/actions/toolbar main/java/org/ourproject/kune/platf/client/dto main/java/org/ourproject/kune/platf/client/services main/java/org/ourproject/kune/platf/client/state main/java/org/ourproject/kune/platf/server/access main/java/org/ourproject/kune/platf/server/domain main/java/org/ourproject/kune/
Author: vjrj Date: 2008-10-01 03:29:01 +0200 (Wed, 01 Oct 2008) New Revision: 898 Added: trunk/src/main/java/org/ourproject/kune/workspace/client/editor/WrappedRichTextAreaImplOpera.java trunk/src/main/java/org/ourproject/kune/workspace/client/editor/WrappedRichTextAreaImplSafari.java Removed: trunk/src/main/java/org/ourproject/kune/workspace/client/editor/TextEditorListener.java Modified: trunk/src/main/java/org/ourproject/kune/docs/client/DocumentClientActions.java trunk/src/main/java/org/ourproject/kune/docs/client/DocumentClientModule.java trunk/src/main/java/org/ourproject/kune/docs/client/cnt/DocumentContent.java trunk/src/main/java/org/ourproject/kune/docs/client/cnt/DocumentContentPresenter.java trunk/src/main/java/org/ourproject/kune/platf/client/actions/ActionRegistry.java trunk/src/main/java/org/ourproject/kune/platf/client/actions/toolbar/ActionToolbarPresenter.java trunk/src/main/java/org/ourproject/kune/platf/client/dto/AccessListsDTO.java trunk/src/main/java/org/ourproject/kune/platf/client/dto/AccessRightsDTO.java trunk/src/main/java/org/ourproject/kune/platf/client/dto/GroupDTO.java trunk/src/main/java/org/ourproject/kune/platf/client/dto/GroupListDTO.java trunk/src/main/java/org/ourproject/kune/platf/client/dto/LinkDTO.java trunk/src/main/java/org/ourproject/kune/platf/client/dto/ParticipationDataDTO.java trunk/src/main/java/org/ourproject/kune/platf/client/dto/SocialNetworkDTO.java trunk/src/main/java/org/ourproject/kune/platf/client/dto/SocialNetworkResultDTO.java trunk/src/main/java/org/ourproject/kune/platf/client/dto/StateDTO.java trunk/src/main/java/org/ourproject/kune/platf/client/dto/TagDTO.java trunk/src/main/java/org/ourproject/kune/platf/client/dto/TagResultDTO.java trunk/src/main/java/org/ourproject/kune/platf/client/dto/UserDTO.java trunk/src/main/java/org/ourproject/kune/platf/client/dto/UserSimpleDTO.java trunk/src/main/java/org/ourproject/kune/platf/client/services/KuneModule.java trunk/src/main/java/org/ourproject/kune/platf/client/state/StateManager.java trunk/src/main/java/org/ourproject/kune/platf/client/state/StateManagerDefault.java trunk/src/main/java/org/ourproject/kune/platf/server/access/AccessRights.java trunk/src/main/java/org/ourproject/kune/platf/server/domain/AccessLists.java trunk/src/main/java/org/ourproject/kune/platf/server/domain/Group.java trunk/src/main/java/org/ourproject/kune/platf/server/domain/GroupList.java trunk/src/main/java/org/ourproject/kune/platf/server/domain/I18nLanguage.java trunk/src/main/java/org/ourproject/kune/platf/server/domain/I18nTranslation.java trunk/src/main/java/org/ourproject/kune/platf/server/domain/SocialNetwork.java trunk/src/main/java/org/ourproject/kune/platf/server/domain/User.java trunk/src/main/java/org/ourproject/kune/platf/server/state/State.java trunk/src/main/java/org/ourproject/kune/workspace/Kune-Workspace.gwt.xml trunk/src/main/java/org/ourproject/kune/workspace/client/ctxnav/ContextNavigatorPanel.java trunk/src/main/java/org/ourproject/kune/workspace/client/editor/TextEditor.java trunk/src/main/java/org/ourproject/kune/workspace/client/editor/TextEditorPanel.java trunk/src/main/java/org/ourproject/kune/workspace/client/editor/TextEditorPresenter.java trunk/src/main/java/org/ourproject/kune/workspace/client/editor/TextEditorToolbar.java trunk/src/main/java/org/ourproject/kune/workspace/client/editor/TextEditorView.java trunk/src/main/java/org/ourproject/kune/workspace/client/editor/WrappedRichTextAreaImplIE6.java trunk/src/main/java/org/ourproject/kune/workspace/client/editor/WrappedRichTextAreaImplMozilla.java trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/ParticipationSummaryPresenter.java trunk/src/test/java/org/ourproject/kune/platf/client/actions/ActionRegistryTest.java trunk/src/test/java/org/ourproject/kune/workspace/client/editor/TextEditorPresenterTest.java Log: Editor refactorization (not finished) RichTextArea css injets. toStrings in DTOs for better logs. Complete - task 62: ContextNav tree scroll problem Modified: trunk/src/main/java/org/ourproject/kune/docs/client/DocumentClientActions.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/docs/client/DocumentClientActions.java 2008-09-30 01:49:58 UTC (rev 897) +++ trunk/src/main/java/org/ourproject/kune/docs/client/DocumentClientActions.java 2008-10-01 01:29:01 UTC (rev 898) @@ -10,6 +10,7 @@ import static org.ourproject.kune.docs.client.DocumentClientTool.TYPE_WIKI; import static org.ourproject.kune.docs.client.DocumentClientTool.TYPE_WIKIPAGE; +import org.ourproject.kune.docs.client.cnt.DocumentContent; import org.ourproject.kune.platf.client.actions.ActionEnableCondition; import org.ourproject.kune.platf.client.actions.ActionMenuItemDescriptor; import org.ourproject.kune.platf.client.actions.ActionToolbarButtonAndItemDescriptor; @@ -27,20 +28,25 @@ import org.ourproject.kune.platf.client.dto.InitDataDTO; import org.ourproject.kune.platf.client.dto.StateDTO; import org.ourproject.kune.platf.client.dto.StateToken; +import org.ourproject.kune.platf.client.errors.SessionExpiredException; import org.ourproject.kune.platf.client.rpc.AsyncCallbackSimple; import org.ourproject.kune.platf.client.rpc.ContentServiceAsync; import org.ourproject.kune.platf.client.rpc.GroupServiceAsync; +import org.ourproject.kune.platf.client.services.KuneErrorHandler; import org.ourproject.kune.platf.client.state.Session; import org.ourproject.kune.platf.client.state.StateManager; import org.ourproject.kune.platf.client.ui.download.FileDownloadUtils; import org.ourproject.kune.platf.client.ui.upload.FileUploader; import org.ourproject.kune.workspace.client.ctxnav.ContextNavigator; +import org.ourproject.kune.workspace.client.editor.TextEditor; import org.ourproject.kune.workspace.client.entitylogo.EntityLogo; import org.ourproject.kune.workspace.client.i18n.I18nUITranslationService; import org.ourproject.kune.workspace.client.site.Site; import com.calclab.suco.client.ioc.Provider; import com.calclab.suco.client.listener.Listener; +import com.calclab.suco.client.listener.Listener0; +import com.google.gwt.user.client.rpc.AsyncCallback; public class DocumentClientActions { @@ -55,13 +61,18 @@ private final Provider<GroupServiceAsync> groupServiceProvider; private final Provider<FileDownloadUtils> fileDownloadProvider; private final EntityLogo entityLogo; + private final Provider<TextEditor> textEditorProvider; + private final KuneErrorHandler errorHandler; + private final DocumentContent documentContent; public DocumentClientActions(final I18nUITranslationService i18n, final ContextNavigator contextNavigator, final Session session, final StateManager stateManager, final Provider<ContentServiceAsync> contentServiceProvider, final Provider<GroupServiceAsync> groupServiceProvider, final Provider<FileUploader> fileUploaderProvider, final ContentActionRegistry contentActionRegistry, final ContextActionRegistry contextActionRegistry, - final Provider<FileDownloadUtils> fileDownloadProvider, final EntityLogo entityLogo) { + final Provider<FileDownloadUtils> fileDownloadProvider, final EntityLogo entityLogo, + final Provider<TextEditor> textEditorProvider, final KuneErrorHandler errorHandler, + final DocumentContent documentContent) { this.i18n = i18n; this.contextNavigator = contextNavigator; this.session = session; @@ -73,6 +84,9 @@ this.contentActionRegistry = contentActionRegistry; this.fileDownloadProvider = fileDownloadProvider; this.entityLogo = entityLogo; + this.textEditorProvider = textEditorProvider; + this.errorHandler = errorHandler; + this.documentContent = documentContent; createActions(); } @@ -306,6 +320,47 @@ final ActionToolbarButtonDescriptor<StateToken> editContent = new ActionToolbarButtonDescriptor<StateToken>( AccessRolDTO.Editor, ActionToolbarPosition.topbar, new Listener<StateToken>() { public void onEvent(final StateToken stateToken) { + session.check(new AsyncCallbackSimple<Object>() { + public void onSuccess(final Object result) { + final TextEditor editor = textEditorProvider.get(); + documentContent.detach(); + editor.editContent(session.getCurrentState().getContent(), new Listener<String>() { + public void onEvent(final String html) { + Site.showProgressSaving(); + contentServiceProvider.get().save(session.getUserHash(), stateToken, html, + new AsyncCallback<Integer>() { + public void onFailure(final Throwable caught) { + Site.hideProgress(); + try { + throw caught; + } catch (final SessionExpiredException e) { + errorHandler.doSessionExpired(); + } catch (final Throwable e) { + Site.error(i18n.t("Error saving document. Retrying...")); + errorHandler.process(caught); + editor.onSaveFailed(); + } + } + + public void onSuccess(final Integer newVersion) { + Site.hideProgress(); + editor.onSaved(); + if (session.getCurrentStateToken().equals(stateToken)) { + session.getCurrentState().setVersion(newVersion); + session.getCurrentState().setContent(html); + documentContent.refreshState(); + } + } + }); + } + }, new Listener0() { + public void onEvent() { + // onClose + documentContent.refreshState(); + } + }); + } + }); } }); editContent.setTextDescription(i18n.tWithNT("Edit", "used in button")); Modified: trunk/src/main/java/org/ourproject/kune/docs/client/DocumentClientModule.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/docs/client/DocumentClientModule.java 2008-09-30 01:49:58 UTC (rev 897) +++ trunk/src/main/java/org/ourproject/kune/docs/client/DocumentClientModule.java 2008-10-01 01:29:01 UTC (rev 898) @@ -35,7 +35,6 @@ import org.ourproject.kune.platf.client.state.StateManager; import org.ourproject.kune.platf.client.tool.ToolSelector; import org.ourproject.kune.platf.client.ui.download.FileDownloadUtils; -import org.ourproject.kune.platf.client.ui.rate.RateIt; import org.ourproject.kune.platf.client.ui.upload.FileUploader; import org.ourproject.kune.workspace.client.ctxnav.ContextNavigator; import org.ourproject.kune.workspace.client.editor.TextEditor; @@ -74,7 +73,8 @@ return new DocumentClientActions($(I18nUITranslationService.class), $(ContextNavigator.class), $(Session.class), $(StateManager.class), $$(ContentServiceAsync.class), $$(GroupServiceAsync.class), $$(FileUploader.class), $(ContentActionRegistry.class), - $(ContextActionRegistry.class), $$(FileDownloadUtils.class), $(EntityLogo.class)); + $(ContextActionRegistry.class), $$(FileDownloadUtils.class), $(EntityLogo.class), + $$(TextEditor.class), $(KuneErrorHandler.class), $(DocumentContent.class)); } }); @@ -83,12 +83,11 @@ final ActionToolbarPanel<StateToken> contentNavigatorToolbar = new ActionToolbarPanel<StateToken>( ActionToolbarPanel.Position.content, $$(ActionManager.class), $(WorkspaceSkeleton.class)); final ActionToolbar<StateToken> toolbar = new ActionToolbarPresenter<StateToken>( - contentNavigatorToolbar, $(ContentActionRegistry.class)); + contentNavigatorToolbar); final DocumentContentPresenter presenter = new DocumentContentPresenter($(StateManager.class), - $(I18nUITranslationService.class), $(KuneErrorHandler.class), $(Session.class), - $(RateIt.class), $$(DocumentReader.class), $$(TextEditor.class), $$(FolderViewer.class), - $$(ContentServiceAsync.class), toolbar, $(ContentActionRegistry.class)); + $(Session.class), $$(DocumentReader.class), $$(TextEditor.class), $$(FolderViewer.class), + toolbar, $(ContentActionRegistry.class)); final DocumentContentPanel panel = new DocumentContentPanel($(WorkspaceSkeleton.class)); presenter.init(panel); return presenter; Modified: trunk/src/main/java/org/ourproject/kune/docs/client/cnt/DocumentContent.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/docs/client/cnt/DocumentContent.java 2008-09-30 01:49:58 UTC (rev 897) +++ trunk/src/main/java/org/ourproject/kune/docs/client/cnt/DocumentContent.java 2008-10-01 01:29:01 UTC (rev 898) @@ -20,20 +20,10 @@ package org.ourproject.kune.docs.client.cnt; -import com.calclab.suco.client.listener.Listener0; - public interface DocumentContent { - void onEditCancelled(Listener0 listener); + void detach(); - void onDeleteClicked(); + void refreshState(); - void onEditClicked(); - - void onEditing(Listener0 listener); - - void onSaved(); - - void onSaveFailed(); - } Modified: trunk/src/main/java/org/ourproject/kune/docs/client/cnt/DocumentContentPresenter.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/docs/client/cnt/DocumentContentPresenter.java 2008-09-30 01:49:58 UTC (rev 897) +++ trunk/src/main/java/org/ourproject/kune/docs/client/cnt/DocumentContentPresenter.java 2008-10-01 01:29:01 UTC (rev 898) @@ -28,165 +28,62 @@ import org.ourproject.kune.platf.client.actions.toolbar.ActionToolbar; import org.ourproject.kune.platf.client.dto.StateDTO; import org.ourproject.kune.platf.client.dto.StateToken; -import org.ourproject.kune.platf.client.errors.SessionExpiredException; -import org.ourproject.kune.platf.client.rpc.AsyncCallbackSimple; -import org.ourproject.kune.platf.client.rpc.ContentServiceAsync; -import org.ourproject.kune.platf.client.services.KuneErrorHandler; import org.ourproject.kune.platf.client.state.Session; import org.ourproject.kune.platf.client.state.StateManager; -import org.ourproject.kune.platf.client.ui.rate.RateIt; import org.ourproject.kune.workspace.client.editor.TextEditor; -import org.ourproject.kune.workspace.client.editor.TextEditorListener; -import org.ourproject.kune.workspace.client.i18n.I18nUITranslationService; -import org.ourproject.kune.workspace.client.site.Site; import com.calclab.suco.client.ioc.Provider; -import com.calclab.suco.client.listener.Event0; import com.calclab.suco.client.listener.Listener; -import com.calclab.suco.client.listener.Listener0; import com.calclab.suco.client.listener.Listener2; -import com.google.gwt.user.client.rpc.AsyncCallback; -public class DocumentContentPresenter implements DocumentContent, TextEditorListener { +public class DocumentContentPresenter implements DocumentContent { private DocumentContentView view; - private final StateManager stateManager; private StateDTO content; private final Session session; - private final RateIt rateIt; private final Provider<DocumentReader> docReaderProvider; private final Provider<TextEditor> textEditorProvider; private final Provider<FolderViewer> folderViewerProvider; - private final Event0 onEditing; - private final Event0 onEditCancelled; - private final Provider<ContentServiceAsync> contentServiceProvider; - private final I18nUITranslationService i18n; - private final KuneErrorHandler errorHandler; private final ActionToolbar<StateToken> toolbar; private final ActionRegistry<StateToken> actionRegistry; - public DocumentContentPresenter(final StateManager stateManager, final I18nUITranslationService i18n, - final KuneErrorHandler errorHandler, final Session session, final RateIt rateIt, + public DocumentContentPresenter(final StateManager stateManager, final Session session, final Provider<DocumentReader> docReaderProvider, final Provider<TextEditor> textEditorProvider, - final Provider<FolderViewer> folderViewerProvider, - final Provider<ContentServiceAsync> contentServiceProvider, final ActionToolbar<StateToken> toolbar, + final Provider<FolderViewer> folderViewerProvider, final ActionToolbar<StateToken> toolbar, final ActionRegistry<StateToken> actionRegistry) { - this.stateManager = stateManager; - this.i18n = i18n; - this.errorHandler = errorHandler; this.session = session; - this.rateIt = rateIt; this.docReaderProvider = docReaderProvider; this.textEditorProvider = textEditorProvider; this.folderViewerProvider = folderViewerProvider; - this.contentServiceProvider = contentServiceProvider; this.toolbar = toolbar; this.actionRegistry = actionRegistry; - this.onEditing = new Event0("onEditing"); - this.onEditCancelled = new Event0("onEditCancelled"); stateManager.onStateChanged(new Listener<StateDTO>() { public void onEvent(final StateDTO state) { if (state.getToolName().equals(DocumentClientTool.NAME)) { setState(state); - toolbar.attach(); } } }); stateManager.onToolChanged(new Listener2<String, String>() { public void onEvent(final String oldTool, final String newTool) { if (oldTool != null && oldTool.equals(DocumentClientTool.NAME)) { - // Detach + toolbar.detach(); } } }); } + public void detach() { + toolbar.detach(); + } + public void init(final DocumentContentView view) { this.view = view; } - public void onDeleteClicked() { - Site.showProgressProcessing(); - contentServiceProvider.get().delContent(session.getUserHash(), content.getStateToken(), - new AsyncCallbackSimple<Object>() { - public void onSuccess(final Object result) { - Site.hideProgress(); - stateManager.reload(); - } - }); + public void refreshState() { + setState(session.getCurrentState()); } - public void onEditCancelled() { - showContent(); - onEditCancelled.fire(); - // Re-enable rateIt widget - rateIt.setVisible(true); - textEditorProvider.get().setToolbarVisible(false); - } - - public void onEditCancelled(final Listener0 listener) { - onEditCancelled.add(listener); - } - - public void onEditClicked() { - session.check(new AsyncCallbackSimple<Object>() { - public void onSuccess(final Object result) { - if (content.hasDocument()) { - // Don't permit rate content while your are editing - rateIt.setVisible(false); - final TextEditor editor = textEditorProvider.get(); - editor.setContent(content.getContent()); - editor.setToolbarVisible(true); - view.setContent(editor.getView()); - } else { - // final FolderEditor editor = folderEditorProvider.get(); - // editor.setFolder(content.getContainer()); - // view.setContent(editor.getView()); - } - onEditing.fire(); - } - }); - } - - public void onEditing(final Listener0 listener) { - onEditing.add(listener); - } - - public void onSave(final String text) { - content.setContent(text); - Site.showProgressSaving(); - contentServiceProvider.get().save(session.getUserHash(), content.getStateToken(), content.getContent(), - new AsyncCallback<Integer>() { - public void onFailure(final Throwable caught) { - Site.hideProgress(); - try { - throw caught; - } catch (final SessionExpiredException e) { - errorHandler.doSessionExpired(); - } catch (final Throwable e) { - Site.error(i18n.t("Error saving document. Retrying...")); - errorHandler.process(caught); - onSaveFailed(); - } - } - - public void onSuccess(final Integer result) { - Site.hideProgress(); - onSaved(); - } - }); - } - - public void onSaved() { - textEditorProvider.get().onSaved(); - } - - public void onSaveFailed() { - textEditorProvider.get().onSaveFailed(); - } - - public void onTranslate() { - } - private void setState(final StateDTO state) { content = state; final String typeId = content.getTypeId(); @@ -200,11 +97,12 @@ } toolbar.disableMenusAndClearButtons(); toolbar.showActions(collection, true); + toolbar.attach(); showContent(); } private void showContent() { - textEditorProvider.get().setToolbarVisible(false); + // textEditorProvider.get().setToolbarVisible(false); if (content.hasDocument()) { docReaderProvider.get().showDocument(content.getStateToken(), content.getContent(), content.getTypeId(), content.getMimeType()); Modified: trunk/src/main/java/org/ourproject/kune/platf/client/actions/ActionRegistry.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/platf/client/actions/ActionRegistry.java 2008-09-30 01:49:58 UTC (rev 897) +++ trunk/src/main/java/org/ourproject/kune/platf/client/actions/ActionRegistry.java 2008-10-01 01:29:01 UTC (rev 898) @@ -19,11 +19,6 @@ } } - public boolean checkEnabling(final ActionDescriptor<T> action, final T T) { - final ActionEnableCondition<T> enableCondition = action.getEnableCondition(); - return enableCondition != null ? enableCondition.mustBeEnabled(T) : true; - } - public ActionItemCollection<T> getCurrentActions(final T item, final String contentTypeId, final boolean isLogged, final AccessRightsDTO rights, final boolean toolbarItems) { final ActionItemCollection<T> collection = new ActionItemCollection<T>(); Modified: trunk/src/main/java/org/ourproject/kune/platf/client/actions/toolbar/ActionToolbarPresenter.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/platf/client/actions/toolbar/ActionToolbarPresenter.java 2008-09-30 01:49:58 UTC (rev 897) +++ trunk/src/main/java/org/ourproject/kune/platf/client/actions/toolbar/ActionToolbarPresenter.java 2008-10-01 01:29:01 UTC (rev 898) @@ -1,9 +1,9 @@ package org.ourproject.kune.platf.client.actions.toolbar; import org.ourproject.kune.platf.client.actions.ActionDescriptor; +import org.ourproject.kune.platf.client.actions.ActionEnableCondition; import org.ourproject.kune.platf.client.actions.ActionItem; import org.ourproject.kune.platf.client.actions.ActionItemCollection; -import org.ourproject.kune.platf.client.actions.ActionRegistry; import org.ourproject.kune.platf.client.actions.ActionToolbarButtonAndItemDescriptor; import org.ourproject.kune.platf.client.actions.ActionToolbarButtonDescriptor; import org.ourproject.kune.platf.client.actions.ActionToolbarMenuAndItemDescriptor; @@ -13,17 +13,20 @@ public class ActionToolbarPresenter<T> implements ActionToolbar<T> { private final ActionToolbarView<T> toolbar; - private final ActionRegistry<T> actionRegistry; - public ActionToolbarPresenter(final ActionToolbarView<T> toolbar, final ActionRegistry<T> actionRegistry) { + public ActionToolbarPresenter(final ActionToolbarView<T> toolbar) { this.toolbar = toolbar; - this.actionRegistry = actionRegistry; } public void attach() { toolbar.attach(); } + public boolean checkEnabling(final ActionDescriptor<T> action, final T T) { + final ActionEnableCondition<T> enableCondition = action.getEnableCondition(); + return enableCondition != null ? enableCondition.mustBeEnabled(T) : true; + } + public void clear() { toolbar.clear(); } @@ -34,21 +37,17 @@ public void disableMenusAndClearButtons() { toolbar.clear(); - // With action-item, this must be redesigned - // toolbar.clearRemovableActions(); - // toolbar.disableAllMenuItems(); } public void showActions(final ActionItemCollection<T> actions, final boolean isItemSelected) { for (final ActionItem<T> actionItem : actions) { final ActionDescriptor<T> action = actionItem.getAction(); if (action instanceof ActionToolbarMenuDescriptor || action instanceof ActionToolbarMenuAndItemDescriptor) { - toolbar.addMenuAction(actionItem, isItemSelected - && actionRegistry.checkEnabling(action, actionItem.getItem())); + toolbar.addMenuAction(actionItem, isItemSelected && checkEnabling(action, actionItem.getItem())); } else { if (action instanceof ActionToolbarButtonDescriptor || action instanceof ActionToolbarButtonAndItemDescriptor) { - if (isItemSelected && actionRegistry.checkEnabling(action, actionItem.getItem())) { + if (isItemSelected && checkEnabling(action, actionItem.getItem())) { toolbar.addButtonAction(actionItem); } } else { Modified: trunk/src/main/java/org/ourproject/kune/platf/client/dto/AccessListsDTO.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/platf/client/dto/AccessListsDTO.java 2008-09-30 01:49:58 UTC (rev 897) +++ trunk/src/main/java/org/ourproject/kune/platf/client/dto/AccessListsDTO.java 2008-10-01 01:29:01 UTC (rev 898) @@ -28,37 +28,42 @@ private GroupListDTO viewers; public AccessListsDTO() { - this(null, null, null); + this(null, null, null); } public AccessListsDTO(final GroupListDTO admins, final GroupListDTO editors, final GroupListDTO viewers) { - this.admins = admins; - this.editors = editors; - this.viewers = viewers; + this.admins = admins; + this.editors = editors; + this.viewers = viewers; } public GroupListDTO getAdmins() { - return admins; + return admins; } - public void setAdmins(final GroupListDTO admins) { - this.admins = admins; + public GroupListDTO getEditors() { + return editors; } - public GroupListDTO getEditors() { - return editors; + public GroupListDTO getViewers() { + return viewers; } - public void setEditors(final GroupListDTO editors) { - this.editors = editors; + public void setAdmins(final GroupListDTO admins) { + this.admins = admins; } - public GroupListDTO getViewers() { - return viewers; + public void setEditors(final GroupListDTO editors) { + this.editors = editors; } public void setViewers(final GroupListDTO viewers) { - this.viewers = viewers; + this.viewers = viewers; } + @Override + public String toString() { + return "AccessListDTO[admins :" + admins + "; editors: " + editors + "; viewers: " + viewers + "]"; + } + } Modified: trunk/src/main/java/org/ourproject/kune/platf/client/dto/AccessRightsDTO.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/platf/client/dto/AccessRightsDTO.java 2008-09-30 01:49:58 UTC (rev 897) +++ trunk/src/main/java/org/ourproject/kune/platf/client/dto/AccessRightsDTO.java 2008-10-01 01:29:01 UTC (rev 898) @@ -27,63 +27,62 @@ private boolean isEditable; private boolean isVisible; + public AccessRightsDTO() { + this(false, false, false); + } + public AccessRightsDTO(final boolean isAdministrable, final boolean isEditable, final boolean isVisible) { - this.isAdministrable = isAdministrable; - this.isEditable = isEditable; - this.isVisible = isVisible; + this.isAdministrable = isAdministrable; + this.isEditable = isEditable; + this.isVisible = isVisible; } - public AccessRightsDTO() { - this(false, false, false); + @Override + public boolean equals(final Object obj) { + if (this == obj) { + return true; + } + if (obj == null) { + return false; + } + final AccessRightsDTO other = (AccessRightsDTO) obj; + if (isAdministrable != other.isAdministrable) { + return false; + } + if (isEditable != other.isEditable) { + return false; + } + if (isVisible != other.isVisible) { + return false; + } + return true; } public boolean isAdministrable() { - return isAdministrable; + return isAdministrable; } - public void setAdministrable(final boolean isAdministrable) { - this.isAdministrable = isAdministrable; + public boolean isEditable() { + return isEditable; } - public boolean isEditable() { - return isEditable; + public boolean isVisible() { + return isVisible; } - public void setEditable(final boolean isEditable) { - this.isEditable = isEditable; + public void setAdministrable(final boolean isAdministrable) { + this.isAdministrable = isAdministrable; } - public boolean isVisible() { - return isVisible; + public void setEditable(final boolean isEditable) { + this.isEditable = isEditable; } public void setVisible(final boolean isVisible) { - this.isVisible = isVisible; + this.isVisible = isVisible; } public String toString() { - return "[" + isAdministrable + ", " + isEditable + ", " + isVisible + "]"; + return "AccessRightsDTO[a: " + isAdministrable + ", e: " + isEditable + ", v: " + isVisible + "]"; } - - @Override - public boolean equals(final Object obj) { - if (this == obj) { - return true; - } - if (obj == null) { - return false; - } - final AccessRightsDTO other = (AccessRightsDTO) obj; - if (isAdministrable != other.isAdministrable) { - return false; - } - if (isEditable != other.isEditable) { - return false; - } - if (isVisible != other.isVisible) { - return false; - } - return true; - } - } Modified: trunk/src/main/java/org/ourproject/kune/platf/client/dto/GroupDTO.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/platf/client/dto/GroupDTO.java 2008-09-30 01:49:58 UTC (rev 897) +++ trunk/src/main/java/org/ourproject/kune/platf/client/dto/GroupDTO.java 2008-10-01 01:29:01 UTC (rev 898) @@ -54,34 +54,6 @@ return false; } final GroupDTO other = (GroupDTO) obj; - if (defaultLicense == null) { - if (other.defaultLicense != null) { - return false; - } - } else if (!defaultLicense.equals(other.defaultLicense)) { - return false; - } - if (id == null) { - if (other.id != null) { - return false; - } - } else if (!id.equals(other.id)) { - return false; - } - if (longName == null) { - if (other.longName != null) { - return false; - } - } else if (!longName.equals(other.longName)) { - return false; - } - if (publicDesc == null) { - if (other.publicDesc != null) { - return false; - } - } else if (!publicDesc.equals(other.publicDesc)) { - return false; - } if (shortName == null) { if (other.shortName != null) { return false; @@ -89,9 +61,6 @@ } else if (!shortName.equals(other.shortName)) { return false; } - if (type != other.type) { - return false; - } return true; } @@ -187,4 +156,7 @@ this.workspaceTheme = workspaceTheme; } + public String toString() { + return "GroupDTO[" + shortName + "]"; + } } Modified: trunk/src/main/java/org/ourproject/kune/platf/client/dto/GroupListDTO.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/platf/client/dto/GroupListDTO.java 2008-09-30 01:49:58 UTC (rev 897) +++ trunk/src/main/java/org/ourproject/kune/platf/client/dto/GroupListDTO.java 2008-10-01 01:29:01 UTC (rev 898) @@ -31,27 +31,34 @@ private String mode; public GroupListDTO() { - this(null); + this(null); } public GroupListDTO(final List<GroupDTO> list) { - this.list = list; + this.list = list; } public List<GroupDTO> getList() { - return list; + return list; } - public void setList(final List<GroupDTO> list) { - this.list = list; + public String getMode() { + return mode; } - public String getMode() { - return mode; + public void setList(final List<GroupDTO> list) { + this.list = list; } public void setMode(final String mode) { - this.mode = mode; + this.mode = mode; } + public String toString() { + String groupString = ""; + for (final GroupDTO group : list) { + groupString = groupString + group.getShortName() + ", "; + } + return "GroupDTO[(" + mode + "): " + groupString + "]"; + } } Modified: trunk/src/main/java/org/ourproject/kune/platf/client/dto/LinkDTO.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/platf/client/dto/LinkDTO.java 2008-09-30 01:49:58 UTC (rev 897) +++ trunk/src/main/java/org/ourproject/kune/platf/client/dto/LinkDTO.java 2008-10-01 01:29:01 UTC (rev 898) @@ -32,62 +32,62 @@ private List<TagDTO> tags; public LinkDTO() { - this(null, null, null, null); + this(null, null, null, null); } public LinkDTO(final String shortName, final String longName, final String iconUrl, final String link) { - this.shortName = shortName; - this.longName = longName; - this.iconUrl = iconUrl; - this.link = link; + this.shortName = shortName; + this.longName = longName; + this.iconUrl = iconUrl; + this.link = link; } - public String getShortName() { - return shortName; + public String getIconUrl() { + return iconUrl; } - public void setShortName(final String shortName) { - this.shortName = shortName; - } - public String getLink() { - return link; + return link; } - public void setLink(final String link) { - this.link = link; + public String getLongName() { + return longName; } - public String getLongName() { - return longName; + public Double getRate() { + return rate; } - public void setLongName(final String longName) { - this.longName = longName; + public String getShortName() { + return shortName; } - public String getIconUrl() { - return iconUrl; + public List<TagDTO> getTags() { + return tags; } public void setIconUrl(final String iconUrl) { - this.iconUrl = iconUrl; + this.iconUrl = iconUrl; } - public Double getRate() { - return rate; + public void setLink(final String link) { + this.link = link; } + public void setLongName(final String longName) { + this.longName = longName; + } + public void setRate(final Double rate) { - this.rate = rate; + this.rate = rate; } - public List<TagDTO> getTags() { - return tags; + public void setShortName(final String shortName) { + this.shortName = shortName; } public void setTags(final List<TagDTO> tags) { - this.tags = tags; + this.tags = tags; } } Modified: trunk/src/main/java/org/ourproject/kune/platf/client/dto/ParticipationDataDTO.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/platf/client/dto/ParticipationDataDTO.java 2008-09-30 01:49:58 UTC (rev 897) +++ trunk/src/main/java/org/ourproject/kune/platf/client/dto/ParticipationDataDTO.java 2008-10-01 01:29:01 UTC (rev 898) @@ -53,4 +53,9 @@ this.groupsIsCollab = groupsIsCollab; } + @Override + public String toString() { + return "ParticipationDataDTO[admin in: " + groupsIsAdmin.toString() + ", collab in: " + + groupsIsCollab.toString() + "]"; + } } Modified: trunk/src/main/java/org/ourproject/kune/platf/client/dto/SocialNetworkDTO.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/platf/client/dto/SocialNetworkDTO.java 2008-09-30 01:49:58 UTC (rev 897) +++ trunk/src/main/java/org/ourproject/kune/platf/client/dto/SocialNetworkDTO.java 2008-10-01 01:29:01 UTC (rev 898) @@ -48,4 +48,8 @@ this.pendingCollaborators = pendingCollaborators; } + public String toString() { + return "SocialNetworkDTO[accessList: " + accessLists + "; pendingsCollabs: " + pendingCollaborators + "]"; + } + } Modified: trunk/src/main/java/org/ourproject/kune/platf/client/dto/SocialNetworkResultDTO.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/platf/client/dto/SocialNetworkResultDTO.java 2008-09-30 01:49:58 UTC (rev 897) +++ trunk/src/main/java/org/ourproject/kune/platf/client/dto/SocialNetworkResultDTO.java 2008-10-01 01:29:01 UTC (rev 898) @@ -28,28 +28,31 @@ ParticipationDataDTO userParticipation; public SocialNetworkResultDTO() { - this(null, null); + this(null, null); } public SocialNetworkResultDTO(final SocialNetworkDTO groupMembers, final ParticipationDataDTO userParticipation) { - this.groupMembers = groupMembers; - this.userParticipation = userParticipation; + this.groupMembers = groupMembers; + this.userParticipation = userParticipation; } public SocialNetworkDTO getGroupMembers() { - return groupMembers; + return groupMembers; } - public void setGroupMembers(final SocialNetworkDTO groupMembers) { - this.groupMembers = groupMembers; + public ParticipationDataDTO getUserParticipation() { + return userParticipation; } - public ParticipationDataDTO getUserParticipation() { - return userParticipation; + public void setGroupMembers(final SocialNetworkDTO groupMembers) { + this.groupMembers = groupMembers; } public void setUserParticipation(final ParticipationDataDTO userParticipation) { - this.userParticipation = userParticipation; + this.userParticipation = userParticipation; } + public String toString() { + return "SocialNetworkResultDTO[members: " + groupMembers + "; participation: " + userParticipation + "]"; + } } Modified: trunk/src/main/java/org/ourproject/kune/platf/client/dto/StateDTO.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/platf/client/dto/StateDTO.java 2008-09-30 01:49:58 UTC (rev 897) +++ trunk/src/main/java/org/ourproject/kune/platf/client/dto/StateDTO.java 2008-10-01 01:29:01 UTC (rev 898) @@ -23,7 +23,6 @@ import java.util.Date; import java.util.List; - import com.google.gwt.user.client.rpc.IsSerializable; public class StateDTO implements IsSerializable { @@ -304,4 +303,8 @@ this.version = version; } + public String toString() { + return "StateDTO[" + stateToken + "/" + typeId + "]"; + } + } Modified: trunk/src/main/java/org/ourproject/kune/platf/client/dto/TagDTO.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/platf/client/dto/TagDTO.java 2008-09-30 01:49:58 UTC (rev 897) +++ trunk/src/main/java/org/ourproject/kune/platf/client/dto/TagDTO.java 2008-10-01 01:29:01 UTC (rev 898) @@ -26,19 +26,23 @@ private String name; public TagDTO() { - this(null); + this(null); } public TagDTO(final String name) { - this.name = name; + this.name = name; } public String getName() { - return name; + return name; } public void setName(final String name) { - this.name = name; + this.name = name; } + public String toString() { + return name; + } + } Modified: trunk/src/main/java/org/ourproject/kune/platf/client/dto/TagResultDTO.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/platf/client/dto/TagResultDTO.java 2008-09-30 01:49:58 UTC (rev 897) +++ trunk/src/main/java/org/ourproject/kune/platf/client/dto/TagResultDTO.java 2008-10-01 01:29:01 UTC (rev 898) @@ -27,28 +27,32 @@ private Long count; public TagResultDTO() { - this(null, null); + this(null, null); } public TagResultDTO(final String name, final Long count) { - this.name = name; - this.count = count; + this.name = name; + this.count = count; } public Long getCount() { - return count; + return count; } - public void setCount(final Long count) { - this.count = count; + public String getName() { + return name; } - public String getName() { - return name; + public void setCount(final Long count) { + this.count = count; } public void setName(final String name) { - this.name = name; + this.name = name; } + public String toString() { + return name + "(" + count + ")"; + } + } Modified: trunk/src/main/java/org/ourproject/kune/platf/client/dto/UserDTO.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/platf/client/dto/UserDTO.java 2008-09-30 01:49:58 UTC (rev 897) +++ trunk/src/main/java/org/ourproject/kune/platf/client/dto/UserDTO.java 2008-10-01 01:29:01 UTC (rev 898) @@ -153,4 +153,8 @@ this.timezone = timezone; } + public String toString() { + return "UserDTO[" + shortName + "]"; + } + } Modified: trunk/src/main/java/org/ourproject/kune/platf/client/dto/UserSimpleDTO.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/platf/client/dto/UserSimpleDTO.java 2008-09-30 01:49:58 UTC (rev 897) +++ trunk/src/main/java/org/ourproject/kune/platf/client/dto/UserSimpleDTO.java 2008-10-01 01:29:01 UTC (rev 898) @@ -22,41 +22,35 @@ import com.google.gwt.user.client.rpc.IsSerializable; public class UserSimpleDTO implements IsSerializable { - private Long id; - private String name; - private String shortName; - private I18nLanguageDTO language; - private I18nCountryDTO country; - private TimeZoneDTO timezone; public UserSimpleDTO() { - this(null, null, null, null, null); + this(null, null, null, null, null); } public UserSimpleDTO(final String name, final String shortName, final I18nLanguageDTO language, - final I18nCountryDTO country, final TimeZoneDTO timezone) { - this.name = name; - this.shortName = shortName; - this.language = language; - this.country = country; - this.timezone = timezone; + final I18nCountryDTO country, final TimeZoneDTO timezone) { + this.name = name; + this.shortName = shortName; + this.language = language; + this.country = country; + this.timezone = timezone; } @Override public boolean equals(final Object obj) { - if (this == obj) { - return true; - } - if (obj == null) { - return false; - } - final UserSimpleDTO other = (UserSimpleDTO) obj; + if (this == obj) { + return true; + } + if (obj == null) { + return false; + } + final UserSimpleDTO other = (UserSimpleDTO) obj; if (id == null) { if (other.id != null) { return false; @@ -64,71 +58,75 @@ } else if (!id.equals(other.id)) { return false; } - if (shortName == null) { - if (other.shortName != null) { - return false; - } - } else if (!shortName.equals(other.shortName)) { - return false; - } - return true; + if (shortName == null) { + if (other.shortName != null) { + return false; + } + } else if (!shortName.equals(other.shortName)) { + return false; + } + return true; } public I18nCountryDTO getCountry() { - return country; + return country; } public Long getId() { - return id; + return id; } public I18nLanguageDTO getLanguage() { - return language; + return language; } public String getName() { - return name; + return name; } public String getShortName() { - return shortName; + return shortName; } public TimeZoneDTO getTimezone() { - return timezone; + return timezone; } @Override public int hashCode() { - final int prime = 31; - int result = 1; + final int prime = 31; + int result = 1; result = prime * result + (id == null ? 0 : id.hashCode()); - result = prime * result + (shortName == null ? 0 : shortName.hashCode()); - return result; + result = prime * result + (shortName == null ? 0 : shortName.hashCode()); + return result; } public void setCountry(final I18nCountryDTO country) { - this.country = country; + this.country = country; } public void setId(final Long id) { - this.id = id; + this.id = id; } public void setLanguage(final I18nLanguageDTO language) { - this.language = language; + this.language = language; } public void setName(final String name) { - this.name = name; + this.name = name; } public void setShortName(final String shortName) { - this.shortName = shortName; + this.shortName = shortName; } public void setTimezone(final TimeZoneDTO timezone) { - this.timezone = timezone; + this.timezone = timezone; } + public String toString() { + return "UserSimpleDTO(" + shortName + ")"; + } + } Modified: trunk/src/main/java/org/ourproject/kune/platf/client/services/KuneModule.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/platf/client/services/KuneModule.java 2008-09-30 01:49:58 UTC (rev 897) +++ trunk/src/main/java/org/ourproject/kune/platf/client/services/KuneModule.java 2008-10-01 01:29:01 UTC (rev 898) @@ -283,7 +283,12 @@ register(Singleton.class, new Factory<TextEditor>(TextEditor.class) { public TextEditor create() { - final TextEditorPresenter presenter = new TextEditorPresenter(null, true); + final ActionToolbarPanel<StateToken> contentNavigatorToolbar = new ActionToolbarPanel<StateToken>( + ActionToolbarPanel.Position.content, $$(ActionManager.class), $(WorkspaceSkeleton.class)); + final ActionToolbar<StateToken> toolbar = new ActionToolbarPresenter<StateToken>( + contentNavigatorToolbar); + final TextEditorPresenter presenter = new TextEditorPresenter(true, toolbar, + $(I18nUITranslationService.class)); final TextEditorPanel panel = new TextEditorPanel(presenter, i18n, $(WorkspaceSkeleton.class)); presenter.init(panel); return presenter; @@ -334,14 +339,14 @@ final ActionToolbarPanel<StateToken> contextNavigatorToolbar = new ActionToolbarPanel<StateToken>( ActionToolbarPanel.Position.context, $$(ActionManager.class), $(WorkspaceSkeleton.class)); final ActionToolbar<StateToken> toolbar = new ActionToolbarPresenter<StateToken>( - contextNavigatorToolbar, $(ContentActionRegistry.class)); + contextNavigatorToolbar); final ContextNavigatorPresenter presenter = new ContextNavigatorPresenter($(StateManager.class), $(Session.class), $$(ContentServiceAsync.class), i18n, $(EntityTitle.class), $(ContentIconsRegistry.class), $(DragDropContentRegistry.class), toolbar, $(ContextActionRegistry.class)); final ContextNavigatorPanel panel = new ContextNavigatorPanel(presenter, i18n, - $(WorkspaceSkeleton.class), $(ActionManager.class), $(WsThemePresenter.class)); + $(WorkspaceSkeleton.class), $(ActionManager.class)); presenter.init(panel); return presenter; } Modified: trunk/src/main/java/org/ourproject/kune/platf/client/state/StateManager.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/platf/client/state/StateManager.java 2008-09-30 01:49:58 UTC (rev 897) +++ trunk/src/main/java/org/ourproject/kune/platf/client/state/StateManager.java 2008-10-01 01:29:01 UTC (rev 898) @@ -33,8 +33,6 @@ void addSiteToken(String token, Listener<StateToken> whenToken); - void gotoContainer(Long containerId); - void gotoToken(StateToken state); void gotoToken(String token); @@ -51,7 +49,7 @@ void removeSiteToken(String token); - void setRetrievedState(StateDTO content); + void setRetrievedState(StateDTO state); void setSocialNetwork(SocialNetworkResultDTO socialNet); Modified: trunk/src/main/java/org/ourproject/kune/platf/client/state/StateManagerDefault.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/platf/client/state/StateManagerDefault.java 2008-09-30 01:49:58 UTC (rev 897) +++ trunk/src/main/java/org/ourproject/kune/platf/client/state/StateManagerDefault.java 2008-10-01 01:29:01 UTC (rev 898) @@ -63,7 +63,11 @@ this.onSocialNetworkChanged = new Event<StateDTO>("onSocialNetworkChanged"); session.onUserSignIn(new Listener<UserInfoDTO>() { public void onEvent(final UserInfoDTO parameter) { - restorePreviousState(); + if (oldState != null) { + restorePreviousState(); + } else { + reload(); + } } }); session.onUserSignOut(new Listener0() { @@ -78,14 +82,8 @@ siteTokens.put(token, listener); } - public void gotoContainer(final Long containerId) { - final StateToken newStateToken = session.getCurrentState().getStateToken().clone(); - newStateToken.clearDocument(); - newStateToken.setFolder(containerId); - gotoToken(newStateToken); - } - public void gotoToken(final StateToken state) { + Log.debug("StateManager: history goto-token newItem (" + state + ")"); history.newItem(state.getEncoded()); } Modified: trunk/src/main/java/org/ourproject/kune/platf/server/access/AccessRights.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/platf/server/access/AccessRights.java 2008-09-30 01:49:58 UTC (rev 897) +++ trunk/src/main/java/org/ourproject/kune/platf/server/access/AccessRights.java 2008-10-01 01:29:01 UTC (rev 898) @@ -25,38 +25,41 @@ boolean isEditable; boolean isVisible; + public AccessRights() { + this(false, false, false); + } + public AccessRights(final boolean isAdministrable, final boolean isEditable, final boolean isVisible) { this.isAdministrable = isAdministrable; this.isEditable = isEditable; this.isVisible = isVisible; } - public AccessRights() { - this(false, false, false); - } - public boolean isAdministrable() { return isAdministrable; } + public boolean isEditable() { + return isEditable; + } + + public boolean isVisible() { + return isVisible; + } + public void setAdministrable(final boolean isAdministrable) { this.isAdministrable = isAdministrable; } - public boolean isEditable() { - return isEditable; - } - public void setEditable(final boolean isEditable) { this.isEditable = isEditable; } - public boolean isVisible() { - return isVisible; - } - public void setVisible(final boolean isVisible) { this.isVisible = isVisible; } + public String toString() { + return "AccessRights[a: " + isAdministrable + ", e: " + isEditable + ", v: " + isVisible + "]"; + } } Modified: trunk/src/main/java/org/ourproject/kune/platf/server/domain/AccessLists.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/platf/server/domain/AccessLists.java 2008-09-30 01:49:58 UTC (rev 897) +++ trunk/src/main/java/org/ourproject/kune/platf/server/domain/AccessLists.java 2008-10-01 01:29:01 UTC (rev 898) @@ -32,16 +32,16 @@ @Entity @Table(name = "access_lists") public class AccessLists { - @Id - @GeneratedValue - private Long id; - @OneToOne(cascade = CascadeType.ALL) protected GroupList admins; + @OneToOne(cascade = CascadeType.ALL) protected GroupList editors; @OneToOne(cascade = CascadeType.ALL) protected GroupList viewers; + @Id + @GeneratedValue + private Long id; public AccessLists() { this.admins = new GroupList(); @@ -49,14 +49,6 @@ this.viewers = new GroupList(); } - public Long getId() { - return id; - } - - public void setId(final Long id) { - this.id = id; - } - public void addAdmin(final Group group) { admins.add(group); } @@ -69,6 +61,18 @@ viewers.add(group); } + public GroupList getAdmins() { + return admins; + } + + public GroupList getEditors() { + return editors; + } + + public Long getId() { + return id; + } + public GroupList getList(final AccessRol rol) { if (rol == AccessRol.Administrator) { return getAdmins(); @@ -79,14 +83,6 @@ } } - public GroupList getAdmins() { - return admins; - } - - public GroupList getEditors() { - return editors; - } - public GroupList getViewers() { return viewers; } @@ -102,4 +98,13 @@ public void removeViewer(final Group group) { viewers.remove(group); } + + public void setId(final Long id) { + this.id = id; + } + + @Override + public String toString() { + return "AccessList[admins :" + admins + "; editors: " + editors + "; viewers: " + viewers + "]"; + } } Modified: trunk/src/main/java/org/ourproject/kune/platf/server/domain/Group.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/platf/server/domain/Group.java 2008-09-30 01:49:58 UTC (rev 897) +++ trunk/src/main/java/org/ourproject/kune/platf/server/domain/Group.java 2008-10-01 01:29:01 UTC (rev 898) @@ -281,4 +281,7 @@ this.workspaceTheme = workspaceTheme; } + public String toString() { + return "Group[" + shortName + "]"; + } } \ No newline at end of file Modified: trunk/src/main/java/org/ourproject/kune/platf/server/domain/GroupList.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/platf/server/domain/GroupList.java 2008-09-30 01:49:58 UTC (rev 897) +++ trunk/src/main/java/org/ourproject/kune/platf/server/domain/GroupList.java 2008-10-01 01:29:01 UTC (rev 898) @@ -39,80 +39,88 @@ @Table(name = "group_list") @Inheritance(strategy = InheritanceType.SINGLE_TABLE) public class GroupList { + @ManyToMany(cascade = { CascadeType.PERSIST, CascadeType.MERGE }) + List<Group> list; + @Id @GeneratedValue private Long id; - @ManyToMany(cascade = { CascadeType.PERSIST, CascadeType.MERGE }) - List<Group> list; - @Enumerated(EnumType.ORDINAL) @Basic private GroupListMode mode; public GroupList() { - this(new ArrayList<Group>()); - this.mode = GroupListMode.NORMAL; + this(new ArrayList<Group>()); + this.mode = GroupListMode.NORMAL; } public GroupList(final List<Group> list) { - this.list = list; + this.list = list; } - public Long getId() { - return id; + public void add(final Group group) { + // No group duplicate + // TODO: Get this outside Domain? + if (!list.contains(group)) { + list.add(group); + } + // TODO: Get this outside Domain? + if (getMode() == GroupListMode.NOBODY) { + setMode(GroupListMode.NORMAL); + } } - public void setId(final Long id) { - this.id = id; + public ArrayList<Group> duplicate() { + return new ArrayList<Group>(list); } - public List<Group> getList() { - return list; + public Long getId() { + return id; } - public void setList(final List<Group> list) { - this.list = list; + public List<Group> getList() { + return list; } - public void add(final Group group) { - // No group duplicate - // TODO: Get this outside Domain? - if (!list.contains(group)) { - list.add(group); - } - // TODO: Get this outside Domain? - if (getMode() == GroupListMode.NOBODY) { - setMode(GroupListMode.NORMAL); - } + public GroupListMode getMode() { + return mode; } public boolean includes(final Group group) { - return mode.checkIfIncludes(group, this.list); + return mode.checkIfIncludes(group, this.list); } - public ArrayList<Group> duplicate() { - return new ArrayList<Group>(list); + public boolean isEmpty() { + return list.size() == 0; } - public boolean isEmpty() { - return list.size() == 0; + public void remove(final Group group) { + list.remove(group); + // TODO: Get this outside Domain? + if (list.isEmpty()) { + setMode(GroupListMode.NOBODY); + } } - public GroupListMode getMode() { - return mode; + public void setId(final Long id) { + this.id = id; } + public void setList(final List<Group> list) { + this.list = list; + } + public void setMode(final GroupListMode mode) { - this.mode = mode; + this.mode = mode; } - public void remove(final Group group) { - list.remove(group); - // TODO: Get this outside Domain? - if (list.isEmpty()) { - setMode(GroupListMode.NOBODY); - } + public String toString() { + String groupString = ""; + for (final Group group : list) { + groupString = groupString + group.getShortName() + ", "; + } + return "Group[(" + mode + "): " + groupString + "]"; } } Modified: trunk/src/main/java/org/ourproject/kune/platf/server/domain/I18nLanguage.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/platf/server/domain/I18nLanguage.java 2008-09-30 01:49:58 UTC (rev 897) +++ trunk/src/main/java/org/ourproject/kune/platf/server/domain/I18nLanguage.java 2008-10-01 01:29:01 UTC (rev 898) @@ -103,179 +103,184 @@ private String scope; public I18nLanguage() { - this(null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null); + this(null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null); } + // Only for tests + public I18nLanguage(final Long id, final String englishName, final String nativeName, final String code) { + this.id = id; + this.englishName = englishName; + this.nativeName = nativeName; + this.code = code; + } + // code is iso6391 || iso6392 || rfc3306 (see DatabaInicializer) public I18nLanguage(final Long id, final String code, final String direction, final String englishName, - final String englishNameLocale, final String englishNameModifier, final String iso6391, - final String iso6392, final String iso6393, final Boolean macroLanguage, final String nativeName, - final String nativeNameLocale, final String nativeNameModifier, final String pluralization, - final String rfc3066, final String scope) { - this.id = id; - this.iso6391 = iso6391; - this.iso6392 = iso6392; - this.iso6393 = iso6393; - this.rfc3066 = rfc3066; - this.englishName = englishName; - this.englishNameLocale = englishNameLocale; - this.englishNameModifier = englishNameModifier; - this.nativeName = nativeName; - this.nativeNameLocale = nativeNameLocale; - this.nativeNameModifier = nativeNameModifier; - this.macroLanguage = macroLanguage; - this.direction = direction; - this.pluralization = pluralization; - this.scope = scope; - this.code = code; + final String englishNameLocale, final String englishNameModifier, final String iso6391, + final String iso6392, final String iso6393, final Boolean macroLanguage, final String nativeName, + final String nativeNameLocale, final String nativeNameModifier, final String pluralization, + final String rfc3066, final String scope) { + this.id = id; + this.iso6391 = iso6391; + this.iso6392 = iso6392; + this.iso6393 = iso6393; + this.rfc3066 = rfc3066; + this.englishName = englishName; + this.englishNameLocale = englishNameLocale; + this.englishNameModifier = englishNameModifier; + this.nativeName = nativeName; + this.nativeNameLocale = nativeNameLocale; + this.nativeNameModifier = nativeNameModifier; + this.macroLanguage = macroLanguage; + this.direction = direction; + this.pluralization = pluralization; + this.scope = scope; + this.code = code; } - // Only for tests - public I18nLanguage(final Long id, final String englishName, final String nativeName, final String code) { - this.id = id; - this.englishName = englishName; - this.nativeName = nativeName; - this.code = code; + @Finder(query = "FROM I18nLanguage l WHERE code = :language") + public I18nLanguage findByCode(@Named("language") + final String language) { + return null; } - public Long getId() { - return this.id; + @Finder(query = "FROM I18nLanguage") + public List<I18nLanguage> getAll() { + return null; } - public void setId(final Long id) { - this.id = id; + public String getCode() { + return code; } - public String getIso6391() { - return this.iso6391; + public String getDirection() { + return this.direction; } - public void setIso6391(final String iso6391) { - this.iso6391 = iso6391; + public String getEnglishName() { + return this.englishName; } - public String getIso6392() { - return this.iso6392; + public String getEnglishNameLocale() { + return this.englishNameLocale; } - public void setIso6392(final String iso6392) { - this.iso6392 = iso6392; + public String getEnglishNameModifier() { + return this.englishNameModifier; } - public String getIso6393() { - return this.iso6393; + public Long getId() { + return this.id; } - public void setIso6393(final String iso6393) { - this.iso6393 = iso6393; + public String getIso6391() { + return this.iso6391; } - public String getRfc3066() { - return this.rfc3066; + public String getIso6392() { + return this.iso6392; } - public void setRfc3066(final String rfc3066) { - this.rfc3066 = rfc3066; + public String getIso6393() { + return this.iso6393; } - public String getEnglishName() { - return this.englishName; + public Boolean getMacroLanguage() { + return this.macroLanguage; } - public void setEnglishName(final String englishName) { - this.englishName = englishName; + public String getNativeName() { + return this.nativeName; } - public String getEnglishNameLocale() { - return this.englishNameLocale; + public String getNativeNameLocale() { + return this.nativeNameLocale; } - public void setEnglishNameLocale(final String englishNameLocale) { - this.englishNameLocale = englishNameLocale; + public String getNativeNameModifier() { + return this.nativeNameModifier; } - public String getEnglishNameModifier() { - return this.englishNameModifier; + public String getPluralization() { + return this.pluralization; } - public void setEnglishNameModifier(final String englishNameModifier) { - this.englishNameModifier = englishNameModifier; + public String getRfc3066() { + return this.rfc3066; } - public String getNativeName() { - return this.nativeName; + public String getScope() { + return this.scope; } - public void setNativeName(final String nativeName) { - this.nativeName = nativeName; + @Column(unique = true) + public void setCode(final String code) { + this.code = code; } - public String getNativeNameLocale() { - return this.nativeNameLocale; + public void setDirection(final String direction) { + this.direction = direction; } - public void setNativeNameLocale(final String nativeNameLocale) { - this.nativeNameLocale = nativeNameLocale; + public void setEnglishName(final String englishName) { + this.englishName = englishName; } - public String getNativeNameModifier() { - return this.nativeNameModifier; + public void setEnglishNameLocale(final String englishNameLocale) { + this.englishNameLocale = englishNameLocale; } - public void setNativeNameModifier(final String nativeNameModifier) { - this.nativeNameModifier = nativeNameModifier; + public void setEnglishNameModifier(final String englishNameModifier) { + this.englishNameModifier = englishNameModifier; } - public Boolean getMacroLanguage() { - return this.macroLanguage; + public void setId(final Long id) { + this.id = id; } - public void setMacroLanguage(final Boolean macroLanguage) { - this.macroLanguage = macroLanguage; + public void setIso6391(final String iso6391) { + this.iso6391 = iso6391; } - public String getDirection() { - return this.direction; + public void setIso6392(final String iso6392) { + this.iso6392 = iso6392; } - public void setDirection(final String direction) { - this.direction = direction; + public void setIso6393(final String iso6393) { + this.iso6393 = iso6393; } - public String getPluralization() { - return this.pluralization; + public void setMacroLanguage(final Boolean macroLanguage) { + this.macroLanguage = macroLanguage; } - public void setPluralization(final String pluralization) { - this.pluralization = pluralization; + public void setNativeName(final String nativeName) { + this.nativeName = nativeName; } - public String getScope() { - return this.scope; + public void setNativeNameLocale(final String nativeNameLocale) { + this.nativeNameLocale = nativeNameLocale; } - public void setScope(final String scope) { - this.scope = scope; + public void setNativeNameModifier(final String nativeNameModifier) { + this.nativeNameModifier = nativeNameModifier; } - @Finder(query = "FROM I18nLanguage l WHERE code = :language") - public I18nLanguage findByCode(@Named("language") - final String language) { - return null; + public void setPluralization(final String pluralization) { + this.pluralization = pluralization; } - public String getCode() { - return code; + public void setRfc3066(final String rfc3066) { + this.rfc3066 = rfc3066; } - @Column(unique = true) - public void setCode(final String code) { - this.code = code; + public void setScope(final String scope) { + this.scope = scope; } - @Finder(query = "FROM I18nLanguage") - public List<I18nLanguage> getAll() { - return null; + @Override + public String toString() { + return "I18nLanguage[" + englishName + "]"; } } Modified: trunk/src/main/java/org/ourproject/kune/platf/server/domain/I18nTranslation.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/platf/server/domain/I18nTranslation.java 2008-09-30 01:49:58 UTC (rev 897) +++ trunk/src/main/java/org/ourproject/kune/platf/server/domain/I18nTranslation.java 2008-10-01 01:29:01 UTC (rev 898) @@ -49,20 +49,20 @@ @Indexed @Table(name = "globalize_translations") @NamedQueries( { - @NamedQuery(name = "untranslated", query = "SELECT gt FROM I18nTranslation gt WHERE gt.language = :language and text=null"), - @NamedQuery(name = "translated", query = "SELECT gt FROM I18nTranslation gt WHERE gt.language = :language and text!=null"), - @NamedQuery(name = "untranslatedcount", query = "SELECT COUNT(gt.id) FROM I18nTranslation gt WHERE gt.language = :language and text=null"), - @NamedQuery(name = "translatedcount", query = "SELECT COUNT(gt.id) FROM I18nTranslation gt WHERE gt.language = :language and text!=null") }) + @NamedQuery(name = "untranslated", query = "SELECT gt FROM I18nTranslation gt WHERE gt.language = :language and text=null"), + @NamedQuery(name = "translated", query = "SELECT gt FROM I18nTranslation gt WHERE gt.language = :language and text!=null"), + @NamedQuery(name = "untranslatedcount", query = "SELECT COUNT(gt.id) FROM I18nTranslation gt WHERE gt.language = :language and text=null"), + @NamedQuery(name = "translatedcount", query = "SELECT COUNT(gt.id) FROM I18nTranslation gt WHERE gt.language = :language and text!=null") }) public class I18nTranslation implements HasId { + public static final String DEF_NAMESPACE = "kune_core"; + public static final Integer DEF_PLUR_INDEX = 1; + public static final String DEFAULT_LANG = "en"; + public static final String UNTRANSLATED_VALUE = null; private static final String TRANSLATED_QUERY = "translated"; private static final String UNTRANSLATED_QUERY = "untranslated"; private static final String TRANSLATED_COUNT_QUERY = "translatedcount"; private static final String UNTRANSLATED_COUNT_QUERY = "untranslatedcount"; - public static final String DEF_NAMESPACE = "kune_core"; - public static final Integer DEF_PLUR_INDEX = 1; - public static final String DEFAULT_LANG = "en"; - public static final String UNTRANSLATED_VALUE = null; @Id @GeneratedValue @@ -96,115 +96,112 @@ private String text; public I18nTranslation() { - this(null, null, null, null, null, null, null, null); + this(null, null, null, null, null, null, null, null); } - public I18nTranslation(final String facet, final Integer itemId, final Integer pluralizationIndex, - final String tableName, final String text, final String trKey, final String type, - final I18nLanguage language) { - this.type = type; - this.trKey = trKey; - this.tableName = tableName; - this.itemId = itemId; - this.facet = facet; - this.language = language; - this.pluralizationIndex = pluralizationIndex; - this.text = text; - } - public I18nTranslation(final String trKey, final I18nLanguage language, final String text) { - this("", null, DEF_PLUR_INDEX, "", text, trKey, DEF_NAMESPACE, language); + this("", null, DEF_PLUR_INDEX, "", text, trKey, DEF_NAMESPACE, language); } - public Long getId() { - return this.id; + public I18nTranslation(final String facet, final Integer itemId, final Integer pluralizationIndex, + final String tableName, final String text, final String trKey, final String type, + final I18nLanguage language) { + this.type = type; + this.trKey = trKey; + this.tableName = tableName; + this.itemId = itemId; + this.facet = facet; + this.language = language; + this.pluralizationIndex = pluralizationIndex; + this.text = text; } - public void setId(final Long id) { - this.id = id; + public I18nTranslation cloneForNewLanguage() { + final I18nTranslation clone = new I18nTranslation(); + clone.type = type; + clone.trKey = trKey; + clone.tableName = tableName; + clone.itemId = itemId; + clone.facet = facet; + clone.language = null; + clone.pluralizationIndex = pluralizationIndex; + clone.text = null; + return clone; } - public String getType() { - return this.type; + @Finder(query = "SELECT gt FROM I18nTranslation gt JOIN gt.language gl WHERE gl.code = :language") + public List<I18nTranslation> findByLanguage(@Named("language") + final String language) { + return null; } - public void setType(final String type) { - this.type = type; + public String getFacet() { + return this.facet; } - public String getTrKey() { - return this.trKey; + public Long getId() { + return this.id; } - public void setTrKey(final String trKey) { - this.trKey = trKey; - } - - public String getTableName() { - return this.tableName; - } - - public void setTableName(final String tableName) { - this.tableName = tableName; - } - public Integer getItemId() { - return this.itemId; + return this.itemId; } - public void setItemId(final Integer itemId) { - this.itemId = itemId; + public I18nLanguage getLanguage() { + return language; } - public String getFacet() { - return this.facet; + @Finder(query = "SELECT gt FROM I18nTranslation gt WHERE gt.language = :deflanguage AND gt.trKey NOT IN (SELECT gt.trKey FROM I18nTranslation gt WHERE gt.language = :language)") + public List<I18nTranslation> getNonExistentFromDefault(@Named("deflanguage") + final I18nLanguage deflanguage, @Named("language") + final I18nLanguage language) { + return null; } - public void setFacet(final String facet) { - this.facet = facet; - } - public Integer getPluralizationIndex() { - return this.pluralizationIndex; + return this.pluralizationIndex; } - public void setPluralizationIndex(final Integer pluralizationIndex) { - this.pluralizationIndex = pluralizationIndex; + public String getTableName() { + return this.tableName; } public String getText() { - return this.text; + return this.text; } - public void setText(final String text) { - this.text = text; + @Finder(namedQuery = TRANSLATED_QUERY) + public List<I18nTranslation> getTranslatedLexicon(@Named("language") + final I18nLanguage language) { + return null; } - public I18nLanguage getLanguage() { - return language; + @Finder(namedQuery = TRANSLATED_QUERY) + public List<I18nTranslation> getTranslatedLexicon(@Named("language") + final I18nLanguage language, @FirstResult + final int first, @MaxResults + final int max) { + return null; } - public void setLanguage(final I18nLanguage language) { - this.language = language; + @Finder(namedQuery = TRANSLATED_COUNT_QUERY) + public Long getTranslatedLexiconCount(@Named("language") + final I18nLanguage language) { + return null; } - @Finder(query = "SELECT gt FROM I18nTranslation gt JOIN gt.language gl WHERE gl.code = :language") - public List<I18nTranslation> findByLanguage(@Named("language") - final String language) { - return null; + public String getTrKey() { + return this.trKey; } - @Finder(query = "SELECT gt FROM I18nTranslation gt WHERE gt.language = :deflanguage AND gt.trKey NOT IN (SELECT gt.trKey FROM I18nTranslation gt WHERE gt.language = :language)") - public List<I18nTranslation> getNonExistentFromDefault(@Named("deflanguage") - final I18nLanguage deflanguage, @Named("language") - final I18nLanguage language) { - return null; + public String getType() { + return this.type; } @Finder(namedQuery = UNTRANSLATED_QUERY) public List<I18nTranslation> getUnstranslatedLexicon(@Named("language") final I18nLanguage language) { - return null; + return null; } @Finder(namedQuery = UNTRANSLATED_QUERY) @@ -212,46 +209,54 @@ final I18nLanguage language, @FirstResult final int first, @MaxResults final int max) { - return null; + return null; } @Finder(namedQuery = UNTRANSLATED_COUNT_QUERY) public Long getUnstranslatedLexiconCount(@Named("language") final I18nLanguage language) { - return null; + return null; } - @Finder(namedQuery = TRANSLATED_QUERY) - public List<I18nTranslation> getTranslatedLexicon(@Named("language") - final I18nLanguage language) { - return null; + public void setFacet(final String facet) { + this.facet = facet; } - @Finder(namedQuery = TRANSLATED_QUERY) - public List<I18nTranslation> getTranslatedLexicon(@Named("language") - final I18nLanguage language, @FirstResult - final int first, @MaxResults - final int max) { - return null; + public void setId(final Long id) { + this.id = id; } - @Finder(namedQuery = TRANSLATED_COUNT_QUERY) - public Long getTranslatedLexiconCount(@Named("language") - final I18nLanguage language) { - return null; + public void setItemId(final Integer itemId) { + this.itemId = itemId; } - public I18nTranslation cloneForNewLanguage() { - I18nTranslation clone = new I18nTranslation(); - clone.type = type; - clone.trKey = trKey; - clone.tableName = tableName; - clone.itemId = itemId; - clone.facet = facet; - clone.language = null; - clone.pluralizationIndex = pluralizationIndex; - clone.text = null; - return clone; + public void setLanguage(final I18nLanguage language) { + this.language = language; } + public void setPluralizationIndex(final Integer pluralizationIndex) { + this.pluralizationIndex = pluralizationIndex; + } + + public void setTableName(final String tableName) { + this.tableName = tableName; + } + + public void setText(final String text) { + this.text = text; + } + + public void setTrKey(final String trKey) { + this.trKey = trKey; + } + + public void setType(final String type) { + this.type = type; + } + + @Override + public String toString() { + return "I18nTranslation[" + trKey + " (" + language + ") " + text + "]"; + } + } Modified: trunk/src/main/java/org/ourproject/kune/platf/server/domain/SocialNetwork.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/platf/server/domain/SocialNetwork.java 2008-09-30 01:49:58 UTC (rev 897) +++ trunk/src/main/java/org/ourproject/kune/platf/server/domain/SocialNetwork.java 2008-10-01 01:29:01 UTC (rev 898) @@ -41,80 +41,83 @@ GroupList pendingCollaborators; public SocialNetwork() { - accessLists = new AccessLists(); - pendingCollaborators = new GroupList(); + accessLists = new AccessLists(); + pendingCollaborators = new GroupList(); } - public Long getId() { - return id; + public void addAdmin(final Group group) { + accessLists.addAdmin(group); } - public GroupList getPendingCollaborators() { - return pendingCollaborators; + public void addCollaborator(final Group group) { + accessLists.addEditor(group); } - public void setPendingCollaborators(final GroupList pendingCollaborators) { - this.pendingCollaborators = pendingCollaborators; + public void addPendingCollaborator(final Group group) { + pendingCollaborators.add(group); } - public void setAccessLists(final AccessLists accessList) { - this.accessLists = accessList; + public void addViewer(final Group group) { + accessLists.addViewer(group); } - public void setId(final Long id) { - this.id = id; + public AccessLists getAccessLists() { + return accessLists; } - public void addAdmin(final Group group) { - accessLists.addAdmin(group); + public Long getId() { + return id; } - public void addCollaborator(final Group group) { - accessLists.addEditor(group); + public GroupList getPendingCollaborators() { + return pendingCollaborators; } - public void addViewer(final Group group) { - accessLists.addViewer(group); + public boolean isAdmin(final Group group) { + return accessLists.getAdmins().includes(group); } - public void addPendingCollaborator(final Group group) { - pendingCollaborators.add(group); + public boolean isCollab(final Group group) { + return accessLists.getEditors().includes(group); } + public boolean isPendingCollab(final Group group) { + return pendingCollaborators.getList().contains(group); + } + + public boolean isViewer(final Group group) { + return accessLists.getViewers().includes(group); + } + public void removeAdmin(final Group group) { - accessLists.removeAdmin(group); + accessLists.removeAdmin(group); } public void removeCollaborator(final Group group) { - accessLists.removeEditor(group); + accessLists.removeEditor(group); } - public void removeViewer(final Group group) { - accessLists.removeViewer(group); - } - public void removePendingCollaborator(final Group group) { - pendingCollaborators.getList().remove(group); + pendingCollaborators.getList().remove(group); } - public AccessLists getAccessLists() { - return accessLists; + public void removeViewer(final Group group) { + accessLists.removeViewer(group); } - public boolean isAdmin(final Group group) { - return accessLists.getAdmins().includes(group); + public void setAccessLists(final AccessLists accessList) { + this.accessLists = accessList; } - public boolean isCollab(final Group group) { - return accessLists.getEditors().includes(group); + public void setId(final Long id) { + this.id = id; } - public boolean isViewer(final Group group) { - return accessLists.getViewers().includes(group); + public void setPendingCollaborators(final GroupList pendingCollaborators) { + this.pendingCollaborators = pendingCollaborators; } - public boolean isPendingCollab(final Group group) { - return pendingCollaborators.getList().contains(group); + public String toString() { + return "SocialNetwork[accessList: " + accessLists + "; pendingsCollabs: " + pendingCollaborators + "]"; } - } Modified: trunk/src/main/java/org/ourproject/kune/platf/server/domain/User.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/platf/server/domain/User.java 2008-09-30 01:49:58 UTC (rev 897) +++ trunk/src/main/java/org/ourproject/kune/platf/server/domain/User.java 2008-10-01 01:29:01 UTC (rev 898) @@ -213,4 +213,7 @@ this.userGroup = userGroup; } + public String toString() { + return "User[" + shortName + "]"; + } } Modified: trunk/src/main/java/org/ourproject/kune/platf/server/state/State.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/platf/server/state/State.java 2008-09-30 01:49:58 UTC (rev 897) +++ trunk/src/main/java/org/ourproject/kune/platf/server/state/State.java 2008-10-01 01:29:01 UTC (rev 898) @@ -293,4 +293,7 @@ this.typeId = typeId; } + public String toString() { + return "State[" + stateToken + "/" + typeId + "]"; + } } Modified: trunk/src/main/java/org/ourproject/kune/workspace/Kune-Workspace.gwt.xml =================================================================== --- trunk/src/main/java/org/ourproject/kune/workspace/Kune-Workspace.gwt.xml 2008-09-30 01:49:58 UTC (rev 897) +++ trunk/src/main/java/org/ourproject/kune/workspace/Kune-Workspace.gwt.xml 2008-10-01 01:29:01 UTC (rev 898) @@ -1,27 +1,47 @@ <module> - <inherits name='org.ourproject.kune.platf.Kune-Platform' /> - <inherits name="com.google.gwt.core.Core" /> - <inherits name="com.google.gwt.user.UserAgent" /> - <!-- RTE css inject --> + <inherits name='org.ourproject.kune.platf.Kune-Platform' /> + <inherits name="com.google.gwt.core.Core" /> + <inherits name="com.google.gwt.user.UserAgent" /> + <!-- RTE css inject --> + <!-- See gwt-user: com/google/gwt/user/RichText.gwt.xml --> - <replace-with - class="org.ourproject.kune.workspace.client.editor.WrappedRichTextAreaImplIE6"> - <when-type-is - class="com.google.gwt.user.client.ui.impl.RichTextAreaImpl" /> - <when-property-is name="user.agent" value="ie6" /> - </replace-with> + <!-- IE-specific implementation --> + <replace-with + class="org.ourproject.kune.workspace.client.editor.WrappedRichTextAreaImplIE6"> + <when-type-is + class="com.google.gwt.user.client.ui.impl.RichTextAreaImpl" /> + <when-property-is name="user.agent" value="ie6" /> + </replace-with> - <replace-with - class="org.ourproject.kune.workspace.client.editor.WrappedRichTextAreaImplMozilla"> - <when-type-is - class="com.google.gwt.user.client.ui.impl.RichTextAreaImpl" /> - <any> - <when-property-is name="user.agent" value="gecko1_8" /> - <when-property-is name="user.agent" value="gecko" /> - </any> - </replace-with> + <!-- Mozilla-specific implementation --> + <replace-with + class="org.ourproject.kune.workspace.client.editor.WrappedRichTextAreaImplMozilla"> + <when-type-is + class="com.google.gwt.user.client.ui.impl.RichTextAreaImpl" /> + <any> + <when-property-is name="user.agent" value="gecko1_8" /> + <when-property-is name="user.agent" value="gecko" /> + </any> + </replace-with> - <!-- - TODO: .... same for Safari and Opera. - --> + <!-- Safari-specific implementation --> + <replace-with + class="org.ourproject.kune.workspace.client.editor.WrappedRichTextAreaImplSafari"> + <when-type-is + class="com.google.gwt.user.client.ui.impl.RichTextAreaImpl" /> + <any> + <when-property-is name="user.agent" value="safari" /> + </any> + </replace-with> + + <!-- Opera-specific implementation --> + <replace-with + class="org.ourproject.kune.workspace.client.editor.WrappedRichTextAreaImplOpera"> + <when-type-is + class="com.google.gwt.user.client.ui.impl.RichTextAreaImpl" /> + <any> + <when-property-is name="user.agent" value="opera" /> + </any> + </replace-with> + </module> Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/ctxnav/ContextNavigatorPanel.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/workspace/client/ctxnav/ContextNavigatorPanel.java 2008-09-30 01:49:58 UTC (rev 897) +++ trunk/src/main/java/org/ourproject/kune/workspace/client/ctxnav/ContextNavigatorPanel.java 2008-10-01 01:29:01 UTC (rev 898) @@ -30,11 +30,8 @@ import org.ourproject.kune.platf.client.services.I18nTranslationService; import org.ourproject.kune.workspace.client.site.Site; import org.ourproject.kune.workspace.client.skel.WorkspaceSkeleton; -import org.ourproject.kune.workspace.client.themes.WsTheme; -import org.ourproject.kune.workspace.client.themes.WsThemePresenter; import com.allen_sauer.gwt.log.client.Log; -import com.calclab.suco.client.listener.Listener2; import com.google.gwt.user.client.Command; import com.google.gwt.user.client.DeferredCommand; import com.gwtext.client.core.EventObject; @@ -71,15 +68,10 @@ private final ContextNavigatorPresenter presenter; public ContextNavigatorPanel(final ContextNavigatorPresenter presenter, final I18nTranslationService i18n, - final WorkspaceSkeleton ws, final ActionManager actionManager, final WsThemePresenter wsTheme) { + final WorkspaceSkeleton ws, final ActionManager actionManager) { this.presenter = presenter; this.ws = ws; this.actionManager = actionManager; - wsTheme.onThemeChanged(new Listener2<WsTheme, WsTheme>() { - public void onEvent(final WsTheme oldTheme, final WsTheme newTheme) { - setTheme(oldTheme, newTheme); - } - }); contextMenus = new HashMap<String, Menu>(); fireOnTextChange = true; @@ -203,16 +195,6 @@ } } - public void setTheme(final WsTheme oldTheme, final WsTheme newTheme) { - if (treePanel != null) { - if (oldTheme != null) { - final String previousThemeS = oldTheme.toString(); - treePanel.removeStyleName("k-entity-context-" + previousThemeS); - } - treePanel.addStyleName("k-entity-context-" + newTheme); - } - } - private void createItemMenu(final String nodeId, final ActionItemCollection<StateToken> actionCollection) { DeferredCommand.addCommand(new Command() { public void execute() { Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/editor/TextEditor.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/workspace/client/editor/TextEditor.java 2008-09-30 01:49:58 UTC (rev 897) +++ trunk/src/main/java/org/ourproject/kune/workspace/client/editor/TextEditor.java 2008-10-01 01:29:01 UTC (rev 898) @@ -20,22 +20,17 @@ package org.ourproject.kune.workspace.client.editor; -import org.ourproject.kune.platf.client.View; +import com.calclab.suco.client.listener.Listener; +import com.calclab.suco.client.listener.Listener0; public interface TextEditor { - public String getContent(); + void editContent(String content, Listener<String> onSave, Listener0 onEditCancelled); - public View getView(); + void onSaved(); - public void onSaved(); + void onSaveFailed(); - public void onSaveFailed(); + void reset(); - public void reset(); - - public void setContent(String content); - - public void setToolbarVisible(boolean visible); - } Deleted: trunk/src/main/java/org/ourproject/kune/workspace/client/editor/TextEditorListener.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/workspace/client/editor/TextEditorListener.java 2008-09-30 01:49:58 UTC (rev 897) +++ trunk/src/main/java/org/ourproject/kune/workspace/client/editor/TextEditorListener.java 2008-10-01 01:29:01 UTC (rev 898) @@ -1,29 +0,0 @@ -/* - * - * Copyright (C) 2007-2008 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 org.ourproject.kune.workspace.client.editor; - -public interface TextEditorListener { - - void onEditCancelled(); - - void onSave(String text); - -} Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/editor/TextEditorPanel.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/workspace/client/editor/TextEditorPanel.java 2008-09-30 01:49:58 UTC (rev 897) +++ trunk/src/main/java/org/ourproject/kune/workspace/client/editor/TextEditorPanel.java 2008-10-01 01:29:01 UTC (rev 898) @@ -22,17 +22,20 @@ import org.ourproject.kune.platf.client.View; import org.ourproject.kune.platf.client.services.I18nTranslationService; +import org.ourproject.kune.platf.client.ui.DefaultBorderLayout; +import org.ourproject.kune.workspace.client.skel.Toolbar; import org.ourproject.kune.workspace.client.skel.WorkspaceSkeleton; import com.google.gwt.user.client.DOM; import com.google.gwt.user.client.Timer; import com.google.gwt.user.client.Window; import com.google.gwt.user.client.WindowResizeListener; -import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.RichTextArea; import com.gwtext.client.widgets.MessageBox; +import com.gwtext.client.widgets.Panel; +import com.gwtext.client.widgets.layout.FitLayout; -public class TextEditorPanel extends Composite implements TextEditorView { +public class TextEditorPanel implements TextEditorView { private static final String BACKCOLOR_ENABLED = "#FFF"; private static final String BACKCOLOR_DISABLED = "#CCC"; private final RichTextArea gwtRTarea; @@ -40,18 +43,31 @@ private final TextEditorPresenter presenter; private final Timer saveTimer; private final I18nTranslationService i18n; + private final DefaultBorderLayout mainPanel; + private final WorkspaceSkeleton ws; public TextEditorPanel(final TextEditorPresenter presenter, final I18nTranslationService i18n, final WorkspaceSkeleton ws) { - this.presenter = presenter; this.i18n = i18n; + this.ws = ws; + mainPanel = new DefaultBorderLayout(); + final Panel centerPanel = new Panel(); + centerPanel.setLayout(new FitLayout()); gwtRTarea = new RichTextArea(); - textEditorToolbar = new TextEditorToolbar(gwtRTarea, presenter, i18n, ws); - initWidget(gwtRTarea); - + // centerPanel.add(gwtRTarea); gwtRTarea.setWidth("97%"); gwtRTarea.addStyleName("kune-TexEditorPanel-TextArea"); + + final Toolbar editorTopBar = new Toolbar(); + textEditorToolbar = new TextEditorToolbar(gwtRTarea, presenter, i18n); + editorTopBar.add(textEditorToolbar); + editorTopBar.addStyleName("k-toolbar-bottom-line"); + + // mainPanel.add(editorTopBar.getPanel(), Position.NORTH, false, + // DefaultBorderLayout.DEF_TOOLBAR_HEIGHT); + mainPanel.add(centerPanel, DefaultBorderLayout.Position.CENTER); + adjustSize("" + (Window.getClientHeight() - 265)); Window.addWindowResizeListener(new WindowResizeListener() { public void onWindowResized(final int arg0, final int arg1) { @@ -65,6 +81,15 @@ }; } + public void attach() { + // ws.getEntityWorkspace().setContent(mainPanel.getPanel()); + ws.getEntityWorkspace().setContent(gwtRTarea); + } + + public void detach() { + mainPanel.getPanel().removeFromParent(); + } + public void editHTML(final boolean edit) { textEditorToolbar.editHTML(edit); } @@ -119,10 +144,6 @@ textEditorToolbar.setTextSaveButton(text); } - public void setToolBarVisible(final boolean visible) { - textEditorToolbar.setVisible(visible); - } - public void showSaveBeforeDialog() { MessageBox.confirm(i18n.t("Save confirmation"), i18n.t("Save before close?"), new MessageBox.ConfirmCallback() { public void execute(final String btnID) { Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/editor/TextEditorPresenter.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/workspace/client/editor/TextEditorPresenter.java 2008-09-30 01:49:58 UTC (rev 897) +++ trunk/src/main/java/org/ourproject/kune/workspace/client/editor/TextEditorPresenter.java 2008-10-01 01:29:01 UTC (rev 898) @@ -21,23 +21,50 @@ package org.ourproject.kune.workspace.client.editor; import org.ourproject.kune.platf.client.View; +import org.ourproject.kune.platf.client.actions.ActionItem; +import org.ourproject.kune.platf.client.actions.ActionItemCollection; +import org.ourproject.kune.platf.client.actions.ActionToolbarButtonDescriptor; +import org.ourproject.kune.platf.client.actions.ActionToolbarPosition; +import org.ourproject.kune.platf.client.actions.toolbar.ActionToolbar; +import org.ourproject.kune.platf.client.dto.AccessRolDTO; +import org.ourproject.kune.platf.client.dto.StateToken; +import org.ourproject.kune.workspace.client.i18n.I18nUITranslationService; +import com.calclab.suco.client.listener.Listener; +import com.calclab.suco.client.listener.Listener0; + public class TextEditorPresenter implements TextEditor { private boolean editingHtml; private TextEditorView view; private boolean savePending; private final boolean autoSave; - private final TextEditorListener listener; private boolean saveAndCloseConfirmed; + private Listener<String> onSave; + private Listener0 onEditCancelled; + private final ActionToolbar<StateToken> toolbar; + private ActionToolbarButtonDescriptor<StateToken> save; + private ActionToolbarButtonDescriptor<StateToken> close; + private final I18nUITranslationService i18n; - public TextEditorPresenter(final TextEditorListener listener, final boolean isAutoSave) { - this.listener = listener; + public TextEditorPresenter(final boolean isAutoSave, final ActionToolbar<StateToken> toolbar, + final I18nUITranslationService i18n) { + this.toolbar = toolbar; autoSave = isAutoSave; + this.i18n = i18n; savePending = false; editingHtml = false; saveAndCloseConfirmed = false; + createActions(); } + public void editContent(final String content, final Listener<String> onSave, final Listener0 onEditCancelled) { + this.onSave = onSave; + this.onEditCancelled = onEditCancelled; + toolbar.attach(); + view.attach(); + setContent(content); + } + public String getContent() { return view.getHTML(); } @@ -87,16 +114,10 @@ savePending = false; saveAndCloseConfirmed = false; view.setEnabledSaveButton(false); + view.detach(); + toolbar.detach(); } - public void setContent(final String html) { - this.view.setHTML(html); - } - - public void setToolbarVisible(final boolean visible) { - view.setToolBarVisible(visible); - } - protected void onCancel() { if (savePending) { view.saveTimerCancel(); @@ -108,7 +129,7 @@ protected void onCancelConfirmed() { reset(); - listener.onEditCancelled(); + onEditCancelled.onEvent(); } protected void onEditHTML() { @@ -128,6 +149,35 @@ } protected void onSave() { - listener.onSave(view.getHTML()); + onSave.onEvent(view.getHTML()); } + + private void createActions() { + save = new ActionToolbarButtonDescriptor<StateToken>(AccessRolDTO.Viewer, ActionToolbarPosition.topbar, + new Listener<StateToken>() { + public void onEvent(final StateToken token) { + onSave(); + } + }); + save.setTextDescription(i18n.tWithNT("Save", "used in button")); + // save.setIconUrl("images/"); + + close = new ActionToolbarButtonDescriptor<StateToken>(AccessRolDTO.Viewer, ActionToolbarPosition.topbar, + new Listener<StateToken>() { + public void onEvent(final StateToken token) { + onCancel(); + } + }); + close.setTextDescription(i18n.tWithNT("Close", "used in button")); + // close.setIconUrl("images/"); + + final ActionItemCollection<StateToken> collection = new ActionItemCollection<StateToken>(); + collection.add(new ActionItem<StateToken>(save, null)); + collection.add(new ActionItem<StateToken>(close, null)); + toolbar.showActions(collection, true); + } + + private void setContent(final String html) { + this.view.setHTML(html); + } } Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/editor/TextEditorToolbar.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/workspace/client/editor/TextEditorToolbar.java 2008-09-30 01:49:58 UTC (rev 897) +++ trunk/src/main/java/org/ourproject/kune/workspace/client/editor/TextEditorToolbar.java 2008-10-01 01:29:01 UTC (rev 898) @@ -30,7 +30,6 @@ import org.ourproject.kune.platf.client.ui.palette.ColorSelectListener; import org.ourproject.kune.platf.client.ui.palette.WebSafePalettePanel; import org.ourproject.kune.platf.client.ui.palette.WebSafePalettePresenter; -import org.ourproject.kune.workspace.client.skel.WorkspaceSkeleton; import com.google.gwt.core.client.GWT; import com.google.gwt.user.client.Command; @@ -264,11 +263,9 @@ private final TextEditorImages images = (TextEditorImages) GWT.create(TextEditorImages.class); private final EventListener listener = new EventListener(); - private final RichTextArea richText; private final RichTextArea.BasicFormatter basic; private final RichTextArea.ExtendedFormatter extended; - private final VerticalPanel outer = new VerticalPanel(); private final HorizontalPanel topPanel = new HorizontalPanel(); private ToggleButton bold; @@ -308,7 +305,7 @@ * the rich text area to be controlled */ public TextEditorToolbar(final RichTextArea richText, final TextEditorPresenter panelListener, - final I18nTranslationService i18n, final WorkspaceSkeleton ws) { + final I18nTranslationService i18n) { this.richText = richText; this.i18n = i18n; this.basic = richText.getBasicFormatter(); @@ -392,8 +389,7 @@ // i18n.t("Edit HTML"))); // } - ws.getEntityWorkspace().getContentTopBar().add(this); - super.setVisible(false); + // super.setVisible(false); } public void editHTML(final boolean edit) { Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/editor/TextEditorView.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/workspace/client/editor/TextEditorView.java 2008-09-30 01:49:58 UTC (rev 897) +++ trunk/src/main/java/org/ourproject/kune/workspace/client/editor/TextEditorView.java 2008-10-01 01:29:01 UTC (rev 898) @@ -24,34 +24,36 @@ public interface TextEditorView extends View { - public void editHTML(boolean edit); + void attach(); - public String getHTML(); + void detach(); - public String getText(); + void editHTML(boolean edit); - public View getToolBar(); + String getHTML(); - public void saveTimerCancel(); + String getText(); - public void scheduleSave(int delayMillis); + View getToolBar(); - public void setEnabled(boolean enabled); + void saveTimerCancel(); - public void setEnabledCancelButton(boolean enabled); + void scheduleSave(int delayMillis); - public void setEnabledSaveButton(boolean enabled); + void setEnabled(boolean enabled); - public void setHeight(String height); + void setEnabledCancelButton(boolean enabled); - public void setHTML(String html); + void setEnabledSaveButton(boolean enabled); - public void setText(String text); + void setHeight(String height); - public void setTextSaveButton(String text); + void setHTML(String html); - public void setToolBarVisible(boolean visible); + void setText(String text); - public void showSaveBeforeDialog(); + void setTextSaveButton(String text); + void showSaveBeforeDialog(); + } \ No newline at end of file Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/editor/WrappedRichTextAreaImplIE6.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/workspace/client/editor/WrappedRichTextAreaImplIE6.java 2008-09-30 01:49:58 UTC (rev 897) +++ trunk/src/main/java/org/ourproject/kune/workspace/client/editor/WrappedRichTextAreaImplIE6.java 2008-10-01 01:29:01 UTC (rev 898) @@ -31,17 +31,35 @@ */ public class WrappedRichTextAreaImplIE6 extends RichTextAreaImplIE6 { - public native void initElement() - /*-{ + @Override + public native void initElement() /*-{ var _this = this; - window.setTimeout(function() { + _this.@com.google.gwt.user.client.ui.impl.RichTextAreaImplStandard::initializing = true; + + setTimeout(function() { + if (_this.@com.google.gwt.user.client.ui.impl.RichTextAreaImplStandard::initializing == false) { + return; + } + + // Attempt to set the iframe document's body to 'contentEditable' mode. + // There's no way to know when the body will actually be available, so + // keep trying every so often until it is. + // Note: The body seems to be missing only rarely, so please don't remove + // this retry loop just because it's hard to reproduce. var elem = [email protected]::elem; var doc = elem.contentWindow.document; + if (!doc.body) { + // Retry in 50 ms. Faster would run the risk of pegging the CPU. Slower + // would increase the probability of a user-visible delay. + setTimeout(arguments.callee, 50); + return; + } var ct = "<html><head><style>@import url('" + "css/richtext.css" + "');</style></head><body CONTENTEDITABLE='true'></body></html>" ; doc.write( ct ); + doc.body.contentEditable = true; // Send notification that the iframe has reached design mode. _this.@com.google.gwt.user.client.ui.impl.RichTextAreaImplStandard::onElementInitialized()(); }, 1); - }-*/; -} \ No newline at end of file + }-*/; +} Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/editor/WrappedRichTextAreaImplMozilla.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/workspace/client/editor/WrappedRichTextAreaImplMozilla.java 2008-09-30 01:49:58 UTC (rev 897) +++ trunk/src/main/java/org/ourproject/kune/workspace/client/editor/WrappedRichTextAreaImplMozilla.java 2008-10-01 01:29:01 UTC (rev 898) @@ -31,51 +31,50 @@ */ public class WrappedRichTextAreaImplMozilla extends RichTextAreaImplMozilla { - public native void initElement() - /*-{ - // Mozilla doesn't allow designMode to be set reliably until the iframe is - // fully loaded. - var _this = this; - var iframe = [email protected]::elem; + @Override + public native void initElement() /*-{ + // Mozilla doesn't allow designMode to be set reliably until the iframe is + // fully loaded. + var _this = this; + var iframe = [email protected]::elem; + _this.@com.google.gwt.user.client.ui.impl.RichTextAreaImplStandard::initializing = true; - iframe.onload = function() { - // Some Mozillae have the nasty habit of calling onload again when you set - // designMode, so let's avoid doing it more than once. - iframe.onload = null; + iframe.onload = function() { + // Some Mozillae have the nasty habit of calling onload again when you set + // designMode, so let's avoid doing it more than once. + iframe.onload = null; - // patch ccs inject: + // patch ccs inject: - var doc = [email protected]::elem.contentWindow.document; - head=doc.getElementsByTagName('head')[0]; - link=document.createElement('link'); - link.setAttribute('rel',"stylesheet"); - link.setAttribute('type',"text/css"); - link.setAttribute('href',"css/richtext.css" ); - head.appendChild(link); + var doc = [email protected]::elem.contentWindow.document; + head=doc.getElementsByTagName('head')[0]; + link=document.createElement('link'); + link.setAttribute('rel',"stylesheet"); + link.setAttribute('type',"text/css"); + link.setAttribute('href',"css/richtext.css" ); + head.appendChild(link); - var styles = document.createElement('style'); - styles.setAttribute('type', 'text/css'); - var newStyle = document.createTextNode('\n<!--\nbody{color:#000;background:#FFF;}body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,code,form,fieldset,legend,input,textarea,p,blockquote,th,td{margin:0;padding:0;}table{border-collapse:collapse;border-spacing:0;}fieldset,img{border:0;}address,caption,cite,code,dfn,em,strong,th,var{font-style:normal;font-weight:400;}li{list-style:none;}caption,th{text-align:left;}h1,h2,h3,h4,h5,h6{font-size:100%;font-weight:400;}q:before,q:after{content:\'\';}abbr,acronym{border:0;font-variant:normal;}sup,sub{line-height:-1px;vertical-align:text-top;}sub{vertical-align:text-bottom;}input,textarea,select{font-family:inherit;font-size:inherit;font-weight:inherit;}body{font:13px/1.22 arial,helvetica,clean,sans-serif;font-size:small;font:x-small;}table{font-size:inherit;font:100%;}pre,code,kbd,samp,tt{font-family:monospace;font-size:108%;line-height:99%;}h1{font-size:138.5%;}h2{font-size:123.1%;}h3{font-size:108%;}h1,h2,h3{margin:1em 0;}h1,h2,h3,h4,h5,h6,strong{font-weight:700;}abbr,acronym{border-bottom:1px dotted #000;cursor:help;}em{font-style:italic;}blockquote,ul,ol,dl{margin:1em;}ol,ul,dl{margin-left:2em;}ol li{list-style:decimal outside;}ul li{list-style:disc outside;}dl dd{margin-left:1em;}th,td{border:1px solid #000;padding:.5em;}th{font-weight:700;text-align:center;}caption{margin-bottom:.5em;text-align:center;}p,fieldset,table,pre{margin-bottom:1em;}input[type=text],input[type=password],textarea{width:12.25em;width:11.9em;}body{font-family:arial, sans;margin:5px}\n-->\n'); - styles.appendChild(newStyle); - head.appendChild(styles); + var styles = document.createElement('style'); + styles.setAttribute('type', 'text/css'); + var newStyle = document.createTextNode('\n<!--\nbody{color:#000;background:#FFF;}body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,code,form,fieldset,legend,input,textarea,p,blockquote,th,td{margin:0;padding:0;}table{border-collapse:collapse;border-spacing:0;}fieldset,img{border:0;}address,caption,cite,code,dfn,em,strong,th,var{font-style:normal;font-weight:400;}li{list-style:none;}caption,th{text-align:left;}h1,h2,h3,h4,h5,h6{font-size:100%;font-weight:400;}q:before,q:after{content:\'\';}abbr,acronym{border:0;font-variant:normal;}sup,sub{line-height:-1px;vertical-align:text-top;}sub{vertical-align:text-bottom;}input,textarea,select{font-family:inherit;font-size:inherit;font-weight:inherit;}body{font:13px/1.22 arial,helvetica,clean,sans-serif;font-size:small;font:x-small;}table{font-size:inherit;font:100%;}pre,code,kbd,samp,tt{font-family:monospace;font-size:108%;line-height:99%;}h1{font-size:138.5%;}h2{font-size:123.1%;}h3{font-size:108%;}h1,h2,h3{margin:1em 0;}h1,h2,h3,h4,h5,h6,strong{font-weight:700;}abbr,acronym{border-bottom:1px dotted #000;cursor:help;}em{font-style:italic;}blockquote,ul,ol,dl{margin:1em;}ol,ul,dl{margin-left:2em;}ol li{list-style:decimal outside;}ul li{list-style:disc outside;}dl dd{margin-left:1em;}th,td{border:1px solid #000;padding:.5em;}th{font-weight:700;text-align:center;}caption{margin-bottom:.5em;text-align:center;}p,fieldset,table,pre{margin-bottom:1em;}input[type=text],input[type=password],textarea{width:12.25em;width:11.9em;}body{font-family:arial, sans;margin:5px}\n-->\n'); + styles.appendChild(newStyle); + head.appendChild(styles); - // -- patch + // -- patch - // Send notification that the iframe has finished loading. - _this.@com.google.gwt.user.client.ui.impl.RichTextAreaImplStandard::onElementInitialized()(); + // Send notification that the iframe has finished loading. + _this.@com.google.gwt.user.client.ui.impl.RichTextAreaImplStandard::onElementInitialized()(); - // Don't set designMode until the RTA actually gets focused. This is - // necessary because editing won't work on Mozilla if the iframe is - // *hidden, but attached*. Waiting for focus gets around this issue. - // - // Note: This onfocus will not conflict with the addEventListener('focus', - // ...) // in RichTextAreaImplStandard. - iframe.contentWindow.onfocus = function() { - iframe.contentWindow.onfocus = null; - iframe.contentWindow.document.designMode = 'On'; - }; + // Don't set designMode until the RTA actually gets focused. This is + // necessary because editing won't work on Mozilla if the iframe is + // *hidden, but attached*. Waiting for focus gets around this issue. + // + // Note: This onfocus will not conflict with the addEventListener('focus', + // ...) // in RichTextAreaImplStandard. + iframe.contentWindow.onfocus = function() { + iframe.contentWindow.onfocus = null; + iframe.contentWindow.document.designMode = 'On'; - }; - }-*/; - + }; + }-*/; } Added: trunk/src/main/java/org/ourproject/kune/workspace/client/editor/WrappedRichTextAreaImplOpera.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/workspace/client/editor/WrappedRichTextAreaImplOpera.java 2008-09-30 01:49:58 UTC (rev 897) +++ trunk/src/main/java/org/ourproject/kune/workspace/client/editor/WrappedRichTextAreaImplOpera.java 2008-10-01 01:29:01 UTC (rev 898) @@ -0,0 +1,29 @@ +package org.ourproject.kune.workspace.client.editor; + +import com.google.gwt.user.client.ui.impl.RichTextAreaImplOpera; + +public class WrappedRichTextAreaImplOpera extends RichTextAreaImplOpera { + + @Override + public native void initElement() /*-{ + // Most browsers don't like setting designMode until slightly _after_ + // the iframe becomes attached to the DOM. Any non-zero timeout will do + // just fine. + var _this = this; + _this.@com.google.gwt.user.client.ui.impl.RichTextAreaImplStandard::initializing = true; + setTimeout(function() { + // Turn on design mode. + [email protected]::elem.contentWindow.document.designMode = 'On'; + // patch css inject: + var elem = [email protected]::elem; + var doc = elem.contentWindow.document; + var ct = "<html><head><style>@import url('" + "css/richtext.css" + "');</style></head><body CONTENTEDITABLE='true'></body></html>" ; + doc.write( ct ); + // -- patch + + // Send notification that the iframe has reached design mode. + _this.@com.google.gwt.user.client.ui.impl.RichTextAreaImplStandard::onElementInitialized()(); + }, 1); + }-*/; + +} Added: trunk/src/main/java/org/ourproject/kune/workspace/client/editor/WrappedRichTextAreaImplSafari.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/workspace/client/editor/WrappedRichTextAreaImplSafari.java 2008-09-30 01:49:58 UTC (rev 897) +++ trunk/src/main/java/org/ourproject/kune/workspace/client/editor/WrappedRichTextAreaImplSafari.java 2008-10-01 01:29:01 UTC (rev 898) @@ -0,0 +1,30 @@ +package org.ourproject.kune.workspace.client.editor; + +import com.google.gwt.user.client.ui.impl.RichTextAreaImplSafari; + +public class WrappedRichTextAreaImplSafari extends RichTextAreaImplSafari { + + @Override + public native void initElement() /*-{ + // Most browsers don't like setting designMode until slightly _after_ + // the iframe becomes attached to the DOM. Any non-zero timeout will do + // just fine. + var _this = this; + _this.@com.google.gwt.user.client.ui.impl.RichTextAreaImplStandard::initializing = true; + setTimeout(function() { + // Turn on design mode. + [email protected]::elem.contentWindow.document.designMode = 'On'; + + // patch css inject: + var elem = [email protected]::elem; + var doc = elem.contentWindow.document; + var ct = "<html><head><style>@import url('" + "css/richtext.css" + "');</style></head><body CONTENTEDITABLE='true'></body></html>" ; + doc.write( ct ); + // -- patch + + // Send notification that the iframe has reached design mode. + _this.@com.google.gwt.user.client.ui.impl.RichTextAreaImplStandard::onElementInitialized()(); + }, 1); + }-*/; + +} Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/ParticipationSummaryPresenter.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/ParticipationSummaryPresenter.java 2008-09-30 01:49:58 UTC (rev 897) +++ trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/ParticipationSummaryPresenter.java 2008-10-01 01:29:01 UTC (rev 898) @@ -86,6 +86,7 @@ view.clear(); final List<GroupDTO> groupsIsAdmin = participation.getGroupsIsAdmin(); final List<GroupDTO> groupsIsCollab = participation.getGroupsIsCollab(); + Log.info(participation.toString()); Log.info("Is admin in " + groupsIsAdmin.size() + " groups."); Log.info("Is collab in " + groupsIsCollab.size() + " groups."); final int numAdmins = groupsIsAdmin.size(); Modified: trunk/src/test/java/org/ourproject/kune/platf/client/actions/ActionRegistryTest.java =================================================================== --- trunk/src/test/java/org/ourproject/kune/platf/client/actions/ActionRegistryTest.java 2008-09-30 01:49:58 UTC (rev 897) +++ trunk/src/test/java/org/ourproject/kune/platf/client/actions/ActionRegistryTest.java 2008-10-01 01:29:01 UTC (rev 898) @@ -1,7 +1,6 @@ package org.ourproject.kune.platf.client.actions; import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; import org.junit.Before; import org.junit.Test; @@ -87,30 +86,6 @@ checkActionLists(1, new AccessRightsDTO(false, false, true), false); } - @Test - public void testEnablingFalse() { - Mockito.stub(session.isLogged()).toReturn(true); - adminAction.setEnableCondition(new ActionEnableCondition<StateToken>() { - public boolean mustBeEnabled(final StateToken param) { - return false; - } - }); - registry.addAction(adminAction, DEF_CONTENT_TYPE_ID); - assertTrue(!registry.checkEnabling(adminAction, new StateToken())); - } - - @Test - public void testEnablingTrue() { - Mockito.stub(session.isLogged()).toReturn(true); - adminAction.setEnableCondition(new ActionEnableCondition<StateToken>() { - public boolean mustBeEnabled(final StateToken param) { - return true; - } - }); - registry.addAction(adminAction, DEF_CONTENT_TYPE_ID); - assertTrue(registry.checkEnabling(adminAction, new StateToken())); - } - private void addDefActions() { registry.addAction(adminAction, DEF_CONTENT_TYPE_ID); registry.addAction(editorAction, DEF_CONTENT_TYPE_ID); Modified: trunk/src/test/java/org/ourproject/kune/workspace/client/editor/TextEditorPresenterTest.java =================================================================== --- trunk/src/test/java/org/ourproject/kune/workspace/client/editor/TextEditorPresenterTest.java 2008-09-30 01:49:58 UTC (rev 897) +++ trunk/src/test/java/org/ourproject/kune/workspace/client/editor/TextEditorPresenterTest.java 2008-10-01 01:29:01 UTC (rev 898) @@ -5,105 +5,102 @@ import org.junit.Test; public class TextEditorPresenterTest { - private TextEditorListener listener; private TextEditorPresenter presenter; private TextEditorView view; @Before public void createObjects() { - listener = EasyMock.createStrictMock(TextEditorListener.class); - presenter = new TextEditorPresenter(listener, true); - view = EasyMock.createStrictMock(TextEditorView.class); + presenter = new TextEditorPresenter(true, null, null); + view = EasyMock.createStrictMock(TextEditorView.class); } @Test - public void testViewInitialization() { - viewInit(); - EasyMock.replay(view); - presenter.init(view); - EasyMock.verify(view); + public void testSave() { + viewInit(); + view.setEnabledSaveButton(true); + view.scheduleSave(10000); + EasyMock.expect(view.getHTML()).andReturn("foo"); + viewReset(); + EasyMock.replay(view); + // listener.onSave("foo"); + // EasyMock.replay(listener); + presenter.init(view); + presenter.onEdit(); + presenter.onSave(); + presenter.onSaved(); + EasyMock.verify(view); + // EasyMock.verify(listener); } @Test public void testSavePending() { - viewInit(); - view.setEnabledSaveButton(true); - view.scheduleSave(10000); - EasyMock.replay(view); - presenter.init(view); - presenter.onEdit(); - EasyMock.verify(view); + viewInit(); + view.setEnabledSaveButton(true); + view.scheduleSave(10000); + EasyMock.replay(view); + presenter.init(view); + presenter.onEdit(); + EasyMock.verify(view); } @Test - public void testSave() { - viewInit(); - view.setEnabledSaveButton(true); - view.scheduleSave(10000); - EasyMock.expect(view.getHTML()).andReturn("foo"); - viewReset(); - EasyMock.replay(view); - listener.onSave("foo"); - EasyMock.replay(listener); - presenter.init(view); - presenter.onEdit(); - presenter.onSave(); - presenter.onSaved(); - EasyMock.verify(view); - EasyMock.verify(listener); + public void testSavePendingCancel() { + viewInit(); + view.setEnabledSaveButton(true); + view.scheduleSave(10000); + view.saveTimerCancel(); + view.showSaveBeforeDialog(); + EasyMock.expect(view.getHTML()).andReturn("foo"); + viewReset(); + EasyMock.replay(view); + // listener.onSave("foo"); + // listener.onEditCancelled(); + // EasyMock.replay(listener); + presenter.init(view); + presenter.onEdit(); + presenter.onCancel(); + presenter.onSaveAndClose(); + presenter.onSaved(); + EasyMock.verify(view); + // EasyMock.verify(listener); } @Test - public void testSavePendingCancel() { - viewInit(); - view.setEnabledSaveButton(true); - view.scheduleSave(10000); - view.saveTimerCancel(); - view.showSaveBeforeDialog(); - EasyMock.expect(view.getHTML()).andReturn("foo"); - viewReset(); - EasyMock.replay(view); - listener.onSave("foo"); - listener.onEditCancelled(); - EasyMock.replay(listener); - presenter.init(view); - presenter.onEdit(); - presenter.onCancel(); - presenter.onSaveAndClose(); - presenter.onSaved(); - EasyMock.verify(view); - EasyMock.verify(listener); + public void testSavePendingCancelSaveFails() { + viewInit(); + view.setEnabledSaveButton(true); + view.scheduleSave(10000); + view.saveTimerCancel(); + view.showSaveBeforeDialog(); + EasyMock.expect(view.getHTML()).andReturn("foo"); + view.scheduleSave(20000); + EasyMock.replay(view); + // listener.onSave("foo"); + // EasyMock.replay(listener); + presenter.init(view); + presenter.onEdit(); + presenter.onCancel(); + presenter.onSaveAndClose(); + presenter.onSaveFailed(); + EasyMock.verify(view); + // EasyMock.verify(listener); } @Test - public void testSavePendingCancelSaveFails() { - viewInit(); - view.setEnabledSaveButton(true); - view.scheduleSave(10000); - view.saveTimerCancel(); - view.showSaveBeforeDialog(); - EasyMock.expect(view.getHTML()).andReturn("foo"); - view.scheduleSave(20000); - EasyMock.replay(view); - listener.onSave("foo"); - EasyMock.replay(listener); - presenter.init(view); - presenter.onEdit(); - presenter.onCancel(); - presenter.onSaveAndClose(); - presenter.onSaveFailed(); - EasyMock.verify(view); - EasyMock.verify(listener); + public void testViewInitialization() { + viewInit(); + EasyMock.replay(view); + presenter.init(view); + EasyMock.verify(view); } private void viewInit() { - view.setEnabledSaveButton(false); - view.setEnabled(true); + view.setEnabledSaveButton(false); + view.setEnabled(true); } private void viewReset() { - view.saveTimerCancel(); - view.setEnabledSaveButton(false); + view.saveTimerCancel(); + view.setEnabledSaveButton(false); } - }
participants (1)
-
vjrj