diff -r 000000000000 -r 61163b28edca imakerplugin/com.nokia.s60tools.imaker/src/com/nokia/s60tools/imaker/internal/dialogs/ProductSelectionDialog.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/imakerplugin/com.nokia.s60tools.imaker/src/com/nokia/s60tools/imaker/internal/dialogs/ProductSelectionDialog.java Tue Jan 12 13:17:53 2010 -0600 @@ -0,0 +1,156 @@ +/* +* 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 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) {} + } +}