/* * GeoTools - The Open Source Java GIS Toolkit * http://geotools.org * * (C) 2002-2011, Open Source Geospatial Foundation (OSGeo) * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. */ package org.geotools.swt.control; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import org.eclipse.jface.viewers.ArrayContentProvider; import org.eclipse.jface.viewers.ISelection; import org.eclipse.jface.viewers.ISelectionChangedListener; import org.eclipse.jface.viewers.LabelProvider; import org.eclipse.jface.viewers.SelectionChangedEvent; import org.eclipse.jface.viewers.StructuredSelection; import org.eclipse.jface.viewers.TableViewer; 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.geotools.data.DataStoreFactorySpi; import org.geotools.data.DataStoreFinder; /** * Data chooser wizard page for the {@link JDataStoreWizard data store wizard}. * * @author Andrea Antonello (www.hydrologis.com) * * * @source $URL: http://svn.osgeo.org/geotools/trunk/modules/unsupported/swt/src/main/java/org/geotools/swt/control/JDataChoosePage.java $ */ public class JDataChoosePage extends WizardPage implements ISelectionChangedListener { public static final String ID = "org.geotools.swt.data.DataChoosePage"; private DataStoreFactorySpi selectedFactory; private boolean canFlip; public JDataChoosePage() { super(ID); setTitle("Choose DataStore"); setDescription("Available DataStores on your classpath"); } public void createControl( Composite parent ) { Composite mainComposite = new Composite(parent, SWT.NONE); GridLayout gridLayout = new GridLayout(1, false); mainComposite.setLayout(gridLayout); List<DataStoreFactorySpi> factoryList = new ArrayList<DataStoreFactorySpi>(); for( Iterator<DataStoreFactorySpi> iter = DataStoreFinder.getAvailableDataStores(); iter.hasNext(); ) { factoryList.add(iter.next()); } TableViewer viewer = new TableViewer(mainComposite); GridData viewerGD = new GridData(SWT.FILL, SWT.FILL, true, false); viewer.getTable().setLayoutData(viewerGD); viewer.addSelectionChangedListener(this); viewer.setContentProvider(new ArrayContentProvider()); viewer.setLabelProvider(new LabelProvider(){ public String getText( Object element ) { if (element instanceof DataStoreFactorySpi) { DataStoreFactorySpi factory = (DataStoreFactorySpi) element; return factory.getDisplayName(); } return super.getText(element); } }); viewer.setInput(factoryList.toArray()); setControl(mainComposite); canFlip = false; } public boolean canFlipToNextPage() { return canFlip; } public DataStoreFactorySpi getSelectedFactory() { return selectedFactory; } public void selectionChanged( SelectionChangedEvent event ) { ISelection selection = event.getSelection(); if (selection instanceof StructuredSelection) { StructuredSelection sel = (StructuredSelection) selection; Object selObj = sel.getFirstElement(); if (selObj instanceof DataStoreFactorySpi) { selectedFactory = (DataStoreFactorySpi) selObj; } } if (selectedFactory != null) { canFlip = true; } getWizard().getContainer().updateButtons(); } }