/*
* 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.tableeditor.assist;
import java.util.Optional;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.jface.viewers.StyledString;
import org.robotframework.ide.eclipse.main.plugin.assist.AssistProposal;
import org.robotframework.red.jface.assist.RedContentProposal;
import org.robotframework.red.jface.assist.RedTextContentAdapter.SubstituteTextModificationStrategy;
public class AssistProposalAdapter implements RedContentProposal {
private final AssistProposal wrappedProposal;
private final Optional<ModificationStrategy> modificationStrategy;
private final String additionalSuffix;
public AssistProposalAdapter(final AssistProposal wrappedProposal) {
this(wrappedProposal, null, "");
}
public AssistProposalAdapter(final AssistProposal wrappedProposal,
final ModificationStrategy modificationStrategy) {
this(wrappedProposal, modificationStrategy, "");
}
public AssistProposalAdapter(final AssistProposal wrappedProposal, final String additionalSuffix) {
this(wrappedProposal, null, additionalSuffix);
}
private AssistProposalAdapter(final AssistProposal wrappedProposal,
final ModificationStrategy modificationStrategy, final String additionalSuffix) {
this.wrappedProposal = wrappedProposal;
this.modificationStrategy = Optional.ofNullable(modificationStrategy);
this.additionalSuffix = additionalSuffix;
}
@Override
public String getContent() {
return wrappedProposal.getContent() + additionalSuffix;
}
@Override
public int getCursorPosition() {
return getContent().length();
}
@Override
public ImageDescriptor getImage() {
return wrappedProposal.getImage();
}
@Override
public StyledString getStyledLabel() {
return wrappedProposal.getStyledLabel();
}
@Override
public String getLabel() {
return wrappedProposal.getLabel();
}
@Override
public boolean hasDescription() {
return wrappedProposal.hasDescription();
}
@Override
public String getDescription() {
return wrappedProposal.getDescription();
}
@Override
public ModificationStrategy getModificationStrategy() {
return modificationStrategy.orElse(new SubstituteTextModificationStrategy());
}
}