samples/friendpackage/src/apipkg/Item.java
author Jaroslav Tulach <jtulach@netbeans.org>
Sat, 14 Jun 2008 10:03:27 +0200
changeset 190 8b87a7d88b31
parent 154 0fd5e9c500b9
child 285 321b25b8f6f8
permissions -rw-r--r--
Addressing issues at http://wiki.apidesign.org/index.php/Allow_Access_Only_From_Friend_Code
     1 package apipkg;
     2 
     3 import implpkg.Accessor;
     4 import javax.swing.event.ChangeEvent;
     5 import javax.swing.event.ChangeListener;
     6 
     7 /** Class in API that everyone can use.
     8  *
     9  * @author Jaroslav Tulach
    10  */
    11 // BEGIN: design.less.friend.Item
    12 public final class Item {
    13     private int value;
    14     private ChangeListener listener;
    15 
    16     // BEGIN: design.less.friend.Item.static
    17     static {
    18         Accessor.setDefault(new AccessorImpl());
    19     }
    20     // END: design.less.friend.Item.static
    21     
    22     /** Only friends can create instances. */
    23     Item() {
    24     }
    25     
    26     /** Anyone can change value of the item. 
    27      */
    28     public void setValue(int newValue) {
    29         value = newValue;
    30         ChangeListener l = listener;
    31         if (l != null) {
    32             l.stateChanged(new ChangeEvent(this));
    33         }
    34     }
    35     
    36     /** Anyone can get the value of the item. 
    37      */
    38     public int getValue() {
    39         return value;
    40     }
    41     
    42     /** Only friends can listen to changes.
    43      */
    44     void addChangeListener(ChangeListener l) {
    45         assert listener == null;
    46         listener = l;
    47     }
    48     
    49 }
    50 // END: design.less.friend.Item