1 20 21 package org.apache.directory.ldapstudio.ldifeditor.editor.actions; 22 23 24 import org.apache.directory.ldapstudio.browser.core.model.ldif.container.LdifContainer; 25 import org.apache.directory.ldapstudio.browser.core.model.ldif.container.LdifRecord; 26 import org.apache.directory.ldapstudio.ldifeditor.editor.LdifEditor; 27 28 import org.eclipse.jface.text.IDocument; 29 import org.eclipse.jface.text.source.ISourceViewer; 30 31 32 public class FormatLdifRecordAction extends AbstractLdifAction 33 { 34 35 public FormatLdifRecordAction( LdifEditor editor ) 36 { 37 super( "Format Record", editor ); 38 } 39 40 41 protected void doRun() 42 { 43 44 LdifContainer[] containers = super.getSelectedLdifContainers(); 45 if ( containers.length > 0 ) 46 { 47 IDocument document = editor.getDocumentProvider().getDocument( editor.getEditorInput() ); 48 String old = document.get(); 49 StringBuffer sb = new StringBuffer (); 50 sb.append( old.substring( 0, containers[0].getOffset() ) ); 51 52 for ( int i = 0; i < containers.length; i++ ) 53 { 54 LdifContainer container = containers[i]; 55 sb.append( container.toFormattedString() ); 56 } 57 58 sb.append( old.substring( containers[containers.length - 1].getOffset() 59 + containers[containers.length - 1].getLength(), old.length() ) ); 60 61 ISourceViewer sourceViewer = ( ISourceViewer ) editor.getAdapter( ISourceViewer.class ); 62 int topIndex = sourceViewer.getTopIndex(); 63 document.set( sb.toString() ); 64 sourceViewer.setTopIndex( topIndex ); 65 } 66 } 67 68 69 public void update() 70 { 71 LdifContainer[] ldifContainers = super.getSelectedLdifContainers(); 72 for ( int i = 0; i < ldifContainers.length; i++ ) 73 { 74 LdifContainer container = ldifContainers[i]; 75 if ( !( container instanceof LdifRecord ) ) 76 { 77 super.setEnabled( false ); 78 return; 79 } 80 } 81 82 super.setEnabled( true ); 83 } 84 85 } 86 | Popular Tags |