Changeset 1407 in josm


Ignore:
Timestamp:
2009-02-15T15:16:23+01:00 (13 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.