001: /*******************************************************************************
002: * Copyright (c) 2003, 2006 IBM Corporation and others.
003: * All rights reserved. This program and the accompanying materials
004: * are made available under the terms of the Eclipse Public License v1.0
005: * which accompanies this distribution, and is available at
006: * http://www.eclipse.org/legal/epl-v10.html
007: *
008: * Contributors:
009: * IBM Corporation - initial API and implementation
010: *******************************************************************************/package org.eclipse.ui.navigator;
011:
012: import java.util.Set;
013:
014: import org.eclipse.jface.viewers.IStructuredSelection;
015: import org.eclipse.ui.internal.navigator.extensions.OverridePolicy;
016:
017: /**
018: *
019: * The descriptor provides a handle to a content extension. Information such as
020: * the Id, the name, the priority, and whether the descriptor provides one or
021: * more root elements is provided.
022: *
023: *
024: * <p>
025: * There is one {@link INavigatorContentExtension} for each content service.
026: * There is only one {@link INavigatorContentDescriptor} for each extension.
027: * </p>
028: *
029: * <p>
030: * This interface is not intended to be implemented by clients.
031: * </p>
032: *
033: * @since 3.2
034: *
035: */
036: public interface INavigatorContentDescriptor {
037:
038: /**
039: * Returns the navgiator content extension id
040: *
041: * @return the navgiator content extension id
042: */
043: String getId();
044:
045: /**
046: * Returns the name of this navigator extension
047: *
048: * @return the name of this navigator extension
049: */
050: String getName();
051:
052: /**
053: * Returns the priority of the navigator content extension.
054: *
055: * @return the priority of the navigator content extension. Returns 0 (zero)
056: * if no priority was specified.
057: */
058: int getPriority();
059:
060: /**
061: * The enabledByDefault attribute specifies whether an extension should be
062: * activated in the context of a viewer automatically. Users may override
063: * this setting through the "Types of Content" dialog.
064: *
065: * @return true if the extension is enabled by default.
066: */
067: boolean isActiveByDefault();
068:
069: /**
070: * Determine if this content extension is enabled for the given element.
071: *
072: * @param anElement
073: * The element that should be used for the evaluation.
074: * @return True if and only if the extension is enabled for the element.
075: */
076: boolean isTriggerPoint(Object anElement);
077:
078: /**
079: * Determine if this content extension could provide the given element as a
080: * child.
081: *
082: * <p>
083: * This method is used to determine what the parent of an element could be
084: * for Link with Editor support.
085: * </p>
086: *
087: * @param anElement
088: * The element that should be used for the evaluation.
089: * @return True if and only if the extension might provide an object of this
090: * type as a child.
091: */
092: boolean isPossibleChild(Object anElement);
093:
094: /**
095: * A convenience method to check all elements in a selection.
096: *
097: * @param aSelection
098: * A non-null selection
099: * @return True if and only if every element in the selection is a possible
100: * child.
101: */
102: boolean arePossibleChildren(IStructuredSelection aSelection);
103:
104: /**
105: * @return Returns the suppressedExtensionId or null if none specified.
106: */
107: String getSuppressedExtensionId();
108:
109: /**
110: * @return Returns the overridePolicy or null if this extension does not
111: * override another extension.
112: */
113: OverridePolicy getOverridePolicy();
114:
115: /**
116: * @return The descriptor of the <code>suppressedExtensionId</code> if
117: * non-null.
118: */
119: INavigatorContentDescriptor getOverriddenDescriptor();
120:
121: /**
122: *
123: * Does not force the creation of the set of overriding extensions.
124: *
125: * @return True if this extension has overridding extensions.
126: */
127: boolean hasOverridingExtensions();
128:
129: /**
130: * @return The set of overridding extensions (of type
131: * {@link INavigatorContentDescriptor}
132: */
133: Set getOverriddingExtensions();
134:
135: /**
136: * @return true if the extension's content provider may adapt to a {@link SaveablesProvider}.
137: */
138: boolean hasSaveablesProvider();
139:
140: }
|