net.refractions.udig.transformtool.VectorToolComposite.java Source code

Java tutorial

Introduction

Here is the source code for net.refractions.udig.transformtool.VectorToolComposite.java

Source

/*
*    uDig - User Friendly Desktop Internet GIS client
 *    http://udig.refractions.net
 *    (C) 2004, Refractions Research Inc.
 *
 *    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 net.refractions.udig.transformtool;

import net.refractions.udig.project.IBlackboard;
import net.refractions.udig.project.IMap;
import net.refractions.udig.project.internal.Layer;
import net.refractions.udig.project.internal.Map;
import net.refractions.udig.project.internal.impl.LayerImpl;
import net.refractions.udig.project.ui.ApplicationGIS;
import net.refractions.udig.project.ui.tool.IToolManager;

import org.eclipse.jface.action.IAction;
import org.eclipse.jface.viewers.ArrayContentProvider;
import org.eclipse.jface.viewers.ComboViewer;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.ISelectionChangedListener;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.SelectionChangedEvent;
import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Group;
import org.eclipse.swt.widgets.Label;

class VectorToolComposite {
    private RadioGroupComposite radios;
    Composite parent;

    protected VectorToolComposite(Composite parent) {
        this.parent = parent;
    }

    protected void addWidgets(GridData gridData, RadioGroupComposite radios) {
        this.radios = radios;
        IToolManager manager = ApplicationGIS.getToolManager();

        Group group = new Group(parent, SWT.NULL);
        group.setText("Transformation method:");
        group.setLayoutData(gridData);

        GridLayout layout3 = new GridLayout();
        layout3.numColumns = 2;

        group.setLayout(layout3);

        final Label labelvector = new Label(group, SWT.SINGLE);
        labelvector.setText("Vector Layer (leave empty to create new):");

        gridData = new GridData();
        gridData.verticalSpan = 1;
        gridData.horizontalSpan = 2;
        gridData.horizontalAlignment = GridData.FILL;
        gridData.grabExcessHorizontalSpace = true;
        labelvector.setLayoutData(gridData);

        IMap map = ApplicationGIS.getActiveMap();

        final ComboViewer comboVector = new ComboViewer(group, SWT.SINGLE);
        comboVector.setLabelProvider(new LayerLabelProvider());
        comboVector.setContentProvider(new ArrayContentProvider());
        comboVector.setInput(map.getMapLayers().toArray());
        gridData = new GridData();
        gridData.verticalSpan = 8;
        gridData.horizontalSpan = 2;
        gridData.horizontalAlignment = GridData.FILL;
        //  gridData.verticalAlignment   = GridData.FILL;
        comboVector.getCombo().setLayoutData(gridData);

        IBlackboard blackboard = map.getBlackboard();
        if (blackboard.get(TransformTool.BLACKBOARD_VECTORLAYER) != null) {
            comboVector.setSelection((ISelection) (new StructuredSelection(
                    (Layer) blackboard.get(TransformTool.BLACKBOARD_VECTORLAYER))), true);
        }
        if (blackboard.get(TransformTool.BLACKBOARD_VECTORLAYER) != null) {
            comboVector.setSelection((ISelection) (new StructuredSelection(
                    (Layer) blackboard.get(TransformTool.BLACKBOARD_VECTORLAYER))), true);
        }

        comboVector.addSelectionChangedListener(new ComboHandler());

        Button addButton = new Button(group, SWT.BUTTON1);
        addButton.setData(manager.getTool("net.refractions.udig.ui.transformtool.lineEdit",
                "net.refractions.udig.tool.edit.create"));
        addButton.setText("Add Vectors");

        gridData = new GridData();
        gridData.verticalSpan = 1;
        gridData.horizontalSpan = 1;
        gridData.horizontalAlignment = GridData.FILL;
        gridData.grabExcessHorizontalSpace = true;
        addButton.setLayoutData(gridData);
        addButton.addSelectionListener(new AddHandler());

        Button deleteButton = new Button(group, SWT.BUTTON1);
        deleteButton.setData(manager.getTool("net.refractions.udig.ui.transformtool.deleteTool",
                "net.refractions.udig.tool.edit.feature"));
        deleteButton.setText("Remove Vectors");
        deleteButton.addSelectionListener(new AddHandler());
        deleteButton.setLayoutData(gridData);

    }

    private class ComboHandler implements ISelectionChangedListener {
        public void selectionChanged(SelectionChangedEvent event) {
            IStructuredSelection selection = (IStructuredSelection) event.getSelection();
            IMap map = ApplicationGIS.getActiveMap();
            IBlackboard blackboard = map.getBlackboard();
            blackboard.put(TransformTool.BLACKBOARD_VECTORLAYER, (LayerImpl) selection.getFirstElement());

            (new DialogUtility()).readLayer();
            radios.refresh();

        }
    };

    private class AddHandler extends SelectionAdapter {
        public void widgetSelected(SelectionEvent event) {
            parent.getShell().setVisible(false);
            final Button button = (Button) event.widget;
            //     createLayer("vector");
            Display.getDefault().asyncExec(new Runnable() {
                public void run() {

                    IMap map = ApplicationGIS.getActiveMap();
                    IBlackboard blackboard = map.getBlackboard();
                    Layer sourceLayer = (Layer) blackboard.get(TransformTool.BLACKBOARD_SOURCELAYER);
                    if (blackboard.get(TransformTool.BLACKBOARD_VECTORLAYER) == null) {
                        (new DialogUtility()).createLayer(sourceLayer.getName() + "_vector");

                    }
                    Layer vectorLayer = (Layer) blackboard.get(TransformTool.BLACKBOARD_VECTORLAYER);
                    ((Map) map).getEditManagerInternal().setSelectedLayer(vectorLayer);
                    ((IAction) button.getData()).run();
                }
            });
        }
    }
}