import org.eclipse.swt.dnd.DragSourceAdapter;
import org.eclipse.swt.dnd.DragSourceEvent;
+import eu.etaxonomy.cdm.model.term.VocabularyEnum;
import eu.etaxonomy.cdm.persistence.dto.TermDto;
import eu.etaxonomy.taxeditor.editor.definedterm.TermTransfer;
+import eu.etaxonomy.taxeditor.model.MessagingUtils;
/**
*
if(!(object instanceof TermDto)){
event.doit = false;
return;
+ }else {
+ if (VocabularyEnum.getVocabularyEnumByUuid(((TermDto) object).getVocabularyUuid()) != null) {
+ event.doit = false;
+ return;
+ }
}
}
private static final String MOVE_FAILED_MESSAGE = Messages.DefinedTermDropAdapterE4_MOVE_FAILED_MESSAGE;
public static final String MOVE_FAILED_STANDARD_TERM = Messages.DefinedTermDropAdapterE4_MOVE_FAILED_STANDARD_TERM;
+ public static final String MOVE_FAILED_TO_STANDARD_VOC = Messages.DefinedTermDropAdapterE4_MOVE_FAILED_TO_STANDARD_VOC;
return false;
}
- if(droppedObject instanceof FeatureDto ) {
- if ((((FeatureDto) droppedObject).getVocabularyUuid().equals(VocabularyEnum.Feature.getUuid())|| ((FeatureDto) droppedObject).getVocabularyUuid().equals(VocabularyEnum.NameFeature.getUuid()))){
+ if(droppedObject instanceof TermDto ) {
+ if (VocabularyEnum.getVocabularyEnumByUuid(((TermDto) droppedObject).getVocabularyUuid()) != null) {
MessagingUtils.warningDialog(MOVE_FAILED, this, MOVE_FAILED_STANDARD_TERM);
return false;
}
if(target instanceof TermDto){
TermDto parentTerm = (TermDto)target;
//check term type compatibility
+ if (VocabularyEnum.getVocabularyEnumByUuid(((TermDto) target).getVocabularyUuid()) != null) {
+ MessagingUtils.warningDialog(MOVE_FAILED, this, MOVE_FAILED_TO_STANDARD_VOC);
+ return false;
+ }
if(droppedObject instanceof TermDto && !((TermDto) droppedObject).getTermType().equals(parentTerm.getTermType())){
MessagingUtils.warningDialog(TERM_TYPE_ERROR_TITLE, this, TERM_TYPE_ERROR_MESSAGE);
return false;
import eu.etaxonomy.cdm.model.term.VocabularyEnum;
import eu.etaxonomy.cdm.persistence.dto.AbstractTermDto;
import eu.etaxonomy.cdm.persistence.dto.TermDto;
+import eu.etaxonomy.cdm.persistence.dto.TermVocabularyDto;
import eu.etaxonomy.taxeditor.editor.definedterm.e4.DefinedTermEditorE4;
import eu.etaxonomy.taxeditor.editor.definedterm.operation.MoveDefinedTermOperation;
import eu.etaxonomy.taxeditor.model.AbstractUtility;
TermDto selectedTerm = (TermDto) selection.getFirstElement();
- TermChooseWizard wizard = new TermChooseWizard(selectedTerm);
+ TermChooseWizard wizard = new TermChooseWizard(selectedTerm, true);
WizardDialog dialog = new WizardDialog(shell, wizard);
List<AbstractTermDto> selectedTerms = new ArrayList<>();
return;
}
+ if(selectedTerms.size()==1){
+ if (selectedTerms.get(0) instanceof TermVocabularyDto) {
+ if (VocabularyEnum.getVocabularyEnumByUuid(((TermVocabularyDto)selectedTerms.get(0)).getUuid()) != null)
+ MessagingUtils.warningDialog("Move not possible", this, "Standard Vocabularies should not be changed");
+ return;
+ }
+ if (selectedTerms.get(0) instanceof TermDto) {
+ if (VocabularyEnum.getVocabularyEnumByUuid(((TermDto)selectedTerms.get(0)).getVocabularyUuid()) != null)
+ MessagingUtils.warningDialog("Move not possible", this, "Standard Vocabularies should not be changed");
+ return;
+ }
+ }
AbstractTermDto target = selectedTerms.get(0);
String label = menuItem.getLocalizedLabel();
IUndoContext undoContext = StoreUtil.getUndoContext();
public static String DefinedTermDropAdapterE4_MOVE_FAILED_MESSAGE;
public static String DefinedTermDropAdapterE4_MOVE_FAILED_SAVE_MESSAGE;
public static String DefinedTermDropAdapterE4_MOVE_FAILED_STANDARD_TERM;
+ public static String DefinedTermDropAdapterE4_MOVE_FAILED_TO_STANDARD_VOC;
public static String DebugPreferences_0;
public static String DebugPreferences_1;
DefinedTermDropAdapterE4_MOVE_FAILED_SAVE_MESSAGE=Moving the term failed. Try saving before.
DefinedTermDropAdapterE4_TERM_TYPE_ERROR_MESSAGE=The term type of the dropped term does not match the target term type.
DefinedTermDropAdapterE4_TERM_TYPE_ERROR_TITLE=Term types do not match
-DefinedTermDropAdapterE4_MOVE_FAILED_STANDARD_TERM=Standard terms are not allowed to move.
+DefinedTermDropAdapterE4_MOVE_FAILED_STANDARD_TERM=Standard terms are not allowed to move
+DefinedTermDropAdapterE4_MOVE_FAILED_TO_STANDARD_VOC=Terms are not allowed to moved to standard vocabularies
DebugPreferences_0=Show up widget is disposed error messages
DebugPreferences_1=Disable services api timestamp check
DefinedTermDropAdapterE4_TERM_TYPE_ERROR_MESSAGE=Der Termtyp des verschobenen Terms stimmt nicht mit dem des Ziels überein.
DefinedTermDropAdapterE4_TERM_TYPE_ERROR_TITLE=Termtypen stimmen nicht überein
DefinedTermDropAdapterE4_MOVE_FAILED_STANDARD_TERM=Standard Terme können nicht verschoben werden
+DefinedTermDropAdapterE4_MOVE_FAILED_TO_STANDARD_VOC=Terme dürfen nich in Standard Vokabulare verschoben werden
DebugPreferences_0=\"Widget is disposed\" Fehler Meldungen anzeigen
private List<AbstractTermDto> selectedTerms;
private TermDto term;
+ private boolean skipStandartVocs = false;
public TermChooseWizard(TermDto term){
this.term = term;
-
-
}
+ public TermChooseWizard(TermDto term, boolean skipStandartVocs){
+ this.term = term;
+ this.skipStandartVocs = skipStandartVocs;
+ }
+
public List<AbstractTermDto> getSelectedTerms() {
return selectedTerms;
}
+ public boolean isSkipStandartVocs() {
+ return skipStandartVocs;
+ }
+
+ public void setSkipStandartVocs(boolean skipStandartVocs) {
+ this.skipStandartVocs = skipStandartVocs;
+ }
@Override
public void addPages() {
- page = new TermChooseWizardPage(term);
+ page = new TermChooseWizardPage(term, skipStandartVocs);
page.setPageComplete(false);
addPage(page);
}
private TermSearchController controller;
private TermDto term;
+ private boolean skipStandartVocs;
- protected TermChooseWizardPage(TermDto term) {
+ protected TermChooseWizardPage(TermDto term, boolean skipStandardVocs) {
super("Term Choose Wizard");
setTitle("Choose Parent");
setDescription("Please search and select the parent term or vocabulary (if you want to move the term as root).");
this.term = term;
+ this.skipStandartVocs = skipStandardVocs;
+ }
+
+ public boolean isSkipStandartVocs() {
+ return skipStandartVocs;
+ }
+
+ public void setSkipStandartVocs(boolean skipStandartVocs) {
+ this.skipStandartVocs = skipStandartVocs;
}
@Override
import java.util.ArrayList;
import java.util.Collection;
import java.util.Comparator;
+import java.util.HashSet;
import java.util.List;
+import java.util.stream.Collectors;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionEvent;
import eu.etaxonomy.cdm.api.service.IVocabularyService;
import eu.etaxonomy.cdm.common.CdmUtils;
import eu.etaxonomy.cdm.model.term.TermType;
+import eu.etaxonomy.cdm.model.term.VocabularyEnum;
import eu.etaxonomy.cdm.persistence.dto.AbstractTermDto;
import eu.etaxonomy.cdm.persistence.dto.TermDto;
import eu.etaxonomy.cdm.persistence.dto.TermVocabularyDto;
TermType type = term!= null ? term.getTermType():null;
Collection<TermDto> dtos = CdmStore.getService(ITermService.class).findByTitleAsDtoWithVocDto(searchString, type);
dtos.remove(term);
+
+ if (this.page.isSkipStandartVocs()) {
+ Collection<TermDto> filteredDtos = dtos
+ .stream()
+ .filter(c -> VocabularyEnum.getVocabularyEnumByUuid(c.getVocabularyUuid()) != null).collect(Collectors.toSet());
+
+ dtos = filteredDtos;
+ }
+
dtos.stream().forEach(dto->searchResults.add(new TermSearchResult(dto)));
if (page != null){
Collection<TermVocabularyDto> vocDtos = CdmStore.getService(IVocabularyService.class).findVocabularyDtoByTermTypeAndPattern(searchString, type);
+ if (this.page.isSkipStandartVocs()) {
+ Collection<TermVocabularyDto> filteredDtos = vocDtos
+ .stream()
+ .filter(c -> VocabularyEnum.getVocabularyEnumByUuid(c.getUuid()) == null).collect(Collectors.toSet());
+
+ vocDtos = filteredDtos;
+ }
+
vocDtos.stream().forEach(vocDto->searchResults.add(new TermSearchResult(vocDto)));
}
}