Files
processing4/javascript/examples/Environment/Input/lockedIn/lockedIn.pde
2011-06-13 17:23:36 +00:00

110 lines
2.4 KiB
Plaintext

/**
* This example demonstrates how to promt for user input
*/
String password = null;
boolean locked = false;
int nextLock = 0;
void setup ()
{
size( 300, 200 );
textFont(createFont("Arial", 22));
textAlign(CENTER);
rectMode(CENTER);
noStroke();
}
void draw ()
{
if ( password == null )
{
background( 255 );
fill( 0 );
text( "Please set a password \n(click here)", width/2, height/2);
}
else if ( locked )
{
background( 100 );
fill(255,0,0);
pushMatrix();
translate(width/2,height/3);
rotate(HALF_PI/2); rect(0,0,40,10);
rotate(HALF_PI); rect(0,0,40,10);
popMatrix();
fill( 255 );
text( "LOCKED, click to unlock", width/2, 2*(height/3));
}
else
{
background( 255 );
fill(0,255,0);
pushMatrix();
translate(width/2,height/3+10);
rotate(-HALF_PI/2); rect(15,0,40,10);
rotate(-HALF_PI); rect(5,0,20,10);
popMatrix();
fill( 0 );
text( "UNLOCKED\nwill lock in "+int(ceil((nextLock-millis())/1000))+" secs", width/2, 2*(height/3));
if ( nextLock-millis() < 0 ) locked = true;
}
}
/*void mouseMoved ()
{
if ( password != null && !locked )
nextLock = millis() + 5000;
}*/
void mousePressed ()
{
if ( js != null )
{
if ( password == null )
{
password = js.promtForInput( "Please set and remember a password", "***********" );
nextLock = millis() + 5000;
}
else if ( locked )
{
String passTry = js.promtForInput( "Enter your password", "" );
while ( testLocked(passTry) )
{
passTry = js.promtForInput( "Nope, try again", "" );
if ( passTry == null ) break;
}
locked = testLocked(passTry);
if ( !locked )
nextLock = millis() + 5000;
}
}
}
boolean testLocked ( String passTry )
{
return passTry == null || !passTry.equals(password);
}
// this is needed to define a way for us to be able to call out
interface JavaScript
{
String promtForInput( String message, String defaultAnswer );
}
JavaScript js;
void setJS ( JavaScript jsi )
{
js = jsi;
}