blob: feec88daeb36b9d9a91a5e90812987234725f4b8 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2004, 2016 IBM Corporation 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:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.ui.internal.intro.impl.model.viewer;
import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.swt.graphics.Image;
import org.eclipse.ui.internal.intro.impl.model.AbstractIntroElement;
import org.eclipse.ui.internal.intro.impl.model.AbstractIntroIdElement;
import org.eclipse.ui.internal.intro.impl.model.AbstractIntroPage;
import org.eclipse.ui.internal.intro.impl.model.IntroAnchor;
import org.eclipse.ui.internal.intro.impl.model.IntroContentProvider;
import org.eclipse.ui.internal.intro.impl.model.IntroExtensionContent;
import org.eclipse.ui.internal.intro.impl.model.IntroGroup;
import org.eclipse.ui.internal.intro.impl.model.IntroHTML;
import org.eclipse.ui.internal.intro.impl.model.IntroImage;
import org.eclipse.ui.internal.intro.impl.model.IntroInclude;
import org.eclipse.ui.internal.intro.impl.model.IntroLink;
import org.eclipse.ui.internal.intro.impl.model.IntroModelRoot;
import org.eclipse.ui.internal.intro.impl.model.IntroPageTitle;
import org.eclipse.ui.internal.intro.impl.model.IntroPartPresentation;
import org.eclipse.ui.internal.intro.impl.model.IntroSeparator;
import org.eclipse.ui.internal.intro.impl.model.IntroText;
import org.eclipse.ui.internal.intro.impl.util.ImageUtil;
public class IntroModelLabelProvider extends LabelProvider {
// Images created in this ILabelProvider
static {
ImageUtil.registerImage(ImageUtil.INTRO_MODEL_CONTAINER,
"container_obj.gif"); //$NON-NLS-1$
ImageUtil.registerImage(ImageUtil.INTRO_MODEL_LEAF, "topic.gif"); //$NON-NLS-1$
}
public IntroModelLabelProvider() {
super();
}
@Override
public Image getImage(Object element) {
Image image = null;
AbstractIntroElement introElement = null;
if (element instanceof AbstractIntroElement)
// synch the resource first.
introElement = (AbstractIntroElement) element;
if (introElement == null)
return null;
int elementType = introElement.getType();
switch (elementType) {
case AbstractIntroElement.GROUP:
case AbstractIntroElement.PAGE:
case AbstractIntroElement.HOME_PAGE:
image = ImageUtil.getImage(ImageUtil.INTRO_MODEL_CONTAINER);
break;
default:
image = ImageUtil.getImage(ImageUtil.INTRO_MODEL_LEAF);
break;
}
return image;
}
@Override
public String getText(Object element) {
String label = null;
AbstractIntroElement introElement = null;
if (element instanceof AbstractIntroElement)
// synch the resource first.
introElement = (AbstractIntroElement) element;
if (introElement == null)
return null;
int elementType = introElement.getType();
switch (elementType) {
case AbstractIntroElement.GROUP:
label = "GROUP: " + ((IntroGroup) introElement).getId(); //$NON-NLS-1$
break;
case AbstractIntroElement.LINK:
label = "LINK: " + ((IntroLink) introElement).getLabel(); //$NON-NLS-1$
break;
case AbstractIntroElement.TEXT:
label = "TEXT: " + ((IntroText) introElement).getText(); //$NON-NLS-1$
break;
case AbstractIntroElement.IMAGE:
label = "IMAGE: " + ((IntroImage) introElement).getId(); //$NON-NLS-1$
break;
case AbstractIntroElement.HR:
label = "HR: " + ((IntroSeparator) introElement).getId(); //$NON-NLS-1$
break;
case AbstractIntroElement.HTML:
label = "HTML: " + ((IntroHTML) introElement).getId(); //$NON-NLS-1$
break;
case AbstractIntroElement.INCLUDE:
label = "Unresolved INCLUDE: " //$NON-NLS-1$
+ ((IntroInclude) introElement).getPath();
break;
case AbstractIntroElement.PAGE:
label = "PAGE: " + ((AbstractIntroPage) introElement).getId(); //$NON-NLS-1$
break;
case AbstractIntroElement.HOME_PAGE:
label = "HOME PAGE: " //$NON-NLS-1$
+ ((AbstractIntroPage) introElement).getId();
break;
case AbstractIntroElement.PRESENTATION:
label = "PRESENTATION: " //$NON-NLS-1$
+ ((IntroPartPresentation) introElement)
.getImplementationKind();
break;
case AbstractIntroElement.CONTENT_PROVIDER:
label = "CONTENT PROVIDER: " //$NON-NLS-1$
+ ((IntroContentProvider) introElement).getClassName();
break;
case AbstractIntroElement.CONTAINER_EXTENSION:
label = "Unresolved ConfigExtension: " //$NON-NLS-1$
+ ((IntroExtensionContent) introElement).getPath();
break;
case AbstractIntroElement.ANCHOR:
label = "ANCHOR: " //$NON-NLS-1$
+ getPath(introElement.getParent(), ((IntroAnchor) introElement).getId());
break;
case AbstractIntroElement.PAGE_TITLE:
label = "Title: " //$NON-NLS-1$
+ ((IntroPageTitle) introElement).getTitle();
break;
default:
label = super.getText(element);
break;
}
return label;
}
private String getPath(AbstractIntroElement introElement, String suffix) {
if (introElement == null || introElement instanceof IntroModelRoot) {
return suffix;
}
String newSuffix = suffix;
if (introElement instanceof AbstractIntroIdElement) {
newSuffix = ((AbstractIntroIdElement)introElement).getId() + '/' + suffix;
}
return getPath(introElement.getParent(), newSuffix);
}
}