001: /*******************************************************************************
002: * Copyright (c) 2001, 2007 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.views.properties.tabbed;
011:
012: import java.util.List;
013:
014: import org.eclipse.jface.viewers.IFilter;
015: import org.eclipse.jface.viewers.ISelection;
016: import org.eclipse.ui.IWorkbenchPart;
017:
018: /**
019: * Represents a section descriptor on the tabbed property sections extensions.
020: * <p>
021: * This interface should not be extended or implemented. New instances should be
022: * created using <code>AbstractSectionDescriptor</code>.
023: * </p>
024: *
025: * @author Anthony Hunter
026: */
027: public interface ISectionDescriptor {
028:
029: /**
030: * If enabledFor is not specified in the descriptor, enable for any
031: * selection.
032: */
033: public final int ENABLES_FOR_ANY = -1;
034:
035: /**
036: * If afterSection is not specified in the descriptor, we default to be the
037: * top section.
038: */
039: public static final String TOP = "top"; //$NON-NLS-1$
040:
041: /**
042: * Get the unique identifier for the section.
043: *
044: * @return the unique identifier for the section.
045: */
046: public String getId();
047:
048: /**
049: * Get the section filter instance for this section. Return null if no
050: * filter for this section.
051: *
052: * @return the section filter instance.
053: */
054: public IFilter getFilter();
055:
056: /**
057: * Get the valid input types for this section.
058: *
059: * @return the valid input types for this section.
060: */
061: public List getInputTypes();
062:
063: /**
064: * Get the class that implements this section.
065: *
066: * @return the class that implements this section.
067: */
068: public ISection getSectionClass();
069:
070: /**
071: * Get the target tab where this section will appear.
072: *
073: * @return the target tab where this section will appear.
074: */
075: public String getTargetTab();
076:
077: /**
078: * Get the value for section enablement which is a precise number of items
079: * selected. For example: enablesFor="1" enables the section only when one
080: * item is selected. If not specified, enable for any selection and return
081: * ENABLES_FOR_ANY.
082: *
083: * @return the value for section enablement.
084: */
085: public int getEnablesFor();
086:
087: /**
088: * Determines if this section applies to the selection.
089: *
090: * @param part
091: * the current workbench part.
092: * @param selection
093: * the selection.
094: * @return <code>true</code> if this section applies to the current
095: * selection.
096: */
097: public boolean appliesTo(IWorkbenchPart part, ISelection selection);
098:
099: /**
100: * Get the section identifier below which this section is displayed.
101: * <code>"top"</code> is returned if this section is the top most section
102: * or if there is one section in the tab.
103: *
104: * @return the section identifier.
105: */
106: public String getAfterSection();
107: }
|