Package org.geotools.swing.data

Source Code of org.geotools.swing.data.JDataChoosePage

/*
*    GeoTools - The Open Source Java GIS Toolkit
*    http://geotools.org
*
*    (C) 2002-2008, 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.swing.data;

import java.awt.Component;
import java.awt.Dimension;
import java.awt.Font;
import java.util.ArrayList;
import java.util.Iterator;

import javax.swing.DefaultListCellRenderer;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.ListCellRenderer;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;

import net.miginfocom.swing.MigLayout;

import org.geotools.data.DataStoreFactorySpi;
import org.geotools.data.DataStoreFinder;
import org.geotools.swing.wizard.JPage;

/**
* A wizard page that will allow the user to choose a format (ie DataAccess factory).
*
*
*
*
* @source $URL$
*/
public class JDataChoosePage extends JPage {
    /**
     * Factory for which we are collection connection parameters
     */
    protected DataStoreFactorySpi format;

    /** max line length of parameter description labels (chars) */
    private static final int MAX_DESCRIPTION_WIDTH = 60;

    private JList list;

    public JDataChoosePage() {
        this(null);
    }
   
    public JDataChoosePage(DataStoreFactorySpi format) {
        this.format = format;
    }
   
    @SuppressWarnings("serial")
    @Override
    public JPanel createPanel() {
        final JPanel page = super.createPanel();
        page.setLayout(new MigLayout());
        JLabel title = new JLabel("Choose DataStore");
        Font titleFont = new Font("Arial", Font.BOLD, 14);
        title.setFont(titleFont);
        page.add(title, "span");
        JLabel description = new JLabel("Available DataStores on your classpath");
        page.add(description, "grow, span");

        java.util.List<DataStoreFactorySpi> factoryList = new ArrayList<DataStoreFactorySpi>();
        for( Iterator<DataStoreFactorySpi> iter = DataStoreFinder.getAvailableDataStores(); iter.hasNext();){
            factoryList.add( iter.next() );
        }
        list = new JList( factoryList.toArray() );
        ListCellRenderer cellRenderer = new DefaultListCellRenderer() {
            @Override
            public Component getListCellRendererComponent(JList list, Object value, int index,
                    boolean isSelected, boolean cellHasFocus) {
                super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
                DataStoreFactorySpi factory = (DataStoreFactorySpi) value;
                setText( factory.getDisplayName() );
                setToolTipText( factory.getDescription() );
               
                return this;
            }
        };
        list.setCellRenderer(cellRenderer);
        list.addListSelectionListener( new ListSelectionListener() {           
            public void valueChanged(ListSelectionEvent e) {
                format = (DataStoreFactorySpi) list.getSelectedValue();
            }
        });
        JScrollPane scroll = new JScrollPane( list );
        scroll.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS );
        scroll.setPreferredSize(new Dimension(300,100));
        page.add( scroll, "growx,growy,span");       
       
        return page;
    }

    @Override
    public void preDisplayPanel() {
        list.addListSelectionListener( getJWizard().getController() );
    }

    @Override
    public void preClosePanel() {
        list.addListSelectionListener( getJWizard().getController() );
       
        JDataStoreWizard dataStoreWizard = (JDataStoreWizard) getJWizard();
        dataStoreWizard.setFormat( format );
    }
   
    @Override
    public boolean isValid() {
        return format != null;
    }

}
TOP

Related Classes of org.geotools.swing.data.JDataChoosePage

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.