Automated merge with https://gss.googlecode.com/hg/
[pithos] / src / gr / ebs / gss / client / GroupContextMenu.java
1 /*
2  * Copyright 2008, 2009 Electronic Business Systems Ltd.
3  *
4  * This file is part of GSS.
5  *
6  * GSS is free software: you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License as published by
8  * the Free Software Foundation, either version 3 of the License, or
9  * (at your option) any later version.
10  *
11  * GSS is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14  * GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with GSS.  If not, see <http://www.gnu.org/licenses/>.
18  */
19 package gr.ebs.gss.client;
20
21 import gr.ebs.gss.client.Groups.Images;
22 import gr.ebs.gss.client.commands.CopyCommand;
23 import gr.ebs.gss.client.commands.DeleteUserOrGroupCommand;
24 import gr.ebs.gss.client.commands.NewGroupCommand;
25 import gr.ebs.gss.client.commands.NewUserCommand;
26 import gr.ebs.gss.client.commands.PasteCommand;
27 import gr.ebs.gss.client.rest.resource.GroupResource;
28 import gr.ebs.gss.client.rest.resource.GroupUserResource;
29
30 import com.google.gwt.user.client.ui.AbstractImagePrototype;
31 import com.google.gwt.user.client.ui.MenuBar;
32 import com.google.gwt.user.client.ui.MenuItem;
33 import com.google.gwt.user.client.ui.PopupPanel;
34 import com.google.gwt.user.client.ui.TreeItem;
35
36
37 /**
38  * @author kman
39  *
40  */
41 public class GroupContextMenu extends PopupPanel {
42
43         /**
44          * The widget's images.
45          */
46         private final Images images;
47         private MenuItem copy;
48         private MenuItem paste;
49
50
51         public GroupContextMenu(final Images newImages) {
52                 // The popup's constructor's argument is a boolean specifying that it
53                 // auto-close itself when the user clicks outside of it.
54                 super(true);
55                 images=newImages;
56                 setAnimationEnabled(true);
57                 final MenuBar contextMenu = new MenuBar(true);
58                 MenuItem newGroup = new MenuItem("<span>" + AbstractImagePrototype.create(newImages.groupNew()).getHTML() + "&nbsp;New Group</span>", true, new NewGroupCommand(this));
59                 newGroup.getElement().setId("groupContextMenu.newGroup");
60                 contextMenu.addItem(newGroup);
61                 
62                 MenuItem addUser = new MenuItem("<span>" + AbstractImagePrototype.create(newImages.groupNew()).getHTML() + "&nbsp;Add User</span>", true, new NewUserCommand(this));
63                 addUser.getElement().setId("groupContextMenu.addUser");
64                 contextMenu.addItem(addUser);
65                                 
66                 copy = new MenuItem("<span id=groupContextMenu.copyUser>" + AbstractImagePrototype.create(newImages.copy()).getHTML() + "&nbsp;Copy User</span>", true, new CopyCommand(this));
67                 copy.getElement().setId("groupContextMenu.copyUser");
68                 contextMenu.addItem(copy);
69                 
70                 paste = new MenuItem("<span id=groupContextMenu.pasteUser>" + AbstractImagePrototype.create(newImages.paste()).getHTML() + "&nbsp;Paste User</span>", true, new PasteCommand(this));
71                 paste.getElement().setId("groupContextMenu.pasteUser");
72                 contextMenu.addItem(paste);
73                 
74                 MenuItem delete = new MenuItem("<span id=groupContextMenu.delete>" + AbstractImagePrototype.create(newImages.delete()).getHTML() + "&nbsp;Delete</span>", true, new DeleteUserOrGroupCommand(this,images));
75                 delete.getElement().setId("groupContextMenu.delete");
76                 contextMenu.addItem(delete);
77                 
78                 add(contextMenu);
79
80         }
81
82         /* (non-Javadoc)
83          * @see com.google.gwt.user.client.ui.PopupPanel#show()
84          */
85         @Override
86         public void show() {
87                 TreeItem current = GSS.get().getGroups().getCurrent();
88                 if(current !=null && current.getUserObject() instanceof GroupUserResource && GSS.get().getCurrentSelection() instanceof GroupUserResource)
89                         copy.setVisible(true);
90                 else
91                         copy.setVisible(false);
92                 if(current !=null && current.getUserObject() instanceof GroupResource && GSS.get().getCurrentSelection() instanceof GroupResource && GSS.get().getClipboard().hasUserItem())
93                         paste.setVisible(true);
94                 else
95                         paste.setVisible(false);
96                 super.show();
97         }
98
99 }