trackeditor: implement circuit view delete all objects for graphic objects and add undo

git-svn-id: https://svn.code.sf.net/p/speed-dreams/code/trunk@9085 30fe4595-0a0c-4342-8851-515496e4dcbd

Former-commit-id: 40e2f670f5caa629479a5e8b0d79111f1e71e83a
Former-commit-id: d8e120a9ac29c58b837cbbf9714530bdb7ca2d0f
This commit is contained in:
iobyte 2023-07-08 14:46:25 +00:00
parent f70065eba7
commit a70c191a70
3 changed files with 82 additions and 7 deletions

View file

@ -57,12 +57,14 @@ import utils.circuit.Reliefs;
import utils.circuit.Segment;
import utils.circuit.Straight;
import utils.circuit.XmlObjPits;
import utils.undo.DeletedObject;
import utils.undo.MovedObject;
import utils.undo.ObjectMapObject;
import utils.undo.Undo;
import utils.undo.UndoAddGraphicObject;
import utils.undo.UndoAddObject;
import utils.undo.UndoAddSegment;
import utils.undo.UndoDeleteAllGraphicObjects;
import utils.undo.UndoDeleteAllObjects;
import utils.undo.UndoDeleteGraphicObject;
import utils.undo.UndoDeleteObject;
@ -2387,6 +2389,8 @@ public class CircuitView extends JComponent implements KeyListener, MouseListene
return;
}
}
return;
}
Vector<ObjectMap> objectMaps = editorFrame.getObjectMaps();
@ -2449,6 +2453,8 @@ public class CircuitView extends JComponent implements KeyListener, MouseListene
return;
}
}
return;
}
Vector<ObjectMap> objectMaps = editorFrame.getObjectMaps();
@ -2545,6 +2551,8 @@ public class CircuitView extends JComponent implements KeyListener, MouseListene
return;
}
}
return;
}
Vector<ObjectMap> objectMaps = editorFrame.getObjectMaps();
@ -2583,14 +2591,28 @@ public class CircuitView extends JComponent implements KeyListener, MouseListene
if (isGraphicObject)
{
for (GraphicObject graphicObject : editorFrame.getGraphicObjects())
Vector<DeletedObject> deletedObjects = new Vector<DeletedObject>();
for (int i = 0; i < editorFrame.getGraphicObjects().size(); i++)
{
if (graphicObject.getShape() == shape)
if (editorFrame.getGraphicObjects().get(i).getShape().getRGB() == shape.getRGB())
{
JOptionPane.showMessageDialog(null, "Not implemented yet!", "Delete All Objects", JOptionPane.INFORMATION_MESSAGE);
return;
deletedObjects.add(0, new DeletedObject(editorFrame.getGraphicObjects().get(i), i));
}
}
Undo.add(new UndoDeleteAllGraphicObjects(editorFrame.getGraphicObjects(), deletedObjects));
for (int i = 0; i < deletedObjects.size(); i++)
{
editorFrame.getGraphicObjects().remove(deletedObjects.get(i).object);
}
selectedShape = null;
editorFrame.documentIsModified = true;
invalidate();
repaint();
return;
}
int rgb = shape.getRGB();
@ -2893,7 +2915,7 @@ public class CircuitView extends JComponent implements KeyListener, MouseListene
JMenuItem itemEdit = new JMenuItem("Edit");
JMenuItem itemEditAll = isGraphicObject ? null : new JMenuItem("Edit All");
JMenuItem itemDelete = new JMenuItem("Delete");
JMenuItem itemDeleteAll = isGraphicObject ? null : new JMenuItem("Delete All");
JMenuItem itemDeleteAll = new JMenuItem("Delete All");
JMenuItem itemDeleteAdjacent = isGraphicObject ? null : new JMenuItem("Delete Adjacent");
JMenuItem itemDeleteAllAdjacent = isGraphicObject ? null : new JMenuItem("Delete All Adjacent");
JMenuItem itemMoveToObjects = isGraphicObject ? null : new JMenuItem("Move To Objects");
@ -2902,13 +2924,13 @@ public class CircuitView extends JComponent implements KeyListener, MouseListene
itemCopy.setAction(copyAction);
itemEdit.setAction(editAction);
itemDelete.setAction(deleteAction);
itemDeleteAll.setAction(deleteAllAction);
if (isGraphicObject)
{
}
else
{
itemEditAll.setAction(editAllAction);
itemDeleteAll.setAction(deleteAllAction);
itemDeleteAdjacent.setAction(deleteAdjacentAction);
itemDeleteAllAdjacent.setAction(deleteAllAdjacentAction);
itemMoveToObjects.setAction(moveToObjectsAction);
@ -2924,9 +2946,9 @@ public class CircuitView extends JComponent implements KeyListener, MouseListene
}
menu.addSeparator();
menu.add(itemDelete);
menu.add(itemDeleteAll);
if (!isGraphicObject)
{
menu.add(itemDeleteAll);
menu.addSeparator();
menu.add(itemDeleteAdjacent);
menu.add(itemDeleteAllAdjacent);

View file

@ -0,0 +1,15 @@
package utils.undo;
import utils.circuit.GraphicObject;
public class DeletedObject
{
public GraphicObject object;
public int objectIndex;
public DeletedObject(GraphicObject object, int objectIndex)
{
this.object = object;
this.objectIndex = objectIndex;
}
}

View file

@ -0,0 +1,38 @@
package utils.undo;
import java.util.Vector;
import utils.circuit.GraphicObject;
public class UndoDeleteAllGraphicObjects implements UndoInterface
{
Vector<GraphicObject> graphicObjects;
Vector<DeletedObject> undo;
Vector<DeletedObject> redo;
public UndoDeleteAllGraphicObjects(Vector<GraphicObject> graphicObjects, Vector<DeletedObject> deletedObjects)
{
this.graphicObjects = graphicObjects;
this.undo = deletedObjects;
}
public void undo()
{
for (int i = undo.size() - 1; i >= 0 ; i--)
{
graphicObjects.add(undo.get(i).objectIndex, undo.get(i).object);
}
redo = undo;
undo = null;
}
public void redo()
{
for (int i = 0; i < redo.size(); i++)
{
graphicObjects.remove(redo.get(i).object);
}
undo = redo;
redo = null;
}
}