imakerplugin/com.nokia.s60tools.imaker/src/com/nokia/s60tools/imaker/internal/dialogs/ProductSelectionDialog.java
/*
* 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 "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.s60tools.imaker.internal.dialogs;
import java.lang.reflect.InvocationTargetException;
import java.util.List;
import org.eclipse.jface.dialogs.IDialogConstants;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.viewers.ColumnLabelProvider;
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.TableViewer;
import org.eclipse.jface.viewers.TableViewerColumn;
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.swt.SWT;
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.Shell;
import org.eclipse.swt.widgets.Table;
import com.nokia.s60tools.imaker.IEnvironment;
import com.nokia.s60tools.imaker.UIConfiguration;
public class ProductSelectionDialog extends MessageDialog {
private UIConfiguration selectedConfiguration = null;
private IEnvironment activeEnvironment = null;
protected boolean dontShowAgain;
private final int style = SWT.FULL_SELECTION | SWT.H_SCROLL | SWT.V_SCROLL;
public ProductSelectionDialog(Shell parentShell, IEnvironment env) {
super(parentShell, "Select product", null, // accept
// the
// default
// window
// icon
"The following products are available\n", QUESTION,
new String[] { IDialogConstants.OK_LABEL, IDialogConstants.CANCEL_LABEL },
0);
this.activeEnvironment = env;
}
@Override
protected Control createCustomArea(Composite parent) {
parent.setLayout(new GridLayout(1,true));
//table
Composite tableComp = new Composite(parent,SWT.FILL);
tableComp.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
tableComp.setLayout(new GridLayout(1,true));
GridData gridData = new GridData(GridData.FILL,GridData.FILL,true,true);
gridData.heightHint = 180;
Table table = new Table(tableComp,style);
table.setLayoutData(gridData);
TableViewer viewer = new TableViewer(table);
viewer.getTable().setHeaderVisible(true);
viewer.getTable().setLinesVisible(true);
setContentProvider(viewer);
createColumns(viewer);
viewer.addSelectionChangedListener(new ISelectionChangedListener() {
public void selectionChanged(SelectionChangedEvent event) {
IStructuredSelection sc = (IStructuredSelection) event.getSelection();
selectedConfiguration = (UIConfiguration) sc.getFirstElement();
}
});
viewer.setInput(this);
return parent;
}
private void createColumns(TableViewer viewer) {
int columnSizes[] = {110,320};
TableViewerColumn column = new TableViewerColumn(viewer,SWT.NONE);
column.getColumn().setText("Name");
column.getColumn().setWidth(columnSizes[0]);
column.setLabelProvider(new ColumnLabelProvider() {
@Override
public String getText(Object element) {
UIConfiguration c = (UIConfiguration) element;
return c.getConfigurationName();
}
});
column = new TableViewerColumn(viewer,SWT.NONE);
column.getColumn().setText("Makefile");
column.getColumn().setWidth(columnSizes[1]);
column.setLabelProvider(new ColumnLabelProvider() {
@Override
public String getText(Object element) {
UIConfiguration c = (UIConfiguration) element;
return c.getFilePath();
}
});
}
private void setContentProvider(TableViewer viewer) {
viewer.setContentProvider(new ConfMLFilesContentProvider());
}
public UIConfiguration getSelectedConfiguration() {
return selectedConfiguration;
}
public boolean displayDialog() {
return open() == 0;
}
public boolean isDontShowAgain() {
return dontShowAgain;
}
/**
* provide content for the table
*/
private class ConfMLFilesContentProvider implements IStructuredContentProvider {
public Object[] getElements(Object inputElement) {
List<UIConfiguration> configurations;
try {
configurations = activeEnvironment.getConfigurations();
return configurations.toArray();
} catch (InvocationTargetException e) {
return new UIConfiguration[]{};
}
}
public void dispose() {}
public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {}
}
}