*/
private Object currentSelection;
-
- /**
- * The WebDAV password of the current user
- */
- private String webDAVPassword;
-
public HashMap<String, String> userFullNameMap = new HashMap<String, String>();
private String username = null;
private HTML usedPercent;
private HTML numOfFiles;
+
+ private Button toolsButton;
@Override
public void onModuleLoad() {
rightside.addStyleName("pithos-rightSide");
rightside.setSpacing(5);
- Image toolsButton = AbstractImagePrototype.create(images.tools()).createImage();
+ toolsButton = new Button(AbstractImagePrototype.create(images.tools()).getHTML());
toolsButton.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
ToolsMenu menu = new ToolsMenu(Pithos.this, images, getSelectedTree(), getSelectedTree().getSelection(), getFileList().getSelectedFiles());
- menu.setPopupPosition(event.getClientX(), event.getClientY());
- menu.show();
+ if (!menu.isEmpty()) {
+ menu.setPopupPosition(event.getClientX(), event.getClientY());
+ menu.show();
+ }
}
});
rightside.add(toolsButton);
return token;
}
- public String getWebDAVPassword() {
- return webDAVPassword;
- }
-
public static native void preventIESelection() /*-{
$doc.body.onselectstart = function () { return false; };
}-*/;
public void showFolderStatistics(int folderFileCount) {
numOfFiles.setHTML(String.valueOf(folderFileCount));
}
+
+ public GroupTreeView getGroupTreeView() {
+ return groupTreeView;
+ }
}
*/
package gr.grnet.pithos.web.client;
+import gr.grnet.pithos.web.client.commands.AddUserCommand;
import gr.grnet.pithos.web.client.commands.CopyCommand;
+import gr.grnet.pithos.web.client.commands.CreateGroupCommand;
import gr.grnet.pithos.web.client.commands.CutCommand;
import gr.grnet.pithos.web.client.commands.DeleteCommand;
+import gr.grnet.pithos.web.client.commands.DeleteGroupCommand;
import gr.grnet.pithos.web.client.commands.EmptyTrashCommand;
import gr.grnet.pithos.web.client.commands.NewFolderCommand;
import gr.grnet.pithos.web.client.commands.PasteCommand;
import gr.grnet.pithos.web.client.commands.PropertiesCommand;
import gr.grnet.pithos.web.client.commands.RefreshCommand;
+import gr.grnet.pithos.web.client.commands.RemoveUserCommand;
import gr.grnet.pithos.web.client.commands.RestoreTrashCommand;
import gr.grnet.pithos.web.client.commands.ToTrashCommand;
import gr.grnet.pithos.web.client.foldertree.File;
import gr.grnet.pithos.web.client.foldertree.Folder;
+import gr.grnet.pithos.web.client.grouptree.Group;
+import gr.grnet.pithos.web.client.grouptree.GroupTreeView;
+import gr.grnet.pithos.web.client.grouptree.User;
import java.util.List;
* The image bundle for this widget's images that reuses images defined in
* other menus.
*/
- public interface Images extends FolderContextMenu.Images {
+ public interface Images extends GroupTreeView.Images {
}
private MenuItem pasteItem;
+ private boolean empty = false;;
+
/**
* The widget's constructor.
*
contextMenu.addItem(emptyTrash);
}
}
- add(contextMenu);
}
+ else {
+ Object o = app.getGroupTreeView().getSelected();
+ if (o != null) {
+ if (o instanceof User) {
+ MenuItem removeUser = new MenuItem("<span>" + AbstractImagePrototype.create(images.delete()).getHTML() + " Remove User</span>", true, new RemoveUserCommand(app, this, (User) o));
+ contextMenu.addItem(removeUser);
+ }
+ else if (o instanceof Group) {
+ MenuItem addUser = new MenuItem("<span>" + AbstractImagePrototype.create(images.user()).getHTML() + " Add User</span>", true, new AddUserCommand(app, this, (Group) o));
+ contextMenu.addItem(addUser);
+
+ MenuItem deleteGroup = new MenuItem("<span>" + AbstractImagePrototype.create(images.delete()).getHTML() + " Delete Group</span>", true, new DeleteGroupCommand(app, this, (Group) o));
+ contextMenu.addItem(deleteGroup);
+ }
+ else {
+ MenuItem createGroup = new MenuItem("<span>" + AbstractImagePrototype.create(images.group()).getHTML() + " Create Group</span>", true, new CreateGroupCommand(app, this));
+ contextMenu.addItem(createGroup);
+ }
+ }
+ else
+ empty = true;
+ }
+ add(contextMenu);
+ }
+
+ public boolean isEmpty() {
+ return empty;
}
}
import gr.grnet.pithos.web.client.Pithos;
import gr.grnet.pithos.web.client.foldertree.File;
+import gr.grnet.pithos.web.client.foldertree.FolderTreeViewModel;
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.safehtml.shared.SafeHtmlBuilder;
import com.google.gwt.user.client.ui.AbstractImagePrototype;
import com.google.gwt.view.client.ListDataProvider;
+import com.google.gwt.view.client.SelectionChangeEvent;
+import com.google.gwt.view.client.SingleSelectionModel;
import com.google.gwt.view.client.TreeViewModel;
public class GroupTreeViewModel implements TreeViewModel {
@Override
public void onBrowserEvent(@SuppressWarnings("unused") Cell.Context context, @SuppressWarnings("unused") com.google.gwt.dom.client.Element parent, @SuppressWarnings("unused") String s, com.google.gwt.dom.client.NativeEvent event, @SuppressWarnings("unused") com.google.gwt.cell.client.ValueUpdater<String> valueUpdater) {
+ GroupTreeViewModel.this.rootSelectionModel.setSelected(s, true);
if (event.getType().equals(ContextMenuEvent.getType().getName())) {
GroupContextMenu menu = new GroupContextMenu(app, GroupTreeView.images, null);
menu.setPopupPosition(event.getClientX(), event.getClientY());
@Override
public void onBrowserEvent(@SuppressWarnings("unused") Cell.Context context, @SuppressWarnings("unused") com.google.gwt.dom.client.Element parent, Group group, com.google.gwt.dom.client.NativeEvent event, @SuppressWarnings("unused") 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());
@Override
public void onBrowserEvent(@SuppressWarnings("unused") Cell.Context context, @SuppressWarnings("unused") com.google.gwt.dom.client.Element parent, User user, com.google.gwt.dom.client.NativeEvent event, @SuppressWarnings("unused") com.google.gwt.cell.client.ValueUpdater<User> valueUpdater) {
+ GroupTreeViewModel.this.userSelectionModel.setSelected(user, true);
if (event.getType().equals(ContextMenuEvent.getType().getName())) {
UserContextMenu menu = new UserContextMenu(app, GroupTreeView.images, user);
menu.setPopupPosition(event.getClientX(), event.getClientY());
protected Map<String, Set<File>> sharedFiles = new HashMap<String, Set<File>>();
+ SingleSelectionModel<String> rootSelectionModel;
+ SingleSelectionModel<Group> groupSelectionModel;
+ SingleSelectionModel<User> userSelectionModel;
+
public GroupTreeViewModel(Pithos _app) {
app = _app;
- }
+ rootSelectionModel = new SingleSelectionModel<String>();
+ app.addSelectionModel(rootSelectionModel);
+ rootSelectionModel.addSelectionChangeHandler(new SelectionChangeEvent.Handler() {
+
+ @Override
+ public void onSelectionChange(SelectionChangeEvent event) {
+ if (rootSelectionModel.getSelectedObject() != null) {
+ app.deselectOthers(app.getGroupTreeView(), rootSelectionModel);
+ app.showFiles(new HashSet<File>());
+ }
+ }
+ });
+
+ groupSelectionModel = new SingleSelectionModel<Group>();
+ app.addSelectionModel(groupSelectionModel);
+ groupSelectionModel.addSelectionChangeHandler(new SelectionChangeEvent.Handler() {
+
+ @Override
+ public void onSelectionChange(SelectionChangeEvent event) {
+ if (groupSelectionModel.getSelectedObject() != null) {
+ app.deselectOthers(app.getGroupTreeView(), groupSelectionModel);
+ app.showFiles(new HashSet<File>());
+ }
+ }
+ });
+
+ userSelectionModel = new SingleSelectionModel<User>();
+ app.addSelectionModel(userSelectionModel);
+ userSelectionModel.addSelectionChangeHandler(new SelectionChangeEvent.Handler() {
+
+ @Override
+ public void onSelectionChange(SelectionChangeEvent event) {
+ if (userSelectionModel.getSelectedObject() != null) {
+ app.deselectOthers(app.getGroupTreeView(), userSelectionModel);
+ app.showFiles(new HashSet<File>());
+ }
+ }
+ });
+}
@Override
public <T> NodeInfo<?> getNodeInfo(T value) {
if (value == null) {
rootDataProvider.getList().add("");
- return new DefaultNodeInfo<String>(rootDataProvider, rootCell, null, null);
+ return new DefaultNodeInfo<String>(rootDataProvider, rootCell, rootSelectionModel, null);
}
else if (value instanceof String) {
groupsDataProvider.getList().clear();
groupsDataProvider.getList().addAll(app.getAccount().getGroups());
- return new DefaultNodeInfo<Group>(groupsDataProvider, groupCell, null, null);
+ return new DefaultNodeInfo<Group>(groupsDataProvider, groupCell, groupSelectionModel, null);
}
else { //Group
Group g = (Group) value;
dataProvider.getList().clear();
for (String u : g.getMembers())
dataProvider.getList().add(new User(u, g));
- return new DefaultNodeInfo<User>(dataProvider, userCell, null, null);
+ return new DefaultNodeInfo<User>(dataProvider, userCell, userSelectionModel, null);
}
}
dataProvider.getList().add(new User(u, group));
}
}
+
+ public Object getSelectedObject() {
+ if (rootSelectionModel.getSelectedObject() != null)
+ return rootSelectionModel.getSelectedObject();
+ if (groupSelectionModel.getSelectedObject() != null)
+ return groupSelectionModel.getSelectedObject();
+ if (userSelectionModel.getSelectedObject() != null)
+ return userSelectionModel.getSelectedObject();
+ return null;
+ }
}