Fixed scrolling issue after uploading (issue #2442)
[pithos-web-client] / src / gr / grnet / pithos / web / client / PermissionsAddDialog.java
index 8b28f62..dd7e052 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright 2011 GRNET S.A. All rights reserved.
+ * Copyright 2011-2012 GRNET S.A. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or
  * without modification, are permitted provided that the following
@@ -34,8 +34,7 @@
  */
 package gr.grnet.pithos.web.client;
 
-import com.google.gwt.user.client.ui.TextBox;
-import gr.grnet.pithos.web.client.foldertree.Group;
+import gr.grnet.pithos.web.client.grouptree.Group;
 
 import java.util.List;
 
@@ -43,14 +42,17 @@ import com.google.gwt.dom.client.NativeEvent;
 import com.google.gwt.event.dom.client.ClickEvent;
 import com.google.gwt.event.dom.client.ClickHandler;
 import com.google.gwt.event.dom.client.KeyCodes;
+import com.google.gwt.regexp.shared.RegExp;
 import com.google.gwt.user.client.Event.NativePreviewEvent;
+import com.google.gwt.user.client.ui.Anchor;
 import com.google.gwt.user.client.ui.Button;
 import com.google.gwt.user.client.ui.CheckBox;
 import com.google.gwt.user.client.ui.DialogBox;
 import com.google.gwt.user.client.ui.FlexTable;
 import com.google.gwt.user.client.ui.HasHorizontalAlignment;
-import com.google.gwt.user.client.ui.HorizontalPanel;
 import com.google.gwt.user.client.ui.ListBox;
+import com.google.gwt.user.client.ui.RadioButton;
+import com.google.gwt.user.client.ui.TextBox;
 import com.google.gwt.user.client.ui.VerticalPanel;
 
 public class PermissionsAddDialog extends DialogBox {
@@ -59,9 +61,9 @@ public class PermissionsAddDialog extends DialogBox {
 
        private ListBox groupBox = new ListBox();
 
-       private CheckBox read = new CheckBox();
+       private RadioButton read = new RadioButton("permissions");
 
-       private CheckBox write = new CheckBox();
+       private RadioButton write = new RadioButton("permissions");
 
        private PermissionsList permList;
 
@@ -74,12 +76,28 @@ public class PermissionsAddDialog extends DialogBox {
                userAdd = _userAdd;
                permList = _permList;
 
+               Anchor close = new Anchor("close");
+               close.addStyleName("close");
+               close.addClickHandler(new ClickHandler() {
+                       
+                       @Override
+                       public void onClick(ClickEvent event) {
+                               hide();
+                       }
+               });
+               setText("Add permission");
+               setStyleName("pithos-DialogBox");
+
         final VerticalPanel panel = new VerticalPanel();
+        panel.add(close);
+
+        VerticalPanel inner = new VerticalPanel();
+               inner.addStyleName("inner");
 
         final FlexTable permTable = new FlexTable();
         permTable.setText(0, 0, "Users/Groups");
-        permTable.setText(0, 1, "Read");
-        permTable.setText(0, 2, "Write");
+        permTable.setText(0, 1, "Read Only");
+        permTable.setText(0, 2, "Read/Write");
         permTable.getFlexCellFormatter().setStyleName(0, 0, "props-toplabels");
         permTable.getFlexCellFormatter().setStyleName(0, 1, "props-toplabels");
         permTable.getFlexCellFormatter().setStyleName(0, 2, "props-toplabels");
@@ -92,16 +110,16 @@ public class PermissionsAddDialog extends DialogBox {
                 groupBox.addItem(group.getName(), group.getName());
             permTable.setWidget(1, 0, groupBox);
         }
-
+                
+        read.setValue(true);
         permTable.setWidget(1, 1, read);
         permTable.setWidget(1, 2, write);
 
         permTable.getFlexCellFormatter().setStyleName(1, 0, "props-labels");
         permTable.getFlexCellFormatter().setHorizontalAlignment(1, 1, HasHorizontalAlignment.ALIGN_CENTER);
         permTable.getFlexCellFormatter().setHorizontalAlignment(1, 2, HasHorizontalAlignment.ALIGN_CENTER);
-        panel.add(permTable);
+        inner.add(permTable);
 
-        final HorizontalPanel buttons = new HorizontalPanel();
         final Button ok = new Button("OK", new ClickHandler() {
             @Override
             public void onClick(ClickEvent event) {
@@ -109,40 +127,37 @@ public class PermissionsAddDialog extends DialogBox {
                 hide();
             }
         });
-        buttons.add(ok);
-        buttons.setCellHorizontalAlignment(ok, HasHorizontalAlignment.ALIGN_CENTER);
-        // Create the 'Cancel' button, along with a listener that hides the
-        // dialog
-        // when the button is clicked.
-        final Button cancel = new Button("Cancel", new ClickHandler() {
-            @Override
-            public void onClick(ClickEvent event) {
-                hide();
-            }
-        });
-        buttons.add(cancel);
-        buttons.setCellHorizontalAlignment(cancel, HasHorizontalAlignment.ALIGN_CENTER);
-        buttons.setSpacing(8);
-        buttons.addStyleName("pithos-TabPanelBottom");
 
-        panel.add(buttons);
-        panel.addStyleName("pithos-TabPanelBottom");
+        ok.addStyleName("button");
+        inner.add(ok);
 
+        panel.add(inner);
+        panel.setCellHorizontalAlignment(inner, HasHorizontalAlignment.ALIGN_CENTER);
+        
         setWidget(panel);
        }
 
-       private void addPermission() {
+       protected void addPermission() {
         String selected = null;
                if (userAdd) {
-                       selected = userBox.getText();
-               } else {
+                       selected = userBox.getText().trim();
+                       RegExp emailValidator = RegExp.compile("^[A-Z0-9._%+-]+@[A-Z0-9.-]+[.][A-Z]{2,4}$", "i");
+                       if (!emailValidator.test(selected)) {
+                               app.displayWarning("Username must be a valid email address");
+                               return;
+                       }
+               } else if (groupBox.getSelectedIndex() > -1) {
                        String groupName = groupBox.getValue(groupBox.getSelectedIndex());
-            selected = app.getUsername() + ":" + groupName;
+                       selected = app.getUsername() + ":" + groupName;
                }
         if (permList.getPermissions().get(selected) != null) {
-                app.displayError((userAdd ? "User " : "Group ") + "already has access to the resource");
-                return;
+            return;
+        }
+        if (selected == null || selected.length() == 0 || selected.equals(app.getUsername() + ":")) {
+               app.displayWarning("You have to select a username or group");
+               return;
         }
+
                boolean readValue = read.getValue();
                boolean writeValue = write.getValue();