Ignore:
Timestamp:
2008-10-05T17:06:27+02:00 (16 years ago)
Author:
stoecker
Message:

close bug #1622. Keyboard shortcuts and specific OS handling

File:
1 edited

Legend:

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

    r810 r1023  
    6464import org.openstreetmap.josm.tools.AutoCompleteComboBox;
    6565import org.openstreetmap.josm.tools.GBC;
     66import org.openstreetmap.josm.tools.ShortCut;
    6667
    6768/**
     
    8889         */
    8990        private NameVisitor nameVisitor = new NameVisitor();
    90        
     91
    9192        /**
    9293         * Watches for double clicks and from editing or new property, depending on the
     
    134135                }
    135136                String msg = "<html>"+trn("This will change up to {0} object.", "This will change up to {0} objects.", sel.size(), sel.size())+"<br><br>("+tr("An empty value deletes the key.", key)+")</html>";
    136                
     137
    137138                JPanel panel = new JPanel(new BorderLayout());
    138139                panel.add(new JLabel(msg), BorderLayout.NORTH);
     
    159160                                String str = null;
    160161                                        str=(String) value;
    161                                         if (valueCount.containsKey(objKey)){ 
     162                                        if (valueCount.containsKey(objKey)){
    162163                                                Map<String, Integer> m=valueCount.get(objKey);
    163164                                                if (m.containsKey(str)) {
     
    269270         * This simply fires up an relation editor for the relation shown; everything else
    270271         * is the editor's business.
    271          * 
     272         *
    272273         * @param row
    273274         */
    274         void membershipEdit(int row) { 
    275                 final RelationEditor editor = new RelationEditor((Relation)membershipData.getValueAt(row, 0), 
     275        void membershipEdit(int row) {
     276                final RelationEditor editor = new RelationEditor((Relation)membershipData.getValueAt(row, 0),
    276277                                (Collection<RelationMember>) membershipData.getValueAt(row, 1) );
    277278                editor.setVisible(true);
     
    296297                keys.setPossibleItems(allData.keySet());
    297298                keys.setEditable(true);
    298                
     299
    299300                p.add(keys, BorderLayout.CENTER);
    300301
     
    403404                }
    404405        };
    405        
     406
    406407        /**
    407408         * The properties list.
     
    417418         */
    418419        public PropertiesDialog(MapFrame mapFrame) {
    419                 super(tr("Properties/Memberships"), "propertiesdialog", tr("Properties for selected objects."), KeyEvent.VK_P, 150);
     420                super(tr("Properties/Memberships"), "propertiesdialog", tr("Properties for selected objects."),
     421                ShortCut.registerShortCut("subwindow:properies", tr("Toggle properties window"), KeyEvent.VK_P, ShortCut.GROUP_LAYER), 150);
    420422
    421423                // ---------------------------------------
    422                 // This drop-down is really deprecated but we offer people a chance to 
    423                 // activate it if they really want. Presets should be used from the 
     424                // This drop-down is really deprecated but we offer people a chance to
     425                // activate it if they really want. Presets should be used from the
    424426                // menu.
    425                 if (TaggingPresetPreference.taggingPresets.size() > 0 && 
     427                if (TaggingPresetPreference.taggingPresets.size() > 0 &&
    426428                                Main.pref.getBoolean("taggingpreset.in-properties-dialog", false)) {
    427429                        Vector<ActionListener> allPresets = new Vector<ActionListener>();
     
    448450
    449451                // setting up the properties table
    450                
     452
    451453                propertyData.setColumnIdentifiers(new String[]{tr("Key"),tr("Value")});
    452454                propertyTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
    453        
     455
    454456                propertyTable.getColumnModel().getColumn(1).setCellRenderer(new DefaultTableCellRenderer(){
    455457                        @Override public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
     
    476478                        }
    477479                });
    478                
     480
    479481                // setting up the membership table
    480                
     482
    481483                membershipData.setColumnIdentifiers(new String[]{tr("Member Of"),tr("Role")});
    482484                membershipTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
    483                
     485
    484486                membershipTable.getColumnModel().getColumn(0).setCellRenderer(new DefaultTableCellRenderer() {
    485487                        @Override public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
     
    492494                        }
    493495                });
    494                
     496
    495497                membershipTable.getColumnModel().getColumn(1).setCellRenderer(new DefaultTableCellRenderer() {
    496498                        @Override public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
     
    498500                                if (c instanceof JLabel) {
    499501                                        Collection<RelationMember> col = (Collection<RelationMember>) value;
    500                                        
     502
    501503                                        String text = null;
    502504                                        for (RelationMember r : col) {
     
    509511                                                }
    510512                                        }
    511                                        
     513
    512514                                        ((JLabel)c).setText(text);
    513515                                }
     
    515517                        }
    516518                });
    517                
     519
    518520                // combine both tables and wrap them in a scrollPane
    519521                JPanel bothTables = new JPanel();
     
    523525                bothTables.add(membershipTable.getTableHeader(), GBC.eol().fill(GBC.HORIZONTAL));
    524526                bothTables.add(membershipTable, GBC.eol().fill(GBC.BOTH));
    525                
     527
    526528                DblClickWatch dblClickWatch = new DblClickWatch();
    527529                propertyTable.addMouseListener(dblClickWatch);
     
    565567                                                        selectionChanged(sel); // update whole table
    566568                                                }
    567                                                
     569
    568570                                        }
    569571                                }
     
    587589                        }
    588590                };
    589                
     591
    590592                buttonPanel.add(new SideButton(marktr("Add"),"add","Properties",tr("Add a new key/value pair to all objects"), KeyEvent.VK_A, buttonAction));
    591593                buttonPanel.add(new SideButton(marktr("Edit"),"edit","Properties",tr("Edit the value of the selected key for all objects"), KeyEvent.VK_E, buttonAction));
     
    611613
    612614                // re-load property data
    613                
     615
    614616                propertyData.setRowCount(0);
    615617
     
    639641                        propertyData.addRow(new Object[]{e.getKey(), e.getValue()});
    640642                }
    641                
     643
    642644                // re-load membership data
    643645                // this is rather expensive since we have to walk through all members of all existing relationships.
    644646                // could use back references here for speed if necessary.
    645                
     647
    646648                membershipData.setRowCount(0);
    647                
     649
    648650                TreeMap<Relation, Collection<RelationMember>> roles = new TreeMap<Relation, Collection<RelationMember>>();
    649651                for (Relation r : Main.ds.relations) {
     
    661663                        }
    662664                }
    663                
     665
    664666                for (Entry<Relation, Collection<RelationMember>> e : roles.entrySet()) {
    665667                        membershipData.addRow(new Object[]{e.getKey(), e.getValue()});
    666668                }
    667                
     669
    668670                membershipTable.getTableHeader().setVisible(membershipData.getRowCount() > 0);
    669671        }
Note: See TracChangeset for help on using the changeset viewer.