public void dissolve() { if (m_element.getParent() instanceof edu.cmu.cs.stage3.alice.core.response.CompositeResponse) { authoringTool.getUndoRedoStack().startCompound(); edu.cmu.cs.stage3.alice.core.response.CompositeResponse parent = (edu.cmu.cs.stage3.alice.core.response.CompositeResponse) m_element.getParent(); int index = parent.componentResponses.indexOf(m_element); if (parent instanceof edu.cmu.cs.stage3.alice.core.response.IfElseInOrder) { if (!parent.componentResponses.contains(m_element)) { index = ((edu.cmu.cs.stage3.alice.core.response.IfElseInOrder) parent) .elseComponentResponses.indexOf(m_element); } } Object responses[] = m_components.getArrayValue(); for (int i = 0; i < responses.length; i++) { if (responses[i] instanceof edu.cmu.cs.stage3.alice.core.Response) { edu.cmu.cs.stage3.alice.core.Response currentResponse = (edu.cmu.cs.stage3.alice.core.Response) responses[i]; currentResponse.removeFromParent(); currentResponse.setParent(parent); parent.componentResponses.add(index + i, currentResponse); } } m_element.removeFromParent(); authoringTool.getUndoRedoStack().stopCompound(); } else if (m_element.getParent() instanceof edu.cmu.cs.stage3.alice.core.question.userdefined.Composite) { authoringTool.getUndoRedoStack().startCompound(); edu.cmu.cs.stage3.alice.core.question.userdefined.Composite parent = (edu.cmu.cs.stage3.alice.core.question.userdefined.Composite) m_element.getParent(); int index = parent.getIndexOfChild(m_element); if (parent instanceof edu.cmu.cs.stage3.alice.core.question.userdefined.IfElse) { if (!parent.components.contains(m_element)) { index = ((edu.cmu.cs.stage3.alice.core.question.userdefined.IfElse) parent) .elseComponents.indexOf(m_element); } } Object questions[] = m_components.getArrayValue(); for (int i = 0; i < questions.length; i++) { if (questions[i] instanceof edu.cmu.cs.stage3.alice.core.question.userdefined.Component) { edu.cmu.cs.stage3.alice.core.question.userdefined.Component currentQuestion = (edu.cmu.cs.stage3.alice.core.question.userdefined.Component) questions[i]; currentQuestion.removeFromParent(); currentQuestion.setParent(parent); parent.components.add(index + i, currentQuestion); } } m_element.removeFromParent(); authoringTool.getUndoRedoStack().stopCompound(); } else if (m_element.getParent() instanceof edu.cmu.cs.stage3.alice.core.question.userdefined.UserDefinedQuestion) { authoringTool.getUndoRedoStack().startCompound(); edu.cmu.cs.stage3.alice.core.question.userdefined.UserDefinedQuestion parent = (edu.cmu.cs.stage3.alice.core.question.userdefined.UserDefinedQuestion) m_element.getParent(); int index = parent.getIndexOfChild(m_element); Object questions[] = m_components.getArrayValue(); for (int i = 0; i < questions.length; i++) { if (questions[i] instanceof edu.cmu.cs.stage3.alice.core.question.userdefined.Component) { edu.cmu.cs.stage3.alice.core.question.userdefined.Component currentQuestion = (edu.cmu.cs.stage3.alice.core.question.userdefined.Component) questions[i]; currentQuestion.removeFromParent(); currentQuestion.setParent(parent); parent.components.add(index + i, currentQuestion); } } m_element.removeFromParent(); authoringTool.getUndoRedoStack().stopCompound(); } }