r1776 - in trunk: img/icons/custom-iconic src/main/java/cc/kune/common/client/actions/gwtui src/main/java/cc/kune/common/client/actions/gxtui src/main/java/cc/kune/common/client/actions/ui src/main/java/cc/kune/common/client/actions/ui/descrip src/main/java/cc/kune/common/client/log src/main/java/cc/kune/common/public src/main/java/cc/kune/common/public/gxt/css src/main/java/cc/kune/core/client src/main/java/cc/kune/core/client/auth src/main/java/cc/kune/core/client/events src/main/java/cc/ku
Author: vjrj_ Date: 2012-03-23 18:43:04 +0100 (Fri, 23 Mar 2012) New Revision: 1776 Added: trunk/img/icons/custom-iconic/ideas.svg trunk/src/main/java/cc/kune/common/client/actions/gwtui/HasMenuItem.java trunk/src/main/java/cc/kune/common/client/actions/ui/descrip/MenuShowAction.java trunk/src/main/java/cc/kune/common/client/log/EventBusWithoutLogging.java trunk/src/main/java/cc/kune/core/client/events/MyGroupsChangedEvent.java trunk/src/main/java/cc/kune/core/client/rpcservices/GroupServiceHelper.java trunk/src/main/java/cc/kune/core/client/sitebar/MyGroupsMenu.java trunk/src/main/java/cc/kune/core/client/sitebar/SitebarGroupsLink.java trunk/src/main/webapp/css/ trunk/src/main/webapp/css/reset.css Removed: trunk/src/main/java/cc/kune/core/client/sitebar/SitebarNewGroupLink.java Modified: trunk/src/main/java/cc/kune/common/client/actions/gwtui/AbstractGwtButtonGui.java trunk/src/main/java/cc/kune/common/client/actions/gwtui/AbstractGwtMenuGui.java trunk/src/main/java/cc/kune/common/client/actions/gwtui/AbstractGwtMenuItemGui.java trunk/src/main/java/cc/kune/common/client/actions/gwtui/GwtIconLabelGui.java trunk/src/main/java/cc/kune/common/client/actions/gwtui/GwtMenuGui.java trunk/src/main/java/cc/kune/common/client/actions/gwtui/GwtMenuSeparatorGui.java trunk/src/main/java/cc/kune/common/client/actions/gwtui/GwtSubMenuGui.java trunk/src/main/java/cc/kune/common/client/actions/gwtui/GwtToolbarGui.java trunk/src/main/java/cc/kune/common/client/actions/gwtui/GwtToolbarSeparatorGui.java trunk/src/main/java/cc/kune/common/client/actions/gxtui/AbstractGxtButtonGui.java trunk/src/main/java/cc/kune/common/client/actions/gxtui/AbstractGxtMenuItemGui.java trunk/src/main/java/cc/kune/common/client/actions/gxtui/GxtMenuSeparatorGui.java trunk/src/main/java/cc/kune/common/client/actions/gxtui/GxtMenuTitleItemGui.java trunk/src/main/java/cc/kune/common/client/actions/gxtui/GxtToolbarGui.java trunk/src/main/java/cc/kune/common/client/actions/gxtui/GxtToolbarSeparatorGui.java trunk/src/main/java/cc/kune/common/client/actions/ui/AbstractGuiItem.java trunk/src/main/java/cc/kune/common/client/actions/ui/descrip/AbstractGuiActionDescrip.java trunk/src/main/java/cc/kune/common/client/actions/ui/descrip/GuiActionDescrip.java trunk/src/main/java/cc/kune/common/client/actions/ui/descrip/MenuDescriptor.java trunk/src/main/java/cc/kune/common/client/actions/ui/descrip/MenuItemDescriptor.java trunk/src/main/java/cc/kune/common/public/gxt/css/gxt-all.css trunk/src/main/java/cc/kune/common/public/kune-common.css trunk/src/main/java/cc/kune/core/client/CoreGinModule.java trunk/src/main/java/cc/kune/core/client/auth/SignInForm.java trunk/src/main/java/cc/kune/core/client/groups/newgroup/NewGroupPresenter.java trunk/src/main/java/cc/kune/core/client/rpcservices/SocialNetServiceHelper.java trunk/src/main/java/cc/kune/core/client/sitebar/SiteUserOptionsPresenter.java trunk/src/main/java/cc/kune/core/client/sitebar/SitebarActionsPresenter.java trunk/src/main/java/cc/kune/core/client/sitebar/SitebarSignInLink.java trunk/src/main/java/cc/kune/core/client/sitebar/SitebarSignOutLink.java trunk/src/main/java/cc/kune/core/client/sn/actions/JoinGroupAction.java trunk/src/main/java/cc/kune/core/client/sn/actions/UnJoinFromCurrentGroupAction.java trunk/src/main/java/cc/kune/core/client/sn/actions/UnJoinFromThisGroupAction.java trunk/src/main/java/cc/kune/core/client/state/Session.java trunk/src/main/java/cc/kune/core/client/state/impl/SessionDefault.java trunk/src/main/webapp/others/splash/style/main.css trunk/src/main/webapp/ws.html trunk/src/test/java/cc/kune/selenium/spaces/SitePageObject.java Log: My Groups menu option (thanks to @sembrestels). Other minor improvements. Added: trunk/img/icons/custom-iconic/ideas.svg =================================================================== --- trunk/img/icons/custom-iconic/ideas.svg (rev 0) +++ trunk/img/icons/custom-iconic/ideas.svg 2012-03-23 17:43:04 UTC (rev 1776) @@ -0,0 +1,83 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Generator: Adobe Illustrator 14.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 43363) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + version="1.1" + id="Layer_1" + x="0px" + y="0px" + width="32" + height="32" + viewBox="0 0 31.999999 32" + xml:space="preserve" + inkscape:version="0.48.2 r9819" + sodipodi:docname="ideas.svg" + inkscape:export-filename="/tmp/location-grey.png" + inkscape:export-xdpi="45" + inkscape:export-ydpi="45"><metadata + id="metadata13"><rdf:RDF><cc:Work + rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs + id="defs11" /><sodipodi:namedview + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1" + objecttolerance="10" + gridtolerance="10" + guidetolerance="10" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:window-width="1078" + inkscape:window-height="919" + id="namedview9" + showgrid="true" + inkscape:zoom="11.594073" + inkscape:cx="42.459611" + inkscape:cy="15.224037" + inkscape:window-x="0" + inkscape:window-y="709" + inkscape:window-maximized="0" + inkscape:current-layer="Layer_1"><inkscape:grid + type="xygrid" + id="grid3009" + empspacing="5" + visible="true" + enabled="true" + snapvisiblegridlinesonly="true" /></sodipodi:namedview> +<g + id="g3"> + <path + style="fill:#231f20" + d="m 16.024,4.007 c 3.32,0 6.019,2.7 6.019,6.017 0,1.894 -0.867,3.636 -2.379,4.773 C 18.042084,16.123195 16.999999,17.4375 16,19 15,17 14,16 12.39,14.797 10.875,13.66 10.008,11.918 10.008,10.024 c 0,-3.317 2.699,-6.017 6.016,-6.017 M 16.024,0 C 10.488,0 6,4.488 6,10.024 c 0,3.28 1.547,6.147 3.977,7.976 1.121,0.844 1.57325,4 2.023,5 0.449749,1 0.92143,-1.477118 4,-2 3,0 4,4 4,2 0,-2 1,-3.531174 2.074,-5 2.43,-1.829 3.977,-4.696 3.977,-7.976 C 26.051,4.488 21.562,0 16.024,0 z" + id="path5" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cscccsccsczczcsc" /> + +</g> +<path + style="fill:#231f20;fill-opacity:1;stroke:#231f20;stroke-width:4;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1" + d="M 11,23.920971 21,21" + id="path3614" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cc" /><path + sodipodi:nodetypes="cc" + inkscape:connector-curvature="0" + id="path4386" + d="M 11,27.920971 21,25" + style="fill:#231f20;fill-opacity:1;stroke:#231f20;stroke-width:4;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1" /><path + sodipodi:type="arc" + style="color:#000000;fill:#231f20;fill-opacity:1;fill-rule:evenodd;stroke:#231f20;stroke-width:4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + id="path4427" + sodipodi:cx="16.427052" + sodipodi:cy="27.5" + sodipodi:rx="2.4270511" + sodipodi:ry="1.5" + d="M 18.854103,27.5 A 2.4270511,1.5 0 1 1 14,27.5 a 2.4270511,1.5 0 1 1 4.854103,0 z" + transform="translate(-0.3901141,1)" /></svg> \ No newline at end of file Modified: trunk/src/main/java/cc/kune/common/client/actions/gwtui/AbstractGwtButtonGui.java =================================================================== --- trunk/src/main/java/cc/kune/common/client/actions/gwtui/AbstractGwtButtonGui.java 2012-03-21 17:42:15 UTC (rev 1775) +++ trunk/src/main/java/cc/kune/common/client/actions/gwtui/AbstractGwtButtonGui.java 2012-03-23 17:43:04 UTC (rev 1776) @@ -19,9 +19,7 @@ */ package cc.kune.common.client.actions.gwtui; -import cc.kune.common.client.actions.Action; import cc.kune.common.client.actions.ActionEvent; -import cc.kune.common.client.actions.KeyStroke; import cc.kune.common.client.actions.ui.AbstractChildGuiItem; import cc.kune.common.client.actions.ui.AbstractGuiItem; import cc.kune.common.client.actions.ui.descrip.ButtonDescriptor; @@ -156,14 +154,6 @@ } @Override - public void setToolTipText(final String tooltipText) { - if (tooltipText != null && !tooltipText.isEmpty()) { - final KeyStroke key = (KeyStroke) descriptor.getValue(Action.ACCELERATOR_KEY); - tooltip = Tooltip.to(button, key == null ? tooltipText : tooltipText + key.toString()); - } - } - - @Override public void setVisible(final boolean visible) { button.setVisible(visible); } @@ -173,15 +163,4 @@ return !descriptor.isChild(); } - @Override - protected void toogleTooltipVisible() { - if (tooltip != null) { - if (tooltip.isVisibleOrWillBe()) { - tooltip.hide(); - } else { - tooltip.showTemporally(); - } - } - } - } Modified: trunk/src/main/java/cc/kune/common/client/actions/gwtui/AbstractGwtMenuGui.java =================================================================== --- trunk/src/main/java/cc/kune/common/client/actions/gwtui/AbstractGwtMenuGui.java 2012-03-21 17:42:15 UTC (rev 1775) +++ trunk/src/main/java/cc/kune/common/client/actions/gwtui/AbstractGwtMenuGui.java 2012-03-23 17:43:04 UTC (rev 1776) @@ -26,6 +26,7 @@ import cc.kune.common.client.actions.ui.ParentWidget; import cc.kune.common.client.actions.ui.descrip.GuiActionDescrip; import cc.kune.common.client.actions.ui.descrip.MenuDescriptor; +import cc.kune.common.client.actions.ui.descrip.MenuItemDescriptor; import cc.kune.common.client.actions.ui.descrip.Position; import cc.kune.common.client.resources.SubMenuResources; @@ -86,17 +87,18 @@ if (popup != null && popup.isShowing()) { popup.hide(); } + } else if (event.getPropertyName().equals(MenuDescriptor.MENU_SHOW)) { + show(); + } else if (event.getPropertyName().equals(MenuDescriptor.MENU_SELECTION_DOWN)) { + menu.moveSelectionDown(); + } else if (event.getPropertyName().equals(MenuDescriptor.MENU_SELECTION_UP)) { + menu.moveSelectionUp(); + } else if (event.getPropertyName().equals(MenuDescriptor.MENU_SELECT_ITEM)) { + final HasMenuItem item = (HasMenuItem) ((MenuItemDescriptor) descriptor.getValue(MenuDescriptor.MENU_SELECT_ITEM)).getValue(MenuItemDescriptor.UI); + menu.selectItem(item.getMenuItem()); } } }); - descriptor.addPropertyChangeListener(new PropertyChangeListener() { - @Override - public void propertyChange(final PropertyChangeEvent event) { - if (event.getPropertyName().equals(MenuDescriptor.MENU_SHOW)) { - show(descriptor.getValue(MenuDescriptor.MENU_SHOW_NEAR_TO)); - } - } - }); return this; } @@ -130,8 +132,12 @@ return !descriptor.isChild(); } - public void show(final Object relative) { - createPopup(); + protected abstract void show(); + + public void showRelativeTo(final Object relative) { + if (popup == null) { + createPopup(); + } if (relative instanceof String) { popup.showRelativeTo(RootPanel.get((String) relative)); } else if (relative instanceof UIObject) { Modified: trunk/src/main/java/cc/kune/common/client/actions/gwtui/AbstractGwtMenuItemGui.java =================================================================== --- trunk/src/main/java/cc/kune/common/client/actions/gwtui/AbstractGwtMenuItemGui.java 2012-03-21 17:42:15 UTC (rev 1775) +++ trunk/src/main/java/cc/kune/common/client/actions/gwtui/AbstractGwtMenuItemGui.java 2012-03-23 17:43:04 UTC (rev 1776) @@ -34,7 +34,6 @@ import cc.kune.common.client.actions.ui.descrip.MenuTitleItemDescriptor; import cc.kune.common.client.errors.UIException; import cc.kune.common.client.resources.CommonResources; -import cc.kune.common.client.tooltip.Tooltip; import cc.kune.common.client.ui.IconLabel; import com.google.gwt.resources.client.ImageResource; @@ -42,10 +41,12 @@ import com.google.gwt.user.client.DOM; import com.google.gwt.user.client.Element; import com.google.gwt.user.client.Event; +import com.google.gwt.user.client.ui.MenuItem; -public abstract class AbstractGwtMenuItemGui extends AbstractGuiItem { +public abstract class AbstractGwtMenuItemGui extends AbstractGuiItem implements HasMenuItem { private IconLabel iconLabel; + private GwtBaseMenuItem item; private final CommonResources res = CommonResources.INSTANCE; @@ -100,7 +101,7 @@ } else { item = new GwtBaseMenuItem("", true); } - + descriptor.putValue(MenuItemDescriptor.UI, this); final String id = descriptor.getId(); if (id != null) { item.ensureDebugId(id); @@ -164,6 +165,11 @@ return item; } + @Override + public MenuItem getMenuItem() { + return item; + } + private AbstractGwtMenuGui getParentMenu(final GuiActionDescrip descriptor) { return ((AbstractGwtMenuGui) descriptor.getParent().getValue(ParentWidget.PARENT_UI)); } @@ -227,16 +233,6 @@ } @Override - protected void setToolTipText(final String text) { - if (text != null) { - final KeyStroke key = (KeyStroke) descriptor.getValue(Action.ACCELERATOR_KEY); - // FIXME This doesn't works... (don't show the tooltip) - Tooltip.to(iconLabel, key == null ? text : text + key.toString()); - layout(); - } - } - - @Override public void setVisible(final boolean visible) { item.setVisible(visible); iconLabel.setVisible(visible); Modified: trunk/src/main/java/cc/kune/common/client/actions/gwtui/GwtIconLabelGui.java =================================================================== --- trunk/src/main/java/cc/kune/common/client/actions/gwtui/GwtIconLabelGui.java 2012-03-21 17:42:15 UTC (rev 1775) +++ trunk/src/main/java/cc/kune/common/client/actions/gwtui/GwtIconLabelGui.java 2012-03-23 17:43:04 UTC (rev 1776) @@ -20,9 +20,7 @@ package cc.kune.common.client.actions.gwtui; import cc.kune.common.client.actions.AbstractAction; -import cc.kune.common.client.actions.Action; import cc.kune.common.client.actions.ActionEvent; -import cc.kune.common.client.actions.KeyStroke; import cc.kune.common.client.actions.ui.AbstractGuiItem; import cc.kune.common.client.actions.ui.ParentWidget; import cc.kune.common.client.actions.ui.descrip.GuiActionDescrip; @@ -97,12 +95,6 @@ } @Override - public void setToolTipText(final String tooltip) { - final KeyStroke key = (KeyStroke) descriptor.getValue(Action.ACCELERATOR_KEY); - iconLabel.setTooltip(key == null ? tooltip : tooltip + key.toString()); - } - - @Override public boolean shouldBeAdded() { return true; } Modified: trunk/src/main/java/cc/kune/common/client/actions/gwtui/GwtMenuGui.java =================================================================== --- trunk/src/main/java/cc/kune/common/client/actions/gwtui/GwtMenuGui.java 2012-03-21 17:42:15 UTC (rev 1775) +++ trunk/src/main/java/cc/kune/common/client/actions/gwtui/GwtMenuGui.java 2012-03-23 17:43:04 UTC (rev 1776) @@ -23,7 +23,6 @@ import cc.kune.common.client.actions.ui.ParentWidget; import cc.kune.common.client.actions.ui.descrip.GuiActionDescrip; import cc.kune.common.client.actions.ui.descrip.MenuDescriptor; -import cc.kune.common.client.tooltip.Tooltip; import cc.kune.common.client.ui.IconLabel; import com.google.gwt.event.dom.client.ClickEvent; @@ -67,7 +66,7 @@ @Override public void onClick(final ClickEvent event) { event.stopPropagation(); - show(button); + show(); } }); final String id = descriptor.getId(); @@ -139,9 +138,9 @@ } @Override - public void setToolTipText(final String tooltip) { + public void setToolTipText(final String tooltipText) { if (notStandAlone) { - Tooltip.to(button, tooltip); + setToolTipTextNextTo(button, tooltipText); } } @@ -154,4 +153,13 @@ } } + @Override + protected void show() { + if (notStandAlone) { + showRelativeTo(button); + } else { + showRelativeTo(descriptor.getValue(MenuDescriptor.MENU_SHOW_NEAR_TO)); + } + } + } Modified: trunk/src/main/java/cc/kune/common/client/actions/gwtui/GwtMenuSeparatorGui.java =================================================================== --- trunk/src/main/java/cc/kune/common/client/actions/gwtui/GwtMenuSeparatorGui.java 2012-03-21 17:42:15 UTC (rev 1775) +++ trunk/src/main/java/cc/kune/common/client/actions/gwtui/GwtMenuSeparatorGui.java 2012-03-23 17:43:04 UTC (rev 1776) @@ -59,10 +59,6 @@ } @Override - protected void setToolTipText(final String text) { - } - - @Override public boolean shouldBeAdded() { return false; } Modified: trunk/src/main/java/cc/kune/common/client/actions/gwtui/GwtSubMenuGui.java =================================================================== --- trunk/src/main/java/cc/kune/common/client/actions/gwtui/GwtSubMenuGui.java 2012-03-21 17:42:15 UTC (rev 1775) +++ trunk/src/main/java/cc/kune/common/client/actions/gwtui/GwtSubMenuGui.java 2012-03-23 17:43:04 UTC (rev 1776) @@ -22,14 +22,17 @@ import cc.kune.common.client.actions.ui.AbstractGuiItem; import cc.kune.common.client.actions.ui.ParentWidget; import cc.kune.common.client.actions.ui.descrip.GuiActionDescrip; +import cc.kune.common.client.actions.ui.descrip.MenuItemDescriptor; import cc.kune.common.client.ui.IconLabel; +import cc.kune.common.shared.utils.TextUtils; import com.google.gwt.user.client.ui.MenuItem; -public class GwtSubMenuGui extends AbstractGwtMenuGui { +public class GwtSubMenuGui extends AbstractGwtMenuGui implements HasMenuItem { private IconLabel iconLabel; private MenuItem item; + private AbstractGwtMenuGui parentMenu; @Override public AbstractGuiItem create(final GuiActionDescrip descriptor) { @@ -38,8 +41,7 @@ item = new MenuItem("", menu); iconLabel = new IconLabel(""); configureItemFromProperties(); - final AbstractGwtMenuGui parentMenu = ((AbstractGwtMenuGui) descriptor.getParent().getValue( - PARENT_UI)); + parentMenu = ((AbstractGwtMenuGui) descriptor.getParent().getValue(PARENT_UI)); final int position = descriptor.getPosition(); if (position == GuiActionDescrip.NO_POSITION) { parentMenu.add(item); @@ -47,9 +49,15 @@ parentMenu.insert(position, item); } descriptor.putValue(ParentWidget.PARENT_UI, this); + descriptor.putValue(MenuItemDescriptor.UI, this); return this; } + @Override + public MenuItem getMenuItem() { + return item; + } + private void layout() { item.setHTML(iconLabel.toString()); } @@ -85,7 +93,9 @@ @Override public void setToolTipText(final String tooltip) { - item.setTitle(tooltip); + if (TextUtils.notEmpty(tooltip)) { + item.setTitle(tooltip); + } } @Override @@ -94,4 +104,10 @@ iconLabel.setVisible(visible); layout(); } + + @Override + protected void show() { + parentMenu.show(); + // FIXME: item.selectItem + } } Modified: trunk/src/main/java/cc/kune/common/client/actions/gwtui/GwtToolbarGui.java =================================================================== --- trunk/src/main/java/cc/kune/common/client/actions/gwtui/GwtToolbarGui.java 2012-03-21 17:42:15 UTC (rev 1775) +++ trunk/src/main/java/cc/kune/common/client/actions/gwtui/GwtToolbarGui.java 2012-03-23 17:43:04 UTC (rev 1776) @@ -83,11 +83,6 @@ } @Override - protected void setToolTipText(final String text) { - toolbar.setTitle(text); - } - - @Override public boolean shouldBeAdded() { return true; } Modified: trunk/src/main/java/cc/kune/common/client/actions/gwtui/GwtToolbarSeparatorGui.java =================================================================== --- trunk/src/main/java/cc/kune/common/client/actions/gwtui/GwtToolbarSeparatorGui.java 2012-03-21 17:42:15 UTC (rev 1775) +++ trunk/src/main/java/cc/kune/common/client/actions/gwtui/GwtToolbarSeparatorGui.java 2012-03-23 17:43:04 UTC (rev 1776) @@ -80,10 +80,6 @@ } @Override - protected void setToolTipText(final String text) { - } - - @Override public void setVisible(final boolean visible) { widget.setVisible(visible); } Added: trunk/src/main/java/cc/kune/common/client/actions/gwtui/HasMenuItem.java =================================================================== --- trunk/src/main/java/cc/kune/common/client/actions/gwtui/HasMenuItem.java (rev 0) +++ trunk/src/main/java/cc/kune/common/client/actions/gwtui/HasMenuItem.java 2012-03-23 17:43:04 UTC (rev 1776) @@ -0,0 +1,7 @@ +package cc.kune.common.client.actions.gwtui; + +import com.google.gwt.user.client.ui.MenuItem; + +public interface HasMenuItem { + MenuItem getMenuItem(); +} Modified: trunk/src/main/java/cc/kune/common/client/actions/gxtui/AbstractGxtButtonGui.java =================================================================== --- trunk/src/main/java/cc/kune/common/client/actions/gxtui/AbstractGxtButtonGui.java 2012-03-21 17:42:15 UTC (rev 1775) +++ trunk/src/main/java/cc/kune/common/client/actions/gxtui/AbstractGxtButtonGui.java 2012-03-23 17:43:04 UTC (rev 1776) @@ -19,9 +19,7 @@ */ package cc.kune.common.client.actions.gxtui; -import cc.kune.common.client.actions.Action; import cc.kune.common.client.actions.ActionEvent; -import cc.kune.common.client.actions.KeyStroke; import cc.kune.common.client.actions.ui.AbstractChildGuiItem; import cc.kune.common.client.actions.ui.AbstractGuiItem; import cc.kune.common.client.actions.ui.ParentWidget; @@ -133,21 +131,6 @@ } @Override - protected void setToolTipText(final String tooltip) { - if (tooltip != null && !tooltip.isEmpty()) { - final KeyStroke key = (KeyStroke) descriptor.getValue(Action.ACCELERATOR_KEY); - if (key == null) { - // button.setToolTip(new GxtDefTooltip(tooltip)); - button.setTitle(tooltip); - } else { - // button.setToolTip(new GxtDefTooltip(tooltip + - // key.toString())); - button.setTitle(tooltip + key.toString()); - } - } - } - - @Override public void setVisible(final boolean visible) { if (button.isRendered()) { // ?? Modified: trunk/src/main/java/cc/kune/common/client/actions/gxtui/AbstractGxtMenuItemGui.java =================================================================== --- trunk/src/main/java/cc/kune/common/client/actions/gxtui/AbstractGxtMenuItemGui.java 2012-03-21 17:42:15 UTC (rev 1775) +++ trunk/src/main/java/cc/kune/common/client/actions/gxtui/AbstractGxtMenuItemGui.java 2012-03-23 17:43:04 UTC (rev 1776) @@ -32,7 +32,6 @@ import cc.kune.common.client.actions.ui.descrip.MenuItemDescriptor; import cc.kune.common.client.actions.ui.descrip.MenuRadioItemDescriptor; import cc.kune.common.client.errors.NotImplementedException; -import cc.kune.common.shared.utils.TextUtils; import com.extjs.gxt.ui.client.event.MenuEvent; import com.extjs.gxt.ui.client.event.SelectionListener; @@ -161,13 +160,6 @@ } @Override - protected void setToolTipText(final String tooltip) { - if (TextUtils.notEmpty(tooltip)) { - item.setToolTip(new GxtDefTooltip(tooltip)); - } - } - - @Override public void setVisible(final boolean visible) { item.setVisible(visible); } Modified: trunk/src/main/java/cc/kune/common/client/actions/gxtui/GxtMenuSeparatorGui.java =================================================================== --- trunk/src/main/java/cc/kune/common/client/actions/gxtui/GxtMenuSeparatorGui.java 2012-03-21 17:42:15 UTC (rev 1775) +++ trunk/src/main/java/cc/kune/common/client/actions/gxtui/GxtMenuSeparatorGui.java 2012-03-23 17:43:04 UTC (rev 1776) @@ -65,10 +65,6 @@ } @Override - protected void setToolTipText(final String text) { - } - - @Override public boolean shouldBeAdded() { return false; } Modified: trunk/src/main/java/cc/kune/common/client/actions/gxtui/GxtMenuTitleItemGui.java =================================================================== --- trunk/src/main/java/cc/kune/common/client/actions/gxtui/GxtMenuTitleItemGui.java 2012-03-21 17:42:15 UTC (rev 1775) +++ trunk/src/main/java/cc/kune/common/client/actions/gxtui/GxtMenuTitleItemGui.java 2012-03-23 17:43:04 UTC (rev 1776) @@ -87,7 +87,7 @@ } @Override - protected void setToolTipText(final String tooltip) { + public void setToolTipText(final String tooltip) { if (TextUtils.notEmpty(tooltip)) { item.setToolTip(new GxtDefTooltip(tooltip)); } Modified: trunk/src/main/java/cc/kune/common/client/actions/gxtui/GxtToolbarGui.java =================================================================== --- trunk/src/main/java/cc/kune/common/client/actions/gxtui/GxtToolbarGui.java 2012-03-21 17:42:15 UTC (rev 1775) +++ trunk/src/main/java/cc/kune/common/client/actions/gxtui/GxtToolbarGui.java 2012-03-23 17:43:04 UTC (rev 1776) @@ -97,9 +97,4 @@ protected void setText(final String text) { } - @Override - protected void setToolTipText(final String text) { - toolbar.setTitle(text); - } - } Modified: trunk/src/main/java/cc/kune/common/client/actions/gxtui/GxtToolbarSeparatorGui.java =================================================================== --- trunk/src/main/java/cc/kune/common/client/actions/gxtui/GxtToolbarSeparatorGui.java 2012-03-21 17:42:15 UTC (rev 1775) +++ trunk/src/main/java/cc/kune/common/client/actions/gxtui/GxtToolbarSeparatorGui.java 2012-03-23 17:43:04 UTC (rev 1776) @@ -77,11 +77,6 @@ } @Override - protected void setToolTipText(final String text) { - // do nothing - } - - @Override public boolean shouldBeAdded() { return false; } Modified: trunk/src/main/java/cc/kune/common/client/actions/ui/AbstractGuiItem.java =================================================================== --- trunk/src/main/java/cc/kune/common/client/actions/ui/AbstractGuiItem.java 2012-03-21 17:42:15 UTC (rev 1775) +++ trunk/src/main/java/cc/kune/common/client/actions/ui/AbstractGuiItem.java 2012-03-23 17:43:04 UTC (rev 1776) @@ -22,19 +22,23 @@ import cc.kune.common.client.actions.AbstractAction; import cc.kune.common.client.actions.Action; import cc.kune.common.client.actions.ActionEvent; +import cc.kune.common.client.actions.KeyStroke; import cc.kune.common.client.actions.PropertyChangeEvent; import cc.kune.common.client.actions.PropertyChangeListener; import cc.kune.common.client.actions.ui.descrip.DropTarget; import cc.kune.common.client.actions.ui.descrip.GuiActionDescrip; import cc.kune.common.client.errors.NotImplementedException; +import cc.kune.common.client.tooltip.Tooltip; import cc.kune.common.shared.utils.TextUtils; import com.google.gwt.resources.client.ImageResource; import com.google.gwt.user.client.ui.Composite; +import com.google.gwt.user.client.ui.Widget; public abstract class AbstractGuiItem extends Composite implements GuiBinding { protected GuiActionDescrip descriptor; + protected Tooltip tooltip; public AbstractGuiItem() { super(); @@ -116,13 +120,13 @@ // the action, if not we only pass the menuitem return descriptor.hasTarget() ? descriptor.getTarget() : descriptor.isChild() ? descriptor.getParent().getTarget() : ActionEvent.NO_TARGET; - }; + } private void setDropTarget(final DropTarget dropTarget) { if (dropTarget != null) { dropTarget.init(this); } - } + }; protected abstract void setEnabled(boolean enabled); @@ -170,8 +174,20 @@ protected abstract void setText(String text); - protected abstract void setToolTipText(String text); + public void setToolTipText(final String tooltipText) { + if (shouldBeAdded()) { + setToolTipTextNextTo(getWidget(), tooltipText); + } + } + public void setToolTipTextNextTo(final Widget widget, final String tooltipText) { + if (tooltipText != null && !tooltipText.isEmpty()) { + final KeyStroke key = (KeyStroke) descriptor.getValue(Action.ACCELERATOR_KEY); + final String compountTooltip = key == null ? tooltipText : tooltipText + key.toString(); + tooltip = Tooltip.to(widget, compountTooltip); + } + } + private void setVisible(final Boolean visible) { // if you have problems with setVisible check if the GuiItem calls // configureItemFromProperties on creation @@ -183,8 +199,13 @@ return true; } - protected void toogleTooltipVisible() { - // do nothing by default - return; + public void toogleTooltipVisible() { + if (tooltip != null) { + if (tooltip.isVisibleOrWillBe()) { + tooltip.hide(); + } else { + tooltip.showTemporally(); + } + } } } Modified: trunk/src/main/java/cc/kune/common/client/actions/ui/descrip/AbstractGuiActionDescrip.java =================================================================== --- trunk/src/main/java/cc/kune/common/client/actions/ui/descrip/AbstractGuiActionDescrip.java 2012-03-21 17:42:15 UTC (rev 1775) +++ trunk/src/main/java/cc/kune/common/client/actions/ui/descrip/AbstractGuiActionDescrip.java 2012-03-23 17:43:04 UTC (rev 1776) @@ -27,6 +27,8 @@ import cc.kune.common.client.actions.ActionEvent; import cc.kune.common.client.actions.ChangeableObject; import cc.kune.common.client.actions.KeyStroke; +import cc.kune.common.client.actions.Shortcut; +import cc.kune.common.client.shortcuts.GlobalShortcutRegister; import com.google.gwt.i18n.client.HasDirection.Direction; @@ -36,7 +38,7 @@ public abstract class AbstractGuiActionDescrip extends ChangeableObject implements GuiActionDescrip { /** The action. */ - private final AbstractAction action; + private AbstractAction action; private final List<GuiAddCondition> addConditions; @@ -178,6 +180,10 @@ return result; } + public void setAction(final AbstractAction action) { + this.action = action; + } + @Override public void setDropTarget(final DropTarget dropTarget) { putValue(DROP_TARGET, dropTarget); @@ -258,10 +264,22 @@ putValue(VISIBLE, visible); } + /** + * Toggle the value of a boolean property + * + * @param property + * the property + */ + protected void toggle(final String property) { + // Action detects changes in values, then we fire a change (whatever) to + // fire this method in the UI + final Object value = getValue(property); + putValue(property, value == null ? true : !((Boolean) value)); + } + @Override public void toggleTooltipVisible() { - final Object value = getValue(TOOGLE_TOOLTIP_VISIBLE); - putValue(TOOGLE_TOOLTIP_VISIBLE, value == null ? true : !(Boolean) value); + toggle(TOOGLE_TOOLTIP_VISIBLE); } @Override @@ -278,6 +296,12 @@ } @Override + public GuiActionDescrip withAction(final AbstractAction action) { + setAction(action); + return this; + } + + @Override public GuiActionDescrip withIcon(final Object icon) { super.putValue(Action.SMALL_ICON, icon); return this; @@ -308,12 +332,26 @@ } @Override - public GuiActionDescrip withShortcut(final KeyStroke shortcut) { + public GuiActionDescrip withShortcut(final KeyStroke shortcut, final GlobalShortcutRegister register) { putValue(Action.ACCELERATOR_KEY, shortcut); + register.put(shortcut, action); return this; } @Override + public GuiActionDescrip withShortcut(final String keys, final GlobalShortcutRegister register) { + final boolean hasCtrl = keys.contains("Ctrl"); + final boolean hasAlt = keys.contains("Alt"); + final boolean hasMeta = keys.contains("Meta"); + final boolean hasShift = keys.contains("Shift"); + final Character key = keys.charAt(keys.length() - 1); + final KeyStroke shortcut = Shortcut.getShortcut(hasCtrl, hasAlt, hasShift, hasMeta, key); + putValue(Action.ACCELERATOR_KEY, shortcut); + register.put(shortcut, action); + return this; + } + + @Override public GuiActionDescrip withStyles(final String styles) { setStyles(styles); return this; Modified: trunk/src/main/java/cc/kune/common/client/actions/ui/descrip/GuiActionDescrip.java =================================================================== --- trunk/src/main/java/cc/kune/common/client/actions/ui/descrip/GuiActionDescrip.java 2012-03-21 17:42:15 UTC (rev 1775) +++ trunk/src/main/java/cc/kune/common/client/actions/ui/descrip/GuiActionDescrip.java 2012-03-23 17:43:04 UTC (rev 1776) @@ -23,83 +23,246 @@ import cc.kune.common.client.actions.ActionEvent; import cc.kune.common.client.actions.KeyStroke; import cc.kune.common.client.actions.PropertyChangeListener; +import cc.kune.common.client.shortcuts.GlobalShortcutRegister; import com.google.gwt.i18n.client.HasDirection.Direction; +// TODO: Auto-generated Javadoc +/** + * The Interface GuiActionDescrip. + */ public interface GuiActionDescrip { + /** The Constant DROP_TARGET. */ public static final String DROP_TARGET = "dropTarget"; + /** The Constant NO_PARENT. */ public static final AbstractGuiActionDescrip NO_PARENT = new NoParentGuiActionDescriptor(); + /** The Constant NO_POSITION. */ public static final int NO_POSITION = -1; /** - * {@link #TARGET} is used to associate a {@link #AbstractGuiActionDescrip} - * with an object like groups, group names, users, and so on, and used to - * execute actions against these targets + * The Constant TARGET. {@link #TARGET} is used to associate a + * {@link #AbstractGuiActionDescrip} with an object like groups, group names, + * users, and so on, and used to execute actions against these targets */ public static final String TARGET = "target"; + /** The Constant TOOGLE_TOOLTIP_VISIBLE. */ public static final String TOOGLE_TOOLTIP_VISIBLE = "toogle-tooltip-visible"; + + /** The Constant VISIBLE. */ public static final String VISIBLE = "visibleprop"; + /** + * Adds the. + * + * @param addCondition + * the add condition + */ void add(final GuiAddCondition addCondition); + /** + * Adds the property change listener. + * + * @param listener + * the listener + */ void addPropertyChangeListener(final PropertyChangeListener listener); + /** + * Fire. + * + * @param event + * the event + */ void fire(final ActionEvent event); + /** + * Gets the action. + * + * @return the action + */ AbstractAction getAction(); + /** + * Gets the direction. + * + * @return the direction + */ Direction getDirection(); + /** + * Gets the id. + * + * @return the id + */ String getId(); + /** + * Gets the keys. + * + * @return the keys + */ Object[] getKeys(); + /** + * Gets the location. + * + * @return the location + */ String getLocation(); + /** + * Gets the parent. + * + * @return the parent + */ GuiActionDescrip getParent(); + /** + * Gets the position. + * + * @return the position + */ int getPosition(); + /** + * Gets the property change listeners. + * + * @return the property change listeners + */ PropertyChangeListener[] getPropertyChangeListeners(); + /** + * Gets the target. + * + * @return the target + */ Object getTarget(); + /** + * Gets the type. + * + * @return the type + */ Class<?> getType(); + /** + * Gets the value. + * + * @param key + * the key + * @return the value + */ Object getValue(final String key); + /** + * Checks for target. + * + * @return true, if successful + */ boolean hasTarget(); + /** + * Checks if is child. + * + * @return true, if is child + */ boolean isChild(); + /** + * Checks if is enabled. + * + * @return true, if is enabled + */ boolean isEnabled(); + /** + * Checks if is rTL. + * + * @return true, if is rTL + */ boolean isRTL(); + /** + * Checks if is visible. + * + * @return true, if is visible + */ boolean isVisible(); + /** + * Must be added. + * + * @return true, if successful + */ boolean mustBeAdded(); + /** + * Put value. + * + * @param key + * the key + * @param value + * the value + */ public void putValue(final String key, final Object value); + /** + * Removes the property change listener. + * + * @param listener + * the listener + */ void removePropertyChangeListener(final PropertyChangeListener listener); + /** + * Sets the drop target. + * + * @param dropTarget + * the new drop target + */ void setDropTarget(DropTarget dropTarget); + /** + * Sets the enabled. + * + * @param enabled + * the new enabled + */ void setEnabled(final boolean enabled); + /** + * Sets the id. + * + * @param id + * the new id + */ void setId(final String id); + /** + * Sets the location. + * + * @param location + * the new location + */ void setLocation(final String location); + /** + * Sets the parent. + * + * @param parent + * the new parent + */ void setParent(final GuiActionDescrip parent); /** + * Sets the parent. + * * @param parent + * the parent * @param addToParent * if yes, the action will be added directly to the parent, useful to * attach menu items (or other child actions) directly to its parent @@ -108,42 +271,156 @@ */ void setParent(GuiActionDescrip parent, boolean addToParent); + /** + * Sets the position. + * + * @param position + * the new position + */ void setPosition(final int position); + /** + * Sets the rTL. + * + * @param isRTL + * the new rTL + */ void setRTL(final boolean isRTL); + /** + * Sets the styles. + * + * @param styles + * the new styles + */ void setStyles(final String styles); + /** + * Sets the target. + * + * @param object + * the new target + */ void setTarget(final Object object); + /** + * Sets the visible. + * + * @param visible + * the new visible + */ void setVisible(final boolean visible); + /** + * Toggle tooltip visible. + */ void toggleTooltipVisible(); + /** + * Toogle visible. + */ void toogleVisible(); + /** + * With action. + * + * @param action + * the action + * @return the gui action descrip + */ + GuiActionDescrip withAction(AbstractAction action); + + /** + * With icon. + * + * @param icon + * the icon + * @return the gui action descrip + */ GuiActionDescrip withIcon(Object icon); + /** + * With icon cls. + * + * @param icon + * the icon + * @return the gui action descrip + */ GuiActionDescrip withIconCls(String icon); + /** + * With id. + * + * @param id + * the id + * @return the gui action descrip + */ GuiActionDescrip withId(String id); + /** + * With parent. + * + * @param parent + * the parent + * @return the gui action descrip + */ GuiActionDescrip withParent(GuiActionDescrip parent); /** + * With parent. + * * @param parent + * the parent * @param addToParent * if yes, the action will be added directly to the parent, useful to * attach menu items (or other child actions) directly to its parent * without any other check (for instance session status, etc) + * @return the gui action descrip */ GuiActionDescrip withParent(GuiActionDescrip parent, boolean addToParent); - GuiActionDescrip withShortcut(KeyStroke keystroke); + /** + * With shortcut. + * + * @param keystroke + * the keystroke + * @return the gui action descrip + */ + GuiActionDescrip withShortcut(KeyStroke keystroke, GlobalShortcutRegister register); + /** + * With shortcut. + * + * @param keys + * the keys (for instance "Ctrl+A") + * @return the gui action descrip + */ + GuiActionDescrip withShortcut(String keys, GlobalShortcutRegister register); + + /** + * With styles. + * + * @param styles + * the styles + * @return the gui action descrip + */ GuiActionDescrip withStyles(String styles); + /** + * With text. + * + * @param text + * the text + * @return the gui action descrip + */ GuiActionDescrip withText(String text); + /** + * With tool tip. + * + * @param tooltip + * the tooltip + * @return the gui action descrip + */ GuiActionDescrip withToolTip(String tooltip); } Modified: trunk/src/main/java/cc/kune/common/client/actions/ui/descrip/MenuDescriptor.java =================================================================== --- trunk/src/main/java/cc/kune/common/client/actions/ui/descrip/MenuDescriptor.java 2012-03-21 17:42:15 UTC (rev 1775) +++ trunk/src/main/java/cc/kune/common/client/actions/ui/descrip/MenuDescriptor.java 2012-03-23 17:43:04 UTC (rev 1776) @@ -31,7 +31,10 @@ public static final String MENU_HIDE = "hidemenu"; public static final String MENU_ONHIDE = "menuonhide"; public static final String MENU_ONSHOW = "menuonshow"; - protected static final String MENU_RIGHTICON = "menurighicon"; + protected static final String MENU_RIGHTICON = "menurighticon"; + public static final String MENU_SELECT_ITEM = "menuselitem"; + public static final String MENU_SELECTION_DOWN = "menuseldown"; + public static final String MENU_SELECTION_UP = "menuselup"; public static final String MENU_SHOW = "showmenu"; public static final String MENU_SHOW_NEAR_TO = "showmenunearto"; protected static final String MENU_STANDALONE = "menustandalone"; @@ -51,6 +54,8 @@ putValue(MENU_SHOW, false); putValue(MENU_CLEAR, false); putValue(MENU_STANDALONE, false); + putValue(MENU_SELECTION_DOWN, false); + putValue(MENU_SELECTION_UP, false); } public MenuDescriptor(final String text) { @@ -75,9 +80,7 @@ @Override public void clear() { - // Action detects changes in values, then we fire a change (whatever) to - // fire this method in the UI - putValue(MENU_CLEAR, !((Boolean) getValue(MENU_CLEAR))); + toggle(MENU_CLEAR); super.clear(); } @@ -91,13 +94,25 @@ } public void hide() { - putValue(MENU_HIDE, !((Boolean) getValue(MENU_HIDE))); + toggle(MENU_HIDE); } public boolean isStandalone() { return (Boolean) super.getValue(MENU_STANDALONE); } + public void moveSelectionDown() { + toggle(MENU_SELECTION_DOWN); + } + + public void moveSelectionUp() { + toggle(MENU_SELECTION_UP); + } + + public void selectMenu(final MenuItemDescriptor item) { + putValue(MENU_SELECT_ITEM, item); + } + public void setMenuPosition(final Position position) { putValue(MENU_SHOW_NEAR_TO, position); } @@ -125,7 +140,7 @@ * Show the menu (remember to set the menu position before) */ public void show() { - putValue(MENU_SHOW, !((Boolean) getValue(MENU_SHOW))); + toggle(MENU_SHOW); } /** Modified: trunk/src/main/java/cc/kune/common/client/actions/ui/descrip/MenuItemDescriptor.java =================================================================== --- trunk/src/main/java/cc/kune/common/client/actions/ui/descrip/MenuItemDescriptor.java 2012-03-21 17:42:15 UTC (rev 1775) +++ trunk/src/main/java/cc/kune/common/client/actions/ui/descrip/MenuItemDescriptor.java 2012-03-23 17:43:04 UTC (rev 1776) @@ -23,6 +23,8 @@ public class MenuItemDescriptor extends AbstractGuiActionDescrip { + public static String UI = "menuitem-ui"; + public static MenuItemDescriptor build(final AbstractAction action) { return new MenuItemDescriptor(action); } Added: trunk/src/main/java/cc/kune/common/client/actions/ui/descrip/MenuShowAction.java =================================================================== --- trunk/src/main/java/cc/kune/common/client/actions/ui/descrip/MenuShowAction.java (rev 0) +++ trunk/src/main/java/cc/kune/common/client/actions/ui/descrip/MenuShowAction.java 2012-03-23 17:43:04 UTC (rev 1776) @@ -0,0 +1,23 @@ +package cc.kune.common.client.actions.ui.descrip; + +import cc.kune.common.client.actions.AbstractExtendedAction; +import cc.kune.common.client.actions.ActionEvent; + +import com.google.inject.Singleton; + +@Singleton +public class MenuShowAction extends AbstractExtendedAction { + + private MenuDescriptor menu; + + @Override + public void actionPerformed(final ActionEvent event) { + menu.show(); + menu.moveSelectionDown(); + } + + public void setMenu(final MenuDescriptor menu) { + this.menu = menu; + } + +} \ No newline at end of file Added: trunk/src/main/java/cc/kune/common/client/log/EventBusWithoutLogging.java =================================================================== --- trunk/src/main/java/cc/kune/common/client/log/EventBusWithoutLogging.java (rev 0) +++ trunk/src/main/java/cc/kune/common/client/log/EventBusWithoutLogging.java 2012-03-23 17:43:04 UTC (rev 1776) @@ -0,0 +1,30 @@ +/* + * + * Copyright (C) 2007-2011 The kune development team (see CREDITS for details) + * This file is part of kune. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ +package cc.kune.common.client.log; + +import com.google.gwt.event.shared.GwtEvent; +import com.google.gwt.event.shared.SimpleEventBus; + +public class EventBusWithoutLogging extends SimpleEventBus { + @Override + public void fireEvent(final GwtEvent<?> event) { + super.fireEvent(event); + } +} Modified: trunk/src/main/java/cc/kune/common/public/gxt/css/gxt-all.css =================================================================== --- trunk/src/main/java/cc/kune/common/public/gxt/css/gxt-all.css 2012-03-21 17:42:15 UTC (rev 1775) +++ trunk/src/main/java/cc/kune/common/public/gxt/css/gxt-all.css 2012-03-23 17:43:04 UTC (rev 1776) @@ -1,4 +1,4 @@ -html,body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,form,fieldset,input,p,blockquote,th,td{margin:0;padding:0;}img,body,html{border:0;}address,caption,cite,code,dfn,em,strong,th,var{font-style:normal;font-weight:normal;}ol,ul {list-style:none;}caption,th {text-align:left;}h1,h2,h3,h4,h5,h6{font-size:100%;}q:before,q:after{content:'';} +html,body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,form,fieldset,input,p,blockquote,th,td{margin:0;padding:0;}img,body,html{border:0;}address,caption,cite,code,dfn,em,strong,th,var{font-style:normal;font-weight:normal;}ol,ul {list-style:none;}caption,th {text-align:left;}h1,h2,h3,h4,h5,h6{/* font-size:100%; */}q:before,q:after{content:'';} .x-contrast-test { background: url(../images/default/s.gif); visibility: hidden; Modified: trunk/src/main/java/cc/kune/common/public/kune-common.css =================================================================== --- trunk/src/main/java/cc/kune/common/public/kune-common.css 2012-03-21 17:42:15 UTC (rev 1775) +++ trunk/src/main/java/cc/kune/common/public/kune-common.css 2012-03-23 17:43:04 UTC (rev 1776) @@ -1,10 +1,10 @@ /* Here the styles of cc.kune.commom (reused by other projects like gadgets and so on) */ .k-popup-top-centered { - + } .k-popup-bottom-centered { /* z-index:100000; */ - + } .k-floatleft,.k-fl { @@ -21,24 +21,24 @@ } .k-opacity80 { - kfilter: alpha(opacity = - 80); + kfilter: alpha(opacity = + 80); -moz-opacity: 0.80; -khtml-opacity: 0.80; opacity: 0.80; } .k-opacity90 { - kfilter: alpha(opacity = - 90); + kfilter: alpha(opacity = + 90); -moz-opacity: 0.90; -khtml-opacity: 0.90; opacity: 0.90; } .k-opacity95 { - kfilter: alpha(opacity = - 95); + kfilter: alpha(opacity = + 95); -moz-opacity: 0.95; -khtml-opacity: 0.95; opacity: 0.95; @@ -46,8 +46,8 @@ .gwt-PopupPanelGlass { background-color: #f7ebe3 !important; - kfilter: alpha(opacity = - 68) !important; + kfilter: alpha(opacity = + 68) !important; -moz-opacity: 0.68 !important; -khtml-opacity: 0.68 !important; opacity: 0.68 !important; @@ -166,7 +166,7 @@ } .k-dialog-btn-area div { /* margin: 10px */ - + } .k-dialog-btn { @@ -185,13 +185,13 @@ } .k-dialog-close-btn-dialog { - top: -26px; + top: -26px; left: 1px; } .k-dialog-close-btn-normal { top: 10px; - left: 0px; + left: 0px; } .k-dialog-firstBtn { @@ -316,7 +316,7 @@ -webkit-border-bottom-left-radius: 5px; -moz-border-radius-bottomleft: 5px; border-bottom-left-radius: 5px; - kfilter: alpha(opacity = 90); + kfilter: alpha(opacity = 90); -moz-opacity: 0.90; -khtml-opacity: 0.90; opacity: 0.90; @@ -498,7 +498,7 @@ .k-iconlabel-right { float: left; - /* margin-left: 5px; */ + /* margin-left: 5px; */ } .k-menuimtem-title { @@ -514,7 +514,6 @@ margin-top: 4px; } - .gwt-MenuBar-vertical .subMenuIcon-selected { background: none repeat scroll 0 0 #808080; } @@ -569,13 +568,13 @@ _border-left-color: pink; _border-bottom-color: pink; _border-right-color: pink; - _filter: chroma(color = pink); + _filter: chroma(color = pink); } /* end tooltip */ /* tabbar */ .gwt-DecoratedTabBar { - + } .gwt-DecoratedTabBar .gwt-TabBarFirst { @@ -583,7 +582,7 @@ } .gwt-DecoratedTabBar .gwt-TabBarRest { - + } .gwt-DecoratedTabBar .gwt-TabBarItem { @@ -725,4 +724,36 @@ -webkit-border-radius: 3px; border-radius: 3px; padding: 3px; -} \ No newline at end of file +} + +/* Menu separators */ + +.gwt-MenuBar-horizontal .gwt-MenuItemSeparator { + width: 1px; + padding: 0px; + margin: 0px; + border: 0px; + border-left: 1px solid #888888; + background: white; +} + +.gwt-MenuBar-horizontal .gwt-MenuItemSeparator .menuSeparatorInner { + width: 1px; + height: 1px; + background: white; +} + +.gwt-MenuBar-vertical .gwt-MenuItemSeparator { + padding: 2px 0px; +} + +.gwt-MenuBar-vertical .gwt-MenuItemSeparator .menuSeparatorInner { + height: 1px; + padding: 0px; + border: 0px; + border-top: 1px solid #777777; + background: #ddddee; + overflow: hidden; +} + +/* END Menu separators */ \ No newline at end of file Modified: trunk/src/main/java/cc/kune/core/client/CoreGinModule.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/CoreGinModule.java 2012-03-21 17:42:15 UTC (rev 1775) +++ trunk/src/main/java/cc/kune/core/client/CoreGinModule.java 2012-03-23 17:43:04 UTC (rev 1776) @@ -32,6 +32,8 @@ import cc.kune.core.client.actions.ActionRegistryByType; import cc.kune.core.client.actions.xml.XMLActionsParser; import cc.kune.core.client.auth.AnonUsersManager; +import cc.kune.core.client.auth.LoginRememberManager; +import cc.kune.core.client.auth.LoginRememberManagerImpl; import cc.kune.core.client.auth.Register; import cc.kune.core.client.auth.RegisterPanel; import cc.kune.core.client.auth.RegisterPresenter; @@ -41,8 +43,6 @@ import cc.kune.core.client.auth.SignInPresenter; import cc.kune.core.client.auth.SignInPresenter.SignInView; import cc.kune.core.client.auth.UserFieldFactory; -import cc.kune.core.client.auth.LoginRememberManager; -import cc.kune.core.client.auth.LoginRememberManagerImpl; import cc.kune.core.client.cookies.CookiesManager; import cc.kune.core.client.cookies.CookiesManagerImpl; import cc.kune.core.client.dnd.KuneDragController; @@ -69,12 +69,13 @@ import cc.kune.core.client.rpcservices.ContentServiceHelper; import cc.kune.core.client.rpcservices.SocialNetServiceHelper; import cc.kune.core.client.sitebar.ErrorsDialog; +import cc.kune.core.client.sitebar.MyGroupsMenu; import cc.kune.core.client.sitebar.SiteUserOptions; import cc.kune.core.client.sitebar.SiteUserOptionsPresenter; import cc.kune.core.client.sitebar.SitebarActions; import cc.kune.core.client.sitebar.SitebarActionsPanel; import cc.kune.core.client.sitebar.SitebarActionsPresenter; -import cc.kune.core.client.sitebar.SitebarNewGroupLink; +import cc.kune.core.client.sitebar.SitebarGroupsLink; import cc.kune.core.client.sitebar.SitebarSignInLink; import cc.kune.core.client.sitebar.SitebarSignOutLink; import cc.kune.core.client.sitebar.SitebarSignOutLink.BeforeSignOut; @@ -237,9 +238,10 @@ s(ContentServiceHelper.class); s(SocialNetServiceHelper.class); + s(MyGroupsMenu.class); s(SiteUserOptionsPresenter.class); s(SiteUserOptions.class, SiteUserOptionsPresenter.class); - s(SitebarNewGroupLink.class); + s(SitebarGroupsLink.class); s(SitebarSignInLink.class); s(SitebarSignOutLink.class); @@ -247,5 +249,4 @@ s(XMLActionsParser.class); s(Services.class, GWTServices.class); } - } Modified: trunk/src/main/java/cc/kune/core/client/auth/SignInForm.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/auth/SignInForm.java 2012-03-21 17:42:15 UTC (rev 1775) +++ trunk/src/main/java/cc/kune/core/client/auth/SignInForm.java 2012-03-23 17:43:04 UTC (rev 1776) @@ -50,6 +50,15 @@ * >this</a>. */ public SignInForm(final I18nTranslationService i18n) { + final Listener<FieldEvent> enterListener = new Listener<FieldEvent>() { + @Override + public void handleEvent(final FieldEvent fe) { + if (fe.getEvent().getKeyCode() == 13) { + onAcceptCallback.onSuccess(); + } + } + }; + super.addStyleName("kune-Margin-Large-trbl"); loginNickOrEmailField = new TextField<String>() { @Override @@ -70,6 +79,7 @@ loginNickOrEmailField.render(RootPanel.get(LOGIN_ID).getElement()); ComponentHelper.doAttach(loginNickOrEmailField); super.add(loginNickOrEmailField); + loginNickOrEmailField.addListener(Events.OnKeyPress, enterListener); loginPassField = new TextField<String>() { @Override @@ -91,15 +101,7 @@ loginPassField.setTabIndex(101); loginPassField.render(RootPanel.get(LOGIN_ID).getElement()); ComponentHelper.doAttach(loginPassField); - - loginPassField.addListener(Events.OnKeyPress, new Listener<FieldEvent>() { - @Override - public void handleEvent(final FieldEvent fe) { - if (fe.getEvent().getKeyCode() == 13) { - onAcceptCallback.onSuccess(); - } - } - }); + loginPassField.addListener(Events.OnKeyPress, enterListener); super.add(loginPassField); } Added: trunk/src/main/java/cc/kune/core/client/events/MyGroupsChangedEvent.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/events/MyGroupsChangedEvent.java (rev 0) +++ trunk/src/main/java/cc/kune/core/client/events/MyGroupsChangedEvent.java 2012-03-23 17:43:04 UTC (rev 1776) @@ -0,0 +1,55 @@ +package cc.kune.core.client.events; + +import com.google.gwt.event.shared.EventHandler; +import com.google.gwt.event.shared.GwtEvent; +import com.google.gwt.event.shared.HandlerRegistration; +import com.google.gwt.event.shared.HasHandlers; + +public class MyGroupsChangedEvent extends GwtEvent<MyGroupsChangedEvent.MyGroupsChangedHandler> { + + public interface HasMyGroupsChangedHandlers extends HasHandlers { + HandlerRegistration addMyGroupsChangedHandler(MyGroupsChangedHandler handler); + } + + public interface MyGroupsChangedHandler extends EventHandler { + public void onMyGroupsChanged(MyGroupsChangedEvent event); + } + + private static final Type<MyGroupsChangedHandler> TYPE = new Type<MyGroupsChangedHandler>(); + + public static void fire(final HasHandlers source) { + source.fireEvent(new MyGroupsChangedEvent()); + } + + public static Type<MyGroupsChangedHandler> getType() { + return TYPE; + } + + public MyGroupsChangedEvent() { + } + + @Override + protected void dispatch(final MyGroupsChangedHandler handler) { + handler.onMyGroupsChanged(this); + } + + @Override + public boolean equals(final Object obj) { + return super.equals(obj); + } + + @Override + public Type<MyGroupsChangedHandler> getAssociatedType() { + return TYPE; + } + + @Override + public int hashCode() { + return super.hashCode(); + } + + @Override + public String toString() { + return "MyGroupsChangedEvent[" + "]"; + } +} 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 2012-03-21 17:42:15 UTC (rev 1775) +++ trunk/src/main/java/cc/kune/core/client/groups/newgroup/NewGroupPresenter.java 2012-03-23 17:43:04 UTC (rev 1776) @@ -26,6 +26,7 @@ import cc.kune.core.client.auth.SignIn; import cc.kune.core.client.errors.GroupLongNameInUseException; import cc.kune.core.client.errors.GroupShortNameInUseException; +import cc.kune.core.client.events.MyGroupsChangedEvent; import cc.kune.core.client.resources.CoreMessages; import cc.kune.core.client.rpcservices.AsyncCallbackSimple; import cc.kune.core.client.rpcservices.GroupServiceAsync; @@ -192,6 +193,9 @@ getView().hide(); reset(); getView().unMask(); + // Add the new group to your info + session.getCurrentUserInfo().getGroupsIsAdmin().add(state.getGroup()); + MyGroupsChangedEvent.fire(getEventBus()); Scheduler.get().scheduleDeferred(new ScheduledCommand() { @Override public void execute() { @@ -201,7 +205,8 @@ @Override public void run() { ShowHelpContainerEvent.fire(getEventBus(), state.getStateToken().getTool()); - }}.schedule(2000); + } + }.schedule(2000); } }); } Added: trunk/src/main/java/cc/kune/core/client/rpcservices/GroupServiceHelper.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/rpcservices/GroupServiceHelper.java (rev 0) +++ trunk/src/main/java/cc/kune/core/client/rpcservices/GroupServiceHelper.java 2012-03-23 17:43:04 UTC (rev 1776) @@ -0,0 +1,15 @@ +package cc.kune.core.client.rpcservices; + +import com.google.inject.Inject; +import com.google.inject.Provider; + +public class GroupServiceHelper { + + @SuppressWarnings("unused") + private final Provider<GroupServiceAsync> groupService; + + @Inject + public GroupServiceHelper(final Provider<GroupServiceAsync> groupService) { + this.groupService = groupService; + } +} Modified: trunk/src/main/java/cc/kune/core/client/rpcservices/SocialNetServiceHelper.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/rpcservices/SocialNetServiceHelper.java 2012-03-21 17:42:15 UTC (rev 1775) +++ trunk/src/main/java/cc/kune/core/client/rpcservices/SocialNetServiceHelper.java 2012-03-23 17:43:04 UTC (rev 1776) @@ -1,16 +1,21 @@ package cc.kune.core.client.rpcservices; import cc.kune.common.client.notify.NotifyUser; +import cc.kune.common.client.utils.OnAcceptCallback; import cc.kune.common.shared.i18n.I18nTranslationService; +import cc.kune.core.client.events.MyGroupsChangedEvent; import cc.kune.core.client.state.Session; import cc.kune.core.client.state.StateManager; +import cc.kune.core.shared.domain.utils.StateToken; import cc.kune.core.shared.dto.SocialNetworkDataDTO; +import com.google.gwt.event.shared.EventBus; import com.google.inject.Inject; import com.google.inject.Provider; public class SocialNetServiceHelper { + private final EventBus eventbus; private final I18nTranslationService i18n; private final Session session; private final Provider<SocialNetServiceAsync> snServiceProvider; @@ -18,9 +23,11 @@ @Inject public SocialNetServiceHelper(final StateManager stateManager, final Session session, - final I18nTranslationService i18n, final Provider<SocialNetServiceAsync> snServiceProvider) { + final EventBus eventbus, final I18nTranslationService i18n, + final Provider<SocialNetServiceAsync> snServiceProvider) { this.stateManager = stateManager; this.session = session; + this.eventbus = eventbus; this.i18n = i18n; this.snServiceProvider = snServiceProvider; } @@ -54,4 +61,28 @@ NotifyUser.info(i18n.t("Member type changed")); stateManager.setSocialNetwork(result); } + + public void unJoinGroup(final StateToken groupToken) { + NotifyUser.askConfirmation(i18n.t("Leave this group"), i18n.t("Are you sure?"), + new OnAcceptCallback() { + @Override + public void onSuccess() { + NotifyUser.showProgress(); + snServiceProvider.get().unJoinGroup(session.getUserHash(), groupToken, + new AsyncCallbackSimple<Void>() { + @Override + public void onSuccess(final Void result) { + NotifyUser.hideProgress(); + NotifyUser.info(i18n.t("Removed as member")); + stateManager.refreshCurrentStateWithoutCache(); + session.getCurrentUserInfo().getGroupsIsAdmin().remove( + session.getCurrentState().getGroup()); + session.getCurrentUserInfo().getGroupsIsCollab().remove( + session.getCurrentState().getGroup()); + MyGroupsChangedEvent.fire(eventbus); + } + }); + } + }); + } } Added: trunk/src/main/java/cc/kune/core/client/sitebar/MyGroupsMenu.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/sitebar/MyGroupsMenu.java (rev 0) +++ trunk/src/main/java/cc/kune/core/client/sitebar/MyGroupsMenu.java 2012-03-23 17:43:04 UTC (rev 1776) @@ -0,0 +1,101 @@ +package cc.kune.core.client.sitebar; + +import cc.kune.common.client.actions.ui.descrip.MenuDescriptor; +import cc.kune.common.client.actions.ui.descrip.MenuItemDescriptor; +import cc.kune.common.client.actions.ui.descrip.MenuSeparatorDescriptor; +import cc.kune.common.client.actions.ui.descrip.MenuShowAction; +import cc.kune.common.client.shortcuts.GlobalShortcutRegister; +import cc.kune.common.shared.i18n.I18nTranslationService; +import cc.kune.core.client.events.MyGroupsChangedEvent; +import cc.kune.core.client.events.UserSignInOrSignOutEvent; +import cc.kune.core.client.events.UserSignInOrSignOutEvent.UserSignInOrSignOutHandler; +import cc.kune.core.client.resources.CoreResources; +import cc.kune.core.client.services.ClientFileDownloadUtils; +import cc.kune.core.client.sitebar.SitebarGroupsLink.SitebarNewGroupAction; +import cc.kune.core.client.sn.actions.GotoGroupAction; +import cc.kune.core.client.state.Session; +import cc.kune.core.shared.dto.GroupDTO; +import cc.kune.core.shared.dto.UserInfoDTO; + +import com.google.gwt.event.shared.EventBus; +import com.google.inject.Inject; +import com.google.inject.Provider; +import com.google.inject.Singleton; + +@Singleton +public class MyGroupsMenu extends MenuDescriptor { + public static final String MENU_ID = "k-sitebar-my-group"; + private final Provider<ClientFileDownloadUtils> downloadProvider; + private final GotoGroupAction gotoGroupAction; + private final SitebarNewGroupAction newGroupAction; + private final Session session; + private final SitebarActions siteOptions; + + @Inject + public MyGroupsMenu(final I18nTranslationService i18n, + final Provider<ClientFileDownloadUtils> downloadProvider, final CoreResources res, + final Session session, final GotoGroupAction gotoGroupAction, + final SitebarNewGroupAction newGroupAction, final SitebarActions siteOptions, + final GlobalShortcutRegister global, final MenuShowAction menuShowAction, final EventBus eventBus) { + super(menuShowAction); + this.session = session; + this.newGroupAction = newGroupAction; + this.siteOptions = siteOptions; + // menuShowAction.setMenu(this); + setId(MENU_ID); + setParent(siteOptions.getRightToolbar()); + setStyles("k-no-backimage, k-btn-sitebar"); + this.downloadProvider = downloadProvider; + this.gotoGroupAction = gotoGroupAction; + withText(i18n.t("Your groups")); + withToolTip(i18n.t("See your groups or create a new one")); + withIcon(res.arrowdownsitebar()); + withShortcut("Alt+G", global); + eventBus.addHandler(MyGroupsChangedEvent.getType(), + new MyGroupsChangedEvent.MyGroupsChangedHandler() { + @Override + public void onMyGroupsChanged(final MyGroupsChangedEvent event) { + regenerateMenu(session.isLogged()); + } + }); + + session.onUserSignInOrSignOut(true, new UserSignInOrSignOutHandler() { + @Override + public void onUserSignInOrSignOut(final UserSignInOrSignOutEvent event) { + regenerateMenu(event.isLogged()); + } + }); + + } + + private void addPartipationToMenu(final GroupDTO group) { + // FIXME, better user URL in GuiDescritors... + final String logoImageUrl = session.getSiteUrl() + "/" + downloadProvider.get().getGroupLogo(group); + final MenuItemDescriptor participant = new MenuItemDescriptor(gotoGroupAction); + participant.setTarget(group); + participant.withText(group.getLongName()).withIcon(logoImageUrl).setParent(this, true); + } + + private void regenerateMenu(final boolean isLogged) { + if (isLogged) { + if (session.userIsJoiningGroups()) { + MyGroupsMenu.this.clear(); + setVisible(true); + final UserInfoDTO userInfoDTO = session.getCurrentUserInfo(); + for (final GroupDTO group : userInfoDTO.getGroupsIsAdmin()) { + addPartipationToMenu(group); + } + for (final GroupDTO group : userInfoDTO.getGroupsIsCollab()) { + addPartipationToMenu(group); + } + new MenuSeparatorDescriptor(MyGroupsMenu.this); + new MenuItemDescriptor(MyGroupsMenu.this, newGroupAction); + siteOptions.refreshActions(); + } else { + setVisible(false); + } + } else { + setVisible(false); + } + } +} Modified: trunk/src/main/java/cc/kune/core/client/sitebar/SiteUserOptionsPresenter.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/sitebar/SiteUserOptionsPresenter.java 2012-03-21 17:42:15 UTC (rev 1775) +++ trunk/src/main/java/cc/kune/core/client/sitebar/SiteUserOptionsPresenter.java 2012-03-23 17:43:04 UTC (rev 1776) @@ -19,33 +19,26 @@ \*/ package cc.kune.core.client.sitebar; -import java.util.Set; - import cc.kune.common.client.actions.AbstractExtendedAction; import cc.kune.common.client.actions.Action; import cc.kune.common.client.actions.ActionEvent; import cc.kune.common.client.actions.ui.descrip.GuiActionDescrip; import cc.kune.common.client.actions.ui.descrip.MenuDescriptor; import cc.kune.common.client.actions.ui.descrip.MenuItemDescriptor; -import cc.kune.common.client.actions.ui.descrip.SubMenuDescriptor; import cc.kune.common.client.actions.ui.descrip.ToolbarSeparatorDescriptor; import cc.kune.common.client.actions.ui.descrip.ToolbarSeparatorDescriptor.Type; import cc.kune.common.shared.i18n.I18nTranslationService; import cc.kune.core.client.events.UserSignInEvent; -import cc.kune.core.client.events.UserSignOutEvent; import cc.kune.core.client.events.UserSignInEvent.UserSignInHandler; +import cc.kune.core.client.events.UserSignOutEvent; import cc.kune.core.client.events.UserSignOutEvent.UserSignOutHandler; import cc.kune.core.client.resources.CoreMessages; import cc.kune.core.client.resources.CoreResources; -import cc.kune.core.client.services.ClientFileDownloadUtils; -import cc.kune.core.client.sn.actions.GotoGroupAction; import cc.kune.core.client.state.Session; import cc.kune.core.client.state.StateManager; -import cc.kune.core.shared.dto.GroupDTO; import cc.kune.core.shared.dto.UserInfoDTO; import com.google.inject.Inject; -import com.google.inject.Provider; import com.google.inject.Singleton; @Singleton @@ -53,10 +46,7 @@ public static final MenuDescriptor LOGGED_USER_MENU = new MenuDescriptor(); public static final String LOGGED_USER_MENU_ID = "kune-sump-lum"; - private final Provider<ClientFileDownloadUtils> downloadProvider; - private final GotoGroupAction gotoGroupAction; private final I18nTranslationService i18n; - private SubMenuDescriptor partiMenu; private final CoreResources res; private ToolbarSeparatorDescriptor separator; private final Session session; @@ -65,16 +55,13 @@ @Inject public SiteUserOptionsPresenter(final Session session, final StateManager stateManager, - final Provider<ClientFileDownloadUtils> downloadProvider, final I18nTranslationService i18n, - final CoreResources img, final SitebarActions siteOptions, final GotoGroupAction gotoGroupAction) { + final I18nTranslationService i18n, final CoreResources img, final SitebarActions siteOptions) { super(); this.session = session; this.stateManager = stateManager; - this.downloadProvider = downloadProvider; this.i18n = i18n; this.res = img; this.siteOptions = siteOptions; - this.gotoGroupAction = gotoGroupAction; createActions(); separator.setVisible(false); session.onUserSignIn(true, new UserSignInHandler() { @@ -103,24 +90,12 @@ descriptor.setParent(LOGGED_USER_MENU, true); } - private void addPartipation(final GroupDTO group) { - final String logoImageUrl = downloadProvider.get().getGroupLogo(group); - final MenuItemDescriptor participant = new MenuItemDescriptor(gotoGroupAction); - participant.setTarget(group); - participant.putValue(Action.NAME, group.getLongName()); - participant.putValue(Action.SMALL_ICON, logoImageUrl); - participant.setParent(partiMenu, true); - // siteOptions.getRightToolbar().add(participant); - } - private void createActions() { LOGGED_USER_MENU.setId(LOGGED_USER_MENU_ID); LOGGED_USER_MENU.setParent(siteOptions.getRightToolbar()); LOGGED_USER_MENU.setStyles("k-no-backimage, k-btn-sitebar"); LOGGED_USER_MENU.setRightIcon(res.arrowdownsitebar()); separator = new ToolbarSeparatorDescriptor(Type.separator, siteOptions.getRightToolbar()); - partiMenu = new SubMenuDescriptor(i18n.t("Your groups")); - addActionImpl(partiMenu); final AbstractExtendedAction userHomeAction = new AbstractExtendedAction() { @Override @@ -143,16 +118,6 @@ LOGGED_USER_MENU.setVisible(true); LOGGED_USER_MENU.setEnabled(true); setLoggedUserName(userInfoDTO.getShortName()); - partiMenu.clear(); - final Set<GroupDTO> groupsIsAdmin = userInfoDTO.getGroupsIsAdmin(); - final Set<GroupDTO> groupsIsCollab = userInfoDTO.getGroupsIsCollab(); - for (final GroupDTO group : groupsIsAdmin) { - addPartipation(group); - } - for (final GroupDTO group : groupsIsCollab) { - addPartipation(group); - } - partiMenu.setEnabled((groupsIsAdmin.size() + groupsIsCollab.size()) > 0); siteOptions.refreshActions(); } Modified: trunk/src/main/java/cc/kune/core/client/sitebar/SitebarActionsPresenter.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/sitebar/SitebarActionsPresenter.java 2012-03-21 17:42:15 UTC (rev 1775) +++ trunk/src/main/java/cc/kune/core/client/sitebar/SitebarActionsPresenter.java 2012-03-23 17:43:04 UTC (rev 1776) @@ -65,12 +65,13 @@ void showErrorDialog(); } private static final ToolbarDescriptor LEFT_TOOLBAR = new ToolbarDescriptor(); - private static final MenuDescriptor OPTIONS_MENU = new MenuDescriptor(); + private static final MenuDescriptor MORE_MENU = new MenuDescriptor(); private static final ToolbarDescriptor RIGHT_TOOLBAR = new ToolbarDescriptor(); public static final String SITE_OPTIONS_MENU = "kune-sop-om"; private final CommonResources commonRes; private final I18nTranslationService i18n; - private final Provider<SitebarNewGroupLink> newGroupLink; + private final Provider<MyGroupsMenu> myGroupsMenu; + private final Provider<SitebarGroupsLink> newGroupLink; private final CoreResources res; private final Provider<SitebarSignInLink> signInLink; private final Provider<SitebarSignOutLink> signOutLink; @@ -78,27 +79,27 @@ @Inject public SitebarActionsPresenter(final EventBus eventBus, final SitebarActionsView view, final SitebarActionsProxy proxy, final I18nTranslationService i18n, - final Provider<SitebarNewGroupLink> newGroupLink, final Provider<SitebarSignOutLink> signOutLink, + final Provider<SitebarGroupsLink> newGroupLink, final Provider<SitebarSignOutLink> signOutLink, final Provider<SitebarSignInLink> signInLink, final CoreResources res, - final CommonResources commonRes) { + final CommonResources commonRes, final Provider<MyGroupsMenu> myGroupsMenu) { super(eventBus, view, proxy); this.i18n = i18n; this.newGroupLink = newGroupLink; this.signOutLink = signOutLink; this.signInLink = signInLink; + this.myGroupsMenu = myGroupsMenu; this.res = res; this.commonRes = commonRes; init(); } private MenuItemDescriptor createGotoKune() { - final MenuItemDescriptor gotoKuneDevSite = new MenuItemDescriptor(OPTIONS_MENU, - new AbstractAction() { - @Override - public void actionPerformed(final ActionEvent event) { - KuneWindowUtils.open("http://kune.ourproject.org/"); - } - }); + final MenuItemDescriptor gotoKuneDevSite = new MenuItemDescriptor(MORE_MENU, new AbstractAction() { + @Override + public void actionPerformed(final ActionEvent event) { + KuneWindowUtils.open("http://kune.ourproject.org/"); + } + }); gotoKuneDevSite.putValue(Action.NAME, i18n.t("kune development site")); gotoKuneDevSite.putValue(Action.SMALL_ICON, res.kuneIcon16()); return gotoKuneDevSite; @@ -110,7 +111,7 @@ } public MenuDescriptor getOptionsMenu() { - return OPTIONS_MENU; + return MORE_MENU; } @Override @@ -119,14 +120,14 @@ } private void init() { - OPTIONS_MENU.withId(SITE_OPTIONS_MENU); + MORE_MENU.withId(SITE_OPTIONS_MENU); } @ProxyEvent public void onAppStart(final AppStartEvent event) { - OPTIONS_MENU.putValue(Action.NAME, i18n.t("More")); - OPTIONS_MENU.putValue(Action.SMALL_ICON, res.arrowdownsitebar()); - OPTIONS_MENU.setStyles("k-no-backimage, k-btn-sitebar"); + MORE_MENU.withText(i18n.t("More")); + MORE_MENU.withIcon(res.arrowdownsitebar()); + MORE_MENU.setStyles("k-no-backimage, k-btn-sitebar"); // OPTIONS_MENU.putValue(AbstractGxtMenuGui.MENU_POSITION, // AbstractGxtMenuGui.MenuPosition.bl); @@ -170,17 +171,17 @@ // shortcutReg.put(shortcut, aboutAction); signInLink.get(); - signOutLink.get(); - new ToolbarSeparatorDescriptor(Type.separator, RIGHT_TOOLBAR); + myGroupsMenu.get(); newGroupLink.get(); new ToolbarSeparatorDescriptor(Type.separator, RIGHT_TOOLBAR); createGotoKune(); - MenuItemDescriptor.build(OPTIONS_MENU, bugsAction); - MenuItemDescriptor.build(OPTIONS_MENU, errorAction); - MenuItemDescriptor.build(OPTIONS_MENU, aboutAction); - MenuSeparatorDescriptor.build(OPTIONS_MENU); - MenuItemDescriptor.build(OPTIONS_MENU, wavePowered); - OPTIONS_MENU.setParent(RIGHT_TOOLBAR); + MenuItemDescriptor.build(MORE_MENU, bugsAction); + MenuItemDescriptor.build(MORE_MENU, errorAction); + MenuItemDescriptor.build(MORE_MENU, aboutAction); + MenuSeparatorDescriptor.build(MORE_MENU); + MenuItemDescriptor.build(MORE_MENU, wavePowered); + MORE_MENU.setParent(RIGHT_TOOLBAR); + signOutLink.get(); refreshActionsImpl(); } Copied: trunk/src/main/java/cc/kune/core/client/sitebar/SitebarGroupsLink.java (from rev 1747, trunk/src/main/java/cc/kune/core/client/sitebar/SitebarNewGroupLink.java) =================================================================== --- trunk/src/main/java/cc/kune/core/client/sitebar/SitebarGroupsLink.java (rev 0) +++ trunk/src/main/java/cc/kune/core/client/sitebar/SitebarGroupsLink.java 2012-03-23 17:43:04 UTC (rev 1776) @@ -0,0 +1,93 @@ +/* + * + * Copyright (C) 2007-2011 The kune development team (see CREDITS for details) + * This file is part of kune. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ +package cc.kune.core.client.sitebar; + +import cc.kune.common.client.actions.AbstractExtendedAction; +import cc.kune.common.client.actions.ActionEvent; +import cc.kune.common.client.actions.ui.descrip.ButtonDescriptor; +import cc.kune.common.shared.i18n.I18nTranslationService; +import cc.kune.core.client.events.MyGroupsChangedEvent; +import cc.kune.core.client.events.UserSignInOrSignOutEvent; +import cc.kune.core.client.events.UserSignInOrSignOutEvent.UserSignInOrSignOutHandler; +import cc.kune.core.client.resources.CoreResources; +import cc.kune.core.client.state.Session; +import cc.kune.core.client.state.SiteTokens; +import cc.kune.core.client.state.StateManager; + +import com.google.gwt.event.shared.EventBus; +import com.google.inject.Inject; + +public class SitebarGroupsLink extends ButtonDescriptor { + public static class SitebarNewGroupAction extends AbstractExtendedAction { + + private final StateManager stateManager; + + @Inject + public SitebarNewGroupAction(final StateManager stateManager, final I18nTranslationService i18n) { + super(); + this.stateManager = stateManager; + withText(i18n.t("Create New Group")); + withToolTip(i18n.t("Create a new group for your initiative or organization " + + "(NGO, collective, academic group...)")); + } + + @Override + public void actionPerformed(final ActionEvent event) { + stateManager.gotoHistoryToken(SiteTokens.NEW_GROUP); + } + } + + public static final String NEW_GROUP_BTN_ID = "k-site-newgroup-btn"; + private final Session session; + + @Inject + public SitebarGroupsLink(final SitebarNewGroupAction newGroupAction, + final SitebarActions sitebarActions, final I18nTranslationService i18n, final EventBus eventBus, + final CoreResources coreResources, final Session session) { + super(newGroupAction); + this.session = session; + withId(NEW_GROUP_BTN_ID).withStyles("k-no-backimage, k-btn-sitebar, k-fl, k-noborder, k-nobackcolor"); + withParent(sitebarActions.getRightToolbar()); + eventBus.addHandler(MyGroupsChangedEvent.getType(), + new MyGroupsChangedEvent.MyGroupsChangedHandler() { + @Override + public void onMyGroupsChanged(final MyGroupsChangedEvent event) { + recalculate(session.isNotLogged()); + } + }); + session.onUserSignInOrSignOut(true, new UserSignInOrSignOutHandler() { + @Override + public void onUserSignInOrSignOut(final UserSignInOrSignOutEvent event) { + final boolean notLogged = !event.isLogged(); + recalculate(notLogged); + } + }); + + } + + private void recalculate(final boolean notLogged) { + if (notLogged) { + setVisible(true); + } else { + setVisible(!session.userIsJoiningGroups()); + } + } + +} Deleted: trunk/src/main/java/cc/kune/core/client/sitebar/SitebarNewGroupLink.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/sitebar/SitebarNewGroupLink.java 2012-03-21 17:42:15 UTC (rev 1775) +++ trunk/src/main/java/cc/kune/core/client/sitebar/SitebarNewGroupLink.java 2012-03-23 17:43:04 UTC (rev 1776) @@ -1,62 +0,0 @@ -/* - * - * Copyright (C) 2007-2011 The kune development team (see CREDITS for details) - * This file is part of kune. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * - */ -package cc.kune.core.client.sitebar; - -import cc.kune.common.client.actions.AbstractExtendedAction; -import cc.kune.common.client.actions.Action; -import cc.kune.common.client.actions.ActionEvent; -import cc.kune.common.client.actions.ui.descrip.ButtonDescriptor; -import cc.kune.common.shared.i18n.I18nTranslationService; -import cc.kune.core.client.state.SiteTokens; -import cc.kune.core.client.state.StateManager; - -import com.google.inject.Inject; - -public class SitebarNewGroupLink extends ButtonDescriptor { - public static class SitebarNewGroupAction extends AbstractExtendedAction { - - private final StateManager stateManager; - - @Inject - public SitebarNewGroupAction(final StateManager stateManager, final I18nTranslationService i18n) { - super(); - this.stateManager = stateManager; - putValue(Action.NAME, i18n.t("Create New Group")); - - putValue(Action.TOOLTIP, i18n.t("Create a new group for your initiative or organization " - + "(NGO, collective, academic group...)")); - } - - @Override - public void actionPerformed(final ActionEvent event) { - stateManager.gotoHistoryToken(SiteTokens.NEW_GROUP); - } - - } - - public static final String NEW_GROUP_BTN_ID = "k-site-newgroup-btn"; - - @Inject - public SitebarNewGroupLink(final SitebarNewGroupAction action, final SitebarActions sitebarActions) { - super(action); - withId(NEW_GROUP_BTN_ID).withStyles("k-no-backimage, k-btn-sitebar, k-fl, k-noborder, k-nobackcolor"); - withParent(sitebarActions.getRightToolbar()); - } -} Modified: trunk/src/main/java/cc/kune/core/client/sitebar/SitebarSignInLink.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/sitebar/SitebarSignInLink.java 2012-03-21 17:42:15 UTC (rev 1775) +++ trunk/src/main/java/cc/kune/core/client/sitebar/SitebarSignInLink.java 2012-03-23 17:43:04 UTC (rev 1776) @@ -23,10 +23,10 @@ import cc.kune.common.client.actions.Action; import cc.kune.common.client.actions.ActionEvent; import cc.kune.common.client.actions.ui.descrip.ButtonDescriptor; -import cc.kune.core.client.events.UserSignInEvent; -import cc.kune.core.client.events.UserSignInEvent.UserSignInHandler; -import cc.kune.core.client.events.UserSignOutEvent; -import cc.kune.core.client.events.UserSignOutEvent.UserSignOutHandler; +import cc.kune.common.client.actions.ui.descrip.ToolbarSeparatorDescriptor; +import cc.kune.common.client.actions.ui.descrip.ToolbarSeparatorDescriptor.Type; +import cc.kune.core.client.events.UserSignInOrSignOutEvent; +import cc.kune.core.client.events.UserSignInOrSignOutEvent.UserSignInOrSignOutHandler; import cc.kune.core.client.i18n.I18nUITranslationService; import cc.kune.core.client.state.Session; import cc.kune.core.client.state.SiteTokens; @@ -72,17 +72,15 @@ setVisible(!session.isLogged()); setStyles("k-no-backimage, k-btn-sitebar, k-fl, k-noborder, k-nobackcolor"); setParent(sitebarActions.getRightToolbar()); - session.onUserSignIn(true, new UserSignInHandler() { + final ToolbarSeparatorDescriptor separator = new ToolbarSeparatorDescriptor(Type.separator, + sitebarActions.getRightToolbar()); + session.onUserSignInOrSignOut(true, new UserSignInOrSignOutHandler() { @Override - public void onUserSignIn(final UserSignInEvent event) { - SitebarSignInLink.this.setVisible(false); + public void onUserSignInOrSignOut(final UserSignInOrSignOutEvent event) { + final boolean logged = event.isLogged(); + SitebarSignInLink.this.setVisible(!logged); + separator.setVisible(!logged); } }); - session.onUserSignOut(true, new UserSignOutHandler() { - @Override - public void onUserSignOut(final UserSignOutEvent event) { - SitebarSignInLink.this.setVisible(true); - } - }); } } Modified: trunk/src/main/java/cc/kune/core/client/sitebar/SitebarSignOutLink.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/sitebar/SitebarSignOutLink.java 2012-03-21 17:42:15 UTC (rev 1775) +++ trunk/src/main/java/cc/kune/core/client/sitebar/SitebarSignOutLink.java 2012-03-23 17:43:04 UTC (rev 1776) @@ -24,19 +24,18 @@ import cc.kune.common.client.actions.ActionEvent; import cc.kune.common.client.actions.BeforeActionCollection; import cc.kune.common.client.actions.ui.descrip.ButtonDescriptor; +import cc.kune.common.client.actions.ui.descrip.ToolbarSeparatorDescriptor; +import cc.kune.common.client.actions.ui.descrip.ToolbarSeparatorDescriptor.Type; import cc.kune.common.client.errors.UIException; import cc.kune.common.client.notify.ProgressHideEvent; import cc.kune.common.client.notify.ProgressShowEvent; import cc.kune.common.shared.i18n.I18nTranslationService; import cc.kune.core.client.auth.WaveClientSimpleAuthenticator; -import cc.kune.core.client.cookies.CookiesManager; import cc.kune.core.client.errors.ErrorHandler; import cc.kune.core.client.errors.SessionExpiredException; import cc.kune.core.client.errors.UserMustBeLoggedException; -import cc.kune.core.client.events.UserSignInEvent; -import cc.kune.core.client.events.UserSignOutEvent; -import cc.kune.core.client.events.UserSignInEvent.UserSignInHandler; -import cc.kune.core.client.events.UserSignOutEvent.UserSignOutHandler; +import cc.kune.core.client.events.UserSignInOrSignOutEvent; +import cc.kune.core.client.events.UserSignInOrSignOutEvent.UserSignInOrSignOutHandler; import cc.kune.core.client.rpcservices.UserServiceAsync; import cc.kune.core.client.state.Session; @@ -54,7 +53,6 @@ public static class SitebarSignOutAction extends AbstractExtendedAction { private final BeforeSignOut beforeSignOut; - private final CookiesManager cookiesManager; private final EventBus eventBus; private final Session session; private final Provider<UserServiceAsync> userService; @@ -63,13 +61,11 @@ @Inject public SitebarSignOutAction(final EventBus eventBus, final I18nTranslationService i18n, final BeforeSignOut beforeSignOut, final Provider<UserServiceAsync> userService, - final Session session, final CookiesManager cookiesManager, - final WaveClientSimpleAuthenticator waveAuth) { + final Session session, final WaveClientSimpleAuthenticator waveAuth) { super(); this.eventBus = eventBus; this.userService = userService; this.session = session; - this.cookiesManager = cookiesManager; this.beforeSignOut = beforeSignOut; this.waveAuth = waveAuth; putValue(Action.NAME, i18n.t("Sign out")); @@ -126,20 +122,18 @@ final ErrorHandler errorHandler, final Session session, final SitebarActions sitebarActions) { super(action); setId(SITE_SIGN_OUT); + final ToolbarSeparatorDescriptor separator = new ToolbarSeparatorDescriptor(Type.separator, + sitebarActions.getRightToolbar()); setParent(sitebarActions.getRightToolbar()); setVisible(session.isLogged()); setStyles("k-no-backimage, k-btn-sitebar, k-fl, k-noborder, k-nobackcolor"); - session.onUserSignIn(true, new UserSignInHandler() { + session.onUserSignInOrSignOut(true, new UserSignInOrSignOutHandler() { @Override - public void onUserSignIn(final UserSignInEvent event) { - SitebarSignOutLink.this.setVisible(true); + public void onUserSignInOrSignOut(final UserSignInOrSignOutEvent event) { + final boolean logged = event.isLogged(); + SitebarSignOutLink.this.setVisible(logged); + separator.setVisible(logged); } }); - session.onUserSignOut(true, new UserSignOutHandler() { - @Override - public void onUserSignOut(final UserSignOutEvent event) { - SitebarSignOutLink.this.setVisible(false); - } - }); } } Modified: trunk/src/main/java/cc/kune/core/client/sn/actions/JoinGroupAction.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/sn/actions/JoinGroupAction.java 2012-03-21 17:42:15 UTC (rev 1775) +++ trunk/src/main/java/cc/kune/core/client/sn/actions/JoinGroupAction.java 2012-03-23 17:43:04 UTC (rev 1776) @@ -26,6 +26,7 @@ import cc.kune.common.shared.i18n.I18nTranslationService; import cc.kune.common.shared.utils.SimpleResponseCallback; import cc.kune.core.client.auth.SignIn; +import cc.kune.core.client.events.MyGroupsChangedEvent; import cc.kune.core.client.resources.CoreResources; import cc.kune.core.client.rpcservices.AsyncCallbackSimple; import cc.kune.core.client.rpcservices.SocialNetServiceAsync; @@ -37,20 +38,23 @@ import cc.kune.core.shared.dto.AccessRolDTO; import cc.kune.core.shared.dto.SocialNetworkRequestResult; +import com.google.gwt.event.shared.EventBus; import com.google.inject.Inject; import com.google.inject.Provider; public class JoinGroupAction extends SNRolAction { + private final EventBus eventBus; private final Provider<SignIn> signIn; @Inject public JoinGroupAction(final StateManager stateManager, final Session session, - final I18nTranslationService i18n, final CoreResources res, + final I18nTranslationService i18n, final CoreResources res, final EventBus eventBus, final Provider<SocialNetServiceAsync> snServiceProvider, final Provider<SignIn> signIn, final AccessRightsClientManager rightsClientManager) { super(stateManager, session, i18n, res, snServiceProvider, rightsClientManager, AccessRolDTO.Viewer, false, true, false); + this.eventBus = eventBus; this.signIn = signIn; putValue(NAME, i18n.t("Join")); putValue(TOOLTIP, i18n.t("Request to Join in this group")); @@ -80,6 +84,9 @@ switch ((result)) { case accepted: NotifyUser.info(i18n.t("You are now member of this group")); + session.getCurrentUserInfo().getGroupsIsCollab().add( + session.getCurrentState().getGroup()); + MyGroupsChangedEvent.fire(eventBus); stateManager.refreshCurrentStateWithoutCache(); break; case denied: Modified: trunk/src/main/java/cc/kune/core/client/sn/actions/UnJoinFromCurrentGroupAction.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/sn/actions/UnJoinFromCurrentGroupAction.java 2012-03-21 17:42:15 UTC (rev 1775) +++ trunk/src/main/java/cc/kune/core/client/sn/actions/UnJoinFromCurrentGroupAction.java 2012-03-23 17:43:04 UTC (rev 1776) @@ -21,12 +21,10 @@ import cc.kune.common.client.actions.Action; import cc.kune.common.client.actions.ActionEvent; -import cc.kune.common.client.notify.NotifyUser; -import cc.kune.common.client.utils.OnAcceptCallback; import cc.kune.common.shared.i18n.I18nTranslationService; import cc.kune.core.client.resources.CoreResources; -import cc.kune.core.client.rpcservices.AsyncCallbackSimple; import cc.kune.core.client.rpcservices.SocialNetServiceAsync; +import cc.kune.core.client.rpcservices.SocialNetServiceHelper; import cc.kune.core.client.state.AccessRightsClientManager; import cc.kune.core.client.state.Session; import cc.kune.core.client.state.StateManager; @@ -36,14 +34,17 @@ import com.google.inject.Provider; public class UnJoinFromCurrentGroupAction extends SNRolAction { + private final Provider<SocialNetServiceHelper> snServiceHelper; @Inject public UnJoinFromCurrentGroupAction(final StateManager stateManager, final Session session, final I18nTranslationService i18n, final CoreResources res, - final Provider<SocialNetServiceAsync> snServiceProvider, - final AccessRightsClientManager rightsClientManager) { - super(stateManager, session, i18n, res, snServiceProvider, rightsClientManager, AccessRolDTO.Editor, - true, false, true); + final Provider<SocialNetServiceHelper> snServiceHelper, + final AccessRightsClientManager rightsClientManager, + final Provider<SocialNetServiceAsync> snService) { + super(stateManager, session, i18n, res, snService, rightsClientManager, AccessRolDTO.Editor, true, + false, true); + this.snServiceHelper = snServiceHelper; putValue(NAME, i18n.t("Leave this group")); // putValue(TOOLTIP, i18n.t("I want to leave this group")); putValue(Action.SMALL_ICON, res.del()); @@ -52,22 +53,7 @@ @Override public void actionPerformed(final ActionEvent event) { - NotifyUser.askConfirmation(i18n.t("Leave this group"), i18n.t("Are you sure?"), - new OnAcceptCallback() { - @Override - public void onSuccess() { - NotifyUser.showProgress(); - snServiceProvider.get().unJoinGroup(session.getUserHash(), - session.getCurrentState().getStateToken(), new AsyncCallbackSimple<Void>() { - @Override - public void onSuccess(final Void result) { - NotifyUser.hideProgress(); - NotifyUser.info(i18n.t("Removed as member")); - stateManager.refreshCurrentStateWithoutCache(); - } - }); - } - }); + snServiceHelper.get().unJoinGroup(session.getCurrentState().getStateToken()); } } \ No newline at end of file Modified: trunk/src/main/java/cc/kune/core/client/sn/actions/UnJoinFromThisGroupAction.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/sn/actions/UnJoinFromThisGroupAction.java 2012-03-21 17:42:15 UTC (rev 1775) +++ trunk/src/main/java/cc/kune/core/client/sn/actions/UnJoinFromThisGroupAction.java 2012-03-23 17:43:04 UTC (rev 1776) @@ -21,16 +21,11 @@ import cc.kune.common.client.actions.Action; import cc.kune.common.client.actions.ActionEvent; -import cc.kune.common.client.notify.NotifyUser; -import cc.kune.common.client.utils.OnAcceptCallback; import cc.kune.common.shared.i18n.I18nTranslationService; import cc.kune.core.client.actions.RolAction; import cc.kune.core.client.resources.CoreResources; -import cc.kune.core.client.rpcservices.AsyncCallbackSimple; -import cc.kune.core.client.rpcservices.SocialNetServiceAsync; +import cc.kune.core.client.rpcservices.SocialNetServiceHelper; import cc.kune.core.client.state.AccessRightsClientManager; -import cc.kune.core.client.state.Session; -import cc.kune.core.client.state.StateManager; import cc.kune.core.shared.dto.AccessRolDTO; import cc.kune.core.shared.dto.GroupDTO; @@ -44,20 +39,13 @@ */ public class UnJoinFromThisGroupAction extends RolAction { - private final I18nTranslationService i18n; - private final Session session; - private final Provider<SocialNetServiceAsync> snServiceProvider; - private final StateManager stateManager; + private final Provider<SocialNetServiceHelper> snServiceProvider; @Inject - public UnJoinFromThisGroupAction(final StateManager stateManager, final Session session, - final I18nTranslationService i18n, final CoreResources res, - final Provider<SocialNetServiceAsync> snServiceProvider, + public UnJoinFromThisGroupAction(final I18nTranslationService i18n, final CoreResources res, + final Provider<SocialNetServiceHelper> snServiceProvider, final AccessRightsClientManager rightsClientManager) { super(AccessRolDTO.Editor, true); - this.stateManager = stateManager; - this.session = session; - this.i18n = i18n; this.snServiceProvider = snServiceProvider; putValue(NAME, i18n.t("Leave this group")); // putValue(TOOLTIP, i18n.t("I want to leave this group")); @@ -67,22 +55,7 @@ @Override public void actionPerformed(final ActionEvent event) { - NotifyUser.askConfirmation(i18n.t("Leave this group"), i18n.t("Are you sure?"), - new OnAcceptCallback() { - @Override - public void onSuccess() { - NotifyUser.showProgress(); - snServiceProvider.get().unJoinGroup(session.getUserHash(), - ((GroupDTO) event.getTarget()).getStateToken(), new AsyncCallbackSimple<Void>() { - @Override - public void onSuccess(final Void result) { - NotifyUser.hideProgress(); - NotifyUser.info(i18n.t("Removed as member")); - stateManager.refreshCurrentStateWithoutCache(); - } - }); - } - }); + snServiceProvider.get().unJoinGroup(((GroupDTO) event.getTarget()).getStateToken()); } } \ No newline at end of file Modified: trunk/src/main/java/cc/kune/core/client/state/Session.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/state/Session.java 2012-03-21 17:42:15 UTC (rev 1775) +++ trunk/src/main/java/cc/kune/core/client/state/Session.java 2012-03-23 17:43:04 UTC (rev 1776) @@ -161,4 +161,11 @@ void signOut(); + /** + * User is joining to some groups (as admin or collaborator). + * + * @return true, if successful + */ + boolean userIsJoiningGroups(); + } \ No newline at end of file Modified: trunk/src/main/java/cc/kune/core/client/state/impl/SessionDefault.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/state/impl/SessionDefault.java 2012-03-21 17:42:15 UTC (rev 1775) +++ trunk/src/main/java/cc/kune/core/client/state/impl/SessionDefault.java 2012-03-23 17:43:04 UTC (rev 1776) @@ -376,4 +376,9 @@ setUserHash(null); setCurrentUserInfo(null, null); } + + @Override + public boolean userIsJoiningGroups() { + return currentUserInfo.getGroupsIsAdmin().size() + currentUserInfo.getGroupsIsCollab().size() > 0; + } } Added: trunk/src/main/webapp/css/reset.css =================================================================== --- trunk/src/main/webapp/css/reset.css (rev 0) +++ trunk/src/main/webapp/css/reset.css 2012-03-23 17:43:04 UTC (rev 1776) @@ -0,0 +1,7 @@ +/* +Copyright (c) 2009, Yahoo! Inc. All rights reserved. +Code licensed under the BSD License: +http://developer.yahoo.net/yui/license.txt +version: 2.8.0r4 +*/ +html{color:#000;background:#FFF;}body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,code,form,fieldset,legend,input,button,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,optgroup{font-style:inherit;font-weight:inherit;}del,ins{text-decoration:none;}li{list-style:none;}caption,th{text-align:left;}h1,h2,h3,h4,h5,h6{}q:before,q:after{content:'';}abbr,acronym{border:0;font-variant:normal;}sup{vertical-align:baseline;}sub{vertical-align:baseline;}legend{color:#000;}input,button,textarea,select,optgroup,option{font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;}input,button,textarea,select{*font-size:100%;} Modified: trunk/src/main/webapp/others/splash/style/main.css =================================================================== --- trunk/src/main/webapp/others/splash/style/main.css 2012-03-21 17:42:15 UTC (rev 1775) +++ trunk/src/main/webapp/others/splash/style/main.css 2012-03-23 17:43:04 UTC (rev 1776) @@ -87,12 +87,6 @@ } h1 { - float: left; - width: 180px; - height: 43px; - margin: 6px 10px 0 10px; - background-image: url(../images/logo_on_black.png); - background-repeat: no-repeat; } h1 a { Modified: trunk/src/main/webapp/ws.html =================================================================== --- trunk/src/main/webapp/ws.html 2012-03-21 17:42:15 UTC (rev 1775) +++ trunk/src/main/webapp/ws.html 2012-03-23 17:43:04 UTC (rev 1776) @@ -33,8 +33,6 @@ <meta name="hablar.width" content="550px" /> <meta name="hablar.height" content="400px" /> <link rel="shortcut icon" href="ws/favicon.ico" /> -<link rel="stylesheet" type="text/css" - href="http://yui.yahooapis.com/2.8.0r4/build/reset/reset-min.css"> <!-- FIXME: make something local --> <script type="text/javascript"> WebFontConfig = { @@ -55,8 +53,7 @@ <link href='http://fonts.googleapis.com/css?family=Ubuntu:regular,italic,bold,bolditalic' rel='stylesheet' type='text/css'> -<!-- <link href='http://fonts.googleapis.com/css?family=Inconsolata' - rel='stylesheet' type='text/css'> --> +<link type="text/css" rel="stylesheet" href="css/reset.css"> <link type="text/css" rel="stylesheet" href="ws/gxt/css/gxt-all.css"> <link type="text/css" rel="stylesheet" href="ws/gxt/css/gxt-gray.css"> <link type="text/css" rel="stylesheet" Modified: trunk/src/test/java/cc/kune/selenium/spaces/SitePageObject.java =================================================================== --- trunk/src/test/java/cc/kune/selenium/spaces/SitePageObject.java 2012-03-21 17:42:15 UTC (rev 1775) +++ trunk/src/test/java/cc/kune/selenium/spaces/SitePageObject.java 2012-03-23 17:43:04 UTC (rev 1776) @@ -23,7 +23,7 @@ import org.openqa.selenium.support.FindBy; import cc.kune.core.client.notify.confirm.UserConfirmPanel; -import cc.kune.core.client.sitebar.SitebarNewGroupLink; +import cc.kune.core.client.sitebar.SitebarGroupsLink; import cc.kune.core.client.sitebar.search.SitebarSearchPanel; import cc.kune.core.client.sitebar.spaces.SpaceSelectorPresenter.SpaceSelectorView; import cc.kune.selenium.PageObject; @@ -39,7 +39,7 @@ public WebElement groupSpaceBtn; @FindBy(id = SeleniumConstants.GWTDEV + SpaceSelectorView.HOME_SPACE_ID) public WebElement homeSpaceBtn; - @FindBy(id = SeleniumConstants.GWTDEV + SitebarNewGroupLink.NEW_GROUP_BTN_ID) + @FindBy(id = SeleniumConstants.GWTDEV + SitebarGroupsLink.NEW_GROUP_BTN_ID) public WebElement newGroupBtn; @FindBy(id = SeleniumConstants.GWTDEV + SpaceSelectorView.PUBLIC_SPACE_ID) public WebElement publicSpaceBtn;
participants (1)
-
Vicente J. Ruiz Jurado