1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1.2 +++ b/samples/friendpackage/src/org/apidesign/friendpackage/api/Item.java Sun Oct 06 22:05:14 2013 +0200
1.3 @@ -0,0 +1,49 @@
1.4 +package org.apidesign.friendpackage.api;
1.5 +
1.6 +import javax.swing.event.ChangeEvent;
1.7 +import javax.swing.event.ChangeListener;
1.8 +import org.apidesign.friendpackage.impl.Accessor;
1.9 +
1.10 +/** Class in API that everyone can use.
1.11 + *
1.12 + * @author Jaroslav Tulach
1.13 + */
1.14 +// BEGIN: design.less.friend.Item
1.15 +public final class Item {
1.16 + private int value;
1.17 + private ChangeListener listener;
1.18 +
1.19 + /** Only friends can create instances. */
1.20 + Item() {
1.21 + }
1.22 +
1.23 + /** Anyone can change value of the item.
1.24 + */
1.25 + public void setValue(int newValue) {
1.26 + value = newValue;
1.27 + ChangeListener l = listener;
1.28 + if (l != null) {
1.29 + l.stateChanged(new ChangeEvent(this));
1.30 + }
1.31 + }
1.32 +
1.33 + /** Anyone can get the value of the item.
1.34 + */
1.35 + public int getValue() {
1.36 + return value;
1.37 + }
1.38 +
1.39 + /** Only friends can listen to changes.
1.40 + */
1.41 + void addChangeListener(ChangeListener l) {
1.42 + assert listener == null;
1.43 + listener = l;
1.44 + }
1.45 +// FINISH: design.less.friend.Item
1.46 +
1.47 + // BEGIN: design.less.friend.Item.static
1.48 + static {
1.49 + Accessor.setDefault(new AccessorImpl());
1.50 + }
1.51 + // END: design.less.friend.Item.static
1.52 +}