You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by se...@apache.org on 2006/12/29 22:15:50 UTC
svn commit: r491104 [2/3] - in
/directory/trunks/ldapstudio/ldapstudio-browser-ui: ./ META-INF/
src/main/java/org/apache/directory/ldapstudio/browser/ui/
src/main/java/org/apache/directory/ldapstudio/browser/ui/actions/
src/main/java/org/apache/directo...
Modified: directory/trunks/ldapstudio/ldapstudio-browser-ui/src/main/java/org/apache/directory/ldapstudio/browser/ui/editors/searchresult/SearchResultEditorActionGroup.java
URL: http://svn.apache.org/viewvc/directory/trunks/ldapstudio/ldapstudio-browser-ui/src/main/java/org/apache/directory/ldapstudio/browser/ui/editors/searchresult/SearchResultEditorActionGroup.java?view=diff&rev=491104&r1=491103&r2=491104
==============================================================================
--- directory/trunks/ldapstudio/ldapstudio-browser-ui/src/main/java/org/apache/directory/ldapstudio/browser/ui/editors/searchresult/SearchResultEditorActionGroup.java (original)
+++ directory/trunks/ldapstudio/ldapstudio-browser-ui/src/main/java/org/apache/directory/ldapstudio/browser/ui/editors/searchresult/SearchResultEditorActionGroup.java Fri Dec 29 13:15:47 2006
@@ -47,7 +47,7 @@
import org.apache.directory.ldapstudio.browser.ui.actions.ValueEditorPreferencesAction;
import org.apache.directory.ldapstudio.browser.ui.actions.proxy.BrowserActionProxy;
import org.apache.directory.ldapstudio.browser.ui.actions.proxy.SearchResultEditorActionProxy;
-import org.apache.directory.ldapstudio.browser.ui.valueproviders.ValueProvider;
+import org.apache.directory.ldapstudio.browser.ui.valueeditors.IValueEditor;
import org.eclipse.jface.action.IAction;
import org.eclipse.jface.action.IMenuListener;
@@ -165,16 +165,16 @@
.getQuickFilterWidget() );
this.openBestEditorAction = new OpenBestEditorAction( viewer, searchResultEditor.getConfiguration().getCursor(
- viewer ), this, searchResultEditor.getConfiguration().getValueProviderManager( viewer ) );
+ viewer ), this, searchResultEditor.getConfiguration().getValueEditorManager( viewer ) );
this.openDefaultEditorAction = new OpenDefaultEditorAction( this.openBestEditorAction );
- ValueProvider[] valueProviders = searchResultEditor.getConfiguration().getValueProviderManager( viewer )
- .getAllValueProviders();
- this.openEditorActions = new OpenEditorAction[valueProviders.length];
+ IValueEditor[] valueEditors = searchResultEditor.getConfiguration().getValueEditorManager( viewer )
+ .getAllValueEditors();
+ this.openEditorActions = new OpenEditorAction[valueEditors.length];
for ( int i = 0; i < this.openEditorActions.length; i++ )
{
this.openEditorActions[i] = new OpenEditorAction( viewer, searchResultEditor.getConfiguration().getCursor(
- viewer ), this, searchResultEditor.getConfiguration().getValueProviderManager( viewer ),
- valueProviders[i] );
+ viewer ), this, searchResultEditor.getConfiguration().getValueEditorManager( viewer ),
+ valueEditors[i] );
}
this.openValueEditorPreferencesAction = new ValueEditorPreferencesAction();
@@ -400,8 +400,8 @@
for ( int i = 0; i < this.openEditorActions.length; i++ )
{
if ( this.openEditorActions[i].isEnabled()
- && this.openEditorActions[i].getValueProvider().getClass() != this.openBestEditorAction
- .getBestValueProvider().getClass() )
+ && this.openEditorActions[i].getValueEditor().getClass() != this.openBestEditorAction
+ .getBestValueEditor().getClass() )
{
editorMenuManager.add( this.openEditorActions[i] );
}
Modified: directory/trunks/ldapstudio/ldapstudio-browser-ui/src/main/java/org/apache/directory/ldapstudio/browser/ui/editors/searchresult/SearchResultEditorCellModifier.java
URL: http://svn.apache.org/viewvc/directory/trunks/ldapstudio/ldapstudio-browser-ui/src/main/java/org/apache/directory/ldapstudio/browser/ui/editors/searchresult/SearchResultEditorCellModifier.java?view=diff&rev=491104&r1=491103&r2=491104
==============================================================================
--- directory/trunks/ldapstudio/ldapstudio-browser-ui/src/main/java/org/apache/directory/ldapstudio/browser/ui/editors/searchresult/SearchResultEditorCellModifier.java (original)
+++ directory/trunks/ldapstudio/ldapstudio-browser-ui/src/main/java/org/apache/directory/ldapstudio/browser/ui/editors/searchresult/SearchResultEditorCellModifier.java Fri Dec 29 13:15:47 2006
@@ -25,13 +25,13 @@
import org.apache.directory.ldapstudio.browser.core.events.ModelModifier;
import org.apache.directory.ldapstudio.browser.core.internal.model.Attribute;
-import org.apache.directory.ldapstudio.browser.core.model.AttributeHierachie;
+import org.apache.directory.ldapstudio.browser.core.model.AttributeHierarchy;
import org.apache.directory.ldapstudio.browser.core.model.IAttribute;
import org.apache.directory.ldapstudio.browser.core.model.ISearchResult;
import org.apache.directory.ldapstudio.browser.core.model.ModelModificationException;
import org.apache.directory.ldapstudio.browser.core.model.schema.SchemaUtils;
import org.apache.directory.ldapstudio.browser.ui.BrowserUIConstants;
-import org.apache.directory.ldapstudio.browser.ui.valueproviders.ValueProviderManager;
+import org.apache.directory.ldapstudio.browser.ui.valueeditors.internal.ValueEditorManager;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.viewers.ICellModifier;
@@ -44,20 +44,20 @@
private TableViewer viewer;
- private ValueProviderManager valueProviderManager;
+ private ValueEditorManager valueEditorManager;
- public SearchResultEditorCellModifier( TableViewer viewer, ValueProviderManager valueProviderManager )
+ public SearchResultEditorCellModifier( TableViewer viewer, ValueEditorManager valueEditorManager )
{
this.viewer = viewer;
- this.valueProviderManager = valueProviderManager;
+ this.valueEditorManager = valueEditorManager;
}
public void dispose()
{
this.viewer = null;
- this.valueProviderManager = null;
+ this.valueEditorManager = null;
}
@@ -67,7 +67,7 @@
if ( element != null && element instanceof ISearchResult && property != null )
{
ISearchResult result = ( ISearchResult ) element;
- AttributeHierachie ah = result.getAttributeWithSubtypes( property );
+ AttributeHierarchy ah = result.getAttributeWithSubtypes( property );
// check DN
if ( BrowserUIConstants.DN.equals( property ) )
@@ -80,7 +80,7 @@
{
try
{
- ah = new AttributeHierachie( result.getEntry(), property, new IAttribute[]
+ ah = new AttributeHierarchy( result.getEntry(), property, new IAttribute[]
{ new Attribute( result.getEntry(), property ) } );
}
catch ( ModelModificationException e )
@@ -122,8 +122,8 @@
return false;
}
- // call value provider
- return this.valueProviderManager.getCurrentValueProvider( ah ).getRawValue( ah ) != null;
+ // call value editor
+ return this.valueEditorManager.getCurrentValueEditor( ah ).getRawValue( ah ) != null;
}
else
{
@@ -138,7 +138,7 @@
if ( element != null && element instanceof ISearchResult && property != null )
{
ISearchResult result = ( ISearchResult ) element;
- AttributeHierachie ah = result.getAttributeWithSubtypes( property );
+ AttributeHierarchy ah = result.getAttributeWithSubtypes( property );
if ( !this.canModify( element, property ) )
{
@@ -149,7 +149,7 @@
{
try
{
- ah = new AttributeHierachie( result.getEntry(), property, new IAttribute[]
+ ah = new AttributeHierarchy( result.getEntry(), property, new IAttribute[]
{ new Attribute( result.getEntry(), property ) } );
}
catch ( ModelModificationException e )
@@ -159,7 +159,7 @@
}
}
- return this.valueProviderManager.getCurrentValueProvider( ah ).getRawValue( ah );
+ return this.valueEditorManager.getCurrentValueEditor( ah ).getRawValue( ah );
}
else
{
@@ -179,23 +179,23 @@
if ( element != null && element instanceof ISearchResult && property != null )
{
ISearchResult result = ( ISearchResult ) element;
- AttributeHierachie ah = result.getAttributeWithSubtypes( property );
+ AttributeHierarchy ah = result.getAttributeWithSubtypes( property );
try
{
// switch operation:
if ( ah == null && newRawValue != null )
{
- this.valueProviderManager.getCurrentValueProvider( result.getEntry(), property ).create(
+ this.valueEditorManager.getCurrentValueEditor( result.getEntry(), property ).createValue(
result.getEntry(), property, newRawValue );
}
else if ( ah != null && newRawValue == null )
{
- this.valueProviderManager.getCurrentValueProvider( ah ).delete( ah );
+ this.valueEditorManager.getCurrentValueEditor( ah ).deleteAttribute( ah );
}
else if ( ah != null && ah.size() == 1 && ah.getAttribute().getValueSize() == 1 && newRawValue != null )
{
- this.valueProviderManager.getCurrentValueProvider( ah ).modify( ah.getAttribute().getValues()[0],
+ this.valueEditorManager.getCurrentValueEditor( ah ).modifyValue( ah.getAttribute().getValues()[0],
newRawValue );
}
}
Modified: directory/trunks/ldapstudio/ldapstudio-browser-ui/src/main/java/org/apache/directory/ldapstudio/browser/ui/editors/searchresult/SearchResultEditorConfiguration.java
URL: http://svn.apache.org/viewvc/directory/trunks/ldapstudio/ldapstudio-browser-ui/src/main/java/org/apache/directory/ldapstudio/browser/ui/editors/searchresult/SearchResultEditorConfiguration.java?view=diff&rev=491104&r1=491103&r2=491104
==============================================================================
--- directory/trunks/ldapstudio/ldapstudio-browser-ui/src/main/java/org/apache/directory/ldapstudio/browser/ui/editors/searchresult/SearchResultEditorConfiguration.java (original)
+++ directory/trunks/ldapstudio/ldapstudio-browser-ui/src/main/java/org/apache/directory/ldapstudio/browser/ui/editors/searchresult/SearchResultEditorConfiguration.java Fri Dec 29 13:15:47 2006
@@ -21,7 +21,7 @@
package org.apache.directory.ldapstudio.browser.ui.editors.searchresult;
-import org.apache.directory.ldapstudio.browser.ui.valueproviders.ValueProviderManager;
+import org.apache.directory.ldapstudio.browser.ui.valueeditors.internal.ValueEditorManager;
import org.eclipse.jface.action.IMenuManager;
import org.eclipse.jface.action.MenuManager;
import org.eclipse.jface.viewers.TableViewer;
@@ -46,7 +46,7 @@
protected SearchResultEditorCellModifier cellModifier;
- protected ValueProviderManager valueProviderManager;
+ protected ValueEditorManager valueEditorManager;
protected MenuManager contextMenuManager;
@@ -74,9 +74,9 @@
this.cellModifier.dispose();
this.cellModifier = null;
- if ( this.valueProviderManager != null )
- this.valueProviderManager.dispose();
- this.valueProviderManager = null;
+ if ( this.valueEditorManager != null )
+ this.valueEditorManager.dispose();
+ this.valueEditorManager = null;
if ( this.contextMenuManager != null )
this.contextMenuManager.dispose();
@@ -133,7 +133,7 @@
public SearchResultEditorLabelProvider getLabelProvider( TableViewer viewer )
{
if ( this.labelProvider == null )
- this.labelProvider = new SearchResultEditorLabelProvider( viewer, this.getValueProviderManager( viewer ) );
+ this.labelProvider = new SearchResultEditorLabelProvider( viewer, this.getValueEditorManager( viewer ) );
return labelProvider;
}
@@ -142,7 +142,7 @@
public SearchResultEditorCellModifier getCellModifier( TableViewer viewer )
{
if ( this.cellModifier == null )
- this.cellModifier = new SearchResultEditorCellModifier( viewer, this.getValueProviderManager( viewer ) );
+ this.cellModifier = new SearchResultEditorCellModifier( viewer, this.getValueEditorManager( viewer ) );
return cellModifier;
}
@@ -157,12 +157,12 @@
}
- public ValueProviderManager getValueProviderManager( TableViewer viewer )
+ public ValueEditorManager getValueEditorManager( TableViewer viewer )
{
- if ( this.valueProviderManager == null )
- this.valueProviderManager = new ValueProviderManager( viewer.getTable() );
+ if ( this.valueEditorManager == null )
+ this.valueEditorManager = new ValueEditorManager( viewer.getTable() );
- return valueProviderManager;
+ return valueEditorManager;
}
}
Modified: directory/trunks/ldapstudio/ldapstudio-browser-ui/src/main/java/org/apache/directory/ldapstudio/browser/ui/editors/searchresult/SearchResultEditorCursor.java
URL: http://svn.apache.org/viewvc/directory/trunks/ldapstudio/ldapstudio-browser-ui/src/main/java/org/apache/directory/ldapstudio/browser/ui/editors/searchresult/SearchResultEditorCursor.java?view=diff&rev=491104&r1=491103&r2=491104
==============================================================================
--- directory/trunks/ldapstudio/ldapstudio-browser-ui/src/main/java/org/apache/directory/ldapstudio/browser/ui/editors/searchresult/SearchResultEditorCursor.java (original)
+++ directory/trunks/ldapstudio/ldapstudio-browser-ui/src/main/java/org/apache/directory/ldapstudio/browser/ui/editors/searchresult/SearchResultEditorCursor.java Fri Dec 29 13:15:47 2006
@@ -29,7 +29,7 @@
import org.apache.directory.ldapstudio.browser.core.events.EntryUpdateListener;
import org.apache.directory.ldapstudio.browser.core.events.EventRegistry;
import org.apache.directory.ldapstudio.browser.core.internal.model.Attribute;
-import org.apache.directory.ldapstudio.browser.core.model.AttributeHierachie;
+import org.apache.directory.ldapstudio.browser.core.model.AttributeHierarchy;
import org.apache.directory.ldapstudio.browser.core.model.IAttribute;
import org.apache.directory.ldapstudio.browser.core.model.ISearchResult;
import org.apache.directory.ldapstudio.browser.core.model.ModelModificationException;
@@ -148,7 +148,7 @@
}
- public AttributeHierachie getSelectedAttributeHierarchie()
+ public AttributeHierarchy getSelectedAttributeHierarchie()
{
if ( !this.isDisposed() && this.getRow() != null && this.viewer != null
&& this.viewer.getColumnProperties() != null
@@ -159,13 +159,13 @@
if ( o instanceof ISearchResult && !BrowserUIConstants.DN.equals( property ) )
{
ISearchResult sr = ( ISearchResult ) o;
- AttributeHierachie ah = sr.getAttributeWithSubtypes( property );
+ AttributeHierarchy ah = sr.getAttributeWithSubtypes( property );
if ( ah == null )
{
try
{
- ah = new AttributeHierachie( sr.getEntry(), property, new IAttribute[]
+ ah = new AttributeHierarchy( sr.getEntry(), property, new IAttribute[]
{ new Attribute( sr.getEntry(), property ) } );
}
catch ( ModelModificationException e )
@@ -209,7 +209,7 @@
public ISelection getSelection()
{
ISearchResult searchResult = this.getSelectedSearchResult();
- AttributeHierachie ah = this.getSelectedAttributeHierarchie();
+ AttributeHierarchy ah = this.getSelectedAttributeHierarchie();
String property = this.getSelectedProperty();
// String attributeName = this.getSelectedAttributeName();
Modified: directory/trunks/ldapstudio/ldapstudio-browser-ui/src/main/java/org/apache/directory/ldapstudio/browser/ui/editors/searchresult/SearchResultEditorFilter.java
URL: http://svn.apache.org/viewvc/directory/trunks/ldapstudio/ldapstudio-browser-ui/src/main/java/org/apache/directory/ldapstudio/browser/ui/editors/searchresult/SearchResultEditorFilter.java?view=diff&rev=491104&r1=491103&r2=491104
==============================================================================
--- directory/trunks/ldapstudio/ldapstudio-browser-ui/src/main/java/org/apache/directory/ldapstudio/browser/ui/editors/searchresult/SearchResultEditorFilter.java (original)
+++ directory/trunks/ldapstudio/ldapstudio-browser-ui/src/main/java/org/apache/directory/ldapstudio/browser/ui/editors/searchresult/SearchResultEditorFilter.java Fri Dec 29 13:15:47 2006
@@ -23,7 +23,7 @@
import java.util.ArrayList;
-import org.apache.directory.ldapstudio.browser.core.model.AttributeHierachie;
+import org.apache.directory.ldapstudio.browser.core.model.AttributeHierarchy;
import org.apache.directory.ldapstudio.browser.core.model.IAttribute;
import org.apache.directory.ldapstudio.browser.core.model.ISearch;
import org.apache.directory.ldapstudio.browser.core.model.ISearchResult;
@@ -102,7 +102,7 @@
for ( int r = 0; r < returningAttributes.length; r++ )
{
String ra = returningAttributes[r];
- AttributeHierachie ah = searchResult.getAttributeWithSubtypes( ra );
+ AttributeHierarchy ah = searchResult.getAttributeWithSubtypes( ra );
if ( ah != null )
{
IAttribute[] attributes = ah.getAttributes();
Modified: directory/trunks/ldapstudio/ldapstudio-browser-ui/src/main/java/org/apache/directory/ldapstudio/browser/ui/editors/searchresult/SearchResultEditorLabelProvider.java
URL: http://svn.apache.org/viewvc/directory/trunks/ldapstudio/ldapstudio-browser-ui/src/main/java/org/apache/directory/ldapstudio/browser/ui/editors/searchresult/SearchResultEditorLabelProvider.java?view=diff&rev=491104&r1=491103&r2=491104
==============================================================================
--- directory/trunks/ldapstudio/ldapstudio-browser-ui/src/main/java/org/apache/directory/ldapstudio/browser/ui/editors/searchresult/SearchResultEditorLabelProvider.java (original)
+++ directory/trunks/ldapstudio/ldapstudio-browser-ui/src/main/java/org/apache/directory/ldapstudio/browser/ui/editors/searchresult/SearchResultEditorLabelProvider.java Fri Dec 29 13:15:47 2006
@@ -21,14 +21,14 @@
package org.apache.directory.ldapstudio.browser.ui.editors.searchresult;
-import org.apache.directory.ldapstudio.browser.core.model.AttributeHierachie;
+import org.apache.directory.ldapstudio.browser.core.model.AttributeHierarchy;
import org.apache.directory.ldapstudio.browser.core.model.IAttribute;
import org.apache.directory.ldapstudio.browser.core.model.ISearch;
import org.apache.directory.ldapstudio.browser.core.model.ISearchResult;
import org.apache.directory.ldapstudio.browser.ui.BrowserUIConstants;
import org.apache.directory.ldapstudio.browser.ui.BrowserUIPlugin;
-import org.apache.directory.ldapstudio.browser.ui.valueproviders.ValueProvider;
-import org.apache.directory.ldapstudio.browser.ui.valueproviders.ValueProviderManager;
+import org.apache.directory.ldapstudio.browser.ui.valueeditors.IValueEditor;
+import org.apache.directory.ldapstudio.browser.ui.valueeditors.internal.ValueEditorManager;
import org.eclipse.jface.preference.PreferenceConverter;
import org.eclipse.jface.viewers.ITableColorProvider;
@@ -46,16 +46,16 @@
ITableColorProvider
{
- private ValueProviderManager valueProviderManager;
+ private ValueEditorManager valueEditorManager;
private ISearch search;
private boolean showDn;
- public SearchResultEditorLabelProvider( TableViewer viewer, ValueProviderManager valueProviderManager )
+ public SearchResultEditorLabelProvider( TableViewer viewer, ValueEditorManager valueEditorManager )
{
- this.valueProviderManager = valueProviderManager;
+ this.valueEditorManager = valueEditorManager;
}
@@ -95,7 +95,7 @@
}
else
{
- AttributeHierachie ah = result.getAttributeWithSubtypes( property );
+ AttributeHierarchy ah = result.getAttributeWithSubtypes( property );
return getDisplayValue( ah );
}
@@ -124,10 +124,10 @@
}
- private String getDisplayValue( AttributeHierachie ah )
+ private String getDisplayValue( AttributeHierarchy ah )
{
- ValueProvider vp = this.valueProviderManager.getCurrentValueProvider( ah );
+ IValueEditor vp = this.valueEditorManager.getCurrentValueEditor( ah );
if ( vp == null )
{
return "";
@@ -169,7 +169,7 @@
}
else if ( property != null )
{
- AttributeHierachie ah = result.getAttributeWithSubtypes( property );
+ AttributeHierarchy ah = result.getAttributeWithSubtypes( property );
if ( ah != null )
{
for ( int i = 0; i < ah.getAttributes().length; i++ )
Modified: directory/trunks/ldapstudio/ldapstudio-browser-ui/src/main/java/org/apache/directory/ldapstudio/browser/ui/editors/searchresult/SearchResultEditorSorter.java
URL: http://svn.apache.org/viewvc/directory/trunks/ldapstudio/ldapstudio-browser-ui/src/main/java/org/apache/directory/ldapstudio/browser/ui/editors/searchresult/SearchResultEditorSorter.java?view=diff&rev=491104&r1=491103&r2=491104
==============================================================================
--- directory/trunks/ldapstudio/ldapstudio-browser-ui/src/main/java/org/apache/directory/ldapstudio/browser/ui/editors/searchresult/SearchResultEditorSorter.java (original)
+++ directory/trunks/ldapstudio/ldapstudio-browser-ui/src/main/java/org/apache/directory/ldapstudio/browser/ui/editors/searchresult/SearchResultEditorSorter.java Fri Dec 29 13:15:47 2006
@@ -25,7 +25,7 @@
import java.util.Comparator;
import org.apache.directory.ldapstudio.browser.core.BrowserCoreConstants;
-import org.apache.directory.ldapstudio.browser.core.model.AttributeHierachie;
+import org.apache.directory.ldapstudio.browser.core.model.AttributeHierarchy;
import org.apache.directory.ldapstudio.browser.core.model.IAttribute;
import org.apache.directory.ldapstudio.browser.core.model.IEntry;
import org.apache.directory.ldapstudio.browser.core.model.ISearch;
@@ -267,8 +267,8 @@
}
else
{
- AttributeHierachie ah1 = entry1.getAttributeWithSubtypes( attributeName );
- AttributeHierachie ah2 = entry2.getAttributeWithSubtypes( attributeName );
+ AttributeHierarchy ah1 = entry1.getAttributeWithSubtypes( attributeName );
+ AttributeHierarchy ah2 = entry2.getAttributeWithSubtypes( attributeName );
if ( ah1 == null && ah2 == null )
{
return this.equal();
Modified: directory/trunks/ldapstudio/ldapstudio-browser-ui/src/main/java/org/apache/directory/ldapstudio/browser/ui/editors/searchresult/SearchResultEditorUniversalListener.java
URL: http://svn.apache.org/viewvc/directory/trunks/ldapstudio/ldapstudio-browser-ui/src/main/java/org/apache/directory/ldapstudio/browser/ui/editors/searchresult/SearchResultEditorUniversalListener.java?view=diff&rev=491104&r1=491103&r2=491104
==============================================================================
--- directory/trunks/ldapstudio/ldapstudio-browser-ui/src/main/java/org/apache/directory/ldapstudio/browser/ui/editors/searchresult/SearchResultEditorUniversalListener.java (original)
+++ directory/trunks/ldapstudio/ldapstudio-browser-ui/src/main/java/org/apache/directory/ldapstudio/browser/ui/editors/searchresult/SearchResultEditorUniversalListener.java Fri Dec 29 13:15:47 2006
@@ -27,7 +27,7 @@
import org.apache.directory.ldapstudio.browser.core.events.EventRegistry;
import org.apache.directory.ldapstudio.browser.core.events.SearchUpdateEvent;
import org.apache.directory.ldapstudio.browser.core.events.SearchUpdateListener;
-import org.apache.directory.ldapstudio.browser.core.model.AttributeHierachie;
+import org.apache.directory.ldapstudio.browser.core.model.AttributeHierarchy;
import org.apache.directory.ldapstudio.browser.core.model.IAttribute;
import org.apache.directory.ldapstudio.browser.core.model.ISearch;
import org.apache.directory.ldapstudio.browser.core.model.ISearchResult;
@@ -248,7 +248,7 @@
{
if ( startEditAction.isEnabled()
- && startEditAction.getBestValueProvider().getCellEditor() instanceof TextCellEditor )
+ && startEditAction.getBestValueEditor().getCellEditor() instanceof TextCellEditor )
{
startEditAction.run();
CellEditor editor = viewer.getCellEditors()[cursor.getColumn()];
@@ -304,7 +304,7 @@
{
EmptyValueAddedEvent evae = ( EmptyValueAddedEvent ) event;
IAttribute att = evae.getAddedValue().getAttribute();
- AttributeHierachie ah = cursor.getSelectedAttributeHierarchie();
+ AttributeHierarchy ah = cursor.getSelectedAttributeHierarchie();
if ( ah != null && ah.contains( att ) )
{
viewer.setSelection( null, true );
Added: directory/trunks/ldapstudio/ldapstudio-browser-ui/src/main/java/org/apache/directory/ldapstudio/browser/ui/valueeditors/AbstractDialogBinaryValueEditor.java
URL: http://svn.apache.org/viewvc/directory/trunks/ldapstudio/ldapstudio-browser-ui/src/main/java/org/apache/directory/ldapstudio/browser/ui/valueeditors/AbstractDialogBinaryValueEditor.java?view=auto&rev=491104
==============================================================================
--- directory/trunks/ldapstudio/ldapstudio-browser-ui/src/main/java/org/apache/directory/ldapstudio/browser/ui/valueeditors/AbstractDialogBinaryValueEditor.java (added)
+++ directory/trunks/ldapstudio/ldapstudio-browser-ui/src/main/java/org/apache/directory/ldapstudio/browser/ui/valueeditors/AbstractDialogBinaryValueEditor.java Fri Dec 29 13:15:47 2006
@@ -0,0 +1,315 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+
+package org.apache.directory.ldapstudio.browser.ui.valueeditors;
+
+
+import org.apache.directory.ldapstudio.browser.core.events.EventRegistry;
+import org.apache.directory.ldapstudio.browser.core.events.ModelModifier;
+import org.apache.directory.ldapstudio.browser.core.internal.model.Attribute;
+import org.apache.directory.ldapstudio.browser.core.jobs.CreateValuesJob;
+import org.apache.directory.ldapstudio.browser.core.jobs.DeleteAttributesValueJob;
+import org.apache.directory.ldapstudio.browser.core.jobs.ModifyValueJob;
+import org.apache.directory.ldapstudio.browser.core.model.AttributeHierarchy;
+import org.apache.directory.ldapstudio.browser.core.model.IAttribute;
+import org.apache.directory.ldapstudio.browser.core.model.IConnection;
+import org.apache.directory.ldapstudio.browser.core.model.IEntry;
+import org.apache.directory.ldapstudio.browser.core.model.IValue;
+import org.apache.directory.ldapstudio.browser.core.model.ModelModificationException;
+import org.apache.directory.ldapstudio.browser.core.utils.LdifUtils;
+import org.apache.directory.ldapstudio.browser.core.utils.Utils;
+
+
+/**
+ *
+ * Abstract base class for value editors that handle binary values
+ * in a dialog.
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ * @version $Rev$, $Date$
+ */
+public abstract class AbstractDialogBinaryValueEditor extends AbstractDialogValueEditor implements ModelModifier
+{
+
+ protected AbstractDialogBinaryValueEditor()
+ {
+ super();
+ }
+
+
+ /**
+ * This implementation of getDisplayValue just returns a note,
+ * that the value is binary and the size of the data.
+ */
+ public String getDisplayValue( IValue value )
+ {
+ if ( showRawValues() )
+ {
+ return getPrintableString( value );
+ }
+ else
+ {
+ if ( value == null )
+ {
+ return "NULL";
+ }
+ else if ( value.isBinary() )
+ {
+ byte[] data = value.getBinaryValue();
+ return "Binary Data (" + data.length + " Bytes)";
+ }
+ else
+ {
+ return "Invalid Data";
+ }
+ }
+ }
+
+
+ /**
+ * Help method, returns a printable string if the value
+ * is binary.
+ */
+ public static String getPrintableString( IValue value )
+ {
+ if ( value == null )
+ {
+ return "NULL";
+ }
+ else if ( value.isBinary() )
+ {
+ byte[] data = value.getBinaryValue();
+ StringBuffer sb = new StringBuffer();
+ for ( int i = 0; data != null && i < data.length && i < 128; i++ )
+ {
+ if ( data[i] > 32 && data[i] < 127 )
+ sb.append( ( char ) data[i] );
+ else
+ sb.append( '.' );
+ }
+ return sb.toString();
+ }
+ else if ( value.isString() )
+ {
+ return value.getStringValue();
+ }
+ else
+ {
+ return "NULL";
+ }
+ }
+
+
+ /**
+ * This implementation returns IValue.EMPTY_BINARY_VALUE if
+ * the attribute is binary.
+ */
+ protected Object getEmptyRawValue( IAttribute attribute )
+ {
+ if ( attribute.isBinary() )
+ {
+ return IValue.EMPTY_BINARY_VALUE;
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+
+ /**
+ * This implementation returns the binary (byte[]) value
+ * of the given value.
+ */
+ public Object getRawValue( IValue value )
+ {
+ if ( value == null )
+ {
+ return null;
+ }
+ else if ( value.isString() )
+ {
+ return value.getBinaryValue();
+ }
+ else if ( value.isBinary() )
+ {
+ return value.getBinaryValue();
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+
+ /**
+ * This implementation returns the value itself if it is
+ * of type byte[] or a byte[] with the UTF-8 encoded string
+ * value if it is of type String.
+ */
+ public Object getRawValue( IConnection connection, Object value )
+ {
+ if ( value == null )
+ {
+ return null;
+ }
+ else if ( value instanceof String )
+ {
+ return LdifUtils.utf8encode( ( String ) value );
+ }
+ else if ( value instanceof byte[] )
+ {
+ return value;
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+
+ /**
+ * This implementation always return the binary value
+ * as byte[].
+ */
+ public Object getStringOrBinaryValue( Object rawValue )
+ {
+ if ( rawValue == null )
+ {
+ return null;
+ }
+ else if ( rawValue instanceof byte[] )
+ {
+ return rawValue;
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+
+ /**
+ * {@inheritDoc}
+ */
+ public final void createValue( IEntry entry, String attributeDescription, Object newRawValue )
+ throws ModelModificationException
+ {
+ if ( entry != null && attributeDescription != null && newRawValue != null && newRawValue instanceof byte[] )
+ {
+ if ( entry.getAttribute( attributeDescription ) != null )
+ {
+ this.modify( entry.getAttribute( attributeDescription ), newRawValue );
+ }
+ else
+ {
+ EventRegistry.suspendEventFireingInCurrentThread();
+ IAttribute attribute = new Attribute( entry, attributeDescription );
+ entry.addAttribute( attribute, this );
+ EventRegistry.resumeEventFireingInCurrentThread();
+
+ Object newValue;
+ if ( entry.getConnection().getSchema().getAttributeTypeDescription( attributeDescription )
+ .getSyntaxDescription().isString() )
+ {
+ newValue = LdifUtils.utf8decode( ( byte[] ) newRawValue );
+ }
+ else
+ {
+ newValue = ( byte[] ) newRawValue;
+ }
+
+ new CreateValuesJob( attribute, newValue ).execute();
+ }
+ }
+ }
+
+
+ /**
+ * {@inheritDoc}
+ */
+ private final void modify( IAttribute attribute, Object newRawValue ) throws ModelModificationException
+ {
+ if ( attribute != null && newRawValue != null && newRawValue instanceof byte[] )
+ {
+ if ( attribute.getValueSize() == 0 )
+ {
+ byte[] newValue = ( byte[] ) newRawValue;
+ new CreateValuesJob( attribute, newValue ).execute();
+ }
+ else if ( attribute.getValueSize() == 1 )
+ {
+ this.modifyValue( attribute.getValues()[0], newRawValue );
+ }
+ }
+ }
+
+
+ /**
+ * {@inheritDoc}
+ */
+ public final void modifyValue( IValue oldValue, Object newRawValue ) throws ModelModificationException
+ {
+ if ( oldValue != null && newRawValue != null && newRawValue instanceof byte[] )
+ {
+ byte[] newValue = ( byte[] ) newRawValue;
+ IAttribute attribute = oldValue.getAttribute();
+ if ( !Utils.equals( oldValue.getBinaryValue(), newValue ) )
+ {
+ if ( oldValue.isEmpty() )
+ {
+ EventRegistry.suspendEventFireingInCurrentThread();
+ attribute.deleteEmptyValue( this );
+ EventRegistry.resumeEventFireingInCurrentThread();
+ new CreateValuesJob( attribute, newValue ).execute();
+ }
+ else
+ {
+ new ModifyValueJob( attribute, oldValue, newValue ).execute();
+ }
+ }
+ }
+ }
+
+
+ /**
+ * {@inheritDoc}
+ */
+ public final void deleteAttribute( AttributeHierarchy ah ) throws ModelModificationException
+ {
+ if ( ah != null )
+ {
+ new DeleteAttributesValueJob( ah ).execute();
+ }
+ }
+
+
+ /**
+ * {@inheritDoc}
+ */
+ public final void deleteValue( IValue oldValue ) throws ModelModificationException
+ {
+ if ( oldValue != null )
+ {
+ new DeleteAttributesValueJob( oldValue ).execute();
+ }
+ }
+
+}
Added: directory/trunks/ldapstudio/ldapstudio-browser-ui/src/main/java/org/apache/directory/ldapstudio/browser/ui/valueeditors/AbstractDialogStringValueEditor.java
URL: http://svn.apache.org/viewvc/directory/trunks/ldapstudio/ldapstudio-browser-ui/src/main/java/org/apache/directory/ldapstudio/browser/ui/valueeditors/AbstractDialogStringValueEditor.java?view=auto&rev=491104
==============================================================================
--- directory/trunks/ldapstudio/ldapstudio-browser-ui/src/main/java/org/apache/directory/ldapstudio/browser/ui/valueeditors/AbstractDialogStringValueEditor.java (added)
+++ directory/trunks/ldapstudio/ldapstudio-browser-ui/src/main/java/org/apache/directory/ldapstudio/browser/ui/valueeditors/AbstractDialogStringValueEditor.java Fri Dec 29 13:15:47 2006
@@ -0,0 +1,292 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+
+package org.apache.directory.ldapstudio.browser.ui.valueeditors;
+
+
+import org.apache.directory.ldapstudio.browser.core.events.EventRegistry;
+import org.apache.directory.ldapstudio.browser.core.events.ModelModifier;
+import org.apache.directory.ldapstudio.browser.core.internal.model.Attribute;
+import org.apache.directory.ldapstudio.browser.core.jobs.CreateValuesJob;
+import org.apache.directory.ldapstudio.browser.core.jobs.DeleteAttributesValueJob;
+import org.apache.directory.ldapstudio.browser.core.jobs.ModifyValueJob;
+import org.apache.directory.ldapstudio.browser.core.model.AttributeHierarchy;
+import org.apache.directory.ldapstudio.browser.core.model.IAttribute;
+import org.apache.directory.ldapstudio.browser.core.model.IConnection;
+import org.apache.directory.ldapstudio.browser.core.model.IEntry;
+import org.apache.directory.ldapstudio.browser.core.model.IValue;
+import org.apache.directory.ldapstudio.browser.core.model.ModelModificationException;
+import org.apache.directory.ldapstudio.browser.core.utils.LdifUtils;
+
+
+/**
+ *
+ * Abstract base class for value editors that handle string values
+ * in a dialog.
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ * @version $Rev$, $Date$
+ */
+public abstract class AbstractDialogStringValueEditor extends AbstractDialogValueEditor implements ModelModifier
+{
+
+ protected AbstractDialogStringValueEditor()
+ {
+ super();
+ }
+
+
+ /**
+ * This implementation just returns the raw value
+ */
+ public String getDisplayValue( IValue value )
+ {
+ Object obj = this.getRawValue( value );
+ return obj == null ? "NULL" : obj.toString();
+ }
+
+
+ /**
+ * This implementation returns IValue.EMPTY_STRING_VALUE if
+ * the attribute is string.
+ */
+ protected Object getEmptyRawValue( IAttribute attribute )
+ {
+ if ( attribute.isString() )
+ {
+ return IValue.EMPTY_STRING_VALUE;
+ }
+ else
+ {
+ return IValue.EMPTY_BINARY_VALUE;
+ }
+ }
+
+
+ /**
+ * This implementation returns the string value
+ * of the given value.
+ */
+ public Object getRawValue( IValue value )
+ {
+ if ( value == null )
+ {
+ return null;
+ }
+ else if ( value.isString() )
+ {
+ return value.getStringValue();
+ }
+ else if ( value.isBinary() )
+ {
+ return isEditable( value.getBinaryValue() ) ? value.getStringValue() : null;
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+
+ /**
+ * This implementation returns the value itself if it is
+ * of type byte[] or a byte[] with the UTF-8 encoded string
+ * value if it is of type String.
+ */
+ public Object getRawValue( IConnection connection, Object value )
+ {
+ if ( value == null )
+ {
+ return null;
+ }
+ else if ( value instanceof String )
+ {
+ return value;
+ }
+ else if ( value instanceof byte[] )
+ {
+ String s = LdifUtils.utf8decode( ( byte[] ) value );
+ for ( int i = 0; i < s.length(); i++ )
+ {
+ if ( Character.isISOControl( s.charAt( i ) ) && s.charAt( i ) != '\n' && s.charAt( i ) != '\r' )
+ {
+ return null;
+ }
+ }
+ return s;
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+
+ /**
+ * Small helper.
+ */
+ private boolean isEditable( byte[] b )
+ {
+ if ( b == null )
+ {
+ return false;
+ }
+
+ for ( int i = 0; i < b.length; i++ )
+ {
+ if ( !( b[i] == '\n' || b[i] == '\r' || ( b[i] >= '\u0020' && b[i] <= '\u007F' ) ) )
+ {
+ return false;
+ }
+ }
+
+ return true;
+ }
+
+
+ /**
+ * This implementation always return the string value
+ * as String.
+ */
+ public Object getStringOrBinaryValue( Object rawValue )
+ {
+ if ( rawValue == null )
+ {
+ return null;
+ }
+ else if ( rawValue instanceof String )
+ {
+ return rawValue;
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+
+ /**
+ * {@inheritDoc}
+ */
+ public final void createValue( IEntry entry, String attributeDescription, Object newRawValue )
+ throws ModelModificationException
+ {
+ if ( entry != null && attributeDescription != null && newRawValue != null && newRawValue instanceof String )
+ {
+ if ( entry.getAttribute( attributeDescription ) != null )
+ {
+ this.modify( entry.getAttribute( attributeDescription ), newRawValue );
+ }
+ else
+ {
+ EventRegistry.suspendEventFireingInCurrentThread();
+ IAttribute attribute = new Attribute( entry, attributeDescription );
+ entry.addAttribute( attribute, this );
+ EventRegistry.resumeEventFireingInCurrentThread();
+
+ Object newValue;
+ if ( entry.getConnection().getSchema().getAttributeTypeDescription( attributeDescription )
+ .getSyntaxDescription().isString() )
+ {
+ newValue = ( String ) newRawValue;
+ }
+ else
+ {
+ newValue = LdifUtils.utf8encode( ( String ) newRawValue );
+ }
+
+ new CreateValuesJob( attribute, newValue ).execute();
+ }
+ }
+ }
+
+
+ /**
+ * {@inheritDoc}
+ */
+ private final void modify( IAttribute attribute, Object newRawValue ) throws ModelModificationException
+ {
+ if ( attribute != null && newRawValue != null && newRawValue instanceof String )
+ {
+ if ( attribute.getValueSize() == 0 )
+ {
+ String newValue = ( String ) newRawValue;
+ new CreateValuesJob( attribute, newValue ).execute();
+ }
+ else if ( attribute.getValueSize() == 1 )
+ {
+ this.modifyValue( attribute.getValues()[0], newRawValue );
+ }
+ }
+ }
+
+
+ /**
+ * {@inheritDoc}
+ */
+ public final void modifyValue( IValue oldValue, Object newRawValue ) throws ModelModificationException
+ {
+ if ( oldValue != null && newRawValue != null && newRawValue instanceof String )
+ {
+
+ String newValue = ( String ) newRawValue;
+ IAttribute attribute = oldValue.getAttribute();
+ if ( !oldValue.getStringValue().equals( newValue ) )
+ {
+ if ( oldValue.isEmpty() )
+ {
+ EventRegistry.suspendEventFireingInCurrentThread();
+ attribute.deleteEmptyValue( this );
+ EventRegistry.resumeEventFireingInCurrentThread();
+ new CreateValuesJob( attribute, newValue ).execute();
+ }
+ else
+ {
+ new ModifyValueJob( attribute, oldValue, newValue ).execute();
+ }
+ }
+ }
+ }
+
+
+ /**
+ * {@inheritDoc}
+ */
+ public final void deleteAttribute( AttributeHierarchy ah ) throws ModelModificationException
+ {
+ if ( ah != null )
+ {
+ new DeleteAttributesValueJob( ah ).execute();
+ }
+ }
+
+
+ /**
+ * {@inheritDoc}
+ */
+ public final void deleteValue( IValue oldValue ) throws ModelModificationException
+ {
+ if ( oldValue != null )
+ {
+ new DeleteAttributesValueJob( oldValue ).execute();
+ }
+ }
+
+}
Added: directory/trunks/ldapstudio/ldapstudio-browser-ui/src/main/java/org/apache/directory/ldapstudio/browser/ui/valueeditors/AbstractDialogValueEditor.java
URL: http://svn.apache.org/viewvc/directory/trunks/ldapstudio/ldapstudio-browser-ui/src/main/java/org/apache/directory/ldapstudio/browser/ui/valueeditors/AbstractDialogValueEditor.java?view=auto&rev=491104
==============================================================================
--- directory/trunks/ldapstudio/ldapstudio-browser-ui/src/main/java/org/apache/directory/ldapstudio/browser/ui/valueeditors/AbstractDialogValueEditor.java (added)
+++ directory/trunks/ldapstudio/ldapstudio-browser-ui/src/main/java/org/apache/directory/ldapstudio/browser/ui/valueeditors/AbstractDialogValueEditor.java Fri Dec 29 13:15:47 2006
@@ -0,0 +1,275 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+
+package org.apache.directory.ldapstudio.browser.ui.valueeditors;
+
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Iterator;
+import java.util.List;
+
+import org.apache.directory.ldapstudio.browser.core.model.AttributeHierarchy;
+import org.apache.directory.ldapstudio.browser.core.model.IAttribute;
+import org.apache.directory.ldapstudio.browser.core.model.IValue;
+import org.apache.directory.ldapstudio.browser.ui.BrowserUIConstants;
+import org.apache.directory.ldapstudio.browser.ui.BrowserUIPlugin;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.jface.viewers.CellEditor;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Shell;
+
+
+/**
+ * Abstract base class for value editors that handle values
+ * in a dialog.
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ * @version $Rev$, $Date$
+ */
+public abstract class AbstractDialogValueEditor extends CellEditor implements IValueEditor
+{
+
+ /** The value to handle */
+ private Object value;
+
+ /** The shell, used to open the editor */
+ private Shell shell;
+
+ /** The name of this value editor */
+ private String name;
+
+ /** The image of this value editor */
+ private ImageDescriptor imageDescriptor;
+
+
+ /**
+ *
+ * Creates a new instance of AbstractDialogEditor.
+ *
+ * @param parent The parent composite, used to open the dialog.
+ */
+ protected AbstractDialogValueEditor()
+ {
+ }
+
+
+ /**
+ * Returns true if the user wishes to show raw values rather than
+ * user-friendly values. If true the getDisplayValue() methods
+ * shouldnot modify the value.
+ *
+ * @return true if raw values should be displayed
+ */
+ protected boolean showRawValues()
+ {
+ return BrowserUIPlugin.getDefault().getPreferenceStore().getBoolean(
+ BrowserUIConstants.PREFERENCE_SHOW_RAW_VALUES );
+ }
+
+
+ /**
+ * This implementation simple returns itself.
+ *
+ * @see IValueEditor.getCellEditor()
+ */
+ public CellEditor getCellEditor()
+ {
+ return this;
+ }
+
+
+ /**
+ * This is a dialog editor, it doesn't create a control.
+ * It just extracts and saves the shell reference from parent.
+ */
+ protected final Control createControl( Composite parent )
+ {
+ this.shell = parent.getShell();
+ return null;
+ }
+
+
+ /**
+ * This is a dialog editor, doesn't set focus.
+ */
+ protected final void doSetFocus()
+ {
+ }
+
+
+ /**
+ * Returns the value object stored in a member.
+ */
+ protected final Object doGetValue()
+ {
+ return this.value;
+ }
+
+
+ /**
+ * Stores the value object in a member.
+ */
+ protected final void doSetValue( Object value )
+ {
+ if ( value != null && value instanceof IValue.EmptyValue )
+ {
+ IValue.EmptyValue emptyValue = ( IValue.EmptyValue ) value;
+ if ( emptyValue.isBinary() )
+ value = emptyValue.getBinaryValue();
+ else
+ value = emptyValue.getStringValue();
+ }
+ this.value = value;
+ }
+
+
+ /**
+ * The activate method is called from the JFace framework
+ * to start editing.
+ *
+ */
+ public final void activate()
+ {
+ boolean save = this.openDialog( shell );
+ //doSetValue( newValue );
+ if ( !save || this.value == null )
+ {
+ fireCancelEditor();
+ }
+ else
+ {
+ fireApplyEditorValue();
+ deactivate();
+ }
+ }
+
+
+ /**
+ * Opens the edit dialog.
+ * Call getValue() to get the current value to edit.
+ * Call setValue() to set the new value after editing.
+ *
+ * @param shell The shell to use to open the dialog
+ * @return true if the new value should be stored, false
+ * to cancel the editor.
+ */
+ protected abstract boolean openDialog( Shell shell );
+
+
+ /**
+ * Returns a raw value that represents an empty value.
+ *
+ * @param attribute the attribute
+ * @return
+ */
+ protected abstract Object getEmptyRawValue( IAttribute attribute );
+
+
+ /**
+ * This implementation of getDisplayValue() returns a
+ * comma-separated list of all values.
+ */
+ public String getDisplayValue( AttributeHierarchy attributeHierarchy )
+ {
+ if ( attributeHierarchy == null )
+ {
+ return "NULL";
+ }
+
+ List<IValue> valueList = new ArrayList<IValue>();
+ for ( Iterator it = attributeHierarchy.iterator(); it.hasNext(); )
+ {
+ IAttribute attribute = ( IAttribute ) it.next();
+ valueList.addAll( Arrays.asList( attribute.getValues() ) );
+ }
+
+ StringBuffer sb = new StringBuffer();
+ for ( Iterator<IValue> it = valueList.iterator(); it.hasNext(); )
+ {
+ IValue value = it.next();
+ sb.append( getDisplayValue( value ) );
+ if ( it.hasNext() )
+ sb.append( ", " );
+ }
+ return sb.toString();
+ }
+
+
+ /**
+ * This implementation calls getEmptyRawValue(IAttribute) if there are no values
+ * in attributeHierarchy and getRawValue(IValue) if attributeHierarchy
+ * contains exactly one value. Otherwise null is returned.
+ */
+ public Object getRawValue( AttributeHierarchy attributeHierarchy )
+ {
+ if ( attributeHierarchy == null )
+ {
+ return null;
+ }
+ else if ( attributeHierarchy.size() == 1 && attributeHierarchy.getAttribute().getValueSize() == 0 )
+ {
+ return getEmptyRawValue( attributeHierarchy.getAttribute() );
+ }
+ else if ( attributeHierarchy.size() == 1 && attributeHierarchy.getAttribute().getValueSize() == 1 )
+ {
+ return getRawValue( attributeHierarchy.getAttribute().getValues()[0] );
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+
+ /**
+ * {@inheritDoc}
+ */
+ public void setValueEditorName( String name )
+ {
+ this.name = name;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public String getValueEditorName()
+ {
+ return name;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public void setValueEditorImageDescriptor( ImageDescriptor imageDescriptor )
+ {
+ this.imageDescriptor = imageDescriptor;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public ImageDescriptor getValueEditorImageDescriptor()
+ {
+ return imageDescriptor;
+ }
+
+}
Added: directory/trunks/ldapstudio/ldapstudio-browser-ui/src/main/java/org/apache/directory/ldapstudio/browser/ui/valueeditors/AbstractInPlaceStringValueEditor.java
URL: http://svn.apache.org/viewvc/directory/trunks/ldapstudio/ldapstudio-browser-ui/src/main/java/org/apache/directory/ldapstudio/browser/ui/valueeditors/AbstractInPlaceStringValueEditor.java?view=auto&rev=491104
==============================================================================
--- directory/trunks/ldapstudio/ldapstudio-browser-ui/src/main/java/org/apache/directory/ldapstudio/browser/ui/valueeditors/AbstractInPlaceStringValueEditor.java (added)
+++ directory/trunks/ldapstudio/ldapstudio-browser-ui/src/main/java/org/apache/directory/ldapstudio/browser/ui/valueeditors/AbstractInPlaceStringValueEditor.java Fri Dec 29 13:15:47 2006
@@ -0,0 +1,353 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+
+package org.apache.directory.ldapstudio.browser.ui.valueeditors;
+
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Iterator;
+import java.util.List;
+
+import org.apache.directory.ldapstudio.browser.core.events.ModelModifier;
+import org.apache.directory.ldapstudio.browser.core.model.AttributeHierarchy;
+import org.apache.directory.ldapstudio.browser.core.model.IAttribute;
+import org.apache.directory.ldapstudio.browser.core.model.IConnection;
+import org.apache.directory.ldapstudio.browser.core.model.IEntry;
+import org.apache.directory.ldapstudio.browser.core.model.IValue;
+import org.apache.directory.ldapstudio.browser.core.model.ModelModificationException;
+import org.apache.directory.ldapstudio.browser.core.utils.LdifUtils;
+import org.apache.directory.ldapstudio.browser.ui.BrowserUIConstants;
+import org.apache.directory.ldapstudio.browser.ui.BrowserUIPlugin;
+import org.apache.directory.ldapstudio.browser.ui.valueeditors.internal.TextValueEditor;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.jface.viewers.CellEditor;
+import org.eclipse.jface.viewers.TextCellEditor;
+
+
+/**
+ *
+ * Abstract base class for value editors that handle string values
+ * withing the table or tree control.
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ * @version $Rev$, $Date$
+ */
+public abstract class AbstractInPlaceStringValueEditor extends TextCellEditor implements IValueEditor, ModelModifier
+{
+
+ /**
+ * @deprecated will be removed soon. Just used to delegate
+ * createValue(), deleteValue() and modifyValue().
+ */
+ private TextValueEditor delegate;
+
+ /** The name of this value editor */
+ private String name;
+
+ /** The image of this value editor */
+ private ImageDescriptor imageDescriptor;
+
+ protected AbstractInPlaceStringValueEditor()
+ {
+ super();
+ this.delegate = new TextValueEditor();
+ }
+
+
+ /**
+ * Returns true if the user wishes to show raw values rather than
+ * user-friendly values. If true the getDisplayValue() methods
+ * shouldnot modify the value.
+ *
+ * @return true if raw values should be displayed
+ */
+ protected boolean showRawValues()
+ {
+ return BrowserUIPlugin.getDefault().getPreferenceStore().getBoolean(
+ BrowserUIConstants.PREFERENCE_SHOW_RAW_VALUES );
+ }
+
+
+ /**
+ * This implementation of getDisplayValue() returns a
+ * comma-separated list of all values.
+ */
+ public String getDisplayValue( AttributeHierarchy attributeHierarchy )
+ {
+ if ( attributeHierarchy == null )
+ {
+ return "NULL";
+ }
+
+ List<IValue> valueList = new ArrayList<IValue>();
+ for ( Iterator it = attributeHierarchy.iterator(); it.hasNext(); )
+ {
+ IAttribute attribute = ( IAttribute ) it.next();
+ valueList.addAll( Arrays.asList( attribute.getValues() ) );
+ }
+
+ StringBuffer sb = new StringBuffer();
+ for ( Iterator<IValue> it = valueList.iterator(); it.hasNext(); )
+ {
+ IValue value = it.next();
+ sb.append( getDisplayValue( value ) );
+ if ( it.hasNext() )
+ sb.append( ", " );
+ }
+ return sb.toString();
+ }
+
+
+ /**
+ * This implementation just returns the raw value
+ */
+ public String getDisplayValue( IValue value )
+ {
+ Object obj = this.getRawValue( value );
+ return obj == null ? "NULL" : obj.toString();
+ }
+
+
+ /**
+ * This implementation returns IValue.EMPTY_xx_VALUE if there are no values
+ * in attributeHierarchy or calls getRawValue(IValue) if attributeHierarchy
+ * contains exactly one value. Otherwise null is returned.
+ */
+ public Object getRawValue( AttributeHierarchy attributeHierarchy )
+ {
+ if ( attributeHierarchy == null )
+ {
+ return null;
+ }
+ else if ( attributeHierarchy.size() == 1 && attributeHierarchy.getAttribute().getValueSize() == 0 )
+ {
+ if ( attributeHierarchy.getAttribute().isString() )
+ {
+ return IValue.EMPTY_STRING_VALUE;
+ }
+ else
+ {
+ return IValue.EMPTY_BINARY_VALUE;
+ }
+ }
+ else if ( attributeHierarchy.size() == 1 && attributeHierarchy.getAttribute().getValueSize() == 1 )
+ {
+ return getRawValue( attributeHierarchy.getAttribute().getValues()[0] );
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+
+ /**
+ * This implementation returns the string value
+ * of the given value.
+ */
+ public Object getRawValue( IValue value )
+ {
+ if ( value == null )
+ {
+ return null;
+ }
+ else if ( value.isString() )
+ {
+ return value.getStringValue();
+ }
+ else if ( value.isBinary() )
+ {
+ return isEditable( value.getBinaryValue() ) ? value.getStringValue() : null;
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+
+ /**
+ * Small helper.
+ */
+ private boolean isEditable( byte[] b )
+ {
+ if ( b == null )
+ {
+ return false;
+ }
+
+ for ( int i = 0; i < b.length; i++ )
+ {
+ if ( !( b[i] == '\n' || b[i] == '\r' || ( b[i] >= '\u0020' && b[i] <= '\u007F' ) ) )
+ {
+ return false;
+ }
+ }
+
+ return true;
+ }
+
+
+ /**
+ * This implementation returns the value itself if it is
+ * of type byte[] or a byte[] with the UTF-8 encoded string
+ * value if it is of type String.
+ */
+ public Object getRawValue( IConnection connection, Object value )
+ {
+ if ( value == null )
+ {
+ return null;
+ }
+ else if ( value instanceof String )
+ {
+ return value;
+ }
+ else if ( value instanceof byte[] )
+ {
+ String s = LdifUtils.utf8decode( ( byte[] ) value );
+ for ( int i = 0; i < s.length(); i++ )
+ {
+ if ( Character.isISOControl( s.charAt( i ) ) && s.charAt( i ) != '\n' && s.charAt( i ) != '\r' )
+ {
+ return null;
+ }
+ }
+ return s;
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+
+ /**
+ * This implementation always return the string value
+ * as String.
+ */
+ public Object getStringOrBinaryValue( Object rawValue )
+ {
+ if ( rawValue == null )
+ {
+ return null;
+ }
+ else if ( rawValue instanceof String )
+ {
+ return rawValue;
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+ public CellEditor getCellEditor()
+ {
+ return this;
+ }
+
+
+ protected Object doGetValue()
+ {
+ return "".equals( text.getText() ) ? null : text.getText();
+ }
+
+
+ protected void doSetValue( Object value )
+ {
+ if ( value != null && value instanceof IValue.EmptyValue )
+ {
+ value = ( ( IValue.EmptyValue ) value ).getStringValue();
+ }
+ super.doSetValue( value );
+ }
+
+
+ /**
+ * {@inheritDoc}
+ */
+ public void setValueEditorName( String name )
+ {
+ this.name = name;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public String getValueEditorName()
+ {
+ return name;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public void setValueEditorImageDescriptor( ImageDescriptor imageDescriptor )
+ {
+ this.imageDescriptor = imageDescriptor;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public ImageDescriptor getValueEditorImageDescriptor()
+ {
+ return imageDescriptor;
+ }
+
+
+ /**
+ * {@inheritDoc}
+ */
+ public final void createValue( IEntry entry, String attributeDescription, Object newRawValue )
+ throws ModelModificationException
+ {
+ delegate.createValue( entry, attributeDescription, newRawValue );
+ }
+
+
+ /**
+ * {@inheritDoc}
+ */
+ public final void deleteAttribute( AttributeHierarchy ah ) throws ModelModificationException
+ {
+ delegate.deleteAttribute( ah );
+ }
+
+
+ /**
+ * {@inheritDoc}
+ */
+ public final void deleteValue( IValue oldValue ) throws ModelModificationException
+ {
+ delegate.deleteValue( oldValue );
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public final void modifyValue( IValue oldValue, Object newRawValue ) throws ModelModificationException
+ {
+ delegate.modifyValue( oldValue, newRawValue );
+ }
+
+}
Added: directory/trunks/ldapstudio/ldapstudio-browser-ui/src/main/java/org/apache/directory/ldapstudio/browser/ui/valueeditors/IValueEditor.java
URL: http://svn.apache.org/viewvc/directory/trunks/ldapstudio/ldapstudio-browser-ui/src/main/java/org/apache/directory/ldapstudio/browser/ui/valueeditors/IValueEditor.java?view=auto&rev=491104
==============================================================================
--- directory/trunks/ldapstudio/ldapstudio-browser-ui/src/main/java/org/apache/directory/ldapstudio/browser/ui/valueeditors/IValueEditor.java (added)
+++ directory/trunks/ldapstudio/ldapstudio-browser-ui/src/main/java/org/apache/directory/ldapstudio/browser/ui/valueeditors/IValueEditor.java Fri Dec 29 13:15:47 2006
@@ -0,0 +1,265 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+
+package org.apache.directory.ldapstudio.browser.ui.valueeditors;
+
+
+import org.apache.directory.ldapstudio.browser.core.model.AttributeHierarchy;
+import org.apache.directory.ldapstudio.browser.core.model.IConnection;
+import org.apache.directory.ldapstudio.browser.core.model.IEntry;
+import org.apache.directory.ldapstudio.browser.core.model.IValue;
+import org.apache.directory.ldapstudio.browser.core.model.ModelModificationException;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.jface.viewers.CellEditor;
+import org.eclipse.swt.widgets.Composite;
+
+
+/**
+ * A ValueEditor knows how to display and edit values of a LDAP attribute.
+ * ValueEditors are used from the entry editor or search result editor
+ * to display values to edit values in a user-friendly way.
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ * @version $Rev$, $Date$
+ */
+public interface IValueEditor
+{
+
+ /**
+ * Returns the string representation of the given attribute hierarchy
+ * presented to the user.
+ * <p>
+ * This method is called from the search result editor. A attribute hierarchy may
+ * contain multiple attributes each with multiple values. It is common that
+ * a ValueEditor returns a comma-separated list.
+ *
+ * @param attributeHierarchy the attribute hierarchy
+ * @return the string representation of the attribute hierarchy
+ */
+ public abstract String getDisplayValue( AttributeHierarchy attributeHierarchy );
+
+
+ /**
+ * Returns the string representation of the given value
+ * presented to the user.
+ * <p>
+ * This method is called from the entry editor.
+ *
+ * @param value the value
+ * @return the string representation of the value
+ */
+ public abstract String getDisplayValue( IValue value );
+
+
+ /**
+ * Returns the raw value if this value editor can handle the given
+ * attribute hierarchy. The returned value is used as input for
+ * the CellEditor returned by getCellEditor().
+ * <p>
+ * If this value editor can't handle the given attribute hierarchy
+ * it must return null.
+ * <p>
+ * Note: It is also possilbe that the attribute hierarchy doesn't contain
+ * a value. This means the value is up to be created.
+ * <p>
+ * This method is called from the search result editor. It is common
+ * to return null if the attribute hierarchy contains more than
+ * one value.
+ *
+ * @param attributeHierarchy the attribute hierarchy
+ * @return the raw value of the attribute hierarchy or null
+ */
+ public abstract Object getRawValue( AttributeHierarchy attributeHierarchy );
+
+
+ /**
+ * Returns the raw value if this value editor can handle the given
+ * value. The returned value is used as input for the CellEditor
+ * returned by getCellEditor().
+ * <p>
+ * If this value editor can't handle the given value it must
+ * return null.
+ * <p>
+ * Note: It is also possible that the value is empty!
+ * <p>
+ * This method is called from the entry editor.
+ *
+ * @param value the value
+ * @return the raw value of the value or null
+ */
+ public abstract Object getRawValue( IValue value );
+
+
+ /**
+ * Returns the raw value if this value editor can handle the given
+ * value. The returned value is used as input for the CellEditor
+ * returned by getCellEditor().
+ * <p>
+ * If this value editor can't handle the given value it must
+ * return null.
+ * <p>
+ * This method is called from the LDIF editor. The connection object
+ * could be used for editors handling connection-dependent values.
+ *
+ * @param connection the connection
+ * @param value the value either String or byte[]
+ * @return the raw value of the value or null
+ */
+ public abstract Object getRawValue( IConnection connecton, Object stringOrBinaryValue );
+
+
+ /**
+ * Returns the String or binary byte[] value of the given raw value.
+ * The return value is used to create or modify the value
+ * in directory.
+ * <p>
+ * This method is called after editing has been finished. The
+ * given rawValue is the one returned by the CellEditor.
+ *
+ * @param rawValue the raw value return from cell editor
+ * @return the String or byte[] value
+ */
+ public abstract Object getStringOrBinaryValue( Object rawValue );
+
+
+ /**
+ * Returns the editors name, previously set with
+ * setValueEditorName().
+ *
+ * @return the editors name
+ */
+ public abstract String getValueEditorName();
+
+
+ /**
+ * Sets the editors name.
+ *
+ * This method is called during initialization of the
+ * value editor, the name specified in value editor
+ * extension is assigned.
+ *
+ * @param name the editors name
+ */
+ public abstract void setValueEditorName( String name );
+
+
+ /**
+ * Returns the editors image, previously set with
+ * setValueEditorImageDescriptor().
+ *
+ * @return the editors image
+ */
+ public abstract ImageDescriptor getValueEditorImageDescriptor();
+
+
+ /**
+ * Sets the editors image.
+ *
+ * This method is called during initialization of the
+ * value editor, the icon specified in value editor
+ * extension is assigned.
+ *
+ * @param imageDescriptor the editors image
+ */
+ public abstract void setValueEditorImageDescriptor( ImageDescriptor imageDescriptor );
+
+
+ /**
+ * Creates the attribute with the given value at the entry.
+ *
+ * It is called from a ICellModifier if no attribute of value exists and
+ * the raw value returned by the CellEditor isn't null.
+ *
+ * @param entry
+ * @param attributeDescription
+ * @param newRawValue
+ * @throws ModelModificationException
+ * @deprecated This functionality will be removed from IValueEditor soon.
+ */
+ public abstract void createValue( IEntry entry, String attributeDescription, Object newRawValue ) throws ModelModificationException;
+
+
+ /**
+ * Modifies the value and sets the given raw value
+ *
+ * It is called from a ICellModfier if the value exists and the raw
+ * value returned by the CellEditor isn't null.
+ *
+ * @param value
+ * @param newRawValue
+ * @throws ModelModificationException
+ * @deprecated This functionality will be removed from IValueEditor soon.
+ */
+ public abstract void modifyValue( IValue value, Object newRawValue ) throws ModelModificationException;
+
+
+ /**
+ * Deletes the attributes
+ *
+ * It is called from a ICellModfier if the attribute exists and the raw
+ * value returned by the CellEditor is null.
+ *
+ * @param attributes
+ * @throws ModelModificationException
+ * @deprecated This functionality will be removed from IValueEditor soon.
+ */
+ public abstract void deleteAttribute( AttributeHierarchy ah ) throws ModelModificationException;
+
+
+ /**
+ * Deletes the value
+ *
+ * It is called from a ICellModfier if the value exists and the raw
+ * value returned by the CellEditor is null.
+ *
+ * @param oldValue
+ * @throws ModelModificationException
+ * @deprecated This functionality will be removed from IValueEditor soon.
+ */
+ public abstract void deleteValue( IValue oldValue ) throws ModelModificationException;
+
+
+ /**
+ * Creates the control for this value editor under the given parent control.
+ *
+ * @param parent the parent control
+ */
+ public abstract void create( Composite parent );
+
+
+ /**
+ * Disposes of this value editor and frees any associated SWT resources.
+ */
+ public abstract void dispose();
+
+
+ /**
+ * Returns the JFace CellEditor that is able to handle values returned by
+ * one of the getRawValue() or the getEmptyRawValue() methods.
+ *
+ * The object returned by the CellEditor's getValue() method is
+ * then sent to the getStringOrBinary() method to get the
+ * directory value.
+ *
+ * @return the JFace CellEditor
+ *
+ */
+ public abstract CellEditor getCellEditor();
+}
Added: directory/trunks/ldapstudio/ldapstudio-browser-ui/src/main/java/org/apache/directory/ldapstudio/browser/ui/valueeditors/internal/AddressValueEditor.java
URL: http://svn.apache.org/viewvc/directory/trunks/ldapstudio/ldapstudio-browser-ui/src/main/java/org/apache/directory/ldapstudio/browser/ui/valueeditors/internal/AddressValueEditor.java?view=auto&rev=491104
==============================================================================
--- directory/trunks/ldapstudio/ldapstudio-browser-ui/src/main/java/org/apache/directory/ldapstudio/browser/ui/valueeditors/internal/AddressValueEditor.java (added)
+++ directory/trunks/ldapstudio/ldapstudio-browser-ui/src/main/java/org/apache/directory/ldapstudio/browser/ui/valueeditors/internal/AddressValueEditor.java Fri Dec 29 13:15:47 2006
@@ -0,0 +1,68 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+
+package org.apache.directory.ldapstudio.browser.ui.valueeditors.internal;
+
+
+import org.apache.directory.ldapstudio.browser.core.model.IValue;
+import org.apache.directory.ldapstudio.browser.ui.dialogs.AddressDialog;
+import org.apache.directory.ldapstudio.browser.ui.dialogs.TextDialog;
+import org.apache.directory.ldapstudio.browser.ui.valueeditors.AbstractDialogStringValueEditor;
+import org.eclipse.swt.widgets.Shell;
+
+
+public class AddressValueEditor extends AbstractDialogStringValueEditor
+{
+
+ public AddressValueEditor()
+ {
+ super();
+ }
+
+
+ protected boolean openDialog( Shell shell )
+ {
+ Object value = getValue();
+ if ( value != null && value instanceof String )
+ {
+ AddressDialog dialog = new AddressDialog( shell, ( String ) value );
+ if ( dialog.open() == TextDialog.OK && !"".equals( dialog.getText() ) )
+ {
+ setValue( dialog.getText() );
+ return true;
+ }
+ }
+ return false;
+ }
+
+
+ public String getDisplayValue( IValue value )
+ {
+ String displayValue = super.getDisplayValue( value );
+
+ if ( !showRawValues() )
+ {
+ displayValue = displayValue.replaceAll( "\\$", ", " );
+ }
+
+ return displayValue;
+ }
+
+}
Added: directory/trunks/ldapstudio/ldapstudio-browser-ui/src/main/java/org/apache/directory/ldapstudio/browser/ui/valueeditors/internal/DnValueEditor.java
URL: http://svn.apache.org/viewvc/directory/trunks/ldapstudio/ldapstudio-browser-ui/src/main/java/org/apache/directory/ldapstudio/browser/ui/valueeditors/internal/DnValueEditor.java?view=auto&rev=491104
==============================================================================
--- directory/trunks/ldapstudio/ldapstudio-browser-ui/src/main/java/org/apache/directory/ldapstudio/browser/ui/valueeditors/internal/DnValueEditor.java (added)
+++ directory/trunks/ldapstudio/ldapstudio-browser-ui/src/main/java/org/apache/directory/ldapstudio/browser/ui/valueeditors/internal/DnValueEditor.java Fri Dec 29 13:15:47 2006
@@ -0,0 +1,161 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+
+package org.apache.directory.ldapstudio.browser.ui.valueeditors.internal;
+
+
+import org.apache.directory.ldapstudio.browser.core.model.AttributeHierarchy;
+import org.apache.directory.ldapstudio.browser.core.model.DN;
+import org.apache.directory.ldapstudio.browser.core.model.IConnection;
+import org.apache.directory.ldapstudio.browser.core.model.IValue;
+import org.apache.directory.ldapstudio.browser.core.model.NameException;
+import org.apache.directory.ldapstudio.browser.ui.dialogs.DnDialog;
+import org.apache.directory.ldapstudio.browser.ui.dialogs.TextDialog;
+import org.apache.directory.ldapstudio.browser.ui.valueeditors.AbstractDialogStringValueEditor;
+import org.eclipse.swt.widgets.Shell;
+
+
+public class DnValueEditor extends AbstractDialogStringValueEditor
+{
+
+ public DnValueEditor()
+ {
+ super();
+ }
+
+
+ protected boolean openDialog( Shell shell )
+ {
+ Object value = getValue();
+ if ( value != null && value instanceof DnValueEditorRawValueWrapper )
+ {
+ DnValueEditorRawValueWrapper wrapper = ( DnValueEditorRawValueWrapper ) value;
+ DnDialog dialog = new DnDialog( shell, wrapper.connection, wrapper.dn );
+ if ( dialog.open() == TextDialog.OK && dialog.getDn() != null )
+ {
+ setValue( dialog.getDn().toString() );
+ return true;
+ }
+ }
+ return false;
+ }
+
+
+ public Object getRawValue( AttributeHierarchy ah )
+ {
+ if ( ah == null )
+ {
+ return null;
+ }
+ else if ( ah.size() == 1 && ah.getAttribute().getValueSize() == 0 )
+ {
+ IConnection connection = ah.getAttribute().getEntry().getConnection();
+ DN dn = null;
+ return new DnValueEditorRawValueWrapper( connection, dn );
+ }
+ else if ( ah.size() == 1 && ah.getAttribute().getValueSize() == 1 )
+ {
+ IConnection connection = ah.getAttribute().getEntry().getConnection();
+ DN dn = null;
+ try
+ {
+ dn = new DN( getDisplayValue( ah ) );
+ }
+ catch ( NameException e )
+ {
+ }
+ return new DnValueEditorRawValueWrapper( connection, dn );
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+
+ public Object getRawValue( IValue value )
+ {
+ IConnection connection = value.getAttribute().getEntry().getConnection();
+
+ DN dn = null;
+ if ( value.isEmpty() )
+ {
+ dn = null;
+ }
+ else
+ {
+ try
+ {
+ dn = new DN( getDisplayValue( value ) );
+ }
+ catch ( NameException e )
+ {
+ }
+ }
+
+ return new DnValueEditorRawValueWrapper( connection, dn );
+ }
+
+
+ public Object getRawValue( IConnection connection, Object value )
+ {
+ Object o = super.getRawValue( connection, value );
+ if ( o != null && o instanceof String )
+ {
+ try
+ {
+ DN dn = new DN( ( String ) o );
+ return new DnValueEditorRawValueWrapper( connection, dn );
+ }
+ catch ( NameException e )
+ {
+ }
+ }
+
+ return null;
+ }
+
+
+ public String getDisplayValue( IValue value )
+ {
+ if ( value == null )
+ {
+ return "NULL";
+ }
+
+ String displayValue = value.getStringValue();
+ return displayValue;
+ }
+
+ class DnValueEditorRawValueWrapper
+ {
+ IConnection connection;
+
+ DN dn;
+
+
+ public DnValueEditorRawValueWrapper( IConnection connection, DN dn )
+ {
+ this.connection = connection;
+ this.dn = dn;
+ }
+ }
+
+}
Added: directory/trunks/ldapstudio/ldapstudio-browser-ui/src/main/java/org/apache/directory/ldapstudio/browser/ui/valueeditors/internal/HexValueEditor.java
URL: http://svn.apache.org/viewvc/directory/trunks/ldapstudio/ldapstudio-browser-ui/src/main/java/org/apache/directory/ldapstudio/browser/ui/valueeditors/internal/HexValueEditor.java?view=auto&rev=491104
==============================================================================
--- directory/trunks/ldapstudio/ldapstudio-browser-ui/src/main/java/org/apache/directory/ldapstudio/browser/ui/valueeditors/internal/HexValueEditor.java (added)
+++ directory/trunks/ldapstudio/ldapstudio-browser-ui/src/main/java/org/apache/directory/ldapstudio/browser/ui/valueeditors/internal/HexValueEditor.java Fri Dec 29 13:15:47 2006
@@ -0,0 +1,40 @@
+package org.apache.directory.ldapstudio.browser.ui.valueeditors.internal;
+
+
+import org.apache.directory.ldapstudio.browser.ui.dialogs.HexDialog;
+import org.apache.directory.ldapstudio.browser.ui.valueeditors.AbstractDialogBinaryValueEditor;
+import org.eclipse.swt.widgets.Shell;
+
+
+/**
+ * The default editor for binary values. Uses the HexDialog.
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ * @version $Rev$, $Date$
+ */
+public class HexValueEditor extends AbstractDialogBinaryValueEditor
+{
+
+ public HexValueEditor()
+ {
+ super();
+ }
+
+
+ protected boolean openDialog( Shell shell )
+ {
+ Object value = getValue();
+ if ( value != null && value instanceof byte[] )
+ {
+ byte[] initialData = ( byte[] ) value;
+ HexDialog dialog = new HexDialog( shell, initialData );
+ if ( dialog.open() == HexDialog.OK && dialog.getData() != null )
+ {
+ setValue( dialog.getData() );
+ return true;
+ }
+ }
+ return false;
+ }
+
+}
Added: directory/trunks/ldapstudio/ldapstudio-browser-ui/src/main/java/org/apache/directory/ldapstudio/browser/ui/valueeditors/internal/ImageValueEditor.java
URL: http://svn.apache.org/viewvc/directory/trunks/ldapstudio/ldapstudio-browser-ui/src/main/java/org/apache/directory/ldapstudio/browser/ui/valueeditors/internal/ImageValueEditor.java?view=auto&rev=491104
==============================================================================
--- directory/trunks/ldapstudio/ldapstudio-browser-ui/src/main/java/org/apache/directory/ldapstudio/browser/ui/valueeditors/internal/ImageValueEditor.java (added)
+++ directory/trunks/ldapstudio/ldapstudio-browser-ui/src/main/java/org/apache/directory/ldapstudio/browser/ui/valueeditors/internal/ImageValueEditor.java Fri Dec 29 13:15:47 2006
@@ -0,0 +1,85 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+
+package org.apache.directory.ldapstudio.browser.ui.valueeditors.internal;
+
+
+import org.apache.directory.ldapstudio.browser.core.model.IValue;
+import org.apache.directory.ldapstudio.browser.ui.dialogs.ImageDialog;
+import org.apache.directory.ldapstudio.browser.ui.dialogs.TextDialog;
+import org.apache.directory.ldapstudio.browser.ui.valueeditors.AbstractDialogBinaryValueEditor;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.widgets.Shell;
+
+
+public class ImageValueEditor extends AbstractDialogBinaryValueEditor
+{
+
+ public ImageValueEditor()
+ {
+ super();
+ }
+
+
+ protected boolean openDialog( Shell shell )
+ {
+ Object value = getValue();
+
+ if ( value != null && value instanceof byte[] )
+ {
+ byte[] currentImageData = ( byte[] ) value;
+
+ ImageDialog dialog = new ImageDialog( shell, currentImageData, SWT.IMAGE_JPEG );
+ if ( dialog.open() == TextDialog.OK && dialog.getNewImageRawData() != null )
+ {
+ setValue( dialog.getNewImageRawData() );
+ return true;
+ }
+ }
+ return false;
+ }
+
+
+ public String getDisplayValue( IValue value )
+ {
+ if ( showRawValues() )
+ {
+ return getPrintableString( value );
+ }
+ else
+ {
+ if ( value == null )
+ {
+ return "NULL";
+ }
+ if ( value.isBinary() )
+ {
+ byte[] data = value.getBinaryValue();
+ String text = ImageDialog.getImageInfo( data );
+ return text;
+ }
+ else
+ {
+ return "Invalid Image Data";
+ }
+ }
+ }
+
+}