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

Last change on this file since 9563 was 9563, checked in by Don-vip, 8 years ago

see #12300 - add javadoc, unit tests

File size: 2.6 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
14/**
15 * Transferable objects for {@link RelationMemberData}.
16 * @since 9368
17 */
18public class RelationMemberTransferable implements Transferable {
19
20 /**
21 * Data flavor for {@link RelationMemberData}.
22 */
23 public static final DataFlavor RELATION_MEMBER_DATA = new DataFlavor(RelationMemberData.class, RelationMemberData.class.getName());
24 private final Collection<RelationMember> members;
25
26 /**
27 * Constructs a new {@code RelationMemberTransferable}.
28 * @param members list of relation members
29 */
30 public RelationMemberTransferable(Collection<RelationMember> members) {
31 this.members = members;
32 }
33
34 @Override
35 public DataFlavor[] getTransferDataFlavors() {
36 return new DataFlavor[]{RELATION_MEMBER_DATA, DataFlavor.stringFlavor};
37 }
38
39 @Override
40 public boolean isDataFlavorSupported(DataFlavor flavor) {
41 return flavor == RELATION_MEMBER_DATA;
42 }
43
44 @Override
45 public Object getTransferData(DataFlavor flavor) throws UnsupportedFlavorException {
46 if (DataFlavor.stringFlavor.equals(flavor)) {
47 return getStringData();
48 } else if (RELATION_MEMBER_DATA.equals(flavor)) {
49 return getRelationMemberData();
50 }
51 throw new UnsupportedFlavorException(flavor);
52 }
53
54 protected String getStringData() {
55 final StringBuilder sb = new StringBuilder();
56 for (RelationMember member : members) {
57 sb.append(member.getType());
58 sb.append(" ").append(member.getUniqueId());
59 sb.append(" ").append(member.getRole());
60 sb.append(" # ").append(member.getMember().getDisplayName(DefaultNameFormatter.getInstance()));
61 sb.append("\n");
62 }
63 return sb.toString().replace("\u200E", "").replace("\u200F", "");
64 }
65
66 protected Collection<RelationMemberData> getRelationMemberData() {
67 final Collection<RelationMemberData> r = new ArrayList<>(members.size());
68 for (RelationMember member : members) {
69 r.add(new RelationMemberData(member.getRole(), member.getType(), member.getUniqueId()));
70 }
71 return r;
72 }
73}
Note: See TracBrowser for help on using the repository browser.