/******************************************************************************* * Copyright (c) 2008 Red Hat, Inc. * Distributed under license by Red Hat, Inc. All rights reserved. * This program is 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: * Red Hat, Inc. - initial API and implementation ******************************************************************************/ package org.jboss.tools.smooks.configuration.editors; import org.eclipse.jface.window.DefaultToolTip; import org.eclipse.swt.SWT; import org.eclipse.swt.events.PaintEvent; import org.eclipse.swt.events.PaintListener; import org.eclipse.swt.graphics.Color; import org.eclipse.swt.graphics.GC; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.graphics.Point; import org.eclipse.swt.widgets.Canvas; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Event; import org.eclipse.ui.forms.FormColors; import org.eclipse.ui.forms.IFormColors; import org.jboss.tools.smooks.configuration.SmooksConfigurationActivator; /** * @author Dart (dpeng@redhat.com) * */ public class FieldMarkerComposite extends Canvas implements IFieldMarker, PaintListener { private Image errorImage = null; private Image waringImage = null; // private Image informationImage = null; private int type = TYPE_NONE; private DefaultToolTip toolTip = null; public FieldMarkerComposite(Composite parent, int style) { super(parent, style); this.setBackground(new Color(null,255,255,255)); errorImage = SmooksConfigurationActivator.getDefault().getImageRegistry() .get(GraphicsConstants.IMAGE_OVR_ERROR); waringImage = SmooksConfigurationActivator.getDefault().getImageRegistry().get( GraphicsConstants.IMAGE_OVR_WARING); this.addPaintListener(this); toolTip = new DefaultToolTip(this) { /* * (non-Javadoc) * * @see * org.eclipse.jface.window.DefaultToolTip#createToolTipContentArea * (org.eclipse.swt.widgets.Event, * org.eclipse.swt.widgets.Composite) */ @Override protected Composite createToolTipContentArea(Event event, Composite parent) { return super.createToolTipContentArea(event, parent); } public Point getLocation(Point tipSize, Event event) { Point point = super.getLocation(tipSize, event); point.y = ((Control) getToolTipArea(null)).toDisplay(0, 0).y - 24; point.x = ((Control) getToolTipArea(null)).toDisplay(0, 0).x; return point; } }; ((DefaultToolTip) toolTip).setBackgroundColor(new Color(null, 255, 255, 255)); FormColors colors = new FormColors(getDisplay()); ((DefaultToolTip) toolTip).setForegroundColor(colors.getColor(IFormColors.TITLE)); toolTip.setStyle(SWT.NONE); } /* * (non-Javadoc) * * @see * org.jboss.tools.smooks.configuration.editors.IFieldMarker#setMarkerType() */ public void setMarkerType(int type) { this.type = type; if (this.isDisposed()) return; this.redraw(); } public int getMarkerType() { return type; } /* * (non-Javadoc) * * @see * org.jboss.tools.smooks.configuration.editors.IFieldMarker#setMessage() */ public void setMessage(String message) { toolTip.setText(message); } public String getMessage() { return getToolTipText(); } public void clean() { setMarkerType(TYPE_NONE); if(isDisposed()) return; this.setToolTipText(null); this.redraw(); } public void paintControl(PaintEvent e) { GC gc = e.gc; gc.fillRectangle(getBounds()); if (type == IFieldMarker.TYPE_ERROR) { gc.drawImage(errorImage, 0, 0); } if (type == IFieldMarker.TYPE_WARINING) { gc.drawImage(waringImage, 0, 0); } } }