diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/cpaths/AbstractPathOptionBlock.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/cpaths/AbstractPathOptionBlock.java
index 3f58828b7f8..7ec3b45593d 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/cpaths/AbstractPathOptionBlock.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/cpaths/AbstractPathOptionBlock.java
@@ -77,7 +77,7 @@ abstract public class AbstractPathOptionBlock extends TabFolderOptionBlock imple
List entries = new ArrayList();
for (int i = 0; i < nElements; i++) {
- CPListElement currElement = (CPListElement) elements.get(i);
+ CPElement currElement = (CPElement) elements.get(i);
entries.add(currElement.getPathEntry());
}
entries.addAll(fFilteredOut);
@@ -128,7 +128,7 @@ abstract public class AbstractPathOptionBlock extends TabFolderOptionBlock imple
for (int i = 0; i < cPathEntries.length; i++) {
IPathEntry curr = cPathEntries[i];
if (contains(types, curr.getEntryKind())) {
- newCPath.add(CPListElement.createFromExisting(curr, fCurrCProject));
+ newCPath.add(CPElement.createFromExisting(curr, fCurrCProject));
} else {
fFilteredOut.add(curr);
}
@@ -155,7 +155,7 @@ abstract public class AbstractPathOptionBlock extends TabFolderOptionBlock imple
int nElements = getCPaths().size();
buf.append('[').append(nElements).append(']');
for (int i = 0; i < nElements; i++) {
- CPListElement elem = (CPListElement) getCPaths().get(i);
+ CPElement elem = (CPElement) getCPaths().get(i);
elem.appendEncodedSettings(buf);
}
return buf.toString();
@@ -232,7 +232,7 @@ abstract public class AbstractPathOptionBlock extends TabFolderOptionBlock imple
IPathEntry[] entries = new IPathEntry[elements.size()];
for (int i = elements.size() - 1; i >= 0; i--) {
- CPListElement currElement = (CPListElement) elements.get(i);
+ CPElement currElement = (CPElement) elements.get(i);
entries[i] = currElement.getPathEntry();
}
@@ -274,7 +274,7 @@ abstract public class AbstractPathOptionBlock extends TabFolderOptionBlock imple
// create and set the paths
for (int i = 0; i < cPathEntries.size(); i++) {
- CPListElement entry = ((CPListElement) cPathEntries.get(i));
+ CPElement entry = ((CPElement) cPathEntries.get(i));
IResource res = entry.getResource();
if ((res instanceof IFolder) && !res.exists()) {
CoreUtility.createFolder((IFolder) res, true, true, null);
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/cpaths/CPListElement.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/cpaths/CPElement.java
similarity index 83%
rename from core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/cpaths/CPListElement.java
rename to core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/cpaths/CPElement.java
index 6ecf8cb2f0d..d0994539934 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/cpaths/CPListElement.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/cpaths/CPElement.java
@@ -20,12 +20,13 @@ import org.eclipse.cdt.core.model.IOutputEntry;
import org.eclipse.cdt.core.model.IPathEntry;
import org.eclipse.cdt.core.model.IPathEntryContainer;
import org.eclipse.cdt.core.model.ISourceEntry;
+import org.eclipse.cdt.ui.CUIPlugin;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.resources.IWorkspaceRoot;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.Path;
-public class CPListElement {
+public class CPElement {
public static final String SOURCEATTACHMENT = "sourcepath"; //$NON-NLS-1$
public static final String SOURCEATTACHMENTROOT = "rootpath"; //$NON-NLS-1$
@@ -46,10 +47,10 @@ public class CPListElement {
private boolean fIsExported;
private boolean fIsMissing;
- private CPListElement fParentContainer;
+ private CPElement fParentContainer;
private IPathEntry fCachedEntry;
- public CPListElement(ICProject project, int entryKind, IPath path, IResource res) {
+ public CPElement(ICProject project, int entryKind, IPath path, IResource res) {
fCProject = project;
fEntryKind = entryKind;
fPath = path;
@@ -62,38 +63,38 @@ public class CPListElement {
fParentContainer = null;
switch (entryKind) {
- case IPathEntry.CDT_OUTPUT :
+ case IPathEntry.CDT_OUTPUT:
createAttributeElement(EXCLUSION, new Path[0]);
break;
- case IPathEntry.CDT_SOURCE :
+ case IPathEntry.CDT_SOURCE:
createAttributeElement(EXCLUSION, new Path[0]);
break;
- case IPathEntry.CDT_LIBRARY :
+ case IPathEntry.CDT_LIBRARY:
createAttributeElement(SOURCEATTACHMENT, null);
createAttributeElement(BASE_REF, new Path("")); //$NON-NLS-1$
createAttributeElement(BASE, new Path("")); //$NON-NLS-1$
break;
- case IPathEntry.CDT_INCLUDE :
+ case IPathEntry.CDT_INCLUDE:
createAttributeElement(INCLUDE, new Path("")); //$NON-NLS-1$
createAttributeElement(EXCLUSION, new Path[0]);
createAttributeElement(SYSTEM_INCLUDE, Boolean.valueOf(false));
createAttributeElement(BASE_REF, new Path("")); //$NON-NLS-1$
createAttributeElement(BASE, new Path("")); //$NON-NLS-1$
break;
- case IPathEntry.CDT_MACRO :
+ case IPathEntry.CDT_MACRO:
createAttributeElement(MACRO_NAME, ""); //$NON-NLS-1$
createAttributeElement(MACRO_VALUE, ""); //$NON-NLS-1$
createAttributeElement(EXCLUSION, new Path[0]);
createAttributeElement(BASE_REF, new Path("")); //$NON-NLS-1$
createAttributeElement(BASE, new Path("")); //$NON-NLS-1$
break;
- case IPathEntry.CDT_CONTAINER :
+ case IPathEntry.CDT_CONTAINER:
try {
- IPathEntryContainer container = CoreModel.getDefault().getPathEntryContainer(fPath, fCProject);
+ IPathEntryContainer container = CoreModel.getPathEntryContainer(fPath, fCProject);
if (container != null) {
IPathEntry[] entries = container.getPathEntries();
for (int i = 0; i < entries.length; i++) {
- CPListElement curr = createFromExisting(entries[i], fCProject);
+ CPElement curr = createFromExisting(entries[i], fCProject);
curr.setParentContainer(this);
fChildren.add(curr);
}
@@ -101,7 +102,7 @@ public class CPListElement {
} catch (CModelException e) {
}
break;
- default :
+ default:
}
}
@@ -117,41 +118,42 @@ public class CPListElement {
IPath base = (IPath) getAttribute(BASE);
IPath baseRef = (IPath) getAttribute(BASE_REF);
switch (fEntryKind) {
- case IPathEntry.CDT_OUTPUT :
+ case IPathEntry.CDT_OUTPUT:
return CoreModel.newOutputEntry(fPath, exclusionPattern);
- case IPathEntry.CDT_SOURCE :
+ case IPathEntry.CDT_SOURCE:
return CoreModel.newSourceEntry(fPath, exclusionPattern);
- case IPathEntry.CDT_LIBRARY :
+ case IPathEntry.CDT_LIBRARY:
IPath attach = (IPath) getAttribute(SOURCEATTACHMENT);
- if (baseRef != null) {
+ if (!baseRef.isEmpty()) {
return CoreModel.newLibraryRefEntry(baseRef, fPath);
} else {
return CoreModel.newLibraryEntry(base, fPath, attach, null, null, isExported());
}
- case IPathEntry.CDT_PROJECT :
+ case IPathEntry.CDT_PROJECT:
return CoreModel.newProjectEntry(fPath, isExported());
- case IPathEntry.CDT_CONTAINER :
+ case IPathEntry.CDT_CONTAINER:
return CoreModel.newContainerEntry(fPath, isExported());
- case IPathEntry.CDT_INCLUDE :
+ case IPathEntry.CDT_INCLUDE:
IPath include = (IPath) getAttribute(INCLUDE);
- if (baseRef != null) {
+ if (!baseRef.isEmpty()) {
return CoreModel.newIncludeRefEntry(fPath, baseRef, include);
} else {
return CoreModel.newIncludeEntry(fPath, base, include, ((Boolean) getAttribute(SYSTEM_INCLUDE)).booleanValue(),
exclusionPattern);
}
- case IPathEntry.CDT_MACRO :
+ case IPathEntry.CDT_MACRO:
String macroName = (String) getAttribute(MACRO_NAME);
String macroValue = (String) getAttribute(MACRO_VALUE);
- if (baseRef != null) {
+ if (!baseRef.isEmpty()) {
return CoreModel.newMacroRefEntry(fPath, baseRef, macroName);
} else {
return CoreModel.newMacroEntry(fPath, macroName, macroValue, exclusionPattern);
}
- default :
+ default:
return null;
}
}
+
public static StringBuffer appendEncodePath(IPath path, StringBuffer buf) {
if (path != null) {
String str = path.toString();
@@ -170,17 +172,17 @@ public class CPListElement {
appendEncodePath(fPath, buf).append(';');
buf.append(Boolean.valueOf(fIsExported)).append(';');
switch (fEntryKind) {
- case IPathEntry.CDT_OUTPUT :
- case IPathEntry.CDT_SOURCE :
- case IPathEntry.CDT_INCLUDE :
- case IPathEntry.CDT_MACRO :
+ case IPathEntry.CDT_OUTPUT:
+ case IPathEntry.CDT_SOURCE:
+ case IPathEntry.CDT_INCLUDE:
+ case IPathEntry.CDT_MACRO:
IPath[] exclusion = (IPath[]) getAttribute(EXCLUSION);
buf.append('[').append(exclusion.length).append(']');
for (int i = 0; i < exclusion.length; i++) {
appendEncodePath(exclusion[i], buf);
}
switch (fEntryKind) {
- case IPathEntry.CDT_INCLUDE :
+ case IPathEntry.CDT_INCLUDE:
IPath baseRef = (IPath) getAttribute(BASE_REF);
appendEncodePath(baseRef, buf);
IPath base = (IPath) getAttribute(BASE);
@@ -188,17 +190,17 @@ public class CPListElement {
IPath include = (IPath) getAttribute(INCLUDE);
appendEncodePath(include, buf);
break;
- case IPathEntry.CDT_MACRO :
+ case IPathEntry.CDT_MACRO:
baseRef = (IPath) getAttribute(BASE_REF);
appendEncodePath(baseRef, buf);
base = (IPath) getAttribute(BASE);
appendEncodePath(base, buf);
String symbol = (String) getAttribute(MACRO_NAME);
buf.append(symbol).append(';');
- default :
+ default:
}
break;
- case IPathEntry.CDT_LIBRARY :
+ case IPathEntry.CDT_LIBRARY:
IPath baseRef = (IPath) getAttribute(BASE_REF);
appendEncodePath(baseRef, buf);
IPath base = (IPath) getAttribute(BASE);
@@ -206,7 +208,7 @@ public class CPListElement {
IPath sourceAttach = (IPath) getAttribute(SOURCEATTACHMENT);
appendEncodePath(sourceAttach, buf);
break;
- default :
+ default:
}
buf.setLength(buf.length() - 1);
return buf;
@@ -231,14 +233,15 @@ public class CPListElement {
}
/**
- * Entries without resource are either non existing or a variable entry External jars do not have a resource
+ * Entries without resource are either non existing or a variable entry
+ * External jars do not have a resource
*/
public IResource getResource() {
return fResource;
}
- public CPListElementAttribute setAttribute(String key, Object value) {
- CPListElementAttribute attribute = findAttributeElement(key);
+ public CPElementAttribute setAttribute(String key, Object value) {
+ CPElementAttribute attribute = findAttributeElement(key);
if (attribute == null) {
return null;
}
@@ -247,11 +250,11 @@ public class CPListElement {
return attribute;
}
- private CPListElementAttribute findAttributeElement(String key) {
+ private CPElementAttribute findAttributeElement(String key) {
for (int i = 0; i < fChildren.size(); i++) {
Object curr = fChildren.get(i);
- if (curr instanceof CPListElementAttribute) {
- CPListElementAttribute elem = (CPListElementAttribute) curr;
+ if (curr instanceof CPElementAttribute) {
+ CPElementAttribute elem = (CPElementAttribute) curr;
if (key.equals(elem.getKey())) {
return elem;
}
@@ -261,7 +264,7 @@ public class CPListElement {
}
public Object getAttribute(String key) {
- CPListElementAttribute attrib = findAttributeElement(key);
+ CPElementAttribute attrib = findAttributeElement(key);
if (attrib != null) {
return attrib.getValue();
}
@@ -269,21 +272,21 @@ public class CPListElement {
}
private void createAttributeElement(String key, Object value) {
- fChildren.add(new CPListElementAttribute(this, key, value));
+ fChildren.add(new CPElementAttribute(this, key, value));
}
public Object[] getChildren() {
if (fEntryKind == IPathEntry.CDT_OUTPUT || fEntryKind == IPathEntry.CDT_SOURCE) {
- return new Object[]{findAttributeElement(EXCLUSION)};
+ return new Object[] { findAttributeElement(EXCLUSION)};
}
return fChildren.toArray();
}
- private void setParentContainer(CPListElement element) {
+ private void setParentContainer(CPElement element) {
fParentContainer = element;
}
- public CPListElement getParentContainer() {
+ public CPElement getParentContainer() {
return fParentContainer;
}
@@ -296,19 +299,19 @@ public class CPListElement {
*/
public boolean equals(Object other) {
if (other != null && other.getClass().equals(getClass())) {
- CPListElement elem = (CPListElement) other;
+ CPElement elem = (CPElement) other;
if (elem.fEntryKind != fEntryKind || !elem.fPath.equals(fPath)) {
return false;
}
switch (fEntryKind) {
- case IPathEntry.CDT_LIBRARY :
+ case IPathEntry.CDT_LIBRARY:
return getAttribute(BASE).equals(elem.getAttribute(BASE))
&& getAttribute(BASE_REF).equals(elem.getAttribute(BASE_REF));
- case IPathEntry.CDT_INCLUDE :
+ case IPathEntry.CDT_INCLUDE:
return (getAttribute(INCLUDE).equals(elem.getAttribute(INCLUDE))
&& getAttribute(BASE_REF).equals(elem.getAttribute(BASE_REF)) && getAttribute(BASE).equals(
elem.getAttribute(BASE)));
- case IPathEntry.CDT_MACRO :
+ case IPathEntry.CDT_MACRO:
return (getAttribute(MACRO_NAME).equals(elem.getAttribute(MACRO_NAME))
&& getAttribute(BASE_REF).equals(elem.getAttribute(BASE_REF)) && getAttribute(BASE).equals(
elem.getAttribute(BASE)));
@@ -325,16 +328,16 @@ public class CPListElement {
final int HASH_FACTOR = 89;
int hashCode = fPath.hashCode() + fEntryKind;
switch (fEntryKind) {
- case IPathEntry.CDT_LIBRARY :
+ case IPathEntry.CDT_LIBRARY:
hashCode = hashCode * HASH_FACTOR + getAttribute(BASE).hashCode();
hashCode = hashCode * HASH_FACTOR + getAttribute(BASE_REF).hashCode();
break;
- case IPathEntry.CDT_INCLUDE :
+ case IPathEntry.CDT_INCLUDE:
hashCode = hashCode * HASH_FACTOR + getAttribute(INCLUDE).hashCode();
hashCode = hashCode * HASH_FACTOR + getAttribute(BASE_REF).hashCode();
hashCode = hashCode * HASH_FACTOR + getAttribute(BASE).hashCode();
break;
- case IPathEntry.CDT_MACRO :
+ case IPathEntry.CDT_MACRO:
hashCode = hashCode * HASH_FACTOR + getAttribute(MACRO_NAME).hashCode();
hashCode = hashCode * HASH_FACTOR + getAttribute(BASE_REF).hashCode();
hashCode = hashCode * HASH_FACTOR + getAttribute(BASE).hashCode();
@@ -397,9 +400,9 @@ public class CPListElement {
return fCProject;
}
- public static CPListElement createFromExisting(IPathEntry curr, ICProject project) {
+ public static CPElement createFromExisting(IPathEntry curr, ICProject project) {
IPath path = curr.getPath();
- IWorkspaceRoot root = project.getProject().getWorkspace().getRoot();
+ IWorkspaceRoot root = CUIPlugin.getWorkspace().getRoot();
IPath sourceAttachment = null;
IPath[] exclusion = null;
IPath include = null;
@@ -412,17 +415,16 @@ public class CPListElement {
// get the resource
IResource res = null;
boolean isMissing = false;
- // URL javaDocLocation = null;
switch (curr.getEntryKind()) {
- case IPathEntry.CDT_CONTAINER :
+ case IPathEntry.CDT_CONTAINER:
res = null;
try {
- isMissing = (CoreModel.getDefault().getPathEntryContainer(path, project) == null);
+ isMissing = (CoreModel.getPathEntryContainer(path, project) == null);
} catch (CModelException e) {
}
break;
- case IPathEntry.CDT_LIBRARY :
+ case IPathEntry.CDT_LIBRARY:
res = root.findMember(path);
if (res == null) {
// if (!ArchiveFileFilter.isArchivePath(path)) {
@@ -436,7 +438,7 @@ public class CPListElement {
base = ((ILibraryEntry) curr).getBasePath();
baseRef = ((ILibraryEntry) curr).getBaseReference();
break;
- case IPathEntry.CDT_SOURCE :
+ case IPathEntry.CDT_SOURCE:
path = path.removeTrailingSeparator();
res = root.findMember(path);
if (res == null) {
@@ -447,7 +449,7 @@ public class CPListElement {
}
exclusion = ((ISourceEntry) curr).getExclusionPatterns();
break;
- case IPathEntry.CDT_OUTPUT :
+ case IPathEntry.CDT_OUTPUT:
path = path.removeTrailingSeparator();
res = root.findMember(path);
if (res == null) {
@@ -458,7 +460,7 @@ public class CPListElement {
}
exclusion = ((IOutputEntry) curr).getExclusionPatterns();
break;
- case IPathEntry.CDT_INCLUDE :
+ case IPathEntry.CDT_INCLUDE:
path = path.removeTrailingSeparator();
res = root.findMember(path);
if (res == null) {
@@ -475,7 +477,7 @@ public class CPListElement {
base = ((IIncludeEntry) curr).getBasePath();
include = ((IIncludeEntry) curr).getIncludePath();
break;
- case IPathEntry.CDT_MACRO :
+ case IPathEntry.CDT_MACRO:
path = path.removeTrailingSeparator();
res = root.findMember(path);
if (res == null) {
@@ -490,14 +492,14 @@ public class CPListElement {
macroName = ((IMacroEntry) curr).getMacroName();
macroValue = ((IMacroEntry) curr).getMacroValue();
baseRef = ((IMacroEntry) curr).getBaseReference();
- base = ((IIncludeEntry) curr).getBasePath();
+ base = ((IMacroEntry) curr).getBasePath();
break;
- case IPathEntry.CDT_PROJECT :
+ case IPathEntry.CDT_PROJECT:
res = root.findMember(path);
isMissing = (res == null);
break;
}
- CPListElement elem = new CPListElement(project, curr.getEntryKind(), path, res);
+ CPElement elem = new CPElement(project, curr.getEntryKind(), path, res);
elem.setAttribute(SOURCEATTACHMENT, sourceAttachment);
elem.setAttribute(EXCLUSION, exclusion);
elem.setAttribute(INCLUDE, include);
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/cpaths/CPListElementAttribute.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/cpaths/CPElementAttribute.java
similarity index 84%
rename from core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/cpaths/CPListElementAttribute.java
rename to core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/cpaths/CPElementAttribute.java
index cf3f00e2130..49150443dd7 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/cpaths/CPListElementAttribute.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/cpaths/CPElementAttribute.java
@@ -8,19 +8,19 @@
******************************************************************************/
package org.eclipse.cdt.internal.ui.dialogs.cpaths;
-public class CPListElementAttribute {
+public class CPElementAttribute {
- private CPListElement fParent;
+ private CPElement fParent;
private String fKey;
private Object fValue;
- public CPListElementAttribute(CPListElement parent, String key, Object value) {
+ public CPElementAttribute(CPElement parent, String key, Object value) {
fKey = key;
fValue = value;
fParent = parent;
}
- public CPListElement getParent() {
+ public CPElement getParent() {
return fParent;
}
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/cpaths/CPListElementFilter.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/cpaths/CPElementFilter.java
similarity index 55%
rename from core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/cpaths/CPListElementFilter.java
rename to core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/cpaths/CPElementFilter.java
index 671b2bf2b5b..6a808fd6d5b 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/cpaths/CPListElementFilter.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/cpaths/CPElementFilter.java
@@ -11,10 +11,10 @@ import org.eclipse.jface.viewers.Viewer;
import org.eclipse.jface.viewers.ViewerFilter;
/**
- * Viewer filter for archive selection dialogs. Archives are files with file extension '.so', '.dll' and '.a'. The filter is not
- * case sensitive.
+ * Viewer filter for archive selection dialogs. Archives are files with file
+ * extension '.so', '.dll' and '.a'. The filter is not case sensitive.
*/
-public class CPListElementFilter extends ViewerFilter {
+public class CPElementFilter extends ViewerFilter {
private List fExcludes;
private int fKind;
@@ -22,26 +22,32 @@ public class CPListElementFilter extends ViewerFilter {
/**
* @param excludedFiles
- * Excluded paths will not pass the filter. null
is allowed if no files should be excluded.
+ * Excluded paths will not pass the filter. null
is
+ * allowed if no files should be excluded.
* @param recusive
- * Folders are only shown if, searched recursivly, contain an archive
+ * Folders are only shown if, searched recursivly, contain an archive
*/
- public CPListElementFilter(CPListElement[] excludedElements, int kind, boolean exportedOnly) {
+ public CPElementFilter(CPElement[] excludedElements, int kind, boolean exportedOnly) {
if (excludedElements != null) {
fExcludes = Arrays.asList(excludedElements);
}
fKind = kind;
fExportedOnly = exportedOnly;
}
+
+ public CPElementFilter(int kind, boolean exportedOnly) {
+ this(null, kind, exportedOnly);
+ }
+
/*
* @see ViewerFilter#select
*/
public boolean select(Viewer viewer, Object parent, Object element) {
- if (element instanceof CPListElement) {
- if (((CPListElement) element).getEntryKind() == fKind) {
+ if (element instanceof CPElement) {
+ if (((CPElement) element).getEntryKind() == fKind) {
if (fExcludes != null && !fExcludes.contains(element)) {
- if (fExportedOnly == true && !((CPListElement) element).isExported()) {
+ if (fExportedOnly == true && !((CPElement) element).isExported()) {
return false;
}
return true;
@@ -51,13 +57,19 @@ public class CPListElementFilter extends ViewerFilter {
try {
IPathEntry[] entries = ((ICProject) element).getRawPathEntries();
for (int i = 0; i < entries.length; i++) {
- if (select(viewer, parent, CPListElement.createFromExisting(entries[i], (ICProject) element))) {
+ if (select(viewer, parent, CPElement.createFromExisting(entries[i], (ICProject) element))) {
return true;
}
}
} catch (CoreException e) {
CUIPlugin.getDefault().log(e.getStatus());
}
+ } else if (element instanceof IPathEntry) {
+ boolean bShow = ((IPathEntry) element).getEntryKind() == fKind;
+ if (bShow && fExportedOnly == true) {
+ return ((IPathEntry) element).isExported();
+ }
+ return bShow;
}
return false;
}
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/cpaths/CPListLabelProvider.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/cpaths/CPElementLabelProvider.java
similarity index 75%
rename from core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/cpaths/CPListLabelProvider.java
rename to core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/cpaths/CPElementLabelProvider.java
index 40122672fff..51732748883 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/cpaths/CPListLabelProvider.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/cpaths/CPElementLabelProvider.java
@@ -27,7 +27,7 @@ import org.eclipse.swt.graphics.Point;
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.ide.IDE;
-class CPListLabelProvider extends LabelProvider {
+class CPElementLabelProvider extends LabelProvider {
private String fNewLabel, fClassLabel, fCreateLabel;
private ImageDescriptor fIncludeIcon, fMacroIcon, fLibWSrcIcon, fLibIcon, fExtLibIcon, fExtLibWSrcIcon;
@@ -35,7 +35,7 @@ class CPListLabelProvider extends LabelProvider {
private ImageDescriptorRegistry fRegistry;
- public CPListLabelProvider() {
+ public CPElementLabelProvider() {
fNewLabel = CPathEntryMessages.getString("CPListLabelProvider.new"); //$NON-NLS-1$
fClassLabel = CPathEntryMessages.getString("CPListLabelProvider.classcontainer"); //$NON-NLS-1$
fCreateLabel = CPathEntryMessages.getString("CPListLabelProvider.willbecreated"); //$NON-NLS-1$
@@ -55,19 +55,21 @@ class CPListLabelProvider extends LabelProvider {
}
public String getText(Object element) {
- if (element instanceof CPListElement) {
- return getCPListElementText((CPListElement) element);
- } else if (element instanceof CPListElementAttribute) {
- return getCPListElementAttributeText((CPListElementAttribute) element);
+ if (element instanceof CPElement) {
+ return getCPListElementText((CPElement) element);
+ } else if (element instanceof CPElementAttribute) {
+ return getCPListElementAttributeText((CPElementAttribute) element);
+ } else if (element instanceof IPathEntry) {
+ return getCPListElementText(CPElement.createFromExisting((IPathEntry) element, null));
}
return super.getText(element);
}
- public String getCPListElementAttributeText(CPListElementAttribute attrib) {
+ public String getCPListElementAttributeText(CPElementAttribute attrib) {
String notAvailable = CPathEntryMessages.getString("CPListLabelProvider.none"); //$NON-NLS-1$
StringBuffer buf = new StringBuffer();
String key = attrib.getKey();
- if (key.equals(CPListElement.SOURCEATTACHMENT)) {
+ if (key.equals(CPElement.SOURCEATTACHMENT)) {
buf.append(CPathEntryMessages.getString("CPListLabelProvider.source_attachment.label")); //$NON-NLS-1$
IPath path = (IPath) attrib.getValue();
if (path != null && !path.isEmpty()) {
@@ -75,7 +77,7 @@ class CPListLabelProvider extends LabelProvider {
} else {
buf.append(notAvailable);
}
- } else if (key.equals(CPListElement.SOURCEATTACHMENTROOT)) {
+ } else if (key.equals(CPElement.SOURCEATTACHMENTROOT)) {
buf.append(CPathEntryMessages.getString("CPListLabelProvider.source_attachment_root.label")); //$NON-NLS-1$
IPath path = (IPath) attrib.getValue();
if (path != null && !path.isEmpty()) {
@@ -84,7 +86,7 @@ class CPListLabelProvider extends LabelProvider {
buf.append(notAvailable);
}
}
- if (key.equals(CPListElement.EXCLUSION)) {
+ if (key.equals(CPElement.EXCLUSION)) {
buf.append(CPathEntryMessages.getString("CPListLabelProvider.exclusion_filter.label")); //$NON-NLS-1$
IPath[] patterns = (IPath[]) attrib.getValue();
if (patterns != null && patterns.length > 0) {
@@ -101,7 +103,7 @@ class CPListLabelProvider extends LabelProvider {
return buf.toString();
}
- public String getCPListElementText(CPListElement cpentry) {
+ public String getCPListElementText(CPElement cpentry) {
IPath path = cpentry.getPath();
switch (cpentry.getEntryKind()) {
case IPathEntry.CDT_LIBRARY:
@@ -128,21 +130,24 @@ class CPListLabelProvider extends LabelProvider {
return path.lastSegment();
case IPathEntry.CDT_INCLUDE:
{
- StringBuffer str = new StringBuffer(((IPath) cpentry.getAttribute(CPListElement.INCLUDE)).toOSString());
- IPath base = (IPath) cpentry.getAttribute(CPListElement.BASE_REF);
- if (base != null && base.segmentCount() > 0) {
- str.append('(');
+ StringBuffer str = new StringBuffer(((IPath) cpentry.getAttribute(CPElement.INCLUDE)).toOSString());
+ IPath base = (IPath) cpentry.getAttribute(CPElement.BASE_REF);
+ if (!base.isEmpty()) {
+ str.append(" - ("); //$NON-NLS-1$
str.append(base);
str.append(')');
+ } else {
+ path = ((IPath) cpentry.getAttribute(CPElement.BASE)).addTrailingSeparator();
+ str.insert(0, path.toOSString());
}
return str.toString();
}
case IPathEntry.CDT_MACRO:
{
- StringBuffer str = new StringBuffer((String) cpentry.getAttribute(CPListElement.MACRO_NAME) + "=" //$NON-NLS-1$
- + (String) cpentry.getAttribute(CPListElement.MACRO_VALUE));
- IPath base = (IPath) cpentry.getAttribute(CPListElement.BASE_REF);
- if (base != null && base.segmentCount() > 0) {
+ StringBuffer str = new StringBuffer((String) cpentry.getAttribute(CPElement.MACRO_NAME) + "=" //$NON-NLS-1$
+ + (String) cpentry.getAttribute(CPElement.MACRO_VALUE));
+ IPath base = (IPath) cpentry.getAttribute(CPElement.BASE_REF);
+ if (!base.isEmpty()) {
str.append('(');
str.append(base);
str.append(')');
@@ -151,8 +156,7 @@ class CPListLabelProvider extends LabelProvider {
}
case IPathEntry.CDT_CONTAINER:
try {
- IPathEntryContainer container = CoreModel.getDefault().getPathEntryContainer(cpentry.getPath(),
- cpentry.getCProject());
+ IPathEntryContainer container = CoreModel.getPathEntryContainer(cpentry.getPath(), cpentry.getCProject());
if (container != null) {
return container.getDescription();
}
@@ -181,17 +185,20 @@ class CPListLabelProvider extends LabelProvider {
}
private String getPathString(IPath path, boolean isExternal) {
-// if (ArchiveFileFilter.isArchivePath(path)) {
-// IPath appendedPath = path.removeLastSegments(1);
-// String appended = isExternal ? appendedPath.toOSString() : appendedPath.makeRelative().toString();
-// return CPathEntryMessages.getFormattedString("CPListLabelProvider.twopart", //$NON-NLS-1$
-// new String[] { path.lastSegment(), appended});
-// } else {
- return isExternal ? path.toOSString() : path.makeRelative().toString();
-// }
+ // if (ArchiveFileFilter.isArchivePath(path)) {
+ // IPath appendedPath = path.removeLastSegments(1);
+ // String appended = isExternal ? appendedPath.toOSString() :
+ // appendedPath.makeRelative().toString();
+ // return
+ // CPathEntryMessages.getFormattedString("CPListLabelProvider.twopart",
+ // //$NON-NLS-1$
+ // new String[] { path.lastSegment(), appended});
+ // } else {
+ return isExternal ? path.toOSString() : path.makeRelative().toString();
+ // }
}
- private ImageDescriptor getCPListElementBaseImage(CPListElement cpentry) {
+ private ImageDescriptor getCPListElementBaseImage(CPElement cpentry) {
switch (cpentry.getEntryKind()) {
case IPathEntry.CDT_OUTPUT:
if (cpentry.getPath().segmentCount() == 1) {
@@ -207,7 +214,7 @@ class CPListLabelProvider extends LabelProvider {
}
case IPathEntry.CDT_LIBRARY:
IResource res = cpentry.getResource();
- IPath path = (IPath) cpentry.getAttribute(CPListElement.SOURCEATTACHMENT);
+ IPath path = (IPath) cpentry.getAttribute(CPElement.SOURCEATTACHMENT);
if (res == null) {
if (path == null || path.isEmpty()) {
return fExtLibIcon;
@@ -239,8 +246,8 @@ class CPListLabelProvider extends LabelProvider {
private static final Point SMALL_SIZE = new Point(16, 16);
public Image getImage(Object element) {
- if (element instanceof CPListElement) {
- CPListElement cpentry = (CPListElement) element;
+ if (element instanceof CPElement) {
+ CPElement cpentry = (CPElement) element;
ImageDescriptor imageDescriptor = getCPListElementBaseImage(cpentry);
if (imageDescriptor != null) {
if (cpentry.isMissing()) {
@@ -248,14 +255,16 @@ class CPListLabelProvider extends LabelProvider {
}
return fRegistry.get(imageDescriptor);
}
- } else if (element instanceof CPListElementAttribute) {
- String key = ((CPListElementAttribute) element).getKey();
- if (key.equals(CPListElement.SOURCEATTACHMENT)) {
+ } else if (element instanceof CPElementAttribute) {
+ String key = ((CPElementAttribute) element).getKey();
+ if (key.equals(CPElement.SOURCEATTACHMENT)) {
// return
// fRegistry.get(CPluginImages.DESC_OBJS_SOURCE_ATTACH_ATTRIB);
- } else if (key.equals(CPListElement.EXCLUSION)) {
+ } else if (key.equals(CPElement.EXCLUSION)) {
return CPluginImages.get(CPluginImages.IMG_OBJS_EXCLUDSION_FILTER_ATTRIB);
}
+ } else if (element instanceof IPathEntry) {
+ return getImage(CPElement.createFromExisting((IPathEntry) element, null));
}
return null;
}
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/cpaths/CPListElementSorter.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/cpaths/CPElementSorter.java
similarity index 89%
rename from core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/cpaths/CPListElementSorter.java
rename to core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/cpaths/CPElementSorter.java
index 047d87d0995..5c0377d289e 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/cpaths/CPListElementSorter.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/cpaths/CPElementSorter.java
@@ -11,7 +11,7 @@ package org.eclipse.cdt.internal.ui.dialogs.cpaths;
import org.eclipse.cdt.core.model.IPathEntry;
import org.eclipse.jface.viewers.ViewerSorter;
-public class CPListElementSorter extends ViewerSorter {
+public class CPElementSorter extends ViewerSorter {
private static final int SOURCE = 0;
private static final int PROJECT = 1;
@@ -23,8 +23,8 @@ public class CPListElementSorter extends ViewerSorter {
* @see ViewerSorter#category(Object)
*/
public int category(Object obj) {
- if (obj instanceof CPListElement) {
- switch (((CPListElement) obj).getEntryKind()) {
+ if (obj instanceof CPElement) {
+ switch (((CPElement) obj).getEntryKind()) {
case IPathEntry.CDT_LIBRARY:
return LIBRARY;
case IPathEntry.CDT_PROJECT:
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/cpaths/CPathBasePage.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/cpaths/CPathBasePage.java
index 26eea3f9570..5b832b64d99 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/cpaths/CPathBasePage.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/cpaths/CPathBasePage.java
@@ -30,25 +30,25 @@ public abstract class CPathBasePage extends AbstractCOptionPage {
protected void fixNestingConflicts(List newEntries, List existing, Set modifiedSourceEntries) {
for (int i = 0; i < newEntries.size(); i++) {
- CPListElement curr = (CPListElement) newEntries.get(i);
+ CPElement curr = (CPElement) newEntries.get(i);
addExclusionPatterns(curr, existing, modifiedSourceEntries);
}
}
- private void addExclusionPatterns(CPListElement newEntry, List existing, Set modifiedEntries) {
+ private void addExclusionPatterns(CPElement newEntry, List existing, Set modifiedEntries) {
IPath entryPath = newEntry.getPath();
for (int i = 0; i < existing.size(); i++) {
- CPListElement curr = (CPListElement) existing.get(i);
+ CPElement curr = (CPElement) existing.get(i);
if (curr.getEntryKind() == IPathEntry.CDT_SOURCE) {
IPath currPath = curr.getPath();
if (currPath.isPrefixOf(entryPath) && !currPath.equals(entryPath)) {
- IPath[] exclusionFilters = (IPath[]) curr.getAttribute(CPListElement.EXCLUSION);
+ IPath[] exclusionFilters = (IPath[]) curr.getAttribute(CPElement.EXCLUSION);
if (!CoreModelUtil.isExcludedPath(entryPath.removeFirstSegments(1), exclusionFilters)) {
IPath pathToExclude = entryPath.removeFirstSegments(currPath.segmentCount()).addTrailingSeparator();
IPath[] newExclusionFilters = new IPath[exclusionFilters.length + 1];
System.arraycopy(exclusionFilters, 0, newExclusionFilters, 0, exclusionFilters.length);
newExclusionFilters[exclusionFilters.length] = pathToExclude;
- curr.setAttribute(CPListElement.EXCLUSION, newExclusionFilters);
+ curr.setAttribute(CPElement.EXCLUSION, newExclusionFilters);
modifiedEntries.add(curr);
}
}
@@ -67,7 +67,7 @@ public abstract class CPathBasePage extends AbstractCOptionPage {
List cpelements = input;
for (int i = 0; i < cpelements.size(); i++) {
- CPListElement cpe = (CPListElement) cpelements.get(i);
+ CPElement cpe = (CPElement) cpelements.get(i);
if (isEntryKind(cpe.getEntryKind())) {
filtered.add(cpe);
}
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/cpaths/CPathContainerDescriptor.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/cpaths/CPathContainerDescriptor.java
index 23e5daad954..42443a85ced 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/cpaths/CPathContainerDescriptor.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/cpaths/CPathContainerDescriptor.java
@@ -23,10 +23,10 @@ import org.eclipse.core.runtime.Platform;
import org.eclipse.core.runtime.Status;
-public class CPathContainerDescriptor {
+public class CPathContainerDescriptor implements IContainerDescriptor {
private IConfigurationElement fConfigElement;
- private static final String ATT_EXTENSION = "CPathContainerPage"; //$NON-NLS-1$
+ private static final String ATT_EXTENSION = "PathContainerPage"; //$NON-NLS-1$
private static final String ATT_ID = "id"; //$NON-NLS-1$
private static final String ATT_NAME = "name"; //$NON-NLS-1$
@@ -75,12 +75,12 @@ public class CPathContainerDescriptor {
return false;
}
- public static CPathContainerDescriptor[] getDescriptors() {
+ public static IContainerDescriptor[] getDescriptors() {
ArrayList containers= new ArrayList();
IExtensionPoint extensionPoint = Platform.getPluginRegistry().getExtensionPoint(CUIPlugin.PLUGIN_ID, ATT_EXTENSION);
if (extensionPoint != null) {
- CPathContainerDescriptor defaultPage= null;
+ IContainerDescriptor defaultPage= null;
String defaultPageName= CPathContainerDefaultPage.class.getName();
IConfigurationElement[] elements = extensionPoint.getConfigurationElements();
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/cpaths/CPathContainerSelectionPage.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/cpaths/CPathContainerSelectionPage.java
index c3e8ad24104..be3c43f3fed 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/cpaths/CPathContainerSelectionPage.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/cpaths/CPathContainerSelectionPage.java
@@ -39,7 +39,7 @@ public class CPathContainerSelectionPage extends WizardPage {
private static class ClasspathContainerLabelProvider extends LabelProvider {
public String getText(Object element) {
- return ((CPathContainerDescriptor) element).getName();
+ return ((IContainerDescriptor) element).getName();
}
}
@@ -47,14 +47,14 @@ public class CPathContainerSelectionPage extends WizardPage {
}
private ListViewer fListViewer;
- private CPathContainerDescriptor[] fContainers;
+ private IContainerDescriptor[] fContainers;
private IDialogSettings fDialogSettings;
/**
* Constructor for ClasspathContainerWizardPage.
* @param containerPages
*/
- protected CPathContainerSelectionPage(CPathContainerDescriptor[] containerPages) {
+ protected CPathContainerSelectionPage(IContainerDescriptor[] containerPages) {
super("CPathContainerWizardPage"); //$NON-NLS-1$
setTitle(CPathEntryMessages.getString("CPathContainerSelectionPage.title")); //$NON-NLS-1$
setDescription(CPathEntryMessages.getString("CPathContainerSelectionPage.description")); //$NON-NLS-1$
@@ -109,10 +109,10 @@ public class CPathContainerSelectionPage extends WizardPage {
}
- public CPathContainerDescriptor getSelected() {
+ public IContainerDescriptor getSelected() {
if (fListViewer != null) {
ISelection selection= fListViewer.getSelection();
- return (CPathContainerDescriptor) SelectionUtil.getSingleElement(selection);
+ return (IContainerDescriptor) SelectionUtil.getSingleElement(selection);
}
return null;
}
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/cpaths/CPathContainerWizard.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/cpaths/CPathContainerWizard.java
index 7f5c60774f1..50c5c512964 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/cpaths/CPathContainerWizard.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/cpaths/CPathContainerWizard.java
@@ -1,15 +1,17 @@
/*******************************************************************************
- * Copyright (c) 2000, 2003 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
+ * Copyright (c) 2000, 2003 IBM Corporation and others. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Common Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/cpl-v10.html
*
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
+ * Contributors: IBM Corporation - initial API and implementation
+ ******************************************************************************/
package org.eclipse.cdt.internal.ui.dialogs.cpaths;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
import org.eclipse.cdt.core.model.ICProject;
import org.eclipse.cdt.core.model.IPathEntry;
import org.eclipse.cdt.internal.ui.util.ExceptionHandler;
@@ -25,62 +27,56 @@ import org.eclipse.swt.widgets.Shell;
*/
public class CPathContainerWizard extends Wizard {
- private CPathContainerDescriptor fPageDesc;
+ private IContainerDescriptor fPageDesc;
private IPathEntry fEntryToEdit;
private IPathEntry[] fNewEntries;
+ private IPathEntry[] fContainerEntries;
private ICPathContainerPage fContainerPage;
private ICProject fCurrProject;
private IPathEntry[] fCurrClasspath;
+ private CPathFilterPage fFilterPage;
private CPathContainerSelectionPage fSelectionWizardPage;
+ private int fFilterType;
/**
* Constructor for ClasspathContainerWizard.
*/
public CPathContainerWizard(IPathEntry entryToEdit, ICProject currProject, IPathEntry[] currEntries) {
- this(entryToEdit, null, currProject, currEntries);
+ this(entryToEdit, null, currProject, currEntries, -1);
}
/**
* Constructor for ClasspathContainerWizard.
*/
- public CPathContainerWizard(CPathContainerDescriptor pageDesc, ICProject currProject, IPathEntry[] currEntries) {
- this(null, pageDesc, currProject, currEntries);
+ public CPathContainerWizard(IContainerDescriptor pageDesc, ICProject currProject, IPathEntry[] currEntries) {
+ this(null, pageDesc, currProject, currEntries, -1);
}
- /**
- * @deprecated
- */
- public CPathContainerWizard(CPathContainerDescriptor pageDesc) {
- this(null, pageDesc, null, null);
- }
-
- private CPathContainerWizard(IPathEntry entryToEdit, CPathContainerDescriptor pageDesc, ICProject currProject,
- IPathEntry[] currEntries) {
+ public CPathContainerWizard(IPathEntry entryToEdit, IContainerDescriptor pageDesc, ICProject currProject,
+ IPathEntry[] currEntries, int filterType) {
fEntryToEdit = entryToEdit;
fPageDesc = pageDesc;
fNewEntries = null;
+ fFilterType = filterType;
fCurrProject = currProject;
fCurrClasspath = currEntries;
}
- /**
- * @deprecated use getNewEntries()
- */
- public IPathEntry getNewEntry() {
- IPathEntry[] entries = getNewEntries();
- if (entries != null) {
- return entries[0];
- }
- return null;
+ public IPathEntry getEntriesParent() {
+ return fContainerEntries[0];
}
- public IPathEntry[] getNewEntries() {
+ public IPathEntry[] getEntries() {
return fNewEntries;
}
+ public IPathEntry[] getContainers() {
+ return fContainerEntries;
+ }
+
/*
* (non-Javadoc)
*
@@ -89,7 +85,11 @@ public class CPathContainerWizard extends Wizard {
public boolean performFinish() {
if (fContainerPage != null) {
if (fContainerPage.finish()) {
- fNewEntries = fContainerPage.getContainerEntries();
+ if (fFilterType != -1 && fFilterPage.isPageComplete()) {
+ fNewEntries = fFilterPage.getSelectedEntries();
+ } else {
+ fContainerEntries = fContainerPage.getContainerEntries();
+ }
return true;
}
}
@@ -105,25 +105,33 @@ public class CPathContainerWizard extends Wizard {
if (fPageDesc != null) {
fContainerPage = getContainerPage(fPageDesc);
addPage(fContainerPage);
- } else if (fEntryToEdit == null) { // new entry: show selection page as first page
- CPathContainerDescriptor[] containers = CPathContainerDescriptor.getDescriptors();
-
- fSelectionWizardPage = new CPathContainerSelectionPage(containers);
+ } else if (fEntryToEdit == null) { // new entry: show selection page as
+ // first page
+ IContainerDescriptor[] containers = CPathContainerDescriptor.getDescriptors();
+ List allContainers = new ArrayList(Arrays.asList(containers));
+ if (fFilterType != -1) {
+ allContainers.add(0, new ProjectContainerDescriptor(fFilterType));
+ }
+ fSelectionWizardPage = new CPathContainerSelectionPage(
+ (IContainerDescriptor[]) allContainers.toArray(new IContainerDescriptor[0]));
addPage(fSelectionWizardPage);
// add as dummy, will not be shown
fContainerPage = new CPathContainerDefaultPage();
addPage(fContainerPage);
} else { // fPageDesc == null && fEntryToEdit != null
- CPathContainerDescriptor[] containers = CPathContainerDescriptor.getDescriptors();
- CPathContainerDescriptor descriptor = findDescriptorPage(containers, fEntryToEdit);
+ IContainerDescriptor[] containers = CPathContainerDescriptor.getDescriptors();
+ IContainerDescriptor descriptor = findDescriptorPage(containers, fEntryToEdit);
fContainerPage = getContainerPage(descriptor);
addPage(fContainerPage);
}
+ if (fFilterType != -1) {
+ fFilterPage = new CPathFilterPage(fFilterType);
+ }
super.addPages();
}
- private ICPathContainerPage getContainerPage(CPathContainerDescriptor pageDesc) {
+ private ICPathContainerPage getContainerPage(IContainerDescriptor pageDesc) {
ICPathContainerPage containerPage = null;
if (pageDesc != null) {
try {
@@ -133,11 +141,9 @@ public class CPathContainerWizard extends Wizard {
containerPage = null;
}
}
-
if (containerPage == null) {
containerPage = new CPathContainerDefaultPage();
}
-
containerPage.initialize(fCurrProject, fCurrClasspath);
containerPage.setSelection(fEntryToEdit);
containerPage.setWizard(this);
@@ -152,9 +158,11 @@ public class CPathContainerWizard extends Wizard {
public IWizardPage getNextPage(IWizardPage page) {
if (page == fSelectionWizardPage) {
- CPathContainerDescriptor selected = fSelectionWizardPage.getSelected();
+ IContainerDescriptor selected = fSelectionWizardPage.getSelected();
fContainerPage = getContainerPage(selected);
return fContainerPage;
+ } else if (page == fContainerPage) {
+ fFilterPage.setEntries(fContainerPage.getContainerEntries()[0]);
}
return super.getNextPage(page);
}
@@ -165,7 +173,7 @@ public class CPathContainerWizard extends Wizard {
ExceptionHandler.handle(e, getShell(), title, message);
}
- private CPathContainerDescriptor findDescriptorPage(CPathContainerDescriptor[] containers, IPathEntry entry) {
+ private IContainerDescriptor findDescriptorPage(IContainerDescriptor[] containers, IPathEntry entry) {
for (int i = 0; i < containers.length; i++) {
if (containers[i].canEdit(entry)) {
return containers[i];
@@ -188,6 +196,9 @@ public class CPathContainerWizard extends Wizard {
if (fContainerPage != null) {
return fContainerPage.isPageComplete();
}
+ if (fFilterPage != null) {
+ return fFilterPage.isPageComplete();
+ }
return false;
}
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/cpaths/CPathEntryMessages.properties b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/cpaths/CPathEntryMessages.properties
index c546f6030c4..0d188134345 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/cpaths/CPathEntryMessages.properties
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/cpaths/CPathEntryMessages.properties
@@ -20,32 +20,36 @@ CPathsPropertyPage.unsavedchanges.button.ignore=Apply Later
BuildPathsBlock.tab.libraries=&Libraries
+ProjectContainer.label=Project Path Entries
+
+# -------- ExtendingCPathBasePage ---------
+ExtendingCPathBasePage.editSourcePaths=Edit Source Paths...
+ExtendingCPathBasePage.sourcePaths=Source Paths:
+
# -------- SymbolsEntryPage ---------
SymbolEntryPage.title=Symbols
-SymbolEntryPage.add=Add User Defined...
-SymbolEntryPage.addFromWorkspace=Add from Workspace...
+SymbolEntryPage.addUser=Add User Defined...
SymbolEntryPage.addContributed=Add Contributed...
SymbolEntryPage.remove=Remove
SymbolEntryPage.edit=Edit...
SymbolEntryPage.listName=Defines:
-SymbolEntryPage.editSourcePaths=Edit Source Paths...
-SymbolEntryPage.sourcePaths=Source Paths:
-IncludeEntryPage.addExternal.title=Add User Symbol
-IncludeEntryPage.addExternal.message=Symbol definition:
-
+SymbolEntryPage.addExternal.title=Add User Symbol
+SymbolEntryPage.addExternal.message=Symbol definition:
+SymbolEntryPage.ContainerDialog.new.title=Contributed Symbols Selection
+SymbolEntryPage.ContainerDialog.edit.title=Contributed Symbols Path Selection
# ------- IncludeEntryPage ----------
IncludeEntryPage.title=Include Paths
-IncludeEntryPage.add=Add External...
+IncludeEntryPage.addExternal=Add External...
IncludeEntryPage.addFromWorkspace=Add From Workspace...
IncludeEntryPage.addContributed=Add Contributed...
IncludeEntryPage.remove=Remove
IncludeEntryPage.edit=Edit...
IncludeEntryPage.listName=Include Paths:
-IncludeEntryPage.editSourcePaths=Edit Source Paths...
-IncludeEntryPage.sourcePaths=Source Paths:
IncludeEntryPage.addExternal.button.browse=Browse...
IncludeEntryPage.addExternal.title=Add External Include Path
IncludeEntryPage.addExternal.message=Include path:
+IncludeEntryPage.ContainerDialog.new.title=Contributed Include Path Selection
+IncludeEntryPage.ContainerDialog.edit.title=Contributed Include Path Selection
# ------- BuildPathsBlock -------
CPathsBlock.path.up.button=&Up
@@ -55,7 +59,6 @@ CPathsBlock.path.uncheckall.button=D&eselect All
CPathsBlock.path.label=Path order and exported entries:\n(Exported entries are contributed to dependent projects)
CPathsBlock.warning.EntryMissing=Build path entry is missing: {0}
CPathsBlock.warning.EntriesMissing={0} project path entries are missing.
-CPathsBlock.operationdesc_project=Creating project...
CPathsBlock.operationdesc_c=Setting project paths...
# ------- SourcePathEntryPage-------
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/cpaths/CPathFilterPage.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/cpaths/CPathFilterPage.java
new file mode 100644
index 00000000000..663348dfe5d
--- /dev/null
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/cpaths/CPathFilterPage.java
@@ -0,0 +1,96 @@
+/*
+ * Created on Apr 26, 2004
+ *
+ * Copyright (c) 2002,2003 QNX Software Systems Ltd.
+ *
+ * Contributors:
+ * QNX Software Systems - Initial API and implementation
+***********************************************************************/
+package org.eclipse.cdt.internal.ui.dialogs.cpaths;
+
+import java.util.List;
+
+import org.eclipse.cdt.core.model.IPathEntry;
+import org.eclipse.cdt.internal.ui.viewsupport.ListContentProvider;
+import org.eclipse.jface.dialogs.Dialog;
+import org.eclipse.jface.viewers.CheckStateChangedEvent;
+import org.eclipse.jface.viewers.CheckboxTableViewer;
+import org.eclipse.jface.viewers.ICheckStateListener;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.wizard.WizardPage;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Label;
+
+
+public class CPathFilterPage extends WizardPage {
+ private final int fFilterType;
+
+ private CheckboxTableViewer viewer;
+ private IPathEntry fContainerPath;
+ private List fPaths;
+
+ protected CPathFilterPage(int filterType) {
+ super("CPathFilterPage"); //$NON-NLS-1$
+ fFilterType = filterType;
+ }
+
+
+ public void createControl(Composite parent) {
+ Composite container = new Composite(parent, SWT.NULL);
+ GridLayout layout = new GridLayout();
+ layout.numColumns = 2;
+ container.setLayout(layout);
+ Label label = new Label(container, SWT.NULL);
+ label.setText(CPathEntryMessages.getString("CPathFilterPage.label")); //$NON-NLS-1$
+ GridData gd = new GridData();
+ gd.horizontalSpan = 2;
+ label.setLayoutData(gd);
+ viewer =
+ CheckboxTableViewer.newCheckList(
+ container,
+ SWT.BORDER | SWT.V_SCROLL | SWT.H_SCROLL);
+ viewer.setContentProvider(new ListContentProvider());
+ viewer.setLabelProvider(new CPElementLabelProvider());
+ viewer.addCheckStateListener(new ICheckStateListener() {
+ public void checkStateChanged(CheckStateChangedEvent event) {
+ // Prevent user to change checkbox states
+ viewer.setChecked(event.getElement(), !event.getChecked());
+ }
+ });
+ viewer.addSelectionChangedListener(new ISelectionChangedListener() {
+ public void selectionChanged(SelectionChangedEvent e) {
+ handleSelectionChanged((IStructuredSelection) e.getSelection());
+ }
+ });
+ viewer.addFilter(new CPElementFilter(fFilterType, true));
+ gd = new GridData(GridData.FILL_BOTH);
+ gd.widthHint = 400;
+ gd.heightHint = 300;
+ viewer.getTable().setLayoutData(gd);
+ setControl(container);
+ Dialog.applyDialogFont(container);
+ }
+
+
+ public void setVisible(boolean visible) {
+ if (fPaths != null) {
+ viewer.setInput(fPaths);
+ }
+ }
+ protected void handleSelectionChanged(IStructuredSelection selection) {
+ }
+
+ public void setEntries(IPathEntry entry) {
+ fContainerPath = entry;
+ }
+
+ public IPathEntry[] getSelectedEntries() {
+ return (IPathEntry[]) viewer.getCheckedElements();
+ }
+
+}
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/cpaths/CPathFilterPathPage.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/cpaths/CPathFilterPathPage.java
new file mode 100644
index 00000000000..fefc2a34c60
--- /dev/null
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/cpaths/CPathFilterPathPage.java
@@ -0,0 +1,20 @@
+/*
+ * Created on Apr 26, 2004
+ *
+ * Copyright (c) 2002,2003 QNX Software Systems Ltd.
+ *
+ * Contributors:
+ * QNX Software Systems - Initial API and implementation
+***********************************************************************/
+package org.eclipse.cdt.internal.ui.dialogs.cpaths;
+
+import org.eclipse.jface.wizard.Wizard;
+
+
+public class CPathFilterPathPage extends Wizard {
+
+ public boolean performFinish() {
+ return true;
+ }
+
+}
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/cpaths/CPathIncludeEntryPage.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/cpaths/CPathIncludeEntryPage.java
index 70030eb31c0..f89f0310fbb 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/cpaths/CPathIncludeEntryPage.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/cpaths/CPathIncludeEntryPage.java
@@ -9,16 +9,29 @@
******************************************************************************/
package org.eclipse.cdt.internal.ui.dialogs.cpaths;
+import java.util.ArrayList;
import java.util.List;
+import org.eclipse.cdt.core.model.CoreModel;
+import org.eclipse.cdt.core.model.ICContainer;
import org.eclipse.cdt.core.model.ICElement;
+import org.eclipse.cdt.core.model.ICProject;
+import org.eclipse.cdt.core.model.IIncludeEntry;
import org.eclipse.cdt.core.model.IPathEntry;
+import org.eclipse.cdt.internal.ui.wizards.NewWizardMessages;
+import org.eclipse.cdt.internal.ui.wizards.TypedElementSelectionValidator;
+import org.eclipse.cdt.internal.ui.wizards.TypedViewerFilter;
import org.eclipse.cdt.internal.ui.wizards.dialogfields.ITreeListAdapter;
+import org.eclipse.cdt.ui.CElementContentProvider;
+import org.eclipse.core.resources.IContainer;
+import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResource;
+import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.Path;
import org.eclipse.jface.dialogs.IInputValidator;
import org.eclipse.jface.dialogs.InputDialog;
import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.jface.viewers.ViewerFilter;
import org.eclipse.jface.window.Window;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
@@ -27,18 +40,88 @@ import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.DirectoryDialog;
import org.eclipse.swt.widgets.Shell;
+import org.eclipse.ui.dialogs.ElementTreeSelectionDialog;
+import org.eclipse.ui.model.WorkbenchLabelProvider;
public class CPathIncludeEntryPage extends ExtendedCPathBasePage {
+ private static final int IDX_ADD_USER = 0;
+ private static final int IDX_ADD_WORKSPACE = 1;
+ private static final int IDX_ADD_CONTRIBUTED = 2;
+ private static final int IDX_EDIT = 4;
+ private static final int IDX_REMOVE = 5;
+
+ private static final String[] buttonLabel = new String[] {
+ /* 0 */CPathEntryMessages.getString("IncludeEntryPage.addExternal"), //$NON-NLS-1$
+ /* 1 */CPathEntryMessages.getString("IncludeEntryPage.addFromWorkspace"), //$NON-NLS-1$
+ /* 2 */CPathEntryMessages.getString("IncludeEntryPage.addContributed"), null, //$NON-NLS-1$
+ /* 4 */CPathEntryMessages.getString("IncludeEntryPage.edit"), //$NON-NLS-1$
+ /* 5 */CPathEntryMessages.getString("IncludeEntryPage.remove")}; //$NON-NLS-1$
+
public CPathIncludeEntryPage(ITreeListAdapter adapter) {
- super(adapter, "IncludeEntryPage"); //$NON-NLS-1$
+ super(adapter, CPathEntryMessages.getString("IncludeEntryPage.title"), //$NON-NLS-1$
+ CPathEntryMessages.getString("IncludeEntryPage.listName"), buttonLabel); //$NON-NLS-1$
}
- public int getEntryKind() {
- return IPathEntry.CDT_INCLUDE;
+ protected void buttonPressed(int indx, List selected) {
+ switch (indx) {
+ case IDX_ADD_USER:
+ addInclude();
+ break;
+ case IDX_ADD_WORKSPACE:
+ addFromWorkspace();
+ break;
+ case IDX_ADD_CONTRIBUTED:
+ addContributed();
+ break;
+ case IDX_EDIT:
+ if (canEdit(selected)) {
+ editInclude((CPElement) selected.get(0));
+ }
+ break;
+ case IDX_REMOVE:
+ if (canRemove(selected)) {
+ removeInclude((CPElement) selected.get(0));
+ }
+ break;
+ }
}
- protected void addPath() {
+ public boolean isEntryKind(int kind) {
+ return IPathEntry.CDT_INCLUDE == kind;
+ }
+
+ protected void pathSelectionChanged() {
+ List selected = getPathList().getSelectedElements();
+ getPathList().enableButton(IDX_REMOVE, canRemove(selected));
+ getPathList().enableButton(IDX_EDIT, canEdit(selected));
+ }
+
+ public void createControl(Composite parent) {
+ super.createControl(parent);
+ getPathList().enableButton(IDX_REMOVE, false);
+ getPathList().enableButton(IDX_EDIT, false);
+ }
+
+ protected boolean canRemove(List selected) {
+ return !selected.isEmpty();
+ }
+
+ protected boolean canEdit(List selected) {
+ if (!selected.isEmpty()) {
+ return !isPathInheritedFromSelected((CPElement) selected.get(0));
+ }
+ return false;
+ }
+
+ protected void editInclude(CPElement element) {
+ }
+
+ protected void removeInclude(CPElement element) {
+ removeFromSelectedPath(element);
+ }
+
+ protected void addInclude() {
InputDialog dialog = new SelectPathInputDialog(getShell(),
CPathEntryMessages.getString("IncludeEntryPage.addExternal.title"), //$NON-NLS-1$
CPathEntryMessages.getString("IncludeEntryPage.addExternal.message"), null, null); //$NON-NLS-1$
@@ -46,19 +129,138 @@ public class CPathIncludeEntryPage extends ExtendedCPathBasePage {
if (dialog.open() == Window.OK) {
newItem = dialog.getValue();
if (newItem != null && !newItem.equals("")) { //$NON-NLS-1$
- List cplist = fPathList.getElements();
-
- CPListElement newPath = newCPElement(((ICElement) getSelection().get(0)).getResource(), null);
- newPath.setAttribute(CPListElement.INCLUDE, new Path(newItem));
+ List cplist = getPathList().getElements();
+ ICElement element = (ICElement) getSelection().get(0);
+ CPElement newPath = new CPElement(element.getCProject(), IPathEntry.CDT_INCLUDE, element.getPath(),
+ element.getResource());
+ newPath.setAttribute(CPElement.INCLUDE, new Path(newItem));
if (!cplist.contains(newPath)) {
- fPathList.addElement(newPath);
+ getPathList().addElement(newPath);
fCPathList.add(newPath);
- fPathList.postSetSelection(new StructuredSelection(newPath));
+ getPathList().postSetSelection(new StructuredSelection(newPath));
}
}
}
}
+ protected void addFromWorkspace() {
+ CPElement[] includes = openWorkspacePathEntryDialog(null);
+ if (includes != null) {
+ int nElementsChosen = includes.length;
+ // remove duplicates
+ List cplist = getPathList().getElements();
+ List elementsToAdd = new ArrayList(nElementsChosen);
+
+ for (int i = 0; i < nElementsChosen; i++) {
+ CPElement curr = includes[i];
+ if (!cplist.contains(curr) && !elementsToAdd.contains(curr)) {
+ elementsToAdd.add(curr);
+ }
+ }
+
+ getPathList().addElements(elementsToAdd);
+ fCPathList.addAll(elementsToAdd);
+ getPathList().postSetSelection(new StructuredSelection(elementsToAdd));
+ }
+
+ }
+
+ protected CPElement[] openWorkspacePathEntryDialog(CPElement existing) {
+ Class[] acceptedClasses = new Class[] { ICProject.class, IProject.class, IContainer.class, ICContainer.class};
+ TypedElementSelectionValidator validator = new TypedElementSelectionValidator(acceptedClasses, existing == null);
+ ViewerFilter filter = new TypedViewerFilter(acceptedClasses);
+
+ String title = (existing == null) ? CPathEntryMessages.getString("IncludeEntryPage.fromWorkspaceDialog.new.title") //$NON-NLS-1$
+ : CPathEntryMessages.getString("IncludeEntryPage.fromWorkspaceDialog.edit.title"); //$NON-NLS-1$
+ String message = (existing == null) ? CPathEntryMessages.getString("IncludeEntryPage.fromWorkspaceDialog.new.description") //$NON-NLS-1$
+ : NewWizardMessages.getString("IncludeEntryPage.fromWorkspaceDialog.edit.description"); //$NON-NLS-1$
+
+ ElementTreeSelectionDialog dialog = new ElementTreeSelectionDialog(getShell(), new WorkbenchLabelProvider(),
+ new CElementContentProvider());
+ dialog.setValidator(validator);
+ dialog.setTitle(title);
+ dialog.setMessage(message);
+ dialog.addFilter(filter);
+ dialog.setInput(CoreModel.getDefault().getCModel());
+ if (existing == null) {
+ dialog.setInitialSelection(fCurrCProject);
+ } else {
+ dialog.setInitialSelection(existing.getCProject());
+ }
+
+ if (dialog.open() == Window.OK) {
+ Object[] elements = dialog.getResult();
+ CPElement[] res = new CPElement[elements.length];
+ ICElement element = (ICElement) getSelection().get(0);
+ for (int i = 0; i < res.length; i++) {
+ IProject project;
+ IPath includePath;
+ if (elements[i] instanceof IResource) {
+ project = ((IResource) elements[i]).getProject();
+ includePath = ((IResource) elements[i]).getProjectRelativePath();
+ } else {
+ project = ((ICElement) elements[i]).getCProject().getProject();
+ includePath = ((ICElement) elements[i]).getResource().getProjectRelativePath();
+ }
+ res[i] = new CPElement(element.getCProject(), IPathEntry.CDT_INCLUDE, element.getPath(), element.getResource());
+ res[i].setAttribute(CPElement.BASE, project.getFullPath().makeRelative());
+ res[i].setAttribute(CPElement.INCLUDE, includePath);
+ }
+ return res;
+ }
+ return null;
+ }
+
+ protected CPElement[] openContainerSelectionDialog(CPElement existing) {
+ IPathEntry elem = null;
+ String title;
+ if (existing == null) {
+ title = CPathEntryMessages.getString("IncludeEntryPage.ContainerDialog.new.title"); //$NON-NLS-1$
+ } else {
+ title = CPathEntryMessages.getString("IncludeEntryPage.ContainerDialog.edit.title"); //$NON-NLS-1$
+ elem = existing.getPathEntry();
+ }
+ CPathContainerWizard wizard = new CPathContainerWizard(elem, null, fCurrCProject, getRawClasspath(), IPathEntry.CDT_INCLUDE);
+ wizard.setWindowTitle(title);
+ if (CPathContainerWizard.openWizard(getShell(), wizard) == Window.OK) {
+ IPathEntry parent = wizard.getEntriesParent();
+ IPathEntry[] elements = wizard.getEntries();
+ IResource resource = ((ICElement) getSelection().get(0)).getResource();
+
+ if (elements != null) {
+ CPElement[] res = new CPElement[elements.length];
+ for (int i = 0; i < res.length; i++) {
+ res[i] = new CPElement(fCurrCProject, IPathEntry.CDT_INCLUDE, resource.getFullPath(), resource);
+ res[i].setAttribute(CPElement.INCLUDE, ((IIncludeEntry)elements[i]).getIncludePath());
+ res[i].setAttribute(CPElement.BASE_REF, parent.getPath());
+ }
+ return res;
+ }
+ }
+ return null;
+ }
+
+ protected void addContributed() {
+ CPElement[] includes = openContainerSelectionDialog(null);
+ if (includes != null) {
+ int nElementsChosen = includes.length;
+ // remove duplicates
+ List cplist = getPathList().getElements();
+ List elementsToAdd = new ArrayList(nElementsChosen);
+
+ for (int i = 0; i < nElementsChosen; i++) {
+ CPElement curr = includes[i];
+ if (!cplist.contains(curr) && !elementsToAdd.contains(curr)) {
+ elementsToAdd.add(curr);
+ }
+ }
+
+ getPathList().addElements(elementsToAdd);
+ fCPathList.addAll(elementsToAdd);
+ getPathList().postSetSelection(new StructuredSelection(includes));
+ }
+ }
+
private class SelectPathInputDialog extends InputDialog {
public SelectPathInputDialog(Shell parentShell, String dialogTitle, String dialogMessage, String initialValue,
@@ -87,14 +289,4 @@ public class CPathIncludeEntryPage extends ExtendedCPathBasePage {
}
}
-
- protected CPListElement newCPElement(IResource resource, CPListElement copyFrom) {
- CPListElement element = new CPListElement(fCurrCProject, getEntryKind(), resource.getFullPath(), resource);
- if (copyFrom != null) {
- element.setAttribute(CPListElement.INCLUDE, copyFrom.getAttribute(CPListElement.INCLUDE));
- element.setAttribute(CPListElement.SYSTEM_INCLUDE, copyFrom.getAttribute(CPListElement.SYSTEM_INCLUDE));
- }
- return element;
- }
-
}
\ No newline at end of file
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/cpaths/CPathOutputEntryPage.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/cpaths/CPathOutputEntryPage.java
index bd882f2bf45..baff906bbf5 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/cpaths/CPathOutputEntryPage.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/cpaths/CPathOutputEntryPage.java
@@ -84,11 +84,11 @@ public class CPathOutputEntryPage extends CPathBasePage {
/* 3 = IDX_REMOVE */CPathEntryMessages.getString("OutputPathEntryPage.folders.remove.button") //$NON-NLS-1$
};
- fOutputList = new TreeListDialogField(adapter, buttonLabels, new CPListLabelProvider());
+ fOutputList = new TreeListDialogField(adapter, buttonLabels, new CPElementLabelProvider());
fOutputList.setDialogFieldListener(adapter);
fOutputList.setLabelText(CPathEntryMessages.getString("OutputPathEntryPage.folders.label")); //$NON-NLS-1$
- fOutputList.setViewerSorter(new CPListElementSorter());
+ fOutputList.setViewerSorter(new CPElementSorter());
fOutputList.enableButton(IDX_EDIT, false);
}
@@ -109,8 +109,8 @@ public class CPathOutputEntryPage extends CPathBasePage {
fOutputList.setElements(folders);
for (int i = 0; i < folders.size(); i++) {
- CPListElement cpe = (CPListElement) folders.get(i);
- IPath[] patterns = (IPath[]) cpe.getAttribute(CPListElement.EXCLUSION);
+ CPElement cpe = (CPElement) folders.get(i);
+ IPath[] patterns = (IPath[]) cpe.getAttribute(CPElement.EXCLUSION);
if (patterns.length > 0) {
fOutputList.expandElement(cpe, 3);
}
@@ -130,8 +130,8 @@ public class CPathOutputEntryPage extends CPathBasePage {
// expand
List elements = fOutputList.getElements();
for (int i = 0; i < elements.size(); i++) {
- CPListElement elem = (CPListElement) elements.get(i);
- IPath[] patterns = (IPath[]) elem.getAttribute(CPListElement.EXCLUSION);
+ CPElement elem = (CPElement) elements.get(i);
+ IPath[] patterns = (IPath[]) elem.getAttribute(CPElement.EXCLUSION);
if (patterns.length > 0) {
fOutputList.expandElement(elem, 3);
}
@@ -161,21 +161,21 @@ public class CPathOutputEntryPage extends CPathBasePage {
}
public Object[] getChildren(TreeListDialogField field, Object element) {
- if (element instanceof CPListElement) {
- return ((CPListElement) element).getChildren();
+ if (element instanceof CPElement) {
+ return ((CPElement) element).getChildren();
}
return EMPTY_ARR;
}
public Object getParent(TreeListDialogField field, Object element) {
- if (element instanceof CPListElementAttribute) {
- return ((CPListElementAttribute) element).getParent();
+ if (element instanceof CPElementAttribute) {
+ return ((CPElementAttribute) element).getParent();
}
return null;
}
public boolean hasChildren(TreeListDialogField field, Object element) {
- return (element instanceof CPListElement);
+ return (element instanceof CPElement);
}
// ---------- IDialogFieldListener --------
@@ -226,20 +226,20 @@ public class CPathOutputEntryPage extends CPathBasePage {
IProject project = fCurrCProject.getProject();
if (project.exists()) {
if (hasFolders(project)) {
- CPListElement[] srcentries = openOutputContainerDialog(null);
+ CPElement[] srcentries = openOutputContainerDialog(null);
if (srcentries != null) {
for (int i = 0; i < srcentries.length; i++) {
elementsToAdd.add(srcentries[i]);
}
}
} else {
- CPListElement entry = openNewOutputContainerDialog(null, true);
+ CPElement entry = openNewOutputContainerDialog(null, true);
if (entry != null) {
elementsToAdd.add(entry);
}
}
} else {
- CPListElement entry = openNewOutputContainerDialog(null, false);
+ CPElement entry = openNewOutputContainerDialog(null, false);
if (entry != null) {
elementsToAdd.add(entry);
}
@@ -275,14 +275,14 @@ public class CPathOutputEntryPage extends CPathBasePage {
}
Object elem = selElements.get(0);
if (fOutputList.getIndexOfElement(elem) != -1) {
- editElementEntry((CPListElement) elem);
- } else if (elem instanceof CPListElementAttribute) {
- editAttributeEntry((CPListElementAttribute) elem);
+ editElementEntry((CPElement) elem);
+ } else if (elem instanceof CPElementAttribute) {
+ editAttributeEntry((CPElementAttribute) elem);
}
}
- private void editElementEntry(CPListElement elem) {
- CPListElement res = null;
+ private void editElementEntry(CPElement elem) {
+ CPElement res = null;
res = openNewOutputContainerDialog(elem, true);
@@ -291,13 +291,13 @@ public class CPathOutputEntryPage extends CPathBasePage {
}
}
- private void editAttributeEntry(CPListElementAttribute elem) {
+ private void editAttributeEntry(CPElementAttribute elem) {
String key = elem.getKey();
- if (key.equals(CPListElement.EXCLUSION)) {
- CPListElement selElement = elem.getParent();
+ if (key.equals(CPElement.EXCLUSION)) {
+ CPElement selElement = elem.getParent();
ExclusionPatternDialog dialog = new ExclusionPatternDialog(getShell(), selElement);
if (dialog.open() == Window.OK) {
- selElement.setAttribute(CPListElement.EXCLUSION, dialog.getExclusionPattern());
+ selElement.setAttribute(CPElement.EXCLUSION, dialog.getExclusionPattern());
fOutputList.refresh();
fCPathList.dialogFieldChanged(); // validate
}
@@ -314,10 +314,10 @@ public class CPathOutputEntryPage extends CPathBasePage {
List selElements = fOutputList.getSelectedElements();
for (int i = selElements.size() - 1; i >= 0; i--) {
Object elem = selElements.get(i);
- if (elem instanceof CPListElementAttribute) {
- CPListElementAttribute attrib = (CPListElementAttribute) elem;
+ if (elem instanceof CPElementAttribute) {
+ CPElementAttribute attrib = (CPElementAttribute) elem;
String key = attrib.getKey();
- Object value = key.equals(CPListElement.EXCLUSION) ? new Path[0] : null;
+ Object value = key.equals(CPElement.EXCLUSION) ? new Path[0] : null;
attrib.getParent().setAttribute(key, value);
selElements.remove(i);
}
@@ -336,17 +336,17 @@ public class CPathOutputEntryPage extends CPathBasePage {
}
for (int i = 0; i < selElements.size(); i++) {
Object elem = selElements.get(i);
- if (elem instanceof CPListElementAttribute) {
- CPListElementAttribute attrib = (CPListElementAttribute) elem;
- if (attrib.getKey().equals(CPListElement.EXCLUSION)) {
+ if (elem instanceof CPElementAttribute) {
+ CPElementAttribute attrib = (CPElementAttribute) elem;
+ if (attrib.getKey().equals(CPElement.EXCLUSION)) {
if (((IPath[]) attrib.getValue()).length == 0) {
return false;
}
} else if (attrib.getValue() == null) {
return false;
}
- } else if (elem instanceof CPListElement) {
- CPListElement curr = (CPListElement) elem;
+ } else if (elem instanceof CPElement) {
+ CPElement curr = (CPElement) elem;
if (curr.getParentContainer() != null) {
return false;
}
@@ -360,10 +360,10 @@ public class CPathOutputEntryPage extends CPathBasePage {
return false;
}
Object elem = selElements.get(0);
- if (elem instanceof CPListElement) {
+ if (elem instanceof CPElement) {
return false;
}
- if (elem instanceof CPListElementAttribute) {
+ if (elem instanceof CPElementAttribute) {
return true;
}
return false;
@@ -389,7 +389,7 @@ public class CPathOutputEntryPage extends CPathBasePage {
int lastRemovePos = nEntries;
int afterLastSourcePos = 0;
for (int i = nEntries - 1; i >= 0; i--) {
- CPListElement cpe = (CPListElement) cpelements.get(i);
+ CPElement cpe = (CPElement) cpelements.get(i);
int kind = cpe.getEntryKind();
if (isEntryKind(kind)) {
if (!srcelements.remove(cpe)) {
@@ -411,7 +411,7 @@ public class CPathOutputEntryPage extends CPathBasePage {
}
}
- private CPListElement openNewOutputContainerDialog(CPListElement existing, boolean includeLinked) {
+ private CPElement openNewOutputContainerDialog(CPElement existing, boolean includeLinked) {
if (includeLinked) {
NewFolderDialog dialog = new NewFolderDialog(getShell(), fCurrCProject.getProject());
if (dialog.open() == Window.OK) {
@@ -445,7 +445,7 @@ public class CPathOutputEntryPage extends CPathBasePage {
}
}
- private CPListElement[] openOutputContainerDialog(CPListElement existing) {
+ private CPElement[] openOutputContainerDialog(CPElement existing) {
Class[] acceptedClasses = new Class[] { IProject.class, IFolder.class};
List existingContainers = getExistingContainers(null);
@@ -482,7 +482,7 @@ public class CPathOutputEntryPage extends CPathBasePage {
}
if (dialog.open() == Window.OK) {
Object[] elements = dialog.getResult();
- CPListElement[] res = new CPListElement[elements.length];
+ CPElement[] res = new CPElement[elements.length];
for (int i = 0; i < res.length; i++) {
IResource elem = (IResource) elements[i];
res[i] = newCPOutputElement(elem);
@@ -492,11 +492,11 @@ public class CPathOutputEntryPage extends CPathBasePage {
return null;
}
- private List getExistingContainers(CPListElement existing) {
+ private List getExistingContainers(CPElement existing) {
List res = new ArrayList();
List cplist = fOutputList.getElements();
for (int i = 0; i < cplist.size(); i++) {
- CPListElement elem = (CPListElement) cplist.get(i);
+ CPElement elem = (CPElement) cplist.get(i);
if (elem != existing) {
IResource resource = elem.getResource();
if (resource instanceof IContainer) { // defensive code
@@ -507,9 +507,9 @@ public class CPathOutputEntryPage extends CPathBasePage {
return res;
}
- private CPListElement newCPOutputElement(IResource res) {
+ private CPElement newCPOutputElement(IResource res) {
Assert.isNotNull(res);
- return new CPListElement(fCurrCProject, IPathEntry.CDT_OUTPUT, res.getFullPath(), res);
+ return new CPElement(fCurrCProject, IPathEntry.CDT_OUTPUT, res.getFullPath(), res);
}
/*
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/cpaths/CPathProjectsEntryPage.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/cpaths/CPathProjectsEntryPage.java
index 2ad68f1fe0b..b985b9ab1ca 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/cpaths/CPathProjectsEntryPage.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/cpaths/CPathProjectsEntryPage.java
@@ -46,13 +46,13 @@ public class CPathProjectsEntryPage extends CPathBasePage {
String[] buttonLabels = new String[] { /* 0 */CPathEntryMessages.getString("ProjectsEntryPage.projects.checkall.button"), //$NON-NLS-1$
/* 1 */CPathEntryMessages.getString("ProjectsEntryWorkbookPage.projects.uncheckall.button")}; //$NON-NLS-1$
- fProjectsList = new CheckedListDialogField(null, buttonLabels, new CPListLabelProvider());
+ fProjectsList = new CheckedListDialogField(null, buttonLabels, new CPElementLabelProvider());
fProjectsList.setDialogFieldListener(listener);
fProjectsList.setLabelText(CPathEntryMessages.getString("ProjectsEntryPage.projects.label")); //$NON-NLS-1$
fProjectsList.setCheckAllButtonIndex(0);
fProjectsList.setUncheckAllButtonIndex(1);
- fProjectsList.setViewerSorter(new CPListElementSorter());
+ fProjectsList.setViewerSorter(new CPElementSorter());
fCPathList = cPathList;
}
@@ -126,7 +126,7 @@ public class CPathProjectsEntryPage extends CPathBasePage {
// add the projects-cpentries that are already on the C Path
List cpelements = fCPathList.getElements();
for (int i = cpelements.size() - 1; i >= 0; i--) {
- CPListElement cpelem = (CPListElement) cpelements.get(i);
+ CPElement cpelem = (CPElement) cpelements.get(i);
if (isEntryKind(cpelem.getEntryKind())) {
existingProjects.add(cpelem.getResource());
projects.add(cpelem);
@@ -137,7 +137,7 @@ public class CPathProjectsEntryPage extends CPathBasePage {
for (int i = 0; i < cprojects.length; i++) {
IProject proj = cprojects[i].getProject();
if (!existingProjects.contains(proj)) {
- projects.add(new CPListElement(fCurrCProject, IPathEntry.CDT_PROJECT, proj.getFullPath(), proj));
+ projects.add(new CPElement(fCurrCProject, IPathEntry.CDT_PROJECT, proj.getFullPath(), proj));
}
}
} catch (CModelException e) {
@@ -155,7 +155,7 @@ public class CPathProjectsEntryPage extends CPathBasePage {
List pelements = fCPathList.getElements();
// backwards, as entries will be deleted
for (int i = pelements.size() - 1; i >= 0; i--) {
- CPListElement pe = (CPListElement) pelements.get(i);
+ CPElement pe = (CPElement) pelements.get(i);
if (isEntryKind(pe.getEntryKind())) {
if (!projelements.remove(pe)) {
pelements.remove(i);
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/cpaths/CPathSourceEntryPage.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/cpaths/CPathSourceEntryPage.java
index e40ea6eb947..f981972df28 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/cpaths/CPathSourceEntryPage.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/cpaths/CPathSourceEntryPage.java
@@ -84,11 +84,11 @@ public class CPathSourceEntryPage extends CPathBasePage {
/* 3 = IDX_REMOVE */CPathEntryMessages.getString("SourcePathEntryPage.folders.remove.button") //$NON-NLS-1$
};
- fFoldersList = new TreeListDialogField(adapter, buttonLabels, new CPListLabelProvider());
+ fFoldersList = new TreeListDialogField(adapter, buttonLabels, new CPElementLabelProvider());
fFoldersList.setDialogFieldListener(adapter);
fFoldersList.setLabelText(CPathEntryMessages.getString("SourcePathEntryPage.folders.label")); //$NON-NLS-1$
- fFoldersList.setViewerSorter(new CPListElementSorter());
+ fFoldersList.setViewerSorter(new CPElementSorter());
fFoldersList.enableButton(IDX_EDIT, false);
}
@@ -108,8 +108,8 @@ public class CPathSourceEntryPage extends CPathBasePage {
fFoldersList.setElements(folders);
for (int i = 0; i < folders.size(); i++) {
- CPListElement cpe = (CPListElement) folders.get(i);
- IPath[] patterns = (IPath[]) cpe.getAttribute(CPListElement.EXCLUSION);
+ CPElement cpe = (CPElement) folders.get(i);
+ IPath[] patterns = (IPath[]) cpe.getAttribute(CPElement.EXCLUSION);
if (patterns.length > 0) {
fFoldersList.expandElement(cpe, 3);
}
@@ -129,8 +129,8 @@ public class CPathSourceEntryPage extends CPathBasePage {
// expand
List elements = fFoldersList.getElements();
for (int i = 0; i < elements.size(); i++) {
- CPListElement elem = (CPListElement) elements.get(i);
- IPath[] patterns = (IPath[]) elem.getAttribute(CPListElement.EXCLUSION);
+ CPElement elem = (CPElement) elements.get(i);
+ IPath[] patterns = (IPath[]) elem.getAttribute(CPElement.EXCLUSION);
if (patterns.length > 0) {
fFoldersList.expandElement(elem, 3);
}
@@ -160,21 +160,21 @@ public class CPathSourceEntryPage extends CPathBasePage {
}
public Object[] getChildren(TreeListDialogField field, Object element) {
- if (element instanceof CPListElement) {
- return ((CPListElement) element).getChildren();
+ if (element instanceof CPElement) {
+ return ((CPElement) element).getChildren();
}
return EMPTY_ARR;
}
public Object getParent(TreeListDialogField field, Object element) {
- if (element instanceof CPListElementAttribute) {
- return ((CPListElementAttribute) element).getParent();
+ if (element instanceof CPElementAttribute) {
+ return ((CPElementAttribute) element).getParent();
}
return null;
}
public boolean hasChildren(TreeListDialogField field, Object element) {
- return (element instanceof CPListElement);
+ return (element instanceof CPElement);
}
// ---------- IDialogFieldListener --------
@@ -225,20 +225,20 @@ public class CPathSourceEntryPage extends CPathBasePage {
IProject project = fCurrCProject.getProject();
if (project.exists()) {
if (hasFolders(project)) {
- CPListElement[] srcentries = openSourceContainerDialog(null);
+ CPElement[] srcentries = openSourceContainerDialog(null);
if (srcentries != null) {
for (int i = 0; i < srcentries.length; i++) {
elementsToAdd.add(srcentries[i]);
}
}
} else {
- CPListElement entry = openNewSourceContainerDialog(null, true);
+ CPElement entry = openNewSourceContainerDialog(null, true);
if (entry != null) {
elementsToAdd.add(entry);
}
}
} else {
- CPListElement entry = openNewSourceContainerDialog(null, false);
+ CPElement entry = openNewSourceContainerDialog(null, false);
if (entry != null) {
elementsToAdd.add(entry);
}
@@ -274,14 +274,14 @@ public class CPathSourceEntryPage extends CPathBasePage {
}
Object elem = selElements.get(0);
if (fFoldersList.getIndexOfElement(elem) != -1) {
- editElementEntry((CPListElement) elem);
- } else if (elem instanceof CPListElementAttribute) {
- editAttributeEntry((CPListElementAttribute) elem);
+ editElementEntry((CPElement) elem);
+ } else if (elem instanceof CPElementAttribute) {
+ editAttributeEntry((CPElementAttribute) elem);
}
}
- private void editElementEntry(CPListElement elem) {
- CPListElement res = null;
+ private void editElementEntry(CPElement elem) {
+ CPElement res = null;
res = openNewSourceContainerDialog(elem, true);
@@ -290,13 +290,13 @@ public class CPathSourceEntryPage extends CPathBasePage {
}
}
- private void editAttributeEntry(CPListElementAttribute elem) {
+ private void editAttributeEntry(CPElementAttribute elem) {
String key = elem.getKey();
- if (key.equals(CPListElement.EXCLUSION)) {
- CPListElement selElement = elem.getParent();
+ if (key.equals(CPElement.EXCLUSION)) {
+ CPElement selElement = elem.getParent();
ExclusionPatternDialog dialog = new ExclusionPatternDialog(getShell(), selElement);
if (dialog.open() == Window.OK) {
- selElement.setAttribute(CPListElement.EXCLUSION, dialog.getExclusionPattern());
+ selElement.setAttribute(CPElement.EXCLUSION, dialog.getExclusionPattern());
fFoldersList.refresh();
fCPathList.dialogFieldChanged(); // validate
}
@@ -313,10 +313,10 @@ public class CPathSourceEntryPage extends CPathBasePage {
List selElements = fFoldersList.getSelectedElements();
for (int i = selElements.size() - 1; i >= 0; i--) {
Object elem = selElements.get(i);
- if (elem instanceof CPListElementAttribute) {
- CPListElementAttribute attrib = (CPListElementAttribute) elem;
+ if (elem instanceof CPElementAttribute) {
+ CPElementAttribute attrib = (CPElementAttribute) elem;
String key = attrib.getKey();
- Object value = key.equals(CPListElement.EXCLUSION) ? new Path[0] : null;
+ Object value = key.equals(CPElement.EXCLUSION) ? new Path[0] : null;
attrib.getParent().setAttribute(key, value);
selElements.remove(i);
}
@@ -335,17 +335,17 @@ public class CPathSourceEntryPage extends CPathBasePage {
}
for (int i = 0; i < selElements.size(); i++) {
Object elem = selElements.get(i);
- if (elem instanceof CPListElementAttribute) {
- CPListElementAttribute attrib = (CPListElementAttribute) elem;
- if (attrib.getKey().equals(CPListElement.EXCLUSION)) {
+ if (elem instanceof CPElementAttribute) {
+ CPElementAttribute attrib = (CPElementAttribute) elem;
+ if (attrib.getKey().equals(CPElement.EXCLUSION)) {
if (((IPath[]) attrib.getValue()).length == 0) {
return false;
}
} else if (attrib.getValue() == null) {
return false;
}
- } else if (elem instanceof CPListElement) {
- CPListElement curr = (CPListElement) elem;
+ } else if (elem instanceof CPElement) {
+ CPElement curr = (CPElement) elem;
if (curr.getParentContainer() != null) {
return false;
}
@@ -359,10 +359,10 @@ public class CPathSourceEntryPage extends CPathBasePage {
return false;
}
Object elem = selElements.get(0);
- if (elem instanceof CPListElement) {
+ if (elem instanceof CPElement) {
return false;
}
- if (elem instanceof CPListElementAttribute) {
+ if (elem instanceof CPElementAttribute) {
return true;
}
return false;
@@ -388,7 +388,7 @@ public class CPathSourceEntryPage extends CPathBasePage {
int lastRemovePos = nEntries;
int afterLastSourcePos = 0;
for (int i = nEntries - 1; i >= 0; i--) {
- CPListElement cpe = (CPListElement) cpelements.get(i);
+ CPElement cpe = (CPElement) cpelements.get(i);
int kind = cpe.getEntryKind();
if (isEntryKind(kind)) {
if (!srcelements.remove(cpe)) {
@@ -410,7 +410,7 @@ public class CPathSourceEntryPage extends CPathBasePage {
}
}
- private CPListElement openNewSourceContainerDialog(CPListElement existing, boolean includeLinked) {
+ private CPElement openNewSourceContainerDialog(CPElement existing, boolean includeLinked) {
if (includeLinked) {
NewFolderDialog dialog = new NewFolderDialog(getShell(), fCurrCProject.getProject());
if (dialog.open() == Window.OK) {
@@ -444,7 +444,7 @@ public class CPathSourceEntryPage extends CPathBasePage {
}
}
- private CPListElement[] openSourceContainerDialog(CPListElement existing) {
+ private CPElement[] openSourceContainerDialog(CPElement existing) {
Class[] acceptedClasses = new Class[] { IProject.class, IFolder.class};
List existingContainers = getExistingContainers(null);
@@ -481,7 +481,7 @@ public class CPathSourceEntryPage extends CPathBasePage {
}
if (dialog.open() == Window.OK) {
Object[] elements = dialog.getResult();
- CPListElement[] res = new CPListElement[elements.length];
+ CPElement[] res = new CPElement[elements.length];
for (int i = 0; i < res.length; i++) {
IResource elem = (IResource) elements[i];
res[i] = newCPSourceElement(elem);
@@ -491,11 +491,11 @@ public class CPathSourceEntryPage extends CPathBasePage {
return null;
}
- private List getExistingContainers(CPListElement existing) {
+ private List getExistingContainers(CPElement existing) {
List res = new ArrayList();
List cplist = fFoldersList.getElements();
for (int i = 0; i < cplist.size(); i++) {
- CPListElement elem = (CPListElement) cplist.get(i);
+ CPElement elem = (CPElement) cplist.get(i);
if (elem != existing) {
IResource resource = elem.getResource();
if (resource instanceof IContainer) { // defensive code
@@ -506,9 +506,9 @@ public class CPathSourceEntryPage extends CPathBasePage {
return res;
}
- private CPListElement newCPSourceElement(IResource res) {
+ private CPElement newCPSourceElement(IResource res) {
Assert.isNotNull(res);
- return new CPListElement(fCurrCProject, IPathEntry.CDT_SOURCE, res.getFullPath(), res);
+ return new CPElement(fCurrCProject, IPathEntry.CDT_SOURCE, res.getFullPath(), res);
}
/*
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/cpaths/CPathSymbolEntryPage.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/cpaths/CPathSymbolEntryPage.java
index 42eb021887b..2315fe51af5 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/cpaths/CPathSymbolEntryPage.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/cpaths/CPathSymbolEntryPage.java
@@ -9,27 +9,93 @@
******************************************************************************/
package org.eclipse.cdt.internal.ui.dialogs.cpaths;
+import java.util.ArrayList;
import java.util.List;
import org.eclipse.cdt.core.model.ICElement;
+import org.eclipse.cdt.core.model.IMacroEntry;
import org.eclipse.cdt.core.model.IPathEntry;
import org.eclipse.cdt.internal.ui.wizards.dialogfields.ITreeListAdapter;
import org.eclipse.core.resources.IResource;
import org.eclipse.jface.dialogs.InputDialog;
import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.jface.window.Window;
+import org.eclipse.swt.widgets.Composite;
public class CPathSymbolEntryPage extends ExtendedCPathBasePage {
+ private static final int IDX_ADD = 0;
+ private static final int IDX_ADD_CONTRIBUTED = 1;
+ private static final int IDX_EDIT = 3;
+ private static final int IDX_REMOVE = 4;
+
+ private final static String[] buttonLabel = new String[]{
+ /* 0 */CPathEntryMessages.getString("SymbolEntryPage.addUser"), //$NON-NLS-1$
+ /* 1 */CPathEntryMessages.getString("SymbolEntryPage.addContributed"), //$NON-NLS-1$
+ null, //$NON-NLS-1$
+ /* 3 */CPathEntryMessages.getString("SymbolEntryPage.edit"), //$NON-NLS-1$
+ /* 4 */CPathEntryMessages.getString("SymbolEntryPage.remove")}; //$NON-NLS-1$
+
public CPathSymbolEntryPage(ITreeListAdapter adapter) {
- super(adapter, "SymbolEntryPage"); //$NON-NLS-1$
+ super(adapter, CPathEntryMessages.getString("SymbolEntryPage.title"), //$NON-NLS-1$
+ CPathEntryMessages.getString("SymbolEntryPage.listName"), buttonLabel); //$NON-NLS-1$
}
- protected int getEntryKind() {
- return IPathEntry.CDT_MACRO;
+ protected void buttonPressed(int indx, List selected) {
+ switch (indx) {
+ case IDX_ADD :
+ addSymbol();
+ break;
+ case IDX_ADD_CONTRIBUTED :
+ break;
+ case IDX_EDIT :
+ if (canEdit(selected)) {
+ editSymbol((CPElement) selected.get(0));
+ }
+ break;
+ case IDX_REMOVE :
+ if (canRemove(selected)) {
+ removeSymbol((CPElement) selected.get(0));
+ }
+ break;
+ }
}
- protected void addPath() {
+ protected void pathSelectionChanged() {
+ List selected = getPathList().getSelectedElements();
+ getPathList().enableButton(IDX_REMOVE, canRemove(selected));
+ getPathList().enableButton(IDX_EDIT, canEdit(selected));
+ }
+
+ protected boolean canRemove(List selected) {
+ return !selected.isEmpty();
+ }
+
+ protected boolean canEdit(List selected) {
+ if (!selected.isEmpty()) {
+ return !isPathInheritedFromSelected((CPElement) selected.get(0));
+ }
+ return false;
+ }
+
+ protected void editSymbol(CPElement element) {
+ }
+
+ protected void removeSymbol(CPElement element) {
+ removeFromSelectedPath(element);
+ }
+
+ public void createControl(Composite parent) {
+ super.createControl(parent);
+ getPathList().enableButton(IDX_REMOVE, false);
+ getPathList().enableButton(IDX_EDIT, false);
+ }
+
+ public boolean isEntryKind(int kind) {
+ return IPathEntry.CDT_MACRO == kind;
+ }
+
+ protected void addSymbol() {
// Popup an entry dialog
InputDialog dialog = new InputDialog(getShell(), CPathEntryMessages.getString("SymbolEntryPage.addExternal.title"), //$NON-NLS-1$
CPathEntryMessages.getString("SymbolEntryPage.addExternal.message"), "", //$NON-NLS-1$ //$NON-NLS-2$
@@ -38,9 +104,9 @@ public class CPathSymbolEntryPage extends ExtendedCPathBasePage {
if (dialog.open() == Window.OK) {
symbol = dialog.getValue();
if (symbol != null && symbol.length() > 0) {
- List cplist = fPathList.getElements();
-
- CPListElement newPath = newCPElement(((ICElement) getSelection().get(0)).getResource(), null);
+ List cplist = getPathList().getElements();
+ IResource resource = ((ICElement) getSelection().get(0)).getResource();
+ CPElement newPath = new CPElement(fCurrCProject, IPathEntry.CDT_MACRO, resource.getFullPath(), resource);
String name, value = ""; //$NON-NLS-1$
int index = symbol.indexOf("="); //$NON-NLS-1$
if (index != -1) {
@@ -49,22 +115,63 @@ public class CPathSymbolEntryPage extends ExtendedCPathBasePage {
} else {
name = symbol.trim();
}
- newPath.setAttribute(CPListElement.MACRO_NAME, name);
- newPath.setAttribute(CPListElement.MACRO_VALUE, value);
+ newPath.setAttribute(CPElement.MACRO_NAME, name);
+ newPath.setAttribute(CPElement.MACRO_VALUE, value);
if (!cplist.contains(newPath)) {
- fPathList.addElement(newPath);
+ getPathList().addElement(newPath);
fCPathList.add(newPath);
- fPathList.postSetSelection(new StructuredSelection(newPath));
+ getPathList().postSetSelection(new StructuredSelection(newPath));
}
}
}
}
- protected CPListElement newCPElement(IResource resource, CPListElement copyFrom) {
- CPListElement element = new CPListElement(fCurrCProject, getEntryKind(), resource.getFullPath(), resource);
- if (copyFrom != null) {
- element.setAttribute(CPListElement.MACRO_NAME, copyFrom.getAttribute(CPListElement.MACRO_NAME));
+ protected void addContributed() {
+ CPElement[] includes = openContainerSelectionDialog(null);
+ if (includes != null) {
+ int nElementsChosen = includes.length;
+ // remove duplicates
+ List cplist = getPathList().getElements();
+ List elementsToAdd = new ArrayList(nElementsChosen);
+
+ for (int i = 0; i < nElementsChosen; i++) {
+ CPElement curr = includes[i];
+ if (!cplist.contains(curr) && !elementsToAdd.contains(curr)) {
+ elementsToAdd.add(curr);
+ }
+ }
+
+ getPathList().addElements(elementsToAdd);
+ fCPathList.addAll(elementsToAdd);
+ getPathList().postSetSelection(new StructuredSelection(includes));
}
- return element;
+ }
+
+ protected CPElement[] openContainerSelectionDialog(CPElement existing) {
+ IPathEntry elem = null;
+ String title;
+ if (existing == null) {
+ title = CPathEntryMessages.getString("SymbolEntryPage.ContainerDialog.new.title"); //$NON-NLS-1$
+ } else {
+ title = CPathEntryMessages.getString("SymbolEntryPage.ContainerDialog.edit.title"); //$NON-NLS-1$
+ elem = existing.getPathEntry();
+ }
+ CPathContainerWizard wizard = new CPathContainerWizard(elem, null, fCurrCProject, getRawClasspath(), IPathEntry.CDT_INCLUDE);
+ wizard.setWindowTitle(title);
+ if (CPathContainerWizard.openWizard(getShell(), wizard) == Window.OK) {
+ IPathEntry parent = wizard.getEntriesParent();
+ IPathEntry[] elements = wizard.getEntries();
+ IResource resource = ((ICElement) getSelection().get(0)).getResource();
+ if (elements != null) {
+ CPElement[] res = new CPElement[elements.length];
+ for (int i = 0; i < res.length; i++) {
+ res[i] = new CPElement(fCurrCProject, IPathEntry.CDT_MACRO, resource.getFullPath(), resource);
+ res[i].setAttribute(CPElement.MACRO_NAME, ((IMacroEntry)elements[i]).getMacroName());
+ res[i].setAttribute(CPElement.BASE_REF, parent.getPath());
+ }
+ return res;
+ }
+ }
+ return null;
}
}
\ No newline at end of file
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/cpaths/CPathTabBlock.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/cpaths/CPathTabBlock.java
index 4ea69577a14..21ae98894d2 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/cpaths/CPathTabBlock.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/cpaths/CPathTabBlock.java
@@ -60,7 +60,7 @@ public class CPathTabBlock extends AbstractPathOptionBlock {
};
BuildPathAdapter adapter = new BuildPathAdapter();
- fCPathList = new CheckedListDialogField(null, buttonLabels, new CPListLabelProvider());
+ fCPathList = new CheckedListDialogField(null, buttonLabels, new CPElementLabelProvider());
fCPathList.setDialogFieldListener(adapter);
fCPathList.setLabelText(CPathEntryMessages.getString("CPathsBlock.path.label")); //$NON-NLS-1$
fCPathList.setUpButtonIndex(0);
@@ -107,7 +107,7 @@ public class CPathTabBlock extends AbstractPathOptionBlock {
List exportedEntries = new ArrayList();
for (int i = 0; i < cPaths.size(); i++) {
- CPListElement curr = (CPListElement) cPaths.get(i);
+ CPElement curr = (CPElement) cPaths.get(i);
if (curr.isExported() && curr.getEntryKind() != IPathEntry.CDT_SOURCE) {
exportedEntries.add(curr);
}
@@ -140,12 +140,12 @@ public class CPathTabBlock extends AbstractPathOptionBlock {
List elements = fCPathList.getElements();
- CPListElement entryMissing = null;
+ CPElement entryMissing = null;
int nEntriesMissing = 0;
IPathEntry[] entries = new IPathEntry[elements.size()];
for (int i = elements.size() - 1; i >= 0; i--) {
- CPListElement currElement = (CPListElement) elements.get(i);
+ CPElement currElement = (CPElement) elements.get(i);
boolean isChecked = fCPathList.isChecked(currElement);
if (currElement.getEntryKind() == IPathEntry.CDT_SOURCE) {
if (isChecked) {
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/cpaths/ExclusionPatternDialog.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/cpaths/ExclusionPatternDialog.java
index b1f06f29662..e919c49892d 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/cpaths/ExclusionPatternDialog.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/cpaths/ExclusionPatternDialog.java
@@ -66,7 +66,7 @@ public class ExclusionPatternDialog extends StatusDialog {
private ListDialogField fExclusionPatternList;
- private CPListElement fCurrElement;
+ private CPElement fCurrElement;
private IProject fCurrProject;
private IContainer fCurrSourceFolder;
@@ -77,7 +77,7 @@ public class ExclusionPatternDialog extends StatusDialog {
private static final int IDX_REMOVE= 4;
- public ExclusionPatternDialog(Shell parent, CPListElement entryToEdit) {
+ public ExclusionPatternDialog(Shell parent, CPElement entryToEdit) {
super(parent);
fCurrElement= entryToEdit;
setTitle(CPathEntryMessages.getString("ExclusionPatternDialog.title")); //$NON-NLS-1$
@@ -107,7 +107,7 @@ public class ExclusionPatternDialog extends StatusDialog {
fCurrSourceFolder= (IContainer) res;
}
- IPath[] pattern= (IPath[]) entryToEdit.getAttribute(CPListElement.EXCLUSION);
+ IPath[] pattern= (IPath[]) entryToEdit.getAttribute(CPElement.EXCLUSION);
ArrayList elements= new ArrayList(pattern.length);
for (int i= 0; i < pattern.length; i++) {
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/cpaths/ExclusionPatternEntryDialog.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/cpaths/ExclusionPatternEntryDialog.java
index 3d27fe5c705..ec33c1f2d82 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/cpaths/ExclusionPatternEntryDialog.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/cpaths/ExclusionPatternEntryDialog.java
@@ -52,7 +52,7 @@ public class ExclusionPatternEntryDialog extends StatusDialog {
private String fExclusionPattern;
private List fExistingPatterns;
- public ExclusionPatternEntryDialog(Shell parent, String patternToEdit, List existingPatterns, CPListElement entryToEdit) {
+ public ExclusionPatternEntryDialog(Shell parent, String patternToEdit, List existingPatterns, CPElement entryToEdit) {
super(parent);
fExistingPatterns = existingPatterns;
if (patternToEdit == null) {
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/cpaths/ExtendedCPathBasePage.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/cpaths/ExtendedCPathBasePage.java
index fbcad6d1059..20f5eeedaba 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/cpaths/ExtendedCPathBasePage.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/cpaths/ExtendedCPathBasePage.java
@@ -14,7 +14,6 @@ import java.util.Iterator;
import java.util.List;
import org.eclipse.cdt.core.model.CModelException;
-import org.eclipse.cdt.core.model.CoreModel;
import org.eclipse.cdt.core.model.CoreModelUtil;
import org.eclipse.cdt.core.model.ICElement;
import org.eclipse.cdt.core.model.ICProject;
@@ -22,8 +21,6 @@ import org.eclipse.cdt.core.model.IPathEntry;
import org.eclipse.cdt.core.model.ISourceRoot;
import org.eclipse.cdt.internal.ui.CPluginImages;
import org.eclipse.cdt.internal.ui.util.PixelConverter;
-import org.eclipse.cdt.internal.ui.wizards.NewWizardMessages;
-import org.eclipse.cdt.internal.ui.wizards.TypedElementSelectionValidator;
import org.eclipse.cdt.internal.ui.wizards.dialogfields.DialogField;
import org.eclipse.cdt.internal.ui.wizards.dialogfields.IDialogFieldListener;
import org.eclipse.cdt.internal.ui.wizards.dialogfields.IListAdapter;
@@ -33,18 +30,13 @@ import org.eclipse.cdt.internal.ui.wizards.dialogfields.ListDialogField;
import org.eclipse.cdt.internal.ui.wizards.dialogfields.TreeListDialogField;
import org.eclipse.cdt.ui.CElementLabelProvider;
import org.eclipse.cdt.ui.CUIPlugin;
-import org.eclipse.core.resources.IResource;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.jface.resource.CompositeImageDescriptor;
import org.eclipse.jface.viewers.IColorProvider;
-import org.eclipse.jface.viewers.ILabelProvider;
import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.viewers.ITreeContentProvider;
import org.eclipse.jface.viewers.StructuredSelection;
-import org.eclipse.jface.viewers.ViewerFilter;
-import org.eclipse.jface.window.Window;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.graphics.Image;
@@ -53,23 +45,14 @@ import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.graphics.RGB;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
-import org.eclipse.ui.dialogs.ElementTreeSelectionDialog;
-import org.eclipse.ui.model.WorkbenchContentProvider;
-import org.eclipse.ui.model.WorkbenchLabelProvider;
public abstract class ExtendedCPathBasePage extends CPathBasePage {
- protected ListDialogField fPathList;
- protected TreeListDialogField fSrcList;
protected List fCPathList;
protected ICProject fCurrCProject;
- private static final int IDX_ADD = 0;
- private static final int IDX_ADD_WORKSPACE = 1;
- private static final int IDX_ADD_CONTRIBUTED = 2;
- private static final int IDX_EDIT = 4;
- private static final int IDX_REMOVE = 5;
- private String fPrefix;
+ private ListDialogField fPathList;
+ private TreeListDialogField fSrcList;
private class IncludeListAdapter implements IListAdapter, IDialogFieldListener {
@@ -77,40 +60,18 @@ public abstract class ExtendedCPathBasePage extends CPathBasePage {
}
public void customButtonPressed(ListDialogField field, int index) {
- switch (index) {
- case IDX_ADD:
- addPath();
- break;
- case IDX_ADD_WORKSPACE:
- addFromWorkspace();
- break;
- case IDX_ADD_CONTRIBUTED:
- addContributed();
- break;
- case IDX_EDIT:
- if (canEdit(field.getSelectedElements())) {
- editPath((CPListElement) field.getSelectedElements().get(0));
- }
- break;
- case IDX_REMOVE:
- if (canRemove(field.getSelectedElements())) {
- removePath((CPListElement) field.getSelectedElements().get(0));
- }
- break;
- }
+ buttonPressed(index, field.getSelectedElements());
}
public void selectionChanged(ListDialogField field) {
- List selected = fPathList.getSelectedElements();
- fPathList.enableButton(IDX_REMOVE, canRemove(selected));
- fPathList.enableButton(IDX_EDIT, canEdit(selected));
+ pathSelectionChanged();
}
public void doubleClicked(ListDialogField field) {
}
}
- private class ModifiedCPListLabelProvider extends CPListLabelProvider implements IColorProvider {
+ private class ModifiedCPListLabelProvider extends CPElementLabelProvider implements IColorProvider {
private final Color inDirect = new Color(Display.getDefault(), new RGB(170, 170, 170));
@@ -186,7 +147,7 @@ public abstract class ExtendedCPathBasePage extends CPathBasePage {
public Image getImage(Object element) {
Image image = super.getImage(element);
- if (isPathInheritedFromSelected((CPListElement) element)) {
+ if (isPathInheritedFromSelected((CPElement) element)) {
image = new CPListImageDescriptor(image, true).createImage();
}
return image;
@@ -197,39 +158,34 @@ public abstract class ExtendedCPathBasePage extends CPathBasePage {
}
public Color getForeground(Object element) {
- if (isPathInheritedFromSelected((CPListElement) element)) {
+ if (isPathInheritedFromSelected((CPElement) element)) {
return inDirect;
}
return null;
}
}
- public ExtendedCPathBasePage(ITreeListAdapter adapter, String prefix) {
- super(CPathEntryMessages.getString(prefix + ".title")); //$NON-NLS-1$
- fPrefix = prefix;
+ public ExtendedCPathBasePage(ITreeListAdapter adapter, String title, String pathTitle, String[] buttons) {
+ super(title);
IncludeListAdapter includeListAdaper = new IncludeListAdapter();
- String[] buttonLabel = new String[] { /* 0 */CPathEntryMessages.getString(prefix + ".add"), //$NON-NLS-1$
- /* 1 */CPathEntryMessages.getString(prefix + ".addFromWorkspace"), //$NON-NLS-1$
- /* 2 */CPathEntryMessages.getString(prefix + ".addContributed"), null, //$NON-NLS-1$
- /* 4 */CPathEntryMessages.getString(prefix + ".edit"), //$NON-NLS-1$
- /* 5 */CPathEntryMessages.getString(prefix + ".remove")}; //$NON-NLS-1$
- fPathList = new ListDialogField(includeListAdaper, buttonLabel, new ModifiedCPListLabelProvider()) {
+ fPathList = new ListDialogField(includeListAdaper, buttons, new ModifiedCPListLabelProvider()) {
protected int getListStyle() {
return super.getListStyle() & ~SWT.MULTI;
}
};
fPathList.setDialogFieldListener(includeListAdaper);
- fPathList.setLabelText(CPathEntryMessages.getString(prefix + ".listName")); //$NON-NLS-1$
- fSrcList = new TreeListDialogField(adapter, new String[] { CPathEntryMessages.getString(prefix + ".editSourcePaths")}, //$NON-NLS-1$
+ fPathList.setLabelText(pathTitle);
+ fSrcList = new TreeListDialogField(adapter,
+ null /*new String[]{CPathEntryMessages.getString("ExtendingCPathBasePage.editSourcePaths")}*/, //$NON-NLS-1$
new CElementLabelProvider()) {
protected int getTreeStyle() {
return super.getTreeStyle() & ~SWT.MULTI;
}
};
- fSrcList.setLabelText(CPathEntryMessages.getString(prefix + ".sourcePaths")); //$NON-NLS-1$
+ fSrcList.setLabelText(CPathEntryMessages.getString("ExtendingCPathBasePage.sourcePaths")); //$NON-NLS-1$
}
public void createControl(Composite parent) {
@@ -239,24 +195,22 @@ public abstract class ExtendedCPathBasePage extends CPathBasePage {
setControl(composite);
- LayoutUtil.doDefaultLayout(composite, new DialogField[] { fSrcList, fPathList}, true);
+ LayoutUtil.doDefaultLayout(composite, new DialogField[]{fSrcList, fPathList}, true);
LayoutUtil.setHorizontalGrabbing(fPathList.getListControl(null));
int buttonBarWidth = converter.convertWidthInCharsToPixels(30);
fPathList.setButtonsMinWidth(buttonBarWidth);
- fPathList.enableButton(IDX_REMOVE, false);
- fPathList.enableButton(IDX_EDIT, false);
}
- public boolean isEntryKind(int kind) {
- return kind == getEntryKind();
+ protected ListDialogField getPathList() {
+ return fPathList;
}
+
+ abstract protected void buttonPressed(int indx, List selected);
- abstract protected void addPath();
+ protected abstract void pathSelectionChanged();
- abstract int getEntryKind();
-
- protected boolean isPathInheritedFromSelected(CPListElement element) {
+ protected boolean isPathInheritedFromSelected(CPElement element) {
IPath resPath = element.getPath();
List sel = getSelection();
if (!sel.isEmpty()) {
@@ -270,29 +224,15 @@ public abstract class ExtendedCPathBasePage extends CPathBasePage {
return false;
}
- protected boolean canRemove(List selected) {
- return !selected.isEmpty();
- }
-
- protected boolean canEdit(List selected) {
- if( !selected.isEmpty() ) {
- return !isPathInheritedFromSelected((CPListElement) selected.get(0));
- }
- return false;
- }
-
- protected void editPath(CPListElement element) {
- }
-
- protected void removePath(CPListElement element) {
+ protected void removeFromSelectedPath(CPElement element) {
ICElement celem = (ICElement) getSelection().get(0);
if (!celem.getPath().equals(element.getPath())) {
IPath exclude = celem.getPath().removeFirstSegments(element.getPath().segmentCount()).addTrailingSeparator();
- IPath[] exclusions = (IPath[]) element.getAttribute(CPListElement.EXCLUSION);
+ IPath[] exclusions = (IPath[]) element.getAttribute(CPElement.EXCLUSION);
IPath[] newExlusions = new IPath[exclusions.length + 1];
System.arraycopy(exclusions, 0, newExlusions, 0, exclusions.length);
newExlusions[exclusions.length] = exclude;
- element.setAttribute(CPListElement.EXCLUSION, newExlusions);
+ element.setAttribute(CPElement.EXCLUSION, newExlusions);
selectionChanged(new StructuredSelection(getSelection()));
} else {
fCPathList.remove(element);
@@ -332,7 +272,7 @@ public abstract class ExtendedCPathBasePage extends CPathBasePage {
protected IPathEntry[] getRawClasspath() {
IPathEntry[] currEntries = new IPathEntry[fCPathList.size()];
for (int i = 0; i < currEntries.length; i++) {
- CPListElement curr = (CPListElement) fCPathList.get(i);
+ CPElement curr = (CPElement) fCPathList.get(i);
currEntries[i] = curr.getPathEntry();
}
return currEntries;
@@ -350,7 +290,7 @@ public abstract class ExtendedCPathBasePage extends CPathBasePage {
fPathList.setElements(filterList(getCPaths(), selection));
}
- private List filterList(List list, IStructuredSelection selection) {
+ protected List filterList(List list, IStructuredSelection selection) {
if (selection.isEmpty()) {
return list;
}
@@ -360,10 +300,10 @@ public abstract class ExtendedCPathBasePage extends CPathBasePage {
List newList = new ArrayList(list.size());
Iterator iter = list.iterator();
while (iter.hasNext()) {
- CPListElement element = (CPListElement) iter.next();
+ CPElement element = (CPElement) iter.next();
if (element.getPath().isPrefixOf(resPath)
&& (element.getPath().equals(resPath) || !CoreModelUtil.isExcludedPath(resPath.removeFirstSegments(1),
- (IPath[]) element.getAttribute(CPListElement.EXCLUSION)))) {
+ (IPath[]) element.getAttribute(CPElement.EXCLUSION)))) {
newList.add(element);
}
}
@@ -376,179 +316,6 @@ public abstract class ExtendedCPathBasePage extends CPathBasePage {
public void performDefaults() {
}
- protected CPListElement[] openContainerSelectionDialog(CPListElement existing) {
- IPathEntry elem = null;
- String title;
- if (existing == null) {
- title = CPathEntryMessages.getString(fPrefix + ".ContainerDialog.new.title"); //$NON-NLS-1$
- } else {
- title = CPathEntryMessages.getString(fPrefix + ".ContainerDialog.edit.title"); //$NON-NLS-1$
- elem = existing.getPathEntry();
- }
- CPathContainerWizard wizard = new CPathContainerWizard(elem, fCurrCProject, getRawClasspath());
- wizard.setWindowTitle(title);
- if (CPathContainerWizard.openWizard(getShell(), wizard) == Window.OK) {
- IPathEntry[] elements = wizard.getNewEntries();
- if (elements != null) {
- CPListElement[] res = new CPListElement[elements.length];
- for (int i = 0; i < res.length; i++) {
- res[i] = newCPElement(((ICElement) getSelection().get(0)).getResource(), (CPListElement) elements[i]);
- res[i].setAttribute(CPListElement.BASE_REF, elements[i].getPath());
- }
- return res;
- }
- }
- return null;
- }
-
- abstract protected CPListElement newCPElement(IResource resource, CPListElement copyFrom);
-
- private class WorkbenchCPathLabelProvider extends CPListLabelProvider {
-
- WorkbenchLabelProvider fWorkbenchLabelProvider = new WorkbenchLabelProvider();
-
- public String getText(Object element) {
- if (element instanceof CPListElement) {
- return super.getText(element);
- }
- return fWorkbenchLabelProvider.getText(element);
- }
-
- public Image getImage(Object element) {
- if (element instanceof CPListElement) {
- return super.getImage(element);
- }
- return fWorkbenchLabelProvider.getImage(element);
- }
- }
-
- private class WorkbenchCPathContentProvider extends WorkbenchContentProvider {
-
- public Object[] getChildren(Object element) {
- if (element instanceof ICProject) {
- try {
- IPathEntry[] entries = ((ICProject) element).getRawPathEntries();
- List list = new ArrayList(entries.length);
- for (int i = 0; i < entries.length; i++) {
- if (entries[i].isExported()) {
- list.add(CPListElement.createFromExisting(entries[i], (ICProject) element));
- }
- }
- return list.toArray();
- } catch (CModelException e) {
- CUIPlugin.getDefault().log(e);
- return new Object[0];
- }
- }
- return super.getChildren(element);
- }
-
- public boolean hasChildren(Object element) {
- if (element instanceof ICProject) {
- try {
- IPathEntry[] entries = ((ICProject) element).getRawPathEntries();
- for (int i = 0; i < entries.length; i++) {
- if (entries[i].isExported()) {
- return true;
- }
- }
- } catch (CModelException e) {
- CUIPlugin.getDefault().log(e);
- return false;
- }
- }
- return super.hasChildren(element);
- }
-
- public Object getParent(Object element) {
- if (element instanceof CPListElement) {
- return ((CPListElement) element).getCProject().getProject();
- }
- return super.getParent(element);
- }
- }
-
- protected CPListElement[] openWorkspacePathEntryDialog(CPListElement existing) {
- Class[] acceptedClasses = new Class[] { CPListElement.class};
- TypedElementSelectionValidator validator = new TypedElementSelectionValidator(acceptedClasses, existing == null);
- ViewerFilter filter = new CPListElementFilter((CPListElement[]) fPathList.getElements().toArray(new CPListElement[0]),
- getEntryKind(), true);
-
- ILabelProvider lp = new WorkbenchCPathLabelProvider();
- ITreeContentProvider cp = new WorkbenchCPathContentProvider();
-
- String title = (existing == null) ? CPathEntryMessages.getString(fPrefix + ".fromWorkspaceDialog.new.title") //$NON-NLS-1$
- : CPathEntryMessages.getString(fPrefix + ".fromWorkspaceDialog.edit.title"); //$NON-NLS-1$
- String message = (existing == null) ? CPathEntryMessages.getString(fPrefix + ".fromWorkspaceDialog.new.description") //$NON-NLS-1$
- : NewWizardMessages.getString(fPrefix + ".fromWorkspaceDialog.edit.description"); //$NON-NLS-1$
-
- ElementTreeSelectionDialog dialog = new ElementTreeSelectionDialog(getShell(), lp, cp);
- dialog.setValidator(validator);
- dialog.setTitle(title);
- dialog.setMessage(message);
- dialog.addFilter(filter);
- dialog.setInput(CoreModel.getDefault().getCModel());
- if (existing == null) {
- dialog.setInitialSelection(fCurrCProject);
- } else {
- dialog.setInitialSelection(existing.getCProject());
- }
-
- if (dialog.open() == Window.OK) {
- Object[] elements = dialog.getResult();
- CPListElement[] res = new CPListElement[elements.length];
- for (int i = 0; i < res.length; i++) {
- res[i] = newCPElement(((ICElement) getSelection().get(0)).getResource(), (CPListElement)elements[i]);
- res[i].setAttribute(CPListElement.BASE_REF, ((CPListElement)elements[i]).getCProject().getPath());
- }
- return res;
- }
- return null;
- }
-
- protected void addContributed() {
- CPListElement[] includes = openContainerSelectionDialog(null);
- if (includes != null) {
- int nElementsChosen = includes.length;
- // remove duplicates
- List cplist = fPathList.getElements();
- List elementsToAdd = new ArrayList(nElementsChosen);
-
- for (int i = 0; i < nElementsChosen; i++) {
- CPListElement curr = includes[i];
- if (!cplist.contains(curr) && !elementsToAdd.contains(curr)) {
- elementsToAdd.add(curr);
- }
- }
-
- fPathList.addElements(elementsToAdd);
- fCPathList.addAll(elementsToAdd);
- fPathList.postSetSelection(new StructuredSelection(includes));
- }
- }
-
- protected void addFromWorkspace() {
- CPListElement[] includes = openWorkspacePathEntryDialog(null);
- if (includes != null) {
- int nElementsChosen = includes.length;
- // remove duplicates
- List cplist = fPathList.getElements();
- List elementsToAdd = new ArrayList(nElementsChosen);
-
- for (int i = 0; i < nElementsChosen; i++) {
- CPListElement curr = includes[i];
- if (!cplist.contains(curr) && !elementsToAdd.contains(curr)) {
- elementsToAdd.add(curr);
- }
- }
-
- fPathList.addElements(elementsToAdd);
- fCPathList.addAll(elementsToAdd);
- fPathList.postSetSelection(new StructuredSelection(elementsToAdd));
- }
-
- }
-
// private IPathEntry[] getUsedPathFiles(CPListElement existing) {
// List res= new ArrayList();
// List cplist= fPathList.getElements();
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/cpaths/IContainerDescriptor.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/cpaths/IContainerDescriptor.java
new file mode 100644
index 00000000000..2fdf2f99669
--- /dev/null
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/cpaths/IContainerDescriptor.java
@@ -0,0 +1,20 @@
+/*
+ * Created on Apr 27, 2004
+ *
+ * Copyright (c) 2002,2003 QNX Software Systems Ltd.
+ *
+ * Contributors:
+ * QNX Software Systems - Initial API and implementation
+ ***********************************************************************/
+package org.eclipse.cdt.internal.ui.dialogs.cpaths;
+
+import org.eclipse.cdt.core.model.IPathEntry;
+import org.eclipse.cdt.ui.wizards.ICPathContainerPage;
+import org.eclipse.core.runtime.CoreException;
+
+public interface IContainerDescriptor {
+
+ public abstract ICPathContainerPage createPage() throws CoreException;
+ public abstract String getName();
+ public abstract boolean canEdit(IPathEntry entry);
+}
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/cpaths/NewSourceFolderDialog.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/cpaths/NewSourceFolderDialog.java
index 2e28cca618f..0e7aa00e75b 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/cpaths/NewSourceFolderDialog.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/cpaths/NewSourceFolderDialog.java
@@ -41,7 +41,7 @@ public class NewSourceFolderDialog extends StatusDialog {
private List fExistingFolders;
private IProject fCurrProject;
- public NewSourceFolderDialog(Shell parent, String title, IProject project, List existingFolders, CPListElement entryToEdit) {
+ public NewSourceFolderDialog(Shell parent, String title, IProject project, List existingFolders, CPElement entryToEdit) {
super(parent);
setTitle(title);
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/cpaths/ProjectContainerDescriptor.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/cpaths/ProjectContainerDescriptor.java
new file mode 100644
index 00000000000..90f8cb2d5c8
--- /dev/null
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/cpaths/ProjectContainerDescriptor.java
@@ -0,0 +1,35 @@
+/*
+ * Created on Apr 27, 2004
+ *
+ * Copyright (c) 2002,2003 QNX Software Systems Ltd.
+ *
+ * Contributors:
+ * QNX Software Systems - Initial API and implementation
+***********************************************************************/
+package org.eclipse.cdt.internal.ui.dialogs.cpaths;
+
+import org.eclipse.cdt.core.model.IPathEntry;
+import org.eclipse.cdt.ui.wizards.ICPathContainerPage;
+import org.eclipse.core.runtime.CoreException;
+
+public class ProjectContainerDescriptor implements IContainerDescriptor {
+ private int fFilterType;
+
+ public ProjectContainerDescriptor(int filterType) {
+ fFilterType = filterType;
+ }
+
+ public ICPathContainerPage createPage() throws CoreException {
+ return new ProjectContainerPage(fFilterType);
+ }
+
+ public String getName() {
+ return CPathEntryMessages.getString("ProjectContainer.label"); //$NON-NLS-1$
+ }
+
+ public boolean canEdit(IPathEntry entry) {
+ return false;
+ }
+
+
+}
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/cpaths/ProjectContainerPage.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/cpaths/ProjectContainerPage.java
new file mode 100644
index 00000000000..fb2d66fb0ca
--- /dev/null
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/cpaths/ProjectContainerPage.java
@@ -0,0 +1,149 @@
+ /*
+ * Created on Apr 27, 2004
+ *
+ * Copyright (c) 2002,2003 QNX Software Systems Ltd.
+ *
+ * Contributors:
+ * QNX Software Systems - Initial API and implementation
+***********************************************************************/
+package org.eclipse.cdt.internal.ui.dialogs.cpaths;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.cdt.core.model.CModelException;
+import org.eclipse.cdt.core.model.ICProject;
+import org.eclipse.cdt.core.model.IPathEntry;
+import org.eclipse.cdt.internal.ui.CPluginImages;
+import org.eclipse.cdt.ui.CUIPlugin;
+import org.eclipse.cdt.ui.wizards.ICPathContainerPage;
+import org.eclipse.jface.viewers.CheckStateChangedEvent;
+import org.eclipse.jface.viewers.CheckboxTableViewer;
+import org.eclipse.jface.viewers.ICheckStateListener;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.wizard.WizardPage;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.ui.model.WorkbenchContentProvider;
+
+
+public class ProjectContainerPage extends WizardPage implements ICPathContainerPage {
+
+ private int fFilterType;
+ private CheckboxTableViewer viewer;
+
+ private class WorkbenchCPathContentProvider extends WorkbenchContentProvider {
+
+ public Object[] getChildren(Object element) {
+ if (element instanceof ICProject) {
+ try {
+ IPathEntry[] entries = ((ICProject) element).getRawPathEntries();
+ List list = new ArrayList(entries.length);
+ for (int i = 0; i < entries.length; i++) {
+ if (entries[i].isExported()) {
+ list.add(CPElement.createFromExisting(entries[i], (ICProject) element));
+ }
+ }
+ return list.toArray();
+ } catch (CModelException e) {
+ CUIPlugin.getDefault().log(e);
+ return new Object[0];
+ }
+ }
+ return super.getChildren(element);
+ }
+
+ public boolean hasChildren(Object element) {
+ if (element instanceof ICProject) {
+ try {
+ IPathEntry[] entries = ((ICProject) element).getRawPathEntries();
+ for (int i = 0; i < entries.length; i++) {
+ if (entries[i].isExported()) {
+ return true;
+ }
+ }
+ } catch (CModelException e) {
+ CUIPlugin.getDefault().log(e);
+ return false;
+ }
+ }
+ return super.hasChildren(element);
+ }
+
+ public Object getParent(Object element) {
+ if (element instanceof CPElement) {
+ return ((CPElement) element).getCProject().getProject();
+ }
+ return super.getParent(element);
+ }
+ }
+
+ protected ProjectContainerPage(int filterType) {
+ super("projectContainerPage"); //$NON-NLS-1$
+ setTitle(CPathEntryMessages.getString("ProjectContainerPage.title")); //$NON-NLS-1$
+ setDescription(CPathEntryMessages.getString("ProjectContainerPage.description")); //$NON-NLS-1$
+ setImageDescriptor(CPluginImages.DESC_WIZBAN_ADD_LIBRARY);
+ fFilterType = filterType;
+ }
+
+ public void initialize(ICProject project, IPathEntry[] currentEntries) {
+ }
+
+ public boolean finish() {
+ return false;
+ }
+
+ public IPathEntry[] getContainerEntries() {
+ return new IPathEntry[0];
+ }
+
+ public void setSelection(IPathEntry containerEntry) {
+ }
+
+ public void createControl(Composite parent) {
+ // create a composite with standard margins and spacing
+ Composite container = new Composite(parent, SWT.NONE);
+ GridLayout layout = new GridLayout();
+ layout.numColumns = 2;
+ container.setLayout(layout);
+ Label label = new Label(container, SWT.NULL);
+ label.setText(CPathEntryMessages.getString("ProjectContainerPage.label")); //$NON-NLS-1$
+ GridData gd = new GridData();
+ gd.horizontalSpan = 2;
+ label.setLayoutData(gd);
+ viewer =
+ CheckboxTableViewer.newCheckList(
+ container,
+ SWT.BORDER | SWT.V_SCROLL | SWT.H_SCROLL);
+ viewer.setContentProvider(new WorkbenchCPathContentProvider());
+ viewer.setLabelProvider(new CPElementLabelProvider());
+ viewer.addCheckStateListener(new ICheckStateListener() {
+ public void checkStateChanged(CheckStateChangedEvent event) {
+ // Prevent user to change checkbox states
+ viewer.setChecked(event.getElement(), !event.getChecked());
+ }
+ });
+ viewer.addSelectionChangedListener(new ISelectionChangedListener() {
+ public void selectionChanged(SelectionChangedEvent e) {
+ handleSelectionChanged((IStructuredSelection) e.getSelection());
+ }
+ });
+ gd = new GridData(GridData.FILL_BOTH);
+ gd.widthHint = 400;
+ gd.heightHint = 300;
+ viewer.getTable().setLayoutData(gd);
+ setControl(container);
+
+ }
+
+ protected void handleSelectionChanged(IStructuredSelection selection) {
+ // dinglis-TODO Auto-generated method stub
+
+ }
+
+}