/* * Copyright (c) 2003-2004 Christopher Lenz and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Common Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/cpl-v10.html * * Contributors: * Christopher Lenz - initial API and implementation * * $Id: AbstractProblemReporter.java,v 1.1 2004-09-02 18:07:13 jsurfer Exp $ */ package net.sourceforge.phpeclipse.css.core.internal.parser; import net.sourceforge.phpeclipse.css.core.internal.CssCoreMessages; import net.sourceforge.phpeclipse.css.core.parser.IProblem; import net.sourceforge.phpeclipse.css.core.parser.IProblemCollector; import net.sourceforge.phpeclipse.css.core.parser.IProblemReporter; import org.eclipse.jface.text.BadLocationException; import org.eclipse.jface.text.IDocument; import org.eclipse.jface.text.IRegion; public abstract class AbstractProblemReporter implements IProblemReporter { // Instance Variables ------------------------------------------------------ protected IDocument document; protected IProblemCollector problemCollector = new IProblemCollector() { public void addProblem(IProblem problem) { // do nothing } }; // IProblemReporter Implementation ----------------------------------------- /* * @see IProblemReporter#setProblemCollector(IProblemCollector) */ public void setProblemCollector(IProblemCollector problemCollector) { this.problemCollector = problemCollector; } // Protected Methods ------------------------------------------------------- protected final IProblem createError(String id, IRegion region) { return createError(id, new String[0], region); } protected final IProblem createError(String id, String arg, IRegion region) { return createError(id, new String[] {arg}, region); } protected final IProblem createError(String id, String args[], IRegion region) { return createProblem(id, args, region, true); } protected final IProblem createWarning(String id, IRegion region) { return createWarning(id, new String[0], region); } protected final IProblem createWarning(String id, String arg, IRegion region) { return createWarning(id, new String[] {arg}, region); } protected final IProblem createWarning(String id, String args[], IRegion region) { return createProblem(id, args, region, false); } protected final IProblem reportError(String id, IRegion region) { return reportProblem(createError(id, region)); } protected final IProblem reportError(String id, String arg, IRegion region) { return reportProblem(createError(id, arg, region)); } protected final IProblem reportError(String id, String args[], IRegion region) { return reportProblem(createError(id, args, region)); } protected final IProblem reportWarning(String id, IRegion region) { return reportProblem(createWarning(id, region)); } protected final IProblem reportWarning(String id, String arg, IRegion region) { return reportProblem(createWarning(id, arg, region)); } protected final IProblem reportWarning(String id, String args[], IRegion region) { return reportProblem(createWarning(id, args, region)); } protected final IProblem reportProblem(IProblem problem) { problemCollector.addProblem(problem); return problem; } protected final void setDocument(IDocument document) { this.document = document; } // Private Methods --------------------------------------------------------- private IProblem createProblem(String id, String args[], IRegion region, boolean error) { String message = CssCoreMessages.getString( "CssParser.problem." + id, args); //$NON-NLS-1$ int offset = region.getOffset(); int lineNumber = -1; try { lineNumber = document.getLineOfOffset(offset); } catch (BadLocationException e) { // ignore } return new DefaultProblem(id, message, null, offset, offset + region.getLength(), lineNumber, error); } }