Ticket #18919: 18919-partly-fix.patch

File 18919-partly-fix.patch, 4.9 KB (added by GerdP, 6 years ago)
  • src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetContentPanel.java

     
    6969 * @since 2689
    7070 */
    7171public class ChangesetContentPanel extends JPanel implements PropertyChangeListener, ChangesetAware {
    72 
     72    private JTable tblContent;
    7373    private ChangesetContentTableModel model;
    7474    private transient Changeset currentChangeset;
    7575
     
    121121
    122122    protected JPanel buildContentPanel() {
    123123        JPanel pnl = new JPanel(new BorderLayout());
    124         JTable tblContent = new JTable(
     124        tblContent = new JTable(
    125125                model,
    126126                new ChangesetContentTableColumnModel(),
    127127                model.getSelectionModel()
     
    213213        );
    214214    }
    215215
     216    private Set<HistoryOsmPrimitive> getSelectedPrimitives() {
     217      return model.getSelectedPrimitives(tblContent);
     218    }
     219
    216220    class ChangesetContentTablePopupMenu extends JPopupMenu {
    217221        ChangesetContentTablePopupMenu() {
    218222            add(actDownloadContentAction);
     
    287291
    288292        @Override
    289293        public void actionPerformed(ActionEvent e) {
    290             Set<HistoryOsmPrimitive> selected = model.getSelectedPrimitives();
     294            Set<HistoryOsmPrimitive> selected = getSelectedPrimitives();
    291295            if (selected.isEmpty()) return;
    292296            showHistory(selected);
    293297        }
     
    309313
    310314        @Override
    311315        public void actionPerformed(ActionEvent e) {
    312             final List<PrimitiveId> primitiveIds = model.getSelectedPrimitives().stream().map(HistoryOsmPrimitive::getPrimitiveId)
     316            final List<PrimitiveId> primitiveIds = getSelectedPrimitives().stream().map(HistoryOsmPrimitive::getPrimitiveId)
    313317                    .collect(Collectors.toList());
    314318            MainApplication.worker.submit(new DownloadPrimitivesWithReferrersTask(false, primitiveIds, true, true, null, null));
    315319        }
     
    329333        protected Set<OsmPrimitive> getTarget() {
    330334            DataSet ds = MainApplication.getLayerManager().getActiveDataSet();
    331335            if (isEnabled() && ds != null) {
    332                 return model.getSelectedPrimitives().stream()
     336                return getSelectedPrimitives().stream()
    333337                        .map(p -> ds.getPrimitiveById(p.getPrimitiveId())).filter(Objects::nonNull).collect(Collectors.toSet());
    334338            }
    335339            return Collections.emptySet();
     
    363367        public void actionPerformed(ActionEvent e) {
    364368            final Set<OsmPrimitive> target = getTarget();
    365369            if (target.isEmpty()) {
    366                 alertNoPrimitivesTo(model.getSelectedPrimitives(), tr("Nothing to select"),
     370                alertNoPrimitivesTo(getSelectedPrimitives(), tr("Nothing to select"),
    367371                        HelpUtil.ht("/Dialog/ChangesetCacheManager#NothingToSelectInLayer"));
    368372                return;
    369373            }
     
    384388        public void actionPerformed(ActionEvent e) {
    385389            final Set<OsmPrimitive> target = getTarget();
    386390            if (target.isEmpty()) {
    387                 alertNoPrimitivesTo(model.getSelectedPrimitives(), tr("Nothing to zoom to"),
     391                alertNoPrimitivesTo(getSelectedPrimitives(), tr("Nothing to zoom to"),
    388392                        HelpUtil.ht("/Dialog/ChangesetCacheManager#NothingToZoomTo"));
    389393                return;
    390394            }
  • src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetContentTableModel.java

     
    88import java.util.Set;
    99
    1010import javax.swing.DefaultListSelectionModel;
     11import javax.swing.JTable;
    1112import javax.swing.table.AbstractTableModel;
    1213
    1314import org.openstreetmap.josm.data.osm.ChangesetDataSet;
     
    5960
    6061    /**
    6162     * Returns the selected history primitives.
     63     * @param table the JTable used with this model
    6264     * @return the selected history primitives
    6365     */
    64     public Set<HistoryOsmPrimitive> getSelectedPrimitives() {
     66    public Set<HistoryOsmPrimitive> getSelectedPrimitives(JTable table) {
    6567        Set<HistoryOsmPrimitive> ret = new HashSet<>();
    66         for (int i = 0; i < data.size(); i++) {
    67             if (selectionModel.isSelectedIndex(i)) {
    68                 ret.add(data.get(i).getPrimitive());
    69             }
     68        int[] selection = table.getSelectedRows();
     69        for (int i = 0; i < selection.length; i++) {
     70            ret.add(data.get(table.convertRowIndexToModel(selection[i])).getPrimitive());
    7071        }
     72
    7173        return ret;
    7274    }
    7375