Changeset 6114 in josm for trunk/src


Ignore:
Timestamp:
2013-08-06T23:48:20+02:00 (11 years ago)
Author:
Don-vip
Message:

fix #8735 - Presets: add new checkgroup item to specify group of checkboxes on multiple columns

Location:
trunk/src/org/openstreetmap/josm/gui/tagging
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/gui/tagging/TaggingPresetItems.java

    r6093 r6114  
    66import java.awt.Font;
    77import java.awt.GridBagLayout;
     8import java.awt.GridLayout;
    89import java.awt.event.ActionEvent;
    910import java.awt.event.ActionListener;
     
    2425import java.util.Map;
    2526import java.util.TreeSet;
     27
    2628import javax.swing.ButtonGroup;
    2729import javax.swing.ImageIcon;
     
    3537import javax.swing.ListCellRenderer;
    3638import javax.swing.ListModel;
     39
    3740import org.xml.sax.SAXException;
    38 
    3941import org.openstreetmap.josm.Main;
    4042import org.openstreetmap.josm.actions.search.SearchCompiler;
     
    315317        public void addCommands(List<Tag> changedTags) {
    316318        }
     319
     320        @Override
     321        public String toString() {
     322            return "Label ["
     323                    + (text != null ? "text=" + text + ", " : "")
     324                    + (text_context != null ? "text_context=" + text_context
     325                            + ", " : "")
     326                    + (locale_text != null ? "locale_text=" + locale_text : "")
     327                    + "]";
     328        }
    317329    }
    318330
     
    391403        public void addCommands(List<Tag> changedTags) {
    392404        }
     405
     406        @Override
     407        public String toString() {
     408            return "Optional";
     409        }
    393410    }
    394411
     
    403420        @Override
    404421        public void addCommands(List<Tag> changedTags) {
     422        }
     423
     424        @Override
     425        public String toString() {
     426            return "Space";
    405427        }
    406428    }
     
    643665                return Collections.emptyList();
    644666            return Collections.singleton(default_);
     667        }
     668    }
     669
     670    /**
     671     * A group of {@link Check}s.
     672     * @since 6114
     673     */
     674    public static class CheckGroup extends TaggingPresetItem {
     675       
     676        /**
     677         * Number of columns (positive integer)
     678         */
     679        public String columns;
     680       
     681        /**
     682         * List of checkboxes
     683         */
     684        public final List<Check> checks = new LinkedList<Check>();
     685
     686        @Override
     687        boolean addToPanel(JPanel p, Collection<OsmPrimitive> sel) {
     688            Integer cols = new Integer(columns);
     689            int rows = (int) Math.ceil((double)checks.size()/cols.doubleValue());
     690            JPanel panel = new JPanel(new GridLayout(rows, cols));
     691           
     692            for (Check check : checks) {
     693                check.addToPanel(panel, sel);
     694            }
     695           
     696            p.add(panel, GBC.eol());
     697            return false;
     698        }
     699
     700        @Override
     701        void addCommands(List<Tag> changedTags) {
     702        }
     703
     704        @Override
     705        public String toString() {
     706            return "CheckGroup [columns=" + columns + "]";
    645707        }
    646708    }
     
    734796        public Collection<String> getValues() {
    735797            return Arrays.asList(value_on, value_off);
     798        }
     799
     800        @Override
     801        public String toString() {
     802            return "Check ["
     803                    + (locale_text != null ? "locale_text=" + locale_text + ", " : "")
     804                    + (value_on != null ? "value_on=" + value_on + ", " : "")
     805                    + (value_off != null ? "value_off=" + value_off + ", " : "")
     806                    + "default_=" + default_ + ", "
     807                    + (check != null ? "check=" + check + ", " : "")
     808                    + (initialState != null ? "initialState=" + initialState
     809                            + ", " : "") + "def=" + def + "]";
    736810        }
    737811    }
  • trunk/src/org/openstreetmap/josm/gui/tagging/TaggingPresetReader.java

    r6093 r6114  
    1212import java.util.LinkedList;
    1313import java.util.List;
     14
    1415import javax.swing.JOptionPane;
     16
    1517import org.xml.sax.SAXException;
    16 
    1718import org.openstreetmap.josm.Main;
    1819import org.openstreetmap.josm.gui.preferences.SourceEntry;
     
    5859        parser.mapOnStart("roles", TaggingPresetItems.Roles.class);
    5960        parser.map("role", TaggingPresetItems.Role.class);
     61        parser.map("checkgroup", TaggingPresetItems.CheckGroup.class);
    6062        parser.map("check", TaggingPresetItems.Check.class);
    6163        parser.map("combo", TaggingPresetItems.Combo.class);
     
    6971        TaggingPresetMenu lastmenu = null;
    7072        TaggingPresetItems.Roles lastrole = null;
     73        final List<TaggingPresetItems.Check> checks = new LinkedList<TaggingPresetItems.Check>();
    7174        List<TaggingPresetItems.PresetListEntry> listEntries = new LinkedList<TaggingPresetItems.PresetListEntry>();
    7275
     
    113116                            throw new SAXException(tr("Preset role element without parent"));
    114117                        lastrole.roles.add((TaggingPresetItems.Role) o);
     118                    } else if (o instanceof TaggingPresetItems.Check) {
     119                        checks.add((TaggingPresetItems.Check) o);
    115120                    } else if (o instanceof TaggingPresetItems.PresetListEntry) {
    116121                        listEntries.add((TaggingPresetItems.PresetListEntry) o);
     122                    } else if (o instanceof TaggingPresetItems.CheckGroup) {
     123                        all.getLast().data.add((TaggingPresetItem) o);
     124                        ((TaggingPresetItems.CheckGroup) o).checks.addAll(checks);
     125                        checks.clear();
    117126                    } else {
     127                        if (!checks.isEmpty()) {
     128                            all.getLast().data.addAll(checks);
     129                            checks.clear();
     130                        }
    118131                        all.getLast().data.add((TaggingPresetItem) o);
    119132                        if (o instanceof TaggingPresetItems.ComboMultiSelect) {
Note: See TracChangeset for help on using the changeset viewer.