Revision 2d38478f
Added by Katja Luther about 4 years ago
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
ref #8044: search for vocs and do not show selected term