/*******************************************************************************
* Copyright (c) 2016 IBM Corporation and others.
* 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:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.jdt.internal.ui.text.correction;
import java.util.Collection;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.jface.text.IDocument;
import org.eclipse.jdt.core.JavaCore;
import org.eclipse.jdt.core.compiler.IProblem;
import org.eclipse.jdt.internal.corext.util.Messages;
import org.eclipse.jdt.ui.text.java.IInvocationContext;
import org.eclipse.jdt.ui.text.java.IProblemLocation;
import org.eclipse.jdt.ui.text.java.correction.ChangeCorrectionProposal;
import org.eclipse.jdt.ui.text.java.correction.ICommandAccess;
import org.eclipse.jdt.internal.ui.JavaPluginImages;
import org.eclipse.jdt.internal.ui.text.java.hover.ConfigureProblemSeverityAction;
public class ConfigureProblemSeveritySubProcessor {
public static final boolean hasConfigureProblemSeverityProposal(int problemId) {
return JavaCore.getOptionForConfigurableSeverity(problemId) != null;
}
public static void addConfigureProblemSeverityProposal(final IInvocationContext context, final IProblemLocation problem, Collection<ICommandAccess> proposals) {
final int problemId= problem.getProblemId();
String optionId;
if (problemId == IProblem.ProblemNotAnalysed) {
String[] options= problem.getProblemArguments();
if (options != null && options.length > 0) {
optionId= options[0];
} else {
optionId= null;
}
} else {
optionId= JavaCore.getOptionForConfigurableSeverity(problemId);
}
if (optionId == null)
return;
ChangeCorrectionProposal proposal= new ChangeCorrectionProposal(CorrectionMessages.ConfigureProblemSeveritySubProcessor_name, null, IProposalRelevance.CONFIGURE_PROBLEM_SEVERITY,
JavaPluginImages.get(JavaPluginImages.IMG_CONFIGURE_PROBLEM_SEVERITIES)) {
@Override
public void apply(IDocument document) {
ConfigureProblemSeverityAction problemSeverityAction= new ConfigureProblemSeverityAction(context.getCompilationUnit().getJavaProject(), optionId, (problemId & IProblem.Javadoc) != 0,
null);
problemSeverityAction.run();
}
@Override
public String getAdditionalProposalInfo(IProgressMonitor monitor) {
String problemMsg= ""; //$NON-NLS-1$
for (IProblem iProblem : context.getASTRoot().getProblems()) {
if (problem.getProblemId() == iProblem.getID()
&& problem.getOffset() == iProblem.getSourceStart()
&& problem.getLength() == iProblem.getSourceEnd() - iProblem.getSourceStart() + 1) {
problemMsg= iProblem.getMessage();
break;
}
}
return Messages.format(CorrectionMessages.ConfigureProblemSeveritySubProcessor_info, new String[] { problemMsg });
}
};
proposals.add(proposal);
}
}