Ignore:
Timestamp:
2009-02-17T16:52:39+01:00 (17 years ago)
Author:
stoecker
Message:

close #2192. Patch by xeen

File:
1 edited

Legend:

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

    r1415 r1419  
    1818import javax.swing.JScrollPane;
    1919import javax.swing.ListSelectionModel;
     20import javax.swing.event.ListSelectionEvent;
    2021import javax.swing.event.ListSelectionListener;
    2122import org.openstreetmap.josm.Main;
     
    5354     */
    5455    private JList displaylist = new JList(list);
     56   
     57    private SideButton sbEdit = new SideButton(marktr("Edit"), "edit", "Selection", tr( "Open an editor for the selected relation"), new ActionListener() {
     58        public void actionPerformed(ActionEvent e) {
     59            Relation toEdit = getSelected();
     60            if (toEdit == null)
     61                return;
     62           
     63            new RelationEditor(toEdit).setVisible(true);
     64        }
     65    });
     66   
     67    private SideButton sbDel = new SideButton(marktr("Delete"), "delete", "Selection", tr("Delete the selected relation"), new ActionListener() {
     68        public void actionPerformed(ActionEvent e) {
     69            Relation toDelete = getSelected();
     70            if (toDelete == null)
     71                return;
     72           
     73            Main.main.undoRedo.add(
     74                    new DeleteCommand(Collections.singleton(toDelete)));
     75        }
     76    });
    5577
    5678    public RelationListDialog() {
     
    7799        }), GBC.std());
    78100
    79         buttonPanel.add(new SideButton(marktr("Edit"), "edit", "Selection", tr( "Open an editor for the selected relation"), new ActionListener() {
    80             public void actionPerformed(ActionEvent e) {
    81                 Relation toEdit = (Relation) displaylist.getSelectedValue();
    82                 if (toEdit != null)
    83                     new RelationEditor(toEdit).setVisible(true);
    84             }
    85         }), GBC.std());
     101        buttonPanel.add(sbEdit, GBC.std());
    86102
    87         buttonPanel.add(new SideButton(marktr("Delete"), "delete", "Selection", tr("Delete the selected relation"), new ActionListener() {
    88             public void actionPerformed(ActionEvent e) {
    89                 Relation toDelete = (Relation) displaylist.getSelectedValue();
    90                 if (toDelete != null) {
    91                     Main.main.undoRedo.add(
    92                         new DeleteCommand(Collections.singleton(toDelete)));
    93                 }
    94             }
    95         }), GBC.eol());
     103        buttonPanel.add(sbDel, GBC.eol());
    96104        Layer.listeners.add(this);
    97105        add(buttonPanel, BorderLayout.SOUTH);
     106       
     107        displaylist.addListSelectionListener(new ListSelectionListener() {
     108            public void valueChanged(ListSelectionEvent e) {
     109               sbEdit.setEnabled(getSelected() != null);
     110               sbDel.setEnabled(getSelected() != null);
     111            }
     112        });
    98113    }
    99114
     
    117132            setTitle(tr("Relations"), false);
    118133        }
     134       
     135        sbEdit.setEnabled(list.size() > 0);
     136        sbDel.setEnabled(list.size() > 0);
    119137    }
    120138
     
    169187        displaylist.removeListSelectionListener(listener);
    170188    }
     189   
     190    /**
     191     * @return The selected relation in the list
     192     */
     193    private Relation getSelected() {
     194        if(list.size() == 1)
     195            displaylist.setSelectedIndex(0);
     196        return (Relation) displaylist.getSelectedValue();
     197    }
    171198}
Note: See TracChangeset for help on using the changeset viewer.