// Path: core/fr.opensagres.eclipse.jsbuild.core/src/fr/opensagres/eclipse/jsbuild/core/IJSBuildFileNode.java
// public interface IJSBuildFileNode {
// 
// 	/**
// 	 * Returns the node name.
// 	 * 
// 	 * @return the node name.
// 	 */
// 	String getName();
// 
// 	/**
// 	 * Returns the label of the task.
// 	 * 
// 	 * @return the label of the task.
// 	 */
// 	String getLabel();
// 
// 	/**
// 	 * Returns true if the node have children and false otherwise.
// 	 * 
// 	 * @return true if the node have children and false otherwise.
// 	 */
// 	boolean hasChildren();
// 
// 	/**
// 	 * Returns the parent node.
// 	 * 
// 	 * @return the parent node.
// 	 */
// 	IJSBuildFileNode getParentNode();
// 
// 	/**
// 	 * Returns the tasks children.
// 	 * 
// 	 * @return the tasks children.
// 	 * @throws CoreException
// 	 */
// 	Collection<ITask> getChildNodes();
// 
// 	/**
// 	 * Returns the owner build file.
// 	 * 
// 	 * @return the owner build file.
// 	 */
// 	IJSBuildFile getBuildFile();
// 
// 	/**
// 	 * Returns the factory id {@link IJSBuildFileFactory} which have created
// 	 * this instance.
// 	 * 
// 	 * @return the factory id {@link IJSBuildFileFactory} which have created
// 	 *         this instance.
// 	 */
// 	String getFactoryId();
// 
// 	/**
// 	 * Returns the location of the node and null otherwise.
// 	 * @param document 
// 	 * 
// 	 * @return the location of the node and null otherwise.
// 	 */
// 	Location getLocation(String text);
// }
// 
// Path: core/fr.opensagres.eclipse.jsbuild.ui/src/fr/opensagres/eclipse/jsbuild/internal/ui/views/JSBuildFileLabelProvider.java
// public class JSBuildFileLabelProvider extends LabelProvider implements
// 		IStyledLabelProvider, IColorProvider {
// 
// 	@Override
// 	public StyledString getStyledText(Object element) {
// 		if (element instanceof IJSBuildFile) {
// 			IJSBuildFile node = (IJSBuildFile) element;
// 			StyledString buff = new StyledString(node.getLabel());
// 			IFile buildfile = node.getBuildFileResource();
// 			if (buildfile != null) {
// 				buff.append("  "); //$NON-NLS-1$
// 				buff.append('[', StyledString.DECORATIONS_STYLER);
// 				buff.append(buildfile.getFullPath().makeRelative().toString(),
// 						StyledString.DECORATIONS_STYLER);
// 				buff.append(']', StyledString.DECORATIONS_STYLER);
// 			}
// 			return buff;
// 		} else if (element instanceof ITask) {
// 			return new StyledString(((ITask) element).getLabel());
// 		}
// 		return null;
// 	}
// 
// 	@Override
// 	public Color getForeground(Object node) {
// 		if (node instanceof ITask && ((ITask) node).isDefault()) {
// 			return Display.getDefault().getSystemColor(SWT.COLOR_BLUE);
// 		}
// 		return Display.getDefault().getSystemColor(SWT.COLOR_LIST_FOREGROUND);
// 	}
// 
// 	@Override
// 	public Color getBackground(Object element) {
// 		return Display.getDefault().getSystemColor(SWT.COLOR_LIST_BACKGROUND);
// 	}
// 
// 	@Override
// 	public Image getImage(Object element) {
// 		if (element instanceof IJSBuildFileNode) {
// 			String factoryId = ((IJSBuildFileNode) element).getFactoryId();
// 			ILabelProvider labelProvider = LabelProviderRegistryReader
// 					.getInstance().getLabelProvider(factoryId);
// 			if (labelProvider != null) {
// 				// custom image.
// 				Image image = labelProvider.getImage(element);
// 				if (image != null) {
// 					return image;
// 				}
// 			}
// 		}
// 		return super.getImage(element);
// 	}
// 
// }


import org.eclipse.ui.IMemento;
import org.eclipse.ui.navigator.ICommonContentExtensionSite;
import org.eclipse.ui.navigator.ICommonLabelProvider;
import fr.opensagres.eclipse.jsbuild.core.IJSBuildFileNode;
import fr.opensagres.eclipse.jsbuild.internal.ui.views.JSBuildFileLabelProvider;

/**
 *  Copyright (c) 2013-2014 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 fr.opensagres.eclipse.jsbuild.internal.ui.navigator;



/**
 * * JavaScript build label provider for using it with navigator (like Project
 * Explorer).
 *
 */
public class NavigatorJSBuildFileLabelProvider extends JSBuildFileLabelProvider
		implements ICommonLabelProvider {

	@Override
	public String getDescription(Object element) {
		if (element instanceof IJSBuildFileNode) {
			IJSBuildFileNode node = (IJSBuildFileNode) element;
			StringBuilder description = new StringBuilder();
			description.append(node.getBuildFile().getLabel());
			description.append(" : ");
			description.append(node.getName());

// Path: core/fr.opensagres.eclipse.jsbuild.core/src/fr/opensagres/eclipse/jsbuild/core/IJSBuildFileNode.java
// public interface IJSBuildFileNode {
// 
// 	/**
// 	 * Returns the node name.
// 	 * 
// 	 * @return the node name.
// 	 */
// 	String getName();
// 
// 	/**
// 	 * Returns the label of the task.
// 	 * 
// 	 * @return the label of the task.
// 	 */
// 	String getLabel();
// 
// 	/**
// 	 * Returns true if the node have children and false otherwise.
// 	 * 
// 	 * @return true if the node have children and false otherwise.
// 	 */
// 	boolean hasChildren();
// 
// 	/**
// 	 * Returns the parent node.
// 	 * 
// 	 * @return the parent node.
// 	 */
// 	IJSBuildFileNode getParentNode();
// 
// 	/**
// 	 * Returns the tasks children.
// 	 * 
// 	 * @return the tasks children.
// 	 * @throws CoreException
// 	 */
// 	Collection<ITask> getChildNodes();
// 
// 	/**
// 	 * Returns the owner build file.
// 	 * 
// 	 * @return the owner build file.
// 	 */
// 	IJSBuildFile getBuildFile();
// 
// 	/**
// 	 * Returns the factory id {@link IJSBuildFileFactory} which have created
// 	 * this instance.
// 	 * 
// 	 * @return the factory id {@link IJSBuildFileFactory} which have created
// 	 *         this instance.
// 	 */
// 	String getFactoryId();
// 
// 	/**
// 	 * Returns the location of the node and null otherwise.
// 	 * @param document 
// 	 * 
// 	 * @return the location of the node and null otherwise.
// 	 */
// 	Location getLocation(String text);
// }
// 
// Path: core/fr.opensagres.eclipse.jsbuild.ui/src/fr/opensagres/eclipse/jsbuild/internal/ui/views/JSBuildFileLabelProvider.java
// public class JSBuildFileLabelProvider extends LabelProvider implements
// 		IStyledLabelProvider, IColorProvider {
// 
// 	@Override
// 	public StyledString getStyledText(Object element) {
// 		if (element instanceof IJSBuildFile) {
// 			IJSBuildFile node = (IJSBuildFile) element;
// 			StyledString buff = new StyledString(node.getLabel());
// 			IFile buildfile = node.getBuildFileResource();
// 			if (buildfile != null) {
// 				buff.append("  "); //$NON-NLS-1$
// 				buff.append('[', StyledString.DECORATIONS_STYLER);
// 				buff.append(buildfile.getFullPath().makeRelative().toString(),
// 						StyledString.DECORATIONS_STYLER);
// 				buff.append(']', StyledString.DECORATIONS_STYLER);
// 			}
// 			return buff;
// 		} else if (element instanceof ITask) {
// 			return new StyledString(((ITask) element).getLabel());
// 		}
// 		return null;
// 	}
// 
// 	@Override
// 	public Color getForeground(Object node) {
// 		if (node instanceof ITask && ((ITask) node).isDefault()) {
// 			return Display.getDefault().getSystemColor(SWT.COLOR_BLUE);
// 		}
// 		return Display.getDefault().getSystemColor(SWT.COLOR_LIST_FOREGROUND);
// 	}
// 
// 	@Override
// 	public Color getBackground(Object element) {
// 		return Display.getDefault().getSystemColor(SWT.COLOR_LIST_BACKGROUND);
// 	}
// 
// 	@Override
// 	public Image getImage(Object element) {
// 		if (element instanceof IJSBuildFileNode) {
// 			String factoryId = ((IJSBuildFileNode) element).getFactoryId();
// 			ILabelProvider labelProvider = LabelProviderRegistryReader
// 					.getInstance().getLabelProvider(factoryId);
// 			if (labelProvider != null) {
// 				// custom image.
// 				Image image = labelProvider.getImage(element);
// 				if (image != null) {
// 					return image;
// 				}
// 			}
// 		}
// 		return super.getImage(element);
// 	}
// 
// }


// Path: core/fr.opensagres.eclipse.jsbuild.ui/src/fr/opensagres/eclipse/jsbuild/internal/ui/navigator/NavigatorJSBuildFileLabelProvider.java
import org.eclipse.ui.IMemento;
import org.eclipse.ui.navigator.ICommonContentExtensionSite;
import org.eclipse.ui.navigator.ICommonLabelProvider;
import fr.opensagres.eclipse.jsbuild.core.IJSBuildFileNode;
import fr.opensagres.eclipse.jsbuild.internal.ui.views.JSBuildFileLabelProvider;

/**
 *  Copyright (c) 2013-2014 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 fr.opensagres.eclipse.jsbuild.internal.ui.navigator;



/**
 * * JavaScript build label provider for using it with navigator (like Project
 * Explorer).
 *
 */
public class NavigatorJSBuildFileLabelProvider extends JSBuildFileLabelProvider
		implements ICommonLabelProvider {

	@Override
	public String getDescription(Object element) {
		if (element instanceof IJSBuildFileNode) {
			IJSBuildFileNode node = (IJSBuildFileNode) element;
			StringBuilder description = new StringBuilder();
			description.append(node.getBuildFile().getLabel());
			description.append(" : ");
			description.append(node.getName());

			return description.toString();
