01: /*******************************************************************************
02: * Copyright (c) 2000, 2004 IBM Corporation and others.
03: * All rights reserved. This program and the accompanying materials
04: * are made available under the terms of the Eclipse Public License v1.0
05: * which accompanies this distribution, and is available at
06: * http://www.eclipse.org/legal/epl-v10.html
07: *
08: * Contributors:
09: * IBM Corporation - initial API and implementation
10: *******************************************************************************/package org.eclipse.jface.text.source.translation;
11:
12: import java.io.IOException;
13: import java.io.Reader;
14:
15: /**
16: * A translator translates a given file into another language.
17: * The translator is also responsible to provide line mapping
18: * information for the translation and to compute which offset
19: * in an original line corresponds to a given offset in a
20: * target line.
21: *
22: * @since 3.0
23: */
24: public interface ITranslator {
25:
26: /**
27: * Reads the source from the given reader and creates
28: * translates it into another language. The translated
29: * source might be given the optional name.
30: *
31: * @param reader the reader to access the source
32: * @param name the name of the translated source or <code>null</code> if none
33: * @return
34: * @throws IOException
35: */
36: String translate(Reader reader, String name) throws IOException;
37:
38: /**
39: * Returns the line mapping information.
40: *
41: * @return an int array where the index corresponds to line
42: * numbers in the translation and the value is a
43: * source line number
44: */
45: int[] getLineMapping();
46:
47: /**
48: * Assigns an optional tag handler factory to this translator.
49: * <p>
50: * A translator can delegate the handling of individual tags
51: * to tag handlers. The factory is responsible to provide
52: * the correct tag handlers.</p>
53: *
54: * @param tagHandlerFactory a tag handler factory or <code>null</code>
55: * if this translator does all work itself
56: */
57: void setTagHandlerFactory(ITagHandlerFactory tagHandlerFactory);
58:
59: /**
60: * Computes the offset in the source line that corresponds
61: * to the given offset in the translated line.
62: *
63: * @param sourceLine the source line
64: * @param translatedLine the translated line
65: * @param offsetInTranslatedLine the offset in the translated line
66: * @param tag the tag to which the source line belongs or
67: * <code>null</code> if the tag is not known
68: * @return the offset in the source line or <code>-1</code> if
69: * it was not possible to compute the offset
70: */
71: int backTranslateOffsetInLine(String sourceLine,
72: String translatedLine, int offsetInTranslatedLine,
73: String tag);
74: }
|