Example usage for org.eclipse.jface.viewers ComboViewer getControl

List of usage examples for org.eclipse.jface.viewers ComboViewer getControl

Introduction

In this page you can find the example usage for org.eclipse.jface.viewers ComboViewer getControl.

Prototype

@Override
    public Control getControl() 

Source Link

Usage

From source file:de.walware.statet.redocs.internal.wikitext.r.ui.processing.WeaveTab.java

License:Open Source License

@Override
protected Composite createPostGroup(final Composite parent) {
    final Composite group = super.createPostGroup(parent);
    group.setLayout(LayoutUtil.createGroupGrid(2));

    {//  ww  w.  ja  v a 2  s .  c  o m
        final ComboViewer viewer = this.openResult.createControls(group, Messages.WeaveTab_OpenResult_label);
        viewer.getControl().setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
    }

    return group;
}

From source file:era.foss.objecteditor.specobject.SpecObjectCompositeViewer.java

License:Open Source License

/**
 * Create button bar showing://from w  w  w. j  ava  2 s. c  om
 * <ul>
 * <li>combo box for the view</li>
 * <li>button for adding new SpecObjects</li>
 * </ul>
 * 
 * 
 * @param viewerComposite the parent composite
 * @return
 */
private void createButtonBar() {
    buttonBarComposite = new Composite(topLevelComposite, SWT.NONE);
    buttonBarComposite.setLayout(new GridLayout(4, true));
    buttonBarComposite.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false, 0, 0));

    /*
     * create combo box showing the availible views
     */
    ComboViewer viewComboViewer = new ComboViewer(buttonBarComposite, SWT.READ_ONLY) {
        @Override
        protected void doUpdateItem(Widget data, Object element, boolean fullMap) {
            // memorize the selection before updating the item, as the
            // update routine removes the selection...
            ISelection currentSelection = this.getSelection();
            super.doUpdateItem(data, element, fullMap);
            // set the selection to the previous value
            this.setSelection(currentSelection);
        }
    };
    ObservableListContentProvider contentProvider = new ObservableListContentProvider();
    viewComboViewer.setContentProvider(contentProvider);
    viewComboViewer.setLabelProvider(
            new ObservableMapLabelProvider(EMFProperties.value(ErfPackage.Literals.IDENTIFIABLE__LONG_NAME)
                    .observeDetail(contentProvider.getKnownElements())));
    IEMFListProperty dataTypeDefinitions = EMFProperties.list(ErfPackage.Literals.ERA_TOOL_EXTENSION__VIEWS);
    IObservableList observableList = dataTypeDefinitions.observe(toolExtension);
    viewComboViewer.setInput(observableList);
    // use first view available
    // TODO: use a dedicated default view if available
    if (toolExtension.getViews().size() > 0) {
        viewComboViewer.setSelection(new StructuredSelection(toolExtension.getViews().get(0)));
    }
    viewComboViewer.getControl().setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, true, false, 2, 1));

    viewMaster = ViewerProperties.singleSelection().observe(viewComboViewer);

    // refresh composite table in case view has been changed
    viewMaster.addChangeListener(new IChangeListener() {

        @Override
        public void handleChange(ChangeEvent event) {
            dbc.dispose();

            compositeTable.dispose();
            createCompositeTable();

            binding();

            topLevelComposite.layout();
        }
    });

    /*
     * Create Combo box for selecting the SpecType
     */
    final ComboViewer specTypecomboViewer = new ComboViewer(buttonBarComposite, SWT.READ_ONLY) {
        @Override
        protected void doUpdateItem(Widget data, Object element, boolean fullMap) {
            // memorize the selection before updating the item, as the
            // update routine removes the selection...
            ISelection currentSelection = this.getSelection();
            super.doUpdateItem(data, element, fullMap);
            // set the selection to the previous value
            this.setSelection(currentSelection);
        }
    };
    ObservableListContentProvider comboViewercontentProvider = new ObservableListContentProvider();
    specTypecomboViewer.getControl().setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, true, false));
    // set content provider
    specTypecomboViewer.setContentProvider(comboViewercontentProvider);
    // set label provider
    specTypecomboViewer.setLabelProvider(
            new ObservableMapLabelProvider(EMFProperties.value(ErfPackage.Literals.IDENTIFIABLE__LONG_NAME)
                    .observeDetail(comboViewercontentProvider.getKnownElements())));
    // set input
    IEMFListProperty specTypeProperty = EMFProperties.list(ErfPackage.Literals.CONTENT__SPEC_TYPES);
    specTypecomboViewer.setInput(specTypeProperty.observe(this.erfModel.getCoreContent()));

    // TODO: use a dedicated default type if available
    if (erfModel.getCoreContent().getSpecTypes().size() > 0) {
        specTypecomboViewer
                .setSelection(new StructuredSelection(erfModel.getCoreContent().getSpecTypes().get(0)));
    }
    specTypeMaster = ViewerProperties.singleSelection().observe(specTypecomboViewer);

    /*
     * create add button
     */
    final Button addButton = new Button(buttonBarComposite, SWT.NONE);
    addButton.setImage(PlatformUI.getWorkbench().getSharedImages().getImage(ISharedImages.IMG_OBJ_ADD));
    addButton.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, true, false));
    addButton.setEnabled(specTypeMaster.getValue() != null);
    addButton.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            SpecObjectHandler.createNewSpecObject(editingDomain, erfModel.getCoreContent(),
                    (SpecType) SpecObjectCompositeViewer.this.specTypeMaster.getValue(),
                    erfModel.getCoreContent().getSpecifications().get(0));
        }
    });

    specTypeMaster.addValueChangeListener(new IValueChangeListener() {
        @Override
        public void handleValueChange(ValueChangeEvent event) {
            addButton.setEnabled(event.getObservableValue().getValue() != null);
        }
    });

}

From source file:era.foss.typeeditor.view.ViewForm.java

License:Open Source License

/**
 * Create a Combo box for selecting the {@link SpecType} of the respective view
 * /*from w w  w  .  ja  v a  2  s .com*/
 * @param parent parent composite
 */
private void createSpecTypeComboViewer(Composite parent) {

    final ComboViewer specTypeComboViewer = new ComboViewer(parent, SWT.READ_ONLY) {
        @Override
        protected void doUpdateItem(Widget data, Object element, boolean fullMap) {
            // memorize the selection before updating the item, as the
            // update routine removes the selection...
            ISelection currentSelection = this.getSelection();
            super.doUpdateItem(data, element, fullMap);
            // set the selection to the previous value
            this.setSelection(currentSelection);
        }
    };
    ObservableListContentProvider contentProvider = new ObservableListContentProvider();
    specTypeComboViewer.getControl().setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));

    // set content provider
    specTypeComboViewer.setContentProvider(contentProvider);
    // set label provider
    specTypeComboViewer.setLabelProvider(
            new ObservableMapLabelProvider(EMFProperties.value(ErfPackage.Literals.IDENTIFIABLE__LONG_NAME)
                    .observeDetail(contentProvider.getKnownElements())));

    // set input
    IEMFListProperty specTypeProperty = EMFProperties.list(ErfPackage.Literals.CONTENT__SPEC_TYPES);
    specTypeComboViewer.setInput(specTypeProperty.observe(this.erfModel.getCoreContent()));
    specTypeMaster = ViewerProperties.singleSelection().observe(specTypeComboViewer);
    if (erfModel.getCoreContent().getSpecTypes().size() > 0) {
        specTypeComboViewer
                .setSelection(new StructuredSelection(erfModel.getCoreContent().getSpecTypes().get(0)));
    }

    specTypeMaster.addValueChangeListener(new IValueChangeListener() {

        @Override
        public void handleValueChange(ValueChangeEvent event) {
            viewElementTableViewer.refresh();
            viewLayoutViewer.refresh();

        }
    });
}

From source file:eu.esdihumboldt.hale.io.gml.ui.wfs.AbstractWFSSource.java

License:Open Source License

/**
 * @see ImportSource#createControls(Composite)
 *///w w w .  j  a v a  2  s .co  m
@Override
public void createControls(Composite parent) {
    parent.setLayout(new GridLayout(3, false));

    // caption
    new Label(parent, SWT.NONE); // placeholder

    Label caption = new Label(parent, SWT.NONE);
    caption.setText(getCaption());
    caption.setLayoutData(new GridData(SWT.BEGINNING, SWT.BEGINNING, true, false, 2, 1));

    // source file
    sourceURL = createWfsFieldEditor(parent);
    sourceURL.setPage(getPage());

    sourceURL.setPropertyChangeListener(new IPropertyChangeListener() {

        @Override
        public void propertyChange(PropertyChangeEvent event) {
            if (event.getProperty().equals(FieldEditor.IS_VALID)) {
                updateState(false);
            } else if (event.getProperty().equals(FieldEditor.VALUE)) {
                updateState(false);
            }
        }
    });

    // provider selection

    // label
    Label providerLabel = new Label(parent, SWT.NONE);
    providerLabel.setText("Import as");

    // create provider combo
    ComboViewer providers = createProviders(parent);
    providers.getControl().setLayoutData(new GridData(SWT.FILL, SWT.BEGINNING, true, false, 2, 1));

    // initial state update
    updateState(true);
}

From source file:eu.esdihumboldt.hale.io.haleconnect.ui.projects.HaleConnectSource.java

License:Open Source License

/**
 * @see ImportSource#createControls(Composite)
 *///ww  w. j  av a  2 s . com
@Override
public void createControls(Composite parent) {
    parent.setLayout(new GridLayout(3, false));

    HaleConnectService hcs = HaleUI.getServiceProvider().getService(HaleConnectService.class);

    /*
     * Login status label
     */
    loginStatusLabel = new Label(parent, SWT.NONE);
    loginStatusLabel.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false, 2, 1));

    loginButton = new Button(parent, SWT.PUSH);
    loginButton.setText("Login");
    loginButton.addSelectionListener(new SelectionAdapter() {

        /**
         * @see org.eclipse.swt.events.SelectionAdapter#widgetSelected(org.eclipse.swt.events.SelectionEvent)
         */
        @Override
        public void widgetSelected(SelectionEvent e) {
            HaleConnectLoginDialog loginDialog = HaleConnectLoginHandler
                    .createLoginDialog(Display.getCurrent().getActiveShell());
            if (loginDialog.open() == Dialog.OK) {
                HaleConnectLoginHandler.performLogin(loginDialog);
                updateLoginStatus();
            }
        }

    });

    /*
     * Project name text field
     */
    projectName = new StringFieldEditor("project", "Project", parent) {

        // the following methods are overridden so the button
        // may appear on the same line

        @Override
        public int getNumberOfControls() {
            return super.getNumberOfControls() + 1;
        }

        @Override
        protected void doFillIntoGrid(Composite parent, int numColumns) {
            super.doFillIntoGrid(parent, numColumns - 1);
        }
    };
    projectName.setEmptyStringAllowed(false);
    projectName.setErrorMessage("Please select a project before continuing.");
    projectName.setPage(getPage());
    projectName.getTextControl(parent).setEditable(false);
    projectName.getTextControl(parent).addMouseListener(new MouseAdapter() {

        @Override
        public void mouseDown(MouseEvent e) {
            selectProject();
        }

    });

    projectName.setPropertyChangeListener(new IPropertyChangeListener() {

        @Override
        public void propertyChange(PropertyChangeEvent event) {
            if (event.getProperty().equals(FieldEditor.IS_VALID)) {
                getPage().setMessage(null);
                updateState(false);
            } else if (event.getProperty().equals(FieldEditor.VALUE)) {
                getPage().setMessage(null);
                updateState(false);
            }
        }
    });

    /*
     * Select project button
     */
    selectProjectButton = new Button(parent, SWT.PUSH);
    selectProjectButton.setText("Select");
    selectProjectButton.setToolTipText("Select project");
    selectProjectButton.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false, 1, 1));
    selectProjectButton.setEnabled(hcs.isLoggedIn());
    selectProjectButton.addSelectionListener(new SelectionAdapter() {

        @Override
        public void widgetSelected(SelectionEvent e) {
            selectProject();
        }
    });

    /*
     * Supported types
     */
    supportedTypes = new HashSet<IContentType>();
    if (getConfiguration().getContentType() != null) {
        supportedTypes.add(getConfiguration().getContentType());
    } else {
        // set content types for file field
        Collection<IOProviderDescriptor> factories = getConfiguration().getFactories();
        for (IOProviderDescriptor factory : factories) {
            supportedTypes.addAll(factory.getSupportedTypes());
        }
    }

    // types combo
    Composite group = new Composite(parent, SWT.NONE);
    group.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false, 3, 1));
    group.setLayout(GridLayoutFactory.fillDefaults().numColumns(3).create());

    // label
    Label providerLabel = new Label(parent, SWT.NONE);
    providerLabel.setText("Import as");

    // create provider combo
    ComboViewer providers = createProviders(parent);
    providers.getControl().setLayoutData(new GridData(SWT.FILL, SWT.BEGINNING, true, false, 2, 1));

    updateLoginStatus();

    // initial state update
    updateState(true);
}

From source file:eu.esdihumboldt.hale.io.jdbc.ui.JDBCSource.java

License:Open Source License

@Override
public void createControls(Composite page) {
    page.setLayout(GridLayoutFactory.swtDefaults().numColumns(2).create());

    GridDataFactory labelData = GridDataFactory.swtDefaults().align(SWT.END, SWT.CENTER);
    GridDataFactory compData = GridDataFactory.swtDefaults().align(SWT.FILL, SWT.CENTER).grab(true, false);

    // driver//from   ww  w.  jav a2s . co m
    Label labelDriver = new Label(page, SWT.NONE);
    labelDriver.setText("Driver");
    labelData.applyTo(labelDriver);

    driver = JDBCComponents.createDriverSelector(page);
    compData.applyTo(driver.getControl());

    // driver selection listener
    driver.addSelectionChangedListener(new ISelectionChangedListener() {

        @Override
        public void selectionChanged(SelectionChangedEvent event) {
            updateState(false);
        }
    });

    // host
    Label labelHost = new Label(page, SWT.NONE);
    labelHost.setText("Host(:Port)");
    labelData.applyTo(labelHost);

    host = new Text(page, SWT.BORDER | SWT.SINGLE);
    compData.applyTo(host);
    host.addModifyListener(new ModifyListener() {

        @Override
        public void modifyText(ModifyEvent e) {
            updateState(false);
        }
    });

    // database
    Label labelDatabase = new Label(page, SWT.NONE);
    labelDatabase.setText("Database");
    labelData.applyTo(labelDatabase);

    database = new Text(page, SWT.BORDER | SWT.SINGLE);
    compData.applyTo(database);
    database.addModifyListener(new ModifyListener() {

        @Override
        public void modifyText(ModifyEvent e) {
            updateState(false);
        }
    });

    // preset label
    Label providerLabel = new Label(page, SWT.NONE);
    providerLabel.setText("Import as");
    labelData.applyTo(providerLabel);

    // create provider combo
    ComboViewer providers = createProviders(page);
    compData.applyTo(providers.getControl());

    // content type is set through source registration

    // initial state update
    updateState(true);
}

From source file:eu.esdihumboldt.hale.io.wfs.ui.AbstractWFSSource.java

License:Open Source License

/**
 * @see ImportSource#createControls(Composite)
 *//*  ww w  .  ja  va  2 s  .  c o  m*/
@Override
public void createControls(Composite parent) {
    parent.setLayout(new GridLayout(4, false));

    // caption
    new Label(parent, SWT.NONE); // placeholder

    Label caption = new Label(parent, SWT.NONE);
    caption.setText(getCaption());
    caption.setLayoutData(new GridData(SWT.BEGINNING, SWT.BEGINNING, true, false, 3, 1));

    // source file
    // target URL field
    sourceURL = new URLSourceURIFieldEditor("sourceURL", "URL:", parent) {

        // the following methods are overridden so the capabilities button
        // may appear on the same line

        @Override
        public int getNumberOfControls() {
            return super.getNumberOfControls() + 1;
        }

        @Override
        protected void doFillIntoGrid(Composite parent, int numColumns) {
            super.doFillIntoGrid(parent, numColumns - 1);
        }

    };
    sourceURL.setPage(getPage());

    // set custom URI filter
    sourceURL.setURIFilter(createHistoryURIFilter());

    // set content types for URI field
    Collection<IOProviderDescriptor> factories = getConfiguration().getFactories();
    HashSet<IContentType> supportedTypes = new HashSet<IContentType>();
    for (IOProviderDescriptor factory : factories) {
        supportedTypes.addAll(factory.getSupportedTypes());
    }

    sourceURL.setContentTypes(supportedTypes);

    sourceURL.setPropertyChangeListener(new IPropertyChangeListener() {

        @Override
        public void propertyChange(PropertyChangeEvent event) {
            if (event.getProperty().equals(FieldEditor.IS_VALID)) {
                getPage().setMessage(null);
                updateState(true);
            } else if (event.getProperty().equals(FieldEditor.VALUE)) {
                getPage().setMessage(null);
                updateState(true);
            }
        }
    });

    // button to determine from capabilities
    Button capButton = new Button(parent, SWT.PUSH);
    capButton.setText("...");
    capButton.setToolTipText("Determine based on WFS Capabilities");
    capButton.addSelectionListener(new SelectionAdapter() {

        @Override
        public void widgetSelected(SelectionEvent e) {
            determineSource(sourceURL);
        }
    });

    // provider selection

    // label
    Label providerLabel = new Label(parent, SWT.NONE);
    providerLabel.setText("Import as");

    // create provider combo
    ComboViewer providers = createProviders(parent);
    providers.getControl().setLayoutData(new GridData(SWT.FILL, SWT.BEGINNING, true, false, 3, 1));

    // initial state update
    updateState(true);
}

From source file:eu.esdihumboldt.hale.ui.io.source.FileSource.java

License:Open Source License

/**
 * @see ImportSource#createControls(Composite)
 *//*from w  ww.ja v  a2 s . c  om*/
@Override
public void createControls(Composite parent) {
    parent.setLayout(new GridLayout(4, false));

    ProjectService ps = (ProjectService) PlatformUI.getWorkbench().getService(ProjectService.class);
    projectLocation = ps.getLoadLocation() == null ? null : ps.getLoadLocation();
    boolean projectLocAvailable = projectLocation != null && "file".equals(projectLocation.getScheme());

    // source file
    sourceFile = new FileSourceFileFieldEditor("sourceFile", "Source file:",
            FileFieldEditor.VALIDATE_ON_KEY_STROKE, parent, projectLocation);
    sourceFile.setEmptyStringAllowed(false);
    sourceFile.setPage(getPage());

    // set content types for file field
    Collection<IOProviderDescriptor> factories = getConfiguration().getFactories();
    supportedTypes = new HashSet<IContentType>();
    for (IOProviderDescriptor factory : factories) {
        supportedTypes.addAll(factory.getSupportedTypes());
    }

    sourceFile.setContentTypes(supportedTypes);
    sourceFile.setPropertyChangeListener(new IPropertyChangeListener() {

        @Override
        public void propertyChange(PropertyChangeEvent event) {
            if (event.getProperty().equals(FieldEditor.IS_VALID)) {
                updateState(true);
            } else if (event.getProperty().equals(FieldEditor.VALUE)) {
                updateState(true);
            }
        }
    });

    // provider selection

    // label
    Label providerLabel = new Label(parent, SWT.NONE);
    providerLabel.setText("Import as");

    // create provider combo
    ComboViewer providers = createProviders(parent);
    providers.getControl().setLayoutData(new GridData(SWT.FILL, SWT.BEGINNING, true, false, 3, 1));

    final Button relativeCheck = new Button(parent, SWT.CHECK);
    String text = "Use relative paths if possible.";
    relativeCheck.setText("Use relative paths if possible.");
    relativeCheck.addSelectionListener(new SelectionAdapter() {

        @Override
        public void widgetSelected(SelectionEvent e) {
            sourceFile.setUseRelativeIfPossible(relativeCheck.getSelection());
        }
    });
    if (!projectLocAvailable) {
        relativeCheck.setEnabled(false);
        text += " Only available once the project is saved to a file.";
    }
    relativeCheck.setText(text);
    relativeCheck.setLayoutData(new GridData(SWT.FILL, SWT.BEGINNING, true, false, 4, 1));

    // initial state update
    updateState(true);
}

From source file:eu.esdihumboldt.hale.ui.io.source.URLSource.java

License:Open Source License

/**
 * @see ImportSource#createControls(Composite)
 *//*from  ww  w .  ja  v a 2 s  . c  o m*/
@Override
public void createControls(Composite parent) {
    parent.setLayout(new GridLayout(3, false));

    detectImage = HALEUIPlugin.getImageDescriptor("icons/find_obj.gif").createImage();

    // source file
    sourceURL = new URLSourceURIFieldEditor("sourceURL", "Source URL:", parent) {

        @Override
        protected void onHistorySelected(URI location, IContentType contentType) {
            // select the content type associated with the recent URL
            types.setSelection(new StructuredSelection(contentType));
            updateState(false);
        }

    };
    sourceURL.setPage(getPage());

    // set content types for file field
    Collection<IOProviderDescriptor> factories = getConfiguration().getFactories();
    supportedTypes = new HashSet<IContentType>();
    for (IOProviderDescriptor factory : factories) {
        supportedTypes.addAll(factory.getSupportedTypes());
    }

    sourceURL.setContentTypes(supportedTypes);

    sourceURL.setPropertyChangeListener(new IPropertyChangeListener() {

        @Override
        public void propertyChange(PropertyChangeEvent event) {
            if (event.getProperty().equals(FieldEditor.IS_VALID)) {
                getPage().setMessage(null);
                updateState(false);
            } else if (event.getProperty().equals(FieldEditor.VALUE)) {
                getPage().setMessage(null);
                updateState(false);
            }
        }
    });

    // content type selection

    // label
    Label typesLabel = new Label(parent, SWT.NONE);
    typesLabel.setText("Content type");

    // types combo
    Composite group = new Composite(parent, SWT.NONE);
    group.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false, 2, 1));
    group.setLayout(GridLayoutFactory.fillDefaults().numColumns(2).create());

    types = new ComboViewer(group, SWT.DROP_DOWN | SWT.READ_ONLY);
    types.getControl().setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
    types.setContentProvider(ArrayContentProvider.getInstance());
    types.setLabelProvider(new LabelProvider() {

        @Override
        public String getText(Object element) {
            if (element instanceof IContentType) {
                return ((IContentType) element).getName();
            }
            return super.getText(element);
        }

    });
    types.setInput(supportedTypes);

    // process selection changes
    types.addSelectionChangedListener(new ISelectionChangedListener() {

        @Override
        public void selectionChanged(SelectionChangedEvent event) {
            updateState(true);
        }
    });

    // detect button
    detect = new Button(group, SWT.PUSH);
    detect.setLayoutData(new GridData(SWT.CENTER, SWT.CENTER, false, false));
    detect.setText("Detect");
    detect.setImage(detectImage);
    detect.addSelectionListener(new SelectionAdapter() {

        @Override
        public void widgetSelected(SelectionEvent e) {
            runDetectContentType();
        }
    });

    // provider selection

    // label
    Label providerLabel = new Label(parent, SWT.NONE);
    providerLabel.setText("Import as");

    // create provider combo
    ComboViewer providers = createProviders(parent);
    providers.getControl().setLayoutData(new GridData(SWT.FILL, SWT.BEGINNING, true, false, 2, 1));

    // initial state update
    updateState(true);
}

From source file:eu.esdihumboldt.hale.ui.schema.presets.PresetsSource.java

License:Open Source License

/**
 * @see ImportSource#createControls(Composite)
 *///from ww  w  . j ava  2  s .co  m
@Override
public void createControls(Composite parent) {
    GridLayoutFactory parentLayout = GridLayoutFactory.swtDefaults().numColumns(2).equalWidth(false);
    parentLayout.applyTo(parent);

    GridDataFactory labelData = GridDataFactory//
            .swtDefaults()//
            .align(SWT.BEGINNING, SWT.CENTER);

    GridDataFactory controlData = GridDataFactory//
            .swtDefaults()//
            .align(SWT.FILL, SWT.CENTER)//
            .grab(true, false);

    // preset label
    Label label = new Label(parent, SWT.NONE);
    label.setText("Select preset:");
    labelData.applyTo(label);

    // preset selector
    selector = new SchemaPresetSelector(parent);
    selector.addSelectionChangedListener(new ISelectionChangedListener() {

        @Override
        public void selectionChanged(SelectionChangedEvent event) {
            if (description != null) {
                SchemaPreset schema = selector.getSelectedObject();
                if (schema != null && schema.getDescription() != null) {
                    description.setText(schema.getDescription());
                } else {
                    description.setText("");
                }
            }
            updateState(true);
        }
    });
    controlData.applyTo(selector.getControl());

    // skipper
    Composite empty = new Composite(parent, SWT.NONE);
    GridDataFactory.swtDefaults().hint(1, 1).applyTo(empty);

    // description label
    description = new Label(parent, SWT.WRAP);
    GridDataFactory.fillDefaults().grab(true, true).applyTo(description);

    // preset label
    label = new Label(parent, SWT.NONE);
    label.setText("Import as");
    labelData.applyTo(label);

    // create provider combo
    ComboViewer providers = createProviders(parent);
    controlData.applyTo(providers.getControl());

    // prevent selector appearing very small
    parent.pack();

    // initial state update
    updateState(true);
}