com.rcpcompany.uibindings.navigator.internal.EditorInformationImpl.java Source code

Java tutorial

Introduction

Here is the source code for com.rcpcompany.uibindings.navigator.internal.EditorInformationImpl.java

Source

/*******************************************************************************
 * Copyright (c) 2006-2013 The RCP Company and others.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 *     The RCP Company - initial API and implementation
 *******************************************************************************/
package com.rcpcompany.uibindings.navigator.internal;

import java.util.ArrayList;
import java.util.Collection;
import java.util.List;

import org.eclipse.core.expressions.EvaluationResult;
import org.eclipse.core.expressions.Expression;
import org.eclipse.core.expressions.IEvaluationContext;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.emf.common.notify.Notification;
import org.eclipse.emf.common.util.EList;
import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.impl.ENotificationImpl;
import org.eclipse.emf.ecore.impl.EObjectImpl;
import org.eclipse.emf.ecore.util.EObjectEList;
import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.services.IEvaluationService;

import com.rcpcompany.uibindings.navigator.IEditorInformation;
import com.rcpcompany.uibindings.navigator.IEditorPartDescriptor;
import com.rcpcompany.uibindings.navigator.INavigatorModelPackage;
import com.rcpcompany.utils.logging.LogUtils;

/**
 * <!-- begin-user-doc --> An implementation of the model object '<em><b>Editior Model Type</b></em>
 * '. <!-- end-user-doc -->
 * <p>
 * The following features are implemented:
 * <ul>
 * <li>{@link com.rcpcompany.uibindings.navigator.internal.EditorInformationImpl#getEditors <em>
 * Editors</em>}</li>
 * <li>{@link com.rcpcompany.uibindings.navigator.internal.EditorInformationImpl#getPreferredEditor
 * <em>Preferred Editor</em>}</li>
 * <li>{@link com.rcpcompany.uibindings.navigator.internal.EditorInformationImpl#getModelType <em>
 * Model Type</em>}</li>
 * <li>{@link com.rcpcompany.uibindings.navigator.internal.EditorInformationImpl#getTreeItemID <em>
 * Tree Item ID</em>}</li>
 * </ul>
 * </p>
 * 
 * @generated
 */
public class EditorInformationImpl extends EObjectImpl implements IEditorInformation {
    /**
     * The cached value of the '{@link #getEditors() <em>Editors</em>}' reference list. <!--
     * begin-user-doc --> <!-- end-user-doc -->
     * 
     * @see #getEditors()
     * @generated
     * @ordered
     */
    protected EList<IEditorPartDescriptor> editors;

    /**
     * The cached value of the '{@link #getPreferredEditor() <em>Preferred Editor</em>}' reference.
     * <!-- begin-user-doc --> <!-- end-user-doc -->
     * 
     * @see #getPreferredEditor()
     * @generated
     * @ordered
     */
    protected IEditorPartDescriptor preferredEditor;

    /**
     * The default value of the '{@link #getModelType() <em>Model Type</em>}' attribute. <!--
     * begin-user-doc --> <!-- end-user-doc -->
     * 
     * @see #getModelType()
     * @generated
     * @ordered
     */
    protected static final String MODEL_TYPE_EDEFAULT = null;

    /**
     * The cached value of the '{@link #getModelType() <em>Model Type</em>}' attribute. <!--
     * begin-user-doc --> <!-- end-user-doc -->
     * 
     * @see #getModelType()
     * @generated
     * @ordered
     */
    protected String modelType = MODEL_TYPE_EDEFAULT;

    /**
     * The default value of the '{@link #getTreeItemID() <em>Tree Item ID</em>}' attribute. <!--
     * begin-user-doc --> <!-- end-user-doc -->
     * 
     * @see #getTreeItemID()
     * @generated
     * @ordered
     */
    protected static final String TREE_ITEM_ID_EDEFAULT = null;

    /**
     * The cached value of the '{@link #getTreeItemID() <em>Tree Item ID</em>}' attribute. <!--
     * begin-user-doc --> <!-- end-user-doc -->
     * 
     * @see #getTreeItemID()
     * @generated
     * @ordered
     */
    protected String treeItemID = TREE_ITEM_ID_EDEFAULT;

    /**
     * <!-- begin-user-doc --> <!-- end-user-doc -->
     * 
     * @generated
     */
    protected EditorInformationImpl() {
        super();
    }

    /**
     * <!-- begin-user-doc --> <!-- end-user-doc -->
     * 
     * @generated
     */
    @Override
    protected EClass eStaticClass() {
        return INavigatorModelPackage.Literals.EDITOR_INFORMATION;
    }

    /**
     * <!-- begin-user-doc --> <!-- end-user-doc -->
     * 
     * @generated
     */
    @Override
    public EList<IEditorPartDescriptor> getEditors() {
        if (editors == null) {
            editors = new EObjectEList<IEditorPartDescriptor>(IEditorPartDescriptor.class, this,
                    INavigatorModelPackage.EDITOR_INFORMATION__EDITORS);
        }
        return editors;
    }

    @Override
    public List<IEditorPartDescriptor> getEnabledEditors() {
        final List<IEditorPartDescriptor> l = new ArrayList<IEditorPartDescriptor>();

        final IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
        final IEvaluationService service = (IEvaluationService) window.getService(IEvaluationService.class);

        final IEvaluationContext context = service.getCurrentState();

        for (final IEditorPartDescriptor d : getEditors()) {
            final Expression e = d.getEnabledWhenExpression();
            try {
                if (e == null || e.evaluate(context) == EvaluationResult.TRUE) {
                    l.add(d);
                    continue;
                }
            } catch (final CoreException ex) {
                LogUtils.error(this, ex);
            }
        }

        return l;
    }

    /**
     * <!-- begin-user-doc --> <!-- end-user-doc -->
     * 
     * @generated
     */
    @Override
    public IEditorPartDescriptor getPreferredEditor() {
        return preferredEditor;
    }

    /**
     * <!-- begin-user-doc --> <!-- end-user-doc -->
     * 
     * @generated NOT
     */
    @Override
    public void setPreferredEditor(IEditorPartDescriptor newPreferredEditor) {
        if (newPreferredEditor == null && getEditors().size() > 0) {
            newPreferredEditor = getEditors().get(0);
        }
        setPreferredEditorGen(newPreferredEditor);

        final IPreferenceStore ps = Activator.getDefault().getPreferenceStore();
        String key = getModelType();
        if (key == null) {
            key = getTreeItemID();
        }
        ps.setValue(key, getPreferredEditor().getId());
    }

    /**
     * <!-- begin-user-doc --> <!-- end-user-doc -->
     * 
     * @generated
     */
    public void setPreferredEditorGen(IEditorPartDescriptor newPreferredEditor) {
        final IEditorPartDescriptor oldPreferredEditor = preferredEditor;
        preferredEditor = newPreferredEditor;
        if (eNotificationRequired()) {
            eNotify(new ENotificationImpl(this, Notification.SET,
                    INavigatorModelPackage.EDITOR_INFORMATION__PREFERRED_EDITOR, oldPreferredEditor,
                    preferredEditor));
        }
    }

    /**
     * <!-- begin-user-doc --> <!-- end-user-doc -->
     * 
     * @generated
     */
    @Override
    public String getModelType() {
        return modelType;
    }

    /**
     * <!-- begin-user-doc --> <!-- end-user-doc -->
     * 
     * @generated
     */
    @Override
    public void setModelType(String newModelType) {
        final String oldModelType = modelType;
        modelType = newModelType;
        if (eNotificationRequired()) {
            eNotify(new ENotificationImpl(this, Notification.SET,
                    INavigatorModelPackage.EDITOR_INFORMATION__MODEL_TYPE, oldModelType, modelType));
        }
    }

    /**
     * <!-- begin-user-doc --> <!-- end-user-doc -->
     * 
     * @generated
     */
    @Override
    public String getTreeItemID() {
        return treeItemID;
    }

    /**
     * <!-- begin-user-doc --> <!-- end-user-doc -->
     * 
     * @generated
     */
    @Override
    public void setTreeItemID(String newTreeItemID) {
        final String oldTreeItemID = treeItemID;
        treeItemID = newTreeItemID;
        if (eNotificationRequired()) {
            eNotify(new ENotificationImpl(this, Notification.SET,
                    INavigatorModelPackage.EDITOR_INFORMATION__TREE_ITEM_ID, oldTreeItemID, treeItemID));
        }
    }

    /**
     * <!-- begin-user-doc --> <!-- end-user-doc -->
     * 
     * @generated
     */
    @Override
    public Object eGet(int featureID, boolean resolve, boolean coreType) {
        switch (featureID) {
        case INavigatorModelPackage.EDITOR_INFORMATION__EDITORS:
            return getEditors();
        case INavigatorModelPackage.EDITOR_INFORMATION__PREFERRED_EDITOR:
            return getPreferredEditor();
        case INavigatorModelPackage.EDITOR_INFORMATION__MODEL_TYPE:
            return getModelType();
        case INavigatorModelPackage.EDITOR_INFORMATION__TREE_ITEM_ID:
            return getTreeItemID();
        }
        return super.eGet(featureID, resolve, coreType);
    }

    /**
     * <!-- begin-user-doc --> <!-- end-user-doc -->
     * 
     * @generated
     */
    @SuppressWarnings("unchecked")
    @Override
    public void eSet(int featureID, Object newValue) {
        switch (featureID) {
        case INavigatorModelPackage.EDITOR_INFORMATION__EDITORS:
            getEditors().clear();
            getEditors().addAll((Collection<? extends IEditorPartDescriptor>) newValue);
            return;
        case INavigatorModelPackage.EDITOR_INFORMATION__PREFERRED_EDITOR:
            setPreferredEditor((IEditorPartDescriptor) newValue);
            return;
        case INavigatorModelPackage.EDITOR_INFORMATION__MODEL_TYPE:
            setModelType((String) newValue);
            return;
        case INavigatorModelPackage.EDITOR_INFORMATION__TREE_ITEM_ID:
            setTreeItemID((String) newValue);
            return;
        }
        super.eSet(featureID, newValue);
    }

    /**
     * <!-- begin-user-doc --> <!-- end-user-doc -->
     * 
     * @generated
     */
    @Override
    public void eUnset(int featureID) {
        switch (featureID) {
        case INavigatorModelPackage.EDITOR_INFORMATION__EDITORS:
            getEditors().clear();
            return;
        case INavigatorModelPackage.EDITOR_INFORMATION__PREFERRED_EDITOR:
            setPreferredEditor((IEditorPartDescriptor) null);
            return;
        case INavigatorModelPackage.EDITOR_INFORMATION__MODEL_TYPE:
            setModelType(MODEL_TYPE_EDEFAULT);
            return;
        case INavigatorModelPackage.EDITOR_INFORMATION__TREE_ITEM_ID:
            setTreeItemID(TREE_ITEM_ID_EDEFAULT);
            return;
        }
        super.eUnset(featureID);
    }

    /**
     * <!-- begin-user-doc --> <!-- end-user-doc -->
     * 
     * @generated
     */
    @Override
    public boolean eIsSet(int featureID) {
        switch (featureID) {
        case INavigatorModelPackage.EDITOR_INFORMATION__EDITORS:
            return editors != null && !editors.isEmpty();
        case INavigatorModelPackage.EDITOR_INFORMATION__PREFERRED_EDITOR:
            return preferredEditor != null;
        case INavigatorModelPackage.EDITOR_INFORMATION__MODEL_TYPE:
            return MODEL_TYPE_EDEFAULT == null ? modelType != null : !MODEL_TYPE_EDEFAULT.equals(modelType);
        case INavigatorModelPackage.EDITOR_INFORMATION__TREE_ITEM_ID:
            return TREE_ITEM_ID_EDEFAULT == null ? treeItemID != null : !TREE_ITEM_ID_EDEFAULT.equals(treeItemID);
        }
        return super.eIsSet(featureID);
    }

    /**
     * <!-- begin-user-doc --> <!-- end-user-doc -->
     * 
     * @generated
     */
    @Override
    public String toString() {
        if (eIsProxy())
            return super.toString();

        final StringBuffer result = new StringBuffer(super.toString());
        result.append(" (modelType: ");
        result.append(modelType);
        result.append(", treeItemID: ");
        result.append(treeItemID);
        result.append(')');
        return result.toString();
    }

} // EditiorModelTypeImpl