1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77
| package demo;
import javax.swing.*;
import fr.lri.swingstates.sm.*;
import java.awt.geom.Point2D;
public class Demo {
Canvas canvas;
// CStateMachine smPolyLine;
public Demo() {
JFrame f = new JFrame("Demo");
canvas = new Canvas(300, 300);
f.setSize(300, 300);
f.getContentPane().add(canvas);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
CStateMachine smPolyLine = new CStateMachine(canvas) {
CPolyLine ink;
CSegment seg;
Point2D P0,P1,P2;
public State start = new State("start") {
Transition create = new Press(BUTTON1, ">> hysterisis") {
public void action() {
P0 = getPoint();
seg = canvas.newSegment(P0,P0); }
};
};
public State hysterisis = new State("hysterisis") {
Transition drag = new Drag(BUTTON1, ">> draw") {
public boolean guard(){
P1=getPoint();
double dx =P1.getX() -P0.getX();
double dy =P1.getY() -P0.getY();
double distSquare = dx*dx + dy*dy;
if(distSquare<400) return false;
else return true;
}
public void action() {
seg.setPoints(P1, getPoint());
seg = canvas.newSegment(P0,P1);
}
};
Transition release = new Release(BUTTON1, ">> start") {
};
};
public State draw = new State("draw") {
Transition drag = new Drag(BUTTON1,">> draw") {
public void action() {
seg.setPoints(P1, getPoint());
}
};
Transition release = new Release(BUTTON1, ">> start") {
public void action() {
// seg.setPoints(P1, getPoint());
}
};
};
};
}
public static void main(String[] args) {
new Demo();
}
} |
Partager