public override bool doTool() { Condition newCondition = null; int type = ConditionsController.getTypeFromstring(conditionType); if (type == ConditionsController.FLAG_CONDITION) { newCondition = new FlagCondition(conditionId, ConditionsController.getStateFromstring(conditionState)); } else if (type == ConditionsController.VAR_CONDITION) { newCondition = new VarCondition(conditionId, ConditionsController.getStateFromstring(conditionState), int.Parse(value)); } else if (type == ConditionsController.GLOBAL_STATE_CONDITION) { newCondition = new GlobalStateCondition(conditionId, ConditionsController.getStateFromstring(conditionState)); } if (newCondition != null) { if (index1 < conditions.size()) { if (index2 == ConditionsController.INDEX_NOT_USED) { // Add new block List <Condition> newBlock = new List <Condition>(); newBlock.Add(newCondition); conditions.add(index1, newBlock); indexAdded = index1; blockAdded = newBlock; } else { List <Condition> block = conditions.get(index1); if (index2 < 0 || index2 > block.Count) { return(false); } if (index2 == conditions.size()) { block.Add(newCondition); indexAdded = block.IndexOf(newCondition); conditionAdded = newCondition; } else { indexAdded = index2; conditionAdded = newCondition; block.Insert(index2, newCondition); } } } else { // Add new block List <Condition> newBlock = new List <Condition>(); newBlock.Add(newCondition); conditions.add(newBlock); indexAdded = conditions.size() - 1; blockAdded = newBlock; } Controller.getInstance().updateVarFlagSummary(); Controller.getInstance().updatePanel(); return(true); } return(false); }