<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://ojwiki.soldin.de/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Bgudehus</id>
	<title>OpenJUMP Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://ojwiki.soldin.de/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Bgudehus"/>
	<link rel="alternate" type="text/html" href="https://ojwiki.soldin.de/index.php?title=Special:Contributions/Bgudehus"/>
	<updated>2026-11-01T04:10:35Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.35.5</generator>
	<entry>
		<id>https://ojwiki.soldin.de/index.php?title=Main_Page&amp;diff=1335</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://ojwiki.soldin.de/index.php?title=Main_Page&amp;diff=1335"/>
		<updated>2012-01-05T04:04:01Z</updated>

		<summary type="html">&lt;p&gt;Bgudehus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Note, the OpenJUMP wiki is from users for users and needs updates and improvements. Help for adding information but also to accomplish other things from documentation to programming is welcome (see [[Contact us]]).&lt;br /&gt;
&lt;br /&gt;
== OpenJUMP GIS - The free, cross-platform and open source GIS for the World ==&lt;br /&gt;
[[image:114231354_7b5aa910b2.jpg|thumb|right|300px|OpenJUMP Screenshot]]&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;1&amp;quot; style=&amp;quot;margin: 1em auto 1em auto&amp;quot;;&lt;br /&gt;
|align=&amp;quot;left&amp;quot; |&amp;#039;&amp;#039;&amp;#039;About OpenJUMP&amp;#039;&amp;#039;&amp;#039; ||  style=&amp;quot;width:50px&amp;quot; | || &amp;#039;&amp;#039;&amp;#039;Get OpenJUMP&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;bull; [[What is OpenJUMP]]? (+)  || || &amp;amp;bull; [[Downloading OpenJUMP]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;bull; [[Who uses OpenJUMP]]?     || || &amp;amp;bull; [[Installation]]&lt;br /&gt;
|-&lt;br /&gt;
|- style=&amp;quot;height:7px&amp;quot;&lt;br /&gt;
|          || ||&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;left&amp;quot; |&amp;#039;&amp;#039;&amp;#039;Use OpenJUMP&amp;#039;&amp;#039;&amp;#039; || || &amp;#039;&amp;#039;&amp;#039;Develop OpenJUMP&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;bull; [[Starting OpenJUMP]] for the first timers      || || &amp;amp;bull; [[Developing with OpenJUMP]] (o)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;bull; [[Using OpenJUMP]] (+)    || || &amp;amp;bull; [[Contributors to OpenJUMP]] &lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;bull; [[Index|Online User Manual]]      || ||&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;bull; [[Plugins for OpenJUMP]] || ||&lt;br /&gt;
|- style=&amp;quot;height:7px&amp;quot; &lt;br /&gt;
|           || ||&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;left&amp;quot;  |&amp;#039;&amp;#039;&amp;#039;Other&amp;#039;&amp;#039;&amp;#039; || ||&lt;br /&gt;
|- &lt;br /&gt;
| &amp;amp;bull; [[Contact us]] || ||&lt;br /&gt;
|- &lt;br /&gt;
| &amp;amp;bull; [[Related Websites and Blogs]] || ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
ToDo&amp;#039;s: (o) cleanup, (+) write new/improve pages&lt;br /&gt;
&lt;br /&gt;
== News ==&lt;br /&gt;
* [27 Nov 2011] - We are trying to get a [[Doc_Sprint]] organized for the first part of 2012.&lt;br /&gt;
* [26 Nov 2011] - New version of DB Query plugin 0.8 ([http://jumpdbqplugin.sourceforge.net/ more details])&lt;br /&gt;
* [11 Sept 2011] - New Release 1.4.2 is available ([http://sourceforge.net/projects/jump-pilot/files/OpenJUMP/1.4.2/ download])!&lt;br /&gt;
* [29 June 2011] - new Geometry Converter Extension version 0.3rc4 [http://sourceforge.net/projects/jump-pilot/files/p_GPS%2CCTS%20Extensions/geomconv_0.3rc4.zip available]&lt;br /&gt;
* [28 June 2011] - internationalized [[CTS Plugin|CTS extension (Coordinate transformation services)]] version 0.2 stable released&lt;br /&gt;
* [21 Aug 2010] - updated [[CTS Plugin|Coordinate transformation plugin (CTS extension)]] and revamped [[GPS Plugin|Live GPS support for serial devices (GPS extension)]] for OpenJUMP by [http://soldin.de Edgar Soldin] available at The Jump Pilot Project [http://sourceforge.net/projects/jump-pilot/files/ download page].&lt;br /&gt;
* [07 Feb. 2010] - new [http://sourceforge.net/projects/jump-pilot/files/p_database_plugins/p_SpatialLite_reader_plugin/SpatialitePlugin.zip/download SpatialLite plugin] for OpenJUMP that allows to read SpatialLite layers. Note the new Version of the &amp;#039;&amp;#039;DB Query Plugin&amp;#039;&amp;#039; can read SpatialLite too. Jukka made a tutorial for this - see [[OpenJUMP with SpatialLite]].&lt;br /&gt;
* [[Older News]]&lt;br /&gt;
&lt;br /&gt;
== Editing this Wiki ==&lt;br /&gt;
* you can edit this wiki: simply &amp;#039;&amp;#039;jumpin&amp;#039;&amp;#039; (pw) as &amp;#039;&amp;#039;ojuser&amp;#039;&amp;#039; (user)&lt;br /&gt;
* you can also create a new account - and then write an email to Stefan sstein[=at=] geo.uzh.ch so that he can assign you editing rights&lt;br /&gt;
* Consult the [http://meta.wikimedia.org/wiki/Help:Contents User&amp;#039;s Guide] for information on using the wiki software. See also [http://www.mediawiki.org/wiki/Manual:Configuration_settings Configuration settings list]&lt;br /&gt;
* here is a list of [[Special:RecentChanges|recent changes]].&lt;/div&gt;</summary>
		<author><name>Bgudehus</name></author>
	</entry>
	<entry>
		<id>https://ojwiki.soldin.de/index.php?title=Main_Page&amp;diff=1334</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://ojwiki.soldin.de/index.php?title=Main_Page&amp;diff=1334"/>
		<updated>2012-01-05T03:59:40Z</updated>

		<summary type="html">&lt;p&gt;Bgudehus: Added link to the list of recent changes.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Note, the OpenJUMP wiki is from users for users and needs updates and improvements. Help for adding information but also to accomplish other things from documentation to programming is welcome (see [[Contact us]]). List of [[Special:RecentChanges|recent changes]].&lt;br /&gt;
&lt;br /&gt;
== OpenJUMP GIS - The free, cross-platform and open source GIS for the World ==&lt;br /&gt;
[[image:114231354_7b5aa910b2.jpg|thumb|right|300px|OpenJUMP Screenshot]]&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;1&amp;quot; style=&amp;quot;margin: 1em auto 1em auto&amp;quot;;&lt;br /&gt;
|align=&amp;quot;left&amp;quot; |&amp;#039;&amp;#039;&amp;#039;About OpenJUMP&amp;#039;&amp;#039;&amp;#039; ||  style=&amp;quot;width:50px&amp;quot; | || &amp;#039;&amp;#039;&amp;#039;Get OpenJUMP&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;bull; [[What is OpenJUMP]]? (+)  || || &amp;amp;bull; [[Downloading OpenJUMP]]&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;bull; [[Who uses OpenJUMP]]?     || || &amp;amp;bull; [[Installation]]&lt;br /&gt;
|-&lt;br /&gt;
|- style=&amp;quot;height:7px&amp;quot;&lt;br /&gt;
|          || ||&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;left&amp;quot; |&amp;#039;&amp;#039;&amp;#039;Use OpenJUMP&amp;#039;&amp;#039;&amp;#039; || || &amp;#039;&amp;#039;&amp;#039;Develop OpenJUMP&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;bull; [[Starting OpenJUMP]] for the first timers      || || &amp;amp;bull; [[Developing with OpenJUMP]] (o)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;bull; [[Using OpenJUMP]] (+)    || || &amp;amp;bull; [[Contributors to OpenJUMP]] &lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;bull; [[Index|Online User Manual]]      || ||&lt;br /&gt;
|-&lt;br /&gt;
| &amp;amp;bull; [[Plugins for OpenJUMP]] || ||&lt;br /&gt;
|- style=&amp;quot;height:7px&amp;quot; &lt;br /&gt;
|           || ||&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;left&amp;quot;  |&amp;#039;&amp;#039;&amp;#039;Other&amp;#039;&amp;#039;&amp;#039; || ||&lt;br /&gt;
|- &lt;br /&gt;
| &amp;amp;bull; [[Contact us]] || ||&lt;br /&gt;
|- &lt;br /&gt;
| &amp;amp;bull; [[Related Websites and Blogs]] || ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
ToDo&amp;#039;s: (o) cleanup, (+) write new/improve pages&lt;br /&gt;
&lt;br /&gt;
== News ==&lt;br /&gt;
* [27 Nov 2011] - We are trying to get a [[Doc_Sprint]] organized for the first part of 2012.&lt;br /&gt;
* [26 Nov 2011] - New version of DB Query plugin 0.8 ([http://jumpdbqplugin.sourceforge.net/ more details])&lt;br /&gt;
* [11 Sept 2011] - New Release 1.4.2 is available ([http://sourceforge.net/projects/jump-pilot/files/OpenJUMP/1.4.2/ download])!&lt;br /&gt;
* [29 June 2011] - new Geometry Converter Extension version 0.3rc4 [http://sourceforge.net/projects/jump-pilot/files/p_GPS%2CCTS%20Extensions/geomconv_0.3rc4.zip available]&lt;br /&gt;
* [28 June 2011] - internationalized [[CTS Plugin|CTS extension (Coordinate transformation services)]] version 0.2 stable released&lt;br /&gt;
* [21 Aug 2010] - updated [[CTS Plugin|Coordinate transformation plugin (CTS extension)]] and revamped [[GPS Plugin|Live GPS support for serial devices (GPS extension)]] for OpenJUMP by [http://soldin.de Edgar Soldin] available at The Jump Pilot Project [http://sourceforge.net/projects/jump-pilot/files/ download page].&lt;br /&gt;
* [07 Feb. 2010] - new [http://sourceforge.net/projects/jump-pilot/files/p_database_plugins/p_SpatialLite_reader_plugin/SpatialitePlugin.zip/download SpatialLite plugin] for OpenJUMP that allows to read SpatialLite layers. Note the new Version of the &amp;#039;&amp;#039;DB Query Plugin&amp;#039;&amp;#039; can read SpatialLite too. Jukka made a tutorial for this - see [[OpenJUMP with SpatialLite]].&lt;br /&gt;
* [[Older News]]&lt;br /&gt;
&lt;br /&gt;
== Editing this Wiki ==&lt;br /&gt;
* you can edit this wiki: simply &amp;#039;&amp;#039;jumpin&amp;#039;&amp;#039; (pw) as &amp;#039;&amp;#039;ojuser&amp;#039;&amp;#039; (user)&lt;br /&gt;
* you can also create a new account - and then write an email to Stefan sstein[=at=] geo.uzh.ch so that he can assign you editing rights&lt;br /&gt;
* Consult the [http://meta.wikimedia.org/wiki/Help:Contents User&amp;#039;s Guide] for information on using the wiki software. See also [http://www.mediawiki.org/wiki/Manual:Configuration_settings Configuration settings list]&lt;/div&gt;</summary>
		<author><name>Bgudehus</name></author>
	</entry>
	<entry>
		<id>https://ojwiki.soldin.de/index.php?title=General_refactoring_of_OpenJUMP&amp;diff=1333</id>
		<title>General refactoring of OpenJUMP</title>
		<link rel="alternate" type="text/html" href="https://ojwiki.soldin.de/index.php?title=General_refactoring_of_OpenJUMP&amp;diff=1333"/>
		<updated>2012-01-05T03:27:37Z</updated>

		<summary type="html">&lt;p&gt;Bgudehus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Project page: [https://github.com/hastebrot/openjump-tools-sandbox]&lt;br /&gt;
Zip file: [https://github.com/hastebrot/openjump-tools-sandbox/zipball/master]&lt;br /&gt;
&lt;br /&gt;
== Helper method to test plugins (TestTools) ==&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;buildWorkbench():&amp;#039;&amp;#039;&amp;#039; Create and setup a JUMPWorkbench with WorkbenchFrame and WorkbenchContext. The method JUMPWorkbench.main() has all needed instructions. In order to run the plugins we need to set WorkbenchFrame visible. This is only required because WorkbenchFrame.position() wants to relocate internal frames, but shouldn&amp;#039;t be a requirement. However to show the WorkbenchFrame could be helpful when developing test cases.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;configurePlugIn(plugin, parameters):&amp;#039;&amp;#039;&amp;#039; empty&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;executePlugIn(plugin, context):&amp;#039;&amp;#039;&amp;#039; Initialize and call (execute and/or run) PlugIns. The method AbstractPlugIn.toActionListener() has all needed instructions. We need to wait until the plugin finished until assertions can be made. We should test plugins with different dialog values handled to the plugin and all private methods directly.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;openFile(file, context):&amp;#039;&amp;#039;&amp;#039; empty&lt;br /&gt;
&lt;br /&gt;
== Layout of a test class (TestToolsTest) ==&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;@BeforeClass:&amp;#039;&amp;#039;&amp;#039; Create a WorkbenchFrame (and optionally set it visible).&lt;br /&gt;
** &amp;#039;&amp;#039;&amp;#039;@Before:&amp;#039;&amp;#039;&amp;#039; Create a new TaskFrame.&lt;br /&gt;
** &amp;#039;&amp;#039;&amp;#039;@Test:&amp;#039;&amp;#039;&amp;#039; Run a single test case.&lt;br /&gt;
*** Load a Shapefile.&lt;br /&gt;
*** Call the PlugIn with parameters.&lt;br /&gt;
*** Make assertions on the result.&lt;br /&gt;
** &amp;#039;&amp;#039;&amp;#039;@After:&amp;#039;&amp;#039;&amp;#039; Close all internal frames (projects).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;@AfterClass:&amp;#039;&amp;#039;&amp;#039; Close the WorkbenchFrame.&lt;br /&gt;
&lt;br /&gt;
== Structure of a PlugIn (UnionByAttributePlugIn) ==&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Install Plugin&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
** Constructor: Empty (Setup).&lt;br /&gt;
** Public method &amp;quot;initialize()&amp;quot;: To add menu entries (FeatureInstaller)&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Configure Plugin&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
** Private static fields: With translation strings (I18N).&lt;br /&gt;
** Private field &amp;quot;dialog&amp;quot;: With a dialog object which is a key store (MultiInputDialog).&lt;br /&gt;
** Public method &amp;quot;execute()&amp;quot;: To initialize and show the dialog to the user.&lt;br /&gt;
** Private method &amp;quot;initDialog()&amp;quot;: To create and initialize the field for the dialog.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Execute Plugin&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
** Public method &amp;quot;run()&amp;quot;: To read the dialog object and run the tool asynchronously.&lt;br /&gt;
** Private method: To create a new result layer (LayerManager).&lt;br /&gt;
** Private method: To add a report (OutputWindow).&lt;br /&gt;
&lt;br /&gt;
== Guideline to refactor existing legacy plugins ==&lt;br /&gt;
&lt;br /&gt;
# Create an empty Java.project for experiments&lt;br /&gt;
# Copy jar dependecies to lib&lt;br /&gt;
# Copy single PlugIn source to src (downside: out of main repository version control)&lt;br /&gt;
# Try to run plugin&lt;br /&gt;
# Refactor PlugIn to execute simple Test with a shapefile fixture (chance no behaviour)&lt;br /&gt;
# Write Tests for Normal cases and edge cases (suggested in which article)&lt;br /&gt;
# Refactor mercilessly&lt;/div&gt;</summary>
		<author><name>Bgudehus</name></author>
	</entry>
	<entry>
		<id>https://ojwiki.soldin.de/index.php?title=General_refactoring_of_OpenJUMP&amp;diff=1332</id>
		<title>General refactoring of OpenJUMP</title>
		<link rel="alternate" type="text/html" href="https://ojwiki.soldin.de/index.php?title=General_refactoring_of_OpenJUMP&amp;diff=1332"/>
		<updated>2012-01-05T03:23:56Z</updated>

		<summary type="html">&lt;p&gt;Bgudehus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Project page: [https://github.com/hastebrot/openjump-tools-sandbox]&lt;br /&gt;
Zip file: [https://github.com/hastebrot/openjump-tools-sandbox/zipball/master]&lt;br /&gt;
&lt;br /&gt;
== TestTools ==&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;buildWorkbench():&amp;#039;&amp;#039;&amp;#039; Create and setup a JUMPWorkbench with WorkbenchFrame and WorkbenchContext. The method JUMPWorkbench.main() has all needed instructions. In order to run the plugins we need to set WorkbenchFrame visible. This is only required because WorkbenchFrame.position() wants to relocate internal frames, but shouldn&amp;#039;t be a requirement. However to show the WorkbenchFrame could be helpful when developing test cases.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;configurePlugIn(plugin, parameters):&amp;#039;&amp;#039;&amp;#039; empty&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;executePlugIn(plugin, context):&amp;#039;&amp;#039;&amp;#039; Initialize and call (execute and/or run) PlugIns. The method AbstractPlugIn.toActionListener() has all needed instructions. We need to wait until the plugin finished until assertions can be made. We should test plugins with different dialog values handled to the plugin and all private methods directly.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;openFile(file, context):&amp;#039;&amp;#039;&amp;#039; empty&lt;br /&gt;
&lt;br /&gt;
== Layout of a test class (TestToolsTest) ==&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;@BeforeClass:&amp;#039;&amp;#039;&amp;#039; Create a WorkbenchFrame (and optionally set it visible).&lt;br /&gt;
** &amp;#039;&amp;#039;&amp;#039;@Before:&amp;#039;&amp;#039;&amp;#039; Create a new TaskFrame.&lt;br /&gt;
** &amp;#039;&amp;#039;&amp;#039;@Test:&amp;#039;&amp;#039;&amp;#039; Run a single test case.&lt;br /&gt;
*** Load a Shapefile.&lt;br /&gt;
*** Call the PlugIn with parameters.&lt;br /&gt;
*** Make assertions on the result.&lt;br /&gt;
** &amp;#039;&amp;#039;&amp;#039;@After:&amp;#039;&amp;#039;&amp;#039; Close all internal frames (projects).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;@AfterClass:&amp;#039;&amp;#039;&amp;#039; Close the WorkbenchFrame.&lt;br /&gt;
&lt;br /&gt;
== Structure of a PlugIn (UnionByAttributePlugIn) ==&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Install Plugin&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
** Constructor: Empty (Setup).&lt;br /&gt;
** Public method &amp;quot;initialize()&amp;quot;: To add menu entries (FeatureInstaller)&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Configure Plugin&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
** Private static fields: With translation strings (I18N).&lt;br /&gt;
** Private field &amp;quot;dialog&amp;quot;: With a dialog object which is a key store (MultiInputDialog).&lt;br /&gt;
** Public method &amp;quot;execute()&amp;quot;: To initialize and show the dialog to the user.&lt;br /&gt;
** Private method &amp;quot;initDialog()&amp;quot;: To create and initialize the field for the dialog.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Execute Plugin&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
** Public method &amp;quot;run()&amp;quot;: To read the dialog object and run the tool asynchronously.&lt;br /&gt;
** Private method: To create a new result layer (LayerManager).&lt;br /&gt;
** Private method: To add a report (OutputWindow).&lt;br /&gt;
&lt;br /&gt;
== Guideline to refactor existing legacy plugins ==&lt;br /&gt;
&lt;br /&gt;
# Create an empty Java.project for experiments&lt;br /&gt;
# Copy jar dependecies to lib&lt;br /&gt;
# Copy single PlugIn source to src (downside: out of main repository version control)&lt;br /&gt;
# Try to run plugin&lt;br /&gt;
# Refactor PlugIn to execute simple Test with a shapefile fixture (chance no behaviour)&lt;br /&gt;
# Write Tests for Normal cases and edge cases (suggested in which article)&lt;br /&gt;
# Refactor mercilessly&lt;/div&gt;</summary>
		<author><name>Bgudehus</name></author>
	</entry>
	<entry>
		<id>https://ojwiki.soldin.de/index.php?title=General_refactoring_of_OpenJUMP&amp;diff=1331</id>
		<title>General refactoring of OpenJUMP</title>
		<link rel="alternate" type="text/html" href="https://ojwiki.soldin.de/index.php?title=General_refactoring_of_OpenJUMP&amp;diff=1331"/>
		<updated>2012-01-05T03:22:21Z</updated>

		<summary type="html">&lt;p&gt;Bgudehus: Created page with &amp;#039;Project page: [https://github.com/hastebrot/openjump-tools-sandbox] Zip file: [https://github.com/hastebrot/openjump-tools-sandbox/zipball/master]  == TestTools ==  * &amp;#039;&amp;#039;&amp;#039;buildWor…&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Project page: [https://github.com/hastebrot/openjump-tools-sandbox]&lt;br /&gt;
Zip file: [https://github.com/hastebrot/openjump-tools-sandbox/zipball/master]&lt;br /&gt;
&lt;br /&gt;
== TestTools ==&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;buildWorkbench():&amp;#039;&amp;#039;&amp;#039; Create and setup a JUMPWorkbench with WorkbenchFrame and WorkbenchContext. The method JUMPWorkbench.main() has all needed instructions. In order to run the plugins we need to set WorkbenchFrame visible. This is only required because WorkbenchFrame.position() wants to relocate internal frames, but shouldn&amp;#039;t be a requirement. However to show the WorkbenchFrame could be helpful when developing test cases.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;configurePlugIn(plugin, parameters):&amp;#039;&amp;#039;&amp;#039; empty&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;executePlugIn(plugin, context):&amp;#039;&amp;#039;&amp;#039; Initialize and call (execute and/or run) PlugIns. The method AbstractPlugIn.toActionListener() has all needed instructions. We need to wait until the plugin finished until assertions can be made. We should test plugins with different dialog values handled to the plugin and all private methods directly.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;openFile(file, context):&amp;#039;&amp;#039;&amp;#039; empty&lt;br /&gt;
&lt;br /&gt;
== Layout of a test class (TestToolsTest) ==&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;@BeforeClass:&amp;#039;&amp;#039;&amp;#039; Create a WorkbenchFrame (and optionally set it visible).&lt;br /&gt;
** &amp;#039;&amp;#039;&amp;#039;@Before:&amp;#039;&amp;#039;&amp;#039; Create a new TaskFrame.&lt;br /&gt;
** &amp;#039;&amp;#039;&amp;#039;@Test:&amp;#039;&amp;#039;&amp;#039; Run a single test case.&lt;br /&gt;
*** Load a Shapefile.&lt;br /&gt;
*** Call the PlugIn with parameters.&lt;br /&gt;
*** Make assertions on the result.&lt;br /&gt;
** &amp;#039;&amp;#039;&amp;#039;@After:&amp;#039;&amp;#039;&amp;#039; Close all internal frames (projects).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;@AfterClass:&amp;#039;&amp;#039;&amp;#039; Close the WorkbenchFrame.&lt;br /&gt;
&lt;br /&gt;
== Structure of a PlugIn (UnionByAttributePlugIn) ==&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Install Plugin&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
** Constructor: Empty (Setup).&lt;br /&gt;
** Public method &amp;quot;initialize()&amp;quot;: To add menu entries (FeatureInstaller)&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Configure Plugin&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
** Private static fields: With translation strings (I18N).&lt;br /&gt;
** Private field &amp;quot;dialog&amp;quot;: With a dialog object which is a key store (MultiInputDialog).&lt;br /&gt;
** Public method &amp;quot;execute()&amp;quot;: To initialize and show the dialog to the user.&lt;br /&gt;
** Private method &amp;quot;initDialog()&amp;quot;: To create and initialize the field for the dialog.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Execute Plugin&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
** Public method &amp;quot;run()&amp;quot;: To read the dialog object and run the tool asynchronously.&lt;br /&gt;
** Private method: To create a new result layer (LayerManager).&lt;br /&gt;
** Private method: To add a report (OutputWindow).&lt;/div&gt;</summary>
		<author><name>Bgudehus</name></author>
	</entry>
	<entry>
		<id>https://ojwiki.soldin.de/index.php?title=Developing_with_OpenJUMP&amp;diff=1330</id>
		<title>Developing with OpenJUMP</title>
		<link rel="alternate" type="text/html" href="https://ojwiki.soldin.de/index.php?title=Developing_with_OpenJUMP&amp;diff=1330"/>
		<updated>2012-01-05T03:15:22Z</updated>

		<summary type="html">&lt;p&gt;Bgudehus: /* Other Related Stuff */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== General ==&lt;br /&gt;
* [[How to get OpenJUMP source code]]&lt;br /&gt;
* [[Developer Documentation and HowTo]]&lt;br /&gt;
* [[Internationalization]] and [[How to translate OpenJUMP into another language]]&lt;br /&gt;
&lt;br /&gt;
* our developer mailing list: http://lists.sourceforge.net/lists/listinfo/jump-pilot-devel&lt;br /&gt;
* our Bug Tracker: http://sourceforge.net/tracker/?group_id=118054&lt;br /&gt;
* source code from our repository, via SVN, see: http://sourceforge.net/svn/?group_id=118054&lt;br /&gt;
&lt;br /&gt;
== Other Related Stuff ==&lt;br /&gt;
* [[OpenJUMP Google Summer Of Code]]&lt;br /&gt;
* [[JTin Google Summer of Code 2008]]&lt;br /&gt;
* [[Scripting with BeanShell]]&lt;br /&gt;
* [[General refactoring of OpenJUMP]]&lt;br /&gt;
&lt;br /&gt;
== Development Snapshots ==&lt;br /&gt;
; Do it yourself&lt;br /&gt;
* After installing Maven, for instance in the folder &amp;#039;&amp;#039;C:\dev\maven221\&amp;#039;&amp;#039; under Windows, local builds can be created with the command line: &amp;lt;pre&amp;gt;c:\dev\openjump\openjump&amp;gt;C:\dev\maven221\bin\mvn clean install&amp;lt;/pre&amp;gt; For the example above the folder &amp;#039;&amp;#039;c:\dev\openjump\openjump&amp;#039;&amp;#039; contains the Maven 2 &amp;#039;&amp;#039;pom.xml&amp;#039;&amp;#039; file and also contains OpenJUMPs &amp;#039;&amp;#039;src&amp;#039;&amp;#039; folder from the SVN.&lt;br /&gt;
* Note, that the regular release versions are build with [http://ant.apache.org/ Ant] - which is another option besides Maven.&lt;br /&gt;
; Download OJ snapshot releases&lt;br /&gt;
* see [[Downloading_OpenJUMP#Snapshots| Download page - Section Snapshots]]&lt;br /&gt;
&lt;br /&gt;
== Roadmap ==&lt;br /&gt;
* [[OpenJUMP Roadmap]]&lt;br /&gt;
* [[Coordinate Transformation Service]] integration (state of the art)&lt;br /&gt;
&lt;br /&gt;
== Administration tasks ==&lt;br /&gt;
* [[Creating an OJ release version]]&lt;br /&gt;
* [[FAQ for administrators]]&lt;/div&gt;</summary>
		<author><name>Bgudehus</name></author>
	</entry>
	<entry>
		<id>https://ojwiki.soldin.de/index.php?title=Developer_Documentation_and_HowTo&amp;diff=967</id>
		<title>Developer Documentation and HowTo</title>
		<link rel="alternate" type="text/html" href="https://ojwiki.soldin.de/index.php?title=Developer_Documentation_and_HowTo&amp;diff=967"/>
		<updated>2010-12-19T18:46:03Z</updated>

		<summary type="html">&lt;p&gt;Bgudehus: Added feature model diagram&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== General Docs ==&lt;br /&gt;
* [http://www.vividsolutions.com/jump/bin/JUMP%20Developer%20Guide.pdf Jump Developers Guide]&lt;br /&gt;
* [http://lsi.iiit.ac.in/openjump_manual/ new OpenJUMP Programmer&amp;#039;s Manual]&lt;br /&gt;
* [[Devel FAQ]]&lt;br /&gt;
&lt;br /&gt;
== Basics ==&lt;br /&gt;
* [[How to run OpenJUMP in Eclipse]]&lt;br /&gt;
* [[How to make your own OpenJUMP built]]&lt;br /&gt;
* [http://jump-pilot.sourceforge.net/javadoc/openjump_javadoc/ OpenJUMP javadoc] (sstein 3rd May 2010: needs to be updated, I think)&lt;br /&gt;
* [http://tsusiatsoftware.net/jts/javadoc/index.html JTS javadoc] (the geometry library used by OJ)&lt;br /&gt;
* [[OpenJUMP programming Guideline]]&lt;br /&gt;
&lt;br /&gt;
== Making Your Own Plugins ==&lt;br /&gt;
&lt;br /&gt;
[[image:OJPlugInContextDiagram.png|thumb|right|200px|PlugInContext diagram]]&lt;br /&gt;
&lt;br /&gt;
* [[The difference of PlugIn and Extension and Registry]]&lt;br /&gt;
* [[How to use and make own Plugins]]&lt;br /&gt;
* [[How to use a plugin with a properties file in ECLIPSE]]&lt;br /&gt;
&lt;br /&gt;
* Example PlugIns:&lt;br /&gt;
** [[How to display customer xyz data from a file]]&lt;br /&gt;
** [[Example Plugin For Buffering Features in a Layer]]&lt;br /&gt;
** [[How to Access and Display Attributes of Selected Features]]&lt;br /&gt;
** [[Example Plugin For Accessing Sextante Algorithms]]&lt;br /&gt;
** [[How to load a Sextante raster layer and read its cell values]]&lt;br /&gt;
&lt;br /&gt;
[[image:Openjump-feature-model.png|thumb|right|200px|FeatureModel diagram]]&lt;br /&gt;
&lt;br /&gt;
* [[How to use i18n Internationalization]]&lt;br /&gt;
* [[How to load data from a Shape File directly]]&lt;br /&gt;
* [[Implementing Undo]]&lt;br /&gt;
* [[Displaying Debug Messages]]&lt;br /&gt;
* [[Adding A Toolbar Button]]&lt;br /&gt;
* [[Implementing cursortools]]&lt;br /&gt;
* [[Converting a CursorTool to a PlugIn]]&lt;br /&gt;
* [[Extending a FeatureCollection by Adding new Attributes]]&lt;br /&gt;
* [[Drawing an on-screen ornament]]&lt;br /&gt;
* [[OpenJUMP with Wallpaper]] &lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Notes&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
* [[Tips and Tricks around the Java Topology Suite]]&lt;br /&gt;
* [[Notes On OpenJUMP&amp;#039;s Rendering System]]&lt;br /&gt;
* [[Notes on TaskFrames]]&lt;br /&gt;
* [[Notes on the Display of AttributeTables]]&lt;br /&gt;
* [[Using JUMP Libraries in an External Application]]&lt;br /&gt;
* A method/class diagram for the PlugInContext (click on the image to the right)&lt;br /&gt;
&lt;br /&gt;
== Adding support for new data formats ==&lt;br /&gt;
* [[How to write a new driver]] (Spring 2007)&lt;br /&gt;
* [[How to Create an Open Wizard]] (Since OpenJUMP Version 1.2)&lt;br /&gt;
* Some additional notes on adding support for a new file format: [[File DataSource Notes]]&lt;br /&gt;
* [[Working with GML]]&lt;br /&gt;
&lt;br /&gt;
== Scripting and Customization ==&lt;br /&gt;
* [[Scripting with BeanShell]]&lt;br /&gt;
* [[Using Jython]]&lt;br /&gt;
&lt;br /&gt;
== Other ==&lt;br /&gt;
* [[How to translate OpenJUMP into another language]]&lt;/div&gt;</summary>
		<author><name>Bgudehus</name></author>
	</entry>
	<entry>
		<id>https://ojwiki.soldin.de/index.php?title=File:Openjump-feature-model.png&amp;diff=966</id>
		<title>File:Openjump-feature-model.png</title>
		<link rel="alternate" type="text/html" href="https://ojwiki.soldin.de/index.php?title=File:Openjump-feature-model.png&amp;diff=966"/>
		<updated>2010-12-19T18:42:48Z</updated>

		<summary type="html">&lt;p&gt;Bgudehus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Bgudehus</name></author>
	</entry>
</feed>