Revision 109

View differences:

org.gvsig.derivedgeometries/tags/org.gvsig.derivedgeometries-1.0.12/org.gvsig.derivedgeometries.swing/org.gvsig.derivedgeometries.swing.api/src/main/resources/META-INF/services/org.gvsig.tools.library.Library
1
org.gvsig.derivedgeometries.swing.api.DerivedGeometriesLibrary
org.gvsig.derivedgeometries/tags/org.gvsig.derivedgeometries-1.0.12/org.gvsig.derivedgeometries.swing/org.gvsig.derivedgeometries.swing.api/src/main/java/org/gvsig/derivedgeometries/swing/api/DerivedGeometriesManager.java
1
/* gvSIG. Desktop Geographic Information System.
2
 *
3
 * Copyright ? 2007-2014 gvSIG Association
4
 *
5
 * This program is free software; you can redistribute it and/or
6
 * modify it under the terms of the GNU General Public License
7
 * as published by the Free Software Foundation; either version 2
8
 * of the License, or (at your option) any later version.
9
 *
10
 * This program is distributed in the hope that it will be useful,
11
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13
 * GNU General Public License for more details.
14
 *
15
 * You should have received a copy of the GNU General Public License
16
 * along with this program; if not, write to the Free Software
17
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
18
 * MA  02110-1301, USA.
19
 *
20
 * For any additional information, do not hesitate to contact us
21
 * at info AT gvsig.com, or visit our website www.gvsig.com.
22
 */
23
package org.gvsig.derivedgeometries.swing.api;
24

  
25
import org.gvsig.derivedgeometries.swing.api.DerivedGeometriesProcess.TYPE;
26
import org.gvsig.derivedgeometries.swing.api.panels.DerivedGeometriesPanel;
27
import org.gvsig.derivedgeometries.swing.api.panels.FeaturesControlPanel;
28
import org.gvsig.derivedgeometries.swing.api.panels.LayerAndProcessSelectionPanel;
29
import org.gvsig.fmap.geom.Geometry;
30
import org.gvsig.fmap.mapcontext.layers.vectorial.FLyrVect;
31
import org.gvsig.fmap.mapcontrol.MapControl;
32

  
33
/**
34
 * Main class to manage DerivedGeometries functionalities
35
 *
36
 * @author gvSIG team
37
 * @version $Id$
38
 */
39
public interface DerivedGeometriesManager {
40

  
41
    /**
42
     * Creates an empty {@link DerivedGeometriesParameters}
43
     * 
44
     * @return
45
     */
46
    public DerivedGeometriesParameters createDerivedGeometriesParameters();
47

  
48
    /**
49
     * Creates a {@link DerivedGeometriesParameters}.
50
     * 
51
     * @param mapControl
52
     * @param sourceLayer
53
     * @param outputLayerName
54
     *            Name of output layer.
55
     * @param outputLayerPath
56
     *            Path of output layer.
57
     * @param outputLayerType
58
     *            Type of output layer. See {@link Geometry.TYPES}
59
     * @param processType
60
     *            Type of process. See {@link DerivedGeometriesProcess.TYPE}
61
     * @return
62
     */
63
    public DerivedGeometriesParameters createDerivedGeometriesParameters(
64
        MapControl mapControl, FLyrVect sourceLayer, String outputLayerName,
65
        String outputLayerPath, int outputLayerType, TYPE processType);
66

  
67
    /**
68
     * @return a new {@link FeaturesControlPanel}.
69
     */
70
    public FeaturesControlPanel getFeaturesControlPanel();
71

  
72
    /**
73
     * @param mapControl
74
     *            to get vectorial layers, adds listeners...
75
     * @return a new {@link DerivedGeometriesPanel}.
76
     */
77
    public DerivedGeometriesPanel getDerivedGeometriesPanel(
78
        MapControl mapControl);
79

  
80
    /**
81
     * @param mapControl
82
     *            mapControl to get vectorial layers, adds listeners...
83
     * @return a new {@link LayerAndProcessSelectionPanel}
84
     */
85
    public LayerAndProcessSelectionPanel getLayerAndProcessSelectionPanel(
86
        MapControl mapControl);
87

  
88
    /**
89
     * Given {@link DerivedGeometriesParameters}, starts a new
90
     * {@link DerivedGeometriesProcess}.
91
     * 
92
     * @param parameters
93
     */
94
    public void startDerivedGeometriesProcess(
95
        DerivedGeometriesParameters parameters);
96

  
97
}
org.gvsig.derivedgeometries/tags/org.gvsig.derivedgeometries-1.0.12/org.gvsig.derivedgeometries.swing/org.gvsig.derivedgeometries.swing.api/src/main/java/org/gvsig/derivedgeometries/swing/api/exceptions/LoadSelectedFeatureDataException.java
1
/* gvSIG. Desktop Geographic Information System.
2
 *
3
 * Copyright ? 2007-2014 gvSIG Association
4
 *
5
 * This program is free software; you can redistribute it and/or
6
 * modify it under the terms of the GNU General Public License
7
 * as published by the Free Software Foundation; either version 2
8
 * of the License, or (at your option) any later version.
9
 *
10
 * This program is distributed in the hope that it will be useful,
11
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13
 * GNU General Public License for more details.
14
 *
15
 * You should have received a copy of the GNU General Public License
16
 * along with this program; if not, write to the Free Software
17
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
18
 * MA  02110-1301, USA.
19
 *
20
 * For any additional information, do not hesitate to contact us
21
 * at info AT gvsig.com, or visit our website www.gvsig.com.
22
 */
23
package org.gvsig.derivedgeometries.swing.api.exceptions;
24

  
25
public class LoadSelectedFeatureDataException extends
26
    DerivedGeometriesException {
27

  
28
    /**
29
     * 
30
     */
31
    private static final long serialVersionUID = -1477432246895858868L;
32

  
33
    private static final String MESSAGE =
34
        "An error has been produced loading selected features.";
35

  
36
    private static final String KEY = "_LoadSelectedFeatureDataException";
37

  
38
    public LoadSelectedFeatureDataException(Throwable ex) {
39
        super(MESSAGE, ex, KEY, serialVersionUID);
40
    }
41

  
42
    public LoadSelectedFeatureDataException(String message, Throwable ex) {
43
        super(message, ex, KEY, serialVersionUID);
44
    }
45

  
46
}
org.gvsig.derivedgeometries/tags/org.gvsig.derivedgeometries-1.0.12/org.gvsig.derivedgeometries.swing/org.gvsig.derivedgeometries.swing.api/src/main/java/org/gvsig/derivedgeometries/swing/api/exceptions/FormatRowException.java
1
/* gvSIG. Desktop Geographic Information System.
2
 *
3
 * Copyright ? 2007-2014 gvSIG Association
4
 *
5
 * This program is free software; you can redistribute it and/or
6
 * modify it under the terms of the GNU General Public License
7
 * as published by the Free Software Foundation; either version 2
8
 * of the License, or (at your option) any later version.
9
 *
10
 * This program is distributed in the hope that it will be useful,
11
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13
 * GNU General Public License for more details.
14
 *
15
 * You should have received a copy of the GNU General Public License
16
 * along with this program; if not, write to the Free Software
17
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
18
 * MA  02110-1301, USA.
19
 *
20
 * For any additional information, do not hesitate to contact us
21
 * at info AT gvsig.com, or visit our website www.gvsig.com.
22
 */
23
package org.gvsig.derivedgeometries.swing.api.exceptions;
24

  
25

  
26
public class FormatRowException extends DerivedGeometriesException {
27

  
28
    /**
29
     * 
30
     */
31
    private static final long serialVersionUID = 6292433772869829638L;
32
    
33
    private static final String MESSAGE =
34
        "An error has been produced formating row.";
35

  
36
    private static final String KEY = "_FormatRowException";
37

  
38
    public FormatRowException(Throwable ex) {
39
        super(MESSAGE, ex, KEY, serialVersionUID);
40
    }
41

  
42
    public FormatRowException(String message, Throwable ex) {
43
        super(message, ex, KEY, serialVersionUID);
44
    }
45

  
46
}
org.gvsig.derivedgeometries/tags/org.gvsig.derivedgeometries-1.0.12/org.gvsig.derivedgeometries.swing/org.gvsig.derivedgeometries.swing.api/src/main/java/org/gvsig/derivedgeometries/swing/api/exceptions/FetaureTableModelException.java
1
/* gvSIG. Desktop Geographic Information System.
2
 *
3
 * Copyright ? 2007-2014 gvSIG Association
4
 *
5
 * This program is free software; you can redistribute it and/or
6
 * modify it under the terms of the GNU General Public License
7
 * as published by the Free Software Foundation; either version 2
8
 * of the License, or (at your option) any later version.
9
 *
10
 * This program is distributed in the hope that it will be useful,
11
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13
 * GNU General Public License for more details.
14
 *
15
 * You should have received a copy of the GNU General Public License
16
 * along with this program; if not, write to the Free Software
17
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
18
 * MA  02110-1301, USA.
19
 *
20
 * For any additional information, do not hesitate to contact us
21
 * at info AT gvsig.com, or visit our website www.gvsig.com.
22
 */
23
package org.gvsig.derivedgeometries.swing.api.exceptions;
24

  
25
public class FetaureTableModelException extends DerivedGeometriesException {
26

  
27
    /**
28
     * 
29
     */
30
    private static final long serialVersionUID = -5003333029683139078L;
31

  
32
    private static final String MESSAGE =
33
        "An error has been produced creating feature table model.";
34

  
35
    private static final String KEY = "_FeatureTableModelException";
36

  
37
    public FetaureTableModelException(Throwable ex) {
38
        super(MESSAGE, ex, KEY, serialVersionUID);
39
    }
40

  
41
    public FetaureTableModelException(String message, Throwable ex) {
42
        super(message, ex, KEY, serialVersionUID);
43
    }
44

  
45
}
org.gvsig.derivedgeometries/tags/org.gvsig.derivedgeometries-1.0.12/org.gvsig.derivedgeometries.swing/org.gvsig.derivedgeometries.swing.api/src/main/java/org/gvsig/derivedgeometries/swing/api/exceptions/DerivedGeometriesException.java
1
/* gvSIG. Desktop Geographic Information System.
2
 *
3
 * Copyright ? 2007-2014 gvSIG Association
4
 *
5
 * This program is free software; you can redistribute it and/or
6
 * modify it under the terms of the GNU General Public License
7
 * as published by the Free Software Foundation; either version 2
8
 * of the License, or (at your option) any later version.
9
 *
10
 * This program is distributed in the hope that it will be useful,
11
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13
 * GNU General Public License for more details.
14
 *
15
 * You should have received a copy of the GNU General Public License
16
 * along with this program; if not, write to the Free Software
17
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
18
 * MA  02110-1301, USA.
19
 *
20
 * For any additional information, do not hesitate to contact us
21
 * at info AT gvsig.com, or visit our website www.gvsig.com.
22
 */
23
package org.gvsig.derivedgeometries.swing.api.exceptions;
24

  
25
import org.gvsig.tools.exception.BaseException;
26

  
27
public class DerivedGeometriesException extends BaseException {
28

  
29
    /**
30
     * 
31
     */
32
    private static final long serialVersionUID = -5881366280361882646L;
33

  
34
    private static final String MESSAGE =
35
        "An error has been produced in the Derived Geometries library";
36

  
37
    private static final String KEY = "_DerivedGeometriesException";
38

  
39
    /**
40
     * Constructor to be used in rare cases, usually you must create a new child
41
     * exception class for each case.
42
     * <strong>Don't use this constructor in child classes.</strong>
43
     */
44
    public DerivedGeometriesException() {
45
        super(MESSAGE, KEY, serialVersionUID);
46
    }
47

  
48
    /**
49
     * Constructor to be used in rare cases, usually you must create a new child
50
     * exception class for each case.
51
     * <p>
52
     * <strong>Don't use this constructor in child classes.</strong>
53
     * </p>
54
     * 
55
     * @param cause
56
     *            the original cause of the exception
57
     */
58
    public DerivedGeometriesException(Exception cause) {
59
        super(MESSAGE, cause, KEY, serialVersionUID);
60
    }
61

  
62
    /**
63
     * @see BaseException#BaseException(String, String, long).
64
     * @param message
65
     *            the default messageFormat to describe the exception
66
     * @param key
67
     *            the key to use to search a localized messageFormnata
68
     * @param code
69
     *            the unique code to identify the exception
70
     */
71
    protected DerivedGeometriesException(String message, String key, long code) {
72
        super(message, key, code);
73
    }
74

  
75
    /**
76
     * @see BaseException#BaseException(String, Throwable, String, long).
77
     * @param message
78
     *            the default messageFormat to describe the exception
79
     * @param cause
80
     *            the original cause of the exception
81
     * @param key
82
     *            the key to use to search a localized messageFormnata
83
     * @param code
84
     *            the unique code to identify the exception
85
     */
86
    protected DerivedGeometriesException(String message, Throwable cause,
87
        String key, long code) {
88
        super(message, cause, key, code);
89
    }
90

  
91
}
org.gvsig.derivedgeometries/tags/org.gvsig.derivedgeometries-1.0.12/org.gvsig.derivedgeometries.swing/org.gvsig.derivedgeometries.swing.api/src/main/java/org/gvsig/derivedgeometries/swing/api/exceptions/ValidateSourceLayerException.java
1
/* gvSIG. Desktop Geographic Information System.
2
 *
3
 * Copyright ? 2007-2014 gvSIG Association
4
 *
5
 * This program is free software; you can redistribute it and/or
6
 * modify it under the terms of the GNU General Public License
7
 * as published by the Free Software Foundation; either version 2
8
 * of the License, or (at your option) any later version.
9
 *
10
 * This program is distributed in the hope that it will be useful,
11
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13
 * GNU General Public License for more details.
14
 *
15
 * You should have received a copy of the GNU General Public License
16
 * along with this program; if not, write to the Free Software
17
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
18
 * MA  02110-1301, USA.
19
 *
20
 * For any additional information, do not hesitate to contact us
21
 * at info AT gvsig.com, or visit our website www.gvsig.com.
22
 */
23
package org.gvsig.derivedgeometries.swing.api.exceptions;
24

  
25
public class ValidateSourceLayerException extends DerivedGeometriesException {
26

  
27
    /**
28
     * 
29
     */
30
    private static final long serialVersionUID = 6671117008934615055L;
31

  
32
    private static final String MESSAGE =
33
        "An error has been produced validating source layer.";
34

  
35
    private static final String KEY = "_ValidateSourceLayerException";
36

  
37
    public ValidateSourceLayerException(Throwable ex) {
38
        super(MESSAGE, ex, KEY, serialVersionUID);
39
    }
40

  
41
    public ValidateSourceLayerException(String message, Throwable ex) {
42
        super(message, ex, KEY, serialVersionUID);
43
    }
44

  
45
}
org.gvsig.derivedgeometries/tags/org.gvsig.derivedgeometries-1.0.12/org.gvsig.derivedgeometries.swing/org.gvsig.derivedgeometries.swing.api/src/main/java/org/gvsig/derivedgeometries/swing/api/panels/FeaturesControlPanel.java
1
/* gvSIG. Desktop Geographic Information System.
2
 *
3
 * Copyright ? 2007-2014 gvSIG Association
4
 *
5
 * This program is free software; you can redistribute it and/or
6
 * modify it under the terms of the GNU General Public License
7
 * as published by the Free Software Foundation; either version 2
8
 * of the License, or (at your option) any later version.
9
 *
10
 * This program is distributed in the hope that it will be useful,
11
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13
 * GNU General Public License for more details.
14
 *
15
 * You should have received a copy of the GNU General Public License
16
 * along with this program; if not, write to the Free Software
17
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
18
 * MA  02110-1301, USA.
19
 *
20
 * For any additional information, do not hesitate to contact us
21
 * at info AT gvsig.com, or visit our website www.gvsig.com.
22
 */
23
package org.gvsig.derivedgeometries.swing.api.panels;
24

  
25
import org.gvsig.derivedgeometries.swing.api.DerivedGeometriesParameters;
26
import org.gvsig.derivedgeometries.swing.api.DerivedGeometriesProcess;
27
import org.gvsig.tools.swing.api.Component;
28

  
29
/**
30
 * Features control panel contains three panels. First panel shows information
31
 * about source layer and output layer. Second panel shows information of source
32
 * layer features and the last panel permits users to add, remove and order
33
 * selected features to create derived geometries.
34
 * 
35
 * @author gvSIG team
36
 * @version $Id$
37
 *
38
 */
39
public interface FeaturesControlPanel extends Component {
40

  
41
    /**
42
     * Sets parameters to show information and initialize actions.
43
     * 
44
     * @param parameters
45
     */
46
    public void setParameters(DerivedGeometriesParameters parameters);
47

  
48
    /**
49
     * @return parameters of panel.
50
     */
51
    public DerivedGeometriesParameters getParameters();
52

  
53
    /**
54
     * Does action panel. Gets selected features, closes panel and starts
55
     * {@link DerivedGeometriesProcess}
56
     * 
57
     */
58
    public void doAction();
59

  
60
    /**
61
     * Validate if data of third panel is correct.
62
     * 
63
     * @return True if it is valid otherwise false.
64
     */
65
    public boolean validateFields();
66
}
org.gvsig.derivedgeometries/tags/org.gvsig.derivedgeometries-1.0.12/org.gvsig.derivedgeometries.swing/org.gvsig.derivedgeometries.swing.api/src/main/java/org/gvsig/derivedgeometries/swing/api/panels/LayerAndProcessSelectionPanel.java
1
/* gvSIG. Desktop Geographic Information System.
2
 *
3
 * Copyright ? 2007-2014 gvSIG Association
4
 *
5
 * This program is free software; you can redistribute it and/or
6
 * modify it under the terms of the GNU General Public License
7
 * as published by the Free Software Foundation; either version 2
8
 * of the License, or (at your option) any later version.
9
 *
10
 * This program is distributed in the hope that it will be useful,
11
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13
 * GNU General Public License for more details.
14
 *
15
 * You should have received a copy of the GNU General Public License
16
 * along with this program; if not, write to the Free Software
17
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
18
 * MA  02110-1301, USA.
19
 *
20
 * For any additional information, do not hesitate to contact us
21
 * at info AT gvsig.com, or visit our website www.gvsig.com.
22
 */
23
package org.gvsig.derivedgeometries.swing.api.panels;
24

  
25
import org.gvsig.derivedgeometries.swing.api.DerivedGeometriesParameters;
26
import org.gvsig.derivedgeometries.swing.api.exceptions.ValidateSourceLayerException;
27
import org.gvsig.fmap.mapcontrol.MapControl;
28
import org.gvsig.tools.swing.api.Component;
29

  
30
/**
31
 * 
32
 * @author gvSIG team
33
 * @version $Id$
34
 *
35
 */
36
public interface LayerAndProcessSelectionPanel extends Component {
37

  
38
    /**
39
     * 
40
     * @return
41
     */
42
    public DerivedGeometriesParameters getParameters();
43

  
44
    /**
45
     * 
46
     * @param mapControl
47
     */
48
    public void setMapControl(MapControl mapControl);
49

  
50
    /**
51
     * 
52
     */
53
    public void doAccept();
54

  
55
    /**
56
     * 
57
     */
58
    public void doCancel();
59

  
60
    /**
61
     * 
62
     * @return
63
     */
64
    public boolean validateFields();
65

  
66
    /**
67
     * 
68
     * @return
69
     * @throws ValidateSourceLayerException
70
     */
71
    public boolean validateSourceLayer() throws ValidateSourceLayerException;
72

  
73
}
org.gvsig.derivedgeometries/tags/org.gvsig.derivedgeometries-1.0.12/org.gvsig.derivedgeometries.swing/org.gvsig.derivedgeometries.swing.api/src/main/java/org/gvsig/derivedgeometries/swing/api/panels/DerivedGeometriesPanel.java
1
/* gvSIG. Desktop Geographic Information System.
2
 *
3
 * Copyright ? 2007-2014 gvSIG Association
4
 *
5
 * This program is free software; you can redistribute it and/or
6
 * modify it under the terms of the GNU General Public License
7
 * as published by the Free Software Foundation; either version 2
8
 * of the License, or (at your option) any later version.
9
 *
10
 * This program is distributed in the hope that it will be useful,
11
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13
 * GNU General Public License for more details.
14
 *
15
 * You should have received a copy of the GNU General Public License
16
 * along with this program; if not, write to the Free Software
17
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
18
 * MA  02110-1301, USA.
19
 *
20
 * For any additional information, do not hesitate to contact us
21
 * at info AT gvsig.com, or visit our website www.gvsig.com.
22
 */
23
package org.gvsig.derivedgeometries.swing.api.panels;
24

  
25
import org.gvsig.tools.swing.api.Component;
26

  
27
/**
28
 * Panel that contains {@link LayerAndProcessSelectionPanel} and
29
 * {@link FeaturesControlPanel}
30
 * 
31
 * @author gvSIG team
32
 * @version $Id$
33
 * 
34
 */
35
public interface DerivedGeometriesPanel extends Component {
36

  
37
}
org.gvsig.derivedgeometries/tags/org.gvsig.derivedgeometries-1.0.12/org.gvsig.derivedgeometries.swing/org.gvsig.derivedgeometries.swing.api/src/main/java/org/gvsig/derivedgeometries/swing/api/DerivedGeometriesProcess.java
1
/* gvSIG. Desktop Geographic Information System.
2
 *
3
 * Copyright ? 2007-2014 gvSIG Association
4
 *
5
 * This program is free software; you can redistribute it and/or
6
 * modify it under the terms of the GNU General Public License
7
 * as published by the Free Software Foundation; either version 2
8
 * of the License, or (at your option) any later version.
9
 *
10
 * This program is distributed in the hope that it will be useful,
11
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13
 * GNU General Public License for more details.
14
 *
15
 * You should have received a copy of the GNU General Public License
16
 * along with this program; if not, write to the Free Software
17
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
18
 * MA  02110-1301, USA.
19
 *
20
 * For any additional information, do not hesitate to contact us
21
 * at info AT gvsig.com, or visit our website www.gvsig.com.
22
 */
23
package org.gvsig.derivedgeometries.swing.api;
24

  
25
import org.gvsig.tools.ToolsLocator;
26
import org.gvsig.tools.i18n.I18nManager;
27
import org.gvsig.tools.task.MonitorableTask;
28

  
29
/**
30
 * Process definition to create derived geometries.
31
 * 
32
 * @author gvSIG team
33
 * @version $Id$
34
 */
35
public interface DerivedGeometriesProcess extends MonitorableTask {
36

  
37
    /**
38
     * Type of process.
39
     */
40
    public enum TYPE {
41
        POINTS_TO_LINE("_points_to_line"), 
42
        POINTS_TO_POLYGON("_points_to_polygon"), 
43
        LINES_TO_CLOSED_POLYLINE("_lines_to_closed_polyline");
44

  
45
        private String value;
46

  
47
        TYPE(String value) {
48
            this.value = value;
49
        }
50

  
51
        public String toString() {
52
            I18nManager i18n = ToolsLocator.getI18nManager();
53
            return i18n.getTranslation(value);
54
        }
55
    }
56

  
57
    /**
58
     * @return parameters of process.
59
     */
60
    public DerivedGeometriesParameters getParameters();
61

  
62
    /**
63
     * Starts process.
64
     */
65
    public void start();
66

  
67
}
org.gvsig.derivedgeometries/tags/org.gvsig.derivedgeometries-1.0.12/org.gvsig.derivedgeometries.swing/org.gvsig.derivedgeometries.swing.api/src/main/java/org/gvsig/derivedgeometries/swing/api/DerivedGeometriesLocator.java
1
/* gvSIG. Desktop Geographic Information System.
2
 *
3
 * Copyright ? 2007-2014 gvSIG Association
4
 *
5
 * This program is free software; you can redistribute it and/or
6
 * modify it under the terms of the GNU General Public License
7
 * as published by the Free Software Foundation; either version 2
8
 * of the License, or (at your option) any later version.
9
 *
10
 * This program is distributed in the hope that it will be useful,
11
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13
 * GNU General Public License for more details.
14
 *
15
 * You should have received a copy of the GNU General Public License
16
 * along with this program; if not, write to the Free Software
17
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
18
 * MA  02110-1301, USA.
19
 *
20
 * For any additional information, do not hesitate to contact us
21
 * at info AT gvsig.com, or visit our website www.gvsig.com.
22
 */
23
package org.gvsig.derivedgeometries.swing.api;
24

  
25
import org.gvsig.tools.locator.BaseLocator;
26
import org.gvsig.tools.locator.Locator;
27
import org.gvsig.tools.locator.LocatorException;
28

  
29
/**
30
 * This locator is the entry point for the DerivedGeometries library, providing
31
 * access to all DerivedGeometries services through the
32
 * {@link DerivedGeometriesManager} .
33
 *
34
 * @author gvSIG team
35
 * @version $Id$
36
 */
37
public class DerivedGeometriesLocator extends BaseLocator {
38

  
39
    private static final String LOCATOR_NAME = "DerivedGeometriesLocator";
40

  
41
    public static final String MANAGER_NAME = "DerivedGeometriesSwing.manager";
42

  
43
    private static final String MANAGER_DESCRIPTION =
44
        "Derived Geometries Swing Manager";
45

  
46
    private static final DerivedGeometriesLocator instance =
47
        new DerivedGeometriesLocator();
48

  
49
    /**
50
     * Return the singleton instance.
51
     * 
52
     * @return the singleton instance
53
     */
54
    public static DerivedGeometriesLocator getInstance() {
55
        return instance;
56
    }
57

  
58
    public String getLocatorName() {
59
        return LOCATOR_NAME;
60
    }
61

  
62
    /**
63
     * Return a reference to DerivedGeometriesManager.
64
     * 
65
     * @return a reference to DerivedGeometriesManager
66
     * @throws LocatorException
67
     *             if there is no access to the class or the class
68
     *             cannot be instantiated
69
     * @see Locator#get(String)
70
     */
71
    public static DerivedGeometriesManager getManager() throws LocatorException {
72
        return (DerivedGeometriesManager) getInstance().get(MANAGER_NAME);
73
    }
74

  
75
    /**
76
     * Registers the Class implementing the DerivedGeometriesLocator interface.
77
     * 
78
     * @param clazz
79
     *            implementing the DerivedGeometriesgManager interface
80
     */
81
    public static void registerManager(Class clazz) {
82
        getInstance().register(MANAGER_NAME, MANAGER_DESCRIPTION, clazz);
83
    }
84

  
85
    public static void registerDefaultManager(Class clazz) {
86
        getInstance().registerDefault(MANAGER_NAME, MANAGER_DESCRIPTION, clazz);
87
    }
88

  
89
}
org.gvsig.derivedgeometries/tags/org.gvsig.derivedgeometries-1.0.12/org.gvsig.derivedgeometries.swing/org.gvsig.derivedgeometries.swing.api/src/main/java/org/gvsig/derivedgeometries/swing/api/DerivedGeometriesParameters.java
1
/* gvSIG. Desktop Geographic Information System.
2
 *
3
 * Copyright ? 2007-2014 gvSIG Association
4
 *
5
 * This program is free software; you can redistribute it and/or
6
 * modify it under the terms of the GNU General Public License
7
 * as published by the Free Software Foundation; either version 2
8
 * of the License, or (at your option) any later version.
9
 *
10
 * This program is distributed in the hope that it will be useful,
11
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13
 * GNU General Public License for more details.
14
 *
15
 * You should have received a copy of the GNU General Public License
16
 * along with this program; if not, write to the Free Software
17
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
18
 * MA  02110-1301, USA.
19
 *
20
 * For any additional information, do not hesitate to contact us
21
 * at info AT gvsig.com, or visit our website www.gvsig.com.
22
 */
23
package org.gvsig.derivedgeometries.swing.api;
24

  
25
import java.util.List;
26

  
27
import org.gvsig.derivedgeometries.swing.api.DerivedGeometriesProcess.TYPE;
28
import org.gvsig.fmap.dal.feature.FeatureReference;
29
import org.gvsig.fmap.dal.feature.FeatureStore;
30
import org.gvsig.fmap.geom.Geometry;
31
import org.gvsig.fmap.mapcontext.layers.vectorial.FLyrVect;
32
import org.gvsig.fmap.mapcontrol.MapControl;
33

  
34
/**
35
 * 
36
 * Definition of derived geometries parameters.
37
 * 
38
 * @author gvSIG team
39
 * @version $Id$
40
 *
41
 */
42
public interface DerivedGeometriesParameters {
43

  
44
    /**
45
     * @return Gets if process has to add layer to map context.
46
     */
47
    public boolean getAddLayer();
48

  
49
    /**
50
     * @return Gets if process has to create new feature store
51
     */
52
    public boolean getCreateNewFeatureStore();
53

  
54
    /**
55
     * @return Gets feature store to edit
56
     */
57
    public FeatureStore getFeatureStore();
58

  
59
    /**
60
     * @return mapControl of source layer and output layer
61
     */
62
    public MapControl getMapControl();
63

  
64
    /**
65
     * @return name of output layer.
66
     */
67
    public String getOutPutLayerName();
68

  
69
    /**
70
     * @return path of output layer.
71
     */
72
    public String getOutPutLayerPath();
73

  
74
    /**
75
     * @return type of output layer. See {@link Geometry.TYPES}
76
     */
77
    public int getOutPutLayerType();
78

  
79
    /**
80
     * @return process type. See {@link DerivedGeometriesProcess.TYPE}
81
     */
82
    public TYPE getProcessType();
83

  
84
    /**
85
     * @return an ordered list of selected features.
86
     */
87
    public List<FeatureReference> getSelectedFeatures();
88

  
89
    /**
90
     * @return source layer.
91
     */
92
    public FLyrVect getSourceLayer();
93

  
94
    /**
95
     * @param b
96
     *            Sets if process has to add output layer to mapContext or not.
97
     */
98
    public void setAddLayer(boolean b);
99

  
100
    /**
101
     * @param createNewFeatureStore
102
     *            Sets if process has to create new feature store o not.
103
     */
104
    public void setCreateNewFeatureStore(boolean createNewFeatureStore);
105

  
106
    /**
107
     * @param featureStore
108
     *            Sets feature store to edit
109
     */
110
    public void setFeatureStore(FeatureStore featureStore);
111

  
112
    /**
113
     * Sets name of output layer
114
     * 
115
     * @param name
116
     */
117
    public void setOutPutLayerName(String name);
118

  
119
    /**
120
     * Sets path of output layer
121
     * 
122
     * @param path
123
     */
124
    public void setOutPutLayerPath(String path);
125

  
126
    /**
127
     * Sets type of output layer. See {@link Geometry.TYPES}
128
     * 
129
     * @param type
130
     */
131
    public void setOutPutLayerType(int type);
132

  
133
    /**
134
     * Sets type of {@link DerivedGeometriesProcess} process.
135
     * 
136
     * @param type
137
     */
138
    public void setProcessType(TYPE type);
139

  
140
    /**
141
     * Sets selected features to create derived geometries.
142
     * 
143
     * @param theFeatures
144
     *            ordered list.
145
     */
146
    public void setSelectedFeatures(List<FeatureReference> theFeatures);
147

  
148
    /**
149
     * Sets source layer.
150
     * 
151
     * @param sourceLayer
152
     */
153
    public void setSourceLayer(FLyrVect sourceLayer);
154

  
155
}
org.gvsig.derivedgeometries/tags/org.gvsig.derivedgeometries-1.0.12/org.gvsig.derivedgeometries.swing/org.gvsig.derivedgeometries.swing.api/src/main/java/org/gvsig/derivedgeometries/swing/api/DerivedGeometriesLibrary.java
1
/* gvSIG. Desktop Geographic Information System.
2
 *
3
 * Copyright ? 2007-2014 gvSIG Association
4
 *
5
 * This program is free software; you can redistribute it and/or
6
 * modify it under the terms of the GNU General Public License
7
 * as published by the Free Software Foundation; either version 2
8
 * of the License, or (at your option) any later version.
9
 *
10
 * This program is distributed in the hope that it will be useful,
11
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13
 * GNU General Public License for more details.
14
 *
15
 * You should have received a copy of the GNU General Public License
16
 * along with this program; if not, write to the Free Software
17
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
18
 * MA  02110-1301, USA.
19
 *
20
 * For any additional information, do not hesitate to contact us
21
 * at info AT gvsig.com, or visit our website www.gvsig.com.
22
 */
23
package org.gvsig.derivedgeometries.swing.api;
24

  
25
import org.gvsig.fmap.dal.DALLibrary;
26
import org.gvsig.fmap.geom.GeometryLibrary;
27
import org.gvsig.tools.library.AbstractLibrary;
28
import org.gvsig.tools.library.LibraryException;
29
import org.gvsig.tools.locator.ReferenceNotRegisteredException;
30

  
31
/**
32
 * 
33
 * Library for API initialization and configuration.
34
 *
35
 * @author gvSIG team
36
 * @version $Id$
37
 */
38
public class DerivedGeometriesLibrary extends AbstractLibrary {
39

  
40
    @Override
41
    public void doRegistration() {
42
        registerAsAPI(DerivedGeometriesLibrary.class);
43
        require(DALLibrary.class);
44
        require(GeometryLibrary.class);
45
    }
46

  
47
    @Override
48
    protected void doInitialize() throws LibraryException {
49
        // Do nothing
50
    }
51

  
52
    @Override
53
    protected void doPostInitialize() throws LibraryException {
54
        // Validate there is any implementation registered.
55
        DerivedGeometriesManager manager =
56
            DerivedGeometriesLocator.getManager();
57
        if (manager == null) {
58
            throw new ReferenceNotRegisteredException(
59
                DerivedGeometriesLocator.MANAGER_NAME,
60
                DerivedGeometriesLocator.getInstance());
61
        }
62

  
63
    }
64

  
65
}
org.gvsig.derivedgeometries/tags/org.gvsig.derivedgeometries-1.0.12/org.gvsig.derivedgeometries.swing/org.gvsig.derivedgeometries.swing.api/src/main/java/org/gvsig/derivedgeometries/swing/api/tablemodels/DerivedGeometriesSelectionModel.java
1
/* gvSIG. Desktop Geographic Information System.
2
 *
3
 * Copyright ? 2007-2014 gvSIG Association
4
 *
5
 * This program is free software; you can redistribute it and/or
6
 * modify it under the terms of the GNU General Public License
7
 * as published by the Free Software Foundation; either version 2
8
 * of the License, or (at your option) any later version.
9
 *
10
 * This program is distributed in the hope that it will be useful,
11
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13
 * GNU General Public License for more details.
14
 *
15
 * You should have received a copy of the GNU General Public License
16
 * along with this program; if not, write to the Free Software
17
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
18
 * MA  02110-1301, USA.
19
 *
20
 * For any additional information, do not hesitate to contact us
21
 * at info AT gvsig.com, or visit our website www.gvsig.com.
22
 */
23
package org.gvsig.derivedgeometries.swing.api.tablemodels;
24

  
25
import java.util.List;
26

  
27
import javax.swing.ListSelectionModel;
28

  
29
import org.gvsig.fmap.dal.feature.FeatureReference;
30

  
31
public interface DerivedGeometriesSelectionModel extends ListSelectionModel {
32

  
33
    /**
34
     * 
35
     * @return
36
     */
37
    public List<FeatureReference> getSelectedFeatures();
38

  
39
    /**
40
     * 
41
     * @param list
42
     */
43
    public void setSelectedFeatures(List<FeatureReference> list);
44

  
45
}
org.gvsig.derivedgeometries/tags/org.gvsig.derivedgeometries-1.0.12/org.gvsig.derivedgeometries.swing/org.gvsig.derivedgeometries.swing.api/pom.xml
1
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
2
  <modelVersion>4.0.0</modelVersion>
3
  <parent>
4
    <groupId>org.gvsig</groupId>
5
    <artifactId>org.gvsig.derivedgeometries.swing</artifactId>
6
    <version>1.0.12</version>
7
  </parent>
8
  <artifactId>org.gvsig.derivedgeometries.swing.api</artifactId>
9
  <name>org.gvsig.derivedgeometries.swing.api</name>
10
  <dependencies>
11
  	<dependency>
12
  		<groupId>org.gvsig</groupId>
13
  		<artifactId>org.gvsig.tools.lib</artifactId>
14
  	</dependency>
15
  	<dependency>
16
      <groupId>org.gvsig</groupId>
17
      <artifactId>org.gvsig.fmap.dal.api</artifactId>
18
    </dependency>
19
  	<dependency>
20
  		<groupId>org.gvsig</groupId>
21
  		<artifactId>org.gvsig.fmap.control</artifactId>
22
  	</dependency>
23
  </dependencies>
24
</project>
org.gvsig.derivedgeometries/tags/org.gvsig.derivedgeometries-1.0.12/org.gvsig.derivedgeometries.swing/pom.xml
1
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
2
  <modelVersion>4.0.0</modelVersion>
3
  <parent>
4
    <groupId>org.gvsig</groupId>
5
    <artifactId>org.gvsig.derivedgeometries</artifactId>
6
    <version>1.0.12</version>
7
  </parent>
8
  <artifactId>org.gvsig.derivedgeometries.swing</artifactId>
9
  <packaging>pom</packaging>
10
  <name>org.gvsig.derivedgeometries.swing</name>
11
  <modules>
12
  	<module>org.gvsig.derivedgeometries.swing.api</module>
13
  	<module>org.gvsig.derivedgeometries.swing.impl</module>
14
  </modules>
15
</project>
org.gvsig.derivedgeometries/tags/org.gvsig.derivedgeometries-1.0.12/org.gvsig.derivedgeometries.swing/org.gvsig.derivedgeometries.swing.impl/src/main/java/org/gvsig/derivedgeometries/swing/impl/panels/DefaultDerivedGeometriesPanel.java
1
/* gvSIG. Desktop Geographic Information System.
2
 *
3
 * Copyright ? 2007-2014 gvSIG Association
4
 *
5
 * This program is free software; you can redistribute it and/or
6
 * modify it under the terms of the GNU General Public License
7
 * as published by the Free Software Foundation; either version 2
8
 * of the License, or (at your option) any later version.
9
 *
10
 * This program is distributed in the hope that it will be useful,
11
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13
 * GNU General Public License for more details.
14
 *
15
 * You should have received a copy of the GNU General Public License
16
 * along with this program; if not, write to the Free Software
17
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
18
 * MA  02110-1301, USA.
19
 *
20
 * For any additional information, do not hesitate to contact us
21
 * at info AT gvsig.com, or visit our website www.gvsig.com.
22
 */
23
package org.gvsig.derivedgeometries.swing.impl.panels;
24

  
25
import java.awt.event.ActionEvent;
26
import java.awt.event.ActionListener;
27

  
28
import javax.swing.JComponent;
29
import javax.swing.JOptionPane;
30

  
31
import org.slf4j.Logger;
32
import org.slf4j.LoggerFactory;
33

  
34
import org.gvsig.derivedgeometries.swing.api.DerivedGeometriesParameters;
35
import org.gvsig.derivedgeometries.swing.api.exceptions.DerivedGeometriesException;
36
import org.gvsig.derivedgeometries.swing.api.exceptions.ValidateSourceLayerException;
37
import org.gvsig.derivedgeometries.swing.api.panels.DerivedGeometriesPanel;
38
import org.gvsig.derivedgeometries.swing.impl.views.DerivedGeometriesPanelView;
39
import org.gvsig.fmap.dal.feature.FeatureStore;
40
import org.gvsig.fmap.mapcontrol.MapControl;
41
import org.gvsig.tools.ToolsLocator;
42
import org.gvsig.tools.i18n.I18nManager;
43
import org.gvsig.tools.swing.api.ToolsSwingLocator;
44
import org.gvsig.tools.swing.api.threadsafedialogs.ThreadSafeDialogsManager;
45

  
46
public class DefaultDerivedGeometriesPanel extends DerivedGeometriesPanelView
47
    implements DerivedGeometriesPanel {
48

  
49
    private static final long serialVersionUID = -2874430817496441084L;
50

  
51
    private static final Logger LOG = LoggerFactory
52
        .getLogger(DefaultDerivedGeometriesPanel.class);
53

  
54
    public DefaultDerivedGeometriesPanel(MapControl theMapControl) {
55
        super(theMapControl);
56

  
57
        initNextButton();
58
        initCancelButton();
59
    }
60

  
61
    public JComponent asJComponent() {
62
        return this;
63
    }
64

  
65
    private void closeWindow() {
66
        setVisible(false);
67
    }
68

  
69
    private void initCancelButton() {
70
        getCancelButton().addActionListener(new ActionListener() {
71

  
72
            public void actionPerformed(ActionEvent e) {
73

  
74
                DerivedGeometriesParameters parameters = null;
75

  
76
                if (getLayerAndProcessSelectionPanel().asJComponent()
77
                    .isVisible()) {
78

  
79
                    parameters =
80
                        getLayerAndProcessSelectionPanel().getParameters();
81

  
82
                } else if (getFeaturesControlPanel().asJComponent().isVisible()) {
83

  
84
                    parameters = getFeaturesControlPanel().getParameters();
85
                }
86
                
87
                if(parameters != null){
88
                    FeatureStore featureStore = parameters.getFeatureStore();
89
                    if (featureStore != null) {
90
                        featureStore.dispose();
91
                    }
92
                }
93

  
94
                closeWindow();
95
            }
96
        });
97
    }
98

  
99
    private void initNextButton() {
100
        getNextButton().addActionListener(new ActionListener() {
101

  
102
            public void actionPerformed(ActionEvent e) {
103

  
104
                ThreadSafeDialogsManager dlgManager =
105
                    ToolsSwingLocator.getThreadSafeDialogsManager();
106

  
107
                if (getLayerAndProcessSelectionPanel().asJComponent()
108
                    .isVisible()) {
109

  
110
                    // If selected source layer is not valid shows a dialog and
111
                    // finish method
112
                    try {
113
                        if (!validateSelectedSourceLayer()) {
114

  
115
                            String title = "_no_valid_source_layer";
116
                            String message = "_cant_process_this_type_of_layer";
117
                            dlgManager.messageDialog(message, title,
118
                                JOptionPane.ERROR_MESSAGE);
119
                            return;
120

  
121
                        }
122
                    } catch (DerivedGeometriesException ex) {
123
                        LOG.warn("Error validating source layer", ex);
124
                        return;
125
                    }
126

  
127
                    if (validateLayerAndOutputLayerFields()) {
128

  
129
                        getLayerAndProcessSelectionPanel().doAccept();
130

  
131
                        DerivedGeometriesParameters parameters =
132
                            getLayerAndProcessSelectionPanel().getParameters();
133

  
134
                        getLayerAndProcessSelectionPanel().asJComponent()
135
                            .setVisible(false);
136

  
137
                        getFeaturesControlPanel().setParameters(parameters);
138
                        getFeaturesControlPanel().asJComponent().setVisible(
139
                            true);
140

  
141
                        I18nManager i18nManager = ToolsLocator.getI18nManager();
142
                        getCancelButton().setText(
143
                            i18nManager.getTranslation("finish"));
144
                        getNextButton().setText(
145
                            i18nManager.getTranslation("generate"));
146

  
147
                    } else {
148

  
149
                        // If data fields is no valid shows a dialog and finish
150
                        // method
151
                        String title = "_no_valid_data";
152
                        String message =
153
                            "_no_valid_data_make_sure_data_are_valid";
154
                        dlgManager.messageDialog(message, title,
155
                            JOptionPane.ERROR_MESSAGE);
156
                        return;
157

  
158
                    }
159
                } else if (getFeaturesControlPanel().asJComponent().isVisible()) {
160

  
161
                    if (validateFeaturesControlPanelFields()) {
162

  
163
                        getFeaturesControlPanel().doAction();
164

  
165
                    } else {
166

  
167
                        // If data fields is no valid shows a dialog and finish
168
                        // method
169
                        String title = "_no_valid_data";
170
                        String message =
171
                            "_no_valid_data_make_sure_data_are_valid";
172
                        dlgManager.messageDialog(message, title,
173
                            JOptionPane.ERROR_MESSAGE);
174
                        return;
175

  
176
                    }
177
                }
178
            }
179
        });
180
    }
181

  
182
    private boolean validateLayerAndOutputLayerFields() {
183
        return getLayerAndProcessSelectionPanel().validateFields();
184
    }
185

  
186
    private boolean validateFeaturesControlPanelFields() {
187
        return getFeaturesControlPanel().validateFields();
188
    }
189

  
190
    private boolean validateSelectedSourceLayer()
191
        throws ValidateSourceLayerException {
192
        return getLayerAndProcessSelectionPanel().validateSourceLayer();
193
    }
194
}
org.gvsig.derivedgeometries/tags/org.gvsig.derivedgeometries-1.0.12/org.gvsig.derivedgeometries.swing/org.gvsig.derivedgeometries.swing.impl/src/main/java/org/gvsig/derivedgeometries/swing/impl/panels/DefaultFeaturesControlPanel.java
1
/* gvSIG. Desktop Geographic Information System.
2
 *
3
 * Copyright ? 2007-2014 gvSIG Association
4
 *
5
 * This program is free software; you can redistribute it and/or
6
 * modify it under the terms of the GNU General Public License
7
 * as published by the Free Software Foundation; either version 2
8
 * of the License, or (at your option) any later version.
9
 *
10
 * This program is distributed in the hope that it will be useful,
11
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13
 * GNU General Public License for more details.
14
 *
15
 * You should have received a copy of the GNU General Public License
16
 * along with this program; if not, write to the Free Software
17
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
18
 * MA  02110-1301, USA.
19
 *
20
 * For any additional information, do not hesitate to contact us
21
 * at info AT gvsig.com, or visit our website www.gvsig.com.
22
 */
23
package org.gvsig.derivedgeometries.swing.impl.panels;
24

  
25
import java.awt.event.ActionEvent;
26
import java.awt.event.ActionListener;
27
import java.util.ArrayList;
28
import java.util.List;
29

  
30
import javax.swing.JComponent;
31
import javax.swing.JOptionPane;
32
import javax.swing.ListSelectionModel;
33
import javax.swing.event.ListSelectionEvent;
34
import javax.swing.event.ListSelectionListener;
35

  
36
import org.slf4j.Logger;
37
import org.slf4j.LoggerFactory;
38

  
39
import org.gvsig.derivedgeometries.swing.api.DerivedGeometriesLocator;
40
import org.gvsig.derivedgeometries.swing.api.DerivedGeometriesManager;
41
import org.gvsig.derivedgeometries.swing.api.DerivedGeometriesParameters;
42
import org.gvsig.derivedgeometries.swing.api.exceptions.DerivedGeometriesException;
43
import org.gvsig.derivedgeometries.swing.api.exceptions.FetaureTableModelException;
44
import org.gvsig.derivedgeometries.swing.api.panels.FeaturesControlPanel;
45
import org.gvsig.derivedgeometries.swing.api.tablemodels.DerivedGeometriesSelectionModel;
46
import org.gvsig.derivedgeometries.swing.impl.views.FeaturesControlPanelView;
47
import org.gvsig.derivedgeometries.swing.impl.views.SelectedFeaturesTableModel;
48
import org.gvsig.fmap.dal.exception.DataException;
49
import org.gvsig.fmap.dal.feature.Feature;
50
import org.gvsig.fmap.dal.feature.FeatureReference;
51
import org.gvsig.fmap.dal.feature.FeatureSelection;
52
import org.gvsig.fmap.dal.feature.FeatureSet;
53
import org.gvsig.fmap.dal.feature.FeatureStore;
54
import org.gvsig.fmap.geom.Geometry;
55
import org.gvsig.fmap.geom.aggregate.Aggregate;
56
import org.gvsig.tools.dispose.DisposableIterator;
57
import org.gvsig.tools.swing.api.ToolsSwingLocator;
58
import org.gvsig.tools.swing.api.threadsafedialogs.ThreadSafeDialogsManager;
59

  
60
public class DefaultFeaturesControlPanel extends FeaturesControlPanelView
61
    implements FeaturesControlPanel {
62

  
63
    private static final long serialVersionUID = -2215258264697623544L;
64

  
65
    private static final Logger LOG = LoggerFactory
66
        .getLogger(DefaultFeaturesControlPanel.class);
67

  
68
    private List<FeatureReference> features;
69

  
70
    private DerivedGeometriesParameters parameters;
71

  
72
    public DefaultFeaturesControlPanel() {
73
        super();
74
        features = new ArrayList<FeatureReference>();
75

  
76
        initAddAllButton();
77
        initRemoveAllButton();
78
        initAddButton();
79
        initRemoveButton();
80
        initMoveUpButton();
81
        initMoveDownButton();
82
    }
83

  
84
    public JComponent asJComponent() {
85
        return this;
86
    }
87

  
88
    public void doAction() {
89
        getParameters().setSelectedFeatures(features);
90

  
91
        DerivedGeometriesManager manager =
92
            DerivedGeometriesLocator.getManager();
93

  
94
        manager.startDerivedGeometriesProcess(parameters);
95

  
96
        getSelectedFeaturesTableModel().clear();
97
        features.clear();
98
    }
99

  
100
    public DerivedGeometriesParameters getParameters() {
101
        return this.parameters;
102
    }
103

  
104
    private int[] getSelectedIndexs() {
105
        if (features == null || features.size() == 0) {
106
            return new int[-1];
107
        }
108
        return getSelectedFeaturesTable().getSelectedRows();
109
    }
110

  
111
    private boolean hasMoreThanOneGeometry(Feature feature) {
112
        Geometry geom = feature.getDefaultGeometry();
113
        if (geom instanceof Aggregate) {
114
            if (((Aggregate) geom).getPrimitivesNumber() > 1) {
115
                return true;
116
            }
117
        }
118
        return false;
119
    }
120

  
121
    private void initAddAllButton() {
122
        getAddAllButton().addActionListener(new ActionListener() {
123

  
124
            public void actionPerformed(ActionEvent e) {
125

  
126
                FeatureStore featureStore =
127
                    getParameters().getSourceLayer().getFeatureStore();
128
                final List<FeatureReference> tmpFeatures =
129
                    new ArrayList<FeatureReference>();
130
                boolean showWarningDialog = false;
131
                DisposableIterator it = null;
132
                FeatureSet featureSet = null;
133

  
134
                try {
135
                    featureSet = featureStore.getFeatureSet();
136
                    it = featureSet.fastIterator();
137
                } catch (DataException ex) {
138
                    String message =
139
                        String.format(
140
                            "Error getting feature set or fast iterator of %1",
141
                            featureStore);
142
                    LOG.info(message, ex);
143
                    return;
144
                }
145

  
146
                while (it.hasNext()) {
147
                    Feature feature = (Feature) it.next();
148
                    if (hasMoreThanOneGeometry(feature)
149
                        || feature.getDefaultGeometry() == null) {
150
                        showWarningDialog = true;
151
                    } else {
152
                        tmpFeatures.add(feature.getCopy().getReference());
153
                    }
154

  
155
                }
156

  
157
                it.dispose();
158
                featureSet.dispose();
159

  
160
                if (showWarningDialog) {
161
                    showWarningDialog();
162
                }
163

  
164
                features = tmpFeatures;
165

  
166
                try {
167
                    getSelectedFeaturesTableModel().loadData(features);
168
                } catch (DerivedGeometriesException ex) {
169
                    LOG.info("Error loading features", ex);
170
                }
171

  
172
            }
173
        });
174
    }
175

  
176
    private void initAddButton() {
177
        getAddButton().addActionListener(new ActionListener() {
178

  
179
            public void actionPerformed(ActionEvent e) {
180
                FeatureStore featureStore =
181
                    getParameters().getSourceLayer().getFeatureStore();
182
                boolean showWarningDialog = false;
183

  
184
                DerivedGeometriesSelectionModel selectionModel = null;
185
                try {
186
                    selectionModel =
187
                        (DerivedGeometriesSelectionModel) getAllFeaturesTable(
188
                            featureStore).getSelectionModel();
189
                } catch (FetaureTableModelException e1) {
190
                    // TODO Auto-generated catch block
191
                    e1.printStackTrace();
192
                }
193

  
194
                if (showWarningDialog) {
195
                    showWarningDialog();
196
                }
197

  
198
                features.addAll(selectionModel.getSelectedFeatures());
199
                selectionModel.getSelectedFeatures().clear();
200

  
201
                try {
202
                    getSelectedFeaturesTableModel().loadData(features);
... This diff was truncated because it exceeds the maximum size that can be displayed.

Also available in: Unified diff