blob: ba9f0e5f9a64a084d40889f4af5a220fe0ef1ff6 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2016 Red Hat 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:
* - Mickael Istria (Red Hat Inc.)
*******************************************************************************/
package org.eclipse.ui.internal.genericeditor;
import org.eclipse.jface.text.DefaultTextHover;
import org.eclipse.jface.text.IRegion;
import org.eclipse.jface.text.ITextHover;
import org.eclipse.jface.text.ITextViewer;
import org.eclipse.jface.text.source.Annotation;
import org.eclipse.jface.text.source.ISourceViewer;
import org.eclipse.ui.editors.text.EditorsUI;
import org.eclipse.ui.texteditor.AnnotationPreference;
/**
* Delegate to {@link DefaultTextHover}, since we need a parameter-less
* constructor.
*/
public class AnnotationHoverDelegate implements ITextHover {
private DefaultTextHover delegate;
private ISourceViewer viewer;
private DefaultTextHover getDelegate(ISourceViewer sourceViewer) {
if (this.delegate == null || this.viewer != sourceViewer) {
this.delegate = new DefaultTextHover(sourceViewer) {
@Override
protected boolean isIncluded(Annotation annotation) {
AnnotationPreference preference= EditorsUI.getAnnotationPreferenceLookup().getAnnotationPreference(annotation);
if (preference == null)
return false;
String key= preference.getTextPreferenceKey();
if (key != null) {
if (!EditorsUI.getPreferenceStore().getBoolean(key))
return false;
} else {
key= preference.getHighlightPreferenceKey();
if (key == null || !EditorsUI.getPreferenceStore().getBoolean(key))
return false;
}
return true;
}
};
this.viewer = sourceViewer;
}
return this.delegate;
}
@Deprecated
@Override
public String getHoverInfo(ITextViewer textViewer, IRegion hoverRegion) {
if (textViewer instanceof ISourceViewer) {
return getDelegate((ISourceViewer)textViewer).getHoverInfo(textViewer, hoverRegion);
}
return null;
}
@Override
public IRegion getHoverRegion(ITextViewer textViewer, int offset) {
if (textViewer instanceof ISourceViewer) {
return getDelegate((ISourceViewer)textViewer).getHoverRegion(textViewer, offset);
}
return null;
}
}