Added a special node for group creation in group tree (issue #2341)
authorChristos Stathis <chstath@ebs.gr>
Wed, 2 May 2012 14:42:08 +0000 (17:42 +0300)
committerChristos Stathis <chstath@ebs.gr>
Wed, 2 May 2012 14:42:08 +0000 (17:42 +0300)
src/gr/grnet/pithos/web/client/grouptree/GroupTreeViewModel.java

index baef54b..3648646 100644 (file)
 package gr.grnet.pithos.web.client.grouptree;
 
 import gr.grnet.pithos.web.client.Pithos;
+import gr.grnet.pithos.web.client.commands.CreateGroupCommand;
 import gr.grnet.pithos.web.client.foldertree.File;
 import gr.grnet.pithos.web.client.grouptree.GroupTreeView.Templates;
 
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Map;
-import java.util.Set;
 
 import com.google.gwt.cell.client.AbstractCell;
 import com.google.gwt.cell.client.Cell;
@@ -69,12 +69,14 @@ public class GroupTreeViewModel implements TreeViewModel {
                
         @Override
         public void onBrowserEvent(Cell.Context context, com.google.gwt.dom.client.Element parent, Group group, com.google.gwt.dom.client.NativeEvent event, com.google.gwt.cell.client.ValueUpdater<Group> valueUpdater) {
-            GroupTreeViewModel.this.groupSelectionModel.setSelected(group, true);
-            if (event.getType().equals(ContextMenuEvent.getType().getName())) {
-                GroupContextMenu menu = new GroupContextMenu(app, GroupTreeView.images, group);
-                menu.setPopupPosition(event.getClientX(), event.getClientY());
-                menu.show();
-            }
+               if (!group.equals(createGroup)) {
+                   GroupTreeViewModel.this.groupSelectionModel.setSelected(group, true);
+                   if (event.getType().equals(ContextMenuEvent.getType().getName())) {
+                       GroupContextMenu menu = new GroupContextMenu(app, GroupTreeView.images, group);
+                       menu.setPopupPosition(event.getClientX(), event.getClientY());
+                       menu.show();
+                   }
+               }
         }
        };
 
@@ -104,6 +106,8 @@ public class GroupTreeViewModel implements TreeViewModel {
     
     SingleSelectionModel<Group> groupSelectionModel;
     SingleSelectionModel<User> userSelectionModel;
+    
+    final Group createGroup = new Group("Create new group...");
 
     public GroupTreeViewModel(Pithos _app) {
         app = _app;
@@ -114,10 +118,15 @@ public class GroupTreeViewModel implements TreeViewModel {
                        
                        @Override
                        public void onSelectionChange(SelectionChangeEvent event) {
-                               if (groupSelectionModel.getSelectedObject() != null) {
+                               Group selected = groupSelectionModel.getSelectedObject();
+                               if (selected != null) {
                                        app.deselectOthers(app.getGroupTreeView(), groupSelectionModel);
                                        app.showFiles(new HashSet<File>());
                                        app.showRelevantToolbarButtons();
+                                       if (selected.equals(createGroup)) {
+                                               new CreateGroupCommand(app, null).execute();
+                                               groupSelectionModel.setSelected(createGroup, false);
+                                       }
                                }
                                else {
                                        if (app.getSelectedTree().equals(app.getGroupTreeView()))
@@ -154,7 +163,7 @@ public class GroupTreeViewModel implements TreeViewModel {
         if (value == null) {
                groupsDataProvider.getList().clear();
                        groupsDataProvider.getList().addAll(app.getAccount().getGroups());
-                       groupsDataProvider.getList().add(new Group("Create new group..."));
+                       groupsDataProvider.getList().add(createGroup);
             return new DefaultNodeInfo<Group>(groupsDataProvider, groupCell, groupSelectionModel, null);
         }
        Group g = (Group) value;
@@ -182,7 +191,7 @@ public class GroupTreeViewModel implements TreeViewModel {
                if (group == null) {
                        groupsDataProvider.getList().clear();
                        groupsDataProvider.getList().addAll(app.getAccount().getGroups());
-                       groupsDataProvider.getList().add(new Group("Create new group..."));
+                       groupsDataProvider.getList().add(createGroup);
                }
                else {
                        if (userDataProviderMap.get(group) == null) {