/******************************************************************************* * Copyright (c) 2010 Fraunhofer IWU 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: * Fraunhofer IWU - initial API and implementation *******************************************************************************/ package net.enilink.komma.workbench.nature; import java.util.List; import org.eclipse.core.resources.IProject; import org.eclipse.core.runtime.CoreException; import net.enilink.komma.workbench.IWorkbenchURIConverter; import net.enilink.komma.workbench.KommaWorkbenchContextBase; import net.enilink.komma.workbench.internal.KommaWorkbenchPlugin; public class DefaultKommaNature extends KommaNature { static final String NATURE_ID = "net.enilink.komma.workbench.KommaNature"; /** * JavaMOFNatureRuntime constructor comment. */ public DefaultKommaNature() { super(); } /** * Get a IJavaMOFNatureRuntime that corresponds to the supplied project. * * @return IJavaMOFNatureRuntime * @param project * com.ibm.itp.core.api.resources.IProject */ public static DefaultKommaNature createRuntime(IProject project) throws CoreException { if (!hasRuntime(project)) if (project.exists()) { addNatureToProject(project, NATURE_ID); } else return null; return getRuntime(project); } /** * Return the nature's ID. */ public java.lang.String getNatureID() { return NATURE_ID; } /** * Get a IJavaMOFNatureRuntime that corresponds to the supplied project. * First check for registered natures. * * @return IJavaMOFNatureRuntime * @param project * com.ibm.itp.core.api.resources.IProject */ public static DefaultKommaNature getRuntime(IProject project) { DefaultKommaNature nature = null; List<?> runtimes = getRegisteredRuntimes(project); for (int i = 0; i < runtimes.size(); i++) { if (runtimes.get(i) instanceof DefaultKommaNature) nature = (DefaultKommaNature) runtimes.get(i); } if (nature == null) nature = primGetRuntime(project); return nature; } /** * Return whether or not the project has a runtime created on it. Check for * registered natures first. * * @return boolean * @param project * com.ibm.itp.core.api.resources.IProject */ public static boolean hasRuntime(IProject project) { DefaultKommaNature nature = null; List<?> runtimes = getRegisteredRuntimes(project); for (int i = 0; i < runtimes.size(); i++) { if (runtimes.get(i) instanceof DefaultKommaNature) nature = (DefaultKommaNature) runtimes.get(i); } if (nature == null) return primHasRuntime(project); else return true; } /** * Get a IJavaMOFNatureRuntime that corresponds to the supplied project. Do * not check for other registered types. * * @return IJavaMOFNatureRuntime * @param project * com.ibm.itp.core.api.resources.IProject */ public static DefaultKommaNature primGetRuntime(IProject project) { try { return (DefaultKommaNature) project.getNature(NATURE_ID); } catch (CoreException e) { return null; } } /** * Return whether or not the project has a runtime created on it. Do not * check for registered nature ids. * * @return boolean * @param project * com.ibm.itp.core.api.resources.IProject */ public static boolean primHasRuntime(IProject project) { try { return project.hasNature(NATURE_ID); } catch (CoreException e) { return false; } } /** * primary contribute to context */ public void primaryContributeToContext(KommaWorkbenchContextBase nature) { if (kommaContext == nature) { return; } kommaContext = nature; IWorkbenchURIConverter conv = nature.getURIConverter(); configureURIConverter(conv); } /** * secondary contribute to context */ public void secondaryContributeToContext(KommaWorkbenchContextBase aNature) { primaryContributeToContext(aNature); } /** * Remove the project as a container from the converter and add the source * folder. */ protected void configureURIConverter(IWorkbenchURIConverter conv) { conv.removeInputContainer(getProject()); conv.addInputContainer(getKommaRoot()); } @Override protected String getPluginID() { return KommaWorkbenchPlugin.PLUGIN_ID; } }