Ticket #6410: proprels.patch

File proprels.patch, 3.7 KB (added by bilbo, 13 years ago)

the patch

  • src/org/openstreetmap/josm/gui/dialogs/properties/PropertiesDialog.java

     
    2626import java.util.Collections;
    2727import java.util.Comparator;
    2828import java.util.HashMap;
     29import java.util.HashSet;
    2930import java.util.Iterator;
    3031import java.util.List;
    3132import java.util.Map;
    3233import java.util.Map.Entry;
    3334import java.util.TreeMap;
    3435import java.util.Vector;
     36import java.util.Set;
    3537
    3638import javax.swing.AbstractAction;
    3739import javax.swing.Box;
     
    8082import org.openstreetmap.josm.gui.SideButton;
    8183import org.openstreetmap.josm.gui.dialogs.ToggleDialog;
    8284import org.openstreetmap.josm.gui.dialogs.properties.PresetListPanel.PresetHandler;
     85import org.openstreetmap.josm.gui.dialogs.relation.DownloadRelationMemberTask;
    8386import org.openstreetmap.josm.gui.dialogs.relation.RelationEditor;
    8487import org.openstreetmap.josm.gui.layer.OsmDataLayer;
    8588import org.openstreetmap.josm.gui.tagging.TaggingPreset;
     
    605608                    Relation relation = (Relation)membershipData.getValueAt(row, 0);
    606609                    menu.add(new SelectRelationAction(relation, true));
    607610                    menu.add(new SelectRelationAction(relation, false));
     611                    menu.add(new SelectRelationMembersAction(relation));
     612                    menu.add(new DownloadIncompleteMembersAction(relation));
    608613                    menu.addSeparator();
    609614                    menu.add(helpAction);
    610615                    menu.show(membershipTable, p.x, p.y-3);
     
    11821188            }
    11831189        }
    11841190    }
     1191
     1192
     1193    /**
     1194     * Sets the current selection to the members of selected relation
     1195     *
     1196     */
     1197    class SelectRelationMembersAction extends AbstractAction {
     1198        Relation relation;
     1199        public SelectRelationMembersAction(Relation r) {
     1200            relation = r;
     1201            putValue(SHORT_DESCRIPTION,tr("Select the members of selected relation"));
     1202            putValue(SMALL_ICON, ImageProvider.get("selectall"));
     1203            putValue(NAME, tr("Select members"));
     1204        }
     1205
     1206        public void actionPerformed(ActionEvent e) {
     1207            HashSet<OsmPrimitive> members = new HashSet<OsmPrimitive>();
     1208            members.addAll(relation.getMemberPrimitives());
     1209            Main.map.mapView.getEditLayer().data.setSelected(members);
     1210        }
     1211
     1212    }
     1213
     1214    /**
     1215     * Action for downloading incomplete members of selected relation
     1216     *
     1217     */
     1218    class DownloadIncompleteMembersAction extends AbstractAction {
     1219        Relation relation;
     1220        public DownloadIncompleteMembersAction(Relation r) {
     1221            relation = r;
     1222            putValue(SHORT_DESCRIPTION, tr("Download incomplete members of selected relations"));
     1223            putValue(SMALL_ICON, ImageProvider.get("dialogs/relation", "downloadincompleteselected"));
     1224            putValue(NAME, tr("Download incomplete members"));
     1225        }
     1226
     1227        public Set<OsmPrimitive> buildSetOfIncompleteMembers(Relation r) {
     1228            Set<OsmPrimitive> ret = new HashSet<OsmPrimitive>();
     1229            ret.addAll(r.getIncompleteMembers());
     1230            return ret;
     1231        }
     1232
     1233        public void actionPerformed(ActionEvent e) {
     1234            if (!relation.hasIncompleteMembers()) return;
     1235            ArrayList<Relation> rels = new ArrayList<Relation>();
     1236            rels.add(relation);
     1237            Main.worker.submit(new DownloadRelationMemberTask(
     1238                    rels,
     1239                    buildSetOfIncompleteMembers(relation),
     1240                    Main.map.mapView.getEditLayer()
     1241            ));
     1242        }
     1243    }
     1244
     1245
    11851246}