Revision 218fbd04
Added by Cherian Mathew about 9 years ago
src/main/java/eu/etaxonomy/cdm/vaadin/component/StatusComposite.java | ||
---|---|---|
105 | 105 |
|
106 | 106 |
private Object currentClickedTaxonItemId; |
107 | 107 |
|
108 |
private final boolean taxaTreeTableMultiSelectMode = true; |
|
108 | 109 |
|
109 | 110 |
private static final String SELECT_FILTER = "Select filter ..."; |
110 | 111 |
private static final String SELECT_CLASSIFICATION = "Select classification ..."; |
... | ... | |
173 | 174 |
private void initTaxaTable(int classificationId) { |
174 | 175 |
|
175 | 176 |
taxaTreeTable.setSelectable(true); |
176 |
taxaTreeTable.setMultiSelect(true);
|
|
177 |
taxaTreeTable.setMultiSelect(taxaTreeTableMultiSelectMode);
|
|
177 | 178 |
taxaTreeTable.setImmediate(false); |
178 | 179 |
|
179 | 180 |
if(listener != null) { |
... | ... | |
390 | 391 |
CdmVaadinSessionUtilities.getCurrentSelectionService() |
391 | 392 |
.fireSelectionEvent(new SelectionEvent(Arrays.asList((Object)taxonUuid), StatusComposite.class), true); |
392 | 393 |
} |
394 |
taxaTreeTable.setValue(itemId); |
|
393 | 395 |
} |
394 | 396 |
}); |
395 | 397 |
|
398 |
|
|
399 |
|
|
396 | 400 |
} |
397 | 401 |
|
398 | 402 |
private void addAddComboBoxListener() { |
... | ... | |
410 | 414 |
|
411 | 415 |
Object selectedItemId = null; |
412 | 416 |
IdAndUuid accTaxonIdUuid = null; |
417 |
String accTaxonName = null; |
|
413 | 418 |
if(selected.equals(ADD_SYNONYM)) { |
414 | 419 |
Set<Object> selectedIds = (Set<Object>)taxaTreeTable.getValue(); |
415 | 420 |
// if zero or more than one items (taxa / synonyms) are selected |
416 | 421 |
// throw a warning |
417 |
if(selectedIds.size() == 0) {
|
|
422 |
if(selectedIds.size() != 1) {
|
|
418 | 423 |
Notification.show("Multiple or No selection", "Please select a single Taxon", Type.WARNING_MESSAGE); |
419 | 424 |
return; |
420 | 425 |
} |
426 |
selectedItemId = selectedIds.iterator().next(); |
|
421 | 427 |
// if a synonym is selected then throw warning |
422 |
if(listener.isSynonym(selected)) { |
|
428 |
if(listener.isSynonym(selectedItemId)) {
|
|
423 | 429 |
Notification.show("Synonym selected", "Please choose a Taxon", Type.WARNING_MESSAGE); |
424 | 430 |
return; |
425 | 431 |
} |
426 | 432 |
windowTitle = "Add New Synonym"; |
427 |
selectedItemId = selectedIds.iterator().next(); |
|
428 | 433 |
accTaxonIdUuid = new IdAndUuid(selectedItemId, listener.getCurrentLeafNodeTaxonContainer().getUuid(selectedItemId)); |
434 |
accTaxonName = (String)listener.getCurrentLeafNodeTaxonContainer().getProperty(selectedItemId, LeafNodeTaxonContainer.NAME_ID).getValue(); |
|
429 | 435 |
} else { |
430 | 436 |
windowTitle = "Add New Taxon"; |
431 | 437 |
} |
... | ... | |
443 | 449 |
new NewTaxonBaseComposite(dialog, |
444 | 450 |
new NewTaxonBasePresenter(), |
445 | 451 |
accTaxonIdUuid, |
452 |
accTaxonName, |
|
446 | 453 |
classificationIdUuid); |
447 | 454 |
dialog.setContent(newTaxonComponent); |
448 | 455 |
} catch (SQLException e) { |
... | ... | |
478 | 485 |
|
479 | 486 |
@Override |
480 | 487 |
public void buttonClick(ClickEvent event) { |
481 |
listener.removeNameFilter(); |
|
482 |
searchTextField.setValue(FILTER_TAXA_INPUT); |
|
488 |
clearDynamicFilters(); |
|
483 | 489 |
updateInViewLabel(); |
484 | 490 |
} |
485 | 491 |
|
486 | 492 |
}); |
487 | 493 |
} |
488 | 494 |
|
495 |
private void clearDynamicFilters() { |
|
496 |
listener.removeDynamicFilters(); |
|
497 |
searchTextField.setValue(FILTER_TAXA_INPUT); |
|
498 |
for(Object itemId : filterTable.getItemIds()) { |
|
499 |
filterTable.getItem(itemId).getItemProperty(PROPERTY_SELECTED_ID).setValue(false); |
|
500 |
} |
|
501 |
} |
|
502 |
|
|
489 | 503 |
private void addRemoveButtonListener() { |
490 | 504 |
removeButton.addClickListener(new Button.ClickListener() { |
491 | 505 |
|
... | ... | |
574 | 588 |
} |
575 | 589 |
|
576 | 590 |
|
591 |
/* (non-Javadoc) |
|
592 |
* @see eu.etaxonomy.cdm.vaadin.session.ICdmChangeListener#onCreate(eu.etaxonomy.cdm.vaadin.session.CdmChangeEvent) |
|
593 |
*/ |
|
594 |
@Override |
|
595 |
public void onCreate(CdmChangeEvent event) { |
|
596 |
if(event.getSourceType().equals(NewTaxonBaseComposite.class)) { |
|
597 |
Object itemId = event.getChangedObjects().get(0); |
|
598 |
try { |
|
599 |
taxaTreeTable.setMultiSelect(false); |
|
600 |
if(listener.getCurrentLeafNodeTaxonContainer().isSynonym(itemId)) { |
|
601 |
taxaTreeTable.setCollapsed(taxaTreeTable.getValue(), false); |
|
602 |
listener.refresh(); |
|
603 |
taxaTreeTable.setValue(itemId); |
|
604 |
} else { |
|
605 |
clearDynamicFilters(); |
|
606 |
listener.setIdFilter(itemId); |
|
607 |
taxaTreeTable.setValue(itemId); |
|
608 |
} |
|
609 |
} finally { |
|
610 |
taxaTreeTable.setMultiSelect(taxaTreeTableMultiSelectMode); |
|
611 |
} |
|
612 |
} |
|
613 |
} |
|
614 |
|
|
615 |
/* (non-Javadoc) |
|
616 |
* @see eu.etaxonomy.cdm.vaadin.session.ICdmChangeListener#onUpdate(eu.etaxonomy.cdm.vaadin.session.CdmChangeEvent) |
|
617 |
*/ |
|
618 |
@Override |
|
619 |
public void onUpdate(CdmChangeEvent event) { |
|
620 |
// TODO Auto-generated method stub |
|
621 |
|
|
622 |
} |
|
623 |
|
|
624 |
/* (non-Javadoc) |
|
625 |
* @see eu.etaxonomy.cdm.vaadin.session.ICdmChangeListener#onDelete(eu.etaxonomy.cdm.vaadin.session.CdmChangeEvent) |
|
626 |
*/ |
|
627 |
@Override |
|
628 |
public void onDelete(CdmChangeEvent event) { |
|
629 |
// TODO Auto-generated method stub |
|
630 |
|
|
631 |
} |
|
632 |
|
|
633 |
/* (non-Javadoc) |
|
634 |
* @see com.vaadin.navigator.View#enter(com.vaadin.navigator.ViewChangeListener.ViewChangeEvent) |
|
635 |
*/ |
|
636 |
@Override |
|
637 |
public void enter(ViewChangeEvent event) { |
|
638 |
// TODO Auto-generated method stub |
|
639 |
|
|
640 |
} |
|
641 |
|
|
577 | 642 |
@AutoGenerated |
578 | 643 |
private GridLayout buildMainLayout() { |
579 | 644 |
// common part: create layout |
... | ... | |
582 | 647 |
mainLayout.setWidth("340px"); |
583 | 648 |
mainLayout.setHeight("840px"); |
584 | 649 |
mainLayout.setMargin(true); |
585 |
mainLayout.setSpacing(true); |
|
586 | 650 |
mainLayout.setRows(6); |
587 | 651 |
|
588 | 652 |
// top-level component properties |
... | ... | |
615 | 679 |
taxaTreeTable = new TreeTable(); |
616 | 680 |
taxaTreeTable.setImmediate(false); |
617 | 681 |
taxaTreeTable.setWidth("100.0%"); |
618 |
taxaTreeTable.setHeight("534px");
|
|
682 |
taxaTreeTable.setHeight("580px");
|
|
619 | 683 |
mainLayout.addComponent(taxaTreeTable, 0, 4); |
620 | 684 |
mainLayout.setComponentAlignment(taxaTreeTable, new Alignment(20)); |
621 | 685 |
|
... | ... | |
720 | 784 |
return searchHorizontalLayout; |
721 | 785 |
} |
722 | 786 |
|
723 |
/* (non-Javadoc) |
|
724 |
* @see eu.etaxonomy.cdm.vaadin.session.ICdmChangeListener#onCreate(eu.etaxonomy.cdm.vaadin.session.CdmChangeEvent) |
|
725 |
*/ |
|
726 |
@Override |
|
727 |
public void onCreate(CdmChangeEvent event) { |
|
728 |
if(event.getSourceType().equals(NewTaxonBaseComposite.class)) { |
|
729 |
Object itemId = event.getChangedObjects().get(0); |
|
730 |
listener.getCurrentLeafNodeTaxonContainer().removeTaxonFromCache(itemId); |
|
731 |
|
|
732 |
// FIXME : need to figure out how to programmatically select an item in the |
|
733 |
// table |
|
734 |
|
|
735 |
listener.getCurrentLeafNodeTaxonContainer().getItem(itemId); |
|
736 |
listener.refresh(); |
|
737 |
taxaTreeTable.select(itemId); |
|
738 |
} |
|
739 |
|
|
740 |
} |
|
741 |
|
|
742 |
/* (non-Javadoc) |
|
743 |
* @see eu.etaxonomy.cdm.vaadin.session.ICdmChangeListener#onUpdate(eu.etaxonomy.cdm.vaadin.session.CdmChangeEvent) |
|
744 |
*/ |
|
745 |
@Override |
|
746 |
public void onUpdate(CdmChangeEvent event) { |
|
747 |
// TODO Auto-generated method stub |
|
748 |
|
|
749 |
} |
|
750 |
|
|
751 |
/* (non-Javadoc) |
|
752 |
* @see eu.etaxonomy.cdm.vaadin.session.ICdmChangeListener#onDelete(eu.etaxonomy.cdm.vaadin.session.CdmChangeEvent) |
|
753 |
*/ |
|
754 |
@Override |
|
755 |
public void onDelete(CdmChangeEvent event) { |
|
756 |
// TODO Auto-generated method stub |
|
757 |
|
|
758 |
} |
|
759 |
|
|
760 |
/* (non-Javadoc) |
|
761 |
* @see com.vaadin.navigator.View#enter(com.vaadin.navigator.ViewChangeListener.ViewChangeEvent) |
|
762 |
*/ |
|
763 |
@Override |
|
764 |
public void enter(ViewChangeEvent event) { |
|
765 |
// TODO Auto-generated method stub |
|
766 |
|
|
767 |
} |
|
768 |
|
|
769 | 787 |
} |
Also available in: Unified diff
CdmProgressComponent : Component which indicates progress via text and a progress bar
NewTaxonBaseComposite, StatusComposite : Added taxon name field for synonym creation and using new operation and progress component objects
StatusComposite : Corrections
CdmSQLContainer, LeafNodeTaxonContainer : Moved non-generic methods from CdmSQLContainer to LeafNodeTaxonContainer
StatusPresenter, IStatusComposite : added id filter methods as well as methods to remove all dynamic filters and to refresh the synonym cache
SelectionService : using UI.access to update ui
CdmQueryFactory : removed rank inner join for taxon base query
CdmVaadinOperation : Class which handles async and sync operations
CdmVaadinUtilities : Added methods to run new CdmVaadinOperation objects and to recursively enable / disable components