Revision 489

View differences:

org.gvsig.vectorediting/tags/org.gvsig.vectorediting-1.0.10/org.gvsig.vectorediting.app/pom.xml
1
<?xml version="1.0" encoding="ISO-8859-1"?>
2

  
3
<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">
4
	<modelVersion>4.0.0</modelVersion>
5
	<groupId>org.gvsig</groupId>
6
	<artifactId>org.gvsig.vectorediting.app</artifactId>
7
	<packaging>pom</packaging>
8
	<version>1.0.10</version>
9
	<name>${project.artifactId}</name>
10
	<description>This plugin add to gvSIG a tool to show Vectorediting messages</description>
11
	<parent>
12
		<groupId>org.gvsig</groupId>
13
		<artifactId>org.gvsig.vectorediting</artifactId>
14
		<version>1.0.10</version>
15
	</parent>
16
	<dependencyManagement>
17
		<dependencies>
18
		
19
		</dependencies>
20
	</dependencyManagement>
21

  
22
	<modules>
23
		<module>org.gvsig.vectorediting.app.mainplugin</module>
24
	</modules>
25

  
26
</project>
org.gvsig.vectorediting/tags/org.gvsig.vectorediting-1.0.10/org.gvsig.vectorediting.app/maven-howto.rst
1

  
2
==================================
3
Usefull maven "howtos" and FAQs
4
==================================
5

  
6
.. contents::
7

  
8
How to reduce the process of "install" to run as fast as possible.
9
-------------------------------------------------------------------
10

  
11
Can reduce install execution skiping test execution and compilation,
12
javadoc generation, test signature checking, license checking, and 
13
attach sources in jar.
14

  
15
  mvn  -Danimal.sniffer.skip=true -Dmaven.test.skip=true -Dsource.skip=true -DskipTests -Dmaven.javadoc.skip=true install
16

  
17
How to increment the build number of gvSIG plugins
18
----------------------------------------------------
19

  
20
To increase the build number of gvSIG plugins, yo can do:
21

  
22
  mvn -Dincrease-build-number process-sources
23
  
24
How to deploy a package of a gvSIG plugin
25
--------------------------------------------
26

  
27
Yo can deploy the package of a gvSIG plugin with:
28

  
29
  mvn -Ddeploy-package -Duser=USER -Dpassword=PASSWORD install
30

  
31
Notes:
32
- Require that the gvsig.package.info.poolURL property that this set to the correct value.
33
- The process uses WEBDAV to upload the packages, gvspkg and gvspki, and require 
34
  access to write in the location specified by gvsig.package.info.poolURL
35
- If "user" or "password" is not present, the process ask its each time it need.
36
- If folder specified in  gvsig.package.info.poolURL does not exist, the process try to create it.
37
- The process create a file "addon-request.txt" in the target with the information to 
38
  add to the ticket to request the update of the package in the main repository of
39
  packages of gvSIG.
40

  
41
How to skip attach sources in jar from command line
42
------------------------------------------------------
43

  
44
If in the project is enabled by default the generation of jar whith 
45
the sources of the project, you can disable this setting the property
46
"source.skip" to true in the command line::
47

  
48
    mvn -Dsource.skip=true  install
49

  
50
How to skip test compile from command line
51
--------------------------------------------
52

  
53
You can skip the compilation of test setting the propety "maven.test.skip" 
54
to true in the command line::
55

  
56
    mvn -Dmaven.test.skip=true  install
57

  
58

  
59
How to skip test execution from command line
60
----------------------------------------------
61

  
62
You can skip the tests execution setting the propety "skipTests" to true
63
in the command line::
64

  
65
    mvn -DskipTests install
66

  
67
How to skip javadoc generation from command line
68
--------------------------------------------------
69

  
70
You can skip the javadoc generation setting the property
71
"maven.javadoc.skip" to true in the command line::
72

  
73
    mvn -Dmaven.javadoc.skip=true  install
74

  
75
How to skip test signature cheks from command line
76
---------------------------------------------------
77

  
78
You can skip the signature check setting the property
79
"animal.sniffer.skip" to true in the command line::
80

  
81
    mvn -Danimal.sniffer.skip=true install
82

  
83
How to install a project without install submodules
84
----------------------------------------------------------
85

  
86
To install a project with submodules and only install the
87
parent project without submodules use the option "--non-recursive" ::
88

  
89
    mvn --non-recursive install
90

  
91
  
92
How to skip test compilation
93
--------------------------------
94

  
95
To configure a project to don't run the compilation
96
of test you can add to this pom the next configuration of
97
the plugin "maven-compiler-plugin"::
98

  
99
  <build>
100
    <plugins>
101
      ...
102
      <plugin>
103
        <!-- Skip compilation tests -->
104
        <groupId>org.apache.maven.plugins</groupId>
105
        <artifactId>maven-compiler-plugin</artifactId>
106
        <executions>
107
          <execution>
108
            <id>default-testCompile</id>
109
            <phase>process-test-sources</phase>
110
            <goals>
111
              <goal>testCompile</goal>
112
            </goals>
113
            <configuration>
114
              <skip>true</skip>
115
            </configuration>
116
          </execution>
117
        </executions>
118
      </plugin>
119
      ...
120
    </plugins>
121
  </build>
122

  
123
Skip test execution
124
----------------------
125

  
126
To configure a project to don't run the execution
127
of test you can add to this pom the next configuration of
128
the plugin "maven-surefire-plugin"::
129

  
130

  
131
  <build>
132
    <plugins>
133
      ...
134
      <plugin>
135
        <!-- Skip test execution -->
136
        <groupId>org.apache.maven.plugins</groupId>
137
        <artifactId>maven-surefire-plugin</artifactId>
138
        <configuration>
139
          <skipTests>true</skipTests>
140
        </configuration>
141
      </plugin>
142
      ...
143
    </plugins>
144
  </build>
145

  
146
Continue on test failure
147
-----------------------------
148

  
149
You can configure a project to continue on test execution 
150
failure. To do this add to the pom of the project the next 
151
configuration of plugin "maven-surefire-plugin" ::
152

  
153
  <build>
154
    <plugins>
155
      ...
156
      <plugin>
157
        <!-- Continue on test failure -->
158
        <groupId>org.apache.maven.plugins</groupId>
159
        <artifactId>maven-surefire-plugin</artifactId>
160
        <configuration>
161
          <testFailureIgnore>true</testFailureIgnore>
162
        </configuration>
163
      </plugin>
164
      ...
165
    </plugins>
166
  </build>
167

  
168

  
169
Set java compatibility
170
--------------------------
171

  
172
To set the compatibility with a java version  add to the 
173
pom of the project the next configuration of plugin 
174
"maven-compiler-plugin" ::
175

  
176
  <build>
177
    <plugins>
178
      ...
179
      <plugin>
180
          <!-- Set java compatibility -->
181
          <groupId>org.apache.maven.plugins</groupId>
182
          <artifactId>maven-compiler-plugin</artifactId>
183
          <configuration>
184
              <source>1.5</source>
185
              <target>1.5</target>
186
              <encoding>ISO-8859-1</encoding>
187
          </configuration>
188
      </plugin>
189
      ...
190
    </plugins>
191
  </build>
192

  
193
Packaging tests in jar
194
------------------------
195

  
196
Test classes do not packaging in jar by default.
197
To packing add to pom::
198

  
199
  <build>
200
    <plugins>
201
      ...
202
      <plugin>
203
        <!-- Packaging tests in jar -->
204
        <groupId>org.apache.maven.plugins</groupId>
205
        <artifactId>maven-jar-plugin</artifactId>
206
        <executions>
207
          <!-- Generates a jar file only with the test classes -->
208
          <execution>
209
            <goals>
210
              <goal>test-jar</goal>
211
            </goals>
212
            <configuration>
213
              <includes>
214
                <include>**/**</include>
215
              </includes>
216
            </configuration>
217
          </execution>
218
        </executions>
219
      </plugin> 
220
      ...
221
    </plugins>
222
  </build>
223

  
224
How to set a dependency with tests jar
225
-----------------------------------------
226

  
227
You can set a dependency with a test jar adding to
228
the declaration of the dependency the scope of
229
test and the type of "test-jar"::
230

  
231
  <dependency>
232
      <groupId>...</groupId>
233
      <artifactId>...</artifactId>
234
      <type>test-jar</type>
235
      <scope>test</scope>
236
  </dependency>
237

  
238
How use ant in maven
239
-------------------------
240

  
241
You can use ant embed in the pom of you project.
242
To do this use::
243

  
244
  <plugin>
245
    <artifactId>maven-antrun-plugin</artifactId>
246
    <version>1.7</version>
247
    <executions>
248
      <execution>
249
        <phase>generate-sources</phase>
250
        <configuration>
251
          <target>
252
            <echo>Hello world!</echo>
253
          </target>
254
        </configuration>
255
        <goals>
256
          <goal>run</goal>
257
        </goals>
258
      </execution>
259
    </executions>
260
  </plugin>
261

  
262
Fail when execute "mvn deploy" with "No connector available"
263
-------------------------------------------------------------
264

  
265
When execute a "mvn deploy" fail with the error::
266

  
267
  [INFO] ------------------------------------------------------------------------
268
  [ERROR] Failed to execute goal org.apache.maven.plugins:maven-deploy-plugin:2.7:deploy 
269
    (default-deploy) on project org.gvsig.desktop: Failed to deploy artifacts/metadata: 
270
    No connector available to access repository gvsig-repository (dav:https://devel.gvsig.org/m2repo/j2se) 
271
    of type default using the available factories WagonRepositoryConnectorFactory -> [Help 1]
272
  [ERROR] 
273
  
274
This happens to be configured the webdav wagon as an extension in the section "build"::
275

  
276
  ...
277
  <build>
278
    <extensions>
279
        <extension>
280
            <groupId>org.apache.maven.wagon</groupId>
281
            <artifactId>wagon-webdav-jackrabbit</artifactId>
282
            <version>1.0-beta-7</version>
283
        </extension>
284
    </extensions>
285
  ...
286

  
287
Fail when execute "mvn release: prepare" with "svn command failed... Could not authenticate"
288
------------------------------------------------------------------------------------------------
289

  
290
When running "mvn release: prepare" updates poms, compiles, and then
291
fails with the following error ::
292

  
293
  [INFO] ------------------------------------------------------------------------
294
  [ERROR] Failed to execute goal org.apache.maven.plugins:maven-release-plugin:2.1:prepare 
295
    (default-cli) on project org.gvsig.desktop: Unable to commit files
296
  [ERROR] Provider message:
297
  [ERROR] The svn command failed.
298
  [ERROR] Command output:
299
  [ERROR] svn: Commit failed (details follow):
300
  [ERROR] svn: MKACTIVITY of '/svn/gvsig-desktop/!svn/act/931a27bc-57e8-45d9-adcd-5a2cf54a7045': 
301
    authorization failed: Could not authenticate to server: rejected Basic challenge (https://devel.gvsig.org)
302
  [ERROR] -> [Help 1]
303
  [ERROR] 
304
  [ERROR]
305

  
306
Apparently maven in linux system use the svn of system and if you're not
307
authenticated when trying to access to the repository, svn fails.
308

  
309
This is solved by executing a commit from the command line on
310
some file of the project (only if you have not enabled the option 
311
"store-passwords = no" in $ HOME / .subversion / config). For example, you 
312
can add or remove at the end of "pom.xml" a blank line and then run 
313
from the command line ::
314

  
315
  svn ci -m "" pom.xml
316
  
317
Another option that works on Windows in declaring the user and password in the command:
318

  
319
mvn release:prepare -Dusername=[username] -Dpassword=[password]
320

  
321

  
org.gvsig.vectorediting/tags/org.gvsig.vectorediting-1.0.10/org.gvsig.vectorediting.app/org.gvsig.vectorediting.app.mainplugin/buildNumber.properties
1
#Mon May 25 11:04:56 CEST 2015
2
buildNumber=15
org.gvsig.vectorediting/tags/org.gvsig.vectorediting-1.0.10/org.gvsig.vectorediting.app/org.gvsig.vectorediting.app.mainplugin/src/test/resources/log4j.xml
1
<?xml version="1.0" encoding="ISO-8859-1" ?>
2
<!--
3

  
4
    gvSIG. Desktop Geographic Information System.
5

  
6
    Copyright (C) 2007-2012 gvSIG Association.
7

  
8
    This program is free software; you can redistribute it and/or
9
    modify it under the terms of the GNU General Public License
10
    as published by the Free Software Foundation; either version 2
11
    of the License, or (at your option) any later version.
12

  
13
    This program is distributed in the hope that it will be useful,
14
    but WITHOUT ANY WARRANTY; without even the implied warranty of
15
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16
    GNU General Public License for more details.
17

  
18
    You should have received a copy of the GNU General Public License
19
    along with this program; if not, write to the Free Software
20
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
21
    MA  02110-1301, USA.
22

  
23
    For any additional information, do not hesitate to contact us
24
    at info AT gvsig.com, or visit our website www.gvsig.com.
25

  
26
-->
27
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
28

  
29
<!-- 
30
Log4J configuration file for unit tests execution.
31
 -->
32
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
33

  
34
	<!-- Appender configuration to show logging messages through the console -->
35
	<appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
36
		<layout class="org.apache.log4j.PatternLayout">
37
			<param name="ConversionPattern" value="%d{HH:mm:ss,SSS} %-5p [%c{2}.%M()]\n  %m%n" />
38
		</layout>
39
	</appender>
40

  
41
	<!-- 
42
	Activate logging messages of DEBUG level of higher only for the
43
	org.gvsig.tools packages.
44
	You can put full classes names or packages instead, to configure
45
	logging for all the classes and subpackages of the package.
46
	-->
47
	<category name="org.gvsig.tools">
48
		<priority value="DEBUG" />
49
	</category>
50
	<category name="org.gvsig.vectorediting">
51
		<priority value="DEBUG" />
52
	</category>
53

  
54
	<!-- 
55
	By default, show only logging messages of INFO level or higher, 
56
	through the previously configured CONSOLE appender. 
57
	-->
58
	<root>
59
		<priority value="INFO" />
60
		<appender-ref ref="CONSOLE" />
61
	</root>
62
</log4j:configuration>
org.gvsig.vectorediting/tags/org.gvsig.vectorediting-1.0.10/org.gvsig.vectorediting.app/org.gvsig.vectorediting.app.mainplugin/src/test/resources/README.txt
1
====
2

  
3
    gvSIG. Desktop Geographic Information System.
4

  
5
    Copyright (C) 2007-2013 gvSIG Association.
6

  
7
    This program is free software; you can redistribute it and/or
8
    modify it under the terms of the GNU General Public License
9
    as published by the Free Software Foundation; either version 3
10
    of the License, or (at your option) any later version.
11

  
12
    This program is distributed in the hope that it will be useful,
13
    but WITHOUT ANY WARRANTY; without even the implied warranty of
14
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15
    GNU General Public License for more details.
16

  
17
    You should have received a copy of the GNU General Public License
18
    along with this program; if not, write to the Free Software
19
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
20
    MA  02110-1301, USA.
21

  
22
    For any additional information, do not hesitate to contact us
23
    at info AT gvsig.com, or visit our website www.gvsig.com.
24

  
25
====
26

  
27
Put into this folder the resources needed by your test classes.
28

  
29
This folder is added to the Tests classpath, so you can load any resources 
30
through the ClassLoader.
31

  
32
By default, in this folder you can find an example of log4j configuration,
33
prepared to log messages through the console, so logging works when you
34
run your tests classes.
org.gvsig.vectorediting/tags/org.gvsig.vectorediting-1.0.10/org.gvsig.vectorediting.app/org.gvsig.vectorediting.app.mainplugin/src/main/assembly/gvsig-plugin-package.xml
1
<!-- gvSIG. Desktop Geographic Information System. Copyright (C) 2007-2013 gvSIG
2
  Association. This program is free software; you can redistribute it and/or modify
3
  it under the terms of the GNU General Public License as published by the Free Software
4
  Foundation; either version 3 of the License, or (at your option) any later version.
5
  This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
6
  without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
7
  PURPOSE. See the GNU General Public License for more details. You should have received
8
  a copy of the GNU General Public License along with this program; if not, write to
9
  the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
10
  USA. For any additional information, do not hesitate to contact us at info AT gvsig.com,
11
  or visit our website www.gvsig.com. -->
12
<assembly>
13
  <id>gvsig-plugin-package</id>
14
  <formats>
15
    <format>zip</format>
16
  </formats>
17
  <baseDirectory>${project.artifactId}</baseDirectory>
18
  <includeBaseDirectory>true</includeBaseDirectory>
19
  <files>
20
    <file>
21
      <source>target/${project.artifactId}-${project.version}.jar</source>
22
      <outputDirectory>lib</outputDirectory>
23
    </file>
24
    <file>
25
      <source>target/package.info</source>
26
    </file>
27
  </files>
28

  
29
  <fileSets>
30
    <fileSet>
31
      <directory>src/main/resources-plugin</directory>
32
      <outputDirectory>.</outputDirectory>
33
    </fileSet>
34
  </fileSets>
35

  
36

  
37
  <dependencySets>
38
    <dependencySet>
39
      <useProjectArtifact>false</useProjectArtifact>
40
      <useTransitiveDependencies>false</useTransitiveDependencies>
41
      <outputDirectory>lib</outputDirectory>
42
      <includes>
43
        <include>org.gvsig:org.gvsig.vectorediting.lib.api</include>
44
        <include>org.gvsig:org.gvsig.vectorediting.swing.api</include>
45
        <include>org.gvsig:org.gvsig.vectorediting.lib.impl</include>
46
        <include>org.gvsig:org.gvsig.vectorediting.swing.impl</include>
47
        <include>org.gvsig:org.gvsig.vectorediting.lib.spi</include>
48
        <include>org.gvsig:org.gvsig.vectorediting.lib.prov.point</include>
49
        <include>org.gvsig:org.gvsig.vectorediting.lib.prov.circlecr</include>
50
        <include>org.gvsig:org.gvsig.vectorediting.lib.prov.circle3p</include>
51
        <include>org.gvsig:org.gvsig.vectorediting.lib.prov.polyline</include>
52
        <include>org.gvsig:org.gvsig.vectorediting.lib.prov.internalpolygon</include>
53
        <include>org.gvsig:org.gvsig.vectorediting.lib.prov.line</include>
54
        <include>org.gvsig:org.gvsig.vectorediting.lib.prov.arc</include>
55
        <include>org.gvsig:org.gvsig.vectorediting.lib.prov.ellipse</include>
56
        <include>org.gvsig:org.gvsig.vectorediting.lib.prov.regularpolygon</include>
57
        <include>org.gvsig:org.gvsig.vectorediting.lib.prov.rectangle</include>
58
        <include>org.gvsig:org.gvsig.vectorediting.lib.prov.spline</include>
59
        <include>org.gvsig:org.gvsig.vectorediting.lib.prov.explode</include>
60
        <include>org.gvsig:org.gvsig.vectorediting.lib.prov.move</include>
61
        <include>org.gvsig:org.gvsig.vectorediting.lib.prov.rotate</include>
62
        <include>org.gvsig:org.gvsig.vectorediting.lib.prov.duplicate</include>
63
        <include>org.gvsig:org.gvsig.vectorediting.lib.prov.scale</include>
64
        <include>org.gvsig:org.gvsig.vectorediting.lib.prov.splitline</include>
65
        <include>org.gvsig:org.gvsig.vectorediting.lib.prov.simplify</include>
66
        <include>org.gvsig:org.gvsig.vectorediting.lib.prov.multipoint</include>
67
        <include>org.gvsig:org.gvsig.vectorediting.lib.prov.autopolygon</include>
68
        <include>org.gvsig:org.gvsig.vectorediting.lib.prov.join</include>
69
        <include>org.gvsig:org.gvsig.vectorediting.lib.prov.stretch</include>
70
        <include>org.gvsig:org.gvsig.vectorediting.lib.prov.extendline</include>
71
        <include>org.gvsig:org.gvsig.vectorediting.lib.prov.split</include>
72
        <include>org.gvsig:org.gvsig.vectorediting.lib.prov.smoothline</include>
73
        <include>org.gvsig:org.gvsig.vectorediting.lib.prov.trimline</include>
74
        <include>org.gvsig:org.gvsig.vectorediting.lib.prov.rectangularmatrix</include>
75
        <include>org.gvsig:org.gvsig.vectorediting.lib.prov.polarmatrix</include>
76
        <include>org.gvsig:org.gvsig.vectorediting.lib.prov.editvertex</include>
77
        <include>org.gvsig:org.gvsig.vectorediting.lib.prov.remove</include>
78
      </includes>
79
    </dependencySet>
80
  </dependencySets>
81

  
82
</assembly>
83

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

  
26
import java.io.File;
27
import java.util.ArrayList;
28
import java.util.Iterator;
29
import java.util.List;
30

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

  
34
import org.gvsig.andami.IconThemeHelper;
35
import org.gvsig.andami.PluginServices;
36
import org.gvsig.andami.PluginsLocator;
37
import org.gvsig.andami.actioninfo.ActionInfoManager;
38
import org.gvsig.andami.plugins.Extension;
39
import org.gvsig.andami.plugins.IExtension;
40
import org.gvsig.andami.plugins.status.IExtensionStatus;
41
import org.gvsig.andami.plugins.status.IUnsavedData;
42
import org.gvsig.andami.plugins.status.UnsavedData;
43
import org.gvsig.andami.ui.mdiManager.IWindow;
44
import org.gvsig.andami.ui.mdiManager.SingletonWindow;
45
import org.gvsig.app.ApplicationLocator;
46
import org.gvsig.app.ApplicationManager;
47
import org.gvsig.app.project.DocumentsContainer;
48
import org.gvsig.app.project.documents.Document;
49
import org.gvsig.app.project.documents.gui.IDocumentWindow;
50
import org.gvsig.app.project.documents.view.ViewDocument;
51
import org.gvsig.app.project.documents.view.gui.DefaultViewPanel;
52
import org.gvsig.app.project.documents.view.gui.IView;
53
import org.gvsig.app.project.documents.view.toc.actions.EndEditingTocMenuEntry;
54
import org.gvsig.app.project.documents.view.toc.actions.StartEditingTocMenuEntry;
55
import org.gvsig.app.project.documents.view.toolListeners.StatusBarListener;
56
import org.gvsig.fmap.dal.exception.DataException;
57
import org.gvsig.fmap.dal.feature.FeatureStore;
58
import org.gvsig.fmap.mapcontext.MapContext;
59
import org.gvsig.fmap.mapcontext.MapContextLocator;
60
import org.gvsig.fmap.mapcontext.layers.FLayer;
61
import org.gvsig.fmap.mapcontext.layers.FLayers;
62
import org.gvsig.fmap.mapcontext.layers.vectorial.FLyrVect;
63
import org.gvsig.fmap.mapcontext.rendering.symbols.ISymbol;
64
import org.gvsig.fmap.mapcontext.rendering.symbols.SymbolException;
65
import org.gvsig.fmap.mapcontext.rendering.symbols.SymbolManager;
66
import org.gvsig.fmap.mapcontrol.MapControl;
67
import org.gvsig.fmap.mapcontrol.MapControlCreationListener;
68
import org.gvsig.fmap.mapcontrol.MapControlLocator;
69
import org.gvsig.fmap.mapcontrol.tools.Behavior.Behavior;
70
import org.gvsig.fmap.mapcontrol.tools.Behavior.MouseMovementBehavior;
71
import org.gvsig.tools.ToolsLocator;
72
import org.gvsig.tools.extensionpoint.ExtensionPoint;
73
import org.gvsig.tools.observer.Notification;
74
import org.gvsig.tools.observer.Observable;
75
import org.gvsig.tools.observer.Observer;
76
import org.gvsig.utils.swing.threads.IMonitorableTask;
77
import org.gvsig.vectorediting.lib.spi.EditingProviderLocator;
78
import org.gvsig.vectorediting.lib.spi.EditingProviderManager;
79
import org.gvsig.vectorediting.swing.api.EditingContext;
80
import org.gvsig.vectorediting.swing.api.EditingSwingLocator;
81
import org.gvsig.vectorediting.swing.api.EditingSwingManager;
82

  
83
public class EditingExtension extends Extension implements Observer {
84

  
85
    private static Logger logger = LoggerFactory.getLogger(EditingExtension.class);
86

  
87
    public void execute(String actionCommand) {
88

  
89
        IView view = getActiveView();
90
        EditingSwingManager swingManager =
91
            EditingSwingLocator.getSwingManager();
92

  
93
        if (view != null) {
94

  
95
            FLyrVect layer = getActiveLayer(view);
96
            EditingContext editingContext =
97
                swingManager.getEditingContext(view.getMapControl());
98

  
99
            if ("start-editing".equals(actionCommand)) {
100

  
101
                if (canBeEdited(layer)) {
102
                    MapControl mapControl = view.getMapControl();
103
                    StatusBarListener sbl = new StatusBarListener(mapControl);
104
                    editingContext.beginEdition(layer,
105
                        new Behavior[] { new MouseMovementBehavior(sbl) });
106
                    editingContext.addObserver(this);
107
                    ApplicationLocator.getManager().refreshMenusAndToolBars();
108
                }
109

  
110
            } else if ("end-editing".equals(actionCommand)) {
111

  
112
                if ((layer != null) && layer.isEditing()) {
113
                    editingContext.endEdition(layer);
114
                    ApplicationLocator.getManager().refreshMenusAndToolBars();
115
                }
116

  
117
            }
118
        }
119
    }
120

  
121
    public void initialize() {
122
        registerIcons();
123

  
124
        // Disable default view panel console. Uses editing context console.
125
        DefaultViewPanel.setDisableConsole(true);
126

  
127
        // Adding TOC menu entry
128
        ExtensionPoint exPoint = ToolsLocator.getExtensionPointManager().add(
129
                "View_TocActions", "");
130
        exPoint.append(
131
            StartEditingTocMenuEntry.EXTENSION_POINT_NAME,
132
                "TOC popup menu to start vector layer's editing",
133
                new StartEditingTocMenuEntry());
134
        exPoint.append(
135
            EndEditingTocMenuEntry.EXTENSION_POINT_NAME,
136
                "TOC popup menu to end vector layer's editing",
137
                new EndEditingTocMenuEntry());
138
    }
139

  
140

  
141
    private void registerIcons() {
142
        IconThemeHelper.registerIcon("vectorediting", "vector-editing", this);
143
    }
144

  
145
    @Override
146
    public void postInitialize() {
147
        super.postInitialize();
148
        registerSymbols();
149

  
150
        MapControlLocator.getMapControlManager().addMapControlCreationListener(new MapControlCreationListener() {
151

  
152
            public MapControl mapControlCreated(MapControl mapControl) {
153
                EditingContext editingContext = EditingSwingLocator.getSwingManager().getEditingContext(mapControl);
154
                StatusBarListener sbl = new StatusBarListener(mapControl);
155
                editingContext.setDefaultBehaviors(new Behavior[] { new MouseMovementBehavior(sbl) });
156
                editingContext.addObserver(EditingExtension.this);
157
                ApplicationLocator.getManager().refreshMenusAndToolBars();
158
                return mapControl;
159
            }
160
        });
161
    }
162

  
163
    /**
164
     * Register all symbols in the plugin symbols folder in the providerManager.
165
     * The description of the symbols must be unique because the key used for registration is the proper description of the symbol.
166
     *
167
     */
168
    private void registerSymbols() {
169

  
170
        EditingProviderManager providerManager =
171
            EditingProviderLocator.getProviderManager();
172

  
173
        SymbolManager symbolManager = MapContextLocator.getSymbolManager();
174
        File pluginFolder = getPlugin().getPluginDirectory();
175
        String pathSeparator = System.getProperty("file.separator");
176
        String symbolsPath = pluginFolder.getAbsolutePath()+pathSeparator+"symbols"+pathSeparator+"editing";
177
        File symbolsFolder = new File(symbolsPath);
178
        ISymbol[] symbols = null;
179
        try {
180
            symbols = symbolManager.loadSymbols(symbolsFolder);
181
        } catch (SymbolException e) {
182
            logger.warn("No symbols loaded from "+symbolsPath, e);
183
        }
184

  
185
        if (symbols != null) {
186
            for (int i = 0; i < symbols.length; i++) {
187
                ISymbol symbol = symbols[i];
188
                String description = symbol.getDescription();
189
                providerManager.registerSymbol(description, symbol);
190
            }
191
        }
192
    }
193

  
194
    public boolean isEnabled() {
195
        return true;
196
    }
197

  
198
    public boolean isVisible() {
199
        return true;
200
    }
201

  
202
    @Override
203
    public boolean isVisible(String action) {
204
        IView view = getActiveView();
205
        FLyrVect activeLayer = getActiveLayer(view);
206

  
207
        if ("start-editing".equals(action)) {
208
            return ((view != null) && (activeLayer != null) && !activeLayer
209
                .isEditing());
210

  
211
        } else {
212
            return ((view != null) && (activeLayer != null) && activeLayer
213
                .isEditing());
214

  
215
        }
216
    }
217

  
218
    @Override
219
    public boolean isEnabled(String action) {
220

  
221
        IView vista = getActiveView();
222
        FLyrVect activeLayer = getActiveLayer(vista);
223

  
224
        if ("start-editing".equals(action)) {
225
            return (canBeEdited(activeLayer));
226

  
227
        } else if ("end-editing".equals(action)) {
228
            return activeLayer.isEditing();
229

  
230
        }
231

  
232
        return false;
233

  
234
    }
235

  
236
    @Override
237
    public boolean canQueryByAction() {
238
        return true;
239
    }
240

  
241
    private IView getActiveView() {
242
        ApplicationManager application = ApplicationLocator.getManager();
243
        IView view = (IView) application.getActiveComponent(ViewDocument.class);
244
        return view;
245
    }
246

  
247
    private boolean canBeEdited(FLyrVect layer) {
248
        if (layer != null && layer.isAvailable()) {
249

  
250
            boolean isWritable = layer.isWritable();
251
            boolean isNotTransformed =
252
                layer.getFeatureStore().getTransforms().isEmpty();
253

  
254
            return isWritable && isNotTransformed && !layer.isEditing();
255
        }
256

  
257
        return false;
258
    }
259

  
260
    private FLyrVect getActiveLayer(IView vista) {
261
        if (vista != null) {
262
            ViewDocument viewDocument = vista.getViewDocument();
263
            FLayer[] actives =
264
                viewDocument.getMapContext().getLayers().getActives();
265

  
266
            if ((actives.length == 1) && (actives[0] instanceof FLyrVect)) {
267
                return (FLyrVect) actives[0];
268
            }
269
        }
270
        return null;
271
    }
272

  
273
    public void update(Observable observable, Object notification) {
274

  
275
        if (notification instanceof Notification){
276
            ApplicationManager appManager =
277
                ApplicationLocator.getManager();
278
            Notification n = (Notification)notification;
279
            if (n.getType().equalsIgnoreCase(EditingContext.CHANGE_SELECTED_TOOL_NOTIFICATION)){
280
                String name = (String)n.getValue();
281
                logger.info("Changed selected tool to '{}'", name);
282
                PluginServices.getMainFrame().setSelectedTool(name);
283
                appManager.refreshMenusAndToolBars();
284

  
285
            } else if (n.getType().equalsIgnoreCase(EditingContext.REFRESH_TOOLS_NOTIFICATION)){
286
                appManager.refreshMenusAndToolBars();
287
            }
288
        }
289
    }
290

  
291
    private List<FLyrVect> getEditedLayers(){
292
        List<FLyrVect> editedLayers = new ArrayList<FLyrVect>();
293

  
294
        ApplicationManager application = ApplicationLocator.getManager();
295
        IWindow[] windows = application.getUIManager().getOrderedWindows();
296
        for (int i = 0; i < windows.length; i++) {
297
            IWindow window = windows[i];
298
            if (window instanceof SingletonWindow && window instanceof IDocumentWindow) {
299
                // Recorremos las ventanas.
300
                // Cogemos el model de aquellas que sea de tipo Document.
301
                // Si el model es de tipo View,
302
                // comprobamos que adem?s sean de tipo View.
303
                // Le pedimos al mapContext de la View las layers
304
                // y a?adimos a editedLayers aquellas layers vectoriales que est?n en edici?n.
305
                Document document;
306
                try {
307
                    document = (Document) ((SingletonWindow) window).getWindowModel();
308
                } catch (ClassCastException e) {
309
                    // Do nothing, skip this window
310
                    continue;
311
                }
312
                if (ViewDocument.class.isAssignableFrom(document.getClass())) {
313
                    ViewDocument view = (ViewDocument) document;
314
                    MapContext mapContext = view.getMapContext();
315
                    if (mapContext != null) {
316
                        FLayers layers = mapContext.getLayers();
317
                        for (int j = 0; j < layers.getLayersCount(); j++) {
318
                            FLayer lyr = layers.getLayer(j);
319
                            if (lyr instanceof FLyrVect) {
320
                                FLyrVect layerVect = (FLyrVect) lyr;
321
                                if (layerVect.isEditing()) {
322
                                    editedLayers.add(layerVect);
323
                                }
324
                            }
325
                        }
326
                    }
327
                }
328
            }
329
        }
330
        return editedLayers;
331
    }
332

  
333
    private List<IUnsavedData> getUnsavedData(List<FLyrVect> editedLayers){
334
        List<IUnsavedData> unsavedData = new ArrayList<IUnsavedData>();
335
        for (Iterator iterator = editedLayers.iterator(); iterator.hasNext();) {
336
            FLyrVect editedLayer = (FLyrVect) iterator.next();
337
            IUnsavedData unsavedDataLayer = new UnsavedLayer(this, editedLayer);
338
            unsavedData.add(unsavedDataLayer);
339
        }
340
        return unsavedData;
341

  
342
    }
343

  
344
    private static class UnsavedLayer extends UnsavedData {
345
        private FLyrVect layer;
346

  
347
        public UnsavedLayer(IExtension extension, FLyrVect layer) {
348
            super(extension);
349
            this.layer = layer;
350
        }
351

  
352
        @Override
353
        public String getDescription() {
354
            return layer.getName();
355
        }
356

  
357
        @Override
358
        public String getResourceName() {
359
            return layer.getFeatureStore().getFullName();
360
        }
361

  
362
        @Override
363
        public boolean saveData() {
364
            FeatureStore featureStore = layer.getFeatureStore();
365
            if(featureStore.isEditing()){
366
                try {
367
                    featureStore.finishEditing();
368
                    return true;
369
                } catch (DataException e) {
370
                    throw new RuntimeException(e);
371
                }
372
            }
373
            return true;
374
        }
375
    }
376

  
377
    @Override
378
    public IExtensionStatus getStatus() {
379
        List<FLyrVect> editedLayers = getEditedLayers();
380
        final List<IUnsavedData> unsavedData = getUnsavedData(editedLayers);
381

  
382
        return new IExtensionStatus() {
383

  
384
            public boolean hasUnsavedData() {
385
                if(unsavedData == null){
386
                    return false;
387
                }
388
                return !unsavedData.isEmpty();
389
            }
390

  
391
            public boolean hasRunningProcesses() {
392
                return false;
393
            }
394

  
395
            public IUnsavedData[] getUnsavedData() {
396
                if(unsavedData == null){
397
                    return null;
398
                }
399
                return unsavedData.toArray(new IUnsavedData[0]);
400
            }
401

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

  
26
import org.gvsig.andami.plugins.Extension;
27
import org.gvsig.app.ApplicationLocator;
28
import org.gvsig.app.ApplicationManager;
29
import org.gvsig.app.project.documents.view.ViewDocument;
30
import org.gvsig.app.project.documents.view.gui.IView;
31
import org.gvsig.fmap.mapcontext.layers.FLayer;
32
import org.gvsig.fmap.mapcontext.layers.vectorial.FLyrVect;
33
import org.gvsig.vectorediting.swing.api.EditingContext;
34
import org.gvsig.vectorediting.swing.api.EditingSwingLocator;
35
import org.gvsig.vectorediting.swing.api.EditingSwingManager;
36

  
37
public class ServiceExtension extends Extension {
38

  
39
    public void initialize() {
40
    }
41

  
42
    public void execute(String actionCommand) {
43
        IView view = getActiveView();
44
        EditingSwingManager swingManager =
45
            EditingSwingLocator.getSwingManager();
46

  
47
        if (view != null) {
48
            EditingContext editingContext =
49
                swingManager.getEditingContext(view.getMapControl());
50
            editingContext.activateService(actionCommand);
51
        }
52

  
53
    }
54

  
55
    public boolean isEnabled() {
56
        return this.isVisible();
57
    }
58

  
59
    @Override
60
    public boolean isEnabled(String action) {
61
        IView view = getActiveView();
62
        FLyrVect activeLayer = getActiveLayer(view);
63

  
64
        if ((view != null) && (activeLayer != null) && activeLayer.isEditing() && action!=null) {
65
            EditingSwingManager swingManager =
66
                EditingSwingLocator.getSwingManager();
67
            EditingContext editingContext =
68
                swingManager.getEditingContext(view.getMapControl());
69
            return editingContext.isServiceCompatible(action);
70
        }
71
        return false;
72
    }
73

  
74
    public boolean isVisible() {
75
        IView view = getActiveView();
76
        FLyrVect activeLayer = getActiveLayer(view);
77
        return ((view != null) && (activeLayer != null) && activeLayer
78
            .isEditing());
79
    }
80

  
81
    @Override
82
    public boolean isVisible(String action) {
83
        return this.isVisible();
84
    }
85

  
86
    @Override
87
    public boolean canQueryByAction() {
88
        return true;
89
    }
90

  
91
    private IView getActiveView() {
92

  
93
        ApplicationManager application = ApplicationLocator.getManager();
94
        IView view = (IView) application.getActiveComponent(ViewDocument.class);
95
        return view;
96
    }
97

  
98
    private FLyrVect getActiveLayer(IView view) {
99
        if (view != null) {
100
            ViewDocument viewDocument = view.getViewDocument();
101
            FLayer[] actives =
102
                viewDocument.getMapContext().getLayers().getActives();
103

  
104
            if ((actives.length == 1) && (actives[0] instanceof FLyrVect)) {
105
                return (FLyrVect) actives[0];
106
            }
107
        }
108
        return null;
109
    }
110
}
org.gvsig.vectorediting/tags/org.gvsig.vectorediting-1.0.10/org.gvsig.vectorediting.app/org.gvsig.vectorediting.app.mainplugin/src/main/java/org/gvsig/app/project/documents/view/toc/actions/EndEditingTocMenuEntry.java
1
/**
2
 * gvSIG. Desktop Geographic Information System.
3
 *
4
 * Copyright (C) 2007-2013 gvSIG Association.
5
 *
6
 * This program is free software; you can redistribute it and/or
7
 * modify it under the terms of the GNU General Public License
8
 * as published by the Free Software Foundation; either version 3
9
 * of the License, or (at your option) any later version.
10
 *
11
 * This program is distributed in the hope that it will be useful,
12
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
 * GNU General Public License for more details.
15
 *
16
 * You should have received a copy of the GNU General Public License
17
 * along with this program; if not, write to the Free Software
18
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
19
 * MA  02110-1301, USA.
20
 *
21
 * For any additional information, do not hesitate to contact us
22
 * at info AT gvsig.com, or visit our website www.gvsig.com.
23
 */
24
package org.gvsig.app.project.documents.view.toc.actions;
25

  
26
import org.slf4j.Logger;
27
import org.slf4j.LoggerFactory;
28

  
29
import org.gvsig.andami.PluginServices;
30
import org.gvsig.andami.plugins.IExtension;
31
import org.gvsig.app.project.documents.view.toc.AbstractTocContextMenuAction;
32
import org.gvsig.app.project.documents.view.toc.ITocItem;
33
import org.gvsig.fmap.mapcontext.layers.FLayer;
34
import org.gvsig.vectorediting.app.mainplugin.EditingExtension;
35

  
36

  
37
public class EndEditingTocMenuEntry extends AbstractTocContextMenuAction {
38

  
39
    public static final String EXTENSION_POINT_NAME = "EndEditing";
40

  
41
    private IExtension ext = null;
42

  
43
    private static Logger logger =
44
        LoggerFactory.getLogger(EndEditingTocMenuEntry.class);
45

  
46
	public String getGroup() {
47
		return "vectorEditing";
48
	}
49

  
50
	public int getGroupOrder() {
51
		return 0;
52
	}
53

  
54
	public int getOrder() {
55
		return 1;
56
	}
57

  
58
	public String getText() {
59
		return PluginServices.getText(this, "end_editing");
60
	}
61

  
62
	public boolean isEnabled(ITocItem item, FLayer[] selectedItems) {
63
	    return ((EditingExtension)getExtension()).isEnabled("end-editing");
64
	}
65

  
66
   public boolean isVisible(ITocItem item, FLayer[] selectedItems) {
67
        return ((EditingExtension)getExtension()).isVisible("end-editing");
68
    }
69

  
70

  
71
	public void execute(ITocItem item, FLayer[] selItems) {
72
	       getExtension().execute("end-editing");
73
	}
74

  
75
    private IExtension getExtension() {
76

  
77
        if (ext == null) {
78
            ext = PluginServices.getExtension(EditingExtension.class);
79
        }
80
        return ext;
81
    }
82

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

  
26
import org.slf4j.Logger;
27
import org.slf4j.LoggerFactory;
28

  
29
import org.gvsig.andami.PluginServices;
30
import org.gvsig.andami.plugins.IExtension;
31
import org.gvsig.app.project.documents.view.toc.AbstractTocContextMenuAction;
32
import org.gvsig.app.project.documents.view.toc.ITocItem;
33
import org.gvsig.fmap.mapcontext.layers.FLayer;
34
import org.gvsig.vectorediting.app.mainplugin.EditingExtension;
35

  
36

  
37
public class StartEditingTocMenuEntry extends AbstractTocContextMenuAction {
38

  
39
    public static final String EXTENSION_POINT_NAME = "StartEditing";
40

  
41
    private IExtension ext = null;
42

  
43
    private static Logger logger =
44
        LoggerFactory.getLogger(StartEditingTocMenuEntry.class);
45

  
46
	public String getGroup() {
47
		return "vectorEditing";
48
	}
49

  
50
	public int getGroupOrder() {
51
		return 0;
52
	}
53

  
54
	public int getOrder() {
55
		return 0;
56
	}
57

  
58
	public String getText() {
59
		return PluginServices.getText(this, "start_editing");
60
	}
61

  
62
	public boolean isEnabled(ITocItem item, FLayer[] selectedItems) {
63
	    return ((EditingExtension)getExtension()).isEnabled("start-editing");
64
	}
65

  
66
   public boolean isVisible(ITocItem item, FLayer[] selectedItems) {
67
       return ((EditingExtension)getExtension()).isVisible("start-editing");
68
    }
69

  
70

  
71
	public void execute(ITocItem item, FLayer[] selItems) {
72
	       getExtension().execute("start-editing");
73
	}
74

  
75
    private IExtension getExtension() {
76

  
77
        if (ext == null) {
78
            ext = PluginServices.getExtension(EditingExtension.class);
79
        }
80
        return ext;
81
    }
82

  
83
}
org.gvsig.vectorediting/tags/org.gvsig.vectorediting-1.0.10/org.gvsig.vectorediting.app/org.gvsig.vectorediting.app.mainplugin/src/main/resources-plugin/config.xml
1
<?xml version="1.0" encoding="ISO-8859-1"?>
2
<!-- gvSIG. Desktop Geographic Information System. Copyright (C) 2007-2013 gvSIG
3
  Association. This program is free software; you can redistribute it and/or modify
4
  it under the terms of the GNU General Public License as published by the Free Software
5
  Foundation; either version 3 of the License, or (at your option) any later version.
6
  This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
7
  without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
8
  PURPOSE. See the GNU General Public License for more details. You should have received
9
  a copy of the GNU General Public License along with this program; if not, write to
10
  the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
11
  USA. For any additional information, do not hesitate to contact us at info AT gvsig.com,
12
  or visit our website www.gvsig.com. -->
13
<plugin-config>
14
  <depends plugin-name="org.gvsig.app.mainplugin" />
15
  <resourceBundle name="text" />
16
  <libraries library-dir="lib" />
17
  <extensions>
18
    <extension class-name="org.gvsig.vectorediting.app.mainplugin.EditingExtension"
19
      description="" active="true" priority="1">
20

  
21
      <action name="start-editing" label="start_editing" tooltip="start_editing"
22
        position="600800000" action-command="start-editing" icon="vector-editing"
23
        accelerator="" />
24

  
25
      <action name="end-editing" label="end_editing" tooltip="end_editing"
26
        position="600800000" action-command="end-editing" icon="vector-editing"
27
        accelerator="" />
28

  
29
      <menu text="Layer/start_editing" name="start-editing" />
30
      <menu text="Layer/end_editing" name="end-editing" />
31

  
32
      <tool-bar name="vector_editing" position="600800000">
33
        <action-tool name="start-editing" />
34
        <action-tool name="end-editing" />
35
      </tool-bar>
36

  
37
    </extension>
38

  
39
    <extension class-name="org.gvsig.vectorediting.app.mainplugin.ServiceExtension"
40
      description="" active="true" priority="1">
41

  
42
      <action name="remove" label="remove" tooltip="remove"
43
        action-command="remove" icon="remove" position="601002000"
44
        accelerator="delete" />
45
        <!-- accelerator="" /> -->
46

  
47
      <action name="insert-point" label="insert_point" tooltip="insert_point"
48
        action-command="insert-point" icon="insert-point" position="601002010"
49
        accelerator="" />
50

  
51
      <action name="insert-multipoint" label="insert_multipoint" tooltip="insert_multipoint"
52
        action-command="insert-multipoint" icon="insert-multipoint" position="601002025"
53
        accelerator="" />
54

  
55
      <action name="insert-line" label="insert_line" tooltip="insert_line"
56
        position="601002050" action-command="insert-line" icon="insert-line"
57
        accelerator="" />
58

  
59
      <action name="insert-arc" label="insert_arc" tooltip="insert_arc"
60
        position="601002060" action-command="insert-arc" icon="insert-arc"
61
        accelerator="" />
62

  
63
      <action name="insert-circle-cr" label="insert_circle_cr" tooltip="insert_circle_cr"
64
        position="601002100" action-command="insert-circle-cr" icon="insert-circle-cr"
65
        accelerator="" />
66

  
67
      <action name="insert-circumference-cr" label="insert_circumference_cr"
68
        tooltip="insert_circumference_cr" position="601002101" action-command="insert-circumference-cr"
69
        icon="insert-circumference-cr" accelerator="" />
70

  
71
      <action name="insert-circle-3p" label="insert_circle_3p" tooltip="insert_circle_3p"
72
        position="601002125" action-command="insert-circle-3p" icon="insert-circle-3p"
73
        accelerator="" />
74

  
75
      <action name="insert-circumference-3p" label="insert_circumference_3p"
76
        tooltip="insert_circumference_3p" position="601002126" action-command="insert-circumference-3p"
77
        icon="insert-circumference-3p" accelerator="" />
78

  
79
      <action name="insert-ellipse" label="insert_ellipse" tooltip="insert_ellipse"
80
        position="601002150" action-command="insert-ellipse" icon="insert-ellipse"
81
        accelerator="" />
82

  
83
      <action name="insert-filled-ellipse" label="insert_filled_ellipse"
84
        tooltip="insert_filled_ellipse" position="601002160" action-command="insert-filled-ellipse"
85
        icon="insert-filled-ellipse" accelerator="" />
86

  
87
      <action name="insert-polygon" label="insert_polygon" tooltip="insert_polygon"
88
        position="601002200" action-command="insert-polygon" icon="insert-polygon"
89
        accelerator="" />
90

  
91
      <action name="insert-polyline" label="insert_polyline" tooltip="insert_polyline"
92
        position="601002201" action-command="insert-polyline" icon="insert-polyline"
93
        accelerator="" />
94

  
95
      <action name="insert-filled-regular-polygon" label="insert_filled_regular_polygon"
96
        tooltip="insert_filled_regular_polygon" position="601002300"
97
        action-command="insert-filled-regular-polygon" icon="insert-filled-regular-polygon"
98
        accelerator="" />
99

  
100
      <action name="insert-regular-polygon" label="insert_regular_polygon"
101
        tooltip="insert_regular_polygon" position="601002301" action-command="insert-regular-polygon"
102
        icon="insert-regular-polygon" accelerator="" />
103

  
104
      <action name="insert-filled-rectangle" label="insert_filled_rectangle"
105
        tooltip="insert_filled_rectangle" position="601002350" action-command="insert-filled-rectangle"
106
        icon="insert-filled-rectangle" accelerator="" />
107

  
108
      <action name="insert-rectangle" label="insert_rectangle" tooltip="insert_rectangle"
109
        position="601002351" action-command="insert-rectangle" icon="insert-rectangle"
110
        accelerator="" />
111

  
112
      <action name="insert-filled-spline" label="insert_filled_spline"
113
        tooltip="insert_filled_spline" position="601002370" action-command="insert-filled-spline"
114
        icon="insert-filled-spline" accelerator="" />
115

  
116
      <action name="insert-spline" label="insert_spline" tooltip="insert_spline"
117
        position="601002371" action-command="insert-spline" icon="insert-spline"
118
        accelerator="" />
119

  
120
      <action name="modify-internal-polygon" label="modify_internal_polygon"
121
        tooltip="modify_internal_polygon" position="601002500" action-command="modify-internal-polygon"
122
        icon="modify-internal-polygon" accelerator="" />
123

  
124
      <action name="modify-explode-geometry" label="modify_explode_geometry"
125
        tooltip="modify_explode_geometry" position="601002600" action-command="modify-explode-geometry"
126
        icon="modify-explode-geometry" accelerator="" />
127

  
128
      <action name="modify-move" label="modify_move" tooltip="modify_move"
129
        position="601002700" action-command="modify-move" icon="modify-move"
130
        accelerator="" />
131

  
132
      <action name="modify-rotate" label="modify_rotate" tooltip="modify_rotate"
133
        position="601002800" action-command="modify-rotate" icon="modify-rotate"
134
        accelerator="" />
135

  
136
      <action name="modify-duplicate" label="modify_duplicate" tooltip="modify_duplicate"
137
        position="601002900" action-command="modify-duplicate" icon="modify-duplicate"
138
        accelerator="" />
139

  
140
      <action name="modify-split" label="modify_split" tooltip="modify_split"
141
        position="601003000" action-command="modify-split" icon="modify-split"
142
        accelerator="" />
143

  
144
      <action name="modify-split-line" label="modify_split_line" tooltip="modify_split_line"
145
        position="601003050" action-command="modify-split-line" icon="modify-split-line"
146
        accelerator="" />
147

  
148
      <action name="modify-scale" label="modify_scale" tooltip="modify_scale"
149
        position="601003100" action-command="modify-scale" icon="modify-scale"
150
        accelerator="" />
151

  
152
      <action name="modify-simplify" label="modify_simplify" tooltip="modify_simplify"
153
        position="601003200" action-command="modify-simplify" icon="modify-simplify"
154
        accelerator="" />
155

  
156
      <action name="modify-join" label="modify_join" tooltip="modify_join"
157
        position="601003300" action-command="modify-join" icon="modify-join"
158
        accelerator="" />
159

  
160
      <action name="insert-autopolygon" label="insert_autopolygon"
161
        tooltip="insert_autopolygon" position="601003400" action-command="insert-autopolygon"
162
        icon="insert-autopolygon" accelerator="" />
163

  
164
      <action name="modify-stretch" label="modify_stretch" tooltip="modify_stretch"
165
        position="601003500" action-command="modify-stretch" icon="modify-stretch"
166
        accelerator="" />
167

  
168
      <action name="modify-extend-line" label="modify_extend_line"
169
        tooltip="modify_extend_line" position="601003600" action-command="modify-extend-line"
170
        icon="modify-extend-line" accelerator="" />
171

  
172
      <action name="modify-trim-line" label="modify_trim_line" tooltip="modify_trim_line"
173
        position="601003700" action-command="modify-trim-line" icon="modify-trim-line"
174
        accelerator="" />
175

  
176
      <action name="modify-smooth-line" label="modify_smooth_line"
177
        tooltip="modify_smooth_line" position="601003800" action-command="modify-smooth-line"
178
        icon="modify-smooth-line" accelerator="" />
179

  
180
      <action name="modify-edit-vertex" label="modify_edit_vertex"
181
        tooltip="modify_edit_vertex" position="601003900" action-command="modify-edit-vertex"
182
        icon="modify-edit-vertex" accelerator="" />
183

  
184
      <action name="insert-rectangular-matrix" label="insert_rectangular_matrix"
185
        tooltip="insert_rectangular_matrix" position="601004000" action-command="insert-rectangular-matrix"
186
        icon="insert-rectangular-matrix" accelerator="" />
187

  
188
      <action name="insert-polar-matrix" label="insert_polar_matrix"
189
        tooltip="insert_polar_matrix" position="601004100" action-command="insert-polar-matrix"
190
        icon="insert-polar-matrix" accelerator="" />
191

  
192

  
193
      <menu text="Layer/Remove/remove" name="remove" />
194
      <menu text="Layer/Insert/insert_point" name="insert-point" />
195
      <menu text="Layer/Insert/insert_multipoint" name="insert-multipoint" />
196
      <menu text="Layer/Insert/insert_line" name="insert-line" />
197
      <menu text="Layer/Insert/insert_arc" name="insert-arc" />
198
      <menu text="Layer/Insert/insert_circle_cr" name="insert-circle-cr" />
199
      <menu text="Layer/Insert/insert_circumference_cr" name="insert-circumference-cr" />
200
      <menu text="Layer/Insert/insert_circle_3p" name="insert-circle-3p" />
201
      <menu text="Layer/Insert/insert_circumference_3p" name="insert-circumference-3p" />
202
      <menu text="Layer/Insert/insert_ellipse" name="insert-ellipse" />
203
      <menu text="Layer/Insert/insert_filled_ellipse" name="insert-filled-ellipse" />
204
      <menu text="Layer/Insert/insert_polyline" name="insert-polyline" />
205
      <menu text="Layer/Insert/insert_polygon" name="insert-polygon" />
206
      <menu text="Layer/Insert/insert_regular_polygon" name="insert-regular-polygon" />
207
      <menu text="Layer/Insert/insert_filled_regular_polygon" name="insert-filled-regular-polygon" />
208
      <menu text="Layer/Insert/insert_rectangle" name="insert-rectangle" />
209
      <menu text="Layer/Insert/insert_filled_rectangle" name="insert-filled-rectangle" />
210
      <menu text="Layer/Insert/insert_spline" name="insert-spline" />
211
      <menu text="Layer/Insert/insert_filled_spline" name="insert-filled-spline" />
212
      <menu text="Layer/Insert/insert_rectangular_matrix" name="insert-rectangular-matrix" />
213
      <menu text="Layer/Insert/insert_polar_matrix" name="insert-polar-matrix" />
214
      <menu text="Layer/Insert/insert_autopolygon" name="insert-autopolygon" />
215
      <menu text="Layer/Modify/modify_internal_polygon" name="modify-internal-polygon" />
216
      <menu text="Layer/Modify/modify_explode_geometry" name="modify-explode-geometry" />
217
      <menu text="Layer/Modify/modify_move" name="modify-move" />
218
      <menu text="Layer/Modify/modify_rotate" name="modify-rotate" />
219
      <menu text="Layer/Modify/modify_duplicate" name="modify-duplicate" />
220
      <menu text="Layer/Modify/modify_split_line" name="modify-split-line" />
221
      <menu text="Layer/Modify/modify_split" name="modify-split" />
222
      <menu text="Layer/Modify/modify_scale" name="modify-scale" />
223
      <menu text="Layer/Modify/modify_simplify" name="modify-simplify" />
224
      <menu text="Layer/Modify/modify_join" name="modify-join" />
225
      <menu text="Layer/Modify/modify_stretch" name="modify-stretch" />
226
      <menu text="Layer/Modify/modify_extend_line" name="modify-extend-line" />
227
      <menu text="Layer/Modify/modify_trim_line" name="modify-extend-line" />
228
      <menu text="Layer/Modify/modify_smooth_line" name="modify-smooth-line" />
229
      <menu text="Layer/Modify/modify_edit_vertex" name="modify-edit-vertex" />
230

  
231
      <tool-bar name="vector_editing" position="600800000">
232
        <selectable-tool name="remove" />
233
        <selectable-tool name="insert-point" />
... This diff was truncated because it exceeds the maximum size that can be displayed.

Also available in: Unified diff