mirror of
https://github.com/processing/processing4.git
synced 2026-01-30 03:41:15 +01:00
88 lines
1.8 KiB
Plaintext
88 lines
1.8 KiB
Plaintext
/**
|
|
* Promt for user input
|
|
*/
|
|
|
|
String password = null;
|
|
boolean locked = false;
|
|
int nextLock = 0;
|
|
|
|
void setup ()
|
|
{
|
|
size( 300, 200 );
|
|
|
|
textFont(createFont("Arial", 22));
|
|
textAlign(CENTER);
|
|
}
|
|
|
|
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 );
|
|
text( "LOCKED, click to unlock", width/2, height/2);
|
|
}
|
|
else
|
|
{
|
|
background( 255 );
|
|
|
|
fill( 0 );
|
|
text( "UNLOCKED\nwill lock in "+int(ceil((nextLock-millis())/1000))+" secs", width/2, height/2);
|
|
|
|
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 ( passTry != null && !passTry.equals(password) )
|
|
{
|
|
passTry = js.promtForInput( "Nope, try again", "" );
|
|
if ( passTry == null ) break;
|
|
}
|
|
locked = passTry != null && !passTry.equals(password);
|
|
if ( !locked )
|
|
nextLock = millis() + 5000;
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
// 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;
|
|
}
|