1 20 21 package org.apache.directory.ldapstudio.ldifeditor.editor.actions; 22 23 24 import org.apache.directory.ldapstudio.browser.core.model.IConnection; 25 import org.apache.directory.ldapstudio.ldifeditor.editor.LdifEditor; 26 import org.apache.directory.ldapstudio.valueeditors.AbstractDialogValueEditor; 27 import org.apache.directory.ldapstudio.valueeditors.IValueEditor; 28 29 30 public class OpenBestValueEditorAction extends AbstractOpenValueEditorAction 31 { 32 33 public OpenBestValueEditorAction( LdifEditor editor ) 34 { 35 super( editor ); 36 } 37 38 39 public void update() 40 { 41 42 super.setEnabled( isEditableLineSelected() ); 43 44 IConnection connection = getConnection(); 46 String attributeDescription = getAttributeDescription(); 47 Object oldValue = getValue(); 48 49 if ( attributeDescription != null ) 50 { 51 valueEditor = valueEditorManager.getCurrentValueEditor( connection.getSchema(), attributeDescription ); 52 Object rawValue = valueEditor.getRawValue( connection, oldValue ); 53 if ( !( valueEditor instanceof AbstractDialogValueEditor ) || rawValue == null ) 54 { 55 IValueEditor[] vps = valueEditorManager.getAlternativeValueEditors( connection.getSchema(), attributeDescription ); 56 for ( int i = 0; i < vps.length 57 && ( !( valueEditor instanceof AbstractDialogValueEditor ) || rawValue == null ); i++ ) 58 { 59 valueEditor = vps[i]; 60 rawValue = valueEditor.getRawValue( connection, oldValue ); 61 } 62 } 63 } 64 65 if ( valueEditor != null ) 66 { 67 setText( valueEditor.getValueEditorName() ); 68 setImageDescriptor( valueEditor.getValueEditorImageDescriptor() ); 69 } 70 } 71 72 } 73 | Popular Tags |