Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[cdt-patch] Implementing binaryParser

Index: ChangeLog
===================================================================
RCS file: /home/tools/org.eclipse.cdt.ui/ChangeLog,v
retrieving revision 1.67
diff -u -r1.67 ChangeLog
--- ChangeLog	25 Feb 2003 01:42:26 -0000	1.67
+++ ChangeLog	28 Feb 2003 21:27:36 -0000
@@ -1,3 +1,9 @@
+2003-02-26 Alain Magloire
+
+	* src/org/eclipse/cdt/ui/wizards/BinaryParserBlock.java:
+	Adjust to use the new BinaryParser scheme as described
+	in cdt-core-home/docs/binaryParser.html.
+
 2003-02-24 Alain Magloire
 
 	* src/org/eclipse/cdt/internal/ui/util/SelectionUtil.java:
Index: src/org/eclipse/cdt/ui/wizards/BinaryParserBlock.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/wizards/BinaryParserBlock.java,v
retrieving revision 1.1
diff -u -r1.1 BinaryParserBlock.java
--- src/org/eclipse/cdt/ui/wizards/BinaryParserBlock.java	27 Nov 2002 04:50:32 -0000	1.1
+++ src/org/eclipse/cdt/ui/wizards/BinaryParserBlock.java	28 Feb 2003 21:27:36 -0000
@@ -6,29 +6,31 @@
  */
 
 import org.eclipse.cdt.core.CCorePlugin;
-import org.eclipse.cdt.core.IBinaryParserConfiguration;
-import org.eclipse.cdt.core.model.CoreModel;
+import org.eclipse.cdt.core.ICDescriptor;
+import org.eclipse.cdt.core.ICExtensionReference;
 import org.eclipse.cdt.utils.ui.controls.ControlFactory;
 import org.eclipse.cdt.utils.ui.controls.RadioButtonsArea;
 import org.eclipse.cdt.utils.ui.swt.IValidation;
 import org.eclipse.core.resources.IProject;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IExtension;
+import org.eclipse.core.runtime.IExtensionPoint;
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.core.runtime.NullProgressMonitor;
 import org.eclipse.swt.graphics.Image;
 import org.eclipse.swt.widgets.Composite;
 
-
 public class BinaryParserBlock implements IWizardTab {
 
-	private static final String PREFIX = "BinaryParserBlock"; //$NON-NLS-1$
-	private static final String LABEL = PREFIX + ".label"; //$NON-NLS-1$
-	
+	//private static final String PREFIX = "BinaryParserBlock"; //$NON-NLS-1$
+	//private static final String LABEL = PREFIX + ".label"; //$NON-NLS-1$
+
 	private static String[][] radios;
 	private IProject project;
 
 	protected RadioButtonsArea radioButtons;
-	private String defaultFormat;
-//	protected Button defButton;
+	private String id;
+	//	protected Button defButton;
 
 	IValidation page;
 
@@ -39,16 +41,28 @@
 	public BinaryParserBlock(IValidation valid, IProject p) {
 		page = valid;
 		project = p;
-		IBinaryParserConfiguration[] configs = CCorePlugin.getDefault().getBinaryParserConfigurations();
-		radios = new String[configs.length][2];
-		for (int i = 0; i < configs.length; i++) {
-			radios[i] = new String[] {configs[i].getName(), configs[i].getFormat()};
+		IExtensionPoint point = CCorePlugin.getDefault().getDescriptor().getExtensionPoint(CCorePlugin.BINARY_PARSER_SIMPLE_ID);
+		if (point != null) {
+			IExtension[] exts = point.getExtensions();
+			radios = new String[exts.length][2];
+			for (int i = 0; i < exts.length; i++) {
+				radios[i] = new String[] { exts[i].getLabel(), exts[i].getUniqueIdentifier()};
+			}
 		}
-		CoreModel model = CCorePlugin.getDefault().getCoreModel();
-		if (project == null) {
-			defaultFormat = model.getDefaultBinaryParserFormat();
-		} else {
-			defaultFormat = model.getBinaryParserFormat(project);
+		try {
+			ICDescriptor desc = CCorePlugin.getDefault().getCProjectDescription(p);
+			ICExtensionReference[] ref = desc.get(CCorePlugin.BINARY_PARSER_UNIQ_ID);
+			if (ref.length > 0)
+				id = ref[0].getID();
+
+		} catch (CoreException e) {
+			//e.printStackTrace();
+		}
+		if (id == null) {
+			id = CCorePlugin.getDefault().getPluginPreferences().getDefaultString(CCorePlugin.PREF_BINARY_PARSER);
+			if (id == null || id.length() == 0) {
+				id = CCorePlugin.DEFAULT_BINARY_PARSER_UNIQ_ID;
+			}
 		}
 	}
 
@@ -66,8 +80,8 @@
 
 		radioButtons = new RadioButtonsArea(composite, "Parsers", 1, radios);
 		radioButtons.setEnabled(true);
-		if (defaultFormat != null) {
-			radioButtons.setSelectValue(defaultFormat);
+		if (id != null) {
+			radioButtons.setSelectValue(id);
 		}
 		return composite;
 	}
@@ -75,7 +89,7 @@
 	public boolean isValid() {
 		return true;
 	}
-	
+
 	public void setVisible(boolean visible) {
 	}
 
@@ -84,13 +98,18 @@
 			monitor = new NullProgressMonitor();
 		}
 		monitor.beginTask("Parsers", 1);
-		CoreModel model = CCorePlugin.getDefault().getCoreModel();
-		String format = radioButtons.getSelectedValue();
-		if (format != null) {
-			if (defaultFormat == null || !format.equals(defaultFormat)) {
-				model.setBinaryParserFormat(project, format, monitor);
-				defaultFormat = format;
+		try {
+			ICDescriptor desc = CCorePlugin.getDefault().getCProjectDescription(project);
+			String identity = radioButtons.getSelectedValue();
+			if (identity != null) {
+				if (id == null || !identity.equals(id)) {
+					desc.remove(CCorePlugin.BINARY_PARSER_UNIQ_ID);
+					desc.create(CCorePlugin.BINARY_PARSER_UNIQ_ID, identity);
+					CCorePlugin.getDefault().getCoreModel().resetBinaryParser(project);
+					id = identity;
+				}
 			}
+		} catch (CoreException e) {
 		}
 	}
 



Back to the top