Project

General

Profile

Download (6.12 KB) Statistics
| Branch: | Tag: | Revision:
1
/**
2
 *
3
 */
4
package eu.etaxonomy.taxeditor.ui.dialog.selection;
5

    
6
import java.util.Collections;
7
import java.util.Comparator;
8
import java.util.List;
9
import java.util.UUID;
10

    
11
import org.eclipse.jface.viewers.ILabelProvider;
12
import org.eclipse.swt.SWT;
13
import org.eclipse.swt.events.SelectionEvent;
14
import org.eclipse.swt.events.SelectionListener;
15
import org.eclipse.swt.layout.GridData;
16
import org.eclipse.swt.layout.GridLayout;
17
import org.eclipse.swt.widgets.Combo;
18
import org.eclipse.swt.widgets.Composite;
19
import org.eclipse.swt.widgets.Control;
20
import org.eclipse.swt.widgets.Label;
21
import org.eclipse.swt.widgets.Shell;
22

    
23
import eu.etaxonomy.cdm.api.service.IClassificationService;
24
import eu.etaxonomy.cdm.model.taxon.Classification;
25
import eu.etaxonomy.cdm.model.taxon.TaxonNode;
26
import eu.etaxonomy.taxeditor.newWizard.AbstractNewEntityWizard;
27
import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
28
import eu.etaxonomy.taxeditor.store.CdmStore;
29

    
30
/**
31
 * @author p.ciardelli
32
 * @version $Id: $
33
 */
34
public class TaxonNodeSelectionDialog extends AbstractFilteredCdmResourceSelectionDialog<TaxonNode> implements SelectionListener{
35

    
36
	public static TaxonNode select(Shell shell, //ConversationHolder conversation,
37
	        String title, List<UUID> excludeTaxa, TaxonNode node, Classification classification) {
38
		TaxonNodeSelectionDialog dialog = new TaxonNodeSelectionDialog(shell,
39
				//conversation,
40
				title,
41
				excludeTaxa,
42
				false,
43
				node,
44
				classification);
45
		return getSelectionFromDialog(dialog);
46
	}
47

    
48
	private Combo classificationSelectionCombo;
49

    
50
	private List<Classification> classifications;
51

    
52
	private Classification selectedClassification;
53
	private final List<UUID> excludeTaxa;
54

    
55
	protected TaxonNodeSelectionDialog(Shell shell, //ConversationHolder conversation,
56
	        String title, List<UUID> excludeTaxa, boolean multi, TaxonNode node, Classification classification) {
57
		super(shell, //conversation,
58
		        title, multi, TaxonNodeSelectionDialog.class.getCanonicalName(), node);
59

    
60
		ILabelProvider labelProvider = new FilteredCdmResourceLabelProvider();
61

    
62
		setListLabelProvider(labelProvider);
63
//		setDetailsLabelProvider(labelProvider);
64
		this.excludeTaxa = excludeTaxa;
65
		if(classification != null){
66
			selectedClassification = classification;
67
		}
68

    
69
		fillClassifications();
70
		createClassificationSelectionCombo(shell);
71
	}
72

    
73
	/** {@inheritDoc} */
74
	@Override
75
	protected Control createDialogArea(Composite parent) {
76
	    Composite container = (Composite) super.createDialogArea(parent);
77
		return createClassificationSelectionCombo(container);
78
	}
79

    
80
	/*
81
	 * currently disabled tree selection composite
82
	 */
83
	private Control createClassificationSelectionCombo(Composite parent){
84
//		classifications = CdmStore.getTaxonTreeService().list(null, null, null, null, null);
85

    
86
		Composite classificationSelection = new Composite(parent, SWT.NULL);
87
		classificationSelection.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false));
88

    
89
		GridLayout layout = new GridLayout();
90
		classificationSelection.setLayout(layout);
91

    
92
		Label label = new Label(classificationSelection, SWT.NULL);
93
		// TODO not working is not really true but leave it here to remind everyone that this is under construction
94
		label.setText("Select Classification");
95
		classificationSelectionCombo = new Combo(classificationSelection, SWT.BORDER | SWT.READ_ONLY);
96
		classificationSelectionCombo.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, true));
97

    
98
		for(Classification tree : classifications){
99
			classificationSelectionCombo.add(tree.getName().getText(), classifications.indexOf(tree));
100

    
101
		}
102

    
103
		classificationSelectionCombo.select(classifications.indexOf(selectedClassification));
104

    
105
		// TODO remember last selection
106
		classificationSelectionCombo.addSelectionListener(this);
107

    
108

    
109

    
110
		return classificationSelection;
111
	}
112

    
113
	/** {@inheritDoc} */
114
	@Override
115
	protected String getTitle(TaxonNode taxonNode) {
116
		if(taxonNode != null && taxonNode.getTaxon() != null){
117
			return taxonNode.getTaxon().getTitleCache();
118
		}
119

    
120
		return "";
121
	}
122

    
123
	/** {@inheritDoc} */
124
	@Override
125
	protected TaxonNode getPersistentObject(UUID uuid) {
126
		return CdmStore.getService(IClassificationService.class).getTaxonNodeByUuid(uuid);
127
	}
128

    
129
	/** {@inheritDoc} */
130
	@Override
131
	protected void callService(String pattern) {
132
	    model = CdmStore.getService(IClassificationService.class).getTaxonNodeUuidAndTitleCacheOfAcceptedTaxaByClassification(selectedClassification.getUuid(), limitOfInitialElements, pattern);
133
	}
134
	@Override
135
	protected void sort() {
136
	    if(!PreferencesUtil.isSortTaxaByRankAndName()){
137
            Collections.sort(model, getItemsComparator());
138
        }
139
      // otherwise result is already sorted
140
    }
141

    
142
    private void fillClassifications() {
143
        if(classifications == null){
144
			classifications = CdmStore.getService(IClassificationService.class).list(null, null, null, null, null);
145
			Collections.sort(classifications, new Comparator<Classification>() {
146

    
147
                @Override
148
                public int compare(Classification o1, Classification o2) {
149
                    if (o1.equals(o2)){
150
                        return 0;
151
                    }
152
                    int result = o1.getTitleCache().compareTo(o2.getTitleCache());
153
                    if (result == 0){
154
                        return o1.getUuid().compareTo(o2.getUuid());
155
                    }
156
                    return result;
157
                }
158
            });
159
			if (selectedClassification == null){
160
			    if (this.cdmBaseToBeFiltered == null){
161
			        selectedClassification = classifications.iterator().next();
162
			    } else {
163
			    selectedClassification = this.cdmBaseToBeFiltered.getClassification();
164
			    }
165
			}
166
		}
167
    }
168

    
169
	/** {@inheritDoc} */
170
	@Override
171
	protected AbstractNewEntityWizard getNewEntityWizard(String parameter) {
172
		return null;
173
	}
174

    
175
	/** {@inheritDoc} */
176
	@Override
177
	protected String[] getNewWizardText() {
178
		return null;
179
	}
180

    
181
	/** {@inheritDoc} */
182
	@Override
183
    public void widgetSelected(SelectionEvent e) {
184
		selectedClassification = classifications.get(classificationSelectionCombo.getSelectionIndex());
185

    
186
//		refresh();
187
		if (getSearchField().getText() != null){
188
		    search();
189
		}
190
	}
191

    
192
	/** {@inheritDoc} */
193
	@Override
194
    public void widgetDefaultSelected(SelectionEvent e) {}
195

    
196

    
197
}
(36-36/39)