Revision 84527493
Added by Andreas Müller about 4 years ago
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/dialog/selection/AbstractFilteredCdmResourceSelectionDialog.java | ||
---|---|---|
63 | 63 |
* @created 04.06.2009 |
64 | 64 |
*/ |
65 | 65 |
public abstract class AbstractFilteredCdmResourceSelectionDialog<T extends ICdmBase> extends |
66 |
SearchDialog {//implements IConversationEnabled { |
|
66 |
SearchDialog<T> {//implements IConversationEnabled {
|
|
67 | 67 |
|
68 | 68 |
// private final ConversationHolder conversation = null; |
69 | 69 |
|
... | ... | |
115 | 115 |
return createListLabelProvider(); |
116 | 116 |
} |
117 | 117 |
|
118 |
/** |
|
119 |
* |
|
120 |
* @return |
|
121 |
*/ |
|
122 | 118 |
protected ILabelProvider createListLabelProvider() { |
123 | 119 |
return new FilteredCdmResourceLabelProvider(); |
124 | 120 |
} |
... | ... | |
127 | 123 |
* Override in subclasses. |
128 | 124 |
* Will run before initModel() |
129 | 125 |
*/ |
130 |
protected void init() { |
|
131 |
|
|
132 |
} |
|
126 |
protected void init() {} |
|
133 | 127 |
|
134 | 128 |
/** |
135 | 129 |
* <p>getSelectionFromDialog</p> |
... | ... | |
139 | 133 |
* @return a TYPE object. |
140 | 134 |
*/ |
141 | 135 |
protected static <TYPE extends CdmBase> TYPE getSelectionFromDialog(AbstractFilteredCdmResourceSelectionDialog<TYPE> dialog) { |
142 |
UuidAndTitleCache result = getUuidAndTitleCacheSelectionFromDialog(dialog); |
|
136 |
UuidAndTitleCache<?> result = getUuidAndTitleCacheSelectionFromDialog(dialog);
|
|
143 | 137 |
if (result != null){ |
144 | 138 |
return dialog.getCdmObjectByUuid(result.getUuid()); |
145 | 139 |
} else { |
... | ... | |
193 | 187 |
*/ |
194 | 188 |
abstract protected T getPersistentObject(UUID uuid); |
195 | 189 |
|
196 |
|
|
197 | 190 |
/** |
198 | 191 |
* <p>isObjectTransient</p> |
199 | 192 |
* |
... | ... | |
224 | 217 |
" Please implement specific method in subclass."); |
225 | 218 |
} |
226 | 219 |
|
227 |
|
|
228 |
|
|
229 | 220 |
/** |
230 | 221 |
* Set the filter input to the Agent's title cache |
231 | 222 |
* |
... | ... | |
236 | 227 |
getSearchField().setText(pattern); |
237 | 228 |
} |
238 | 229 |
|
239 |
|
|
240 |
|
|
241 |
/* (non-Javadoc) |
|
242 |
* @see org.eclipse.ui.dialogs.FilteredItemsSelectionDialog#fillContentProvider(org.eclipse.ui.dialogs.FilteredItemsSelectionDialog.AbstractContentProvider, org.eclipse.ui.dialogs.FilteredItemsSelectionDialog.ItemsFilter, org.eclipse.core.runtime.IProgressMonitor) |
|
243 |
*/ |
|
244 |
/** {@inheritDoc} */ |
|
245 |
|
|
246 | 230 |
@Override |
247 | 231 |
protected void fillContentProvider(IProgressMonitor progressMonitor) |
248 | 232 |
{ |
... | ... | |
285 | 269 |
} |
286 | 270 |
} |
287 | 271 |
|
288 |
|
|
289 | 272 |
protected void sort() { |
290 | 273 |
Collections.sort(model, getItemsComparator()); |
291 | 274 |
} |
292 | 275 |
|
293 |
/* (non-Javadoc) |
|
294 |
* @see org.eclipse.ui.dialogs.FilteredItemsSelectionDialog#getDialogSettings() |
|
295 |
*/ |
|
296 |
/** {@inheritDoc} */ |
|
297 |
|
|
298 | 276 |
protected IDialogSettings getDialogSettings() { |
299 | 277 |
IDialogSettings settings = TaxeditorStorePlugin.getDefault().getDialogSettings().getSection(getSettings()); |
300 | 278 |
|
... | ... | |
304 | 282 |
return settings; |
305 | 283 |
} |
306 | 284 |
|
307 |
/* (non-Javadoc) |
|
308 |
* @see org.eclipse.ui.dialogs.FilteredItemsSelectionDialog#getElementName(java.lang.Object) |
|
309 |
*/ |
|
310 |
/** {@inheritDoc} */ |
|
311 |
|
|
312 | 285 |
public String getElementName(Object item) { |
313 |
return ((UuidAndTitleCache) item).getTitleCache(); |
|
286 |
return ((UuidAndTitleCache<T>) item).getTitleCache();
|
|
314 | 287 |
} |
315 | 288 |
|
316 |
/* (non-Javadoc) |
|
317 |
* @see org.eclipse.ui.dialogs.FilteredItemsSelectionDialog#getItemsComparator() |
|
318 |
*/ |
|
319 |
/** {@inheritDoc} */ |
|
320 |
|
|
321 | 289 |
@Override |
322 |
protected Comparator getItemsComparator() { |
|
323 |
return new Comparator<UuidAndTitleCache>() { |
|
290 |
protected Comparator<UuidAndTitleCache<T>> getItemsComparator() {
|
|
291 |
return new Comparator<UuidAndTitleCache<T>>() {
|
|
324 | 292 |
@Override |
325 |
public int compare(UuidAndTitleCache entity1, |
|
326 |
UuidAndTitleCache entity2) { |
|
293 |
public int compare(UuidAndTitleCache<T> entity1,
|
|
294 |
UuidAndTitleCache<T> entity2) {
|
|
327 | 295 |
Collator collator = Collator.getInstance(); |
328 | 296 |
if (entity1 == entity2){ |
329 | 297 |
return 0; |
... | ... | |
353 | 321 |
}; |
354 | 322 |
} |
355 | 323 |
|
356 |
|
|
357 | 324 |
/** |
358 | 325 |
* <p>getSelectedUuidAndTitleCache</p> |
359 | 326 |
* |
360 | 327 |
* @return a {@link eu.etaxonomy.cdm.model.common.UuidAndTitleCache} object. |
361 | 328 |
*/ |
362 |
protected UuidAndTitleCache getSelectedUuidAndTitleCache() { |
|
329 |
protected UuidAndTitleCache<T> getSelectedUuidAndTitleCache() {
|
|
363 | 330 |
Object result = getResult(); |
364 | 331 |
if (result instanceof UuidAndTitleCache){ |
365 |
return (UuidAndTitleCache) result; |
|
332 |
return (UuidAndTitleCache<T>) result;
|
|
366 | 333 |
} |
367 | 334 |
return null; |
368 | 335 |
} |
369 | 336 |
|
370 |
/** |
|
371 |
* @return |
|
372 |
*/ |
|
373 | 337 |
private Object getResult() { |
374 | 338 |
StructuredSelection selection = getCurrentSelection(); |
375 | 339 |
if (selection == null){ |
... | ... | |
390 | 354 |
return settings; |
391 | 355 |
} |
392 | 356 |
|
393 |
|
|
394 |
|
|
395 | 357 |
/** |
396 | 358 |
* <p>getNewWizardLinkText</p> |
397 | 359 |
* |
... | ... | |
404 | 366 |
* @param parameter |
405 | 367 |
* @return a {@link eu.etaxonomy.taxeditor.newWizard.AbstractNewEntityWizard} object. |
406 | 368 |
*/ |
407 |
protected abstract AbstractNewEntityWizard getNewEntityWizard(String parameter); |
|
369 |
protected abstract AbstractNewEntityWizard<T> getNewEntityWizard(String parameter);
|
|
408 | 370 |
|
409 | 371 |
public class FilteredCdmResourceLabelProvider extends LabelProvider { |
410 | 372 |
@Override |
... | ... | |
412 | 374 |
if (element == null) { |
413 | 375 |
return null; |
414 | 376 |
} |
415 |
UuidAndTitleCache uuidAndTitleCache = (UuidAndTitleCache) element;
|
|
377 |
UuidAndTitleCache<?> uuidAndTitleCache = (UuidAndTitleCache<?>) element;
|
|
416 | 378 |
String titleCache = uuidAndTitleCache.getTitleCache(); |
417 | 379 |
if(PreferencesUtil.getBooleanValue(PreferencePredicate.ShowIdInSelectionDialog.getKey())){ |
418 | 380 |
titleCache += " ["+uuidAndTitleCache.getId()+"]"; |
... | ... | |
423 | 385 |
|
424 | 386 |
return titleCache; |
425 | 387 |
} |
426 |
}; |
|
427 |
|
|
428 |
/* (non-Javadoc) |
|
429 |
* @see org.eclipse.ui.dialogs.FilteredItemsSelectionDialog#createExtendedContentArea(org.eclipse.swt.widgets.Composite) |
|
430 |
*/ |
|
431 |
/** {@inheritDoc} */ |
|
388 |
} |
|
432 | 389 |
|
433 | 390 |
// @Override |
434 | 391 |
// protected Control createExtendedContentArea(Composite parent) { |
... | ... | |
450 | 407 |
this.newButton1 = createButton(parent, this.new_id, newButtonText[0], false); |
451 | 408 |
newButton1.addSelectionListener(getNewWizardButtonSelectionListener()); |
452 | 409 |
|
453 |
|
|
454 | 410 |
if (newButtonText.length > 1){ |
455 | 411 |
newButton2 = createButton(parent, this.new_id2, newButtonText[1], false); |
456 | 412 |
newButton2.addSelectionListener(getNewWizardButtonSelectionListener()); |
457 |
|
|
458 | 413 |
} |
459 |
|
|
460 | 414 |
} |
461 | 415 |
Button space = createButton(parent, this.space_id, " ", false); |
462 | 416 |
space.setEnabled(false); |
... | ... | |
489 | 443 |
Button sourceButton = (Button) source; |
490 | 444 |
text = sourceButton.getText(); |
491 | 445 |
} |
492 |
AbstractNewEntityWizard wizard = getNewEntityWizard(text); |
|
493 |
if(wizard!=null){
|
|
446 |
AbstractNewEntityWizard<?> wizard = getNewEntityWizard(text);
|
|
447 |
if(wizard != null){
|
|
494 | 448 |
if (wizard.getEntity() == null){ |
495 | 449 |
wizard.init(null, null); |
496 | 450 |
} |
... | ... | |
541 | 495 |
private void filterExcludedObjects() { |
542 | 496 |
if (model != null && cdmBaseToBeFiltered != null) { |
543 | 497 |
|
544 |
UuidAndTitleCache uuidAndTitleCacheToRemove = null; |
|
498 |
UuidAndTitleCache<?> uuidAndTitleCacheToRemove = null;
|
|
545 | 499 |
|
546 |
for (UuidAndTitleCache uuidAndTitleCache : model){ |
|
500 |
for (UuidAndTitleCache<?> uuidAndTitleCache : model){
|
|
547 | 501 |
if (cdmBaseToBeFiltered != null && cdmBaseToBeFiltered.contains(uuidAndTitleCache.getUuid())) { |
548 | 502 |
uuidAndTitleCacheToRemove = uuidAndTitleCache; |
549 | 503 |
} |
... | ... | |
556 | 510 |
//as default no filter button available |
557 | 511 |
} |
558 | 512 |
|
559 |
/** {@inheritDoc} */ |
|
560 | 513 |
@Override |
561 | 514 |
protected void search() { |
562 | 515 |
Control control =getSearchField(); |
Also available in: Unified diff
cleanup