/**
 * Copyright (c) 2011, 2014 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License 2.0 
 * which accompanies this distribution, and is available at
 * https://www.eclipse.org/legal/epl-2.0/
 *
 * SPDX-License-Identifier: EPL-2.0
 * 
 * Contributors: 
 * 		Florian Pirchner - Initial implementation
 */
package org.eclipse.osbp.vaaclipse.addons.ecview;

import org.eclipse.e4.core.contexts.IEclipseContext;
import org.eclipse.osbp.vaaclipse.addons.common.api.explorer.AbstractExplorerInfo;
import org.eclipse.osbp.vaaclipse.addons.common.api.explorer.IExplorerLeaf;

/**
 * The Class ExplorerApplicationLeaf.
 */
public class ExplorerApplicationLeaf extends AbstractExplorerInfo implements
		IExplorerLeaf {

	/**
	 * Instantiates a new explorer application leaf.
	 */
	public ExplorerApplicationLeaf() {
	}

	/* (non-Javadoc)
	 * @see org.eclipse.osbp.vaaclipse.addons.common.api.explorer.IExplorerLeaf#execute(org.eclipse.e4.core.contexts.IEclipseContext)
	 */
	@Override
	public void execute(IEclipseContext context) {

		DynamicViewSupport viewSupport = context.get(DynamicViewSupport.class);
		viewSupport
				.openNewGenericECViewView(
						getId(),
						getLabel(),
						getDescription(),
						"platform:/plugin/org.eclipse.osbp.vaaclipse.addons.application/images/package_explorer.png",
						context);

	}

}
