Simple windowed application: Difference between revisions
Content added Content deleted
No edit summary |
Walterpachl (talk | contribs) (→{{header|ooRexx}}: significantly shortened) |
||
Line 1,154:
=={{header|ooRexx}}==
<lang oorexx>/* REXX ***************************************************************************************
* 18.06.2014 Walter Pachl shortened from Rony Flatscher's bsf4oorexx (see sourceforge) samples
* Look there
* bsf4oorexx lets the ooRexx program use Java classes
**********************************************************************************************/
userData=.directory~new -- a directory which will be passed to Rexx with the event
Line 1,207 ⟶ 1,166:
rexxCloseEH =.RexxCloseAppEventHandler~new -- Rexx event handler
-- Create Java RexxProxy for the Rexx event handler
rpCloseEH=BsfCreateRexxProxy(rexxCloseEH,
win~addWindowListener(rpCloseEH) -- add RexxProxy event handler
-- create a Java push button
but=.bsf~new("java.awt.Button",
-- Create a RexxProxy for the button Rexx event handler
rp=BsfCreateRexxProxy(.RexxShowCountEventHandler~new,
but~addActionListener(rp) -- add RexxProxy event handler
lab=.bsf~new("java.awt.Label") -- create a Java label,
userData~label=lab -- save label object for later use in event handler▼
lab~setAlignment(lab~center) -- set alignment to center▼
▲userData~label=lab -- save label object for later use in event handler
▲lab~setAlignment(lab~center) -- set alignment to center
▲lab~setText("Button was not yet pressed") -- assign a text to the label
win ~~add("Center",
win ~~pack -- now calculate all widget dimensions
call enlargeWidth win,but,
win ~~setVisible(.true) ~~toFront -- make frame visible and move it to the front
userData~i=0 -- set counter to 0
rexxCloseEH~waitForExit -- wait until we are allowed to end the program
-- if Java was loaded by Rexx,
call BSF.terminateRexxEngine
::requires BSF.CLS -- get Java support
Line 1,240 ⟶ 1,197:
/* enlarge the width of the frame and of the button without using a layout manager */
::routine enlargeWidth
use arg win,
winDim=win~getSize -- get frame's dimension▼
winDim~width+=addToWidth -- increase width▼
win~setSize(winDim) -- set frame's dimension▼
▲ winDim=win~getSize -- get frame's dimension
▲ winDim~width+=addToWidth -- increase width
▲ win~setSize(winDim) -- set frame's dimension
/* ------------------------------------------------------------------------ */
/* Rexx event handler to set "close app" indicator */
::class RexxCloseAppEventHandler
::method init -- constructor
expose closeApp
closeApp = .false -- if set to .true, then it is safe to close the app
::attribute closeApp -- indicates whether app should be closed
::method unknown -- intercept unhandled events,
::method windowClosing -- event method (from WindowListener)
expose closeApp
closeApp=.true -- indicate that the app should close
::method waitForExit -- method blocks until attribute is set to .true
expose closeApp
guard on when closeApp=.true
/* ------------------------------------------------------------------------ */
Line 1,279 ⟶ 1,225:
::class RexxShowCountEventHandler
::method actionPerformed
use arg eventObject,
call showCount slotDir~userData
/* ------------------------------------------------------------------------ */
::routine ShowCount --
use arg userData
▲ userData~i=i -- save current value in directory object
When userData~i=
▲ When i=2 Then text='twice'
▲ When i=3 Then text='three times'
▲ Otherwise text=i 'times'
End
userData~label~setText("Button was pressed"
=={{header|Oz}}==
|