/**
* {@inheritDoc}
*/
public Font getFont( Object element )
{
IAttribute attribute = null;
IValue value = null;
if ( element instanceof IAttribute )
{
attribute = ( IAttribute ) element;
}
else if ( element instanceof IValue )
{
value = ( IValue ) element;
attribute = value.getAttribute();
}
// inconsistent attributes and values
if ( value != null )
{
if ( value.isEmpty() )
{
FontData[] fontData = Display.getDefault().getSystemFont().getFontData();
FontData fontDataBoldItalic = new FontData( fontData[0].getName(), fontData[0].getHeight(), SWT.BOLD
| SWT.ITALIC );
return BrowserCommonActivator.getDefault().getFont( new FontData[]
{ fontDataBoldItalic } );
}
}
if ( attribute != null && value == null )
{
if ( !attribute.isConsistent() )
{
FontData[] fontData = Display.getDefault().getSystemFont().getFontData();
FontData fontDataBoldItalic = new FontData( fontData[0].getName(), fontData[0].getHeight(), SWT.BOLD
| SWT.ITALIC );
return BrowserCommonActivator.getDefault().getFont( new FontData[]
{ fontDataBoldItalic } );
}
}
// attribute type
if ( attribute != null )
{
if ( attribute.isObjectClassAttribute() )
{
FontData[] fontData = PreferenceConverter.getFontDataArray( BrowserCommonActivator.getDefault()
.getPreferenceStore(), BrowserCommonConstants.PREFERENCE_OBJECTCLASS_FONT );
return BrowserCommonActivator.getDefault().getFont( fontData );
}
else if ( attribute.isMustAttribute() )
{
FontData[] fontData = PreferenceConverter.getFontDataArray( BrowserCommonActivator.getDefault()
.getPreferenceStore(), BrowserCommonConstants.PREFERENCE_MUSTATTRIBUTE_FONT );
return BrowserCommonActivator.getDefault().getFont( fontData );
}
else if ( attribute.isOperationalAttribute() )
{
FontData[] fontData = PreferenceConverter.getFontDataArray( BrowserCommonActivator.getDefault()
.getPreferenceStore(), BrowserCommonConstants.PREFERENCE_OPERATIONALATTRIBUTE_FONT );
return BrowserCommonActivator.getDefault().getFont( fontData );
}