diff --git a/core/org.eclipse.cdt.ui/ChangeLog b/core/org.eclipse.cdt.ui/ChangeLog index 79c0c06aff7..2fa5a8c8e60 100644 --- a/core/org.eclipse.cdt.ui/ChangeLog +++ b/core/org.eclipse.cdt.ui/ChangeLog @@ -1,3 +1,11 @@ +2004-07-16 Vladimir Hirsl + Implementation of HP-UX SOM binary parser page. + + * src/org/eclipse/cdt/ui/dialogs/AbstractGNUBinaryParserPage.java + * src/org/eclipse/cdt/ui/dialogs/GNUSomBinaryParserPage.java + * src/org/eclipse/cdt/ui/dialogs/GNUElfBinaryParserPage.java + * src/org/eclipse/cdt/ui/dialogs/GNUXCoffBinaryParserPage.java + 2004-07-16 Chris Wiebe Fixing numerous warnings. diff --git a/core/org.eclipse.cdt.ui/plugin.xml b/core/org.eclipse.cdt.ui/plugin.xml index 294961d0002..f2e2aafe805 100644 --- a/core/org.eclipse.cdt.ui/plugin.xml +++ b/core/org.eclipse.cdt.ui/plugin.xml @@ -773,6 +773,11 @@ parserID="org.eclipse.cdt.core.MachO" id="MachOBinaryParserPage"> + + diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/dialogs/AbstractGNUBinaryParserPage.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/dialogs/AbstractGNUBinaryParserPage.java new file mode 100644 index 00000000000..c62576190bd --- /dev/null +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/dialogs/AbstractGNUBinaryParserPage.java @@ -0,0 +1,266 @@ +/******************************************************************************* + * Copyright (c) 2003, 2004 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: + * QNX Software Systems - Initial API and implementation + *******************************************************************************/ + +package org.eclipse.cdt.ui.dialogs; + +import java.io.File; + +import org.eclipse.cdt.core.CCorePlugin; +import org.eclipse.cdt.core.ICDescriptor; +import org.eclipse.cdt.core.ICExtensionReference; +import org.eclipse.cdt.internal.ui.CUIMessages; +import org.eclipse.cdt.ui.CUIPlugin; +import org.eclipse.cdt.utils.ui.controls.ControlFactory; +import org.eclipse.core.resources.IProject; +import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.IConfigurationElement; +import org.eclipse.core.runtime.IExtensionPoint; +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.core.runtime.NullProgressMonitor; +import org.eclipse.core.runtime.Platform; +import org.eclipse.core.runtime.Preferences; +import org.eclipse.swt.SWT; +import org.eclipse.swt.events.ModifyEvent; +import org.eclipse.swt.events.ModifyListener; +import org.eclipse.swt.events.SelectionAdapter; +import org.eclipse.swt.events.SelectionEvent; +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.layout.GridLayout; +import org.eclipse.swt.widgets.Button; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.FileDialog; +import org.eclipse.swt.widgets.Group; +import org.eclipse.swt.widgets.Label; +import org.eclipse.swt.widgets.Text; + +/** + * Abstract base binary parser page for GNU binutils based binary parsers + */ +public abstract class AbstractGNUBinaryParserPage extends AbstractCOptionPage { + + public final static String PREF_ADDR2LINE_PATH = CUIPlugin.PLUGIN_ID + ".addr2line"; //$NON-NLS-1$ + public final static String PREF_CPPFILT_PATH = CUIPlugin.PLUGIN_ID + ".cppfilt"; //$NON-NLS-1$ + + protected Text fAddr2LineCommandText; + protected Text fCPPFiltCommandText; + private String parserID = null; + + /* + * (non-Javadoc) + * + * @see org.eclipse.cdt.ui.dialogs.ICOptionPage#performApply(org.eclipse.core.runtime.IProgressMonitor) + */ + public void performApply(IProgressMonitor monitor) throws CoreException { + if (monitor == null) { + monitor = new NullProgressMonitor(); + } + + String addr2line = fAddr2LineCommandText.getText().trim(); + String cppfilt = fCPPFiltCommandText.getText().trim(); + + monitor.beginTask(CUIMessages.getString("BinaryParserPage.task.savingAttributes"), 1); //$NON-NLS-1$ + IProject proj = getContainer().getProject(); + if (proj != null) { + ICDescriptor cdesc = CCorePlugin.getDefault().getCProjectDescription(proj, false); + ICExtensionReference[] cext = cdesc.get(CCorePlugin.BINARY_PARSER_UNIQ_ID); + if (cext.length > 0) { + initializeParserId(); + for (int i = 0; i < cext.length; i++) { + if (cext[i].getID().equals(parserID)) { + String orig = cext[i].getExtensionData("addr2line"); //$NON-NLS-1$ + if (orig == null || !orig.equals(addr2line)) { + cext[i].setExtensionData("addr2line", addr2line); //$NON-NLS-1$ + } + orig = cext[i].getExtensionData("c++filt"); //$NON-NLS-1$ + if (orig == null || !orig.equals(cppfilt)) { + cext[i].setExtensionData("c++filt", cppfilt); //$NON-NLS-1$ + } + } + } + } + } else { + Preferences store = getContainer().getPreferences(); + if (store != null) { + store.setValue(PREF_ADDR2LINE_PATH, addr2line); + store.setValue(PREF_CPPFILT_PATH, cppfilt); + } + } + } + + private void initializeParserId() { + if (parserID == null) { + IExtensionPoint point = Platform.getExtensionRegistry().getExtensionPoint(CUIPlugin.PLUGIN_ID, "BinaryParserPage"); //$NON-NLS-1$ + IConfigurationElement[] infos = point.getConfigurationElements(); + for (int i = 0; i < infos.length; i++) { + String id = infos[i].getAttribute("parserID"); //$NON-NLS-1$ + String clazz = infos[i].getAttribute("class"); //$NON-NLS-1$ + String ego = getRealBinaryParserPage().getClass().getName(); + if (clazz != null && clazz.equals(ego)) { + parserID = id; + return; + } + } + parserID = ""; //$NON-NLS-1$ + } + } + + /** + * If this class is inherited from then this method MUST be implemented + * in the derived class. + */ + abstract protected AbstractGNUBinaryParserPage getRealBinaryParserPage(); + + /* + * (non-Javadoc) + * + * @see org.eclipse.cdt.ui.dialogs.ICOptionPage#performDefaults() + */ + public void performDefaults() { + String addr2line = null; + String cppfilt = null; + IProject proj = getContainer().getProject(); + Preferences store = getContainer().getPreferences(); + if (store != null) { + if (proj != null) { + addr2line = store.getString(PREF_ADDR2LINE_PATH); + cppfilt = store.getString(PREF_CPPFILT_PATH); + } else { + addr2line = store.getDefaultString(PREF_ADDR2LINE_PATH); + cppfilt = store.getDefaultString(PREF_CPPFILT_PATH); + } + fAddr2LineCommandText.setText((addr2line == null || addr2line.length() == 0) ? "addr2line" : addr2line); //$NON-NLS-1$ + fCPPFiltCommandText.setText((cppfilt == null || cppfilt.length() == 0) ? "c++filt" : cppfilt); //$NON-NLS-1$ + } + } + + /* + * (non-Javadoc) + * + * @see org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets.Composite) + */ + public void createControl(Composite parent) { + Group comp = new Group(parent, SWT.SHADOW_ETCHED_IN); + comp.setText(CUIMessages.getString("BinaryParserBlock.binaryParserOptions")); //$NON-NLS-1$ + comp.setLayout(new GridLayout(2, true)); + comp.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + ((GridLayout) comp.getLayout()).makeColumnsEqualWidth = false; + + Label label = ControlFactory.createLabel(comp, CUIMessages.getString("BinaryParserPage.label.addr2lineCommand")); //$NON-NLS-1$ + GridData gd = new GridData(); + gd.horizontalSpan = 2; + label.setLayoutData(gd); + + fAddr2LineCommandText = ControlFactory.createTextField(comp, SWT.SINGLE | SWT.BORDER); + fAddr2LineCommandText.addModifyListener(new ModifyListener() { + + public void modifyText(ModifyEvent evt) { + //updateLaunchConfigurationDialog(); + } + }); + + Button button = ControlFactory.createPushButton(comp, CUIMessages.getString("BinaryParserPage.label.browse")); //$NON-NLS-1$ + button.addSelectionListener(new SelectionAdapter() { + + public void widgetSelected(SelectionEvent evt) { + handleAddr2LineButtonSelected(); + //updateLaunchConfigurationDialog(); + } + + private void handleAddr2LineButtonSelected() { + FileDialog dialog = new FileDialog(getShell(), SWT.NONE); + dialog.setText(CUIMessages.getString("BinaryParserPage.label.addr2lineCommand")); //$NON-NLS-1$ + String command = fAddr2LineCommandText.getText().trim(); + int lastSeparatorIndex = command.lastIndexOf(File.separator); + if (lastSeparatorIndex != -1) { + dialog.setFilterPath(command.substring(0, lastSeparatorIndex)); + } + String res = dialog.open(); + if (res == null) { + return; + } + fAddr2LineCommandText.setText(res); + } + }); + + label = ControlFactory.createLabel(comp, CUIMessages.getString("BinaryParserPage.label.cppfiltCommand")); //$NON-NLS-1$ + gd = new GridData(); + gd.horizontalSpan = 2; + label.setLayoutData(gd); + + fCPPFiltCommandText = ControlFactory.createTextField(comp, SWT.SINGLE | SWT.BORDER); + gd = new GridData(GridData.FILL_HORIZONTAL); + fCPPFiltCommandText.setLayoutData(gd); + fCPPFiltCommandText.addModifyListener(new ModifyListener() { + + public void modifyText(ModifyEvent evt) { + //updateLaunchConfigurationDialog(); + } + }); + button = ControlFactory.createPushButton(comp, CUIMessages.getString("BinaryParserPage.label.browse1")); //$NON-NLS-1$ + button.addSelectionListener(new SelectionAdapter() { + + public void widgetSelected(SelectionEvent evt) { + handleCPPFiltButtonSelected(); + //updateLaunchConfigurationDialog(); + } + + private void handleCPPFiltButtonSelected() { + FileDialog dialog = new FileDialog(getShell(), SWT.NONE); + dialog.setText(CUIMessages.getString("BinaryParserPage.label.cppfiltCommand")); //$NON-NLS-1$ + String command = fCPPFiltCommandText.getText().trim(); + int lastSeparatorIndex = command.lastIndexOf(File.separator); + if (lastSeparatorIndex != -1) { + dialog.setFilterPath(command.substring(0, lastSeparatorIndex)); + } + String res = dialog.open(); + if (res == null) { + return; + } + fCPPFiltCommandText.setText(res); + } + }); + + setControl(comp); + initialziedValues(); + } + + private void initialziedValues() { + String addr2line = null; + String cppfilt = null; + IProject proj = getContainer().getProject(); + if (proj != null) { + try { + ICDescriptor cdesc = CCorePlugin.getDefault().getCProjectDescription(proj, false); + ICExtensionReference[] cext = cdesc.get(CCorePlugin.BINARY_PARSER_UNIQ_ID); + if (cext.length > 0) { + initializeParserId(); + for (int i = 0; i < cext.length; i++) { + if (cext[i].getID().equals(parserID)) { + addr2line = cext[0].getExtensionData("addr2line"); //$NON-NLS-1$ + cppfilt = cext[0].getExtensionData("c++filt"); //$NON-NLS-1$ + break; + } + } + } + } catch (CoreException e) { + } + } else { + Preferences store = getContainer().getPreferences(); + if (store != null) { + addr2line = store.getString(PREF_ADDR2LINE_PATH); + cppfilt = store.getString(PREF_CPPFILT_PATH); + } + } + fAddr2LineCommandText.setText((addr2line == null || addr2line.length() == 0) ? "addr2line" : addr2line); //$NON-NLS-1$ + fCPPFiltCommandText.setText((cppfilt == null || cppfilt.length() == 0) ? "c++filt" : cppfilt); //$NON-NLS-1$ + } + +} diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/dialogs/CygwinPEBinaryParserPage.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/dialogs/CygwinPEBinaryParserPage.java index f3d4071aac2..1e0403ac5be 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/dialogs/CygwinPEBinaryParserPage.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/dialogs/CygwinPEBinaryParserPage.java @@ -71,7 +71,7 @@ public class CygwinPEBinaryParserPage extends AbstractCOptionPage { IProject proj = getContainer().getProject(); if (proj != null) { String parserID = ""; //$NON-NLS-1$ - ICDescriptor cdesc = CCorePlugin.getDefault().getCProjectDescription(proj); + ICDescriptor cdesc = CCorePlugin.getDefault().getCProjectDescription(proj, false); ICExtensionReference[] cext = cdesc.get(CCorePlugin.BINARY_PARSER_UNIQ_ID); if (cext.length > 0) { IExtensionPoint point = Platform.getExtensionRegistry().getExtensionPoint(CUIPlugin.PLUGIN_ID, "BinaryParserPage"); //$NON-NLS-1$ @@ -276,7 +276,7 @@ public class CygwinPEBinaryParserPage extends AbstractCOptionPage { IProject proj = getContainer().getProject(); if (proj != null) { try { - ICDescriptor cdesc = CCorePlugin.getDefault().getCProjectDescription(proj); + ICDescriptor cdesc = CCorePlugin.getDefault().getCProjectDescription(proj, false); ICExtensionReference[] cext = cdesc.get(CCorePlugin.BINARY_PARSER_UNIQ_ID); if (cext.length > 0) { addr2line = cext[0].getExtensionData("addr2line"); //$NON-NLS-1$; diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/dialogs/GNUElfBinaryParserPage.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/dialogs/GNUElfBinaryParserPage.java index a239caa9309..68110c71497 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/dialogs/GNUElfBinaryParserPage.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/dialogs/GNUElfBinaryParserPage.java @@ -1,255 +1,29 @@ -/******************************************************************************* - * Copyright (c) 2003, 2004 IBM Corporation and others. +/********************************************************************** + * Copyright (c) 2004 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: - * QNX Software Systems - Initial API and implementation - *******************************************************************************/ - + * Contributors: + * IBM - Initial API and implementation + **********************************************************************/ package org.eclipse.cdt.ui.dialogs; -import java.io.File; - -import org.eclipse.cdt.core.CCorePlugin; -import org.eclipse.cdt.core.ICDescriptor; -import org.eclipse.cdt.core.ICExtensionReference; -import org.eclipse.cdt.internal.ui.CUIMessages; -import org.eclipse.cdt.ui.CUIPlugin; -import org.eclipse.cdt.utils.ui.controls.ControlFactory; -import org.eclipse.core.resources.IProject; -import org.eclipse.core.runtime.CoreException; -import org.eclipse.core.runtime.IConfigurationElement; -import org.eclipse.core.runtime.IExtensionPoint; -import org.eclipse.core.runtime.IProgressMonitor; -import org.eclipse.core.runtime.NullProgressMonitor; -import org.eclipse.core.runtime.Platform; -import org.eclipse.core.runtime.Preferences; -import org.eclipse.swt.SWT; -import org.eclipse.swt.events.ModifyEvent; -import org.eclipse.swt.events.ModifyListener; -import org.eclipse.swt.events.SelectionAdapter; -import org.eclipse.swt.events.SelectionEvent; -import org.eclipse.swt.layout.GridData; -import org.eclipse.swt.layout.GridLayout; -import org.eclipse.swt.widgets.Button; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.FileDialog; -import org.eclipse.swt.widgets.Group; -import org.eclipse.swt.widgets.Label; -import org.eclipse.swt.widgets.Text; - /** + * Reusing AbstractGNUBinaryParserPage. + * New class is required for the algorithm in method performApply. + * Must implement getRealBinaryParserPage method. + * + * @author vhirsl */ -public class GNUElfBinaryParserPage extends AbstractCOptionPage { +public class GNUElfBinaryParserPage extends AbstractGNUBinaryParserPage { - public final static String PREF_ADDR2LINE_PATH = CUIPlugin.PLUGIN_ID + ".addr2line"; //$NON-NLS-1$ - public final static String PREF_CPPFILT_PATH = CUIPlugin.PLUGIN_ID + ".cppfilt"; //$NON-NLS-1$ - - protected Text fAddr2LineCommandText; - protected Text fCPPFiltCommandText; - - /* - * (non-Javadoc) - * - * @see org.eclipse.cdt.ui.dialogs.ICOptionPage#performApply(org.eclipse.core.runtime.IProgressMonitor) + /* (non-Javadoc) + * @see org.eclipse.cdt.ui.dialogs.AbstractGNUBinaryParserPage#getRealBinaryParserPage() */ - public void performApply(IProgressMonitor monitor) throws CoreException { - if (monitor == null) { - monitor = new NullProgressMonitor(); - } - - String addr2line = fAddr2LineCommandText.getText().trim(); - String cppfilt = fCPPFiltCommandText.getText().trim(); - - monitor.beginTask(CUIMessages.getString("BinaryParserPage.task.savingAttributes"), 1); //$NON-NLS-1$ - IProject proj = getContainer().getProject(); - if (proj != null) { - String parserID = ""; //$NON-NLS-1$ - ICDescriptor cdesc = CCorePlugin.getDefault().getCProjectDescription(proj); - ICExtensionReference[] cext = cdesc.get(CCorePlugin.BINARY_PARSER_UNIQ_ID); - if (cext.length > 0) { - IExtensionPoint point = Platform.getExtensionRegistry().getExtensionPoint(CUIPlugin.PLUGIN_ID, "BinaryParserPage"); //$NON-NLS-1$ - IConfigurationElement[] infos = point.getConfigurationElements(); - for (int i = 0; i < infos.length; i++) { - String id = infos[i].getAttribute("parserID"); //$NON-NLS-1$ - String clazz = infos[i].getAttribute("class"); //$NON-NLS-1$ - String ego = getRealBinaryParserPage().getClass().getName(); - if (clazz != null && clazz.equals(ego)) { - parserID = id; - break; - } - } - for (int i = 0; i < cext.length; i++) { - if (cext[i].getID().equals(parserID)) { - - String orig = cext[i].getExtensionData("addr2line"); //$NON-NLS-1$ - if (orig == null || !orig.equals(addr2line)) { - cext[i].setExtensionData("addr2line", addr2line); //$NON-NLS-1$ - } - orig = cext[i].getExtensionData("c++filt"); //$NON-NLS-1$ - if (orig == null || !orig.equals(cppfilt)) { - cext[i].setExtensionData("c++filt", cppfilt); //$NON-NLS-1$ - } - } - } - } - } else { - Preferences store = getContainer().getPreferences(); - if (store != null) { - store.setValue(PREF_ADDR2LINE_PATH, addr2line); - store.setValue(PREF_CPPFILT_PATH, cppfilt); - } - } - } - - /** - * If this class is inherited from then this method MUST be implemented - * in the derived class. - */ - protected Object getRealBinaryParserPage() { + protected AbstractGNUBinaryParserPage getRealBinaryParserPage() { return this; } - /* - * (non-Javadoc) - * - * @see org.eclipse.cdt.ui.dialogs.ICOptionPage#performDefaults() - */ - public void performDefaults() { - String addr2line = null; - String cppfilt = null; - IProject proj = getContainer().getProject(); - Preferences store = getContainer().getPreferences(); - if (store != null) { - if (proj != null) { - addr2line = store.getString(PREF_ADDR2LINE_PATH); - cppfilt = store.getString(PREF_CPPFILT_PATH); - } else { - addr2line = store.getDefaultString(PREF_ADDR2LINE_PATH); - cppfilt = store.getDefaultString(PREF_CPPFILT_PATH); - } - fAddr2LineCommandText.setText((addr2line == null || addr2line.length() == 0) ? "addr2line" : addr2line); //$NON-NLS-1$ - fCPPFiltCommandText.setText((cppfilt == null || cppfilt.length() == 0) ? "c++filt" : cppfilt); //$NON-NLS-1$ - } - } - - /* - * (non-Javadoc) - * - * @see org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets.Composite) - */ - public void createControl(Composite parent) { - Group comp = new Group(parent, SWT.SHADOW_ETCHED_IN); - comp.setText(CUIMessages.getString("BinaryParserBlock.binaryParserOptions")); //$NON-NLS-1$ - comp.setLayout(new GridLayout(2, true)); - comp.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); - ((GridLayout) comp.getLayout()).makeColumnsEqualWidth = false; - - Label label = ControlFactory.createLabel(comp, CUIMessages.getString("BinaryParserPage.label.addr2lineCommand")); //$NON-NLS-1$ - GridData gd = new GridData(); - gd.horizontalSpan = 2; - label.setLayoutData(gd); - - fAddr2LineCommandText = ControlFactory.createTextField(comp, SWT.SINGLE | SWT.BORDER); - fAddr2LineCommandText.addModifyListener(new ModifyListener() { - - public void modifyText(ModifyEvent evt) { - //updateLaunchConfigurationDialog(); - } - }); - - Button button = ControlFactory.createPushButton(comp, CUIMessages.getString("BinaryParserPage.label.browse")); //$NON-NLS-1$ - button.addSelectionListener(new SelectionAdapter() { - - public void widgetSelected(SelectionEvent evt) { - handleAddr2LineButtonSelected(); - //updateLaunchConfigurationDialog(); - } - - private void handleAddr2LineButtonSelected() { - FileDialog dialog = new FileDialog(getShell(), SWT.NONE); - dialog.setText(CUIMessages.getString("BinaryParserPage.label.addr2lineCommand")); //$NON-NLS-1$ - String command = fAddr2LineCommandText.getText().trim(); - int lastSeparatorIndex = command.lastIndexOf(File.separator); - if (lastSeparatorIndex != -1) { - dialog.setFilterPath(command.substring(0, lastSeparatorIndex)); - } - String res = dialog.open(); - if (res == null) { - return; - } - fAddr2LineCommandText.setText(res); - } - }); - - label = ControlFactory.createLabel(comp, CUIMessages.getString("BinaryParserPage.label.cppfiltCommand")); //$NON-NLS-1$ - gd = new GridData(); - gd.horizontalSpan = 2; - label.setLayoutData(gd); - - fCPPFiltCommandText = ControlFactory.createTextField(comp, SWT.SINGLE | SWT.BORDER); - gd = new GridData(GridData.FILL_HORIZONTAL); - fCPPFiltCommandText.setLayoutData(gd); - fCPPFiltCommandText.addModifyListener(new ModifyListener() { - - public void modifyText(ModifyEvent evt) { - //updateLaunchConfigurationDialog(); - } - }); - button = ControlFactory.createPushButton(comp, CUIMessages.getString("BinaryParserPage.label.browse1")); //$NON-NLS-1$ - button.addSelectionListener(new SelectionAdapter() { - - public void widgetSelected(SelectionEvent evt) { - handleCPPFiltButtonSelected(); - //updateLaunchConfigurationDialog(); - } - - private void handleCPPFiltButtonSelected() { - FileDialog dialog = new FileDialog(getShell(), SWT.NONE); - dialog.setText(CUIMessages.getString("BinaryParserPage.label.cppfiltCommand")); //$NON-NLS-1$ - String command = fCPPFiltCommandText.getText().trim(); - int lastSeparatorIndex = command.lastIndexOf(File.separator); - if (lastSeparatorIndex != -1) { - dialog.setFilterPath(command.substring(0, lastSeparatorIndex)); - } - String res = dialog.open(); - if (res == null) { - return; - } - fCPPFiltCommandText.setText(res); - } - }); - - setControl(comp); - initialziedValues(); - } - - private void initialziedValues() { - String addr2line = null; - String cppfilt = null; - IProject proj = getContainer().getProject(); - if (proj != null) { - try { - ICDescriptor cdesc = CCorePlugin.getDefault().getCProjectDescription(proj); - ICExtensionReference[] cext = cdesc.get(CCorePlugin.BINARY_PARSER_UNIQ_ID); - if (cext.length > 0) { - addr2line = cext[0].getExtensionData("addr2line"); //$NON-NLS-1$ - cppfilt = cext[0].getExtensionData("c++filt"); //$NON-NLS-1$ - } - } catch (CoreException e) { - } - } else { - Preferences store = getContainer().getPreferences(); - if (store != null) { - addr2line = store.getString(PREF_ADDR2LINE_PATH); - cppfilt = store.getString(PREF_CPPFILT_PATH); - } - } - fAddr2LineCommandText.setText((addr2line == null || addr2line.length() == 0) ? "addr2line" : addr2line); //$NON-NLS-1$ - fCPPFiltCommandText.setText((cppfilt == null || cppfilt.length() == 0) ? "c++filt" : cppfilt); //$NON-NLS-1$ - } - } diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/dialogs/GNUSomBinaryParserPage.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/dialogs/GNUSomBinaryParserPage.java new file mode 100644 index 00000000000..a2aeffa371f --- /dev/null +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/dialogs/GNUSomBinaryParserPage.java @@ -0,0 +1,29 @@ +/********************************************************************** + * Copyright (c) 2004 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 - Initial API and implementation + **********************************************************************/ +package org.eclipse.cdt.ui.dialogs; + +/** + * Reusing AbstractGNUBinaryParserPage. + * New class is required for the algorithm in method performApply. + * Must implement getRealBinaryParserPage method. + * + * @author vhirsl + */ +public class GNUSomBinaryParserPage extends AbstractGNUBinaryParserPage { + + /* (non-Javadoc) + * @see org.eclipse.cdt.ui.dialogs.AbstractGNUBinaryParserPage#getRealBinaryParserPage() + */ + protected AbstractGNUBinaryParserPage getRealBinaryParserPage() { + return this; + } + +} diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/dialogs/GNUXCoffBinaryParserPage.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/dialogs/GNUXCoffBinaryParserPage.java index 1aceb50824c..79f3f5d8a35 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/dialogs/GNUXCoffBinaryParserPage.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/dialogs/GNUXCoffBinaryParserPage.java @@ -11,18 +11,18 @@ package org.eclipse.cdt.ui.dialogs; /** - * Reusing GNUElfBinaryParserPage. + * Reusing AbstractGNUBinaryParserPage. * New class is required for the algorithm in method performApply. * Must implement getRealBinaryParserPage method. * * @author vhirsl */ -public class GNUXCoffBinaryParserPage extends GNUElfBinaryParserPage { +public class GNUXCoffBinaryParserPage extends AbstractGNUBinaryParserPage { /* (non-Javadoc) * @see org.eclipse.cdt.ui.dialogs.GNUElfBinaryParserPage#getRealBinaryParserPage() */ - protected Object getRealBinaryParserPage() { + protected AbstractGNUBinaryParserPage getRealBinaryParserPage() { return this; } }