/* -*- mode: java; c-basic-offset: 2; indent-tabs-mode: nil -*- */ /* Part of the Processing project - http://processing.org Copyright (c) 2012-15 The Processing Foundation This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License version 2 as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc. 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ package processing.mode.java.pdex; import org.eclipse.jdt.core.compiler.IProblem; import processing.app.Problem; /** * Wrapper class for IProblem that stores the tabIndex and line number * according to its tab, including the original IProblem object */ public class JavaProblem implements Problem { /** * The tab number to which the error belongs to */ private int tabIndex; /** * Line number(pde code) of the error */ private int lineNumber; private int startOffset; private int stopOffset; /** * Error Message. Processed form of IProblem.getMessage() */ private String message; /** * The type of error - WARNING or ERROR. */ private int type; /** * If the error is a 'cannot find type' contains the list of suggested imports */ private String[] importSuggestions; public static final int ERROR = 1, WARNING = 2; public JavaProblem(String message, int type, int tabIndex, int lineNumber) { this.message = message; this.type = type; this.tabIndex = tabIndex; this.lineNumber = lineNumber; } /** * * @param iProblem - The IProblem which is being wrapped * @param tabIndex - The tab number to which the error belongs to * @param lineNumber - Line number(pde code) of the error */ public static JavaProblem fromIProblem(IProblem iProblem, int tabIndex, int lineNumber) { int type = 0; if(iProblem.isError()) { type = ERROR; } else if (iProblem.isWarning()) { type = WARNING; } String message = ErrorMessageSimplifier.getSimplifiedErrorMessage(iProblem); return new JavaProblem(message, type, tabIndex, lineNumber); } public void setPDEOffsets(int startOffset, int stopOffset){ this.startOffset = startOffset; this.stopOffset = stopOffset; } @Override public int getStartOffset() { return startOffset; } @Override public int getStopOffset() { return stopOffset; } @Override public boolean isError() { return type == ERROR; } @Override public boolean isWarning() { return type == WARNING; } @Override public String getMessage() { return message; } @Override public int getTabIndex() { return tabIndex; } @Override public int getLineNumber() { return lineNumber; } public String[] getImportSuggestions() { return importSuggestions; } public void setImportSuggestions(String[] a) { importSuggestions = a; } @Override public String toString() { return "TAB " + tabIndex + ",LN " + lineNumber + "LN START OFF: " + startOffset + ",LN STOP OFF: " + stopOffset + ",PROB: " + message; } }