//Move all selected roi together //Usage //Select all ROIs you want to move together //run this script, and you will found a red point ROI on the left-top corner of current sequence //drag the red point //Author Will Ouyang importClass(Packages.icy.type.collection.array.Array1DUtil) importClass(Packages.icy.roi.ROIListener) importClass(Packages.icy.roi.ROI2DPoint) importClass(Packages.java.awt.geom.Point2D) importClass(Packages.java.awt.Color) importClass(Packages.java.util.HashMap) seq = getSequence() if (seq == null) throw "Please open a sequence first" rois = seq.getROI2Ds() if (rois.isEmpty()) throw "No ROI on the sequence" roi = rois.get(0) anchor = new ROI2DPoint(0,0) anchor.setColor(Color.red) seq.addROI(anchor, true) lastPos = anchor.getPosition2D() var pl = new HashMap() size = rois.size() for(i = 0;i< size ;i++ ) { roi = rois.get(i) if(roi.isSelected()) if(roi != anchor) { pl.put(roi,roi.getPosition2D()) } } anchor.setSelected(true) anchor.addListener(new ROIListener(){ roiChanged: function(ev) { anchor = ev.getSource() curPos = anchor.getPosition2D() for(i = 0;i< size ;i++ ) { roi = rois.get(i) if(roi == anchor) continue try { p = pl.get(roi) roi.setPosition(new Point2D.Double(p.getX()+curPos.getX(),p.getY()+curPos.getY())) } catch(e) { } } } })