/*******************************************************************************
* 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.moao.ui.internal.bindingDecorators;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.EStructuralFeature;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.graphics.RGB;
import com.rcpcompany.uibindings.DecorationPosition;
import com.rcpcompany.uibindings.IUIBindingDecoratorExtender;
import com.rcpcompany.uibindings.IUIBindingDecoratorExtenderContext;
import com.rcpcompany.uibindings.IValueBinding;
import com.rcpcompany.uibindings.UIBindingsUtils;
import com.rcpcompany.uibindings.decorators.extenders.AbstractUIBindingDecoratorExtender;
import com.rcpcompany.uibindings.moao.IMOAO;
import com.rcpcompany.uibindings.moao.IMOAOFacet;
import com.rcpcompany.uibindings.moao.IMOAOMessage;
import com.rcpcompany.uibindings.moao.IMOAOPackage;
import com.rcpcompany.uibindings.moao.Severity;
/**
* {@link IUIBindingDecoratorExtender} that decorates all fields with comments with a small corner
* image.
*/
public class CommentDecoratorExtender extends AbstractUIBindingDecoratorExtender implements IUIBindingDecoratorExtender {
/**
* The image to use for fields.
*/
public final Image cornerImage = UIBindingsUtils.getCornerImage(DecorationPosition.TOP_RIGHT, new RGB(0, 0, 255));
@Override
public boolean isEnabled(IValueBinding binding) {
final EObject modelObject = binding.getModelObject();
if (!(modelObject instanceof IMOAO)) return false;
final IMOAO moao = (IMOAO) modelObject;
final EStructuralFeature sf = binding.getModelFeature();
if (sf == null) return false;
if (!moao.eIsSet(IMOAOPackage.Literals.MOAO__FACETS)) return false;
for (final IMOAOFacet f : moao.getFacets()) {
if (!(f instanceof IMOAOMessage)) {
continue;
}
final IMOAOMessage s = (IMOAOMessage) f;
if (s.getSeverity() == Severity.COMMENT && s.getFeature() == sf) return true;
}
return false;
}
@Override
public void extend(IUIBindingDecoratorExtenderContext context) {
context.setDecoratingImage(DecorationPosition.TOP_RIGHT, false, cornerImage, null);
}
}