Changeset 19579 in josm


Ignore:
Timestamp:
2026-06-04T15:26:41+02:00 (26 hours ago)
Author:
GerdP
Message:

fix #24523: Add action to close all but the active tab in image viever

  • apply patch which implement shortcut Alt+Y to close all but the active tab
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/gui/layer/geoimage/ImageViewerDialog.java

    r19392 r19579  
    101101    private final LayerVisibilityAction visibilityAction = new LayerVisibilityAction(Collections::emptyList,
    102102            () -> Collections.singleton(imageryFilterSettings));
    103 
     103    private final CloseOtherTabsAction closeAllTabsAction = new CloseOtherTabsAction();
    104104    private final ImageDisplay imgDisplay = new ImageDisplay(imageryFilterSettings);
    105105    private Future<?> imgLoadingFuture;
     
    418418        imageZoomAction.destroy();
    419419        toggleAction.destroy();
     420        closeAllTabsAction.destroy();
    420421        cancelLoadingImage();
    421422        super.destroy();
     
    608609        }
    609610    }
    610    
     611
    611612    private class ImageRemoveAction extends JosmAction {
    612613        ImageRemoveAction() {
     
    757758    }
    758759
     760    private class CloseOtherTabsAction extends JosmAction {
     761        CloseOtherTabsAction() {
     762            super(tr("close-other-tabs"), new ImageProvider("misc", "close"), tr("Close other tabs"),
     763                    Shortcut.registerShortcut("closeother", "close other tabs", KeyEvent.VK_Y, Shortcut.ALT), false, null,
     764                    false);
     765        }
     766
     767        @Override
     768        public void actionPerformed(ActionEvent e) {
     769            for (int i = layers.getTabCount() - 1; i >= 0; i--) {
     770                Component component = layers.getComponentAt(i);
     771                if (component instanceof MoveImgDisplayPanel) {
     772                    MoveImgDisplayPanel<?> moveImgDisplayPanel = (MoveImgDisplayPanel<?>) component;
     773                    if (moveImgDisplayPanel.layer.containsImage(currentEntry))
     774                        continue;
     775                    layers.removeTabAt(i);
     776                    layers.remove(moveImgDisplayPanel);
     777                }
     778            }
     779        }
     780    }
     781
    759782    /**
    760783     * A tab title renderer for {@link HideableTabbedPane} that allows us to close tabs.
     
    10331056                osd.append(tr("\nEXIF DTO time: {0}", dtf.format(entry.getExifInstant())));
    10341057            } else {
    1035                 osd.append(tr("\nEXIF time: {0}", dtf.format(entry.getExifInstant())));       
     1058                osd.append(tr("\nEXIF time: {0}", dtf.format(entry.getExifInstant())));
    10361059            }
    10371060        }
     
    10431066            if (entry.hasGpsTime()) {
    10441067                osd.append(tr("\nCorr GPS time: {0}", dtf.format(entry.getGpsInstant())));
    1045             }           
     1068            }
    10461069            if (entry.getExifImgDir() != null) {
    10471070                osd.append(tr("\nDirection {0}\u00b0", Math.round(entry.getExifImgDir())));
     
    12121235        }
    12131236    }
    1214    
     1237
    12151238    private void registerOnLayer(Layer layer) {
    12161239        if (layer instanceof IGeoImageLayer) {
Note: See TracChangeset for help on using the changeset viewer.