Changeset 9520 in josm for trunk/src


Ignore:
Timestamp:
2016-01-17T23:43:52+01:00 (4 years ago)
Author:
simon04
Message:

Remove code duplication

File:
1 edited

Legend:

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

    r9493 r9520  
    280280    }
    281281
    282     class SelectInCurrentLayerAction extends AbstractAction implements ListSelectionListener, EditLayerChangeListener {
    283 
    284         SelectInCurrentLayerAction() {
    285             putValue(NAME, tr("Select in layer"));
    286             putValue(SMALL_ICON, ImageProvider.get("dialogs", "select"));
    287             putValue(SHORT_DESCRIPTION, tr("Select the corresponding primitives in the current data layer"));
    288             updateEnabledState();
    289         }
    290 
    291         @Override
    292         public void actionPerformed(ActionEvent arg0) {
    293             if (!isEnabled())
    294                 return;
    295             if (Main.main == null || !Main.main.hasEditLayer()) return;
     282    abstract class SelectionBasedAction extends AbstractAction implements ListSelectionListener, EditLayerChangeListener {
     283
     284        protected Set<OsmPrimitive> getTarget() {
     285            if (!isEnabled() || Main.main == null || !Main.main.hasEditLayer()) {
     286                return null;
     287            }
    296288            OsmDataLayer layer = Main.main.getEditLayer();
    297             Set<HistoryOsmPrimitive> selected = model.getSelectedPrimitives();
    298289            Set<OsmPrimitive> target = new HashSet<>();
    299290            for (HistoryOsmPrimitive p : model.getSelectedPrimitives()) {
     
    303294                }
    304295            }
    305             if (target.isEmpty()) {
    306                 alertNoPrimitivesTo(selected, tr("Nothing to select"),
    307                         HelpUtil.ht("/Dialog/ChangesetCacheManager#NothingToSelectInLayer"));
    308                 return;
    309             }
    310             layer.data.setSelected(target);
     296            return target;
    311297        }
    312298
     
    328314            updateEnabledState();
    329315        }
    330     }
    331 
    332     class ZoomInCurrentLayerAction extends AbstractAction implements ListSelectionListener, EditLayerChangeListener {
     316
     317    }
     318
     319    class SelectInCurrentLayerAction extends SelectionBasedAction {
     320
     321        SelectInCurrentLayerAction() {
     322            putValue(NAME, tr("Select in layer"));
     323            putValue(SMALL_ICON, ImageProvider.get("dialogs", "select"));
     324            putValue(SHORT_DESCRIPTION, tr("Select the corresponding primitives in the current data layer"));
     325            updateEnabledState();
     326        }
     327
     328        @Override
     329        public void actionPerformed(ActionEvent arg0) {
     330            final Set<OsmPrimitive> target = getTarget();
     331            if (target == null) {
     332                return;
     333            } else if (target.isEmpty()) {
     334                alertNoPrimitivesTo(model.getSelectedPrimitives(), tr("Nothing to select"),
     335                        HelpUtil.ht("/Dialog/ChangesetCacheManager#NothingToSelectInLayer"));
     336                return;
     337            }
     338            Main.main.getEditLayer().data.setSelected(target);
     339        }
     340    }
     341
     342    class ZoomInCurrentLayerAction extends SelectionBasedAction {
    333343
    334344        ZoomInCurrentLayerAction() {
     
    341351        @Override
    342352        public void actionPerformed(ActionEvent arg0) {
    343             if (!isEnabled())
     353            final Set<OsmPrimitive> target = getTarget();
     354            if (target == null) {
    344355                return;
    345             if (Main.main == null || !Main.main.hasEditLayer()) return;
    346             OsmDataLayer layer = Main.main.getEditLayer();
    347             Set<HistoryOsmPrimitive> selected = model.getSelectedPrimitives();
    348             Set<OsmPrimitive> target = new HashSet<>();
    349             for (HistoryOsmPrimitive p : model.getSelectedPrimitives()) {
    350                 OsmPrimitive op = layer.data.getPrimitiveById(p.getPrimitiveId());
    351                 if (op != null) {
    352                     target.add(op);
    353                 }
    354             }
    355             if (target.isEmpty()) {
    356                 alertNoPrimitivesTo(selected, tr("Nothing to zoom to"),
     356            } else if (target.isEmpty()) {
     357                alertNoPrimitivesTo(model.getSelectedPrimitives(), tr("Nothing to zoom to"),
    357358                        HelpUtil.ht("/Dialog/ChangesetCacheManager#NothingToZoomTo"));
    358359                return;
    359360            }
    360             layer.data.setSelected(target);
     361            Main.main.getEditLayer().data.setSelected(target);
    361362            AutoScaleAction.zoomToSelection();
    362         }
    363 
    364         public final void updateEnabledState() {
    365             if (Main.main == null || !Main.main.hasEditLayer()) {
    366                 setEnabled(false);
    367                 return;
    368             }
    369             setEnabled(model.hasSelectedPrimitives());
    370         }
    371 
    372         @Override
    373         public void valueChanged(ListSelectionEvent e) {
    374             updateEnabledState();
    375         }
    376 
    377         @Override
    378         public void editLayerChanged(OsmDataLayer oldLayer, OsmDataLayer newLayer) {
    379             updateEnabledState();
    380363        }
    381364    }
Note: See TracChangeset for help on using the changeset viewer.