Revision: 4511
          http://sourceforge.net/p/jump-pilot/code/4511
Author:   ma15569
Date:     2015-06-25 08:55:03 +0000 (Thu, 25 Jun 2015)
Log Message:
-----------
2015-06-25 Giuseppe Aruta <giuseppe_ar...@yahoo.it>
  * Reorganized Select Item context menu: move some plugins to a new "Other 
tools" submenu
  * Add Measure Selected Features plugin to Select Items context menu>Other 
tools submenu

Modified Paths:
--------------
    core/trunk/ChangeLog
    core/trunk/scripts/default-plugins.xml
    
core/trunk/src/org/openjump/core/ui/plugin/edit/ReplicateSelectedItemsPlugIn.java
    
core/trunk/src/org/openjump/core/ui/plugin/mousemenu/EditSelectedSidePlugIn.java
    
core/trunk/src/org/openjump/core/ui/plugin/mousemenu/MoveAlongAnglePlugIn.java
    core/trunk/src/org/openjump/core/ui/plugin/mousemenu/RotatePlugIn.java

Added Paths:
-----------
    
core/trunk/src/org/openjump/core/ui/plugin/mousemenu/MeasureSelectedPlugIn.java

Modified: core/trunk/ChangeLog
===================================================================
--- core/trunk/ChangeLog        2015-06-25 08:41:54 UTC (rev 4510)
+++ core/trunk/ChangeLog        2015-06-25 08:55:03 UTC (rev 4511)
@@ -1,5 +1,9 @@
 # for display continuity sake please use 2 spaces instead of tabs
 
+2015-06-25 Giuseppe Aruta <giuseppe_ar...@yahoo.it>
+  * Reorganized Select Item context menu: move some plugins to a new "Other 
tools" submenu
+  * Add Measure Selected Features plugin to Select Items context menu>Other 
tools submenu
+   
 2015-06-24 mmichaud <m.michael.mich...@orange.fr>
   * AttributeTablePanel : simplify code, avoid useless selection clearing and 
avoid a
     recursive loop [could not reproduce a case where features can be deleted 
from the

Modified: core/trunk/scripts/default-plugins.xml
===================================================================
--- core/trunk/scripts/default-plugins.xml      2015-06-25 08:41:54 UTC (rev 
4510)
+++ core/trunk/scripts/default-plugins.xml      2015-06-25 08:55:03 UTC (rev 
4511)
@@ -266,8 +266,17 @@
        </plug-in>
        <plug-in>
                org.openjump.core.ui.plugin.edit.ReplicateSelectedItemsPlugIn
+       <menus>
+                       <main-menu menupath="MenuNames.EDIT" install="true" />
+               </menus>
        </plug-in>
        <plug-in>
+               org.openjump.core.ui.plugin.mousemenu.MeasureSelectedPlugIn
+               <menus>
+                       <main-menu menupath="MenuNames.EDIT" install="true" />
+               </menus>
+       </plug-in>
+       <plug-in>
                org.openjump.core.ui.plugin.layer.ExtractLayersByGeometry
        </plug-in>
        <plug-in>
@@ -520,6 +529,10 @@
                        <main-menu menupath="MenuNames.LAYER" install="true" />
                </menus>
        </plug-in>
+
+       
+
+
        <!-- ====================== CUSTOMIZE menu 
================================== -->
        <plug-in>
                com.vividsolutions.jump.workbench.ui.plugin.OptionsPlugIn
@@ -839,10 +852,6 @@
        
        <plug-in> org.openjump.core.ui.plugin.raster.RasterQueryPlugIn
        </plug-in>
-       
-       <extension>
-               org.openjump.core.rasterimage.styler.RasterStylesExtension
-       </extension>
 
        <!--- ======================= WINDOW menu 
=============================== -->
        <plug-in>
@@ -1264,14 +1273,23 @@
                        <layername-popup-wms install="true" />
                </menus>
        </plug-in>
+
        <separator />
+
        <plug-in>
                org.openjump.core.ui.plugin.wms.WMSLegendPlugIn
                <menus>
                        <layername-popup-wms install="true" />
                </menus>
        </plug-in>
+        <plug-in>
+               org.openjump.core.ui.plugin.wms.WMSInfoPlugIn
+               <menus>
+                       <layername-popup-wms install="true" />
+               </menus>
+       </plug-in>
 
+
        <!-- ================ Sextante Raster LayerName Popup Menu 
=============== -->
        <plug-in>
                org.openjump.core.ui.plugin.layer.ToggleVisibilityPlugIn
@@ -1288,12 +1306,16 @@
                        <layername-popup-raster install="true" />
                </menus>
        </plug-in>
-       <plug-in>
+
+
+       
+              <plug-in>
                
org.openjump.core.ui.plugin.layer.pirolraster.ChangeRasterImagePropertiesPlugIn
                <menus>
                        <layername-popup-raster install="true" />
                </menus>
        </plug-in>
+ 
        <plug-in>
                
org.openjump.core.ui.plugin.layer.pirolraster.ExtractSelectedPartOfImage
                <menus>
@@ -1454,25 +1476,16 @@
 
        <separator />
 
+       
+       
        <plug-in>
-               
com.vividsolutions.jump.workbench.ui.plugin.VerticesInFencePlugIn
-               <menus>
-                       <layerview-popup install="true" />
-               </menus>
-       </plug-in>
-       <plug-in>
                org.openjump.core.ui.plugin.mousemenu.DuplicateItemPlugIn
                <menus>
                        <layerview-popup install="true" />
                </menus>
        </plug-in>
+       
        <plug-in>
-               org.openjump.core.ui.plugin.edit.ReplicateSelectedItemsPlugIn
-               <menus>
-                       <layerview-popup />
-               </menus>
-       </plug-in>
-       <plug-in>
                
com.vividsolutions.jump.workbench.ui.plugin.CombineSelectedFeaturesPlugIn
                <menus>
                        <layerview-popup install="true" />
@@ -1490,11 +1503,9 @@
                        <layerview-popup install="true" />
                </menus>
        </plug-in>
+       
        <plug-in>
-               
com.vividsolutions.jump.workbench.ui.plugin.clipboard.CopyThisCoordinatePlugIn
-               <menus>
-                       <layerview-popup install="true" />
-               </menus>
+               org.openjump.core.ui.plugin.mousemenu.ReverseOrientationPlugIn
        </plug-in>
 
        <plug-in>
@@ -1521,19 +1532,52 @@
        <plug-in>
                
org.openjump.core.ui.plugin.mousemenu.SplitPolygonsNodeLinesPlugIn
        </plug-in>
+
+       
        <plug-in>
-               org.openjump.core.ui.plugin.mousemenu.MoveAlongAnglePlugIn
+               org.openjump.core.ui.plugin.edit.ReplicateSelectedItemsPlugIn
+               <menus>
+                       <layerview-popup menupath="MenuNames.TOOLS.OTHERS" 
install="true" />
+               </menus>
        </plug-in>
-       <plug-in>
+        <plug-in>
                org.openjump.core.ui.plugin.mousemenu.RotatePlugIn
+               <menus>
+                       <layerview-popup menupath="MenuNames.TOOLS.OTHERS" 
install="true" />
+               </menus>
        </plug-in>
        <plug-in>
+               org.openjump.core.ui.plugin.mousemenu.MeasureSelectedPlugIn
+               <menus>
+                       <layerview-popup menupath="MenuNames.TOOLS.OTHERS" 
install="true" />
+               </menus>
+       </plug-in>
+       <plug-in>
+               org.openjump.core.ui.plugin.mousemenu.MoveAlongAnglePlugIn
+               <menus>
+                       <layerview-popup menupath="MenuNames.TOOLS.OTHERS" 
install="true" />
+               </menus>
+       </plug-in>
+       <plug-in>
                org.openjump.core.ui.plugin.mousemenu.EditSelectedSidePlugIn
+               <menus>
+                       <layerview-popup menupath="MenuNames.TOOLS.OTHERS" 
install="true" />
+               </menus>
        </plug-in>
        <plug-in>
-               org.openjump.core.ui.plugin.mousemenu.ReverseOrientationPlugIn
+               
com.vividsolutions.jump.workbench.ui.plugin.clipboard.CopyThisCoordinatePlugIn
+               <menus>
+                       <layerview-popup menupath="MenuNames.TOOLS.OTHERS" 
install="true" />
+               </menus>
        </plug-in>
+       <plug-in>
+               
com.vividsolutions.jump.workbench.ui.plugin.VerticesInFencePlugIn
+               <menus>
 
+                       <layerview-popup menupath="MenuNames.TOOLS.OTHERS" 
install="true" />
+               </menus>
+       </plug-in>
+       
 
        <!-- ================ AttributeTab Popup Menu 
============================== -->
        <plug-in>
@@ -1616,9 +1660,9 @@
        <plug-in>
                
org.openjump.core.ui.plugin.edittoolbox.ConstrainedMoveVertexPlugIn
        </plug-in>
-       <!--plug-in>
+       <plug-in>
                org.openjump.core.ui.plugin.edittoolbox.RotateSelectedItemPlugIn
-       </plug-in-->
+       </plug-in>
        <plug-in>
                org.openjump.core.ui.plugin.edittoolbox.SelectOneItemPlugIn
        </plug-in>

Modified: 
core/trunk/src/org/openjump/core/ui/plugin/edit/ReplicateSelectedItemsPlugIn.java
===================================================================
--- 
core/trunk/src/org/openjump/core/ui/plugin/edit/ReplicateSelectedItemsPlugIn.java
   2015-06-25 08:41:54 UTC (rev 4510)
+++ 
core/trunk/src/org/openjump/core/ui/plugin/edit/ReplicateSelectedItemsPlugIn.java
   2015-06-25 08:55:03 UTC (rev 4511)
@@ -39,6 +39,15 @@
 
 package org.openjump.core.ui.plugin.edit;
 
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Iterator;
+
+import javax.swing.ImageIcon;
+import javax.swing.JComboBox;
+
+import org.openjump.core.ui.images.IconLoader;
+
 import com.vividsolutions.jts.geom.Geometry;
 import com.vividsolutions.jump.I18N;
 import com.vividsolutions.jump.feature.Feature;
@@ -48,6 +57,8 @@
 import com.vividsolutions.jump.feature.FeatureUtil;
 import com.vividsolutions.jump.task.TaskMonitor;
 import com.vividsolutions.jump.workbench.WorkbenchContext;
+import com.vividsolutions.jump.workbench.model.Layer;
+import com.vividsolutions.jump.workbench.model.StandardCategoryNames;
 import com.vividsolutions.jump.workbench.plugin.AbstractPlugIn;
 import com.vividsolutions.jump.workbench.plugin.EnableCheckFactory;
 import com.vividsolutions.jump.workbench.plugin.MultiEnableCheck;
@@ -55,198 +66,209 @@
 import com.vividsolutions.jump.workbench.plugin.ThreadedPlugIn;
 import com.vividsolutions.jump.workbench.ui.EditTransaction;
 import com.vividsolutions.jump.workbench.ui.GUIUtil;
-import com.vividsolutions.jump.workbench.ui.LayerViewPanel;
-import com.vividsolutions.jump.workbench.ui.MenuNames;
 import com.vividsolutions.jump.workbench.ui.MultiInputDialog;
 
-import java.util.ArrayList;
-import java.util.Iterator;
-import com.vividsolutions.jump.workbench.model.Layer;
-import com.vividsolutions.jump.workbench.model.StandardCategoryNames;
-
-import java.util.Collection;
-
-import javax.swing.ImageIcon;
-import javax.swing.JComboBox;
-
-import org.openjump.core.ui.images.IconLoader;
-
-
 /**
  * Replicates/ copys selected items in a new or existing layer
- *
+ * 
  * @author sstein
- *
+ * 
  **/
-public class ReplicateSelectedItemsPlugIn extends AbstractPlugIn implements 
ThreadedPlugIn{
+public class ReplicateSelectedItemsPlugIn extends AbstractPlugIn implements
+        ThreadedPlugIn {
 
-       public static ImageIcon ICON = IconLoader.icon("shape_replicate.png");  
-    private String T1 ="Replicate to new layer?";
-    private String CLAYER = "otherwise select layer";    
+    public static ImageIcon ICON = IconLoader.icon("shape_replicate.png");
+    private String T1 = "Replicate to new layer?";
+    private String CLAYER = "otherwise select layer";
     boolean newLayer = true;
     private Layer itemlayer = null;
     private boolean copyAsGeometry = false;
 
+    public String getName() {
+        return I18N
+                
.get("org.openjump.core.ui.plugin.edit.ReplicateSelectedItemsPlugIn");
+    }
 
     public void initialize(PlugInContext context) throws Exception {
-       
-                   context.getFeatureInstaller().addPopupMenuItem(
-                               LayerViewPanel.popupMenu(),
-                                       this,
-                                       
I18N.get("org.openjump.core.ui.plugin.edit.ReplicateSelectedItemsPlugIn") + 
"...",
-                                       false, 
-                                       this.getIcon(),
-                    createEnableCheck(context.getWorkbenchContext()));
 
-                   context.getFeatureInstaller().addMainMenuItem(this,
-                       new String[]
-                               {MenuNames.EDIT},
-                               
I18N.get("org.openjump.core.ui.plugin.edit.ReplicateSelectedItemsPlugIn") + 
"..." + "{pos:16}", 
-                               false, 
-                               this.getIcon(), 
-                               
createEnableCheck(context.getWorkbenchContext()));
-                   
-               this.T1 = 
I18N.get("org.openjump.core.ui.plugin.edit.ReplicateSelectedItemsPlugIn.replicate-to-new-layer");
             
-               this.CLAYER = 
I18N.get("org.openjump.core.ui.plugin.edit.ReplicateSelectedItemsPlugIn.otherwise-select-target-layer");
+        /*
+         * context.getFeatureInstaller().addPopupMenuItem(
+         * LayerViewPanel.popupMenu(), this,
+         * 
I18N.get("org.openjump.core.ui.plugin.edit.ReplicateSelectedItemsPlugIn"
+         * ) + "...", false, this.getIcon(),
+         * createEnableCheck(context.getWorkbenchContext()));
+         */
+
+        /*
+         * context.getFeatureInstaller() .addMainMenuItem( this, new String[] {
+         * MenuNames.EDIT },
+         * 
I18N.get("org.openjump.core.ui.plugin.edit.ReplicateSelectedItemsPlugIn"
+         * ) + "..." + "{pos:16}", false, this.getIcon(),
+         * createEnableCheck(context.getWorkbenchContext()));
+         */
+
+        this.T1 = I18N
+                
.get("org.openjump.core.ui.plugin.edit.ReplicateSelectedItemsPlugIn.replicate-to-new-layer");
+        this.CLAYER = I18N
+                
.get("org.openjump.core.ui.plugin.edit.ReplicateSelectedItemsPlugIn.otherwise-select-target-layer");
     }
-    
-    public static MultiEnableCheck createEnableCheck(WorkbenchContext 
workbenchContext) {
-        EnableCheckFactory checkFactory = new 
EnableCheckFactory(workbenchContext);
 
-        return new MultiEnableCheck()
-                        
.add(checkFactory.createAtLeastNItemsMustBeSelectedCheck(1));
+    public static MultiEnableCheck createEnableCheck(
+            WorkbenchContext workbenchContext) {
+        EnableCheckFactory checkFactory = new EnableCheckFactory(
+                workbenchContext);
+
+        return new MultiEnableCheck().add(checkFactory
+                .createAtLeastNItemsMustBeSelectedCheck(1));
     }
-    
-       public boolean execute(PlugInContext context) throws Exception{
-           this.reportNothingToUndoYet(context);
-           MultiInputDialog dialog = new MultiInputDialog(
-                   context.getWorkbenchFrame(), getName(), true);
-               setDialogValues(dialog, context);
-               GUIUtil.centreOnWindow(dialog);
-               dialog.setVisible(true);
-               if (! dialog.wasOKPressed()) { return false; }
-               getDialogValues(dialog);
-               return true;
-       }
-       
-    private void setDialogValues(MultiInputDialog dialog, PlugInContext 
context)
-         {
-       String sidebarString = 
I18N.get("org.openjump.core.ui.plugin.edit.ReplicateSelectedItemsPlugIn.replicates-selected-items-if-all-have-same-attribute-schema");
-           dialog.setSideBarDescription(sidebarString);
-               //"Replicates selected items if all have same feature schema"
-           dialog.addCheckBox(T1,true);
-       JComboBox addLayerComboBoxBuild = dialog.addLayerComboBox(this.CLAYER, 
context.getCandidateLayer(0), null, context.getLayerManager());
-         }
 
-       private void getDialogValues(MultiInputDialog dialog) {
-           this.newLayer = dialog.getBoolean(T1);
-       this.itemlayer = dialog.getLayer(this.CLAYER);
-         }
-       
-    public void run(TaskMonitor monitor, PlugInContext context) throws 
Exception{                      
-           this.replicate(context, monitor, this.newLayer);
-           System.gc();                
-       }
-       
-       private boolean replicate(PlugInContext context, TaskMonitor monitor, 
boolean newLayer) throws Exception{
-               String statusMessage1 = 
I18N.get("org.openjump.core.ui.plugin.edit.ReplicateSelectedItemsPlugIn.item");
-               String statusMessage2 = 
I18N.get("org.openjump.core.ui.plugin.edit.ReplicateSelectedItemsPlugIn.no-replication-because-different-attribute-schema");
-               
-           boolean hasBeenCalled = false;
-           System.gc(); //flush garbage collector
-           // --------------------------           
-           //-- get selected items
-           final Collection features = 
context.getLayerViewPanel().getSelectionManager().getFeaturesWithSelectedItems();
+    public boolean execute(PlugInContext context) throws Exception {
+        this.reportNothingToUndoYet(context);
+        MultiInputDialog dialog = new MultiInputDialog(
+                context.getWorkbenchFrame(), getName(), true);
+        setDialogValues(dialog, context);
+        GUIUtil.centreOnWindow(dialog);
+        dialog.setVisible(true);
+        if (!dialog.wasOKPressed()) {
+            return false;
+        }
+        getDialogValues(dialog);
+        return true;
+    }
 
-        if (newLayer == false){
+    private void setDialogValues(MultiInputDialog dialog, PlugInContext 
context) {
+        String sidebarString = I18N
+                
.get("org.openjump.core.ui.plugin.edit.ReplicateSelectedItemsPlugIn.replicates-selected-items-if-all-have-same-attribute-schema");
+        dialog.setSideBarDescription(sidebarString);
+        // "Replicates selected items if all have same feature schema"
+        dialog.addCheckBox(T1, true);
+        JComboBox addLayerComboBoxBuild = dialog.addLayerComboBox(this.CLAYER,
+                context.getCandidateLayer(0), null, context.getLayerManager());
+    }
 
-            EditTransaction transaction = new EditTransaction(new ArrayList(), 
this.getName(), this.itemlayer,
-                    this.isRollingBackInvalidEdits(context), true, 
context.getWorkbenchFrame());
+    private void getDialogValues(MultiInputDialog dialog) {
+        this.newLayer = dialog.getBoolean(T1);
+        this.itemlayer = dialog.getLayer(this.CLAYER);
+    }
 
-               FeatureCollection actualLayerFeatures = 
this.itemlayer.getFeatureCollectionWrapper().getWrappee();
-               FeatureSchema fschema = 
this.itemlayer.getFeatureCollectionWrapper().getFeatureSchema();
-               //-- check if schema is the same if yes add the feature (or 
change Schema)
-               Iterator iter = features.iterator();
-               int i=0; Feature fi = null;
-               while (iter.hasNext()){
-                       i++;
-                       fi = (Feature)iter.next();
-                   if(fschema.equals(fi.getSchema())){
-                    Feature feature = (Feature)fi.clone();
+    public void run(TaskMonitor monitor, PlugInContext context)
+            throws Exception {
+        this.replicate(context, monitor, this.newLayer);
+        System.gc();
+    }
+
+    private boolean replicate(PlugInContext context, TaskMonitor monitor,
+            boolean newLayer) throws Exception {
+        String statusMessage1 = I18N
+                
.get("org.openjump.core.ui.plugin.edit.ReplicateSelectedItemsPlugIn.item");
+        String statusMessage2 = I18N
+                
.get("org.openjump.core.ui.plugin.edit.ReplicateSelectedItemsPlugIn.no-replication-because-different-attribute-schema");
+
+        boolean hasBeenCalled = false;
+        System.gc(); // flush garbage collector
+        // --------------------------
+        // -- get selected items
+        final Collection features = context.getLayerViewPanel()
+                .getSelectionManager().getFeaturesWithSelectedItems();
+
+        if (newLayer == false) {
+
+            EditTransaction transaction = new EditTransaction(new ArrayList(),
+                    this.getName(), this.itemlayer,
+                    this.isRollingBackInvalidEdits(context), true,
+                    context.getWorkbenchFrame());
+
+            FeatureCollection actualLayerFeatures = this.itemlayer
+                    .getFeatureCollectionWrapper().getWrappee();
+            FeatureSchema fschema = this.itemlayer
+                    .getFeatureCollectionWrapper().getFeatureSchema();
+            // -- check if schema is the same if yes add the feature (or change
+            // Schema)
+            Iterator iter = features.iterator();
+            int i = 0;
+            Feature fi = null;
+            while (iter.hasNext()) {
+                i++;
+                fi = (Feature) iter.next();
+                if (fschema.equals(fi.getSchema())) {
+                    Feature feature = (Feature) fi.clone();
                     transaction.createFeature(feature);
-                       }
-                   else{
-                       context.getWorkbenchFrame().setStatusMessage(
-                                       statusMessage1 + ": " + i + " "+ 
statusMessage2);
-                       if(hasBeenCalled == false){
-                               this.askWhatToDo(context);
-                               hasBeenCalled = true;
-                       }
-                       if (this.copyAsGeometry == true){
-                               Geometry geom = 
(Geometry)fi.getGeometry().clone();
-                               Feature newFeature = 
FeatureUtil.toFeature(geom, fschema);
+                } else {
+                    context.getWorkbenchFrame().setStatusMessage(
+                            statusMessage1 + ": " + i + " " + statusMessage2);
+                    if (hasBeenCalled == false) {
+                        this.askWhatToDo(context);
+                        hasBeenCalled = true;
+                    }
+                    if (this.copyAsGeometry == true) {
+                        Geometry geom = (Geometry) fi.getGeometry().clone();
+                        Feature newFeature = FeatureUtil.toFeature(geom,
+                                fschema);
                         transaction.createFeature(newFeature);
-                       }
-                   }
-               }               
-               transaction.commit();
-           }
-           else{
-               Iterator iter = features.iterator();
-               Feature f = (Feature)iter.next();
-           FeatureCollection myCollA = new FeatureDataset(f.getSchema());
-           myCollA.add((Feature)f.clone()); //copy first Item
-               Feature fi = null;
-               int i=1;
-               while (iter.hasNext()){
-                       i++;
-                       fi = (Feature)iter.next();
-                   if(f.getSchema().equals(fi.getSchema())){
-                    Feature feature = (Feature)fi.clone();
-                                       myCollA.add(feature);
-                       }
-                   else{
-                       context.getWorkbenchFrame().setStatusMessage(
-                                       statusMessage1 + ": " + i + 
statusMessage2);
-                       if(hasBeenCalled == false){
-                               this.askWhatToDo(context);
-                               hasBeenCalled = true;
-                       }
-                       if (this.copyAsGeometry == true){
-                               Geometry geom = 
(Geometry)fi.getGeometry().clone();
-                               Feature newFeature = 
FeatureUtil.toFeature(geom, f.getSchema());
-                               myCollA.add(newFeature);
-                       }                       
-                   }
-               }
-                   context.addLayer(StandardCategoryNames.WORKING, 
-                               
I18N.get("org.openjump.core.ui.plugin.edit.ReplicateSelectedItemsPlugIn.new"),
-                                       myCollA);               
-           }
-        return true;        
-       }
-         
-       private void askWhatToDo(PlugInContext context){
-               String dialog1 = 
I18N.get("org.openjump.core.ui.plugin.edit.ReplicateSelectedItemsPlugIn.attribute-schemas-are-different");
-               String dialog2 = 
I18N.get("org.openjump.core.ui.plugin.edit.ReplicateSelectedItemsPlugIn.copy-only-geometry");
-               String dialog3 = "(" + 
I18N.get("org.openjump.core.ui.plugin.edit.ReplicateSelectedItemsPlugIn.on-ok-attributes-will-be-lost-on-cancel-items-are-not-copied")
 + ")";
+                    }
+                }
+            }
+            transaction.commit();
+        } else {
+            Iterator iter = features.iterator();
+            Feature f = (Feature) iter.next();
+            FeatureCollection myCollA = new FeatureDataset(f.getSchema());
+            myCollA.add((Feature) f.clone()); // copy first Item
+            Feature fi = null;
+            int i = 1;
+            while (iter.hasNext()) {
+                i++;
+                fi = (Feature) iter.next();
+                if (f.getSchema().equals(fi.getSchema())) {
+                    Feature feature = (Feature) fi.clone();
+                    myCollA.add(feature);
+                } else {
+                    context.getWorkbenchFrame().setStatusMessage(
+                            statusMessage1 + ": " + i + statusMessage2);
+                    if (hasBeenCalled == false) {
+                        this.askWhatToDo(context);
+                        hasBeenCalled = true;
+                    }
+                    if (this.copyAsGeometry == true) {
+                        Geometry geom = (Geometry) fi.getGeometry().clone();
+                        Feature newFeature = FeatureUtil.toFeature(geom,
+                                f.getSchema());
+                        myCollA.add(newFeature);
+                    }
+                }
+            }
+            context.addLayer(
+                    StandardCategoryNames.WORKING,
+                    
I18N.get("org.openjump.core.ui.plugin.edit.ReplicateSelectedItemsPlugIn.new"),
+                    myCollA);
+        }
+        return true;
+    }
 
-               MultiInputDialog dialog = new MultiInputDialog(
-                   context.getWorkbenchFrame(), getName(), true);
-               dialog.addLabel(dialog1);
-               dialog.addLabel(dialog2);
-               dialog.addLabel(dialog3);
-           GUIUtil.centreOnWindow(dialog);
-           dialog.setVisible(true);
-           if (! dialog.wasOKPressed()) { 
-               this.copyAsGeometry=false; 
-           }
-           else{
-               this.copyAsGeometry=true;
-           }
+    private void askWhatToDo(PlugInContext context) {
+        String dialog1 = I18N
+                
.get("org.openjump.core.ui.plugin.edit.ReplicateSelectedItemsPlugIn.attribute-schemas-are-different");
+        String dialog2 = I18N
+                
.get("org.openjump.core.ui.plugin.edit.ReplicateSelectedItemsPlugIn.copy-only-geometry");
+        String dialog3 = "("
+                + 
I18N.get("org.openjump.core.ui.plugin.edit.ReplicateSelectedItemsPlugIn.on-ok-attributes-will-be-lost-on-cancel-items-are-not-copied")
+                + ")";
 
-       }
-       
+        MultiInputDialog dialog = new MultiInputDialog(
+                context.getWorkbenchFrame(), getName(), true);
+        dialog.addLabel(dialog1);
+        dialog.addLabel(dialog2);
+        dialog.addLabel(dialog3);
+        GUIUtil.centreOnWindow(dialog);
+        dialog.setVisible(true);
+        if (!dialog.wasOKPressed()) {
+            this.copyAsGeometry = false;
+        } else {
+            this.copyAsGeometry = true;
+        }
+
+    }
+
     public ImageIcon getIcon() {
         return ICON;
     }

Modified: 
core/trunk/src/org/openjump/core/ui/plugin/mousemenu/EditSelectedSidePlugIn.java
===================================================================
--- 
core/trunk/src/org/openjump/core/ui/plugin/mousemenu/EditSelectedSidePlugIn.java
    2015-06-25 08:41:54 UTC (rev 4510)
+++ 
core/trunk/src/org/openjump/core/ui/plugin/mousemenu/EditSelectedSidePlugIn.java
    2015-06-25 08:55:03 UTC (rev 4511)
@@ -32,10 +32,10 @@
  */
 
 package org.openjump.core.ui.plugin.mousemenu;
+
 import java.util.Collection;
 
 import javax.swing.JComponent;
-import javax.swing.JPopupMenu;
 
 import com.vividsolutions.jts.geom.Geometry;
 import com.vividsolutions.jts.geom.GeometryCollection;
@@ -50,77 +50,83 @@
 import com.vividsolutions.jump.workbench.plugin.EnableCheckFactory;
 import com.vividsolutions.jump.workbench.plugin.MultiEnableCheck;
 import com.vividsolutions.jump.workbench.plugin.PlugInContext;
-import com.vividsolutions.jump.workbench.ui.LayerViewPanel;
 import com.vividsolutions.jump.workbench.ui.SelectionManagerProxy;
-import com.vividsolutions.jump.workbench.ui.plugin.FeatureInstaller;
 
 public class EditSelectedSidePlugIn extends AbstractPlugIn {
 
-       private final static String sEditSelectedSide = 
I18N.get("org.openjump.core.ui.plugin.mousemenu.EditSelectedSidePlugIn.Edit-Selected-Side");
-       private final static String sPointsDoNotHaveSides = 
I18N.get("org.openjump.core.ui.plugin.mousemenu.EditSelectedSidePlugIn.Points-do-not-have-sides");
-       private final static String sSelectOnlyOnePart = 
I18N.get("org.openjump.core.ui.plugin.mousemenu.EditSelectedSidePlugIn.Select-only-one-part");
-       
-    public void initialize(PlugInContext context) throws Exception
-    {     
-        WorkbenchContext workbenchContext = context.getWorkbenchContext();
-        FeatureInstaller featureInstaller = new 
FeatureInstaller(workbenchContext);
-        JPopupMenu popupMenu = LayerViewPanel.popupMenu();
-        featureInstaller.addPopupMenuItem(popupMenu,
-            this, sEditSelectedSide,
-            false, null,  //to do: add icon
-            this.createEnableCheck(workbenchContext)); 
+    private final static String sEditSelectedSide = I18N
+            
.get("org.openjump.core.ui.plugin.mousemenu.EditSelectedSidePlugIn.Edit-Selected-Side");
+    private final static String sPointsDoNotHaveSides = I18N
+            
.get("org.openjump.core.ui.plugin.mousemenu.EditSelectedSidePlugIn.Points-do-not-have-sides");
+    private final static String sSelectOnlyOnePart = I18N
+            
.get("org.openjump.core.ui.plugin.mousemenu.EditSelectedSidePlugIn.Select-only-one-part");
+
+    public String getName() {
+        return sEditSelectedSide;
     }
-    
-    public boolean execute(final PlugInContext context) throws Exception
-    {
+
+    /*
+     * public void initialize(PlugInContext context) throws Exception {
+     * WorkbenchContext workbenchContext = context.getWorkbenchContext();
+     * FeatureInstaller featureInstaller = new
+     * FeatureInstaller(workbenchContext); JPopupMenu popupMenu =
+     * LayerViewPanel.popupMenu(); featureInstaller.addPopupMenuItem(popupMenu,
+     * this, sEditSelectedSide, false, null, //to do: add icon
+     * this.createEnableCheck(workbenchContext)); }
+     */
+
+    public boolean execute(final PlugInContext context) throws Exception {
         reportNothingToUndoYet(context);
-        EditSelectedSideDialog dialog = new EditSelectedSideDialog(context, 
sEditSelectedSide, false);
+        EditSelectedSideDialog dialog = new EditSelectedSideDialog(context,
+                sEditSelectedSide, false);
         dialog.setVisible(true);
         return true;
     }
-        
-    public EnableCheck noPointsMayBeSelectedCheck(final WorkbenchContext 
workbenchContext) {
+
+    public EnableCheck noPointsMayBeSelectedCheck(
+            final WorkbenchContext workbenchContext) {
         return new EnableCheck() {
             public String check(JComponent component) {
-                  Collection selectedItems = ((SelectionManagerProxy) 
workbenchContext
-                            .getWorkbench()
-                            .getFrame()
-                            .getActiveInternalFrame())
-                            .getSelectionManager()
-                            .getSelectedItems();
-            Geometry selectedGeo = (Geometry) selectedItems.iterator().next();
-                return (selectedGeo instanceof Point)
-                    ? sPointsDoNotHaveSides
-                    : null;
-               }
+                Collection selectedItems = ((SelectionManagerProxy) 
workbenchContext
+                        .getWorkbench().getFrame().getActiveInternalFrame())
+                        .getSelectionManager().getSelectedItems();
+                Geometry selectedGeo = (Geometry) selectedItems.iterator()
+                        .next();
+                return (selectedGeo instanceof Point) ? sPointsDoNotHaveSides
+                        : null;
+            }
         };
     }
 
-    public EnableCheck noMultiShapesMayBeSelectedCheck(final WorkbenchContext 
workbenchContext) {
+    public EnableCheck noMultiShapesMayBeSelectedCheck(
+            final WorkbenchContext workbenchContext) {
         return new EnableCheck() {
             public String check(JComponent component) {
-                  Collection selectedItems = ((SelectionManagerProxy) 
workbenchContext
-                            .getWorkbench()
-                            .getFrame()
-                            .getActiveInternalFrame())
-                            .getSelectionManager()
-                            .getSelectedItems();
-            Geometry selectedGeo = (Geometry) selectedItems.iterator().next();
+                Collection selectedItems = ((SelectionManagerProxy) 
workbenchContext
+                        .getWorkbench().getFrame().getActiveInternalFrame())
+                        .getSelectionManager().getSelectedItems();
+                Geometry selectedGeo = (Geometry) selectedItems.iterator()
+                        .next();
 
-                return (((selectedGeo instanceof MultiPoint) || (selectedGeo 
instanceof MultiLineString) || (selectedGeo instanceof MultiPolygon) || 
(selectedGeo instanceof GeometryCollection)))
-                    ? (sSelectOnlyOnePart)
-                    : null;
-               }
+                return (((selectedGeo instanceof MultiPoint)
+                        || (selectedGeo instanceof MultiLineString)
+                        || (selectedGeo instanceof MultiPolygon) || 
(selectedGeo instanceof GeometryCollection))) ? (sSelectOnlyOnePart)
+                        : null;
+            }
         };
     }
-    
-    public MultiEnableCheck createEnableCheck(final WorkbenchContext 
workbenchContext) {
-        EnableCheckFactory checkFactory = new 
EnableCheckFactory(workbenchContext);
+
+    public MultiEnableCheck createEnableCheck(
+            final WorkbenchContext workbenchContext) {
+        EnableCheckFactory checkFactory = new EnableCheckFactory(
+                workbenchContext);
         return new MultiEnableCheck()
-            
.add(checkFactory.createWindowWithLayerViewPanelMustBeActiveCheck())
-            .add(checkFactory.createExactlyNItemsMustBeSelectedCheck(1))
-            .add(noPointsMayBeSelectedCheck(workbenchContext))
-            .add(noMultiShapesMayBeSelectedCheck(workbenchContext))
-            .add(checkFactory.createSelectedItemsLayersMustBeEditableCheck());
+                .add(checkFactory
+                        .createWindowWithLayerViewPanelMustBeActiveCheck())
+                .add(checkFactory.createExactlyNItemsMustBeSelectedCheck(1))
+                .add(noPointsMayBeSelectedCheck(workbenchContext))
+                .add(noMultiShapesMayBeSelectedCheck(workbenchContext))
+                .add(checkFactory
+                        .createSelectedItemsLayersMustBeEditableCheck());
     }
 }

Added: 
core/trunk/src/org/openjump/core/ui/plugin/mousemenu/MeasureSelectedPlugIn.java
===================================================================
--- 
core/trunk/src/org/openjump/core/ui/plugin/mousemenu/MeasureSelectedPlugIn.java 
                            (rev 0)
+++ 
core/trunk/src/org/openjump/core/ui/plugin/mousemenu/MeasureSelectedPlugIn.java 
    2015-06-25 08:55:03 UTC (rev 4511)
@@ -0,0 +1,135 @@
+package org.openjump.core.ui.plugin.mousemenu;
+
+import java.util.Collection;
+import java.util.Iterator;
+
+import javax.swing.Icon;
+import javax.swing.JComponent;
+
+import com.vividsolutions.jts.geom.Geometry;
+import com.vividsolutions.jts.geom.GeometryCollection;
+import com.vividsolutions.jts.geom.LineString;
+import com.vividsolutions.jts.geom.MultiLineString;
+import com.vividsolutions.jts.geom.Point;
+import com.vividsolutions.jts.geom.Polygon;
+import com.vividsolutions.jump.I18N;
+import com.vividsolutions.jump.feature.Feature;
+import com.vividsolutions.jump.feature.FeatureCollection;
+import com.vividsolutions.jump.workbench.WorkbenchContext;
+import com.vividsolutions.jump.workbench.model.Layer;
+import com.vividsolutions.jump.workbench.model.MeasureLayerFinder;
+import com.vividsolutions.jump.workbench.plugin.AbstractPlugIn;
+import com.vividsolutions.jump.workbench.plugin.EnableCheck;
+import com.vividsolutions.jump.workbench.plugin.EnableCheckFactory;
+import com.vividsolutions.jump.workbench.plugin.MultiEnableCheck;
+import com.vividsolutions.jump.workbench.plugin.PlugInContext;
+import com.vividsolutions.jump.workbench.ui.LayerViewPanel;
+import com.vividsolutions.jump.workbench.ui.SelectionManager;
+import com.vividsolutions.jump.workbench.ui.SelectionManagerProxy;
+import com.vividsolutions.jump.workbench.ui.images.IconLoader;
+
+public class MeasureSelectedPlugIn extends AbstractPlugIn {
+    public static final String NAME = I18N
+            
.get("org.openjump.core.ui.plugin.mousemenu.MeasureSelectedFeaturePlugIn.name");
+
+    public static final Icon ICON = IconLoader.icon("Ruler.gif");
+
+    public Icon getIcon() {
+        return ICON;
+    }
+
+    public String getName() {
+        return NAME;
+    }
+
+    public boolean execute(PlugInContext context) throws Exception {
+        reportNothingToUndoYet(context);
+        LayerViewPanel layerViewPanel = context.getWorkbenchContext()
+                .getLayerViewPanel();
+        WorkbenchContext wbc = context.getWorkbenchContext();
+        Collection layers = ((SelectionManagerProxy) wbc.getWorkbench()
+                .getFrame().getActiveInternalFrame()).getSelectionManager()
+                .getFeatureSelection().getLayersWithSelectedItems();
+        // Giuseppe Aruta 2015-6-25
+        // The code is already set for measuring multiple selected geometies.
+        // Enablecheck deactives that until a good solution is found for
+        // multigeometries (multiPolygon, multiLinestring, multipoint and
+        // geometry collections)
+        // and for points (measure coordinates)
+        for (Iterator li = layers.iterator(); li.hasNext();) {
+            Layer layer = (Layer) li.next();
+
+            FeatureCollection featureCollection = layer
+                    .getFeatureCollectionWrapper();
+            SelectionManager manager = context.getLayerViewPanel()
+                    .getSelectionManager();
+            // Collection feats = getFeatures(layer,context);
+            Collection feats = manager.createFeaturesFromSelectedItems(layer);
+
+            for (Iterator i = feats.iterator(); i.hasNext();) {
+                try {
+                    Feature feat = (Feature) i.next();
+                    layerViewPanel.setViewportInitialized(true);
+
+                    Geometry geom = feat.getGeometry();
+                    if (geom instanceof Polygon || geom instanceof LineString) 
{
+                        measure(wbc, geom);
+                    }
+
+                    else {
+                        // Giuseppe Aruta 2015-6-25
+                        // Set here the code for multiplegeometries and point
+
+                    }
+                } catch (IllegalArgumentException e) {
+                    context.getWorkbenchFrame().warnUser(e.toString());
+                }
+            }
+
+        }
+
+        return true;
+
+    }
+
+    public void measure(WorkbenchContext context, Geometry geom) {
+        MeasureLayerFinder measureLayerFinder = new MeasureLayerFinder(
+                context.getLayerViewPanel(), context);
+
+        measureLayerFinder.setMeasure(geom);
+
+        // and set it visible
+        if (!measureLayerFinder.getLayer().isVisible()) {
+            measureLayerFinder.getLayer().setVisible(true);
+        }
+
+    }
+
+    public static EnableCheck createEnableCheck(final WorkbenchContext 
context) {
+        MultiEnableCheck mec = new MultiEnableCheck();
+
+        mec.add(new EnableCheckFactory(context)
+                .createWindowWithSelectionManagerMustBeActiveCheck());
+        mec.add(new EnableCheckFactory(context)
+                .createExactlyNFeaturesMustBeSelectedCheck(1));
+
+        mec.add(new EnableCheck() {
+            public String check(JComponent component) {
+                Feature feat =
+
+                (Feature) context.getLayerViewPanel().getSelectionManager()
+                        .getFeaturesWithSelectedItems().iterator().next();
+                Geometry geom = feat.getGeometry();
+
+                return geom instanceof GeometryCollection
+                        || geom instanceof MultiLineString
+                        || geom instanceof Point ? geom.getGeometryType()
+                        + " - "
+                        + 
I18N.get("org.openjump.core.ui.plugin.mousemenu.MeasureSelectedFeaturePlugin.message1")
+                        : null;
+            }
+        });
+        return mec;
+    }
+
+}


Property changes on: 
core/trunk/src/org/openjump/core/ui/plugin/mousemenu/MeasureSelectedPlugIn.java
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Modified: 
core/trunk/src/org/openjump/core/ui/plugin/mousemenu/MoveAlongAnglePlugIn.java
===================================================================
--- 
core/trunk/src/org/openjump/core/ui/plugin/mousemenu/MoveAlongAnglePlugIn.java  
    2015-06-25 08:41:54 UTC (rev 4510)
+++ 
core/trunk/src/org/openjump/core/ui/plugin/mousemenu/MoveAlongAnglePlugIn.java  
    2015-06-25 08:55:03 UTC (rev 4511)
@@ -38,7 +38,6 @@
 import java.util.Iterator;
 
 import javax.swing.ImageIcon;
-import javax.swing.JPopupMenu;
 
 import com.vividsolutions.jts.geom.Coordinate;
 import com.vividsolutions.jts.geom.CoordinateFilter;
@@ -51,114 +50,142 @@
 import com.vividsolutions.jump.workbench.plugin.MultiEnableCheck;
 import com.vividsolutions.jump.workbench.plugin.PlugInContext;
 import com.vividsolutions.jump.workbench.ui.EditTransaction;
-import com.vividsolutions.jump.workbench.ui.LayerViewPanel;
 import com.vividsolutions.jump.workbench.ui.MultiInputDialog;
-import com.vividsolutions.jump.workbench.ui.plugin.FeatureInstaller;
 
 public class MoveAlongAnglePlugIn extends AbstractPlugIn {
-       
-       private final static String sMoveAlongAngle = 
I18N.get("org.openjump.core.ui.plugin.mousemenu.MoveAlongAnglePlugIn.Move-Along-Angle");
-       private final static String sMoveSelectedFeaturesAlongAngle 
=I18N.get("org.openjump.core.ui.plugin.mousemenu.MoveAlongAnglePlugIn.Move-Selected-Features-Along-Angle");
-       private final static String 
sTheDistanceInMapUnitsToMove=I18N.get("org.openjump.core.ui.plugin.mousemenu.MoveAlongAnglePlugIn.The-distance-in-map-units-to-move");
-       private final static String sTheAngleInDegreesToMove = 
I18N.get("org.openjump.core.ui.plugin.mousemenu.MoveAlongAnglePlugIn.The-angle-in-degrees-to-move");
-       private final static String sWillCovert = 
I18N.get("org.openjump.core.ui.plugin.mousemenu.MoveAlongAnglePlugIn.Will-convert-input-value-from-feet-to-meters");
-       
+
+    private final static String sMoveAlongAngle = I18N
+            
.get("org.openjump.core.ui.plugin.mousemenu.MoveAlongAnglePlugIn.Move-Along-Angle");
+    private final static String sMoveSelectedFeaturesAlongAngle = I18N
+            
.get("org.openjump.core.ui.plugin.mousemenu.MoveAlongAnglePlugIn.Move-Selected-Features-Along-Angle");
+    private final static String sTheDistanceInMapUnitsToMove = I18N
+            
.get("org.openjump.core.ui.plugin.mousemenu.MoveAlongAnglePlugIn.The-distance-in-map-units-to-move");
+    private final static String sTheAngleInDegreesToMove = I18N
+            
.get("org.openjump.core.ui.plugin.mousemenu.MoveAlongAnglePlugIn.The-angle-in-degrees-to-move");
+    private final static String sWillCovert = I18N
+            
.get("org.openjump.core.ui.plugin.mousemenu.MoveAlongAnglePlugIn.Will-convert-input-value-from-feet-to-meters");
+
     private WorkbenchContext workbenchContext;
-    private final static String ANGLE = 
I18N.get("org.openjump.core.ui.plugin.mousemenu.MoveAlongAnglePlugIn.Move-Angle");
-    private final static String DISTANCE = 
I18N.get("org.openjump.core.ui.plugin.mousemenu.MoveAlongAnglePlugIn.Move-Distance");
-    private final double Deg2Rad = 0.0174532925199432; //pi/180
+    private final static String ANGLE = I18N
+            
.get("org.openjump.core.ui.plugin.mousemenu.MoveAlongAnglePlugIn.Move-Angle");
+    private final static String DISTANCE = I18N
+            
.get("org.openjump.core.ui.plugin.mousemenu.MoveAlongAnglePlugIn.Move-Distance");
+    private final double Deg2Rad = 0.0174532925199432; // pi/180
     private MultiInputDialog dialog;
     private double moveAngle = 0.0;
     private double moveDistance = 1.0;
 
-    private final static String CONVERTTOMETERS = 
I18N.get("org.openjump.core.ui.plugin.mousemenu.MoveAlongAnglePlugIn.Convert-Feet-to-Meters");
+    private final static String CONVERTTOMETERS = I18N
+            
.get("org.openjump.core.ui.plugin.mousemenu.MoveAlongAnglePlugIn.Convert-Feet-to-Meters");
     private double conversionFactor = 1.0;
 
-    public void initialize(PlugInContext context) throws Exception
-    {     
-        workbenchContext = context.getWorkbenchContext();
-        FeatureInstaller featureInstaller = new 
FeatureInstaller(workbenchContext);
-        JPopupMenu popupMenu = LayerViewPanel.popupMenu();
-        featureInstaller.addPopupMenuItem(popupMenu,
-            this, sMoveAlongAngle,
-            false, null,  //to do: add icon
-            this.createEnableCheck(workbenchContext));
+    public String getName() {
+        return sMoveAlongAngle;
     }
-    
+
+    /*
+     * public void initialize(PlugInContext context) throws Exception {
+     * workbenchContext = context.getWorkbenchContext(); FeatureInstaller
+     * featureInstaller = new FeatureInstaller(workbenchContext); JPopupMenu
+     * popupMenu = LayerViewPanel.popupMenu();
+     * featureInstaller.addPopupMenuItem(popupMenu, this, sMoveAlongAngle,
+     * false, null, //to do: add icon 
this.createEnableCheck(workbenchContext));
+     * }
+     */
+
     public boolean execute(final PlugInContext context) throws Exception {
         final ArrayList transactions = new ArrayList();
         reportNothingToUndoYet(context);
         MultiInputDialog dialog = new MultiInputDialog(
-            context.getWorkbenchFrame(), getName(), true);
+                context.getWorkbenchFrame(), getName(), true);
         setDialogValues(dialog, context);
         dialog.setVisible(true);
-        if (! dialog.wasOKPressed()) { return false; }
+        if (!dialog.wasOKPressed()) {
+            return false;
+        }
         getDialogValues(dialog);
-        
+
         double angle = Deg2Rad * moveAngle;
         double x = Math.cos(angle) * moveDistance * conversionFactor;
         double y = Math.sin(angle) * moveDistance * conversionFactor;
-        Coordinate displacement = new Coordinate(x,y);   
+        Coordinate displacement = new Coordinate(x, y);
         workbenchContext = context.getWorkbenchContext();
-        for (Iterator i = 
workbenchContext.getLayerViewPanel().getSelectionManager().getLayersWithSelectedItems().iterator();
-            i.hasNext();
-            ) {
+        for (Iterator i = workbenchContext.getLayerViewPanel()
+                
.getSelectionManager().getLayersWithSelectedItems().iterator(); i
+                .hasNext();) {
             Layer layerWithSelectedItems = (Layer) i.next();
-            transactions.add(createTransaction(layerWithSelectedItems, 
displacement));
+            transactions.add(createTransaction(layerWithSelectedItems,
+                    displacement));
         }
         EditTransaction.commit(transactions);
         return true;
     }
-    
-      private void setDialogValues(MultiInputDialog dialog, PlugInContext 
context)
-      {
-        dialog.setSideBarImage(new 
ImageIcon(getClass().getResource("Compass.png"))); 
+
+    private void setDialogValues(MultiInputDialog dialog, PlugInContext 
context) {
+        dialog.setSideBarImage(new ImageIcon(getClass().getResource(
+                "Compass.png")));
         dialog.setSideBarDescription(sMoveSelectedFeaturesAlongAngle);
-        dialog.addDoubleField(DISTANCE, moveDistance, 6, 
sTheDistanceInMapUnitsToMove);
+        dialog.addDoubleField(DISTANCE, moveDistance, 6,
+                sTheDistanceInMapUnitsToMove);
         dialog.addDoubleField(ANGLE, moveAngle, 6, sTheAngleInDegreesToMove);
-        dialog.addCheckBox(CONVERTTOMETERS, (!(conversionFactor == 1.0)), 
sWillCovert);
-      }
+        dialog.addCheckBox(CONVERTTOMETERS, (!(conversionFactor == 1.0)),
+                sWillCovert);
+    }
 
-      private void getDialogValues(MultiInputDialog dialog) {
-        if(dialog.getCheckBox(CONVERTTOMETERS).isSelected())
-               conversionFactor =  0.3048;
+    private void getDialogValues(MultiInputDialog dialog) {
+        if (dialog.getCheckBox(CONVERTTOMETERS).isSelected())
+            conversionFactor = 0.3048;
         else
-               conversionFactor = 1.0;
+            conversionFactor = 1.0;
         moveDistance = dialog.getDouble(DISTANCE);
         moveAngle = dialog.getDouble(ANGLE);
-      }
+    }
 
-    private EditTransaction createTransaction(Layer layer, final Coordinate 
displacement) {
-        EditTransaction transaction =
-            EditTransaction.createTransactionOnSelection(new 
EditTransaction.SelectionEditor() {
-            public Geometry edit(Geometry geometryWithSelectedItems, 
Collection selectedItems) {
-                for (Iterator j = selectedItems.iterator(); j.hasNext();) {
-                    Geometry item = (Geometry) j.next();
-                    move(item, displacement);
-                }
+    private EditTransaction createTransaction(Layer layer,
+            final Coordinate displacement) {
+        EditTransaction transaction = EditTransaction
+                .createTransactionOnSelection(
+                        new EditTransaction.SelectionEditor() {
+                            public Geometry edit(
+                                    Geometry geometryWithSelectedItems,
+                                    Collection selectedItems) {
+                                for (Iterator j = selectedItems.iterator(); j
+                                        .hasNext();) {
+                                    Geometry item = (Geometry) j.next();
+                                    move(item, displacement);
+                                }
 
-                return geometryWithSelectedItems;
-            }
-        }, workbenchContext.getLayerViewPanel(), 
workbenchContext.getLayerViewPanel().getContext(), getName(), layer, 
false,false);// isRollingBackInvalidEdits(), false);
+                                return geometryWithSelectedItems;
+                            }
+                        }, workbenchContext.getLayerViewPanel(),
+                        workbenchContext.getLayerViewPanel().getContext(),
+                        getName(), layer, false, false);// 
isRollingBackInvalidEdits(),
+                                                        // false);
         return transaction;
     }
 
     private void move(Geometry geometry, final Coordinate displacement) {
         geometry.apply(new CoordinateFilter() {
             public void filter(Coordinate coordinate) {
-                //coordinate.setCoordinate(CoordUtil.add(coordinate, 
displacement));
+                // coordinate.setCoordinate(CoordUtil.add(coordinate,
+                // displacement));
                 coordinate.x += displacement.x;
                 coordinate.y += displacement.y;
             }
         });
     }
-    
-    public MultiEnableCheck createEnableCheck(final WorkbenchContext 
workbenchContext) {
-        EnableCheckFactory checkFactory = new 
EnableCheckFactory(workbenchContext);
+
+    public MultiEnableCheck createEnableCheck(
+            final WorkbenchContext workbenchContext) {
+        EnableCheckFactory checkFactory = new EnableCheckFactory(
+                workbenchContext);
         return new MultiEnableCheck()
-            
.add(checkFactory.createWindowWithLayerViewPanelMustBeActiveCheck())
-            
.add(checkFactory.createAtLeastNFeaturesMustHaveSelectedItemsCheck(1))
-            .add(checkFactory.createSelectedItemsLayersMustBeEditableCheck());
+                .add(checkFactory
+                        .createWindowWithLayerViewPanelMustBeActiveCheck())
+                .add(checkFactory
+                        .createAtLeastNFeaturesMustHaveSelectedItemsCheck(1))
+                .add(checkFactory
+                        .createSelectedItemsLayersMustBeEditableCheck());
 
     }
 }

Modified: core/trunk/src/org/openjump/core/ui/plugin/mousemenu/RotatePlugIn.java
===================================================================
--- core/trunk/src/org/openjump/core/ui/plugin/mousemenu/RotatePlugIn.java      
2015-06-25 08:41:54 UTC (rev 4510)
+++ core/trunk/src/org/openjump/core/ui/plugin/mousemenu/RotatePlugIn.java      
2015-06-25 08:55:03 UTC (rev 4511)
@@ -36,8 +36,8 @@
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Iterator;
+
 import javax.swing.ImageIcon;
-import javax.swing.JPopupMenu;
 
 import org.openjump.core.ui.images.IconLoader;
 
@@ -53,137 +53,165 @@
 import com.vividsolutions.jump.workbench.plugin.MultiEnableCheck;
 import com.vividsolutions.jump.workbench.plugin.PlugInContext;
 import com.vividsolutions.jump.workbench.ui.EditTransaction;
-import com.vividsolutions.jump.workbench.ui.GUIUtil;
-import com.vividsolutions.jump.workbench.ui.LayerViewPanel;
 import com.vividsolutions.jump.workbench.ui.MultiInputDialog;
-import com.vividsolutions.jump.workbench.ui.cursortool.FeatureInfoTool;
-import com.vividsolutions.jump.workbench.ui.plugin.FeatureInstaller;
 
 public class RotatePlugIn extends AbstractPlugIn {
-       
-       private static final String sRotate = 
I18N.get("org.openjump.core.ui.plugin.mousemenu.RotatePlugIn.Rotate");
-       private static final String sRotateSelectedFeatures = 
I18N.get("org.openjump.core.ui.plugin.mousemenu.RotatePlugIn.Rotate-Selected-Features");
-       private static final String sRotateAbout = 
I18N.get("org.openjump.core.ui.plugin.mousemenu.RotatePlugIn.Rotate-about");
-       private static final String sTheAngleInDegreesClockwise = 
I18N.get("org.openjump.core.ui.plugin.mousemenu.RotatePlugIn.The-angle-in-degrees-clockwise");
-               
-    private static final String METHOD_ABOUTCENTER = 
I18N.get("org.openjump.core.ui.plugin.mousemenu.RotatePlugIn.Center");
-    private static final String METHOD_ABOUTCLICKPOINT = 
I18N.get("org.openjump.core.ui.plugin.mousemenu.RotatePlugIn.Click-Point");
-    private final static String ANGLE = 
I18N.get("org.openjump.core.ui.plugin.mousemenu.RotatePlugIn.Rotation-Angle");
-    private final static String ROTATEABOUT = 
I18N.get("org.openjump.core.ui.plugin.mousemenu.RotatePlugIn.Rotate-About");
-    private final double Deg2Rad = 0.0174532925199432; //pi/180
+
+    private static final String sRotate = I18N
+            .get("org.openjump.core.ui.plugin.mousemenu.RotatePlugIn.Rotate");
+    private static final String sRotateSelectedFeatures = I18N
+            
.get("org.openjump.core.ui.plugin.mousemenu.RotatePlugIn.Rotate-Selected-Features");
+    private static final String sRotateAbout = I18N
+            
.get("org.openjump.core.ui.plugin.mousemenu.RotatePlugIn.Rotate-about");
+    private static final String sTheAngleInDegreesClockwise = I18N
+            
.get("org.openjump.core.ui.plugin.mousemenu.RotatePlugIn.The-angle-in-degrees-clockwise");
+
+    private static final String METHOD_ABOUTCENTER = I18N
+            .get("org.openjump.core.ui.plugin.mousemenu.RotatePlugIn.Center");
+    private static final String METHOD_ABOUTCLICKPOINT = I18N
+            
.get("org.openjump.core.ui.plugin.mousemenu.RotatePlugIn.Click-Point");
+    private final static String ANGLE = I18N
+            
.get("org.openjump.core.ui.plugin.mousemenu.RotatePlugIn.Rotation-Angle");
+    private final static String ROTATEABOUT = I18N
+            
.get("org.openjump.core.ui.plugin.mousemenu.RotatePlugIn.Rotate-About");
+    private final double Deg2Rad = 0.0174532925199432; // pi/180
     private WorkbenchContext workbenchContext;
     private double rotateAngle = 45.0;
     private double radiansAngle = 0.0;
     private double cosAngle = 0.0;
     private double sinAngle = 0.0;
-    private Coordinate rotationPoint = new Coordinate(0.0,0.0);
+    private Coordinate rotationPoint = new Coordinate(0.0, 0.0);
     private Collection methodNames = new ArrayList();
     private String methodNameToRun = METHOD_ABOUTCENTER;
 
     public static final ImageIcon ICON = IconLoader.icon("Rotate16.gif");
 
-    public void initialize(PlugInContext context) throws Exception
-    {     
-        workbenchContext = context.getWorkbenchContext();
-        FeatureInstaller featureInstaller = new 
FeatureInstaller(workbenchContext);
-        JPopupMenu popupMenu = LayerViewPanel.popupMenu();
-        featureInstaller.addPopupMenuItem(popupMenu,
-            this, sRotate,
-            false, ICON, 
-            this.createEnableCheck(workbenchContext)); 
+    public String getName() {
+        return sRotate;
+    }
+
+    public void initialize(PlugInContext context) throws Exception {
+        /*
+         * workbenchContext = context.getWorkbenchContext(); FeatureInstaller
+         * featureInstaller = new FeatureInstaller(workbenchContext); 
JPopupMenu
+         * popupMenu = LayerViewPanel.popupMenu();
+         * featureInstaller.addPopupMenuItem(popupMenu, this, sRotate, false,
+         * ICON, this.createEnableCheck(workbenchContext));
+         */
         methodNames.add(METHOD_ABOUTCENTER);
-        methodNames.add(METHOD_ABOUTCLICKPOINT); 
+        methodNames.add(METHOD_ABOUTCLICKPOINT);
     }
-    
+
     public boolean execute(final PlugInContext context) throws Exception {
         final ArrayList transactions = new ArrayList();
         reportNothingToUndoYet(context);
         MultiInputDialog dialog = new MultiInputDialog(
-            context.getWorkbenchFrame(), getName(), true);
+                context.getWorkbenchFrame(), getName(), true);
         setDialogValues(dialog, context);
-        ///GUIUtil.centreOnWindow(dialog);
+        // /GUIUtil.centreOnWindow(dialog);
         dialog.setVisible(true);
-        if (! dialog.wasOKPressed()) { return false; }
+        if (!dialog.wasOKPressed()) {
+            return false;
+        }
         getDialogValues(dialog);
-        
+
         workbenchContext = context.getWorkbenchContext();
         Collection layers = workbenchContext.getLayerViewPanel()
-                            
.getSelectionManager().getLayersWithSelectedItems();
+                .getSelectionManager().getLayersWithSelectedItems();
         if (methodNameToRun.equals(METHOD_ABOUTCENTER)) {
-            //rotationPoint = getRotationPoint(layers);
+            // rotationPoint = getRotationPoint(layers);
             Envelope en = new Envelope();
-            Collection geometries = 
context.getLayerViewPanel().getSelectionManager().getSelectedItems();
-            for (Iterator j = geometries.iterator(); j.hasNext();)
-            {
+            Collection geometries = context.getLayerViewPanel()
+                    .getSelectionManager().getSelectedItems();
+            for (Iterator j = geometries.iterator(); j.hasNext();) {
                 Geometry geometry = (Geometry) j.next();
                 en.expandToInclude(geometry.getEnvelopeInternal());
             }
-            rotationPoint.x = en.getMinX()+(en.getMaxX()-en.getMinX())/2.0;
-            rotationPoint.y = en.getMinY()+(en.getMaxY()-en.getMinY())/2.0; 
+            rotationPoint.x = en.getMinX() + (en.getMaxX() - en.getMinX())
+                    / 2.0;
+            rotationPoint.y = en.getMinY() + (en.getMaxY() - en.getMinY())
+                    / 2.0;
+        } else if (methodNameToRun.equals(METHOD_ABOUTCLICKPOINT)) {
+            rotationPoint = context
+                    .getLayerViewPanel()
+                    .getViewport()
+                    .toModelCoordinate(
+                            context.getLayerViewPanel().getLastClickedPoint());
         }
-        else if (methodNameToRun.equals(METHOD_ABOUTCLICKPOINT)) {
-            rotationPoint = 
context.getLayerViewPanel().getViewport().toModelCoordinate(
-                context.getLayerViewPanel().getLastClickedPoint());
-        }   
         radiansAngle = Deg2Rad * rotateAngle;
         cosAngle = Math.cos(radiansAngle);
         sinAngle = Math.sin(radiansAngle);
 
-        for (Iterator i = layers.iterator();
-            i.hasNext();
-            ) {
+        for (Iterator i = layers.iterator(); i.hasNext();) {
             Layer layerWithSelectedItems = (Layer) i.next();
             transactions.add(createTransaction(layerWithSelectedItems));
         }
         EditTransaction.commit(transactions);
         return true;
     }
-    
-    private void setDialogValues(MultiInputDialog dialog, PlugInContext 
context)
-    {
-        dialog.setSideBarImage(new 
ImageIcon(getClass().getResource("Rotate.png"))); 
+
+    private void setDialogValues(MultiInputDialog dialog, PlugInContext 
context) {
+        dialog.setSideBarImage(new ImageIcon(getClass().getResource(
+                "Rotate.png")));
         dialog.setSideBarDescription(sRotateSelectedFeatures);
-        dialog.addComboBox(ROTATEABOUT, methodNameToRun , methodNames, 
sRotateAbout);
-        dialog.addDoubleField(ANGLE, rotateAngle, 6, 
sTheAngleInDegreesClockwise);
+        dialog.addComboBox(ROTATEABOUT, methodNameToRun, methodNames,
+                sRotateAbout);
+        dialog.addDoubleField(ANGLE, rotateAngle, 6,
+                sTheAngleInDegreesClockwise);
     }
 
     private void getDialogValues(MultiInputDialog dialog) {
-        //JComboBox combobox = dialog.getComboBox(ROTATEABOUT);
+        // JComboBox combobox = dialog.getComboBox(ROTATEABOUT);
         methodNameToRun = dialog.getText(ROTATEABOUT);
         rotateAngle = dialog.getDouble(ANGLE);
     }
-     
+
     private EditTransaction createTransaction(Layer layer) {
-        EditTransaction transaction =
-            EditTransaction.createTransactionOnSelection(new 
EditTransaction.SelectionEditor() {
-            public Geometry edit(Geometry geometryWithSelectedItems, 
Collection selectedItems) {
-                for (Iterator j = selectedItems.iterator(); j.hasNext();) {
-                    Geometry item = (Geometry) j.next();
-                    rotate(item);
-                }
-                return geometryWithSelectedItems;
-            }
-        }, workbenchContext.getLayerViewPanel(), 
workbenchContext.getLayerViewPanel().getContext(), getName(), layer, 
false,false);// isRollingBackInvalidEdits(), false);
+        EditTransaction transaction = EditTransaction
+                .createTransactionOnSelection(
+                        new EditTransaction.SelectionEditor() {
+                            public Geometry edit(
+                                    Geometry geometryWithSelectedItems,
+                                    Collection selectedItems) {
+                                for (Iterator j = selectedItems.iterator(); j
+                                        .hasNext();) {
+                                    Geometry item = (Geometry) j.next();
+                                    rotate(item);
+                                }
+                                return geometryWithSelectedItems;
+                            }
+                        }, workbenchContext.getLayerViewPanel(),
+                        workbenchContext.getLayerViewPanel().getContext(),
+                        getName(), layer, false, false);// 
isRollingBackInvalidEdits(),
+                                                        // false);
         return transaction;
     }
 
-    //rotate geometry about rotationPoint by rotationAngle degrees (+ 
clockwise)
+    // rotate geometry about rotationPoint by rotationAngle degrees (+
+    // clockwise)
     private void rotate(Geometry geometry) {
         geometry.apply(new CoordinateFilter() {
             public void filter(Coordinate coordinate) {
                 double x = coordinate.x - rotationPoint.x;
                 double y = coordinate.y - rotationPoint.y;
-                coordinate.x = rotationPoint.x + (x*cosAngle) + (y*sinAngle);
-                coordinate.y = rotationPoint.y + (y*cosAngle) - (x*sinAngle);
-              }
+                coordinate.x = rotationPoint.x + (x * cosAngle)
+                        + (y * sinAngle);
+                coordinate.y = rotationPoint.y + (y * cosAngle)
+                        - (x * sinAngle);
+            }
         });
     }
-    
-    public MultiEnableCheck createEnableCheck(final WorkbenchContext 
workbenchContext) {
-        EnableCheckFactory checkFactory = new 
EnableCheckFactory(workbenchContext);
+
+    public MultiEnableCheck createEnableCheck(
+            final WorkbenchContext workbenchContext) {
+        EnableCheckFactory checkFactory = new EnableCheckFactory(
+                workbenchContext);
         return new MultiEnableCheck()
-            
.add(checkFactory.createWindowWithLayerViewPanelMustBeActiveCheck())
-            
.add(checkFactory.createAtLeastNFeaturesMustHaveSelectedItemsCheck(1))
-            .add(checkFactory.createSelectedItemsLayersMustBeEditableCheck());
+                .add(checkFactory
+                        .createWindowWithLayerViewPanelMustBeActiveCheck())
+                .add(checkFactory
+                        .createAtLeastNFeaturesMustHaveSelectedItemsCheck(1))
+                .add(checkFactory
+                        .createSelectedItemsLayersMustBeEditableCheck());
     }
 }


------------------------------------------------------------------------------
Monitor 25 network devices or servers for free with OpManager!
OpManager is web-based network management software that monitors 
network devices and physical & virtual servers, alerts via email & sms 
for fault. Monitor 25 devices for free with no restriction. Download now
http://ad.doubleclick.net/ddm/clk/292181274;119417398;o
_______________________________________________
Jump-pilot-devel mailing list
Jump-pilot-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel

Reply via email to