[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
[cdt-patch] Fix for Error parser issue ( bugzilla #66808 )
|
Title: Fix for Error parser issue ( bugzilla #66808 )
Hi,
Here I attached a patch that contains fix for an Error parser issue (bugzilla report #66808).
<<patch.txt>>
Thanks & Regards,
Sunil
Index: src/org/eclipse/cdt/make/internal/ui/ErrorParserBlock.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt-build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/internal/ui/ErrorParserBlock.java,v
retrieving revision 1.2
diff -u -r1.2 ErrorParserBlock.java
--- src/org/eclipse/cdt/make/internal/ui/ErrorParserBlock.java 4 Sep 2003 20:26:22 -0000 1.2
+++ src/org/eclipse/cdt/make/internal/ui/ErrorParserBlock.java 11 Aug 2004 21:54:06 -0000
@@ -10,6 +10,7 @@
***********************************************************************/
package org.eclipse.cdt.make.internal.ui;
+import org.eclipse.cdt.core.CCorePlugin;
import org.eclipse.cdt.make.core.IMakeBuilderInfo;
import org.eclipse.cdt.make.core.MakeBuilder;
import org.eclipse.cdt.make.core.MakeCorePlugin;
@@ -37,6 +38,9 @@
return info.getErrorParsers();
}
+ protected String[] getDefaultErrorParserIDs(IProject project) {
+ return CCorePlugin.getDefault().getAllErrorParsersIDs();
+ }
/* (non-Javadoc)
* @see org.eclipse.cdt.ui.dialogs.ErrorParserBlock#saveErrorParsers(org.eclipse.core.resources.IProject, java.lang.String[])
*/
Index: src/org/eclipse/cdt/managedbuilder/core/ITarget.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt-build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/core/ITarget.java,v
retrieving revision 1.12
diff -u -r1.12 ITarget.java
--- src/org/eclipse/cdt/managedbuilder/core/ITarget.java 11 Jun 2004 19:04:38 -0000 1.12
+++ src/org/eclipse/cdt/managedbuilder/core/ITarget.java 7 Aug 2004 01:58:31 -0000
@@ -87,14 +87,16 @@
* @return String
*/
public String getErrorParserIds();
-
+
+ public String getDefaultErrorParserIds();
/**
* Answers the ordered list of unique IDs of the error parsers associated with the target.
*
* @return String[]
*/
public String[] getErrorParserList();
-
+ public String[] getDefaultErrorParserList();
+
/**
* Answers the OS-specific command to remove files created by the build
*
Index: src/org/eclipse/cdt/managedbuilder/internal/core/Target.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt-build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/Target.java,v
retrieving revision 1.27
diff -u -r1.27 Target.java
--- src/org/eclipse/cdt/managedbuilder/internal/core/Target.java 4 Aug 2004 18:20:44 -0000 1.27
+++ src/org/eclipse/cdt/managedbuilder/internal/core/Target.java 7 Aug 2004 01:58:31 -0000
@@ -478,6 +478,14 @@
return errorParserIds;
}
+ public String getDefaultErrorParserIds() {
+ // Generally parent contains default error parser list,
+ if (parent != null)
+ return parent.getErrorParserIds();
+ // Otherwise, return all error parsers.
+ else
+ return null;
+}
/* (non-Javadoc)
* @see org.eclipse.cdt.managedbuilder.core.ITarget#getErrorParserList()
*/
@@ -505,6 +513,29 @@
return errorParsers;
}
+ public String[] getDefaultErrorParserList() {
+ String parserIDs = getDefaultErrorParserIds();
+ String[] errorParsers = null;
+ if (parserIDs != null) {
+ // Check for an empty string
+ if (parserIDs.length() == 0) {
+ errorParsers = new String[0];
+ } else {
+ StringTokenizer tok = new StringTokenizer(parserIDs, ";"); //$NON-NLS-1$
+ List list = new ArrayList(tok.countTokens());
+ while (tok.hasMoreElements()) {
+ list.add(tok.nextToken());
+ }
+ String[] strArr = {""}; //$NON-NLS-1$
+ errorParsers = (String[]) list.toArray(strArr);
+ }
+ } else {
+ // If no error parsers are specified by the target, the default is
+ // all error parsers
+ errorParsers = CCorePlugin.getDefault().getAllErrorParsersIDs();
+ }
+ return errorParsers;
+ }
/* (non-javadoc)
* A safe accesor method. It answers the tool reference list in the
* receiver.
Index: src/org/eclipse/cdt/managedbuilder/internal/ui/ErrorParserBlock.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt-build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/internal/ui/ErrorParserBlock.java,v
retrieving revision 1.2
diff -u -r1.2 ErrorParserBlock.java
--- src/org/eclipse/cdt/managedbuilder/internal/ui/ErrorParserBlock.java 4 Jun 2004 20:17:54 -0000 1.2
+++ src/org/eclipse/cdt/managedbuilder/internal/ui/ErrorParserBlock.java 7 Aug 2004 01:58:57 -0000
@@ -40,6 +40,18 @@
}
}
+ protected String[] getDefaultErrorParserIDs(ITarget target) {
+ // Get the list of error parsers specified with this Target
+ String[] errorParsers = target.getDefaultErrorParserList();
+ if (errorParsers != null) {
+ return errorParsers;
+ }
+ else {
+ // If no error parsers are specified by the target, the default is
+ // all error parsers
+ return CCorePlugin.getDefault().getAllErrorParsersIDs();
+ }
+ }
protected String[] getErrorParserIDs(IProject project) {
ITarget target = ManagedBuildManager.getSelectedTarget(project);
if (target == null) {
@@ -58,6 +70,24 @@
}
}
+ protected String[] getDefaultErrorParserIDs(IProject project) {
+ ITarget target = ManagedBuildManager.getSelectedTarget(project);
+ if (target == null) {
+ // This case occurs when modifying the properties of an existing
+ // managed build project, and the user selects the error parsers
+ // page before the "C/C++ Build" page.
+
+ // Get the build information
+ IManagedBuildInfo info = ManagedBuildManager.getBuildInfo(project);
+ target = info.getDefaultTarget();
+ }
+ if (target != null) {
+ return getDefaultErrorParserIDs(target);
+ } else {
+ return CCorePlugin.getDefault().getAllErrorParsersIDs();
+ }
+ }
+
protected String[] getErrorParserIDs() {
// Get the currently selected target from the page's container
// This is invoked by the managed builder new project wizard before the
Index: src/org/eclipse/cdt/ui/dialogs/AbstractErrorParserBlock.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt-core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/dialogs/AbstractErrorParserBlock.java,v
retrieving revision 1.8
diff -u -r1.8 AbstractErrorParserBlock.java
--- src/org/eclipse/cdt/ui/dialogs/AbstractErrorParserBlock.java 24 Jun 2004 19:29:33 -0000 1.8
+++ src/org/eclipse/cdt/ui/dialogs/AbstractErrorParserBlock.java 7 Aug 2004 01:59:20 -0000
@@ -120,7 +120,7 @@
* @return String[]
*/
protected abstract String[] getErrorParserIDs(IProject project);
-
+ protected abstract String[] getDefaultErrorParserIDs(IProject project);
/**
* To be overloaded by subclasses with another method of getting the error parsers.
* For example, the managed builder new project wizard uses the selected Target.
@@ -260,6 +260,34 @@
}
public void performDefaults() {
- initializeValues();
- }
+ // initializeValues();
+ initMapParsers();
+ setDefaultValues();
+ }
+
+ public void setDefaultValues() {
+ String[] parserIDs;
+ IProject project = getContainer().getProject();
+ parserIDs = getDefaultErrorParserIDs(project);
+
+ List checkedList = Arrays.asList(parserIDs);
+ fErrorParserList.setElements(checkedList);
+ fErrorParserList.setCheckedElements(checkedList);
+
+ Iterator items = mapParsers.keySet().iterator();
+ while( items.hasNext()) {
+ String item = (String)items.next();
+ boolean found = false;
+ for (int i = 0; i < parserIDs.length; i++) {
+ if (item.equals(parserIDs[i])) {
+ found = true;
+ break;
+ }
+ }
+ if (!found) {
+ fErrorParserList.addElement(item);
+ }
+ }
+
+ }
}