intial source from ttp://www.sf.net/projects/wdte
[phpeclipse.git] / archive / net.sourceforge.phpeclipse.css.core / src / net / sourceforge / phpeclipse / css / core / internal / parser / AbstractProblemReporter.java
1 /*
2  * Copyright (c) 2003-2004 Christopher Lenz and others.
3  * All rights reserved. This program and the accompanying materials 
4  * are made available under the terms of the Common Public License v1.0
5  * which accompanies this distribution, and is available at
6  * http://www.eclipse.org/legal/cpl-v10.html
7  * 
8  * Contributors:
9  *     Christopher Lenz - initial API and implementation
10  * 
11  * $Id: AbstractProblemReporter.java,v 1.1 2004-09-02 18:07:13 jsurfer Exp $
12  */
13
14 package net.sourceforge.phpeclipse.css.core.internal.parser;
15
16 import net.sourceforge.phpeclipse.css.core.internal.CssCoreMessages;
17 import net.sourceforge.phpeclipse.css.core.parser.IProblem;
18 import net.sourceforge.phpeclipse.css.core.parser.IProblemCollector;
19 import net.sourceforge.phpeclipse.css.core.parser.IProblemReporter;
20
21 import org.eclipse.jface.text.BadLocationException;
22 import org.eclipse.jface.text.IDocument;
23 import org.eclipse.jface.text.IRegion;
24
25 public abstract class AbstractProblemReporter implements IProblemReporter {
26
27         // Instance Variables ------------------------------------------------------
28
29         protected IDocument document;
30
31         protected IProblemCollector problemCollector = new IProblemCollector() {
32                 public void addProblem(IProblem problem) {
33                         // do nothing
34                 }
35         };
36
37         // IProblemReporter Implementation -----------------------------------------
38
39         /*
40          * @see IProblemReporter#setProblemCollector(IProblemCollector)
41          */
42         public void setProblemCollector(IProblemCollector problemCollector) {
43                 this.problemCollector = problemCollector;
44         }
45
46         // Protected Methods -------------------------------------------------------
47
48         protected final IProblem createError(String id, IRegion region) {
49                 return createError(id, new String[0], region);
50         }
51
52         protected final IProblem createError(String id, String arg,
53                 IRegion region) {
54                 return createError(id, new String[] {arg}, region);
55         }
56
57         protected final IProblem createError(String id, String args[],
58                 IRegion region) {
59                 return createProblem(id, args, region, true);
60         }
61
62         protected final IProblem createWarning(String id, IRegion region) {
63                 return createWarning(id, new String[0], region);
64         }
65
66         protected final IProblem createWarning(String id, String arg,
67                 IRegion region) {
68                 return createWarning(id, new String[] {arg}, region);
69         }
70
71         protected final IProblem createWarning(String id, String args[],
72                 IRegion region) {
73                 return createProblem(id, args, region, false);
74         }
75
76         protected final IProblem reportError(String id, IRegion region) {
77                 return reportProblem(createError(id, region));
78         }
79
80         protected final IProblem reportError(String id, String arg,
81                 IRegion region) {
82                 return reportProblem(createError(id, arg, region));
83         }
84
85         protected final IProblem reportError(String id, String args[],
86                 IRegion region) {
87                 return reportProblem(createError(id, args, region));
88         }
89
90         protected final IProblem reportWarning(String id, IRegion region) {
91                 return reportProblem(createWarning(id, region));
92         }
93
94         protected final IProblem reportWarning(String id, String arg,
95                 IRegion region) {
96                 return reportProblem(createWarning(id, arg, region));
97         }
98
99         protected final IProblem reportWarning(String id, String args[],
100                 IRegion region) {
101                 return reportProblem(createWarning(id, args, region));
102         }
103
104         protected final IProblem reportProblem(IProblem problem) {
105                 problemCollector.addProblem(problem);
106                 return problem;
107         }
108
109         protected final void setDocument(IDocument document) {
110                 this.document = document;
111         }
112
113         // Private Methods ---------------------------------------------------------
114
115         private IProblem createProblem(String id, String args[],
116                 IRegion region, boolean error) {
117                 String message = CssCoreMessages.getString(
118                         "CssParser.problem." + id, args); //$NON-NLS-1$
119                 int offset = region.getOffset();
120                 int lineNumber = -1;
121                 try {
122                         lineNumber = document.getLineOfOffset(offset);
123                 } catch (BadLocationException e) {
124                         // ignore
125                 }
126                 return new DefaultProblem(id, message, null, offset,
127                         offset + region.getLength(), lineNumber, error);
128         }
129
130 }