/******************************************************************************* * Copyright (c) 2004, 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 *******************************************************************************/ /* */ package org.eclipse.jem.internal.proxy.core; import java.util.Map; import org.eclipse.jdt.core.IJavaProject; /** * This interface will be passed to the IConfigurationContributor initialize method. It has info * that may be needed by the contributor. It may be saved for later use, but if classpaths have changed, * it won't be kept up to date. * <p> * This interface is not intended to be implemented by clients. * </p> * * @see org.eclipse.jem.internal.proxy.core.IConfigurationContributor#initialize(IConfigurationContributionInfo) * @since 1.0.0 */ public interface IConfigurationContributionInfo { /** * Hold the visible and hidden container paths. * A visible container path means it has been exported up to the top-level project. And also * the array of those not visible. The paths are the String form (i.e. IPath.toString()). * <p> * These are the values of the {@link IConfigurationContributionInfo#getContainerIds()} map. * * @since 1.2.0 */ public static class ContainerPaths { private final String[] visiblePath; private final String[] hiddenPaths; private final String containerId; ContainerPaths(String containerId, String[] visiblePath, String[] hiddenPaths) { // Not meant to be subclassed or constructed by clients. this.containerId = containerId; this.visiblePath = visiblePath; this.hiddenPaths = hiddenPaths; } /** * @return Returns the containerId. * * @since 1.2.0 */ public final String getContainerId() { return containerId; } /** * Array of visible container paths. A path is visible if it is exported up to and can * see by the top-level project. * * @return * * @since 1.2.0 */ public final String[] getVisibleContainerPaths() { return visiblePath; } /** * Array of hidden container paths. A path is hidden if it is not exported up to and cannot * see by the top-level project. * * @return * * @since 1.2.0 */ public final String[] getHiddenContainerPaths() { return hiddenPaths; } /** * Get all of the paths together, both visible and hidden. * @return * * @since 1.2.0 */ public String[] getAllPaths() { String[] allPaths = new String[visiblePath.length+hiddenPaths.length]; System.arraycopy(visiblePath, 0, allPaths, 0, visiblePath.length); System.arraycopy(hiddenPaths, 0, allPaths, visiblePath.length, hiddenPaths.length); return allPaths; } } /** * Get the java project that we are contributing for. * * @return javaproject, may be <code>null</code> * * @since 1.0.0 */ public IJavaProject getJavaProject(); /** * Return the map of containers (the key) that are found in the classpath. This is useful for determining * if the container impliments a contributor interface. * <p> * Value will be {@link ContainerPaths} * * @return Map of containers. Keys of type String for container id (e.g. "SWT_CONTAINER" for a container classpath of "/SWT_CONTAINER/PDE/xyz". * Values will be {@link ContainerPaths} Empty if launch not in a project. * * @since 1.0.0 */ public Map getContainers(); /** * Return the map of container ids that are found in the classpath. * <p> * Key will be String and it is the first segment of a container path. Value will {@link ContainerPaths}. This * will contain all of the visible and hidden paths that the project can see. All of the paths will have * the key (container id) as the first segment of the path. * * @return map of container ids. Keys of type String. Values will be {@link ContainerPaths} Empty if launch not in a project. * * @since 1.0.0 */ public Map getContainerIds(); /** * Return the map of plugin ids (the key) that are found in the classpath. * <p> * Value will <code>Boolean</code> and will be true if plugin was visible to top-level project. * * @return map of plugin ids. Key of type String. Empty if launch not in a project. * * @since 1.0.0 */ public Map getPluginIds(); /** * Return the map of project paths (the key) that are found in the classpath. The top-level project * will NOT be in this list since it is assumed to be visible to itself. * <p> * Value will <code>Boolean</code> and will be true if project was visible to top-level project. * * @return map of project paths. Key of type <code>IPath</code>. Empty if launch not in a project. * * @see org.eclipse.core.runtime.IPath * @since 1.0.0 */ public Map getProjectPaths(); }