blob: 3bf97f8b941ac5befa8e82981a35a3f94b94dc98 [file] [log] [blame]
/*
* Copyright (c) 2014 Eike Stepper (Berlin, Germany) 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:
* Eike Stepper - initial API and implementation
*/
package org.eclipse.oomph.launches;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.runtime.IPath;
import org.eclipse.debug.core.ILaunchConfiguration;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.jface.resource.JFaceResources;
import org.eclipse.jface.resource.LocalResourceManager;
import org.eclipse.jface.resource.ResourceManager;
import org.eclipse.jface.viewers.BaseLabelProvider;
import org.eclipse.jface.viewers.DecorationOverlayIcon;
import org.eclipse.jface.viewers.IDecoration;
import org.eclipse.jface.viewers.ILabelDecorator;
import org.eclipse.swt.graphics.Image;
/**
* @author Eike Stepper
*/
public class LaunchConfigLabelDecorator extends BaseLabelProvider implements ILabelDecorator // , IColorDecorator
{
// private static final Color RED = Display.getDefault().getSystemColor(SWT.COLOR_RED);
//
// private static final Color GRAY = Display.getDefault().getSystemColor(SWT.COLOR_GRAY);
private static final ImageDescriptor LOCAL_OVERLAY = Activator.getImageDescriptor("local_ovr");
private static final ImageDescriptor EXAMPLE_OVERLAY = Activator.getImageDescriptor("example_ovr");
private final ResourceManager resourceManager = new LocalResourceManager(JFaceResources.getResources());
public LaunchConfigLabelDecorator()
{
}
@Override
public void dispose()
{
resourceManager.dispose();
super.dispose();
}
public Image decorateImage(Image image, Object element)
{
if (isLocal(element))
{
DecorationOverlayIcon icon = new DecorationOverlayIcon(image, LOCAL_OVERLAY, IDecoration.TOP_LEFT);
return (Image)resourceManager.get(icon);
}
if (isExampleCopy(element))
{
DecorationOverlayIcon icon = new DecorationOverlayIcon(image, EXAMPLE_OVERLAY, IDecoration.TOP_LEFT);
return (Image)resourceManager.get(icon);
}
return null;
}
public String decorateText(String text, Object element)
{
if (isLocal(element))
{
return "* " + text + " [local]";
}
if (isExampleCopy(element))
{
return "~ " + text + " [example]";
}
return null;
}
// public Color decorateForeground(Object element)
// {
// if (isLocal(element))
// {
// return RED;
// }
//
// if (isExampleCopy(element))
// {
// return GRAY;
// }
//
// return null;
// }
//
// public Color decorateBackground(Object element)
// {
// return null;
// }
private boolean isLocal(Object element)
{
if (element instanceof ILaunchConfiguration)
{
ILaunchConfiguration configuration = (ILaunchConfiguration)element;
return configuration.isLocal();
}
return false;
}
private boolean isExampleCopy(Object element)
{
if (element instanceof ILaunchConfiguration)
{
ILaunchConfiguration configuration = (ILaunchConfiguration)element;
IFile file = configuration.getFile();
if (file != null)
{
IPath path = file.getFullPath();
String[] segments = path.segments();
return segments.length == 4 && segments[1].equals("examples");
}
}
return false;
}
}