/******************************************************************************* * Copyright © 2010, 2013 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * IBM Corporation - initial API and implementation * *******************************************************************************/ package org.eclipse.edt.ide.rui.visualeditor.internal.widget.gen.engine; import java.util.List; import org.eclipse.edt.ide.rui.visualeditor.internal.widget.gen.ComposeGenNode; import org.eclipse.edt.ide.rui.visualeditor.internal.widget.gen.GenNode; public class RepeatResolver implements IGenVariableResolver { public void resolve(GenNode genNode) { if(genNode instanceof ComposeGenNode){ ComposeGenNode composeGenNode = (ComposeGenNode)genNode; String template = composeGenNode.getTemplate(); if(template.contains(IGenVariableResolver.StartRepeat) && template.contains(IGenVariableResolver.EndRepeat)){ String oldRepeatString = template.substring(template.indexOf(IGenVariableResolver.StartRepeat), template.indexOf(IGenVariableResolver.EndRepeat)+IGenVariableResolver.EndRepeat.length()).trim(); String newRepeatString = oldRepeatString.replace(IGenVariableResolver.StartRepeat, ""); newRepeatString = newRepeatString.replace(IGenVariableResolver.EndRepeat, "").trim(); StringBuffer sbRepeat = new StringBuffer("\t\t\t"); List<GenNode> children = composeGenNode.getChildren(); for(int i=0; i<children.size(); i++){ GenNode child = children.get(i); String oldTemplate = child.getTemplate(); child.setTemplate(newRepeatString); GenVariableResolverManager.getInstance().resolve(child); sbRepeat.append(child.getTemplate()).append(",").append("\n\t\t\t"); child.setTemplate(oldTemplate); } String repeat = sbRepeat.toString(); if(children.isEmpty()){ repeat = ""; }else{ repeat = repeat.substring(0, repeat.lastIndexOf(",")); } template = template.replace(oldRepeatString, repeat); composeGenNode.setTemplate(template); } } } }