core/com.nokia.carbide.cpp.sdk.ui/src/com/nokia/carbide/cpp/internal/sdk/ui/AddSBSv2ProductVariant.java
Merge from default.
/*
* Copyright (c) 2007-2010 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.carbide.cpp.internal.sdk.ui;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import org.eclipse.jface.dialogs.IDialogConstants;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.dialogs.TrayDialog;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.CCombo;
import org.eclipse.swt.events.KeyEvent;
import org.eclipse.swt.events.KeyListener;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.SelectionListener;
import org.eclipse.swt.graphics.Point;
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.swt.widgets.Shell;
import org.eclipse.ui.PlatformUI;
/**
* Dialog that allows the user to add a new SBSv2 custom variant configuration
*/
public class AddSBSv2ProductVariant extends TrayDialog {
private CCombo aliasCombo;
private CCombo variantCombo;
private String newConfigString;
private List<String> aliasList = new ArrayList<String>();
private List<String> variantList = new ArrayList<String>();
private String defaultAlias;
/**
* Create the dialog
* @param parentShell
* @param selectedAlias
*/
public AddSBSv2ProductVariant(Shell parentShell, String selectedAlias, HashMap<String, String> aliasMap,
List<String> productVariantList) {
super(parentShell);
for (String alias : aliasMap.keySet()){
aliasList.add(alias);
}
variantList = productVariantList;
defaultAlias = selectedAlias;
}
/**
* Create contents of the button bar
* @param parent
*/
@Override
protected void createButtonsForButtonBar(Composite parent) {
createButton(parent, IDialogConstants.OK_ID, IDialogConstants.OK_LABEL,
true);
createButton(parent, IDialogConstants.CANCEL_ID,
IDialogConstants.CANCEL_LABEL, false);
getButton(IDialogConstants.OK_ID).setEnabled(false);
}
/**
* Create contents of the dialog
* @param parent
*/
@Override
protected Control createDialogArea(Composite parent) {
Composite container = (Composite) super.createDialogArea(parent);
final GridLayout gridLayout = new GridLayout();
gridLayout.numColumns = 3;
container.setLayout(gridLayout);
final Label aliasLabel = new Label(container, SWT.NONE);
aliasLabel.setToolTipText("Select a build alias.");
aliasLabel.setText("Select a build alias: "); //$NON-NLS-1$
aliasCombo = new CCombo(container, SWT.BORDER);
aliasCombo.setLayoutData(new GridData(263, SWT.DEFAULT));
Collections.sort(aliasList);
aliasCombo.setItems((String[])aliasList.toArray(new String[aliasList.size()]));
aliasCombo.select(0);
aliasCombo.setEditable(false);
aliasCombo.addSelectionListener(new SelectionListener() {
public void widgetSelected(SelectionEvent e) {
validateData();
}
public void widgetDefaultSelected(SelectionEvent e) {
// ignore
}
});
aliasCombo.addKeyListener(new KeyListener() {
public void keyReleased(KeyEvent e) {
validateData();
}
public void keyPressed(KeyEvent e) {
}
});
if (defaultAlias != null && defaultAlias.length() > 0)
aliasCombo.setText(defaultAlias);
new Label(container, SWT.NONE);
final Label variantLabel = new Label(container, SWT.NONE);
variantLabel.setToolTipText("Select a product variant."); //$NON-NLS-1$
variantLabel.setText("Select a product variant: "); //$NON-NLS-1$
variantCombo = new CCombo(container, SWT.BORDER);
variantCombo.setLayoutData(new GridData(263, SWT.DEFAULT));
Collections.sort(variantList);
variantCombo.setItems((String[])variantList.toArray(new String[variantList.size()]));
variantCombo.addSelectionListener(new SelectionListener() {
public void widgetSelected(SelectionEvent e) {
validateData();
}
public void widgetDefaultSelected(SelectionEvent e) {
// ignore
}
});
variantCombo.addKeyListener(new KeyListener() {
public void keyReleased(KeyEvent e) {
validateData();
}
public void keyPressed(KeyEvent e) {
}
});
PlatformUI.getWorkbench().getHelpSystem().setHelp(parent, SDKUIHelpIds.SDK_ADD_DIALOG);
return container;
}
/* (non-Javadoc)
* @see org.eclipse.jface.window.Window#configureShell(org.eclipse.swt.widgets.Shell)
*/
protected void configureShell(Shell shell) {
super.configureShell(shell);
shell.setText("Add a custom product configuraiton."); //$NON-NLS-1$
}
/**
* Return the initial size of the dialog
*/
@Override
protected Point getInitialSize() {
return super.getInitialSize();
}
/*
* (non-Javadoc)
* @see org.eclipse.jface.dialogs.Dialog#okPressed()
*/
@Override
protected void okPressed() {
if (!isValidIDName()){
return;
}
newConfigString = aliasCombo.getText() + "." + variantCombo.getText();
super.okPressed();
}
private boolean isValidIDName(){
boolean isValid = true;
if (aliasCombo.getText() == null || aliasCombo.getText().length() == 0 ||
variantCombo.getText() == null || variantCombo.getText().length() == 0){
MessageDialog.openError(getShell(), "Invalid Configuration Name", "Please supply both an alias and product variant to create a new configuration.");
return false;
}
return isValid;
}
public String getUserCreatedVariant() {
return newConfigString;
}
private void validateData(){
if (variantCombo.getText().length() > 0){
getButton(IDialogConstants.OK_ID).setEnabled(true);
} else {
getButton(IDialogConstants.OK_ID).setEnabled(false);
return;
}
if (aliasCombo.getText().length() > 0){
getButton(IDialogConstants.OK_ID).setEnabled(true);
} else {
getButton(IDialogConstants.OK_ID).setEnabled(false);
return;
}
}
}