Project

General

Profile

« Previous | Next » 

Revision 2d38478f

Added by Katja Luther about 4 years ago

ref #8044: search for vocs and do not show selected term

View differences:

eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/editor/definedterm/e4/handler/MoveDefinedTermHandler.java
28 28
import org.eclipse.swt.widgets.Shell;
29 29

  
30 30
import eu.etaxonomy.cdm.model.location.Country;
31
import eu.etaxonomy.cdm.persistence.dto.AbstractTermDto;
31 32
import eu.etaxonomy.cdm.persistence.dto.TermDto;
32 33
import eu.etaxonomy.taxeditor.editor.definedterm.e4.DefinedTermEditorE4;
33 34
import eu.etaxonomy.taxeditor.editor.definedterm.operation.MoveDefinedTermOperation;
......
58 59

  
59 60
        TermDto selectedTerm = (TermDto) selection.getFirstElement();
60 61

  
61
        TermChooseWizard wizard = new TermChooseWizard(selectedTerm.getTermType());
62
        TermChooseWizard wizard = new TermChooseWizard(selectedTerm);
62 63
        WizardDialog dialog = new WizardDialog(shell, wizard);
63 64

  
64
        List<TermDto> selectedTerms = new ArrayList<>();
65
        List<AbstractTermDto> selectedTerms = new ArrayList<>();
65 66
        if (dialog.open() == IStatus.OK) {
66 67
            selectedTerms = wizard.getSelectedTerms();
67 68
        }
......
71 72
            return;
72 73
        }
73 74

  
74
        TermDto target = selectedTerms.get(0);
75
        AbstractTermDto target = selectedTerms.get(0);
75 76
        String label = menuItem.getLocalizedLabel();
76 77
        IUndoContext undoContext = StoreUtil.getUndoContext();
77 78
        Set<TermDto> movedTerms = Collections.singleton(selectedTerm);
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/featuretree/TermChooseWizard.java
13 13

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

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

  
19 19
/**
......
26 26

  
27 27
	private TermChooseWizardPage page;
28 28

  
29
	private List<TermDto> selectedTerms;
29
	private List<AbstractTermDto> selectedTerms;
30 30

  
31
    private TermType termType;
31
    private TermDto term;
32 32

  
33
	public TermChooseWizard(TermType termType){
34
	    this.termType = termType;
33
	public TermChooseWizard(TermDto term){
34
	    this.term = term;
35 35
	}
36 36

  
37
    public List<TermDto> getSelectedTerms() {
37
    public List<AbstractTermDto> getSelectedTerms() {
38 38
        return selectedTerms;
39 39
    }
40 40

  
41 41
	@Override
42 42
	public void addPages() {
43
		page = new TermChooseWizardPage(termType);
43
		page = new TermChooseWizardPage(term);
44 44
		addPage(page);
45 45
	}
46 46

  
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/featuretree/TermChooseWizardPage.java
16 16
import org.eclipse.swt.SWT;
17 17
import org.eclipse.swt.widgets.Composite;
18 18

  
19
import eu.etaxonomy.cdm.model.term.TermType;
19
import eu.etaxonomy.cdm.persistence.dto.AbstractTermDto;
20 20
import eu.etaxonomy.cdm.persistence.dto.TermDto;
21 21
import eu.etaxonomy.taxeditor.view.search.facet.SearchComposite;
22 22
import eu.etaxonomy.taxeditor.view.search.facet.term.TermSearchController;
......
30 30
public class TermChooseWizardPage extends WizardPage {
31 31

  
32 32
    private TermSearchController controller;
33
    private TermType termType;
33
    private TermDto term;
34 34

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

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

  
49
	public List<TermDto> getSelectedTerms() {
50
	    List<TermDto> termDtos = new ArrayList<>();
49
	public List<AbstractTermDto> getSelectedTerms() {
50
	    List<AbstractTermDto> termDtos = new ArrayList<>();
51 51
	    controller.getSelectedSearchResults().forEach(result->termDtos.add(result.getContent()));
52 52
	    return termDtos;
53 53
	}
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/search/facet/term/TermSearchController.java
17 17
import org.eclipse.swt.widgets.Composite;
18 18

  
19 19
import eu.etaxonomy.cdm.api.service.ITermService;
20
import eu.etaxonomy.cdm.api.service.IVocabularyService;
20 21
import eu.etaxonomy.cdm.common.CdmUtils;
21
import eu.etaxonomy.cdm.model.term.TermType;
22
import eu.etaxonomy.cdm.persistence.dto.AbstractTermDto;
22 23
import eu.etaxonomy.cdm.persistence.dto.TermDto;
24
import eu.etaxonomy.cdm.persistence.dto.TermVocabularyDto;
23 25
import eu.etaxonomy.taxeditor.store.CdmStore;
24 26
import eu.etaxonomy.taxeditor.store.StoreUtil;
25 27
import eu.etaxonomy.taxeditor.view.search.facet.SearchComposite;
......
30 32
 * @since Jan 22, 2019
31 33
 *
32 34
 */
33
public class TermSearchController extends SearchController<TermSearchResult, TermDto> {
35
public class TermSearchController extends SearchController<TermSearchResult, AbstractTermDto> {
34 36

  
35
    private TermType termType;
37
    private TermDto term;
36 38

  
37
    public TermSearchController(SearchComposite composite, TermType termType) {
39
    public TermSearchController(SearchComposite composite, TermDto term) {
38 40
        super(composite);
39
        this.termType = termType;
41
        this.term = term;
40 42
    }
41 43

  
42 44
    @Override
......
56 58
    protected List<TermSearchResult> searchResults(String searchString){
57 59
        List<TermSearchResult> searchResults = new ArrayList<>();
58 60
        if(CdmUtils.isNotBlank(searchString)){
59
            Collection<TermDto> dtos = CdmStore.getService(ITermService.class).findByTitleAsDto(searchString, termType);
61
            Collection<TermDto> dtos = CdmStore.getService(ITermService.class).findByTitleAsDto(searchString, term.getTermType());
62
            dtos.remove(term);
60 63
            dtos.stream().forEach(dto->searchResults.add(new TermSearchResult(dto)));
64

  
65

  
66
            Collection<TermVocabularyDto> vocDtos = CdmStore.getService(IVocabularyService.class).findVocabularyDtoByTermTypeAndPattern(searchString, term.getTermType());
67
            vocDtos.stream().forEach(vocDto->searchResults.add(new TermSearchResult(vocDto)));
68

  
61 69
        }
62 70
        return searchResults;
63 71
    }
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/search/facet/term/TermSearchResult.java
12 12
import java.util.Set;
13 13

  
14 14
import eu.etaxonomy.cdm.model.term.TermType;
15
import eu.etaxonomy.cdm.persistence.dto.AbstractTermDto;
15 16
import eu.etaxonomy.cdm.persistence.dto.TermDto;
16 17
import eu.etaxonomy.cdm.remote.l10n.TermRepresentation_L10n;
17 18
import eu.etaxonomy.taxeditor.view.search.facet.Facet;
......
22 23
 * @since Jan 24, 2019
23 24
 *
24 25
 */
25
public class TermSearchResult extends SearchResult<TermDto> {
26
public class TermSearchResult extends SearchResult<AbstractTermDto> {
26 27

  
27
    public TermSearchResult(TermDto content) {
28
    public TermSearchResult(AbstractTermDto content) {
28 29
        super(content);
29 30
    }
30 31

  
31 32
    @Override
32
    protected Set<Facet> initFacets(TermDto content) {
33
    protected Set<Facet> initFacets(AbstractTermDto content) {
33 34
        Set<Facet> facets = new HashSet<>();
34 35
        content.localize(new TermRepresentation_L10n());
35 36
        TermType termType = content.getTermType();
36
        facets.add(new Facet(content.getVocRepresentation_L10n(), termType!=null?termType.getMessage():null));
37
        if (content instanceof TermDto){
38
            facets.add(new Facet(((TermDto)content).getVocRepresentation_L10n(), termType!=null?termType.getMessage():null));
39
        }else{
40
            facets.add(new Facet(content.getRepresentation_L10n(), termType!=null?termType.getMessage():null));
41
        }
37 42
        return facets;
38 43
    }
39 44

  
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/search/facet/term/TermSearchResultComposite.java
39 39
import eu.etaxonomy.cdm.common.UriUtils;
40 40
import eu.etaxonomy.cdm.model.media.Media;
41 41
import eu.etaxonomy.cdm.model.media.MediaUtils;
42
import eu.etaxonomy.cdm.persistence.dto.AbstractTermDto;
42 43
import eu.etaxonomy.cdm.persistence.dto.TermDto;
43 44
import eu.etaxonomy.taxeditor.store.CdmStore;
44 45
import eu.etaxonomy.taxeditor.view.search.facet.CheckBoxSearchResultComposite;
......
48 49
 * @since Jan 23, 2019
49 50
 *
50 51
 */
51
public class TermSearchResultComposite extends CheckBoxSearchResultComposite<TermDto, TermSearchResult> {
52
public class TermSearchResultComposite extends CheckBoxSearchResultComposite<AbstractTermDto, TermSearchResult> {
52 53

  
53 54
    private Collection<Image> imageBuffer;
54 55

  
......
103 104
            lblDescription.setText(representation_L10n_text);
104 105
        }
105 106
        // media
106
        Collection<UUID> mediaUuids = result.getContent().getMedia();
107
        if(mediaUuids!=null){
108
            if(imageBuffer==null){
109
                imageBuffer = new HashSet<>();
110
            }
111
            new Job("Load term media") {
112
                @Override
113
                protected IStatus run(IProgressMonitor monitor) {
114
                    Collection<URI> mediaUris = new HashSet<>();
115
                    for (UUID uuid : mediaUuids) {
116
                        Media media = CdmStore.getService(IMediaService.class).load(uuid);
117
                        if(media==null){
118
                            continue;
119
                        }
120
                        URI uri = MediaUtils.getFirstMediaRepresentationPart(media).getUri();
121
                        mediaUris.add(uri);
122
                    }
123
                    TermSearchResultComposite.this.getDisplay().asyncExec(()->
124
                    {
125
                        for (URI uri : mediaUris) {
126
                            try {
127
                                InputStream imageStream = UriUtils.getInputStream(uri);
128
                                imageBuffer.add(new Image(Display.getCurrent(), imageStream));
129
                            } catch (Exception e1) {
130
                                // ignore
107
        if (result.getContent() instanceof TermDto){
108
            Collection<UUID> mediaUuids = ((TermDto)result.getContent()).getMedia();
109
            if(mediaUuids!=null){
110
                if(imageBuffer==null){
111
                    imageBuffer = new HashSet<>();
112
                }
113
                new Job("Load term media") {
114
                    @Override
115
                    protected IStatus run(IProgressMonitor monitor) {
116
                        Collection<URI> mediaUris = new HashSet<>();
117
                        for (UUID uuid : mediaUuids) {
118
                            Media media = CdmStore.getService(IMediaService.class).load(uuid);
119
                            if(media==null){
120
                                continue;
131 121
                            }
122
                            URI uri = MediaUtils.getFirstMediaRepresentationPart(media).getUri();
123
                            mediaUris.add(uri);
132 124
                        }
133
                        Composite mediaContainer = new Composite(content, SWT.NONE);
134
                        mediaContainer.setLayout(new FillLayout());
135
                        for (Image image : imageBuffer) {
136
                            Composite composite = new Composite(mediaContainer, SWT.NONE);
137
                            composite.addPaintListener(new PaintListener() {
138
                                @Override
139
                                public void paintControl(PaintEvent e) {
140
                                    if(image!=null){
141
                                        e.gc.setAntialias(SWT.ON);
142
                                        e.gc.setInterpolation(SWT.HIGH);
143
                                        e.gc.drawImage(image, 0, 0,image.getBounds().width, image.getBounds().height,0, 0, 40, 40);
144
                                        e.gc.dispose();
145
                                    }
125
                        TermSearchResultComposite.this.getDisplay().asyncExec(()->
126
                        {
127
                            for (URI uri : mediaUris) {
128
                                try {
129
                                    InputStream imageStream = UriUtils.getInputStream(uri);
130
                                    imageBuffer.add(new Image(Display.getCurrent(), imageStream));
131
                                } catch (Exception e1) {
132
                                    // ignore
146 133
                                }
147
                            });
148
                        }
149

  
150
                        TermSearchResultComposite.this.getParent().layout();
151
                    });
152
                    return Status.OK_STATUS;
153
                }
154
            }.schedule();
134
                            }
135
                            Composite mediaContainer = new Composite(content, SWT.NONE);
136
                            mediaContainer.setLayout(new FillLayout());
137
                            for (Image image : imageBuffer) {
138
                                Composite composite = new Composite(mediaContainer, SWT.NONE);
139
                                composite.addPaintListener(new PaintListener() {
140
                                    @Override
141
                                    public void paintControl(PaintEvent e) {
142
                                        if(image!=null){
143
                                            e.gc.setAntialias(SWT.ON);
144
                                            e.gc.setInterpolation(SWT.HIGH);
145
                                            e.gc.drawImage(image, 0, 0,image.getBounds().width, image.getBounds().height,0, 0, 40, 40);
146
                                            e.gc.dispose();
147
                                        }
148
                                    }
149
                                });
150
                            }
155 151

  
152
                            TermSearchResultComposite.this.getParent().layout();
153
                        });
154
                        return Status.OK_STATUS;
155
                    }
156
                }.schedule();
157
            }
156 158
        }
157 159
        return content;
158 160
    }

Also available in: Unified diff