Revision 771

View differences:

org.gvsig.scripting/tags/org.gvsig.scripting-2.3.29/org.gvsig.scripting.thing/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.29/org.gvsig.scripting.thing/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.29/org.gvsig.scripting.thing/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.29/org.gvsig.scripting.thing/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.29/org.gvsig.scripting.thing/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.29/org.gvsig.scripting.thing/src/main/resources/thing/icons/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.29/org.gvsig.scripting.thing/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.29/org.gvsig.scripting.thing/src/main/resources/thing/version.properties
1
# ThinG version number
2
version=0.1
3

  
org.gvsig.scripting/tags/org.gvsig.scripting-2.3.29/org.gvsig.scripting.thing/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.29/org.gvsig.scripting.thing/src/main/java/utils/AWTUtils.java
1
// jEdit settings:
2
// :tabSize=4:indentSize=4:noTabs=true:folding=explicit:collapseFolds=1:
3

  
4
package utils;
5

  
6

  
7
import java.awt.AWTKeyStroke;
8
import java.awt.Color;
9
import java.awt.Component;
10
import java.awt.Dimension;
11
import java.awt.Font;
12
import java.awt.Frame;
13
import java.awt.Graphics2D;
14
import java.awt.Image;
15
import java.awt.MediaTracker;
16
import java.awt.event.InputEvent;
17
import java.awt.event.KeyEvent;
18
import java.awt.font.FontRenderContext;
19
import java.awt.font.TextLayout;
20
import java.awt.geom.Rectangle2D;
21
import java.lang.reflect.Field;
22
import java.lang.reflect.Modifier;
23
import java.net.URL;
24
import java.util.HashMap;
25
import java.util.StringTokenizer;
26
import java.util.logging.Level;
27
import java.util.logging.Logger;
28

  
29

  
30
/**
31
 * Misc helper methods for AWT that don't require Thinlet.
32
 *
33
 * @author Dirk Moebius
34
 */
35
public class AWTUtils
36
{
37

  
38
    //{{{ logging
39
    private static final Logger log = Logger.getLogger("thinletcommons");
40
    private static final boolean debug() { return log.isLoggable(Level.FINE); }
41
    //}}}
42

  
43

  
44
    private static HashMap keyDescriptions = new HashMap();
45

  
46

  
47
    static
48
    {
49
        // initialize HashMap keyDescriptions
50
        Field[] fields = KeyEvent.class.getDeclaredFields();
51
        for(int i = 0; i < fields.length; ++i)
52
        {
53
            Field field = fields[i];
54
            int modifiers = field.getModifiers();
55
            if(((modifiers & (Modifier.STATIC | Modifier.PUBLIC)) != 0)
56
                && field.getName().startsWith("VK_"))
57
            {
58
                try
59
                {
60
                    int keyCode = field.getInt(null);
61
                    String keyDescription = field.getName().substring(3);
62
                    keyDescriptions.put(new Integer(keyCode), keyDescription);
63
                }
64
                catch(IllegalAccessException e)
65
                {
66
                    log.log(Level.SEVERE, "can't get value of field " + field, e);
67
                }
68
            }
69
        }
70
    }
71

  
72

  
73
    public static String getColorString(Color c)
74
    {
75
        int red = c.getRed();
76
        int green = c.getGreen();
77
        int blue = c.getBlue();
78
        StringBuffer s = new StringBuffer("#");
79
        if(red < 10) s.append("0");
80
        s.append(Integer.toHexString(red));
81
        if(green < 10) s.append("0");
82
        s.append(Integer.toHexString(green));
83
        if(blue < 10) s.append("0");
84
        s.append(Integer.toHexString(blue));
85
        return s.toString();
86
    }
87

  
88

  
89
    /**
90
     * Returns a thinlet font description for the given font.
91
     *
92
     * @param font  the font
93
     * @return a thinlet font description such as "Serif 10 bold italic"
94
     */
95
    public static String getFontString(Font font)
96
    {
97
        StringBuffer s = new StringBuffer();
98
        s.append(font.getFamily());
99
        s.append(" ");
100
        s.append(font.getSize());
101
        if(font.isItalic())
102
            s.append(" italic");
103
        if(font.isBold())
104
            s.append(" bold");
105
        return s.toString();
106
    }
107

  
108

  
109
    /**
110
     * Returns a thinlet font description for the given font, containing only
111
     * the font properties that <i>differ</i> from the given default font.
112
     *
113
     * @param font  the font
114
     * @param defaultFont  the default font
115
     * @return a thinlet font description such as "serif 10 bold italic"
116
     */
117
    public static String getFontString(Font font, Font defaultFont)
118
    {
119
        StringBuffer s = new StringBuffer();
120
        if(!font.getFamily().equals(defaultFont.getFamily()))
121
            s.append(font.getFamily());
122
        if(font.getSize() != defaultFont.getSize())
123
        {
124
            if(s.length() > 0) s.append(' ');
125
            s.append(font.getSize());
126
        }
127
        if(font.isItalic() != defaultFont.isItalic())
128
        {
129
            if(s.length() > 0) s.append(' ');
130
            s.append("italic");
131
        }
132
        if(font.isBold() != defaultFont.isBold())
133
        {
134
            if(s.length() > 0) s.append(' ');
135
            s.append("bold");
136
        }
137
        return s.toString();
138
    }
139

  
140

  
141
    /**
142
     * Get the frame that the specified component resides in, or null if
143
     * the component has no ancestor of type <code>Frame</code>.
144
     */
145
    public static Frame getFrame(Component comp)
146
    {
147
        while(comp != null && !(Frame.class.isInstance(comp)))
148
            comp = comp.getParent();
149
        return (Frame)comp;
150
    }
151

  
152

  
153
    /**
154
     * Returns the dimension of the specified text string, if it would be
155
     * rendered with the font and the rendering context of the specified
156
     * component.
157
     */
158
    public static Dimension getBounds(String text, Component component)
159
    {
160
        Graphics2D graphics = (Graphics2D)component.getGraphics();
161
        StringTokenizer st = new StringTokenizer(text, "\n", true);
162
        Dimension dim = new Dimension(0, 0);
163
        while(st.hasMoreTokens())
164
        {
165
            String token = st.nextToken();
166
            if(token.equals("\n"))
167
                token = "W";
168
            TextLayout textLayout = new TextLayout(token, component.getFont(),
169
                (graphics != null) ? graphics.getFontRenderContext()
170
                    : new FontRenderContext(null, true, false));
171
            Rectangle2D rect = textLayout.getBounds();
172
            dim.height += (int)rect.getHeight();
173
            dim.width = Math.max(dim.width, (int)rect.getWidth());
174
        }
175
        return dim;
176
    }
177

  
178

  
179
    /**
180
     * Load an icon. Use a MediaTracker synchronizing on the specified
181
     * component to wait for the icon to load.
182
     *
183
     * @param component  the component that the MediaTracker uses to control
184
     *   the loading of the icon.
185
     * @param path  the path relative to the package path of the class of
186
     *   the component, e.g. "icons/icon.gif".
187
     */
188
    public static Image getIcon(Component component, String path)
189
    {
190
        URL url = component.getClass().getResource(path);
191
        return getIcon(component, url);
192
    }
193

  
194

  
195
    /**
196
     * Load an icon. Use a MediaTracker synchronizing on the specified
197
     * component to wait for the icon to load.
198
     *
199
     * @param component  the component that the MediaTracker uses to control
200
     *   the loading of the icon.
201
     * @param url  the URL of the icon.
202
     */
203
    public static Image getIcon(Component component, URL url)
204
    {
205
        if(debug()) log.fine("loading icon url=" + url + "...");
206

  
207
        Image icon = component.getToolkit().getImage(url);
208

  
209
        MediaTracker mediatracker = new MediaTracker(component);
210
        mediatracker.addImage(icon, 1);
211
        try
212
        {
213
            mediatracker.waitForID(1);
214
        }
215
        catch(InterruptedException e)
216
        {
217
            log.warning("loading of icon " + url + " has been interrupted!");
218
        }
219

  
220
        return icon;
221
    }
222

  
223

  
224
    /**
225
     * Given an AWTKeyStroke, returns a keystroke description that can be
226
     * parsed by <code>AWTKeyStroke.getAWTKeyStroke(String s)</code>.
227
     * <p>
228
     * Examples: "ctrl O", "alt shift F4", "altGraph Q"
229
     */
230
    public static String getAWTKeyStrokeDescription(AWTKeyStroke k)
231
    {
232
        StringBuffer buf = new StringBuffer();
233

  
234
        int mod = k.getModifiers();
235
        if((mod & InputEvent.ALT_DOWN_MASK) != 0 || (mod & InputEvent.ALT_MASK) != 0)
236
            buf.append("alt ");
237
        if((mod & InputEvent.ALT_GRAPH_DOWN_MASK) != 0 || (mod & InputEvent.ALT_GRAPH_MASK) != 0)
238
            buf.append("altGraph ");
239
        if((mod & InputEvent.META_DOWN_MASK) != 0 || (mod & InputEvent.META_MASK) != 0)
240
            buf.append("meta ");
241
        if((mod & InputEvent.CTRL_DOWN_MASK) != 0 || (mod & InputEvent.CTRL_MASK) != 0)
242
            buf.append("ctrl ");
243
        if((mod & InputEvent.SHIFT_DOWN_MASK) != 0 || (mod & InputEvent.SHIFT_MASK) != 0)
244
            buf.append("shift ");
245

  
246
        buf.append(getKeyText(k.getKeyCode()));
247

  
248
        return buf.toString();
249
    }
250

  
251

  
252
    /**
253
     * Return the key description for a key code, according to the key names
254
     * in <code>java.awt.event.KeyEvent</code>, omitting the prefix "VK_".
255
     * For example the strings returned may be "A" - "Z", "F1" - "F24" "RIGHT",
256
     * "BACK_SPACE", "DEAD_TILDE" and so on.
257
     */
258
    public static String getKeyText(int keyCode)
259
    {
260
        String desc = (String) keyDescriptions.get(new Integer(keyCode));
261
        if(desc == null)
262
        {
263
            log.warning("KeyEvent field for keyCode " + keyCode + " not found!"
264
                + " Returning default description.");
265
            return KeyEvent.getKeyText(keyCode);
266
        }
267
        else
268
            return desc;
269
    }
270

  
271
}
272

  
org.gvsig.scripting/tags/org.gvsig.scripting-2.3.29/org.gvsig.scripting.thing/src/main/java/utils/ReaderInputStream.java
1
// jEdit settings:
2
// :tabSize=4:indentSize=4:noTabs=true:folding=explicit:collapseFolds=1:
3

  
4
package utils;
5

  
6

  
7
import java.io.IOException;
8
import java.io.InputStream;
9
import java.io.Reader;
10

  
11

  
12
/**
13
 * This class is the opposite of <code>java.io.InputStreamReader</code>: it
14
 * provides a bridge from (new) character streams (<i>Reader</i>) to (old)
15
 * byte streams (<i>InputStream</i>). It reads characters and converts them
16
 * into bytes.
17
 *
18
 * @author Dirk Moebius
19
 */
20
public class ReaderInputStream extends InputStream
21
{
22

  
23
    protected Reader reader;
24

  
25

  
26
    public ReaderInputStream(Reader reader)
27
    {
28
        this.reader = reader;
29
    }
30

  
31

  
32
    public int available() throws IOException
33
    {
34
        return reader.ready() ? 1 : 0;
35
    }
36

  
37

  
38
    public void close() throws IOException
39
    {
40
        reader.close();
41
    }
42

  
43

  
44
    public void mark(int readAheadLimit)
45
    {
46
        try { reader.mark(readAheadLimit); } catch(IOException ignore) {}
47
    }
48

  
49

  
50
    public boolean markSupported()
51
    {
52
        return reader.markSupported();
53
    }
54

  
55

  
56
    public int read() throws IOException
57
    {
58
        return reader.read();
59
    }
60

  
61

  
62
    public void reset() throws IOException
63
    {
64
        reader.reset();
65
    }
66

  
67

  
68
    public long skip(long n) throws IOException
69
    {
70
        return reader.skip(n);
71
    }
72

  
73
}
74

  
org.gvsig.scripting/tags/org.gvsig.scripting-2.3.29/org.gvsig.scripting.thing/src/main/java/utils/package.html
1
<body>
2
<p>
3
This package contains some common utilities not dependent on Thinlet.
4
</p>
5
</body>
6

  
org.gvsig.scripting/tags/org.gvsig.scripting-2.3.29/org.gvsig.scripting.thing/src/main/java/thinletcommons/fontchooser.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="3" gap="10" left="12" right="12" top="12" weightx="1" weighty="1" init="init(fontlist)">
5
    <label colspan="3" for="fontlist" text="Font:" mnemonic="0" valign="bottom"/>
6
    <list action="fontChanged(this, fontsize, cb_bold, cb_italic, preview, b_ok)" line="false" name="fontlist" rowspan="3" weightx="4" weighty="4"/>
7
    <label for="fontsize" text="Size:" mnemonic="0" />
8
    <spinbox action="fontChanged(fontlist, this, cb_bold, cb_italic, preview, b_ok)" maximum="200" minimum="0" name="fontsize" perform="fontChanged(fontlist, this, cb_bold, cb_italic, preview, b_ok)" text="12" weightx="0"/>
9
    <panel/>
10
    <checkbox action="fontChanged(fontlist, fontsize, this, cb_italic, preview, b_ok)" mnemonic="0" name="cb_bold" text="Bold"/>
11
    <panel/>
12
    <checkbox action="fontChanged(fontlist, fontsize, cb_bold, this, preview, b_ok)" mnemonic="0" name="cb_italic" text="Italic" valign="top"/>
13
    <panel border="true" bottom="5" colspan="3" left="3" right="3" text="Preview" top="5" weightx="1" weighty="1">
14
        <textarea border="false" editable="false" end="35" height="30" name="preview" start="35" text="The quick brown fox jumps over the lazy dog." weightx="1" weighty="1" width="100" wrap="true"/>
15
    </panel>
16
    <panel colspan="3" gap="10" halign="right" weightx="1">
17
        <button action="ok(fontlist, fontsize, cb_bold, cb_italic)" icon="/thinletcommons/icons/ok.gif" enabled="false" mnemonic="0" name="b_ok" text="Ok" type="default"/>
18
        <button action="close()" icon="/thinletcommons/icons/cancel.gif" mnemonic="0" name="b_cancel" text="Cancel" type="cancel"/>
19
    </panel>
20
</panel>
21

  
org.gvsig.scripting/tags/org.gvsig.scripting-2.3.29/org.gvsig.scripting.thing/src/main/java/thinletcommons/package.html
1
<body>
2
<p>
3
This package contains some common gui widgets such as a directory chooser,
4
a font chooser, a generic message dialog box etc.
5
</p>
6

  
7
<p>
8
All widgets are Thinlet widgets.
9
</p>
10

  
11
<p>
12
Note that the <code>thinletcommons</code> package does not depend on the
13
<code>thing</code> package, so these widgets could be used in other
14
applications.
15
</p>
16
</body>
17

  
org.gvsig.scripting/tags/org.gvsig.scripting-2.3.29/org.gvsig.scripting.thing/src/main/java/thinletcommons/LoggingThinlet.java
1
// jEdit settings:
2
// :tabSize=4:indentSize=4:noTabs=true:folding=explicit:collapseFolds=1:
3

  
4
package thinletcommons;
5

  
6

  
7
import java.util.logging.Level;
8
import java.util.logging.Logger;
9

  
10
import thinlet.Thinlet;
11

  
12

  
13
/**
14
 * A <code>Thinlet</code> component that logs exceptions to the JDK logging
15
 * facility.
16
 *
17
 * @author Dirk Moebius
18
 */
19
public class LoggingThinlet extends Thinlet
20
{
21

  
22
    //{{{ logging
23
    private static final Logger log = Logger.getLogger("thinletcommons");
24
    private static final boolean debug() { return log.isLoggable(Level.FINE); }
25
    //}}}
26

  
27

  
28
    public LoggingThinlet()
29
    {
30
        super();
31
    }
32

  
33

  
34
    /**
35
     * Log exceptions to a logger named "thinletcommons" with log level SEVERE.
36
     *
37
     * @param throwable the thrown exception by the bussiness logic
38
     */
39
    protected void handleException(Throwable throwable)
40
    {
41
        log.log(Level.SEVERE, "Exception in business logic", throwable);
42
        //throw new RuntimeException("Exception in business logic", throwable);
43
    }
44

  
45

  
46
}
47

  
org.gvsig.scripting/tags/org.gvsig.scripting-2.3.29/org.gvsig.scripting.thing/src/main/java/thinletcommons/colorchooser.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="3" top="10" left="10" right="10" bottom="10" gap="4" init="init(sl_red, sl_green, sl_blue, sb_red, sb_green, sb_blue, tf_hue, tf_saturation, tf_brightness, pb_hue, pb_saturation, pb_brightness, rgb_label)">
5
	<label text="Red, green, and blue values" colspan="3" />
6

  
7
	<label text="Red:" alignment="right" for="sb_red" mnemonic="0" />
8
	<slider name="sl_red" minimum="0" maximum="255" valign="center" action="sliderChanged(this.value, sb_red)" />
9
	<spinbox name="sb_red" minimum="0" maximum="255" text="0" columns="3" action="spinboxChanged(this.text, sl_red)" />
10

  
11
	<label text="Green:" alignment="right" for="sb_green" mnemonic="0" />
12
	<slider name="sl_green" minimum="0" maximum="255" valign="center" action="sliderChanged(this.value, sb_green)" />
13
	<spinbox name="sb_green" minimum="0" maximum="255" text="0" columns="3" action="spinboxChanged(this.text, sl_green)" />
14

  
15
	<label text="Blue:" alignment="right" for="sb_blue" mnemonic="0" />
16
	<slider name="sl_blue" minimum="0" maximum="255" valign="center" action="sliderChanged(this.value, sb_blue)" />
17
	<spinbox name="sb_blue" minimum="0" maximum="255" text="0" columns="3" action="spinboxChanged(this.text, sl_blue)" />
18

  
19
	<separator colspan="3" />
20

  
21
	<label text="Hue, saturation, and brightness values" colspan="3" />
22

  
23
	<label text="Hue:" alignment="right" />
24
	<textfield name="tf_hue" text="0.0" editable="false" />
25
	<progressbar name="pb_hue" valign="center" />
26

  
27
	<label text="Saturation:" alignment="right" />
28
	<textfield name="tf_saturation" text="0.0" editable="false" />
29
	<progressbar name="pb_saturation" valign="center" />
30

  
31
	<label text="Brightness:" alignment="right" />
32
	<textfield name="tf_brightness" text="0.0" editable="false" />
33
	<progressbar name="pb_brightness" valign="center" />
34

  
35
	<separator colspan="3"/>
36

  
37
	<label colspan="3" name="rgb_label" valign="fill" weighty="1" background="#000000" text="ThinG!" font="40 bold italic" alignment="center"/>
38

  
39
    <panel colspan="3" gap="10" halign="right" top="12" weightx="1">
40
        <button action="ok()" icon="/thinletcommons/icons/ok.gif" mnemonic="0" name="b_ok" text="Ok" type="default"/>
41
        <button action="close()" icon="/thinletcommons/icons/cancel.gif" mnemonic="0" name="b_cancel" text="Cancel" type="cancel"/>
42
    </panel>
43

  
... This diff was truncated because it exceeds the maximum size that can be displayed.

Also available in: Unified diff