1 20 21 package org.apache.directory.ldapstudio.valueeditors.objectclass; 22 23 24 import org.apache.directory.ldapstudio.browser.common.dialogs.TextDialog; 25 import org.apache.directory.ldapstudio.browser.core.model.AttributeHierarchy; 26 import org.apache.directory.ldapstudio.browser.core.model.IConnection; 27 import org.apache.directory.ldapstudio.browser.core.model.IValue; 28 import org.apache.directory.ldapstudio.browser.core.model.schema.ObjectClassDescription; 29 import org.apache.directory.ldapstudio.browser.core.model.schema.Schema; 30 import org.apache.directory.ldapstudio.valueeditors.AbstractDialogStringValueEditor; 31 import org.eclipse.swt.widgets.Shell; 32 33 34 40 public class ObjectClassValueEditor extends AbstractDialogStringValueEditor 41 { 42 43 48 public boolean openDialog( Shell shell ) 49 { 50 Object value = getValue(); 51 if ( value != null && value instanceof ObjectClassValueEditorRawValueWrapper ) 52 { 53 ObjectClassValueEditorRawValueWrapper wrapper = ( ObjectClassValueEditorRawValueWrapper ) value; 54 ObjectClassDialog dialog = new ObjectClassDialog( shell, wrapper.schema, wrapper.objectClass ); 55 if ( dialog.open() == TextDialog.OK && !"".equals( dialog.getObjectClass() ) ) 56 { 57 setValue( dialog.getObjectClass() ); 58 return true; 59 } 60 } 61 return false; 62 } 63 64 65 71 public String getDisplayValue( IValue value ) 72 { 73 if ( getRawValue( value ) == null ) 74 { 75 return "NULL"; 76 } 77 78 String displayValue = value.getStringValue(); 79 80 if ( !showRawValues() && !"".equals( displayValue ) ) 81 { 82 Schema schema = value.getAttribute().getEntry().getConnection().getSchema(); 83 ObjectClassDescription ocd = schema.getObjectClassDescription( displayValue ); 84 if ( ocd.isStructural() ) 85 { 86 displayValue = displayValue + " (structural)"; 87 } 88 else if ( ocd.isAbstract() ) 89 { 90 displayValue = displayValue + " (abstract)"; 91 } 92 else if ( ocd.isAuxiliary() ) 93 { 94 displayValue = displayValue + " (auxiliary)"; 95 } 96 else if ( ocd.isObsolete() ) 97 { 98 displayValue = displayValue + " (obsolete)"; 99 } 100 } 101 102 return displayValue; 103 } 104 105 106 112 public Object getRawValue( AttributeHierarchy attributeHierarchy ) 113 { 114 return null; 115 } 116 117 118 123 public Object getRawValue( IValue value ) 124 { 125 if ( value == null || !value.isString() || !value.getAttribute().isObjectClassAttribute() ) 126 { 127 return null; 128 } 129 else 130 { 131 return getRawValue( value.getAttribute().getEntry().getConnection(), value.getStringValue() ); 132 } 133 } 134 135 136 141 public Object getRawValue( IConnection connection, Object value ) 142 { 143 Schema schema = null; 144 if ( connection != null ) 145 { 146 schema = connection.getSchema(); 147 } 148 if ( schema == null || value == null || !( value instanceof String ) ) 149 { 150 return null; 151 } 152 153 String ocValue = ( String ) value; 154 ObjectClassValueEditorRawValueWrapper wrapper = new ObjectClassValueEditorRawValueWrapper( schema, ocValue ); 155 return wrapper; 156 } 157 158 165 private class ObjectClassValueEditorRawValueWrapper 166 { 167 171 private Schema schema; 172 173 174 private String objectClass; 175 176 177 183 private ObjectClassValueEditorRawValueWrapper( Schema schema, String objectClass ) 184 { 185 super(); 186 this.schema = schema; 187 this.objectClass = objectClass; 188 } 189 } 190 191 } 192 | Popular Tags |