/**
* Copyright (c) 2010, 2012 Darmstadt University of Technology.
* 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:
* Marcel Bruch - initial API and implementation.
*/
package org.eclipse.recommenders.completion.rcp.processable;
import java.util.Set;
import org.eclipse.jface.viewers.StyledString;
import org.eclipse.swt.graphics.Image;
import com.google.common.annotations.Beta;
import com.google.common.collect.Sets;
@Beta
public class ProposalProcessorManager {
private final Set<ProposalProcessor> processors = Sets.newLinkedHashSet();
private final IProcessableProposal proposal;
public ProposalProcessorManager(IProcessableProposal proposal) {
this.proposal = proposal;
}
public void addProcessor(ProposalProcessor processor) {
processors.add(processor);
}
public boolean prefixChanged(String prefix) {
boolean keepProposal = false;
int tmpRelevance = 0;
for (ProposalProcessor p : processors) {
keepProposal |= p.isPrefix(prefix);
tmpRelevance += p.modifyRelevance();
}
proposal.setRelevance(tmpRelevance);
return keepProposal;
}
public StyledString decorateStyledDisplayString(StyledString mutableStyledString) {
for (ProposalProcessor p : processors) {
p.modifyDisplayString(mutableStyledString);
}
return mutableStyledString;
}
public Image decorateImage(Image proposalImage) {
Image img = proposalImage;
for (ProposalProcessor p : processors) {
img = p.modifyImage(img);
}
return img;
}
}