Project

General

Profile

« Previous | Next » 

Revision 5fec480a

Added by Katja Luther about 3 years ago

rename featureTree package to termtree

View differences:

eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/descriptiveDataSet/character/CharacterDragListener.java
23 23

  
24 24
import eu.etaxonomy.cdm.model.description.Character;
25 25
import eu.etaxonomy.cdm.model.term.TermNode;
26
import eu.etaxonomy.taxeditor.featuretree.CharacterTransfer;
27
import eu.etaxonomy.taxeditor.featuretree.e4.TermNodeDragListener;
26
import eu.etaxonomy.taxeditor.termtree.CharacterTransfer;
27
import eu.etaxonomy.taxeditor.termtree.e4.TermNodeDragListener;
28 28

  
29 29
/**
30 30
 * @author pplitzner
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/descriptiveDataSet/character/CharacterDropAdapter.java
18 18
import eu.etaxonomy.cdm.model.term.TermTree;
19 19
import eu.etaxonomy.cdm.persistence.dto.TermNodeDto;
20 20
import eu.etaxonomy.cdm.persistence.dto.TermTreeDto;
21
import eu.etaxonomy.taxeditor.featuretree.CharacterTransfer;
22
import eu.etaxonomy.taxeditor.featuretree.e4.TermTreeDtoDropAdapter;
23 21
import eu.etaxonomy.taxeditor.store.CdmStore;
24 22
import eu.etaxonomy.taxeditor.store.StoreUtil;
23
import eu.etaxonomy.taxeditor.termtree.CharacterTransfer;
24
import eu.etaxonomy.taxeditor.termtree.e4.TermTreeDtoDropAdapter;
25 25

  
26 26
/**
27 27
 *
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/descriptiveDataSet/character/CharacterEditor.java
83 83
import eu.etaxonomy.taxeditor.editor.definedterm.TermTreeViewerComparator;
84 84
import eu.etaxonomy.taxeditor.editor.l10n.Messages;
85 85
import eu.etaxonomy.taxeditor.event.WorkbenchEventConstants;
86
import eu.etaxonomy.taxeditor.featuretree.CharacterTransfer;
87
import eu.etaxonomy.taxeditor.featuretree.TermTreeContentProvider;
88
import eu.etaxonomy.taxeditor.featuretree.TermTreeLabelProvider;
89
import eu.etaxonomy.taxeditor.featuretree.e4.FeatureTreeDtoEditorComposite;
90
import eu.etaxonomy.taxeditor.featuretree.e4.ICharacterEditor;
91
import eu.etaxonomy.taxeditor.featuretree.e4.TermNodeDtoDragListener;
92
import eu.etaxonomy.taxeditor.featuretree.e4.TermTreeDtoDropAdapter;
93
import eu.etaxonomy.taxeditor.featuretree.e4.TermTreeEditor;
94 86
import eu.etaxonomy.taxeditor.model.AbstractUtility;
95 87
import eu.etaxonomy.taxeditor.model.IDirtyMarkable;
96 88
import eu.etaxonomy.taxeditor.model.IPartContentHasDetails;
......
102 94
import eu.etaxonomy.taxeditor.session.ICdmEntitySession;
103 95
import eu.etaxonomy.taxeditor.store.CdmStore;
104 96
import eu.etaxonomy.taxeditor.store.StoreUtil;
97
import eu.etaxonomy.taxeditor.termtree.CharacterTransfer;
98
import eu.etaxonomy.taxeditor.termtree.TermTreeContentProvider;
99
import eu.etaxonomy.taxeditor.termtree.TermTreeLabelProvider;
100
import eu.etaxonomy.taxeditor.termtree.e4.ICharacterEditor;
101
import eu.etaxonomy.taxeditor.termtree.e4.TermNodeDtoDragListener;
102
import eu.etaxonomy.taxeditor.termtree.e4.TermTreeDtoDropAdapter;
103
import eu.etaxonomy.taxeditor.termtree.e4.TermTreeDtoEditorComposite;
104
import eu.etaxonomy.taxeditor.termtree.e4.TermTreeEditor;
105 105
import eu.etaxonomy.taxeditor.ui.dialog.selection.FeatureTreeSelectionDialog;
106 106
import eu.etaxonomy.taxeditor.ui.dialog.selection.TermVocabularySelectionDialog;
107 107
import eu.etaxonomy.taxeditor.workbench.part.IE4SavablePart;
......
116 116
        ModifyListener, IE4ViewerPart, IPartContentHasDetails, IPartContentHasSupplementalData,
117 117
        IDirtyMarkable, IE4SavablePart {
118 118

  
119
    private FeatureTreeDtoEditorComposite characterTreeEditorComposite;
119
    private TermTreeDtoEditorComposite characterTreeEditorComposite;
120 120
    private final FormToolkit formToolkit = new FormToolkit(Display.getDefault());
121 121

  
122 122
    @Inject
......
302 302
        return viewer;
303 303
    }
304 304

  
305
    private <T extends DefinedTermBase> FeatureTreeDtoEditorComposite<T> addFeatureTreeEditor(Composite composite_3) {
306
        FeatureTreeDtoEditorComposite<T> TermTreeEditorComposite = new FeatureTreeDtoEditorComposite<>(composite_3, SWT.NONE);
305
    private <T extends DefinedTermBase> TermTreeDtoEditorComposite<T> addFeatureTreeEditor(Composite composite_3) {
306
        TermTreeDtoEditorComposite<T> TermTreeEditorComposite = new TermTreeDtoEditorComposite<>(composite_3, SWT.NONE);
307 307
        TermTreeEditorComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1));
308 308
        return TermTreeEditorComposite;
309 309
    }
310 310

  
311 311
    private void initFeatureTreeComposite(
312 312
            TermType termType,
313
            FeatureTreeDtoEditorComposite TermTreeEditorComposite,
313
            TermTreeDtoEditorComposite TermTreeEditorComposite,
314 314
            TermNodeDtoDragListener featureNodeDragListener,
315 315
            TermTreeDtoDropAdapter featureNodeDropAdapter,
316 316
            Transfer[] transfers) {
......
535 535
    }
536 536

  
537 537
    private class FeatureTreeChooserListener extends SelectionAdapter{
538
        private FeatureTreeDtoEditorComposite<Feature> TermTreeEditorComposite;
538
        private TermTreeDtoEditorComposite<Feature> TermTreeEditorComposite;
539 539
        private TermType termType;
540 540

  
541
        public FeatureTreeChooserListener(FeatureTreeDtoEditorComposite<Feature> TermTreeEditorComposite, TermType termType) {
541
        public FeatureTreeChooserListener(TermTreeDtoEditorComposite<Feature> TermTreeEditorComposite, TermType termType) {
542 542
            super();
543 543
            this.TermTreeEditorComposite = TermTreeEditorComposite;
544 544
            this.termType = termType;
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/descriptiveDataSet/character/handler/AddFeatureToCharacterTreeHandler.java
22 22
import org.eclipse.swt.widgets.Shell;
23 23

  
24 24
import eu.etaxonomy.taxeditor.editor.descriptiveDataSet.character.CharacterEditor;
25
import eu.etaxonomy.taxeditor.featuretree.e4.handler.AddTermHandler;
25
import eu.etaxonomy.taxeditor.termtree.e4.handler.AddTermHandler;
26 26

  
27 27
/**
28 28
 * @author pplitzner
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/descriptiveDataSet/matrix/CharacterMatrixBottomToolbar.java
161 161
                UUID taxonUuid = parentDto.getTaxonUuid();
162 162
                int response = MessagingUtils.confirmDialog(
163 163
                        "Choose taxonomic scope",
164
                        String.format("The common parent taxon of this data set is :\n%s\n\n"
164
                        String.format("The common parent taxon of this dataset is :\n%s\n\n"
165 165
                                + "Do you want to use this as the taxonomic scope for the polytomous key?"
166 166
                                , parentDto.getTaxonTitleCache()), "Yes", "Choose different taxon", "Cancel");
167 167
                if(response==2){
......
222 222
        }
223 223
        UUID monitorUuid =  CdmApplicationState.getLongRunningTasksService().invoke(config);
224 224

  
225
        String jobLabel = "Aggregate Descriptive Data Set";
225
        String jobLabel = "Aggregate Descriptive Dataset";
226 226
        Job job = Job.create(jobLabel, (ICoreRunnable) monitor -> {
227 227
            SubMonitor subMonitor = SubMonitor.convert(monitor);
228 228
            subMonitor.beginTask(jobLabel, IProgressMonitor.UNKNOWN);
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/editor/definedterm/TermTreeViewerComparator.java
14 14

  
15 15
import eu.etaxonomy.cdm.common.CdmUtils;
16 16
import eu.etaxonomy.cdm.persistence.dto.TermNodeDto;
17
import eu.etaxonomy.taxeditor.featuretree.TermTreeLabelProvider;
17
import eu.etaxonomy.taxeditor.termtree.TermTreeLabelProvider;
18 18

  
19 19
/**
20 20
 * @author pplitzner
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/editor/definedterm/e4/handler/MoveDefinedTermHandler.java
32 32
import eu.etaxonomy.cdm.persistence.dto.TermDto;
33 33
import eu.etaxonomy.taxeditor.editor.definedterm.e4.DefinedTermEditorE4;
34 34
import eu.etaxonomy.taxeditor.editor.definedterm.operation.MoveDefinedTermOperation;
35
import eu.etaxonomy.taxeditor.featuretree.TermChooseWizard;
36 35
import eu.etaxonomy.taxeditor.model.AbstractUtility;
37 36
import eu.etaxonomy.taxeditor.model.MessagingUtils;
38 37
import eu.etaxonomy.taxeditor.operation.AbstractPostOperation;
39 38
import eu.etaxonomy.taxeditor.store.StoreUtil;
39
import eu.etaxonomy.taxeditor.termtree.TermChooseWizard;
40 40

  
41 41
/**
42 42
 *
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/featuretree/AvailableTermsWizard.java
1
/**
2
* Copyright (C) 2007 EDIT
3
* European Distributed Institute of Taxonomy
4
* http://www.e-taxonomy.eu
5
*
6
* The contents of this file are subject to the Mozilla Public License Version 1.1
7
* See LICENSE.TXT at the top of this package for the full license terms.
8
*/
9

  
10
package eu.etaxonomy.taxeditor.featuretree;
11

  
12
import java.util.List;
13
import java.util.Set;
14

  
15
import org.eclipse.jface.wizard.Wizard;
16

  
17
import eu.etaxonomy.cdm.api.service.IVocabularyService;
18
import eu.etaxonomy.cdm.model.term.DefinedTermBase;
19
import eu.etaxonomy.cdm.model.term.TermType;
20
import eu.etaxonomy.cdm.persistence.dto.TermVocabularyDto;
21
import eu.etaxonomy.taxeditor.model.MessagingUtils;
22
import eu.etaxonomy.taxeditor.store.CdmStore;
23

  
24
/**
25
 * <p>AvailableFeaturesWizard class.</p>
26
 *
27
 * @author n.hoffmann
28
 * @created Aug 5, 2010
29
 * @version 1.0
30
 */
31
public class AvailableTermsWizard extends Wizard {
32

  
33
	private AvailableTermsWizardPage page;
34

  
35
	private Set<DefinedTermBase> additionalFeatures;
36

  
37
    private List<TermVocabularyDto> vocabularyDtos;
38

  
39
    private boolean singleSelection = false;
40

  
41
	public AvailableTermsWizard(TermType termType){
42
        vocabularyDtos = CdmStore.getService(IVocabularyService.class).findVocabularyDtoByTermType(termType);
43
	}
44

  
45
	public AvailableTermsWizard(List<TermVocabularyDto> vocabularyDtos){
46
	    this.vocabularyDtos = vocabularyDtos;
47
	}
48

  
49
	/** {@inheritDoc} */
50
	@Override
51
	public void addPages() {
52
		page = new AvailableTermsWizardPage(vocabularyDtos,singleSelection);
53
		addPage(page);
54
	}
55

  
56
	@Override
57
	public boolean canFinish() {
58
        int size = page.getSelectedFeatures().size();
59
        return singleSelection?size==1:size>0;
60
	}
61

  
62
	/** {@inheritDoc} */
63
	@Override
64
	public boolean performFinish() {
65
		additionalFeatures = page.getSelectedFeatures();
66
		if(singleSelection && additionalFeatures.size()>1){
67
		    MessagingUtils.warningDialog("Too many terms selected", this, "You can only select 1 term");
68
		}
69
		return additionalFeatures.size() > 0;
70
	}
71

  
72
	public Set<DefinedTermBase> getAdditionalFeatures() {
73
		return additionalFeatures;
74
	}
75

  
76
    public void setSingleSelection(boolean singleSelection) {
77
        this.singleSelection = singleSelection;
78
    }
79
}
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/featuretree/AvailableTermsWizardPage.java
1
/**
2
* Copyright (C) 2007 EDIT
3
* European Distributed Institute of Taxonomy
4
* http://www.e-taxonomy.eu
5
*
6
* The contents of this file are subject to the Mozilla Public License Version 1.1
7
* See LICENSE.TXT at the top of this package for the full license terms.
8
*/
9

  
10
package eu.etaxonomy.taxeditor.featuretree;
11

  
12
import java.util.Arrays;
13
import java.util.HashSet;
14
import java.util.List;
15
import java.util.Set;
16
import java.util.stream.Collectors;
17

  
18
import org.eclipse.jface.wizard.WizardPage;
19
import org.eclipse.swt.SWT;
20
import org.eclipse.swt.layout.GridData;
21
import org.eclipse.swt.widgets.Composite;
22

  
23
import eu.etaxonomy.cdm.api.service.ITermService;
24
import eu.etaxonomy.cdm.model.term.DefinedTermBase;
25
import eu.etaxonomy.cdm.persistence.dto.TermDto;
26
import eu.etaxonomy.cdm.persistence.dto.TermVocabularyDto;
27
import eu.etaxonomy.taxeditor.editor.definedterm.DefinedTermSorter;
28
import eu.etaxonomy.taxeditor.editor.definedterm.TermDtoContentProvider;
29
import eu.etaxonomy.taxeditor.editor.definedterm.TermDtoLabelProvider;
30
import eu.etaxonomy.taxeditor.preference.wizard.CheckBoxTreeComposite;
31
import eu.etaxonomy.taxeditor.store.CdmStore;
32

  
33
/**
34
 * @author n.hoffmann
35
 * @created Aug 5, 2010
36
 * @version 1.0
37
 */
38
public class AvailableTermsWizardPage extends WizardPage {
39

  
40
    private CheckBoxTreeComposite treeComposite;
41
    private List<TermVocabularyDto> vocabularies;
42

  
43
	protected AvailableTermsWizardPage(List<TermVocabularyDto> vocabularies, boolean singleSelection) {
44
		super("Available Terms Wizard Page");
45
		this.vocabularies = vocabularies;
46
		setTitle("Available Terms");
47
		if(singleSelection){
48
		    setDescription("Please select one single term");
49
		}
50
		else{
51
		    setDescription("Please select terms.");
52
		}
53
	}
54

  
55
	/** {@inheritDoc} */
56
	@Override
57
	public void createControl(Composite parent) {
58
        treeComposite = new CheckBoxTreeComposite(parent, new TermDtoContentProvider(), new TermDtoLabelProvider(), SWT.NONE);
59
        treeComposite.getViewer().setComparator(new DefinedTermSorter());
60
        treeComposite.getViewer().setInput(vocabularies);
61
        treeComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1));
62
        treeComposite.getViewer().addSelectionChangedListener(e->getWizard().getContainer().updateButtons());
63

  
64
		setControl(treeComposite);
65
	}
66

  
67
	public Set<DefinedTermBase> getSelectedFeatures() {
68

  
69
        List<Object> checkedElements = Arrays.asList(treeComposite.getViewer().getCheckedElements());
70
        checkedElements = checkedElements.stream().filter(element->element instanceof TermDto).collect(Collectors.toList());
71

  
72
		Set<DefinedTermBase> terms = new HashSet<>();
73

  
74
		for(Object element : checkedElements){
75
		    if(element instanceof TermDto){
76
		        DefinedTermBase term = CdmStore.getService(ITermService.class).load(((TermDto) element).getUuid());
77
		        terms.add(term);
78
		    }
79
		}
80
		return terms;
81
	}
82

  
83
}
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/featuretree/CharacterNodeDtoTransfer.java
1
/**
2
* Copyright (C) 2020 EDIT
3
* European Distributed Institute of Taxonomy
4
* http://www.e-taxonomy.eu
5
*
6
* The contents of this file are subject to the Mozilla Public License Version 1.1
7
* See LICENSE.TXT at the top of this package for the full license terms.
8
*/
9
package eu.etaxonomy.taxeditor.featuretree;
10

  
11
import java.io.ByteArrayInputStream;
12
import java.io.ByteArrayOutputStream;
13
import java.io.DataInputStream;
14
import java.io.DataOutputStream;
15
import java.io.EOFException;
16
import java.io.IOException;
17
import java.util.ArrayList;
18
import java.util.List;
19
import java.util.UUID;
20

  
21
import org.eclipse.swt.SWTException;
22
import org.eclipse.swt.dnd.ByteArrayTransfer;
23
import org.eclipse.swt.dnd.TransferData;
24

  
25
import eu.etaxonomy.cdm.api.service.ITermNodeService;
26
import eu.etaxonomy.cdm.model.term.TermNode;
27
import eu.etaxonomy.cdm.model.term.TermTree;
28
import eu.etaxonomy.cdm.persistence.dto.CharacterNodeDto;
29
import eu.etaxonomy.cdm.persistence.dto.TermNodeDto;
30
import eu.etaxonomy.cdm.persistence.dto.TermTreeDto;
31
import eu.etaxonomy.taxeditor.model.MessagingUtils;
32
import eu.etaxonomy.taxeditor.store.CdmStore;
33

  
34
/**
35
 * @author k.luther
36
 * @since Oct 13, 2020
37
 */
38
public class CharacterNodeDtoTransfer extends ByteArrayTransfer {
39

  
40
    private static CharacterNodeDtoTransfer instance = new CharacterNodeDtoTransfer();
41
    private static final String TYPE_NAME = "featureNodeDto-transfer-format";
42
    private static final int TYPEID = registerType(TYPE_NAME);
43

  
44
    /**
45
     * <p>Getter for the field <code>instance</code>.</p>
46
     *
47
     * @return a {@link eu.etaxonomy.taxeditor.featuretree.FeatureNodeTransfer} object.
48
     */
49
    public static synchronized CharacterNodeDtoTransfer getInstance() {
50
        return instance;
51
    }
52

  
53
    private CharacterNodeDtoTransfer() {
54
    }
55

  
56
    /** {@inheritDoc} */
57
    @Override
58
    protected int[] getTypeIds() {
59
        return new int[] { TYPEID };
60
    }
61

  
62
    /** {@inheritDoc} */
63
    @Override
64
    protected String[] getTypeNames() {
65
        return new String[] { TYPE_NAME };
66
    }
67
    @Override
68
    protected void javaToNative(Object object, TransferData transferData) {
69
        if (object != null){
70
            byte[] bytes = toByteArray((TermNodeDto[]) object);
71
            if (bytes != null) {
72
                super.javaToNative(bytes, transferData);
73
            }
74
        }
75
    }
76

  
77
    @Override
78
    protected Object nativeToJava(TransferData transferData) {
79
        try{
80
            byte[] bytes = (byte[]) super.nativeToJava(transferData);
81
            if (bytes != null){
82
                return fromByteArray(bytes);
83
            }
84
        }catch (SWTException e){
85
            MessagingUtils.warningDialog("The new imported node needs to be saved first", this, "Newly created nodes can not be moved without saving");
86
        }
87

  
88
        return null;
89
    }
90

  
91

  
92
    protected byte[] toByteArray(TermNodeDto[] elements) {
93
        ByteArrayOutputStream byteOut = new ByteArrayOutputStream();
94
        DataOutputStream out = new DataOutputStream(byteOut);
95

  
96
        byte[] bytes = null;
97

  
98
        try {
99
            for(TermNodeDto element : elements){
100
                if (element.getUuid() == null){
101
                //  MessagingUtils.warningDialog("The new imported node needs to be saved first", this, "Newly created nodes can not be moved without saving");
102

  
103
                }else{
104
                    writeElementUuid(element, out);
105
                }
106
            }
107
            out.close();
108
            bytes = byteOut.toByteArray();
109
        } catch (IOException e) {
110

  
111
            // when in doubt send nothing
112
        }
113
        return bytes;
114
    }
115

  
116
    protected Object[] fromByteArray(byte[] bytes) {
117
        DataInputStream in = new DataInputStream(
118
                new ByteArrayInputStream(bytes));
119

  
120
        try {
121
            List<CharacterNodeDto> elements = new ArrayList<CharacterNodeDto>();
122

  
123
            try{
124
                while(true){
125
                    UUID uuid = readElementUuid(in);
126
                    elements.add(loadElement(uuid));
127
                }
128
            }catch(EOFException e){
129
                return  elements.toArray();
130
            }
131
        } catch (IOException e) {
132
            return null;
133
        }
134
    }
135

  
136
    public CharacterNodeDto loadElement(UUID uuid){
137
        TermNode node = CdmStore.getService(ITermNodeService.class).load(uuid);
138
        TermTreeDto tree = TermTreeDto.fromTree((TermTree)node.getGraph());
139
        return CharacterNodeDto.fromTermNode(node, tree);
140
    }
141

  
142
    public UUID readElementUuid(DataInputStream in) throws IOException{
143
        return UUID.fromString(in.readUTF());
144
    }
145

  
146
    private void writeElementUuid(TermNodeDto element, DataOutputStream out) throws IOException {
147
        out.writeUTF(element.getUuid().toString());
148
    }
149

  
150

  
151
}
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/featuretree/CharacterTransfer.java
1
/**
2
* Copyright (C) 2018 EDIT
3
* European Distributed Institute of Taxonomy
4
* http://www.e-taxonomy.eu
5
*
6
* The contents of this file are subject to the Mozilla Public License Version 1.1
7
* See LICENSE.TXT at the top of this package for the full license terms.
8
*/
9
package eu.etaxonomy.taxeditor.featuretree;
10

  
11
import java.io.ByteArrayInputStream;
12
import java.io.ByteArrayOutputStream;
13
import java.io.DataInputStream;
14
import java.io.DataOutputStream;
15
import java.io.EOFException;
16
import java.io.IOException;
17
import java.util.ArrayList;
18
import java.util.Collection;
19
import java.util.List;
20
import java.util.UUID;
21

  
22
import org.eclipse.swt.dnd.ByteArrayTransfer;
23
import org.eclipse.swt.dnd.TransferData;
24

  
25
import eu.etaxonomy.cdm.api.service.IFeatureNodeService;
26
import eu.etaxonomy.cdm.model.common.Language;
27
import eu.etaxonomy.cdm.model.description.Character;
28
import eu.etaxonomy.cdm.model.term.DefinedTerm;
29
import eu.etaxonomy.cdm.model.term.Representation;
30
import eu.etaxonomy.cdm.model.term.TermNode;
31
import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
32
import eu.etaxonomy.taxeditor.store.CdmStore;
33

  
34
/**
35
 * @author pplitzner
36
 * @since Nov 30, 2018
37
 *
38
 */
39
public class CharacterTransfer extends ByteArrayTransfer {
40

  
41
    private static CharacterTransfer instance = new CharacterTransfer();
42
    private static final String TYPE_NAME = "characters-transfer-format";
43
    private static final int TYPEID = registerType(TYPE_NAME);
44

  
45

  
46
    public static synchronized CharacterTransfer getInstance() {
47
        return instance;
48
    }
49

  
50
    private CharacterTransfer() {
51
    }
52

  
53
    @Override
54
    protected int[] getTypeIds() {
55
        return new int[] { TYPEID };
56
    }
57

  
58
    @Override
59
    protected String[] getTypeNames() {
60
        return new String[] { TYPE_NAME };
61
    }
62

  
63
    @Override
64
    protected void javaToNative(Object object, TransferData transferData) {
65
        if (object != null){
66
            Collection<Character> characters = (Collection<Character>)object;
67
            ByteArrayOutputStream byteOut = new ByteArrayOutputStream();
68
            DataOutputStream out = new DataOutputStream(byteOut);
69

  
70
            byte[] bytes = null;
71

  
72
            try {
73

  
74
                for(Character character : characters){
75
                    out.writeUTF(character.getStructure().getUuid().toString()
76
                            +","
77
                            +character.getProperty().getUuid().toString());
78
                }
79
                out.close();
80
                bytes = byteOut.toByteArray();
81
            } catch (IOException e) {
82
                // when in doubt send nothing
83
            }
84
            if (bytes != null) {
85
                super.javaToNative(bytes, transferData);
86
            }
87
        }
88
    }
89

  
90
    @Override
91
    protected Object nativeToJava(TransferData transferData) {
92
        byte[] bytes = (byte[]) super.nativeToJava(transferData);
93
        if (bytes != null){
94
            DataInputStream in = new DataInputStream(
95
                    new ByteArrayInputStream(bytes));
96

  
97
            try {
98
                List<Character> characters = new ArrayList<>();
99

  
100
                try{
101
                    while(true){
102
                        String string = in.readUTF();
103
                        String[] split = string.split(",");
104
                        IFeatureNodeService featureNodeService = CdmStore.getService(IFeatureNodeService.class);
105
                        TermNode<DefinedTerm> structure = featureNodeService.load(UUID.fromString(split[0]));
106
                        TermNode<DefinedTerm> property = featureNodeService.load(UUID.fromString(split[1]));
107
                        characters.add(createCharacter(structure, property));
108
                    }
109
                }catch(EOFException e){
110
                    return characters.toArray();
111
                }
112
            } catch (IOException e) {
113
                return null;
114
            }
115
        }
116
        return null;
117
    }
118

  
119
    public static Character createCharacter(TermNode<DefinedTerm> structureNode,
120
            TermNode<DefinedTerm> propertyNode) {
121
        Representation structureRepresentation = structureNode.getTerm().getRepresentation(PreferencesUtil.getGlobalLanguage());
122
        if(structureRepresentation==null){
123
            structureRepresentation = structureNode.getTerm().getRepresentation(Language.DEFAULT());
124
        }
125
        Representation propertyRepresentation = propertyNode.getTerm().getRepresentation(PreferencesUtil.getGlobalLanguage());
126
        if(propertyRepresentation==null){
127
            propertyRepresentation = propertyNode.getTerm().getRepresentation(Language.DEFAULT());
128
        }
129
        String label = null;
130
        String abbrevLabel = null;
131
        if(structureRepresentation!=null && propertyRepresentation!=null){
132
            if(structureRepresentation.getLabel()!=null && propertyRepresentation.getLabel()!=null){
133
                label = structureRepresentation.getLabel()+" "+propertyRepresentation.getLabel();
134
            }
135
            if(structureRepresentation.getAbbreviatedLabel()!=null && propertyRepresentation.getAbbreviatedLabel()!=null){
136
                abbrevLabel = structureRepresentation.getAbbreviatedLabel()+" "+propertyRepresentation.getAbbreviatedLabel();
137
            }
138
        }
139
        if(label!=null){
140
            //default label
141
            label = structureNode.getTerm().getLabel()+" "+propertyNode.getTerm().getLabel();
142
        }
143
        //create new Character
144
        Character character = Character.NewInstance(structureNode, propertyNode, null, label, abbrevLabel);
145
        return character;
146
    }
147

  
148
}
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/featuretree/TermChooseWizard.java
1
/**
2
* Copyright (C) 2007 EDIT
3
* European Distributed Institute of Taxonomy
4
* http://www.e-taxonomy.eu
5
*
6
* The contents of this file are subject to the Mozilla Public License Version 1.1
7
* See LICENSE.TXT at the top of this package for the full license terms.
8
*/
9

  
10
package eu.etaxonomy.taxeditor.featuretree;
11

  
12
import java.util.List;
13

  
14
import org.eclipse.jface.wizard.Wizard;
15

  
16
import eu.etaxonomy.cdm.persistence.dto.AbstractTermDto;
17
import eu.etaxonomy.cdm.persistence.dto.TermDto;
18

  
19
/**
20
 *
21
 * @author pplitzner
22
 * @since Feb 14, 2019
23
 *
24
 */
25
public class TermChooseWizard extends Wizard {
26

  
27
	private TermChooseWizardPage page;
28

  
29
	private List<AbstractTermDto> selectedTerms;
30

  
31
    private TermDto term;
32

  
33
	public TermChooseWizard(TermDto term){
34
	    this.term = term;
35

  
36

  
37
	}
38

  
39
    public List<AbstractTermDto> getSelectedTerms() {
40
        return selectedTerms;
41
    }
42

  
43
	@Override
44
	public void addPages() {
45
		page = new TermChooseWizardPage(term);
46
		page.setPageComplete(false);
47
		addPage(page);
48
	}
49

  
50
	@Override
51
	public boolean performFinish() {
52
		selectedTerms = page.getSelectedTerms();
53

  
54
		return selectedTerms.size() > 0;
55
	}
56

  
57
}
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/featuretree/TermChooseWizardPage.java
1
/**
2
* Copyright (C) 2007 EDIT
3
* European Distributed Institute of Taxonomy
4
* http://www.e-taxonomy.eu
5
*
6
* The contents of this file are subject to the Mozilla Public License Version 1.1
7
* See LICENSE.TXT at the top of this package for the full license terms.
8
*/
9

  
10
package eu.etaxonomy.taxeditor.featuretree;
11

  
12
import java.util.ArrayList;
13
import java.util.List;
14

  
15
import org.eclipse.jface.wizard.WizardPage;
16
import org.eclipse.swt.SWT;
17
import org.eclipse.swt.widgets.Composite;
18

  
19
import eu.etaxonomy.cdm.persistence.dto.AbstractTermDto;
20
import eu.etaxonomy.cdm.persistence.dto.TermDto;
21
import eu.etaxonomy.taxeditor.view.search.facet.SearchComposite;
22
import eu.etaxonomy.taxeditor.view.search.facet.term.TermSearchController;
23

  
24
/**
25
 * @author pplitzner
26
 * @since Feb 14, 2019
27
 */
28
public class TermChooseWizardPage extends WizardPage {
29

  
30
    private TermSearchController controller;
31
    private TermDto term;
32

  
33
	protected TermChooseWizardPage(TermDto term) {
34
		super("Term Choose Wizard");
35
		setTitle("Choose Parent");
36
		setDescription("Please search and select the parent term or vocabulary (if you want to move the term as root).");
37
		this.term = term;
38
	}
39

  
40
	@Override
41
	public void createControl(Composite parent) {
42
        SearchComposite searchComposite = new SearchComposite(parent, SWT.NONE);
43
        controller = new TermSearchController(searchComposite, term, this);
44
		setControl(searchComposite);
45
	}
46

  
47
	public List<AbstractTermDto> getSelectedTerms() {
48
	    List<AbstractTermDto> termDtos = new ArrayList<>();
49
	    controller.getSelectedSearchResults().forEach(result->termDtos.add(result.getContent()));
50
	    return termDtos;
51
	}
52
}
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/featuretree/TermNodeDtoTransfer.java
1
/**
2
* Copyright (C) 2020 EDIT
3
* European Distributed Institute of Taxonomy
4
* http://www.e-taxonomy.eu
5
*
6
* The contents of this file are subject to the Mozilla Public License Version 1.1
7
* See LICENSE.TXT at the top of this package for the full license terms.
8
*/
9
package eu.etaxonomy.taxeditor.featuretree;
10

  
11
import java.io.ByteArrayInputStream;
12
import java.io.ByteArrayOutputStream;
13
import java.io.DataInputStream;
14
import java.io.DataOutputStream;
15
import java.io.EOFException;
16
import java.io.IOException;
17
import java.util.ArrayList;
18
import java.util.List;
19
import java.util.UUID;
20

  
21
import org.eclipse.swt.SWTException;
22
import org.eclipse.swt.dnd.ByteArrayTransfer;
23
import org.eclipse.swt.dnd.TransferData;
24

  
25
import eu.etaxonomy.cdm.api.service.ITermNodeService;
26
import eu.etaxonomy.cdm.model.description.Feature;
27
import eu.etaxonomy.cdm.model.term.TermNode;
28
import eu.etaxonomy.cdm.persistence.dto.TermNodeDto;
29
import eu.etaxonomy.taxeditor.model.MessagingUtils;
30
import eu.etaxonomy.taxeditor.store.CdmStore;
31

  
32
/**
33
 * @author k.luther
34
 * @since Oct 13, 2020
35
 */
36
public class TermNodeDtoTransfer extends ByteArrayTransfer {
37

  
38
    private static TermNodeDtoTransfer instance = new TermNodeDtoTransfer();
39
    private static final String TYPE_NAME = "featureNodeDto-transfer-format";
40
    private static final int TYPEID = registerType(TYPE_NAME);
41

  
42
    /**
43
     * <p>Getter for the field <code>instance</code>.</p>
44
     *
45
     * @return a {@link eu.etaxonomy.taxeditor.featuretree.FeatureNodeTransfer} object.
46
     */
47
    public static synchronized TermNodeDtoTransfer getInstance() {
48
        return instance;
49
    }
50

  
51
    private TermNodeDtoTransfer() {
52
    }
53

  
54
    /** {@inheritDoc} */
55
    @Override
56
    protected int[] getTypeIds() {
57
        return new int[] { TYPEID };
58
    }
59

  
60
    /** {@inheritDoc} */
61
    @Override
62
    protected String[] getTypeNames() {
63
        return new String[] { TYPE_NAME };
64
    }
65
    @Override
66
    protected void javaToNative(Object object, TransferData transferData) {
67
        if (object != null){
68
            byte[] bytes = toByteArray((TermNodeDto[]) object);
69
            if (bytes != null) {
70
                super.javaToNative(bytes, transferData);
71
            }
72
        }
73
    }
74

  
75
    @Override
76
    protected Object nativeToJava(TransferData transferData) {
77
        try{
78
            byte[] bytes = (byte[]) super.nativeToJava(transferData);
79
            if (bytes != null){
80
                return fromByteArray(bytes);
81
            }
82
        }catch (SWTException e){
83
            MessagingUtils.warningDialog("The new imported node needs to be saved first", this, "Newly created nodes can not be moved without saving");
84
        }
85

  
86
        return null;
87
    }
88

  
89

  
90
    protected byte[] toByteArray(TermNodeDto[] elements) {
91
        ByteArrayOutputStream byteOut = new ByteArrayOutputStream();
92
        DataOutputStream out = new DataOutputStream(byteOut);
93

  
94
        byte[] bytes = null;
95

  
96
        try {
97
            for(TermNodeDto element : elements){
98
                if (element.getUuid() == null){
99
                //  MessagingUtils.warningDialog("The new imported node needs to be saved first", this, "Newly created nodes can not be moved without saving");
100

  
101
                }else{
102
                    writeElementUuid(element, out);
103
                }
104
            }
105
            out.close();
106
            bytes = byteOut.toByteArray();
107
        } catch (IOException e) {
108

  
109
            // when in doubt send nothing
110
        }
111
        return bytes;
112
    }
113

  
114
    protected Object[] fromByteArray(byte[] bytes) {
115
        DataInputStream in = new DataInputStream(
116
                new ByteArrayInputStream(bytes));
117

  
118
        try {
119
            List<TermNodeDto> elements = new ArrayList<TermNodeDto>();
120

  
121
            try{
122
                while(true){
123
                    UUID uuid = readElementUuid(in);
124
                    elements.add(loadElement(uuid));
125
                }
126
            }catch(EOFException e){
127
                return  elements.toArray();
128
            }
129
        } catch (IOException e) {
130
            return null;
131
        }
132
    }
133

  
134
    public TermNodeDto loadElement(UUID uuid){
135
        TermNode<Feature> node = CdmStore.getService(ITermNodeService.class).load(uuid);
136
        return TermNodeDto.fromNode(node, null);
137
    }
138

  
139
    public UUID readElementUuid(DataInputStream in) throws IOException{
140
        return UUID.fromString(in.readUTF());
141
    }
142

  
143
    private void writeElementUuid(TermNodeDto element, DataOutputStream out) throws IOException {
144
        out.writeUTF(element.getUuid().toString());
145
    }
146

  
147

  
148
}
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/featuretree/TermNodeTransfer.java
1
/**
2
 * Copyright (C) 2007 EDIT
3
 * European Distributed Institute of Taxonomy
4
 * http://www.e-taxonomy.eu
5
 *
6
 * The contents of this file are subject to the Mozilla Public License Version 1.1
7
 * See LICENSE.TXT at the top of this package for the full license terms.
8
 */
9

  
10
package eu.etaxonomy.taxeditor.featuretree;
11

  
12
import java.io.ByteArrayInputStream;
13
import java.io.ByteArrayOutputStream;
14
import java.io.DataInputStream;
15
import java.io.DataOutputStream;
16
import java.io.EOFException;
17
import java.io.IOException;
18
import java.util.ArrayList;
19
import java.util.List;
20
import java.util.UUID;
21

  
22
import org.eclipse.swt.SWTException;
23
import org.eclipse.swt.dnd.ByteArrayTransfer;
24
import org.eclipse.swt.dnd.TransferData;
25

  
26
import eu.etaxonomy.cdm.api.service.IFeatureNodeService;
27
import eu.etaxonomy.cdm.model.description.Feature;
28
import eu.etaxonomy.cdm.model.term.TermNode;
29
import eu.etaxonomy.taxeditor.model.MessagingUtils;
30
import eu.etaxonomy.taxeditor.store.CdmStore;
31

  
32
/**
33
 * <p>FeatureNodeTransfer class.</p>
34
 *
35
 * @author n.hoffmann
36
 * @created Aug 5, 2010
37
 */
38
public class TermNodeTransfer extends ByteArrayTransfer {
39

  
40
	private static TermNodeTransfer instance = new TermNodeTransfer();
41
	private static final String TYPE_NAME = "featureNode-transfer-format";
42
	private static final int TYPEID = registerType(TYPE_NAME);
43

  
44
	/**
45
	 * <p>Getter for the field <code>instance</code>.</p>
46
	 *
47
	 * @return a {@link eu.etaxonomy.taxeditor.featuretree.FeatureNodeTransfer} object.
48
	 */
49
	public static synchronized TermNodeTransfer getInstance() {
50
		return instance;
51
	}
52

  
53
	private TermNodeTransfer() {
54
	}
55

  
56
	/** {@inheritDoc} */
57
	@Override
58
	protected int[] getTypeIds() {
59
		return new int[] { TYPEID };
60
	}
61

  
62
	/** {@inheritDoc} */
63
	@Override
64
	protected String[] getTypeNames() {
65
		return new String[] { TYPE_NAME };
66
	}
67
	@Override
68
    protected void javaToNative(Object object, TransferData transferData) {
69
        if (object != null){
70
            byte[] bytes = toByteArray((TermNode[]) object);
71
            if (bytes != null) {
72
                super.javaToNative(bytes, transferData);
73
            }
74
        }
75
    }
76

  
77
    @Override
78
    protected Object nativeToJava(TransferData transferData) {
79
        try{
80
            byte[] bytes = (byte[]) super.nativeToJava(transferData);
81
            if (bytes != null){
82
                return fromByteArray(bytes);
83
            }
84
        }catch (SWTException e){
85
            MessagingUtils.warningDialog("The new imported node needs to be saved first", this, "Newly created nodes can not be moved without saving");
86
        }
87

  
88
        return null;
89
    }
90

  
91

  
92
    protected byte[] toByteArray(TermNode[] elements) {
93
        ByteArrayOutputStream byteOut = new ByteArrayOutputStream();
94
        DataOutputStream out = new DataOutputStream(byteOut);
95

  
96
        byte[] bytes = null;
97

  
98
        try {
99
            for(TermNode element : elements){
100
                if (element.getUuid() == null){
101
                //                    MessagingUtils.warningDialog("The new imported node needs to be saved first", this, "Newly created nodes can not be moved without saving");
102

  
103
                }else{
104
                    writeElementUuid(element, out);
105
                }
106
            }
107
            out.close();
108
            bytes = byteOut.toByteArray();
109
        } catch (IOException e) {
110

  
111
            // when in doubt send nothing
112
        }
113
        return bytes;
114
    }
115

  
116
    protected Object[] fromByteArray(byte[] bytes) {
117
        DataInputStream in = new DataInputStream(
118
                new ByteArrayInputStream(bytes));
119

  
120
        try {
121
            List<TermNode> elements = new ArrayList<TermNode>();
122

  
123
            try{
124
                while(true){
125
                    UUID uuid = readElementUuid(in);
126
                    elements.add(loadElement(uuid));
127
                }
128
            }catch(EOFException e){
129
                return  elements.toArray();
130
            }
131
        } catch (IOException e) {
132
            return null;
133
        }
134
    }
135

  
136
    public TermNode loadElement(UUID uuid){
137
        TermNode<Feature> node = CdmStore.getService(IFeatureNodeService.class).load(uuid);
138
        return node;
139
    }
140

  
141
    public UUID readElementUuid(DataInputStream in) throws IOException{
142
        return UUID.fromString(in.readUTF());
143
    }
144

  
145
    private void writeElementUuid(Object element, DataOutputStream out) throws IOException {
146
        out.writeUTF(((TermNode)element).getUuid().toString());
147
    }
148

  
149
}
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/featuretree/TermTreeContentProvider.java
1
/**
2
* Copyright (C) 2007 EDIT
3
* European Distributed Institute of Taxonomy
4
* http://www.e-taxonomy.eu
5
*
6
* The contents of this file are subject to the Mozilla Public License Version 1.1
7
* See LICENSE.TXT at the top of this package for the full license terms.
8
*/
9
package eu.etaxonomy.taxeditor.featuretree;
10

  
11
import java.util.HashMap;
12
import java.util.List;
13
import java.util.Map;
14
import java.util.UUID;
15

  
16
import org.eclipse.jface.viewers.ITreeContentProvider;
17
import org.eclipse.jface.viewers.Viewer;
18

  
19
import eu.etaxonomy.cdm.model.term.DefinedTermBase;
20
import eu.etaxonomy.cdm.model.term.TermNode;
21
import eu.etaxonomy.cdm.model.term.TermTree;
22
import eu.etaxonomy.cdm.persistence.dto.TermNodeDto;
23
import eu.etaxonomy.cdm.persistence.dto.TermTreeDto;
24

  
25
/**
26
 * <p>TermTreeContentProvider class.</p>
27
 *
28
 * @author n.hoffmann
29
 * @created Aug 5, 2010
30
 */
31
public class TermTreeContentProvider<T extends DefinedTermBase> implements ITreeContentProvider {
32

  
33
    private Viewer viewer;
34
    private TermNodeDto oldInput;
35
    private TermNodeDto newInput;
36
    private Map<UUID, TermNodeDto> uuidTermMap = new HashMap<>();
37

  
38
	@Override
39
	public void dispose() {}
40

  
41
	@Override
42
	public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
43
	    this.viewer = viewer;
44
	    if (oldInput instanceof TermNodeDto){
45
	        this.oldInput = (TermNodeDto)oldInput;
46
	    }
47
	    if (newInput instanceof TermNodeDto){
48
	        this.newInput = (TermNodeDto)newInput;
49
	    }
50
	    if (oldInput instanceof TermTreeDto){
51
	        this.oldInput = ((TermTreeDto)oldInput).getRoot();
52
	    }
53
	    if (newInput instanceof TermTreeDto){
54
            this.newInput = ((TermTreeDto)newInput).getRoot();
55
        }
56
	}
57

  
58
	@Override
59
	public Object[] getElements(Object inputElement) {
60
		return this.getChildren(inputElement);
61
	}
62

  
63
	@Override
64
	public Object[] getChildren(Object parentElement) {
65
	    if(parentElement instanceof TermTree){
66
            List<TermNode<?>> children = ((TermTree) parentElement).getRootChildren();
67
            return children.toArray();
68
        }else if(parentElement instanceof TermNode){
69
            List<TermNode<?>> children = ((TermNode) parentElement).getChildNodes();
70
            return children.toArray();
71
        }
72
		if(parentElement instanceof TermTreeDto){
73
		    if (((TermTreeDto) parentElement).getRoot() != null){
74
		        List<TermNodeDto> children = ((TermTreeDto) parentElement).getRoot().getChildren();
75
		        return children.toArray();
76
		    }
77
			return new Object[]{};
78
		}else if(parentElement instanceof TermNodeDto){
79
			List<TermNodeDto> children = ((TermNodeDto) parentElement).getChildren();
80
			return children.toArray();
81
		}else if(parentElement instanceof List){
82
			return ((List<TermNodeDto>) parentElement).toArray();
83
		}else{
84
			return new Object[]{};
85
		}
86
	}
87

  
88
	@Override
89
	public Object getParent(Object element) {
90
	    if(element instanceof TermNode){
91
            return ((TermNode<?>) element).getParent();
92
        }
93
	    if(element instanceof TermNodeDto){
94
	        TermNodeDto parent = uuidTermMap.get(((TermNodeDto) element).getParentUuid());
95
	        return parent;
96
	    }
97
		return null;
98
	}
99

  
100
	public Map<UUID, TermNodeDto> getUuidTermMap() {
101
        return uuidTermMap;
102
    }
103

  
104
	public void setUuidTermMap(Map<UUID, TermNodeDto> uuidTermMap) {
105
        this.uuidTermMap = uuidTermMap;
106
    }
107

  
108
	@Override
109
	public boolean hasChildren(Object element) {
110
		return getChildren(element).length != 0;
111
	}
112
}
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/featuretree/TermTreeLabelProvider.java
1
/**
2
* Copyright (C) 2007 EDIT
3
* European Distributed Institute of Taxonomy
4
* http://www.e-taxonomy.eu
5
*
6
* The contents of this file are subject to the Mozilla Public License Version 1.1
7
* See LICENSE.TXT at the top of this package for the full license terms.
8
*/
9
package eu.etaxonomy.taxeditor.featuretree;
10

  
11
import java.util.ArrayList;
12

  
13
import eu.etaxonomy.cdm.model.common.Language;
14
import eu.etaxonomy.cdm.model.term.DefinedTermBase;
15
import eu.etaxonomy.cdm.model.term.Representation;
16
import eu.etaxonomy.cdm.model.term.TermNode;
17
import eu.etaxonomy.cdm.model.term.TermTree;
18
import eu.etaxonomy.cdm.persistence.dto.TermDto;
19
import eu.etaxonomy.cdm.persistence.dto.TermNodeDto;
20
import eu.etaxonomy.cdm.persistence.dto.TermTreeDto;
21
import eu.etaxonomy.taxeditor.editor.definedterm.TermDtoLabelProvider;
22
import eu.etaxonomy.taxeditor.preference.IPreferenceKeys;
23
import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
24

  
25
/**
26
 * @author n.hoffmann
27
 * @created Aug 5, 2010
28
 */
29
public class TermTreeLabelProvider extends TermDtoLabelProvider {
30

  
31
    public TermTreeLabelProvider() {
32
        showIdInVoc = PreferencesUtil.getBooleanValue(IPreferenceKeys.SHOW_VOCABULARY_ID_FOR_TERM_LABELS_IN_TREE_EDITOR, true);
33
    }
34

  
35

  
36
	@Override
37
	public String getText(Object element) {
38
		if(element instanceof TermTreeDto){
39
			return ((TermTreeDto) element).getRepresentation_L10n() != null? ((TermTreeDto) element).getRepresentation_L10n() :((TermTreeDto) element).getTitleCache()  ;
40
		}else if(element instanceof TermNodeDto){
41
		    TermDto term = ((TermNodeDto) element).getTerm();
42
		    if(term!=null){
43
//		        boolean showIdInVoc = PreferencesUtil.getBooleanValue(IPreferenceKeys.SHOW_VOCABULARY_ID_FOR_TERM_LABELS_IN_TREE_EDITOR, true);
44
		        return super.getText(term);
45
		    }
46

  
47
		}else if(element instanceof TermNode){
48
            DefinedTermBase<?> term = ((TermNode<?>) element).getTerm();
49
            if(term!=null){
50
                Representation rep = term.getRepresentation(PreferencesUtil.getGlobalLanguage());
51
                if (rep == null){
52
                    rep = term.getPreferredRepresentation(new ArrayList<Language>());
53
                }
54
                return rep != null? rep.getLabel() : term.getTitleCache();
55
            }
56

  
57
        }else if(element instanceof TermTree){
58
            return ((TermTree<?>) element).getTitleCache();
59

  
60
        }
61
		return "No label provided";
62
	}
63
}
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/featuretree/TermTreePropertyTester.java
1
/**
2
 *
3
 */
4
package eu.etaxonomy.taxeditor.featuretree;
5

  
6
import org.eclipse.core.expressions.PropertyTester;
7
import org.eclipse.jface.viewers.IStructuredSelection;
8

  
9
import eu.etaxonomy.cdm.model.term.TermTree;
10

  
11
/**
12
 * Property tester used by the feature tree menu.
13
 *
14
 * @author pplitzner
15
 * @since Jan 30, 2019
16
 *
17
 */
18
public class TermTreePropertyTester extends PropertyTester {
19

  
20
	private static final String FEATURE_TREE= "isFeatureTree"; //$NON-NLS-1$
21

  
22
	@Override
23
    public boolean test(Object receiver, String property, Object[] args,
24
			Object expectedValue) {
25

  
26
	    Object[] selectedElements = ((IStructuredSelection) receiver).toArray();
27

  
28
	    if(selectedElements.length == 0){
29
			// nothing selected so all tests should fail
30
			return false;
31
		}
32

  
33
		if(FEATURE_TREE.equals(property)){
34
		    return isTermTree(selectedElements);
35
		}
36
		else{
37
			return false;
38
		}
39
	}
40

  
41
	private boolean isTermTree(Object[] selectedElements) {
42
	    for (Object object : selectedElements){
43
	        if(!(object instanceof TermTree)){
44
	            return false;
45
	        }
46
	    }
47
	    return true;
48
	}
49

  
50
}
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/featuretree/e4/FeatureTreeDtoEditorComposite.java
1
/**
2
* Copyright (C) 2017 EDIT
3
* European Distributed Institute of Taxonomy
4
* http://www.e-taxonomy.eu
5
*
6
* The contents of this file are subject to the Mozilla Public License Version 1.1
7
* See LICENSE.TXT at the top of this package for the full license terms.
8
*/
9
package eu.etaxonomy.taxeditor.featuretree.e4;
10

  
11
import java.util.HashMap;
12
import java.util.Map;
13
import java.util.UUID;
14

  
15
import org.eclipse.jface.viewers.ISelectionChangedListener;
16
import org.eclipse.jface.viewers.TreeViewer;
17
import org.eclipse.swt.SWT;
18
import org.eclipse.swt.dnd.DND;
19
import org.eclipse.swt.dnd.DragSourceListener;
20
import org.eclipse.swt.dnd.DropTargetListener;
21
import org.eclipse.swt.dnd.Transfer;
22
import org.eclipse.swt.events.ModifyListener;
23
import org.eclipse.swt.events.SelectionAdapter;
24
import org.eclipse.swt.events.SelectionEvent;
25
import org.eclipse.swt.events.SelectionListener;
26
import org.eclipse.swt.layout.GridData;
27
import org.eclipse.swt.layout.GridLayout;
28
import org.eclipse.swt.widgets.Button;
29
import org.eclipse.swt.widgets.Composite;
30
import org.eclipse.swt.widgets.Label;
31
import org.eclipse.swt.widgets.Text;
32
import org.eclipse.swt.widgets.Tree;
33

  
34
import eu.etaxonomy.cdm.api.service.ITermTreeService;
35
import eu.etaxonomy.cdm.model.term.DefinedTermBase;
36
import eu.etaxonomy.cdm.model.term.TermTree;
37
import eu.etaxonomy.cdm.model.term.TermType;
38
import eu.etaxonomy.cdm.persistence.dto.TermNodeDto;
39
import eu.etaxonomy.cdm.persistence.dto.TermTreeDto;
40
import eu.etaxonomy.taxeditor.editor.definedterm.TermTransfer;
41
import eu.etaxonomy.taxeditor.featuretree.CharacterNodeDtoTransfer;
42
import eu.etaxonomy.taxeditor.featuretree.TermTreeContentProvider;
43
import eu.etaxonomy.taxeditor.featuretree.TermTreeLabelProvider;
44
import eu.etaxonomy.taxeditor.l10n.Messages;
45
import eu.etaxonomy.taxeditor.model.IDirtyMarkable;
46
import eu.etaxonomy.taxeditor.model.ImageResources;
47
import eu.etaxonomy.taxeditor.store.CdmStore;
48
import eu.etaxonomy.taxeditor.store.StoreUtil;
49
import eu.etaxonomy.taxeditor.ui.dialog.selection.FeatureTreeSelectionDialog;
50

  
51
/**
52
 * @author pplitzner
53
 * @since Jun 19, 2017
54
 */
55
public class FeatureTreeDtoEditorComposite <T extends DefinedTermBase> extends Composite{
56

  
57
    private TermTreeDto featureTree;
58

  
59
    private Label label_title;
60
    private Text text_title;
61
    private Button btnOpenFeatureTree;
62
    private TreeViewer viewer;
63

  
64
    private Map<UUID, TermNodeDto> nodeUuidMap = new HashMap<>();
65

  
66
    public FeatureTreeDtoEditorComposite(Composite parent, int style) {
67
        super(parent, style);
68
        setLayout(new GridLayout(1, false));
69

  
70
        Composite composite_treeTitle = new Composite(this, SWT.NULL);
71
        composite_treeTitle.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true,
72
                false));
73
        GridLayout gl_composite_treeTitle = new GridLayout(3, false);
74
        gl_composite_treeTitle.marginWidth = 0;
75
        composite_treeTitle.setLayout(gl_composite_treeTitle);
76

  
77
        label_title = new Label(composite_treeTitle, SWT.NULL);
78
        label_title.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false, 1, 1));
79
        label_title.setText(Messages.TermTreeEditorComposite_FEATURE_TREE);
80

  
81
        text_title = new Text(composite_treeTitle, SWT.BORDER);
82
        text_title.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1));
83
        text_title.setEditable(false);
84

  
85
        btnOpenFeatureTree = new Button(composite_treeTitle, SWT.NONE);
86
        btnOpenFeatureTree.setLayoutData(new GridData(SWT.CENTER, SWT.CENTER, false, false, 1, 1));
87
        btnOpenFeatureTree.setToolTipText(Messages.TermTreeEditorComposite_OPEN_TREE);
88
        btnOpenFeatureTree.setImage(ImageResources.getImage(ImageResources.BROWSE_ICON));
89

  
90
        viewer = new TreeViewer(new Tree(this, SWT.H_SCROLL | SWT.V_SCROLL | SWT.MULTI));
91
        Tree tree = viewer.getTree();
92
        tree.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 3, 1));
93
        viewer.getControl().setLayoutData(
94
                new GridData(SWT.FILL, SWT.FILL, true, true));
95
    }
96

  
97
    public void init(String label,
98
            DragSourceListener dragSourceListener,
99
            DropTargetListener dropTargetListener,
100
            ISelectionChangedListener viewerSelectionChangedListener,
101
            IDirtyMarkable dirtyMarkable,
102
            ModifyListener textModifyListener) {
103
        init(label,
104
                null,
105
                dragSourceListener,
106
                dropTargetListener,
107
                null,
108
                viewerSelectionChangedListener,
109
                null,
110
                dirtyMarkable,
111
                textModifyListener);
112
    }
113

  
114
    public void init(String label, TermType termType,
115
            DragSourceListener dragSourceListener,
116
            DropTargetListener dropTargetListener,
117
            ISelectionChangedListener viewerSelectionChangedListener,
118
            IDirtyMarkable dirtyMarkable,
119
            ModifyListener textModifyListener) {
120
        this.init(label,
121
                termType,
122
                dragSourceListener,
123
                dropTargetListener,
124
                null,
125
                viewerSelectionChangedListener,
126
                null,
127
                dirtyMarkable,
128
                textModifyListener);
129
    }
130
    public void init(DragSourceListener dragSourceListener,
131
            DropTargetListener dropTargetListener,
132
            Transfer[] transfers,
133
            ISelectionChangedListener viewerSelectionChangedListener,
134
            SelectionListener openFeatureTreeSelectionListener,
135
            ModifyListener textModifyListener) {
136
        init(null,
137
                null,
138
                dragSourceListener,
139
                dropTargetListener,
140
                transfers,
141
                viewerSelectionChangedListener,
142
                openFeatureTreeSelectionListener,
143
                null,
144
                textModifyListener);
145
    }
146
    private void init(String label,
147
            TermType termType,
148
            DragSourceListener dragSourceListener,
149
            DropTargetListener dropTargetListener,
150
            Transfer[] transfers,
151
            ISelectionChangedListener viewerSelectionChangedListener,
152
            SelectionListener openFeatureTreeSelectionListener,
153
            IDirtyMarkable dirtyMarkable,
154
            ModifyListener textModifyListener) {
155
        if(label!=null){
156
            label_title.setText(label);
157
        }
... This diff was truncated because it exceeds the maximum size that can be displayed.

Also available in: Unified diff