/******************************************************************************* * Copyright (c) 2008 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.wst.sse.ui.internal.editor; import java.util.ArrayList; import java.util.List; import org.eclipse.wst.sse.core.internal.provisional.IStructuredModel; import org.eclipse.wst.sse.core.internal.provisional.IndexedRegion; /** * This class/interface is part of an experimental API that is still under * development and expected to change significantly before reaching stability. * It is being made available at this early stage to solicit feedback from * pioneering adopters on the understanding that any code that uses this API * will almost certainly be broken (repeatedly) as the API evolves. */ public class SelectionConvertor { /** * @param model * @param start * @param end * @return the most specific mapping of this text selection to * implementors of IndexedRegion */ public Object[] getElements(IStructuredModel model, int start, int end) { Object[] localSelectedStructures = null; if (model != null) { IndexedRegion region = model.getIndexedRegion(start); if (region != null) { if (end <= region.getEndOffset()) { // single selection localSelectedStructures = new Object[1]; localSelectedStructures[0] = region; } else { // multiple selection int maxLength = model.getStructuredDocument().getLength(); List structures = new ArrayList(2); while (region != null && region.getEndOffset() <= end && region.getEndOffset() < maxLength) { structures.add(region); region = model.getIndexedRegion(region.getEndOffset() + 1); } localSelectedStructures = structures.toArray(); } } } if (localSelectedStructures == null) { localSelectedStructures = new Object[0]; } return localSelectedStructures; } }