Skip to content

Commit dd30d85

Browse files
committed
finalize the commands for undo redo
1 parent a73d5e6 commit dd30d85

3 files changed

Lines changed: 27 additions & 14 deletions

File tree

src/main/java/ai/nets/samj/ij/ui/Consumer.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
import ai.nets.samj.gui.components.ComboBoxItem;
3232
import ai.nets.samj.ij.ui.commands.AddRoiCommand;
3333
import ai.nets.samj.ij.ui.commands.Command;
34+
import ai.nets.samj.ij.ui.commands.DeleteRoiCommand;
3435
import ai.nets.samj.ij.utils.RoiManagerPrivateViolator;
3536
import ai.nets.samj.models.AbstractSamJ;
3637
import ai.nets.samj.ui.ConsumerInterface;
@@ -781,6 +782,7 @@ public void intervalAdded(ListDataEvent e) {}
781782
public void intervalRemoved(ListDataEvent e) {
782783
List<String> roiManagerNames = new ArrayList<String>();
783784
List<Mask> deleteList = new ArrayList<Mask>();
785+
List<Roi> deleteListRoi = new ArrayList<Roi>();
784786
Enumeration<String> elems = listModel.elements();
785787
while (elems.hasMoreElements())
786788
roiManagerNames.add(elems.nextElement());
@@ -789,6 +791,7 @@ public void intervalRemoved(ListDataEvent e) {
789791
if (roiManagerNames.contains(annotatedMask.get(i).getMasks().get(j).getName()))
790792
continue;
791793
deleteList.add(annotatedMask.get(i).getMasks().get(j));
794+
792795
}
793796
}
794797
Command command = new DeleteRoiCommand(this.roiManager, deleteList);

src/main/java/ai/nets/samj/ij/ui/commands/AddRoiCommand.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package ai.nets.samj.ij.ui.commands;
22

3-
import java.util.ArrayList;
43
import java.util.List;
54
import java.util.concurrent.ThreadLocalRandom;
65

@@ -51,7 +50,6 @@ public List<Mask> getMasks(){
5150
@Override
5251
public void execute() {
5352
int resNo = 1;
54-
List<PolygonRoi> undoRois = new ArrayList<PolygonRoi>();
5553
for (Mask m : polys) {
5654
final PolygonRoi pRoi = new PolygonRoi(m.getContour(), PolygonRoi.POLYGON);
5755
String name = promptCount + "." + (resNo ++) + "_"+shape + "_" + modelName;
@@ -66,7 +64,6 @@ else if (shape.equals(""))
6664
m.setName(name);
6765
rois.add(pRoi);
6866
if (isAddingToRoiManager) roiManager.addRoi(pRoi);;
69-
undoRois.add(pRoi);
7067
}
7168
}
7269

src/main/java/ai/nets/samj/ij/ui/commands/DeleteRoiCommand.java

Lines changed: 24 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,44 +1,57 @@
11
package ai.nets.samj.ij.ui.commands;
22

3+
import java.util.ArrayList;
34
import java.util.List;
4-
import java.util.concurrent.ThreadLocalRandom;
55

66
import ai.nets.samj.annotation.Mask;
7+
import ai.nets.samj.ij.utils.RoiManagerPrivateViolator;
8+
import ij.gui.PolygonRoi;
79
import ij.gui.Roi;
810
import ij.plugin.frame.RoiManager;
911

1012
public class DeleteRoiCommand implements Command {
1113
private RoiManager roiManager;
1214
private final List<Mask> polys;
13-
private List<Roi> rois;
15+
private final List<Roi> rois;
1416
private boolean isAddingToRoiManager = true;
15-
private String shape = "";
16-
private int promptCount = ThreadLocalRandom.current().nextInt(0, Integer.MAX_VALUE);
17-
private String modelName = "";
1817

1918
public DeleteRoiCommand(RoiManager roiManager, List<Mask> polys) {
2019
this.roiManager = roiManager;
2120
this.polys = polys;
21+
rois = new ArrayList<Roi>();
22+
for (Mask m : polys) {
23+
Roi roi = new PolygonRoi(m.getContour(), PolygonRoi.POLYGON);
24+
roi.setName(m.getName());
25+
rois.add(roi);
26+
}
2227
}
2328

2429
public void execute() {
25-
model.remove(mask);
30+
if (!isAddingToRoiManager)
31+
return;
32+
for (int n = roiManager.getCount() - 1; n >= 0; n --) {
33+
if (!rois.contains(roiManager.getRoi(n)))
34+
continue;
35+
try {
36+
RoiManagerPrivateViolator.deleteRoiAtPosition(roiManager, n);
37+
} catch (Exception ex) {ex.printStackTrace();}
38+
}
2639
}
2740

2841
public void undo() {
29-
model.add(mask);
42+
for (Roi m : rois) {
43+
if (isAddingToRoiManager) roiManager.addRoi(m);;
44+
}
3045
}
3146

3247
@Override
3348
public void setAddingToRoiManager(boolean addToRoiManager) {
34-
// TODO Auto-generated method stub
35-
49+
this.isAddingToRoiManager = addToRoiManager;
3650
}
3751

3852
@Override
3953
public List<Roi> getImageJRois() {
40-
// TODO Auto-generated method stub
41-
return null;
54+
return rois;
4255
}
4356

4457
@Override

0 commit comments

Comments
 (0)