blob: 7c5b40c5f47d4f09d0a303ea3e597e19138b907a [file] [log] [blame]
/*******************************************************************************
* 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);
}
}
}