Package org.geotools.swing.process

Source Code of org.geotools.swing.process.ProcessRunPage

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

import java.awt.GridLayout;
import java.util.Map;
import java.util.Map.Entry;

import javax.swing.JComponent;
import javax.swing.JLabel;
import javax.swing.JPanel;

import org.geotools.data.Parameter;
import org.geotools.process.Process;
import org.geotools.process.ProcessFactory;
import org.geotools.swing.JProgressWindow;
import org.geotools.swing.wizard.JDoubleField;
import org.geotools.swing.wizard.JField;
import org.geotools.swing.wizard.JGeometryField;
import org.geotools.swing.wizard.JPage;
import org.geotools.swing.wizard.ParamField;
import org.geotools.text.Text;
import org.opengis.feature.type.Name;
import org.opengis.util.ProgressListener;

import com.vividsolutions.jts.geom.Geometry;

/**
* This page is responsible for actually executing the process with the given parameters and then
* displaying the result.
*
* @author gdavis
* @since 8.0
*
* @source $URL$
* @version $Id$
*/
public class ProcessRunPage extends JPage {
    ProcessFactory factory;
    Name name;

    Map<String, Object> paramMap;

    public ProcessRunPage(ProcessFactory factory) {
        this(factory, null);
    }

    public ProcessRunPage(ProcessFactory factory, Map<String, Object> params) {
        super("Run Process");
        this.factory = factory;
        this.paramMap = params;
    }

    public String getBackPageIdentifier() {
        if (this.factory == null) {
            ProcessSelectionPage selectionPage = new ProcessSelectionPage();
            this.getJWizard().registerWizardPanel(selectionPage);
            return selectionPage.getPageIdentifier();
        }
        ProcessParameterPage inputPage = new ProcessParameterPage(this.factory);
        this.getJWizard().registerWizardPanel(inputPage);
        return inputPage.getPageIdentifier();
    }

    public String getNextPageIdentifier() {
        return FINISH;
    }

    public void aboutToDisplayPanel() {
        JPanel page = getPanel();
        page.removeAll();
        page.setLayout(new GridLayout(0, 2));

        Process process = this.factory.create(name);

        final ProgressListener progress = new JProgressWindow(this.getJWizard());
        Map<String, Object> resultMap = process.execute(paramMap, progress);

        // when we get here, the processing is over so show the result
        JLabel title = new JLabel(factory.getTitle().toString());
        page.add(title);
        JLabel description = new JLabel("Your process results are below:");
        page.add(description);
        for (Entry<String, Object> entry : resultMap.entrySet()) {
            Parameter<?> parameter = new Parameter(entry.getKey(), entry.getValue().getClass(),
                    Text.text("Result"), Text.text("Result of process"));
            JLabel label = new JLabel(entry.getKey());
            page.add(label);

            ParamField widget;
            if (Double.class.isAssignableFrom(parameter.type)) {
                widget = new JDoubleField(parameter);
            } else if (Geometry.class.isAssignableFrom(parameter.type)) {
                widget = new JGeometryField(parameter);
            } else {
                // We got nothing special, let's hope the converter api can deal
                widget = new JField(parameter);
            }
            JComponent field = widget.doLayout();
            widget.setValue(entry.getValue());
            page.add(field);

        }
    }
}
TOP

Related Classes of org.geotools.swing.process.ProcessRunPage

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.