| /* |
| * 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.studio.ldapbrowser.common.dialogs.preferences; |
| |
| |
| import java.util.ArrayList; |
| import java.util.Arrays; |
| import java.util.Collection; |
| import java.util.Collections; |
| import java.util.HashMap; |
| import java.util.List; |
| import java.util.Map; |
| import java.util.SortedMap; |
| import java.util.TreeMap; |
| |
| import org.apache.directory.api.ldap.model.schema.AttributeType; |
| import org.apache.directory.api.ldap.model.schema.LdapSyntax; |
| import org.apache.directory.studio.common.ui.widgets.BaseWidgetUtils; |
| import org.apache.directory.studio.ldapbrowser.common.BrowserCommonActivator; |
| import org.apache.directory.studio.ldapbrowser.core.BrowserConnectionManager; |
| import org.apache.directory.studio.ldapbrowser.core.BrowserCorePlugin; |
| import org.apache.directory.studio.ldapbrowser.core.model.IBrowserConnection; |
| import org.apache.directory.studio.ldapbrowser.core.model.schema.AttributeValueEditorRelation; |
| import org.apache.directory.studio.ldapbrowser.core.model.schema.Schema; |
| import org.apache.directory.studio.ldapbrowser.core.model.schema.SchemaUtils; |
| import org.apache.directory.studio.ldapbrowser.core.model.schema.SyntaxValueEditorRelation; |
| import org.apache.directory.studio.valueeditors.ValueEditorManager; |
| import org.apache.directory.studio.valueeditors.ValueEditorManager.ValueEditorExtension; |
| import org.eclipse.jface.preference.PreferencePage; |
| import org.eclipse.jface.resource.ImageDescriptor; |
| import org.eclipse.jface.viewers.ArrayContentProvider; |
| import org.eclipse.jface.viewers.DoubleClickEvent; |
| import org.eclipse.jface.viewers.IDoubleClickListener; |
| import org.eclipse.jface.viewers.ISelectionChangedListener; |
| import org.eclipse.jface.viewers.ITableLabelProvider; |
| import org.eclipse.jface.viewers.LabelProvider; |
| import org.eclipse.jface.viewers.SelectionChangedEvent; |
| import org.eclipse.jface.viewers.StructuredSelection; |
| import org.eclipse.jface.viewers.TableViewer; |
| import org.eclipse.swt.SWT; |
| import org.eclipse.swt.events.SelectionAdapter; |
| import org.eclipse.swt.events.SelectionEvent; |
| import org.eclipse.swt.graphics.Image; |
| import org.eclipse.swt.layout.GridData; |
| import org.eclipse.swt.widgets.Button; |
| import org.eclipse.swt.widgets.Composite; |
| import org.eclipse.swt.widgets.Control; |
| import org.eclipse.swt.widgets.Table; |
| import org.eclipse.swt.widgets.TableColumn; |
| import org.eclipse.ui.IWorkbench; |
| import org.eclipse.ui.IWorkbenchPreferencePage; |
| |
| |
| /** |
| * The ValueEditorsPreferencePage is used to specify |
| * value editors for attributes and syntaxes. |
| * |
| * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a> |
| */ |
| public class ValueEditorsPreferencePage extends PreferencePage implements IWorkbenchPreferencePage |
| { |
| |
| private SortedMap<String, ValueEditorExtension> class2ValueEditorExtensionMap; |
| |
| /** Map with attribute OID => attribute type description */ |
| private SortedMap<String, AttributeType> attributeOid2AtdMap; |
| |
| /** Map with attribute name => attribute type description */ |
| private SortedMap<String, AttributeType> attributeNames2AtdMap; |
| |
| /** The attribute names and OIDs. */ |
| private String[] attributeTypesAndOids; |
| |
| /** Map with syntax OID => syntax description */ |
| private SortedMap<String, LdapSyntax> syntaxOid2LsdMap; |
| |
| /** Map with syntax DESC => syntax description */ |
| private SortedMap<String, LdapSyntax> syntaxDesc2LsdMap; |
| |
| /** The syntax DESCs and OIDs. */ |
| private String[] syntaxDescsAndOids; |
| |
| /** The attribute list. */ |
| private List<AttributeValueEditorRelation> attributeList; |
| |
| /** The attribute viewer. */ |
| private TableViewer attributeViewer; |
| |
| /** The attribute add button. */ |
| private Button attributeAddButton; |
| |
| /** The attribute edit button. */ |
| private Button attributeEditButton; |
| |
| /** The attribute remove button. */ |
| private Button attributeRemoveButton; |
| |
| /** The syntax list. */ |
| private List<SyntaxValueEditorRelation> syntaxList; |
| |
| /** The syntax viewer. */ |
| private TableViewer syntaxViewer; |
| |
| /** The syntax add button. */ |
| private Button syntaxAddButton; |
| |
| /** The syntax edit button. */ |
| private Button syntaxEditButton; |
| |
| /** The syntax remove button. */ |
| private Button syntaxRemoveButton; |
| |
| /** The map of images */ |
| private Map<ImageDescriptor, Image> imageMap; |
| |
| |
| /** |
| * Creates a new instance of ValueEditorsPreferencePage. |
| */ |
| public ValueEditorsPreferencePage() |
| { |
| super( Messages.getString( "ValueEditorsPreferencePage.ValueEditors" ) ); //$NON-NLS-1$ |
| super.setDescription( Messages.getString( "ValueEditorsPreferencePage.SpecifyValueEditors" ) ); //$NON-NLS-1$ |
| this.imageMap = new HashMap<ImageDescriptor, Image>(); |
| } |
| |
| |
| /** |
| * {@inheritDoc} |
| */ |
| public void init( IWorkbench workbench ) |
| { |
| } |
| |
| |
| /** |
| * {@inheritDoc} |
| */ |
| public void dispose() |
| { |
| if ( imageMap != null ) |
| { |
| for ( Image image : imageMap.values() ) |
| { |
| if ( image != null && !image.isDisposed() ) |
| { |
| image.dispose(); |
| } |
| } |
| } |
| super.dispose(); |
| } |
| |
| |
| /** |
| * {@inheritDoc} |
| */ |
| protected Control createContents( Composite parent ) |
| { |
| Composite composite = BaseWidgetUtils.createColumnContainer( parent, 1, 1 ); |
| composite.setLayoutData( new GridData( GridData.FILL_BOTH ) ); |
| |
| // init available value providers |
| class2ValueEditorExtensionMap = new TreeMap<String, ValueEditorExtension>(); |
| Composite dummyComposite = new Composite( composite, SWT.NONE ); |
| dummyComposite.setLayoutData( new GridData( 1, 1 ) ); |
| |
| Collection<ValueEditorExtension> valueEditorExtensions = ValueEditorManager.getValueEditorExtensions(); |
| for ( ValueEditorExtension vee : valueEditorExtensions ) |
| { |
| class2ValueEditorExtensionMap.put( vee.className, vee ); |
| } |
| |
| // init available attribute types |
| attributeNames2AtdMap = new TreeMap<String, AttributeType>(); |
| attributeOid2AtdMap = new TreeMap<String, AttributeType>(); |
| BrowserConnectionManager cm = BrowserCorePlugin.getDefault().getConnectionManager(); |
| IBrowserConnection[] connections = cm.getBrowserConnections(); |
| for ( IBrowserConnection browserConnection : connections ) |
| { |
| Schema schema = browserConnection.getSchema(); |
| createAttributeMapsAndArray( schema ); |
| } |
| createAttributeMapsAndArray( Schema.DEFAULT_SCHEMA ); |
| |
| // init available syntaxes |
| syntaxOid2LsdMap = new TreeMap<String, LdapSyntax>(); |
| syntaxDesc2LsdMap = new TreeMap<String, LdapSyntax>(); |
| for ( IBrowserConnection browserConnection : connections ) |
| { |
| Schema schema = browserConnection.getSchema(); |
| createSyntaxMapsAndArray( schema ); |
| } |
| createSyntaxMapsAndArray( Schema.DEFAULT_SCHEMA ); |
| |
| // create attribute contents |
| // BaseWidgetUtils.createSpacer(composite, 1); |
| BaseWidgetUtils.createSpacer( composite, 1 ); |
| createAttributeContents( composite ); |
| attributeList = new ArrayList<AttributeValueEditorRelation>( Arrays.asList( BrowserCommonActivator.getDefault() |
| .getValueEditorsPreferences().getAttributeValueEditorRelations() ) ); |
| attributeViewer.setInput( attributeList ); |
| attributeViewer.getTable().getColumn( 0 ).pack(); |
| attributeViewer.getTable().getColumn( 2 ).pack(); |
| attributeViewer.getTable().pack(); |
| |
| // create syntax contents |
| BaseWidgetUtils.createSpacer( composite, 1 ); |
| BaseWidgetUtils.createSpacer( composite, 1 ); |
| createSyntaxContents( composite ); |
| syntaxList = new ArrayList<SyntaxValueEditorRelation>( Arrays.asList( BrowserCommonActivator.getDefault() |
| .getValueEditorsPreferences().getSyntaxValueEditorRelations() ) ); |
| syntaxViewer.setInput( syntaxList ); |
| syntaxViewer.getTable().getColumn( 0 ).pack(); |
| syntaxViewer.getTable().getColumn( 2 ).pack(); |
| syntaxViewer.getTable().pack(); |
| |
| return composite; |
| } |
| |
| |
| /** |
| * Creates the attribute maps and array. |
| * |
| * @param schema the schema |
| */ |
| private void createAttributeMapsAndArray( Schema schema ) |
| { |
| List<String> attributeTypesList = new ArrayList<String>(); |
| List<String> oidsList = new ArrayList<String>(); |
| |
| Collection<AttributeType> atds = schema.getAttributeTypeDescriptions(); |
| |
| for ( AttributeType atd : atds ) |
| { |
| attributeOid2AtdMap.put( atd.getOid(), atd ); |
| oidsList.add( atd.getOid() ); |
| |
| for ( String name : atd.getNames() ) |
| { |
| attributeNames2AtdMap.put( name.toLowerCase(), atd ); |
| attributeTypesList.add( name ); |
| } |
| } |
| |
| Collections.sort( attributeTypesList ); |
| Collections.sort( oidsList ); |
| |
| List<String> attributeTypesAndOidsList = new ArrayList<String>(); |
| attributeTypesAndOidsList.addAll( attributeTypesList ); |
| attributeTypesAndOidsList.addAll( oidsList ); |
| |
| attributeTypesAndOids = attributeTypesAndOidsList.toArray( new String[0] ); |
| } |
| |
| |
| /** |
| * Create the syntax maps and array. |
| * |
| * @param schema the schema |
| */ |
| private void createSyntaxMapsAndArray( Schema schema ) |
| { |
| List<String> syntaxDescsAndOidsList = new ArrayList<String>(); |
| |
| Collection<LdapSyntax> lsds = schema.getLdapSyntaxDescriptions(); |
| |
| for ( LdapSyntax lsd : lsds ) |
| { |
| syntaxOid2LsdMap.put( lsd.getOid(), lsd ); |
| syntaxDescsAndOidsList.add( lsd.getOid() ); |
| |
| if ( lsd.getDescription() != null ) |
| { |
| syntaxDesc2LsdMap.put( lsd.getDescription(), lsd ); |
| } |
| } |
| |
| Collections.sort( syntaxDescsAndOidsList ); |
| syntaxDescsAndOids = syntaxDescsAndOidsList.toArray( new String[0] ); |
| } |
| |
| |
| private void createAttributeContents( Composite parent ) |
| { |
| BaseWidgetUtils.createLabel( parent, Messages |
| .getString( "ValueEditorsPreferencePage.ValueEditorsByAttributeType" ), 1 ); //$NON-NLS-1$ |
| |
| Composite composite = BaseWidgetUtils.createColumnContainer( parent, 2, 1 ); |
| composite.setLayoutData( new GridData( GridData.FILL_BOTH ) ); |
| Composite listComposite = BaseWidgetUtils.createColumnContainer( composite, 1, 1 ); |
| listComposite.setLayoutData( new GridData( GridData.FILL_BOTH ) ); |
| Composite buttonComposite = BaseWidgetUtils.createColumnContainer( composite, 1, 1 ); |
| buttonComposite.setLayoutData( new GridData( GridData.VERTICAL_ALIGN_BEGINNING ) ); |
| |
| Table table = new Table( listComposite, SWT.SINGLE | SWT.BORDER | SWT.H_SCROLL | SWT.FULL_SELECTION ); |
| GridData data = new GridData( GridData.FILL_BOTH ); |
| data.widthHint = 360; |
| data.heightHint = convertHeightInCharsToPixels( 10 ); |
| table.setLayoutData( data ); |
| table.setHeaderVisible( true ); |
| table.setLinesVisible( true ); |
| attributeViewer = new TableViewer( table ); |
| |
| TableColumn c1 = new TableColumn( table, SWT.NONE ); |
| c1.setText( Messages.getString( "ValueEditorsPreferencePage.Attribute" ) ); //$NON-NLS-1$ |
| c1.setWidth( 80 ); |
| TableColumn c2 = new TableColumn( table, SWT.NONE ); |
| c2.setText( Messages.getString( "ValueEditorsPreferencePage.Alias" ) ); //$NON-NLS-1$ |
| c2.setWidth( 80 ); |
| TableColumn c3 = new TableColumn( table, SWT.NONE ); |
| c3.setText( Messages.getString( "ValueEditorsPreferencePage.ValueEditor" ) ); //$NON-NLS-1$ |
| c3.setWidth( 200 ); |
| |
| attributeViewer |
| .setColumnProperties( new String[] |
| { |
| Messages.getString( "ValueEditorsPreferencePage.Attribute" ), Messages.getString( "ValueEditorsPreferencePage.ValueEditor" ) } ); //$NON-NLS-1$ //$NON-NLS-2$ |
| attributeViewer.setContentProvider( new ArrayContentProvider() ); |
| attributeViewer.setLabelProvider( new AttributeLabelProvider() ); |
| |
| attributeViewer.addDoubleClickListener( new IDoubleClickListener() |
| { |
| public void doubleClick( DoubleClickEvent event ) |
| { |
| editAttribute(); |
| } |
| } ); |
| |
| attributeViewer.addSelectionChangedListener( new ISelectionChangedListener() |
| { |
| public void selectionChanged( SelectionChangedEvent event ) |
| { |
| attributeEditButton.setEnabled( !attributeViewer.getSelection().isEmpty() ); |
| attributeRemoveButton.setEnabled( !attributeViewer.getSelection().isEmpty() ); |
| } |
| } ); |
| |
| attributeAddButton = BaseWidgetUtils.createButton( buttonComposite, Messages |
| .getString( "ValueEditorsPreferencePage.Add" ), 1 ); //$NON-NLS-1$ |
| attributeAddButton.addSelectionListener( new SelectionAdapter() |
| { |
| public void widgetSelected( SelectionEvent e ) |
| { |
| addAttribute(); |
| } |
| } ); |
| attributeEditButton = BaseWidgetUtils.createButton( buttonComposite, Messages |
| .getString( "ValueEditorsPreferencePage.Edit" ), 1 ); //$NON-NLS-1$ |
| attributeEditButton.setEnabled( false ); |
| attributeEditButton.addSelectionListener( new SelectionAdapter() |
| { |
| public void widgetSelected( SelectionEvent e ) |
| { |
| editAttribute(); |
| } |
| } ); |
| attributeRemoveButton = BaseWidgetUtils.createButton( buttonComposite, Messages |
| .getString( "ValueEditorsPreferencePage.Remove" ), 1 ); //$NON-NLS-1$ |
| attributeRemoveButton.setEnabled( false ); |
| attributeRemoveButton.addSelectionListener( new SelectionAdapter() |
| { |
| public void widgetSelected( SelectionEvent e ) |
| { |
| removeAttribute(); |
| } |
| } ); |
| } |
| |
| |
| private void createSyntaxContents( Composite parent ) |
| { |
| BaseWidgetUtils.createLabel( parent, Messages.getString( "ValueEditorsPreferencePage.ValueEditorBySyntax" ), 1 ); //$NON-NLS-1$ |
| |
| Composite composite = BaseWidgetUtils.createColumnContainer( parent, 2, 1 ); |
| composite.setLayoutData( new GridData( GridData.FILL_BOTH ) ); |
| Composite listComposite = BaseWidgetUtils.createColumnContainer( composite, 1, 1 ); |
| listComposite.setLayoutData( new GridData( GridData.FILL_BOTH ) ); |
| Composite buttonComposite = BaseWidgetUtils.createColumnContainer( composite, 1, 1 ); |
| buttonComposite.setLayoutData( new GridData( GridData.VERTICAL_ALIGN_BEGINNING ) ); |
| |
| Table table = new Table( listComposite, SWT.SINGLE | SWT.BORDER | SWT.H_SCROLL | SWT.FULL_SELECTION ); |
| GridData data = new GridData( GridData.FILL_BOTH ); |
| data.widthHint = 360; |
| data.heightHint = convertHeightInCharsToPixels( 10 ); |
| table.setLayoutData( data ); |
| table.setHeaderVisible( true ); |
| table.setLinesVisible( true ); |
| syntaxViewer = new TableViewer( table ); |
| |
| TableColumn c1 = new TableColumn( table, SWT.NONE ); |
| c1.setText( Messages.getString( "ValueEditorsPreferencePage.Syntax" ) ); //$NON-NLS-1$ |
| c1.setWidth( 80 ); |
| TableColumn c2 = new TableColumn( table, SWT.NONE ); |
| c2.setText( Messages.getString( "ValueEditorsPreferencePage.Description" ) ); //$NON-NLS-1$ |
| c2.setWidth( 80 ); |
| TableColumn c3 = new TableColumn( table, SWT.NONE ); |
| c3.setText( Messages.getString( "ValueEditorsPreferencePage.ValueEditor" ) ); //$NON-NLS-1$ |
| c3.setWidth( 200 ); |
| |
| syntaxViewer |
| .setColumnProperties( new String[] |
| { |
| Messages.getString( "ValueEditorsPreferencePage.Syntax" ), Messages.getString( "ValueEditorsPreferencePage.ValueEditor" ) } ); //$NON-NLS-1$ //$NON-NLS-2$ |
| syntaxViewer.setContentProvider( new ArrayContentProvider() ); |
| syntaxViewer.setLabelProvider( new SyntaxLabelProvider() ); |
| |
| syntaxViewer.addDoubleClickListener( new IDoubleClickListener() |
| { |
| public void doubleClick( DoubleClickEvent event ) |
| { |
| editSyntax(); |
| } |
| } ); |
| |
| syntaxViewer.addSelectionChangedListener( new ISelectionChangedListener() |
| { |
| public void selectionChanged( SelectionChangedEvent event ) |
| { |
| syntaxEditButton.setEnabled( !syntaxViewer.getSelection().isEmpty() ); |
| syntaxRemoveButton.setEnabled( !syntaxViewer.getSelection().isEmpty() ); |
| } |
| } ); |
| |
| syntaxAddButton = BaseWidgetUtils.createButton( buttonComposite, Messages |
| .getString( "ValueEditorsPreferencePage.Add" ), 1 ); //$NON-NLS-1$ |
| syntaxAddButton.addSelectionListener( new SelectionAdapter() |
| { |
| public void widgetSelected( SelectionEvent e ) |
| { |
| addSyntax(); |
| } |
| } ); |
| syntaxEditButton = BaseWidgetUtils.createButton( buttonComposite, Messages |
| .getString( "ValueEditorsPreferencePage.Edit" ), 1 ); //$NON-NLS-1$ |
| syntaxEditButton.setEnabled( false ); |
| syntaxEditButton.addSelectionListener( new SelectionAdapter() |
| { |
| public void widgetSelected( SelectionEvent e ) |
| { |
| editSyntax(); |
| } |
| } ); |
| syntaxRemoveButton = BaseWidgetUtils.createButton( buttonComposite, Messages |
| .getString( "ValueEditorsPreferencePage.Remove" ), 1 ); //$NON-NLS-1$ |
| syntaxRemoveButton.setEnabled( false ); |
| syntaxRemoveButton.addSelectionListener( new SelectionAdapter() |
| { |
| public void widgetSelected( SelectionEvent e ) |
| { |
| removeSyntax(); |
| } |
| } ); |
| } |
| |
| |
| private void addAttribute() |
| { |
| AttributeValueEditorDialog dialog = new AttributeValueEditorDialog( getShell(), null, |
| class2ValueEditorExtensionMap, attributeTypesAndOids ); |
| if ( dialog.open() == AttributeValueEditorDialog.OK ) |
| { |
| attributeList.add( dialog.getRelation() ); |
| attributeViewer.refresh(); |
| } |
| } |
| |
| |
| private void removeAttribute() |
| { |
| Object o = ( ( StructuredSelection ) attributeViewer.getSelection() ).getFirstElement(); |
| attributeList.remove( o ); |
| attributeViewer.refresh(); |
| } |
| |
| |
| private void editAttribute() |
| { |
| StructuredSelection sel = ( StructuredSelection ) attributeViewer.getSelection(); |
| if ( !sel.isEmpty() ) |
| { |
| AttributeValueEditorRelation relation = ( AttributeValueEditorRelation ) sel.getFirstElement(); |
| AttributeValueEditorDialog dialog = new AttributeValueEditorDialog( getShell(), relation, |
| class2ValueEditorExtensionMap, attributeTypesAndOids ); |
| if ( dialog.open() == AttributeValueEditorDialog.OK ) |
| { |
| int index = attributeList.indexOf( relation ); |
| attributeList.set( index, dialog.getRelation() ); |
| attributeViewer.refresh(); |
| } |
| } |
| } |
| |
| |
| private void addSyntax() |
| { |
| SyntaxValueEditorDialog dialog = new SyntaxValueEditorDialog( getShell(), null, class2ValueEditorExtensionMap, |
| syntaxDescsAndOids ); |
| if ( dialog.open() == SyntaxValueEditorDialog.OK ) |
| { |
| syntaxList.add( dialog.getRelation() ); |
| syntaxViewer.refresh(); |
| } |
| } |
| |
| |
| private void removeSyntax() |
| { |
| Object o = ( ( StructuredSelection ) syntaxViewer.getSelection() ).getFirstElement(); |
| syntaxList.remove( o ); |
| syntaxViewer.refresh(); |
| } |
| |
| |
| private void editSyntax() |
| { |
| StructuredSelection sel = ( StructuredSelection ) syntaxViewer.getSelection(); |
| if ( !sel.isEmpty() ) |
| { |
| SyntaxValueEditorRelation relation = ( SyntaxValueEditorRelation ) sel.getFirstElement(); |
| SyntaxValueEditorDialog dialog = new SyntaxValueEditorDialog( getShell(), relation, |
| class2ValueEditorExtensionMap, syntaxDescsAndOids ); |
| if ( dialog.open() == SyntaxValueEditorDialog.OK ) |
| { |
| int index = syntaxList.indexOf( relation ); |
| syntaxList.set( index, dialog.getRelation() ); |
| syntaxViewer.refresh(); |
| } |
| } |
| } |
| |
| |
| /** |
| * {@inheritDoc} |
| */ |
| public boolean performOk() |
| { |
| AttributeValueEditorRelation[] aRelations = attributeList |
| .toArray( new AttributeValueEditorRelation[attributeList.size()] ); |
| BrowserCommonActivator.getDefault().getValueEditorsPreferences().setAttributeValueEditorRelations( aRelations ); |
| |
| SyntaxValueEditorRelation[] sRelations = syntaxList.toArray( new SyntaxValueEditorRelation[syntaxList.size()] ); |
| BrowserCommonActivator.getDefault().getValueEditorsPreferences().setSyntaxValueEditorRelations( sRelations ); |
| |
| return true; |
| } |
| |
| |
| /** |
| * {@inheritDoc} |
| */ |
| protected void performDefaults() |
| { |
| attributeList.clear(); |
| attributeList.addAll( Arrays.asList( BrowserCommonActivator.getDefault().getValueEditorsPreferences() |
| .getDefaultAttributeValueEditorRelations() ) ); |
| attributeViewer.refresh(); |
| |
| syntaxList.clear(); |
| syntaxList.addAll( Arrays.asList( BrowserCommonActivator.getDefault().getValueEditorsPreferences() |
| .getDefaultSyntaxValueEditorRelations() ) ); |
| syntaxViewer.refresh(); |
| |
| super.performDefaults(); |
| } |
| |
| class AttributeLabelProvider extends LabelProvider implements ITableLabelProvider |
| { |
| public String getColumnText( Object obj, int index ) |
| { |
| if ( obj instanceof AttributeValueEditorRelation ) |
| { |
| AttributeValueEditorRelation relation = ( AttributeValueEditorRelation ) obj; |
| if ( index == 0 ) |
| { |
| return relation.getAttributeNumericOidOrType(); |
| } |
| else if ( index == 1 ) |
| { |
| if ( relation.getAttributeNumericOidOrType() != null ) |
| { |
| if ( attributeNames2AtdMap.containsKey( relation.getAttributeNumericOidOrType().toLowerCase() ) ) |
| { |
| AttributeType atd = ( AttributeType ) attributeNames2AtdMap |
| .get( relation.getAttributeNumericOidOrType().toLowerCase() ); |
| String s = atd.getOid(); |
| for ( String name : atd.getNames() ) |
| { |
| if ( !relation.getAttributeNumericOidOrType().equalsIgnoreCase( name ) ) |
| { |
| s += ", " + name; //$NON-NLS-1$ |
| } |
| } |
| return s; |
| } |
| else if ( attributeOid2AtdMap.containsKey( relation.getAttributeNumericOidOrType() ) ) |
| { |
| AttributeType atd = ( AttributeType ) attributeOid2AtdMap |
| .get( relation.getAttributeNumericOidOrType() ); |
| return atd.toString(); |
| } |
| } |
| } |
| else if ( index == 2 ) |
| { |
| ValueEditorExtension vee = class2ValueEditorExtensionMap.get( relation.getValueEditorClassName() ); |
| return vee != null ? vee.name : null; |
| } |
| } |
| return null; |
| } |
| |
| |
| public Image getColumnImage( Object obj, int index ) |
| { |
| if ( obj instanceof AttributeValueEditorRelation ) |
| { |
| AttributeValueEditorRelation relation = ( AttributeValueEditorRelation ) obj; |
| if ( index == 2 ) |
| { |
| ValueEditorExtension vee = class2ValueEditorExtensionMap.get( relation.getValueEditorClassName() ); |
| if ( vee != null ) |
| { |
| if ( !imageMap.containsKey( vee.icon ) ) |
| { |
| Image image = vee.icon.createImage(); |
| imageMap.put( vee.icon, image ); |
| } |
| return imageMap.get( vee.icon ); |
| } |
| return null; |
| } |
| } |
| |
| return null; |
| } |
| } |
| |
| class SyntaxLabelProvider extends LabelProvider implements ITableLabelProvider |
| { |
| public String getColumnText( Object obj, int index ) |
| { |
| if ( obj instanceof SyntaxValueEditorRelation ) |
| { |
| SyntaxValueEditorRelation relation = ( SyntaxValueEditorRelation ) obj; |
| if ( index == 0 ) |
| { |
| return relation.getSyntaxOID(); |
| } |
| else if ( index == 1 ) |
| { |
| if ( relation.getSyntaxOID() != null ) |
| { |
| if ( syntaxOid2LsdMap.containsKey( relation.getSyntaxOID() ) ) |
| { |
| LdapSyntax lsd = ( LdapSyntax ) syntaxOid2LsdMap.get( relation |
| .getSyntaxOID() ); |
| return SchemaUtils.toString( lsd ); |
| } |
| } |
| } |
| else if ( index == 2 ) |
| { |
| ValueEditorExtension vee = class2ValueEditorExtensionMap.get( relation.getValueEditorClassName() ); |
| return vee != null ? vee.name : null; |
| } |
| } |
| return null; |
| } |
| |
| |
| public Image getColumnImage( Object obj, int index ) |
| { |
| if ( obj instanceof SyntaxValueEditorRelation ) |
| { |
| SyntaxValueEditorRelation relation = ( SyntaxValueEditorRelation ) obj; |
| if ( index == 2 ) |
| { |
| ValueEditorExtension vee = class2ValueEditorExtensionMap.get( relation.getValueEditorClassName() ); |
| if ( vee != null ) |
| { |
| if ( !imageMap.containsKey( vee.icon ) ) |
| { |
| Image image = vee.icon.createImage(); |
| imageMap.put( vee.icon, image ); |
| } |
| return imageMap.get( vee.icon ); |
| } |
| return null; |
| } |
| } |
| |
| return null; |
| } |
| } |
| |
| } |