Revision: 5503 http://sourceforge.net/p/jump-pilot/code/5503 Author: ma15569 Date: 2017-09-23 05:56:16 +0000 (Sat, 23 Sep 2017) Log Message: ----------- Added Syncronize windows zoom (only) tool
Modified Paths: -------------- core/trunk/ChangeLog core/trunk/src/language/jump.properties core/trunk/src/language/jump_cz.properties core/trunk/src/language/jump_de.properties core/trunk/src/language/jump_es.properties core/trunk/src/language/jump_fi.properties core/trunk/src/language/jump_fr.properties core/trunk/src/language/jump_hu.properties core/trunk/src/language/jump_it.properties core/trunk/src/language/jump_ja_JP.properties core/trunk/src/language/jump_ml.properties core/trunk/src/language/jump_pt.properties core/trunk/src/language/jump_pt_BR.properties core/trunk/src/language/jump_ta_IN.properties core/trunk/src/language/jump_te.properties core/trunk/src/language/jump_zh_CN.properties core/trunk/src/language/jump_zh_HK.properties core/trunk/src/org/openjump/core/ui/plugin/window/SynchronizationPlugIn.java Modified: core/trunk/ChangeLog =================================================================== --- core/trunk/ChangeLog 2017-09-22 08:34:37 UTC (rev 5502) +++ core/trunk/ChangeLog 2017-09-23 05:56:16 UTC (rev 5503) @@ -3,7 +3,10 @@ # 2. make sure that lines break at 80 chars for constricted display situations #<-------------------------------- 80 chars ----------------------------------># -2017-09-17 Giuseppe Aruta +2017-09-23 Giuseppe Aruta + * Added Syncronize windows zoom (only) tool + +2017-09-22 Giuseppe Aruta * Added radius/circumference/area display to DrawConstrainedCircleTool as suggested by Jucca [JPP-Devel] Show area while drawing circles? Sept 21 2017 Modified: core/trunk/src/language/jump.properties =================================================================== --- core/trunk/src/language/jump.properties 2017-09-22 08:34:37 UTC (rev 5502) +++ core/trunk/src/language/jump.properties 2017-09-23 05:56:16 UTC (rev 5503) @@ -1744,6 +1744,7 @@ org.openjump.core.ui.plugin.window.SyncronizationPlugIn.Synchronization = Synchronization org.openjump.core.ui.plugin.window.SyncronizationPlugIn.Synchronize-pan-and-zoom = Synchronize pan and zoom org.openjump.core.ui.plugin.window.SyncronizationPlugIn.Synchronize-pan-only = Synchronize pan only +org.openjump.core.ui.plugin.window.SyncronizationPlugIn.Synchronize-zoom-only = Synchronize zoom only org.openjump.core.ui.plugin.wms.AddWmsLayerWizard = WMS Layer org.openjump.core.ui.plugin.wms.AddWmsLayerWizard.Add-WMS-Layer = WMS Layer org.openjump.core.ui.plugin.wms.ZoomToWMSPlugIn.bounding-box-for = Bounding Box(es) for Modified: core/trunk/src/language/jump_cz.properties =================================================================== --- core/trunk/src/language/jump_cz.properties 2017-09-22 08:34:37 UTC (rev 5502) +++ core/trunk/src/language/jump_cz.properties 2017-09-23 05:56:16 UTC (rev 5503) @@ -1505,6 +1505,7 @@ org.openjump.core.ui.plugin.window.SyncronizationPlugIn.Synchronization = Synchronizace org.openjump.core.ui.plugin.window.SyncronizationPlugIn.Synchronize-pan-and-zoom = Synchronizovat posun a zm\u011Bnu m\u011B\u0159\u00EDtka org.openjump.core.ui.plugin.window.SyncronizationPlugIn.Synchronize-pan-only = Synchronizovat pouze posun +org.openjump.core.ui.plugin.window.SyncronizationPlugIn.Synchronize-zoom-only =#T:Synchronize zoom only org.openjump.core.ui.plugin.wms.AddWmsLayerWizard = WMS vrstva org.openjump.core.ui.plugin.wms.AddWmsLayerWizard.Add-WMS-Layer = WMS vrstva org.openjump.core.ui.plugin.wms.ZoomToWMSPlugIn.bounding-box-for = Ohrani\u010Duj\u00EDc\u00ED obd\u00E9ln\u00EDk (obd\u00E9ln\u00EDky) pro Modified: core/trunk/src/language/jump_de.properties =================================================================== --- core/trunk/src/language/jump_de.properties 2017-09-22 08:34:37 UTC (rev 5502) +++ core/trunk/src/language/jump_de.properties 2017-09-23 05:56:16 UTC (rev 5503) @@ -1561,6 +1561,7 @@ org.openjump.core.ui.plugin.window.SyncronizationPlugIn.Synchronization = Synchronisierung org.openjump.core.ui.plugin.window.SyncronizationPlugIn.Synchronize-pan-and-zoom = Synchronisiere Verschieben und Zoomen org.openjump.core.ui.plugin.window.SyncronizationPlugIn.Synchronize-pan-only = Synchronisiere nur Verschiebemodus +org.openjump.core.ui.plugin.window.SyncronizationPlugIn.Synchronize-zoom-only =#T:Synchronize zoom only org.openjump.core.ui.plugin.wms.AddWmsLayerWizard = WMS-Ebene org.openjump.core.ui.plugin.wms.AddWmsLayerWizard.Add-WMS-Layer = WMS-Ebene org.openjump.core.ui.plugin.wms.ZoomToWMSPlugIn.bounding-box-for = Bounding Box(es) f\u00FCr Modified: core/trunk/src/language/jump_es.properties =================================================================== --- core/trunk/src/language/jump_es.properties 2017-09-22 08:34:37 UTC (rev 5502) +++ core/trunk/src/language/jump_es.properties 2017-09-23 05:56:16 UTC (rev 5503) @@ -1491,6 +1491,7 @@ org.openjump.core.ui.plugin.window.SyncronizationPlugIn.Synchronization=Sincronizar org.openjump.core.ui.plugin.window.SyncronizationPlugIn.Synchronize-pan-and-zoom=Sincronizar panoramica y zoom org.openjump.core.ui.plugin.window.SyncronizationPlugIn.Synchronize-pan-only=Sincronizar panoramica solamente +org.openjump.core.ui.plugin.window.SyncronizationPlugIn.Synchronize-zoom-only =Sincronizar zoom solamente org.openjump.core.ui.plugin.wms.AddWmsLayerWizard=Capa WMS org.openjump.core.ui.plugin.wms.AddWmsLayerWizard.Add-WMS-Layer=WMS Layer org.openjump.core.ui.plugin.wms.ZoomToWMSPlugIn.bounding-box-for=Marco de L\u00edmites (BoundingBox) para Modified: core/trunk/src/language/jump_fi.properties =================================================================== --- core/trunk/src/language/jump_fi.properties 2017-09-22 08:34:37 UTC (rev 5502) +++ core/trunk/src/language/jump_fi.properties 2017-09-23 05:56:16 UTC (rev 5503) @@ -1554,6 +1554,7 @@ org.openjump.core.ui.plugin.window.SyncronizationPlugIn.Synchronization=Synkronoi ikkunat org.openjump.core.ui.plugin.window.SyncronizationPlugIn.Synchronize-pan-and-zoom=Synkronoi sek\u00e4 siirtyminen ett\u00e4 zoomaus org.openjump.core.ui.plugin.window.SyncronizationPlugIn.Synchronize-pan-only=Synkronoi vain siirtyminen +org.openjump.core.ui.plugin.window.SyncronizationPlugIn.Synchronize-zoom-only =#T:Synchronize zoom only org.openjump.core.ui.plugin.wms.AddWmsLayerWizard=WMS-taso org.openjump.core.ui.plugin.wms.AddWmsLayerWizard.Add-WMS-Layer=WMS-taso org.openjump.core.ui.plugin.wms.WMSLegendPlugIn=N\u00e4yt\u00e4 WMS-tason selite Modified: core/trunk/src/language/jump_fr.properties =================================================================== --- core/trunk/src/language/jump_fr.properties 2017-09-22 08:34:37 UTC (rev 5502) +++ core/trunk/src/language/jump_fr.properties 2017-09-23 05:56:16 UTC (rev 5503) @@ -1511,6 +1511,7 @@ org.openjump.core.ui.plugin.window.SyncronizationPlugIn.Synchronization = Synchronisation org.openjump.core.ui.plugin.window.SyncronizationPlugIn.Synchronize-pan-and-zoom = Synchroniser les d\u00e9placements et les zooms org.openjump.core.ui.plugin.window.SyncronizationPlugIn.Synchronize-pan-only = Synchroniser les d\u00e9placements +org.openjump.core.ui.plugin.window.SyncronizationPlugIn.Synchronize-zoom-only =#T:Synchronize zoom only org.openjump.core.ui.plugin.wms.AddWmsLayerWizard = Couche WMS org.openjump.core.ui.plugin.wms.AddWmsLayerWizard.Add-WMS-Layer = Couche WMS org.openjump.core.ui.plugin.wms.ZoomToWMSPlugIn.bounding-box-for = Rectangle englobant pour Modified: core/trunk/src/language/jump_hu.properties =================================================================== --- core/trunk/src/language/jump_hu.properties 2017-09-22 08:34:37 UTC (rev 5502) +++ core/trunk/src/language/jump_hu.properties 2017-09-23 05:56:16 UTC (rev 5503) @@ -1501,6 +1501,7 @@ org.openjump.core.ui.plugin.window.SyncronizationPlugIn.Synchronization = Szinkroniz\u00e1l\u00e1s org.openjump.core.ui.plugin.window.SyncronizationPlugIn.Synchronize-pan-and-zoom = Eltol\u00e1s \u00e9s nagy\u00edt\u00e1s szinkroniz\u00e1l\u00e1s org.openjump.core.ui.plugin.window.SyncronizationPlugIn.Synchronize-pan-only = Csak az eltol\u00e1s szinkroniz\u00e1l\u00e1sa +org.openjump.core.ui.plugin.window.SyncronizationPlugIn.Synchronize-zoom-only =#T:Synchronize zoom only org.openjump.core.ui.plugin.wms.AddWmsLayerWizard = WMS r\u00e9teg org.openjump.core.ui.plugin.wms.AddWmsLayerWizard.Add-WMS-Layer = WMS r\u00e9teg org.openjump.core.ui.plugin.wms.ZoomToWMSPlugIn.bounding-box-for = Befoglal\u00f3 t\u00e9glalap ehhez Modified: core/trunk/src/language/jump_it.properties =================================================================== --- core/trunk/src/language/jump_it.properties 2017-09-22 08:34:37 UTC (rev 5502) +++ core/trunk/src/language/jump_it.properties 2017-09-23 05:56:16 UTC (rev 5503) @@ -1497,8 +1497,9 @@ org.openjump.core.ui.plugin.window.MosaicInternalFramesPlugIn.Mosaic=Mosaica org.openjump.core.ui.plugin.window.SyncronizationPlugIn.Desynchronize=Annulla org.openjump.core.ui.plugin.window.SyncronizationPlugIn.Synchronization=Sincronizza -org.openjump.core.ui.plugin.window.SyncronizationPlugIn.Synchronize-pan-and-zoom=Panoramica e zoom -org.openjump.core.ui.plugin.window.SyncronizationPlugIn.Synchronize-pan-only=Panoramica +org.openjump.core.ui.plugin.window.SyncronizationPlugIn.Synchronize-pan-and-zoom=Sincronizza panoramica e zoom +org.openjump.core.ui.plugin.window.SyncronizationPlugIn.Synchronize-pan-only=Sincronizza solo panoramica +org.openjump.core.ui.plugin.window.SyncronizationPlugIn.Synchronize-zoom-only =Sincronizza solo zoom org.openjump.core.ui.plugin.wms.AddWmsLayerWizard=Livello WMS org.openjump.core.ui.plugin.wms.AddWmsLayerWizard.Add-WMS-Layer=Livello WMS org.openjump.core.ui.plugin.wms.ZoomToWMSPlugIn.bounding-box-for=Bounding Box per Modified: core/trunk/src/language/jump_ja_JP.properties =================================================================== --- core/trunk/src/language/jump_ja_JP.properties 2017-09-22 08:34:37 UTC (rev 5502) +++ core/trunk/src/language/jump_ja_JP.properties 2017-09-23 05:56:16 UTC (rev 5503) @@ -1500,6 +1500,7 @@ org.openjump.core.ui.plugin.window.SyncronizationPlugIn.Synchronization = \u540c\u671f org.openjump.core.ui.plugin.window.SyncronizationPlugIn.Synchronize-pan-and-zoom = \u79fb\u52d5\u3068\u30ba\u30fc\u30e0\u3092\u540c\u671f org.openjump.core.ui.plugin.window.SyncronizationPlugIn.Synchronize-pan-only = \u79fb\u52d5\u306e\u307f\u540c\u671f +org.openjump.core.ui.plugin.window.SyncronizationPlugIn.Synchronize-zoom-only =#T:Synchronize zoom only org.openjump.core.ui.plugin.wms.AddWmsLayerWizard = WMS \u30ec\u30a4\u30e4 org.openjump.core.ui.plugin.wms.AddWmsLayerWizard.Add-WMS-Layer = WMS \u30ec\u30a4\u30e4 org.openjump.core.ui.plugin.wms.ZoomToWMSPlugIn.bounding-box-for = \u30d0\u30a6\u30f3\u30c7\u30a3\u30b0\u30dc\u30c3\u30af\u30b9 Modified: core/trunk/src/language/jump_ml.properties =================================================================== --- core/trunk/src/language/jump_ml.properties 2017-09-22 08:34:37 UTC (rev 5502) +++ core/trunk/src/language/jump_ml.properties 2017-09-23 05:56:16 UTC (rev 5503) @@ -2213,6 +2213,7 @@ org.openjump.core.ui.plugin.window.SyncronizationPlugIn.Synchronization = \#T\: org.openjump.core.ui.plugin.window.SyncronizationPlugIn.Synchronize-pan-and-zoom = \#T\: org.openjump.core.ui.plugin.window.SyncronizationPlugIn.Synchronize-pan-only = \#T\: +org.openjump.core.ui.plugin.window.SyncronizationPlugIn.Synchronize-zoom-only =#T:Synchronize zoom only org.openjump.core.ui.plugin.wms.AddWmsLayerWizard = \#T\: org.openjump.core.ui.plugin.wms.AddWmsLayerWizard.Add-WMS-Layer = \#T\: org.openjump.core.ui.plugin.wms.ZoomToWMSPlugIn.bounding-box-for = \#T\: Modified: core/trunk/src/language/jump_pt.properties =================================================================== --- core/trunk/src/language/jump_pt.properties 2017-09-22 08:34:37 UTC (rev 5502) +++ core/trunk/src/language/jump_pt.properties 2017-09-23 05:56:16 UTC (rev 5503) @@ -1501,6 +1501,7 @@ org.openjump.core.ui.plugin.window.SyncronizationPlugIn.Synchronization = Sincroniza\u00e7\u00f5o org.openjump.core.ui.plugin.window.SyncronizationPlugIn.Synchronize-pan-and-zoom = Sicronizar o pan e o zoom org.openjump.core.ui.plugin.window.SyncronizationPlugIn.Synchronize-pan-only = Sicronizar apenas o pan +org.openjump.core.ui.plugin.window.SyncronizationPlugIn.Synchronize-zoom-only =Simcronizar apenas o zoom org.openjump.core.ui.plugin.wms.AddWmsLayerWizard = WMS Layer org.openjump.core.ui.plugin.wms.AddWmsLayerWizard.Add-WMS-Layer = WMS Layer org.openjump.core.ui.plugin.wms.ZoomToWMSPlugIn.bounding-box-for = Caixa de Limite(s) para Modified: core/trunk/src/language/jump_pt_BR.properties =================================================================== --- core/trunk/src/language/jump_pt_BR.properties 2017-09-22 08:34:37 UTC (rev 5502) +++ core/trunk/src/language/jump_pt_BR.properties 2017-09-23 05:56:16 UTC (rev 5503) @@ -1501,6 +1501,7 @@ org.openjump.core.ui.plugin.window.SyncronizationPlugIn.Synchronization = Sincroniza\u00e7\u00f5o org.openjump.core.ui.plugin.window.SyncronizationPlugIn.Synchronize-pan-and-zoom = Sicronizar o pan e o zoom org.openjump.core.ui.plugin.window.SyncronizationPlugIn.Synchronize-pan-only = Sicronizar apenas o pan +org.openjump.core.ui.plugin.window.SyncronizationPlugIn.Synchronize-zoom-only =Sincronizar apenas o zoom org.openjump.core.ui.plugin.wms.AddWmsLayerWizard = WMS Layer org.openjump.core.ui.plugin.wms.AddWmsLayerWizard.Add-WMS-Layer = WMS Layer org.openjump.core.ui.plugin.wms.ZoomToWMSPlugIn.bounding-box-for = Caixa de Limite(s) para Modified: core/trunk/src/language/jump_ta_IN.properties =================================================================== --- core/trunk/src/language/jump_ta_IN.properties 2017-09-22 08:34:37 UTC (rev 5502) +++ core/trunk/src/language/jump_ta_IN.properties 2017-09-23 05:56:16 UTC (rev 5503) @@ -1499,6 +1499,7 @@ org.openjump.core.ui.plugin.window.SyncronizationPlugIn.Synchronization = \u0b92\u0bb0\u0bc1\u0b99\u0bcd\u0b95\u0bbf\u0ba3\u0bc8\u0baa\u0bcd\u0baa\u0bc1 org.openjump.core.ui.plugin.window.SyncronizationPlugIn.Synchronize-pan-and-zoom = Synchronize pan and zoom org.openjump.core.ui.plugin.window.SyncronizationPlugIn.Synchronize-pan-only = Synchronize pan only +org.openjump.core.ui.plugin.window.SyncronizationPlugIn.Synchronize-zoom-only =#T:Synchronize zoom only org.openjump.core.ui.plugin.wms.AddWmsLayerWizard = WMS Layer org.openjump.core.ui.plugin.wms.AddWmsLayerWizard.Add-WMS-Layer = WMS Layer org.openjump.core.ui.plugin.wms.ZoomToWMSPlugIn.bounding-box-for = Bounding Box(es) for Modified: core/trunk/src/language/jump_te.properties =================================================================== --- core/trunk/src/language/jump_te.properties 2017-09-22 08:34:37 UTC (rev 5502) +++ core/trunk/src/language/jump_te.properties 2017-09-23 05:56:16 UTC (rev 5503) @@ -1751,6 +1751,7 @@ org.openjump.core.ui.plugin.window.SyncronizationPlugIn.Synchronization = Synchronization org.openjump.core.ui.plugin.window.SyncronizationPlugIn.Synchronize-pan-and-zoom = Synchronize pan and zoom org.openjump.core.ui.plugin.window.SyncronizationPlugIn.Synchronize-pan-only = Synchronize pan only +org.openjump.core.ui.plugin.window.SyncronizationPlugIn.Synchronize-zoom-only =#T:Synchronize zoom only org.openjump.core.ui.plugin.wms.AddWmsLayerWizard = WMS Layer org.openjump.core.ui.plugin.wms.AddWmsLayerWizard.Add-WMS-Layer = WMS Layer org.openjump.core.ui.plugin.wms.ZoomToWMSPlugIn.bounding-box-for = Bounding Box(es) for Modified: core/trunk/src/language/jump_zh_CN.properties =================================================================== --- core/trunk/src/language/jump_zh_CN.properties 2017-09-22 08:34:37 UTC (rev 5502) +++ core/trunk/src/language/jump_zh_CN.properties 2017-09-23 05:56:16 UTC (rev 5503) @@ -1620,6 +1620,7 @@ org.openjump.core.ui.plugin.window.SyncronizationPlugIn.Synchronization = \u540c\u6b65 org.openjump.core.ui.plugin.window.SyncronizationPlugIn.Synchronize-pan-and-zoom = \u540c\u6b65\u5e73\u79fb\u548c\u7f29\u653e org.openjump.core.ui.plugin.window.SyncronizationPlugIn.Synchronize-pan-only = \u4ec5\u540c\u6b65\u5e73\u79fb +org.openjump.core.ui.plugin.window.SyncronizationPlugIn.Synchronize-zoom-only =#T:Synchronize zoom only org.openjump.core.ui.plugin.wms.AddWmsLayerWizard = WMS\u56fe\u5c42 org.openjump.core.ui.plugin.wms.AddWmsLayerWizard.Add-WMS-Layer = WMS\u56fe\u5c42 org.openjump.core.ui.plugin.wms.ZoomToWMSPlugIn.bounding-box-for = \u8fb9\u6846\uff08ES\uff09\u7684\u4e3a Modified: core/trunk/src/language/jump_zh_HK.properties =================================================================== --- core/trunk/src/language/jump_zh_HK.properties 2017-09-22 08:34:37 UTC (rev 5502) +++ core/trunk/src/language/jump_zh_HK.properties 2017-09-23 05:56:16 UTC (rev 5503) @@ -1619,6 +1619,7 @@ org.openjump.core.ui.plugin.window.SyncronizationPlugIn.Synchronization = \u540c\u6b65 org.openjump.core.ui.plugin.window.SyncronizationPlugIn.Synchronize-pan-and-zoom = \u540c\u6b65\u5e73\u79fb\u548c\u7e2e\u653e org.openjump.core.ui.plugin.window.SyncronizationPlugIn.Synchronize-pan-only = \u50c5\u540c\u6b65\u5e73\u79fb +org.openjump.core.ui.plugin.window.SyncronizationPlugIn.Synchronize-zoom-only =#T:Synchronize zoom only org.openjump.core.ui.plugin.wms.AddWmsLayerWizard = WMS\u5716\u5c64 org.openjump.core.ui.plugin.wms.AddWmsLayerWizard.Add-WMS-Layer = WMS\u5716\u5c64 org.openjump.core.ui.plugin.wms.ZoomToWMSPlugIn.bounding-box-for = \u908a\u6846\uff08ES\uff09\u7684\u70ba Modified: core/trunk/src/org/openjump/core/ui/plugin/window/SynchronizationPlugIn.java =================================================================== --- core/trunk/src/org/openjump/core/ui/plugin/window/SynchronizationPlugIn.java 2017-09-22 08:34:37 UTC (rev 5502) +++ core/trunk/src/org/openjump/core/ui/plugin/window/SynchronizationPlugIn.java 2017-09-23 05:56:16 UTC (rev 5503) @@ -25,7 +25,16 @@ package org.openjump.core.ui.plugin.window; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.geom.Point2D; + +import javax.swing.ButtonGroup; +import javax.swing.JInternalFrame; +import javax.swing.JRadioButtonMenuItem; + import org.openjump.core.ui.plugin.AbstractUiPlugIn; + import com.vividsolutions.jts.geom.Envelope; import com.vividsolutions.jump.I18N; import com.vividsolutions.jump.workbench.WorkbenchContext; @@ -38,13 +47,6 @@ import com.vividsolutions.jump.workbench.ui.Viewport; import com.vividsolutions.jump.workbench.ui.ViewportListener; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; -import java.awt.geom.Point2D; -import javax.swing.ButtonGroup; -import javax.swing.JRadioButtonMenuItem; -import javax.swing.JInternalFrame; - /** * A plugin to synchronize / desynchronize LayerViewPanels. * @@ -51,6 +53,8 @@ * @author Michael Michaud * @version 0.1 (2008-04-06) * @since 1.2F + * + * Giuseppe Aruta [2017-09-23] Added Syncronize zoom only */ public class SynchronizationPlugIn extends AbstractUiPlugIn { @@ -57,7 +61,7 @@ static ViewportListener vpl; public SynchronizationPlugIn() { - super(); + super(); } public SynchronizationPlugIn(String name) { @@ -64,59 +68,83 @@ super(name); } + @Override public void initialize(final PlugInContext context) throws Exception { // Set the workbenchContext used in getEnableCheck method super.initialize(context); - final JRadioButtonMenuItem desynchronizeMI = - new JRadioButtonMenuItem(I18N.get("org.openjump.core.ui.plugin.window.SyncronizationPlugIn.Desynchronize")); - final JRadioButtonMenuItem synchronizePanMI = - new JRadioButtonMenuItem(I18N.get("org.openjump.core.ui.plugin.window.SyncronizationPlugIn.Synchronize-pan-only")); - final JRadioButtonMenuItem synchronizeAllMI = - new JRadioButtonMenuItem(I18N.get("org.openjump.core.ui.plugin.window.SyncronizationPlugIn.Synchronize-pan-and-zoom")); + final JRadioButtonMenuItem desynchronizeMI = new JRadioButtonMenuItem( + I18N.get("org.openjump.core.ui.plugin.window.SyncronizationPlugIn.Desynchronize")); + final JRadioButtonMenuItem synchronizePanMI = new JRadioButtonMenuItem( + I18N.get("org.openjump.core.ui.plugin.window.SyncronizationPlugIn.Synchronize-pan-only")); + final JRadioButtonMenuItem synchronizeZoomMI = new JRadioButtonMenuItem( + I18N.get("org.openjump.core.ui.plugin.window.SyncronizationPlugIn.Synchronize-zoom-only")); + final JRadioButtonMenuItem synchronizeAllMI = new JRadioButtonMenuItem( + I18N.get("org.openjump.core.ui.plugin.window.SyncronizationPlugIn.Synchronize-pan-and-zoom")); ButtonGroup bgroup = new ButtonGroup(); bgroup.add(desynchronizeMI); bgroup.add(synchronizePanMI); + bgroup.add(synchronizeZoomMI); bgroup.add(synchronizeAllMI); - + desynchronizeMI.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) {desynchronize();} + @Override + public void actionPerformed(ActionEvent e) { + desynchronize(); + } }); synchronizePanMI.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) {synchronize(false);} + @Override + public void actionPerformed(ActionEvent e) { + synchronize(false); + } }); synchronizeAllMI.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) {synchronize(true);} + @Override + public void actionPerformed(ActionEvent e) { + synchronize(true); + } }); + synchronizeZoomMI.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + synchronizeZoom(true); + } + }); context.getFeatureInstaller().addMainMenuItem( - new String[]{MenuNames.WINDOW, MenuNames.WINDOW_SYNCHRONIZATION}, - this, - synchronizePanMI, - 0); + new String[] { MenuNames.WINDOW, + MenuNames.WINDOW_SYNCHRONIZATION }, this, + synchronizePanMI, 0); context.getFeatureInstaller().addMainMenuItem( - new String[]{MenuNames.WINDOW, MenuNames.WINDOW_SYNCHRONIZATION}, - this, - synchronizeAllMI, - 1); + new String[] { MenuNames.WINDOW, + MenuNames.WINDOW_SYNCHRONIZATION }, this, + synchronizeZoomMI, 1); context.getFeatureInstaller().addMainMenuItem( - new String[]{MenuNames.WINDOW, MenuNames.WINDOW_SYNCHRONIZATION}, - this, - desynchronizeMI, - 2); + new String[] { MenuNames.WINDOW, + MenuNames.WINDOW_SYNCHRONIZATION }, this, + synchronizeAllMI, 2); + context.getFeatureInstaller().addMainMenuItem( + new String[] { MenuNames.WINDOW, + MenuNames.WINDOW_SYNCHRONIZATION }, this, + desynchronizeMI, 3); } + @Override public String getName() { - return I18N.get("org.openjump.core.ui.plugin.window.SyncronizationPlugIn.Synchronization"); + return I18N + .get("org.openjump.core.ui.plugin.window.SyncronizationPlugIn.Synchronization"); } + @Override public EnableCheck getEnableCheck() { - EnableCheckFactory checkFactory = new EnableCheckFactory(workbenchContext); - return new MultiEnableCheck() - .add(checkFactory.createWindowWithLayerViewPanelMustBeActiveCheck()); + EnableCheckFactory checkFactory = new EnableCheckFactory( + workbenchContext); + return new MultiEnableCheck().add(checkFactory + .createWindowWithLayerViewPanelMustBeActiveCheck()); } public void synchronize(boolean panAndZoom) { @@ -123,67 +151,155 @@ ViewportListener oldViewportListener = vpl; vpl = createViewportListener(panAndZoom); // add the listener to every active map window - JInternalFrame[] iframes = workbenchContext.getWorkbench().getFrame().getInternalFrames(); - for (JInternalFrame iframe : iframes) { - if (iframe instanceof TaskFrame) { - // Remove the old listener if any before adding a new one - // Thus, one can reinitialize synchronization if the number - // of map windows change - // Ideally, one should intercept new window creation or window focus - // change to add new listeners to new windows.. - ((TaskFrame)iframe).getLayerViewPanel().getViewport().removeListener(oldViewportListener); - ((TaskFrame)iframe).getLayerViewPanel().getViewport().addListener(vpl); - } + JInternalFrame[] iframes = workbenchContext.getWorkbench().getFrame() + .getInternalFrames(); + for (JInternalFrame iframe : iframes) { + if (iframe instanceof TaskFrame) { + // Remove the old listener if any before adding a new one + // Thus, one can reinitialize synchronization if the number + // of map windows change + // Ideally, one should intercept new window creation or window + // focus + // change to add new listeners to new windows.. + ((TaskFrame) iframe).getLayerViewPanel().getViewport() + .removeListener(oldViewportListener); + ((TaskFrame) iframe).getLayerViewPanel().getViewport() + .addListener(vpl); } + } } + public void synchronizeZoom(boolean zoom) { + ViewportListener oldViewportListener = vpl; + vpl = createViewportListenerZoom(zoom); + // add the listener to every active map window + JInternalFrame[] iframes = workbenchContext.getWorkbench().getFrame() + .getInternalFrames(); + for (JInternalFrame iframe : iframes) { + if (iframe instanceof TaskFrame) { + // Remove the old listener if any before adding a new one + // Thus, one can reinitialize synchronization if the number + // of map windows change + // Ideally, one should intercept new window creation or window + // focus + // change to add new listeners to new windows.. + ((TaskFrame) iframe).getLayerViewPanel().getViewport() + .removeListener(oldViewportListener); + ((TaskFrame) iframe).getLayerViewPanel().getViewport() + .addListener(vpl); + + } + } + } + public void desynchronize() { ViewportListener oldViewPortListener = vpl; vpl = null; // add the listener to every active map window - JInternalFrame[] iframes = workbenchContext.getWorkbench().getFrame().getInternalFrames(); + JInternalFrame[] iframes = workbenchContext.getWorkbench().getFrame() + .getInternalFrames(); for (JInternalFrame iframe : iframes) { if (iframe instanceof TaskFrame) { // Remove the old listener if any before adding a new one // Thus, one can reinitialize synchronization if the number // of map windows change - // Ideally, one should intercept new window creation or window focus + // Ideally, one should intercept new window creation or window + // focus // change to add new listeners to new windows.. - ((TaskFrame)iframe).getLayerViewPanel().getViewport().removeListener(oldViewPortListener); + ((TaskFrame) iframe).getLayerViewPanel().getViewport() + .removeListener(oldViewPortListener); } } } - private ViewportListener createViewportListener(final boolean panAndZoom) { + private ViewportListener createViewportListener(final boolean zoom) { final WorkbenchContext context = workbenchContext; return new ViewportListener() { + @Override public void zoomChanged(Envelope modelEnvelope) { - JInternalFrame[] iframes = context.getWorkbench().getFrame().getInternalFrames(); + JInternalFrame[] iframes = context.getWorkbench().getFrame() + .getInternalFrames(); for (JInternalFrame iframe : iframes) { - if (iframe instanceof TaskFrame && - ((TaskFrame)iframe).getLayerViewPanel().getViewport() != - context.getLayerViewPanel().getViewport()) { + if (iframe instanceof TaskFrame + && ((TaskFrame) iframe).getLayerViewPanel() + .getViewport() != context + .getLayerViewPanel().getViewport()) { try { // Copy of method viewport.zoom(envelope) - // without the statement fireZoomChanged(modelEnvelope) + // without the statement + // fireZoomChanged(modelEnvelope) // to avoid entering an infinite loop - // window 1 change --> window 2 change --> window 1 change ... - Viewport viewport = ((TaskFrame)iframe).getLayerViewPanel().getViewport(); + // window 1 change --> window 2 change --> window 1 + // change ... + Viewport viewport = ((TaskFrame) iframe) + .getLayerViewPanel().getViewport(); double w = viewport.getPanel().getWidth(); double h = viewport.getPanel().getHeight(); double scale = viewport.getScale(); + if (zoom) { + scale = Math.min(w / modelEnvelope.getWidth(), + h / modelEnvelope.getHeight()); + } + double xCenteringOffset = ((w / scale) - modelEnvelope + .getWidth()) / 2.0; + double yCenteringOffset = ((h / scale) - modelEnvelope + .getHeight()) / 2.0; + Point2D.Double viewOriginAsPerceivedByModel = new Point2D.Double( + modelEnvelope.getMinX() - xCenteringOffset, + modelEnvelope.getMinY() - yCenteringOffset); + viewport.initialize(scale, + viewOriginAsPerceivedByModel); + viewport.update(); + } catch (Exception e) { + } + } + } + } + }; + } + + private ViewportListener createViewportListenerZoom(final boolean panAndZoom) { + final WorkbenchContext context = workbenchContext; + return new ViewportListener() { + @Override + public void zoomChanged(Envelope modelEnvelope) { + JInternalFrame[] iframes = context.getWorkbench().getFrame() + .getInternalFrames(); + for (JInternalFrame iframe : iframes) { + if (iframe instanceof TaskFrame + && ((TaskFrame) iframe).getLayerViewPanel() + .getViewport() != context + .getLayerViewPanel().getViewport()) { + try { + // Copy of method viewport.zoom(envelope) + // without the statement + // fireZoomChanged(modelEnvelope) + // to avoid entering an infinite loop + // window 1 change --> window 2 change --> window 1 + // change ... + Viewport viewport = ((TaskFrame) iframe) + .getLayerViewPanel().getViewport(); + double w = viewport.getPanel().getWidth(); + double h = viewport.getPanel().getHeight(); + double scale = viewport.getScale(); + if (panAndZoom) { scale = Math.min(w / modelEnvelope.getWidth(), - h / modelEnvelope.getHeight()); + h / modelEnvelope.getHeight()); } - double xCenteringOffset = ((w / scale) - modelEnvelope.getWidth()) / 2.0; - double yCenteringOffset = ((h / scale) - modelEnvelope.getHeight()) / 2.0; - Point2D.Double viewOriginAsPerceivedByModel = - new Point2D.Double(modelEnvelope.getMinX() - xCenteringOffset, + + double xCenteringOffset = ((w / scale) - modelEnvelope + .getWidth()) / 2.0; + double yCenteringOffset = ((h / scale) - modelEnvelope + .getHeight()) / 2.0; + Point2D.Double viewOriginAsPerceivedByModel = new Point2D.Double( + modelEnvelope.getMinX() - xCenteringOffset, modelEnvelope.getMinY() - yCenteringOffset); - viewport.initialize(scale, viewOriginAsPerceivedByModel); + viewport.initialize(scale, + viewport.getOriginInModelCoordinates()); viewport.update(); - } catch(Exception e) {} + } catch (Exception e) { + } } } } @@ -191,10 +307,11 @@ } /** - * For this plugin, this method is unused - * All the work is defined in action listeners + * For this plugin, this method is unused All the work is defined in action + * listeners */ - public boolean execute(PlugInContext context) throws Exception{ + @Override + public boolean execute(PlugInContext context) throws Exception { return true; } ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot _______________________________________________ Jump-pilot-devel mailing list Jump-pilot-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel