Changeset 1945 in josm for trunk/src/org/openstreetmap/josm
- Timestamp:
- 2009-08-10T07:15:10+02:00 (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/org/openstreetmap/josm/gui/dialogs/PropertiesDialog.java
r1938 r1945 33 33 import java.util.Map.Entry; 34 34 35 import javax.swing.AbstractAction; 35 36 import javax.swing.Box; 36 37 import javax.swing.DefaultListCellRenderer; 37 38 import javax.swing.JComboBox; 39 import javax.swing.JComponent; 38 40 import javax.swing.JDialog; 39 41 import javax.swing.JLabel; … … 43 45 import javax.swing.JScrollPane; 44 46 import javax.swing.JTable; 47 import javax.swing.KeyStroke; 45 48 import javax.swing.ListSelectionModel; 49 import javax.swing.event.ListSelectionEvent; 50 import javax.swing.event.ListSelectionListener; 46 51 import javax.swing.table.DefaultTableCellRenderer; 47 52 import javax.swing.table.DefaultTableModel; … … 72 77 import org.openstreetmap.josm.tools.AutoCompleteComboBox; 73 78 import org.openstreetmap.josm.tools.GBC; 79 import org.openstreetmap.josm.tools.ImageProvider; 74 80 import org.openstreetmap.josm.tools.Shortcut; 75 81 … … 413 419 414 420 /** 415 * Delete the keys from the given row.416 * @param row The row, which key gets deleted from the dataset.417 */418 private void delete(int row) {419 String key = propertyData.getValueAt(row, 0).toString();420 Collection<OsmPrimitive> sel = Main.main.getCurrentDataSet().getSelected();421 Main.main.undoRedo.add(new ChangePropertyCommand(sel, key, null));422 DataSet.fireSelectionChanged(sel);423 selectionChanged(sel); // update table424 425 int rowCount = propertyTable.getRowCount();426 propertyTable.changeSelection((row < rowCount ? row : (rowCount-1)), 0, false, false);427 }428 429 /**430 421 * The property data. 431 422 */ … … 579 570 if (e.getActionCommand().equals("Edit")) { 580 571 membershipEdit(row); 581 } else if (e.getActionCommand().equals("Delete")) {582 Relation cur = (Relation)membershipData.getValueAt(row, 0);583 int result = new ExtendedDialog(Main.parent,584 tr("Change relation"),585 tr("Really delete selection from relation {0}?", NAME_FORMATTER.getName(cur)),586 new String[] {tr("Delete from relation"), tr("Cancel")},587 new String[] {"dialogs/delete.png", "cancel.png"}).getValue();588 589 if(result == 1)590 {591 Relation rel = new Relation(cur);592 Collection<OsmPrimitive> sel = Main.main.getCurrentDataSet().getSelected();593 for (RelationMember rm : cur.getMembers()) {594 for (OsmPrimitive osm : sel) {595 if (rm.getMember() == osm)596 {597 rel.members.remove(rm);598 break;599 }600 }601 }602 Main.main.undoRedo.add(new ChangeCommand(cur, rel));603 DataSet.fireSelectionChanged(sel);604 selectionChanged(sel); // update whole table605 }606 607 572 } 608 573 } … … 614 579 if (e.getActionCommand().equals("Edit")) { 615 580 propertyEdit(sel >= 0 ? sel : 0); 616 } else if (e.getActionCommand().equals("Delete")) {617 delete(sel >= 0 ? sel : 0);618 581 } 619 582 } … … 633 596 buttonPanel.add(this.btnEdit); 634 597 635 s = Shortcut.registerShortcut("properties:delete", tr("Delete Properties"), KeyEvent.VK_Q, 636 Shortcut.GROUP_MNEMONIC); 637 this.btnDel = new SideButton(marktr("Delete"),"delete","Properties", 638 tr("Delete the selected key in all objects"), s, buttonAction); 598 // -- delete action 599 DeleteAction deleteAction = new DeleteAction(); 600 this.btnDel = new SideButton(deleteAction); 601 membershipTable.getSelectionModel().addListSelectionListener(deleteAction); 602 propertyTable.getSelectionModel().addListSelectionListener(deleteAction); 603 getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put( 604 KeyStroke.getKeyStroke(KeyEvent.VK_DELETE, 0),"delete" 605 ); 606 getActionMap().put("delete", deleteAction); 639 607 buttonPanel.add(this.btnDel); 640 608 add(buttonPanel, BorderLayout.SOUTH); … … 860 828 861 829 830 class DeleteAction extends AbstractAction implements ListSelectionListener { 831 832 protected void deleteProperty(int row){ 833 String key = propertyData.getValueAt(row, 0).toString(); 834 Collection<OsmPrimitive> sel = Main.main.getCurrentDataSet().getSelected(); 835 Main.main.undoRedo.add(new ChangePropertyCommand(sel, key, null)); 836 DataSet.fireSelectionChanged(sel); 837 selectionChanged(sel); // update table 838 839 int rowCount = propertyTable.getRowCount(); 840 propertyTable.changeSelection((row < rowCount ? row : (rowCount-1)), 0, false, false); 841 } 842 843 protected void deleteFromRelation(int row) { 844 Relation cur = (Relation)membershipData.getValueAt(row, 0); 845 int result = new ExtendedDialog(Main.parent, 846 tr("Change relation"), 847 tr("Really delete selection from relation {0}?", NAME_FORMATTER.getName(cur)), 848 new String[] {tr("Delete from relation"), tr("Cancel")}, 849 new String[] {"dialogs/delete.png", "cancel.png"}).getValue(); 850 851 if(result != 1) 852 return; 853 854 Relation rel = new Relation(cur); 855 Collection<OsmPrimitive> sel = Main.main.getCurrentDataSet().getSelected(); 856 for (RelationMember rm : cur.getMembers()) { 857 for (OsmPrimitive osm : sel) { 858 if (rm.getMember() == osm) 859 { 860 rel.members.remove(rm); 861 break; 862 } 863 } 864 } 865 Main.main.undoRedo.add(new ChangeCommand(cur, rel)); 866 DataSet.fireSelectionChanged(sel); 867 selectionChanged(sel); // update whole table 868 } 869 870 public DeleteAction() { 871 putValue(NAME, tr("Delete")); 872 putValue(SHORT_DESCRIPTION, tr("Delete the selected key in all objects")); 873 putValue(SMALL_ICON, ImageProvider.get("dialogs", "delete")); 874 Shortcut s = Shortcut.registerShortcut("properties:delete", tr("Delete Properties"), KeyEvent.VK_Q, 875 Shortcut.GROUP_MNEMONIC); 876 putValue(MNEMONIC_KEY, (int) KeyEvent.getKeyText(s.getAssignedKey()).charAt(0)); 877 updateEnabledState(); 878 } 879 880 public void actionPerformed(ActionEvent e) { 881 if (propertyTable.getSelectedRowCount() >0 ) { 882 int row = propertyTable.getSelectedRow(); 883 deleteProperty(row); 884 } else if (membershipTable.getSelectedRowCount() > 0) { 885 int row = membershipTable.getSelectedRow(); 886 deleteFromRelation(row); 887 } 888 } 889 890 protected void updateEnabledState() { 891 setEnabled( 892 PropertiesDialog.this.propertyTable.getSelectedRowCount() >0 893 || PropertiesDialog.this.membershipTable.getSelectedRowCount() > 0 894 ); 895 } 896 897 public void valueChanged(ListSelectionEvent e) { 898 updateEnabledState(); 899 } 900 } 901 862 902 }
Note:
See TracChangeset
for help on using the changeset viewer.