Ignore:
Timestamp:
12/18/13 14:22:48 (11 years ago)
Author:
jts21
Message:

Generated settings frames now use capitalised setting names, and settings are generated/displayed in the order they were declared in code.
Settings with no value no longer have a ':' after their name (good for some things, however maybe we should be showing somehow that some settings can have a value set after a colon, and others use a frame linked from the setting item, and others just use the properties of the setting item?).
Password setting(s) now use the password widget.
Fixed some problems with settings that try to work without having a value set (SpellChecker, ColorWheels, HomeFrame).

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/expeditee/settings/Settings.java

    r640 r641  
    1414import org.expeditee.gui.FrameUtils;
    1515import org.expeditee.items.Text;
     16import org.expeditee.items.widgets.Password;
    1617import org.expeditee.reflection.PackageLoader;
    1718
     
    3637                private final HashMap<String, FieldSet> settings = new HashMap<String, FieldSet>();
    3738                private final List<Field> hasDefault = new LinkedList<Field>();
     39                private final List<String> orderedEntries = new LinkedList<String>();
    3840                private final Method onParsed;
    3941               
     
    4648                                        // System.out.println(m.getName().toLowerCase());
    4749                                        settings.put(m.getName().substring(3).toLowerCase(), new FieldSet(null, m));
     50                                        if(!orderedEntries.contains(m.getName().substring(3))) {
     51                                                orderedEntries.add(m.getName().substring(3));
     52                                        }
    4853                                }
    4954                        }
     
    6469                                } else {
    6570                                        settings.put(f.getName().toLowerCase(), new FieldSet(f, fs.method));
     71                                }
     72                                if(!orderedEntries.contains(f.getName())) {
     73                                        orderedEntries.add(f.getName());
    6674                                }
    6775                        }
     
    199207       
    200208        public static Text generateSettingsTree() {
    201                 return generateSettingsTree("settings", DisplayIO.getCurrentFrame().createNewText("settings"));
     209                return generateSettingsTree("settings", DisplayIO.getCurrentFrame().createNewText("Settings"));
    202210        }
    203211       
     
    207215               
    208216                int x = 50, y = 100;
    209                 int dY = UserSettings.ItemTemplate.getPolygon().getBounds().height + 10;
     217                int dY = UserSettings.ItemTemplate.getPolygon().getBounds().height + 1;
    210218                int maxY = UserSettings.InitialHeight - 150;
    211219               
    212                 // add subpages
     220                // add subpages of the current page
    213221                for(String k : _pages.keySet()) {
    214222                        if(k.startsWith(page.toLowerCase()) && !k.equals(page)) {
     
    218226                                }
    219227                                System.out.println("Generating " + name);
    220                                 generateSettingsTree(k, frame.addText(x, y, name, null));
     228                                generateSettingsTree(k, frame.addText(x, y, name.substring(0, 1).toUpperCase() + name.substring(1), null));
    221229                                y += dY;
    222230                                if(y >= maxY) {
     
    230238                y = 100;
    231239               
    232                 // add settings for the page
     240                // add settings of the current page
    233241                PageDescriptor pd = _pages.get(page);
    234242                if(pd != null) {
    235                         for(String k : pd.settings.keySet()) {
    236                                 if(k.startsWith("default")) {
    237                                         continue;
    238                                 }
    239                                 PageDescriptor.FieldSet fs = pd.settings.get(k);
     243                        for(String str : pd.orderedEntries) {
     244                                String key = str.toLowerCase();
     245                                if(key.startsWith("default")) {
     246                                        continue;
     247                                }
     248                                PageDescriptor.FieldSet fs = pd.settings.get(key);
     249                                String name = null;
    240250                                Object value = "";
     251                                name = str.substring(0, 1).toUpperCase() + str.substring(1);
    241252                                if(fs.method == null && fs.field != null) {
    242253                                try {
    243254                                        if(pd.hasDefault.contains(fs.field)) {
    244                                                 value = pd.settings.get("default" + k).field.get(null);
     255                                                value = ": " + pd.settings.get("default" + key).field.get(null);
    245256                                        } else {
    246                                                 value = fs.field.get(null);
     257                                                value = ": " + fs.field.get(null);
    247258                                        }
    248259                                } catch (Exception e) {
    249260                        e.printStackTrace();
    250261                    }
    251                                 }
    252                                 frame.addText(x, y, k + ": " + value, null);
     262                                } else if(fs.method == null) {
     263                                        continue;
     264                                }
     265                                if(key.equals("pass")) {
     266                                        Password pw = new Password(frame.createNewText("@iw: org.expeditee.items.widgets.Password"), null);
     267                                        pw.setPassword((String) value);
     268                                        pw.setPosition(x, y);
     269                                        frame.addAllItems(pw.getItems());
     270                                        y += pw.getHeight();
     271                                } else {
     272                                        frame.addText(x, y, name + value, null);
     273                                }
    253274                                y += dY;
    254275                                if(y >= maxY) {
Note: See TracChangeset for help on using the changeset viewer.