package org.objectstyle.wolips.launching.ui; import org.eclipse.core.runtime.CoreException; import org.eclipse.debug.core.ILaunchConfiguration; import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy; import org.eclipse.debug.ui.ILaunchConfigurationTab; import org.eclipse.jface.dialogs.Dialog; import org.eclipse.swt.SWT; import org.eclipse.swt.graphics.Image; 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.Event; import org.eclipse.swt.widgets.Listener; import org.objectstyle.wolips.launching.LaunchingMessages; import org.objectstyle.wolips.launching.LaunchingPlugin; import org.objectstyle.wolips.launching.delegates.WOJavaLocalApplicationLaunchConfigurationDelegate; public class BrowserTab extends AbstractWOArgumentsTab { private Button openInBrowserCheckbox; private Button webServerConnect; protected static final String EMPTY_STRING = ""; //$NON-NLS-1$ /** * @see ILaunchConfigurationTab#createControl(Composite) */ public void createControl(Composite parentComposite) { Composite parent = new Composite(parentComposite, SWT.NULL); GridLayout layout = new GridLayout(); layout.marginWidth = 0; layout.marginHeight = 0; layout.numColumns = 2; parent.setLayout(layout); GridData data = new GridData(); data.verticalAlignment = GridData.FILL; data.horizontalAlignment = GridData.FILL; parent.setLayoutData(data); Composite buttons = new Composite(parent, SWT.NULL); buttons.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_BEGINNING)); layout = new GridLayout(); layout.marginHeight = 0; layout.marginWidth = 0; buttons.setLayout(layout); this.openInBrowserCheckbox = new Button(buttons, SWT.CHECK); this.openInBrowserCheckbox.setText("Use Eclipse Browser"); data = new GridData(); data.horizontalAlignment = GridData.FILL; data.heightHint = 20; data.heightHint = Math.max(data.heightHint, this.openInBrowserCheckbox.computeSize(SWT.DEFAULT, SWT.DEFAULT, true).y); // Dialog.convertVerticalDLUsToPixels(new FontMetrics(), // IDialogConstants.BUTTON_HEIGHT); data.widthHint = 100; // Dialog.convertHorizontalDLUsToPixels(IDialogConstants.BUTTON_WIDTH); data.widthHint = Math.max(data.widthHint, this.openInBrowserCheckbox.computeSize(SWT.DEFAULT, SWT.DEFAULT, true).x); this.openInBrowserCheckbox.setLayoutData(data); this.openInBrowserCheckbox.setEnabled(true); this.openInBrowserCheckbox.addListener(SWT.Selection, new Listener() { public void handleEvent(Event e) { // setDirty(true); updateLaunchConfigurationDialog(); } }); this.webServerConnect = new Button(buttons, SWT.CHECK); this.webServerConnect.setText("WebServerConnect"); data = new GridData(); data.horizontalAlignment = GridData.FILL; data.heightHint = 20; data.heightHint = Math.max(data.heightHint, this.webServerConnect.computeSize(SWT.DEFAULT, SWT.DEFAULT, true).y); // Dialog.convertVerticalDLUsToPixels(new FontMetrics(), // IDialogConstants.BUTTON_HEIGHT); data.widthHint = 100; // Dialog.convertHorizontalDLUsToPixels(IDialogConstants.BUTTON_WIDTH); data.widthHint = Math.max(data.widthHint, this.webServerConnect.computeSize(SWT.DEFAULT, SWT.DEFAULT, true).x); this.webServerConnect.setLayoutData(data); this.webServerConnect.setEnabled(true); this.webServerConnect.addListener(SWT.Selection, new Listener() { public void handleEvent(Event e) { // setDirty(true); updateLaunchConfigurationDialog(); } }); Dialog.applyDialogFont(parent); this.setControl(parent); } /** * @see ILaunchConfigurationTab#isValid(ILaunchConfiguration) */ public boolean isValid(ILaunchConfiguration config) { return true; } /** * Defaults are empty. * * @see ILaunchConfigurationTab#setDefaults(ILaunchConfigurationWorkingCopy) */ public void setDefaults(ILaunchConfigurationWorkingCopy config) { config.setAttribute(WOJavaLocalApplicationLaunchConfigurationDelegate.ATTR_WOLIPS_LAUNCH_OPEN_IN_BROWSER, "true"); config.setAttribute(WOJavaLocalApplicationLaunchConfigurationDelegate.ATTR_WOLIPS_LAUNCH_WEBSERVER_CONNECT, "false"); } /** * @see ILaunchConfigurationTab#initializeFrom(ILaunchConfiguration) */ public void initializeFrom(ILaunchConfiguration configuration) { try { if (configuration.getAttribute(WOJavaLocalApplicationLaunchConfigurationDelegate.ATTR_WOLIPS_LAUNCH_OPEN_IN_BROWSER, "true").equals("true")) { openInBrowserCheckbox.setSelection(true); } else { openInBrowserCheckbox.setSelection(false); } if (configuration.getAttribute(WOJavaLocalApplicationLaunchConfigurationDelegate.ATTR_WOLIPS_LAUNCH_WEBSERVER_CONNECT, "false").equals("true")) { webServerConnect.setSelection(true); } else { webServerConnect.setSelection(false); } } catch (CoreException e) { setErrorMessage(LaunchingMessages.getString("WOArgumentsTab.Exception_occurred_reading_configuration___15") + e.getStatus().getMessage()); //$NON-NLS-1$ LaunchingPlugin.getDefault().log(e); } } /** * @see ILaunchConfigurationTab#performApply(ILaunchConfigurationWorkingCopy) */ public void performApply(ILaunchConfigurationWorkingCopy configuration) { if (openInBrowserCheckbox.getSelection()) { configuration.setAttribute(WOJavaLocalApplicationLaunchConfigurationDelegate.ATTR_WOLIPS_LAUNCH_OPEN_IN_BROWSER, "true"); } else { configuration.setAttribute(WOJavaLocalApplicationLaunchConfigurationDelegate.ATTR_WOLIPS_LAUNCH_OPEN_IN_BROWSER, "false"); } if (webServerConnect.getSelection()) { configuration.setAttribute(WOJavaLocalApplicationLaunchConfigurationDelegate.ATTR_WOLIPS_LAUNCH_WEBSERVER_CONNECT, "true"); } else { configuration.setAttribute(WOJavaLocalApplicationLaunchConfigurationDelegate.ATTR_WOLIPS_LAUNCH_WEBSERVER_CONNECT, "false"); } } /** * @see ILaunchConfigurationTab#getName() */ public String getName() { return LaunchingMessages.getString("BrowserTab.Name"); //$NON-NLS-1$ } /** * @see ILaunchConfigurationTab#getImage() */ public Image getImage() { return LaunchingPlugin.getImageDescriptor("icons/launching/browser-tab.gif").createImage(); } protected void updateLaunchConfigurationDialog() { super.updateLaunchConfigurationDialog(); this.getControl().update(); } }