~ubuntu-branches/ubuntu/precise/jcsp/precise

1 by Miguel Landaeta
Import upstream version 1.1-rc4
1
import org.jcsp.lang.*;
2
import org.jcsp.util.*;
3
import org.jcsp.plugNplay.*;
4
5
public class FramedButtonGridExample {
6
7
  public static void main (String argv[]) {
8
  
9
    // labels for the grid of buttons
10
11
    final String[][] label = {
12
      new String[] {"Java", "occam-pi", "Handel-C"},
13
      new String[] {"C", "C++", "C#"},
14
      new String[] {"Haskell", "Modula", "Goodbye World"}
15
    };
16
17
    final int nDown = label.length;
18
    final int nAcross = label[0].length;
19
20
    // initial pixel sizes for the frame for the grid of buttons
21
22
    final int pixDown = 20 + (nDown*100);
23
    final int pixAcross = nAcross*120;
24
  
25
    // all button events are wired (for this example) to the same channel ...
26
27
    final Any2OneChannel allEvents =
28
      Channel.any2one (new OverWriteOldestBuffer (10));
29
30
    final Any2OneChannel[][] event = new Any2OneChannel[nDown][nAcross];
31
    
32
    for (int i = 0; i < nDown; i++) {
33
      for (int j = 0; j < nAcross; j++) {
34
        event[i][j] = allEvents;
35
      }
36
    }
37
38
    // make the grid of buttons (each one separately configured) ...
39
40
    final One2OneChannel[][] configure = new One2OneChannel[nDown][nAcross];
41
    
42
    for (int i = 0; i < nDown; i++) {
43
      configure[i] = Channel.one2oneArray (nAcross);
44
    }
45
46
    final ChannelInput[][] configureIn = new ChannelInput[nDown][nAcross];
47
    final ChannelOutput[][] eventOut = new ChannelOutput[nDown][nAcross];
48
    
49
    for (int i = 0; i < nDown; i++) {
50
      configureIn[i] = Channel.getInputArray (configure[i]);
51
      eventOut[i] = Channel.getOutputArray (event[i]);
52
    }
53
54
    final FramedButtonGrid grid =
55
      new FramedButtonGrid (
56
        "FramedButtonGrid Demo", nDown, nAcross,
57
        pixDown, pixAcross, configureIn, eventOut
58
      );
59
60
    // testrig ...
61
62
    new Parallel (
63
    
64
      new CSProcess[] {
65
      
66
        grid,
67
        
68
        new CSProcess () {
69
        
70
          public void run () {
71
    
72
            for (int i = 0; i < nDown; i++) {
73
              for (int j = 0; j < nAcross; j++) {
74
                configure[i][j].out ().write (label[i][j]);
75
              }
76
            }
77
            
78
            boolean running = true;
79
            while (running) {
80
              final String s = (String) allEvents.in ().read ();
81
              System.out.println ("Button `" + s + "' pressed ...");
82
              running = (s != label[nDown - 1][nAcross - 1]);
83
            }
84
            
85
            System.exit (0);
86
            
87
          }
88
          
89
        }
90
        
91
      }
92
    ).run ();
93
94
  }
95
96
}