/* * Copyright 2016 Nokia Solutions and Networks * Licensed under the Apache License, Version 2.0, * see license.txt file for details. */ package org.robotframework.ide.eclipse.main.plugin.project.build.fix; import java.util.ArrayList; import java.util.Collection; import java.util.List; import java.util.Optional; import org.eclipse.core.resources.IMarker; import org.eclipse.jface.text.IDocument; import org.eclipse.jface.text.IRegion; import org.eclipse.jface.text.contentassist.ICompletionProposal; import org.robotframework.ide.eclipse.main.plugin.RedImages; import org.robotframework.ide.eclipse.main.plugin.model.RobotSuiteFile; import org.robotframework.ide.eclipse.main.plugin.tableeditor.source.assist.RedCompletionBuilder; import org.robotframework.ide.eclipse.main.plugin.tableeditor.source.assist.RedCompletionProposal; import org.robotframework.red.graphics.ImagesManager; /** * @author Michal Anglart * */ public class ChangeToFixer extends RedSuiteMarkerResolution { public static Collection<ChangeToFixer> createFixers(final IRegion toChange, final Collection<String> replacements) { final List<ChangeToFixer> fixers = new ArrayList<>(); for (final String replacement : replacements) { fixers.add(new ChangeToFixer(toChange, replacement)); } return fixers; } private final IRegion toChange; private final String replacement; public ChangeToFixer(final IRegion toChange, final String replacement) { this.toChange = toChange; this.replacement = replacement; } @Override public String getLabel() { return "Change to '" + replacement + "'"; } @Override public Optional<ICompletionProposal> asContentProposal(final IMarker marker, final IDocument document, final RobotSuiteFile suiteModel) { final String info = Snippets.createSnippetInfo(document, toChange, replacement); final RedCompletionProposal proposal = RedCompletionBuilder.newProposal() .willPut(replacement) .byReplacingRegion(toChange) .secondaryPopupShouldBeDisplayedUsingHtml(info) .thenCursorWillStopAtTheEndOfInsertion() .displayedLabelShouldBe(getLabel()) .proposalsShouldHaveIcon(ImagesManager.getImage(RedImages.getChangeImage())) .create(); return Optional.<ICompletionProposal> of(proposal); } }