| /******************************************************************************* |
| * Copyright (c) 2015 Obeo. |
| * 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: |
| * Obeo - initial API and implementation and/or initial documentation |
| * ... |
| *******************************************************************************/ |
| package org.eclipse.intent.mapping.text; |
| |
| /** |
| * A text region. |
| * |
| * @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a> |
| */ |
| public class TextRegion { |
| |
| /** |
| * The start offset. |
| */ |
| private final int startOffset; |
| |
| /** |
| * The end offset. |
| */ |
| private final int endOffset; |
| |
| /** |
| * The text. |
| */ |
| private final String text; |
| |
| /** |
| * The containing {@link Object} should |
| * {@link org.eclipse.intent.mapping.connector.IConnectorRegistry#getLocation(org.eclipse.intent.mapping.base.ILocationContainer, Object) |
| * be located} by a {@link ITextContainer}. |
| */ |
| private final Object container; |
| |
| /** |
| * Constructor. |
| * |
| * @param container |
| * the containing {@link Object} should |
| * {@link org.eclipse.intent.mapping.connector.IConnectorRegistry#getLocation(org.eclipse.intent.mapping.base.ILocationContainer, Object) |
| * be located} by a {@link ITextContainer} |
| * @param text |
| * the text |
| * @param startOffset |
| * the start offset |
| * @param endOffset |
| * the end offset |
| */ |
| public TextRegion(Object container, String text, int startOffset, int endOffset) { |
| this.container = container; |
| this.text = text; |
| this.startOffset = startOffset; |
| this.endOffset = endOffset; |
| } |
| |
| /** |
| * Gets the start offset. |
| * |
| * @return the start offset |
| */ |
| public int getStartOffset() { |
| return startOffset; |
| } |
| |
| /** |
| * Gets the end offset. |
| * |
| * @return the end offset |
| */ |
| public int getEndOffset() { |
| return endOffset; |
| } |
| |
| /** |
| * Get the text. |
| * |
| * @return the text |
| */ |
| public String getText() { |
| return text; |
| } |
| |
| /** |
| * Gets the containing {@link Object} should |
| * {@link org.eclipse.intent.mapping.connector.IConnectorRegistry#getLocation(org.eclipse.intent.mapping.base.ILocationContainer, Object) |
| * be located} by a {@link ITextContainer}. |
| * |
| * @return the containing {@link Object} should |
| * {@link org.eclipse.intent.mapping.connector.IConnectorRegistry#getLocation(org.eclipse.intent.mapping.base.ILocationContainer, Object) |
| * be located} by a {@link ITextContainer} |
| */ |
| public Object getContainer() { |
| return container; |
| } |
| |
| @Override |
| public int hashCode() { |
| return (text.hashCode() ^ endOffset) - startOffset ^ container.hashCode(); |
| } |
| |
| @Override |
| public boolean equals(Object obj) { |
| return obj instanceof TextRegion && startOffset == ((TextRegion)obj).startOffset |
| && endOffset == ((TextRegion)obj).endOffset && text.equals(((TextRegion)obj).text) |
| && container.equals(((TextRegion)obj).container); |
| } |
| |
| } |