diff options
Diffstat (limited to 'plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/internal/util/emf/workbench/EMFWorkbenchContextFactory.java')
-rw-r--r-- | plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/internal/util/emf/workbench/EMFWorkbenchContextFactory.java | 172 |
1 files changed, 0 insertions, 172 deletions
diff --git a/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/internal/util/emf/workbench/EMFWorkbenchContextFactory.java b/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/internal/util/emf/workbench/EMFWorkbenchContextFactory.java deleted file mode 100644 index 698a4352b..000000000 --- a/plugins/org.eclipse.jem.util/jemutil/org/eclipse/jem/internal/util/emf/workbench/EMFWorkbenchContextFactory.java +++ /dev/null @@ -1,172 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2005 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 - *******************************************************************************/ -/* - * $$RCSfile: EMFWorkbenchContextFactory.java,v $$ - * $$Revision: 1.4 $$ $$Date: 2005/06/16 20:14:27 $$ - */ -package org.eclipse.jem.internal.util.emf.workbench; - -import java.util.*; - -import org.eclipse.core.resources.IProject; -import org.eclipse.core.resources.IProjectNature; -import org.eclipse.core.runtime.*; -import org.eclipse.emf.ecore.resource.ResourceSet; - -import org.eclipse.jem.internal.util.emf.workbench.nls.EMFWorkbenchResourceHandler; -import org.eclipse.jem.util.RegistryReader; -import org.eclipse.jem.util.emf.workbench.*; -import org.eclipse.jem.util.emf.workbench.nature.EMFNature; -import org.eclipse.jem.util.logger.proxy.Logger; -import org.eclipse.jem.util.plugin.JEMUtilPlugin; - - - -public class EMFWorkbenchContextFactory { - public static final EMFWorkbenchContextFactory INSTANCE; - - static { - INSTANCE = createFactoryInstance(); - } - private final Class CONTRIBUTOR_CLASS = IEMFContextContributor.class; - protected Map emfContextCache = new WeakHashMap(); - - - private static EMFWorkbenchContextFactory createFactoryInstance() { - EMFWorkbenchContextFactory factory = createFactoryInstanceFromExtension(); - if (factory == null) - factory = new EMFWorkbenchContextFactory(); - return factory; - } - - private static EMFWorkbenchContextFactory createFactoryInstanceFromExtension() { - final EMFWorkbenchContextFactory[] factoryHolder = new EMFWorkbenchContextFactory[1]; - RegistryReader reader = new RegistryReader(JEMUtilPlugin.ID, "internalWorkbenchContextFactory") { //$NON-NLS-1$ - public boolean readElement(IConfigurationElement element) { - if (element.getName().equals("factoryClass")) //$NON-NLS-1$ - try { - factoryHolder[0] = (EMFWorkbenchContextFactory)element.createExecutableExtension("name"); //$NON-NLS-1$ - return true; - } catch (CoreException e) { - Logger.getLogger().logError(e); - } - return false; - } - }; - reader.readRegistry(); - return factoryHolder[0]; - } - - /** - * Constructor for EMFNatureFactory. - */ - protected EMFWorkbenchContextFactory() { - super(); - - } - - - protected void cacheEMFContext(IProject aProject, EMFWorkbenchContextBase emfContext) { - if (aProject != null && emfContext != null) - emfContextCache.put(aProject, emfContext); - } - - protected EMFWorkbenchContextBase getCachedEMFContext(IProject aProject) { - if (aProject != null) - return (EMFWorkbenchContextBase) emfContextCache.get(aProject); - return null; - } - - /** - * <code>aProject</code> is either being closed or deleted so we need to cleanup our cache. - */ - public void removeCachedProject(IProject aProject) { - if (aProject != null) - emfContextCache.remove(aProject); - - } - /** - * Return a new or existing EMFNature on <code>aProject</code>. Allow the <code>contributor</code> - * to contribute to the new or existing nature prior to returning. - */ - public EMFWorkbenchContextBase createEMFContext(IProject aProject, IEMFContextContributor contributor) { - if (aProject == null) - throw new IllegalStateException("[EMFWorkbenchContextBase]" + EMFWorkbenchResourceHandler.getString("EMFWorkbenchContextFactory_UI_0")); //$NON-NLS-1$ //$NON-NLS-2$ - if (!aProject.isAccessible()) - throw new IllegalStateException("[EMFWorkbenchContextBase]" + EMFWorkbenchResourceHandler.getString("EMFWorkbenchContextFactory_UI_1", new Object[]{aProject.getName()})); //$NON-NLS-1$ //$NON-NLS-2$ - EMFWorkbenchContextBase context = getCachedEMFContext(aProject); - boolean contributorFound = false; - if (context == null) { - context = primCreateEMFContext(aProject); - cacheEMFContext(aProject, context); - contributorFound = initializeEMFContextFromContributors(aProject, context, contributor); - } - if (contributor != null && context != null && !contributorFound) - contributor.primaryContributeToContext(context); - return context; - } - - protected boolean initializeEMFContextFromContributors(IProject aProject, EMFWorkbenchContextBase emfContext, IEMFContextContributor contributor) { - boolean contributorFound = false; - if (aProject == null || emfContext == null) - return contributorFound; - List runtimes = EMFNature.getRegisteredRuntimes(aProject); - for (int i = 0; i < runtimes.size(); i++) { - IProjectNature nature = (IProjectNature) runtimes.get(i); - if (nature != null && CONTRIBUTOR_CLASS.isInstance(nature)) { - if (nature == contributor) - contributorFound = true; - ((IEMFContextContributor) nature).primaryContributeToContext(emfContext); - } - } - return contributorFound; - } - - protected boolean isNatureEnabled(IProject aProject, String natureId) { - try { - return aProject.isNatureEnabled(natureId); - } catch (CoreException e) { - return false; - } - } - - protected String[] getNatureIds(IProject aProject) { - try { - if (aProject.isAccessible()) - return aProject.getDescription().getNatureIds(); - } catch (CoreException e) { - } - return null; - } - - protected IProjectNature getNature(IProject aProject, String natureId) { - try { - return aProject.getNature(natureId); - } catch (CoreException e) { - return null; - } - } - - protected EMFWorkbenchContextBase primCreateEMFContext(IProject aProject) { - return new EMFWorkbenchContextBase(aProject); - } - /** - * Return an existing EMFNature on <code>aProject</code>. - */ - public EMFWorkbenchContextBase getEMFContext(IProject aProject) { - return getCachedEMFContext(aProject); - } - - public ResourceSetWorkbenchSynchronizer createSynchronizer(ResourceSet aResourceSet, IProject aProject) { - return new ResourceSetWorkbenchSynchronizer(aResourceSet, aProject); - } - -} |