1 20 21 package org.apache.directory.ldapstudio.schemas.view.editors.attributeType; 22 23 24 import java.io.IOException ; 25 import java.text.ParseException ; 26 import java.util.List ; 27 28 import org.apache.directory.ldapstudio.schemas.Messages; 29 import org.apache.directory.ldapstudio.schemas.model.AttributeType; 30 import org.apache.directory.ldapstudio.schemas.model.Schema.SchemaType; 31 import org.apache.directory.ldapstudio.schemas.view.views.SchemaSourceViewer; 32 import org.apache.directory.server.core.tools.schema.AttributeTypeLiteral; 33 import org.apache.directory.server.core.tools.schema.OpenLdapSchemaParser; 34 import org.eclipse.jface.resource.JFaceResources; 35 import org.eclipse.jface.text.Document; 36 import org.eclipse.jface.text.IDocument; 37 import org.eclipse.swt.SWT; 38 import org.eclipse.swt.events.ModifyEvent; 39 import org.eclipse.swt.events.ModifyListener; 40 import org.eclipse.swt.graphics.Font; 41 import org.eclipse.swt.layout.GridData; 42 import org.eclipse.swt.layout.GridLayout; 43 import org.eclipse.ui.forms.IManagedForm; 44 import org.eclipse.ui.forms.editor.FormEditor; 45 import org.eclipse.ui.forms.editor.FormPage; 46 import org.eclipse.ui.forms.widgets.FormToolkit; 47 import org.eclipse.ui.forms.widgets.ScrolledForm; 48 49 50 53 public class AttributeTypeEditorSourceCodePage extends FormPage 54 { 55 56 public static final String ID = AttributeTypeEditor.ID + "sourceCodePage"; 58 59 public static String TITLE = Messages.getString( "AttributeTypeEditorSourceCodePage.Source_Code" ); 61 62 private AttributeType modifiedAttributeType; 63 64 65 private SchemaSourceViewer schemaSourceViewer; 66 67 68 private boolean canLeaveThePage = true; 69 70 71 private ModifyListener schemaSourceViewerListener = new ModifyListener() 72 { 73 public void modifyText( ModifyEvent e ) 74 { 75 canLeaveThePage = true; 76 try 77 { 78 ( ( AttributeTypeEditor ) getEditor() ).setDirty( true ); 79 OpenLdapSchemaParser parser = new OpenLdapSchemaParser(); 80 parser.parse( schemaSourceViewer.getTextWidget().getText() ); 81 List attributeTypes = parser.getAttributeTypes(); 82 if ( attributeTypes.size() != 1 ) 83 { 84 } 86 else 87 { 88 updateAttributeType( ( AttributeTypeLiteral ) attributeTypes.get( 0 ) ); 89 } 90 } 91 catch ( IOException e1 ) 92 { 93 canLeaveThePage = false; 94 } 95 catch ( ParseException exception ) 96 { 97 canLeaveThePage = false; 98 } 99 } 100 }; 101 102 103 109 public AttributeTypeEditorSourceCodePage( FormEditor editor ) 110 { 111 super( editor, ID, TITLE ); 112 } 113 114 115 118 protected void createFormContent( IManagedForm managedForm ) 119 { 120 ScrolledForm form = managedForm.getForm(); 121 FormToolkit toolkit = managedForm.getToolkit(); 122 GridLayout layout = new GridLayout(); 123 layout.marginWidth = 0; 124 layout.marginHeight = 0; 125 form.getBody().setLayout( layout ); 126 toolkit.paintBordersFor( form.getBody() ); 127 128 modifiedAttributeType = ( ( AttributeTypeEditor ) getEditor() ).getModifiedAttributeType(); 129 130 schemaSourceViewer = new SchemaSourceViewer( form.getBody(), null, null, false, SWT.BORDER | SWT.H_SCROLL 132 | SWT.V_SCROLL ); 133 GridData gd = new GridData( SWT.FILL, SWT.FILL, true, true ); 134 gd.heightHint = 10; 135 schemaSourceViewer.getTextWidget().setLayoutData( gd ); 136 if ( modifiedAttributeType.getOriginatingSchema().type == SchemaType.coreSchema ) 137 { 138 schemaSourceViewer.setEditable( false ); 139 } 140 141 Font font = JFaceResources.getFont( JFaceResources.TEXT_FONT ); 143 schemaSourceViewer.getTextWidget().setFont( font ); 144 145 IDocument document = new Document(); 146 schemaSourceViewer.setDocument( document ); 147 148 fillInUiFields(); 150 151 schemaSourceViewer.getTextWidget().addModifyListener( schemaSourceViewerListener ); 152 } 153 154 155 158 private void fillInUiFields() 159 { 160 schemaSourceViewer.getDocument().set( modifiedAttributeType.write() ); 162 } 163 164 165 168 public boolean canLeaveThePage() 169 { 170 return canLeaveThePage; 171 } 172 173 174 180 private void updateAttributeType( AttributeTypeLiteral atl ) 181 { 182 modifiedAttributeType.setCollective( atl.isCollective() ); 183 modifiedAttributeType.setDescription( atl.getDescription() ); 184 modifiedAttributeType.setEquality( atl.getEquality() ); 185 modifiedAttributeType.setLength( atl.getLength() ); 186 modifiedAttributeType.setNames( atl.getNames() ); 187 modifiedAttributeType.setNoUserModification( atl.isNoUserModification() ); 188 modifiedAttributeType.setObsolete( atl.isObsolete() ); 189 modifiedAttributeType.setOid( atl.getOid() ); 190 modifiedAttributeType.setOrdering( atl.getOrdering() ); 191 modifiedAttributeType.setSingleValue( atl.isSingleValue() ); 192 modifiedAttributeType.setSubstr( atl.getSubstr() ); 193 modifiedAttributeType.setSuperior( atl.getSuperior() ); 194 modifiedAttributeType.setSyntax( atl.getSyntax() ); 195 modifiedAttributeType.setUsage( atl.getUsage() ); 196 } 197 198 199 202 public void refreshUI() 203 { 204 fillInUiFields(); 205 } 206 } 207 | Popular Tags |