[Yanel-commits] rev 35305 - in
public/yanel/contributions/ajax-components/src/access-policy-editor/java/org/wyona/security/gwt/accesspolicyeditor:
client public
simon at wyona.com
simon at wyona.com
Sun Apr 13 21:41:55 CEST 2008
Author: simon
Date: 2008-04-13 21:41:54 +0200 (Sun, 13 Apr 2008)
New Revision: 35305
Modified:
public/yanel/contributions/ajax-components/src/access-policy-editor/java/org/wyona/security/gwt/accesspolicyeditor/client/AccessPolicyEditor.java
public/yanel/contributions/ajax-components/src/access-policy-editor/java/org/wyona/security/gwt/accesspolicyeditor/client/AsynchronousIdentitiesAndRightsGetter.java
public/yanel/contributions/ajax-components/src/access-policy-editor/java/org/wyona/security/gwt/accesspolicyeditor/client/AsynchronousPolicyGetter.java
public/yanel/contributions/ajax-components/src/access-policy-editor/java/org/wyona/security/gwt/accesspolicyeditor/public/sample-identities-and-usecases.xml
public/yanel/contributions/ajax-components/src/access-policy-editor/java/org/wyona/security/gwt/accesspolicyeditor/public/sample-policy.xml
Log:
adds hostpagebaseurl in front of a asynchronous request. this allows using urls relative to the hosting page. (this was not really predictable before).
adds a filter to the list of identities.
don't show users in the identities list which are shown in the policies list.
Modified: public/yanel/contributions/ajax-components/src/access-policy-editor/java/org/wyona/security/gwt/accesspolicyeditor/client/AccessPolicyEditor.java
===================================================================
--- public/yanel/contributions/ajax-components/src/access-policy-editor/java/org/wyona/security/gwt/accesspolicyeditor/client/AccessPolicyEditor.java 2008-04-13 19:37:39 UTC (rev 35304)
+++ public/yanel/contributions/ajax-components/src/access-policy-editor/java/org/wyona/security/gwt/accesspolicyeditor/client/AccessPolicyEditor.java 2008-04-13 19:41:54 UTC (rev 35305)
@@ -15,16 +15,21 @@
*/
package org.wyona.security.gwt.accesspolicyeditor.client;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.Set;
+
import com.google.gwt.core.client.EntryPoint;
+import com.google.gwt.core.client.GWT;
import com.google.gwt.i18n.client.Dictionary;
import com.google.gwt.user.client.Timer;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.ClickListener;
-import com.google.gwt.user.client.ui.Composite;
-import com.google.gwt.user.client.ui.FlowPanel;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.HasVerticalAlignment;
+import com.google.gwt.user.client.ui.KeyboardListenerAdapter;
import com.google.gwt.user.client.ui.ListBox;
import com.google.gwt.user.client.ui.RootPanel;
import com.google.gwt.user.client.ui.TextBox;
@@ -32,6 +37,7 @@
import com.google.gwt.user.client.ui.Widget;
import org.wyona.security.gwt.accesspolicyeditor.client.AddRemoveIdentitiesWidget;
+import org.wyona.yanel.gwt.client.AsynchronousAgent;
/**
* Access Policy Editor
@@ -46,6 +52,10 @@
PolicyListBoxWidget policyLBW;
Button saveButton;
+ String[] identitiesAllUsers;
+ String[] identitiesAllGroups;
+ Right[] allRights;
+
int visibleItemCount = 10;
/**
@@ -70,7 +80,13 @@
// Get data from server
getIdentitiesAndRights(identitiesURL); // TODO: Subtract policy identities!
- // TODO: Do not load policy before available rights have been loaded, because these are needed for validation of the policy. See timer of identities and rights loading!
+ identitiesLBW = new IdentitiesListBoxWidget(visibleItemCount);
+
+ identitiesLBW.set(visibleItemCount, identitiesAllUsers, identitiesAllGroups);
+
+ policyLBW = new PolicyListBoxWidget(visibleItemCount, policyUsers, policyGroups, useInheritedPolicies);
+
+
getPolicy(readPolicyURL);
// Setup GUI
@@ -84,16 +100,51 @@
searchTB.setVisibleLength(30);
searchFilterVP.add(searchTB);
- Button searchButton = new Button("Save User or Group", new ClickListener() {
- public void onClick(Widget sender) {
- int itemCount = identitiesLBW.getListBox().getItemCount();
- for (int i = 0; i < itemCount; i++) {
- String itemText = identitiesLBW.getListBox().getItemText(i);
- if (itemText.indexOf(searchTB.getText()) >= 0) Window.alert("Result: " + itemText);
- }
- }
- });
- searchFilterVP.add(searchButton);
+ searchTB.addKeyboardListener(
+ new KeyboardListenerAdapter() {
+ public void onKeyUp(Widget sender, char keyCode, int modifiers) {
+ ListBox idlb = identitiesLBW.getListBox();
+ ArrayList tmpUsers = new ArrayList();
+ ArrayList tmpGroups = new ArrayList();
+ idlb.clear();
+ int itemCountU = identitiesAllUsers.length;
+ for (int i = 0; i < itemCountU; i++) {
+ String itemText = identitiesAllUsers[i];
+ if (itemText.indexOf(searchTB.getText()) >= 0) {
+ tmpUsers.add(itemText);
+ }
+ }
+ int itemCountG = identitiesAllGroups.length;
+ for (int i = 0; i < itemCountG; i++) {
+ String itemText = identitiesAllGroups[i];
+ if (itemText.indexOf(searchTB.getText()) >= 0) {
+ tmpGroups.add(itemText);
+ }
+ }
+
+ String tmpUsersStr [] = new String [tmpUsers.size ()];
+ tmpUsers.toArray(tmpUsersStr);
+ String tmpGroupStr [] = new String [tmpGroups.size ()];
+ tmpGroups.toArray(tmpGroupStr);
+
+ identitiesLBW.set(visibleItemCount, tmpUsersStr, tmpGroupStr);
+ // filterList(list, filter.getText());
+ }
+ });
+
+
+// Button searchButton = new Button("Search User or Group", new ClickListener() {
+// public void onClick(Widget sender) {
+// int itemCount = identitiesLBW.getListBox().getItemCount();
+// for (int i = 0; i < itemCount; i++) {
+// String itemText = identitiesLBW.getListBox().getItemText(i);
+// if (itemText.indexOf(searchTB.getText()) >= 0) Window.alert("Result: " + itemText);
+//
+// }
+// }
+//
+// });
+// searchFilterVP.add(searchButton);
HorizontalPanel hp = new HorizontalPanel();
hp.setVerticalAlignment(HasVerticalAlignment.ALIGN_MIDDLE);
@@ -105,7 +156,7 @@
//buttonHP.add(new Button("Apply Policy"));
// Save Button
- final String savePolicyUrl = savePolicyURL.replaceAll("&", "&");
+ final String savePolicyUrl = GWT.getHostPageBaseURL() + savePolicyURL.replaceAll("&", "&");
//saveButton = new Button("Save Policy and Exit", new ClickListener() {
saveButton = new Button("Save Policy", new ClickListener() {
public void onClick(Widget sender) {
@@ -127,7 +178,7 @@
Button cancelButton = new Button("Cancel", new ClickListener() {
public void onClick(Widget sender) {
//Window.alert("Redirect to " + cancelUrl);
- redirectTo(cancelUrl);
+ redirectTo(GWT.getHostPageBaseURL() + cancelUrl);
}
public native void redirectTo(String url) /*-{
$wnd.location.href=url;
@@ -136,11 +187,10 @@
saveButton.setStyleName("gwt-wyona-CancelButton");
buttonHP.add(cancelButton);
- identitiesLBW = new IdentitiesListBoxWidget(visibleItemCount);
+
- policyLBW = new PolicyListBoxWidget(visibleItemCount, policyUsers, policyGroups, useInheritedPolicies);
-
- AddRemoveIdentitiesWidget ariw = new AddRemoveIdentitiesWidget(identitiesLBW.getListBox(), policyLBW.getListBox(), policyLBW);
+
+ AddRemoveIdentitiesWidget ariw = new AddRemoveIdentitiesWidget(identitiesLBW.getListBox(), policyLBW.getListBox(), policyLBW);
ariw.setStyleName("gwt-wyona-AddRemoveWidget");
//Button removeIdentityButton = new Button("DEBUG", new AddRemoveClickListener(identitiesLB));
@@ -154,34 +204,48 @@
* Get identities and rights
*/
private void getIdentitiesAndRights(String url) {
- //Window.alert("Load identities: " + url);
- url = url.replaceAll("&", "&");
- final AsynchronousIdentitiesAndRightsGetter ag = new AsynchronousIdentitiesAndRightsGetter(url);
- try {
- final com.google.gwt.http.client.Request request = ag.execute();
+ if (identitiesAllUsers == null || identitiesAllGroups == null || allRights == null) {
+ //Window.alert("Load identities: " + url);
+ url = GWT.getHostPageBaseURL() + url.replaceAll("&", "&");
+ //Window.alert("Load IdentitiesAndRights: "+ url);
+ final AsynchronousIdentitiesAndRightsGetter ag = new AsynchronousIdentitiesAndRightsGetter(url);
- // Start new thread
- Timer t = new Timer() {
- public void run() {
- if (request.isPending()) {
- // TODO: Show loading ...
- scheduleRepeating(10);
- } else {
- // "Redraw" Listbox
- identitiesLBW.set(visibleItemCount, ag.getUsers(), ag.getGroups());
- // TODO: "Redraw" Policy Listbox
- policyLBW.set(ag.getRights());
- this.cancel();
- //Window.alert("Identities have been loaded!");
+ try {
+ final com.google.gwt.http.client.Request request = ag.execute();
+
+ // Start new thread
+ Timer t = new Timer() {
+ public void run() {
+ if (request.isPending()) {
+ // TODO: Show loading ...
+ scheduleRepeating(10);
+ } else {
+ // "Redraw" Listbox
+ //identitiesLBW.set(visibleItemCount, ag.getUsers(), ag.getGroups());
+ // TODO: "Redraw" Policy Listbox
+ //policyLBW.set();
+
+ allRights = ag.getRights();
+ identitiesAllUsers = ag.getUsers();
+ identitiesAllGroups = ag.getGroups();
+ this.cancel();
+ if (allRights.length > 0 || identitiesAllUsers.length > 0 || identitiesAllGroups.length > 0 ) {
+ policyLBW.set(allRights);
+ identitiesLBW.set(visibleItemCount, identitiesAllUsers, identitiesAllGroups);
+ //Window.alert("Identities have been loaded!" + allRights.length + " " + identitiesAllUsers.length + " " + identitiesAllGroups.length);
+ } else {
+ Window.alert("No Identities have been loaded!");
+ }
+ }
}
- }
- };
- t.schedule(1);
-
- } catch (Exception e) {
- //if (!com.google.gwt.core.client.GWT.isScript()) {
- e.printStackTrace();
- //}
+ };
+ t.schedule(1);
+
+ } catch (Exception e) {
+ //if (!com.google.gwt.core.client.GWT.isScript()) {
+ e.printStackTrace();
+ //}
+ }
}
}
@@ -189,8 +253,8 @@
* Get policy
*/
private void getPolicy(String url) {
+ url = GWT.getHostPageBaseURL() + url.replaceAll("&", "&");
//Window.alert("Load policy: " + url);
- url = url.replaceAll("&", "&");
final AsynchronousPolicyGetter apg = new AsynchronousPolicyGetter(url);
try {
final com.google.gwt.http.client.Request request = apg.execute();
@@ -211,6 +275,58 @@
policyLBW.setInheritRightsFlag(useInheritedPolicies);
this.cancel();
+
+ //remove policy users from users
+ ArrayList tmpUsers = new ArrayList(Arrays.asList(identitiesAllUsers));
+ ArrayList tmpGroups = new ArrayList(Arrays.asList(identitiesAllGroups));
+
+
+
+
+// int itemCountUI = identitiesAllUsers.length;
+// for (int j = 0; j < itemCountUI; j++) {
+// String itemTextIAU = identitiesAllUsers[j];
+// if (!itemText.equals(itemTextIAU) && !tmpUsers.contains(itemTextIAU)) {
+// tmpUsers.add(itemTextIAU);
+// } else {
+// //Window.alert("not add: " + itemTextIAU + " = " + itemText);
+// }
+// }
+ int itemCountUP = policyUsers.length;
+ for (int i = 0; i < itemCountUP; i++) {
+ String itemText = policyUsers[i].getId();
+ tmpUsers.remove(itemText);
+
+ }
+
+ int itemCountGP = policyGroups.length;
+ for (int i = 0; i < itemCountGP; i++) {
+ String itemText = policyGroups[i].getId();
+ tmpGroups.remove(itemText);
+ }
+
+// int itemCountUI = identitiesAllGroups.length;
+// for (int j = 0; j < itemCountUI; j++) {
+// String itemTextIAG = identitiesAllGroups[j];
+// if (!itemText.equals(itemTextIAG) && !tmpGroups.contains(itemTextIAG)) {
+// tmpGroups.add(itemTextIAG);
+// } else {
+// //Window.alert("not add: " + itemTextIAG + " = " + itemText);
+// }
+// }
+
+
+
+ String tmpUsersStr [] = new String [tmpUsers.size ()];
+ tmpUsers.toArray(tmpUsersStr);
+ identitiesAllUsers = tmpUsersStr;
+
+ String tmpGroupStr [] = new String [tmpGroups.size ()];
+ tmpGroups.toArray(tmpGroupStr);
+ identitiesAllGroups = tmpGroupStr;
+
+ identitiesLBW.set(visibleItemCount, new String[0], new String[0]);
+ identitiesLBW.set(visibleItemCount, identitiesAllUsers, identitiesAllGroups);
//Window.alert("Policy has been loaded!");
}
}
@@ -224,6 +340,8 @@
//}
}
}
+
+
}
/**
Modified: public/yanel/contributions/ajax-components/src/access-policy-editor/java/org/wyona/security/gwt/accesspolicyeditor/client/AsynchronousIdentitiesAndRightsGetter.java
===================================================================
--- public/yanel/contributions/ajax-components/src/access-policy-editor/java/org/wyona/security/gwt/accesspolicyeditor/client/AsynchronousIdentitiesAndRightsGetter.java 2008-04-13 19:37:39 UTC (rev 35304)
+++ public/yanel/contributions/ajax-components/src/access-policy-editor/java/org/wyona/security/gwt/accesspolicyeditor/client/AsynchronousIdentitiesAndRightsGetter.java 2008-04-13 19:41:54 UTC (rev 35305)
@@ -121,4 +121,9 @@
NodeList nl = parent.getElementsByTagName(name);
return (Element) nl.item(0);
}
+
+ public void onError(Request arg0, Throwable arg1) {
+ // TODO Auto-generated method stub
+
+ }
}
Modified: public/yanel/contributions/ajax-components/src/access-policy-editor/java/org/wyona/security/gwt/accesspolicyeditor/client/AsynchronousPolicyGetter.java
===================================================================
--- public/yanel/contributions/ajax-components/src/access-policy-editor/java/org/wyona/security/gwt/accesspolicyeditor/client/AsynchronousPolicyGetter.java 2008-04-13 19:37:39 UTC (rev 35304)
+++ public/yanel/contributions/ajax-components/src/access-policy-editor/java/org/wyona/security/gwt/accesspolicyeditor/client/AsynchronousPolicyGetter.java 2008-04-13 19:41:54 UTC (rev 35305)
@@ -149,4 +149,9 @@
return null;
}
}
+
+ public void onError(Request arg0, Throwable arg1) {
+ // TODO Auto-generated method stub
+
+ }
}
Modified: public/yanel/contributions/ajax-components/src/access-policy-editor/java/org/wyona/security/gwt/accesspolicyeditor/public/sample-identities-and-usecases.xml
===================================================================
--- public/yanel/contributions/ajax-components/src/access-policy-editor/java/org/wyona/security/gwt/accesspolicyeditor/public/sample-identities-and-usecases.xml 2008-04-13 19:37:39 UTC (rev 35304)
+++ public/yanel/contributions/ajax-components/src/access-policy-editor/java/org/wyona/security/gwt/accesspolicyeditor/public/sample-identities-and-usecases.xml 2008-04-13 19:41:54 UTC (rev 35305)
@@ -1,28 +1,55 @@
-<?xml version="1.0"?>
+<access-control>
+−
+ <users>
+<user id="user_1">User 1</user>
+<user id="user_2">User 2</user>
+<user id="user_3">User 3</user>
+<user id="user_4">User 4</user>
+<user id="user_5">User 5</user>
+<user id="user_6">User 6</user>
+<user id="user_7">User 7</user>
+<user id="user_8">User 8</user>
+<user id="user_9">User 9</user>
+<user id="user_10">User 10</user>
+<user id="user_11">User 11</user>
+<user id="user_12">User 12</user>
+<user id="user_13">User 13</user>
+<user id="user_14">User 14</user>
+<user id="user_15">User 15</user>
+<user id="user_16">User 16</user>
+<user id="user_17">User 17</user>
+<user id="user_18">User 18</user>
+<user id="user_19">User 19</user>
+<user id="user_20">User 20</user>
+</users>
+−
+ <groups>
+<group id="group_1">Group 1</group>
+<group id="group_2">Group 2</group>
+<group id="group_3">Group 3</group>
+<group id="group_4">Group 4</group>
+<group id="group_5">Group 5</group>
+<group id="group_6">Group 6</group>
+<group id="group_7">Group 7</group>
+<group id="group_8">Group 8</group>
+<group id="group_9">Group 9</group>
+<group id="group_10">Group 10</group>
+<group id="group_11">Group 11</group>
+<group id="group_12">Group 12</group>
+<group id="group_13">Group 13</group>
+<group id="group_14">Group 14</group>
+<group id="group_15">Group 15</group>
+<group id="group_16">Group 16</group>
+<group id="group_17">Group 17</group>
+<group id="group_18">Group 18</group>
+<group id="group_19">Group 19</group>
+<group id="group_20">Group 20</group>
-<access-control xmlns="http://www.wyona.org/security/1.0">
-
- <!-- TODO
- <i18n language="de"/>
- -->
-
- <!-- TODO
- <world/>
- -->
-
- <users>
- <user id="michi">Michael Wechner</user>
- <user id="http://michaelwechner.livejournal.com/"/>
- </users>
-
- <groups>
- <group id="all">All registered users</group>
- <group id="admin">Administrator Group</group>
- </groups>
-
+</groups>
+−
<rights>
<right id="view">Read</right>
<right id="write">Write</right>
<right id="toolbar">Toolbar</right>
</rights>
-</access-control>
+</access-control>
\ No newline at end of file
Modified: public/yanel/contributions/ajax-components/src/access-policy-editor/java/org/wyona/security/gwt/accesspolicyeditor/public/sample-policy.xml
===================================================================
--- public/yanel/contributions/ajax-components/src/access-policy-editor/java/org/wyona/security/gwt/accesspolicyeditor/public/sample-policy.xml 2008-04-13 19:37:39 UTC (rev 35304)
+++ public/yanel/contributions/ajax-components/src/access-policy-editor/java/org/wyona/security/gwt/accesspolicyeditor/public/sample-policy.xml 2008-04-13 19:41:54 UTC (rev 35305)
@@ -8,6 +8,32 @@
<right id="introspection" permission="false"/>
</world>
+ <user id="user_1">
+ <right id="view"/>
+ </user>
+ <user id="user_2">
+ <right id="view"/>
+ <right id="toolbar"/>
+ </user>
+ <user id="user_3">
+ <right id="view"/>
+ <right id="write"/>
+ <right id="toolbar"/>
+ </user>
+ <user id="user_4">
+ <right id="view"/>
+ </user>
+ <user id="user_5">
+ <right id="view"/>
+ <right id="toolbar"/>
+ </user>
+ <user id="user_6">
+ <right id="view"/>
+ <right id="write"/>
+ <right id="toolbar"/>
+ </user>
+
+
<user id="http://michaelwechner.livejournal.com/">
<right id="open"/>
<right id="write"/>
@@ -17,9 +43,22 @@
</user>
<group id="login">
- <right id="open"/>
+ <right id="view"/>
<right id="write"/>
<right id="toolbar"/>
</group>
+ <group id="group_1">
+ <right id="view"/>
+ </group>
+ <group id="group_2">
+ <right id="view"/>
+ <right id="toolbar"/>
+ </group>
+ <group id="group_3">
+ <right id="view"/>
+ <right id="write"/>
+ <right id="toolbar"/>
+ </group>
+
</policy>
More information about the Yanel-commits
mailing list