r1443 - in trunk/src: main/java/cc/kune/common/client/tooltip main/java/cc/kune/common/client/ui main/java/cc/kune/core/client/errors main/java/cc/kune/core/client/groups/newgroup main/java/cc/kune/core/client/sitebar/spaces main/java/cc/kune/core/client/sn/actions/registry main/java/cc/kune/core/client/ui main/java/cc/kune/core/server/manager/impl main/java/cc/kune/core/shared/dto main/java/cc/kune/gspace/client/actions main/java/cc/kune/gspace/client/viewers main/webapp/others test/java/cc/
Author: vjrj_ Date: 2011-07-09 22:52:00 +0200 (Sat, 09 Jul 2011) New Revision: 1443 Modified: trunk/src/main/java/cc/kune/common/client/tooltip/Tooltip.java trunk/src/main/java/cc/kune/common/client/ui/EditableLabel.java trunk/src/main/java/cc/kune/common/client/ui/MaskWidget.java trunk/src/main/java/cc/kune/common/client/ui/MaskWidgetView.java trunk/src/main/java/cc/kune/core/client/errors/ErrorHandler.java trunk/src/main/java/cc/kune/core/client/groups/newgroup/NewGroupPanel.java trunk/src/main/java/cc/kune/core/client/groups/newgroup/NewGroupPresenter.java trunk/src/main/java/cc/kune/core/client/groups/newgroup/NewGroupView.java trunk/src/main/java/cc/kune/core/client/sitebar/spaces/SpaceSelectorPresenter.java trunk/src/main/java/cc/kune/core/client/sn/actions/registry/GroupSNConfActions.java trunk/src/main/java/cc/kune/core/client/ui/DefaultFormUtils.java trunk/src/main/java/cc/kune/core/server/manager/impl/GroupManagerDefault.java trunk/src/main/java/cc/kune/core/server/manager/impl/SocialNetworkManagerDefault.java trunk/src/main/java/cc/kune/core/shared/dto/GroupType.java trunk/src/main/java/cc/kune/gspace/client/actions/NewContainerBtn.java trunk/src/main/java/cc/kune/gspace/client/actions/NewContainerMenuItem.java trunk/src/main/java/cc/kune/gspace/client/viewers/AbstractFolderViewerPanel.java trunk/src/main/java/cc/kune/gspace/client/viewers/ContentTitleWidget.java trunk/src/main/java/cc/kune/gspace/client/viewers/ContentViewerPanel.java trunk/src/main/java/cc/kune/gspace/client/viewers/FolderViewerPresenter.java trunk/src/main/webapp/others/kune-client-actions.xml trunk/src/test/java/cc/kune/core/server/integration/kuneservice/GroupServiceTest.java Log: Closed groups; Rename title tooltip; Tooltip fixed Modified: trunk/src/main/java/cc/kune/common/client/tooltip/Tooltip.java =================================================================== --- trunk/src/main/java/cc/kune/common/client/tooltip/Tooltip.java 2011-07-09 16:44:34 UTC (rev 1442) +++ trunk/src/main/java/cc/kune/common/client/tooltip/Tooltip.java 2011-07-09 20:52:00 UTC (rev 1443) @@ -176,6 +176,7 @@ } public void showTemporally() { + show(); timers.showTemporally(); } Modified: trunk/src/main/java/cc/kune/common/client/ui/EditableLabel.java =================================================================== --- trunk/src/main/java/cc/kune/common/client/ui/EditableLabel.java 2011-07-09 16:44:34 UTC (rev 1442) +++ trunk/src/main/java/cc/kune/common/client/ui/EditableLabel.java 2011-07-09 20:52:00 UTC (rev 1443) @@ -53,13 +53,15 @@ InlineLabel label; @UiField TextBox textbox; - private String tooltip; + private Tooltip tooltip; + private String tooltipText; + public EditableLabel() { initWidget(uiBinder.createAndBindUi(this)); label.setStylePrimaryName("k-editableLabel"); editable = false; - tooltip = ""; + tooltipText = ""; } @Override @@ -67,32 +69,6 @@ return addHandler(handler, EditEvent.getType()); } - public void blink() { - if (editable) { - blinkTimer(true, new SimpleCallback() { - @Override - public void onCallback() { - blinkTimer(false, new SimpleCallback() { - @Override - public void onCallback() { - blinkTimer(true, new SimpleCallback() { - @Override - public void onCallback() { - blinkTimer(false, new SimpleCallback() { - @Override - public void onCallback() { - // nothing - } - }); - } - }); - } - }); - } - }); - } - } - private void blinkTimer(final boolean add, final SimpleCallback callback) { new Timer() { @Override @@ -130,6 +106,32 @@ } } + public void highlightTitle() { + if (editable) { + blinkTimer(true, new SimpleCallback() { + @Override + public void onCallback() { + blinkTimer(false, new SimpleCallback() { + @Override + public void onCallback() { + blinkTimer(true, new SimpleCallback() { + @Override + public void onCallback() { + blinkTimer(false, new SimpleCallback() { + @Override + public void onCallback() { + tooltip.showTemporally(); + } + }); + } + }); + } + }); + } + }); + } + } + @UiHandler("textbox") void onBlur(final BlurEvent event) { finishEdit(); @@ -156,7 +158,7 @@ public void setEditable(final boolean editable) { this.editable = editable; - Tooltip.to(label, editable ? tooltip : ""); + tooltip = Tooltip.to(label, editable ? tooltipText : ""); } public void setText(final String text) { @@ -165,7 +167,7 @@ } public void setTooltip(final String tooltip) { - this.tooltip = tooltip; + this.tooltipText = tooltip; } } Modified: trunk/src/main/java/cc/kune/common/client/ui/MaskWidget.java =================================================================== --- trunk/src/main/java/cc/kune/common/client/ui/MaskWidget.java 2011-07-09 16:44:34 UTC (rev 1442) +++ trunk/src/main/java/cc/kune/common/client/ui/MaskWidget.java 2011-07-09 20:52:00 UTC (rev 1443) @@ -35,53 +35,58 @@ public class MaskWidget extends PopupPanel implements MaskWidgetView { - interface MaskWidgetUiBinder extends UiBinder<Widget, MaskWidget> { - } - private static MaskWidgetUiBinder uiBinder = GWT.create(MaskWidgetUiBinder.class); - @UiField - FlowPanel flow; - @UiField - Image icon; - @UiField - Label label; + interface MaskWidgetUiBinder extends UiBinder<Widget, MaskWidget> { + } + private static MaskWidgetUiBinder uiBinder = GWT.create(MaskWidgetUiBinder.class); + @UiField + FlowPanel flow; + @UiField + Image icon; + @UiField + Label label; - @UiField - SimplePanel mainPanel; + @UiField + SimplePanel mainPanel; - public MaskWidget() { - super(false, false); - add(uiBinder.createAndBindUi(this)); - setStyleName("k-mask"); - } + public MaskWidget() { + super(false, false); + add(uiBinder.createAndBindUi(this)); + setStyleName("k-mask"); + } - @Override - @Nonnull - public void mask(final IsWidget widget) { - mask(widget, ""); - } + @Override + public boolean isShowing() { + return super.isShowing(); + } - @Override - @Nonnull - public void mask(final IsWidget widget, final String message) { - label.setText(message); - setPopupPositionAndShow(new PositionCallback() { - @Override - public void setPosition(final int offsetWidth, final int offsetHeight) { - final Widget asWidget = widget.asWidget(); - final int w = asWidget.getOffsetWidth(); - final int h = asWidget.getOffsetHeight(); - MaskWidget.this.setPopupPosition(asWidget.getAbsoluteLeft(), asWidget.getAbsoluteTop()); - getElement().getStyle().setWidth(w, Unit.PX); - getElement().getStyle().setHeight(h, Unit.PX); - flow.getElement().getStyle().setTop((h - flow.getOffsetHeight()) / 2d, Unit.PX); - flow.getElement().getStyle().setLeft((w - flow.getOffsetWidth()) / 2d, Unit.PX); - } - }); - } + @Override + @Nonnull + public void mask(final IsWidget widget) { + mask(widget, ""); + } - @Override - public void unMask() { - hide(); - } + @Override + @Nonnull + public void mask(final IsWidget widget, final String message) { + label.setText(message); + setPopupPositionAndShow(new PositionCallback() { + @Override + public void setPosition(final int offsetWidth, final int offsetHeight) { + final Widget asWidget = widget.asWidget(); + final int w = asWidget.getOffsetWidth(); + final int h = asWidget.getOffsetHeight(); + MaskWidget.this.setPopupPosition(asWidget.getAbsoluteLeft(), asWidget.getAbsoluteTop()); + getElement().getStyle().setWidth(w, Unit.PX); + getElement().getStyle().setHeight(h, Unit.PX); + flow.getElement().getStyle().setTop((h - flow.getOffsetHeight()) / 2d, Unit.PX); + flow.getElement().getStyle().setLeft((w - flow.getOffsetWidth()) / 2d, Unit.PX); + } + }); + } + @Override + public void unMask() { + hide(); + } + } Modified: trunk/src/main/java/cc/kune/common/client/ui/MaskWidgetView.java =================================================================== --- trunk/src/main/java/cc/kune/common/client/ui/MaskWidgetView.java 2011-07-09 16:44:34 UTC (rev 1442) +++ trunk/src/main/java/cc/kune/common/client/ui/MaskWidgetView.java 2011-07-09 20:52:00 UTC (rev 1443) @@ -23,10 +23,12 @@ public interface MaskWidgetView { - void mask(IsWidget widget); + boolean isShowing(); - void mask(IsWidget widget, String message); + void mask(IsWidget widget); - void unMask(); + void mask(IsWidget widget, String message); + void unMask(); + } Modified: trunk/src/main/java/cc/kune/core/client/errors/ErrorHandler.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/errors/ErrorHandler.java 2011-07-09 16:44:34 UTC (rev 1442) +++ trunk/src/main/java/cc/kune/core/client/errors/ErrorHandler.java 2011-07-09 20:52:00 UTC (rev 1443) @@ -81,6 +81,7 @@ logException(caught); eventBus.fireEvent(new UserNotifyEvent(NotifyLevel.error, i18n.t("You do not have rights to perform that action"))); + goHome(); } else if (caught instanceof SessionExpiredException) { logException(caught); doSessionExpired(); Modified: trunk/src/main/java/cc/kune/core/client/groups/newgroup/NewGroupPanel.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/groups/newgroup/NewGroupPanel.java 2011-07-09 16:44:34 UTC (rev 1442) +++ trunk/src/main/java/cc/kune/core/client/groups/newgroup/NewGroupPanel.java 2011-07-09 20:52:00 UTC (rev 1443) @@ -46,6 +46,7 @@ public class NewGroupPanel extends ViewImpl implements NewGroupView { private static final int BIG_FIELD_WIDTH = 280; public static final String CANCEL_BUTTON = "k-ngp-cancel-bt"; + public static final String CLOSED_GROUP_TYPE_ID = "k-ngp-type_of_group_closed"; public static final String COMM_GROUP_TYPE_ID = "k-ngp-type_of_group_comm"; public static final String ERROR_MSG_BAR = "k-ngp-error-mb"; private static final int LABEL_WIDTH = 100; @@ -60,10 +61,11 @@ public static final String TAGS_FIELD = "k-ngp-tags"; public static final String TYPEOFGROUP_FIELD = "k-ngp-type_of_group"; + private Radio closedRadio; private Radio communityRadio; private final BasicTopDialog dialog; + private final FormPanel form; - private final I18nTranslationService i18n; private TextField<String> longNameField; private final MaskWidgetView mask; @@ -81,11 +83,11 @@ public NewGroupPanel(final I18nTranslationService i18n, final NotifyLevelImages img, final MaskWidgetView mask) { final Builder builder = new BasicTopDialog.Builder(NEWGROUP_WIZARD, false, true).autoscroll(true).height( - "300px").title(i18n.t("Register a new group")); + "340px").title(i18n.t("Register a new group")); builder.icon("k-newgroup-icon"); builder.firstButtonTitle(i18n.t("Register")).firstButtonId(REGISTER_BUTTON); builder.sndButtonTitle(i18n.t("Cancel")).sndButtonId(CANCEL_BUTTON); - builder.tabIndexStart(9); + builder.tabIndexStart(10); dialog = builder.build(); this.i18n = i18n; this.mask = mask; @@ -195,12 +197,18 @@ + "but organizations must be a legal entity."), ORG_GROUP_TYPE_ID); orgRadio.setTabIndex(7); + closedRadio = DefaultFormUtils.createRadio(groupTypeFieldSet, i18n.t("Closed"), TYPEOFGROUP_FIELD, + i18n.t("Closed groups are social groups of persons " + + "like family, friends, buddies, etc, which are moderated to new members " + + "and with private contents (by default)"), CLOSED_GROUP_TYPE_ID); + closedRadio.setTabIndex(8); + communityRadio = DefaultFormUtils.createRadio(groupTypeFieldSet, i18n.t("Community"), TYPEOFGROUP_FIELD, i18n.t("Communities are social groups of persons " + "with shared interests, which are open to new members " + "(for instance the environmental community or the LGBT community). " + "They rarely are a legal entity."), COMM_GROUP_TYPE_ID); - communityRadio.setTabIndex(8); + communityRadio.setTabIndex(9); return form; } @@ -257,6 +265,11 @@ } @Override + public boolean isClosed() { + return closedRadio.getValue(); + } + + @Override public boolean isCommunity() { return communityRadio.getValue(); } Modified: trunk/src/main/java/cc/kune/core/client/groups/newgroup/NewGroupPresenter.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/groups/newgroup/NewGroupPresenter.java 2011-07-09 16:44:34 UTC (rev 1442) +++ trunk/src/main/java/cc/kune/core/client/groups/newgroup/NewGroupPresenter.java 2011-07-09 20:52:00 UTC (rev 1443) @@ -114,6 +114,8 @@ return GroupType.PROJECT; } else if (getView().isOrganization()) { return GroupType.ORGANIZATION; + } else if (getView().isClosed()) { + return GroupType.CLOSED; } else { return GroupType.COMMUNITY; } Modified: trunk/src/main/java/cc/kune/core/client/groups/newgroup/NewGroupView.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/groups/newgroup/NewGroupView.java 2011-07-09 16:44:34 UTC (rev 1442) +++ trunk/src/main/java/cc/kune/core/client/groups/newgroup/NewGroupView.java 2011-07-09 20:52:00 UTC (rev 1443) @@ -28,42 +28,44 @@ public interface NewGroupView extends View { - void clearData(); + void clearData(); - void focusOnShorName(); + void focusOnShorName(); - HasCloseHandlers<PopupPanel> getClose(); + HasCloseHandlers<PopupPanel> getClose(); - HasClickHandlers getFirstBtn(); + HasClickHandlers getFirstBtn(); - String getLongName(); + String getLongName(); - String getPublicDesc(); + String getPublicDesc(); - HasClickHandlers getSecondBtn(); + HasClickHandlers getSecondBtn(); - String getShortName(); + String getShortName(); - String getTags(); + String getTags(); - void hide(); + void hide(); - void hideMessage(); + void hideMessage(); - boolean isCommunity(); + boolean isClosed(); - boolean isFormValid(); + boolean isCommunity(); - boolean isOrganization(); + boolean isFormValid(); - boolean isProject(); + boolean isOrganization(); - void maskProcessing(); + boolean isProject(); - void setMessage(String message, NotifyLevel level); + void maskProcessing(); - void show(); + void setMessage(String message, NotifyLevel level); - void unMask(); + void show(); + void unMask(); + } Modified: trunk/src/main/java/cc/kune/core/client/sitebar/spaces/SpaceSelectorPresenter.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/sitebar/spaces/SpaceSelectorPresenter.java 2011-07-09 16:44:34 UTC (rev 1442) +++ trunk/src/main/java/cc/kune/core/client/sitebar/spaces/SpaceSelectorPresenter.java 2011-07-09 20:52:00 UTC (rev 1443) @@ -20,6 +20,7 @@ package cc.kune.core.client.sitebar.spaces; import cc.kune.common.client.notify.NotifyLevel; +import cc.kune.common.client.ui.MaskWidgetView; import cc.kune.core.client.auth.SignIn; import cc.kune.core.client.events.WindowFocusEvent; import cc.kune.core.client.init.AppStartEvent; @@ -96,7 +97,7 @@ public SpaceSelectorPresenter(final EventBus eventBus, final StateManager stateManager, final SpaceSelectorView view, final SpaceSelectorProxy proxy, final GSpaceArmor armor, final Session session, final Provider<SignIn> signIn, final GSpaceBackManager backManager, - final I18nTranslationService i18n) { + final I18nTranslationService i18n, final MaskWidgetView mask) { super(eventBus, view, proxy); this.stateManager = stateManager; this.armor = armor; @@ -136,7 +137,7 @@ eventBus.addHandler(WindowFocusEvent.getType(), new WindowFocusEvent.WindowFocusHandler() { @Override public void onWindowFocus(final WindowFocusEvent event) { - if (event.isHasFocus()) { + if (event.isHasFocus() && !mask.isShowing()) { showTooltipWithDelay(); } } @@ -252,19 +253,21 @@ } private void showTooltipNow() { - switch (currentSpace) { - case homeSpace: - getView().showHomeSpaceTooltip(); - break; - case userSpace: - getView().showUserSpaceTooltip(); - break; - case groupSpace: - getView().showGroupSpaceTooltip(); - break; - case publicSpace: - getView().showPublicSpaceTooltip(); - break; + if (currentSpace != null) { + switch (currentSpace) { + case homeSpace: + getView().showHomeSpaceTooltip(); + break; + case userSpace: + getView().showUserSpaceTooltip(); + break; + case groupSpace: + getView().showGroupSpaceTooltip(); + break; + case publicSpace: + getView().showPublicSpaceTooltip(); + break; + } } } @@ -274,6 +277,6 @@ public void run() { showTooltipNow(); } - }.schedule(500); + }.schedule(200); } } \ No newline at end of file Modified: trunk/src/main/java/cc/kune/core/client/sn/actions/registry/GroupSNConfActions.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/sn/actions/registry/GroupSNConfActions.java 2011-07-09 16:44:34 UTC (rev 1442) +++ trunk/src/main/java/cc/kune/core/client/sn/actions/registry/GroupSNConfActions.java 2011-07-09 20:52:00 UTC (rev 1443) @@ -81,6 +81,7 @@ final MenuRadioItemDescriptor moderatedItem = membersModeration.get().withModeration( AdmissionType.Moderated); final MenuRadioItemDescriptor openItem = membersModeration.get().withModeration(AdmissionType.Open); + addImpl(OPTIONS_MENU); addImpl(optionsTitle); addImpl(VISIBILITY_SUBMENU.withText(i18n.t("Those who can view this member list")).withParent( @@ -91,8 +92,7 @@ addImpl(onlyAdminsItem.withParent(VISIBILITY_SUBMENU).withText(i18n.t("only admins"))); addImpl(moderatedItem.withParent(MODERATION_SUBMENU).withText(i18n.t("moderate request to join"))); addImpl(openItem.withParent(MODERATION_SUBMENU).withText(i18n.t("auto accept request to join"))); - // add(closedItem.withParent(MODERATION_SUBMENU).withText( - // i18n.t("closed for new members"))); + addImpl(closedItem.withParent(MODERATION_SUBMENU).withText(i18n.t("closed for new members"))); final ButtonDescriptor joinBtn = new ButtonDescriptor(joinGroupAction); final ButtonDescriptor unJoinBtn = new ButtonDescriptor(unJoinGroupAction); Modified: trunk/src/main/java/cc/kune/core/client/ui/DefaultFormUtils.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/ui/DefaultFormUtils.java 2011-07-09 16:44:34 UTC (rev 1442) +++ trunk/src/main/java/cc/kune/core/client/ui/DefaultFormUtils.java 2011-07-09 20:52:00 UTC (rev 1443) @@ -21,6 +21,9 @@ import cc.kune.common.client.tooltip.Tooltip; +import com.extjs.gxt.ui.client.event.BaseEvent; +import com.extjs.gxt.ui.client.event.Events; +import com.extjs.gxt.ui.client.event.Listener; import com.extjs.gxt.ui.client.widget.form.FieldSet; import com.extjs.gxt.ui.client.widget.form.Radio; @@ -33,9 +36,18 @@ radio.setId(id); fieldSet.add(radio); - if (radioTip != null) { - Tooltip.to(radio, radioTip); - } + radio.addListener(Events.OnMouseOver, new Listener<BaseEvent>() { + private Tooltip tooltip; + + @Override + public void handleEvent(final BaseEvent be) { + if (radioTip != null && tooltip == null) { + tooltip = Tooltip.to(radio, radioTip); + tooltip.show(); + tooltip.hide(); + } + } + }); radio.setBoxLabel(radioLabel); return radio; } Modified: trunk/src/main/java/cc/kune/core/server/manager/impl/GroupManagerDefault.java =================================================================== --- trunk/src/main/java/cc/kune/core/server/manager/impl/GroupManagerDefault.java 2011-07-09 16:44:34 UTC (rev 1442) +++ trunk/src/main/java/cc/kune/core/server/manager/impl/GroupManagerDefault.java 2011-07-09 20:52:00 UTC (rev 1443) @@ -47,6 +47,7 @@ import cc.kune.core.shared.SearcherConstants; import cc.kune.core.shared.domain.AdmissionType; import cc.kune.core.shared.domain.GroupListMode; +import cc.kune.core.shared.domain.SocialNetworkVisibility; import cc.kune.core.shared.dto.GroupType; import cc.kune.core.shared.i18n.I18nTranslationService; import cc.kune.domain.AccessLists; @@ -129,8 +130,14 @@ throws GroupNameInUseException, UserMustBeLoggedException { final String defaultSiteWorkspaceTheme = kuneProperties.get(KuneProperties.WS_THEMES_DEF); if (User.isKnownUser(user)) { + GroupListMode publicVisibility = GroupListMode.EVERYONE; + SocialNetworkVisibility snVisibility = SocialNetworkVisibility.anyone; if (group.getGroupType().equals(GroupType.COMMUNITY)) { group.setAdmissionType(AdmissionType.Open); + } else if (group.getGroupType().equals(GroupType.CLOSED)) { + group.setAdmissionType(AdmissionType.Closed); + publicVisibility = GroupListMode.NORMAL; + snVisibility = SocialNetworkVisibility.onlymembers; } else if (group.getGroupType().equals(GroupType.ORGANIZATION)) { group.setAdmissionType(AdmissionType.Moderated); } else if (group.getGroupType().equals(GroupType.PROJECT)) { @@ -142,7 +149,7 @@ final License license = licenseFinder.findByShortName(licName); group.setDefaultLicense(license); group.setWorkspaceTheme(defaultSiteWorkspaceTheme); - initSocialNetwork(group, user.getUserGroup()); + initSocialNetwork(group, user.getUserGroup(), publicVisibility, snVisibility); final String title = i18n.t("About [%s]", group.getLongName()); initGroup(user, group, serverToolRegistry.getToolsForGroupsKeys(), title, publicDescrip); return group; @@ -177,7 +184,7 @@ userGroup.setWorkspaceTheme(defaultSiteWorkspaceTheme); userGroup.setDefaultContent(null); user.setUserGroup(userGroup); - initSocialNetwork(userGroup, userGroup); + initSocialNetwork(userGroup, userGroup, GroupListMode.EVERYONE, SocialNetworkVisibility.anyone); final String title = i18n.t("[%s] Bio", user.getName()); final String body = i18n.t("This user has not written its biography yet"); @@ -244,14 +251,16 @@ } } - private void initSocialNetwork(final Group group, final Group userGroup) { + private void initSocialNetwork(final Group group, final Group userGroup, + final GroupListMode publicVisibility, final SocialNetworkVisibility snVisibility) { final SocialNetwork network = group.getSocialNetwork(); final AccessLists lists = network.getAccessLists(); lists.getEditors().setMode(GroupListMode.NOBODY); - lists.getViewers().setMode(GroupListMode.EVERYONE); + lists.getViewers().setMode(publicVisibility); if (!group.getGroupType().equals(GroupType.ORPHANED_PROJECT)) { network.addAdmin(userGroup); } + network.setVisibility(snVisibility); } @Override Modified: trunk/src/main/java/cc/kune/core/server/manager/impl/SocialNetworkManagerDefault.java =================================================================== --- trunk/src/main/java/cc/kune/core/server/manager/impl/SocialNetworkManagerDefault.java 2011-07-09 16:44:34 UTC (rev 1442) +++ trunk/src/main/java/cc/kune/core/server/manager/impl/SocialNetworkManagerDefault.java 2011-07-09 20:52:00 UTC (rev 1443) @@ -23,7 +23,6 @@ import javax.persistence.EntityManager; - import cc.kune.core.client.errors.AccessViolationException; import cc.kune.core.client.errors.AlreadyGroupMemberException; import cc.kune.core.client.errors.AlreadyUserMemberException; @@ -54,302 +53,311 @@ import com.google.inject.Singleton; @Singleton -public class SocialNetworkManagerDefault extends DefaultManager<SocialNetwork, Long> implements SocialNetworkManager { +public class SocialNetworkManagerDefault extends DefaultManager<SocialNetwork, Long> implements + SocialNetworkManager { - private final AccessRightsService accessRightsService; - private final GroupFinder finder; - private final UserManager userManager; + private final AccessRightsService accessRightsService; + private final GroupFinder finder; + private final UserManager userManager; - @Inject - public SocialNetworkManagerDefault(final Provider<EntityManager> provider, final GroupFinder finder, - final AccessRightsService accessRightsService, final UserManager userManager) { - super(provider, SocialNetwork.class); - this.finder = finder; - this.accessRightsService = accessRightsService; - this.userManager = userManager; - } + @Inject + public SocialNetworkManagerDefault(final Provider<EntityManager> provider, final GroupFinder finder, + final AccessRightsService accessRightsService, final UserManager userManager) { + super(provider, SocialNetwork.class); + this.finder = finder; + this.accessRightsService = accessRightsService; + this.userManager = userManager; + } - @Override - public void acceptJoinGroup(final User userLogged, final Group group, final Group inGroup) throws DefaultException, - AccessViolationException { - final SocialNetwork sn = inGroup.getSocialNetwork(); - checkUserLoggedIsAdmin(userLogged, sn); - final List<Group> pendingCollabs = sn.getPendingCollaborators().getList(); - if (pendingCollabs.contains(group)) { - sn.addCollaborator(group); - sn.removePendingCollaborator(group); - } else { - throw new DefaultException("User is not a pending collaborator"); - } + @Override + public void acceptJoinGroup(final User userLogged, final Group group, final Group inGroup) + throws DefaultException, AccessViolationException { + final SocialNetwork sn = inGroup.getSocialNetwork(); + checkUserLoggedIsAdmin(userLogged, sn); + final List<Group> pendingCollabs = sn.getPendingCollaborators().getList(); + if (pendingCollabs.contains(group)) { + sn.addCollaborator(group); + sn.removePendingCollaborator(group); + } else { + throw new DefaultException("User is not a pending collaborator"); } + } - void addAdmin(final User newAdmin, final Group group) { - final SocialNetwork sn = group.getSocialNetwork(); - sn.addAdmin(newAdmin.getUserGroup()); - } + void addAdmin(final User newAdmin, final Group group) { + final SocialNetwork sn = group.getSocialNetwork(); + sn.addAdmin(newAdmin.getUserGroup()); + } - @Override - public void addGroupToAdmins(final User userLogged, final Group group, final Group inGroup) throws DefaultException { - checkGroupAddingToSelf(group, inGroup); - final SocialNetwork sn = inGroup.getSocialNetwork(); - checkUserLoggedIsAdmin(userLogged, sn); - checkGroupIsNotAlreadyAMember(group, sn); - sn.addAdmin(group); - if (sn.isPendingCollab(group)) { - sn.removePendingCollaborator(group); - } + @Override + public void addGroupToAdmins(final User userLogged, final Group group, final Group inGroup) + throws DefaultException { + checkGroupAddingToSelf(group, inGroup); + final SocialNetwork sn = inGroup.getSocialNetwork(); + checkUserLoggedIsAdmin(userLogged, sn); + checkGroupIsNotAlreadyAMember(group, sn); + sn.addAdmin(group); + if (sn.isPendingCollab(group)) { + sn.removePendingCollaborator(group); } + } - @Override - public void addGroupToCollabs(final User userLogged, final Group group, final Group inGroup) - throws DefaultException { - checkGroupAddingToSelf(group, inGroup); - final SocialNetwork sn = inGroup.getSocialNetwork(); - checkUserLoggedIsAdmin(userLogged, sn); - checkGroupIsNotAlreadyAMember(group, sn); - sn.addCollaborator(group); - if (sn.isPendingCollab(group)) { - sn.removePendingCollaborator(group); - } + @Override + public void addGroupToCollabs(final User userLogged, final Group group, final Group inGroup) + throws DefaultException { + checkGroupAddingToSelf(group, inGroup); + final SocialNetwork sn = inGroup.getSocialNetwork(); + checkUserLoggedIsAdmin(userLogged, sn); + checkGroupIsNotAlreadyAMember(group, sn); + sn.addCollaborator(group); + if (sn.isPendingCollab(group)) { + sn.removePendingCollaborator(group); } + } - @Override - public void addGroupToViewers(final User userLogged, final Group group, final Group inGroup) - throws DefaultException { - checkGroupAddingToSelf(group, inGroup); - final SocialNetwork sn = inGroup.getSocialNetwork(); - checkUserLoggedIsAdmin(userLogged, sn); - checkGroupIsNotAlreadyAMember(group, sn); - sn.addViewer(group); - if (sn.isPendingCollab(group)) { - sn.removePendingCollaborator(group); - } + @Override + public void addGroupToViewers(final User userLogged, final Group group, final Group inGroup) + throws DefaultException { + checkGroupAddingToSelf(group, inGroup); + final SocialNetwork sn = inGroup.getSocialNetwork(); + checkUserLoggedIsAdmin(userLogged, sn); + checkGroupIsNotAlreadyAMember(group, sn); + sn.addViewer(group); + if (sn.isPendingCollab(group)) { + sn.removePendingCollaborator(group); } + } - private void checkGroupAddingToSelf(final Group group, final Group inGroup) throws DefaultException { - if (group.equals(inGroup)) { - throwGroupMemberException(group); - } + private void checkGroupAddingToSelf(final Group group, final Group inGroup) throws DefaultException { + if (group.equals(inGroup)) { + throwGroupMemberException(group); } + } - private void checkGroupIsNotAlreadyAMember(final Group group, final SocialNetwork sn) throws DefaultException { - if (sn.isAdmin(group) || sn.isCollab(group) || sn.isViewer(group) && notEveryOneCanView(sn)) { - throwGroupMemberException(group); - } + private void checkGroupIsNotAlreadyAMember(final Group group, final SocialNetwork sn) + throws DefaultException { + if (sn.isAdmin(group) || sn.isCollab(group) || sn.isViewer(group) && notEveryOneCanView(sn)) { + throwGroupMemberException(group); } + } - private void checkUserLoggedIsAdmin(final User userLogged, final SocialNetwork sn) throws AccessViolationException { - if (!accessRightsService.get(userLogged, sn.getAccessLists()).isAdministrable()) { - throw new AccessViolationException(); - } + private void checkUserLoggedIsAdmin(final User userLogged, final SocialNetwork sn) + throws AccessViolationException { + if (!accessRightsService.get(userLogged, sn.getAccessLists()).isAdministrable()) { + throw new AccessViolationException(); } + } - @Override - public void deleteMember(final User userLogged, final Group group, final Group inGroup) throws DefaultException, - AccessViolationException { - final SocialNetwork sn = inGroup.getSocialNetwork(); + @Override + public void deleteMember(final User userLogged, final Group group, final Group inGroup) + throws DefaultException, AccessViolationException { + final SocialNetwork sn = inGroup.getSocialNetwork(); - checkUserLoggedIsAdmin(userLogged, sn); - unJoinGroup(group, inGroup); - } + checkUserLoggedIsAdmin(userLogged, sn); + unJoinGroup(group, inGroup); + } - @Override - public void denyJoinGroup(final User userLogged, final Group group, final Group inGroup) throws DefaultException { - final SocialNetwork sn = inGroup.getSocialNetwork(); - checkUserLoggedIsAdmin(userLogged, sn); - final List<Group> pendingCollabs = sn.getPendingCollaborators().getList(); - if (pendingCollabs.contains(group)) { - sn.removePendingCollaborator(group); - } else { - throw new DefaultException("Person/Group is not a pending collaborator"); - } + @Override + public void denyJoinGroup(final User userLogged, final Group group, final Group inGroup) + throws DefaultException { + final SocialNetwork sn = inGroup.getSocialNetwork(); + checkUserLoggedIsAdmin(userLogged, sn); + final List<Group> pendingCollabs = sn.getPendingCollaborators().getList(); + if (pendingCollabs.contains(group)) { + sn.removePendingCollaborator(group); + } else { + throw new DefaultException("Person/Group is not a pending collaborator"); } + } - @Override - public ParticipationData findParticipation(final User userLogged, final Group group) - throws AccessViolationException { - get(userLogged, group); // check access - final Long groupId = group.getId(); - final List<Group> adminInGroups = finder.findAdminInGroups(groupId); - // Don't show self user group - if (group.isPersonal()) { - adminInGroups.remove(group); - } - // adminInGroups.remove(userLogged.getUserGroup()); - final List<Group> collabInGroups = finder.findCollabInGroups(groupId); - return new ParticipationData(adminInGroups, collabInGroups); + @Override + public ParticipationData findParticipation(final User userLogged, final Group group) + throws AccessViolationException { + get(userLogged, group); // check access + final Long groupId = group.getId(); + final List<Group> adminInGroups = finder.findAdminInGroups(groupId); + // Don't show self user group + if (group.isPersonal()) { + adminInGroups.remove(group); } + // adminInGroups.remove(userLogged.getUserGroup()); + final List<Group> collabInGroups = finder.findCollabInGroups(groupId); + return new ParticipationData(adminInGroups, collabInGroups); + } - @Override - public SocialNetwork get(final User petitioner, final Group group) throws AccessViolationException { - final SocialNetwork sn = group.getSocialNetwork(); - if (!sn.getAccessLists().getViewers().includes(petitioner.getUserGroup())) { - throw new AccessViolationException(); - } - return sn; + @Override + public SocialNetwork get(final User petitioner, final Group group) throws AccessViolationException { + final SocialNetwork sn = group.getSocialNetwork(); + if (!sn.getAccessLists().getViewers().includes(petitioner.getUserGroup()) + && !sn.getAccessLists().getEditors().includes(petitioner.getUserGroup()) + && !sn.getAccessLists().getAdmins().includes(petitioner.getUserGroup())) { + throw new AccessViolationException(); } + return sn; + } - @Override - public SocialNetworkData getSocialNetworkData(final User userLogged, final Group group) { - final SocialNetworkData socialNetData = new SocialNetworkData(); - socialNetData.setGroupMembers(get(userLogged, group)); - final AccessRights groupRights = accessRightsService.get(userLogged, group.getAccessLists()); - socialNetData.setGroupRights(groupRights); - socialNetData.setUserParticipation(findParticipation(userLogged, group)); - socialNetData.setGroupMembers(get(userLogged, group)); - if (group.isPersonal()) { - final UserBuddiesData userBuddies = userManager.getUserBuddies(group.getShortName()); - final User userGroup = userManager.findByShortname(group.getShortName()); - socialNetData.setUserBuddies(userBuddies); - final UserSNetVisibility buddiesVisibility = userGroup.getSNetVisibility(); - socialNetData.setIsBuddiesVisible(true); - switch (buddiesVisibility) { - case anyone: - break; - case onlyyou: - if (userLogged.equals(User.UNKNOWN_USER) || !userLogged.getUserGroup().equals(group)) { - socialNetData.setIsBuddiesVisible(false); - socialNetData.setUserBuddies(UserBuddiesData.EMPTY); - } - break; - case yourbuddies: - final boolean notMe = !userLogged.equals(userGroup); - final boolean notABuddie = !userBuddies.contains(userLogged.getShortName()); - if (notMe && notABuddie) { - socialNetData.setIsBuddiesVisible(false); - socialNetData.setUserBuddies(UserBuddiesData.EMPTY); - } - break; - } - socialNetData.setUserBuddiesVisibility(buddiesVisibility); - } else { - final SocialNetworkVisibility visibility = group.getSocialNetwork().getVisibility(); - socialNetData.setIsMembersVisible(true); - switch (visibility) { - case anyone: - break; - case onlyadmins: - if (!groupRights.isAdministrable()) { - socialNetData.setIsMembersVisible(false); - socialNetData.setGroupMembers(SocialNetwork.EMPTY); - } - break; - case onlymembers: - if (!groupRights.isEditable()) { - socialNetData.setIsMembersVisible(false); - socialNetData.setGroupMembers(SocialNetwork.EMPTY); - } - break; - } - socialNetData.setSocialNetworkVisibility(visibility); - socialNetData.setUserBuddies(UserBuddiesData.EMPTY); + @Override + public SocialNetworkData getSocialNetworkData(final User userLogged, final Group group) { + final SocialNetworkData socialNetData = new SocialNetworkData(); + socialNetData.setGroupMembers(get(userLogged, group)); + final AccessRights groupRights = accessRightsService.get(userLogged, group.getAccessLists()); + socialNetData.setGroupRights(groupRights); + socialNetData.setUserParticipation(findParticipation(userLogged, group)); + socialNetData.setGroupMembers(get(userLogged, group)); + if (group.isPersonal()) { + final UserBuddiesData userBuddies = userManager.getUserBuddies(group.getShortName()); + final User userGroup = userManager.findByShortname(group.getShortName()); + socialNetData.setUserBuddies(userBuddies); + final UserSNetVisibility buddiesVisibility = userGroup.getSNetVisibility(); + socialNetData.setIsBuddiesVisible(true); + switch (buddiesVisibility) { + case anyone: + break; + case onlyyou: + if (userLogged.equals(User.UNKNOWN_USER) || !userLogged.getUserGroup().equals(group)) { + socialNetData.setIsBuddiesVisible(false); + socialNetData.setUserBuddies(UserBuddiesData.EMPTY); } - return socialNetData; + break; + case yourbuddies: + final boolean notMe = !userLogged.equals(userGroup); + final boolean notABuddie = !userBuddies.contains(userLogged.getShortName()); + if (notMe && notABuddie) { + socialNetData.setIsBuddiesVisible(false); + socialNetData.setUserBuddies(UserBuddiesData.EMPTY); + } + break; + } + socialNetData.setUserBuddiesVisibility(buddiesVisibility); + } else { + final SocialNetworkVisibility visibility = group.getSocialNetwork().getVisibility(); + socialNetData.setIsMembersVisible(true); + switch (visibility) { + case anyone: + break; + case onlyadmins: + if (!groupRights.isAdministrable()) { + socialNetData.setIsMembersVisible(false); + socialNetData.setGroupMembers(SocialNetwork.EMPTY); + } + break; + case onlymembers: + if (!groupRights.isEditable()) { + socialNetData.setIsMembersVisible(false); + socialNetData.setGroupMembers(SocialNetwork.EMPTY); + } + break; + } + socialNetData.setSocialNetworkVisibility(visibility); + socialNetData.setUserBuddies(UserBuddiesData.EMPTY); } + return socialNetData; + } - private boolean isClosed(final AdmissionType admissionType) { - return admissionType.equals(AdmissionType.Closed); - } + private boolean isClosed(final AdmissionType admissionType) { + return admissionType.equals(AdmissionType.Closed); + } - private boolean isModerated(final AdmissionType admissionType) { - return admissionType.equals(AdmissionType.Moderated); - } + private boolean isModerated(final AdmissionType admissionType) { + return admissionType.equals(AdmissionType.Moderated); + } - private boolean isOpen(final AdmissionType admissionType) { - return admissionType.equals(AdmissionType.Open); - } + private boolean isOpen(final AdmissionType admissionType) { + return admissionType.equals(AdmissionType.Open); + } - private boolean notEveryOneCanView(final SocialNetwork sn) { - return !sn.getAccessLists().getViewers().getMode().equals(GroupListMode.EVERYONE); - } + private boolean notEveryOneCanView(final SocialNetwork sn) { + return !sn.getAccessLists().getViewers().getMode().equals(GroupListMode.EVERYONE); + } - @Override - public SocialNetworkRequestResult requestToJoin(final User userLogged, final Group inGroup) - throws DefaultException, UserMustBeLoggedException { - final SocialNetwork sn = inGroup.getSocialNetwork(); - if (!User.isKnownUser(userLogged)) { - throw new UserMustBeLoggedException(); - } - final AdmissionType admissionType = inGroup.getAdmissionType(); - if (admissionType == null) { - throw new ServerException("No admissionType"); - } - final Group userGroup = userLogged.getUserGroup(); - checkGroupIsNotAlreadyAMember(userGroup, sn); - if (isModerated(admissionType)) { - sn.addPendingCollaborator(userGroup); - return SocialNetworkRequestResult.moderated; - } else if (isOpen(admissionType)) { - if (inGroup.getGroupType().equals(GroupType.ORPHANED_PROJECT)) { - sn.addAdmin(userGroup); - inGroup.setGroupType(GroupType.PROJECT); - inGroup.setAdmissionType(AdmissionType.Moderated); - persist(inGroup, Group.class); - } else { - sn.addCollaborator(userGroup); - } - return SocialNetworkRequestResult.accepted; - } else if (isClosed(admissionType)) { - return SocialNetworkRequestResult.denied; - } else { - throw new DefaultException("State not expected in SocialNetworkManagerDefault class"); - } + @Override + public SocialNetworkRequestResult requestToJoin(final User userLogged, final Group inGroup) + throws DefaultException, UserMustBeLoggedException { + final SocialNetwork sn = inGroup.getSocialNetwork(); + if (!User.isKnownUser(userLogged)) { + throw new UserMustBeLoggedException(); } + final AdmissionType admissionType = inGroup.getAdmissionType(); + if (admissionType == null) { + throw new ServerException("No admissionType"); + } + final Group userGroup = userLogged.getUserGroup(); + checkGroupIsNotAlreadyAMember(userGroup, sn); + if (isModerated(admissionType)) { + sn.addPendingCollaborator(userGroup); + return SocialNetworkRequestResult.moderated; + } else if (isOpen(admissionType)) { + if (inGroup.getGroupType().equals(GroupType.ORPHANED_PROJECT)) { + sn.addAdmin(userGroup); + inGroup.setGroupType(GroupType.PROJECT); + inGroup.setAdmissionType(AdmissionType.Moderated); + persist(inGroup, Group.class); + } else { + sn.addCollaborator(userGroup); + } + return SocialNetworkRequestResult.accepted; + } else if (isClosed(admissionType)) { + return SocialNetworkRequestResult.denied; + } else { + throw new DefaultException("State not expected in SocialNetworkManagerDefault class"); + } + } - @Override - public void setAdminAsCollab(final User userLogged, final Group group, final Group inGroup) throws DefaultException { - final SocialNetwork sn = inGroup.getSocialNetwork(); - checkUserLoggedIsAdmin(userLogged, sn); - if (sn.isAdmin(group)) { - if (sn.getAccessLists().getAdmins().getList().size() == 1) { - throw new LastAdminInGroupException(); - } - sn.removeAdmin(group); - sn.addCollaborator(group); - } else { - throw new DefaultException("Person/Group is not an admin"); - } + @Override + public void setAdminAsCollab(final User userLogged, final Group group, final Group inGroup) + throws DefaultException { + final SocialNetwork sn = inGroup.getSocialNetwork(); + checkUserLoggedIsAdmin(userLogged, sn); + if (sn.isAdmin(group)) { + if (sn.getAccessLists().getAdmins().getList().size() == 1) { + throw new LastAdminInGroupException(); + } + sn.removeAdmin(group); + sn.addCollaborator(group); + } else { + throw new DefaultException("Person/Group is not an admin"); } + } - @Override - public void setCollabAsAdmin(final User userLogged, final Group group, final Group inGroup) throws DefaultException { - final SocialNetwork sn = inGroup.getSocialNetwork(); - checkUserLoggedIsAdmin(userLogged, sn); - if (sn.isCollab(group)) { - sn.removeCollaborator(group); - sn.addAdmin(group); - } else { - throw new DefaultException("Person/Group is not a collaborator"); - } + @Override + public void setCollabAsAdmin(final User userLogged, final Group group, final Group inGroup) + throws DefaultException { + final SocialNetwork sn = inGroup.getSocialNetwork(); + checkUserLoggedIsAdmin(userLogged, sn); + if (sn.isCollab(group)) { + sn.removeCollaborator(group); + sn.addAdmin(group); + } else { + throw new DefaultException("Person/Group is not a collaborator"); } + } - private void throwGroupMemberException(final Group group) throws DefaultException { - if (group.isPersonal()) { - throw new AlreadyUserMemberException(); - } else { - throw new AlreadyGroupMemberException(); - } + private void throwGroupMemberException(final Group group) throws DefaultException { + if (group.isPersonal()) { + throw new AlreadyUserMemberException(); + } else { + throw new AlreadyGroupMemberException(); } + } - @Override - public void unJoinGroup(final Group groupToUnJoin, final Group inGroup) throws DefaultException { - final SocialNetwork sn = inGroup.getSocialNetwork(); + @Override + public void unJoinGroup(final Group groupToUnJoin, final Group inGroup) throws DefaultException { + final SocialNetwork sn = inGroup.getSocialNetwork(); - if (sn.isAdmin(groupToUnJoin)) { - if (sn.getAccessLists().getAdmins().getList().size() == 1) { - if (sn.getAccessLists().getEditors().getList().size() > 0) { - throw new LastAdminInGroupException(); - } else { - inGroup.setGroupType(GroupType.ORPHANED_PROJECT); - inGroup.setAdmissionType(AdmissionType.Open); - } - } - sn.removeAdmin(groupToUnJoin); - } else if (sn.isCollab(groupToUnJoin)) { - sn.removeCollaborator(groupToUnJoin); + if (sn.isAdmin(groupToUnJoin)) { + if (sn.getAccessLists().getAdmins().getList().size() == 1) { + if (sn.getAccessLists().getEditors().getList().size() > 0) { + throw new LastAdminInGroupException(); } else { - throw new DefaultException("Person/Group is not a collaborator"); + inGroup.setGroupType(GroupType.ORPHANED_PROJECT); + inGroup.setAdmissionType(AdmissionType.Open); } + } + sn.removeAdmin(groupToUnJoin); + } else if (sn.isCollab(groupToUnJoin)) { + sn.removeCollaborator(groupToUnJoin); + } else { + throw new DefaultException("Person/Group is not a collaborator"); } + } } Modified: trunk/src/main/java/cc/kune/core/shared/dto/GroupType.java =================================================================== --- trunk/src/main/java/cc/kune/core/shared/dto/GroupType.java 2011-07-09 16:44:34 UTC (rev 1442) +++ trunk/src/main/java/cc/kune/core/shared/dto/GroupType.java 2011-07-09 20:52:00 UTC (rev 1443) @@ -22,5 +22,5 @@ import com.google.gwt.user.client.rpc.IsSerializable; public enum GroupType implements IsSerializable { - ORGANIZATION, COMMUNITY, PROJECT, ORPHANED_PROJECT, PERSONAL + CLOSED, COMMUNITY, ORGANIZATION, ORPHANED_PROJECT, PERSONAL, PROJECT } Modified: trunk/src/main/java/cc/kune/gspace/client/actions/NewContainerBtn.java =================================================================== --- trunk/src/main/java/cc/kune/gspace/client/actions/NewContainerBtn.java 2011-07-09 16:44:34 UTC (rev 1442) +++ trunk/src/main/java/cc/kune/gspace/client/actions/NewContainerBtn.java 2011-07-09 20:52:00 UTC (rev 1443) @@ -75,7 +75,7 @@ stateManager.setRetrievedStateAndGo(state); NotifyUser.hideProgress(); NotifyUser.info(i18n.tWithNT("[%s] created", "New folder created, for instance", newName)); - folderViewer.blinkTitle(); + folderViewer.highlightTitle(); } }); cache.removeContent(session.getCurrentStateToken()); Modified: trunk/src/main/java/cc/kune/gspace/client/actions/NewContainerMenuItem.java =================================================================== --- trunk/src/main/java/cc/kune/gspace/client/actions/NewContainerMenuItem.java 2011-07-09 16:44:34 UTC (rev 1442) +++ trunk/src/main/java/cc/kune/gspace/client/actions/NewContainerMenuItem.java 2011-07-09 20:52:00 UTC (rev 1443) @@ -78,7 +78,7 @@ stateManager.setRetrievedStateAndGo(state); NotifyUser.hideProgress(); NotifyUser.info(i18n.tWithNT("[%s] created", "New folder created, for instance", newName)); - folderViewer.blinkTitle(); + folderViewer.highlightTitle(); } }); cache.removeContent(session.getCurrentStateToken()); Modified: trunk/src/main/java/cc/kune/gspace/client/viewers/AbstractFolderViewerPanel.java =================================================================== --- trunk/src/main/java/cc/kune/gspace/client/viewers/AbstractFolderViewerPanel.java 2011-07-09 16:44:34 UTC (rev 1442) +++ trunk/src/main/java/cc/kune/gspace/client/viewers/AbstractFolderViewerPanel.java 2011-07-09 20:52:00 UTC (rev 1443) @@ -70,8 +70,8 @@ } @Override - public void blinkTitle() { - contentTitle.blink(); + public void highlightTitle() { + contentTitle.highlightTitle(); } @Override Modified: trunk/src/main/java/cc/kune/gspace/client/viewers/ContentTitleWidget.java =================================================================== --- trunk/src/main/java/cc/kune/gspace/client/viewers/ContentTitleWidget.java 2011-07-09 16:44:34 UTC (rev 1442) +++ trunk/src/main/java/cc/kune/gspace/client/viewers/ContentTitleWidget.java 2011-07-09 20:52:00 UTC (rev 1443) @@ -53,10 +53,6 @@ initWidget(flow); } - public void blink() { - editableTitle.blink(); - } - public void edit() { editableTitle.edit(); } @@ -65,6 +61,10 @@ return editableTitle; } + public void highlightTitle() { + editableTitle.highlightTitle(); + } + public void setText(final String text) { editableTitle.setText(text); } @@ -83,7 +83,7 @@ titleIcon.setVisible(hasIcon); editableTitle.setText(title); if (editable) { - editableTitle.setTooltip(i18n.t("Click to edit")); + editableTitle.setTooltip(i18n.t("Click to rename")); } else { editableTitle.setTooltip(""); } Modified: trunk/src/main/java/cc/kune/gspace/client/viewers/ContentViewerPanel.java =================================================================== --- trunk/src/main/java/cc/kune/gspace/client/viewers/ContentViewerPanel.java 2011-07-09 16:44:34 UTC (rev 1442) +++ trunk/src/main/java/cc/kune/gspace/client/viewers/ContentViewerPanel.java 2011-07-09 20:52:00 UTC (rev 1443) @@ -125,7 +125,7 @@ @Override public void blinkTitle() { - contentTitle.blink(); + contentTitle.highlightTitle(); } @Override Modified: trunk/src/main/java/cc/kune/gspace/client/viewers/FolderViewerPresenter.java =================================================================== --- trunk/src/main/java/cc/kune/gspace/client/viewers/FolderViewerPresenter.java 2011-07-09 16:44:34 UTC (rev 1442) +++ trunk/src/main/java/cc/kune/gspace/client/viewers/FolderViewerPresenter.java 2011-07-09 20:52:00 UTC (rev 1443) @@ -81,7 +81,7 @@ void attach(); - void blinkTitle(); + void highlightTitle(); void clear(); @@ -176,8 +176,8 @@ } } - public void blinkTitle() { - getView().blinkTitle(); + public void highlightTitle() { + getView().highlightTitle(); } String calculateStyle(final int pos, final int length) { Modified: trunk/src/main/webapp/others/kune-client-actions.xml =================================================================== --- trunk/src/main/webapp/others/kune-client-actions.xml 2011-07-09 16:44:34 UTC (rev 1442) +++ trunk/src/main/webapp/others/kune-client-actions.xml 2011-07-09 20:52:00 UTC (rev 1443) @@ -14,10 +14,10 @@ </iconUrl> <iconCss></iconCss> </extension> - + <extension> <name>Quick Notify</name> - <installerUrl>http://code.google.com/p/wave-projects/source/browse/gadgets/wave-quick-noti... + <installerUrl>http://code.google.com/p/wave-projects/source/browse/gadgets/wave-quick-noti... </installerUrl> <gadgetUrl>http://wave-projects.googlecode.com/hg/gadgets/wave-quick-notify.xml </gadgetUrl> @@ -25,10 +25,10 @@ </iconUrl> <iconCss></iconCss> </extension> - + <extension> <name>tasklistbot</name> - <installerUrl>http://tasklistbot.appspot.com/TaskList.xml + <installerUrl>http://tasklistbot.appspot.com/TaskList.xml </installerUrl> <gadgetUrl>http://everybodywave.appspot.com/gadget/foobar/main.xml </gadgetUrl> @@ -39,7 +39,7 @@ <extension> <name>Yes/No/Mini</name> - <installerUrl>http://mysite.verizon.net/zmyaro/mystuff/wave/ynmini.xml + <installerUrl>http://mysite.verizon.net/zmyaro/mystuff/wave/ynmini.xml </installerUrl> <gadgetUrl>http://mysite.verizon.net/zmyaro/projects/wave/gadgets/ynmini.xml </gadgetUrl> @@ -47,10 +47,10 @@ </iconUrl> <iconCss></iconCss> </extension> - + <extension> <name>Yes/No/Maybe/+</name> - <installerUrl>http://everybodywave.appspot.com/gadget/foobar/xt.xml + <installerUrl>http://everybodywave.appspot.com/gadget/foobar/xt.xml </installerUrl> <gadgetUrl>http://everybodywave.appspot.com/gadget/foobar/main.xml </gadgetUrl> @@ -58,10 +58,10 @@ </iconUrl> <iconCss></iconCss> </extension> - + <extension> <name>Shorten URL with goo.gl</name> - <installerUrl>http://haru1ban-wave.googlecode.com/svn/trunk/goo_gl/manifest.xml + <installerUrl>http://haru1ban-wave.googlecode.com/svn/trunk/goo_gl/manifest.xml </installerUrl> <gadgetUrl>http://haru1ban-wave.googlecode.com/svn/trunk/goo_gl/goo_gl.xml </gadgetUrl> @@ -69,10 +69,10 @@ </iconUrl> <iconCss></iconCss> </extension> - + <extension> <name>Poll</name> - <installerUrl>http://wave.samuirai.de/install_poll.xml + <installerUrl>http://wave.samuirai.de/install_poll.xml </installerUrl> <gadgetUrl>http://wave.samuirai.de/poll.xml </gadgetUrl> @@ -80,10 +80,10 @@ </iconUrl> <iconCss></iconCss> </extension> - + <extension> <name>TaskToDo</name> - <installerUrl>http://www.voizle.com/ToDoInstaller.xml + <installerUrl>http://www.voizle.com/ToDoInstaller.xml </installerUrl> <gadgetUrl>http://www.voizle.com/ToDo.xml </gadgetUrl> @@ -94,7 +94,7 @@ <extension> <name>Picasa Gadget</name> - <installerUrl>http://wave-picasa.googlecode.com/svn/trunk/manifest_wave_picasa.xml + <installerUrl>http://wave-picasa.googlecode.com/svn/trunk/manifest_wave_picasa.xml </installerUrl> <gadgetUrl>http://wave-picasa.googlecode.com/svn/trunk/picasa.xml </gadgetUrl> @@ -102,10 +102,10 @@ </iconUrl> <iconCss></iconCss> </extension> - + <extension> <name>Map</name> - <installerUrl>http://google-wave-resources.googlecode.com/svn/trunk/samples/extensions/gad... + <installerUrl>http://google-wave-resources.googlecode.com/svn/trunk/samples/extensions/gad... </installerUrl> <gadgetUrl>http://google-wave-resources.googlecode.com/svn/trunk/samples/extensions/gad... </gadgetUrl> @@ -113,10 +113,10 @@ </iconUrl> <iconCss></iconCss> </extension> - + <extension> <name>MindMap</name> - <installerUrl>http://cactus-wave.appspot.com/mindmap.xml + <installerUrl>http://cactus-wave.appspot.com/mindmap.xml </installerUrl> <gadgetUrl>http://cactus-wave.appspot.com/net.brucecooper.mindmapgadget.MindMapGadget/n... </gadgetUrl> @@ -135,7 +135,7 @@ </iconUrl> <iconCss></iconCss> </extension> - + <extension> <name>waffle</name> <installerUrl>http://www.waffle.dk/install.xml @@ -186,12 +186,14 @@ <guiActionDescriptors> - <guiActionDescriptor> + <guiActionDescriptor> <type>wave-gadget</type> <extensionName>Map</extensionName> <name>New Map</name> <path>Gadget»Media</path> - <description>Collaborate on a map of placemarks, paths, and shapes with other participants. Great for planning events and trips.</description> + <description>Collaborate on a map of placemarks, paths, and shapes + with other participants. Great for planning events and trips. + </description> <new-content-title>New Map</new-content-title> <new-content-textintro></new-content-textintro> <enabled>true</enabled> @@ -209,7 +211,7 @@ used yet) --> <participants>ask</participants> </guiActionDescriptor> - + <guiActionDescriptor> <type>wave-gadget</type> <extensionName>Picasa Gadget</extensionName> @@ -233,13 +235,14 @@ used yet) --> <participants>ask</participants> </guiActionDescriptor> - + <guiActionDescriptor> <type>wave-gadget</type> <extensionName>TaskToDo</extensionName> <name>New To-Do list</name> <path>Gadget»Tasks</path> - <description>Make your To-Do list and mark your progress.</description> + <description>Make your To-Do list and mark your progress. + </description> <new-content-title>New To-Do list</new-content-title> <new-content-textintro></new-content-textintro> <enabled>true</enabled> @@ -257,13 +260,14 @@ used yet) --> <participants>ask</participants> </guiActionDescriptor> - + <guiActionDescriptor> <type>wave-gadget</type> <extensionName>Shorten URL with goo.gl</extensionName> <name>New Shorten URL</name> <path>Gadget»Links</path> - <description>Shorten url with goo.gl, the new Google url shortener.(http://goo.gl/)</description> + <description>Shorten url with goo.gl, the new Google url + shortener.(http://goo.gl/)</description> <new-content-title>New Shorten URL</new-content-title> <new-content-textintro></new-content-textintro> <enabled>true</enabled> @@ -281,14 +285,16 @@ used yet) --> <participants>ask</participants> </guiActionDescriptor> - - + + <guiActionDescriptor> <type>wave-gadget</type> <extensionName>Poll</extensionName> <name>New Advanced Poll</name> <path>Gadget»Voting</path> - <description>You can add a poll to your Wave. Accordingly you can embed the result with the Google Chart API into your Wave.</description> + <description>You can add a poll to your Wave. Accordingly you can + embed the result with the Google Chart API into your Wave. + </description> <new-content-title>New Advanced Poll</new-content-title> <new-content-textintro></new-content-textintro> <enabled>true</enabled> @@ -306,14 +312,15 @@ used yet) --> <participants>ask</participants> </guiActionDescriptor> - - + + <guiActionDescriptor> <type>wave-gadget</type> <extensionName>Yes/No/Maybe/+</extensionName> <name>New Yes/No/Maybe/+ Voting</name> <path>Gadget»Voting</path> - <description>Same as Google's Yes/No/Maybe, only you can edit the titles and add new ones.</description> + <description>Same as Google's Yes/No/Maybe, only you can edit the + titles and add new ones.</description> <new-content-title>New Yes/No/Maybe/+ Voting</new-content-title> <new-content-textintro></new-content-textintro> <enabled>true</enabled> @@ -331,13 +338,14 @@ used yet) --> <participants>ask</participants> </guiActionDescriptor> - + <guiActionDescriptor> <type>wave-gadget</type> <extensionName>Yes/No/Mini</extensionName> <name>New Yes/no/Mini Voting</name> <path>Gadget»Voting</path> - <description>A miniature version of the Yes/No/Maybe gadget.</description> + <description>A miniature version of the Yes/No/Maybe gadget. + </description> <new-content-title>New Yes/no/Mini Voting</new-content-title> <new-content-textintro></new-content-textintro> <enabled>true</enabled> @@ -355,7 +363,7 @@ used yet) --> <participants>ask</participants> </guiActionDescriptor> - + <guiActionDescriptor> <type>wave-gadget</type> <extensionName>tasklistbot</extensionName> @@ -379,13 +387,14 @@ used yet) --> <participants>ask</participants> </guiActionDescriptor> - + <guiActionDescriptor> <type>wave-gadget</type> <extensionName>Quick Notify</extensionName> <name>New Notification</name> <path>Gadget»Organization</path> - <description>Quickly send a short email with a custom message to all participants.</description> + <description>Quickly send a short email with a custom message to + all participants.</description> <new-content-title>New Notification</new-content-title> <new-content-textintro></new-content-textintro> <enabled>true</enabled> @@ -403,14 +412,15 @@ used yet) --> <participants>ask</participants> </guiActionDescriptor> - - + + <guiActionDescriptor> <type>wave-gadget</type> <extensionName>MindMap</extensionName> <name>New MindMap</name> <path>Gadget»Organization</path> - <description>Collaborate using a hierarchical mind map.</description> + <description>Collaborate using a hierarchical mind map. + </description> <new-content-title>New MindMap</new-content-title> <new-content-textintro></new-content-textintro> <enabled>true</enabled> @@ -428,13 +438,14 @@ used yet) --> <participants>ask</participants> </guiActionDescriptor> - + <guiActionDescriptor> <type>wave-gadget</type> <extensionName>Image</extensionName> <name>New Image</name> <path>Gadget»Media</path> - <description>Lets you insert, resize and annotate any image from the web.</description> + <description>Lets you insert, resize and annotate any image from + the web.</description> <new-content-title>New image</new-content-title> <new-content-textintro></new-content-textintro> <enabled>true</enabled> Modified: trunk/src/test/java/cc/kune/core/server/integration/kuneservice/GroupServiceTest.java =================================================================== --- trunk/src/test/java/cc/kune/core/server/integration/kuneservice/GroupServiceTest.java 2011-07-09 16:44:34 UTC (rev 1442) +++ trunk/src/test/java/cc/kune/core/server/integration/kuneservice/GroupServiceTest.java 2011-07-09 20:52:00 UTC (rev 1443) @@ -30,6 +30,7 @@ import cc.kune.core.server.integration.IntegrationTest; import cc.kune.core.server.integration.IntegrationTestHelper; import cc.kune.core.shared.domain.AdmissionType; +import cc.kune.core.shared.domain.GroupListMode; import cc.kune.core.shared.dto.GroupDTO; import cc.kune.core.shared.dto.GroupType; import cc.kune.core.shared.dto.LicenseDTO; @@ -40,108 +41,134 @@ public class GroupServiceTest extends IntegrationTest { - @Inject - GroupFinder groupFinder; + @Inject + GroupFinder groupFinder; - @Inject - GroupService service; + @Inject + GroupService service; - @Inject - UserSession session; + @Inject + UserSession session; - @Test - public void createCommunity() throws Exception { - doLogin(); + @Test + public void createClosed() throws Exception { + doLogin(); - final GroupDTO group = new GroupDTO("ysei", "Yellow Submarine Environmental Initiative", GroupType.COMMUNITY); + final GroupDTO group = new GroupDTO("ysei", "Yellow Submarine Environmental Initiative", + GroupType.CLOSED); - final LicenseDTO license = new LicenseDTO(); - license.setShortName("by-sa-v3.0"); - group.setDefaultLicense(license); - service.createNewGroup(session.getHash(), group, "Public desc", "tag1 tag2", null); + final LicenseDTO license = new LicenseDTO(); + license.setShortName("by-sa-v3.0"); + group.setDefaultLicense(license); + service.createNewGroup(session.getHash(), group, "Public desc", "tag1 tag2", null); - final Group groupCreated = groupFinder.findByShortName("ysei"); - assertEquals(groupCreated.getShortName(), group.getShortName()); - assertEquals(groupCreated.getLongName(), group.getLongName()); + final Group groupCreated = groupFinder.findByShortName("ysei"); + assertEquals(groupCreated.getShortName(), group.getShortName()); + assertEquals(groupCreated.getLongName(), group.getLongName()); + assertEquals(groupCreated.getAdmissionType(), AdmissionType.Closed); + assertEquals(groupCreated.getGroupType(), GroupType.CLOSED); + assertEquals(GroupListMode.NORMAL, + groupCreated.getSocialNetwork().getAccessLists().getViewers().getMode()); + } - assertEquals(groupCreated.getAdmissionType(), AdmissionType.Open); - assertEquals(groupCreated.getGroupType(), GroupType.COMMUNITY); - } + @Test + public void createCommunity() throws Exception { + doLogin(); - @Test(expected = Exception.class) - public void createGroupNotLogged() throws Exception { - final GroupDTO group = new GroupDTO("ysei", "Yellow Submarine Environmental Initiative", GroupType.PROJECT); - service.createNewGroup(session.getHash(), group, "Public desc", "tag1 tag2", null); - } + final GroupDTO group = new GroupDTO("ysei", "Yellow Submarine Environmental Initiative", + GroupType.COMMUNITY); - @Test(expected = UserMustBeLoggedException.class) - public void createGroupNullUserHash() throws Exception { - doLogin(); - final GroupDTO group = new GroupDTO("ysei", "Yellow Submarine Environmental Initiative", GroupType.PROJECT); - service.createNewGroup(null, group, "Public desc", "tag1 tag2", null); - } + final LicenseDTO license = new LicenseDTO(); + license.setShortName("by-sa-v3.0"); + group.setDefaultLicense(license); + service.createNewGroup(session.getHash(), group, "Public desc", "tag1 tag2", null); - @Test - public void createGroupUserLogged() throws Exception { - doLogin(); + final Group groupCreated = groupFinder.findByShortName("ysei"); + assertEquals(groupCreated.getShortName(), group.getShortName()); + assertEquals(groupCreated.getLongName(), group.getLongName()); - final GroupDTO group = new GroupDTO("ysei", "Yellow Submarine Environmental Initiative", GroupType.PROJECT); + assertEquals(groupCreated.getAdmissionType(), AdmissionType.Open); + assertEquals(groupCreated.getGroupType(), GroupType.COMMUNITY); + } - final LicenseDTO license = new LicenseDTO(); - license.setShortName("by-sa-v3.0"); - group.setDefaultLicense(license); - service.createNewGroup(session.getHash(), group, "Public desc", "tag1 tag2", null); + @Test(expected = Exception.class) + public void createGroupNotLogged() throws Exception { + final GroupDTO group = new GroupDTO("ysei", "Yellow Submarine Environmental Initiative", + GroupType.PROJECT); + service.createNewGroup(session.getHash(), group, "Public desc", "tag1 tag2", null); + } - final Group groupCreated = groupFinder.findByShortName("ysei"); - assertEquals(groupCreated.getShortName(), group.getShortName()); - assertEquals(groupCreated.getLongName(), group.getLongName()); + @Test(expected = UserMustBeLoggedException.class) + public void createGroupNullUserHash() throws Exception { + doLogin(); + final GroupDTO group = new GroupDTO("ysei", "Yellow Submarine Environmental Initiative", + GroupType.PROJECT); + service.createNewGroup(null, group, "Public desc", "tag1 tag2", null); + } - assertEquals(groupCreated.getAdmissionType(), AdmissionType.Moderated); - assertEquals(groupCreated.getGroupType(), GroupType.PROJECT); - } + @Test + public void createGroupUserLogged() throws Exception { + doLogin(); - @Test - public void createOrganization() throws Exception { - doLogin(); + final GroupDTO group = new GroupDTO("ysei", "Yellow Submarine Environmental Initiative", + GroupType.PROJECT); - final GroupDTO group = new GroupDTO("ysei", "Yellow Submarine Environmental Initiative", GroupType.ORGANIZATION); + final LicenseDTO license = new LicenseDTO(); + license.setShortName("by-sa-v3.0"); + group.setDefaultLicense(license); + service.createNewGroup(session.getHash(), group, "Public desc", "tag1 tag2", null); - final LicenseDTO license = new LicenseDTO(); - license.setShortName("by-sa-v3.0"); - group.setDefaultLicense(license); - service.createNewGroup(session.getHash(), group, "Public desc", "tag1 tag2", null); + final Group groupCreated = groupFinder.findByShortName("ysei"); + assertEquals(groupCreated.getShortName(), group.getShortName()); + assertEquals(groupCreated.getLongName(), group.getLongName()); - final Group groupCreated = groupFinder.findByShortName("ysei"); - assertEquals(groupCreated.getShortName(), group.getShortName()); - assertEquals(groupCreated.getLongName(), group.getLongName()); - assertEquals(groupCreated.getAdmissionType(), AdmissionType.Moderated); - assertEquals(groupCreated.getGroupType(), GroupType.ORGANIZATION); - } + assertEquals(groupCreated.getAdmissionType(), AdmissionType.Moderated); + assertEquals(groupCreated.getGroupType(), GroupType.PROJECT); + } - @Test - public void createOrphanedProject() throws Exception { - doLogin(); + @Test + public void createOrganization() throws Exception { + doLogin(); - final GroupDTO group = new GroupDTO("ysei", "Yellow Submarine Environmental Initiative", - GroupType.ORPHANED_PROJECT); + final GroupDTO group = new GroupDTO("ysei", "Yellow Submarine Environmental Initiative", + GroupType.ORGANIZATION); - final LicenseDTO license = new LicenseDTO(); - license.setShortName("by-sa-v3.0"); - group.setDefaultLicense(license); - service.createNewGroup(session.getHash(), group, "Public desc", "tag1 tag2", null); + final LicenseDTO license = new LicenseDTO(); + license.setShortName("by-sa-v3.0"); + group.setDefaultLicense(license); + service.createNewGroup(session.getHash(), group, "Public desc", "tag1 tag2", null); - final Group groupCreated = groupFinder.findByShortName("ysei"); - assertEquals(groupCreated.getShortName(), group.getShortName()); - assertEquals(groupCreated.getLongName(), group.getLongName()); - assertEquals(groupCreated.getAdmissionType(), AdmissionType.Open); - assertEquals(groupCreated.getGroupType(), GroupType.ORPHANED_PROJECT); - assertEquals(0, groupCreated.getSocialNetwork().getAccessLists().getAdmins().getList().size()); - assertEquals(0, groupCreated.getSocialNetwork().getAccessLists().getEditors().getList().size()); - } + final Group groupCreated = groupFinder.findByShortName("ysei"); + assertEquals(groupCreated.getShortName(), group.getShortName()); + assertEquals(groupCreated.getLongName(), group.getLongName()); + assertEquals(groupCreated.getAdmissionType(), AdmissionType.Moderated); + assertEquals(groupCreated.getGroupType(), GroupType.ORGANIZATION); + } - @Before - public void init() { - new IntegrationTestHelper(this); - } + @Test + public void createOrphanedProject() throws Exception { + doLogin(); + final GroupDTO group = new GroupDTO("ysei", "Yellow Submarine Environmental Initiative", + GroupType.ORPHANED_PROJECT); + + final LicenseDTO license = new LicenseDTO(); + license.setShortName("by-sa-v3.0"); + group.setDefaultLicense(license); + service.createNewGroup(session.getHash(), group, "Public desc", "tag1 tag2", null); + + final Group groupCreated = groupFinder.findByShortName("ysei"); + assertEquals(groupCreated.getShortName(), group.getShortName()); + assertEquals(groupCreated.getLongName(), group.getLongName()); + assertEquals(groupCreated.getAdmissionType(), AdmissionType.Open); + assertEquals(groupCreated.getGroupType(), GroupType.ORPHANED_PROJECT); + assertEquals(0, groupCreated.getSocialNetwork().getAccessLists().getAdmins().getList().size()); + assertEquals(0, groupCreated.getSocialNetwork().getAccessLists().getEditors().getList().size()); + } + + @Before + public void init() { + new IntegrationTestHelper(this); + } + }
participants (1)
-
Vicente J. Ruiz Jurado