/**
* Copyright (c) 2013-2016 Angelo ZERR.
* 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:
* Angelo Zerr <angelo.zerr@gmail.com> - initial API and implementation
*/
package tern.eclipse.ide.ui.views;
import org.eclipse.jface.viewers.DelegatingStyledCellLabelProvider.IStyledLabelProvider;
import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.jface.viewers.StyledString;
import org.eclipse.swt.graphics.Image;
import tern.server.protocol.outline.IJSNode;
/**
* Label provider for tern outline.
*
*/
public abstract class AbstractTernOutlineLabelProvider extends LabelProvider implements IStyledLabelProvider {
@Override
public String getText(Object element) {
if (element == TernOutlineContentProvider.UNAVAILABLE_NODE) {
return getUnavailableText();
} else if (element == TernOutlineContentProvider.COMPUTING_NODE) {
return getComputingText();
} else if (element instanceof IJSNode) {
return getText((IJSNode) element);
}
return super.getText(element);
}
@Override
public Image getImage(Object element) {
if (element == TernOutlineContentProvider.UNAVAILABLE_NODE) {
return getUnavailableImage();
} else if (element == TernOutlineContentProvider.COMPUTING_NODE) {
return getComputingImage();
} else if (element instanceof IJSNode) {
return getImage((IJSNode) element);
}
return super.getImage(element);
}
@Override
public StyledString getStyledText(Object element) {
if (element == TernOutlineContentProvider.COMPUTING_NODE) {
return new StyledString(getComputingText());
}
if (element instanceof IJSNode) {
return getStyledText((IJSNode) element);
}
return new StyledString(getText(element));
}
protected abstract String getUnavailableText();
protected abstract Image getUnavailableImage();
protected abstract String getComputingText();
protected abstract Image getComputingImage();
protected abstract String getText(IJSNode element);
protected abstract Image getImage(IJSNode element);
protected abstract StyledString getStyledText(IJSNode element);
}