You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by se...@apache.org on 2006/12/26 22:47:15 UTC
svn commit: r490383 [1/3] - in
/directory/sandbox/seelmann/trunk/ldapstudio-aciitemeditor: ./ META-INF/
icons/ icons/old/ lib/ src/ src/org/ src/org/apache/
src/org/apache/directory/ src/org/apache/directory/ldapstudio/
src/org/apache/directory/ldapstu...
Author: seelmann
Date: Tue Dec 26 13:47:13 2006
New Revision: 490383
URL: http://svn.apache.org/viewvc?view=rev&rev=490383
Log:
Initial commit of the ACIItem Editor prototype.
Added:
directory/sandbox/seelmann/trunk/ldapstudio-aciitemeditor/.classpath
directory/sandbox/seelmann/trunk/ldapstudio-aciitemeditor/.project
directory/sandbox/seelmann/trunk/ldapstudio-aciitemeditor/META-INF/
directory/sandbox/seelmann/trunk/ldapstudio-aciitemeditor/META-INF/MANIFEST.MF
directory/sandbox/seelmann/trunk/ldapstudio-aciitemeditor/build.properties
directory/sandbox/seelmann/trunk/ldapstudio-aciitemeditor/icons/
directory/sandbox/seelmann/trunk/ldapstudio-aciitemeditor/icons/checkbox_checked.gif (with props)
directory/sandbox/seelmann/trunk/ldapstudio-aciitemeditor/icons/checkbox_unchecked.gif (with props)
directory/sandbox/seelmann/trunk/ldapstudio-aciitemeditor/icons/old/
directory/sandbox/seelmann/trunk/ldapstudio-aciitemeditor/icons/old/checkbox_checked.gif (with props)
directory/sandbox/seelmann/trunk/ldapstudio-aciitemeditor/icons/old/checkbox_unchecked.gif (with props)
directory/sandbox/seelmann/trunk/ldapstudio-aciitemeditor/icons/sample.gif (with props)
directory/sandbox/seelmann/trunk/ldapstudio-aciitemeditor/lib/
directory/sandbox/seelmann/trunk/ldapstudio-aciitemeditor/lib/antlr-2.7.6.jar (with props)
directory/sandbox/seelmann/trunk/ldapstudio-aciitemeditor/lib/commons-collections-3.1.jar (with props)
directory/sandbox/seelmann/trunk/ldapstudio-aciitemeditor/lib/commons-configuration-1.2.jar (with props)
directory/sandbox/seelmann/trunk/ldapstudio-aciitemeditor/lib/commons-lang-2.1.jar (with props)
directory/sandbox/seelmann/trunk/ldapstudio-aciitemeditor/lib/commons-logging-1.1.jar (with props)
directory/sandbox/seelmann/trunk/ldapstudio-aciitemeditor/lib/nlog4j-1.2.24.jar (with props)
directory/sandbox/seelmann/trunk/ldapstudio-aciitemeditor/lib/shared-ldap-0.9.6-SNAPSHOT.jar (with props)
directory/sandbox/seelmann/trunk/ldapstudio-aciitemeditor/plugin.xml
directory/sandbox/seelmann/trunk/ldapstudio-aciitemeditor/src/
directory/sandbox/seelmann/trunk/ldapstudio-aciitemeditor/src/Test.java
directory/sandbox/seelmann/trunk/ldapstudio-aciitemeditor/src/org/
directory/sandbox/seelmann/trunk/ldapstudio-aciitemeditor/src/org/apache/
directory/sandbox/seelmann/trunk/ldapstudio-aciitemeditor/src/org/apache/directory/
directory/sandbox/seelmann/trunk/ldapstudio-aciitemeditor/src/org/apache/directory/ldapstudio/
directory/sandbox/seelmann/trunk/ldapstudio-aciitemeditor/src/org/apache/directory/ldapstudio/aciitemeditor/
directory/sandbox/seelmann/trunk/ldapstudio-aciitemeditor/src/org/apache/directory/ldapstudio/aciitemeditor/ACIItemSerializer.java
directory/sandbox/seelmann/trunk/ldapstudio-aciitemeditor/src/org/apache/directory/ldapstudio/aciitemeditor/Activator.java
directory/sandbox/seelmann/trunk/ldapstudio-aciitemeditor/src/org/apache/directory/ldapstudio/aciitemeditor/dialogs/
directory/sandbox/seelmann/trunk/ldapstudio-aciitemeditor/src/org/apache/directory/ldapstudio/aciitemeditor/dialogs/ACIItemDialog.java
directory/sandbox/seelmann/trunk/ldapstudio-aciitemeditor/src/org/apache/directory/ldapstudio/aciitemeditor/dialogs/TextDialog.java
directory/sandbox/seelmann/trunk/ldapstudio-aciitemeditor/src/org/apache/directory/ldapstudio/aciitemeditor/dialogs/UserClassDialog.java
directory/sandbox/seelmann/trunk/ldapstudio-aciitemeditor/src/org/apache/directory/ldapstudio/aciitemeditor/dialogs/UserPermissionDialog.java
directory/sandbox/seelmann/trunk/ldapstudio-aciitemeditor/src/org/apache/directory/ldapstudio/aciitemeditor/editors/
directory/sandbox/seelmann/trunk/ldapstudio-aciitemeditor/src/org/apache/directory/ldapstudio/aciitemeditor/editors/MultiPageEditor.java
directory/sandbox/seelmann/trunk/ldapstudio-aciitemeditor/src/org/apache/directory/ldapstudio/aciitemeditor/editors/MultiPageEditorContributor.java
directory/sandbox/seelmann/trunk/ldapstudio-aciitemeditor/src/org/apache/directory/ldapstudio/aciitemeditor/widgets/
directory/sandbox/seelmann/trunk/ldapstudio-aciitemeditor/src/org/apache/directory/ldapstudio/aciitemeditor/widgets/ACIItemComposite.java
directory/sandbox/seelmann/trunk/ldapstudio-aciitemeditor/src/org/apache/directory/ldapstudio/aciitemeditor/widgets/ACIItemGeneralComposite.java
directory/sandbox/seelmann/trunk/ldapstudio-aciitemeditor/src/org/apache/directory/ldapstudio/aciitemeditor/widgets/ACIItemGrantsAndDenialsComposite.java
directory/sandbox/seelmann/trunk/ldapstudio-aciitemeditor/src/org/apache/directory/ldapstudio/aciitemeditor/widgets/ACIItemItemPermissionsComposite.java
directory/sandbox/seelmann/trunk/ldapstudio-aciitemeditor/src/org/apache/directory/ldapstudio/aciitemeditor/widgets/ACIItemProtectedItemsComposite.java
directory/sandbox/seelmann/trunk/ldapstudio-aciitemeditor/src/org/apache/directory/ldapstudio/aciitemeditor/widgets/ACIItemUserClassesComposite.java
directory/sandbox/seelmann/trunk/ldapstudio-aciitemeditor/src/org/apache/directory/ldapstudio/aciitemeditor/widgets/ACIItemUserPermissionsComposite.java
directory/sandbox/seelmann/trunk/ldapstudio-aciitemeditor/src/org/apache/directory/ldapstudio/aciitemeditor/widgets/WidgetModifyEvent.java
directory/sandbox/seelmann/trunk/ldapstudio-aciitemeditor/src/org/apache/directory/ldapstudio/aciitemeditor/widgets/WidgetModifyListener.java
directory/sandbox/seelmann/trunk/ldapstudio-aciitemeditor/src/org/apache/directory/ldapstudio/aciitemeditor/wizards/
directory/sandbox/seelmann/trunk/ldapstudio-aciitemeditor/test.aci
Added: directory/sandbox/seelmann/trunk/ldapstudio-aciitemeditor/.classpath
URL: http://svn.apache.org/viewvc/directory/sandbox/seelmann/trunk/ldapstudio-aciitemeditor/.classpath?view=auto&rev=490383
==============================================================================
--- directory/sandbox/seelmann/trunk/ldapstudio-aciitemeditor/.classpath (added)
+++ directory/sandbox/seelmann/trunk/ldapstudio-aciitemeditor/.classpath Tue Dec 26 13:47:13 2006
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="lib" path="lib/antlr-2.7.6.jar"/>
+ <classpathentry kind="lib" path="lib/commons-collections-3.1.jar"/>
+ <classpathentry kind="lib" path="lib/commons-configuration-1.2.jar"/>
+ <classpathentry kind="lib" path="lib/commons-lang-2.1.jar"/>
+ <classpathentry kind="lib" path="lib/commons-logging-1.1.jar"/>
+ <classpathentry kind="lib" path="lib/nlog4j-1.2.24.jar"/>
+ <classpathentry kind="lib" path="lib/shared-ldap-0.9.6-SNAPSHOT.jar"/>
+ <classpathentry kind="output" path="classes"/>
+</classpath>
Added: directory/sandbox/seelmann/trunk/ldapstudio-aciitemeditor/.project
URL: http://svn.apache.org/viewvc/directory/sandbox/seelmann/trunk/ldapstudio-aciitemeditor/.project?view=auto&rev=490383
==============================================================================
--- directory/sandbox/seelmann/trunk/ldapstudio-aciitemeditor/.project (added)
+++ directory/sandbox/seelmann/trunk/ldapstudio-aciitemeditor/.project Tue Dec 26 13:47:13 2006
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>ldapstudio-aciitemeditor</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.jem.workbench.JavaEMFNature</nature>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.jem.beaninfo.BeanInfoNature</nature>
+ </natures>
+</projectDescription>
Added: directory/sandbox/seelmann/trunk/ldapstudio-aciitemeditor/META-INF/MANIFEST.MF
URL: http://svn.apache.org/viewvc/directory/sandbox/seelmann/trunk/ldapstudio-aciitemeditor/META-INF/MANIFEST.MF?view=auto&rev=490383
==============================================================================
--- directory/sandbox/seelmann/trunk/ldapstudio-aciitemeditor/META-INF/MANIFEST.MF (added)
+++ directory/sandbox/seelmann/trunk/ldapstudio-aciitemeditor/META-INF/MANIFEST.MF Tue Dec 26 13:47:13 2006
@@ -0,0 +1,25 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: ACI Item Editor Plug-in
+Bundle-SymbolicName: org.apache.directory.ldapstudio.aciitemeditor;singleton:=true
+Bundle-Version: 0.0.1
+Bundle-Activator: org.apache.directory.ldapstudio.aciitemeditor.Activator
+Bundle-Localization: plugin
+Require-Bundle: org.eclipse.ui,
+ org.eclipse.core.runtime,
+ org.eclipse.jface.text,
+ org.eclipse.core.resources,
+ org.eclipse.ui.editors,
+ org.eclipse.ui.ide,
+ org.eclipse.ui.workbench.texteditor,
+ org.eclipse.ui.forms
+Eclipse-LazyStart: true
+Bundle-Vendor: apache.org
+Bundle-ClassPath: .,
+ lib/shared-ldap-0.9.6-SNAPSHOT.jar,
+ lib/antlr-2.7.6.jar,
+ lib/commons-collections-3.1.jar,
+ lib/commons-configuration-1.2.jar,
+ lib/commons-lang-2.1.jar,
+ lib/commons-logging-1.1.jar,
+ lib/nlog4j-1.2.24.jar
Added: directory/sandbox/seelmann/trunk/ldapstudio-aciitemeditor/build.properties
URL: http://svn.apache.org/viewvc/directory/sandbox/seelmann/trunk/ldapstudio-aciitemeditor/build.properties?view=auto&rev=490383
==============================================================================
--- directory/sandbox/seelmann/trunk/ldapstudio-aciitemeditor/build.properties (added)
+++ directory/sandbox/seelmann/trunk/ldapstudio-aciitemeditor/build.properties Tue Dec 26 13:47:13 2006
@@ -0,0 +1,13 @@
+source.. = src/
+output.. = classes/
+bin.includes = plugin.xml,\
+ META-INF/,\
+ .,\
+ icons/,\
+ lib/shared-ldap-0.9.6-SNAPSHOT.jar,\
+ lib/antlr-2.7.6.jar,\
+ lib/commons-collections-3.1.jar,\
+ lib/commons-configuration-1.2.jar,\
+ lib/commons-lang-2.1.jar,\
+ lib/commons-logging-1.1.jar,\
+ lib/nlog4j-1.2.24.jar
Added: directory/sandbox/seelmann/trunk/ldapstudio-aciitemeditor/icons/checkbox_checked.gif
URL: http://svn.apache.org/viewvc/directory/sandbox/seelmann/trunk/ldapstudio-aciitemeditor/icons/checkbox_checked.gif?view=auto&rev=490383
==============================================================================
Binary file - no diff available.
Propchange: directory/sandbox/seelmann/trunk/ldapstudio-aciitemeditor/icons/checkbox_checked.gif
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: directory/sandbox/seelmann/trunk/ldapstudio-aciitemeditor/icons/checkbox_unchecked.gif
URL: http://svn.apache.org/viewvc/directory/sandbox/seelmann/trunk/ldapstudio-aciitemeditor/icons/checkbox_unchecked.gif?view=auto&rev=490383
==============================================================================
Binary file - no diff available.
Propchange: directory/sandbox/seelmann/trunk/ldapstudio-aciitemeditor/icons/checkbox_unchecked.gif
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: directory/sandbox/seelmann/trunk/ldapstudio-aciitemeditor/icons/old/checkbox_checked.gif
URL: http://svn.apache.org/viewvc/directory/sandbox/seelmann/trunk/ldapstudio-aciitemeditor/icons/old/checkbox_checked.gif?view=auto&rev=490383
==============================================================================
Binary file - no diff available.
Propchange: directory/sandbox/seelmann/trunk/ldapstudio-aciitemeditor/icons/old/checkbox_checked.gif
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: directory/sandbox/seelmann/trunk/ldapstudio-aciitemeditor/icons/old/checkbox_unchecked.gif
URL: http://svn.apache.org/viewvc/directory/sandbox/seelmann/trunk/ldapstudio-aciitemeditor/icons/old/checkbox_unchecked.gif?view=auto&rev=490383
==============================================================================
Binary file - no diff available.
Propchange: directory/sandbox/seelmann/trunk/ldapstudio-aciitemeditor/icons/old/checkbox_unchecked.gif
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: directory/sandbox/seelmann/trunk/ldapstudio-aciitemeditor/icons/sample.gif
URL: http://svn.apache.org/viewvc/directory/sandbox/seelmann/trunk/ldapstudio-aciitemeditor/icons/sample.gif?view=auto&rev=490383
==============================================================================
Binary file - no diff available.
Propchange: directory/sandbox/seelmann/trunk/ldapstudio-aciitemeditor/icons/sample.gif
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: directory/sandbox/seelmann/trunk/ldapstudio-aciitemeditor/lib/antlr-2.7.6.jar
URL: http://svn.apache.org/viewvc/directory/sandbox/seelmann/trunk/ldapstudio-aciitemeditor/lib/antlr-2.7.6.jar?view=auto&rev=490383
==============================================================================
Binary file - no diff available.
Propchange: directory/sandbox/seelmann/trunk/ldapstudio-aciitemeditor/lib/antlr-2.7.6.jar
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: directory/sandbox/seelmann/trunk/ldapstudio-aciitemeditor/lib/commons-collections-3.1.jar
URL: http://svn.apache.org/viewvc/directory/sandbox/seelmann/trunk/ldapstudio-aciitemeditor/lib/commons-collections-3.1.jar?view=auto&rev=490383
==============================================================================
Binary file - no diff available.
Propchange: directory/sandbox/seelmann/trunk/ldapstudio-aciitemeditor/lib/commons-collections-3.1.jar
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: directory/sandbox/seelmann/trunk/ldapstudio-aciitemeditor/lib/commons-configuration-1.2.jar
URL: http://svn.apache.org/viewvc/directory/sandbox/seelmann/trunk/ldapstudio-aciitemeditor/lib/commons-configuration-1.2.jar?view=auto&rev=490383
==============================================================================
Binary file - no diff available.
Propchange: directory/sandbox/seelmann/trunk/ldapstudio-aciitemeditor/lib/commons-configuration-1.2.jar
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: directory/sandbox/seelmann/trunk/ldapstudio-aciitemeditor/lib/commons-lang-2.1.jar
URL: http://svn.apache.org/viewvc/directory/sandbox/seelmann/trunk/ldapstudio-aciitemeditor/lib/commons-lang-2.1.jar?view=auto&rev=490383
==============================================================================
Binary file - no diff available.
Propchange: directory/sandbox/seelmann/trunk/ldapstudio-aciitemeditor/lib/commons-lang-2.1.jar
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: directory/sandbox/seelmann/trunk/ldapstudio-aciitemeditor/lib/commons-logging-1.1.jar
URL: http://svn.apache.org/viewvc/directory/sandbox/seelmann/trunk/ldapstudio-aciitemeditor/lib/commons-logging-1.1.jar?view=auto&rev=490383
==============================================================================
Binary file - no diff available.
Propchange: directory/sandbox/seelmann/trunk/ldapstudio-aciitemeditor/lib/commons-logging-1.1.jar
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: directory/sandbox/seelmann/trunk/ldapstudio-aciitemeditor/lib/nlog4j-1.2.24.jar
URL: http://svn.apache.org/viewvc/directory/sandbox/seelmann/trunk/ldapstudio-aciitemeditor/lib/nlog4j-1.2.24.jar?view=auto&rev=490383
==============================================================================
Binary file - no diff available.
Propchange: directory/sandbox/seelmann/trunk/ldapstudio-aciitemeditor/lib/nlog4j-1.2.24.jar
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: directory/sandbox/seelmann/trunk/ldapstudio-aciitemeditor/lib/shared-ldap-0.9.6-SNAPSHOT.jar
URL: http://svn.apache.org/viewvc/directory/sandbox/seelmann/trunk/ldapstudio-aciitemeditor/lib/shared-ldap-0.9.6-SNAPSHOT.jar?view=auto&rev=490383
==============================================================================
Binary file - no diff available.
Propchange: directory/sandbox/seelmann/trunk/ldapstudio-aciitemeditor/lib/shared-ldap-0.9.6-SNAPSHOT.jar
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: directory/sandbox/seelmann/trunk/ldapstudio-aciitemeditor/plugin.xml
URL: http://svn.apache.org/viewvc/directory/sandbox/seelmann/trunk/ldapstudio-aciitemeditor/plugin.xml?view=auto&rev=490383
==============================================================================
--- directory/sandbox/seelmann/trunk/ldapstudio-aciitemeditor/plugin.xml (added)
+++ directory/sandbox/seelmann/trunk/ldapstudio-aciitemeditor/plugin.xml Tue Dec 26 13:47:13 2006
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.2"?>
+<plugin>
+
+ <extension
+ point="org.eclipse.ui.editors">
+ <editor
+ name="ACI Item Editor"
+ extensions="aci"
+ icon="icons/sample.gif"
+ contributorClass="org.apache.directory.ldapstudio.aciitemeditor.editors.MultiPageEditorContributor"
+ class="org.apache.directory.ldapstudio.aciitemeditor.editors.MultiPageEditor"
+ id="org.apache.directory.ldapstudio.aciitemeditor.editors.MultiPageEditor">
+ </editor>
+ </extension>
+
+</plugin>
Added: directory/sandbox/seelmann/trunk/ldapstudio-aciitemeditor/src/Test.java
URL: http://svn.apache.org/viewvc/directory/sandbox/seelmann/trunk/ldapstudio-aciitemeditor/src/Test.java?view=auto&rev=490383
==============================================================================
--- directory/sandbox/seelmann/trunk/ldapstudio-aciitemeditor/src/Test.java (added)
+++ directory/sandbox/seelmann/trunk/ldapstudio-aciitemeditor/src/Test.java Tue Dec 26 13:47:13 2006
@@ -0,0 +1,51 @@
+import org.apache.directory.ldapstudio.aciitemeditor.ACIItemSerializer;
+import org.apache.directory.shared.ldap.aci.ACIItem;
+import org.apache.directory.shared.ldap.aci.ACIItemParser;
+
+
+public class Test
+{
+
+ public static void main (String [] args) throws Exception {
+
+ ACIItemParser parser = new ACIItemParser( null );
+
+
+ String spec = "{ identificationTag \"id1\", precedence 1, authenticationLevel simple, "
+ + "itemOrUserFirst itemFirst: { protectedItems { entry }, "
+ + "itemPermissions { { userClasses { allUsers }, grantsAndDenials { grantAdd } } }"
+ + " } }";
+// String spec = "{ identificationTag \"id1\", precedence 114, authenticationLevel simple , "
+// + "itemOrUserFirst itemFirst :{ protectedItems { entry , attributeType { 1.2.3 , ou } , "
+// + " attributeValue { ou=people , cn=Ersin } , rangeOfValues (cn=ErsinEr) , "
+// + "classes and : { item: xyz , or:{item:X,item:Y} }} , "
+// + "itemPermissions { { userClasses {allUsers , userGroup { \"1.2=y,z=t\" , \"a=b,c=d\" } "
+// + " , subtree { { base \"ou=people\" } } } , grantsAndDenials { denyCompare , grantModify } },"
+// + "{ precedence 10, userClasses {allUsers , userGroup { \"1.2=y,z=t\" , \"a=b,c=d\" } "
+// + " , subtree { { base \"ou=people\" } } } , grantsAndDenials { denyCompare , grantModify } } } }}";
+ System.out.println(spec);
+
+
+ ACIItem aciItem = parser.parse( spec );
+ System.out.println(aciItem);
+
+
+ StringBuffer serializedAciItem = new StringBuffer();
+ aciItem.printToBuffer( serializedAciItem );
+ System.out.println(serializedAciItem);
+
+
+ ACIItem aciItem2 = parser.parse( serializedAciItem.toString() );
+ System.out.println(aciItem2);
+
+
+ StringBuffer serializedAciItem2 = new StringBuffer();
+ aciItem.printToBuffer( serializedAciItem2 );
+ System.out.println(serializedAciItem2);
+
+
+ }
+
+
+
+}
Added: directory/sandbox/seelmann/trunk/ldapstudio-aciitemeditor/src/org/apache/directory/ldapstudio/aciitemeditor/ACIItemSerializer.java
URL: http://svn.apache.org/viewvc/directory/sandbox/seelmann/trunk/ldapstudio-aciitemeditor/src/org/apache/directory/ldapstudio/aciitemeditor/ACIItemSerializer.java?view=auto&rev=490383
==============================================================================
--- directory/sandbox/seelmann/trunk/ldapstudio-aciitemeditor/src/org/apache/directory/ldapstudio/aciitemeditor/ACIItemSerializer.java (added)
+++ directory/sandbox/seelmann/trunk/ldapstudio-aciitemeditor/src/org/apache/directory/ldapstudio/aciitemeditor/ACIItemSerializer.java Tue Dec 26 13:47:13 2006
@@ -0,0 +1,261 @@
+
+package org.apache.directory.ldapstudio.aciitemeditor;
+
+import java.util.Collection;
+import java.util.Iterator;
+
+import org.apache.directory.shared.ldap.aci.ACIItem;
+import org.apache.directory.shared.ldap.aci.ItemFirstACIItem;
+import org.apache.directory.shared.ldap.aci.ItemPermission;
+import org.apache.directory.shared.ldap.aci.ProtectedItem;
+import org.apache.directory.shared.ldap.aci.UserClass;
+import org.apache.directory.shared.ldap.aci.UserFirstACIItem;
+import org.apache.directory.shared.ldap.aci.UserPermission;
+
+public class ACIItemSerializer
+{
+
+ public static final char OPEN_CURLY = '{';
+ public static final char CLOSE_CURLY = '}';
+ public static final char SEP = ',';
+ public static final char SP = ' ';
+ public static final char COLON = ':';
+ public static final char QUOTE = '"';
+
+
+ public static void serializeACIItem( ACIItem aciItem, StringBuffer sb ) {
+
+ sb.append( OPEN_CURLY );
+ sb.append( SP );
+
+ // identificationTag
+ sb.append( "identificationTag" );
+ sb.append( SP );
+ sb.append( QUOTE );
+ sb.append( aciItem.getIdentificationTag() );
+ sb.append( QUOTE );
+ sb.append( SEP );
+ sb.append( SP );
+
+ // precedence
+ sb.append( "precedence" );
+ sb.append( SP );
+ sb.append( aciItem.getPrecedence() );
+ sb.append( SEP );
+ sb.append( SP );
+
+ // authenticationLevel
+ sb.append( "authenticationLevel" );
+ sb.append( SP );
+ sb.append( aciItem.getAuthenticationLevel().getName() );
+ sb.append( SEP );
+ sb.append( SP );
+
+
+ // itemOrUserFirst
+ if(aciItem instanceof ItemFirstACIItem)
+ {
+ sb.append( "itemOrUserFirst" );
+ sb.append( SP );
+ sb.append( "itemFirst" );
+ sb.append( COLON );
+ sb.append( SP );
+
+ ItemFirstACIItem itemFirstACIItem = (ItemFirstACIItem)aciItem;
+ serializeItemFirst( itemFirstACIItem, sb );
+ }
+ else if(aciItem instanceof UserFirstACIItem)
+ {
+ sb.append( "itemOrUserFirst" );
+ sb.append( SP );
+ sb.append( "userFirst" );
+ sb.append( COLON );
+ sb.append( SP );
+
+ UserFirstACIItem userFirstACIItem = (UserFirstACIItem)aciItem;
+ serializeUserFirst( userFirstACIItem, sb );
+ }
+
+
+ sb.append( SP );
+ sb.append( CLOSE_CURLY );
+
+ }
+
+
+ public static void serializeItemFirst( ItemFirstACIItem itemFirstACIItem, StringBuffer sb )
+ {
+ sb.append( OPEN_CURLY );
+ sb.append( SP );
+
+ serializeProtectedItems( itemFirstACIItem.getProtectedItems(), sb );
+ sb.append( SEP );
+ sb.append( SP );
+ serializeItemPermissions( itemFirstACIItem.getItemPermissions(), sb );
+
+ sb.append( SP );
+ sb.append( CLOSE_CURLY );
+ }
+
+
+ public static void serializeUserFirst( UserFirstACIItem userFirstACIItem, StringBuffer sb )
+ {
+ sb.append( OPEN_CURLY );
+ sb.append( SP );
+
+ serializeUserClasses( userFirstACIItem.getUserClasses(), sb );
+ sb.append( SEP );
+ sb.append( SP );
+ serializeUserPermissions( userFirstACIItem.getUserPermission(), sb );
+
+ sb.append( SP );
+ sb.append( CLOSE_CURLY );
+ }
+
+
+ public static void serializeProtectedItems( Collection<ProtectedItem> userPermissions, StringBuffer sb )
+ {
+ sb.append( "protectedItems" );
+ sb.append( SP );
+ sb.append( OPEN_CURLY );
+ sb.append( SP );
+
+ for ( Iterator<ProtectedItem> it = userPermissions.iterator(); it.hasNext(); )
+ {
+ ProtectedItem item = it.next();
+ if(item instanceof ProtectedItem.Entry)
+ {
+ serializeProtectedItem( (ProtectedItem.Entry)item, sb );
+ }
+ else if(item instanceof ProtectedItem.AllUserAttributeTypes)
+ {
+ serializeProtectedItem( (ProtectedItem.AllUserAttributeTypes)item, sb );
+ }
+
+ else if(item instanceof ProtectedItem.AttributeType)
+ {
+ serializeProtectedItem( (ProtectedItem.AttributeType)item, sb );
+ }
+ else if(item instanceof ProtectedItem.AllAttributeValues)
+ {
+ serializeProtectedItem( (ProtectedItem.AllAttributeValues)item, sb );
+ }
+ else if(item instanceof ProtectedItem.AllUserAttributeTypesAndValues)
+ {
+ serializeProtectedItem( (ProtectedItem.AllUserAttributeTypesAndValues)item, sb );
+ }
+ else if(item instanceof ProtectedItem.AttributeValue)
+ {
+ serializeProtectedItem( (ProtectedItem.AttributeValue)item, sb );
+ }
+ else if(item instanceof ProtectedItem.SelfValue)
+ {
+ serializeProtectedItem( (ProtectedItem.SelfValue)item, sb );
+ }
+ else if(item instanceof ProtectedItem.RangeOfValues)
+ {
+ serializeProtectedItem( (ProtectedItem.RangeOfValues)item, sb );
+ }
+ else if(item instanceof ProtectedItem.MaxValueCount)
+ {
+ serializeProtectedItem( (ProtectedItem.MaxValueCount)item, sb );
+ }
+ else if(item instanceof ProtectedItem.MaxImmSub)
+ {
+ serializeProtectedItem( (ProtectedItem.MaxImmSub)item, sb );
+ }
+ else if(item instanceof ProtectedItem.RestrictedBy)
+ {
+ serializeProtectedItem( (ProtectedItem.RestrictedBy)item, sb );
+ }
+ else if(item instanceof ProtectedItem.Classes)
+ {
+ serializeProtectedItem( (ProtectedItem.Classes)item, sb );
+ }
+
+
+ if(it.hasNext()) {
+ sb.append( SEP );
+ sb.append( SP );
+ }
+ }
+
+ sb.append( SP );
+ sb.append( CLOSE_CURLY );
+ }
+
+
+ public static void serializeItemPermissions( Collection<ItemPermission> itemPermissions, StringBuffer sb )
+ {
+ // TODO Auto-generated method stub
+
+ }
+
+
+ public static void serializeUserClasses( Collection<UserClass> userClasses, StringBuffer sb )
+ {
+ // TODO Auto-generated method stub
+
+ }
+
+
+ public static void serializeUserPermissions( Collection<UserPermission> userPermissions, StringBuffer sb )
+ {
+ // TODO Auto-generated method stub
+
+ }
+
+
+
+
+ public static void serializeProtectedItem( ProtectedItem.Entry item, StringBuffer sb )
+ {
+ sb.append( "entry" );
+ }
+ public static void serializeProtectedItem( ProtectedItem.AllUserAttributeTypes item, StringBuffer sb )
+ {
+
+ }
+ public static void serializeProtectedItem( ProtectedItem.AttributeType item, StringBuffer sb )
+ {
+
+ }
+ public static void serializeProtectedItem( ProtectedItem.AllAttributeValues item, StringBuffer sb )
+ {
+
+ }
+ public static void serializeProtectedItem( ProtectedItem.AllUserAttributeTypesAndValues item, StringBuffer sb )
+ {
+
+ }
+ public static void serializeProtectedItem( ProtectedItem.AttributeValue item, StringBuffer sb )
+ {
+
+ }
+ public static void serializeProtectedItem( ProtectedItem.SelfValue item, StringBuffer sb )
+ {
+
+ }
+ public static void serializeProtectedItem( ProtectedItem.RangeOfValues item, StringBuffer sb )
+ {
+
+ }
+ public static void serializeProtectedItem( ProtectedItem.MaxValueCount item, StringBuffer sb )
+ {
+
+ }
+ public static void serializeProtectedItem( ProtectedItem.MaxImmSub item, StringBuffer sb )
+ {
+
+ }
+ public static void serializeProtectedItem( ProtectedItem.RestrictedBy item, StringBuffer sb )
+ {
+
+ }
+ public static void serializeProtectedItem( ProtectedItem.Classes item, StringBuffer sb )
+ {
+
+ }
+
+
+}
Added: directory/sandbox/seelmann/trunk/ldapstudio-aciitemeditor/src/org/apache/directory/ldapstudio/aciitemeditor/Activator.java
URL: http://svn.apache.org/viewvc/directory/sandbox/seelmann/trunk/ldapstudio-aciitemeditor/src/org/apache/directory/ldapstudio/aciitemeditor/Activator.java?view=auto&rev=490383
==============================================================================
--- directory/sandbox/seelmann/trunk/ldapstudio-aciitemeditor/src/org/apache/directory/ldapstudio/aciitemeditor/Activator.java (added)
+++ directory/sandbox/seelmann/trunk/ldapstudio-aciitemeditor/src/org/apache/directory/ldapstudio/aciitemeditor/Activator.java Tue Dec 26 13:47:13 2006
@@ -0,0 +1,120 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+package org.apache.directory.ldapstudio.aciitemeditor;
+
+
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.osgi.framework.BundleContext;
+
+
+/**
+ * The activator class controls the plug-in life cycle
+ */
+public class Activator extends AbstractUIPlugin
+{
+
+ // The plug-in ID
+ public static final String PLUGIN_ID = "org.apache.directory.ldapstudio.aciitemeditor";
+
+ // The shared instance
+ private static Activator plugin;
+
+
+ /**
+ * The constructor
+ */
+ public Activator()
+ {
+ plugin = this;
+ }
+
+
+ /*
+ * (non-Javadoc)
+ * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
+ */
+ public void start( BundleContext context ) throws Exception
+ {
+ super.start( context );
+ }
+
+
+ /*
+ * (non-Javadoc)
+ * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)
+ */
+ public void stop( BundleContext context ) throws Exception
+ {
+ plugin = null;
+ super.stop( context );
+ }
+
+
+ /**
+ * Returns the shared instance
+ *
+ * @return the shared instance
+ */
+ public static Activator getDefault()
+ {
+ return plugin;
+ }
+
+
+ /**
+ * Returns an image descriptor for the image file at the given
+ * plug-in relative path
+ *
+ * @param path the path
+ * @return the image descriptor
+ */
+ public static ImageDescriptor getImageDescriptor( String path )
+ {
+ return imageDescriptorFromPlugin( PLUGIN_ID, path );
+ }
+
+
+ /**
+ * Use this method to get SWT images. A ImageRegistry is used
+ * to manage the the path->Image mapping.
+ * <p>
+ * Note: Don't dispose the returned SWT Image. It is disposed
+ * automatically when the plugin is stopped.
+ *
+ * @param path the path
+ * @return The SWT Image or null
+ */
+ public Image getImage( String path )
+ {
+ Image image = getImageRegistry().get( path );
+ if ( image == null )
+ {
+ ImageDescriptor id = getImageDescriptor( path );
+ if ( id != null )
+ {
+ image = id.createImage();
+ getImageRegistry().put( path, image );
+ }
+ }
+ return image;
+ }
+}
Added: directory/sandbox/seelmann/trunk/ldapstudio-aciitemeditor/src/org/apache/directory/ldapstudio/aciitemeditor/dialogs/ACIItemDialog.java
URL: http://svn.apache.org/viewvc/directory/sandbox/seelmann/trunk/ldapstudio-aciitemeditor/src/org/apache/directory/ldapstudio/aciitemeditor/dialogs/ACIItemDialog.java?view=auto&rev=490383
==============================================================================
--- directory/sandbox/seelmann/trunk/ldapstudio-aciitemeditor/src/org/apache/directory/ldapstudio/aciitemeditor/dialogs/ACIItemDialog.java (added)
+++ directory/sandbox/seelmann/trunk/ldapstudio-aciitemeditor/src/org/apache/directory/ldapstudio/aciitemeditor/dialogs/ACIItemDialog.java Tue Dec 26 13:47:13 2006
@@ -0,0 +1,34 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+
+package org.apache.directory.ldapstudio.aciitemeditor.dialogs;
+
+import org.eclipse.jface.dialogs.Dialog;
+import org.eclipse.swt.widgets.Shell;
+
+public class ACIItemDialog extends Dialog
+{
+
+ protected ACIItemDialog( Shell parentShell )
+ {
+ super( parentShell );
+ }
+
+}
Added: directory/sandbox/seelmann/trunk/ldapstudio-aciitemeditor/src/org/apache/directory/ldapstudio/aciitemeditor/dialogs/TextDialog.java
URL: http://svn.apache.org/viewvc/directory/sandbox/seelmann/trunk/ldapstudio-aciitemeditor/src/org/apache/directory/ldapstudio/aciitemeditor/dialogs/TextDialog.java?view=auto&rev=490383
==============================================================================
--- directory/sandbox/seelmann/trunk/ldapstudio-aciitemeditor/src/org/apache/directory/ldapstudio/aciitemeditor/dialogs/TextDialog.java (added)
+++ directory/sandbox/seelmann/trunk/ldapstudio-aciitemeditor/src/org/apache/directory/ldapstudio/aciitemeditor/dialogs/TextDialog.java Tue Dec 26 13:47:13 2006
@@ -0,0 +1,112 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+
+package org.apache.directory.ldapstudio.aciitemeditor.dialogs;
+
+
+import org.eclipse.jface.dialogs.Dialog;
+import org.eclipse.jface.dialogs.IDialogConstants;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.swt.widgets.Text;
+
+
+public class TextDialog extends Dialog
+{
+
+ public static final String DIALOG_TITLE = "Text Editor";
+
+ public static final double MAX_WIDTH = 250.0;
+
+ public static final double MAX_HEIGHT = 250.0;
+
+ private String initialValue;
+
+ private String returnValue;
+
+ private Text text;
+
+
+ public TextDialog( Shell parentShell, String initialValue )
+ {
+ super( parentShell );
+ super.setShellStyle( super.getShellStyle() | SWT.RESIZE );
+ if(initialValue == null) initialValue = "";
+ this.initialValue = initialValue;
+ this.returnValue = null;
+ }
+
+
+ public boolean close()
+ {
+ return super.close();
+ }
+
+
+ protected void configureShell( Shell shell )
+ {
+ super.configureShell( shell );
+ shell.setText( DIALOG_TITLE );
+ //shell.setImage( BrowserUIPlugin.getDefault().getImage( BrowserUIConstants.IMG_TEXTEDITOR ) );
+ }
+
+
+ protected void createButtonsForButtonBar( Composite parent )
+ {
+ createButton( parent, IDialogConstants.OK_ID, IDialogConstants.OK_LABEL, false );
+ createButton( parent, IDialogConstants.CANCEL_ID, IDialogConstants.CANCEL_LABEL, false );
+ }
+
+
+ protected void okPressed()
+ {
+ this.returnValue = this.text.getText();
+ super.okPressed();
+ }
+
+
+ protected Control createDialogArea( Composite parent )
+ {
+ // create composite
+ Composite composite = ( Composite ) super.createDialogArea( parent );
+ GridData gd = new GridData( GridData.FILL_BOTH );
+ composite.setLayoutData( gd );
+
+ // text widget
+ text = new Text( composite, SWT.MULTI | SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL );
+ text.setText( this.initialValue );
+ gd = new GridData( GridData.FILL_BOTH );
+ gd.widthHint = convertHorizontalDLUsToPixels( IDialogConstants.MINIMUM_MESSAGE_AREA_WIDTH );
+ gd.heightHint = convertHorizontalDLUsToPixels( IDialogConstants.MINIMUM_MESSAGE_AREA_WIDTH / 2 );
+ text.setLayoutData( gd );
+
+ applyDialogFont( composite );
+ return composite;
+ }
+
+
+ public String getText()
+ {
+ return this.returnValue;
+ }
+}
Added: directory/sandbox/seelmann/trunk/ldapstudio-aciitemeditor/src/org/apache/directory/ldapstudio/aciitemeditor/dialogs/UserClassDialog.java
URL: http://svn.apache.org/viewvc/directory/sandbox/seelmann/trunk/ldapstudio-aciitemeditor/src/org/apache/directory/ldapstudio/aciitemeditor/dialogs/UserClassDialog.java?view=auto&rev=490383
==============================================================================
--- directory/sandbox/seelmann/trunk/ldapstudio-aciitemeditor/src/org/apache/directory/ldapstudio/aciitemeditor/dialogs/UserClassDialog.java (added)
+++ directory/sandbox/seelmann/trunk/ldapstudio-aciitemeditor/src/org/apache/directory/ldapstudio/aciitemeditor/dialogs/UserClassDialog.java Tue Dec 26 13:47:13 2006
@@ -0,0 +1,269 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+
+package org.apache.directory.ldapstudio.aciitemeditor.dialogs;
+
+
+import org.apache.directory.shared.ldap.aci.UserClass;
+import org.eclipse.jface.dialogs.Dialog;
+import org.eclipse.jface.dialogs.IDialogConstants;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Group;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.swt.widgets.Text;
+
+
+public class UserClassDialog extends Dialog
+{
+
+ public static final String DIALOG_TITLE = "User Class Editor";
+
+ public static final double MAX_WIDTH = 250.0;
+
+ public static final double MAX_HEIGHT = 350.0;
+
+ private String initialValue;
+
+ private String returnValue;
+
+ private Class initialClass;
+
+ private Class returnClass;
+
+ private Group group;
+
+ private Button allUsersRadio;
+
+ private Button thisEntryRadio;
+
+ private Button nameRadio;
+
+ private Button userGroupRadio;
+
+ private Button subtreeRadio;
+
+ private Text text;
+
+
+ public UserClassDialog( Shell parentShell, Class initialClass, String initialValue )
+ {
+ super( parentShell );
+ super.setShellStyle( super.getShellStyle() | SWT.RESIZE );
+ this.initialClass = initialClass;
+ if ( initialValue == null )
+ initialValue = "";
+ this.initialValue = initialValue;
+ this.returnClass = null;
+ this.returnValue = null;
+ }
+
+
+ public boolean close()
+ {
+ return super.close();
+ }
+
+
+ protected void configureShell( Shell shell )
+ {
+ super.configureShell( shell );
+ shell.setText( DIALOG_TITLE );
+ //shell.setImage( BrowserUIPlugin.getDefault().getImage( BrowserUIConstants.IMG_TEXTEDITOR ) );
+ }
+
+
+ protected void createButtonsForButtonBar( Composite parent )
+ {
+ createButton( parent, IDialogConstants.OK_ID, IDialogConstants.OK_LABEL, false );
+ createButton( parent, IDialogConstants.CANCEL_ID, IDialogConstants.CANCEL_LABEL, false );
+ }
+
+
+ protected void okPressed()
+ {
+ returnClass = getUserClassFromRadios();
+ returnValue = text.getText();
+ super.okPressed();
+ }
+
+
+ protected Control createDialogArea( Composite parent )
+ {
+ // create composite
+ Composite composite = ( Composite ) super.createDialogArea( parent );
+ GridData gd = new GridData( GridData.FILL_BOTH );
+ composite.setLayoutData( gd );
+
+ // create classes group
+ GridLayout gridLayout = new GridLayout();
+ gridLayout.numColumns = 5;
+ GridData gridData = new GridData();
+ gridData.horizontalAlignment = GridData.FILL;
+ gridData.grabExcessHorizontalSpace = true;
+ gridData.verticalAlignment = GridData.CENTER;
+ group = new Group( composite, SWT.NONE );
+ group.setLayoutData( gridData );
+ group.setLayout( gridLayout );
+ group.setText( "User Class" );
+
+ allUsersRadio = new Button( group, SWT.RADIO );
+ allUsersRadio.setText( "All Users" );
+ allUsersRadio.addSelectionListener( new SelectionAdapter()
+ {
+ public void widgetSelected( SelectionEvent e )
+ {
+ update();
+ }
+ } );
+ thisEntryRadio = new Button( group, SWT.RADIO );
+ thisEntryRadio.setText( "This Entry" );
+ thisEntryRadio.addSelectionListener( new SelectionAdapter()
+ {
+ public void widgetSelected( SelectionEvent e )
+ {
+ update();
+ }
+ } );
+ nameRadio = new Button( group, SWT.RADIO );
+ nameRadio.setText( "Name" );
+ nameRadio.addSelectionListener( new SelectionAdapter()
+ {
+ public void widgetSelected( SelectionEvent e )
+ {
+ update();
+ }
+ } );
+ userGroupRadio = new Button( group, SWT.RADIO );
+ userGroupRadio.setText( "User Group" );
+ userGroupRadio.addSelectionListener( new SelectionAdapter()
+ {
+ public void widgetSelected( SelectionEvent e )
+ {
+ update();
+ }
+ } );
+ subtreeRadio = new Button( group, SWT.RADIO );
+ subtreeRadio.setText( "Subtree" );
+ subtreeRadio.addSelectionListener( new SelectionAdapter()
+ {
+ public void widgetSelected( SelectionEvent e )
+ {
+ update();
+ }
+ } );
+ if ( initialClass != null )
+ {
+ if ( initialClass == UserClass.AllUsers.class )
+ {
+ allUsersRadio.setSelection( true );
+ }
+ else if ( initialClass == UserClass.ThisEntry.class )
+ {
+ thisEntryRadio.setSelection( true );
+
+ }
+ else if ( initialClass == UserClass.Name.class )
+ {
+ nameRadio.setSelection( true );
+ }
+ else if ( initialClass == UserClass.UserGroup.class )
+ {
+ userGroupRadio.setSelection( true );
+ }
+ else if ( initialClass == UserClass.Subtree.class )
+ {
+ subtreeRadio.setSelection( true );
+ }
+ }
+
+ // create text widget
+ text = new Text( composite, SWT.MULTI | SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL );
+ text.setText( this.initialValue );
+ gd = new GridData( GridData.FILL_BOTH );
+ gd.widthHint = convertHorizontalDLUsToPixels( IDialogConstants.MINIMUM_MESSAGE_AREA_WIDTH );
+ gd.heightHint = convertHorizontalDLUsToPixels( IDialogConstants.MINIMUM_MESSAGE_AREA_WIDTH / 2 );
+ text.setLayoutData( gd );
+
+ update();
+
+ applyDialogFont( composite );
+ return composite;
+ }
+
+
+ private void update()
+ {
+ Class clazz = getUserClassFromRadios();
+ if ( clazz == null || clazz == UserClass.AllUsers.class || clazz == UserClass.ThisEntry.class )
+ {
+ text.setEnabled( false );
+ }
+ else
+ {
+ text.setEnabled( true );
+ }
+ }
+
+
+ private Class getUserClassFromRadios()
+ {
+ if ( allUsersRadio.getSelection() )
+ {
+ return UserClass.AllUsers.class;
+ }
+ else if ( thisEntryRadio.getSelection() )
+ {
+ return UserClass.ThisEntry.class;
+ }
+ else if ( nameRadio.getSelection() )
+ {
+ return UserClass.Name.class;
+ }
+ else if ( userGroupRadio.getSelection() )
+ {
+ return UserClass.UserGroup.class;
+ }
+ else if ( subtreeRadio.getSelection() )
+ {
+ return UserClass.Subtree.class;
+ }
+
+ return null;
+ }
+
+
+ public String getText()
+ {
+ return returnValue;
+ }
+
+
+ public Class getUserClassClass()
+ {
+ return returnClass;
+ }
+}
Added: directory/sandbox/seelmann/trunk/ldapstudio-aciitemeditor/src/org/apache/directory/ldapstudio/aciitemeditor/dialogs/UserPermissionDialog.java
URL: http://svn.apache.org/viewvc/directory/sandbox/seelmann/trunk/ldapstudio-aciitemeditor/src/org/apache/directory/ldapstudio/aciitemeditor/dialogs/UserPermissionDialog.java?view=auto&rev=490383
==============================================================================
--- directory/sandbox/seelmann/trunk/ldapstudio-aciitemeditor/src/org/apache/directory/ldapstudio/aciitemeditor/dialogs/UserPermissionDialog.java (added)
+++ directory/sandbox/seelmann/trunk/ldapstudio-aciitemeditor/src/org/apache/directory/ldapstudio/aciitemeditor/dialogs/UserPermissionDialog.java Tue Dec 26 13:47:13 2006
@@ -0,0 +1,163 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+
+package org.apache.directory.ldapstudio.aciitemeditor.dialogs;
+
+
+import java.text.ParseException;
+import java.util.Collection;
+
+import javax.swing.SpinnerListModel;
+
+import org.apache.directory.ldapstudio.aciitemeditor.widgets.ACIItemGrantsAndDenialsComposite;
+import org.apache.directory.ldapstudio.aciitemeditor.widgets.ACIItemProtectedItemsComposite;
+import org.apache.directory.shared.ldap.aci.GrantAndDenial;
+import org.apache.directory.shared.ldap.aci.ProtectedItem;
+import org.apache.directory.shared.ldap.aci.UserClass;
+import org.apache.directory.shared.ldap.aci.UserPermission;
+import org.eclipse.jface.dialogs.Dialog;
+import org.eclipse.jface.dialogs.IDialogConstants;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Group;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.swt.widgets.Spinner;
+import org.eclipse.swt.widgets.Text;
+
+
+public class UserPermissionDialog extends Dialog
+{
+
+ public static final String DIALOG_TITLE = "User Permission Editor";
+
+ public static final double MAX_WIDTH = 250.0;
+
+ public static final double MAX_HEIGHT = 350.0;
+
+ private UserPermission initialUserPermission;
+
+ private UserPermission returnUserPermission;
+
+ private Label precedenceLabel = null;
+
+ private Spinner precedenceSpinner = null;
+
+ private ACIItemProtectedItemsComposite protectedItemsComposite;
+
+ private ACIItemGrantsAndDenialsComposite grantsAndDenialsComposite;
+
+
+ public UserPermissionDialog( Shell parentShell, UserPermission initialUserPermission )
+ {
+ super( parentShell );
+ super.setShellStyle( super.getShellStyle() | SWT.RESIZE );
+ this.initialUserPermission = initialUserPermission;
+ this.returnUserPermission = null;
+ }
+
+
+ public boolean close()
+ {
+ return super.close();
+ }
+
+
+ protected void configureShell( Shell shell )
+ {
+ super.configureShell( shell );
+ shell.setText( DIALOG_TITLE );
+ //shell.setImage( BrowserUIPlugin.getDefault().getImage( BrowserUIConstants.IMG_TEXTEDITOR ) );
+ }
+
+
+ protected void createButtonsForButtonBar( Composite parent )
+ {
+ createButton( parent, IDialogConstants.OK_ID, IDialogConstants.OK_LABEL, false );
+ createButton( parent, IDialogConstants.CANCEL_ID, IDialogConstants.CANCEL_LABEL, false );
+ }
+
+
+ protected void okPressed()
+ {
+ try
+ {
+ int precedence = precedenceSpinner.getSelection();
+ Collection<ProtectedItem> protectedItems = protectedItemsComposite.getProtectedItems();
+ Collection<GrantAndDenial> grantsAndDenials = grantsAndDenialsComposite.getGrantsAndDenials();
+ returnUserPermission = new UserPermission(precedence, grantsAndDenials, protectedItems);
+ super.okPressed();
+ }
+ catch ( ParseException e )
+ {
+ MessageDialog.openError( getShell(), "Invalid User Permission", e.getMessage() );
+ }
+ }
+
+
+ protected Control createDialogArea( Composite parent )
+ {
+ Composite composite = ( Composite ) super.createDialogArea( parent );
+ GridData gd = new GridData( GridData.FILL_BOTH );
+ composite.setLayoutData( gd );
+
+ Composite spinnerComposite = new Composite( composite, SWT.NONE );
+ spinnerComposite.setLayout( new GridLayout( 2, false ) );
+ spinnerComposite.setLayoutData( new GridData() );
+ precedenceLabel = new Label( spinnerComposite, SWT.NONE );
+ precedenceLabel.setText( "Precedence:" );
+ precedenceSpinner = new Spinner( spinnerComposite, SWT.BORDER );
+ precedenceSpinner.setValues( 0, 0, 255, 0, 1, 10 );
+ GridData precedenceGridData = new GridData();
+ precedenceGridData.grabExcessHorizontalSpace = true;
+ precedenceGridData.verticalAlignment = GridData.CENTER;
+ precedenceGridData.horizontalAlignment = GridData.BEGINNING;
+ precedenceGridData.widthHint = 3 * 12;
+ precedenceSpinner.setLayoutData( precedenceGridData );
+
+ protectedItemsComposite = new ACIItemProtectedItemsComposite( composite, SWT.NONE );
+
+ grantsAndDenialsComposite = new ACIItemGrantsAndDenialsComposite( composite, SWT.NONE );
+
+
+ if(initialUserPermission != null)
+ {
+ precedenceSpinner.setSelection( initialUserPermission.getPrecedence() );
+ protectedItemsComposite.setProtectedItems( initialUserPermission.getProtectedItems() );
+ grantsAndDenialsComposite.setGrantsAndDenials( initialUserPermission.getGrantsAndDenials() );
+ }
+
+ applyDialogFont( composite );
+ return composite;
+ }
+
+
+ public UserPermission getUserPermission()
+ {
+ return returnUserPermission;
+ }
+}
Added: directory/sandbox/seelmann/trunk/ldapstudio-aciitemeditor/src/org/apache/directory/ldapstudio/aciitemeditor/editors/MultiPageEditor.java
URL: http://svn.apache.org/viewvc/directory/sandbox/seelmann/trunk/ldapstudio-aciitemeditor/src/org/apache/directory/ldapstudio/aciitemeditor/editors/MultiPageEditor.java?view=auto&rev=490383
==============================================================================
--- directory/sandbox/seelmann/trunk/ldapstudio-aciitemeditor/src/org/apache/directory/ldapstudio/aciitemeditor/editors/MultiPageEditor.java (added)
+++ directory/sandbox/seelmann/trunk/ldapstudio-aciitemeditor/src/org/apache/directory/ldapstudio/aciitemeditor/editors/MultiPageEditor.java Tue Dec 26 13:47:13 2006
@@ -0,0 +1,134 @@
+package org.apache.directory.ldapstudio.aciitemeditor.editors;
+
+
+import org.apache.directory.ldapstudio.aciitemeditor.widgets.ACIItemComposite;
+import org.eclipse.core.resources.IMarker;
+import org.eclipse.core.resources.IResourceChangeEvent;
+import org.eclipse.core.resources.IResourceChangeListener;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.jface.dialogs.ErrorDialog;
+import org.eclipse.swt.SWT;
+import org.eclipse.ui.IEditorInput;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IEditorSite;
+import org.eclipse.ui.IFileEditorInput;
+import org.eclipse.ui.PartInitException;
+import org.eclipse.ui.editors.text.TextEditor;
+import org.eclipse.ui.ide.IDE;
+import org.eclipse.ui.part.MultiPageEditorPart;
+
+
+public class MultiPageEditor extends MultiPageEditorPart implements IResourceChangeListener{
+
+ /** The visual editor used on page 1. */
+ private ACIItemComposite aciItemComposite;
+
+ /** The source editor used on page 2. */
+ private TextEditor sourceEditor;
+
+ //private StyledText text;
+
+
+ public MultiPageEditor() {
+ super();
+ ResourcesPlugin.getWorkspace().addResourceChangeListener(this);
+ }
+
+ void createPage1()
+ {
+ aciItemComposite = new ACIItemComposite( getContainer(), SWT.NONE );
+ int index = addPage(aciItemComposite);
+ setPageText(index, "Visual Editor");
+ }
+
+ void createPage2() {
+ try {
+ sourceEditor = new TextEditor();
+ int index = addPage(sourceEditor, getEditorInput());
+ setPageText(index, "Source Editor");
+ } catch (PartInitException e) {
+ ErrorDialog.openError(
+ getSite().getShell(),
+ "Error creating nested text editor",
+ null,
+ e.getStatus());
+ }
+ }
+
+// void createPage2() {
+// Composite composite = new Composite(getContainer(), SWT.NONE);
+// FillLayout layout = new FillLayout();
+// composite.setLayout(layout);
+// text = new StyledText(composite, SWT.H_SCROLL | SWT.V_SCROLL);
+// text.setEditable(false);
+//
+// int index = addPage(composite);
+// setPageText(index, "Preview");
+// }
+
+
+ protected void createPages() {
+ createPage1();
+ createPage2();
+
+
+// ((GridData)visualPage.getUserClassesComposite().getLayoutData()).heightHint = 0;
+// getContainer().layout( true, true );
+ //getContainer().update();
+ //getContainer().redraw();
+
+ }
+
+
+ public void dispose() {
+ ResourcesPlugin.getWorkspace().removeResourceChangeListener(this);
+ super.dispose();
+ }
+
+
+ public void doSave(IProgressMonitor monitor) {
+ getEditor(1).doSave(monitor);
+ }
+
+
+ public void doSaveAs() {
+ IEditorPart editor = getEditor(1);
+ editor.doSaveAs();
+ setPageText(0, editor.getTitle());
+ setInput(editor.getEditorInput());
+ }
+
+ public void gotoMarker(IMarker marker) {
+ setActivePage(0);
+ IDE.gotoMarker(getEditor(1), marker);
+ }
+
+ public void init(IEditorSite site, IEditorInput editorInput)
+ throws PartInitException {
+ if (!(editorInput instanceof IFileEditorInput))
+ throw new PartInitException("Invalid Input: Must be IFileEditorInput");
+ super.init(site, editorInput);
+ }
+
+ public boolean isSaveAsAllowed() {
+ return true;
+ }
+
+ /**
+ * Calculates the contents of page 2 when the it is activated.
+ */
+ protected void pageChange(int newPageIndex) {
+ super.pageChange(newPageIndex);
+ if (newPageIndex == 2) {
+ // TODO
+ }
+ }
+
+ public void resourceChanged( IResourceChangeEvent event )
+ {
+
+ }
+
+
+}
Added: directory/sandbox/seelmann/trunk/ldapstudio-aciitemeditor/src/org/apache/directory/ldapstudio/aciitemeditor/editors/MultiPageEditorContributor.java
URL: http://svn.apache.org/viewvc/directory/sandbox/seelmann/trunk/ldapstudio-aciitemeditor/src/org/apache/directory/ldapstudio/aciitemeditor/editors/MultiPageEditorContributor.java?view=auto&rev=490383
==============================================================================
--- directory/sandbox/seelmann/trunk/ldapstudio-aciitemeditor/src/org/apache/directory/ldapstudio/aciitemeditor/editors/MultiPageEditorContributor.java (added)
+++ directory/sandbox/seelmann/trunk/ldapstudio-aciitemeditor/src/org/apache/directory/ldapstudio/aciitemeditor/editors/MultiPageEditorContributor.java Tue Dec 26 13:47:13 2006
@@ -0,0 +1,103 @@
+package org.apache.directory.ldapstudio.aciitemeditor.editors;
+
+import org.eclipse.jface.action.*;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.ui.IActionBars;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IWorkbenchActionConstants;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.actions.ActionFactory;
+import org.eclipse.ui.ide.IDE;
+import org.eclipse.ui.ide.IDEActionFactory;
+import org.eclipse.ui.part.MultiPageEditorActionBarContributor;
+import org.eclipse.ui.texteditor.ITextEditor;
+import org.eclipse.ui.texteditor.ITextEditorActionConstants;
+
+/**
+ * Manages the installation/deinstallation of global actions for multi-page editors.
+ * Responsible for the redirection of global actions to the active editor.
+ * Multi-page contributor replaces the contributors for the individual editors in the multi-page editor.
+ */
+public class MultiPageEditorContributor extends MultiPageEditorActionBarContributor {
+ private IEditorPart activeEditorPart;
+ private Action sampleAction;
+ /**
+ * Creates a multi-page contributor.
+ */
+ public MultiPageEditorContributor() {
+ super();
+ createActions();
+ }
+ /**
+ * Returns the action registed with the given text editor.
+ * @return IAction or null if editor is null.
+ */
+ protected IAction getAction(ITextEditor editor, String actionID) {
+ return (editor == null ? null : editor.getAction(actionID));
+ }
+ /* (non-JavaDoc)
+ * Method declared in AbstractMultiPageEditorActionBarContributor.
+ */
+
+ public void setActivePage(IEditorPart part) {
+ if (activeEditorPart == part)
+ return;
+
+ activeEditorPart = part;
+
+ IActionBars actionBars = getActionBars();
+ if (actionBars != null) {
+
+ ITextEditor editor = (part instanceof ITextEditor) ? (ITextEditor) part : null;
+
+ actionBars.setGlobalActionHandler(
+ ActionFactory.DELETE.getId(),
+ getAction(editor, ITextEditorActionConstants.DELETE));
+ actionBars.setGlobalActionHandler(
+ ActionFactory.UNDO.getId(),
+ getAction(editor, ITextEditorActionConstants.UNDO));
+ actionBars.setGlobalActionHandler(
+ ActionFactory.REDO.getId(),
+ getAction(editor, ITextEditorActionConstants.REDO));
+ actionBars.setGlobalActionHandler(
+ ActionFactory.CUT.getId(),
+ getAction(editor, ITextEditorActionConstants.CUT));
+ actionBars.setGlobalActionHandler(
+ ActionFactory.COPY.getId(),
+ getAction(editor, ITextEditorActionConstants.COPY));
+ actionBars.setGlobalActionHandler(
+ ActionFactory.PASTE.getId(),
+ getAction(editor, ITextEditorActionConstants.PASTE));
+ actionBars.setGlobalActionHandler(
+ ActionFactory.SELECT_ALL.getId(),
+ getAction(editor, ITextEditorActionConstants.SELECT_ALL));
+ actionBars.setGlobalActionHandler(
+ ActionFactory.FIND.getId(),
+ getAction(editor, ITextEditorActionConstants.FIND));
+ actionBars.setGlobalActionHandler(
+ IDEActionFactory.BOOKMARK.getId(),
+ getAction(editor, IDEActionFactory.BOOKMARK.getId()));
+ actionBars.updateActionBars();
+ }
+ }
+ private void createActions() {
+ sampleAction = new Action() {
+ public void run() {
+ MessageDialog.openInformation(null, "Test_editor Plug-in", "Sample Action Executed");
+ }
+ };
+ sampleAction.setText("Sample Action");
+ sampleAction.setToolTipText("Sample Action tool tip");
+ sampleAction.setImageDescriptor(PlatformUI.getWorkbench().getSharedImages().
+ getImageDescriptor(IDE.SharedImages.IMG_OBJS_TASK_TSK));
+ }
+ public void contributeToMenu(IMenuManager manager) {
+ IMenuManager menu = new MenuManager("Editor &Menu");
+ manager.prependToGroup(IWorkbenchActionConstants.MB_ADDITIONS, menu);
+ menu.add(sampleAction);
+ }
+ public void contributeToToolBar(IToolBarManager manager) {
+ manager.add(new Separator());
+ manager.add(sampleAction);
+ }
+}
Added: directory/sandbox/seelmann/trunk/ldapstudio-aciitemeditor/src/org/apache/directory/ldapstudio/aciitemeditor/widgets/ACIItemComposite.java
URL: http://svn.apache.org/viewvc/directory/sandbox/seelmann/trunk/ldapstudio-aciitemeditor/src/org/apache/directory/ldapstudio/aciitemeditor/widgets/ACIItemComposite.java?view=auto&rev=490383
==============================================================================
--- directory/sandbox/seelmann/trunk/ldapstudio-aciitemeditor/src/org/apache/directory/ldapstudio/aciitemeditor/widgets/ACIItemComposite.java (added)
+++ directory/sandbox/seelmann/trunk/ldapstudio-aciitemeditor/src/org/apache/directory/ldapstudio/aciitemeditor/widgets/ACIItemComposite.java Tue Dec 26 13:47:13 2006
@@ -0,0 +1,211 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+package org.apache.directory.ldapstudio.aciitemeditor.widgets;
+
+
+import java.text.ParseException;
+import java.util.ArrayList;
+import java.util.Collection;
+
+import org.apache.directory.shared.ldap.aci.ACIItem;
+import org.apache.directory.shared.ldap.aci.AuthenticationLevel;
+import org.apache.directory.shared.ldap.aci.UserFirstACIItem;
+import org.apache.directory.shared.ldap.aci.UserPermission;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.ScrolledComposite;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Label;
+
+
+/**
+ * This is the main widget of the ACI item visual editor. It manages
+ * the lifecyle of all other ACI item widgets. In particular it
+ * shows/hides the userFirst and itemFirst widgets depending on
+ * the user's selection.
+ * <p>
+ * It extends ScrolledComposite.
+ *
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ * @version $Rev$, $Date$
+ */
+public class ACIItemComposite extends ScrolledComposite implements WidgetModifyListener
+{
+ /** The inner composite for all the content */
+ private Composite composite = null;
+
+ /** The general composite contains id-tag, precedence, auth-level, userFirst/itemFirst */
+ private ACIItemGeneralComposite generalComposite = null;
+
+ /** The user classes composite used for userFirst selection */
+ private ACIItemUserClassesComposite userFirstUserClassesComposite = null;
+
+ /** The user permission composite used for userFirst selection */
+ private ACIItemUserPermissionsComposite userFirstUserPermissionsComposite = null;
+
+ /** The protected items composite used for itemFirst selection */
+ private ACIItemProtectedItemsComposite itemFirstProtectedItemsComposite = null;
+
+ /** The item permission composite used for itemFirst selection */
+ //private ACIItemItemPermissionsComposite itemFirstItemPermissionsComposite = null;
+
+
+ /**
+ * Creates a new instance of ACIItemComposite.
+ *
+ * @param parent
+ * @param style
+ */
+ public ACIItemComposite( Composite parent, int style )
+ {
+ super( parent, style | SWT.H_SCROLL | SWT.V_SCROLL );
+ setExpandHorizontal( true );
+ setExpandVertical( true );
+
+ createComposite();
+
+ setContent( composite );
+ setMinSize( composite.computeSize( SWT.DEFAULT, SWT.DEFAULT ) );
+ }
+
+
+ /**
+ * This method initializes the inner composite with all contained widgets.
+ *
+ */
+ private void createComposite()
+ {
+ GridLayout gridLayout = new GridLayout();
+ gridLayout.numColumns = 1;
+ GridData gridData = new GridData();
+ gridData.horizontalAlignment = GridData.FILL;
+ gridData.grabExcessHorizontalSpace = true;
+ gridData.verticalAlignment = GridData.CENTER;
+
+ composite = new Composite( this, SWT.NONE );
+ composite.setLayout( gridLayout );
+ composite.setLayoutData( gridData );
+
+
+ // test button
+ Button testButton = new Button( composite, SWT.NONE );
+ testButton.setText( " C H E C K " );
+ testButton.addSelectionListener( new SelectionAdapter(){
+ public void widgetSelected( SelectionEvent e )
+ {
+ try
+ {
+ String identificationTag = generalComposite.getIdentificationTag();
+ int precedence = generalComposite.getPrecedence();
+ AuthenticationLevel authenticationLevel = generalComposite.getAuthenticationLevel();
+
+ ACIItem item;
+ if( generalComposite.isUserFirst() )
+ {
+ Collection userClasses = userFirstUserClassesComposite.getUserClasses();
+ Collection userPermissions = userFirstUserPermissionsComposite.getUserPermissions();
+ item = new UserFirstACIItem(identificationTag, precedence, authenticationLevel, userClasses, userPermissions);
+ }
+ else if( generalComposite.isItemFirst() )
+ {
+ Collection protectedItems = itemFirstProtectedItemsComposite.getProtectedItems();
+ //Collection itemPermissions = itemFirstItemPermissionsComposite.getItemPermissions();
+ Collection itemPermissions = new ArrayList();
+ item = new UserFirstACIItem(identificationTag, precedence, authenticationLevel, protectedItems, itemPermissions);
+ }
+ else {
+ throw new ParseException("No first selected", 0);
+ }
+
+ StringBuffer buffer = new StringBuffer();
+ item.printToBuffer( buffer );
+ MessageDialog.openInformation( getShell(), "Check", buffer.toString() );
+ System.out.println(buffer.toString());
+
+ }
+ catch ( Exception e1 )
+ {
+ MessageDialog.openError( getShell(), "Check Error", e1.getMessage() );
+ e1.printStackTrace();
+ }
+ }
+ } );
+
+ generalComposite = new ACIItemGeneralComposite( composite, SWT.NONE );
+ generalComposite.addWidgetModifyListener( this );
+
+ userFirstUserClassesComposite = new ACIItemUserClassesComposite( composite, SWT.NONE );
+ userFirstUserPermissionsComposite = new ACIItemUserPermissionsComposite( composite, SWT.NONE );
+
+ itemFirstProtectedItemsComposite = new ACIItemProtectedItemsComposite( composite, SWT.NONE );
+ //itemFirstItemPermissionsComposite = new ACIItemItemPermissionsComposite( composite, SWT.NONE );
+
+
+ widgetModified( null );
+ }
+
+ /**
+ * This method is called from the contained ACIItemXXXComposites
+ * when they are modified.
+ *
+ */
+ public void widgetModified( WidgetModifyEvent event )
+ {
+ // switch userFirst / itemFirst
+ if ( generalComposite.isItemFirst() && !generalComposite.isUserFirst() && !itemFirstProtectedItemsComposite.isVisible() )
+ {
+ userFirstUserClassesComposite.setVisible( false );
+ userFirstUserPermissionsComposite.setVisible( false );
+ itemFirstProtectedItemsComposite.setVisible( true );
+ //itemFirstItemPermissionsComposite.setVisible( true );
+
+ setMinSize( composite.computeSize( SWT.DEFAULT, SWT.DEFAULT ) );
+ layout( true, true );
+ }
+ else if ( generalComposite.isUserFirst() && !generalComposite.isItemFirst() && !userFirstUserClassesComposite.isVisible() )
+ {
+ userFirstUserClassesComposite.setVisible( true );
+ userFirstUserPermissionsComposite.setVisible( true );
+ itemFirstProtectedItemsComposite.setVisible( false );
+ //itemFirstItemPermissionsComposite.setVisible( false );
+
+ setMinSize( composite.computeSize( SWT.DEFAULT, SWT.DEFAULT ) );
+ layout( true, true );
+ }
+ else if( !generalComposite.isItemFirst() && !generalComposite.isUserFirst() )
+ {
+ userFirstUserClassesComposite.setVisible( false );
+ userFirstUserPermissionsComposite.setVisible( false );
+ itemFirstProtectedItemsComposite.setVisible( false );
+ //itemFirstItemPermissionsComposite.setVisible( false );
+
+ setMinSize( composite.computeSize( SWT.DEFAULT, SWT.DEFAULT ) );
+ layout( true, true );
+ }
+
+ }
+
+} // @jve:decl-index=0:visual-constraint="10,10"
Added: directory/sandbox/seelmann/trunk/ldapstudio-aciitemeditor/src/org/apache/directory/ldapstudio/aciitemeditor/widgets/ACIItemGeneralComposite.java
URL: http://svn.apache.org/viewvc/directory/sandbox/seelmann/trunk/ldapstudio-aciitemeditor/src/org/apache/directory/ldapstudio/aciitemeditor/widgets/ACIItemGeneralComposite.java?view=auto&rev=490383
==============================================================================
--- directory/sandbox/seelmann/trunk/ldapstudio-aciitemeditor/src/org/apache/directory/ldapstudio/aciitemeditor/widgets/ACIItemGeneralComposite.java (added)
+++ directory/sandbox/seelmann/trunk/ldapstudio-aciitemeditor/src/org/apache/directory/ldapstudio/aciitemeditor/widgets/ACIItemGeneralComposite.java Tue Dec 26 13:47:13 2006
@@ -0,0 +1,297 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+package org.apache.directory.ldapstudio.aciitemeditor.widgets;
+
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.directory.shared.ldap.aci.AuthenticationLevel;
+import org.eclipse.jface.viewers.ArrayContentProvider;
+import org.eclipse.jface.viewers.ComboViewer;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.ModifyEvent;
+import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.events.TypedEvent;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Combo;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Spinner;
+import org.eclipse.swt.widgets.Text;
+
+/**
+ * This composite contains general ACI item properties:
+ * <ul>
+ * <li>identification tag
+ * <li>precedence
+ * <li>authentication level
+ * <li>selection for userFirst or itemFirst
+ * </ul>
+ *
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ * @version $Rev$, $Date$
+ */
+public class ACIItemGeneralComposite extends Composite implements ModifyListener, SelectionListener
+{
+ /** The inner composite for all the content */
+ private Composite composite = null;
+
+ /** The identification tag label */
+ private Label identificationTagLabel = null;
+
+ /** The identification tag text field */
+ private Text identificationTagText = null;
+
+ /** The precedence label */
+ private Label precedenceLabel = null;
+
+ /** The spinner to select a valid precedence between 0 and 255 */
+ private Spinner precedenceSpinner = null;
+
+ /** The authentication level label */
+ private Label authenticationLevelLabel = null;
+
+ /** The combo to select a valid uthentication level */
+ private Combo authenticationLevelCombo = null;
+
+ /**
+ * The combo viewer is attached to authenticationLevelCombo to work with
+ * AuthenticationLevel objects rather than Strings
+ */
+ private ComboViewer authenticationLevelComboViewer = null;
+
+ /** The user or item first label */
+ private Label userOrItemFirstLabel = null;
+
+ /** The user first radio button */
+ private Button userFirstRadioButton = null;
+
+ /** The item first radio button */
+ private Button itemFirstRadioButton = null;
+
+ /** The list with listers */
+ private List<WidgetModifyListener> listenerList = new ArrayList<WidgetModifyListener>();
+
+
+ /**
+ * Creates a new instance of ACIItemGeneralComposite.
+ *
+ * @param parent
+ * @param style
+ */
+ public ACIItemGeneralComposite( Composite parent, int style )
+ {
+ super( parent, style );
+
+ GridLayout layout = new GridLayout();
+ layout.horizontalSpacing = 0;
+ layout.verticalSpacing = 0;
+ layout.marginHeight = 0;
+ layout.marginWidth = 0;
+ setLayout( layout );
+
+ GridData layoutData = new GridData();
+ layoutData.horizontalAlignment = GridData.FILL;
+ layoutData.grabExcessHorizontalSpace = true;
+ layoutData.verticalAlignment = GridData.CENTER;
+ setLayoutData( layoutData );
+
+ createComposite();
+ }
+
+
+ /**
+ * This method initializes composite
+ *
+ */
+ private void createComposite()
+ {
+
+ GridData identificationTagGridData = new GridData();
+ identificationTagGridData.grabExcessHorizontalSpace = true;
+ identificationTagGridData.verticalAlignment = GridData.CENTER;
+ identificationTagGridData.horizontalSpan = 2;
+ identificationTagGridData.horizontalAlignment = GridData.FILL;
+
+ GridData precedenceGridData = new GridData();
+ precedenceGridData.grabExcessHorizontalSpace = true;
+ precedenceGridData.verticalAlignment = GridData.CENTER;
+ precedenceGridData.horizontalSpan = 2;
+ precedenceGridData.horizontalAlignment = GridData.BEGINNING;
+ precedenceGridData.widthHint = 3 * 12;
+
+ GridData authenticationLevelGridData = new GridData();
+ authenticationLevelGridData.grabExcessHorizontalSpace = true;
+ authenticationLevelGridData.verticalAlignment = GridData.CENTER;
+ authenticationLevelGridData.horizontalSpan = 2;
+ authenticationLevelGridData.horizontalAlignment = GridData.FILL;
+
+ GridLayout gridLayout = new GridLayout();
+ gridLayout.numColumns = 3;
+ GridData gridData = new GridData();
+ gridData.horizontalAlignment = GridData.FILL;
+ gridData.grabExcessHorizontalSpace = true;
+ gridData.verticalAlignment = GridData.CENTER;
+
+ composite = new Composite( this, SWT.NONE );
+ composite.setLayout( gridLayout );
+ composite.setLayoutData( gridData );
+
+ identificationTagLabel = new Label( composite, SWT.NONE );
+ identificationTagLabel.setText( "Identification Tag:" );
+ identificationTagText = new Text( composite, SWT.BORDER );
+ identificationTagText.setLayoutData( identificationTagGridData );
+ identificationTagText.addModifyListener( this );
+
+ precedenceLabel = new Label( composite, SWT.NONE );
+ precedenceLabel.setText( "Precedence:" );
+ precedenceSpinner = new Spinner( composite, SWT.BORDER );
+ precedenceSpinner.setValues( 0, 0, 255, 0, 1, 10 );
+ precedenceSpinner.setLayoutData( precedenceGridData );
+ precedenceSpinner.addModifyListener( this );
+
+ authenticationLevelLabel = new Label( composite, SWT.NONE );
+ authenticationLevelLabel.setText( "Authentication Level:" );
+ authenticationLevelCombo = new Combo( composite, SWT.READ_ONLY );
+ authenticationLevelCombo.setLayoutData( authenticationLevelGridData );
+ AuthenticationLevel[] authenticationLevels = new AuthenticationLevel[3];
+ authenticationLevels[0] = AuthenticationLevel.NONE;
+ authenticationLevels[1] = AuthenticationLevel.SIMPLE;
+ authenticationLevels[2] = AuthenticationLevel.STRONG;
+ authenticationLevelComboViewer = new ComboViewer( authenticationLevelCombo );
+ authenticationLevelComboViewer.setContentProvider( new ArrayContentProvider() );
+ authenticationLevelComboViewer.setLabelProvider( new LabelProvider() );
+ authenticationLevelComboViewer.setInput( authenticationLevels );
+ authenticationLevelCombo.addModifyListener( this );
+
+ userOrItemFirstLabel = new Label( composite, SWT.NONE );
+ userOrItemFirstLabel.setText( "User or Item first:" );
+ userFirstRadioButton = new Button( composite, SWT.RADIO );
+ userFirstRadioButton.setText( "User First" );
+ userFirstRadioButton.addSelectionListener( this );
+ itemFirstRadioButton = new Button( composite, SWT.RADIO );
+ itemFirstRadioButton.setText( "Item First" );
+ itemFirstRadioButton.addSelectionListener( this );
+
+ }
+
+
+ public void addWidgetModifyListener( WidgetModifyListener listener )
+ {
+ checkWidget();
+ if ( listener == null )
+ SWT.error( SWT.ERROR_NULL_ARGUMENT );
+ listenerList.add( listener );
+ }
+
+
+ public void removeWidgetModifyListener( WidgetModifyListener listener )
+ {
+ checkWidget();
+ if ( listener == null )
+ SWT.error( SWT.ERROR_NULL_ARGUMENT );
+ listenerList.remove( listener );
+ }
+
+
+ private void fire( TypedEvent e)
+ {
+ for ( WidgetModifyListener listener : listenerList )
+ {
+ listener.widgetModified( new WidgetModifyEvent( this ) );
+ }
+ }
+
+
+ public void modifyText( ModifyEvent e )
+ {
+ fire( e );
+ }
+
+
+ public void widgetDefaultSelected( SelectionEvent e )
+ {
+ fire( e );
+ }
+
+
+ public void widgetSelected( SelectionEvent e )
+ {
+ fire( e );
+ }
+
+ /**
+ * Returns the identification tag.
+ *
+ * @return the identification tag
+ */
+ public String getIdentificationTag()
+ {
+ return identificationTagText.getText();
+ }
+
+ /**
+ * Returns the selected precedence.
+ *
+ * @return the selected precedence
+ */
+ public int getPrecedence()
+ {
+ return precedenceSpinner.getSelection();
+ }
+
+ /**
+ * Returns the selected authentication level.
+ *
+ * @return the selected authentication level
+ */
+ public AuthenticationLevel getAuthenticationLevel()
+ {
+ IStructuredSelection selection = ( IStructuredSelection ) authenticationLevelComboViewer.getSelection();
+ return ( AuthenticationLevel ) selection.getFirstElement();
+ }
+
+ /**
+ * Returns true if user first is selected.
+ *
+ * @return true if user first is selected
+ */
+ public boolean isUserFirst() {
+ return userFirstRadioButton.getSelection();
+ }
+
+ /**
+ * Returns true if item first is selected.
+ *
+ * @return true if item first is selected
+ */
+ public boolean isItemFirst() {
+ return itemFirstRadioButton.getSelection();
+ }
+
+} // @jve:decl-index=0:visual-constraint="10,10"