Bug 248516 [Browser] Update Window > Pref > General >Web Browsers UI
At a time when web development is more important than ever, Eclipse platform support for web browsers is weak. The preferences panel under Window > Preferences > General > Web Browser has some limitations: 1) The dialog that pops up has only a tiny window for parameters 2) The documentation seems to be limited to two lines of text in the dialog box. 3) The parameters are ignored in some cases (even if we knew what the mean) 4) The search button on the preference panel doesn't work. 5) The mechanism for finding browsers does not work on linux for the most part. Rather than filing and fixing these problems, my suggestion is to take advantage of Eclipse's powerful launch configuration mechanisms. By creating a LaunchConfigurationType for each of the common browsers and one generic one, the General > Web Browser panel could be populated with instances of LaunchConfiguration for browsers found in the users machines (as now with the BrowserDescriptors). The New button could bring up the familiar UI of Run limited to the configurations of browser types. Edit would be edit on launch configuration; remove well that would delete the configuration. The LaunchConfigurationTypes could have a bit of UI control for the common browser command line features used by developers (eg for Firefox profile and profile directory) as well as "arguments" as string for exotica. The result would be a much more powerful web browser interface and a UI that more familar, documented, and maintainable than the current crusty code.
bundles/org.eclipse.ui.browser/src/org/eclipse/ui/internal/browser/BrowserDescriptorDialog.java
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.graphics.Font;
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.Control;
import org.eclipse.swt.widgets.FileDialog;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;
import org.eclipse.ui.PlatformUI;
/**
 * 
 */
public class BrowserDescriptorDialog extends Dialog {
	protected IBrowserDescriptorWorkingCopy browser;
	protected boolean isEdit;
	protected Button newPageCheckbox;
	protected Button clearHistoryCheckbox;
	protected Button browseButton;
	protected Text browserNameTextfield;
	protected Text browserLocationTextfield;
	protected Text browserParametersTextfield;
	private Button okButton;
	
	interface StringModifyListener {
		public void valueChanged(String s);
	}