package at.medevit.elexis.loinc.ui.dialogs; import java.util.Comparator; import java.util.List; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Status; import org.eclipse.jface.dialogs.DialogSettings; import org.eclipse.jface.dialogs.IDialogSettings; import org.eclipse.jface.viewers.LabelProvider; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Shell; import org.eclipse.ui.dialogs.FilteredItemsSelectionDialog; import org.eclipse.ui.internal.WorkbenchMessages; import at.medevit.elexis.loinc.model.LoincCode; import at.medevit.elexis.loinc.ui.LoincServiceComponent; public class LoincSelektor extends FilteredItemsSelectionDialog { public LoincSelektor(Shell shell){ super(shell); setTitle("LOINC Code Selektion"); setListLabelProvider(new LabelProvider() { @Override public String getText(Object element){ if (element == null) { return ""; } return ((LoincCode) element).getLabel(); } }); } @Override protected Control createDialogArea(Composite parent){ String oldListLabel = WorkbenchMessages.FilteredItemsSelectionDialog_listLabel; setMessage(""); WorkbenchMessages.FilteredItemsSelectionDialog_listLabel = ""; //$NON-NLS-1$ Control ret = super.createDialogArea(parent); WorkbenchMessages.FilteredItemsSelectionDialog_listLabel = oldListLabel; return ret; } @Override protected IDialogSettings getDialogSettings(){ return new DialogSettings("loincselector"); //$NON-NLS-1$ } @Override protected IStatus validateItem(Object item){ return Status.OK_STATUS; } @Override protected ItemsFilter createFilter(){ return new ItemsFilter() { @Override public boolean isConsistentItem(Object item){ return true; } @Override public boolean matchItem(Object item){ LoincCode code = (LoincCode) item; return matches(code.getLabel()); } }; } @Override protected Comparator<LoincCode> getItemsComparator(){ return new Comparator<LoincCode>() { public int compare(LoincCode o1, LoincCode o2){ return o1.getLabel().compareTo(o2.getLabel()); } }; } @Override protected void fillContentProvider(AbstractContentProvider contentProvider, ItemsFilter itemsFilter, IProgressMonitor progressMonitor) throws CoreException{ List<LoincCode> allCodes = LoincServiceComponent.getService().getAllCodes(); for (LoincCode code : allCodes) { if (progressMonitor.isCanceled()) { return; } contentProvider.add(code, itemsFilter); } } @Override public String getElementName(Object item){ LoincCode code = (LoincCode) item; return code.getLabel(); } @Override protected Control createExtendedContentArea(Composite parent){ // TODO Auto-generated method stub return null; } }