/* * Copyright (c) 2013, the Dart project authors. * * Licensed under the Eclipse Public License v1.0 (the "License"); you may not use this file except * in compliance with the License. You may obtain a copy of the License at * * http://www.eclipse.org/legal/epl-v10.html * * Unless required by applicable law or agreed to in writing, software distributed under the License * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express * or implied. See the License for the specific language governing permissions and limitations under * the License. */ package com.google.dart.tools.ui.internal.text.correction; import com.google.common.collect.Lists; import com.google.dart.engine.error.AnalysisError; import com.google.dart.engine.services.assist.AssistContext; import com.google.dart.tools.ui.DartToolsPlugin; import com.google.dart.tools.ui.internal.text.editor.DartEditor; import com.google.dart.tools.ui.text.dart.CompletionProposalComparator; import org.eclipse.jface.text.contentassist.ICompletionProposal; import org.eclipse.jface.text.quickassist.IQuickAssistInvocationContext; import org.eclipse.jface.text.quickassist.IQuickAssistProcessor; import org.eclipse.jface.text.source.Annotation; import java.util.Collections; import java.util.List; /** * {@link IQuickAssistProcessor} for Dart. * * @coverage dart.editor.ui.correction */ public class DartCorrectionProcessor_OLD implements org.eclipse.jface.text.quickassist.IQuickAssistProcessor { private final DartCorrectionAssistant_OLD assistant; private String errorMessage; public DartCorrectionProcessor_OLD(DartCorrectionAssistant_OLD assistant) { this.assistant = assistant; } @Override public boolean canAssist(IQuickAssistInvocationContext invocationContext) { return false; } @Override public boolean canFix(Annotation annotation) { AnalysisError problem = assistant.getAnalysisError(annotation); if (problem == null) { return false; } return QuickFixProcessor_OLD.hasFix(problem); } @Override public ICompletionProposal[] computeQuickAssistProposals( IQuickAssistInvocationContext invocationContext) { // prepare AssistContextUI AssistContextUI contextUI; { DartEditor editor = assistant.getEditor(); AssistContext context = editor.getAssistContext(); contextUI = new AssistContextUI(context, editor); } // prepare proposals List<ICompletionProposal> proposals = Lists.newArrayList(); // add Quick Fixes try { QuickFixProcessor_OLD qfProcessor = new QuickFixProcessor_OLD(); AnalysisError problemToFix = assistant.getProblemToFix(); ICompletionProposal[] fixProposals = qfProcessor.computeFix(contextUI, problemToFix); Collections.addAll(proposals, fixProposals); // show problem only if there is are fixes if (fixProposals.length != 0) { assistant.showProblemToFix(); } } catch (Throwable e) { DartToolsPlugin.log(e); } // add Quick Assists if (proposals.isEmpty()) { QuickAssistProcessor qaProcessor = new QuickAssistProcessor(); ICompletionProposal[] assistProposals = qaProcessor.getAssists(contextUI); Collections.addAll(proposals, assistProposals); } // done Collections.sort(proposals, new CompletionProposalComparator()); return proposals.toArray(new ICompletionProposal[proposals.size()]); } @Override public String getErrorMessage() { return errorMessage; } }