Project

General

Profile

« Previous | Next » 

Revision a4063890

Added by Patrick Plitzner over 5 years ago

ref #7923 Use character transfer instead of LocalSelectionTransfer

View differences:

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