/*******************************************************************************
* Copyright (c) 2014, 2015 Cisco 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
*
*******************************************************************************/
package com.cisco.yangide.editor.editors.text;
import org.eclipse.core.resources.IMarker;
import org.eclipse.jface.text.Position;
import org.eclipse.jface.text.source.IAnnotationPresentation;
import org.eclipse.jface.text.source.ImageUtilities;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.GC;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.graphics.Rectangle;
import org.eclipse.swt.widgets.Canvas;
import org.eclipse.ui.texteditor.MarkerAnnotation;
import com.cisco.yangide.ui.internal.IYangUIConstants;
import com.cisco.yangide.ui.internal.YangUIImages;
/**
* @author Konstantin Zaitsev
* @date Jul 10, 2014
*/
public class YangMarkerAnnotation extends MarkerAnnotation implements IAnnotationPresentation {
public static final String TYPE = "com.cisco.yangide.core.error";
public YangMarkerAnnotation(IMarker marker) {
super(marker);
}
public Position getPosition() {
IMarker marker = getMarker();
int startPos = marker.getAttribute(IMarker.CHAR_START, -1);
int endPos = marker.getAttribute(IMarker.CHAR_END, -1);
if (startPos != -1 && endPos != -1) {
return new Position(startPos, endPos - startPos);
}
return null;
}
@Override
public void paint(GC gc, Canvas canvas, Rectangle r) {
Image image = YangUIImages.getImage(isMarkedDeleted() ? IYangUIConstants.IMG_ERROR_MARKER_ALT
: IYangUIConstants.IMG_ERROR_MARKER);
ImageUtilities.drawImage(image, gc, canvas, r, SWT.CENTER, SWT.TOP);
}
}