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 package graphlab.platform.preferences; 005 006 import graphlab.platform.attribute.AttributeListener; 007 import graphlab.platform.attribute.NotifiableAttributeSetImpl; 008 import graphlab.platform.lang.ArrayX; 009 010 import java.util.HashMap; 011 012 /** 013 * @author Rouzbeh 014 */ 015 public abstract class AbstractPreference { 016 public String preferenceName; 017 public String displayName; 018 public String category; 019 020 021 public AbstractPreference(String name, Preferences pref, String category) { 022 this.preferenceName = name; 023 this.category = category; 024 025 pref.putNewSetOfAttributes(this); 026 defineAttributes(new HashMap<Object, ArrayX>()); 027 028 } 029 030 public NotifiableAttributeSetImpl attributeSet = new NotifiableAttributeSetImpl(); 031 032 protected void putAttribute(String name, ArrayX values) { 033 attributeSet.put(name, values); 034 } 035 036 protected void putAttribute(String name, Object value) { 037 attributeSet.put(name, value); 038 039 } 040 041 protected <T> T getAttribute(String name) { 042 return (T) attributeSet.get(name); 043 044 } 045 046 047 public abstract void defineAttributes(HashMap<Object, ArrayX> objectValues); 048 049 050 public abstract void defineListeners(AttributeListener al); 051 }