001    // GraphLab Project: http://graphlab.sharif.edu
002    // Copyright (C) 2008 Mathematical Science Department of Sharif University of Technology
003    // Distributed under the terms of the GNU General Public License (GPL): http://www.gnu.org/licenses/
004    
005    package graphlab.plugins.main.core.actions.preferences;
006    
007    import graphlab.platform.core.AbstractAction;
008    import graphlab.platform.core.BlackBoard;
009    import graphlab.platform.preferences.AbstractPreference;
010    import graphlab.platform.preferences.Preferences;
011    import graphlab.platform.preferences.lastsettings.StorableOnExit;
012    import graphlab.ui.UIUtils;
013    import graphlab.ui.components.prefeditor.GPrefPane;
014    
015    import java.util.HashMap;
016    import java.util.Iterator;
017    
018    /**
019     * @author Rouzbeh Ebrahimi
020     */
021    public class PreferencesAction extends AbstractAction implements StorableOnExit {
022        public static final String EVENT_KEY = UIUtils.getUIEventKey("Prefs");
023        Preferences pref;
024    
025        public PreferencesAction(BlackBoard bb) {
026            super(bb);
027            listen4Event(EVENT_KEY);
028            pref = bb.getData("Preferences");
029    
030        }
031    
032    
033        public void performAction(String eventName, Object value) {
034            pref.retrieveEveryItem();
035    //        HashMap<String, HashSet<AbstractPreference>> complicatedTabs = new HashMap<String, HashSet<AbstractPreference>>();
036            managePrefUI();
037        }
038    
039    
040        private void managePrefUI() {
041            HashMap<String, AbstractPreference> tabs = new HashMap<String, AbstractPreference>();
042            Iterator<AbstractPreference> iterator = pref.set.iterator();
043    
044            for (; iterator.hasNext();) {
045                AbstractPreference ap = iterator.next();
046                tabs.put(ap.preferenceName, ap);
047            }
048    
049    //        GTabbedAttributePane pane = new GTabbedAttributePane(tabs);
050    //        GTabbedAttributeFrame.showEditDialog(pane,true);
051            GPrefPane gpp = new GPrefPane(blackboard, tabs);
052            gpp.setVisible(true);
053        }
054    
055    
056    }