Changeset 1407 in josm


Ignore:
Timestamp:
Feb 15, 2009 3:16:23 PM (4 years ago)
Author:
stoecker
Message:

close #2149

Location:
trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/presets/presets.xml

    r1406 r1407  
    2727  default: default string to display 
    2828  delete_if_empty: true/false 
     29  use_last_as_default: true/false 
    2930 
    3031combo: combo box, with multiple choices and possible to enter free form text 
  • trunk/src/org/openstreetmap/josm/gui/JMultilineLabel.java

    r1397 r1407  
    9393        float w = insets.left + insets.right; 
    9494        float x = insets.left, y=insets.top; 
    95                
    96          
     95 
    9796        if (width > 0 && text != null && text.length() > 0) { 
    98             String[] lines = getText().split("\n");              
     97            String[] lines = getText().split("\n"); 
    9998            for(String line : lines) { 
    10099                // Insert a space so new lines get rendered 
  • trunk/src/org/openstreetmap/josm/gui/dialogs/PropertiesDialog.java

    r1397 r1407  
    2424import java.util.HashMap; 
    2525import java.util.HashSet; 
     26import java.util.LinkedList; 
    2627import java.util.Map; 
    2728import java.util.TreeMap; 
     
    5354import org.openstreetmap.josm.data.SelectionChangedListener; 
    5455import org.openstreetmap.josm.data.osm.DataSet; 
     56import org.openstreetmap.josm.data.osm.Node; 
    5557import org.openstreetmap.josm.data.osm.OsmPrimitive; 
    5658import org.openstreetmap.josm.data.osm.Relation; 
    5759import org.openstreetmap.josm.data.osm.RelationMember; 
     60import org.openstreetmap.josm.data.osm.Way; 
    5861import org.openstreetmap.josm.data.osm.visitor.NameVisitor; 
    5962import org.openstreetmap.josm.gui.ExtendedDialog; 
     63import org.openstreetmap.josm.gui.JMultilineLabel; 
    6064import org.openstreetmap.josm.gui.MapFrame; 
    6165import org.openstreetmap.josm.gui.SideButton; 
     66import org.openstreetmap.josm.gui.preferences.TaggingPresetPreference; 
     67import org.openstreetmap.josm.gui.tagging.TaggingPreset; 
    6268import org.openstreetmap.josm.tools.AutoCompleteComboBox; 
    6369import org.openstreetmap.josm.tools.GBC; 
     
    438444    private final SideButton btnEdit; 
    439445    private final SideButton btnDel; 
     446    private final JMultilineLabel presets = new JMultilineLabel(""); 
    440447 
    441448    private final JLabel selectSth = new JLabel("<html><p>" + tr("Please select the objects you want to change properties for.") + "</p></html>"); 
     
    525532        bothTables.add(membershipTable.getTableHeader(), GBC.eol().fill(GBC.HORIZONTAL)); 
    526533        bothTables.add(membershipTable, GBC.eol().fill(GBC.BOTH)); 
     534        bothTables.add(presets, GBC.eol().fill().insets(10, 10, 10, 10)); 
    527535 
    528536        DblClickWatch dblClickWatch = new DblClickWatch(); 
     
    532540        scrollPane.addMouseListener(dblClickWatch); 
    533541        add(scrollPane, BorderLayout.CENTER); 
    534          
     542 
    535543        selectSth.setPreferredSize(scrollPane.getSize()); 
     544        presets.setPreferredSize(scrollPane.getSize()); 
    536545 
    537546        JPanel buttonPanel = new JPanel(new GridLayout(1,3)); 
     
    549558                        NameVisitor n = new NameVisitor(); 
    550559                        cur.visit(n); 
    551                          
    552                         int result = new ExtendedDialog(Main.parent,  
    553                             tr("Change relation"),  
     560 
     561                        int result = new ExtendedDialog(Main.parent, 
     562                            tr("Change relation"), 
    554563                            tr("Really delete selection from relation {0}?", n.name), 
    555                             new String[] {tr("Delete from relation"), tr("Cancel")},  
    556                             new String[] {"dialogs/delete.png", "cancel.png"}).getValue();   
    557                          
     564                            new String[] {tr("Delete from relation"), tr("Cancel")}, 
     565                            new String[] {"dialogs/delete.png", "cancel.png"}).getValue(); 
     566 
    558567                        if(result == 1) 
    559568                        { 
     
    620629    } 
    621630 
     631    private void checkPresets(int nodes, int ways, int relations, int closedways) 
     632    { 
     633        LinkedList<TaggingPreset> p = new LinkedList<TaggingPreset>(); 
     634        int total = nodes+ways+relations+closedways; 
     635        if(total != 0) 
     636        { 
     637            for(TaggingPreset t : TaggingPresetPreference.taggingPresets) 
     638            { 
     639                if(!( (relations > 0 && !t.types.contains("relation")) && 
     640                (nodes > 0 && !t.types.contains("node")) && 
     641                (ways+closedways > 0 && !t.types.contains("way")) && 
     642                (closedways > 0 && !t.types.contains("closedway")))) 
     643                { 
     644                    int found = 0; 
     645                    for(TaggingPreset.Item i : t.data) 
     646                    { 
     647                        if(i instanceof TaggingPreset.Key) 
     648                        { 
     649                            String val = ((TaggingPreset.Key)i).value; 
     650                            String key = ((TaggingPreset.Key)i).key; 
     651                            // we subtract 100 if not found and add 1 if found 
     652                            found -= 100; 
     653                            if(valueCount.containsKey(key)) 
     654                            { 
     655                                Map<String, Integer> v = valueCount.get(key); 
     656                                if(v.size() == 1 && v.containsKey(val) && v.get(val) == total) 
     657                                { 
     658                                    found += 101; 
     659                                } 
     660                            } 
     661                        } 
     662                    } 
     663                    if(found > 0) 
     664                        p.add(t); 
     665                } 
     666            } 
     667        } 
     668        String t = ""; 
     669        for(TaggingPreset tp : p) 
     670        { 
     671            if(t.length() > 0) 
     672                t += "\n"; 
     673            t += tp.getName(); 
     674        } 
     675        presets.setText(t); 
     676        presets.setVisible(t.length() > 0); 
     677    } 
     678 
    622679    public void selectionChanged(Collection<? extends OsmPrimitive> newSelection) { 
    623680        if (!isVisible()) 
     
    630687        // re-load property data 
    631688        propertyData.setRowCount(0); 
     689        int nodes = 0; 
     690        int ways = 0; 
     691        int relations = 0; 
     692        int closedways = 0; 
    632693 
    633694        Map<String, Integer> keyCount = new HashMap<String, Integer>(); 
    634695        valueCount.clear(); 
    635696        for (OsmPrimitive osm : newSelection) { 
     697            if(osm instanceof Node) ++nodes; 
     698            else if(osm instanceof Relation) ++relations; 
     699            else if(((Way)osm).isClosed()) ++closedways; 
     700            else ++ways; 
    636701            for (Entry<String, String> e : osm.entrySet()) { 
    637702                keyCount.put(e.getKey(), keyCount.containsKey(e.getKey()) ? keyCount.get(e.getKey())+1 : 1); 
     
    666731        selectSth.setVisible(!hasSelection); 
    667732        if(hasTags) propertyTable.changeSelection(0, 0, false, false); 
     733 
     734        checkPresets(nodes, ways, relations, closedways); 
    668735 
    669736        // re-load membership data 
Note: See TracChangeset for help on using the changeset viewer.