1 package org.simantics.document.linking.views;
3 import java.util.ArrayList;
4 import java.util.Collection;
5 import java.util.Collections;
8 import org.eclipse.swt.custom.CCombo;
9 import org.eclipse.swt.widgets.Display;
10 import org.simantics.db.Resource;
11 import org.simantics.db.common.NamedResource;
13 public abstract class ModelToComboListener implements org.simantics.db.procedure.Listener<Collection<NamedResource>> {
19 private boolean disposed = false;
21 public ModelToComboListener(CCombo combo) {
25 public abstract Resource getCurrentModel();
28 public void execute(final Collection<NamedResource> result) {
29 Display.getDefault().asyncExec(new Runnable() {
33 if(combo.isDisposed()) {
38 List<NamedResource> models = new ArrayList<NamedResource>();
39 models.addAll(result);
40 Collections.sort(models);
48 for (NamedResource model : models) {
49 combo.add(model.getName());
50 combo.setData(Integer.toString(i), model.getResource());
51 if (model.getResource().equals(getCurrentModel()))
56 // restore the selection
66 public void loaded() {
71 public void exception(Throwable t) {
76 public boolean isDisposed() {
77 return disposed || combo.isDisposed();
80 public void dispose() {