Changeset 16216 in josm


Ignore:
Timestamp:
2020-03-29T08:09:25+02:00 (4 years ago)
Author:
GerdP
Message:

see #18919: Allow sorting of table content in changeset manager to facilitate finding related rows

  • partly revert r16121: don't use setAutoCreateRowSorter() in ChangesetCacheManager. This requires a lot more changes to make it work
  • fix handling of selected rows after sorting of rows in ChangesetContentPanel
Location:
trunk/src/org/openstreetmap/josm/gui/dialogs/changeset
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetCacheManager.java

    r16121 r16216  
    272272                model.getSelectionModel()
    273273        );
    274         tblChangesets.setAutoCreateRowSorter(true);
    275274        tblChangesets.addMouseListener(new MouseEventHandler());
    276275        InputMapUtils.addEnterAction(tblChangesets, new ShowDetailAction(model));
  • trunk/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetContentPanel.java

    r16123 r16216  
    7070 */
    7171public class ChangesetContentPanel extends JPanel implements PropertyChangeListener, ChangesetAware {
    72 
     72    private JTable tblContent;
    7373    private ChangesetContentTableModel model;
    7474    private transient Changeset currentChangeset;
     
    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(),
     
    212212                title, JOptionPane.WARNING_MESSAGE, helpTopic
    213213        );
     214    }
     215
     216    private Set<HistoryOsmPrimitive> getSelectedPrimitives() {
     217      return model.getSelectedPrimitives(tblContent);
    214218    }
    215219
     
    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);
     
    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));
     
    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            }
     
    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;
     
    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;
  • trunk/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetContentTableModel.java

    r14214 r16216  
    99
    1010import javax.swing.DefaultListSelectionModel;
     11import javax.swing.JTable;
    1112import javax.swing.table.AbstractTableModel;
    1213
     
    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        }
    7172        return ret;
Note: See TracChangeset for help on using the changeset viewer.