debuggercdi/com.nokia.cdt.debug.launch/src/com/nokia/cdt/internal/debug/launch/wizard/LaunchWizardSelectionPage.java
Keeping PlatSim internal only.
/*
* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
* All rights reserved.
* This component and the accompanying materials are made available
* under the terms of the License "Eclipse Public License v1.0"
* which accompanies this distribution, and is available
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
*
* Initial Contributors:
* Nokia Corporation - initial contribution.
*
* Contributors:
*
* Description:
*
*/
package com.nokia.cdt.internal.debug.launch.wizard;
import java.util.Iterator;
import java.util.List;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.runtime.IPath;
import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.jface.viewers.DoubleClickEvent;
import org.eclipse.jface.viewers.IDoubleClickListener;
import org.eclipse.jface.viewers.ISelectionChangedListener;
import org.eclipse.jface.viewers.IStructuredContentProvider;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.SelectionChangedEvent;
import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.jface.viewers.TableViewer;
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.jface.wizard.Wizard;
import org.eclipse.jface.wizard.WizardSelectionPage;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.SashForm;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Label;
import org.eclipse.ui.PlatformUI;
class LaunchWizardSelectionPage extends WizardSelectionPage implements ISelectionChangedListener, IStructuredContentProvider {
private LaunchCreationWizard mainWizard;
private FormBrowser descriptionBrowser;
private TableViewer wizardSelectionTableViewer = null;
private AbstractLaunchWizard selectedWizard = null;
private boolean inputChanged = false;
public LaunchWizardSelectionPage(LaunchCreationWizard mainWizard, List<IPath> mmps, List<IPath> exes, IPath defaultExecutable, IProject project, String configurationName, String mode) throws Exception {
super(Messages.getString("LaunchWizardSelectionPage.0")); //$NON-NLS-1$
setTitle(Messages.getString("LaunchWizardSelectionPage.1")); //$NON-NLS-1$
setDescription(Messages.getString("LaunchWizardSelectionPage.2")); //$NON-NLS-1$
this.mainWizard = mainWizard;
descriptionBrowser = new FormBrowser();
descriptionBrowser.setText(""); //$NON-NLS-1$
}
public void createDescriptionIn(Composite composite) {
descriptionBrowser.createControl(composite);
Control c = descriptionBrowser.getControl();
c.setData(".uid", "LaunchWizardSelection.descriptionBrowser");
GridData gd = new GridData(GridData.FILL_BOTH);
gd.widthHint = 200;
c.setLayoutData(gd);
}
public String getLabel() {
return Messages.getString("LaunchWizardSelectionPage.4"); //$NON-NLS-1$
}
public void setDescriptionText(String text) {
descriptionBrowser.setText(text);
}
public void moveToNextPage() {
getContainer().showPage(getNextPage());
}
public void createControl(Composite parent) {
Composite container = new Composite(parent, SWT.NONE);
GridLayout layout = new GridLayout();
layout.verticalSpacing = 10;
container.setLayout(layout);
container.setLayoutData(new GridData(GridData.FILL_BOTH));
Label label = new Label(container, SWT.NONE);
label.setText(getLabel());
GridData gd = new GridData();
label.setLayoutData(gd);
label.setData(".uid", "LaunchWizardSelectionPage.label");
SashForm sashForm = new SashForm(container, SWT.VERTICAL);
gd = new GridData(GridData.FILL_BOTH);
gd.widthHint = 300;
gd.heightHint = 300;
gd.minimumHeight = 230;
sashForm.setLayoutData(gd);
wizardSelectionTableViewer = new TableViewer(sashForm, SWT.BORDER);
wizardSelectionTableViewer.setContentProvider(this);
wizardSelectionTableViewer.addDoubleClickListener(new IDoubleClickListener() {
public void doubleClick(DoubleClickEvent event) {
selectionChanged(new SelectionChangedEvent(wizardSelectionTableViewer, wizardSelectionTableViewer.getSelection()));
moveToNextPage();
}
});
wizardSelectionTableViewer.addSelectionChangedListener(this);
wizardSelectionTableViewer.setInput(mainWizard.getWizardsForCategory(mainWizard.getCategoryId()));
createDescriptionIn(sashForm);
sashForm.setWeights(new int[] {75, 25});
Dialog.applyDialogFont(container);
setControl(container);
PlatformUI.getWorkbench().getHelpSystem().setHelp(getControl(), LaunchWizardHelpIds.WIZARD_SELECTION_PAGE);
}
public TableViewer getViewer() {
return wizardSelectionTableViewer;
}
public void selectionChanged(SelectionChangedEvent event) {
selectedWizard = null;
setErrorMessage(null);
IStructuredSelection selection = (IStructuredSelection) event.getSelection();
Object selectedObject = null;
Iterator<?> iter = selection.iterator();
if (iter.hasNext()) {
selectedObject = iter.next();
if (selectedObject instanceof AbstractLaunchWizard)
selectedWizard = (AbstractLaunchWizard)selectedObject;
}
mainWizard.setSelectedWizard(selectedWizard);
if (selectedWizard == null) {
setDescriptionText(""); //$NON-NLS-1$
setSelectedNode(null);
return;
}
setSelectedNode(new WizardNode(this, (Wizard)selectedWizard));
setDescriptionText(selectedWizard.getDescription());
}
public void setVisible(boolean visible) {
super.setVisible(visible);
if (visible && wizardSelectionTableViewer != null) {
if (inputChanged) {
wizardSelectionTableViewer.setSelection(new StructuredSelection(wizardSelectionTableViewer.getElementAt(0)), true);
}
wizardSelectionTableViewer.getTable().setFocus();
}
}
@SuppressWarnings("unchecked")
public Object[] getElements(Object inputElement) {
List<Wizard> wizards = (List<Wizard>)inputElement;
return wizards.toArray();
}
public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
if (oldInput == null || newInput == null || !oldInput.equals(newInput)) {
inputChanged = true;
} else {
inputChanged = false;
}
}
public ILaunchWizard getSelectedWizard() {
return selectedWizard;
}
}