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.netxforge.netxstudio.screens.f2.Vendors.java

License:Open Source License

public EMFDataBindingContext initDataBindings_() {

    listContentProvider = new ObservableListContentProvider();
    tableViewer.setContentProvider(listContentProvider);
    IObservableMap[] observeMaps = EMFObservables.observeMaps(listContentProvider.getKnownElements(),
            new EStructuralFeature[] { GenericsPackage.Literals.COMPANY__NAME,
                    GenericsPackage.Literals.COMPANY__SHORT_NAME, GenericsPackage.Literals.COMPANY__WEBSITE });
    tableViewer.setLabelProvider(new ToleranceObservableMapLabelProvider(observeMaps));
    IEMFListProperty l = EMFEditProperties.resource(editingService.getEditingDomain());
    IObservableList toleranceObservableList = l.observe(vendorResource);

    //      obm.addObservable(toleranceObservableList);
    tableViewer.setInput(toleranceObservableList);

    EMFDataBindingContext bindingContext = new EMFDataBindingContext();
    return bindingContext;
}

From source file:com.netxforge.netxstudio.screens.f3.charts.ChartMarkerComponent.java

License:Open Source License

public void initMarkersBindingCollection() {

    ObservableListContentProvider listContentProvider = new ObservableListContentProvider();
    markersTableViewer.setContentProvider(listContentProvider);

    IObservableMap[] observeMaps = EMFObservables.observeMaps(listContentProvider.getKnownElements(),
            new EStructuralFeature[] { OperatorsPackage.Literals.MARKER__KIND,
                    OperatorsPackage.Literals.MARKER__DESCRIPTION, OperatorsPackage.Literals.MARKER__VALUE_REF,
                    OperatorsPackage.Literals.TOLERANCE_MARKER__DIRECTION,
                    OperatorsPackage.Literals.TOLERANCE_MARKER__LEVEL });

    markersTableViewer.setLabelProvider(new MarkersObervableMapLabelProvider(observeMaps));

    ComputedList markersList = new ComputedList() {

        @SuppressWarnings("rawtypes")
        @Override/*from w w  w .j  av a  2  s. co  m*/
        protected List calculate() {
            return Collections.EMPTY_LIST;

            // FIXME Get rid of markers view, or base on aggregate of
            // resources shown by the
            // chart.
            // return chartModel.getMarkers();
        }

    };

    markersTableViewer.setInput(markersList);
}

From source file:com.netxforge.netxstudio.screens.f3.Countries.java

License:Open Source License

public EMFDataBindingContext initDataBindings_() {

    listContentProvider = new ObservableListContentProvider();
    tableViewer.setContentProvider(listContentProvider);
    IObservableMap[] observeMaps = EMFObservables.observeMaps(listContentProvider.getKnownElements(),
            new EStructuralFeature[] { GeoPackage.Literals.LOCATION__NAME,
                    GeoPackage.Literals.COUNTRY__COUNTRY_CODE, });
    tableViewer.setLabelProvider(new ObservableMapLabelProvider(observeMaps));
    IEMFListProperty resourceProperty = EMFEditProperties.resource(editingService.getEditingDomain());
    IObservableList operatorsObservableList = resourceProperty.observe(countryResource);

    tableViewer.setInput(operatorsObservableList);

    EMFDataBindingContext bindingContext = new EMFDataBindingContext();
    return bindingContext;
}

From source file:com.netxforge.netxstudio.screens.f3.Operators.java

License:Open Source License

public EMFDataBindingContext initDataBindings_() {

    listContentProvider = new ObservableListContentProvider();
    tableViewer.setContentProvider(listContentProvider);
    IObservableMap[] observeMaps = EMFObservables.observeMaps(listContentProvider.getKnownElements(),
            new EStructuralFeature[] { GenericsPackage.Literals.COMPANY__NAME,
                    GenericsPackage.Literals.COMPANY__SHORT_NAME, GenericsPackage.Literals.COMPANY__WEBSITE });
    tableViewer.setLabelProvider(new ToleranceObservableMapLabelProvider(observeMaps));
    IEMFListProperty resourceProperty = EMFEditProperties.resource(editingService.getEditingDomain());
    IObservableList operatorsObservableList = resourceProperty.observe(operatorResource);

    tableViewer.setInput(operatorsObservableList);

    EMFDataBindingContext bindingContext = new EMFDataBindingContext();
    return bindingContext;
}

From source file:com.netxforge.netxstudio.screens.f3.SitesTable.java

License:Open Source License

public EMFDataBindingContext initDataBindings_() {

    listContentProvider = new ObservableListContentProvider();
    tableViewer.setContentProvider(listContentProvider);

    IObservableSet set = listContentProvider.getKnownElements();

    List<IObservableMap> mapList = Lists.newArrayList();

    mapList.add(EMFProperties.value(GeoPackage.Literals.LOCATION__NAME).observeDetail(set));

    mapList.add(EMFProperties.value(GeoPackage.Literals.LOCATION__NAME).observeDetail(set));

    mapList.add(EMFProperties.value(GeoPackage.Literals.SITE__CITY).observeDetail(set));

    mapList.add(EMFProperties.value(GeoPackage.Literals.SITE__SREET).observeDetail(set));

    mapList.add(EMFProperties.value(GeoPackage.Literals.SITE__HOUSENUMBER).observeDetail(set));

    IObservableMap[] observeMaps = new IObservableMap[mapList.size()];
    mapList.toArray(observeMaps);/*from w w w.  j  a va 2 s.  c  o m*/

    tableViewer.setLabelProvider(new ObservableMapLabelProvider(observeMaps));

    IEMFListProperty resourceProperty = EMFEditProperties.list(editingService.getEditingDomain(),
            GeoPackage.Literals.COUNTRY__SITES);
    IObservableList operatorsObservableList = resourceProperty.observe(countryResource.getContents());

    tableViewer.setInput(operatorsObservableList);

    EMFDataBindingContext bindingContext = new EMFDataBindingContext();
    return bindingContext;
}

From source file:com.netxforge.netxstudio.screens.f4.AbstractFileBasedMapping.java

License:Open Source License

protected void initHeaderMappingBinding(EMFDataBindingContext context) {
    // HEADER MAPPING COLUMN

    setHeaderMappingEnabledState();/* w ww  .  j ava  2s  .  c  o  m*/
    setHeaderMappingStateVisible();

    // header row mapping.
    IObservableValue headerRowObservableValue = SWTObservables.observeText(txtFirstHeaderRow, SWT.Modify);

    IEMFValueProperty headerRowProperty = EMFEditProperties.value(editingService.getEditingDomain(),
            MetricsPackage.Literals.MAPPING__HEADER_ROW);

    context.bindValue(headerRowObservableValue, headerRowProperty.observe(mapping), null, null);

    // header columns mapping.

    {
        ObservableListContentProvider listContentProvider = new ObservableListContentProvider();
        this.tblViewerHeaderColumnMapping.setContentProvider(listContentProvider);

        IObservableSet set = listContentProvider.getKnownElements();

        List<IObservableMap> mapList = Lists.newArrayList();

        mapList.add(
                EMFEditProperties
                        .value(editingService.getEditingDomain(),
                                FeaturePath.fromList(MetricsPackage.Literals.MAPPING_COLUMN__DATA_TYPE,
                                        MetricsPackage.Literals.VALUE_DATA_KIND__METRIC_REF))
                        .observeDetail(set));

        mapList.add(
                EMFEditProperties
                        .value(editingService.getEditingDomain(),
                                FeaturePath.fromList(MetricsPackage.Literals.MAPPING_COLUMN__DATA_TYPE,
                                        MetricsPackage.Literals.VALUE_DATA_KIND__VALUE_KIND))
                        .observeDetail(set));

        mapList.add(EMFEditProperties.value(editingService.getEditingDomain(),
                FeaturePath.fromList(MetricsPackage.Literals.MAPPING_COLUMN__DATA_TYPE,
                        MetricsPackage.Literals.VALUE_DATA_KIND__FORMAT))
                .observeDetail(set));

        mapList.add(EMFEditProperties
                .value(editingService.getEditingDomain(),
                        FeaturePath.fromList(MetricsPackage.Literals.MAPPING_COLUMN__DATA_TYPE,
                                MetricsPackage.Literals.IDENTIFIER_DATA_KIND__OBJECT_PROPERTY))
                .observeDetail(set));

        mapList.add(EMFEditProperties
                .value(editingService.getEditingDomain(), MetricsPackage.Literals.MAPPING_COLUMN__COLUMN)
                .observeDetail(set));

        IObservableMap[] map = new IObservableMap[mapList.size()];
        mapList.toArray(map);

        tblViewerHeaderColumnMapping.setLabelProvider(new ColumnObservableMapLabelProvider(map));
        IEMFListProperty l = EMFEditProperties.list(editingService.getEditingDomain(),
                MetricsPackage.Literals.MAPPING__HEADER_MAPPING_COLUMNS);

        IObservableList dataColumnMappingObservableList = l.observe(mapping);
        dataColumnMappingObservableList.addChangeListener(new IChangeListener() {
            public void handleChange(ChangeEvent event) {
                // We have a special change listener, to know if the
                // header mapping visual
                // can be disabled.
                setHeaderMappingEnabledState();
                setHeaderMappingStateVisible();
            }
        });
        // obm.addObservable(dataColumnMappingObservableList);
        tblViewerHeaderColumnMapping.setInput(dataColumnMappingObservableList);
    }
}

From source file:com.netxforge.netxstudio.screens.f4.AbstractFileBasedMapping.java

License:Open Source License

protected void initDataMappingBinding(EMFDataBindingContext context) {
    // DATA MAPPING COLUMN

    // data row mapping

    IObservableValue firstDataRowObservableValue = SWTObservables.observeText(txtFirstDataRow, SWT.Modify);

    IEMFValueProperty firstDataRowProperty = EMFEditProperties.value(editingService.getEditingDomain(),
            MetricsPackage.Literals.MAPPING__FIRST_DATA_ROW);
    context.bindValue(firstDataRowObservableValue, firstDataRowProperty.observe(mapping), null, null);

    // data columns mapping.
    {//from w w w  . java  2 s. c  om
        ObservableListContentProvider listContentProvider = new ObservableListContentProvider();
        this.tblViewerDataColumnMapping.setContentProvider(listContentProvider);

        IObservableSet set = listContentProvider.getKnownElements();

        List<IObservableMap> mapList = Lists.newArrayList();

        mapList.add(
                EMFEditProperties
                        .value(editingService.getEditingDomain(),
                                FeaturePath.fromList(MetricsPackage.Literals.MAPPING_COLUMN__DATA_TYPE,
                                        MetricsPackage.Literals.VALUE_DATA_KIND__METRIC_REF))
                        .observeDetail(set));

        mapList.add(
                EMFEditProperties
                        .value(editingService.getEditingDomain(),
                                FeaturePath.fromList(MetricsPackage.Literals.MAPPING_COLUMN__DATA_TYPE,
                                        MetricsPackage.Literals.VALUE_DATA_KIND__KIND_HINT))
                        .observeDetail(set));

        mapList.add(
                EMFEditProperties
                        .value(editingService.getEditingDomain(),
                                FeaturePath.fromList(MetricsPackage.Literals.MAPPING_COLUMN__DATA_TYPE,
                                        MetricsPackage.Literals.VALUE_DATA_KIND__VALUE_KIND))
                        .observeDetail(set));

        mapList.add(EMFEditProperties.value(editingService.getEditingDomain(),
                FeaturePath.fromList(MetricsPackage.Literals.MAPPING_COLUMN__DATA_TYPE,
                        MetricsPackage.Literals.VALUE_DATA_KIND__FORMAT))
                .observeDetail(set));

        mapList.add(EMFEditProperties
                .value(editingService.getEditingDomain(),
                        FeaturePath.fromList(MetricsPackage.Literals.MAPPING_COLUMN__DATA_TYPE,
                                MetricsPackage.Literals.IDENTIFIER_DATA_KIND__OBJECT_PROPERTY))
                .observeDetail(set));

        mapList.add(EMFEditProperties
                .value(editingService.getEditingDomain(), MetricsPackage.Literals.MAPPING_COLUMN__COLUMN)
                .observeDetail(set));

        IObservableMap[] map = new IObservableMap[mapList.size()];
        mapList.toArray(map);

        this.tblViewerDataColumnMapping.setLabelProvider(new ColumnObservableMapLabelProvider(map));
        IEMFListProperty l = EMFEditProperties.list(editingService.getEditingDomain(),
                MetricsPackage.Literals.MAPPING__DATA_MAPPING_COLUMNS);

        IObservableList dataColumnMappingObservableList = l.observe(mapping);
        this.tblViewerDataColumnMapping.setInput(dataColumnMappingObservableList);
    }

    IViewerObservableValue observeSingleSelection = ViewersObservables
            .observeSingleSelection(tblViewerDataColumnMapping);

    ISWTObservableValue observeEnabled = SWTObservables.observeEnabled(dataMappingUpButton);

    context.bindValue(observeSingleSelection, observeEnabled, new UpdateValueStrategy() {

        @Override
        protected IStatus doSet(IObservableValue observableValue, Object value) {

            if (value instanceof MappingColumn) {

                // Find the index of our object on the parent
                @SuppressWarnings("unchecked")
                List<MappingColumn> dataMappingColumns = (List<MappingColumn>) ((MappingColumn) value)
                        .eContainer().eGet(MetricsPackage.Literals.MAPPING__DATA_MAPPING_COLUMNS);

                int indexOf = dataMappingColumns.indexOf(value);

                DataKind dataType = ((MappingColumn) value).getDataType();
                if (dataType instanceof IdentifierDataKind && indexOf > 0) {
                    return super.doSet(observableValue, true);
                }
            }

            return super.doSet(observableValue, false);
        }

    }, null);

    ISWTObservableValue observeEnabledDown = SWTObservables.observeEnabled(dataMappingDownButton);

    context.bindValue(observeSingleSelection, observeEnabledDown, new UpdateValueStrategy() {

        @Override
        protected IStatus doSet(IObservableValue observableValue, Object value) {

            if (value instanceof MappingColumn) {

                // Find the index of our object on the parent
                @SuppressWarnings("unchecked")
                List<MappingColumn> dataMappingColumns = (List<MappingColumn>) ((MappingColumn) value)
                        .eContainer().eGet(MetricsPackage.Literals.MAPPING__DATA_MAPPING_COLUMNS);

                int indexOf = dataMappingColumns.indexOf(value);

                DataKind dataType = ((MappingColumn) value).getDataType();
                if (dataType instanceof IdentifierDataKind && indexOf < dataMappingColumns.size() - 1) {
                    return super.doSet(observableValue, true);
                }
            }

            return super.doSet(observableValue, false);
        }

    }, null);

}

From source file:com.netxforge.netxstudio.screens.f4.JobRuns.java

License:Open Source License

public EMFDataBindingContext initDataBindings_() {

    EMFDataBindingContext bindingContext = new EMFDataBindingContext();

    ObservableListContentProvider listContentProvider = new ObservableListContentProvider();
    jobRunsTableViewer.setContentProvider(listContentProvider);

    EAttribute dummyAttribute = EcoreFactory.eINSTANCE.createEAttribute();

    IObservableMap[] observeMaps = EMFObservables.observeMaps(listContentProvider.getKnownElements(),
            new EStructuralFeature[] { dummyAttribute, SchedulingPackage.Literals.WORK_FLOW_RUN__STATE,
                    SchedulingPackage.Literals.WORK_FLOW_RUN__PROGRESS,
                    SchedulingPackage.Literals.WORK_FLOW_RUN__PROGRESS_TASK,
                    SchedulingPackage.Literals.WORK_FLOW_RUN__PROGRESS_MESSAGE,
                    SchedulingPackage.Literals.WORK_FLOW_RUN__STARTED,
                    SchedulingPackage.Literals.WORK_FLOW_RUN__ENDED,
                    SchedulingPackage.Literals.WORK_FLOW_RUN__LOG });

    WorkflowRunObservableMapLabelProvider workflowRunObservableMapLabelProvider = new WorkflowRunObservableMapLabelProvider(
            observeMaps);//ww  w.  j  av  a2  s .c  o  m
    workflowRunObservableMapLabelProvider.setTableViewer(jobRunsTableViewer);
    jobRunsTableViewer.setLabelProvider(workflowRunObservableMapLabelProvider);

    IEMFListProperty l = EMFProperties.list(SchedulingPackage.Literals.JOB_RUN_CONTAINER__WORK_FLOW_RUNS);
    IObservableList observeWorkFlowRuns = l.observe(jobContainer);
    jobRunsTableViewer.setInput(observeWorkFlowRuns);

    return bindingContext;
}

From source file:com.netxforge.netxstudio.screens.f4.Jobs.java

License:Open Source License

public EMFDataBindingContext initDataBindings_() {
    EMFDataBindingContext bindingContext = new EMFDataBindingContext();

    // tblViewerClmnState.setEditingSupport(new CheckBoxEditingSupport(
    // jobsTableViewer, bindingContext));

    // TODO, Implement content provider, which also can deal with the type
    // of a job which is defined
    // as a job class on it's own.
    ObservableListContentProvider listContentProvider = new ObservableListContentProvider();
    jobsTableViewer.setContentProvider(listContentProvider);

    EAttribute dummyAttribute = EcoreFactory.eINSTANCE.createEAttribute();

    IObservableMap[] observeMaps = EMFObservables.observeMaps(listContentProvider.getKnownElements(),
            new EStructuralFeature[] { dummyAttribute, SchedulingPackage.Literals.JOB__NAME,
                    SchedulingPackage.Literals.JOB__JOB_STATE, SchedulingPackage.Literals.JOB__START_TIME,
                    SchedulingPackage.Literals.JOB__END_TIME, SchedulingPackage.Literals.JOB__REPEAT,
                    SchedulingPackage.Literals.JOB__INTERVAL });
    jobsTableViewer.setLabelProvider(new JobsObervableMapLabelProvider(this, observeMaps));

    IEMFListProperty jobsProperties = EMFEditProperties.resource(editingService.getEditingDomain());

    IObservableList jobsList = jobsProperties.observe(jobsResource);

    jobsTableViewer.setInput(jobsList);//from w  w w .  j  a  v  a  2s. c o  m

    return bindingContext;
}

From source file:com.netxforge.netxstudio.screens.f4.MappingStatistics.java

License:Open Source License

public EMFDataBindingContext initDataBindings_() {

    EMFDataBindingContext bindingContext = new EMFDataBindingContext();

    ObservableListTreeContentProvider treeContentProvider = new ObservableListTreeContentProvider(
            new IObservableFactory() {

                private IEMFListProperty subStatisticsObservableProperty = EMFEditProperties.list(
                        editingService.getEditingDomain(),
                        MetricsPackage.Literals.MAPPING_STATISTIC__SUB_STATISTICS);

                public IObservable createObservable(Object target) {
                    IObservable ol = null;

                    if (target instanceof IObservableList) {
                        ol = (IObservable) target;
                    } else if (target instanceof MappingStatistic) {
                        ol = subStatisticsObservableProperty.observe(target);
                    }/*  w  w  w.j a  va  2 s.  com*/
                    return ol;
                }

            }, new TreeStructureAdvisor() {
                @Override
                public Object getParent(Object element) {

                    if (element instanceof EObject) {
                        EObject eo = (EObject) element;
                        if (eo.eContainer() != null) {
                            return eo.eContainer();
                        }
                    }
                    return null;
                }

                @Override
                public Boolean hasChildren(Object element) {

                    if (element instanceof MappingStatistic) {
                        return ((MappingStatistic) element).getSubStatistics().size() > 0 ? Boolean.TRUE : null;

                    }
                    return super.hasChildren(element);
                }
            });

    statisticsTreeViewer.setContentProvider(treeContentProvider);

    IObservableMap[] observeMaps = EMFObservables.observeMaps(treeContentProvider.getKnownElements(),
            new EStructuralFeature[] { MetricsPackage.Literals.MAPPING_STATISTIC__MESSAGE });
    statisticsTreeViewer.setLabelProvider(new StatisticObservableMapLabelProvider(observeMaps));

    // Cool, observer the whole resource.
    IEMFListProperty l = EMFProperties.list(MetricsPackage.Literals.METRIC_SOURCE__STATISTICS);

    IObservableList metricSourceObservableList = l.observe(metricSource);

    statisticsTreeViewer.setInput(metricSourceObservableList);

    /**
     * Set a comparator to sort our columns, only sort the objects of type
     * 
     */
    statisticsTreeViewer.setComparator(new ViewerComparator() {

        /*
         * (non-Javadoc)
         * 
         * @see
         * org.eclipse.jface.viewers.ViewerComparator#category(java.lang
         * .Object)
         */
        @Override
        public int category(Object element) {

            // Set categories for our objects, only interrested in Service
            // flows for now.
            if (element instanceof MappingStatistic)
                return 1;
            return super.category(element);
        }

        /*
         * (non-Javadoc)
         * 
         * @see
         * org.eclipse.jface.viewers.ViewerComparator#compare(org.eclipse
         * .jface.viewers.Viewer, java.lang.Object, java.lang.Object)
         */
        @Override
        public int compare(Viewer viewer, Object e1, Object e2) {
            int cat1 = category(e1);
            int cat2 = category(e2);

            if (cat1 != cat2) {
                return cat1 - cat2;
            }

            if (e1 instanceof MappingStatistic && e2 instanceof MappingStatistic) {
                MappingStatistic ms1 = (MappingStatistic) e1;
                MappingStatistic ms2 = (MappingStatistic) e2;

                if (ms1.eIsSet(MetricsPackage.Literals.MAPPING_STATISTIC__MAPPING_DURATION)
                        && ms2.eIsSet(MetricsPackage.Literals.MAPPING_STATISTIC__MAPPING_DURATION)) {
                    return ms2.getMappingDuration().getBegin().compare(ms1.getMappingDuration().getBegin());
                }
            }
            return 0; // Do not compare other types.
            // return super.compare(viewer, e1, e2);
        }

    });

    final IObservableValue selectionObservable = ViewerProperties.singleSelection()
            .observe(statisticsTreeViewer);

    // Observables for a single selection.

    IObservableValue messageObservable = SWTObservables.observeText(this.txtMessage, SWT.None);
    IObservableValue totalRecordsObservable = SWTObservables.observeText(this.txtTotalRecords, SWT.None);

    IObservableValue startTimeObservable = SWTObservables.observeText(this.txtStartDateTime, SWT.None);
    IObservableValue endTimeObservable = SWTObservables.observeText(this.txtEndDateTime, SWT.None);

    IObservableValue metricStartTimeObservable = SWTObservables.observeText(this.txtMetricStartDateTime,
            SWT.None);
    IObservableValue metricEndTimeObservable = SWTObservables.observeText(this.txtMetricEndDateTime, SWT.None);

    IObservableValue totalExpectedValuesObservable = SWTObservables.observeText(this.txtTotalValues, SWT.None);
    IObservableValue totalFailedValuesObservable = SWTObservables.observeText(this.txtTotalFailedValues,
            SWT.None);

    IEMFValueProperty messageProperty = EMFProperties.value(MetricsPackage.Literals.MAPPING_STATISTIC__MESSAGE);

    final IEMFValueProperty totalRecordsProperty = EMFProperties
            .value(MetricsPackage.Literals.MAPPING_STATISTIC__TOTAL_RECORDS);

    IEMFValueProperty startDateTimeProperty = EMFProperties
            .value(FeaturePath.fromList(MetricsPackage.Literals.MAPPING_STATISTIC__MAPPING_DURATION,
                    GenericsPackage.Literals.DATE_TIME_RANGE__BEGIN));

    IEMFValueProperty endDateTimeProperty = EMFProperties
            .value(FeaturePath.fromList(MetricsPackage.Literals.MAPPING_STATISTIC__MAPPING_DURATION,
                    GenericsPackage.Literals.DATE_TIME_RANGE__END));

    IEMFValueProperty metricStartDateTimeProperty = EMFProperties
            .value(FeaturePath.fromList(MetricsPackage.Literals.MAPPING_STATISTIC__PERIOD_ESTIMATE,
                    GenericsPackage.Literals.DATE_TIME_RANGE__BEGIN));

    IEMFValueProperty metricEndDateTimeProperty = EMFProperties
            .value(FeaturePath.fromList(MetricsPackage.Literals.MAPPING_STATISTIC__PERIOD_ESTIMATE,
                    GenericsPackage.Literals.DATE_TIME_RANGE__END));

    ComputedValue computedTotalExpectedValue = new ComputedValue() {

        @Override
        protected Object calculate() {
            Object value = totalRecordsProperty.observeDetail(selectionObservable).getValue();
            if (value instanceof Integer) {

                return new Integer(StudioUtils.metricsInMetricSource(metricSource).size() * (Integer) value)
                        .toString();
            }
            return 0;
        }

    };

    ComputedValue computedTotalFailedValue = new ComputedValue() {

        @Override
        protected Object calculate() {
            Object selectedObject = selectionObservable.getValue();
            // recursively compute for sub-statistics.
            if (selectedObject instanceof MappingStatistic) {
                return new Integer(StudioUtils.mappingFailedCount((MappingStatistic) selectedObject))
                        .toString();
            }
            return 0;
        }
    };

    EMFUpdateValueStrategy modelToTargetStrategy = new EMFUpdateValueStrategy();
    modelToTargetStrategy.setConverter(new ModelDateConverter());

    bindingContext.bindValue(messageObservable, messageProperty.observeDetail(selectionObservable));

    bindingContext.bindValue(totalRecordsObservable, totalRecordsProperty.observeDetail(selectionObservable));

    bindingContext.bindValue(startTimeObservable, startDateTimeProperty.observeDetail(selectionObservable),
            null, modelToTargetStrategy);

    bindingContext.bindValue(endTimeObservable, endDateTimeProperty.observeDetail(selectionObservable), null,
            modelToTargetStrategy);

    bindingContext.bindValue(metricStartTimeObservable,
            metricStartDateTimeProperty.observeDetail(selectionObservable), null, modelToTargetStrategy);

    bindingContext.bindValue(metricEndTimeObservable,
            metricEndDateTimeProperty.observeDetail(selectionObservable), null, modelToTargetStrategy);

    bindingContext.bindValue(totalExpectedValuesObservable, computedTotalExpectedValue);

    bindingContext.bindValue(totalFailedValuesObservable, computedTotalFailedValue);

    // bindingContext.bindValue(totalExpectedValuesObservable,
    // computedTotalExpectedValue, new UpdateValueStrategy(false,
    // UpdateValueStrategy.POLICY_NEVER), null);
    //
    // bindingContext.bindValue(totalFailedValuesObservable,
    // computedTotalFailedValue, new UpdateValueStrategy(false,
    // UpdateValueStrategy.POLICY_NEVER), null);

    ObservableListContentProvider recordsContentProvider = new ObservableListContentProvider();
    tblViewerRecords.setContentProvider(recordsContentProvider);

    // IObservableMap[] recordsObserveMaps = EMFObservables.observeMaps(
    // listContentProvider.getKnownElements(),
    // new EStructuralFeature[] {
    // MetricsPackage.Literals.MAPPING_RECORD__ROW,
    // MetricsPackage.Literals.MAPPING_RECORD__COLUMN,
    // MetricsPackage.Literals.MAPPING_RECORD__MESSAGE, });

    tblViewerRecords.setLabelProvider(new RecordsObservableMapLabelProvider());

    IEMFListProperty recordsProperty = EMFProperties
            .list(MetricsPackage.Literals.MAPPING_STATISTIC__FAILED_RECORDS);

    tblViewerRecords.setInput(recordsProperty.observeDetail(selectionObservable));

    return bindingContext;
}