Changeset 29261 in osm for applications/editors/josm/plugins
- Timestamp:
- 2013-02-18T18:01:31+01:00 (12 years ago)
- Location:
- applications/editors/josm/plugins/imageryadjust
- Files:
-
- 2 added
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
applications/editors/josm/plugins/imageryadjust/build.xml
r27852 r29261 1 1 <?xml version="1.0" encoding="utf-8"?> 2 <!--3 ** This is a template build file for a JOSM plugin.4 **5 ** Maintaining versions6 ** ====================7 ** see README.template8 **9 ** Usage10 ** =====11 ** To build it run12 **13 ** > ant dist14 **15 ** To install the generated plugin locally (in you default plugin directory) run16 **17 ** > ant install18 **19 ** The generated plugin jar is not automatically available in JOSMs plugin configuration20 ** 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 other23 ** JOSM users:24 ** set the properties commit.message and plugin.main.version25 ** and run26 ** > ant publish27 **28 **29 -->30 2 <project name="imageryadjust" default="dist" basedir="."> 31 <!-- enter the SVN commit message --> 32 <property name="commit.message" value="ImageryAdjust: Adjust while holding Y"/> 33 <!-- enter the *lowest* JOSM version this plugin is currently compatible with --> 3 <property name="commit.message" value="ImageryAdjust: Adjust while holding shortcut key"/> 34 4 <property name="plugin.main.version" value="4980"/> 35 <!-- 36 ************************************************ 37 ** should not be necessary to change the following properties 38 --> 39 <property name="josm" location="../../core/dist/josm-custom.jar"/> 40 <property name="plugin.build.dir" value="build"/> 41 <property name="plugin.src.dir" value="src"/> 42 <!-- this is the directory where the plugin jar is copied to --> 43 <property name="plugin.dist.dir" value="../../dist"/> 44 <property name="ant.build.javac.target" value="1.5"/> 45 <property name="plugin.dist.dir" value="../../dist"/> 46 <property name="plugin.jar" value="${plugin.dist.dir}/${ant.project.name}.jar"/> 47 <!-- 48 ********************************************************** 49 ** init - initializes the build 50 ********************************************************** 51 --> 52 <target name="init"> 53 <mkdir dir="${plugin.build.dir}"/> 54 </target> 55 <!-- 56 ********************************************************** 57 ** compile - complies the source tree 58 ********************************************************** 59 --> 60 <target name="compile" depends="init"> 61 <echo message="compiling sources for ${plugin.jar} ... "/> 62 <javac srcdir="src" classpath="${josm}" debug="true" destdir="${plugin.build.dir}"> 63 <compilerarg value="-Xlint:deprecation"/> 64 <compilerarg value="-Xlint:unchecked"/> 65 </javac> 66 </target> 67 <!-- 68 ********************************************************** 69 ** dist - creates the plugin jar 70 ********************************************************** 71 --> 72 <target name="dist" depends="compile,revision"> 73 <echo message="creating ${ant.project.name}.jar ... "/> 74 <copy todir="${plugin.build.dir}/resources"> 75 <fileset dir="resources"/> 76 </copy> 77 <copy todir="${plugin.build.dir}/images"> 78 <fileset dir="images"/> 79 </copy> 80 <copy todir="${plugin.build.dir}/data"> 81 <fileset dir="data"/> 82 </copy> 83 <copy todir="${plugin.build.dir}"> 84 <fileset dir="."> 85 <include name="README"/> 86 <include name="LICENSE"/> 87 </fileset> 88 </copy> 89 <jar destfile="${plugin.jar}" basedir="${plugin.build.dir}"> 90 <!-- 91 ************************************************ 92 ** configure these properties. Most of them will be copied to the plugins 93 ** manifest file. Property values will also show up in the list available 94 ** plugins: http://josm.openstreetmap.de/wiki/Plugins. 95 ** 96 ************************************************ 97 --> 98 <manifest> 99 <attribute name="Author" value="Upliner"/> 100 <attribute name="Plugin-Class" value="imageryadjust.ImageryAdjustPlugin"/> 101 <attribute name="Plugin-Date" value="${version.entry.commit.date}"/> 102 <attribute name="Plugin-Description" value="WMSPlugin-style imagery adjustment mapmode"/> 103 <attribute name="Plugin-Icon" value="images/mapmode/adjustimg.png"/> 104 <attribute name="Plugin-Mainversion" value="${plugin.main.version}"/> 105 <attribute name="Plugin-Version" value="${version.entry.commit.revision}"/> 106 </manifest> 107 </jar> 108 </target> 109 <!-- 110 ********************************************************** 111 ** revision - extracts the current revision number for the 112 ** file build.number and stores it in the XML property 113 ** version.* 114 ********************************************************** 115 --> 116 <target name="revision"> 117 <exec append="false" output="REVISION" executable="svn" failifexecutionfails="false"> 118 <env key="LANG" value="C"/> 119 <arg value="info"/> 120 <arg value="--xml"/> 121 <arg value="."/> 122 </exec> 123 <xmlproperty file="REVISION" prefix="version" keepRoot="false" collapseAttributes="true"/> 124 <delete file="REVISION"/> 125 </target> 126 <!-- 127 ********************************************************** 128 ** clean - clean up the build environment 129 ********************************************************** 130 --> 131 <target name="clean"> 132 <delete dir="${plugin.build.dir}"/> 133 <delete file="${plugin.jar}"/> 134 </target> 135 <!-- 136 ********************************************************** 137 ** install - install the plugin in your local JOSM installation 138 ********************************************************** 139 --> 140 <target name="install" depends="dist"> 141 <property environment="env"/> 142 <condition property="josm.plugins.dir" value="${env.APPDATA}/JOSM/plugins" else="${user.home}/.josm/plugins"> 143 <and> 144 <os family="windows"/> 145 </and> 146 </condition> 147 <copy file="${plugin.jar}" todir="${josm.plugins.dir}"/> 148 </target> 149 <!-- 150 ************************** Publishing the plugin *********************************** 151 --> 152 <!-- 153 ** extracts the JOSM release for the JOSM version in ../core and saves it in the 154 ** property ${coreversion.info.entry.revision} 155 ** 156 --> 157 <target name="core-info"> 158 <exec append="false" output="core.info.xml" executable="svn" failifexecutionfails="false"> 159 <env key="LANG" value="C"/> 160 <arg value="info"/> 161 <arg value="--xml"/> 162 <arg value="../../core"/> 163 </exec> 164 <xmlproperty file="core.info.xml" prefix="coreversion" keepRoot="true" collapseAttributes="true"/> 165 <echo>Building against core revision ${coreversion.info.entry.revision}.</echo> 166 <echo>Plugin-Mainversion is set to ${plugin.main.version}.</echo> 167 <delete file="core.info.xml"/> 168 </target> 169 <!-- 170 ** commits the source tree for this plugin 171 --> 172 <target name="commit-current"> 173 <echo>Commiting the plugin source with message '${commit.message}' ...</echo> 174 <exec append="true" output="svn.log" executable="svn" failifexecutionfails="false"> 175 <env key="LANG" value="C"/> 176 <arg value="commit"/> 177 <arg value="-m '${commit.message}'"/> 178 <arg value="."/> 179 </exec> 180 </target> 181 <!-- 182 ** updates (svn up) the source tree for this plugin 183 --> 184 <target name="update-current"> 185 <echo>Updating plugin source ...</echo> 186 <exec append="true" output="svn.log" executable="svn" failifexecutionfails="false"> 187 <env key="LANG" value="C"/> 188 <arg value="up"/> 189 <arg value="."/> 190 </exec> 191 <echo>Updating ${plugin.jar} ...</echo> 192 <exec append="true" output="svn.log" executable="svn" failifexecutionfails="false"> 193 <env key="LANG" value="C"/> 194 <arg value="up"/> 195 <arg value="../dist/${plugin.jar}"/> 196 </exec> 197 </target> 198 <!-- 199 ** commits the plugin.jar 200 --> 201 <target name="commit-dist"> 202 <echo> 203 ***** Properties of published ${plugin.jar} ***** 204 Commit message : '${commit.message}' 205 Plugin-Mainversion: ${plugin.main.version} 206 JOSM build version: ${coreversion.info.entry.revision} 207 Plugin-Version : ${version.entry.commit.revision} 208 ***** / Properties of published ${plugin.jar} ***** 209 210 Now commiting ${plugin.jar} ... 211 </echo> 212 <exec append="true" output="svn.log" executable="svn" failifexecutionfails="false"> 213 <env key="LANG" value="C"/> 214 <arg value="-m '${commit.message}'"/> 215 <arg value="commit"/> 216 <arg value="${plugin.jar}"/> 217 </exec> 218 </target> 219 <!-- ** make sure svn is present as a command line tool ** --> 220 <target name="ensure-svn-present"> 221 <exec append="true" output="svn.log" executable="svn" failifexecutionfails="false" failonerror="false" resultproperty="svn.exit.code"> 222 <env key="LANG" value="C"/> 223 <arg value="--version"/> 224 </exec> 225 <fail message="Fatal: command 'svn --version' failed. Please make sure svn is installed on your system."> 226 <!-- return code not set at all? Most likely svn isn't installed --> 227 <condition> 228 <not> 229 <isset property="svn.exit.code"/> 230 </not> 231 </condition> 232 </fail> 233 <fail message="Fatal: command 'svn --version' failed. Please make sure a working copy of svn is installed on your system."> 234 <!-- error code from SVN? Most likely svn is not what we are looking on this system --> 235 <condition> 236 <isfailure code="${svn.exit.code}"/> 237 </condition> 238 </fail> 239 </target> 240 <target name="publish" depends="ensure-svn-present,core-info,commit-current,update-current,clean,dist,commit-dist"> 241 </target> 5 6 <property name="plugin.author" value="Upliner"/> 7 <property name="plugin.class" value="imageryadjust.ImageryAdjustPlugin"/> 8 <property name="plugin.description" value="WMSPlugin-style imagery adjustment mapmode"/> 9 <property name="plugin.icon" value="images/mapmode/adjustimg.png"/> 10 <property name="plugin.link" value="http://wiki.openstreetmap.org/wiki/JOSM/Plugins/ImageryAdjust"/> 11 12 <!-- ** include targets that all plugins have in common ** --> 13 <import file="../build-common.xml"/> 242 14 </project> -
applications/editors/josm/plugins/imageryadjust/src/imageryadjust/ImageryAdjustMapMode.java
r27852 r29261 21 21 import org.openstreetmap.josm.tools.ImageProvider; 22 22 import org.openstreetmap.josm.tools.Shortcut; 23 24 25 public class ImageryAdjustMapMode extends MapMode implements MouseListener, MouseMotionListener, AWTEventListener, MapFrame.MapModeChangeListener{ 23 import utils.TimedKeyReleaseListener; 24 25 26 public class ImageryAdjustMapMode extends MapMode implements MouseListener, MouseMotionListener, MapFrame.MapModeChangeListener{ 26 27 boolean mouseDown; 27 28 EastNorth prevEastNorth; … … 29 30 private MapMode oldMapMode; 30 31 31 private final TreeSet<Integer> set = new TreeSet<Integer>();32 private Timer timer;33 private KeyEvent releaseEvent;34 32 35 33 public ImageryAdjustMapMode(MapFrame mapFrame) { … … 58 56 59 57 60 58 TimedKeyReleaseListener listener; 59 61 60 @Override public void enterMode() { 62 61 super.enterMode(); … … 76 75 adjustingLayer.setVisible(true); 77 76 } 78 Main.map.mapView.addMouseListener(this);77 Main.map.mapView.addMouseListener(this); 79 78 Main.map.mapView.addMouseMotionListener(this); 80 timer = new Timer(0, new ActionListener() {81 @Override82 public void actionPerformed(ActionEvent ae) {83 timer.stop();84 if (set.remove(releaseEvent.getKeyCode())) {85 doKeyReleaseEvent(releaseEvent);86 79 listener = new TimedKeyReleaseListener() { 80 @Override 81 protected void doKeyReleaseEvent(KeyEvent evt) { 82 if (releaseEvent.getKeyCode() == getShortcut().getKeyStroke().getKeyCode()) { 83 if (oldMapMode!=null && !(oldMapMode instanceof ImageryAdjustMapMode)) 84 Main.map.selectMapMode(oldMapMode); 85 } 87 86 } 88 89 }); 90 91 try { 92 Toolkit.getDefaultToolkit().addAWTEventListener(this, 93 AWTEvent.KEY_EVENT_MASK); 94 } catch (SecurityException ex) { 95 } 96 97 87 }; 98 88 } 99 89 … … 103 93 Main.map.mapView.removeMouseMotionListener(this); 104 94 adjustingLayer = null; 105 try { 106 Toolkit.getDefaultToolkit().removeAWTEventListener(this); 107 } catch (SecurityException ex) { 108 } 95 listener.stop(); 109 96 } 110 97 … … 137 124 } 138 125 139 private void doKeyEvent(KeyEvent keyEvent) {140 }141 142 private void doKeyReleaseEvent(KeyEvent releaseEvent) {143 if (releaseEvent.getKeyCode() == getShortcut().getKeyStroke().getKeyCode()) {144 if (oldMapMode!=null && !(oldMapMode instanceof ImageryAdjustMapMode))145 Main.map.selectMapMode(oldMapMode);146 }147 }148 149 126 @Override public boolean layerIsSupported(Layer l) { 150 127 //return hasImageryLayersToAdjust(); … … 153 130 154 131 @Override 155 public void eventDispatched(AWTEvent event) {156 if (event instanceof KeyEvent) {157 KeyEvent e=(KeyEvent) event;158 159 if (event.getID() == KeyEvent.KEY_PRESSED) {160 if (timer.isRunning()) {161 timer.stop();162 } else {163 if (set.add((e.getKeyCode()))) doKeyEvent((KeyEvent) event);164 }165 }166 if (event.getID() == KeyEvent.KEY_RELEASED) {167 if (timer.isRunning()) {168 timer.stop();169 if (set.remove(e.getKeyCode())) doKeyReleaseEvent(e);170 } else {171 releaseEvent = e;172 timer.restart();173 }174 }175 }176 }177 178 @Override179 132 public void mapModeChange(MapMode oldMapMode, MapMode newMapMode) { 180 133 this.oldMapMode = oldMapMode; 181 134 } 182 183 135 184 136 /**
Note:
See TracChangeset
for help on using the changeset viewer.