001: /*******************************************************************************
002: * Copyright (c) 2000, 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.jdt.ui.wizards;
011:
012: import org.eclipse.swt.widgets.Shell;
013:
014: import org.eclipse.jface.resource.ImageDescriptor;
015:
016: import org.eclipse.jdt.core.IClasspathAttribute;
017: import org.eclipse.jdt.core.IClasspathEntry;
018: import org.eclipse.jdt.core.IJavaProject;
019:
020: /**
021: * A {@link ClasspathAttributeConfiguration} specifies how a {@link IClasspathAttribute class path attribute} is presented and configured
022: * in the Java build path dialog.
023: * <p>
024: * Clients should implement this interface and include the name of their
025: * class in an extension contributed to the jdt.ui's classpath attribute configuration
026: * extension point (named <code>org.eclipse.jdt.ui.classpathAttributeConfiguration
027: * </code>).
028: * </p>
029: *
030: * @since 3.3
031: */
032: public abstract class ClasspathAttributeConfiguration {
033:
034: /**
035: * This class provides information about the attribute to be rendered or configured.
036: */
037: public static abstract class ClasspathAttributeAccess {
038:
039: /**
040: * Returns the classpath attribute
041: * @return the classpath attribute
042: */
043: public abstract IClasspathAttribute getClasspathAttribute();
044:
045: /**
046: * Returns the classpath entry the current attribute is part of
047: * @return the parent classpath entry
048: */
049: public abstract IClasspathEntry getParentClasspassEntry();
050:
051: /**
052: * Returns the Java project the current attribute is part of.
053: * @return the parent Java project
054: */
055: public abstract IJavaProject getJavaProject();
056:
057: }
058:
059: /**
060: * Returns the image descriptor of the classpath attributes name as a translated string.
061: *
062: * @param attribute access to the attributes to render
063: * @return returns the label value of the value
064: */
065: public abstract ImageDescriptor getImageDescriptor(
066: ClasspathAttributeAccess attribute);
067:
068: /**
069: * Returns the label of the classpath attributes name as a translated string.
070: *
071: * @param attribute access to the attributes to render
072: * @return returns the label value of the value
073: */
074: public abstract String getNameLabel(
075: ClasspathAttributeAccess attribute);
076:
077: /**
078: * Returns the label of the classpath attributes value as a translated string.
079: *
080: * @param attribute access to the attributes to render
081: * @return returns the label value of the value
082: */
083: public abstract String getValueLabel(
084: ClasspathAttributeAccess attribute);
085:
086: /**
087: * Specifies if the given attribute can be edited. This will enable the <em>Edit</em> button that typically
088: * shows the edit dialog.
089: *
090: * @param attribute access to the attribute to answer the question of
091: * @return returns true if the attribute can be edited.
092: */
093: public abstract boolean canEdit(ClasspathAttributeAccess attribute);
094:
095: /**
096: * Specifies if 'Remove' is a valid action on the given attribute. This will enable the <em>Remove</em> button. The action
097: * will typically clear the attributes value. The method should only return <code>true</code> if the element isn't already cleared.
098: *
099: * @param attribute access to the attribute to answer the question of
100: * @return returns true if the attribute can be edited.
101: */
102: public abstract boolean canRemove(ClasspathAttributeAccess attribute);
103:
104: /**
105: * This method is invoked when the <em>Edit</em> is pressed. The method is expected to show a configuration dialog.
106: *
107: * @param shell the parent shell
108: * @param attribute access to the attribute to configure
109: * @return returns the configured attribute or <code>null</code> if the action has been cancelled.
110: */
111: public abstract IClasspathAttribute performEdit(Shell shell,
112: ClasspathAttributeAccess attribute);
113:
114: /**
115: * This method is invoked when the <em>Remove</em> is pressed. The method should not show a dialog.
116: *
117: * @param attribute access to the attribute to configure
118: * @return returns the configured attribute
119: */
120: public abstract IClasspathAttribute performRemove(
121: ClasspathAttributeAccess attribute);
122:
123: }
|