debuggercdi/com.nokia.cdt.debug.launch/src/com/nokia/cdt/internal/debug/launch/newwizard/AbstractLaunchWizardSection.java
author dadubrow
Tue, 16 Feb 2010 13:41:43 -0600
branchRCL_2_4
changeset 966 15c9cbbf6707
parent 959 a9c84e6d779f
child 982 c848ffa5a500
permissions -rw-r--r--
externalize strings
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
911
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
     1
/*
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
     2
 * Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
     3
 * All rights reserved.
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
     4
 * This component and the accompanying materials are made available
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
     5
 * under the terms of the License "Eclipse Public License v1.0"
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
     6
 * which accompanies this distribution, and is available
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
     7
 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
     8
 *
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
     9
 * Initial Contributors:
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    10
 * Nokia Corporation - initial contribution.
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    11
 *
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    12
 * Contributors:
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    13
 *
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    14
 * Description: 
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    15
 *
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    16
 */
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    17
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    18
package com.nokia.cdt.internal.debug.launch.newwizard;
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    19
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    20
import java.text.MessageFormat;
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    21
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    22
import org.eclipse.core.runtime.IStatus;
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    23
import org.eclipse.core.runtime.Status;
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    24
import org.eclipse.jface.layout.GridDataFactory;
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    25
import org.eclipse.jface.layout.GridLayoutFactory;
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    26
import org.eclipse.jface.resource.JFaceResources;
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    27
import org.eclipse.jface.window.Window;
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    28
import org.eclipse.swt.SWT;
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    29
import org.eclipse.swt.events.ControlAdapter;
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    30
import org.eclipse.swt.events.ControlEvent;
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    31
import org.eclipse.swt.events.DisposeEvent;
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    32
import org.eclipse.swt.events.DisposeListener;
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    33
import org.eclipse.swt.events.SelectionAdapter;
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    34
import org.eclipse.swt.events.SelectionEvent;
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    35
import org.eclipse.swt.graphics.GC;
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    36
import org.eclipse.swt.graphics.Point;
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    37
import org.eclipse.swt.widgets.Button;
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    38
import org.eclipse.swt.widgets.Composite;
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    39
import org.eclipse.swt.widgets.Control;
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    40
import org.eclipse.swt.widgets.Label;
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    41
import org.eclipse.swt.widgets.Shell;
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    42
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    43
import com.nokia.cdt.internal.debug.launch.LaunchPlugin;
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    44
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    45
/**
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    46
 * 
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    47
 */
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    48
public abstract class AbstractLaunchWizardSection implements IWizardSection {
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    49
966
15c9cbbf6707 externalize strings
dadubrow
parents: 959
diff changeset
    50
	private static final String CHANGE_LABEL = Messages.getString("AbstractLaunchWizardSection.ChangeLabel"); //$NON-NLS-1$
953
68b6a294ab01 new launch wizard implementation
dadubrow
parents: 911
diff changeset
    51
	protected final LaunchWizardData data;
911
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    52
	private String sectionName;
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    53
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    54
	protected IStatus status;
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    55
	protected Label descriptionLabel;
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    56
	protected Button changeButton;
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    57
	protected Composite control;
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    58
	private ISectionChangeListener changeListener;
959
a9c84e6d779f ui tweaks to new launch wizard
dadubrow
parents: 953
diff changeset
    59
	protected final UnifiedLaunchOptionsPage launchOptionsPage;
911
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    60
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    61
959
a9c84e6d779f ui tweaks to new launch wizard
dadubrow
parents: 953
diff changeset
    62
	public AbstractLaunchWizardSection(LaunchWizardData data, String sectionName, UnifiedLaunchOptionsPage launchOptionsPage) {
911
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    63
		this.data = data;
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    64
		this.sectionName = sectionName;
959
a9c84e6d779f ui tweaks to new launch wizard
dadubrow
parents: 953
diff changeset
    65
		this.launchOptionsPage = launchOptionsPage;
911
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    66
		status = Status.OK_STATUS;
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    67
	}
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    68
	
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    69
	abstract protected void dispose();
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    70
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    71
	public IStatus getStatus() {
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    72
		return status;
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    73
	}
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    74
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    75
	/** Initialize the data for this section (before UI shown). */
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    76
	public abstract void initializeSettings();
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    77
	
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    78
	/** Validate the settings and update status. */
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    79
	abstract protected void validate();
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    80
	
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    81
	/** Update the UI when data changes. Called after validate(). */
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    82
	protected abstract void updateUI();
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    83
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    84
	/** Create the UI for this section. */
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    85
	public abstract void createControl(Composite parent);
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    86
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    87
	/** Create the dialog for the Change... button. */
953
68b6a294ab01 new launch wizard implementation
dadubrow
parents: 911
diff changeset
    88
	protected abstract AbstractLaunchSettingsDialog createChangeSettingsDialog(Shell shell, LaunchWizardData dialogData);
911
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    89
	/** Refresh the section after the Change... dialog has been closed. */
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    90
	protected abstract void refresh();
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    91
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    92
	public Control getControl() {
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    93
		return control; 
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    94
	}
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    95
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    96
	public String getSectionName() {
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    97
		return sectionName;
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    98
	}
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
    99
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   100
	/* (non-Javadoc)
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   101
	 * @see com.nokia.cdt.internal.debug.launch.wizard2.IWizardSection#setChangeListener(com.nokia.cdt.internal.debug.launch.wizard2.IWizardSection.ISectionChangeListener)
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   102
	 */
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   103
	public void setChangeListener(ISectionChangeListener listener) {
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   104
		this.changeListener = listener;
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   105
	}
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   106
	
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   107
	protected void createSection(Composite parent, int acceleratorIndex) {
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   108
		Composite composite = new Composite(parent, SWT.NONE);
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   109
		
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   110
		GC gc = new GC(parent);
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   111
		int INDENT = gc.getAdvanceWidth('m') * 4;
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   112
		gc.dispose();
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   113
		
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   114
		GridLayoutFactory.fillDefaults().numColumns(2).margins(6, 0).applyTo(composite);
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   115
		
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   116
		Label titleLabel = new Label(composite, SWT.NONE);
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   117
		titleLabel.setText(sectionName);
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   118
		titleLabel.setFont(JFaceResources.getBannerFont());
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   119
		GridDataFactory.fillDefaults().grab(true, false).span(2, 1).applyTo(titleLabel);
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   120
		
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   121
		// spacing
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   122
		Label spacer = new Label(composite, SWT.NONE);
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   123
		GridDataFactory.fillDefaults().grab(true, false).span(2, 1).applyTo(spacer);
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   124
		
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   125
		descriptionLabel = new Label(composite, SWT.WRAP);
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   126
		GridDataFactory.fillDefaults().grab(true, true).indent(INDENT, 0).applyTo(descriptionLabel);
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   127
		
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   128
		String label = MessageFormat.format("{0}&{1}", //$NON-NLS-1$
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   129
				CHANGE_LABEL.substring(0, acceleratorIndex), CHANGE_LABEL.substring(acceleratorIndex));
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   130
		changeButton = new Button(composite, SWT.PUSH);
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   131
		changeButton.setText(label);
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   132
		Point minSize = changeButton.computeSize(SWT.DEFAULT, SWT.DEFAULT, true);
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   133
		GridDataFactory.defaultsFor(changeButton).grab(false, false).hint(minSize.x + INDENT, SWT.DEFAULT).applyTo(changeButton);
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   134
		changeButton.addSelectionListener(new SelectionAdapter() {
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   135
			@Override
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   136
			public void widgetSelected(SelectionEvent e) {
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   137
				doChange();
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   138
				if (changeListener != null)
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   139
					changeListener.changed();
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   140
			}
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   141
		});
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   142
		
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   143
		composite.addControlListener(new ControlAdapter() {
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   144
			@Override
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   145
			public void controlResized(ControlEvent e) {
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   146
				descriptionLabel.pack();
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   147
			}
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   148
		});
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   149
		
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   150
		this.control = composite;
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   151
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   152
		control.addDisposeListener(new DisposeListener() {
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   153
			
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   154
			public void widgetDisposed(DisposeEvent e) {
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   155
				dispose();
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   156
			}
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   157
		});
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   158
		
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   159
		validate();
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   160
		updateUI();
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   161
	}
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   162
	
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   163
	/* (non-Javadoc)
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   164
	 * @see com.nokia.cdt.internal.debug.launch.wizard2.AbstractLaunchWizardSection#doChange()
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   165
	 */
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   166
	protected void doChange() {
953
68b6a294ab01 new launch wizard implementation
dadubrow
parents: 911
diff changeset
   167
		LaunchWizardData dialogData = data.copy();
911
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   168
		AbstractLaunchSettingsDialog dialog = createChangeSettingsDialog(getControl().getShell(), dialogData);
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   169
		if (dialog.open() == Window.OK) {
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   170
			data.apply(dialogData);
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   171
			refresh();
959
a9c84e6d779f ui tweaks to new launch wizard
dadubrow
parents: 953
diff changeset
   172
			launchOptionsPage.getWizard().getContainer().getShell().pack();
911
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   173
		}
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   174
	}
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   175
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   176
	protected static IStatus error(String msg, Object... args) {
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   177
		return new Status(IStatus.ERROR, LaunchPlugin.PLUGIN_ID,
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   178
				MessageFormat.format(msg, args));
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   179
	}
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   180
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   181
	protected IStatus warning(String msg, Object... args) {
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   182
		return new Status(IStatus.WARNING, LaunchPlugin.PLUGIN_ID,
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   183
				MessageFormat.format(msg, args));
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   184
	}
81a2e70a37d7 new wizard initial commit
dadubrow
parents:
diff changeset
   185
}