Revision a4063890
Added by Patrick Plitzner over 5 years ago
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/descriptiveDataSet/character/CharacterEditor.java | ||
---|---|---|
11 | 11 |
|
12 | 12 |
import java.util.ArrayList; |
13 | 13 |
import java.util.Arrays; |
14 |
import java.util.Collection; |
|
14 | 15 |
import java.util.HashMap; |
16 |
import java.util.HashSet; |
|
15 | 17 |
import java.util.Iterator; |
16 | 18 |
import java.util.List; |
17 | 19 |
import java.util.Map; |
20 |
import java.util.Set; |
|
18 | 21 |
|
19 | 22 |
import javax.annotation.PostConstruct; |
20 | 23 |
import javax.annotation.PreDestroy; |
... | ... | |
35 | 38 |
import org.eclipse.jface.viewers.TreeSelection; |
36 | 39 |
import org.eclipse.swt.SWT; |
37 | 40 |
import org.eclipse.swt.custom.SashForm; |
41 |
import org.eclipse.swt.dnd.Transfer; |
|
38 | 42 |
import org.eclipse.swt.events.ModifyEvent; |
39 | 43 |
import org.eclipse.swt.events.ModifyListener; |
40 | 44 |
import org.eclipse.swt.events.SelectionAdapter; |
... | ... | |
52 | 56 |
import eu.etaxonomy.cdm.api.service.IFeatureNodeService; |
53 | 57 |
import eu.etaxonomy.cdm.api.service.IFeatureTreeService; |
54 | 58 |
import eu.etaxonomy.cdm.api.service.ITermService; |
55 |
import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper; |
|
56 | 59 |
import eu.etaxonomy.cdm.model.description.Character; |
57 | 60 |
import eu.etaxonomy.cdm.model.description.FeatureNode; |
58 | 61 |
import eu.etaxonomy.cdm.model.description.FeatureTree; |
59 | 62 |
import eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap; |
60 | 63 |
import eu.etaxonomy.taxeditor.editor.AppModelId; |
61 | 64 |
import eu.etaxonomy.taxeditor.editor.l10n.Messages; |
65 |
import eu.etaxonomy.taxeditor.featuretree.CharacterTransfer; |
|
66 |
import eu.etaxonomy.taxeditor.featuretree.FeatureNodeTransfer; |
|
62 | 67 |
import eu.etaxonomy.taxeditor.featuretree.e4.FeatureNodeDragListener; |
63 | 68 |
import eu.etaxonomy.taxeditor.featuretree.e4.FeatureTreeDropAdapter; |
64 | 69 |
import eu.etaxonomy.taxeditor.featuretree.e4.FeatureTreeEditorComposite; |
... | ... | |
135 | 140 |
composite.setLayout(gl_composite); |
136 | 141 |
|
137 | 142 |
structuresTreeEditorComposite = addFeatureTreeEditor(composite); |
138 |
initFeatureTreeComposite(structuresTreeEditorComposite, null, null); |
|
143 |
initFeatureTreeComposite(structuresTreeEditorComposite, null, null, null);
|
|
139 | 144 |
structuresTreeEditorComposite.getLabel_title().setText(Messages.CharacterEditor_STRUCTURES); |
140 | 145 |
|
141 | 146 |
Composite composite_1 = new Composite(sashForm, SWT.NONE); |
... | ... | |
146 | 151 |
composite_1.setLayout(gl_composite_1); |
147 | 152 |
|
148 | 153 |
propertiesTreeEditorComposite = addFeatureTreeEditor(composite_1); |
149 |
initFeatureTreeComposite(propertiesTreeEditorComposite, new CharacterDragListener(structuresTreeEditorComposite.getViewer(), propertiesTreeEditorComposite.getViewer()), null); |
|
154 |
initFeatureTreeComposite(propertiesTreeEditorComposite, |
|
155 |
new CharacterDragListener(structuresTreeEditorComposite.getViewer(), |
|
156 |
propertiesTreeEditorComposite.getViewer()), |
|
157 |
null, |
|
158 |
new Transfer[] {CharacterTransfer.getInstance()} |
|
159 |
); |
|
150 | 160 |
propertiesTreeEditorComposite.getLabel_title().setText(Messages.CharacterEditor_PROPERTIES); |
151 | 161 |
|
152 | 162 |
Composite composite_3 = new Composite(sashForm, SWT.NONE); |
... | ... | |
161 | 171 |
formToolkit.adapt(btnAddCharacter, true, true); |
162 | 172 |
|
163 | 173 |
characterTreeEditorComposite = addFeatureTreeEditor(composite_3); |
164 |
initFeatureTreeComposite(characterTreeEditorComposite, new FeatureNodeDragListener(characterTreeEditorComposite.getViewer()), new CharacterDropAdapter(this, characterTreeEditorComposite.getViewer(), sync)); |
|
174 |
initFeatureTreeComposite(characterTreeEditorComposite, new FeatureNodeDragListener(characterTreeEditorComposite.getViewer()), |
|
175 |
new CharacterDropAdapter(this, characterTreeEditorComposite.getViewer(), sync), |
|
176 |
new Transfer[] {FeatureNodeTransfer.getInstance(), CharacterTransfer.getInstance()}); |
|
165 | 177 |
characterTreeEditorComposite.getLabel_title().setText(Messages.CharacterEditor_CHARACTERS); |
166 | 178 |
|
167 | 179 |
//add context menu to character viewer//create context menu |
... | ... | |
177 | 189 |
return featureTreeEditorComposite; |
178 | 190 |
} |
179 | 191 |
|
180 |
private void initFeatureTreeComposite(FeatureTreeEditorComposite featureTreeEditorComposite, |
|
181 |
FeatureNodeDragListener featureNodeDragListener, FeatureTreeDropAdapter featureNodeDropAdapter) { |
|
182 |
featureTreeEditorComposite.init(featureNodeDragListener, featureNodeDropAdapter, this, |
|
183 |
new FeatureTreeChooserListener(featureTreeEditorComposite), this); |
|
192 |
private void initFeatureTreeComposite( |
|
193 |
FeatureTreeEditorComposite featureTreeEditorComposite, |
|
194 |
FeatureNodeDragListener featureNodeDragListener, |
|
195 |
FeatureTreeDropAdapter featureNodeDropAdapter |
|
196 |
, Transfer[] transfers) { |
|
197 |
featureTreeEditorComposite.init( |
|
198 |
featureNodeDragListener, |
|
199 |
featureNodeDropAdapter, |
|
200 |
transfers, |
|
201 |
this, |
|
202 |
new FeatureTreeChooserListener(featureTreeEditorComposite), |
|
203 |
this); |
|
184 | 204 |
} |
185 | 205 |
|
186 | 206 |
@Focus |
... | ... | |
210 | 230 |
Messages.CharacterEditor_CANNOT_PERFORM_MESSAGE); |
211 | 231 |
return; |
212 | 232 |
} |
213 |
List<Character> characters = createCharacters((TreeSelection)structureTreeSelection, (TreeSelection)propertyTreeSelection);
|
|
233 |
Collection<Character> characters = createCharacters((TreeSelection)structureTreeSelection, (TreeSelection)propertyTreeSelection);
|
|
214 | 234 |
for (Character character : characters) { |
215 | 235 |
//add new Character to feature tree |
216 | 236 |
FeatureNode parent = ((FeatureTree) characterTreeEditorComposite.getViewer().getInput()).getRoot(); |
... | ... | |
223 | 243 |
}); |
224 | 244 |
} |
225 | 245 |
|
226 |
public static List<Character> createCharacters(TreeSelection structureTreeSelection, TreeSelection propertyTreeSelection){
|
|
227 |
List<Character> characters = new ArrayList<>();
|
|
246 |
public static Collection<Character> createCharacters(TreeSelection structureTreeSelection, TreeSelection propertyTreeSelection){
|
|
247 |
Set<Character> characters = new HashSet<>();
|
|
228 | 248 |
//get selected structures and properties |
229 | 249 |
Iterator<FeatureNode> structureIterator = structureTreeSelection.iterator(); |
230 | 250 |
|
... | ... | |
235 | 255 |
while(propertiesIterator.hasNext()){ |
236 | 256 |
FeatureNode propertyNode = propertiesIterator.next(); |
237 | 257 |
//create new Character |
238 |
String label = structureNode.getFeature().generateTitle()+" "+propertyNode.getFeature().generateTitle(); //$NON-NLS-1$ |
|
239 |
Character character = Character.NewInstance(structureNode, propertyNode, "", label, label); //$NON-NLS-1$ |
|
240 |
characters.add(HibernateProxyHelper.deproxy(CdmStore.getService(ITermService.class).save(character), Character.class)); |
|
258 |
Character character = Character.NewInstance(structureNode, propertyNode); |
|
259 |
characters.add(character); |
|
241 | 260 |
} |
242 | 261 |
} |
243 | 262 |
return characters; |
Also available in: Unified diff
ref #7923 Use character transfer instead of LocalSelectionTransfer