Dnia 14.08.2015 10:58:52, Fredrik Alink napisaĆ(a):
Mateusz Grotek wrote
....... collapse CollapsedMorph new beReplacementFor: self ....... |morph collapsedMorph| morph := Morph new. "collapse it" collapsedMorph := morph collapse. "uncollapse it" collapsedMorph collapseOrExpand. .......
That will turn my morphA into a CollapsedMorph, where originally it is a subclass of a subclass of Morph, thus loosing morphA"s behaviour.
Your original morph is still referenced by the variable morph in the code above. collapsedMorph is a CollapsedMorph instance. You just need to keep it until you want to expand it. After expanding you throw it away.
| originalMorph collapsedMorph | originalMorph := yourMorph. "Your original morph is always here. It doesn't turn into a CollapsedMorph." ... ... ... collapsedMorph := morph collapse. "This is the CollapsedMorph. You need to keep it only until expanding." ... ... "You can still use your original Morph available in the variable originalMorph here." ... collapsedMorph collapseOrExpand. "Expanding it. Now you can ignore the collapsedMorph variable." ...