/******************************************************************************* | |
* Copyright (c) 2007, 2012 Intel Corporation. | |
* All rights reserved. This program and the accompanying materials | |
* are made available under the terms of the Eclipse Public License 2.0 | |
* which accompanies this distribution, and is available at | |
* https://www.eclipse.org/legal/epl-2.0/ | |
* | |
* SPDX-License-Identifier: EPL-2.0 | |
* | |
* Contributors: | |
* Oleg Danilov, Intel - Initial API and Implementation | |
* | |
*******************************************************************************/ | |
package org.eclipse.bpel.ui.hovers; | |
import org.eclipse.bpel.ui.IHoverHelper; | |
import org.eclipse.bpel.ui.adapters.IAnnotatedElement; | |
import org.eclipse.bpel.ui.adapters.ILabeledElement; | |
import org.eclipse.core.resources.IMarker; | |
import org.eclipse.draw2d.Figure; | |
import org.eclipse.draw2d.GridLayout; | |
import org.eclipse.draw2d.IFigure; | |
import org.eclipse.draw2d.Label; | |
import org.eclipse.draw2d.PositionConstants; | |
import org.eclipse.emf.common.notify.Adapter; | |
import org.eclipse.emf.ecore.EObject; | |
import org.eclipse.swt.SWT; | |
import org.eclipse.swt.graphics.Font; | |
import org.eclipse.swt.graphics.FontData; | |
public class DefaultHoverHelper implements IHoverHelper { | |
public IFigure getHoverFigure(EObject modelObject) { | |
ILabeledElement e = getLabeledElement(modelObject); | |
if (e == null) { | |
return null; | |
} | |
String name = e.getLabel(modelObject); | |
String type = e.getTypeLabel(modelObject); | |
Figure panel = new Figure(); | |
panel.setLayoutManager(new GridLayout(2, false)); | |
Label title = new BoldLabel(); | |
title.setIcon(e.getSmallImage(modelObject)); | |
title.setIconAlignment(PositionConstants.TOP); | |
title.setText(type); | |
panel.add(title); | |
Label label = new Label(); | |
if(!name.equals(type)) { | |
label.setText(name); | |
} | |
panel.add(label); | |
if (e instanceof IAnnotatedElement) { | |
String annotation[] = ((IAnnotatedElement)e).getAnnotation(modelObject); | |
if (annotation != null) { | |
for (int i = 0; i < annotation.length; i += 2) { | |
if (annotation[i+1] != null && annotation[i+1].length() > 0) { | |
panel.add(new Label(annotation[i] + " :")); | |
panel.add(new Label(annotation[i+1])); | |
} | |
} | |
} | |
} | |
return panel; | |
} | |
public String getHoverHelp(IMarker marker) { | |
return null; | |
// return BPELUtil.getObjectFromMarker(marker, ref) marker.toString(); | |
} | |
protected ILabeledElement getLabeledElement(EObject modelObject) { | |
if (modelObject == null) { | |
return null; | |
} | |
for (Adapter adapter : modelObject.eAdapters()) { | |
if (adapter instanceof ILabeledElement) { | |
return (ILabeledElement)adapter; | |
} | |
} | |
return null; | |
} | |
private static class BoldLabel extends Label { | |
@Override | |
public void addNotify() { | |
super.addNotify(); | |
Font font = getFont(); | |
if (font == null) { | |
return; | |
} | |
FontData[] fontData = font.getFontData(); | |
for (FontData fd : fontData) { | |
fd.setStyle(fd.getStyle() | SWT.BOLD); | |
} | |
Font bold = new Font(font.getDevice(), fontData); | |
setFont(bold); | |
} | |
} | |
} |