Ticket #19997: patch_mappaint_empty_submenu.patch

File patch_mappaint_empty_submenu.patch, 2.9 KB (added by jBeata, 6 years ago)

patch for the improvement

  • core/src/org/openstreetmap/josm/gui/mappaint/StyleSettingGroupGui.java

     
    4343        final JMenu submenu = new JMenu();
    4444        submenu.setText(group.label);
    4545        submenu.setIcon(group.icon);
    46         // Add the "toggle all settings" action
    47         if (settings.size() >= 2) {
    48             JMenuItem item = new JMenuItem(new AbstractAction(tr("Toggle all settings")) {
    49                 @Override
    50                 public void actionPerformed(ActionEvent e) {
    51                     List<BooleanStyleSettingCheckBoxMenuItem> items = Arrays.stream(submenu.getMenuComponents())
    52                             .filter(c -> c instanceof BooleanStyleSettingCheckBoxMenuItem)
    53                             .map(c -> (BooleanStyleSettingCheckBoxMenuItem) c)
    54                             .collect(Collectors.toList());
    55                     final boolean select = items.stream().anyMatch(cbi -> !cbi.isSelected());
    56                     items.stream().filter(cbi -> select != cbi.isSelected()).forEach(cbi -> cbi.doClickWithoutRepaint(0));
    57                     MainApplication.worker.submit(new MapPaintStyleLoader(Arrays.asList(group.parentStyle)));
    58                 }
    59             });
    60             item.setUI(new StayOpenCheckBoxMenuItemUI());
    61             submenu.add(item);
    62             submenu.addSeparator();
     46        // Disable submenu if settings is empty
     47        if (settings.isEmpty()) {
     48            submenu.setEnabled(false);
     49        } else {
     50            // Add the "toggle all settings" action
     51            if (settings.size() >= 2) {
     52                JMenuItem item = new JMenuItem(new AbstractAction(tr("Toggle all settings")) {
     53                    @Override
     54                    public void actionPerformed(ActionEvent e) {
     55                        List<BooleanStyleSettingCheckBoxMenuItem> items = Arrays.stream(submenu.getMenuComponents())
     56                                .filter(c -> c instanceof BooleanStyleSettingCheckBoxMenuItem)
     57                                .map(c -> (BooleanStyleSettingCheckBoxMenuItem) c)
     58                                .collect(Collectors.toList());
     59                        final boolean select = items.stream().anyMatch(cbi -> !cbi.isSelected());
     60                        items.stream().filter(cbi -> select != cbi.isSelected()).forEach(cbi -> cbi.doClickWithoutRepaint(0));
     61                        MainApplication.worker.submit(new MapPaintStyleLoader(Arrays.asList(group.parentStyle)));
     62                    }
     63                });
     64                item.setUI(new StayOpenCheckBoxMenuItemUI());
     65                submenu.add(item);
     66                submenu.addSeparator();
     67            }
    6368        }
    6469        // Add individual settings
    6570        for (StyleSetting s : settings) {