Skip to main content

[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);
+				}
+			}
+
+		}
 }

Back to the top