Example usage for org.eclipse.jface.databinding.viewers ObservableListContentProvider ObservableListContentProvider

List of usage examples for org.eclipse.jface.databinding.viewers ObservableListContentProvider ObservableListContentProvider

Introduction

In this page you can find the example usage for org.eclipse.jface.databinding.viewers ObservableListContentProvider ObservableListContentProvider.

Prototype

public ObservableListContentProvider() 

Source Link

Document

Constructs an ObservableListContentProvider.

Usage

From source file:com.trivadis.loganalysis.ui.ChartCustomizationPanel.java

License:Open Source License

private TableViewer tableSeries(final Composite section, final FormToolkit toolkit) {
    final Table table = toolkit.createTable(section, SWT.NONE);
    table.setLayoutData(new GridDataBuilder().fill().build());
    final TableViewer tableViewer = new TableViewer(table);
    final TableViewerColumn viewerNameColumn = new TableViewerColumn(tableViewer, SWT.NONE);
    viewerNameColumn.getColumn().setWidth(300);

    viewerNameColumn.setLabelProvider(new CellLabelProvider() {
        @Override//from w  w w  . j ava 2 s  .c o m
        public void update(final ViewerCell cell) {
            cell.setText(calculateLabel((Serie) cell.getElement()));
        }

        private String calculateLabel(final Serie serie) {
            return serie.getLabel() + " (" + serie.getXaxis().getValueProvider().getLabel() + " / "
                    + serie.getYaxis().getValueProvider().getLabel() + ")";
        }
    });
    tableViewer.setContentProvider(new ObservableListContentProvider());
    tableViewer.setInput(series);
    return tableViewer;
}

From source file:cz.robotron.examples.parts._003_TableWithViewerSupport.java

License:Open Source License

@PostConstruct
public void createComposite(Composite parent) {
    try {/*from ww w . j av a2 s  . c om*/

        GridLayout gl_parent = new GridLayout();
        parent.setLayout(gl_parent);

        WritableList input = new WritableList(TestData.getPersonData(), Person.class);

        _tableViewer = new TableViewer(parent, SWT.BORDER | SWT.FULL_SELECTION);
        Table table = _tableViewer.getTable();
        table.setHeaderVisible(true);

        // Set content Provider
        ObservableListContentProvider contentProvider = new ObservableListContentProvider();
        _tableViewer.setContentProvider(contentProvider);

        table.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1));

        _tableViewer.setInput(input);
        String[] propertyNames = new String[] { "lastName", "firstName", "address.street", "address.city" };

        createTableColumns(_tableViewer, propertyNames);
        ViewerSupport.bind(_tableViewer, input, BeanProperties.values(propertyNames));

    } catch (Exception e) {
        Utils.showException("Cannot create ViewerSupport for a Table", e);
    }

}

From source file:de.fkoeberle.autocommit.message.ui.AdvancedPage.java

License:Open Source License

/**
 * Create contents of the editor part./* ww  w .j a  v a  2 s  .c o m*/
 * 
 * @param parent
 */
@Override
public void createFormContent(IManagedForm managedForm) {
    super.createFormContent(managedForm);
    FormToolkit toolkit = managedForm.getToolkit();
    ScrolledForm scrolledForm = managedForm.getForm();
    Composite body = scrolledForm.getBody();
    toolkit.decorateFormHeading(scrolledForm.getForm());
    toolkit.paintBordersFor(body);

    scrolledForm.setText("Advanced");
    Composite parent = scrolledForm.getBody();
    parent.setLayout(new FillLayout(SWT.HORIZONTAL));
    Composite container = toolkit.createComposite(parent);
    container.setLayout(new GridLayout(1, false));

    Composite header = toolkit.createComposite(container);
    header.setLayout(new GridLayout(2, false));

    Label generateLabel = toolkit.createLabel(header, "Generate:");
    generateLabel.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false, 1, 1));

    final ComboViewer comboViewer = new ComboViewer(header, SWT.READ_ONLY);
    final Combo combo = comboViewer.getCombo();
    toolkit.adapt(combo, true, true);

    GridData comboLayoutData = new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1);
    comboLayoutData.widthHint = 315;
    combo.setLayoutData(comboLayoutData);
    comboViewer.addSelectionChangedListener(new ComboSelectionListener(combo, comboViewer));

    comboViewer.setContentProvider(new ObservableListContentProvider());
    comboViewer.setLabelProvider(new DefaultProfileLabelProvider());
    comboViewer.setInput(model.getProfiles());

    ProfileComboBoxUpdater profileComboBoxUpdater = new ProfileComboBoxUpdater(comboViewer);
    model.addCurrentProfileListener(new ProfileComboBoxUpdater(comboViewer));
    profileComboBoxUpdater.currentProfileChanged();

    SashForm sashForm = new SashForm(container, SWT.NONE);
    sashForm.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1));
    toolkit.adapt(sashForm, false, false);

    Section leftSection = managedForm.getToolkit().createSection(sashForm, Section.TWISTIE | Section.TITLE_BAR);
    managedForm.getToolkit().paintBordersFor(leftSection);
    leftSection.setText("Used commit message factories:");

    Composite leftComposite = managedForm.getToolkit().createComposite(leftSection, SWT.NONE);
    managedForm.getToolkit().paintBordersFor(leftComposite);
    leftSection.setClient(leftComposite);
    leftComposite.setLayout(new GridLayout(1, false));

    final TableViewer usedFactoriesTableViewer = new TableViewer(leftComposite, SWT.BORDER | SWT.MULTI);
    usedFactoriesTable = usedFactoriesTableViewer.getTable();
    usedFactoriesTable.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1));
    usedFactoriesTableViewer.setContentProvider(new ObservableListContentProvider());
    usedFactoriesTableViewer.setLabelProvider(new FactoryLabelProvider());
    usedFactoriesTableViewer.setInput(model.getFactoryDescriptions());

    Section middleSection = managedForm.getToolkit().createSection(sashForm,
            Section.TWISTIE | Section.TITLE_BAR);
    managedForm.getToolkit().paintBordersFor(middleSection);
    middleSection.setText("Unused commit message factories:");

    Composite middleComposite = managedForm.getToolkit().createComposite(middleSection, SWT.NONE);
    managedForm.getToolkit().paintBordersFor(middleComposite);
    middleSection.setClient(middleComposite);
    middleComposite.setLayout(new GridLayout(1, false));

    TableViewer unusedFactoriesTableViewer = new TableViewer(middleComposite, SWT.BORDER | SWT.MULTI);
    unusedFactoriesTable = unusedFactoriesTableViewer.getTable();
    unusedFactoriesTable.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1));
    unusedFactoriesTableViewer.setContentProvider(new ObservableListContentProvider());
    unusedFactoriesTableViewer.setLabelProvider(new FactoryLabelProvider());
    unusedFactoriesTableViewer.setInput(model.getUnusedFactoryDescriptions());

    addDragAndDropSupport(usedFactoriesTableViewer, unusedFactoriesTableViewer);

    usedFactoriesTableViewer.addSelectionChangedListener(new FactoriesSelectionListener(CMFList.USED,
            usedFactoriesTableViewer, unusedFactoriesTableViewer, toolkit));
    unusedFactoriesTableViewer.addSelectionChangedListener(new FactoriesSelectionListener(CMFList.UNUSED,
            unusedFactoriesTableViewer, usedFactoriesTableViewer, toolkit));

    Section rightSection = managedForm.getToolkit().createSection(sashForm,
            Section.TWISTIE | Section.TITLE_BAR);
    managedForm.getToolkit().paintBordersFor(rightSection);
    rightSection.setText("Selected commit message factories:");

    Composite rightComposite = managedForm.getToolkit().createComposite(rightSection, SWT.NONE);
    managedForm.getToolkit().paintBordersFor(rightComposite);
    rightSection.setClient(rightComposite);
    rightComposite.setLayout(new GridLayout(1, false));

    final ScrolledComposite scrolledComposite = new ScrolledComposite(rightComposite,
            SWT.V_SCROLL | SWT.BORDER);
    scrolledComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1));
    toolkit.adapt(scrolledComposite);
    factoriesComposite = new Composite(scrolledComposite, SWT.NONE);
    scrolledComposite.setContent(factoriesComposite);
    toolkit.adapt(factoriesComposite);
    GridLayout layout = new GridLayout();
    layout.numColumns = 1;
    factoriesComposite.setLayout(layout);
    scrolledComposite.addControlListener(new ControlAdapter() {
        @Override
        public void controlResized(ControlEvent e) {
            Rectangle r = scrolledComposite.getClientArea();
            factoriesComposite.setSize(factoriesComposite.computeSize(r.width, SWT.DEFAULT));
            factoriesComposite.layout();
        }
    });
    scrolledComposite.setAlwaysShowScrollBars(true);
    sashForm.setWeights(new int[] { 180, 180, 350 });
    /*
     * Expand after generating it's content so that content gets properly
     * shown:
     */
    leftSection.setExpanded(true);
    middleSection.setExpanded(true);
    rightSection.setExpanded(true);
}

From source file:de.quamoco.qm.properties.AnnotatedElementAnnotationsSection.java

License:Apache License

/** Creates the {@link TableViewer}. */
@Override/*from w  w w .j  a  v  a 2 s  .  c  o m*/
protected void createValue(Composite composite) {
    tableViewer = new TableViewer(composite, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION);
    tableViewer.setContentProvider(new ObservableListContentProvider());

    createColumn(QmPackage.eINSTANCE.getAnnotation_Key());
    createColumn(QmPackage.eINSTANCE.getAnnotation_Value());
    setUpTable();
}

From source file:de.walware.ecommons.emf.ui.forms.EObjectListProperty.java

License:Open Source License

@Override
public void create(final Composite parent, final IEFFormPage page) {
    fWidget = page.getToolkit().createPropSingleColumnTable(parent, 10, 25);

    fWidget.viewer.setContentProvider(new ObservableListContentProvider());
    fWidget.viewer.setLabelProvider(new LabelProvider(page.getEditor().getAdapterFactory(), fWidget.viewer));

    fButtonGroup = new ButtonGroup<EObject>(parent);
    fButtonGroup.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false));

    customizeButtonGroup(fButtonGroup);//from  w w w  .j  a  v a 2s . com
}

From source file:de.walware.ecommons.ui.mpbv.ManageBookmarksDialog.java

License:Open Source License

@Override
protected Control createDialogArea(final Composite parent) {
    final Composite composite = new Composite(parent, SWT.NONE);
    composite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
    composite.setLayout(LayoutUtil.createDialogGrid(2));

    {//from   w ww.j av a  2 s. com
        fTableViewer = new TableViewer(composite);
        fTableViewer.setUseHashlookup(true);
        final GridData gd = new GridData(SWT.FILL, SWT.FILL, true, true);
        gd.widthHint = LayoutUtil.hintWidth(fTableViewer.getTable(), 60);
        gd.heightHint = LayoutUtil.hintHeight(fTableViewer.getTable(), 20);
        fTableViewer.getControl().setLayoutData(gd);

        fTableViewer.setLabelProvider(new LabelProvider());
    }

    fButtons = new ButtonGroup<BrowserBookmark>(composite) {
        @Override
        protected BrowserBookmark edit1(final BrowserBookmark item, final boolean newItem,
                final Object parent) {
            final EditBookmarkDialog dialog = new EditBookmarkDialog(getShell(), item);
            if (dialog.open() == Dialog.OK) {
                return dialog.getBookmark();
            }
            return null;
        }

        @Override
        public void updateState() {
            super.updateState();
            getButton(IDialogConstants.OPEN_ID)
                    .setEnabled(((IStructuredSelection) fTableViewer.getSelection()).size() == 1);
        }
    };
    fButtons.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false));
    fButtons.addAddButton(null);
    fButtons.addEditButton(null);
    fButtons.addDeleteButton(null);
    fButtons.addSeparator();
    fButtons.addUpButton(null);
    fButtons.addDownButton(null);

    final WritableList writableList = new WritableList(fBookmarks, BrowserBookmark.class);
    fTableViewer.setContentProvider(new ObservableListContentProvider());
    fTableViewer.setInput(writableList);
    fButtons.connectTo(fTableViewer, writableList, null);
    ViewerUtil.scheduleStandardSelection(fTableViewer);

    applyDialogFont(composite);
    return composite;
}

From source file:de.walware.statet.r.internal.console.ui.launching.RConsoleOptionsTab.java

License:Open Source License

@Override
protected void addBindings(final DataBindingContext dbc, final Realm realm) {
    fPinValue = new WritableValue(realm, Boolean.class);
    dbc.bindValue(SWTObservables.observeSelection(fPinControl), fPinValue, null, null);

    fTrackingList = new WritableList(realm, new ArrayList<Object>(), TrackingConfiguration.class);
    fTrackingTable.setContentProvider(new ObservableListContentProvider());
    fTrackingTable.setInput(fTrackingList);

    fStartupSnippetValue = new WritableValue(realm, String.class);
    dbc.bindValue(new SnippetEditorObservable(realm, fStartupSnippetEditor, SWT.Modify), fStartupSnippetValue,
            null, null);/*w  ww  .  j a  v a2 s . c om*/

    fRHelpByStatetValue = new WritableValue(realm, Boolean.class);
    fRGraphicsByStatetValue = new WritableValue(realm, Boolean.class);
    fRDbgExtValue = new WritableValue(realm, Boolean.class);
    dbc.bindValue(SWTObservables.observeSelection(fRHelpByStatetControl), fRHelpByStatetValue, null, null);
    dbc.bindValue(SWTObservables.observeSelection(fRGraphicsByStatetControl), fRGraphicsByStatetValue, null,
            null);
    dbc.bindValue(SWTObservables.observeSelection(fRDbgExtControl), fRDbgExtValue, null, null);

    fObjectDBEnabledValue = new WritableValue(realm, Boolean.class);
    fObjectDBAutoEnabledValue = new WritableValue(realm, Boolean.class);
    fObjectDBListsChildrenValue = new WritableValue(realm, Integer.class);
    fObjectDBEnvsChildrenValue = new WritableValue(realm, Integer.class);
    final ISWTObservableValue dbObs = SWTObservables.observeSelection(fObjectDBEnabledControl);
    dbc.bindValue(dbObs, fObjectDBEnabledValue, null, null);
    dbc.bindValue(SWTObservables.observeSelection(fObjectDBAutoEnabledControl), fObjectDBAutoEnabledValue, null,
            null);
    dbc.bindValue(SWTObservables.observeText(fObjectDBListsChildrenControl, SWT.Modify),
            fObjectDBListsChildrenValue,
            new UpdateValueStrategy().setAfterGetValidator(new IntegerValidator(100, Integer.MAX_VALUE,
                    "Invalid max value for length of R lists to fetch (100-).")),
            null);
    dbc.bindValue(SWTObservables.observeText(fObjectDBEnvsChildrenControl, SWT.Modify),
            fObjectDBEnvsChildrenValue, new UpdateValueStrategy().setAfterGetValidator(new IntegerValidator(100,
                    Integer.MAX_VALUE, "Invalid max value for length of R environments to fetch (100-).")),
            null);

    dbc.bindValue(new SWTMultiEnabledObservable(realm, new Control[] { fObjectDBAutoEnabledControl,
            fObjectDBEnvsChildrenControl, fObjectDBListsChildrenControl, }, null), dbObs, null, null);

    fTrackingButtons.connectTo(fTrackingTable,
            new DataAdapter.ListAdapter<TrackingConfiguration>(fTrackingList, null) {
                @Override
                public boolean isDeleteAllowed(final Object element) {
                    return (super.isDeleteAllowed(element)
                            && ((TrackingConfiguration) element).getId().startsWith(CUSTOM_TRACKING_ID_PREFIX));
                }
            });

    fTrackingEnabledSet = new WritableSet(realm, new HashSet<Object>(), TrackingConfiguration.class);
    fTrackingButtons.setCheckedModel(fTrackingEnabledSet);
    dbc.bindSet(ViewersObservables.observeCheckedElements(fTrackingTable, TrackingConfiguration.class),
            fTrackingEnabledSet);
}

From source file:de.walware.statet.rtm.base.ui.rexpr.RExprListProperty.java

License:Open Source License

@Override
public void create(final Composite parent, final IEFFormPage page) {
    final IRExprTypesUIProvider provider = getProvider();
    fTypeUIAdapters = provider.getUIAdapters(fTypes, getEClass(), getEFeature());
    final RtFormToolkit toolkit = (RtFormToolkit) page.getToolkit();

    toolkit.createPropLabel(parent, getLabel(), getTooltip(), 3);

    fWidget = toolkit.createPropSingleColumnTable(parent, 6, 25);

    fWidget.viewer.setContentProvider(new ObservableListContentProvider());
    final ViewerColumn column = fWidget.getViewerColumn(0);
    column.setLabelProvider(new RExprLabelProvider(fTypeUIAdapters));

    fButtonGroup = new ButtonGroup<RTypedExpr>(parent, this, true);
    fButtonGroup.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false));

    customizeButtonGroup(fButtonGroup);//from   w  w w. j av  a2  s.c  o  m
}

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

License:Open Source License

public Control createControl() {
    attributeDefinition = (AttributeDefinitionEnumeration) viewElement.getAttributeDefinition();

    if (attributeDefinition.isMultiValued()) {
        comboViewer = new MultiComboViewer(this, SWT.READ_ONLY | SWT.BORDER);
    } else {/* w w  w. j  a  v  a2s .  com*/
        comboViewer = new ColorComboViewer(new CCombo(this, SWT.READ_ONLY | SWT.BORDER));
    }

    ObservableListContentProvider contentProvider = new ObservableListContentProvider();

    // set content provider
    comboViewer.setContentProvider(contentProvider);

    ObservableMapLabelColorProvider labelProvider = new ObservableMapLabelColorProvider(
            EMFProperties.value(ErfPackage.Literals.IDENTIFIABLE__LONG_NAME)
                    .observeDetail(contentProvider.getKnownElements())) {

        @Override
        public String getText(Object element) {
            return super.getText(element);
        }

        @Override
        public Image getImage(Object element) {
            return super.getImage(element);
        }

        public Color getForeground(Object element) {
            return null;
        }

        public Color getBackground(Object element) {
            org.eclipse.swt.graphics.Color swtColor;
            if (element != null) {
                assert (element instanceof EnumValueImpl);
                EnumValueImpl enumValue = (EnumValueImpl) element;
                swtColor = enumValue.getColor().getColor();
            } else {
                swtColor = Display.getDefault().getSystemColor(SWT.COLOR_WHITE);
            }
            return swtColor;
        }

    };

    // set label provider
    comboViewer.setLabelProvider(labelProvider);

    // set input
    IEMFListProperty dataTypeDefinitions = EMFProperties
            .list(ErfPackage.Literals.DATATYPE_DEFINITION_ENUMERATION__SPECIFIED_VALUES);
    IObservableList observableList = dataTypeDefinitions.observe(attributeDefinition.getType());
    comboViewer.setInput(observableList);

    return comboViewer.getControl();
}

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

License:Open Source License

/**
 * Create button bar showing://from  w ww .j  a v  a 2 s . c o m
 * <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);
        }
    });

}