/** * This file is protected by Copyright. * Please refer to the COPYRIGHT file distributed with this source distribution. * * This file is part of REDHAWK IDE. * * 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. * */ package gov.redhawk.sca.internal.ui.properties; import gov.redhawk.model.sca.ScaAbstractProperty; import gov.redhawk.model.sca.ScaPackage; import gov.redhawk.model.sca.ScaStructProperty; import mil.jpeojtrs.sca.prf.AbstractProperty; import mil.jpeojtrs.sca.prf.PropertyValueType; import mil.jpeojtrs.sca.prf.Simple; import mil.jpeojtrs.sca.prf.SimpleSequence; import org.eclipse.jface.viewers.LabelProviderChangedEvent; import org.eclipse.swt.graphics.Color; import org.eclipse.swt.graphics.Font; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.graphics.Point; import org.eclipse.ui.views.properties.IPropertySourceProvider; import org.eclipse.ui.views.properties.PropertyColumnLabelProvider; /** * */ public class StructFieldPropertyColumnLabelProvider extends PropertyColumnLabelProvider { private final String elementId; public StructFieldPropertyColumnLabelProvider(final IPropertySourceProvider propertySourceProvider, final String simpleId, final boolean isSequence) { super(propertySourceProvider, (isSequence) ? ScaPackage.Literals.SCA_SIMPLE_SEQUENCE_PROPERTY__VALUES.getName() : ScaPackage.Literals.SCA_SIMPLE_PROPERTY__VALUE.getName()); this.elementId = simpleId; } public StructFieldPropertyColumnLabelProvider(final IPropertySourceProvider propertySourceProvider, final String simpleId) { this(propertySourceProvider, simpleId, false); } private ScaAbstractProperty<? extends AbstractProperty> getElement(final Object object) { if (object instanceof ScaStructProperty) { return ((ScaStructProperty) object).getField(elementId); } return null; } @Override public Color getBackground(final Object element) { return super.getBackground(getElement(element)); } @Override public Font getFont(final Object element) { return super.getFont(getElement(element)); } @Override public Color getForeground(final Object element) { return super.getForeground(getElement(element)); } @Override public Image getImage(final Object object) { return null; } @Override public String getText(final Object object) { final ScaAbstractProperty<?> simple = getElement(object); final String retVal = super.getText(simple); return retVal; } @Override public Color getToolTipBackgroundColor(final Object object) { return super.getToolTipBackgroundColor(getElement(object)); } @Override public int getToolTipDisplayDelayTime(final Object object) { return 100; } @Override public Font getToolTipFont(final Object object) { return super.getToolTipFont(getElement(object)); } @Override public Color getToolTipForegroundColor(final Object object) { return super.getToolTipForegroundColor(getElement(object)); } @Override public Image getToolTipImage(final Object object) { return super.getToolTipImage(getElement(object)); } @Override public Point getToolTipShift(final Object object) { return super.getToolTipShift(getElement(object)); } @Override public int getToolTipStyle(final Object object) { return super.getToolTipStyle(getElement(object)); } @Override public String getToolTipText(final Object element) { final ScaAbstractProperty<? extends AbstractProperty> simple = getElement(element); String retVal = simple.getDescription(); if (simple.getDefinition() == null) { return null; } PropertyValueType type; if (simple.getDefinition() instanceof Simple) { type = ((Simple) simple.getDefinition()).getType(); } else if (simple.getDefinition() instanceof SimpleSequence) { type = ((SimpleSequence) simple.getDefinition()).getType(); } else { return null; } if (retVal == null) { retVal = "< " + type.getLiteral() + " >"; } else { retVal = "< " + type.getLiteral() + " >\n" + retVal; } return retVal; } @Override public int getToolTipTimeDisplayed(final Object object) { return 5000; } @Override public boolean isLabelProperty(final Object element, final String property) { return super.isLabelProperty(getElement(element), property); } @Override public boolean useNativeToolTip(final Object object) { return super.useNativeToolTip(getElement(object)); } @Override protected void fireLabelProviderChanged(LabelProviderChangedEvent event) { Object element = event.getElement(); if (element instanceof ScaAbstractProperty) { event = new LabelProviderChangedEvent(this, ((ScaAbstractProperty<?>) element).eContainer()); } super.fireLabelProviderChanged(event); } }