Skip to main content
summaryrefslogtreecommitdiffstats
path: root/launch
diff options
context:
space:
mode:
authorThomas Fletcher2004-02-02 10:22:26 -0500
committerThomas Fletcher2004-02-02 10:22:26 -0500
commitc017fa06af67436f73a9990597c08ff3fc3c2ede (patch)
tree0bdfaf4a9d1d33f73501a1610efe08c57764366a /launch
parente2482f2bc6e0eaa24f5b15a71ace482e699ffa4e (diff)
downloadorg.eclipse.cdt-c017fa06af67436f73a9990597c08ff3fc3c2ede.tar.gz
org.eclipse.cdt-c017fa06af67436f73a9990597c08ff3fc3c2ede.tar.xz
org.eclipse.cdt-c017fa06af67436f73a9990597c08ff3fc3c2ede.zip
Updates to improve usabilty with projects which contain
multiple binaries and to improve extensibility of quick launcher.
Diffstat (limited to 'launch')
-rw-r--r--launch/org.eclipse.cdt.launch/ChangeLog9
-rw-r--r--launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/internal/CApplicationLaunchShortcut.java92
-rw-r--r--launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/ui/CMainTab.java27
3 files changed, 99 insertions, 29 deletions
diff --git a/launch/org.eclipse.cdt.launch/ChangeLog b/launch/org.eclipse.cdt.launch/ChangeLog
index 6b1ce94813..adb1eb417e 100644
--- a/launch/org.eclipse.cdt.launch/ChangeLog
+++ b/launch/org.eclipse.cdt.launch/ChangeLog
@@ -1,3 +1,12 @@
+2004-02-02 Thomas Fletcher
+
+ Improve the previous fix to use a TwoElementPane dialog to properly differentiate between
+ elements by target architecture and path.
+ Enhanced the ability to extend this short-cut with OEM specific labelling.
+
+ * src/org/eclipse/cdt/launch/ui/CMainTab.java
+ * src/org/eclipse/cdt/launch/internal/CApplicationLaunchShortcut.java
+
2004-01-07 Alain Magloire
Fix # 49652
diff --git a/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/internal/CApplicationLaunchShortcut.java b/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/internal/CApplicationLaunchShortcut.java
index 59cdbafd14..63c956e7e9 100644
--- a/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/internal/CApplicationLaunchShortcut.java
+++ b/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/internal/CApplicationLaunchShortcut.java
@@ -40,6 +40,7 @@ import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.IEditorPart;
import org.eclipse.ui.dialogs.ElementListSelectionDialog;
+import org.eclipse.ui.dialogs.TwoPaneElementSelector;
/**
*/
@@ -211,12 +212,8 @@ public class CApplicationLaunchShortcut implements ILaunchShortcut {
};
ElementListSelectionDialog dialog = new ElementListSelectionDialog(getShell(), provider);
dialog.setElements(debugConfigs);
- dialog.setTitle("Launch Debug Configuration Selection"); //$NON-NLS-1$
- if (mode.equals(ILaunchManager.DEBUG_MODE)) {
- dialog.setMessage("Choose a debug configuration to debug"); //$NON-NLS-1$
- } else {
- dialog.setMessage("Choose a configuration to run"); //$NON-NLS-1$
- }
+ dialog.setTitle(getDebugConfigDialogTitleString(debugConfigs, mode));
+ dialog.setMessage(getDebugConfigDialogMessageString(debugConfigs, mode));
dialog.setMultipleSelection(false);
int result = dialog.open();
provider.dispose();
@@ -226,6 +223,19 @@ public class CApplicationLaunchShortcut implements ILaunchShortcut {
return null;
}
+ protected String getDebugConfigDialogTitleString(ICDebugConfiguration [] configList, String mode) {
+ return "Launch Debug Configuration Selection"; //$NON-NLS-1$
+ }
+
+ protected String getDebugConfigDialogMessageString(ICDebugConfiguration [] configList, String mode) {
+ if (mode.equals(ILaunchManager.DEBUG_MODE)) {
+ return "Choose a debug configuration to debug"; //$NON-NLS-1$
+ } else {
+ return "Choose a configuration to run"; //$NON-NLS-1$
+ }
+ }
+
+
/**
* Show a selection dialog that allows the user to choose one of the specified
* launch configurations. Return the chosen config, or <code>null</code> if the
@@ -235,12 +245,8 @@ public class CApplicationLaunchShortcut implements ILaunchShortcut {
IDebugModelPresentation labelProvider = DebugUITools.newDebugModelPresentation();
ElementListSelectionDialog dialog = new ElementListSelectionDialog(getShell(), labelProvider);
dialog.setElements(configList.toArray());
- dialog.setTitle("Launch Configuration Selection"); //$NON-NLS-1$
- if (mode.equals(ILaunchManager.DEBUG_MODE)) {
- dialog.setMessage("Choose a launch configuration to debug"); //$NON-NLS-1$
- } else {
- dialog.setMessage("Choose a launch configuration to run"); //$NON-NLS-1$
- }
+ dialog.setTitle(getLaunchSelectionDialogTitleString(configList, mode));
+ dialog.setMessage(getLaunchSelectionDialogMessageString(configList, mode));
dialog.setMultipleSelection(false);
int result = dialog.open();
labelProvider.dispose();
@@ -250,39 +256,75 @@ public class CApplicationLaunchShortcut implements ILaunchShortcut {
return null;
}
+ protected String getLaunchSelectionDialogTitleString(List configList, String mode) {
+ return "Launch Configuration Selection"; //$NON-NLS-1$
+ }
+
+ protected String getLaunchSelectionDialogMessageString(List binList, String mode) {
+ if (mode.equals(ILaunchManager.DEBUG_MODE)) {
+ return "Choose a launch configuration to debug"; //$NON-NLS-1$
+ } else {
+ return "Choose a launch configuration to run"; //$NON-NLS-1$
+ }
+ }
+
/**
* Prompts the user to select a binary
*
* @return the selected binary or <code>null</code> if none.
*/
protected IBinary chooseBinary(List binList, String mode) {
- ILabelProvider provider = new CElementLabelProvider() {
+ ILabelProvider programLabelProvider = new CElementLabelProvider() {
public String getText(Object element) {
if (element instanceof IBinary) {
IBinary bin = (IBinary)element;
StringBuffer name = new StringBuffer();
- name.append(bin.getPath().toString());
- name.append(" - [" + bin.getCPU() + (bin.isLittleEndian() ? "le" : "be") + "]");
+ name.append(bin.getPath().lastSegment());
return name.toString();
}
return super.getText(element);
}
};
- ElementListSelectionDialog dialog = new ElementListSelectionDialog(getShell(), provider);
+ ILabelProvider qualifierLabelProvider = new CElementLabelProvider() {
+ public String getText(Object element) {
+ if (element instanceof IBinary) {
+ IBinary bin = (IBinary)element;
+ StringBuffer name = new StringBuffer();
+ name.append(bin.getCPU() + (bin.isLittleEndian() ? "le" : "be"));
+ name.append(" - ");
+ name.append(bin.getPath().toString());
+ return name.toString();
+ }
+ return super.getText(element);
+ }
+ };
+
+ TwoPaneElementSelector dialog = new TwoPaneElementSelector(getShell(), programLabelProvider, qualifierLabelProvider);
dialog.setElements(binList.toArray());
- dialog.setTitle("C Local Application"); //$NON-NLS-1$
- if (mode.equals(ILaunchManager.DEBUG_MODE)) {
- dialog.setMessage("Choose a local application to debug"); //$NON-NLS-1$
- } else {
- dialog.setMessage("Choose a local application to run"); //$NON-NLS-1$
- }
+ dialog.setTitle(getBinarySelectionDialogTitleString(binList, mode)); //$NON-NLS-1$
+ dialog.setMessage(getBinarySelectionDialogMessageString(binList, mode)); //$NON-NLS-1$
+ dialog.setUpperListLabel("Binaries:");
+ dialog.setLowerListLabel("Qualifier:");
dialog.setMultipleSelection(false);
if (dialog.open() == ElementListSelectionDialog.OK) {
return (IBinary) dialog.getFirstResult();
}
+
return null;
}
+
+ protected String getBinarySelectionDialogTitleString(List binList, String mode) {
+ return "C Local Application"; //$NON-NLS-1$
+ }
+
+ protected String getBinarySelectionDialogMessageString(List binList, String mode) {
+ if (mode.equals(ILaunchManager.DEBUG_MODE)) {
+ return "Choose a local application to debug"; //$NON-NLS-1$
+ } else {
+ return "Choose a local application to run"; //$NON-NLS-1$
+ }
+ }
/**
* Method searchAndLaunch.
@@ -330,11 +372,11 @@ public class CApplicationLaunchShortcut implements ILaunchShortcut {
} catch (InterruptedException e) {
return;
} catch (InvocationTargetException e) {
- MessageDialog.openError(getShell(), "C Local Application Launcher", e.getMessage());
+ MessageDialog.openError(getShell(), "Application Launcher", e.getMessage());
return;
}
if (results.size() == 0) {
- MessageDialog.openError(getShell(), "C Local Application Launcher", "Launch failed no binaries");
+ MessageDialog.openError(getShell(), "Application Launcher", "Launch failed no binaries");
} else {
IBinary bin = chooseBinary(results, mode);
if (bin != null) {
@@ -342,7 +384,7 @@ public class CApplicationLaunchShortcut implements ILaunchShortcut {
}
}
} else {
- MessageDialog.openError(getShell(), "C Local Application Launcher", "Launch failed no project selected");
+ MessageDialog.openError(getShell(), "Application Launcher", "Launch failed no project selected");
}
}
diff --git a/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/ui/CMainTab.java b/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/ui/CMainTab.java
index 8e8b86c522..bdefdd6c9e 100644
--- a/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/ui/CMainTab.java
+++ b/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/ui/CMainTab.java
@@ -40,6 +40,7 @@ import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Text;
import org.eclipse.ui.dialogs.ElementListSelectionDialog;
+import org.eclipse.ui.dialogs.TwoPaneElementSelector;
import org.eclipse.ui.help.WorkbenchHelp;
/**
@@ -198,27 +199,45 @@ public class CMainTab extends CLaunchConfigurationTab {
"Project must first be entered before searching for a program");
return;
}
- ILabelProvider labelProvider = new CElementLabelProvider() {
+
+ ILabelProvider programLabelProvider = new CElementLabelProvider() {
public String getText(Object element) {
if (element instanceof IBinary) {
IBinary bin = (IBinary)element;
StringBuffer name = new StringBuffer();
+ name.append(bin.getPath().lastSegment());
+ return name.toString();
+ }
+ return super.getText(element);
+ }
+ };
+
+ ILabelProvider qualifierLabelProvider = new CElementLabelProvider() {
+ public String getText(Object element) {
+ if (element instanceof IBinary) {
+ IBinary bin = (IBinary)element;
+ StringBuffer name = new StringBuffer();
+ name.append(bin.getCPU() + (bin.isLittleEndian() ? "le" : "be"));
+ name.append(" - ");
name.append(bin.getPath().toString());
- name.append(" - [" + bin.getCPU() + (bin.isLittleEndian() ? "le" : "be") + "]");
return name.toString();
}
return super.getText(element);
}
};
- ElementListSelectionDialog dialog = new ElementListSelectionDialog(getShell(), labelProvider);
+ TwoPaneElementSelector dialog = new TwoPaneElementSelector(getShell(), programLabelProvider, qualifierLabelProvider);
dialog.setElements(getBinaryFiles(getCProject()));
- dialog.setMessage("Choose a &program to run");
+ dialog.setMessage("Choose a &program to run:");
dialog.setTitle("Program Selection");
+ dialog.setUpperListLabel("Binaries:");
+ dialog.setLowerListLabel("Qualifier:");
+ dialog.setMultipleSelection(false);
if (dialog.open() == ElementListSelectionDialog.OK) {
IBinary binary = (IBinary) dialog.getFirstResult();
fProgText.setText(binary.getResource().getProjectRelativePath().toString());
}
+
}
/**

Back to the top