package net.enilink.komma.edit.ui.celleditor;
import net.enilink.komma.common.ui.assist.ContentProposals;
import net.enilink.komma.common.ui.celleditor.TextCellEditorWithContentProposal;
import net.enilink.komma.edit.properties.IEditingSupport;
import net.enilink.komma.edit.properties.IProposalSupport;
import net.enilink.komma.edit.provider.IItemLabelProvider;
import net.enilink.komma.edit.ui.assist.JFaceContentProposal;
import net.enilink.komma.edit.ui.assist.JFaceProposalProvider;
import net.enilink.komma.edit.ui.provider.ExtendedImageRegistry;
import org.eclipse.jface.fieldassist.ContentProposalAdapter;
import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.swt.graphics.Image;
/**
* Helper class for cell editors when using {@link IEditingSupport}.
*/
public class CellEditorHelper {
/**
* Update the content proposals of a text cell editor.
*/
public static void updateProposals(
TextCellEditorWithContentProposal textCellEditor,
IProposalSupport proposals) {
ContentProposalAdapter proposalAdapter = textCellEditor
.getContentProposalAdapter();
if (proposals != null) {
final IItemLabelProvider labelProvider = proposals
.getLabelProvider();
if (labelProvider != null) {
proposalAdapter.setLabelProvider(new LabelProvider() {
@Override
public String getText(Object element) {
if (element instanceof JFaceContentProposal) {
element = ((JFaceContentProposal) element)
.getDelegate();
}
return labelProvider.getText(element);
}
@Override
public Image getImage(Object element) {
if (element instanceof JFaceContentProposal) {
element = ((JFaceContentProposal) element)
.getDelegate();
}
return ExtendedImageRegistry.getInstance().getImage(
labelProvider.getImage(element));
}
});
} else {
proposalAdapter.setLabelProvider(null);
}
proposalAdapter.setContentProposalProvider(JFaceProposalProvider
.wrap(proposals.getProposalProvider()));
proposalAdapter.setAutoActivationCharacters(proposals
.getAutoActivationCharacters());
proposalAdapter.setEnabled(true);
} else {
proposalAdapter.setLabelProvider(null);
proposalAdapter
.setContentProposalProvider(ContentProposals.NULL_PROPOSAL_PROVIDER);
proposalAdapter.setAutoActivationCharacters(null);
proposalAdapter.setEnabled(false);
}
}
}