diff options
Diffstat (limited to 'build/org.eclipse.cdt.make.ui')
6 files changed, 328 insertions, 221 deletions
diff --git a/build/org.eclipse.cdt.make.ui/icons/obj16/lib_obj.gif b/build/org.eclipse.cdt.make.ui/icons/obj16/lib_obj.gif Binary files differnew file mode 100644 index 00000000000..cb55e33b5eb --- /dev/null +++ b/build/org.eclipse.cdt.make.ui/icons/obj16/lib_obj.gif diff --git a/build/org.eclipse.cdt.make.ui/plugin.xml b/build/org.eclipse.cdt.make.ui/plugin.xml index f155baf6693..ff974b9c9a5 100644 --- a/build/org.eclipse.cdt.make.ui/plugin.xml +++ b/build/org.eclipse.cdt.make.ui/plugin.xml @@ -427,8 +427,9 @@ point="org.eclipse.cdt.ui.PathContainerPage"> <PathContainerPage class="org.eclipse.cdt.make.ui.dialogs.DiscoveredPathContainerPage" - name="%DiscoveredScannerInfoContainer.name" - id="org.eclipse.cdt.make.core.DISCOVERED_SCANNER_INFO"/> + icon="icons/obj16/lib_obj.gif" + id="org.eclipse.cdt.make.core.DISCOVERED_SCANNER_INFO" + name="%DiscoveredScannerInfoContainer.name"/> </extension> <extension point="org.eclipse.core.runtime.preferences"> diff --git a/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/internal/ui/scannerconfig/DiscoveredElement.java b/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/internal/ui/scannerconfig/DiscoveredElement.java index 2818087aeee..cdcbc3bf0c7 100644 --- a/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/internal/ui/scannerconfig/DiscoveredElement.java +++ b/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/internal/ui/scannerconfig/DiscoveredElement.java @@ -26,8 +26,12 @@ public class DiscoveredElement { public static final int CONTAINER = 1; public static final int INCLUDE_PATH = 2; public static final int SYMBOL_DEFINITION = 3; - public static final int PATHS_GROUP = 4; - public static final int SYMBOLS_GROUP = 5; + public static final int INCLUDE_FILE = 4; + public static final int MACROS_FILE = 5; + public static final int PATHS_GROUP = 10; + public static final int SYMBOLS_GROUP = 11; + public static final int INCLUDE_FILE_GROUP = 12; + public static final int MACROS_FILE_GROUP = 13; private IProject fProject; private String fEntry; @@ -53,71 +57,58 @@ public class DiscoveredElement { boolean removed, boolean system) { DiscoveredElement rv = null; + int parentKind = 0; switch (kind) { case CONTAINER: { rv = new DiscoveredElement(project, entry, kind, removed, system); DiscoveredElement group = new DiscoveredElement(project, null, PATHS_GROUP, false, false); rv.fChildren.add(group); - group.fParent = rv; + group.setParent(rv); group = new DiscoveredElement(project, null, SYMBOLS_GROUP, false, false); rv.fChildren.add(group); - group.fParent = rv; + group.setParent(rv); + group = new DiscoveredElement(project, null, INCLUDE_FILE_GROUP, false, false); + rv.fChildren.add(group); + group.setParent(rv); + group = new DiscoveredElement(project, null, MACROS_FILE_GROUP, false, false); + rv.fChildren.add(group); + group.setParent(rv); } - break; - case INCLUDE_PATH: { - if (parent != null) { - DiscoveredElement group = null; - if (parent.getEntryKind() == PATHS_GROUP) { - parent = parent.getParent(); - group = parent; - } - else if (parent.getEntryKind() == CONTAINER) { - for (Iterator i = parent.fChildren.iterator(); i.hasNext(); ) { - DiscoveredElement child = (DiscoveredElement) i.next(); - if (child.getEntryKind() == PATHS_GROUP) { - group = child; - break; - } - } - if (group == null) { - return null; - } - } - if (parent.getEntryKind() == CONTAINER) { - rv = new DiscoveredElement(project, entry, kind, removed, system); - group.fChildren.add(rv); - rv.setParent(group); - } + return rv; + case INCLUDE_PATH: + parentKind = PATHS_GROUP; + break; + case SYMBOL_DEFINITION: + parentKind = SYMBOLS_GROUP; + break; + case INCLUDE_FILE: + parentKind = INCLUDE_FILE_GROUP; + break; + case MACROS_FILE: + parentKind = MACROS_FILE_GROUP; + break; + } + if (parentKind != 0) { + if (parent != null) { + DiscoveredElement group = null; + if (parent.getEntryKind() == parentKind) { + group = parent; } - } - break; - case SYMBOL_DEFINITION: { - if (parent != null) { - DiscoveredElement group = null; - if (parent.getEntryKind() == SYMBOLS_GROUP) { - parent = parent.getParent(); - group = parent; - } - else if (parent.getEntryKind() == CONTAINER) { - for (Iterator i = parent.fChildren.iterator(); i.hasNext(); ) { - DiscoveredElement child = (DiscoveredElement) i.next(); - if (child.getEntryKind() == SYMBOLS_GROUP) { - group = child; - break; - } + else if (parent.getEntryKind() == CONTAINER) { + for (Iterator i = parent.fChildren.iterator(); i.hasNext(); ) { + DiscoveredElement child = (DiscoveredElement) i.next(); + if (child.getEntryKind() == parentKind) { + group = child; + break; } - if (group == null) { - return null; - } - } - if (parent.getEntryKind() == CONTAINER) { - rv = new DiscoveredElement(project, entry, kind, removed, system); - group.fChildren.add(rv); - rv.setParent(group); } } - } - break; + if (group != null) { + rv = new DiscoveredElement(project, entry, kind, removed, system); + group.fChildren.add(rv); + rv.setParent(group); + } + } } return rv; } @@ -184,6 +175,8 @@ public class DiscoveredElement { switch(fEntryKind) { case INCLUDE_PATH: case SYMBOL_DEFINITION: + case INCLUDE_FILE: + case MACROS_FILE: return new Object[0]; } return fChildren.toArray(); @@ -193,6 +186,8 @@ public class DiscoveredElement { switch(fEntryKind) { case INCLUDE_PATH: case SYMBOL_DEFINITION: + case INCLUDE_FILE: + case MACROS_FILE: return false; } return (fChildren.size() > 0); diff --git a/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/internal/ui/scannerconfig/DiscoveredElementLabelProvider.java b/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/internal/ui/scannerconfig/DiscoveredElementLabelProvider.java index afb358cdd4a..e66f232ff52 100644 --- a/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/internal/ui/scannerconfig/DiscoveredElementLabelProvider.java +++ b/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/internal/ui/scannerconfig/DiscoveredElementLabelProvider.java @@ -35,17 +35,24 @@ public class DiscoveredElementLabelProvider extends LabelProvider implements ICo private final Color inDirect = new Color(Display.getDefault(), new RGB(170, 170, 170)); private ImageDescriptor fIncludeIcon, fMacroIcon, fContainerImage; - private ImageDescriptor fRemovedIncludeIcon, fRemovedMacroIcon; + private ImageDescriptor fIncludeGroupIcon, fMacroGroupIcon; + private ImageDescriptor fIncludeAndMacrosFileIcon; + private ImageDescriptor fIncludeAndMacrosFileGroupIcon; private ImageDescriptorRegistry fRegistry; private final String DISABLED_LABEL = MakeUIPlugin. getResourceString("ManageScannerConfigDialogCommon.discoveredGroup.annotation.disabled");//$NON-NLS-1$ - + public DiscoveredElementLabelProvider() { fRegistry = CUIPlugin.getImageDescriptorRegistry(); - fIncludeIcon = CPluginImages.DESC_OBJS_INCLUDES_FOLDER; - fMacroIcon = CPluginImages.DESC_OBJS_MACRO; fContainerImage = CPluginImages.DESC_OBJS_LIBRARY; + fIncludeGroupIcon = CPluginImages.DESC_OBJS_INCLUDES_CONTAINER; + fMacroGroupIcon = CPluginImages.DESC_OBJS_MACRO; + fIncludeAndMacrosFileGroupIcon = CPluginImages.DESC_OBJS_INCLUDE; + fIncludeIcon = CPluginImages.DESC_OBJS_INCLUDES_FOLDER; +// fQuoteIncludeIcon = CPluginImages.DESC_OBJS_QUOTE_INCLUDES_FOLDER; + fIncludeAndMacrosFileIcon = CPluginImages.DESC_OBJS_TUNIT_HEADER; + fMacroIcon = fMacroGroupIcon; } /* (non-Javadoc) @@ -69,7 +76,7 @@ public class DiscoveredElementLabelProvider extends LabelProvider implements ICo Image image = null; switch (elem.getEntryKind()) { case DiscoveredElement.PATHS_GROUP: - image = CPluginImages.get(CPluginImages.IMG_OBJS_INCLUDES_CONTAINER); + image = fRegistry.get(fIncludeGroupIcon); break; case DiscoveredElement.CONTAINER: image = fRegistry.get(fContainerImage); @@ -80,7 +87,15 @@ public class DiscoveredElementLabelProvider extends LabelProvider implements ICo case DiscoveredElement.SYMBOLS_GROUP: case DiscoveredElement.SYMBOL_DEFINITION: image = fRegistry.get(fMacroIcon); + break; + case DiscoveredElement.INCLUDE_FILE: + case DiscoveredElement.MACROS_FILE: + image = fRegistry.get(fIncludeAndMacrosFileIcon); break; + case DiscoveredElement.INCLUDE_FILE_GROUP: + case DiscoveredElement.MACROS_FILE_GROUP: + image = fRegistry.get(fIncludeAndMacrosFileGroupIcon); + break; } if (image != null && elem.isRemoved()) { image = new DiscoveredElementImageDescriptor(image, true).createImage(); @@ -99,9 +114,15 @@ public class DiscoveredElementLabelProvider extends LabelProvider implements ICo return CPathEntryMessages.getString("CPElementLabelProvider.Includes"); //$NON-NLS-1$ case DiscoveredElement.SYMBOLS_GROUP: return CPathEntryMessages.getString("CPElementLabelProvider.PreprocessorSymbols"); //$NON-NLS-1$ + case DiscoveredElement.INCLUDE_FILE_GROUP: + return CPathEntryMessages.getString("CPElementLabelProvider.IncludeFiles"); //$NON-NLS-1$ + case DiscoveredElement.MACROS_FILE_GROUP: + return CPathEntryMessages.getString("CPElementLabelProvider.MacrosFiles"); //$NON-NLS-1$ case DiscoveredElement.CONTAINER: case DiscoveredElement.INCLUDE_PATH: case DiscoveredElement.SYMBOL_DEFINITION: + case DiscoveredElement.INCLUDE_FILE: + case DiscoveredElement.MACROS_FILE: return elem.getEntry() + (elem.isRemoved() ? addAnnotation(DISABLED_LABEL) : ""); //$NON-NLS-1$ } } @@ -125,6 +146,8 @@ public class DiscoveredElementLabelProvider extends LabelProvider implements ICo switch (elem.getEntryKind()) { case DiscoveredElement.INCLUDE_PATH: case DiscoveredElement.SYMBOL_DEFINITION: + case DiscoveredElement.INCLUDE_FILE: + case DiscoveredElement.MACROS_FILE: if (elem.isRemoved()) { return inDirect; } diff --git a/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/internal/ui/scannerconfig/DiscoveredElementSorter.java b/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/internal/ui/scannerconfig/DiscoveredElementSorter.java index b3ed67622f1..ae487a24edf 100644 --- a/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/internal/ui/scannerconfig/DiscoveredElementSorter.java +++ b/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/internal/ui/scannerconfig/DiscoveredElementSorter.java @@ -22,7 +22,9 @@ public class DiscoveredElementSorter extends ViewerSorter { private static final int CONTAINER = 0; private static final int PATHS_GROUP = 1; private static final int SYMBOLS_GROUP = 2; - private static final int OTHER = 5; + private static final int INCLUDE_FILE_GROUP = 3; + private static final int MACROS_FILE_GROUP = 4; + private static final int OTHER = 10; /* (non-Javadoc) * @see org.eclipse.jface.viewers.ViewerSorter#category(java.lang.Object) @@ -37,6 +39,10 @@ public class DiscoveredElementSorter extends ViewerSorter { return PATHS_GROUP; case DiscoveredElement.SYMBOLS_GROUP: return SYMBOLS_GROUP; + case DiscoveredElement.INCLUDE_FILE_GROUP: + return INCLUDE_FILE_GROUP; + case DiscoveredElement.MACROS_FILE_GROUP: + return MACROS_FILE_GROUP; } } return OTHER; @@ -50,6 +56,8 @@ public class DiscoveredElementSorter extends ViewerSorter { switch (firstElem.getEntryKind()) { case DiscoveredElement.INCLUDE_PATH: case DiscoveredElement.SYMBOL_DEFINITION: + case DiscoveredElement.INCLUDE_FILE: + case DiscoveredElement.MACROS_FILE: return; } } diff --git a/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/dialogs/DiscoveredPathContainerPage.java b/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/dialogs/DiscoveredPathContainerPage.java index 9a01e12de51..bc901b21203 100644 --- a/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/dialogs/DiscoveredPathContainerPage.java +++ b/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/dialogs/DiscoveredPathContainerPage.java @@ -15,6 +15,7 @@ import java.util.Collections; import java.util.Iterator; import java.util.LinkedHashMap; import java.util.List; +import java.util.Map; import org.eclipse.cdt.core.model.CModelException; import org.eclipse.cdt.core.model.CoreModel; @@ -33,6 +34,7 @@ import org.eclipse.cdt.make.core.MakeCorePlugin; import org.eclipse.cdt.make.core.scannerconfig.IScannerInfoCollector; import org.eclipse.cdt.make.core.scannerconfig.IScannerInfoCollectorCleaner; import org.eclipse.cdt.make.core.scannerconfig.IDiscoveredPathManager.IDiscoveredPathInfo; +import org.eclipse.cdt.make.core.scannerconfig.IDiscoveredPathManager.IPerFileDiscoveredPathInfo; import org.eclipse.cdt.make.core.scannerconfig.IDiscoveredPathManager.IPerProjectDiscoveredPathInfo; import org.eclipse.cdt.make.internal.core.scannerconfig.DiscoveredPathContainer; import org.eclipse.cdt.make.internal.core.scannerconfig.ScannerConfigUtil; @@ -46,6 +48,7 @@ import org.eclipse.cdt.make.internal.ui.scannerconfig.DiscoveredElementSorter; import org.eclipse.cdt.ui.wizards.IPathEntryContainerPage; import org.eclipse.core.resources.IProject; import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.IPath; import org.eclipse.jface.action.Action; import org.eclipse.jface.action.IAction; import org.eclipse.jface.action.IMenuListener; @@ -107,7 +110,10 @@ public class DiscoveredPathContainerPage extends WizardPage implements IPathEntr private IContainerEntry fPathEntry; private TreeListDialogField fDiscoveredContainerList; + private IDiscoveredPathInfo info = null; private boolean dirty; + private List deletedEntries; + private CopyTextAction copyTextAction; private HandlerSubmission submission; @@ -136,6 +142,7 @@ public class DiscoveredPathContainerPage extends WizardPage implements IPathEntr fDiscoveredContainerList.setTreeExpansionLevel(2); fDiscoveredContainerList.setViewerSorter(new DiscoveredElementSorter()); dirty = false; + deletedEntries = new ArrayList(); } /* (non-Javadoc) @@ -151,6 +158,11 @@ public class DiscoveredPathContainerPage extends WizardPage implements IPathEntr */ public void initialize(ICProject project, IPathEntry[] currentEntries) { fCProject = project; + try { + info = MakeCorePlugin.getDefault().getDiscoveryManager().getDiscoveredInfo(fCProject.getProject()); + } catch (CoreException e) { + setErrorMessage("Error initializing Discovered paths container"); + } } /* (non-Javadoc) @@ -160,61 +172,88 @@ public class DiscoveredPathContainerPage extends WizardPage implements IPathEntr if (!dirty) { return true; } - try { - IDiscoveredPathInfo info = MakeCorePlugin.getDefault(). - getDiscoveryManager().getDiscoveredInfo(fCProject.getProject()); - if (info instanceof IPerProjectDiscoveredPathInfo) { - IPerProjectDiscoveredPathInfo projetcPathInfo = (IPerProjectDiscoveredPathInfo) info; + // first process deletes + if (deletedEntries.size() > 0) { + IProject project = fCProject.getProject(); + SCProfileInstance profileInstance = ScannerConfigProfileManager.getInstance(). + getSCProfileInstance(project, ScannerConfigProfileManager.NULL_PROFILE_ID); // use selected profile for the project + IScannerInfoCollector collector = profileInstance.getScannerInfoCollector(); + if (collector instanceof IScannerInfoCollectorCleaner) { + IScannerInfoCollectorCleaner collectorUtil = (IScannerInfoCollectorCleaner) collector; + boolean exitLoop = false; + for (Iterator i = deletedEntries.iterator(); i.hasNext() && !exitLoop; ) { + DiscoveredElement elem = (DiscoveredElement) i.next(); + switch (elem.getEntryKind()) { + case DiscoveredElement.CONTAINER: + collectorUtil.deleteAll(project); + exitLoop = true; + break; + case DiscoveredElement.PATHS_GROUP: + collectorUtil.deleteAllPaths(project); + break; + case DiscoveredElement.SYMBOLS_GROUP: + collectorUtil.deleteAllSymbols(project); + break; + case DiscoveredElement.INCLUDE_PATH: + collectorUtil.deletePath(project, elem.getEntry()); + break; + case DiscoveredElement.SYMBOL_DEFINITION: + collectorUtil.deleteSymbol(project, elem.getEntry()); + break; + } + } + } + } + + if (info instanceof IPerProjectDiscoveredPathInfo) { + IPerProjectDiscoveredPathInfo projectPathInfo = (IPerProjectDiscoveredPathInfo) info; + + LinkedHashMap includes = new LinkedHashMap(); + LinkedHashMap symbols = new LinkedHashMap(); - LinkedHashMap includes = new LinkedHashMap(); - LinkedHashMap symbols = new LinkedHashMap(); - - DiscoveredElement container = (DiscoveredElement) fDiscoveredContainerList.getElement(0); - if (container != null && container.getEntryKind() == DiscoveredElement.CONTAINER) { - Object[] cChildren = container.getChildren(); - if (cChildren != null) { - for (int i = 0; i < cChildren.length; ++i) { - DiscoveredElement group = (DiscoveredElement) cChildren[i]; - switch (group.getEntryKind()) { - case DiscoveredElement.PATHS_GROUP: { - // get the include paths - Object[] gChildren = group.getChildren(); - if (gChildren != null) { - for (int j = 0; j < gChildren.length; ++j) { - DiscoveredElement include = (DiscoveredElement) gChildren[j]; - includes.put(include.getEntry(), Boolean.valueOf(include.isRemoved())); - } - } - } - break; - case DiscoveredElement.SYMBOLS_GROUP: { - // get the symbol definitions - Object[] gChildren = group.getChildren(); - if (gChildren != null) { - for (int j = 0; j < gChildren.length; ++j) { - DiscoveredElement symbol = (DiscoveredElement) gChildren[j]; - ScannerConfigUtil.scAddSymbolString2SymbolEntryMap(symbols, symbol.getEntry(), !symbol.isRemoved()); - } - } - } - break; - } - } - } - } - projetcPathInfo.setIncludeMap(includes); - projetcPathInfo.setSymbolMap(symbols); - } - - try { - // update scanner configuration - List resourceDelta = new ArrayList(1); - resourceDelta.add(fCProject.getProject()); - MakeCorePlugin.getDefault().getDiscoveryManager().updateDiscoveredInfo(info, resourceDelta); - return true; - } catch (CoreException e) { - MakeCorePlugin.log(e); + DiscoveredElement container = (DiscoveredElement) fDiscoveredContainerList.getElement(0); + if (container != null && container.getEntryKind() == DiscoveredElement.CONTAINER) { + Object[] cChildren = container.getChildren(); + if (cChildren != null) { + for (int i = 0; i < cChildren.length; ++i) { + DiscoveredElement group = (DiscoveredElement) cChildren[i]; + switch (group.getEntryKind()) { + case DiscoveredElement.PATHS_GROUP: { + // get the include paths + Object[] gChildren = group.getChildren(); + if (gChildren != null) { + for (int j = 0; j < gChildren.length; ++j) { + DiscoveredElement include = (DiscoveredElement) gChildren[j]; + includes.put(include.getEntry(), Boolean.valueOf(include.isRemoved())); + } + } + } + break; + case DiscoveredElement.SYMBOLS_GROUP: { + // get the symbol definitions + Object[] gChildren = group.getChildren(); + if (gChildren != null) { + for (int j = 0; j < gChildren.length; ++j) { + DiscoveredElement symbol = (DiscoveredElement) gChildren[j]; + ScannerConfigUtil.scAddSymbolString2SymbolEntryMap(symbols, symbol.getEntry(), !symbol.isRemoved()); + } + } + } + break; + } + } + } } + projectPathInfo.setIncludeMap(includes); + projectPathInfo.setSymbolMap(symbols); + } + + try { + // update scanner configuration + List resourceDelta = new ArrayList(1); + resourceDelta.add(fCProject.getProject()); + MakeCorePlugin.getDefault().getDiscoveryManager().updateDiscoveredInfo(info, resourceDelta); + return true; } catch (CoreException e) { MakeCorePlugin.log(e); } @@ -251,51 +290,79 @@ public class DiscoveredPathContainerPage extends WizardPage implements IPathEntr * @return */ private DiscoveredElement populateDiscoveredElements(IContainerEntry pathEntry) { - IDiscoveredPathInfo info; DiscoveredElement container = null; try { container = DiscoveredElement.createNew(null, fCProject.getProject(), null, DiscoveredElement.CONTAINER, false, false); - info = MakeCorePlugin.getDefault(). - getDiscoveryManager().getDiscoveredInfo(fCProject.getProject()); - try { - IPathEntryContainer peContainer = CoreModel.getPathEntryContainer(pathEntry.getPath(), fCProject); - if (peContainer != null) { - container.setEntry(peContainer.getDescription()); - } - if (info instanceof IPerProjectDiscoveredPathInfo) { - IPerProjectDiscoveredPathInfo projetcPathInfo = (IPerProjectDiscoveredPathInfo) info; - // get include paths - LinkedHashMap paths = projetcPathInfo.getIncludeMap(); - for (Iterator i = paths.keySet().iterator(); i.hasNext(); ) { - String include = (String) i.next(); - Boolean removed = (Boolean) paths.get(include); - removed = (removed == null) ? Boolean.FALSE : removed; - DiscoveredElement.createNew(container, fCProject.getProject(), include, - DiscoveredElement.INCLUDE_PATH, removed.booleanValue(), false); - } - // get defined symbols - LinkedHashMap symbols = projetcPathInfo.getSymbolMap(); - for (Iterator i = symbols.keySet().iterator(); i.hasNext(); ) { - String symbol = (String) i.next(); - SymbolEntry se = (SymbolEntry) symbols.get(symbol); - for (Iterator j = se.getActiveRaw().iterator(); j.hasNext();) { - String value = (String) j.next(); - DiscoveredElement.createNew(container, fCProject.getProject(), value, - DiscoveredElement.SYMBOL_DEFINITION, false, false); - } - for (Iterator j = se.getRemovedRaw().iterator(); j.hasNext();) { - String value = (String) j.next(); - DiscoveredElement.createNew(container, fCProject.getProject(), value, - DiscoveredElement.SYMBOL_DEFINITION, true, false); - } - } - } - } catch (CModelException e) { - MakeUIPlugin.log(e.getStatus()); + IPathEntryContainer peContainer = CoreModel.getPathEntryContainer(pathEntry.getPath(), fCProject); + if (peContainer != null) { + container.setEntry(peContainer.getDescription()); } - } catch (CoreException e) { - MakeUIPlugin.log(e); + if (info != null) { + if (info instanceof IPerProjectDiscoveredPathInfo) { + IPerProjectDiscoveredPathInfo projectPathInfo = (IPerProjectDiscoveredPathInfo) info; + // get include paths + LinkedHashMap paths = projectPathInfo.getIncludeMap(); + for (Iterator i = paths.keySet().iterator(); i.hasNext(); ) { + String include = (String) i.next(); + Boolean removed = (Boolean) paths.get(include); + removed = (removed == null) ? Boolean.FALSE : removed; + DiscoveredElement.createNew(container, fCProject.getProject(), include, + DiscoveredElement.INCLUDE_PATH, removed.booleanValue(), false); + } + // get defined symbols + LinkedHashMap symbols = projectPathInfo.getSymbolMap(); + for (Iterator i = symbols.keySet().iterator(); i.hasNext(); ) { + String symbol = (String) i.next(); + SymbolEntry se = (SymbolEntry) symbols.get(symbol); + for (Iterator j = se.getActiveRaw().iterator(); j.hasNext();) { + String value = (String) j.next(); + DiscoveredElement.createNew(container, fCProject.getProject(), value, + DiscoveredElement.SYMBOL_DEFINITION, false, false); + } + for (Iterator j = se.getRemovedRaw().iterator(); j.hasNext();) { + String value = (String) j.next(); + DiscoveredElement.createNew(container, fCProject.getProject(), value, + DiscoveredElement.SYMBOL_DEFINITION, true, false); + } + } + } + else if (info instanceof IPerFileDiscoveredPathInfo) { + IPerFileDiscoveredPathInfo filePathInfo = (IPerFileDiscoveredPathInfo) info; + // get include paths + IPath[] includes = filePathInfo.getIncludePaths(); + for (int i = 0; i < includes.length; i++) { + String include = includes[i].toPortableString(); + DiscoveredElement.createNew(container, fCProject.getProject(), include, + DiscoveredElement.INCLUDE_PATH, false, false); + } + // get defined symbols + Map symbols = filePathInfo.getSymbols(); + for (Iterator iter = symbols.keySet().iterator(); iter.hasNext();) { + String key = (String) iter.next(); + String value = (String) symbols.get(key); + String symbol = (value != null && value.length() > 0) ? key + "=" + value : key; //$NON-NLS-1$ + DiscoveredElement.createNew(container, fCProject.getProject(), symbol, + DiscoveredElement.SYMBOL_DEFINITION, false, false); + } + // get include files + IPath[] includeFiles = filePathInfo.getIncludeFiles(fCProject.getPath()); + for (int i = 0; i < includeFiles.length; i++) { + String includeFile = includeFiles[i].toPortableString(); + DiscoveredElement.createNew(container, fCProject.getProject(), includeFile, + DiscoveredElement.INCLUDE_FILE, false, false); + } + // get macros files + IPath[] macrosFiles = filePathInfo.getMacroFiles(fCProject.getPath()); + for (int i = 0; i < macrosFiles.length; i++) { + String macrosFile = macrosFiles[i].toPortableString(); + DiscoveredElement.createNew(container, fCProject.getProject(), macrosFile, + DiscoveredElement.MACROS_FILE, false, false); + } + } + } + } catch (CModelException e) { + MakeUIPlugin.log(e.getStatus()); } return container; } @@ -320,6 +387,8 @@ public class DiscoveredPathContainerPage extends WizardPage implements IPathEntr switch (elem.getEntryKind()) { case DiscoveredElement.PATHS_GROUP: case DiscoveredElement.SYMBOLS_GROUP: + case DiscoveredElement.INCLUDE_FILE_GROUP: + case DiscoveredElement.MACROS_FILE_GROUP: return elem.getChildren().length != 0; } } @@ -567,72 +636,72 @@ public class DiscoveredPathContainerPage extends WizardPage implements IPathEntr private boolean deleteEntry() { boolean rc = false; - IProject project = fCProject.getProject(); - SCProfileInstance profileInstance = ScannerConfigProfileManager.getInstance(). - getSCProfileInstance(project, ScannerConfigProfileManager.NULL_PROFILE_ID); // use selected profile for the project - IScannerInfoCollector collector = profileInstance.getScannerInfoCollector(); - if (collector instanceof IScannerInfoCollectorCleaner) { - IScannerInfoCollectorCleaner collectorUtil = (IScannerInfoCollectorCleaner) collector; - List newSelection = new ArrayList(); - List selElements = fDiscoveredContainerList.getSelectedElements(); - for (int i = 0; i < selElements.size(); ++i) { - DiscoveredElement elem = (DiscoveredElement) selElements.get(i); - if (elem.getEntryKind() == DiscoveredElement.CONTAINER) { - collectorUtil.deleteAll(project); - Object[] children = elem.getChildren(); - for (int j = 0; j < children.length; j++) { - if (children[j] instanceof DiscoveredElement) { - DiscoveredElement child = (DiscoveredElement) children[j]; - child.delete(); - } + List newSelection = new ArrayList(); + List selElements = fDiscoveredContainerList.getSelectedElements(); + boolean skipIncludes = false, skipSymbols = false; + for (int i = 0; i < selElements.size(); ++i) { + DiscoveredElement elem = (DiscoveredElement) selElements.get(i); + if (elem.getEntryKind() == DiscoveredElement.CONTAINER) { + deletedEntries.add(elem); + + Object[] children = elem.getChildren(); + for (int j = 0; j < children.length; j++) { + if (children[j] instanceof DiscoveredElement) { + DiscoveredElement child = (DiscoveredElement) children[j]; + child.delete(); } - newSelection.add(elem); - rc = true; - break; } - else { - DiscoveredElement parent = elem.getParent(); - if (parent != null) { - Object[] children = parent.getChildren(); - if (elem.delete()) { - switch (elem.getEntryKind()) { - case DiscoveredElement.PATHS_GROUP: - collectorUtil.deleteAllPaths(project); - break; - case DiscoveredElement.SYMBOLS_GROUP: - collectorUtil.deleteAllSymbols(project); - break; - case DiscoveredElement.INCLUDE_PATH: - collectorUtil.deletePath(project, elem.getEntry()); - break; - case DiscoveredElement.SYMBOL_DEFINITION: - collectorUtil.deleteSymbol(project, elem.getEntry()); - break; - } - rc = true; - // set new selection - for (int j = 0; j < children.length; ++j) { - DiscoveredElement child = (DiscoveredElement) children[j]; - if (elem.equals(child)) { - newSelection.clear(); - if (j + 1 < children.length) { - newSelection.add(children[j + 1]); - } - else if (j - 1 >= 0) { - newSelection.add(children[j - 1]); - } - else { - newSelection.add(parent); - } - break; - } - } - } - } - } - } - fDiscoveredContainerList.postSetSelection(new StructuredSelection(newSelection)); + newSelection.add(elem); + rc = true; + break; + } + DiscoveredElement parent = elem.getParent(); + if (parent != null) { + Object[] children = parent.getChildren(); + if (elem.delete()) { + switch (elem.getEntryKind()) { + case DiscoveredElement.PATHS_GROUP: + deletedEntries.add(elem); + skipIncludes = true; + break; + case DiscoveredElement.SYMBOLS_GROUP: + deletedEntries.add(elem); + skipSymbols = true; + break; + case DiscoveredElement.INCLUDE_PATH: + if (!skipIncludes) { + deletedEntries.add(elem); + } + break; + case DiscoveredElement.SYMBOL_DEFINITION: + if (!skipSymbols) { + deletedEntries.add(elem); + } + break; + } + + rc = true; + // set new selection + for (int j = 0; j < children.length; ++j) { + DiscoveredElement child = (DiscoveredElement) children[j]; + if (elem.equals(child)) { + newSelection.clear(); + if (j + 1 < children.length) { + newSelection.add(children[j + 1]); + } + else if (j - 1 >= 0) { + newSelection.add(children[j - 1]); + } + else { + newSelection.add(parent); + } + break; + } + } + } + } } + fDiscoveredContainerList.postSetSelection(new StructuredSelection(newSelection)); return rc; } @@ -654,6 +723,9 @@ public class DiscoveredPathContainerPage extends WizardPage implements IPathEntr * @return */ private boolean canMoveUpDown(List selElements, int direction) { + if (info instanceof IPerFileDiscoveredPathInfo) { + return false; + } if (selElements.size() == 0) { return false; } @@ -686,6 +758,9 @@ public class DiscoveredPathContainerPage extends WizardPage implements IPathEntr * @return */ private boolean canRemoveRestore(List selElements) { + if (info instanceof IPerFileDiscoveredPathInfo) { + return false; + } if (selElements.size() == 0) { return false; } @@ -706,6 +781,13 @@ public class DiscoveredPathContainerPage extends WizardPage implements IPathEntr * @return */ private boolean canDelete(List selElements) { + if (info instanceof IPerFileDiscoveredPathInfo) { + if (selElements.size() > 0 && + ((DiscoveredElement) selElements.get(0)).getEntryKind() == DiscoveredElement.CONTAINER) { + return true; + } + return false; + } if (selElements.size() == 0) { return false; } @@ -719,7 +801,6 @@ public class DiscoveredPathContainerPage extends WizardPage implements IPathEntr */ public class CopyTextAction extends Action { static final String ACTION_ID = "org.eclipse.ui.edit.copy"; //$NON-NLS-1$ - private Shell shell; private Clipboard clipboard; private String discoveredEntry = null; @@ -729,7 +810,6 @@ public class DiscoveredPathContainerPage extends WizardPage implements IPathEntr setToolTipText(MakeUIPlugin.getResourceString("CopyDiscoveredPathAction.tooltip")); //$NON-NLS-1$ setActionDefinitionId(ACTION_ID); clipboard = new Clipboard(shell.getDisplay()); - this.shell = shell; } /** |