39 GNEChange(demandElementParent->getViewNet()->getNet(), true),
40 myDemandElementParent(demandElementParent),
41 myDemandElementChild(demandElementChild),
42 myOperation(operation),
43 myOriginalElementChildren(demandElementParent->getDemandElementChildren()),
44 myEditedElementChildren(demandElementParent->getDemandElementChildren()) {
45 myDemandElementParent->incRef(
"GNEChange_Children");
47 auto it = std::find(myEditedElementChildren.begin(), myEditedElementChildren.end(), myDemandElementChild);
49 if (it != myEditedElementChildren.end()) {
50 if ((operation == Operation::MOVE_FRONT) && (it != (myEditedElementChildren.end() - 1))) {
52 it = myEditedElementChildren.erase(it);
54 myEditedElementChildren.insert(it + 1, myDemandElementChild);
55 }
else if ((operation == Operation::MOVE_BACK) && (it != myEditedElementChildren.begin())) {
57 it = myEditedElementChildren.erase(it);
59 myEditedElementChildren.insert(it - 1, myDemandElementChild);
75 if (
myOperation == GNEChange_Children::Operation::MOVE_FRONT) {
80 }
else if (
myOperation == GNEChange_Children::Operation::MOVE_BACK) {
88 if (
myOperation == GNEChange_Children::Operation::MOVE_FRONT) {
93 }
else if (
myOperation == GNEChange_Children::Operation::MOVE_BACK) {
109 if (
myOperation == GNEChange_Children::Operation::MOVE_FRONT) {
114 }
else if (
myOperation == GNEChange_Children::Operation::MOVE_BACK) {
122 if (
myOperation == GNEChange_Children::Operation::MOVE_FRONT) {
127 }
else if (
myOperation == GNEChange_Children::Operation::MOVE_BACK) {
143 if (
myOperation == GNEChange_Children::Operation::MOVE_FRONT) {
145 }
else if (
myOperation == GNEChange_Children::Operation::MOVE_BACK) {
148 return (
"Invalid operation");
152 if (
myOperation == GNEChange_Children::Operation::MOVE_FRONT) {
154 }
else if (
myOperation == GNEChange_Children::Operation::MOVE_BACK) {
157 return (
"Invalid operation");
167 if (
myOperation == GNEChange_Children::Operation::MOVE_FRONT) {
169 }
else if (
myOperation == GNEChange_Children::Operation::MOVE_BACK) {
172 return (
"Invalid operation");
176 if (
myOperation == GNEChange_Children::Operation::MOVE_FRONT) {
178 }
else if (
myOperation == GNEChange_Children::Operation::MOVE_BACK) {
181 return (
"Invalid operation");
FXString undoName() const
return undoName
the function-object for an editing operation (abstract base)
GNEDemandElement * myDemandElementParent
full information regarding the demand element parent element that will be modified ...
~GNEChange_Children()
Destructor.
const std::vector< GNEDemandElement * > myOriginalElementChildren
copy of demand element childrens before apply operation
const Operation myOperation
void requiereSaveDemandElements(bool value)
inform that demand elements has to be saved
const std::string getID() const
function to support debugging
void decRef(const std::string &debugMsg="")
Decrease reference.
GNEDemandElement * myDemandElementChild
demand element which position will be edited edited
GNENet * myNet
the net to which operations shall be applied or which shall be informed about gui updates (we are not...
FXString redoName() const
get Redo name
const std::string & getTagStr() const
get tag assigned to this object in string format
bool myForward
we group antagonistic commands (create junction/delete junction) and keep them apart by this flag ...
std::vector< GNEDemandElement * > myEditedElementChildren
element childrens after apply operation
An Element which don't belongs to GNENet but has influency in the simulation.