import java.applet.Applet; import java.awt.*; import java.awt.event.*; import java.applet.*; import java.awt.geom.*; import java.math.*; public class ProofControl { int X,Y; int time,size; double progress; SelectInteger[] SI=new SelectInteger[10]; ControlPanel ACTION; ListenSquare INTERVAL; public ProofControl(int XX,int YY) { X=XX; Y=YY; time=0; progress=0; size=-2; SI[0]=new SelectInteger(X+10,Y+10,40,20,0,0,2,1); SI[1]=new SelectInteger(X+10,Y+130,30,15,0,0,30,1); SI[2]=new SelectInteger(X+10,Y+155,30,15,0,0,30,1); INTERVAL=new ListenSquare(X+180,Y+40,30,25,null); INTERVAL.on=0; setPanels(); } public void setPanels() { Color[] C0={new Color(0,0,100),Color.white,Color.yellow,Color.white,Color.red}; String[] ActionString={"basic","confined","subdivision demo","method"}; int[] ActionState={1,0,0}; ACTION=new ControlPanel(C0,ActionString,ActionState,3); } public void render(Graphics2D g) { g.setFont(new Font("Helvetica",Font.PLAIN,12)); g.setColor(new Color(0,0,10)); g.fillRect(X,Y,230,100); g.setColor(new Color(255,0,255)); g.drawRect(X,Y,230,100); renderToggle(g); renderProgress(g); if(SI[0].val==1) renderAdvanced(g); INTERVAL.render2(g,Color.red); g.setColor(Color.white); g.setFont(new Font("Helvetica",Font.PLAIN,11)); g.drawString("interval",X+170,Y+15); g.drawString("arithmetic",X+170,Y+30); } public void renderToggle(Graphics2D g) { SI[0].render(g,Color.red,Color.white,Color.white); int mode=SI[0].val; g.setColor(Color.white); if(mode==0) g.drawString("basic",X+90,Y+23); if(mode==1) g.drawString("advanced",X+90,Y+23); } public void renderAdvanced(Graphics2D g) { g.setColor(Color.black); g.fillRect(X,Y+120,200,170); g.setColor(new Color(255,0,255)); g.drawRect(X,Y+120,200,170); SI[1].render(g,Color.red,Color.white,Color.white); if(ACTION.mode==2) SI[2].render(g,Color.red,Color.white,Color.white); g.setColor(Color.white); g.drawString("delay", X+80,Y+141); if(ACTION.mode==2) g.drawString("subdivision depth", X+80,Y+166); ACTION.render(g,X+5,Y+220,120); g.setFont(new Font("Helvetica",Font.PLAIN,11)); } public void renderProgress(Graphics2D g) { g.setColor(Color.white); Integer D=new Integer(time); g.drawString(D.toString(),X+50,Y+65); Double P=new Double(progress); g.drawString(P.toString(),X+50,Y+85); g.drawString("sec:",X+10,Y+65); g.drawString("done:",X+10,Y+85); } public int process(Point X) { SI[0].modifyCyclic(X); if(SI[0].val==1) processAdvanced(X); if(INTERVAL.inside(X)==1) INTERVAL.on=1-INTERVAL.on; return(0); } public void processAdvanced(Point X) { SI[1].modify(X); SI[2].modify(X); ACTION.switchMode(X); } }