Revision 1944

View differences:

org.gvsig.scripting/tags/org.gvsig.scripting-2.3.229/pom.xml
1
<?xml version="1.0" encoding="UTF-8"?>
2
<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">
3

  
4
    <modelVersion>4.0.0</modelVersion>
5
    <artifactId>org.gvsig.scripting</artifactId>
6
    <packaging>pom</packaging>
7
    <version>2.3.229</version>
8
    <name>${project.artifactId}</name>
9
    <description>Scripting Framework for gvSIG</description>
10
    <url>http://devel.gvsig.org/sites/org.gvsig.scripting/${project.version}</url>
11

  
12
    <parent>
13
        <groupId>org.gvsig</groupId>
14
        <artifactId>org.gvsig.desktop</artifactId>
15
        <version>2.0.436</version>
16
    </parent>
17

  
18
    <scm>
19
        <connection>scm:svn:https://devel.gvsig.org/svn/gvsig-scripting/org.gvsig.scripting/tags/org.gvsig.scripting-2.3.229</connection>
20
        <developerConnection>scm:svn:https://devel.gvsig.org/svn/gvsig-scripting/org.gvsig.scripting/tags/org.gvsig.scripting-2.3.229</developerConnection>
21
        <url>https://devel.gvsig.org/svn/gvsig-scripting/org.gvsig.scripting/tags/org.gvsig.scripting-2.3.229</url>
22
    </scm>
23
    <developers>
24
        <developer>
25
            <id>jjdelcerro</id>
26
            <name>Joaquín José del Cerro</name>
27
            <email>jjdelcerro@gvsig.org</email>
28
            <roles>
29
                <role>Architect</role>
30
                <role>Developer</role>
31
            </roles>
32
        </developer>
33
        <developer>
34
            <id>jbadia</id>
35
            <name>José Badía</name>
36
            <email>badia_jos@gva.es</email>
37
            <roles>
38
                <role>Developer</role>
39
            </roles>
40
        </developer>
41
    </developers>
42

  
43
    <distributionManagement>
44
        <site>
45
            <id>gvsig-repository</id>
46
            <url>dav:https://devel.gvsig.org/sites/org.gvsig.scripting/${project.version}</url>
47
        </site>
48
    </distributionManagement>
49
    <repositories>
50
        <repository>
51
            <id>gvsig-public-http-repository</id>
52
            <name>gvSIG maven public HTTP repository</name>
53
            <url>http://devel.gvsig.org/m2repo/j2se</url>
54
            <releases>
55
                <enabled>true</enabled>
56
                <updatePolicy>daily</updatePolicy>
57
                <checksumPolicy>warn</checksumPolicy>
58
            </releases>
59
            <snapshots>
60
                <enabled>true</enabled>
61
                <updatePolicy>daily</updatePolicy>
62
                <checksumPolicy>warn</checksumPolicy>
63
            </snapshots>
64
        </repository>
65
        <repository>
66
            <id>bedatadriven</id>
67
            <name>bedatadriven public repo</name>
68
            <url>http://nexus.bedatadriven.com/content/groups/public/</url>
69
        </repository>
70
    </repositories>
71
    <build>
72
        <plugins>
73
            <plugin>
74
                <groupId>org.apache.maven.plugins</groupId>
75
                <artifactId>maven-release-plugin</artifactId>
76
                <configuration>
77
                    <tagBase>https://devel.gvsig.org/svn/gvsig-scripting/org.gvsig.scripting/tags</tagBase>
78
                </configuration>
79
            </plugin>
80

  
81
        </plugins>
82
    </build>
83

  
84
    <dependencyManagement>
85
        <dependencies>
86
            <dependency>
87
                <groupId>org.gvsig</groupId>
88
                <artifactId>org.gvsig.scripting.lib.api</artifactId>
89
                <version>2.3.229</version>
90
            </dependency>
91
            <dependency>
92
                <groupId>org.gvsig</groupId>
93
                <artifactId>org.gvsig.scripting.swing.api</artifactId>
94
                <version>2.3.229</version>
95
            </dependency>
96
            <dependency>
97
                <groupId>org.gvsig</groupId>
98
                <artifactId>org.gvsig.scripting.lib.impl</artifactId>
99
                <version>2.3.229</version>
100
            </dependency>
101
            <dependency>
102
                <groupId>org.gvsig</groupId>
103
                <artifactId>org.gvsig.scripting.swing.impl</artifactId>
104
                <version>2.3.229</version>
105
            </dependency>
106

  
107
            <dependency>
108
                <groupId>org.gvsig</groupId>
109
                <artifactId>org.gvsig.scripting.main</artifactId>
110
                <version>2.3.229</version>
111
            </dependency>
112

  
113
            <dependency>
114
                <groupId>org.gvsig</groupId>
115
                <artifactId>org.gvsig.scripting.thing</artifactId>
116
                <version>2.3.229</version>
117
            </dependency>
118

  
119
            <dependency>
120
                <groupId>org.gvsig</groupId>
121
                <artifactId>org.gvsig.scripting.app.mainplugin</artifactId>
122
                <version>2.3.229</version>
123
            </dependency>
124

  
125
            <dependency>
126
              <groupId>com.github.tbekolay.jnumeric</groupId>
127
              <artifactId>jnumeric</artifactId>
128
              <version>0.1</version>
129
            </dependency>
130

  
131
            <dependency>
132
                <groupId>org.renjin</groupId>
133
                <artifactId>renjin-script-engine</artifactId>
134
                <version>0.9.2644</version>
135
                <classifier>jar-with-dependencies</classifier>
136
            </dependency>
137
            
138
            <!--
139
            <dependency>
140
                <groupId>org.scala-lang</groupId>
141
                <artifactId>scala-dist</artifactId>
142
                <version>2.12.0-M2</version>
143
                <scope>runtime</scope>
144
                <exclusions>
145
                    <exclusion>
146
                        <groupId>org.scala-lang</groupId>
147
                        <artifactId>scala-library-all</artifactId>
148
                    </exclusion>
149
                </exclusions>            
150
            </dependency>
151
            <dependency>
152
                <groupId>org.scala-lang</groupId>
153
                <artifactId>scala-compiler</artifactId>
154
                <version>2.12.0-M2</version>
155
            </dependency>
156
            <dependency>
157
                <groupId>org.scala-lang</groupId>
158
                <artifactId>scala-library</artifactId>
159
                <version>2.12.0-M2</version>
160
            </dependency>
161
            <dependency>
162
                <groupId>org.scala-lang</groupId>
163
                <artifactId>scala-reflect</artifactId>
164
                <version>2.12.0-M2</version>
165
            </dependency>
166
            <dependency>
167
                <groupId>org.scala-lang</groupId>
168
                <artifactId>scalap</artifactId>
169
                <version>2.12.0-M2</version>
170
            </dependency>
171
            <dependency>
172
                <groupId>jline</groupId>
173
                <artifactId>jline</artifactId>
174
                <version>2.12.1</version>
175
            </dependency>
176
            -->
177
            
178
            <dependency>
179
                <groupId>com.jeta</groupId>
180
                <artifactId>abeille</artifactId>
181
                <version>2.1.0.M3</version>
182
                <type>tar.gz</type>
183
            </dependency>
184

  
185
<!--            <dependency>
186
                <groupId>org.apache.tika</groupId>
187
                <artifactId>tika-core</artifactId>
188
                <version>1.12</version>
189
            </dependency>            
190
            <dependency>
191
                <groupId>org.apache.tika</groupId>
192
                <artifactId>tika-parsers</artifactId>
193
                <version>1.12</version>
194
            </dependency>-->
195
            <dependency>
196
                <groupId>net.sf.cssbox</groupId>
197
                <artifactId>swingbox</artifactId>
198
                <version>1.1</version>
199
            </dependency>
200
            <dependency>
201
                <groupId>net.sf.cssbox</groupId>
202
                <artifactId>cssbox</artifactId>
203
                <version>4.7</version>
204
            </dependency>
205
            <dependency>
206
                <groupId>net.sourceforge.nekohtml</groupId>
207
                <artifactId>nekohtml</artifactId>
208
                <version>1.9.21</version>
209
            </dependency>
210
            <dependency>
211
                <groupId>net.sf.cssbox</groupId>
212
                <artifactId>jstyleparser</artifactId>
213
                <version>1.18</version>
214
            </dependency>
215
            <dependency>
216
                <groupId>org.eclipse.jgit</groupId>
217
                <artifactId>org.eclipse.jgit</artifactId>
218
                <version>4.9.0.201710071750-r</version>
219
            </dependency>                    
220
                            
221
        </dependencies>
222
    </dependencyManagement>
223

  
224
    <modules>
225
        <module>org.gvsig.scripting.thing</module>
226
        <module>org.gvsig.scripting.lib</module>
227
        <module>org.gvsig.scripting.swing</module>
228
        <module>org.gvsig.scripting.main</module>
229
        <module>org.gvsig.scripting.app</module>
230
    </modules>
231
</project>
org.gvsig.scripting/tags/org.gvsig.scripting-2.3.229/org.gvsig.scripting.lib/org.gvsig.scripting.lib.impl/src/test/resources/org/gvsig/scripting/impl/scripts/hola.py
1

  
2

  
3
def main():
4
  print 'hola'
5
 
6
def hola(name):
7
  return 'hola %s' % name
8
  
9
def adios():
10
  print 'adios'
org.gvsig.scripting/tags/org.gvsig.scripting-2.3.229/org.gvsig.scripting.lib/org.gvsig.scripting.lib.impl/src/test/resources/org/gvsig/scripting/impl/scripts/hola2.dlg
1
<?xml version="1.0" encoding="ISO-8859-1"?>
2
<!-- generated by ThinG, the Thinlet GUI editor -->
3
<panel>
4
    <button text="hola" action="click"/>
5
</panel>
org.gvsig.scripting/tags/org.gvsig.scripting-2.3.229/org.gvsig.scripting.lib/org.gvsig.scripting.lib.impl/src/test/resources/org/gvsig/scripting/impl/scripts/hola2.py
1

  
2

  
3
def click():
4
  print 'click'
5

  
6
def main():
7
  print 'hola'
8
 
9
def hola(name):
10
  return 'hola %s' % name
11
  
12
def adios():
13
  print 'adios'
org.gvsig.scripting/tags/org.gvsig.scripting-2.3.229/org.gvsig.scripting.lib/org.gvsig.scripting.lib.impl/src/test/resources/README.txt
1
#set( $symbol_pound = '#' )
2
#set( $symbol_dollar = '$' )
3
#set( $symbol_escape = '\' )
4
Put into this folder the resources needed by your test classes.
5

  
6
This folder is added to the Tests classpath, so you can load any resources 
7
through the ClassLoader.
8

  
9
By default, in this folder you can find an example of log4j configuration,
10
prepared to log messages through the console, so logging works when you
11
run your tests classes.
org.gvsig.scripting/tags/org.gvsig.scripting-2.3.229/org.gvsig.scripting.lib/org.gvsig.scripting.lib.impl/src/test/resources/log4j.xml
1
<?xml version="1.0" encoding="UTF-8" ?>
2
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
3

  
4
<!-- 
5
Log4J configuration file for unit tests execution.
6
 -->
7
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
8

  
9
	<!-- Appender configuration to show logging messages through the console -->
10
	<appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
11
		<layout class="org.apache.log4j.PatternLayout">
12
			<param name="ConversionPattern" value="%d{HH:mm:ss,SSS} %-5p [%c{2}.%M()]\n  %m%n" />
13
		</layout>
14
	</appender>
15

  
16
	<!-- 
17
	Activate logging messages of DEBUG level of higher only for the
18
	DefaultExampleManager class.
19
	You can put full classes names or packages instead, to configure
20
	logging for all the classes and subpackages of the package.
21
	-->
22
	<category name="org.gvsig.scripting.impl.DefaultExampleManager">
23
		<priority value="DEBUG" />
24
	</category>
25

  
26
	<!-- 
27
	By default, show only logging messages of INFO level or higher, 
28
	through the previously configured CONSOLE appender. 
29
	-->
30
	<root>
31
		<priority value="INFO" />
32
		<appender-ref ref="CONSOLE" />
33
	</root>
34
</log4j:configuration>
org.gvsig.scripting/tags/org.gvsig.scripting-2.3.229/org.gvsig.scripting.lib/org.gvsig.scripting.lib.impl/src/test/java/README.txt
1
#set( $symbol_pound = '#' )
2
#set( $symbol_dollar = '$' )
3
#set( $symbol_escape = '\' )
4
For each class you are going to test, create one Test class with the same
5
name as the class to test, ending with Test.
6

  
7
For example, the unit tests of the "ExampleLibrary" class are performed
8
by the "ExampleLibraryTest" class.
org.gvsig.scripting/tags/org.gvsig.scripting-2.3.229/org.gvsig.scripting.lib/org.gvsig.scripting.lib.impl/src/main/javadoc/overview.html
1
<?xml version="1.0" encoding="UTF-8" ?>
2
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3
<html xmlns="http://www.w3.org/1999/xhtml">
4
<head>
5
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
6
<title>org.gvsig.scripting package documentation</title>
7
</head>
8
<body>
9

  
10
	<p>TODO: Example library overview.</p>
11
	
12
	<p>See the <a href="http://java.sun.com/j2se/1.4.2/docs/tooldocs/windows/javadoc.html#overviewcomment">Javadoc Tool documentation about the overview file</a></p>
13

  
14
</body>
15
</html>
org.gvsig.scripting/tags/org.gvsig.scripting-2.3.229/org.gvsig.scripting.lib/org.gvsig.scripting.lib.impl/src/main/resources/org/gvsig/scripting/apihelp/api.hs
1
<?xml version='1.0' encoding='ISO-8859-1' ?>
2
<!DOCTYPE helpset
3
  PUBLIC "-//Sun Microsystems Inc.//DTD JavaHelp HelpSet Version 1.0//EN"
4
 		  "http://java.sun.com/products/javahelp/helpset_1_0.dtd">
5

  
6
<?TestTarget this is data for the test target ?>
7

  
8
<helpset version="1.0">
9

  
10
  <!-- title -->
11
  <title>ScriptingFramework API</title>
12

  
13
  <!-- maps -->
14
  <maps>
15
     <homeID>main</homeID>
16
     <mapref location="api.jhm"/>
17
  </maps>
18

  
19
  <!-- views -->
20
  <view>
21
    <name>TOC</name>
22
    <label>TOC</label>
23
    <type>javax.help.TOCView</type>
24
    <data>toc.xml</data>
25
  </view>
26
  
27
  <view> <name>Index</name>
28
	 <label>Indice</label>
29
	 <type>javax.help.IndexView</type>
30
	 <data>index.xml</data>
31
	</view>
32
  
33
  <view>
34
	 <name>Search</name>
35
	 <label>Busqueda</label>
36
	 <type>javax.help.SearchView</type>
37
  </view>
38
  
39
  
40
  <view>
41
    <name>Favorites</name>
42
    <label>Favoritos</label>
43
    <type>javax.help.FavoritesView</type>
44
  </view>
45

  
46
  <presentation default="true" displayviewimages="false">
47
     <name>main window</name>
48
     <size width="700" height="400" />
49
     <location x="200" y="200" />
50
     <title>gvSIG - Ayuda en linea</title>
51
     <image>toplevelfolder</image>
52
     <toolbar>
53
       <helpaction image="action.back">javax.help.BackAction</helpaction>
54
       <helpaction image="action.forward">javax.help.ForwardAction</helpaction>
55
       <helpaction image="homeIcon">javax.help.HomeAction</helpaction>
56
       <helpaction image="reloadIcon">javax.help.ReloadAction</helpaction>
57
       <helpaction image="addBookmarkIcon">javax.help.FavoritesAction</helpaction>         
58
     </toolbar>
59
  </presentation>
60
</helpset>
org.gvsig.scripting/tags/org.gvsig.scripting-2.3.229/org.gvsig.scripting.lib/org.gvsig.scripting.lib.impl/src/main/resources/org/gvsig/scripting/apihelp/toc.xml
1
<!DOCTYPE toc
2
  PUBLIC "-//Sun Microsystems Inc.//DTD JavaHelp TOC Version 1.0//EN"
3
             "http://java.sun.com/products/javahelp/toc_1_0.dtd">
4

  
5
<toc version="1.0">
6

  
7
</toc>
org.gvsig.scripting/tags/org.gvsig.scripting-2.3.229/org.gvsig.scripting.lib/org.gvsig.scripting.lib.impl/src/main/resources/org/gvsig/scripting/apihelp/api.jhm
1
<?xml version='1.0' encoding='ISO-8859-1' ?>
2
<!DOCTYPE map
3
  PUBLIC "-//Sun Microsystems Inc.//DTD JavaHelp Map Version 1.0//EN"
4
         "http://java.sun.com/products/javahelp/map_1_0.dtd">
5

  
6
<map version="1.0">
7
</map>
org.gvsig.scripting/tags/org.gvsig.scripting-2.3.229/org.gvsig.scripting.lib/org.gvsig.scripting.lib.impl/src/main/resources/org/gvsig/scripting/apihelp/index.xml
1
<!DOCTYPE index
2
 PUBLIC "-//Sun Microsystems Inc.//DTD JavaHelp Index Version 1.0//EN"
3
      "http://java.sun.com/products/javahelp/index_1_0.dtd">
4
<index version="1.0">
5
</index>
org.gvsig.scripting/tags/org.gvsig.scripting-2.3.229/org.gvsig.scripting.lib/org.gvsig.scripting.lib.impl/src/main/resources/org/gvsig/scripting/langs/python/init.txt
1

  
2
__file__ = script.getResource(script.getId()+".py").getAbsolutePath()
org.gvsig.scripting/tags/org.gvsig.scripting-2.3.229/org.gvsig.scripting.lib/org.gvsig.scripting.lib.impl/src/main/resources/org/gvsig/scripting/langs/python/new_template.txt
1
# encoding: utf-8
2

  
3
import gvsig
4

  
5
def main(*args):
6

  
7
    #Remove this lines and add here your code
8

  
9
    print "hola mundo"
10
    pass
11

  
org.gvsig.scripting/tags/org.gvsig.scripting-2.3.229/org.gvsig.scripting.lib/org.gvsig.scripting.lib.impl/src/main/resources/org/gvsig/scripting/langs/r/new_template.txt
1

  
2
main <- function() {
3

  
4
    cat( "Hello\n" );
5

  
6
}
7

  
org.gvsig.scripting/tags/org.gvsig.scripting-2.3.229/org.gvsig.scripting.lib/org.gvsig.scripting.lib.impl/src/main/resources/org/gvsig/scripting/langs/scala/new_template.txt
1

  
2
import java.lang.Runnable
3

  
4
new Runnable() { 
5
  def run() { 
6
    println("Hello, World!") 
7
  }
8
}
org.gvsig.scripting/tags/org.gvsig.scripting-2.3.229/org.gvsig.scripting.lib/org.gvsig.scripting.lib.impl/src/main/resources/org/gvsig/scripting/langs/groovy/new_template.txt
1

  
2

  
3
def main() {
4

  
5
  printf "hola\n"
6

  
7
}
8

  
org.gvsig.scripting/tags/org.gvsig.scripting-2.3.229/org.gvsig.scripting.lib/org.gvsig.scripting.lib.impl/src/main/resources/org/gvsig/scripting/langs/ecmascript/new_template.txt
1

  
2

  
3

  
4
function main() {
5

  
6
  print("hola\n");
7
  
8
}
org.gvsig.scripting/tags/org.gvsig.scripting-2.3.229/org.gvsig.scripting.lib/org.gvsig.scripting.lib.impl/src/main/resources/thing/settings.xml
1
<?xml version="1.0" encoding="ISO-8859-1"?>
2
<!-- jEdit settings: :tabSize=4:indentSize=4:noTabs=true:folding=explicit:collapseFolds=1: -->
3

  
4
<panel border="true" bottom="12" columns="2" gap="20" left="12" right="12" top="12" weightx="1" weighty="1">
5
    <label icon="icons/thing.gif" rowspan="3" valign="top"/>
6
    <panel border="true" bottom="6" font="bold" gap="6" left="6" right="6" text="Icons" top="6">
7
        <label for="tIconpath" mnemonic="0" text="Icon Path:"/>
8
        <textfield name="tIconpath" weightx="1"/>
9
        <button action="chooseDir(tIconpath, tIconpath.text)" name="bChoose" text="..." tooltip="Choose directory"/>
10
    </panel>
11
    <panel border="true" bottom="6" columns="3" font="bold" gap="6" left="6" right="6" text="XML Output" top="6" weightx="1" weighty="1">
12
        <label for="rbIndentSpace" mnemonic="1" text="Indent Char:"/>
13
        <checkbox group="indentChar" halign="left" name="rbIndentSpace" selected="true" text="Space"/>
14
        <checkbox group="indentChar" halign="left" name="rbIndentTab" text="Tab"/>
15
        <label for="spIndentSize" mnemonic="7" text="Indent Size:"/>
16
        <spinbox colspan="2" end="1" halign="left" maximum="100" minimum="1" name="spIndentSize" start="1" text="4"/>
17
        <label for="tCustomHeader" mnemonic="7" text="Custom Header:" valign="top"/>
18
        <textarea colspan="3" height="80" name="tCustomHeader" weightx="1" weighty="1" width="300"/>
19
    </panel>
20
    <panel gap="6" halign="right" weightx="1">
21
        <button action="ok(tIconpath.text, spIndentSize.text, rbIndentSpace.selected, rbIndentTab.selected, tCustomHeader.text)" icon="icons/ok.gif" mnemonic="0" name="bOk" text="Ok" valign="bottom" weighty="1"/>
22
        <button action="close()" icon="icons/cancel.gif" mnemonic="0" name="bCancel" text="Cancel" type="cancel" valign="bottom" weighty="1"/>
23
    </panel>
24
</panel>
org.gvsig.scripting/tags/org.gvsig.scripting-2.3.229/org.gvsig.scripting.lib/org.gvsig.scripting.lib.impl/src/main/resources/thing/version.properties
1
# ThinG version number
2
version=0.1
3

  
org.gvsig.scripting/tags/org.gvsig.scripting-2.3.229/org.gvsig.scripting.lib/org.gvsig.scripting.lib.impl/src/main/resources/thing/generator.properties
1
# jEdit settings:
2
# :tabSize=4:indentSize=4:noTabs=false:folding=explicit:collapseFolds=1:
3
#
4
# Templates for the ThinG Generator.
5
#
6
# Important:
7
# When changing any of the templates, please keep in mind:
8
# - leading whitespace must be enclosed in quotes '...'
9
# - brackets '{' and '}' must be enclosed in quotes unless they denote a parameter
10
# - end-of-lines are always denoted with '\n'. The generator may change this
11
#   into the OS specific line separator such as '\r\n' on Windows or '\r' on Mac.
12

  
13

  
14
# 0: current date (java.util.Date instance)
15
file.header.firstline=\
16
	// Generated by ThinG on {0,date} {0,time}.\n\
17
	\n
18

  
19

  
20
# 0: "<package-spec>", e.g. "foo.bar.baz"
21
file.header.package=\
22
	package {0};\n\
23
	\n
24

  
25

  
26
# 0: additional import statement, e.g. "import thinlet.FrameLauncher;" or ""
27
# 1: JavaDoc comment
28
file.header=\
29
	import thinlet.Thinlet;\n\
30
	{0}\
31
	\n\
32
	\n\
33
	/**\n\
34
	' '* {1}\n\
35
	' '*/\n
36

  
37

  
38
file.footer=\
39
	'}'\n
40

  
41

  
42
# 0: "<classname>"
43
# 1: "[ extends Thinlet]"
44
# 2: "[ implements <interfacename>]"
45
handler.signature=\
46
	public class {0}{1}{2}\n\
47
	'{'\n
48

  
49

  
50
# 0: "<interfacename>"
51
interface.signature=\
52
	public interface {0}\n\
53
	'{'\n
54

  
55

  
56
# 0: "<classname>"
57
# 1: "<thinlet-filename>"
58
class.asThinlet.constructor=\
59
	\n\
60
	'    '/**\n\
61
	'     '* Create a new {0} instance.\n\
62
	'     '*/\n\
63
	'    'public {0}() throws java.io.IOException\n\
64
	'    {'\n\
65
	'        'add(parse("{1}"));\n\
66
	'    }'\n\
67
	\n
68

  
69

  
70
# 0: JavaDoc comment for the method.
71
method.javadoc.header=\
72
	\n\
73
	'    '/**\n\
74
	'     '* {0}\n
75

  
76

  
77
method.javadoc.param.intro=\
78
	'     '*\n
79

  
80

  
81
# 1: "<parameter-name>"
82
# 2: JavaDoc comment for the parameter
83
method.javadoc.param=\
84
	'     '* @param {0} {1}\n
85

  
86

  
87
method.javadoc.footer=\
88
	'     '*/\n
89

  
90

  
91
# 0: full method signature, e.g. "mymethod(String param1, int param2)"
92
method.body.interface=\
93
	'    'public void {0};\n\
94
	\n
95

  
96

  
97
# 0: full method signature, e.g. "mymethod(String param1, int param2)"
98
method.body.handler=\
99
	'    'public void {0}\n\
100
	'    {'\n\
101
	'    }'\n\
102
	\n
103

  
104

  
105
# 0: "<classname>"
106
main.asThinlet=\
107
	\n\
108
	'    '/**\n\
109
	'     '* Show a test frame with the Thinlet contents.\n\
110
	'     '*\n\
111
	'     '* @param args  ignored.\n\
112
	'     '*/\n\
113
	'    'public static void main(String[] args) throws java.io.IOException\n\
114
	'    {'\n\
115
	'        'new FrameLauncher("{0}", new {0}(), 400, 400);\n\
116
	'    }'\n\
117
	\n
118

  
119

  
120
# 0: "<classname>"
121
# 1: "<thinlet-filename>"
122
main.notAsThinlet=\
123
	\n\
124
	'    '/**\n\
125
	'     '* Show a test frame with the Thinlet contents.\n\
126
	'     '*\n\
127
	'     '* @param args  ignored.\n\
128
	'     '*/\n\
129
	'    'public static void main(String[] args) throws java.io.IOException\n\
130
	'    {'\n\
131
	'        'class MyThinlet extends Thinlet\n\
132
	'        {'\n\
133
	'            'public MyThinlet() throws java.io.IOException\n\
134
	'            {'\n\
135
	'                'add(parse("{1}", new {0}()));\n\
136
	'            }'\n\
137
	'        };'\n\
138
	'        'new FrameLauncher("{0}", new MyThinlet(), 400, 400);\n\
139
	'    }'\n\
140
	\n
141

  
142

  
org.gvsig.scripting/tags/org.gvsig.scripting-2.3.229/org.gvsig.scripting.lib/org.gvsig.scripting.lib.impl/src/main/resources/thing/componentchooser.xml
1
<?xml version="1.0" encoding="ISO-8859-1"?>
2
<!-- jEdit settings: :tabSize=4:indentSize=4:noTabs=true:folding=explicit:collapseFolds=1: -->
3

  
4
<panel bottom="12" columns="1" left="12" right="12" top="12" weightx="1" weighty="1">
5
    <list colspan="2" name="list" line="false" weightx="1" weighty="1" action="selectionChanged(this, lSelected)" perform="close()"/>
6
    <panel gap="6" top="12" weightx="1">
7
        <label text="Selected:"/>
8
        <label name="lSelected" text="null"/>
9
        <panel weightx="1"/>
10
        <button name="bOk" text="Ok" icon="icons/ok.gif" mnemonic="0" type="default" action="ok()"/>
11
        <button name="bCancel" text="Cancel" icon="icons/cancel.gif" mnemonic="0" type="cancel" action="close()"/>
12
    </panel>
13
</panel>
org.gvsig.scripting/tags/org.gvsig.scripting-2.3.229/org.gvsig.scripting.lib/org.gvsig.scripting.lib.impl/src/main/resources/thing/thing.xml
1
<?xml version="1.0" encoding="ISO-8859-1"?>
2
<!-- jEdit settings: :tabSize=4:indentSize=4:noTabs=false:folding=explicit:collapseFolds=1: -->
3

  
4
<panel columns="1" gap="4">
5

  
6
	<menubar weightx="1">
7
		<menu text="File" mnemonic="0">
8
			<menuitem text="New" mnemonic="0" icon="icons/empty_menu.gif" accelerator="ctrl N" action="menu_file_new()"/>
9
			<menuitem text="Open..." mnemonic="0" icon="icons/empty_menu.gif" accelerator="ctrl O" action="menu_file_open()"/>
10
			<separator/>
11
			<menuitem text="Reload" mnemonic="0" icon="icons/empty_menu.gif" accelerator="ctrl R" action="menu_file_reload()"/>
12
			<separator/>
13
			<menuitem text="Save" mnemonic="0" icon="icons/empty_menu.gif" accelerator="ctrl S" action="menu_file_save()"/>
14
			<menuitem text="Save As..." mnemonic="5" icon="icons/empty_menu.gif" action="menu_file_save_as()"/>
15
			<separator/>
16
			<menuitem text="Exit" mnemonic="0" icon="icons/empty_menu.gif" accelerator="alt F4" action="menu_file_exit()"/>
17
		</menu>
18
		<menu text="Edit" mnemonic="0">
19
			<menuitem text="Cut" name="menu_edit_cut" mnemonic="0" accelerator="ctrl X" icon="icons/edit_cut.gif" action="menu_edit_cut()"/>
20
			<menuitem text="Copy" name="menu_edit_copy" mnemonic="1" accelerator="ctrl C" icon="icons/edit_copy.gif" action="menu_edit_copy()"/>
21
			<menuitem text="Paste" name="menu_edit_paste" mnemonic="0" accelerator="ctrl V" icon="icons/edit_paste.gif" action="menu_edit_paste()"/>
22
			<menuitem text="Paste from system clipboard" name="menu_edit_paste_systemcb" mnemonic="1" accelerator="ctrl shift V" icon="icons/empty_menu.gif" action="menu_edit_paste_systemcb()"/>
23
			<menuitem text="Delete" name="menu_edit_delete" mnemonic="0" icon="icons/edit_delete.gif" action="menu_edit_delete()"/>
24
			<separator/>
25
			<menuitem text="Settings..." mnemonic="0" icon="icons/empty_menu.gif" action="menu_edit_settings()"/>
26
		</menu>
27
		<menu text="Tools" mnemonic="0">
28
			<menuitem text="Generate Handler Stub Source..." name="menu_tools_generate" mnemonic="0" accelerator="ctrl G" icon="icons/empty_menu.gif" action="menu_tools_generate()"/>
29
		</menu>
30
		<menu text="Help" mnemonic="0">
31
			<menuitem text="About Thing..." mnemonic="0" icon="icons/thing_small.gif" action="menu_help_about()"/>
32
		</menu>
33
	</menubar>
34

  
35
	<panel name="toolbar" weightx="1" gap="-1">
36

  
37
		<!-- top level components -->
38
		<button name="tb_add_panel" property="classname=panel" icon="icons/panel.gif" tooltip="Create new panel" action="addComponent(this)"/>
39
		<button name="tb_add_dialog" property="classname=dialog" icon="icons/dialog.gif" tooltip="Create new dialog" action="addComponent(this)"/>
40
		<button name="tb_add_desktop" property="classname=desktop" icon="icons/desktop.gif" tooltip="Create new desktop" action="addComponent(this)"/>
41
		<button name="tb_add_splitpane" property="classname=splitpane" icon="icons/splitpane.gif" tooltip="Create new splitpane" action="addComponent(this)"/>
42
		<button name="tb_add_tabbedpane" property="classname=tabbedpane" icon="icons/tabbedpane.gif" tooltip="Create new tabbedpane" action="addComponent(this)"/>
43

  
44
		<!-- menu components -->
45
		<button name="tb_add_menubar" property="classname=menubar" icon="icons/menubar.gif" tooltip="Create new menubar" action="addComponent(this)"/>
46
		<button name="tb_add_menu" property="classname=menu" icon="icons/menu.gif" tooltip="Create new menu" action="addComponent(this)"/>
47
		<button name="tb_add_menuitem" property="classname=menuitem" icon="icons/menuitem.gif" tooltip="Create new menuitem" action="addComponent(this)"/>
48
		<button name="tb_add_checkboxmenuitem" property="classname=checkboxmenuitem" icon="icons/checkboxmenuitem.gif" tooltip="Create new checkboxmenuitem" action="addComponent(this)"/>
49

  
50
		<!-- components -->
51
		<button name="tb_add_label" property="classname=label" icon="icons/label.gif" tooltip="Create new label" action="addComponent(this)"/>
52
		<button name="tb_add_button" property="classname=button" icon="icons/button.gif" tooltip="Create new button" action="addComponent(this)"/>
53
		<button name="tb_add_togglebutton" property="classname=togglebutton" icon="icons/togglebutton.gif" tooltip="Create new togglebutton" action="addComponent(this)"/>
54
		<button name="tb_add_checkbox" property="classname=checkbox" icon="icons/checkbox.gif" tooltip="Create new checkbox" action="addComponent(this)"/>
55
		<button name="tb_add_textfield" property="classname=textfield" icon="icons/textfield.gif" tooltip="Create new textfield" action="addComponent(this)"/>
56
		<button name="tb_add_combobox" property="classname=combobox" icon="icons/combobox.gif" tooltip="Create new combobox" action="addComponent(this)"/>
57
		<button name="tb_add_passwordfield" property="classname=passwordfield" icon="icons/passwordfield.gif" tooltip="Create new passwordfield" action="addComponent(this)"/>
58
		<button name="tb_add_spinbox" property="classname=spinbox" icon="icons/spinbox.gif" tooltip="Create new spinbox" action="addComponent(this)"/>
59
		<button name="tb_add_progressbar" property="classname=progressbar" icon="icons/progressbar.gif" tooltip="Create new progressbar" action="addComponent(this)"/>
60
		<button name="tb_add_slider" property="classname=slider" icon="icons/slider.gif" tooltip="Create new slider" action="addComponent(this)"/>
61
		<button name="tb_add_separator" property="classname=separator" icon="icons/separator.gif" tooltip="Create new separator" action="addComponent(this)"/>
62
		<button name="tb_add_list" property="classname=list" icon="icons/list.gif" tooltip="Create new list" action="addComponent(this)"/>
63
		<button name="tb_add_table" property="classname=table" icon="icons/table.gif" tooltip="Create new table" action="addComponent(this)"/>
64
		<button name="tb_add_textarea" property="classname=textarea" icon="icons/textarea.gif" tooltip="Create new textarea" action="addComponent(this)"/>
65
		<button name="tb_add_tree" property="classname=tree" icon="icons/tree.gif" tooltip="Create new tree" action="addComponent(this)"/>
66

  
67
		<!-- list items -->
68
		<button name="tb_add_choice" property="classname=choice" icon="icons/choice.gif" tooltip="Create new choice" action="addComponent(this)"/>
69
		<button name="tb_add_item" property="classname=item" icon="icons/item.gif" tooltip="Create new item" action="addComponent(this)"/>
70
		<button name="tb_add_node" property="classname=node" icon="icons/node.gif" tooltip="Create new node" action="addComponent(this)"/>
71
		<button name="tb_add_tab" property="classname=tab" icon="icons/tab.gif" tooltip="Create new tab" action="addComponent(this)"/>
72

  
73
		<!-- table components -->
74
		<button name="tb_add_row" property="classname=row" icon="icons/row.gif" tooltip="Create new row" action="addComponent(this)"/>
75
		<button name="tb_add_cell" property="classname=cell" icon="icons/cell.gif" tooltip="Create new cell" action="addComponent(this)"/>
76
		<button name="tb_add_header" property="classname=header" icon="icons/header.gif" tooltip="Create new header" action="addComponent(this)"/>
77
		<button name="tb_add_column" property="classname=column" icon="icons/column.gif" tooltip="Create new column" action="addComponent(this)"/>
78

  
79
		<!-- other -->
80
		<button name="tb_add_popupmenu" property="classname=popupmenu" icon="icons/popupmenu.gif" tooltip="Create new popupmenu" action="addComponent(this)"/>
81

  
82
		<!-- later -->
83
		<!--
84
		<button name="tb_add_bean" property="classname=bean" icon="icons/bean.gif" tooltip="Create new bean" action="addComponent(this)" enabled="false"/>
85
		-->
86

  
87
		<!-- placeholder in case there are no buttons add all -->
88
		<separator height="30" width="1"/>
89
	</panel>
90

  
91
	<!-- main workarea -->
92
	<panel left="4" right="4" weightx="1" weighty="1">
93
		<splitpane orientation="horizontal" divider="200" weightx="1" weighty="1">
94

  
95
			<!-- left splitpane: component tree and properties table -->
96
			<splitpane orientation="vertical">
97
				<panel columns="1" weightx="1" weighty="1">
98
					<tree name="tree" angle="true" line="false" selection="single" weightx="1" weighty="1" action="treeSelectionChanged()"/>
99
					<panel top="3" bottom="3" gap="2" scrollable="true">
100
						<button name="tb_edit_copy" icon="icons/edit_copy.gif" tooltip="Copy selected component to internal ThinG clipboard and system clipboard" action="menu_edit_copy()"/>
101
						<button name="tb_edit_cut" icon="icons/edit_cut.gif" tooltip="Cut selected component to internal ThinG clipboard and system clipboard" action="menu_edit_cut()"/>
102
						<button name="tb_edit_paste" icon="icons/edit_paste.gif" tooltip="Paste component from internal ThinG clipboard below selected component" action="menu_edit_paste()"/>
103
						<button name="tb_edit_delete" icon="icons/edit_delete.gif" tooltip="Remove selected component" action="menu_edit_delete()"/>
104
						<separator/>
105
						<button name="tb_edit_moveup" icon="icons/edit_moveup.gif" tooltip="Move selected component up" action="moveComponentUp()"/>
106
						<button name="tb_edit_movedown" icon="icons/edit_movedown.gif" tooltip="Move selected component down" action="moveComponentDown()"/>
107
					</panel>
108
				</panel>
109
				<panel columns="1" gap="5">
110
					<table name="props" selection="single" weightx="1" weighty="1" action="tableSelectionChanged()">
111
						<header>
112
							<column name="props_key" text="Property" width="80" sort="ascent"/>
113
							<column name="props_value" text="Value"/>
114
						</header>
115
					</table>
116
					<panel name="propedit" columns="3" gap="5" weightx="1" border="true" top="5" left="5" bottom="5" right="5">
117
						<label name="propedit_name" text=""/>
118
						<panel name="propedit_panel" gap="5" weightx="1"/>
119
						<button name="propedit_reset" text="Reset" tooltip="Reset to default value" font="10" valign="center" enabled="false" action="propEditReset()"/>
120
					</panel>
121
				</panel>
122
			</splitpane>
123

  
124
			<!-- right splitpane: preview panel -->
125
			<tabbedpane name="tabs" placement="top" selected="1" action="tabSelected(this.selected)">
126
				<!-- Attention: because of an obscure bug in Thinlet.getNextFocusable(), -->
127
				<!-- the tab "XML" must be the first one! If it is not the first panel, Thinlet -->
128
				<!-- runs into an endless loop when the user navigates from the "Preview" tab -->
129
				<!-- to the "XML" tab, trying to set the next focusable component. -->
130
				<tab text="XML" mnemonic="0">
131
					<panel weightx="1" weighty="1">
132
						<textarea name="serialize" editable="false" weightx="1" weighty="1"/>
133
					</panel>
134
				</tab>
135
				<tab text="Preview" mnemonic="0">
136
					<panel name="preview" border="true" scrollable="true" weightx="1" weighty="1"/>
137
				</tab>
138
			</tabbedpane>
139

  
140
		</splitpane>
141
	</panel>
142

  
143
	<!-- status bar at bottom -->
144
	<textfield name="statusbar" editable="false" text="ThinG" weightx="1"/>
145

  
146
</panel>
org.gvsig.scripting/tags/org.gvsig.scripting-2.3.229/org.gvsig.scripting.lib/org.gvsig.scripting.lib.impl/src/main/resources/thing/generate.xml
1
<?xml version="1.0" encoding="ISO-8859-1"?>
2
<!-- jEdit settings: :tabSize=4:indentSize=4:noTabs=true:folding=explicit:collapseFolds=1: -->
3

  
4
<panel columns="1"
5
    bottom="12" left="12" right="12" top="12" gap="12"
6
    init="init(cbGenerateInterface, cbGenerateHandler, cbGenerateAsThinlet, cbGenerateMain, tInterfaceName, tHandlerName, tPackageName, tOutputDir, tPreview, bOk)"
7
    weightx="1" weighty="1"
8
>
9
    <panel border="true" bottom="6" columns="3" font=" bold" gap="6" left="6" right="6" text="Generate" top="6" weightx="1">
10
        <checkbox action="checkboxChanged(this)" mnemonic="0" name="cbGenerateInterface" text="Interface for Handler class" weightx="1"/>
11
        <label for="tInterfaceName" mnemonic="1" text="Interface Name:"/>
12
        <textfield perform="textfieldChanged(this)" name="tInterfaceName" weightx="4"/>
13
        <checkbox action="checkboxChanged(this)" mnemonic="0" name="cbGenerateHandler" selected="true" text="Handler class" weightx="1"/>
14
        <label for="tHandlerName" mnemonic="1" text="Class Name:"/>
15
        <textfield perform="textfieldChanged(this)" name="tHandlerName" weightx="4"/>
16
        <panel/>
17
        <label for="tPackageName" mnemonic="0" text="Package Name:"/>
18
        <textfield perform="textfieldChanged(this)" name="tPackageName" weightx="4"/>
19
        <panel colspan="3" gap="6" weightx="1">
20
            <label for="tOutputDir" mnemonic="7" text="Output Directory:"/>
21
            <textfield name="tOutputDir" weightx="1"/>
22
            <button action="buttonOutputDirClicked()" text="..." tooltip="Select Output Directory"/>
23
        </panel>
24
    </panel>
25
    <panel border="true" bottom="6" columns="1" font=" bold" gap="6" left="6" right="6" text="Handler Options" top="6">
26
        <checkbox action="checkboxChanged(this)" mnemonic="13" name="cbGenerateAsThinlet" text="Handler is a Thinlet"/>
27
        <checkbox action="checkboxChanged(this)" mnemonic="9" name="cbGenerateMain" text="Generate main()"/>
28
    </panel>
29
    <panel border="true" bottom="6" font=" bold" gap="6" left="6" right="6" text="Preview" top="6" weightx="1" weighty="1">
30
        <textarea editable="false" font="Monospaced 11" name="tPreview" weightx="1" weighty="1"/>
31
    </panel>
32
    <panel gap="6" halign="right" weightx="1">
33
        <button action="ok()" icon="icons/ok.gif" mnemonic="0" name="bOk" text="Ok" valign="bottom" weighty="1"/>
34
        <button action="close()" icon="icons/cancel.gif" mnemonic="0" name="bCancel" text="Cancel" type="cancel" valign="bottom" weighty="1"/>
35
    </panel>
36
</panel>
org.gvsig.scripting/tags/org.gvsig.scripting-2.3.229/org.gvsig.scripting.lib/org.gvsig.scripting.lib.impl/src/main/resources/README.txt
1
Put into this folder the resources needed by your library classes.
2

  
3
This folder is added to the runtime classpath, so you can load any resources 
4
through the ClassLoader.
5

  
6
By default, into this folder you can find some examples of resource bundle 
7
property files that may be used by your library classes.
org.gvsig.scripting/tags/org.gvsig.scripting-2.3.229/org.gvsig.scripting.lib/org.gvsig.scripting.lib.impl/src/main/resources/META-INF/services/org.gvsig.tools.library.Library
1
org.gvsig.scripting.impl.ScriptingDefaultImplLibrary
org.gvsig.scripting/tags/org.gvsig.scripting-2.3.229/org.gvsig.scripting.lib/org.gvsig.scripting.lib.impl/src/main/java/org/gvsig/scripting/impl/ScriptingInstallerProviderFactory.java
1
/* gvSIG. Geographic Information System of the Valencian Government
2
 *
3
 * Copyright (C) 2007-2008 Infrastructures and Transports Department
4
 * of the Valencian Government (CIT)
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
 */
22

  
23
package org.gvsig.scripting.impl;
24

  
25
import org.gvsig.scripting.ScriptingManager;
26
import org.gvsig.tools.ToolsLocator;
27
import org.gvsig.tools.dynobject.DynClass;
28
import org.gvsig.tools.dynobject.DynObject;
29
import org.gvsig.tools.dynobject.DynObjectManager;
30
import org.gvsig.tools.service.spi.AbstractProviderFactory;
31
import org.gvsig.tools.service.spi.Provider;
32
import org.gvsig.tools.service.spi.ProviderServices;
33

  
34
public class ScriptingInstallerProviderFactory extends
35
    AbstractProviderFactory {
36

  
37
    private DynClass parametersDefinition = null;
38

  
39
    @Override
40
    protected DynClass createParametersDynClass() {
41
        if (parametersDefinition == null) {
42
            initialize();
43
        }
44
        return parametersDefinition;
45
    }
46

  
47
    @Override
48
    protected Provider doCreate(DynObject parameters, ProviderServices services) {
49
        return new ScriptingInstallerProvider(services);
50
    }
51

  
52
    @Override
53
    public void initialize() {
54
        if (parametersDefinition == null) {
55
            DynObjectManager dynObjectManager = ToolsLocator.getDynObjectManager();
56
            if( dynObjectManager.has(ScriptingManager.INSTALLER_PROVIDER_NAME) ) {
57
                parametersDefinition =  dynObjectManager.get(ScriptingManager.INSTALLER_PROVIDER_NAME);
58
            } else {
59
                parametersDefinition =  dynObjectManager.createDynClass(
60
                        ScriptingManager.INSTALLER_PROVIDER_NAME,
61
                	ScriptingManager.INSTALLER_PROVIDER_DESCRIPTION
62
                );
63
                dynObjectManager.add(parametersDefinition);
64
            }
65
        }
66
    }
67

  
68
}
org.gvsig.scripting/tags/org.gvsig.scripting-2.3.229/org.gvsig.scripting.lib/org.gvsig.scripting.lib.impl/src/main/java/org/gvsig/scripting/impl/BaseScriptingNotifycation.java
1
package org.gvsig.scripting.impl;
2

  
3
import org.gvsig.scripting.ScriptingNotification;
4
import org.gvsig.scripting.ScriptingUnit;
5

  
6
public class BaseScriptingNotifycation implements ScriptingNotification {
7

  
8
	public static final int RUNTIME_ERROR_NOTIFICATION = 1;
9
	public static final int COMPILE_ERROR_NOTIFICATION = 2;
10
	
11
	private ScriptingUnit unit;
12
	private int type;
13
	private String id;
14
	private Exception exception;
15

  
16
	public BaseScriptingNotifycation(ScriptingUnit unit, int type, String id, Exception ex) {
17
		this.unit = unit;
18
		this.type = type;
19
		this.id = id;
20
		this.exception = ex;
21
	}
22
	
23
	public Exception getException() {
24
		return this.exception;
25
	}
26

  
27
	public String getId() {
28
		return this.id;
29
	}
30

  
31
	public ScriptingUnit getUnit() {
32
		return this.unit;
33
	}
34

  
35
	public int getType() {
36
		return this.type;
37
	}
38

  
39
}
org.gvsig.scripting/tags/org.gvsig.scripting-2.3.229/org.gvsig.scripting.lib/org.gvsig.scripting.lib.impl/src/main/java/org/gvsig/scripting/impl/DefaultScriptingDialog.java
1
package org.gvsig.scripting.impl;
2

  
3
import java.awt.event.ActionEvent;
4
import java.awt.event.ActionListener;
5
import java.io.BufferedWriter;
6
import java.io.File;
7
import java.io.FileWriter;
8
import java.io.IOException;
9
import java.io.Writer;
10
import java.util.ArrayList;
11
import java.util.List;
12

  
13
import org.apache.commons.io.FileUtils;
14
import org.gvsig.scripting.ExecuteErrorException;
15
import org.gvsig.scripting.ScriptingDialog;
16
import org.gvsig.scripting.ScriptingFolder;
17
import org.gvsig.scripting.ScriptingManager;
18
import org.gvsig.scripting.swing.api.JThinlet;
19
import org.gvsig.scripting.swing.api.ScriptingSwingLocator;
20
import org.gvsig.scripting.swing.api.ScriptingUIManager;
21
import org.ini4j.Ini;
22
import org.slf4j.Logger;
23
import org.slf4j.LoggerFactory;
24

  
25
public class DefaultScriptingDialog extends DefaultScriptingScript implements ScriptingDialog, ActionListener {
26

  
27
    private static final Logger logger = LoggerFactory.getLogger(DefaultScriptingDialog.class);
28
    private int showMode;
29

  
30
    public DefaultScriptingDialog(ScriptingFolder parent, ScriptingManager manager, String id) {
31
        super(parent, ScriptingManager.UNIT_DIALOG, manager, id);
32
        this.setMainName("onload");
33
        this.showMode = MODE_WINDOW;
34
    }
35

  
36
    @Override
37
    public void runAsTask(Object[] args) {
38
        // Los dialogos no se ejecutan en otro hilo.
39
        this.run(args);
40
    }
41

  
42
    @Override
43
    public Object run(Object args[]) {
44
        ScriptingUIManager uimanager = ScriptingSwingLocator.getUIManager();
45

  
46
        JThinlet thinlet = uimanager.createJThinlet();
47
        thinlet.addActionListener(this);
48
        thinlet.load(this.getFileResource(".dlg"));
49

  
50
        this.put("dialog", thinlet.getThinlet());
51

  
52
        this.compile();
53
        try {
54
            this.invokeFunction(this.getMainName(), args);
55
        } catch (ExecuteErrorException ex) {
56
            Throwable e = ex.getCause();
57
            if (e instanceof NoSuchMethodException) {
58
                // When running from the composer messages of stdout shows in the console tab.
59
                System.out.println("Code of dialog do not has function '" + this.getMainName() + "'.");
60
            } else {
61
                throw ex;
62
            }
63
        }
64

  
65
        switch (this.getShowMode()) {
66
            case MODE_WINDOW:
67
                // When running from the composer messages of stdout shows in the console tab.
68
                System.out.println("Showing dialog as window " + this.getName() + ".");
69
                uimanager.showWindow(thinlet, this.getName());
70
                break;
71
            case MODE_TOOL:
72
                // When running from the composer messages of stdout shows in the console tab.
73
                System.out.println("Showing dialog as tool " + this.getName() + ".");
74
                uimanager.showTool(thinlet, this.getName());
75
                break;
76
            default:
77
                // When running from the composer messages of stdout shows in the console tab.
78
                System.out.println("Showing dialog as dialog " + this.getName() + ".");
79
                uimanager.showDialog(thinlet, this.getName());
80
                break;
81
        }
82
        return null;
83
    }
84

  
85
    @Override
86
    protected void loadInf(Ini prefs) {
87
        super.loadInf(prefs);
88
        this.showMode = Integer.parseInt(getInfValue(prefs, "Dialog", "showMode", MODE_WINDOW).toString());
89
    }
90

  
91
    @Override
92
    protected void save(Ini prefs) {
93
        super.save(prefs);
94
        prefs.put("Dialog", "showMode", this.showMode);
95
    }
96

  
97
    @Override
98
    public String[] getIconNames() {
99
        return new String[]{
100
            "scripting-icon-dialog",
101
            "scripting-icon-dialog"
102
        };
103
    }
104

  
105
    @Override
106
    public void actionPerformed(ActionEvent arg0) {
107
        try {
108
            this.invokeFunction(arg0.getActionCommand(), null);
109
        } catch (Throwable e) {
110
            // Ignore, invokeFunction handle error it self.
111
        }
112
    }
113

  
114
    @Override
115
    public File getDialogFile() {
116
        return this.getFileResource(".dlg");
117
    }
118

  
119
    @Override
120
    public List<File> getFiles() {
121
        List<File> l = new ArrayList<>();
122
        l.add(this.getResource(".dlg"));
123
        l.add(this.getResource(this.getExtension()));
124
        return l;
125
    }
126

  
127
    @Override
128
    public int getShowMode() {
129
        return this.showMode;
130
    }
131

  
132
    @Override
133
    public void setShowMode(int mode) {
134
        this.showMode = mode;
135
    }
136

  
137
    @Override
138
    public boolean remove() {
139
        boolean r = super.remove();
140
        File folder = this.getParent().getFile();
141
        File f = new File(folder, this.getId() + ".dlg");
142
        try {
143
            FileUtils.forceDelete(f);
144
        } catch (IOException e) {
145
            logger.warn("Can't remove dialog file '" + f.getAbsolutePath() + "'.", e);
146
            r = false;
147
        }
148
        return r;
149
    }
150

  
151
    @Override
152
    public void create(ScriptingFolder folder, String id, String language) {
153
        super.create(folder, id, language);
154

  
155
        File fileDlg = this.getResource(this.getId() + ".dlg");
156
        try {
157
            fileDlg.createNewFile();
158
        } catch (IOException e) {
159
            logger.warn("Can't create the dialog in '" + fileDlg.getAbsolutePath() + "'.", e);
160
        }
161

  
162
        // Escribimos en el fichero '.dlg' lo mi?nimo para que pueda ejecutarse
163
        Writer output;
164
        try {
165
            output = new BufferedWriter(new FileWriter(fileDlg));
166
            output.write("<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n<panel/>");
167
            output.close();
168
        } catch (IOException e) {
169
            logger.warn("Can't write xml code of the dialog to '" + fileDlg.getAbsolutePath() + "'.", e);
170
        }
171

  
172
        this.save();
173
    }
174

  
175
    @Override
176
    public String getMimeType() {
177
        return "text";
178
    }
179

  
180
    @Override
181
    public boolean move(ScriptingFolder target) {
182
        File dlgfile = this.getFileResource(".dlg");
183
        if( !super.move(target) ) {
184
            return false;
185
        }
186
        try {
187
            FileUtils.moveFileToDirectory(dlgfile, target.getFile(),true);
188
        } catch (IOException ex) {
189
            logger.info("Can't move script '"+this.getId()+"' to '"+target.getFile().getAbsolutePath()+"', "+ex.getMessage(),ex);
190
            return false;
191
        }        
192
        return true;
193
    }
194

  
195
    @Override
196
    public boolean rename(String newId) {
197
        File dlgfile = this.getFileResource(".dlg");
198
        if( !super.rename(newId) ) {
199
            return false;
200
        }
201
        try {
202
            ScriptingFolder target = this.getParent();
203
            FileUtils.moveFile(dlgfile, new File(target.getFile(),newId+".dlg"));
204
        } catch (IOException ex) {
205
            logger.info("Can't rename script '"+this.getId()+"' to '"+newId+"', "+ex.getMessage(),ex);
206
            return false;
207
        }        
208
        return true;
209
        
210
    }
211

  
212
    
213
    
214
}
org.gvsig.scripting/tags/org.gvsig.scripting-2.3.229/org.gvsig.scripting.lib/org.gvsig.scripting.lib.impl/src/main/java/org/gvsig/scripting/impl/AbstractScript.java
1
package org.gvsig.scripting.impl;
2

  
3
import org.apache.commons.lang3.BooleanUtils;
4
import org.apache.commons.lang3.StringUtils;
5
import org.gvsig.scripting.ScriptingBaseScript;
6
import org.gvsig.scripting.ScriptingFolder;
7
import org.gvsig.scripting.ScriptingManager;
8
import org.ini4j.Ini;
9

  
10
public abstract class AbstractScript extends AbstractUnit implements ScriptingBaseScript{
11
        protected boolean enabled;
12
        protected String isolationGroup;
13
        
14
        public AbstractScript(ScriptingFolder parent, String typename, ScriptingManager manager, String id) {
15
           super(parent, typename, manager, id);
16
           this.enabled = true;
17
           this.isolationGroup = null;
18
        }
19
            
20
        @Override
21
        public boolean isEnabled() {
22
            return this.enabled;
23
        }
24

  
25
        @Override
26
        public void setEnabled(boolean enabled) {
27
            firePropertyChangeListener("enabled", enabled, this.enabled);
28
            this.enabled = enabled;
29
        }
30

  
31
        
32
        @Override
33
        public String getIsolationGroup() {
34
            return this.isolationGroup;
35
        }
36

  
37
        @Override
38
        public void setIsolationGroup(String group) {
39
            firePropertyChangeListener("isolationGroup", group, this.isolationGroup);
40
            this.isolationGroup = group;
41
        }
42

  
43
        @Override
44
	protected void save(Ini prefs){
45
                prefs.put("Script", "enable", BooleanUtils.toStringTrueFalse(this.enabled));
46
                prefs.put("Script", "isolationGroup", this.isolationGroup);
47
		super.save(prefs);
48
	}
49

  
50
        @Override
51
	protected void loadInf(Ini prefs){
52
		super.loadInf(prefs);
53
                this.enabled = this.getInfBoolean(prefs,"Script","enable", true);
54
                this.isolationGroup = this.getInfString(prefs,"Script","isolationGroup", null);
55
                if( StringUtils.isEmpty(this.isolationGroup) ) {
56
                    this.isolationGroup = null;
57
                }
58
        }
59
	
60

  
61
        public void registerDataFolder(String id) {
62
            this.getManager().registerDataFolder(this.getParent(), id);
63
        }
64
       
65
}
org.gvsig.scripting/tags/org.gvsig.scripting-2.3.229/org.gvsig.scripting.lib/org.gvsig.scripting.lib.impl/src/main/java/org/gvsig/scripting/impl/MutableURLClassLoader.java
1

  
2
package org.gvsig.scripting.impl;
3

  
4
import java.io.File;
5
import java.io.IOException;
6
import java.io.InputStream;
7
import java.net.URL;
8
import java.net.URLClassLoader;
9
import java.util.ArrayList;
10
import java.util.Arrays;
11
import java.util.Enumeration;
12
import java.util.List;
13
import org.apache.commons.lang3.StringUtils;
14
import org.slf4j.Logger;
15
import org.slf4j.LoggerFactory;
16

  
17

  
18
public class MutableURLClassLoader extends URLClassLoader {
19
    protected static final Logger LOGGER = LoggerFactory.getLogger(MutableURLClassLoader.class);
20
    
21
    public MutableURLClassLoader(List<URL> urls, ClassLoader parent) {
22
        super(urls.toArray(new URL[urls.size()]),parent);
23
    }
24
    
25
    public void addUrls(List<URL> urls) {
26
        List<URL> currentsURLs = new ArrayList<>();
27
        currentsURLs.addAll(Arrays.asList(this.getURLs()));
28
        
29
        for (URL url : urls) {
30
            if( ! currentsURLs.contains(url) ) {
31
                this.addURL(url);
32
                currentsURLs.add(url);
33
            }
34
        }
35
    }
36

  
37
    public boolean needRecompile(String name, URL url) {
38
        if( url!=null && name.endsWith("$py.class") ) {
39
            if( StringUtils.equalsIgnoreCase(url.getProtocol(),"file") ) {
40
                String path = url.getPath();
41
                File binary = new File(path);
42
                File source = new File(StringUtils.left(path, path.length()-9)+".py");
43
                if( !binary.exists() || org.apache.commons.io.FileUtils.isFileNewer(source, binary) ) {
44
                    return true;
45
                }
46
            }
47
        }
48
        return false;
49
    }
50
    
51
    @Override
52
    public URL getResource(String name) {
53
        // Para acceder a esto desde python
54
        // import sys
55
        // print sys.getClassLoader().getResource("pylint/utils$py.class")
56

  
57
        URL x = super.getResource(name); 
58
        if( needRecompile(name, x) ) {
59
            LOGGER.trace("getResoure("+name+") -> null (need recompile).");
60
            return null;
61
        }
62
        LOGGER.trace("getResoure("+name+") -> "+x);
63
        return x;
64
    }
65

  
66
    @Override
67
    public InputStream getResourceAsStream(String name) {
68
        URL url = super.getResource(name); 
69
        if( needRecompile(name, url) ) {
70
            LOGGER.trace("getResourceAsStream("+name+") -> null (need recompile).");
71
            return null;
72
        }
73
        InputStream x = super.getResourceAsStream(name); 
74
        LOGGER.trace("getResourceAsStream("+name+") -> "+(x==null? "null":"(stream)"));
75
        return x;
76
    }
77

  
78
    @Override
79
    public Enumeration<URL> getResources(String name) throws IOException {
80
        Enumeration<URL> urls = super.getResources(name); 
81
        LOGGER.info("getResources("+name+") -> "+(urls==null? "null":urls));
82
        return urls;
83
    }
84
    
85
    public String getResourcePath(String name) {
86
        if( name.startsWith("__pyclasspath__/") ) {
87
            name = name.substring(16);
88
        }
89
        URL url = this.getResource(name);
90
        if( url == null ) {
91
            return name;
92
        }
93
        File f = org.apache.commons.io.FileUtils.toFile(url);
94
        return f.getAbsolutePath();
95
    }    
96
    
97
    public List<String> path(List<String>basepath) {
98
      List<String> path = new ArrayList<>();
99
      if( basepath!=null ) {
100
        for (String folder : basepath) {
101
          if( folder==null || folder.startsWith("__") || path.contains(folder) ) {
102
            continue;
103
          }
104
          path.add(folder);
105
        }
106
      }
107
      URL[] urls = this.getURLs();
108
      for (URL url : urls) {
109
        if( url==null || !StringUtils.equalsIgnoreCase(url.getProtocol(),"file") ) {
110
          continue;
111
        }
112
        String folder = url.getPath();
113
        if( folder==null || folder.isEmpty() || path.contains(folder) ) {
114
          continue;
115
        }
116
        path.add(folder);
117
      }
118
      return path;
119
    }
120
}
org.gvsig.scripting/tags/org.gvsig.scripting-2.3.229/org.gvsig.scripting.lib/org.gvsig.scripting.lib.impl/src/main/java/org/gvsig/scripting/impl/ScriptingInstallerProvider.java
1
/* gvSIG. Geographic Information System of the Valencian Government
2
 *
... This diff was truncated because it exceeds the maximum size that can be displayed.

Also available in: Unified diff