import eu.etaxonomy.cdm.api.conversation.IConversationEnabled;
import eu.etaxonomy.cdm.api.service.ITermNodeService;
import eu.etaxonomy.cdm.api.service.ITermTreeService;
+import eu.etaxonomy.cdm.api.service.UpdateResult;
import eu.etaxonomy.cdm.model.term.DefinedTermBase;
import eu.etaxonomy.cdm.model.term.TermNode;
import eu.etaxonomy.cdm.model.term.TermType;
Map<UUID,TermTreeDto> trees;
Map<UUID, TermNodeDto> uuidTermMap = new HashMap<>();
- List<AbstractPostOperation<TermNode>> createOperationList = new ArrayList<>();
+ Map<UUID, CreateFeatureTreeOperation> createOperationList = new HashMap<>();
List<AbstractPostOperation<TermNode>> operationList = new ArrayList<>();
List<TermNodeDto> listToUpdate = new ArrayList<>();
// commit the conversation and start a new transaction immediately
Object[] expandedElements = this.viewer.getExpandedElements();
+ ISelection sel = this.viewer.getSelection();
conversation.commit(true);
if (createOperationList != null && !createOperationList.isEmpty()){
- for (AbstractPostOperation<TermNode> operation: createOperationList){
+ for (CreateFeatureTreeOperation operation: createOperationList.values()){
+ TermTreeDto termDto = getTreeDtoForUuid(operation.getElementUuid());
+ operation.getElement().setTitleCache(termDto.getTitleCache(), true);
+ operation.getElement().setAllowDuplicates(termDto.isAllowDuplicate());
+ operation.getElement().setFlat(termDto.isFlat());
+ operation.getElement().setOrderRelevant(termDto.isOrderRelevant());
AbstractUtility.executeOperation(operation, sync);
}
createOperationList.clear();
CdmStore.getService(ITermNodeService.class).saveTermNodeDtoList(listToUpdate);
listToUpdate.clear();
List<TermTreeDto> rootEntities = getRootEntities();
- CdmStore.getService(ITermTreeService.class).saveOrUpdateTermTreeDtoList(rootEntities);
- initializeTrees();
+ UpdateResult result = CdmStore.getService(ITermTreeService.class).saveOrUpdateTermTreeDtoList(rootEntities);
conversation.commit(true);
-
this.setDirty(false);
+ initializeTrees();
+ this.viewer.setSelection(sel);
// this.viewer.setExpandedElements(expandedElements);
}
@Override
public void addOperation(AbstractPostOperation operation) {
if (operation instanceof CreateFeatureTreeOperation){
- createOperationList.add(operation);
+ createOperationList.put(((CreateFeatureTreeOperation)operation).getElementUuid(), (CreateFeatureTreeOperation)operation);
}else{
operationList.add(operation);
}
private void addSaveCandidate(@UIEventTopic(WorkbenchEventConstants.ADD_SAVE_CANDIDATE) UUID cdmbaseUuid) {
for (UUID uuid: uuidTermMap.keySet()) {
if (uuid.equals(cdmbaseUuid)){
- listToUpdate.add(uuidTermMap.get(uuid));
+ listToUpdate.add(uuidTermMap.get(uuid));
}
}
+
}
@Override
import org.eclipse.e4.ui.model.application.ui.basic.MPart;
import org.eclipse.e4.ui.model.application.ui.menu.MHandledMenuItem;
import org.eclipse.e4.ui.services.IServiceConstants;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.viewers.StructuredSelection;
import eu.etaxonomy.cdm.model.term.TermTree;
import eu.etaxonomy.cdm.persistence.dto.TermTreeDto;
newTree.setAllowDuplicates(false);
newTree.setFlat(false);
newTree.setOrderRelevant(true);
- newTree.setTitleCache(String.format("New %s tree", editor.getTermType().getLabel()));
+ newTree.setTitleCache(String.format("_New %s tree", editor.getTermType().getLabel()), true);
CreateFeatureTreeOperation operation = new CreateFeatureTreeOperation(newTree, editor, editor);
TermTreeDto newDto = TermTreeDto.fromTree(newTree);
((TermTreeEditor)editor).getViewer().setInput(((TermTreeEditor)editor).getTrees());
((TermTreeEditor)editor).getViewer().setExpandedElements(expandedElements);
+ IStructuredSelection sel = new StructuredSelection(newDto);
+ SelectionChangedEvent event = new SelectionChangedEvent(
+ ((TermTreeEditor)editor).getViewer(), sel);
+ ((TermTreeEditor)editor).selectionChanged(event);
}