/******************************************************************************* * Copyright (c) 2013, 2014 Wind River Systems, Inc. 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: * Wind River Systems - initial API and implementation *******************************************************************************/ package org.eclipse.tcf.te.ui.notifications.delegates; import org.eclipse.core.runtime.Assert; import org.eclipse.jface.resource.JFaceResources; import org.eclipse.swt.graphics.Image; import org.eclipse.tcf.te.runtime.events.NotifyEvent; import org.eclipse.tcf.te.ui.notifications.activator.UIPlugin; import org.eclipse.tcf.te.ui.notifications.interfaces.IFormTextFactoryDelegate; import org.eclipse.ui.forms.IFormColors; import org.eclipse.ui.forms.widgets.FormText; import org.eclipse.ui.forms.widgets.FormToolkit; /** * Default notification form text factory delegate implementation. */ public class DefaultFormTextFactoryDelegate implements IFormTextFactoryDelegate { /* (non-Javadoc) * @see org.eclipse.tcf.te.ui.notifications.interfaces.IFormTextFactoryDelegate#populateFormText(org.eclipse.ui.forms.widgets.FormToolkit, org.eclipse.ui.forms.widgets.FormText, org.eclipse.tcf.te.runtime.events.NotifyEvent) */ @Override public void populateFormText(FormToolkit toolkit, FormText widget, NotifyEvent event) { Assert.isNotNull(toolkit); Assert.isNotNull(widget); Assert.isNotNull(event); // Get properties String titleText = event.getProperties().getStringProperty(NotifyEvent.PROP_TITLE_TEXT); String titleImageId = event.getProperties().getStringProperty(NotifyEvent.PROP_TITLE_IMAGE_ID); String description = event.getProperties().getStringProperty(NotifyEvent.PROP_DESCRIPTION_TEXT); // At least the title text and the description must be not null if (titleText != null && description != null) { StringBuilder buffer = new StringBuilder(); buffer.append("<form>"); //$NON-NLS-1$ // The title paragraph buffer.append("<p>"); //$NON-NLS-1$ // If the title image id is set, try to load the image if (titleImageId != null) { Image image = getImage(titleImageId); if (image != null) { buffer.append("<img href=\"titleImage\"/> "); //$NON-NLS-1$ widget.setImage("titleImage", image); //$NON-NLS-1$ } } // Set the title using the default header font buffer.append("<span color=\"header\" font=\"header\">"); //$NON-NLS-1$ buffer.append(titleText); buffer.append("</span>"); //$NON-NLS-1$ buffer.append("</p>"); //$NON-NLS-1$ // Add the description buffer.append("<p>"); //$NON-NLS-1$ buffer.append("<span font=\"text\">"); //$NON-NLS-1$ buffer.append(description); buffer.append("</span>"); //$NON-NLS-1$ buffer.append("</p>"); //$NON-NLS-1$ buffer.append("</form>"); //$NON-NLS-1$ // Set colors setFormTextColors(toolkit, widget); // Set fonts setFormTextFonts(toolkit, widget); // Set the form text to the widget widget.setText(buffer.toString(), true, false); } } /** * Set the colors used by the form. * * @param toolkit The form toolkit. Must not be <code>null</code>. * @param widget The form text widget. Must not be <code>null</code>. */ protected void setFormTextColors(FormToolkit toolkit, FormText widget) { Assert.isNotNull(toolkit); Assert.isNotNull(widget); widget.setColor("header", toolkit.getColors().getColor(IFormColors.TITLE)); //$NON-NLS-1$ } /** * Set the fonts used by the form. * * @param toolkit The form toolkit. Must not be <code>null</code>. * @param widget The form text widget. Must not be <code>null</code>. */ protected void setFormTextFonts(FormToolkit toolkit, FormText widget) { Assert.isNotNull(toolkit); Assert.isNotNull(widget); widget.setFont("header", JFaceResources.getFontRegistry().getBold(JFaceResources.DIALOG_FONT)); //$NON-NLS-1$ widget.setFont("text", JFaceResources.getTextFont()); //$NON-NLS-1$ } /** * Returns the image for the given image key. * * @param key The image key. Must not be <code>null</code>. * @return The image or <code>null</code>. */ protected Image getImage(String key) { return UIPlugin.getImage(key); } /* (non-Javadoc) * @see org.eclipse.tcf.te.ui.notifications.interfaces.IFormTextFactoryDelegate#getNotificationCloseDelay() */ @Override public long getNotificationCloseDelay() { return -1; } }