Ignore:
Timestamp:
2016-03-29T02:19:23+02:00 (10 years ago)
Author:
Don-vip
Message:

refactor duplicated code

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/actions/AbstractMergeAction.java

    r8443 r10074  
    55
    66import java.awt.Component;
     7import java.awt.GraphicsEnvironment;
    78import java.awt.GridBagLayout;
    89import java.util.List;
     
    5758    }
    5859
    59     protected Layer askTargetLayer(List<Layer> targetLayers) {
    60         JosmComboBox<Layer> layerList = new JosmComboBox<>(targetLayers.toArray(new Layer[0]));
     60    protected static Layer askTargetLayer(List<Layer> targetLayers) {
     61        return askTargetLayer(targetLayers.toArray(new Layer[0]),
     62                tr("Please select the target layer."),
     63                tr("Select target layer"),
     64                tr("Merge"), "dialogs/mergedown");
     65    }
     66
     67    /**
     68     * Asks a target layer.
     69     * @param <T> type of layer
     70     * @param targetLayers array of proposed target layers
     71     * @param label label displayed in dialog
     72     * @param title title of dialog
     73     * @param buttonText text of button used to select target layer
     74     * @param buttonIcon icon name of button used to select target layer
     75     * @return choosen target layer
     76     */
     77    @SuppressWarnings("unchecked")
     78    public static <T extends Layer> T askTargetLayer(T[] targetLayers, String label, String title, String buttonText, String buttonIcon) {
     79        JosmComboBox<T> layerList = new JosmComboBox<>(targetLayers);
    6180        layerList.setRenderer(new LayerListCellRenderer());
    6281        layerList.setSelectedIndex(0);
    6382
    6483        JPanel pnl = new JPanel(new GridBagLayout());
    65         pnl.add(new JLabel(tr("Please select the target layer.")), GBC.eol());
     84        pnl.add(new JLabel(label), GBC.eol());
    6685        pnl.add(layerList, GBC.eol());
    67 
    68         ExtendedDialog ed = new ExtendedDialog(Main.parent,
    69                 tr("Select target layer"),
    70                 new String[] {tr("Merge"), tr("Cancel")});
    71         ed.setButtonIcons(new String[] {"dialogs/mergedown", "cancel"});
     86        if (GraphicsEnvironment.isHeadless()) {
     87            // return first layer in headless mode, for unit tests
     88            return targetLayers[0];
     89        }
     90        ExtendedDialog ed = new ExtendedDialog(Main.parent, title, new String[] {buttonText, tr("Cancel")});
     91        ed.setButtonIcons(new String[] {buttonIcon, "cancel"});
    7292        ed.setContent(pnl);
    7393        ed.showDialog();
    74         if (ed.getValue() != 1)
     94        if (ed.getValue() != 1) {
    7595            return null;
    76 
    77         return (Layer) layerList.getSelectedItem();
     96        }
     97        return (T) layerList.getSelectedItem();
    7898    }
    7999
Note: See TracChangeset for help on using the changeset viewer.