Example usage for org.eclipse.jface.viewers ContentViewer setLabelProvider

List of usage examples for org.eclipse.jface.viewers ContentViewer setLabelProvider

Introduction

In this page you can find the example usage for org.eclipse.jface.viewers ContentViewer setLabelProvider.

Prototype

public void setLabelProvider(IBaseLabelProvider labelProvider) 

Source Link

Document

Sets the label provider for this viewer.

Usage

From source file:org.eclipse.e4.xwt.javabean.metadata.properties.InputBeanProperty.java

License:Open Source License

@Override
public void setValue(Object target, Object value) throws IllegalArgumentException, IllegalAccessException,
        InvocationTargetException, SecurityException, NoSuchFieldException {
    if (value == null) {
        return;/*  w  w w. ja  v  a2  s  .c  o  m*/
    }

    if (value instanceof Class<?>) {
        Class<?> type = (Class<?>) value;
        if (type.isEnum()) {
            value = new WritableList(XWT.getRealm(), Arrays.asList(type.getEnumConstants()), type);
        }
    }

    Class<?> elementType = getElementType();
    if (value.getClass().isArray()) {
        elementType = value.getClass().getComponentType();
    }
    if (value instanceof IObservableList) {
        IObservableList list = (IObservableList) value;
        Object listElementType = list.getElementType();
        if (listElementType instanceof Class<?>) {
            elementType = (Class<?>) listElementType;
        }
    } else if (elementType == Object.class && value instanceof Collection<?>) {
        Collection<?> collection = (Collection<?>) value;
        for (Iterator<?> iterator = collection.iterator(); iterator.hasNext();) {
            Object object = (Object) iterator.next();
            if (object != null) {
                elementType = object.getClass();
                break;
            }
        }
    }

    if (target instanceof ContentViewer) {
        ContentViewer viewer = (ContentViewer) target;

        String[] propertyNames = JFacesHelper.getViewerProperties(viewer);
        if (target instanceof AbstractTreeViewer) {
            IContentProvider contentProvider = (IContentProvider) viewer.getContentProvider();
            if (contentProvider instanceof ObservableTreeContentProvider) {
                ObservableTreeContentProvider xwtContentProvider = (ObservableTreeContentProvider) contentProvider;
                xwtContentProvider.updateContext(viewer, value);
            }
            if (contentProvider instanceof ObservableTreeContentProvider) {
                ObservableTreeContentProvider listContentProvider = (ObservableTreeContentProvider) contentProvider;
                viewer.setLabelProvider(new ObservableMapLabelProvider(viewer,
                        listContentProvider.getKnownElements(), propertyNames));
            }
        } else {
            IContentProvider contentProvider = viewer.getContentProvider();
            if (value instanceof List<?> || value.getClass().isArray()) {
                if (contentProvider == null) {
                    contentProvider = new ObservableListContentProvider();
                    viewer.setContentProvider(contentProvider);
                }
                if (propertyNames != null && propertyNames.length > 0 && hasDefaultLabelProvider(viewer)
                        && contentProvider instanceof ObservableListContentProvider) {
                    ObservableListContentProvider listContentProvider = (ObservableListContentProvider) contentProvider;
                    viewer.setLabelProvider(new ObservableMapLabelProvider(viewer,
                            listContentProvider.getKnownElements(), propertyNames));
                }
            } else if (value instanceof Set<?>) {
                if (contentProvider == null) {
                    contentProvider = new ObservableSetContentProvider();
                    viewer.setContentProvider(contentProvider);
                }
                if (propertyNames != null && propertyNames.length > 0 && hasDefaultLabelProvider(viewer)
                        && contentProvider instanceof ObservableSetContentProvider) {
                    ObservableSetContentProvider setContentProvider = (ObservableSetContentProvider) contentProvider;
                    viewer.setLabelProvider(new ObservableMapLabelProvider(viewer,
                            setContentProvider.getKnownElements(), propertyNames));
                }
            }
        }
    }
    if (value instanceof CollectionViewSource) {
        value = ((CollectionViewSource) value).getView();
    } else if ((value instanceof Collection<?>) && !(value instanceof IObservableCollection)) {
        value = ObjectUtil.resolveValue(value, IObservableCollection.class, value);
    }
    super.setValue(target, value);
}