Search in sources :

Example 1 with AbstractViewerInputBindingInfo

use of org.eclipse.wb.internal.rcp.databinding.model.widgets.input.AbstractViewerInputBindingInfo in project windowbuilder by eclipse.

the class DatabindingsProvider method createObservable.

public ObservableInfo createObservable(IObservableFactory factory, BindableInfo bindable, BindableInfo property, Type type) throws Exception {
    boolean version_1_3 = Activator.getStore().getBoolean(IPreferenceConstants.GENERATE_CODE_FOR_VERSION_1_3);
    ObservableInfo newObservable = factory.createObservable(bindable, property, type, version_1_3);
    // 
    for (IBindingInfo ibinding : getBindings()) {
        if (ibinding instanceof BindingInfo) {
            BindingInfo binding = (BindingInfo) ibinding;
            // check target
            ObservableInfo targetObservable = binding.getTargetObservable();
            if (targetObservable.canShared() && binding.getTarget() == bindable && binding.getTargetProperty() == property && targetObservable.getClass() == newObservable.getClass()) {
                return targetObservable;
            }
            // check model
            ObservableInfo modelObservable = binding.getModelObservable();
            if (modelObservable.canShared() && binding.getModel() == bindable && binding.getModelProperty() == property && modelObservable.getClass() == newObservable.getClass()) {
                return modelObservable;
            }
        } else {
            AbstractViewerInputBindingInfo binding = (AbstractViewerInputBindingInfo) ibinding;
            // check viewer input
            ObservableInfo inputObservable = binding.getInputObservable();
            if (inputObservable.canShared() && binding.getModel() == bindable && binding.getModelProperty() == property && inputObservable.getClass() == newObservable.getClass()) {
                return inputObservable;
            }
        }
    }
    return newObservable;
}
Also used : AbstractViewerInputBindingInfo(org.eclipse.wb.internal.rcp.databinding.model.widgets.input.AbstractViewerInputBindingInfo) ObservableInfo(org.eclipse.wb.internal.rcp.databinding.model.ObservableInfo) IBindingInfo(org.eclipse.wb.internal.core.databinding.model.IBindingInfo) BindingInfo(org.eclipse.wb.internal.rcp.databinding.model.context.BindingInfo) ListBindingInfo(org.eclipse.wb.internal.rcp.databinding.model.context.ListBindingInfo) AbstractViewerInputBindingInfo(org.eclipse.wb.internal.rcp.databinding.model.widgets.input.AbstractViewerInputBindingInfo) SetBindingInfo(org.eclipse.wb.internal.rcp.databinding.model.context.SetBindingInfo) ValueBindingInfo(org.eclipse.wb.internal.rcp.databinding.model.context.ValueBindingInfo) IBindingInfo(org.eclipse.wb.internal.core.databinding.model.IBindingInfo) AbstractBindingInfo(org.eclipse.wb.internal.rcp.databinding.model.AbstractBindingInfo)

Example 2 with AbstractViewerInputBindingInfo

use of org.eclipse.wb.internal.rcp.databinding.model.widgets.input.AbstractViewerInputBindingInfo in project windowbuilder by eclipse.

the class GlobalObservableFactory method createDetailObservable.

// //////////////////////////////////////////////////////////////////////////
// 
// IGlobalObservableFactory: Observable
// 
// //////////////////////////////////////////////////////////////////////////
@Override
public ObservableInfo createDetailObservable(SingleSelectionObservableInfo masterObservable, BindableInfo object, Type type) throws Exception {
    if (masterObservable.isViewer()) {
        // prepare input
        ObservableInfo inputObservable = null;
        BindableInfo property = object.resolvePropertyReference("setInput");
        for (AbstractBindingInfo binding : object.getBindings()) {
            if (binding.getTargetProperty() == property) {
                AbstractViewerInputBindingInfo viewerBinding = (AbstractViewerInputBindingInfo) binding;
                inputObservable = viewerBinding.getInputObservable();
                break;
            }
        }
        // create detail observable
        if (inputObservable instanceof ListEmfObservableInfo) {
            PropertiesSupport propertiesSupport = getPropertiesSupport(inputObservable);
            boolean version_2_5 = propertiesSupport.isEMFProperties();
            ObservableInfo observable = null;
            // 
            if (type == Type.OnlyValue) {
                observable = new DetailValueEmfObservableInfo(masterObservable, propertiesSupport);
                // 
                if (version_2_5) {
                    observable.setCodeSupport(new EmfValuePropertyDetailCodeSupport());
                } else {
                    observable.setCodeSupport(new EmfObservableDetailValueCodeSupport());
                }
            } else if (type == Type.OnlyList) {
                observable = new DetailListEmfObservableInfo(masterObservable, propertiesSupport);
                // 
                if (version_2_5) {
                    observable.setCodeSupport(new EmfListPropertyDetailCodeSupport());
                } else {
                    observable.setCodeSupport(new EmfObservableDetailListCodeSupport());
                }
            }
            return observable;
        }
    }
    return null;
}
Also used : AbstractBindingInfo(org.eclipse.wb.internal.rcp.databinding.model.AbstractBindingInfo) MapsEmfObservableInfo(org.eclipse.wb.internal.rcp.databinding.emf.model.observables.MapsEmfObservableInfo) DetailValueEmfObservableInfo(org.eclipse.wb.internal.rcp.databinding.emf.model.observables.DetailValueEmfObservableInfo) SingleSelectionObservableInfo(org.eclipse.wb.internal.rcp.databinding.model.widgets.observables.SingleSelectionObservableInfo) ObservableInfo(org.eclipse.wb.internal.rcp.databinding.model.ObservableInfo) ListEmfObservableInfo(org.eclipse.wb.internal.rcp.databinding.emf.model.observables.ListEmfObservableInfo) DetailListEmfObservableInfo(org.eclipse.wb.internal.rcp.databinding.emf.model.observables.DetailListEmfObservableInfo) KnownElementsObservableInfo(org.eclipse.wb.internal.rcp.databinding.model.widgets.input.KnownElementsObservableInfo) DetailEmfObservableInfo(org.eclipse.wb.internal.rcp.databinding.emf.model.observables.DetailEmfObservableInfo) MapsBeanObservableInfo(org.eclipse.wb.internal.rcp.databinding.model.beans.observables.MapsBeanObservableInfo) EmfListPropertyDetailCodeSupport(org.eclipse.wb.internal.rcp.databinding.emf.model.observables.properties.EmfListPropertyDetailCodeSupport) ListEmfObservableInfo(org.eclipse.wb.internal.rcp.databinding.emf.model.observables.ListEmfObservableInfo) DetailListEmfObservableInfo(org.eclipse.wb.internal.rcp.databinding.emf.model.observables.DetailListEmfObservableInfo) PropertiesSupport(org.eclipse.wb.internal.rcp.databinding.emf.model.bindables.PropertiesSupport) EmfObservableDetailListCodeSupport(org.eclipse.wb.internal.rcp.databinding.emf.model.observables.EmfObservableDetailListCodeSupport) AbstractViewerInputBindingInfo(org.eclipse.wb.internal.rcp.databinding.model.widgets.input.AbstractViewerInputBindingInfo) EPropertyBindableInfo(org.eclipse.wb.internal.rcp.databinding.emf.model.bindables.EPropertyBindableInfo) BindableInfo(org.eclipse.wb.internal.rcp.databinding.model.BindableInfo) EObjectBindableInfo(org.eclipse.wb.internal.rcp.databinding.emf.model.bindables.EObjectBindableInfo) DetailListEmfObservableInfo(org.eclipse.wb.internal.rcp.databinding.emf.model.observables.DetailListEmfObservableInfo) EmfValuePropertyDetailCodeSupport(org.eclipse.wb.internal.rcp.databinding.emf.model.observables.properties.EmfValuePropertyDetailCodeSupport) EmfObservableDetailValueCodeSupport(org.eclipse.wb.internal.rcp.databinding.emf.model.observables.EmfObservableDetailValueCodeSupport) DetailValueEmfObservableInfo(org.eclipse.wb.internal.rcp.databinding.emf.model.observables.DetailValueEmfObservableInfo)

Aggregations

AbstractBindingInfo (org.eclipse.wb.internal.rcp.databinding.model.AbstractBindingInfo)2 ObservableInfo (org.eclipse.wb.internal.rcp.databinding.model.ObservableInfo)2 AbstractViewerInputBindingInfo (org.eclipse.wb.internal.rcp.databinding.model.widgets.input.AbstractViewerInputBindingInfo)2 IBindingInfo (org.eclipse.wb.internal.core.databinding.model.IBindingInfo)1 EObjectBindableInfo (org.eclipse.wb.internal.rcp.databinding.emf.model.bindables.EObjectBindableInfo)1 EPropertyBindableInfo (org.eclipse.wb.internal.rcp.databinding.emf.model.bindables.EPropertyBindableInfo)1 PropertiesSupport (org.eclipse.wb.internal.rcp.databinding.emf.model.bindables.PropertiesSupport)1 DetailEmfObservableInfo (org.eclipse.wb.internal.rcp.databinding.emf.model.observables.DetailEmfObservableInfo)1 DetailListEmfObservableInfo (org.eclipse.wb.internal.rcp.databinding.emf.model.observables.DetailListEmfObservableInfo)1 DetailValueEmfObservableInfo (org.eclipse.wb.internal.rcp.databinding.emf.model.observables.DetailValueEmfObservableInfo)1 EmfObservableDetailListCodeSupport (org.eclipse.wb.internal.rcp.databinding.emf.model.observables.EmfObservableDetailListCodeSupport)1 EmfObservableDetailValueCodeSupport (org.eclipse.wb.internal.rcp.databinding.emf.model.observables.EmfObservableDetailValueCodeSupport)1 ListEmfObservableInfo (org.eclipse.wb.internal.rcp.databinding.emf.model.observables.ListEmfObservableInfo)1 MapsEmfObservableInfo (org.eclipse.wb.internal.rcp.databinding.emf.model.observables.MapsEmfObservableInfo)1 EmfListPropertyDetailCodeSupport (org.eclipse.wb.internal.rcp.databinding.emf.model.observables.properties.EmfListPropertyDetailCodeSupport)1 EmfValuePropertyDetailCodeSupport (org.eclipse.wb.internal.rcp.databinding.emf.model.observables.properties.EmfValuePropertyDetailCodeSupport)1 BindableInfo (org.eclipse.wb.internal.rcp.databinding.model.BindableInfo)1 MapsBeanObservableInfo (org.eclipse.wb.internal.rcp.databinding.model.beans.observables.MapsBeanObservableInfo)1 BindingInfo (org.eclipse.wb.internal.rcp.databinding.model.context.BindingInfo)1 ListBindingInfo (org.eclipse.wb.internal.rcp.databinding.model.context.ListBindingInfo)1