source: josm/trunk/src/org/openstreetmap/josm/gui/datatransfer/RelationMemberTransferable.java@ 9368

Last change on this file since 9368 was 9368, checked in by simon04, 8 years ago

see #12300 - Drag and Drop support for relation member list reordering

File size: 2.3 KB
Line 
1// License: GPL. For details, see LICENSE file.
2package org.openstreetmap.josm.gui.datatransfer;
3
4import java.awt.datatransfer.DataFlavor;
5import java.awt.datatransfer.Transferable;
6import java.awt.datatransfer.UnsupportedFlavorException;
7import java.util.ArrayList;
8import java.util.Collection;
9
10import org.openstreetmap.josm.data.osm.RelationMember;
11import org.openstreetmap.josm.data.osm.RelationMemberData;
12import org.openstreetmap.josm.gui.DefaultNameFormatter;
13
14public class RelationMemberTransferable implements Transferable {
15
16 public static final DataFlavor RELATION_MEMBER_DATA = new DataFlavor(RelationMemberData.class, RelationMemberData.class.getName());
17 private final Collection<RelationMember> members;
18
19 public RelationMemberTransferable(Collection<RelationMember> members) {
20 this.members = members;
21 }
22
23 @Override
24 public DataFlavor[] getTransferDataFlavors() {
25 return new DataFlavor[]{RELATION_MEMBER_DATA, DataFlavor.stringFlavor};
26 }
27
28 @Override
29 public boolean isDataFlavorSupported(DataFlavor flavor) {
30 return flavor == RELATION_MEMBER_DATA;
31 }
32
33 @Override
34 public Object getTransferData(DataFlavor flavor) throws UnsupportedFlavorException {
35 if (DataFlavor.stringFlavor.equals(flavor)) {
36 return getStringData();
37 } else if (RELATION_MEMBER_DATA.equals(flavor)) {
38 return getRelationMemberData();
39 }
40 throw new UnsupportedFlavorException(flavor);
41 }
42
43 protected String getStringData() {
44 final StringBuilder sb = new StringBuilder();
45 for (RelationMember member : members) {
46 sb.append(member.getType());
47 sb.append(" ").append(member.getUniqueId());
48 sb.append(" ").append(member.getRole());
49 sb.append(" # ").append(member.getMember().getDisplayName(DefaultNameFormatter.getInstance()));
50 sb.append("\n");
51 }
52 return sb.toString().replace("\u200E", "").replace("\u200F", "");
53 }
54
55 protected Collection<RelationMemberData> getRelationMemberData() {
56 final Collection<RelationMemberData> r = new ArrayList<>(members.size());
57 for (RelationMember member : members) {
58 r.add(new RelationMemberData(member.getRole(), member.getType(), member.getUniqueId()));
59 }
60 return r;
61 }
62}
Note: See TracBrowser for help on using the repository browser.