1 20 package org.apache.directory.ldapstudio.aciitemeditor.widgets; 21 22 23 import java.text.ParseException ; 24 import java.util.Collection ; 25 26 import org.apache.directory.ldapstudio.aciitemeditor.ACIItemValueWithContext; 27 import org.apache.directory.shared.ldap.aci.ACIItem; 28 import org.apache.directory.shared.ldap.aci.ACIItemParser; 29 import org.apache.directory.shared.ldap.aci.AuthenticationLevel; 30 import org.apache.directory.shared.ldap.aci.ItemFirstACIItem; 31 import org.apache.directory.shared.ldap.aci.UserFirstACIItem; 32 import org.eclipse.swt.SWT; 33 import org.eclipse.swt.custom.ScrolledComposite; 34 import org.eclipse.swt.layout.GridData; 35 import org.eclipse.swt.layout.GridLayout; 36 import org.eclipse.swt.widgets.Composite; 37 38 39 50 public class ACIItemVisualEditorComposite extends ScrolledComposite implements WidgetModifyListener 51 { 52 53 54 private Composite composite = null; 55 56 57 private ACIItemGeneralComposite generalComposite = null; 58 59 60 private ACIItemUserClassesComposite userFirstUserClassesComposite = null; 61 62 63 private ACIItemUserPermissionsComposite userFirstUserPermissionsComposite = null; 64 65 66 private ACIItemProtectedItemsComposite itemFirstProtectedItemsComposite = null; 67 68 69 private ACIItemItemPermissionsComposite itemFirstItemPermissionsComposite = null; 70 71 72 78 public ACIItemVisualEditorComposite( Composite parent, int style ) 79 { 80 super( parent, style | SWT.H_SCROLL | SWT.V_SCROLL ); 81 setExpandHorizontal( true ); 82 setExpandVertical( true ); 83 84 createComposite(); 85 86 setContent( composite ); 87 setMinSize( composite.computeSize( SWT.DEFAULT, SWT.DEFAULT ) ); 88 } 89 90 91 95 private void createComposite() 96 { 97 GridLayout gridLayout = new GridLayout(); 98 gridLayout.numColumns = 1; 99 GridData gridData = new GridData(); 100 gridData.horizontalAlignment = GridData.FILL; 101 gridData.grabExcessHorizontalSpace = true; 102 gridData.verticalAlignment = GridData.CENTER; 103 104 composite = new Composite( this, SWT.NONE ); 105 composite.setLayout( gridLayout ); 106 composite.setLayoutData( gridData ); 107 108 generalComposite = new ACIItemGeneralComposite( composite, SWT.NONE ); 109 generalComposite.addWidgetModifyListener( this ); 110 111 userFirstUserClassesComposite = new ACIItemUserClassesComposite( composite, SWT.NONE ); 112 userFirstUserPermissionsComposite = new ACIItemUserPermissionsComposite( composite, SWT.NONE ); 113 114 itemFirstProtectedItemsComposite = new ACIItemProtectedItemsComposite( composite, SWT.NONE ); 115 itemFirstItemPermissionsComposite = new ACIItemItemPermissionsComposite( composite, SWT.NONE ); 116 117 widgetModified( null ); 118 } 119 120 121 127 public void widgetModified( WidgetModifyEvent event ) 128 { 129 if ( generalComposite.isItemFirst() && !generalComposite.isUserFirst() 131 && !itemFirstProtectedItemsComposite.isVisible() ) 132 { 133 userFirstUserClassesComposite.setVisible( false ); 134 userFirstUserPermissionsComposite.setVisible( false ); 135 itemFirstProtectedItemsComposite.setVisible( true ); 136 itemFirstItemPermissionsComposite.setVisible( true ); 137 138 setMinSize( composite.computeSize( SWT.DEFAULT, SWT.DEFAULT ) ); 139 layout( true, true ); 140 } 141 else if ( generalComposite.isUserFirst() && !generalComposite.isItemFirst() 142 && !userFirstUserClassesComposite.isVisible() ) 143 { 144 userFirstUserClassesComposite.setVisible( true ); 145 userFirstUserPermissionsComposite.setVisible( true ); 146 itemFirstProtectedItemsComposite.setVisible( false ); 147 itemFirstItemPermissionsComposite.setVisible( false ); 148 149 setMinSize( composite.computeSize( SWT.DEFAULT, SWT.DEFAULT ) ); 150 layout( true, true ); 151 } 152 else if ( !generalComposite.isItemFirst() && !generalComposite.isUserFirst() ) 153 { 154 userFirstUserClassesComposite.setVisible( false ); 155 userFirstUserPermissionsComposite.setVisible( false ); 156 itemFirstProtectedItemsComposite.setVisible( false ); 157 itemFirstItemPermissionsComposite.setVisible( false ); 158 159 setMinSize( composite.computeSize( SWT.DEFAULT, SWT.DEFAULT ) ); 160 layout( true, true ); 161 } 162 163 } 164 165 166 174 public void setInput( String input ) throws ParseException 175 { 176 ACIItemParser parser = new ACIItemParser( null ); 177 ACIItem aciItem = parser.parse( input ); 178 179 if ( aciItem != null ) 180 { 181 generalComposite.setIdentificationTag( aciItem.getIdentificationTag() ); 182 generalComposite.setPrecedence( aciItem.getPrecedence() ); 183 generalComposite.setAuthenticationLevel( aciItem.getAuthenticationLevel() ); 184 185 if ( aciItem instanceof ItemFirstACIItem ) 186 { 187 ItemFirstACIItem itemFirstACI = ( ItemFirstACIItem ) aciItem; 188 generalComposite.setItemFirst(); 189 itemFirstProtectedItemsComposite.setProtectedItems( itemFirstACI.getProtectedItems() ); 190 itemFirstItemPermissionsComposite.setItemPermissions( itemFirstACI.getItemPermissions() ); 191 } 192 else if ( aciItem instanceof UserFirstACIItem ) 193 { 194 UserFirstACIItem userFirstACI = ( UserFirstACIItem ) aciItem; 195 generalComposite.setUserFirst(); 196 userFirstUserClassesComposite.setUserClasses( userFirstACI.getUserClasses() ); 197 userFirstUserPermissionsComposite.setUserPermissions( userFirstACI.getUserPermission() ); 198 } 199 } 200 201 widgetModified( null ); 203 204 } 205 206 207 214 public String getInput() throws ParseException 215 { 216 String identificationTag = generalComposite.getIdentificationTag(); 217 int precedence = generalComposite.getPrecedence(); 218 AuthenticationLevel authenticationLevel = generalComposite.getAuthenticationLevel(); 219 220 ACIItem aciItem = null; 221 if ( generalComposite.isUserFirst() ) 222 { 223 Collection userClasses = userFirstUserClassesComposite.getUserClasses(); 224 Collection userPermissions = userFirstUserPermissionsComposite.getUserPermissions(); 225 aciItem = new UserFirstACIItem( identificationTag, precedence, authenticationLevel, userClasses, 226 userPermissions ); 227 } 228 else if ( generalComposite.isItemFirst() ) 229 { 230 Collection protectedItems = itemFirstProtectedItemsComposite.getProtectedItems(); 231 Collection itemPermissions = itemFirstItemPermissionsComposite.getItemPermissions(); 232 aciItem = new ItemFirstACIItem( identificationTag, precedence, authenticationLevel, protectedItems, 233 itemPermissions ); 234 } 235 else 236 { 237 aciItem = null; 238 } 239 240 StringBuffer buffer = new StringBuffer (); 241 if ( aciItem != null ) 242 { 243 aciItem.printToBuffer( buffer ); 244 } 245 return buffer.toString(); 246 } 247 248 249 254 public void setContext( ACIItemValueWithContext context ) 255 { 256 itemFirstProtectedItemsComposite.setContext( context ); 257 itemFirstItemPermissionsComposite.setContext( context ); 258 userFirstUserClassesComposite.setContext( context ); 259 userFirstUserPermissionsComposite.setContext( context ); 260 } 261 262 } 263 | Popular Tags |