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