public void createControl()

in plugins/schemaeditor/src/main/java/org/apache/directory/studio/schemaeditor/view/wizards/MergeSchemasSelectionWizardPage.java [80:276]


    public void createControl( Composite parent )
    {
        Composite composite = new Composite( parent, SWT.NULL );
        GridLayout layout = new GridLayout();
        composite.setLayout( layout );

        // Projects TreeViewer
        Label projectsLabel = new Label( composite, SWT.NONE );
        projectsLabel.setText( Messages.getString( "MergeSchemasSelectionWizardPage.SelectElements" ) ); //$NON-NLS-1$
        projectsLabel.setLayoutData( new GridData( SWT.FILL, SWT.NONE, true, false, 1, 1 ) );
        projectsTreeViewer = new CheckboxTreeViewer( new Tree( composite, SWT.BORDER | SWT.CHECK | SWT.FULL_SELECTION ) );
        GridData projectsTableViewerGridData = new GridData( SWT.FILL, SWT.FILL, true, true, 1, 1 );
        projectsTableViewerGridData.widthHint = 450;
        projectsTableViewerGridData.heightHint = 250;
        projectsTreeViewer.getTree().setLayoutData( projectsTableViewerGridData );
        projectsTreeViewer.setContentProvider( new ITreeContentProvider()
        {
            public void inputChanged( Viewer viewer, Object oldInput, Object newInput )
            {
            }


            public void dispose()
            {
            }


            public Object[] getElements( Object inputElement )
            {
                return getChildren( inputElement );
            }


            public boolean hasChildren( Object element )
            {
                return getChildren( element ).length > 0;
            }


            public Object getParent( Object element )
            {
                return null;
            }


            public Object[] getChildren( Object parentElement )
            {
                if ( parentElement instanceof List<?> )
                {
                    return ( ( List<?> ) parentElement ).toArray();
                }
                if ( parentElement instanceof Project )
                {
                    Project project = ( Project ) parentElement;
                    List<Schema> schemas = project.getSchemaHandler().getSchemas();
                    return schemas.toArray();
                }
                if ( parentElement instanceof Schema )
                {
                    Schema schema = ( Schema ) parentElement;
                    Object[] children = new Object[]
                        { new AttributeTypeFolder( schema ), new ObjectClassFolder( schema ) };
                    return children;
                }
                if ( parentElement instanceof AttributeTypeFolder )
                {
                    AttributeTypeFolder folder = ( AttributeTypeFolder ) parentElement;
                    List<AttributeTypeWrapper> attributeTypeWrappers = new ArrayList<AttributeTypeWrapper>();
                    for ( AttributeType attributeType : folder.schema.getAttributeTypes() )
                    {
                        attributeTypeWrappers.add( new AttributeTypeWrapper( attributeType, folder ) );
                    }
                    return attributeTypeWrappers.toArray();
                }
                if ( parentElement instanceof ObjectClassFolder )
                {
                    ObjectClassFolder folder = ( ObjectClassFolder ) parentElement;
                    List<ObjectClassWrapper> objectClassWrappers = new ArrayList<ObjectClassWrapper>();
                    for ( ObjectClass objectClass : folder.schema.getObjectClasses() )
                    {
                        objectClassWrappers.add( new ObjectClassWrapper( objectClass, folder ) );
                    }
                    return objectClassWrappers.toArray();
                }

                return new Object[0];
            }
        } );
        projectsTreeViewer.setLabelProvider( new LabelProvider()
        {
            public String getText( Object element )
            {
                if ( element instanceof Project )
                {
                    return ( ( Project ) element ).getName();
                }
                else if ( element instanceof Schema )
                {
                    return ( ( Schema ) element ).getSchemaName();
                }
                else if ( element instanceof ObjectClassFolder )
                {
                    return Messages.getString( "MergeSchemasSelectionWizardPage.ObjectClasses" ); //$NON-NLS-1$
                }
                else if ( element instanceof AttributeTypeFolder )
                {
                    return Messages.getString( "MergeSchemasSelectionWizardPage.AttributeTypes" ); //$NON-NLS-1$
                }
                else if ( element instanceof AttributeTypeWrapper )
                {
                    AttributeType at = ( ( AttributeTypeWrapper ) element ).attributeType;
                    List<String> names = at.getNames();
                    if ( ( names != null ) && ( names.size() > 0 ) )
                    {
                        return names.get( 0 );
                    }
                    else
                    {
                        return at.getOid();
                    }
                }
                else if ( element instanceof ObjectClassWrapper )
                {
                    ObjectClass oc = ( ( ObjectClassWrapper ) element ).objectClass;
                    List<String> names = oc.getNames();
                    if ( ( names != null ) && ( names.size() > 0 ) )
                    {
                        return names.get( 0 );
                    }
                    else
                    {
                        return oc.getOid();
                    }
                }

                // Default
                return super.getText( element );
            }


            public Image getImage( Object element )
            {
                if ( element instanceof Project )
                {
                    ProjectType type = ( ( Project ) element ).getType();
                    switch ( type )
                    {
                        case OFFLINE:
                            return Activator.getDefault().getImage( PluginConstants.IMG_PROJECT_OFFLINE_CLOSED );
                        case ONLINE:
                            return Activator.getDefault().getImage( PluginConstants.IMG_PROJECT_ONLINE_CLOSED );
                    }
                }
                else if ( element instanceof Schema )
                {
                    return Activator.getDefault().getImage( PluginConstants.IMG_SCHEMA );
                }
                else if ( element instanceof ObjectClassFolder )
                {
                    return Activator.getDefault().getImage( PluginConstants.IMG_FOLDER_OC );
                }
                else if ( element instanceof AttributeTypeFolder )
                {
                    return Activator.getDefault().getImage( PluginConstants.IMG_FOLDER_AT );
                }
                else if ( element instanceof AttributeTypeWrapper )
                {
                    return Activator.getDefault().getImage( PluginConstants.IMG_ATTRIBUTE_TYPE );
                }
                else if ( element instanceof ObjectClassWrapper )
                {
                    return Activator.getDefault().getImage( PluginConstants.IMG_OBJECT_CLASS );
                }

                // Default
                return super.getImage( element );
            }
        } );
        projectsTreeViewer.setSorter( new ViewerSorter() );
        projectsTreeViewer.addCheckStateListener( new ICheckStateListener()
        {
            /**
             * Notifies of a change to the checked state of an element.
             *
             * @param event
             *      event object describing the change
             */
            public void checkStateChanged( CheckStateChangedEvent event )
            {
                dialogChanged();
            }
        } );

        initFields();

        setControl( composite );
    }