jtulach@287: package org.apidesign.friendpackage.api; jtulach@0: jtulach@0: import javax.swing.event.ChangeEvent; jtulach@0: import javax.swing.event.ChangeListener; jtulach@287: import org.apidesign.friendpackage.impl.Accessor; jtulach@0: jtulach@0: /** Class in API that everyone can use. jtulach@0: * jtulach@0: * @author Jaroslav Tulach jtulach@0: */ jtulach@3: // BEGIN: design.less.friend.Item jtulach@0: public final class Item { jtulach@0: private int value; jtulach@0: private ChangeListener listener; jtulach@3: jtulach@190: /** Only friends can create instances. */ jtulach@0: Item() { jtulach@0: } jtulach@0: jtulach@190: /** Anyone can change value of the item. jtulach@0: */ jtulach@190: public void setValue(int newValue) { jtulach@190: value = newValue; jtulach@0: ChangeListener l = listener; jtulach@0: if (l != null) { jtulach@0: l.stateChanged(new ChangeEvent(this)); jtulach@0: } jtulach@0: } jtulach@0: jtulach@0: /** Anyone can get the value of the item. jtulach@0: */ jtulach@0: public int getValue() { jtulach@0: return value; jtulach@0: } jtulach@0: jtulach@190: /** Only friends can listen to changes. jtulach@0: */ jtulach@0: void addChangeListener(ChangeListener l) { jtulach@0: assert listener == null; jtulach@0: listener = l; jtulach@0: } jtulach@285: // FINISH: design.less.friend.Item jtulach@285: jtulach@285: // BEGIN: design.less.friend.Item.static jtulach@285: static { jtulach@285: Accessor.setDefault(new AccessorImpl()); jtulach@285: } jtulach@285: // END: design.less.friend.Item.static jtulach@0: }