// Copyright (c) 2009-2010 by the projectusus.org contributors // This software is released under the terms and conditions // of the Eclipse Public License (EPL) 1.0. // See http://www.eclipse.org/legal/epl-v10.html for details. package org.projectusus.projectsettings.ui.internal; import java.util.List; import org.eclipse.jface.viewers.ArrayContentProvider; import org.eclipse.jface.viewers.ISelectionChangedListener; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.viewers.ListViewer; import org.eclipse.jface.viewers.SelectionChangedEvent; import org.eclipse.jface.wizard.WizardPage; 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.Label; import org.projectusus.projectsettings.core.Preferences; public class SelectSettingPage extends WizardPage { private final List<Preferences> projectSettings; private Preferences selectedSetting; protected SelectSettingPage( List<Preferences> projectSettings ) { super( "" ); //$NON-NLS-1$ this.projectSettings = projectSettings; setTitle( "Select Settings" ); //$NON-NLS-1$ setDescription( "Select one of the following settings" ); //$NON-NLS-1$ } public void createControl( Composite parent ) { Composite composite = new Composite( parent, SWT.NULL ); GridLayout gridLayout = new GridLayout(); gridLayout.numColumns = 1; composite.setLayout( gridLayout ); Label label = new Label( composite, SWT.NULL ); label.setText( "Available Settings" ); //$NON-NLS-1$ createSettingsList( composite ); setControl( composite ); } private void createSettingsList( Composite composite ) { ListViewer list = new ListViewer( composite, SWT.SINGLE | SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL ); GridData gridData = new GridData( SWT.FILL, SWT.FILL, true, true ); list.getList().setLayoutData( gridData ); list.setContentProvider( new ArrayContentProvider() ); list.setLabelProvider( new SettingsLabelProvider() ); list.setInput( projectSettings ); initListener( list ); } private void initListener( ListViewer list ) { list.addSelectionChangedListener( new ISelectionChangedListener() { public void selectionChanged( SelectionChangedEvent event ) { IStructuredSelection selection = (IStructuredSelection)event.getSelection(); setSelectedSetting( (Preferences)selection.getFirstElement() ); getWizard().getContainer().updateButtons(); } } ); } public Preferences getSelectedSetting() { return selectedSetting; } public void setSelectedSetting( Preferences selectedSetting ) { this.selectedSetting = selectedSetting; } public boolean isProjectSelected() { return getSelectedSetting() != null; } }