Changeset 19458 in osm for applications/editors/josm
- Timestamp:
- 2010-01-13T14:56:15+01:00 (15 years ago)
- Location:
- applications/editors/josm/plugins/nearclick
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
applications/editors/josm/plugins/nearclick/build.xml
r17705 r19458 1 <?xml version="1.0" encoding="UTF-8"?> 2 <!-- 3 ** This is the build file for the nearclick plugin. 4 ** 5 ** Maintaining versions 6 ** ==================== 7 ** see README.template 8 ** 9 ** Usage 10 ** ===== 11 ** To build it run 12 ** 13 ** > ant dist 14 ** 15 ** To install the generated plugin locally (in you default plugin directory) run 16 ** 17 ** > ant install 18 ** 19 ** The generated plugin jar is not automatically available in JOSMs plugin configuration 20 ** dialog. You have to check it in first. 21 ** 22 ** Use the ant target 'publish' to check in the plugin and make it available to other 23 ** JOSM users: 24 ** set the properties commit.message and plugin.main.version 25 ** and run 26 ** > ant publish 27 ** 28 ** 29 --> 1 30 <project name="nearclick" default="dist" basedir="."> 2 <property name="josm" location="../../core/dist/josm-custom.jar"/> 3 <property name="plugin.dist.dir" value="../../dist"/> 4 <property name="plugin.build.dir" value="build"/> 5 <property name="plugin.jar" value="${plugin.dist.dir}/${ant.project.name}.jar"/> 6 <property name="ant.build.javac.target" value="1.5"/> 7 <target name="init"> 8 <mkdir dir="${plugin.build.dir}"/> 9 </target> 10 <target name="compile" depends="init"> 11 <echo message="creating ${plugin.jar}"/> 12 <javac srcdir="src" classpath="${josm}" debug="true" destdir="${plugin.build.dir}"> 13 <compilerarg value="-Xlint:deprecation"/> 14 <compilerarg value="-Xlint:unchecked"/> 15 </javac> 16 </target> 17 <target name="dist" depends="compile,revision"> 18 <jar destfile="${plugin.jar}" basedir="${plugin.build.dir}"> 19 <manifest> 20 <attribute name="Author" value="Imi, David Earl"/> 21 <attribute name="Plugin-Class" value="nearclick.NearClickPlugin"/> 22 <attribute name="Plugin-Date" value="${version.entry.commit.date}"/> 23 <attribute name="Plugin-Description" value="Simulates a click when you do a small and short drag. This is useful for tablet pens, when you have problems just clicking the tablet without the mouse moving (general Java - tablet problem)."/> 24 <attribute name="Plugin-Link" value="http://wiki.openstreetmap.org/index.php/JOSM/Plugins/Nearclick"/> 25 <attribute name="Plugin-Mainversion" value="1465"/> 26 <attribute name="Plugin-Version" value="${version.entry.commit.revision}"/> 27 </manifest> 28 </jar> 29 </target> 30 <target name="revision"> 31 <exec append="false" output="REVISION" executable="svn" failifexecutionfails="false"> 32 <env key="LANG" value="C"/> 33 <arg value="info"/> 34 <arg value="--xml"/> 35 <arg value="."/> 36 </exec> 37 <xmlproperty file="REVISION" prefix="version" keepRoot="false" collapseAttributes="true"/> 38 <delete file="REVISION"/> 39 </target> 40 <target name="clean"> 41 <delete dir="${plugin.build.dir}"/> 42 <delete file="${plugin.jar}"/> 43 </target> 44 <target name="install" depends="dist"> 45 <property environment="env"/> 46 <condition property="josm.plugins.dir" value="${env.APPDATA}/JOSM/plugins" else="${user.home}/.josm/plugins"> 47 <and> 48 <os family="windows"/> 49 </and> 50 </condition> 51 <copy file="${plugin.jar}" todir="${josm.plugins.dir}"/> 52 </target> 31 32 <!-- enter the SVN commit message --> 33 <property name="commit.message" value="Changed the constructor signature of the plugin main class" /> 34 <!-- enter the *lowest* JOSM version this plugin is currently compatible with --> 35 <property name="plugin.main.version" value="2830" /> 36 37 38 <property name="josm" location="../../core/dist/josm-custom.jar"/> 39 <property name="plugin.dist.dir" value="../../dist"/> 40 <property name="plugin.build.dir" value="build"/> 41 <property name="plugin.jar" value="${plugin.dist.dir}/${ant.project.name}.jar"/> 42 <property name="ant.build.javac.target" value="1.5"/> 43 <target name="init"> 44 <mkdir dir="${plugin.build.dir}"/> 45 </target> 46 <target name="compile" depends="init"> 47 <echo message="creating ${plugin.jar}"/> 48 <javac srcdir="src" classpath="${josm}" debug="true" destdir="${plugin.build.dir}"> 49 <compilerarg value="-Xlint:deprecation"/> 50 <compilerarg value="-Xlint:unchecked"/> 51 </javac> 52 </target> 53 <target name="dist" depends="compile,revision"> 54 <jar destfile="${plugin.jar}" basedir="${plugin.build.dir}"> 55 <manifest> 56 <attribute name="Author" value="Imi, David Earl"/> 57 <attribute name="Plugin-Class" value="nearclick.NearClickPlugin"/> 58 <attribute name="Plugin-Date" value="${version.entry.commit.date}"/> 59 <attribute name="Plugin-Description" value="Simulates a click when you do a small and short drag. This is useful for tablet pens, when you have problems just clicking the tablet without the mouse moving (general Java - tablet problem)."/> 60 <attribute name="Plugin-Link" value="http://wiki.openstreetmap.org/index.php/JOSM/Plugins/Nearclick"/> 61 <attribute name="Plugin-Mainversion" value="${plugin.main.version}"/> 62 <attribute name="Plugin-Version" value="${version.entry.commit.revision}"/> 63 </manifest> 64 </jar> 65 </target> 66 <target name="revision"> 67 <exec append="false" output="REVISION" executable="svn" failifexecutionfails="false"> 68 <env key="LANG" value="C"/> 69 <arg value="info"/> 70 <arg value="--xml"/> 71 <arg value="."/> 72 </exec> 73 <xmlproperty file="REVISION" prefix="version" keepRoot="false" collapseAttributes="true"/> 74 <delete file="REVISION"/> 75 </target> 76 <target name="clean"> 77 <delete dir="${plugin.build.dir}"/> 78 <delete file="${plugin.jar}"/> 79 </target> 80 <target name="install" depends="dist"> 81 <property environment="env"/> 82 <condition property="josm.plugins.dir" value="${env.APPDATA}/JOSM/plugins" else="${user.home}/.josm/plugins"> 83 <and> 84 <os family="windows"/> 85 </and> 86 </condition> 87 <copy file="${plugin.jar}" todir="${josm.plugins.dir}"/> 88 </target> 89 90 <!-- 91 ************************** Publishing the plugin *********************************** 92 --> 93 <!-- 94 ** extracts the JOSM release for the JOSM version in ../core and saves it in the 95 ** property ${coreversion.info.entry.revision} 96 ** 97 --> 98 <target name="core-info"> 99 <exec append="false" output="core.info.xml" executable="svn" failifexecutionfails="false"> 100 <env key="LANG" value="C"/> 101 <arg value="info"/> 102 <arg value="--xml"/> 103 <arg value="../../core"/> 104 </exec> 105 <xmlproperty file="core.info.xml" prefix="coreversion" keepRoot="true" collapseAttributes="true"/> 106 <echo>Building against core revision ${coreversion.info.entry.revision}.</echo> 107 <echo>Plugin-Mainversion is set to ${plugin.main.version}.</echo> 108 <delete file="core.info.xml" /> 109 </target> 110 111 <!-- 112 ** commits the source tree for this plugin 113 --> 114 <target name="commit-current"> 115 <echo>Commiting the plugin source with message '${commit.message}' ...</echo> 116 <exec append="true" output="svn.log" executable="svn" failifexecutionfails="false"> 117 <env key="LANG" value="C"/> 118 <arg value="commit"/> 119 <arg value="-m '${commit.message}'"/> 120 <arg value="."/> 121 </exec> 122 </target> 123 124 <!-- 125 ** updates (svn up) the source tree for this plugin 126 --> 127 <target name="update-current"> 128 <echo>Updating plugin source ...</echo> 129 <exec append="true" output="svn.log" executable="svn" failifexecutionfails="false"> 130 <env key="LANG" value="C"/> 131 <arg value="up"/> 132 <arg value="."/> 133 </exec> 134 <echo>Updating ${plugin.jar} ...</echo> 135 <exec append="true" output="svn.log" executable="svn" failifexecutionfails="false"> 136 <env key="LANG" value="C"/> 137 <arg value="up"/> 138 <arg value="../dist/${plugin.jar}"/> 139 </exec> 140 </target> 141 142 <!-- 143 ** commits the plugin.jar 144 --> 145 <target name="commit-dist"> 146 <echo> 147 ***** Properties of published ${plugin.jar} ***** 148 Commit message : '${commit.message}' 149 Plugin-Mainversion: ${plugin.main.version} 150 JOSM build version: ${coreversion.info.entry.revision} 151 Plugin-Version : ${version.entry.commit.revision} 152 ***** / Properties of published ${plugin.jar} ***** 153 154 Now commiting ${plugin.jar} ... 155 </echo> 156 <exec append="true" output="svn.log" executable="svn" failifexecutionfails="false"> 157 <env key="LANG" value="C"/> 158 <arg value="-m '${commit.message}'"/> 159 <arg value="commit"/> 160 <arg value="${plugin.jar}"/> 161 </exec> 162 </target> 163 164 <!-- ** make sure svn is present as a command line tool ** --> 165 <target name="ensure-svn-present"> 166 <exec append="true" output="svn.log" executable="svn" failifexecutionfails="false" failonerror="false" resultproperty="svn.exit.code"> 167 <env key="LANG" value="C" /> 168 <arg value="--version" /> 169 </exec> 170 <fail message="Fatal: command 'svn --version' failed. Please make sure svn is installed on your system."> 171 <!-- return code not set at all? Most likely svn isn't installed --> 172 <condition> 173 <not> 174 <isset property="svn.exit.code" /> 175 </not> 176 </condition> 177 </fail> 178 <fail message="Fatal: command 'svn --version' failed. Please make sure a working copy of svn is installed on your system."> 179 <!-- error code from SVN? Most likely svn is not what we are looking on this system --> 180 <condition> 181 <isfailure code="${svn.exit.code}" /> 182 </condition> 183 </fail> 184 </target> 185 186 <target name="publish" depends="ensure-svn-present,core-info,commit-current,update-current,clean,dist,commit-dist"> 187 </target> 53 188 </project> -
applications/editors/josm/plugins/nearclick/src/nearclick/NearClickPlugin.java
r13497 r19458 9 9 import java.awt.event.MouseEvent; 10 10 import org.openstreetmap.josm.Main; 11 import org.openstreetmap.josm.plugins.PluginInformation; 11 12 12 13 public class NearClickPlugin implements AWTEventListener { 13 14 14 15 16 17 18 15 private int mouseDownX = -1; 16 private int mouseDownY = -1; 17 private long mouseDownTime = -1; 18 private int radiussquared = 49; 19 private int delay = 250; 19 20 20 public NearClickPlugin() { 21 Toolkit.getDefaultToolkit().addAWTEventListener(this, AWTEvent.MOUSE_EVENT_MASK | AWTEvent.MOUSE_MOTION_EVENT_MASK); 22 try { 23 int radius = Integer.parseInt(Main.pref.get("nearclick.radius", "7")); 24 radiussquared = radius * radius; 25 delay = Integer.parseInt(Main.pref.get("nearclick.delay", "250")); 26 } catch (NumberFormatException ex) { 27 delay = 250; 28 radiussquared = 7 * 7; 29 } 30 } 21 public NearClickPlugin(PluginInformation info) { 22 Toolkit.getDefaultToolkit().addAWTEventListener(this, 23 AWTEvent.MOUSE_EVENT_MASK | AWTEvent.MOUSE_MOTION_EVENT_MASK); 24 try { 25 int radius = Integer.parseInt(Main.pref 26 .get("nearclick.radius", "7")); 27 radiussquared = radius * radius; 28 delay = Integer.parseInt(Main.pref.get("nearclick.delay", "250")); 29 } catch (NumberFormatException ex) { 30 delay = 250; 31 radiussquared = 7 * 7; 32 } 33 } 31 34 32 33 34 MouseEvent e = (MouseEvent)event;35 if ( e.getButton() != MouseEvent.BUTTON1)36 37 38 39 40 41 if ( e.getWhen() - mouseDownTime < delay && 42 ( e.getPoint().x != mouseDownX || 43 e.getPoint().y != mouseDownY) && 44 xdiff * xdiff + ydiff * ydiff < radiussquared 45 ) { 46 try { 47 Robot r = new Robot(GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice());48 49 50 51 52 } 53 54 55 56 57 mouseDownTime = e.getWhen(); 58 59 60 35 public void eventDispatched(AWTEvent event) { 36 if (event instanceof MouseEvent) { 37 MouseEvent e = (MouseEvent) event; 38 if (e.getButton() != MouseEvent.BUTTON1) 39 return; 40 int xdiff = e.getPoint().x - mouseDownX; 41 int ydiff = e.getPoint().y - mouseDownY; 42 43 if (e.getID() == MouseEvent.MOUSE_RELEASED) { 44 if (e.getWhen() - mouseDownTime < delay 45 && (e.getPoint().x != mouseDownX || e.getPoint().y != mouseDownY) 46 && xdiff * xdiff + ydiff * ydiff < radiussquared) { 47 try { 48 Robot r = new Robot(GraphicsEnvironment 49 .getLocalGraphicsEnvironment() 50 .getDefaultScreenDevice()); 51 r.mousePress(MouseEvent.BUTTON1_MASK); 52 r.mouseRelease(MouseEvent.BUTTON1_MASK); 53 } catch (AWTException e1) { 54 } 55 } 56 } 57 if (e.getID() == MouseEvent.MOUSE_PRESSED) { 58 mouseDownX = e.getPoint().x; 59 mouseDownY = e.getPoint().y; 60 mouseDownTime = e.getWhen(); 61 } 62 } 63 } 61 64 }
Note:
See TracChangeset
for help on using the changeset viewer.