[kune-commits] r1645 - in trunk: . src/main/java/cc/kune/common/client/actions src/main/java/cc/kune/common/client/ui/dialogs src/main/java/cc/kune/common/client/utils src/main/java/cc/kune/events/client src/main/java/cc/kune/events/client/actions src/main/java/cc/kune/events/client/viewer src/main/java/cc/kune/gspace/client/actions

Vicente J. Ruiz Jurado vjrj_ at ourproject.org
Wed Dec 21 17:48:52 CET 2011


Author: vjrj_
Date: 2011-12-21 17:48:51 +0100 (Wed, 21 Dec 2011)
New Revision: 1645

Added:
   trunk/src/main/java/cc/kune/events/client/actions/CalendarOnOverMenu.java
   trunk/src/main/java/cc/kune/events/client/viewer/CalendarStateChangeEvent.java
   trunk/src/main/java/cc/kune/events/client/viewer/EventAddMenuItem.java
   trunk/src/main/java/cc/kune/events/client/viewer/EventEditMenuItem.java
   trunk/src/main/java/cc/kune/events/client/viewer/EventRemoveMenuItem.java
   trunk/src/main/java/cc/kune/gspace/client/actions/AbstractEditorsMenu.java
   trunk/src/main/java/cc/kune/gspace/client/actions/AbstractStandaloneMenu.java
   trunk/src/main/java/cc/kune/gspace/client/actions/StandaloneMenuProvider.java
Modified:
   trunk/pom.xml
   trunk/src/main/java/cc/kune/common/client/actions/AbstractExtendedAction.java
   trunk/src/main/java/cc/kune/common/client/ui/dialogs/PromptTopDialog.java
   trunk/src/main/java/cc/kune/common/client/utils/WindowUtils.java
   trunk/src/main/java/cc/kune/events/client/EventsGinModule.java
   trunk/src/main/java/cc/kune/events/client/actions/EventsClientActions.java
   trunk/src/main/java/cc/kune/events/client/viewer/CalendarViewer.java
   trunk/src/main/java/cc/kune/events/client/viewer/CalendarViewerPanel.java
   trunk/src/main/java/cc/kune/events/client/viewer/CalendarViewerPresenter.java
   trunk/src/main/java/cc/kune/gspace/client/actions/AbstractNewMenu.java
Log:
Calendar tool updated

Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml	2011-12-21 09:41:22 UTC (rev 1644)
+++ trunk/pom.xml	2011-12-21 16:48:51 UTC (rev 1645)
@@ -917,26 +917,29 @@
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-assembly-plugin</artifactId>
         <configuration>
+          <descriptors>
+            <descriptor>src/main/resources/assembly.xml</descriptor>
+          </descriptors>
           <archive>
             <manifest>
               <mainClass>cc.kune.wave.server.WaveMain</mainClass>
             </manifest>
           </archive>
-          <descriptorRefs>
-            <descriptorRef>jar-with-dependencies</descriptorRef>
-          </descriptorRefs>
+<!--           <descriptorRefs> -->
+<!--             <descriptorRef>jar-with-dependencies</descriptorRef> -->
+<!--           </descriptorRefs> -->
           <dependencySets>
             <dependencySet>
               <outputDirectory>/</outputDirectory>
               <scope>runtime</scope>
               <unpackOptions>
-                <excludes>
-                  <!-- FIXME this is needed? -->
-                  <exclude>**/gxt/**</exclude>
-                  <exclude>**/extjs/**</exclude>
-                  <exclude>**extjs**</exclude>
-                  <exclude>**gxt**</exclude>
-                </excludes>
+<!--                 <excludes> -->
+<!--                   FIXME this is needed? -->
+<!--                   <exclude>**/gxt/**</exclude> -->
+<!--                   <exclude>**/extjs/**</exclude> -->
+<!--                   <exclude>**extjs**</exclude> -->
+<!--                   <exclude>**gxt**</exclude> -->
+<!--                 </excludes> -->
                 <includes>
                   <include>${basedir}/target/kune-0.1.0-SNAPSHOT/ws/**</include>
                   <include>${basedir}/src/main/webapp/**</include>

Modified: trunk/src/main/java/cc/kune/common/client/actions/AbstractExtendedAction.java
===================================================================
--- trunk/src/main/java/cc/kune/common/client/actions/AbstractExtendedAction.java	2011-12-21 09:41:22 UTC (rev 1644)
+++ trunk/src/main/java/cc/kune/common/client/actions/AbstractExtendedAction.java	2011-12-21 16:48:51 UTC (rev 1645)
@@ -22,45 +22,45 @@
 import com.google.gwt.resources.client.ImageResource;
 
 public abstract class AbstractExtendedAction extends AbstractAction {
-    public static final String NO_ICON = null;
-    public static final String NO_TEXT = null;
+  public static final String NO_ICON = null;
+  public static final String NO_TEXT = null;
 
-    public AbstractExtendedAction() {
-        super();
-    }
+  public AbstractExtendedAction() {
+    super();
+  }
 
-    public AbstractExtendedAction(final String text) {
-        this(text, null, null);
-    }
+  public AbstractExtendedAction(final String text) {
+    this(text, null, null);
+  }
 
-    public AbstractExtendedAction(final String text, final String iconCls) {
-        this(text, null, iconCls);
-    }
+  public AbstractExtendedAction(final String text, final String iconCls) {
+    this(text, null, iconCls);
+  }
 
-    public AbstractExtendedAction(final String text, final String tooltip, final String iconCls) {
-        super();
-        super.putValue(Action.NAME, text);
-        super.putValue(Action.TOOLTIP, tooltip);
-        super.putValue(Action.SMALL_ICON, iconCls);
-    }
+  public AbstractExtendedAction(final String text, final String tooltip, final String iconCls) {
+    super();
+    super.putValue(Action.NAME, text);
+    super.putValue(Action.TOOLTIP, tooltip);
+    super.putValue(Action.SMALL_ICON, iconCls);
+  }
 
-    public AbstractExtendedAction withIcon(final ImageResource icon) {
-        super.putValue(Action.TOOLTIP, icon);
-        return this;
-    }
+  public AbstractExtendedAction withIcon(final ImageResource icon) {
+    super.putValue(Action.SMALL_ICON, icon);
+    return this;
+  }
 
-    public AbstractExtendedAction withIconCls(final String icon) {
-        super.putValue(Action.TOOLTIP, icon);
-        return this;
-    }
+  public AbstractExtendedAction withIconCls(final String icon) {
+    super.putValue(Action.TOOLTIP, icon);
+    return this;
+  }
 
-    public AbstractExtendedAction withText(final String text) {
-        super.putValue(Action.NAME, text);
-        return this;
-    }
+  public AbstractExtendedAction withText(final String text) {
+    super.putValue(Action.NAME, text);
+    return this;
+  }
 
-    public AbstractExtendedAction withToolTip(final String tooltip) {
-        super.putValue(Action.TOOLTIP, tooltip);
-        return this;
-    }
+  public AbstractExtendedAction withToolTip(final String tooltip) {
+    super.putValue(Action.TOOLTIP, tooltip);
+    return this;
+  }
 }
\ No newline at end of file

Modified: trunk/src/main/java/cc/kune/common/client/ui/dialogs/PromptTopDialog.java
===================================================================
--- trunk/src/main/java/cc/kune/common/client/ui/dialogs/PromptTopDialog.java	2011-12-21 09:41:22 UTC (rev 1644)
+++ trunk/src/main/java/cc/kune/common/client/ui/dialogs/PromptTopDialog.java	2011-12-21 16:48:51 UTC (rev 1645)
@@ -125,6 +125,10 @@
     super.getInnerPanel().add(textField);
   }
 
+  public void clearTextFieldValue() {
+    textField.reset();
+  }
+
   public void focusOnTextBox() {
     textField.focus();
   }

Modified: trunk/src/main/java/cc/kune/common/client/utils/WindowUtils.java
===================================================================
--- trunk/src/main/java/cc/kune/common/client/utils/WindowUtils.java	2011-12-21 09:41:22 UTC (rev 1644)
+++ trunk/src/main/java/cc/kune/common/client/utils/WindowUtils.java	2011-12-21 16:48:51 UTC (rev 1645)
@@ -15,51 +15,52 @@
  */
 package cc.kune.common.client.utils;
 
+
 public class WindowUtils {
 
-    public static Location getLocation() {
-        Location result = new Location();
-        result.setHash(getHash());
-        result.setHost(getHost());
-        result.setHostName(getHostName());
-        result.setHref(getHref());
-        result.setPath(getPath());
-        result.setPort(getPort());
-        result.setProtocol(getProtocol());
-        result.setQueryString(getQueryString());
-        return result;
-    }
+  private static native String getHash() /*-{
+		return $wnd.location.hash;
+  }-*/;
 
-    private static native String getHash() /*-{
-           return $wnd.location.hash;
-       }-*/;
+  private static native String getHost() /*-{
+		return $wnd.location.host;
+  }-*/;
 
-    private static native String getHost() /*-{
-           return $wnd.location.host;
-       }-*/;
+  private static native String getHostName() /*-{
+		return $wnd.location.hostname;
+  }-*/;
 
-    private static native String getHostName() /*-{
-           return $wnd.location.hostname;
-       }-*/;
+  private static native String getHref() /*-{
+		return $wnd.location.href;
+  }-*/;
 
-    private static native String getHref() /*-{
-           return $wnd.location.href;
-       }-*/;
+  public static Location getLocation() {
+    final Location result = new Location();
+    result.setHash(getHash());
+    result.setHost(getHost());
+    result.setHostName(getHostName());
+    result.setHref(getHref());
+    result.setPath(getPath());
+    result.setPort(getPort());
+    result.setProtocol(getProtocol());
+    result.setQueryString(getQueryString());
+    return result;
+  }
 
-    private static native String getPath() /*-{
-           return $wnd.location.pathname;
-       }-*/;
+  private static native String getPath() /*-{
+		return $wnd.location.pathname;
+  }-*/;
 
-    private static native String getPort() /*-{
-           return $wnd.location.port;
-       }-*/;
+  private static native String getPort() /*-{
+		return $wnd.location.port;
+  }-*/;
 
-    private static native String getProtocol() /*-{
-           return $wnd.location.protocol;
-       }-*/;
+  private static native String getProtocol() /*-{
+		return $wnd.location.protocol;
+  }-*/;
 
-    private static native String getQueryString() /*-{
-           return $wnd.location.search;
-       }-*/;
+  private static native String getQueryString() /*-{
+		return $wnd.location.search;
+  }-*/;
 
 }
\ No newline at end of file

Modified: trunk/src/main/java/cc/kune/events/client/EventsGinModule.java
===================================================================
--- trunk/src/main/java/cc/kune/events/client/EventsGinModule.java	2011-12-21 09:41:22 UTC (rev 1644)
+++ trunk/src/main/java/cc/kune/events/client/EventsGinModule.java	2011-12-21 16:48:51 UTC (rev 1645)
@@ -27,6 +27,7 @@
 import cc.kune.events.client.actions.CalendarGoPrevBtn;
 import cc.kune.events.client.actions.CalendarGoTodayBtn;
 import cc.kune.events.client.actions.CalendarMonthViewSelectBtn;
+import cc.kune.events.client.actions.CalendarOnOverMenu;
 import cc.kune.events.client.actions.EventsClientActions;
 import cc.kune.events.client.viewer.CalendarViewer;
 import cc.kune.events.client.viewer.CalendarViewerPanel;
@@ -47,6 +48,7 @@
     s(CalendarGoPrevBtn.class);
     s(CalendarGoNextBtn.class);
     s(CalendarGoTodayBtn.class);
+    s(CalendarOnOverMenu.class);
     bindPresenter(CalendarViewerPresenter.class, CalendarViewerPresenter.CalendarViewerView.class,
         CalendarViewerPanel.class, CalendarViewerPresenter.CalendarViewerProxy.class);
     bind(CalendarViewer.class).to(CalendarViewerPresenter.class).in(Singleton.class);

Added: trunk/src/main/java/cc/kune/events/client/actions/CalendarOnOverMenu.java
===================================================================
--- trunk/src/main/java/cc/kune/events/client/actions/CalendarOnOverMenu.java	                        (rev 0)
+++ trunk/src/main/java/cc/kune/events/client/actions/CalendarOnOverMenu.java	2011-12-21 16:48:51 UTC (rev 1645)
@@ -0,0 +1,14 @@
+package cc.kune.events.client.actions;
+
+import cc.kune.gspace.client.actions.AbstractStandaloneMenu;
+import cc.kune.gspace.client.actions.StandaloneMenuProvider;
+
+import com.google.inject.Inject;
+
+public class CalendarOnOverMenu extends StandaloneMenuProvider {
+
+  @Inject
+  public CalendarOnOverMenu(final AbstractStandaloneMenu menu) {
+    super(menu);
+  }
+}

Modified: trunk/src/main/java/cc/kune/events/client/actions/EventsClientActions.java
===================================================================
--- trunk/src/main/java/cc/kune/events/client/actions/EventsClientActions.java	2011-12-21 09:41:22 UTC (rev 1644)
+++ trunk/src/main/java/cc/kune/events/client/actions/EventsClientActions.java	2011-12-21 16:48:51 UTC (rev 1645)
@@ -26,6 +26,8 @@
 import cc.kune.core.client.resources.CoreResources;
 import cc.kune.core.client.state.Session;
 import cc.kune.core.client.state.StateManager;
+import cc.kune.events.client.viewer.EventAddMenuItem;
+import cc.kune.events.client.viewer.EventEditMenuItem;
 import cc.kune.gspace.client.actions.AbstractFoldableToolActions;
 import cc.kune.gspace.client.actions.ActionGroups;
 import cc.kune.gspace.client.actions.ContentViewerOptionsMenu;
@@ -53,7 +55,9 @@
       final Provider<Calendar3DaysViewSelectBtn> cal3DaysBtn,
       final Provider<Calendar7DaysViewSelectBtn> cal7DaysBtn,
       final Provider<CalendarMonthViewSelectBtn> calMonthBtn,
-      final Provider<CalendarGoPrevBtn> calPrevBtn, final Provider<CalendarGoNextBtn> calNextBtn,
+      final Provider<EventAddMenuItem> eventAddMenuItem,
+      final Provider<EventEditMenuItem> eventEditMenuItem, final Provider<CalendarGoPrevBtn> calPrevBtn,
+      final Provider<CalendarGoNextBtn> calNextBtn, final CalendarOnOverMenu onOverMenu,
       final Provider<CalendarGoTodayBtn> goToday, final Provider<RefreshContentMenuItem> refresh) {
     super(session, stateManager, i18n, registry);
     actionsRegistry.addAction(ActionGroups.TOOLBAR, optionsMenuContent, all);
@@ -66,6 +70,11 @@
     actionsRegistry.addAction(ActionGroups.TOOLBAR, calMonthBtn, containers);
     actionsRegistry.addAction(ActionGroups.TOOLBAR, calNextBtn, containers);
 
+    // On over calendar menu
+    actionsRegistry.addAction(ActionGroups.TOOLBAR, onOverMenu, containers);
+    eventAddMenuItem.get();
+    eventEditMenuItem.get();
+
     // For now, commented:
     // actionsRegistry.addAction(ActionGroups.TOOLBAR, newMeetingsBtn,
     // containers);

Added: trunk/src/main/java/cc/kune/events/client/viewer/CalendarStateChangeEvent.java
===================================================================
--- trunk/src/main/java/cc/kune/events/client/viewer/CalendarStateChangeEvent.java	                        (rev 0)
+++ trunk/src/main/java/cc/kune/events/client/viewer/CalendarStateChangeEvent.java	2011-12-21 16:48:51 UTC (rev 1645)
@@ -0,0 +1,56 @@
+package cc.kune.events.client.viewer;
+
+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 CalendarStateChangeEvent extends
+    GwtEvent<CalendarStateChangeEvent.CalendarStateChangeHandler> {
+
+  public interface CalendarStateChangeHandler extends EventHandler {
+    public void onCalendarStateChange(CalendarStateChangeEvent event);
+  }
+
+  public interface HasCalendarStateChangeHandlers extends HasHandlers {
+    HandlerRegistration addCalendarStateChangeHandler(CalendarStateChangeHandler handler);
+  }
+
+  private static final Type<CalendarStateChangeHandler> TYPE = new Type<CalendarStateChangeHandler>();
+
+  public static void fire(final HasHandlers source) {
+    source.fireEvent(new CalendarStateChangeEvent());
+  }
+
+  public static Type<CalendarStateChangeHandler> getType() {
+    return TYPE;
+  }
+
+  public CalendarStateChangeEvent() {
+  }
+
+  @Override
+  protected void dispatch(final CalendarStateChangeHandler handler) {
+    handler.onCalendarStateChange(this);
+  }
+
+  @Override
+  public boolean equals(final Object obj) {
+    return super.equals(obj);
+  }
+
+  @Override
+  public Type<CalendarStateChangeHandler> getAssociatedType() {
+    return TYPE;
+  }
+
+  @Override
+  public int hashCode() {
+    return super.hashCode();
+  }
+
+  @Override
+  public String toString() {
+    return "CalendarStateChangeEvent[" + "]";
+  }
+}

Modified: trunk/src/main/java/cc/kune/events/client/viewer/CalendarViewer.java
===================================================================
--- trunk/src/main/java/cc/kune/events/client/viewer/CalendarViewer.java	2011-12-21 09:41:22 UTC (rev 1644)
+++ trunk/src/main/java/cc/kune/events/client/viewer/CalendarViewer.java	2011-12-21 16:48:51 UTC (rev 1645)
@@ -4,13 +4,30 @@
 
 import cc.kune.gspace.client.tool.ContentViewer;
 
+import com.bradrydzewski.gwt.calendar.client.Appointment;
 import com.bradrydzewski.gwt.calendar.client.CalendarViews;
 
 public interface CalendarViewer extends ContentViewer {
+  public static final Appointment NO_APPOINT = new Appointment();
+
+  void addAppointment(String description, Date onDate);
+
   void decrement();
 
+  /**
+   * Gets the current Appointment that can be edit.
+   * 
+   * @return the appointment to edit
+   */
+  Appointment getAppToEdit();
+
   Date getDate();
 
+  /**
+   * @return if you click on the calendar, this get the date you clicked
+   */
+  Date getOnOverDate();
+
   void goToday();
 
   void increment();

Modified: trunk/src/main/java/cc/kune/events/client/viewer/CalendarViewerPanel.java
===================================================================
--- trunk/src/main/java/cc/kune/events/client/viewer/CalendarViewerPanel.java	2011-12-21 09:41:22 UTC (rev 1644)
+++ trunk/src/main/java/cc/kune/events/client/viewer/CalendarViewerPanel.java	2011-12-21 16:48:51 UTC (rev 1645)
@@ -24,12 +24,14 @@
 import com.bradrydzewski.gwt.calendar.client.event.MouseOverHandler;
 import com.bradrydzewski.gwt.calendar.client.event.TimeBlockClickHandler;
 import com.bradrydzewski.gwt.calendar.client.event.UpdateHandler;
+import com.google.gwt.event.dom.client.ClickEvent;
 import com.google.gwt.event.dom.client.ClickHandler;
 import com.google.gwt.event.dom.client.DoubleClickHandler;
 import com.google.gwt.event.logical.shared.OpenHandler;
 import com.google.gwt.event.logical.shared.SelectionHandler;
 import com.google.gwt.event.shared.GwtEvent;
 import com.google.gwt.event.shared.HandlerRegistration;
+import com.google.gwt.user.client.Event;
 import com.google.inject.Inject;
 import com.google.inject.Provider;
 
@@ -47,6 +49,9 @@
     // calendar.setWidth("auto");
     // calendar.setHeight("auto");
     widget = calendar;
+    calendar.sinkEvents(Event.ONMOUSEDOWN | Event.ONDBLCLICK | Event.KEYEVENTS | Event.ONMOUSEOVER
+        | Event.ONCLICK);
+
   }
 
   @Override
@@ -72,6 +77,11 @@
   }
 
   @Override
+  public HandlerRegistration addClickHandler(final ClickHandler clickHandler) {
+    return calendar.addHandler(clickHandler, ClickEvent.getType());
+  }
+
+  @Override
   public HandlerRegistration addCreateHandler(final CreateHandler<Appointment> handler) {
     return calendar.addCreateHandler(handler);
   }

Modified: trunk/src/main/java/cc/kune/events/client/viewer/CalendarViewerPresenter.java
===================================================================
--- trunk/src/main/java/cc/kune/events/client/viewer/CalendarViewerPresenter.java	2011-12-21 09:41:22 UTC (rev 1644)
+++ trunk/src/main/java/cc/kune/events/client/viewer/CalendarViewerPresenter.java	2011-12-21 16:48:51 UTC (rev 1645)
@@ -4,11 +4,10 @@
 
 import javax.annotation.Nonnull;
 
+import cc.kune.common.client.actions.ui.descrip.Position;
 import cc.kune.common.client.notify.NotifyUser;
-import cc.kune.common.client.tooltip.Tooltip;
-import cc.kune.common.client.utils.SimpleResponseCallback;
-import cc.kune.common.shared.i18n.I18nTranslationService;
 import cc.kune.core.shared.dto.HasContent;
+import cc.kune.events.client.actions.CalendarOnOverMenu;
 import cc.kune.gspace.client.viewers.AbstractFolderViewerView;
 import cc.kune.gspace.client.viewers.FolderViewerUtils;
 
@@ -28,6 +27,8 @@
 import com.bradrydzewski.gwt.calendar.client.event.TimeBlockClickHandler;
 import com.bradrydzewski.gwt.calendar.client.event.UpdateEvent;
 import com.bradrydzewski.gwt.calendar.client.event.UpdateHandler;
+import com.google.gwt.event.dom.client.ClickEvent;
+import com.google.gwt.event.dom.client.ClickHandler;
 import com.google.gwt.event.logical.shared.HasOpenHandlers;
 import com.google.gwt.event.logical.shared.HasSelectionHandlers;
 import com.google.gwt.event.logical.shared.OpenEvent;
@@ -36,7 +37,6 @@
 import com.google.gwt.event.logical.shared.SelectionHandler;
 import com.google.gwt.event.shared.EventBus;
 import com.google.gwt.event.shared.HandlerRegistration;
-import com.google.gwt.user.client.ui.Widget;
 import com.google.gwt.user.datepicker.client.CalendarUtil;
 import com.google.inject.Inject;
 import com.gwtplatform.mvp.client.Presenter;
@@ -59,6 +59,8 @@
 
     void addAppointment(String title, Date date);
 
+    HandlerRegistration addClickHandler(ClickHandler clickHandler);
+
     HandlerRegistration addCreateHandler(CreateHandler<Appointment> handler);
 
     Date getDate();
@@ -74,45 +76,51 @@
   }
 
   private static final CalendarViews DEF_VIEW = CalendarViews.DAY;
+  public Appointment appToEdit = NO_APPOINT;
+
   private CalendarViews currentCalView;
   private int currentDaysView = 7;
   private final FolderViewerUtils folderViewerUtils;
-  private final I18nTranslationService i18n;
+  private Date onOverDate;
+  private final CalendarOnOverMenu onOverMenu;
 
   @Inject
   public CalendarViewerPresenter(final EventBus eventBus, final CalendarViewerView view,
       final CalendarViewerProxy proxy, final FolderViewerUtils folderViewerUtils,
-      final I18nTranslationService i18n) {
+      final CalendarOnOverMenu onOverMenu) {
     super(eventBus, view, proxy);
     this.folderViewerUtils = folderViewerUtils;
-    this.i18n = i18n;
+    this.onOverMenu = onOverMenu;
     addListeners();
     setViewImpl(DEF_VIEW, currentDaysView);
   }
 
+  @Override
+  public void addAppointment(final String description, final Date onDate) {
+    getView().addAppointment(description, onDate);
+  }
+
   private void addListeners() {
     getView().addTimeBlockClickHandler(new TimeBlockClickHandler<Date>() {
       @Override
       public void onTimeBlockClick(final TimeBlockClickEvent<Date> event) {
-        NotifyUser.askConfirmation(i18n.t("Confirm, please"), i18n.t("Add a new appointment?"),
-            new SimpleResponseCallback() {
-              @Override
-              public void onCancel() {
-                // do nothing
-              }
-
-              @Override
-              public void onSuccess() {
-                getView().addAppointment("Only a test", event.getTarget());
-                NotifyUser.info("Appointment added but not yet saved (this is under development)");
-              }
-            });
+        NotifyUser.info("on time block");
+        appToEdit = NO_APPOINT;
+        onOverDate = event.getTarget();
+        updateMenuItems();
       }
     });
+    getView().addClickHandler(new ClickHandler() {
+      @Override
+      public void onClick(final ClickEvent event) {
+        onOverMenu.get().show(new Position(event.getClientX(), event.getClientY()));
+      }
+    });
     getView().addMouseOverHandler(new MouseOverHandler<Appointment>() {
       @Override
       public void onMouseOver(final MouseOverEvent<Appointment> event) {
-        Tooltip.to((Widget) event.getSource(), "kk");
+        NotifyUser.info("on mouse over");
+        // Tooltip.to((Widget) event.getSource(), "kk");
         // final Tooltip tooltip = new Tooltip();
         // tooltip.setText("lalala");
         // tooltip.setPopupPosition(, currentDaysView)
@@ -134,7 +142,10 @@
     getView().addSelectionHandler(new SelectionHandler<Appointment>() {
       @Override
       public void onSelection(final SelectionEvent<Appointment> event) {
+        appToEdit = event.getSelectedItem();
+        onOverDate = event.getSelectedItem().getStart();
         NotifyUser.info("on selection");
+        updateMenuItems();
         // getView().removeAppointment(event.getSelectedItem());
       }
     });
@@ -156,11 +167,21 @@
   }
 
   @Override
+  public Appointment getAppToEdit() {
+    return appToEdit;
+  }
+
+  @Override
   public Date getDate() {
     return getView().getDate();
   }
 
   @Override
+  public Date getOnOverDate() {
+    return onOverDate;
+  }
+
+  @Override
   public void goToday() {
     getView().goToday();
   }
@@ -220,4 +241,8 @@
     this.currentDaysView = days;
     getView().setView(calView, days);
   }
+
+  private void updateMenuItems() {
+    CalendarStateChangeEvent.fire(getEventBus());
+  }
 }

Added: trunk/src/main/java/cc/kune/events/client/viewer/EventAddMenuItem.java
===================================================================
--- trunk/src/main/java/cc/kune/events/client/viewer/EventAddMenuItem.java	                        (rev 0)
+++ trunk/src/main/java/cc/kune/events/client/viewer/EventAddMenuItem.java	2011-12-21 16:48:51 UTC (rev 1645)
@@ -0,0 +1,74 @@
+package cc.kune.events.client.viewer;
+
+import cc.kune.common.client.actions.ActionEvent;
+import cc.kune.common.client.actions.ui.descrip.MenuItemDescriptor;
+import cc.kune.common.client.notify.NotifyUser;
+import cc.kune.common.client.ui.dialogs.PromptTopDialog;
+import cc.kune.common.client.ui.dialogs.PromptTopDialog.Builder;
+import cc.kune.common.shared.i18n.I18nTranslationService;
+import cc.kune.core.client.actions.RolAction;
+import cc.kune.core.client.resources.nav.NavResources;
+import cc.kune.core.shared.dto.AccessRolDTO;
+import cc.kune.events.client.actions.CalendarOnOverMenu;
+
+import com.google.gwt.event.dom.client.ClickEvent;
+import com.google.gwt.event.dom.client.ClickHandler;
+import com.google.inject.Inject;
+import com.google.inject.Provider;
+
+public class EventAddMenuItem extends MenuItemDescriptor {
+  public static class EventAddAction extends RolAction {
+    private final Provider<CalendarViewer> calendar;
+    private PromptTopDialog dialog;
+    private final I18nTranslationService i18n;
+
+    @Inject
+    public EventAddAction(final NavResources res, final I18nTranslationService i18n,
+        final Provider<CalendarViewer> calendar) {
+      super(AccessRolDTO.Editor, true);
+      this.i18n = i18n;
+      this.calendar = calendar;
+      withText(i18n.t("Add a appointment")).withIcon(res.calendarAdd());
+    }
+
+    @Override
+    public void actionPerformed(final ActionEvent event) {
+      if (dialog == null) {
+        final Builder builder = new PromptTopDialog.Builder(CREATE_APP_ID,
+            i18n.t("Description of the appointment"), true, true, i18n.getDirection());
+        builder.firstButtonTitle(i18n.t("Add")).firstButtonId(CREATE_APP_ADD_ID);
+        builder.sndButtonTitle(i18n.t("Cancel")).sndButtonId(CREATE_APP_CANCEL_ID);
+        dialog = builder.build();
+        dialog.getFirstBtn().addClickHandler(new ClickHandler() {
+          @Override
+          public void onClick(final ClickEvent event) {
+            if (dialog.isValid()) {
+              calendar.get().addAppointment(dialog.getTextFieldValue(), calendar.get().getOnOverDate());
+              NotifyUser.info("Appointment added but not yet saved (this is under development)");
+              dialog.hide();
+            }
+          }
+        });
+        dialog.getSecondBtn().addClickHandler(new ClickHandler() {
+          @Override
+          public void onClick(final ClickEvent event) {
+            dialog.hide();
+          }
+        });
+      }
+      dialog.clearTextFieldValue();
+      dialog.showCentered();
+      dialog.focusOnTextBox();
+    }
+  }
+
+  public static final String CREATE_APP_ADD_ID = "event-add-menu-item-add-btn";
+  public static final String CREATE_APP_CANCEL_ID = "event-add-menu-item-add-btn";
+  public static final String CREATE_APP_ID = "event-add-menu-item-form";
+
+  @Inject
+  public EventAddMenuItem(final EventAddAction action, final CalendarOnOverMenu cal) {
+    super(action);
+    setParent(cal.get());
+  }
+}

Added: trunk/src/main/java/cc/kune/events/client/viewer/EventEditMenuItem.java
===================================================================
--- trunk/src/main/java/cc/kune/events/client/viewer/EventEditMenuItem.java	                        (rev 0)
+++ trunk/src/main/java/cc/kune/events/client/viewer/EventEditMenuItem.java	2011-12-21 16:48:51 UTC (rev 1645)
@@ -0,0 +1,48 @@
+package cc.kune.events.client.viewer;
+
+import cc.kune.common.client.actions.ActionEvent;
+import cc.kune.common.client.actions.ui.descrip.MenuItemDescriptor;
+import cc.kune.common.client.ui.dialogs.PromptTopDialog;
+import cc.kune.common.shared.i18n.I18nTranslationService;
+import cc.kune.core.client.actions.RolAction;
+import cc.kune.core.client.resources.nav.NavResources;
+import cc.kune.core.shared.dto.AccessRolDTO;
+import cc.kune.events.client.actions.CalendarOnOverMenu;
+
+import com.google.gwt.event.shared.EventBus;
+import com.google.inject.Inject;
+import com.google.inject.Provider;
+
+public class EventEditMenuItem extends MenuItemDescriptor {
+  public static class EventEditAction extends RolAction {
+    private final Provider<CalendarViewer> calendar;
+    private PromptTopDialog dialog;
+    private final I18nTranslationService i18n;
+
+    @Inject
+    public EventEditAction(final NavResources res, final I18nTranslationService i18n,
+        final Provider<CalendarViewer> calendar, final EventBus eventBus) {
+      super(AccessRolDTO.Administrator, true);
+      this.i18n = i18n;
+      this.calendar = calendar;
+      withText(i18n.t("Edit the appointment")).withIcon(res.calendarAdd());
+      eventBus.addHandler(CalendarStateChangeEvent.getType(),
+          new CalendarStateChangeEvent.CalendarStateChangeHandler() {
+            @Override
+            public void onCalendarStateChange(final CalendarStateChangeEvent event) {
+              setEnabled(!calendar.get().getAppToEdit().equals(CalendarViewer.NO_APPOINT));
+            }
+          });
+    }
+
+    @Override
+    public void actionPerformed(final ActionEvent event) {
+    }
+  }
+
+  @Inject
+  public EventEditMenuItem(final EventEditAction action, final CalendarOnOverMenu cal) {
+    super(action);
+    setParent(cal.get());
+  }
+}

Added: trunk/src/main/java/cc/kune/events/client/viewer/EventRemoveMenuItem.java
===================================================================
--- trunk/src/main/java/cc/kune/events/client/viewer/EventRemoveMenuItem.java	                        (rev 0)
+++ trunk/src/main/java/cc/kune/events/client/viewer/EventRemoveMenuItem.java	2011-12-21 16:48:51 UTC (rev 1645)
@@ -0,0 +1,83 @@
+package cc.kune.events.client.viewer;
+
+import cc.kune.common.client.actions.ActionEvent;
+import cc.kune.common.client.actions.ui.descrip.MenuItemDescriptor;
+import cc.kune.common.client.notify.NotifyUser;
+import cc.kune.common.client.ui.dialogs.PromptTopDialog;
+import cc.kune.common.client.ui.dialogs.PromptTopDialog.Builder;
+import cc.kune.common.shared.i18n.I18nTranslationService;
+import cc.kune.core.client.actions.RolAction;
+import cc.kune.core.client.resources.nav.NavResources;
+import cc.kune.core.shared.dto.AccessRolDTO;
+import cc.kune.events.client.actions.CalendarOnOverMenu;
+
+import com.google.gwt.event.dom.client.ClickEvent;
+import com.google.gwt.event.dom.client.ClickHandler;
+import com.google.gwt.event.shared.EventBus;
+import com.google.inject.Inject;
+import com.google.inject.Provider;
+
+public class EventRemoveMenuItem extends MenuItemDescriptor {
+  public static class EventEditAction extends RolAction {
+    private final Provider<CalendarViewer> calendar;
+    private PromptTopDialog dialog;
+    private final I18nTranslationService i18n;
+
+    @Inject
+    public EventEditAction(final NavResources res, final I18nTranslationService i18n,
+        final Provider<CalendarViewer> calendar, final EventBus eventBus) {
+      super(AccessRolDTO.Editor, true);
+      this.i18n = i18n;
+      this.calendar = calendar;
+      withText(i18n.t("Edit the appointment")).withIcon(res.calendarAdd());
+      eventBus.addHandler(CalendarStateChangeEvent.getType(),
+          new CalendarStateChangeEvent.CalendarStateChangeHandler() {
+
+            @Override
+            public void onCalendarStateChange(final CalendarStateChangeEvent event) {
+              setEnabled(!calendar.get().getAppToEdit().equals(CalendarViewer.NO_APPOINT));
+            }
+          });
+    }
+
+    @Override
+    public void actionPerformed(final ActionEvent event) {
+      if (dialog == null) {
+        final Builder builder = new PromptTopDialog.Builder(CREATE_APP_ID,
+            i18n.t("Description of the appointment"), true, true, i18n.getDirection());
+        builder.firstButtonTitle(i18n.t("Add")).firstButtonId(CREATE_APP_ADD_ID);
+        builder.sndButtonTitle(i18n.t("Cancel")).sndButtonId(CREATE_APP_CANCEL_ID);
+        dialog = builder.build();
+        dialog.getFirstBtn().addClickHandler(new ClickHandler() {
+          @Override
+          public void onClick(final ClickEvent event) {
+            if (dialog.isValid()) {
+              calendar.get().addAppointment(dialog.getTextFieldValue(), calendar.get().getOnOverDate());
+              NotifyUser.info("Appointment should be edited (this is under development)");
+              dialog.hide();
+            }
+          }
+        });
+        dialog.getSecondBtn().addClickHandler(new ClickHandler() {
+          @Override
+          public void onClick(final ClickEvent event) {
+            dialog.hide();
+          }
+        });
+      }
+      dialog.clearTextFieldValue();
+      dialog.showCentered();
+      dialog.focusOnTextBox();
+    }
+  }
+
+  public static final String CREATE_APP_ADD_ID = "event-add-menu-item-add-btn";
+  public static final String CREATE_APP_CANCEL_ID = "event-add-menu-item-add-btn";
+  public static final String CREATE_APP_ID = "event-add-menu-item-form";
+
+  @Inject
+  public EventRemoveMenuItem(final EventEditAction action, final CalendarOnOverMenu cal) {
+    super(action);
+    setParent(cal.get());
+  }
+}

Added: trunk/src/main/java/cc/kune/gspace/client/actions/AbstractEditorsMenu.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/actions/AbstractEditorsMenu.java	                        (rev 0)
+++ trunk/src/main/java/cc/kune/gspace/client/actions/AbstractEditorsMenu.java	2011-12-21 16:48:51 UTC (rev 1645)
@@ -0,0 +1,39 @@
+/*
+ *
+ * Copyright (C) 2007-2011 The kune development team (see CREDITS for details)
+ * This file is part of kune.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+package cc.kune.gspace.client.actions;
+
+import cc.kune.common.client.actions.ui.descrip.MenuDescriptor;
+import cc.kune.core.client.state.AccessRightsChangedEvent;
+import cc.kune.core.client.state.AccessRightsChangedEvent.AccessRightsChangedHandler;
+import cc.kune.core.client.state.AccessRightsClientManager;
+
+public class AbstractEditorsMenu extends MenuDescriptor {
+
+  public AbstractEditorsMenu(final AccessRightsClientManager rightsManager) {
+    super();
+    this.withStyles("k-button, k-btn, k-5corners, k-def-docbtn, k-fl");
+    rightsManager.onRightsChanged(true, new AccessRightsChangedHandler() {
+      @Override
+      public void onAccessRightsChanged(final AccessRightsChangedEvent event) {
+        AbstractEditorsMenu.this.setVisible(event.getCurrentRights().isEditable());
+      }
+    });
+  }
+}

Modified: trunk/src/main/java/cc/kune/gspace/client/actions/AbstractNewMenu.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/actions/AbstractNewMenu.java	2011-12-21 09:41:22 UTC (rev 1644)
+++ trunk/src/main/java/cc/kune/gspace/client/actions/AbstractNewMenu.java	2011-12-21 16:48:51 UTC (rev 1645)
@@ -19,29 +19,18 @@
  */
 package cc.kune.gspace.client.actions;
 
-import cc.kune.common.client.actions.ui.descrip.MenuDescriptor;
 import cc.kune.common.shared.i18n.I18nTranslationService;
 import cc.kune.core.client.resources.CoreResources;
-import cc.kune.core.client.state.AccessRightsChangedEvent;
-import cc.kune.core.client.state.AccessRightsChangedEvent.AccessRightsChangedHandler;
 import cc.kune.core.client.state.AccessRightsClientManager;
 
 import com.google.inject.Inject;
 
-public class AbstractNewMenu extends MenuDescriptor {
+public class AbstractNewMenu extends AbstractEditorsMenu {
 
   @Inject
   public AbstractNewMenu(final CoreResources res, final I18nTranslationService i18n,
       final AccessRightsClientManager rightsManager) {
-    super();
-    this.withIcon(res.addGreen()).withStyles("k-button, k-btn, k-5corners, k-def-docbtn, k-fl").withText(
-        i18n.t("More"));
-
-    rightsManager.onRightsChanged(true, new AccessRightsChangedHandler() {
-      @Override
-      public void onAccessRightsChanged(final AccessRightsChangedEvent event) {
-        AbstractNewMenu.this.setVisible(event.getCurrentRights().isEditable());
-      }
-    });
+    super(rightsManager);
+    withText(i18n.t("More")).withIcon(res.addGreen());
   }
 }

Added: trunk/src/main/java/cc/kune/gspace/client/actions/AbstractStandaloneMenu.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/actions/AbstractStandaloneMenu.java	                        (rev 0)
+++ trunk/src/main/java/cc/kune/gspace/client/actions/AbstractStandaloneMenu.java	2011-12-21 16:48:51 UTC (rev 1645)
@@ -0,0 +1,33 @@
+/*
+ *
+ * Copyright (C) 2007-2011 The kune development team (see CREDITS for details)
+ * This file is part of kune.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+package cc.kune.gspace.client.actions;
+
+import cc.kune.core.client.state.AccessRightsClientManager;
+
+import com.google.inject.Inject;
+
+public class AbstractStandaloneMenu extends AbstractEditorsMenu {
+
+  @Inject
+  public AbstractStandaloneMenu(final AccessRightsClientManager rightsManager) {
+    super(rightsManager);
+    setStandalone(true);
+  }
+}

Added: trunk/src/main/java/cc/kune/gspace/client/actions/StandaloneMenuProvider.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/actions/StandaloneMenuProvider.java	                        (rev 0)
+++ trunk/src/main/java/cc/kune/gspace/client/actions/StandaloneMenuProvider.java	2011-12-21 16:48:51 UTC (rev 1645)
@@ -0,0 +1,45 @@
+/*
+ *
+ * Copyright (C) 2007-2011 The kune development team (see CREDITS for details)
+ * This file is part of kune.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+package cc.kune.gspace.client.actions;
+
+import cc.kune.common.client.actions.ui.descrip.MenuDescriptor;
+
+import com.google.inject.Provider;
+
+/**
+ * The Class StandAloneMenuProvider is a way to create a kind of singletons for
+ * menu entries. This can be register in a list of Providers<GuiDescriptor> but
+ * in fact only references one item and can be used to select the parent of some
+ * menu items
+ */
+public abstract class StandaloneMenuProvider implements Provider<MenuDescriptor> {
+
+  private final AbstractStandaloneMenu menu;
+
+  public StandaloneMenuProvider(final AbstractStandaloneMenu menu) {
+    this.menu = menu;
+  }
+
+  @Override
+  public MenuDescriptor get() {
+    return menu;
+  }
+
+}




More information about the kune-commits mailing list