%!PS-Adobe-3.0 %%BoundingBox: (atend) %%Pages: (atend) %%PageOrder: (atend) %%DocumentFonts: (atend) %%Creator: Frame 5.0 %%DocumentData: Clean7Bit %%EndComments %%BeginProlog % % Frame ps_prolog 5.0, for use with Frame 5.0 products % This ps_prolog file is Copyright (c) 1986-1995 Frame Technology % Corporation. All rights reserved. This ps_prolog file may be % freely copied and distributed in conjunction with documents created % using FrameMaker, FrameMaker/SGML and FrameViewer as long as this % copyright notice is preserved. % % FrameMaker users specify the proper paper size for each print job in the % "Print" dialog's "Printer Paper Size" "Width" and "Height~ fields. If the % printer that the PS file is sent to does not support the requested paper % size, or if there is no paper tray of the proper size currently installed, % then the job will not be printed. The following flag, if set to true, will % cause the job to print on the default paper in such cases. /FMAllowPaperSizeMismatch false def % % Frame products normally print colors as their true color on a color printer % or as shades of gray, based on luminance, on a black-and white printer. The % following flag, if set to true, forces all non-white colors to print as pure % black. This has no effect on bitmap images. /FMPrintAllColorsAsBlack false def % % Frame products can either set their own line screens or use a printer's % default settings. Three flags below control this separately for no % separations, spot separations and process separations. If a flag % is true, then the default printer settings will not be changed. If it is % false, Frame products will use their own settings from a table based on % the printer's resolution. /FMUseDefaultNoSeparationScreen true def /FMUseDefaultSpotSeparationScreen true def /FMUseDefaultProcessSeparationScreen false def % % For any given PostScript printer resolution, Frame products have two sets of % screen angles and frequencies for printing process separations, which are % recomended by Adobe. The following variable chooses the higher frequencies % when set to true or the lower frequencies when set to false. This is only % effective if the appropriate FMUseDefault...SeparationScreen flag is false. /FMUseHighFrequencyScreens true def % % The following is a set of predefined optimal frequencies and angles for various % common dpi settings. This is taken from "Advances in Color Separation Using % PostScript Software Technology," from Adobe Systems (3/13/89 P.N. LPS 0043) % and corrolated with information which is in various PPD (4.0) files. % % The "dpiranges" figure is the minimum dots per inch device resolution which % can support this setting. The "low" and "high" values are controlled by the % setting of the FMUseHighFrequencyScreens flag above. The "TDot" flags control % the use of the "Yellow Triple Dot" feature whereby the frequency id divided by % three, but the dot function is "trippled" giving a block of 3x3 dots per cell. % % PatFreq is a compromise pattern frequency for ps Level 2 printers which is close % to the ideal WYSIWYG pattern frequency of 9 repetitions/inch but does not beat % (too badly) against the screen frequencies of any separations for that DPI. /dpiranges [ 2540 2400 1693 1270 1200 635 600 0 ] def /CMLowFreqs [ 100.402 94.8683 89.2289 100.402 94.8683 66.9349 63.2456 47.4342 ] def /YLowFreqs [ 95.25 90.0 84.65 95.25 90.0 70.5556 66.6667 50.0 ] def /KLowFreqs [ 89.8026 84.8528 79.8088 89.8026 84.8528 74.8355 70.7107 53.033 ] def /CLowAngles [ 71.5651 71.5651 71.5651 71.5651 71.5651 71.5651 71.5651 71.5651 ] def /MLowAngles [ 18.4349 18.4349 18.4349 18.4349 18.4349 18.4349 18.4349 18.4349 ] def /YLowTDot [ true true false true true false false false ] def /CMHighFreqs [ 133.87 126.491 133.843 108.503 102.523 100.402 94.8683 63.2456 ] def /YHighFreqs [ 127.0 120.0 126.975 115.455 109.091 95.25 90.0 60.0 ] def /KHighFreqs [ 119.737 113.137 119.713 128.289 121.218 89.8026 84.8528 63.6395 ] def /CHighAngles [ 71.5651 71.5651 71.5651 70.0169 70.0169 71.5651 71.5651 71.5651 ] def /MHighAngles [ 18.4349 18.4349 18.4349 19.9831 19.9831 18.4349 18.4349 18.4349 ] def /YHighTDot [ false false true false false true true false ] def /PatFreq [ 10.5833 10.0 9.4055 10.5833 10.0 10.5833 10.0 9.375 ] def % % PostScript Level 2 printers contain an "Accurate Screens" feature which can % improve process separation rendering at the expense of compute time. This % flag is ignored by PostScript Level 1 printers. /FMUseAcccurateScreens true def % % The following PostScript procedure defines the spot function that Frame % products will use for process separations. You may un-comment-out one of % the alternative functions below, or use your own. % % Dot function /FMSpotFunction {abs exch abs 2 copy add 1 gt {1 sub dup mul exch 1 sub dup mul add 1 sub } {dup mul exch dup mul add 1 exch sub }ifelse } def % % Line function % /FMSpotFunction { pop } def % % Elipse function % /FMSpotFunction { dup 5 mul 8 div mul exch dup mul exch add % sqrt 1 exch sub } def % % /FMversion (5.0) def /fMLevel1 /languagelevel where {pop languagelevel} {1} ifelse 2 lt def /FMPColor fMLevel1 { false /colorimage where {pop pop true} if } { true } ifelse def /FrameDict 400 dict def systemdict /errordict known not {/errordict 10 dict def errordict /rangecheck {stop} put} if % The readline in PS 23.0 doesn't recognize cr's as nl's on AppleTalk FrameDict /tmprangecheck errordict /rangecheck get put errordict /rangecheck {FrameDict /bug true put} put FrameDict /bug false put mark % Some PS machines read past the CR, so keep the following 3 lines together! currentfile 5 string readline 00 0000000000 cleartomark errordict /rangecheck FrameDict /tmprangecheck get put FrameDict /bug get { /readline { /gstring exch def /gfile exch def /gindex 0 def { gfile read pop dup 10 eq {exit} if dup 13 eq {exit} if gstring exch gindex exch put /gindex gindex 1 add def } loop pop gstring 0 gindex getinterval true } bind def } if /FMshowpage /showpage load def /FMquit /quit load def /FMFAILURE { dup = flush FMshowpage /Helvetica findfont 12 scalefont setfont 72 200 moveto show 72 220 moveto show FMshowpage FMquit } def /FMVERSION { FMversion ne { (Frame product version does not match ps_prolog! Check installation;) (also check ~/fminit and ./fminit for old versions) FMFAILURE } if } def /FMBADEPSF { (Adobe's PostScript Language Reference Manual, 2nd Edition, section H.2.4) (says your EPS file is not valid, as it calls X ) dup dup (X) search pop exch pop exch pop length 5 -1 roll putinterval FMFAILURE } def /fmConcatProcs { /proc2 exch cvlit def/proc1 exch cvlit def/newproc proc1 length proc2 length add array def newproc 0 proc1 putinterval newproc proc1 length proc2 putinterval newproc cvx }def FrameDict begin [ /ALDsave /FMdicttop /FMoptop /FMpointsize /FMsaveobject /b /bitmapsave /blut /bpside /bs /bstring /bwidth /c /cf /cs /cynu /depth /edown /fh /fillvals /fw /fx /fy /g /gfile /gindex /grnt /gryt /gstring /height /hh /i /im /indx /is /k /kk /landscape /lb /len /llx /lly /m /magu /manualfeed /n /offbits /onbits /organgle /orgbangle /orgbfreq /orgbproc /orgbxfer /orgfreq /orggangle /orggfreq /orggproc /orggxfer /orgmatrix /orgproc /orgrangle /orgrfreq /orgrproc /orgrxfer /orgxfer /pagesave /paperheight /papersizedict /paperwidth /pos /pwid /r /rad /redt /sl /str /tran /u /urx /ury /val /width /width /ws /ww /x /x1 /x2 /xindex /xpoint /xscale /xx /y /y1 /y2 /yelu /yindex /ypoint /yscale /yy ] { 0 def } forall /FmBD {bind def} bind def systemdict /pdfmark known { /fMAcrobat true def /FmPD /pdfmark load def /FmPT /show load def currentdistillerparams /CoreDistVersion get 2000 ge { /FmPD2 /pdfmark load def /FmPA { mark exch /Dest exch 5 3 roll /View [ /XYZ null 6 -2 roll FmDC exch pop null] /DEST FmPD }FmBD } { /FmPD2 /cleartomark load def /FmPA {pop pop pop}FmBD } ifelse } { /fMAcrobat false def /FmPD /cleartomark load def /FmPD2 /cleartomark load def /FmPT /pop load def /FmPA {pop pop pop}FmBD } ifelse /FmDC { transform fMDefaultMatrix itransform cvi exch cvi exch }FmBD /FmBx { dup 3 index lt {3 1 roll exch} if 1 index 4 index lt {4 -1 roll 3 1 roll exch 4 1 roll} if }FmBD /FMnone 0 def /FMcyan 1 def /FMmagenta 2 def /FMyellow 3 def /FMblack 4 def /FMcustom 5 def /fMNegative false def /FrameSepIs FMnone def /FrameSepBlack 0 def /FrameSepYellow 0 def /FrameSepMagenta 0 def /FrameSepCyan 0 def /FrameSepRed 1 def /FrameSepGreen 1 def /FrameSepBlue 1 def /FrameCurGray 1 def /FrameCurPat null def /FrameCurColors [ 0 0 0 1 0 0 0 ] def /FrameColorEpsilon .001 def /eqepsilon { sub dup 0 lt {neg} if FrameColorEpsilon le } bind def /FrameCmpColorsCMYK { 2 copy 0 get exch 0 get eqepsilon { 2 copy 1 get exch 1 get eqepsilon { 2 copy 2 get exch 2 get eqepsilon { 3 get exch 3 get eqepsilon } {pop pop false} ifelse }{pop pop false} ifelse } {pop pop false} ifelse } bind def /FrameCmpColorsRGB { 2 copy 4 get exch 0 get eqepsilon { 2 copy 5 get exch 1 get eqepsilon { 6 get exch 2 get eqepsilon }{pop pop false} ifelse } {pop pop false} ifelse } bind def /RGBtoCMYK { 1 exch sub 3 1 roll 1 exch sub 3 1 roll 1 exch sub 3 1 roll 3 copy 2 copy le { pop } { exch pop } ifelse 2 copy le { pop } { exch pop } ifelse dup dup dup 6 1 roll 4 1 roll 7 1 roll sub 6 1 roll sub 5 1 roll sub 4 1 roll } bind def /CMYKtoRGB { dup dup 4 -1 roll add 5 1 roll 3 -1 roll add 4 1 roll add 1 exch sub dup 0 lt {pop 0} if 3 1 roll 1 exch sub dup 0 lt {pop 0} if exch 1 exch sub dup 0 lt {pop 0} if exch } bind def /FrameSepInit { 1.0 RealSetgray } bind def /FrameSetSepColor { /FrameSepBlue exch def /FrameSepGreen exch def /FrameSepRed exch def /FrameSepBlack exch def /FrameSepYellow exch def /FrameSepMagenta exch def /FrameSepCyan exch def /FrameSepIs FMcustom def setCurrentScreen } bind def /FrameSetCyan { /FrameSepBlue 1.0 def /FrameSepGreen 1.0 def /FrameSepRed 0.0 def /FrameSepBlack 0.0 def /FrameSepYellow 0.0 def /FrameSepMagenta 0.0 def /FrameSepCyan 1.0 def /FrameSepIs FMcyan def setCurrentScreen } bind def /FrameSetMagenta { /FrameSepBlue 1.0 def /FrameSepGreen 0.0 def /FrameSepRed 1.0 def /FrameSepBlack 0.0 def /FrameSepYellow 0.0 def /FrameSepMagenta 1.0 def /FrameSepCyan 0.0 def /FrameSepIs FMmagenta def setCurrentScreen } bind def /FrameSetYellow { /FrameSepBlue 0.0 def /FrameSepGreen 1.0 def /FrameSepRed 1.0 def /FrameSepBlack 0.0 def /FrameSepYellow 1.0 def /FrameSepMagenta 0.0 def /FrameSepCyan 0.0 def /FrameSepIs FMyellow def setCurrentScreen } bind def /FrameSetBlack { /FrameSepBlue 0.0 def /FrameSepGreen 0.0 def /FrameSepRed 0.0 def /FrameSepBlack 1.0 def /FrameSepYellow 0.0 def /FrameSepMagenta 0.0 def /FrameSepCyan 0.0 def /FrameSepIs FMblack def setCurrentScreen } bind def /FrameNoSep { /FrameSepIs FMnone def setCurrentScreen } bind def /FrameSetSepColors { FrameDict begin [ exch 1 add 1 roll ] /FrameSepColors exch def end } bind def /FrameColorInSepListCMYK { FrameSepColors { exch dup 3 -1 roll FrameCmpColorsCMYK { pop true exit } if } forall dup true ne {pop false} if } bind def /FrameColorInSepListRGB { FrameSepColors { exch dup 3 -1 roll FrameCmpColorsRGB { pop true exit } if } forall dup true ne {pop false} if } bind def /RealSetgray /setgray load def /RealSetrgbcolor /setrgbcolor load def /RealSethsbcolor /sethsbcolor load def end /setgray { FrameDict begin FrameSepIs FMnone eq { RealSetgray } { FrameSepIs FMblack eq { RealSetgray } { FrameSepIs FMcustom eq FrameSepRed 0 eq and FrameSepGreen 0 eq and FrameSepBlue 0 eq and { RealSetgray } { 1 RealSetgray pop } ifelse } ifelse } ifelse end } bind def /setrgbcolor { FrameDict begin FrameSepIs FMnone eq { RealSetrgbcolor } { 3 copy [ 4 1 roll ] FrameColorInSepListRGB { FrameSepBlue eq exch FrameSepGreen eq and exch FrameSepRed eq and { 0 } { 1 } ifelse } { FMPColor { RealSetrgbcolor currentcmykcolor } { RGBtoCMYK } ifelse FrameSepIs FMblack eq {1.0 exch sub 4 1 roll pop pop pop} { FrameSepIs FMyellow eq {pop 1.0 exch sub 3 1 roll pop pop} { FrameSepIs FMmagenta eq {pop pop 1.0 exch sub exch pop } { FrameSepIs FMcyan eq {pop pop pop 1.0 exch sub } {pop pop pop pop 1} ifelse } ifelse } ifelse } ifelse } ifelse RealSetgray } ifelse end } bind def /sethsbcolor { FrameDict begin FrameSepIs FMnone eq { RealSethsbcolor } { RealSethsbcolor currentrgbcolor setrgbcolor } ifelse end } bind def FrameDict begin /setcmykcolor where { pop /RealSetcmykcolor /setcmykcolor load def } { /RealSetcmykcolor { 4 1 roll 3 { 3 index add 0 max 1 min 1 exch sub 3 1 roll} repeat RealSetrgbcolor pop } bind def } ifelse userdict /setcmykcolor { FrameDict begin FrameSepIs FMnone eq { RealSetcmykcolor } { 4 copy [ 5 1 roll ] FrameColorInSepListCMYK { FrameSepBlack eq exch FrameSepYellow eq and exch FrameSepMagenta eq and exch FrameSepCyan eq and { 0 } { 1 } ifelse } { FrameSepIs FMblack eq {1.0 exch sub 4 1 roll pop pop pop} { FrameSepIs FMyellow eq {pop 1.0 exch sub 3 1 roll pop pop} { FrameSepIs FMmagenta eq {pop pop 1.0 exch sub exch pop } { FrameSepIs FMcyan eq {pop pop pop 1.0 exch sub } {pop pop pop pop 1} ifelse } ifelse } ifelse } ifelse } ifelse RealSetgray } ifelse end } bind put fMLevel1 { /patScreenDict 7 dict dup begin <0f1e3c78f0e1c387> [ 45 { pop } {exch pop} .5 2 sqrt] FmBD <0f87c3e1f0783c1e> [ 135 { pop } {exch pop} .5 2 sqrt] FmBD [ 0 { pop } dup .5 2 ] FmBD [ 90 { pop } dup .5 2 ] FmBD <8142241818244281> [ 45 { 2 copy lt {exch} if pop} dup .75 2 sqrt] FmBD <03060c183060c081> [ 45 { pop } {exch pop} .875 2 sqrt] FmBD <8040201008040201> [ 135 { pop } {exch pop} .875 2 sqrt] FmBD end def } { /patProcDict 5 dict dup begin <0f1e3c78f0e1c387> { 3 setlinewidth -1 -1 moveto 9 9 lineto stroke 4 -4 moveto 12 4 lineto stroke -4 4 moveto 4 12 lineto stroke} bind def <0f87c3e1f0783c1e> { 3 setlinewidth -1 9 moveto 9 -1 lineto stroke -4 4 moveto 4 -4 lineto stroke 4 12 moveto 12 4 lineto stroke} bind def <8142241818244281> { 1 setlinewidth -1 9 moveto 9 -1 lineto stroke -1 -1 moveto 9 9 lineto stroke } bind def <03060c183060c081> { 1 setlinewidth -1 -1 moveto 9 9 lineto stroke 4 -4 moveto 12 4 lineto stroke -4 4 moveto 4 12 lineto stroke} bind def <8040201008040201> { 1 setlinewidth -1 9 moveto 9 -1 lineto stroke -4 4 moveto 4 -4 lineto stroke 4 12 moveto 12 4 lineto stroke} bind def end def /patDict 15 dict dup begin /PatternType 1 def /PaintType 2 def /TilingType 3 def /BBox [ 0 0 8 8 ] def /XStep 8 def /YStep 8 def /PaintProc { begin patProcDict bstring known { patProcDict bstring get exec } { 8 8 true [1 0 0 -1 0 8] bstring imagemask } ifelse end } bind def end def } ifelse /combineColor { FrameSepIs FMnone eq { graymode fMLevel1 or not { [/Pattern [/DeviceCMYK]] setcolorspace FrameCurColors 0 4 getinterval aload pop FrameCurPat setcolor } { FrameCurColors 3 get 1.0 ge { FrameCurGray RealSetgray } { fMAcrobat not FMPColor graymode and and { 0 1 3 { FrameCurColors exch get 1 FrameCurGray sub mul } for RealSetcmykcolor } { 4 1 6 { FrameCurColors exch get graymode { 1 exch sub 1 FrameCurGray sub mul 1 exch sub } { 1.0 lt {FrameCurGray} {1} ifelse } ifelse } for RealSetrgbcolor } ifelse } ifelse } ifelse } { FrameCurColors 0 4 getinterval aload FrameColorInSepListCMYK { FrameSepBlack eq exch FrameSepYellow eq and exch FrameSepMagenta eq and exch FrameSepCyan eq and FrameSepIs FMcustom eq and { FrameCurGray } { 1 } ifelse } { FrameSepIs FMblack eq {FrameCurGray 1.0 exch sub mul 1.0 exch sub 4 1 roll pop pop pop} { FrameSepIs FMyellow eq {pop FrameCurGray 1.0 exch sub mul 1.0 exch sub 3 1 roll pop pop} { FrameSepIs FMmagenta eq {pop pop FrameCurGray 1.0 exch sub mul 1.0 exch sub exch pop } { FrameSepIs FMcyan eq {pop pop pop FrameCurGray 1.0 exch sub mul 1.0 exch sub } {pop pop pop pop 1} ifelse } ifelse } ifelse } ifelse } ifelse graymode fMLevel1 or not { [/Pattern [/DeviceGray]] setcolorspace FrameCurPat setcolor } { graymode not fMLevel1 and { dup 1 lt {pop FrameCurGray} if } if RealSetgray } ifelse } ifelse } bind def /savematrix { orgmatrix currentmatrix pop } bind def /restorematrix { orgmatrix setmatrix } bind def /fMDefaultMatrix matrix defaultmatrix def /fMatrix2 matrix def /dpi 72 0 fMDefaultMatrix dtransform dup mul exch dup mul add sqrt def /freq dpi dup 72 div round dup 0 eq {pop 1} if 8 mul div def /sangle 1 0 fMDefaultMatrix dtransform exch atan def sangle fMatrix2 rotate fMDefaultMatrix fMatrix2 concatmatrix dup 0 get /sflipx exch def 3 get /sflipy exch def /screenIndex { 0 1 dpiranges length 1 sub { dup dpiranges exch get 1 sub dpi le {exit} {pop} ifelse } for } bind def /getCyanScreen { FMUseHighFrequencyScreens { CHighAngles CMHighFreqs} {CLowAngles CMLowFreqs} ifelse screenIndex dup 3 1 roll get 3 1 roll get /FMSpotFunction load } bind def /getMagentaScreen { FMUseHighFrequencyScreens { MHighAngles CMHighFreqs } {MLowAngles CMLowFreqs} ifelse screenIndex dup 3 1 roll get 3 1 roll get /FMSpotFunction load } bind def /getYellowScreen { FMUseHighFrequencyScreens { YHighTDot YHighFreqs} { YLowTDot YLowFreqs } ifelse screenIndex dup 3 1 roll get 3 1 roll get { 3 div {2 { 1 add 2 div 3 mul dup floor sub 2 mul 1 sub exch} repeat FMSpotFunction } } {/FMSpotFunction load } ifelse 0.0 exch } bind def /getBlackScreen { FMUseHighFrequencyScreens { KHighFreqs } { KLowFreqs } ifelse screenIndex get 45.0 /FMSpotFunction load } bind def /getSpotScreen { getBlackScreen } bind def /getCompositeScreen { getBlackScreen } bind def /FMSetScreen fMLevel1 { /setscreen load }{ { 8 dict begin /HalftoneType 1 def /SpotFunction exch def /Angle exch def /Frequency exch def /AccurateScreens FMUseAcccurateScreens def currentdict end sethalftone } bind } ifelse def /setDefaultScreen { FMPColor { orgrxfer cvx orggxfer cvx orgbxfer cvx orgxfer cvx setcolortransfer } { orgxfer cvx settransfer } ifelse orgfreq organgle orgproc cvx setscreen } bind def /setCurrentScreen { FrameSepIs FMnone eq { FMUseDefaultNoSeparationScreen { setDefaultScreen } { getCompositeScreen FMSetScreen } ifelse } { FrameSepIs FMcustom eq { FMUseDefaultSpotSeparationScreen { setDefaultScreen } { getSpotScreen FMSetScreen } ifelse } { FMUseDefaultProcessSeparationScreen { setDefaultScreen } { FrameSepIs FMcyan eq { getCyanScreen FMSetScreen } { FrameSepIs FMmagenta eq { getMagentaScreen FMSetScreen } { FrameSepIs FMyellow eq { getYellowScreen FMSetScreen } { getBlackScreen FMSetScreen } ifelse } ifelse } ifelse } ifelse } ifelse } ifelse } bind def end /FMDOCUMENT { array /FMfonts exch def /#copies exch def FrameDict begin 0 ne /manualfeed exch def /paperheight exch def /paperwidth exch def 0 ne /fMNegative exch def 0 ne /edown exch def /yscale exch def /xscale exch def fMLevel1 { manualfeed {setmanualfeed} if /FMdicttop countdictstack 1 add def /FMoptop count def setpapername manualfeed {true} {papersize} ifelse {manualpapersize} {false} ifelse {desperatepapersize} {false} ifelse {papersizefailure} if count -1 FMoptop {pop pop} for countdictstack -1 FMdicttop {pop end} for } {2 dict dup /PageSize [paperwidth paperheight] put manualfeed {dup /ManualFeed manualfeed put} if {setpagedevice} stopped {papersizefailure} if } ifelse FMPColor { currentcolorscreen cvlit /orgproc exch def /organgle exch def /orgfreq exch def cvlit /orgbproc exch def /orgbangle exch def /orgbfreq exch def cvlit /orggproc exch def /orggangle exch def /orggfreq exch def cvlit /orgrproc exch def /orgrangle exch def /orgrfreq exch def currentcolortransfer fMNegative { 1 1 4 { pop { 1 exch sub } fmConcatProcs 4 1 roll } for 4 copy setcolortransfer } if cvlit /orgxfer exch def cvlit /orgbxfer exch def cvlit /orggxfer exch def cvlit /orgrxfer exch def } { currentscreen cvlit /orgproc exch def /organgle exch def /orgfreq exch def currenttransfer fMNegative { { 1 exch sub } fmConcatProcs dup settransfer } if cvlit /orgxfer exch def } ifelse end } def /FMBEGINPAGE { FrameDict begin /pagesave save def 3.86 setmiterlimit /landscape exch 0 ne def landscape { 90 rotate 0 exch dup /pwid exch def neg translate pop }{ pop /pwid exch def } ifelse edown { [-1 0 0 1 pwid 0] concat } if 0 0 moveto paperwidth 0 lineto paperwidth paperheight lineto 0 paperheight lineto 0 0 lineto 1 setgray fill xscale yscale scale /orgmatrix matrix def gsave } def /FMENDPAGE { grestore pagesave restore end showpage } def /FMFONTDEFINE { FrameDict begin findfont ReEncode 1 index exch definefont FMfonts 3 1 roll put end } def /FMFILLS { FrameDict begin dup array /fillvals exch def dict /patCache exch def end } def /FMFILL { FrameDict begin fillvals 3 1 roll put end } def /FMNORMALIZEGRAPHICS { newpath 1 setlinewidth 0 setlinecap 0 0 0 sethsbcolor 0 setgray } bind def /FMBEGINEPSF { end /FMEPSF save def /showpage {} def % See Adobe's "PostScript Language Reference Manual, 2nd Edition", page 714. % "...the following operators MUST NOT be used in an EPS file:" (emphasis ours) /banddevice {(banddevice) FMBADEPSF} def /clear {(clear) FMBADEPSF} def /cleardictstack {(cleardictstack) FMBADEPSF} def /copypage {(copypage) FMBADEPSF} def /erasepage {(erasepage) FMBADEPSF} def /exitserver {(exitserver) FMBADEPSF} def /framedevice {(framedevice) FMBADEPSF} def /grestoreall {(grestoreall) FMBADEPSF} def /initclip {(initclip) FMBADEPSF} def /initgraphics {(initgraphics) FMBADEPSF} def /quit {(quit) FMBADEPSF} def /renderbands {(renderbands) FMBADEPSF} def /setglobal {(setglobal) FMBADEPSF} def /setpagedevice {(setpagedevice) FMBADEPSF} def /setshared {(setshared) FMBADEPSF} def /startjob {(startjob) FMBADEPSF} def /lettertray {(lettertray) FMBADEPSF} def /letter {(letter) FMBADEPSF} def /lettersmall {(lettersmall) FMBADEPSF} def /11x17tray {(11x17tray) FMBADEPSF} def /11x17 {(11x17) FMBADEPSF} def /ledgertray {(ledgertray) FMBADEPSF} def /ledger {(ledger) FMBADEPSF} def /legaltray {(legaltray) FMBADEPSF} def /legal {(legal) FMBADEPSF} def /statementtray {(statementtray) FMBADEPSF} def /statement {(statement) FMBADEPSF} def /executivetray {(executivetray) FMBADEPSF} def /executive {(executive) FMBADEPSF} def /a3tray {(a3tray) FMBADEPSF} def /a3 {(a3) FMBADEPSF} def /a4tray {(a4tray) FMBADEPSF} def /a4 {(a4) FMBADEPSF} def /a4small {(a4small) FMBADEPSF} def /b4tray {(b4tray) FMBADEPSF} def /b4 {(b4) FMBADEPSF} def /b5tray {(b5tray) FMBADEPSF} def /b5 {(b5) FMBADEPSF} def FMNORMALIZEGRAPHICS [/fy /fx /fh /fw /ury /urx /lly /llx] {exch def} forall fx fw 2 div add fy fh 2 div add translate rotate fw 2 div neg fh 2 div neg translate fw urx llx sub div fh ury lly sub div scale llx neg lly neg translate /FMdicttop countdictstack 1 add def /FMoptop count def } bind def /FMENDEPSF { count -1 FMoptop {pop pop} for countdictstack -1 FMdicttop {pop end} for FMEPSF restore FrameDict begin } bind def FrameDict begin /setmanualfeed { %%BeginFeature *ManualFeed True statusdict /manualfeed true put %%EndFeature } bind def /max {2 copy lt {exch} if pop} bind def /min {2 copy gt {exch} if pop} bind def /inch {72 mul} def /pagedimen { paperheight sub abs 16 lt exch paperwidth sub abs 16 lt and {/papername exch def} {pop} ifelse } bind def /setpapername { /papersizedict 14 dict def papersizedict begin /papername /unknown def /Letter 8.5 inch 11.0 inch pagedimen /LetterSmall 7.68 inch 10.16 inch pagedimen /Tabloid 11.0 inch 17.0 inch pagedimen /Ledger 17.0 inch 11.0 inch pagedimen /Legal 8.5 inch 14.0 inch pagedimen /Statement 5.5 inch 8.5 inch pagedimen /Executive 7.5 inch 10.0 inch pagedimen /A3 11.69 inch 16.5 inch pagedimen /A4 8.26 inch 11.69 inch pagedimen /A4Small 7.47 inch 10.85 inch pagedimen /B4 10.125 inch 14.33 inch pagedimen /B5 7.16 inch 10.125 inch pagedimen end } bind def /papersize { papersizedict begin /Letter {lettertray letter} def /LetterSmall {lettertray lettersmall} def /Tabloid {11x17tray 11x17} def /Ledger {ledgertray ledger} def /Legal {legaltray legal} def /Statement {statementtray statement} def /Executive {executivetray executive} def /A3 {a3tray a3} def /A4 {a4tray a4} def /A4Small {a4tray a4small} def /B4 {b4tray b4} def /B5 {b5tray b5} def /unknown {unknown} def papersizedict dup papername known {papername} {/unknown} ifelse get end statusdict begin stopped end } bind def /manualpapersize { papersizedict begin /Letter {letter} def /LetterSmall {lettersmall} def /Tabloid {11x17} def /Ledger {ledger} def /Legal {legal} def /Statement {statement} def /Executive {executive} def /A3 {a3} def /A4 {a4} def /A4Small {a4small} def /B4 {b4} def /B5 {b5} def /unknown {unknown} def papersizedict dup papername known {papername} {/unknown} ifelse get end stopped } bind def /desperatepapersize { statusdict /setpageparams known { paperwidth paperheight 0 1 statusdict begin {setpageparams} stopped end } {true} ifelse } bind def /papersizefailure { FMAllowPaperSizeMismatch not { (The requested paper size is not available in any currently-installed tray) (Edit the PS file to "FMAllowPaperSizeMismatch true" to use default tray) FMFAILURE } if } def /DiacriticEncoding [ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quotesingle /parenleft /parenright /asterisk /plus /comma /hyphen /period /slash /zero /one /two /three /four /five /six /seven /eight /nine /colon /semicolon /less /equal /greater /question /at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore /grave /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar /braceright /asciitilde /.notdef /Adieresis /Aring /Ccedilla /Eacute /Ntilde /Odieresis /Udieresis /aacute /agrave /acircumflex /adieresis /atilde /aring /ccedilla /eacute /egrave /ecircumflex /edieresis /iacute /igrave /icircumflex /idieresis /ntilde /oacute /ograve /ocircumflex /odieresis /otilde /uacute /ugrave /ucircumflex /udieresis /dagger /.notdef /cent /sterling /section /bullet /paragraph /germandbls /registered /copyright /trademark /acute /dieresis /.notdef /AE /Oslash /.notdef /.notdef /.notdef /.notdef /yen /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /ordfeminine /ordmasculine /.notdef /ae /oslash /questiondown /exclamdown /logicalnot /.notdef /florin /.notdef /.notdef /guillemotleft /guillemotright /ellipsis /.notdef /Agrave /Atilde /Otilde /OE /oe /endash /emdash /quotedblleft /quotedblright /quoteleft /quoteright /.notdef /.notdef /ydieresis /Ydieresis /fraction /currency /guilsinglleft /guilsinglright /fi /fl /daggerdbl /periodcentered /quotesinglbase /quotedblbase /perthousand /Acircumflex /Ecircumflex /Aacute /Edieresis /Egrave /Iacute /Icircumflex /Idieresis /Igrave /Oacute /Ocircumflex /.notdef /Ograve /Uacute /Ucircumflex /Ugrave /dotlessi /circumflex /tilde /macron /breve /dotaccent /ring /cedilla /hungarumlaut /ogonek /caron ] def /ReEncode { dup length dict begin { 1 index /FID ne {def} {pop pop} ifelse } forall 0 eq {/Encoding DiacriticEncoding def} if currentdict end } bind def FMPColor { /BEGINBITMAPCOLOR { BITMAPCOLOR} def /BEGINBITMAPCOLORc { BITMAPCOLORc} def /BEGINBITMAPTRUECOLOR { BITMAPTRUECOLOR } def /BEGINBITMAPTRUECOLORc { BITMAPTRUECOLORc } def /BEGINBITMAPCMYK { BITMAPCMYK } def /BEGINBITMAPCMYKc { BITMAPCMYKc } def } { /BEGINBITMAPCOLOR { BITMAPGRAY} def /BEGINBITMAPCOLORc { BITMAPGRAYc} def /BEGINBITMAPTRUECOLOR { BITMAPTRUEGRAY } def /BEGINBITMAPTRUECOLORc { BITMAPTRUEGRAYc } def /BEGINBITMAPCMYK { BITMAPCMYKGRAY } def /BEGINBITMAPCMYKc { BITMAPCMYKGRAYc } def } ifelse /K { FMPrintAllColorsAsBlack { dup 1 eq 2 index 1 eq and 3 index 1 eq and not {7 {pop} repeat 0 0 0 1 0 0 0} if } if FrameCurColors astore pop combineColor } bind def /graymode true def fMLevel1 { /fmGetFlip { fMatrix2 exch get mul 0 lt { -1 } { 1 } ifelse } FmBD } if /setPatternMode { fMLevel1 { 2 index patScreenDict exch known { pop pop patScreenDict exch get aload pop freq mul 5 2 roll fMatrix2 currentmatrix 1 get 0 ne { 3 -1 roll 90 add 3 1 roll sflipx 1 fmGetFlip sflipy 2 fmGetFlip neg mul } { sflipx 0 fmGetFlip sflipy 3 fmGetFlip mul } ifelse 0 lt {exch pop} {pop} ifelse fMNegative { {neg} fmConcatProcs } if bind systemdict /setscreen get exec /FrameCurGray exch def } { /bwidth exch def /bpside exch def /bstring exch def /onbits 0 def /offbits 0 def freq sangle landscape {90 add} if {/ypoint exch def /xpoint exch def /xindex xpoint 1 add 2 div bpside mul cvi def /yindex ypoint 1 add 2 div bpside mul cvi def bstring yindex bwidth mul xindex 8 idiv add get 1 7 xindex 8 mod sub bitshift and 0 ne fMNegative {not} if {/onbits onbits 1 add def 1} {/offbits offbits 1 add def 0} ifelse } setscreen offbits offbits onbits add div fMNegative {1.0 exch sub} if /FrameCurGray exch def } ifelse } { pop pop dup patCache exch known { patCache exch get } { dup patDict /bstring 3 -1 roll put patDict 9 PatFreq screenIndex get div dup matrix scale makepattern dup patCache 4 -1 roll 3 -1 roll put } ifelse /FrameCurGray 0 def /FrameCurPat exch def } ifelse /graymode false def combineColor } bind def /setGrayScaleMode { graymode not { /graymode true def fMLevel1 { setCurrentScreen } if } if /FrameCurGray exch def combineColor } bind def /normalize { transform round exch round exch itransform } bind def /dnormalize { dtransform round exch round exch idtransform } bind def /lnormalize { 0 dtransform exch cvi 2 idiv 2 mul 1 add exch idtransform pop } bind def /H { lnormalize setlinewidth } bind def /Z { setlinecap } bind def /PFill { graymode fMLevel1 or not { gsave 1 setgray eofill grestore } if } bind def /PStroke { graymode fMLevel1 or not { gsave 1 setgray stroke grestore } if stroke } bind def /X { fillvals exch get dup type /stringtype eq {8 1 setPatternMode} {setGrayScaleMode} ifelse } bind def /V { PFill gsave eofill grestore } bind def /Vclip { clip } bind def /Vstrk { currentlinewidth exch setlinewidth PStroke setlinewidth } bind def /N { PStroke } bind def /Nclip { strokepath clip newpath } bind def /Nstrk { currentlinewidth exch setlinewidth PStroke setlinewidth } bind def /M {newpath moveto} bind def /E {lineto} bind def /D {curveto} bind def /O {closepath} bind def /L { /n exch def newpath normalize moveto 2 1 n {pop normalize lineto} for } bind def /Y { L closepath } bind def /R { /y2 exch def /x2 exch def /y1 exch def /x1 exch def x1 y1 x2 y1 x2 y2 x1 y2 4 Y } bind def /rarc {rad arcto } bind def /RR { /rad exch def normalize /y2 exch def /x2 exch def normalize /y1 exch def /x1 exch def mark newpath { x1 y1 rad add moveto x1 y2 x2 y2 rarc x2 y2 x2 y1 rarc x2 y1 x1 y1 rarc x1 y1 x1 y2 rarc closepath } stopped {x1 y1 x2 y2 R} if cleartomark } bind def /RRR { /rad exch def normalize /y4 exch def /x4 exch def normalize /y3 exch def /x3 exch def normalize /y2 exch def /x2 exch def normalize /y1 exch def /x1 exch def newpath normalize moveto mark { x2 y2 x3 y3 rarc x3 y3 x4 y4 rarc x4 y4 x1 y1 rarc x1 y1 x2 y2 rarc closepath } stopped {x1 y1 x2 y2 x3 y3 x4 y4 newpath moveto lineto lineto lineto closepath} if cleartomark } bind def /C { grestore gsave R clip setCurrentScreen } bind def /CP { grestore gsave Y clip setCurrentScreen } bind def /F { FMfonts exch get FMpointsize scalefont setfont } bind def /Q { /FMpointsize exch def F } bind def /T { moveto show } bind def /RF { rotate 0 ne {-1 1 scale} if } bind def /TF { gsave moveto RF show grestore } bind def /P { moveto 0 32 3 2 roll widthshow } bind def /PF { gsave moveto RF 0 32 3 2 roll widthshow grestore } bind def /S { moveto 0 exch ashow } bind def /SF { gsave moveto RF 0 exch ashow grestore } bind def /B { moveto 0 32 4 2 roll 0 exch awidthshow } bind def /BF { gsave moveto RF 0 32 4 2 roll 0 exch awidthshow grestore } bind def /G { gsave newpath normalize translate 0.0 0.0 moveto dnormalize scale 0.0 0.0 1.0 5 3 roll arc closepath PFill fill grestore } bind def /Gstrk { savematrix newpath 2 index 2 div add exch 3 index 2 div sub exch normalize 2 index 2 div sub exch 3 index 2 div add exch translate scale 0.0 0.0 1.0 5 3 roll arc restorematrix currentlinewidth exch setlinewidth PStroke setlinewidth } bind def /Gclip { newpath savematrix normalize translate 0.0 0.0 moveto dnormalize scale 0.0 0.0 1.0 5 3 roll arc closepath clip newpath restorematrix } bind def /GG { gsave newpath normalize translate 0.0 0.0 moveto rotate dnormalize scale 0.0 0.0 1.0 5 3 roll arc closepath PFill fill grestore } bind def /GGclip { savematrix newpath normalize translate 0.0 0.0 moveto rotate dnormalize scale 0.0 0.0 1.0 5 3 roll arc closepath clip newpath restorematrix } bind def /GGstrk { savematrix newpath normalize translate 0.0 0.0 moveto rotate dnormalize scale 0.0 0.0 1.0 5 3 roll arc closepath restorematrix currentlinewidth exch setlinewidth PStroke setlinewidth } bind def /A { gsave savematrix newpath 2 index 2 div add exch 3 index 2 div sub exch normalize 2 index 2 div sub exch 3 index 2 div add exch translate scale 0.0 0.0 1.0 5 3 roll arc restorematrix PStroke grestore } bind def /Aclip { newpath savematrix normalize translate 0.0 0.0 moveto dnormalize scale 0.0 0.0 1.0 5 3 roll arc closepath strokepath clip newpath restorematrix } bind def /Astrk { Gstrk } bind def /AA { gsave savematrix newpath 3 index 2 div add exch 4 index 2 div sub exch normalize 3 index 2 div sub exch 4 index 2 div add exch translate rotate scale 0.0 0.0 1.0 5 3 roll arc restorematrix PStroke grestore } bind def /AAclip { savematrix newpath normalize translate 0.0 0.0 moveto rotate dnormalize scale 0.0 0.0 1.0 5 3 roll arc closepath strokepath clip newpath restorematrix } bind def /AAstrk { GGstrk } bind def /BEGINPRINTCODE { /FMdicttop countdictstack 1 add def /FMoptop count 7 sub def /FMsaveobject save def userdict begin /showpage {} def FMNORMALIZEGRAPHICS 3 index neg 3 index neg translate } bind def /ENDPRINTCODE { count -1 FMoptop {pop pop} for countdictstack -1 FMdicttop {pop end} for FMsaveobject restore } bind def /gn { 0 { 46 mul cf read pop 32 sub dup 46 lt {exit} if 46 sub add } loop add } bind def /cfs { /str sl string def 0 1 sl 1 sub {str exch val put} for str def } bind def /ic [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0223 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0223 0 {0 hx} {1 hx} {2 hx} {3 hx} {4 hx} {5 hx} {6 hx} {7 hx} {8 hx} {9 hx} {10 hx} {11 hx} {12 hx} {13 hx} {14 hx} {15 hx} {16 hx} {17 hx} {18 hx} {19 hx} {gn hx} {0} {1} {2} {3} {4} {5} {6} {7} {8} {9} {10} {11} {12} {13} {14} {15} {16} {17} {18} {19} {gn} {0 wh} {1 wh} {2 wh} {3 wh} {4 wh} {5 wh} {6 wh} {7 wh} {8 wh} {9 wh} {10 wh} {11 wh} {12 wh} {13 wh} {14 wh} {gn wh} {0 bl} {1 bl} {2 bl} {3 bl} {4 bl} {5 bl} {6 bl} {7 bl} {8 bl} {9 bl} {10 bl} {11 bl} {12 bl} {13 bl} {14 bl} {gn bl} {0 fl} {1 fl} {2 fl} {3 fl} {4 fl} {5 fl} {6 fl} {7 fl} {8 fl} {9 fl} {10 fl} {11 fl} {12 fl} {13 fl} {14 fl} {gn fl} ] def /ms { /sl exch def /val 255 def /ws cfs /im cfs /val 0 def /bs cfs /cs cfs } bind def 400 ms /ip { is 0 cf cs readline pop { ic exch get exec add } forall pop } bind def /rip { bis ris copy pop is 0 cf cs readline pop { ic exch get exec add } forall pop pop ris gis copy pop dup is exch cf cs readline pop { ic exch get exec add } forall pop pop gis bis copy pop dup add is exch cf cs readline pop { ic exch get exec add } forall pop } bind def /rip4 { kis cis copy pop is 0 cf cs readline pop { ic exch get exec add } forall pop pop cis mis copy pop dup is exch cf cs readline pop { ic exch get exec add } forall pop pop mis yis copy pop dup dup add is exch cf cs readline pop { ic exch get exec add } forall pop pop yis kis copy pop 3 mul is exch cf cs readline pop { ic exch get exec add } forall pop } bind def /wh { /len exch def /pos exch def ws 0 len getinterval im pos len getinterval copy pop pos len } bind def /bl { /len exch def /pos exch def bs 0 len getinterval im pos len getinterval copy pop pos len } bind def /s1 1 string def /fl { /len exch def /pos exch def /val cf s1 readhexstring pop 0 get def pos 1 pos len add 1 sub {im exch val put} for pos len } bind def /hx { 3 copy getinterval cf exch readhexstring pop pop } bind def /wbytes { dup dup 8 gt { pop 8 idiv mul } { 8 eq {pop} {1 eq {7 add 8 idiv} {3 add 4 idiv} ifelse} ifelse } ifelse } bind def /BEGINBITMAPBWc { 1 {} COMMONBITMAPc } bind def /BEGINBITMAPGRAYc { 8 {} COMMONBITMAPc } bind def /BEGINBITMAP2BITc { 2 {} COMMONBITMAPc } bind def /COMMONBITMAPc { /cvtProc exch def /depth exch def gsave 3 index 2 div add exch 4 index 2 div add exch translate rotate 1 index 2 div neg 1 index 2 div neg translate scale /height exch def /width exch def /lb width depth wbytes def sl lb lt {lb ms} if /bitmapsave save def cvtProc /is im 0 lb getinterval def ws 0 lb getinterval is copy pop /cf currentfile def width height depth [width 0 0 height neg 0 height] {ip} image bitmapsave restore grestore } bind def /BEGINBITMAPBW { 1 {} COMMONBITMAP } bind def /BEGINBITMAPGRAY { 8 {} COMMONBITMAP } bind def /BEGINBITMAP2BIT { 2 {} COMMONBITMAP } bind def /COMMONBITMAP { /cvtProc exch def /depth exch def gsave 3 index 2 div add exch 4 index 2 div add exch translate rotate 1 index 2 div neg 1 index 2 div neg translate scale /height exch def /width exch def /bitmapsave save def cvtProc /is width depth wbytes string def /cf currentfile def width height depth [width 0 0 height neg 0 height] {cf is readhexstring pop} image bitmapsave restore grestore } bind def /ngrayt 256 array def /nredt 256 array def /nbluet 256 array def /ngreent 256 array def fMLevel1 { /colorsetup { currentcolortransfer /gryt exch def /blut exch def /grnt exch def /redt exch def 0 1 255 { /indx exch def /cynu 1 red indx get 255 div sub def /magu 1 green indx get 255 div sub def /yelu 1 blue indx get 255 div sub def /kk cynu magu min yelu min def /u kk currentundercolorremoval exec def % /u 0 def nredt indx 1 0 cynu u sub max sub redt exec put ngreent indx 1 0 magu u sub max sub grnt exec put nbluet indx 1 0 yelu u sub max sub blut exec put ngrayt indx 1 kk currentblackgeneration exec sub gryt exec put } for {255 mul cvi nredt exch get} {255 mul cvi ngreent exch get} {255 mul cvi nbluet exch get} {255 mul cvi ngrayt exch get} setcolortransfer {pop 0} setundercolorremoval {} setblackgeneration } bind def } { /colorSetup2 { [ /Indexed /DeviceRGB 255 {dup red exch get 255 div exch dup green exch get 255 div exch blue exch get 255 div} ] setcolorspace } bind def } ifelse /fakecolorsetup { /tran 256 string def 0 1 255 {/indx exch def tran indx red indx get 77 mul green indx get 151 mul blue indx get 28 mul add add 256 idiv put} for currenttransfer {255 mul cvi tran exch get 255.0 div} exch fmConcatProcs settransfer } bind def /BITMAPCOLOR { /depth 8 def gsave 3 index 2 div add exch 4 index 2 div add exch translate rotate 1 index 2 div neg 1 index 2 div neg translate scale /height exch def /width exch def /bitmapsave save def fMLevel1 { colorsetup /is width depth wbytes string def /cf currentfile def width height depth [width 0 0 height neg 0 height] {cf is readhexstring pop} {is} {is} true 3 colorimage } { colorSetup2 /is width depth wbytes string def /cf currentfile def 7 dict dup begin /ImageType 1 def /Width width def /Height height def /ImageMatrix [width 0 0 height neg 0 height] def /DataSource {cf is readhexstring pop} bind def /BitsPerComponent depth def /Decode [0 255] def end image } ifelse bitmapsave restore grestore } bind def /BITMAPCOLORc { /depth 8 def gsave 3 index 2 div add exch 4 index 2 div add exch translate rotate 1 index 2 div neg 1 index 2 div neg translate scale /height exch def /width exch def /lb width depth wbytes def sl lb lt {lb ms} if /bitmapsave save def fMLevel1 { colorsetup /is im 0 lb getinterval def ws 0 lb getinterval is copy pop /cf currentfile def width height depth [width 0 0 height neg 0 height] {ip} {is} {is} true 3 colorimage } { colorSetup2 /is im 0 lb getinterval def ws 0 lb getinterval is copy pop /cf currentfile def 7 dict dup begin /ImageType 1 def /Width width def /Height height def /ImageMatrix [width 0 0 height neg 0 height] def /DataSource {ip} bind def /BitsPerComponent depth def /Decode [0 255] def end image } ifelse bitmapsave restore grestore } bind def /BITMAPTRUECOLORc { /depth 24 def gsave 3 index 2 div add exch 4 index 2 div add exch translate rotate 1 index 2 div neg 1 index 2 div neg translate scale /height exch def /width exch def /lb width depth wbytes def sl lb lt {lb ms} if /bitmapsave save def /is im 0 lb getinterval def /ris im 0 width getinterval def /gis im width width getinterval def /bis im width 2 mul width getinterval def ws 0 lb getinterval is copy pop /cf currentfile def width height 8 [width 0 0 height neg 0 height] {width rip pop ris} {gis} {bis} true 3 colorimage bitmapsave restore grestore } bind def /BITMAPCMYKc { /depth 32 def gsave 3 index 2 div add exch 4 index 2 div add exch translate rotate 1 index 2 div neg 1 index 2 div neg translate scale /height exch def /width exch def /lb width depth wbytes def sl lb lt {lb ms} if /bitmapsave save def /is im 0 lb getinterval def /cis im 0 width getinterval def /mis im width width getinterval def /yis im width 2 mul width getinterval def /kis im width 3 mul width getinterval def ws 0 lb getinterval is copy pop /cf currentfile def width height 8 [width 0 0 height neg 0 height] {width rip4 pop cis} {mis} {yis} {kis} true 4 colorimage bitmapsave restore grestore } bind def /BITMAPTRUECOLOR { gsave 3 index 2 div add exch 4 index 2 div add exch translate rotate 1 index 2 div neg 1 index 2 div neg translate scale /height exch def /width exch def /bitmapsave save def /is width string def /gis width string def /bis width string def /cf currentfile def width height 8 [width 0 0 height neg 0 height] { cf is readhexstring pop } { cf gis readhexstring pop } { cf bis readhexstring pop } true 3 colorimage bitmapsave restore grestore } bind def /BITMAPCMYK { gsave 3 index 2 div add exch 4 index 2 div add exch translate rotate 1 index 2 div neg 1 index 2 div neg translate scale /height exch def /width exch def /bitmapsave save def /is width string def /mis width string def /yis width string def /kis width string def /cf currentfile def width height 8 [width 0 0 height neg 0 height] { cf is readhexstring pop } { cf mis readhexstring pop } { cf yis readhexstring pop } { cf kis readhexstring pop } true 4 colorimage bitmapsave restore grestore } bind def /BITMAPTRUEGRAYc { /depth 24 def gsave 3 index 2 div add exch 4 index 2 div add exch translate rotate 1 index 2 div neg 1 index 2 div neg translate scale /height exch def /width exch def /lb width depth wbytes def sl lb lt {lb ms} if /bitmapsave save def /is im 0 lb getinterval def /ris im 0 width getinterval def /gis im width width getinterval def /bis im width 2 mul width getinterval def ws 0 lb getinterval is copy pop /cf currentfile def width height 8 [width 0 0 height neg 0 height] {width rip pop ris gis bis width gray} image bitmapsave restore grestore } bind def /BITMAPCMYKGRAYc { /depth 32 def gsave 3 index 2 div add exch 4 index 2 div add exch translate rotate 1 index 2 div neg 1 index 2 div neg translate scale /height exch def /width exch def /lb width depth wbytes def sl lb lt {lb ms} if /bitmapsave save def /is im 0 lb getinterval def /cis im 0 width getinterval def /mis im width width getinterval def /yis im width 2 mul width getinterval def /kis im width 3 mul width getinterval def ws 0 lb getinterval is copy pop /cf currentfile def width height 8 [width 0 0 height neg 0 height] {width rip pop cis mis yis kis width cgray} image bitmapsave restore grestore } bind def /cgray { /ww exch def /k exch def /y exch def /m exch def /c exch def 0 1 ww 1 sub { /i exch def c i get m i get y i get k i get CMYKtoRGB .144 mul 3 1 roll .587 mul 3 1 roll .299 mul add add c i 3 -1 roll floor cvi put } for c } bind def /gray { /ww exch def /b exch def /g exch def /r exch def 0 1 ww 1 sub { /i exch def r i get .299 mul g i get .587 mul b i get .114 mul add add r i 3 -1 roll floor cvi put } for r } bind def /BITMAPTRUEGRAY { gsave 3 index 2 div add exch 4 index 2 div add exch translate rotate 1 index 2 div neg 1 index 2 div neg translate scale /height exch def /width exch def /bitmapsave save def /is width string def /gis width string def /bis width string def /cf currentfile def width height 8 [width 0 0 height neg 0 height] { cf is readhexstring pop cf gis readhexstring pop cf bis readhexstring pop width gray} image bitmapsave restore grestore } bind def /BITMAPCMYKGRAY { gsave 3 index 2 div add exch 4 index 2 div add exch translate rotate 1 index 2 div neg 1 index 2 div neg translate scale /height exch def /width exch def /bitmapsave save def /is width string def /yis width string def /mis width string def /kis width string def /cf currentfile def width height 8 [width 0 0 height neg 0 height] { cf is readhexstring pop cf mis readhexstring pop cf yis readhexstring pop cf kis readhexstring pop width cgray} image bitmapsave restore grestore } bind def /BITMAPGRAY { 8 {fakecolorsetup} COMMONBITMAP } bind def /BITMAPGRAYc { 8 {fakecolorsetup} COMMONBITMAPc } bind def /ENDBITMAP { } bind def end /ALDmatrix matrix def ALDmatrix currentmatrix pop /StartALD { /ALDsave save def savematrix ALDmatrix setmatrix } bind def /InALD { restorematrix } bind def /DoneALD { ALDsave restore } bind def /I { setdash } bind def /J { [] 0 setdash } bind def %%EndProlog %%BeginSetup (5.0) FMVERSION 1 1 0 0 612 792 0 1 21 FMDOCUMENT 0 0 /Times-Roman FMFONTDEFINE 1 1 /Symbol FMFONTDEFINE 2 0 /Times-Italic FMFONTDEFINE 3 0 /Times-Bold FMFONTDEFINE 4 0 /Courier FMFONTDEFINE 5 0 /Times-BoldItalic FMFONTDEFINE 6 0 /Courier-Oblique FMFONTDEFINE 7 0 /Courier-Bold FMFONTDEFINE 32 FMFILLS 0 0 FMFILL 1 0.1 FMFILL 2 0.3 FMFILL 3 0.5 FMFILL 4 0.7 FMFILL 5 0.9 FMFILL 6 0.97 FMFILL 7 1 FMFILL 8 <0f1e3c78f0e1c387> FMFILL 9 <0f87c3e1f0783c1e> FMFILL 10 FMFILL 11 FMFILL 12 <8142241818244281> FMFILL 13 <03060c183060c081> FMFILL 14 <8040201008040201> FMFILL 16 1 FMFILL 17 0.9 FMFILL 18 0.7 FMFILL 19 0.5 FMFILL 20 0.3 FMFILL 21 0.1 FMFILL 22 0.03 FMFILL 23 0 FMFILL 24 FMFILL 25 FMFILL 26 <3333333333333333> FMFILL 27 <0000ffff0000ffff> FMFILL 28 <7ebddbe7e7dbbd7e> FMFILL 29 FMFILL 30 <7fbfdfeff7fbfdfe> FMFILL %%EndSetup %%Page: "1" 1 %%BeginPaperSize: Letter %%EndPaperSize 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K J 0 0 0 1 0 0 0 K 54 54 558 720 R 7 X 0 0 0 1 0 0 0 K V 0 12 Q 0 X -0.46 (This is the JavaBeans) 108 472 P 1 F -0.46 (\324) 210.29 472 P 0 F -0.46 ( API specification. It describes the core specification for the JavaBeans) 220.97 472 P (component architecture.) 108 458 T 0.27 (This version \0501.01\051 of the specification describes the JavaBeans APIs that are present in JDK) 108 438 P 0.47 (1.1. These included some very minor API additions to the 1.00-A specification of December) 108 424 P -0.13 (1996. This version of the spec has also been updated to include various minor clarifications of) 108 410 P 0.19 (various sections of the 1.00 spec, and to include some additional guidance for component de-) 108 396 P (velopers. See the change history on page) 108 382 T (112.) 306.62 382 T 0.15 (Because of the volume of interest in JavaBeans we can\325t normally respond individually to re-) 108 342 P 0.1 (viewer comments, but we do carefully read and consider all reviewer input. Please send com-) 108 328 P (ments to java-beans@java.sun.com.) 108 314 T (To stay in touch with the JavaBeans project, visit our web site at:) 108 274 T ( http://java.sun.com/beans) 108 254 T 54 54 558 720 C 54 540 558 720 C 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 54 540 558 720 R 7 X 0 0 0 1 0 0 0 K V 234 612 414 639 R V 2 24 Q 0 X (Sun Microsystems) 234 623 T 234 549 558 603 R 7 X V 0 X (JavaBeans) 432.67 587 T 1 F (\324) 536.64 587 T 54 657 558 666 R 3 X V 0.5 H 0 Z N 54 666 558 666 2 L V 1 H 2 Z 0 X N 54 675 162 711 R 7 X V 0 X 0 54 675 -54 -675 108 36 BEGINPRINTCODE %! % SUN logo % get width and height from Frame. /dlh exch def /dlw exch def % adjust dlw and translate to make it fit in a Frame rect. .015 dlw mul dup translate /dlw dlw .97 mul def % size of quadrant in logo /qsize 24 def % size of space in slot of U. This is adjusted at small scales /spsize 1 def % since qsize is not adjusted we precompute this /qs2 qsize 2 div def /qs4 qsize 4 div def /sunwd qsize 3.9 mul def /amin { abs exch abs 2 copy lt {pop} {exch pop} ifelse } bind def /amax { abs exch abs 2 copy gt {pop} {exch pop} ifelse } bind def /u { newpath uwd2 neg uht2 moveto 0 uwd2 uht2 sub uwd2 180 0 arc uwd2 uht2 lineto spd2 uht2 lineto 0 uwd2 uht2 sub spd2 0 180 arcn spd2 neg uht2 lineto closepath fill } bind def /quarter { gsave qs4 qs2 translate u qs2 0 translate 180 rotate u grestore } bind def /logo { % adjust space size so that space is maintain at small res. spsize dup dtransform amin 2.5 amax dup idtransform amax /spsize exch def spsize qsize ge { /spsize 0 def } if % compute sizes for U /lw qs2 spsize 2 mul sub 2 div def /spd2 spsize 2 div def /uht2 qsize spsize sub 2 div def /uwd2 lw spd2 add def % draw the quadrants gsave 45 rotate quarter 90 rotate quarter 90 rotate quarter 90 rotate quarter grestore } def /sun { sunwd 272 div dup scale -216.275 -533.334 translate 1 setlinecap 1 setlinejoin 2 setlinewidth % lowleft=216.275,533.334 upright=488.274,635 newpath 270.75 604.375 moveto 266.25 606.25 269.026 615.174 263.5 616.875 curveto 257 618.875 247.488 619.847 244 612.375 curveto 241.375 606.75 244.545 599.441 251.375 596.75 curveto 262.648 592.309 278.206 592.094 283.875 580.125 curveto 286.125 575.375 286.066 566.289 284.625 560.125 curveto 281.5 546.75 265.533 536.608 250.875 535.5 curveto 240.713 534.732 228.457 533.334 219.875 539.875 curveto 221.902 548.102 219 557.25 221.25 565.5 curveto 221.506 566.436 228.205 566.119 229.25 565 curveto 232.75 561.25 231.396 554.125 237.375 550.75 curveto 243.684 547.188 250.147 545.921 256.125 550.875 curveto 260.5 554.5 262.107 564.823 255.625 568.25 curveto 244.572 574.095 232 572 222.375 583.5 curveto 216.275 590.789 217.186 602.558 219.75 611.25 curveto 222 618.875 233.369 629.37 244.625 630.25 curveto 252.625 630.875 273.891 631.686 279.125 624.125 curveto 280.25 622.5 279.625 609.125 277.375 605.125 curveto 276.638 603.813 271.695 603.981 270.75 604.375 curveto closepath fill newpath 395.411 610.875 moveto 395.18 617.191 384.484 612.444 381 616.625 curveto 379.581 618.328 380.496 624.597 382.25 625 curveto 394.505 627.81 398.848 626.858 417.938 632.312 curveto 421.875 633.437 421.5 621.367 421.5 620.25 curveto 421.5 619.062 423.631 619.088 424.625 619.625 curveto 437.125 626.375 447.875 635 462.875 631.125 curveto 471.29 628.951 477.672 621.298 478 612.75 curveto 478.75 593.25 475.539 576.927 477.25 557.25 curveto 477.375 549.5 486.333 552.552 486.875 549.625 curveto 487.347 547.08 488.274 539.692 485.875 539.946 curveto 462.875 542.375 456.875 537.375 451.518 540.375 curveto 449.793 541.34 451.335 549.006 451.518 552.75 curveto 452.518 573.25 453.375 583.75 449.853 604.809 curveto 447.937 616.262 431.5 613.875 423.125 608 curveto 423.125 590 423.107 573.5 423.14 556.025 curveto 423.152 550.156 432.25 552.25 434.75 548.625 curveto 436.547 546.019 435.5 538.375 430.625 539.375 curveto 416.656 542.24 403.875 540.25 389.625 539.375 curveto 387.017 539.214 386.705 544.768 387.25 547.375 curveto 388.189 551.861 395.7 549.335 395.75 553.625 curveto 396 574.728 396.161 590.375 395.411 610.875 curveto closepath fill newpath 295.625 610 moveto 295.087 616.297 285.699 610.944 282.215 615.125 curveto 280.796 616.828 281.711 623.097 283.465 623.5 curveto 295.72 626.31 297.323 624.806 318.125 630.75 curveto 321.625 631.75 321.018 625.242 321.018 624.125 curveto 321.018 600.247 320.099 571.274 323.125 563.75 curveto 327.75 552.25 349.875 557.329 349.875 565.75 curveto 349.875 581.75 350.286 593.875 349.661 610.625 curveto 349.426 616.941 338.734 611.569 335.25 615.75 curveto 333.831 617.453 334.746 623.722 336.5 624.125 curveto 348.755 626.935 354.054 624.947 372.75 631.625 curveto 376.25 632.875 376.125 627.617 376.125 626.5 curveto 376.125 599.75 375.712 581.996 376.125 556.375 curveto 376.25 548.625 385.208 551.677 385.75 548.75 curveto 386.222 546.205 387.159 539.375 384.75 539.5 curveto 367.875 540.375 355.33 536.675 351.25 539.5 curveto 349.625 540.625 351.61 548.144 351.25 551.875 curveto 351.178 552.621 350.377 553.739 349.5 553.25 curveto 340.541 548.24 336.647 537.684 325.375 536.5 curveto 313.54 535.256 300.362 540.698 297.375 552.875 curveto 294.125 566.125 296.875 595.375 295.625 610 curveto closepath fill } def /logotype { gsave % origin of logotype is lower left edge qsize 1.29 mul dup translate logo grestore gsave qsize 2.98 mul qsize .54 mul translate sun grestore gsave qsize 3.01 mul 0 moveto /Helvetica findfont qsize .6 mul round scalefont setfont qsize 3.9 mul (microsystems) stringwidth pop sub 12 div 0 (microsystems) ashow grestore } def dlw qsize 6.879 mul div dup scale logotype showpage ENDPRINTCODE 234 612 558 612 2 L 7 X V 0.5 H 0 X N 54 549 558 549 2 L 7 X V 1 H 0 X N 54 54 558 720 C 0 0 612 792 C 54 54 558 126 C 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 54 54 558 126 R 7 X 0 0 0 1 0 0 0 K V 306 72 552 108 R V 2 12 Q 0 X (Graham Hamilton \050Editor\051) 422 100 T (July 24, 1997) 487.01 78 T 63 72 216 108 R 7 X V 0 X (Version 1.01) 63 100 T 54 117 558 117 2 L 7 X V 1 H 2 Z 0 X N 54 63 558 63 2 L 7 X V 0 X N 0 0 612 792 C 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "1" 1 %%Page: "2" 2 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 54 746 558 756 R 7 X 0 0 0 1 0 0 0 K V 2 10 Q 0 X (JavaBeans) 54 749.33 T 54 32.67 558 42.67 R 7 X V 0 X (Sun Microsystems) 54 36 T (2) 303.5 36 T (7/24/97) 527.44 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 54 72 558 720 R 7 X V 0 F 0 X (Copyright \251 1996, 1997 by Sun Microsystems Inc.) 108 581.33 T (2550 Garcia Avenue, Mountain View, CA 94043.) 108 564.33 T (All rights reserved.) 108 547.33 T -0.61 (RESTRICTED RIGHTS: Use, duplication or disclosure by the government is subject to the restrictions as set forth) 108 394.33 P 0.23 (in subparagraph \050c\051 \0501\051 \050ii\051 of the Rights in Technical Data and Computer Software Clause as DFARS 252.227-) 108 382.33 P (7013 and FAR 52.227-19.) 108 370.33 T 0.08 (Sun, Sun Microsystems, the Sun logo, Java, JavaBeans, JDBC, and JavaSoft, are trademarks or registered trade-) 108 302.33 P (marks of Sun Microsystems, Inc.) 108 290.33 T -0.3 (THIS PUBLICATION IS PROVIDED \322AS IS\323 WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS) 108 239.33 P -0.4 (OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MECHANTABIL-) 108 227.33 P (ITY, FITNESS FOR A PARTICULAR USE, OR NON-INFRINGEMENT.) 108 215.33 T 2.37 (THIS PUBLICATION COULD INCLUDE TECHNICAL INACCURACIES OR TYPOGRAPHICAL ER-) 108 198.33 P 0.09 (RORS. CHANGES ARE PERIODICALLY ADDED TO THE INFORMATION HEREIN; THESE CHANGES) 108 186.33 P 0.38 (WILL BE INCORPORATED IN NEW EDITIONS OF THE PUBLICATION. SUN MICROSYSTEMS, INC.,) 108 174.33 P 1.19 (MAY MAKE NEW IMPROVEMENTS AND/OR CHANGES IN THE PRODUCT\050S\051 AND/OR THE PRO-) 108 162.33 P (GRAM\050S\051 DESCRIBED IN THIS PUBLICATION AT ANY TIME.) 108 150.33 T 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "2" 2 %%Page: "3" 3 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 54 746 558 756 R 7 X 0 0 0 1 0 0 0 K V 2 10 Q 0 X (JavaBeans) 54 749.33 T 54 32.67 558 42.67 R 7 X V 0 X (Sun Microsystems) 54 36 T (3) 303.5 36 T (7/24/97) 527.44 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 54 72 558 720 R 7 X V 3 18 Q 0 X (Contents) 270 708 T 0 12 Q (Acknowledgments) 126 674 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .) 216 674 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( 5) 477 674 T 0 0 0 1 0 0 0 K (Related Documents) 126 650 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .) 222 650 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( 6) 477 650 T 0 0 0 1 0 0 0 K (1 Introduction) 126 626 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .) 201 626 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( 7) 477 626 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 10 Q (1.1 Component granularity) 154.8 610.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .) 270 610.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (7) 481 610.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (1.2 Portability) 154.8 598.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .) 217.5 598.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (7) 481 598.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (1.3 A uniform, high-quality API) 154.8 586.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .) 290 586.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (8) 481 586.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (1.4 Simplicity) 154.8 574.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .) 217.5 574.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (8) 481 574.33 T 0 0 0 1 0 0 0 K 0 12 Q (2 Fundamentals) 126 551 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .) 210 551 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( 9) 477 551 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 10 Q (2.1 What is a Bean?) 154.8 535.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .) 242.5 535.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (9) 481 535.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (2.2 Properties, events, and methods) 154.8 523.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .) 302.5 523.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (10) 476 523.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (2.3 Design time v. run-time) 154.8 511.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .) 272.5 511.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (10) 476 511.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (2.4 Security Issues) 154.8 499.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .) 237.5 499.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (11) 476 499.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (2.5 Local activation) 154.8 487.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .) 240 487.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (11) 476 487.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (2.6 Java Beans as links to remote state) 154.8 475.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .) 315 475.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (12) 476 475.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (2.7 Invisible beans) 154.8 463.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .) 237.5 463.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (13) 476 463.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (2.8 Multi-Threading) 154.8 451.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .) 242.5 451.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (14) 476 451.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (2.9 Internationalization) 154.8 439.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .) 255 439.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (14) 476 439.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (2.10 Alternate type views of a bean.) 154.8 427.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .) 305 427.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (14) 476 427.33 T 0 0 0 1 0 0 0 K 0 12 Q (3 Scenarios) 126 404 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .) 189 404 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( 16) 471 404 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 10 Q (3.1 Using an application builder to construct an Applet) 154.8 388.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (. . . . . . . . . . . . . . . . . . .) 380 388.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (16) 476 388.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (3.2 Using beans in a hand-written Applet) 154.8 376.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .) 325 376.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (18) 476 376.33 T 0 0 0 1 0 0 0 K 0 12 Q (4 Windowing Environment Issues) 126 353 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( . . . . . . . . . . . . . . . . . . . . . . . . . . . . .) 297 353 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( 21) 471 353 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 10 Q (4.1 Uniform Data Transfer mechanism) 154.8 337.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .) 317.5 337.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (21) 476 337.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (4.2 Clipboard/Selection services) 154.8 325.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .) 290 325.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (21) 476 325.33 T 0 0 0 1 0 0 0 K 0 12 Q (5 Persistent Storage) 126 302 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .) 228 302 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( 22) 471 302 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 10 Q (5.1 Goals) 154.8 286.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .) 200 286.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (22) 476 286.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (5.2 A composite solution) 154.8 274.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .) 262.5 274.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (22) 476 274.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (5.3 What should be saved) 154.8 262.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .) 265 262.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (22) 476 262.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (5.4 Persistence though generated initialization code) 154.8 250.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( . . . . . . . . . . . . . . . . . . . . .) 367.5 250.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (22) 476 250.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (5.5 Summary of persistence) 154.8 238.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .) 272.5 238.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (23) 476 238.33 T 0 0 0 1 0 0 0 K 0 12 Q (6 Events) 126 215 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .) 174 215 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( 24) 471 215 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 10 Q (6.1 Goals) 154.8 199.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .) 200 199.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (24) 476 199.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (6.2 Overview) 154.8 187.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .) 215 187.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (24) 476 187.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (6.3 Event State Objects) 154.8 175.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .) 255 175.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (25) 476 175.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (6.4 EventListener Interfaces) 154.8 163.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .) 275 163.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (27) 476 163.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (6.5 Event Listener Registration) 154.8 151.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .) 285 151.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (28) 476 151.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (6.6 Event Delivery Semantics) 154.8 139.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .) 280 139.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (30) 476 139.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (6.7 Event Adaptors) 154.8 127.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .) 237.5 127.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (32) 476 127.33 T 0 0 0 1 0 0 0 K 0 12 Q (7 Properties) 126 104 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .) 192 104 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( 40) 471 104 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 10 Q (7.1 Accessor methods) 154.8 88.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .) 250 88.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (40) 476 88.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (7.2 Indexed properties) 154.8 76.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .) 250 76.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (40) 476 76.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "3" 3 %%Page: "4" 4 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 54 746 558 756 R 7 X 0 0 0 1 0 0 0 K V 2 10 Q 0 X (JavaBeans) 54 749.33 T 54 32.67 558 42.67 R 7 X V 0 X (Sun Microsystems) 54 36 T (4) 303.5 36 T (7/24/97) 527.44 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 54 72 558 720 R 7 X V 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 F 0 X (7.3 Exceptions on accessor methods) 154.8 713.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .) 305 713.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (41) 476 713.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (7.4 Bound and constrained properties) 154.8 701.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .) 310 701.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (41) 476 701.33 T 0 0 0 1 0 0 0 K 0 12 Q (8 Introspection) 126 678 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .) 207 678 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( 54) 471 678 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 10 Q (8.1 Overview) 154.8 662.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .) 215 662.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (54) 476 662.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (8.2 Overview of) 154.8 650.33 T 2 F (Design Patterns) 225.06 650.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 F ( . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .) 292.5 650.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (54) 476 650.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (8.3 Design Patterns for Properties) 154.8 638.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .) 297.5 638.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (55) 476 638.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (8.4 Design Patterns for Events) 154.8 626.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .) 282.5 626.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (56) 476 626.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (8.5 Design Patterns for Methods) 154.8 614.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .) 290 614.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (56) 476 614.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (8.6 Explicit Specification using a BeanInfo class) 154.8 602.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (. . . . . . . . . . . . . . . . . . . . . . . .) 355 602.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (56) 476 602.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (8.7 Analyzing a Bean) 154.8 590.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .) 247.5 590.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (57) 476 590.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (8.8 Capitalization of inferred names.) 154.8 578.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .) 307.5 578.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (57) 476 578.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (8.9 Security) 154.8 566.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .) 210 566.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (58) 476 566.33 T 0 0 0 1 0 0 0 K 0 12 Q (9 Customization) 126 543 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .) 213 543 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( 83) 471 543 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 10 Q (9.1 Storing customized components) 154.8 527.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .) 305 527.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (83) 476 527.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (9.2 Property editors) 154.8 515.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .) 240 515.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (83) 476 515.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (9.3 Customizers) 154.8 503.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .) 225 503.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (85) 476 503.33 T 0 0 0 1 0 0 0 K 0 12 Q (10 Miscellaneous) 126 480 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .) 219 480 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( 96) 471 480 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 10 Q (10.1 java.beans.Beans) 154.8 464.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .) 250 464.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (96) 476 464.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (10.2 java.beans.Visibility) 154.8 452.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .) 262.5 452.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (96) 476 452.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (10.3 Instantiating a bean) 154.8 440.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .) 260 440.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (96) 476 440.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (10.4 Obtaining different type views of a Java Bean) 154.8 428.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (. . . . . . . . . . . . . . . . . . . . . .) 365 428.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (97) 476 428.33 T 0 0 0 1 0 0 0 K 0 12 Q (11 Packaging) 126 405 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .) 198 405 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( 102) 465 405 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 10 Q (11.1 Goals and Non Goals) 154.8 389.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .) 267.5 389.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (102) 471 389.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (11.2 Overview of JAR files) 154.8 377.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .) 272.5 377.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (102) 471 377.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (11.3 Content) 154.8 365.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .) 212.5 365.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (102) 471 365.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (11.4 Names of Beans) 154.8 353.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .) 247.5 353.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (103) 471 353.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (11.5 Format of Manifest File) 154.8 341.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .) 277.5 341.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (103) 471 341.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (11.6 Manifest headers used with JavaBeans) 154.8 329.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (. . . . . . . . . . . . . . . . . . . . . . . . . . .) 335 329.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (104) 471 329.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (11.7 Accessing Resource Files) 154.8 317.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .) 285 317.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (105) 471 317.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (11.8 Persistence representation) 154.8 305.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .) 285 305.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (106) 471 305.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (11.9 Help Documentation) 154.8 293.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .) 265 293.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (106) 471 293.33 T 0 0 0 1 0 0 0 K 0 12 Q (Appendix A: Transitional Beans under JDK 1.0.2) 126 270 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (. . . . . . . . . . . . . . . .) 372 270 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( 107) 465 270 T 0 0 0 1 0 0 0 K (Appendix B: Future directions) 126 246 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .) 279 246 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( 111) 465 246 T 0 0 0 1 0 0 0 K (Appendix C: Change History) 126 222 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .) 273 222 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( 112) 465 222 T 0 0 0 1 0 0 0 K (Index of Classes and Interfaces) 126 198 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .) 276 198 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( 114) 465 198 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "4" 4 %%Page: "5" 5 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 54 746 558 756 R 7 X 0 0 0 1 0 0 0 K V 2 10 Q 0 X (JavaBeans) 54 749.33 T (Acknowledgments) 485.79 749.33 T 54 32.67 558 42.67 R 7 X V 0 X (Sun Microsystems) 54 36 T (5) 303.5 36 T (7/24/97) 527.44 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 54 72 558 720 R 7 X V 3 18 Q 0 X (Acknowledgments) 237.75 708 T 0 12 Q -0.47 (The JavaBeans APIs are a broad effort that include contributions from numerous groups at Sun) 108 660 P 0.68 (and at partner companies. Many of the APIs referenced here have broader applicability than) 108 646 P -0.02 (simply JavaBeans, and we\325d like to thank their authors for helping to align them with the Jav-) 108 632 P (aBeans framework.) 108 618 T 0.12 (We would like to thank everyone who has contributed, but especially those authors who have) 108 598 P -0.11 (drafted or proposed major chunks of the APIs described here, including Tom Ball, Jeff Bonar,) 108 584 P 1.34 (Larry Cable, Amy Fowler, Graham Hamilton, Noah Mendelsohn, Eduardo Pelegri-Llopart,) 108 570 P (Carl Quinn, Jim Rhyne, Roger Riggs, John Rose, Nakul Saraiya, and Blake Sullivan.) 108 556 T -0.04 (We\325d also like to thank the many reviewers who have provided comments and suggestions on) 108 536 P 1.16 (the various drafts of the specs. The public review process was extremely valuable and the) 108 522 P -0.48 (many thoughtful comments we received helped to substantially improve the JavaBeans design.) 108 508 P 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "5" 5 %%Page: "6" 6 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 54 746 558 756 R 7 X 0 0 0 1 0 0 0 K V 2 10 Q 0 X (JavaBeans) 54 749.33 T (Related Documents) 479.96 749.33 T 54 32.67 558 42.67 R 7 X V 0 X (Sun Microsystems) 54 36 T (6) 303.5 36 T (7/24/97) 527.44 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 54 72 558 720 R 7 X V 3 18 Q 0 X (Related Documents) 233.51 708 T 0 12 Q 0.01 (This document describes the main APIs for JavaBeans. However the JavaBeans APIs are also) 108 680 P (closely related to other new Java core APIs which are described in separate documents.) 108 666 T 0.98 (For example, JavaBeans uses the new Java Object Serialization API as its main persistence) 108 646 P 0.21 (mechanism, and that mechanism has been designed to work well with beans. Similarly, Java-) 108 632 P (Beans makes heavy use of the new Java Core Reflection API, etc.) 108 618 T -0.6 (For the current status and pointers to on-line copies, check the \322Related APIs\323 link on our Java-) 108 598 P (Beans home page or go to:) 108 584 T 4 10 Q (http://java.sun.com/beans/related.html) 140.4 565.33 T 0 12 Q (\245) 115 536 T 1.26 (\322) 126 536 P 2 F 1.26 (The Java Core Reflection API) 131.33 536 P 0 F 1.26 (\323. This describes the low-level reflection API that is) 280.33 536 P (used to provide the Introspection information described in Section 8.) 126 522 T (\245) 115 492 T 1.71 (\322) 126 492 P 2 F 1.71 (Java Object Serialization) 131.33 492 P 0 F 1.71 (\323. This describes the automatic Java Object Serialization) 256.74 492 P (mechanism that is the default mechanism for JavaBeans persistence \050see Section 5\051.) 126 478 T (\245) 115 448 T 0.86 (\322) 126 448 P 2 F 0.86 (JDK 1.1 - AWT Enhancements) 131.33 448 P 0 F 0.86 (\323. Changes to AWT, including support for drag-and-) 281.73 448 P (drop and cut-and-paste \050see Section 4\051.) 126 434 T (\245) 115 404 T 1.61 (\322) 126 404 P 2 F 1.61 (JAR file specification\323) 131.33 404 P 0 F 1.61 (. This is the standard packaging mechanism for JavaBeans.) 243.87 404 P (\050See Section 11.\051) 126 390 T (\245) 115 360 T 1.19 (\322) 126 360 P 2 F 1.19 (Remote Method Invocation) 131.33 360 P 0 F 1.19 (\323. This specifies the Java RMI distributed programming) 263.68 360 P (mechanism.) 126 346 T (\245) 115 316 T 2 F 0.86 (\322Java IDL\323) 126 316 P 0 F 0.86 (. This describes the Java mapping to the industry standard CORBA IDL) 185.2 316 P (system.) 126 302 T 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "6" 6 %%Page: "7" 7 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 54 746 558 756 R 7 X 0 0 0 1 0 0 0 K V 2 10 Q 0 X (JavaBeans) 54 749.33 T (Introduction) 508 749.33 T 54 32.67 558 42.67 R 7 X V 0 X (Sun Microsystems) 54 36 T (7) 303.5 36 T (7/24/97) 527.44 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 54 72 558 720 R 7 X V 3 18 Q 0 X (1) 81 708 T (Introduction) 108 708 T 0 12 Q -0.31 (The goal of the JavaBeans APIs is to define a) 108 680 P 2 F -0.31 (software component model) 326.19 680 P 0 F -0.31 (for Java, so that third) 457.59 680 P 0.44 (party ISVs can create and ship Java components that can be composed together into applica-) 108 666 P (tions by end users.) 108 652 T 3 14 Q (1.1) 54 624.67 T ( Component granularity) 75 624.67 T 0 12 Q (There are a range of different kinds of JavaBeans components:) 108 604 T (1.) 126 584 T -0.6 (Some JavaBean components will be used as building blocks in composing applications.) 144 584 P 0.21 (So a user may be using some kind of builder tool to connect together and customize a) 144 570 P 1.34 (set of JavaBean components s to act as an application. Thus for example, an AWT) 144 556 P (button would be a Bean.) 144 542 T (2.) 126 522 T -0.25 (Some JavaBean components will be more like regular applications, which may then be) 144 522 P 3.31 (composed together into compound documents. So a spreadsheet Nean might be) 144 508 P (embedded inside a Web page.) 144 494 T 0.16 (These two aspects overlap. For example a spreadsheet might live within a composite applica-) 108 474 P 0.69 (tion as well as within a more normal compound document. So there is more of a continuum) 108 460 P (than a sharp cutoff between \322composite applications\323 and \322compound documents\323.) 108 446 T 0.9 (The design centre for beans ranges from small controls up through simple compound docu-) 108 426 P -0.39 (ments such as Web pages. However we are not currently trying to provide the kind of high-end) 108 412 P -0.13 (document integration that is typical of full function document systems such as ClarisWorks or) 108 398 P 0.54 (Microsoft Office. Thus we provide APIs that are analogous to \050say\051 the OLE Control or Ac-) 108 384 P -0.27 (tiveX APIs, but we to do not try to provide the full range of high-end document APIs provided) 108 370 P -0.1 (by \050for example\051 OpenDoc. However, we do intend to allow beans to be embedded as compo-) 108 356 P 1.18 (nents in high-end compound documents, and we also expect that some key document suite) 108 342 P 0.84 (components \050such as word processors and spreadsheets\051 will also be supported as JavaBean) 108 328 P (components.) 108 314 T -0.04 (In general we expect that most JavaBeans components will be small to medium sized controls) 108 294 P 0.69 (and that we should make the simple cases easy and provide reasonable defaults for as much) 108 280 P (behaviour as possible.) 108 266 T 3 14 Q (1.2) 54 238.67 T ( Portability) 75 238.67 T 0 12 Q -0.55 (One of the main goals of the JavaBeans architecture is to provide a platform neutral component) 108 218 P -0.44 (architecture. When a ean is nested inside another Bean then we will provide a full functionality) 108 204 P -0.24 (implementation on all platforms. However, at the top level when the root Bean is embedded in) 108 190 P 0.5 (some platform specific container \050such as Word or Visual Basic or ClarisWorks or Netscape) 108 176 P 0.06 (Navigator\051 then the JavaBeans APIs should be integrated into the platform\325s local component) 108 162 P (architecture.) 108 148 T 0.41 (For example, this means that on the Microsoft platforms the JavaBeans APIs will be bridged) 108 128 P 0.18 (through into COM and ActiveX. Similarly, it will be possible to treat a bean as a Live Object) 108 114 P (\050n\216e OpenDoc\051 part, or to integrate a bean with LiveConnect inside Netscape Navigator.) 108 100 T 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "7" 7 %%Page: "8" 8 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 54 746 558 756 R 7 X 0 0 0 1 0 0 0 K V 2 10 Q 0 X (JavaBeans) 54 749.33 T (Introduction) 508 749.33 T 54 32.67 558 42.67 R 7 X V 0 X (Sun Microsystems) 54 36 T (8) 303.5 36 T (7/24/97) 527.44 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 54 72 558 720 R 7 X V 0 12 Q 0 X -0.56 (So a single Bean should be capable of running in a wide range of different environments. With-) 108 712 P -0.64 (in each target environment it should be able to fire events, service method invocations, etc., just) 108 698 P (like any other component.) 108 684 T 0.01 (We do not specifically discuss the different bridges as part of this document. The existence of) 108 664 P 0.29 (the bridges is transparent to JavaBeans developers and it is the bridges\325 responsibility to take) 108 650 P -0.23 (the JavaBeans APIs defined in this document and bridge them through to the platform specific) 108 636 P (component architecture.) 108 622 T -0.02 (However the need to bridge to these other component models \050notably OpenDoc, OLE/COM/) 108 602 P 0.24 (ActiveX, and LiveConnect\051 has been one of the constraints in designing the JavaBeans APIs.) 108 588 P 0.17 (We have been careful to ensure that the various beans APIs can be cleanly converted to these) 108 574 P (three main component models.) 108 560 T 3 14 Q (1.3) 54 532.67 T ( A uniform, high-quality API) 75 532.67 T 0 12 Q -0.54 (Different platforms will vary in their ability to support the full JavaBean APIs. However when-) 108 512 P 1.12 (ever a platform is unable to provide the full functionality it must provide some reasonable,) 108 498 P (harmless default instead.) 108 484 T 0.22 (So for example, if a platform doesn\325t support menubar-merging then when a Bean provides a) 108 464 P -0.71 (menubar it may pop up above the component, rather than being merged into the containing doc-) 108 450 P (ument\325s menubar.) 108 436 T -0.55 (This means that JavaBeans component writers can program to a consistent set of APIs and trust) 108 416 P -0.13 (them to work everywhere. We don\325t want bean implementors to have to do checks to discover) 108 402 P (which facilities are supported on their current platform.) 108 388 T 3 14 Q (1.4) 54 360.67 T ( Simplicity) 75 360.67 T 0 12 Q 0.23 (We would like to keep the JavaBeans APIs relatively simple. We will focus on making small) 108 340 P 0.7 (lightweight components easy to implement and use, while making heavyweight components) 108 326 P (possible.) 108 312 T -0.38 (As a general rule we don\325t want to invent an enormous java.beans.Everything class that people) 108 292 P -0.49 (have to inherit from. Instead we\325d like the JavaBeans runtimes to provide default behaviour for) 108 278 P -0.04 (\322normal\323 objects, but to allow objects to override a given piece of default behaviour by inher-) 108 264 P (iting from some specific java.beans.something interface.) 108 250 T -0.64 (One of our goals is that people should be able to learn the basic JavaBeans concepts very quick-) 108 230 P 0.54 (ly so that they can start writing and using simple components with very little effort and then) 108 216 P (slowly progress to using the more sophisticated features of the API.) 108 202 T 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "8" 8 %%Page: "9" 9 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 54 746 558 756 R 7 X 0 0 0 1 0 0 0 K V 2 10 Q 0 X (JavaBeans) 54 749.33 T (Fundamentals) 500.78 749.33 T 54 32.67 558 42.67 R 7 X V 0 X (Sun Microsystems) 54 36 T (9) 303.5 36 T (7/24/97) 527.44 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 54 72 558 720 R 7 X V 3 18 Q 0 X (2) 81 708 T (Fundamentals) 108 708 T 3 14 Q (2.1) 54 678.67 T ( What is a Bean?) 71.5 678.67 T 0 12 Q (Let's start with an initial definition and then refine it:) 108 658 T 3 F 0.35 (\322A Java Bean is a reusable software component that can be manipulated visually) 140.4 638 P (in a builder tool.\323) 140.4 624 T 0 F (This covers a wide range of different possibilities.) 108 604 T -0.69 (The builder tools may include web page builders, visual application builders, GUI layout build-) 108 584 P 0.39 (ers, or even server application builders. Sometimes the \322builder tool\323 may simply be a docu-) 108 570 P (ment editor that is including some beans as part of a compound document.) 108 556 T 0.14 (Some Java Beans may be simple GUI elements such as buttons and sliders. Other Java Beans) 108 536 P 1.62 (may be sophisticated visual software components such as database viewers, or data feeds.) 108 522 P -0.64 (Some Java Beans may have no GUI appearance of their own, but may still be composed togeth-) 108 508 P (er visually using an application builder.) 108 494 T -0.35 (Some builder tools may operate entirely visually, allowing the direct plugging together of Java) 108 474 P -0.73 (Beans. Other builders may enable users to conveniently write Java classes that interact with and) 108 460 P 0.58 (control a set of beans. Other builders may provide a simple scripting language to allow easy) 108 446 P (high-level scripting of a set of beans.) 108 432 T 0.08 (Individual Java Beans will vary in the functionality they support, but the typical unifying fea-) 108 412 P (tures that distinguish a Java Bean are:) 108 398 T (\245) 115 378 T (Support for \322introspection\323 so that a builder tool can analyze how a bean works) 126 378 T (\245) 115 358 T 2.23 (Support for \322customization\323 so that when using an application builder a user can) 126 358 P (customize the appearance and behaviour of a bean.) 126 344 T (\245) 115 324 T -0.22 (Support for \322events\323 as a simple communication metaphor than can be used to connect) 126 324 P (up beans.) 126 310 T (\245) 115 290 T (Support for \322properties\323, both for customization and for programmatic use.) 126 290 T (\245) 115 270 T -0.07 (Support for persistence, so that a bean can be customized in an application builder and) 126 270 P (then have its customized state saved away and reloaded later.) 126 256 T -0.31 (A bean is not required to inherit from any particular base class or interface. Visible beans must) 108 236 P 0.31 (inherit from java.awt.Component so that they can be added to visual containers, but invisible) 108 222 P (beans \050see 2.7 below\051 aren\325t required to do this.) 108 208 T -0.45 (Note that while beans are primarily targeted at builder tools they are also entirely usable by hu-) 108 188 P -0.14 (man programmers. All the key APIs such as events, properties, and persistence, have been de-) 108 174 P (signed to work well both for human programmers and for builder tools.) 108 160 T -0.7 (Many beans will have a strong visual aspect, in both the application builder and in the final con-) 108 140 P (structed application, but while this is common it is not required.) 108 126 T 34 204 36 244 R V 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "9" 9 %%Page: "10" 10 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 54 746 558 756 R 7 X 0 0 0 1 0 0 0 K V 2 10 Q 0 X (JavaBeans) 54 749.33 T (Fundamentals) 500.78 749.33 T 54 32.67 558 42.67 R 7 X V 0 X (Sun Microsystems) 54 36 T (10) 301 36 T (7/24/97) 527.44 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 54 72 558 720 R 7 X V 3 12 Q 0 X (2.1.1) 66 712 T (Beans v. Class Libraries) 108 712 T 0 F 0.26 (Not all useful software modules should necessarily turn into beans. Beans are appropriate for) 108 692 P -0.19 (software components that can be visually manipulated and customized to achieve some effect.) 108 678 P -0.35 (Class libraries are an appropriate way of providing functionality that is useful to programmers,) 108 664 P (but which doesn't benefit from visual manipulation.) 108 650 T -0.68 (So for example it makes sense to provide the JDBC database access API as a class library rather) 108 630 P -0.39 (than as a bean, because JDBC is essentially a programmatic API and not something that can be) 108 616 P 0.37 (directly presented for visual manipulation. However it does make sense to write database ac-) 108 602 P -0.07 (cess beans on top of JDBC. So for example you might write a \322select\323 bean that at customiza-) 108 588 P -0.51 (tion time helped a user to compose a select statement, and then when the application is run uses) 108 574 P (JDBC to run the select statement and display the results.) 108 560 T 3 14 Q (2.2) 54 532.67 T ( Properties, events, and methods) 71.5 532.67 T 0 12 Q -0.2 (The three most important features of a Java Bean are the set of) 108 512 P 2 F -0.2 (properties) 409.01 512 P 0 F -0.2 ( it exposes, the set of) 458.34 512 P 2 F (methods) 108 498 T 0 F ( it allows other components to call, and the set of) 148 498 T 2 F (events) 386.64 498 T 0 F ( it fires.) 416.63 498 T 2 F 0.06 (Properties) 108 478 P 0 F 0.06 ( are described in more detail in Section 7. Basically properties are named attributes) 158.66 478 P 0.03 (associated with a bean that can be read or written by calling appropriate methods on the bean.) 108 464 P 0.73 (Thus for example, a bean might have a \322foreground\323 property that represents its foreground) 108 450 P 0.26 (color. This property might be read by calling a \322Color getForeground\050\051\323 method and updated) 108 436 P (by calling a \322void setForeground\050Color c\051\323 method.) 108 422 T -0.33 (The) 108 402 P 2 F -0.33 (methods) 129.33 402 P 0 F -0.33 ( a Java Bean exports are just normal Java methods which can be called from other) 169.33 402 P -0.26 (components or from a scripting environment. By default all of a bean\325s public methods will be) 108 388 P -0.31 (exported, but a bean can choose to export only a subset of its public methods \050see Section 8.5\051.) 108 374 P 2 F 0.36 (Events) 108 354 P 0 F 0.36 ( are described in more detail in Section 6. Events provide a way for one component to) 139.99 354 P 0.09 (notify other components that something interesting has happened. Under the new AWT event) 108 340 P 0.27 (model an event listener object can be registered with an event source. When the event source) 108 326 P 0.29 (detects that something interesting happens it will call an appropriate method on the event lis-) 108 312 P (tener object.) 108 298 T 3 14 Q (2.3) 54 270.67 T ( Design time v. run-time) 71.5 270.67 T 0 12 Q 0.01 (Each Java Bean component has to be capable of running in a range of different environments.) 108 250 P -0.73 (There are really a continuum of different possibilities, but two points are particularly worth not-) 108 236 P (ing.) 108 222 T 0.65 (First a bean must be capable of running inside a builder tool. This is often referred to as the) 108 202 P 2 F 0.31 (design environment) 108 188 P 0 F 0.31 (. Within this design environment it is very important that the bean should) 202.63 188 P 0.29 (provide design information to the application builder and allow the end-user to) 108 174 P 2 F 0.29 (customize) 492.72 174 P 0 F 0.29 ( the) 540.05 174 P (appearance and behaviour of the bean.) 108 160 T -0.47 (Second, each bean must be usable at run-time within the generated application. In this environ-) 108 140 P (ment there is much less need for design information or customization.) 108 126 T -0.28 (The design time information and the design time customization code for a component may po-) 108 106 P 0.01 (tentially be quite large. For example, if a component writer provides a \322wizard\323 style custom-) 108 92 P -0.72 (izer that guides a user through a series of choices, then the customization code may easily dwarf) 108 78 P 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "10" 10 %%Page: "11" 11 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 54 746 558 756 R 7 X 0 0 0 1 0 0 0 K V 2 10 Q 0 X (JavaBeans) 54 749.33 T (Fundamentals) 500.78 749.33 T 54 32.67 558 42.67 R 7 X V 0 X (Sun Microsystems) 54 36 T (11) 301 36 T (7/24/97) 527.44 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 54 72 558 720 R 7 X V 0 12 Q 0 X 0.71 (the run-time code for the bean. We therefore wanted to make sure that we have a clear split) 108 712 P -0.68 (between the design-time aspects of a bean and the run-time aspects, so that it should be possible) 108 698 P (to deploy a bean at run-time without needing to download all its design time code.) 108 684 T -0.17 (So, for example, we allow the design time interfaces \050described in chapters 8 and 9\051 to be sup-) 108 664 P (ported in a separate class from the run-time interfaces \050described in the other chapters\051.) 108 650 T 3 14 Q (2.4) 54 622.67 T ( Security Issues) 71.5 622.67 T 0 12 Q 0.23 (Java Beans are subject to the standard Java security model. We have neither extended nor re-) 108 602 P (laxed the standard Java security model for Java Beans.) 108 588 T -0.09 (Specifically, when a Java Bean runs as part of an untrusted applet then it will be subject to the) 108 568 P 0.01 (standard applet security restrictions and won\325t be allowed to read or write arbitrary files, or to) 108 554 P 0.59 (connect to arbitrary network hosts. However when a Java Bean runs as part of a stand-alone) 108 540 P -0.03 (Java application, or as part of a trusted \050signed\051 applet, then it will be treated as a normal Java) 108 526 P (application and allowed normal access to files and network hosts.) 108 512 T -0.22 (In general we advise Java Bean developers to design their beans so that they can be run as part) 108 492 P (of untrusted applets. The main areas where this shows up in the beans APIs are:) 108 478 T (\245) 115 458 T 2 F 0.73 (Introspection.) 126 458 P 0 F 0.73 ( Bean developers should assume that they have unlimited access to the) 193 458 P 2.06 (high level Introspection APIs \050Section 8\051 and the low-level reflection APIs in the) 126 444 P 1.34 (design-time environment, but more limited access in the run-time environment. For) 126 430 P 0.43 (example, the standard JDK security manager will allow trusted applications access to) 126 416 P 0.41 (even private field and methods, but will allow untrusted applets access to only public) 126 402 P 0.55 (fields and methods. \050This shouldn\325t be too constraining - the high-level Introspection) 126 388 P (APIs only expose \322public\323 information anyway.\051) 126 374 T (\245) 115 354 T 2 F -0.61 (Persistence.) 126 354 P 0 F -0.61 (Beans should expect to be serialized or deserialized \050See Section 5\051 in both) 186.71 354 P -0.19 (the design-time and the run-time environments. However in the run-time environment,) 126 340 P 1.06 (the bean should expect the serialization stream to be created and controlled by their) 126 326 P -0.07 (parent application and should not assume that they can control where serialized data is) 126 312 P -0.56 (read from or written to. Thus a browser might use serialization to read in the initial state) 126 298 P -0.51 (for an untrusted applet, but the applet should not assume that it can access random files.) 126 284 P (\245) 115 264 T 2 F -0.4 (GUI Merging.) 126 264 P 0 F -0.4 (In general untrusted applets will not be permitted to perform any kind of) 196.85 264 P 0.88 (GUI merging with their parent application. So for example, menubar merging might) 126 250 P 0.67 (occur between nested beans inside an untrusted applet, but the top level menubar for) 126 236 P (the untrusted applet will be kept separate from the browser\325s menubar.) 126 222 T 1.08 (None of these restrictions apply to beans running as parts of full-fledged Java applications,) 108 202 P (where the beans will have full unrestricted access to the entire Java platform API.) 108 188 T 3 14 Q (2.5) 54 160.67 T ( Local activation) 71.5 160.67 T 0 12 Q 0.25 (The basic run-time model for Java Bean components is that they run within the same address) 108 140 P (space as their container.) 108 126 T -0.51 (So for example, if the container is a Java application, then the contained bean is run in the same) 108 106 P 0.38 (Java virtual machine as its container. If the container is a non-Java application, then the Java) 108 92 P 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "11" 11 %%Page: "12" 12 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 54 746 558 756 R 7 X 0 0 0 1 0 0 0 K V 2 10 Q 0 X (JavaBeans) 54 749.33 T (Fundamentals) 500.78 749.33 T 54 32.67 558 42.67 R 7 X V 0 X (Sun Microsystems) 54 36 T (12) 301 36 T (7/24/97) 527.44 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 54 72 558 720 R 7 X V 0 12 Q 0 X 0.45 (Bean will run in a Java virtual machine that is directly associated with the application. \050Nor-) 108 385 P (mally this virtual machine will be running in the same address space as the application.\051) 108 371 T 3 14 Q (2.6) 54 343.67 T ( Java Beans as links to remote state) 71.5 343.67 T 0 12 Q 0.6 (The Java Beans architecture is being designed to work well in a distributed world-wide-web) 108 323 P (environment.) 108 309 T 0.38 (A key part of designing distributed systems is engineering a good split between local and re-) 108 289 P 0.87 (mote processing. Local processing can benefit from rapid communication with a single ma-) 108 275 P 0.47 (chine, while remote accesses may have long latencies and suffer a variety of communication) 108 261 P -0.22 (failures. Designers of distributed systems tend to design their remote interfaces very carefully,) 108 247 P 0.74 (to minimize the number of remote interactions and to use various kinds of data caching and) 108 233 P (update batching to reduce remote traffic.) 108 219 T 0.03 (Therefore, we recommend that distributed system implementors design beans to act as intelli-) 108 199 P 0.41 (gent front-ends to talk back to their network servers. So rather than designing all beans APIs) 108 185 P 0.65 (to work over the network, we are primarily targeting the beans APIs for use within a virtual) 108 171 P -0.71 (machine, where interactions are cheap, and we provide several alternative mechanisms to allow) 108 157 P (beans developers to connect back to network servers.) 108 143 T -0.17 (The three primary network access mechanisms that will be available to Java Beans developers) 108 123 P (on all Java platforms are:) 108 109 T 0 0 0 1 0 0 0 K 54 393 558 720 C 0 0 0 1 0 0 0 K 0 12 Q 0 X 0 0 0 1 0 0 0 K -0.16 (Java) 223.84 635 P (Bean) 222.17 621 T 212 607 257 652 R 0.5 H 2 Z N 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K -0.16 (Java) 236.84 556.6 P (Bean) 235.17 542.6 T 225 535 270 572 R N 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K -0.16 (Java) 236.84 501 P (Bean) 235.17 487 T 225 473 270 518 R N 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (Database) 472.01 672.4 T (Server) 478.34 658.4 T 449 634 539 692 R N 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (CORBA) 472.33 574.4 T (Server) 477.34 560.4 T 448 536 538 594 R N 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (Java) 483.34 459.4 T (Server) 478.34 445.4 T 449 421 539 479 R N 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 160 451 313 698 R N (Ja) 181 426 T (v) 190.76 426 T (a Beans Application) 196.46 426 T 438.73 562.44 438.58 565.41 449.1 562.96 438.88 559.46 4 Y 0 Z N 438.73 562.44 438.58 565.41 449.1 562.96 438.88 559.46 4 Y V 270 554 438.48 562.42 2 L 2 Z N 437.11 454.94 437.88 457.81 447.13 452.24 436.33 452.07 4 Y 0 Z N 437.11 454.94 437.88 457.81 447.13 452.24 436.33 452.07 4 Y V 270 500 436.86 455 2 L 2 Z N 436.01 656.43 435.33 659.33 446.12 658.79 436.69 653.53 4 Y 0 Z N 436.01 656.43 435.33 659.33 446.12 658.79 436.69 653.53 4 Y V 306 626 435.77 656.37 2 L 2 Z N (Database) 342 664 T (protocol) 342 650 T (IIOP) 368 571 T (RMI) 360 483 T (J) 287.17 646.8 T (D) 285.17 632.8 T (B) 285.5 618.8 T (C) 285.5 604.8 T 275 594 305 662 R N 262.71 627 262.71 629.98 273.09 627 262.71 624.02 4 Y 0 Z N 262.71 627 262.71 629.98 273.09 627 262.71 624.02 4 Y V 259 627 262.46 627 2 L 2 Z N 0 0 0 1 0 0 0 K 0 0 612 792 C 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "12" 12 %%Page: "13" 13 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 54 746 558 756 R 7 X 0 0 0 1 0 0 0 K V 2 10 Q 0 X (JavaBeans) 54 749.33 T (Fundamentals) 500.78 749.33 T 54 32.67 558 42.67 R 7 X V 0 X (Sun Microsystems) 54 36 T (13) 301 36 T (7/24/97) 527.44 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 54 72 558 720 R 7 X V 0 12 Q 0 X (\245) 115 712 T 2 F 0.06 (Java RMI) 126 712 P 0 F 0.06 (. The Java Remote Method Invocation facility makes it very easy to develop) 173.04 712 P -0.36 (distributed Java applications. The distributed system interfaces can be designed in Java) 126 698 P -0.71 (and clients and servers can be implemented against those interfaces. Java RMI calls will) 126 684 P 0.65 (be automatically and transparently delivered from the client to the server. We expect) 126 670 P 0.92 (that the use of Java RMI will be a very common way for writing Java Beans within) 126 656 P (networked systems.) 126 642 T (\245) 115 622 T 2 F 2.06 (Java IDL) 126 622 P 0 F 2.06 (. The Java IDL system implements the industry standard OMG CORBA) 173.05 622 P 1.53 (distributed object model. All the system interfaces are defined in the CORBA IDL) 126 608 P 0.71 (interface definition language. Java stubs can be generated from these IDL interfaces,) 126 594 P 2.03 (allowing Java Bean clients to call into IDL servers, and vice versa. CORBA IDL) 126 580 P 0.84 (provides a multi-language, multi-vendor distributed computing environment, and the) 126 566 P -0.6 (use of Java IDL allows Java Bean clients to talk to both Java IDL servers and other non-) 126 552 P (Java IDL servers.) 126 538 T (\245) 115 518 T 2 F 0.98 (JDBC.) 126 518 P 0 F 0.98 ( The Java database API, JDBC, allows Java Bean components access to SQL) 158.33 518 P -0.46 (databases. These database can either be on the same machine as the client, or on remote) 126 504 P 1.26 (database servers. Individual Java Beans can be written to provide tailored access to) 126 490 P (particular database tables.) 126 476 T 0.57 (Another solution to distributed computing is to migrate objects around the network. Thus an) 108 456 P 1.57 (expense voucher bean might be created on one user\325s workstation and then get forwarded) 108 442 P -0.26 (around the network to various interim severs and to various other workstations for review, and) 108 428 P -0.43 (then get forwarded to an accounts payable server to be processed for final payment. In this sce-) 108 414 P -0.03 (nario, the bean will show a GUI appearance at some points in its life, but also be run invisibly) 108 400 P (within server applications at other times.) 108 386 T 3 14 Q (2.7) 54 358.67 T ( Invisible beans) 71.5 358.67 T 0 12 Q -0.35 (Many Java Beans will have a GUI representation. When composing beans with a GUI applica-) 108 338 P 0.6 (tion builder it may often be this GUI representation that is the most obvious and compelling) 108 324 P (part of the beans architecture.) 108 310 T 1.49 (However it is also possible to implement invisible beans that have no GUI representation.) 108 290 P 0.05 (These beans are still able to call methods, fire events, save persistent state, etc. They will also) 108 276 P 0.01 (be editable in a GUI builder using either standard property sheets or customizers \050see Chapter) 108 262 P (9\051. They simply happen to have no screen appearance of their own.) 108 248 T -0.62 (Such invisible beans can be used either as shared resources within GUI applications, or as com-) 108 228 P (ponents in building server applications that have no GUI appearance at all.) 108 214 T -0.02 (These invisible beans may still be represented visually in an application builder tool, and they) 108 194 P (may have a GUI customizer that configures the bean.) 108 180 T -0.37 (Some beans may be able to run either with or without a GUI appearance depending where they) 108 160 P 0.67 (are instantiated. So if a given bean is run in a server it may be invisible, but if it is run on a) 108 146 P (user\325s desktop it may have a GUI appearance.) 108 132 T 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "13" 13 %%Page: "14" 14 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 54 746 558 756 R 7 X 0 0 0 1 0 0 0 K V 2 10 Q 0 X (JavaBeans) 54 749.33 T (Fundamentals) 500.78 749.33 T 54 32.67 558 42.67 R 7 X V 0 X (Sun Microsystems) 54 36 T (14) 301 36 T (7/24/97) 527.44 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 54 72 558 720 R 7 X V 3 14 Q 0 X (2.8) 54 710.67 T ( Multi-Threading) 71.5 710.67 T 0 12 Q -0.14 (Java Beans should assume that they are running in a multi-threaded environment and that sev-) 108 690 P 0.4 (eral different threads may be simultaneously delivering events and/or calling methods and/or) 108 676 P (setting properties.) 108 662 T 0.13 (It is the responsibility of each java bean developer to make sure that their bean behaves prop-) 108 642 P 0.93 (erly under multi-threaded access. For simple beans this can generally be handled by simply) 108 628 P (making all the methods \322synchronized\323.) 108 614 T 3 14 Q (2.9) 54 586.67 T ( Internationalization) 71.5 586.67 T 0 12 Q -0.16 (As part of the JDK 1.1, various internationalization APIs are being added to the core Java API) 108 566 P (set. These internalization APIs can be used by individual Java Beans.) 108 552 T 0.62 (In general the Java internationalization model is that individual packages are responsible for) 108 532 P -0.33 (internally localizing any appropriate strings using the current default locale \050from java.util.Lo-) 108 518 P -0.27 (cale.getDefault\051 and that appropriately localized strings are passed across public APIs. For ex-) 108 504 P 0.98 (ample it would be the Color.toString\050\051 method\325s responsibility to generate a localized color) 108 490 P -0.02 (name such as \322rouge\323 in the French locale, rather than it being a client\325s responsibility to take) 108 476 P (a locale independent string \322red\323 and then try to localize it.) 108 462 T -0.62 (One particular issue for Java Beans is the naming of events, methods, and properties. In general) 108 442 P 0.22 (we expect Java programs to work programmatically in terms of locale-independent) 108 428 P 2 F 0.22 ( program-) 508.78 428 P (matic) 108 414 T 0 F (names.) 137.66 414 T 0.12 (The two main exceptions to this are the \322display name\323 and \322short help\323 strings supported by) 108 394 P (the FeatureDescriptor class. These should be set to localized strings.) 108 380 T -0.3 (So for example, a Java Bean might export a method whose locale-independent name is \322hello\323) 108 360 P 0.82 (but whose display name is localized in the glaswegian locale as \322heyJimmie\323. Builder tools) 108 346 P 0.67 (may present this locale-dependent display name \322heyJimmie\323 to human users and this name) 108 332 P 0.67 (may be usable from scripting environments. However any generated Java code must use the) 108 318 P (locale-independent programmatic method name \322hello\323.) 108 304 T 1.42 (Similarly, a property may have the locale-independent programmatic name \322cursorColour\323) 108 284 P -0.56 (and be accessed by methods getCursorColour and setCursorColour, but may be localized in the) 108 270 P 0.05 (U.S to have display name \322cursorColor\323. When the property is presented to humans via prop-) 108 256 P 0.52 (erty sheets, etc., it may be named as \322cursorColor\323, but the getter/setter methods are still ac-) 108 242 P (cessed via their locale-independent names getCursorColour and setCursorColour.) 108 228 T 3 14 Q (2.10) 54 200.67 T (Alternate type views of a bean.) 82 200.67 T 0 12 Q 0.37 (In the first release of the JavaBeans architecture, each bean is a single Java object. However,) 108 180 P -0.01 (in future releases of JavaBeans we plan to add support for beans that are implemented as a set) 108 166 P (of cooperating objects.) 108 152 T 0 10 Q -0.61 (One particular reason for supporting beans as sets of cooperating objects is to allow a bean to use several) 129 133.33 P 0.27 (different classes as part of its implementation. Because the Java language only supports single imple-) 129 121.33 P 0.67 (mentation inheritance, any given Java object can only \322extend\323 a single Java class. However, some-) 129 109.33 P (times when constructing a bean it may be useful to be able to exploit several existing classes.) 129 97.33 T 34 94 36 210 R V 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "14" 14 %%Page: "15" 15 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 54 746 558 756 R 7 X 0 0 0 1 0 0 0 K V 2 10 Q 0 X (JavaBeans) 54 749.33 T (Fundamentals) 500.78 749.33 T 54 32.67 558 42.67 R 7 X V 0 X (Sun Microsystems) 54 36 T (15) 301 36 T (7/24/97) 527.44 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 54 72 558 720 R 7 X V 0 12 Q 0 X -0.45 (We therefore provide a notion of a \322type view\323 that represents a view of a bean as a given type.) 108 712 P 0.65 (In JavaBeans 1.0 all type views of a given bean simply represent different casts of the same) 108 698 P 0.37 (object to different Java types. However, in future releases of JavaBeans, different type views) 108 684 P (of a bean may be implemented by different Java objects.) 108 670 T -0.46 (The rules included here are designed to ensure that Beans and containers written today will mi-) 108 650 P (grate smoothly to future JavaBeans implementations.) 108 636 T 0.74 (At the Java language level, type views are represented as Java interfaces or classes, but you) 108 616 P 0.13 (must use the Beans.getInstanceOf and Beans.isInstanceOf methods \050see Section 10.4\051 to nav-) 108 602 P (igate between different type views of a bean.) 108 588 T 3 F (Y) 108 568 T (ou should never use) 116.66 568 T (J) 220.68 568 T (ava) 226.68 568 T (casts t) 247.68 568 T (o access dif) 279.34 568 T (ferent) 336.66 568 T ( type views of a Java bean.) 367.31 568 T 0 F 2.14 (For example, if you had a bean x of type X, and you wanted to view it as of type \322ja-) 108 548 P (va.awt.Component\323, then you should do:) 108 534 T 4 10 Q (java.awt.Component c = \050java.awt.Component\051) 165.6 515.33 T (Beans.getInstanceOf\050x, java.awt.Component.class\051;) 241.2 503.33 T 0 12 Q 0.29 (This allow for future evolution where the \322java.awt.Component\323 type view of a bean may be) 108 484 P (implemented by a different Java object from the \322X\323 type view.) 108 470 T (Programmers must note that:) 108 450 T (\245) 115 430 T -0.63 (they should never use Java \322instanceof\323 or Java casts to navigate between different type) 126 430 P (views of a bean.) 126 416 T (\245) 115 396 T 0.17 (they should not assume that the result object of a beans.getInstanceOf call is the same) 126 396 P (object as the input object.) 126 382 T (\245) 115 362 T -0.2 (they should not assume that the result object of a beans.getInstanceOf call supports the) 126 362 P (same properties, events, or methods supported by the original type view.) 126 348 T 34 318 36 720 R V 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "15" 15 %%Page: "16" 16 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 54 746 558 756 R 7 X 0 0 0 1 0 0 0 K V 2 10 Q 0 X (JavaBeans) 54 749.33 T (Scenarios) 518.56 749.33 T 54 32.67 558 42.67 R 7 X V 0 X (Sun Microsystems) 54 36 T (16) 301 36 T (7/24/97) 527.44 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 54 72 558 720 R 7 X V 3 18 Q 0 X (3) 81 708 T (Scenarios) 108 708 T 0 12 Q 0.72 (To help illustrate how beans are intended to function this section walks through two sample) 108 680 P (scenarios of bean use.) 108 666 T 2 14 Q (Note that this section is intended to be illustrative rather than prescriptive.) 108 644.67 T 0 12 Q 0.65 (It is intended to show some ways beans may be used, but not to describe all possibilities. In) 108 624 P -0.27 (particular different application builder tools are likely to offer very different application build-) 108 610 P (ing scenarios.) 108 596 T -0.15 (The two scenarios involve constructing applets, but the same steps apply to building full-scale) 108 576 P (Java applications.) 108 562 T 3 14 Q (3.1) 54 534.67 T ( Using an application builder to construct an Applet) 75 534.67 T 0 12 Q 0.36 (In this scenario a user uses an application builder to create an applet. The application builder) 108 514 P 0.72 (generates various pieces of source code and provides the user with templates into which the) 108 500 P (user can add their own source code.) 108 486 T 3 F (1.) 126 466 T (Buying the tools.) 144 466 T 0 F (1.a\051) 140.4 446 T (The user buys and installs the WombatBuilder Java application builder.) 165.6 446 T (1.b\051) 140.4 426 T -0.46 (The user buys some JavaBeans components from Al\325s Discount Component Store.) 165.6 426 P 2.15 (They get a win32 floppy containing the beans in a JAR file. This includes a) 165.6 412 P (\322Button\323 component and a \322DatabaseViewer\323 component.) 165.6 398 T (1.c\051) 140.4 378 T 0.87 (The user inserts the floppy into the machine and uses the WombatBuilder \322Add) 165.6 378 P -0.09 (bean...\323 dialog to tell WombatBuilder about the beans. WombatBuilder copies the) 165.6 364 P 1.92 (beans off to its bean collection. \050WombatBuilder may either introspect on the) 165.6 350 P 0.19 (beans at this point to learn about their attributes or it may wait until the beans are) 165.6 336 P (actually used.\051) 165.6 322 T 3 F (2.) 126 302 T (Laying out the applet) 144 302 T 0 F (2.a\051) 140.4 282 T 0.07 (The user starts to create a new custom applet called \322Foobaz\323 in WombatBuilder.) 165.6 282 P 4.01 (Initially they start with a blank applet template. WombatBuilder creates a) 165.6 268 P (Foobaz.java file to represent the state of this applet.) 165.6 254 T (2.b\051) 140.4 234 T -0.4 (The user selects a \322button\323 from the WombatBuilder beans menu and drops it onto) 165.6 234 P 1.64 (the applet template. WombatBuilder uses \322) 165.6 220 P 1.64 (Beans.instantiate\323 t) 380.46 220 P 1.64 (o allocate a new) 475.43 220 P -0.58 (Button instance.) 165.6 206 P -0.58 (W) 245.44 206 P -0.58 (ombatBuilder then adds the new button as a member field to the) 256.77 206 P (Foobaz class.) 165.6 192 T (2.c\051) 140.4 172 T 0.76 ( The user selects a \322database viewer\323 from the WombatBuilder beans menu and) 165.6 172 P 0.09 (drops it onto the applet template. Because the database viewer is a fairly complex) 165.6 158 P 7.14 (bean it comes with some serialized state to pre-initialize itself. The) 165.6 144 P 4.05 (WombatBuilder tool) 165.6 130 P 4.05 (again u) 275.7 130 P 4.05 (ses the) 314.74 130 P 4.05 (\322) 358.17 130 P 4.05 (Beans.instantiate) 363.5 130 P 4.05 (\323) 445.16 130 P 4.05 (m) 457.54 130 P 4.05 (ethod to) 466.88 130 P 4.05 (create a) 516.98 130 P 2.68 (database viewer bean, and Beans.instantiate handles r) 165.6 116 P 2.68 (ead) 438.97 116 P 2.68 (ing i) 455.63 116 P 2.68 (n) 479.98 116 P 2.68 (the s) 491.67 116 P 2.68 (erialized) 516.68 116 P 1.07 (object instance. WombatBuilder then adds this new database viewer object as a) 165.6 102 P (member field to the Foobaz class.) 165.6 88 T 34 202 36 228 R V 34 112 36 138 R V 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "16" 16 %%Page: "17" 17 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 54 746 558 756 R 7 X 0 0 0 1 0 0 0 K V 2 10 Q 0 X (JavaBeans) 54 749.33 T (Scenarios) 518.56 749.33 T 54 32.67 558 42.67 R 7 X V 0 X (Sun Microsystems) 54 36 T (17) 301 36 T (7/24/97) 527.44 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 54 72 558 720 R 7 X V 3 12 Q 0 X (3.) 126 712 T (Customizing the beans.) 144 712 T 0 F (3.a\051) 140.4 692 T 1.25 (The user selects the button and asks WombatBuilder to edit it. WombatBuilder) 165.6 692 P -0.19 (uses Introspector.getBeanInfo to obtain a BeanInfo object describing the bean and) 165.6 678 P 2.68 (discovers that this bean doesn\325t have a Customizer. So it uses the BeanInfo) 165.6 664 P -0.01 (information to learn the names of the bean\325s read-write properties and generates a) 165.6 650 P 1.83 (simple property sheet containing the names of the properties and their current) 165.6 636 P 0.79 (values. The user then interacts with the property sheet to customize the button\325s) 165.6 622 P (appearance. The updates are applied back to the bean as they happen.) 165.6 608 T (3.b\051) 140.4 588 T 1.34 (The user selects the database viewer and asks WombatBuilder to edit it. Using) 165.6 588 P 3.64 (Introspector.getBeanInfo, WombatBuilder discovers that the database viewer) 165.6 574 P 0.21 (comes with its own bean Customizer class. WombatBuilder instantiates an object) 165.6 560 P 1.84 (of the customizer class and asks it to customize the component. The database) 165.6 546 P -0.68 (viewer customizer brings up a series of dialogs that guide the user through the steps) 165.6 532 P 1.12 (of selecting a target database and identifying tables and records to display. The) 165.6 518 P -0.55 (database viewer customizer uses a set of package private methods to setup the state) 165.6 504 P (of the database viewer bean.) 165.6 490 T 3 F (4.) 126 470 T (Connecting up the beans) 144 470 T 0 F (4.a\051) 140.4 450 T 0.8 (The user now decides that they want to hook-up the button to prod the database) 165.6 450 P 0.95 (viewer. They select the button on the screen and pull-down the WombatBuilder) 165.6 436 P 4.59 (\322events\323 menu to discover its events and then select the \322action\323 event.) 165.6 422 P -0.32 (WombatBuilder creates a template method \322Foobaz.button1Action\323 and brings up) 165.6 408 P (a text editor so that the user can type in the text of the method.) 165.6 394 T (4.b\051) 140.4 374 T 0.01 (The user types in the text of the method. In this case they simply call the database) 165.6 374 P -0.69 (viewer component\325s \322update\323 method. So now the automatically generated Foobaz) 165.6 360 P (looks like:) 165.6 346 T 4 10 Q (class Foobaz extends WombatBuilderApplet {) 165.6 327.33 T (public Button button1;) 190.8 315.33 T (public DatabaseViewer databaseViewer1;) 190.8 303.33 T (void button1Action\050java.awt.event.ActionEvent evt\051 {) 190.8 291.33 T (databaseViewer1.update\050\051;) 216 279.33 T (}) 190.8 267.33 T (}) 165.6 255.33 T 0 12 Q (4.c\051) 140.4 230 T -0.46 ( In addition, behind the scenes, WombatBuilder creates an adaptor class to connect) 165.6 230 P (the button to the Foobaz. This looks something like:) 165.6 216 T 4 10 Q (class Hookup1234 implements java.awt.event.ActionListener {) 165.6 197.33 T (public Foobaz target;) 190.8 185.33 T (public void actionPerformed\050java.awt.event.ActionEvent evt\051 {) 190.8 173.33 T (target.button1Action\050evt\051;) 216 161.33 T (}) 190.8 149.33 T (}) 165.6 137.33 T 0 12 Q (4.d\051) 140.4 112 T 0.83 ( WombatBuilder creates a new instance of the Hookup1234 class and fills in its) 165.6 112 P -0.18 (\322target\323 field with the target applet. It then takes the hookup object and registers it) 165.6 98 P (with the button1 \322addActionListener\323 method. This completes the hookup.) 165.6 84 T 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "17" 17 %%Page: "18" 18 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 54 746 558 756 R 7 X 0 0 0 1 0 0 0 K V 2 10 Q 0 X (JavaBeans) 54 749.33 T (Scenarios) 518.56 749.33 T 54 32.67 558 42.67 R 7 X V 0 X (Sun Microsystems) 54 36 T (18) 301 36 T (7/24/97) 527.44 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 54 72 558 720 R 7 X V 3 12 Q 0 X (5.) 126 712 T (Packaging up the applet) 144 712 T 0 F (5.a\051) 140.4 692 T -0.66 ( The user decides they are done and pushes \322make it so\323. WombatBuilder uses Java) 165.6 692 P -0.2 (serialization to store away the Foobaz object in a Foobaz.ser pickle file. As part of) 165.6 678 P 3.8 (storing away the Foobaz object, the two beans instances \050the button1 and) 165.6 664 P 3.85 (databaseViewer1 members\051 also get stored away. The WombatBuilder also) 165.6 650 P (generates some initialization code to reconstruct the event hookup.) 165.6 636 T (5.b\051) 140.4 616 T 1.15 ( WombatBuilder creates a Foobaz.jar file holding the pickle and the .class files) 165.6 616 P 0.62 (needed by the applet including the hookup1234 .class file and the .class files for) 165.6 602 P (the beans themselves.) 165.6 588 T (5.c\051) 140.4 568 T 0.68 ( WombatBuilder also generates a sample HTML page that uses the applet tag to) 165.6 568 P (load the pickled Foobaz.ser from the Foobaz.jar file.) 165.6 554 T 3 F (6.) 126 534 T (Trying it out) 144 534 T 0 F (6.a\051) 140.4 514 T -0.63 ( The user then tests out the applet in their SpaceWars web browser. When they visit) 165.6 514 P 0.96 (the html page, the applet is initialized by reading in its serialized state from the) 165.6 500 P 0.6 (Foobaz.ser inside of the Foobaz.jar file. As part of doing this various classes are) 165.6 486 P (also loaded from the .class files inside the Foobaz.jar file.) 165.6 472 T (6.b\051) 140.4 452 T -0.14 ( The result is a running applet with a working event hookup from the button to the) 165.6 452 P 0.39 (database viewer, and with its state setup in the way that the user customized it in) 165.6 438 P (the WombatBuilder tool.) 165.6 424 T (6.c\051) 140.4 404 T ( Joy, Happiness, and Banana Mochas) 165.6 404 T 0 9.6 Q (1) 344.57 408.8 T 0 12 Q ( all round.) 349.37 404 T 3 14 Q (3.2) 54 376.67 T ( Using beans in a hand-written Applet) 75 376.67 T 0 12 Q -0.35 (In this scenario we use some Java beans components in a hand-written Applet. This scenario is) 108 356 P -0.18 (fairly similar to building an Applet with simple AWT components today, and is intended to il-) 108 342 P (lustrate how beans can be used without special tools.) 108 328 T 3 F (1.) 126 308 T (Loading the tools.) 144 308 T 0 F (1.a\051) 140.4 288 T (The user downloads and installs the JDK, including the javac compiler.) 165.6 288 T (1.b\051) 140.4 268 T 4.05 (The user notices some useful Java Bean components on Dave\325s Freeware) 165.6 268 P (Components Page. They ftp over a beans jar file.) 165.6 254 T (1.c\051) 140.4 234 T -0.43 (The user uses the \322jar\323 command to extract the contents of the jar file and put them) 165.6 234 P 0.29 (in the user\325s normal \322class\323 directory. This includes a \322Button\323 component and a) 165.6 220 P (\322DatabaseViewer\323 component.) 165.6 206 T 3 F (2.) 126 186 T (Laying out the applet) 144 186 T 0 F (2.a\051) 140.4 166 T 0.22 (The user starts to type in the code for a new applet. In the Applet\325s \322init\323 method) 165.6 166 P 2.18 (they create a dave.Button and a dave.DatabaseViewer) 165.6 152 P 2.18 ( by calling the standard) 437.28 152 P -0.61 (Beans.instantiate method. Behind the scenes, t) 165.6 138 P -0.61 (he) 385.2 138 P -0.61 (Be) 398.91 138 P -0.61 (ans.instantiate) 412.24 138 P -0.61 (handles r) 482.96 138 P -0.61 (ead) 526.01 138 P -0.61 (ing) 542.66 138 P (i) 165.6 124 T (n) 168.94 124 T (any s) 177.94 124 T (erialized object) 202.93 124 T ( state for either of these two beans.) 276.58 124 T 54 82 558 91 C 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 54 82 558 91 R 7 X 0 0 0 1 0 0 0 K V 63 85.96 207 85.96 2 L V 0.5 H 2 Z 0 X N 0 0 612 792 C 0 8 Q 0 X 0 0 0 1 0 0 0 K (1.) 72 76.67 T (Check out the reference implementation at Printers Inc. Cafe, California A) 84 76.67 T (v) 322.02 76.67 T (enue, P) 325.9 76.67 T (alo Alto, CA.) 349.34 76.67 T 34 400 36 412 R V 34 120 36 160 R V 34 74 36 82 R V 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "18" 18 %%Page: "19" 19 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 54 746 558 756 R 7 X 0 0 0 1 0 0 0 K V 2 10 Q 0 X (JavaBeans) 54 749.33 T (Scenarios) 518.56 749.33 T 54 32.67 558 42.67 R 7 X V 0 X (Sun Microsystems) 54 36 T (19) 301 36 T (7/24/97) 527.44 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 54 72 558 720 R 7 X V 4 F 0 X (class MyApplet extends java.awt.Applet {) 165.6 713.33 T (public void init\050\051) 187.2 689.33 T ({) 301.2 689.33 T (t) 208.8 677.33 T (ry {) 214.8 677.33 T (ClassLoader c) 230.4 665.33 T (l = this.getClass\050\051.) 308.4 665.33 T (getClassLoader\050\051;) 428.4 665.33 T (btn = \050Button\051Beans.instantiate\050cl, \322dave.Button\323\051;) 230.4 653.33 T (add\050btn\051;) 230.4 641.33 T (dbViewer =) 230.4 629.33 T (\050DatabaseViewer\051) 296.4 629.33 T (Beans.instantiate\050cl) 392.4 629.33 T (,) 512.4 629.33 T (\322) 403.2 617.33 T (dave) 409.2 617.33 T (.D) 433.2 617.33 T (atabaseViewer) 445.2 617.33 T (\323) 523.2 617.33 T (\051;) 529.2 617.33 T (add\050dbViewer\051;) 230.4 605.33 T (} catch \050Exception ex\051 {) 208.8 593.33 T (throw new Error\050\322Couldn\325t) 230.4 581.33 T (create bean \322 + ex\051) 386.4 581.33 T (;) 500.4 581.33 T (}) 208.8 569.33 T (}) 187.2 557.33 T (private DatabaseViewer dbViewer;) 187.2 533.33 T (private Button btn;) 187.2 521.33 T (}) 165.6 509.33 T 3 12 Q (3.) 126 484 T (Customizing the beans.) 144 484 T 0 F (3.a\051) 140.4 464 T 3.43 (The user decides they want to tweak the appearance and behaviour of the) 165.6 464 P 0.52 (components a little, so in their MyApplet.init method they add some calls on the) 165.6 450 P (beans\325 property accessor methods:) 165.6 436 T 4 10 Q (btn.setBackground\050java.awt.Color.red\051;) 190.8 417.33 T (dbViewer.setURL\050\322jdbc:msql://aardvark.eng/stuff\323\051;) 190.8 405.33 T 3 12 Q (4.) 126 380 T (Connecting up the beans) 144 380 T 0 F (4.a\051) 140.4 360 T 0.8 (The user now decides that they want to hook-up the button to prod the database) 165.6 360 P 0.5 (viewer. The button fires its events at the java.awt.event.ActionListener interface.) 165.6 346 P -0.59 (Since they only have a simple applet with a single button, they decide to make their) 165.6 332 P 5.72 (MyApplet class implement the ActionListener directly and they add an) 165.6 318 P (\322actionPerformed\323 method as required by the ActionListener interface:) 165.6 304 T 4 10 Q (void actionPerformed\050java.awt.event.ActionEvent\051 {) 190.8 285.33 T (dbViewer.update\050\051;) 216 273.33 T (// prod the DB viewer.) 324 273.33 T (}) 190.8 261.33 T 0 12 Q (4.b\051) 140.4 236 T -0.16 ( In order to make the event hookup at run-time they also have to add a line to their) 165.6 236 P (MyApplet.init method:) 165.6 222 T 4 10 Q (btn.addActionListener\050this\051;) 190.8 203.33 T 3 12 Q (5.) 126 166 T (Packaging up the applet) 144 166 T 0 F (5.a\051) 140.4 146 T 0.01 ( The user decides they are done. They compile their MyApplet.java file and make) 165.6 146 P (sure that the MyApplet.class file gets added to their class directory.) 165.6 132 T (5.b\051) 140.4 112 T -0.25 (They create a test HTML page that uses the applet tag to reference MyApplet with) 165.6 112 P (a suitable codebase.) 165.6 98 T 3 F (6.) 126 78 T (Trying it out) 144 78 T 34 614 36 696 R V 34 578 36 588 R V 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "19" 19 %%Page: "20" 20 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 54 746 558 756 R 7 X 0 0 0 1 0 0 0 K V 2 10 Q 0 X (JavaBeans) 54 749.33 T (Scenarios) 518.56 749.33 T 54 32.67 558 42.67 R 7 X V 0 X (Sun Microsystems) 54 36 T (20) 301 36 T (7/24/97) 527.44 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 54 72 558 720 R 7 X V 0 12 Q 0 X (6.a\051) 140.4 712 T -0.63 ( The user then tests out the applet in their SpaceWars web browser. When they visit) 165.6 712 P (the html page, the applet is initialized by running its MyApplet.init method.) 165.6 698 T (6.b\051) 140.4 678 T 2.18 (The MyApplet.init method) 165.6 678 P 2.18 (calls Beans.instantiate for a button and a database) 304.13 678 P 0.96 (viewer. Behind the scenes, beans.instantiate does a) 165.6 664 P 0.96 ( \322new\323 of a Button bean and) 415.63 664 P (u) 165.6 650 T (ses Java serialization t) 171.6 650 T (o read in an initialized DatabaseViewer bean.) 278.58 650 T (6.c\051) 140.4 630 T 0.87 (The init method then calls various setXXX methods to customize the beans and) 165.6 630 P (then the button addActionListener to hookup the button events.) 165.6 616 T (6.d\051) 140.4 596 T 0.05 (The result is a running applet with a working event hookup from the button to the) 165.6 596 P (database viewer.) 165.6 582 T (6.e\051) 140.4 562 T (Restrained Joy, Limited Happiness, and decaffe coffee all round.) 165.6 562 T (Here\325s the complete sample code for the hand-written applet:) 108 522 T 4 10 Q (class MyApplet extends java.awt.Applet implements) 140.4 503.33 T (java.awt.event.ActionListener {) 367.2 491.33 T (// Applet initialization) 165.6 467.33 T (.) 309.6 467.33 T (public void init\050\051 {) 165.6 455.33 T (try {) 208.8 443.33 T (ClassLoader cl =) 230.4 431.33 T (this.getClass\050\051.getClassLoader\050\051;) 332.4 431.33 T (btn = \050Button\051Beans.instantiate\050cl, \322dave.Button\323\051;) 230.4 419.33 T (add\050btn\051;) 230.4 407.33 T (dbViewer =) 230.4 395.33 T (\050DatabaseViewer\051) 296.4 395.33 T (Beans.instantiate\050cl,) 392.4 395.33 T (\322dave.DatabaseViewer\323\051;) 403.2 383.33 T (add\050dbViewer\051;) 230.4 371.33 T (} catch \050Exception ex\051 {) 208.8 359.33 T (throw new Error\050\322Couldn\325t make bean \323 + ex\051;) 230.4 347.33 T (}) 208.8 335.33 T (}) 187.2 323.33 T (b) 190.8 299.33 T (tn.setBackground\050java.awt.Color.Red\051;) 196.8 299.33 T (dbViewer.setURL\050\322jdbc:msql://aardvark.eng/stuff\323\051;) 190.8 287.33 T (// Hookup the button to fire action events at us.) 190.8 263.33 T (btn.addActionListener\050this\051;) 190.8 251.33 T (}) 165.6 239.33 T (// Method that catches action events from the button.) 165.6 215.33 T (void actionPerformed\050java.awt.event.ActionEvent evt\051 {) 165.6 203.33 T (dbViewer.update\050\051;) 190.8 191.33 T (// prod the DB viewer.) 316.8 191.33 T (}) 165.6 179.33 T (private DatabaseViewer dbViewer;) 165.6 155.33 T (private Button btn;) 165.6 143.33 T (}) 140.4 131.33 T 34 646 36 686 R V 34 296 36 474 R V 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "20" 20 %%Page: "21" 21 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 54 746 558 756 R 7 X 0 0 0 1 0 0 0 K V 2 10 Q 0 X (JavaBeans) 54 749.33 T (Windowing Environment Issues) 431.34 749.33 T 54 32.67 558 42.67 R 7 X V 0 X (Sun Microsystems) 54 36 T (21) 301 36 T (7/24/97) 527.44 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 54 72 558 720 R 7 X V 3 18 Q 0 X (4) 81 708 T (Windowing Environment Issues) 108 708 T 0 12 Q -0.23 (A number of new features are being added to AWT in JDK 1.1 These features are described in) 108 680 P 0.32 (the \322JDK 1.1- AWT Enhancements\323 web pages \050see \322Related Documents\323 on) 108 666 P 0.32 (page) 488.71 666 P 0.32 (6) 514.36 666 P 0.32 (\051. How-) 520.36 666 P 0.14 (ever because some features are likely to be important to beans developers, we provide a short) 108 652 P (overview of key new AWT features in this section.) 108 638 T 3 14 Q (4.1) 54 610.67 T ( Uniform Data Transfer mechanism) 75 610.67 T 0 12 Q -0.07 (The uniform data transfer mechanism proposed for inclusion into AWT is intended to provide) 108 590 P -0.13 (the fundamental mechanisms to enable the interchange of structured data between objects, ap-) 108 576 P -0.22 (plets or applications using higher level, user oriented facilities such as Cut, Copy and Paste, or) 108 562 P (Drag and Drop. In particular, the UDT mechanisms design goals are:) 108 548 T (\245) 115 528 T (provide a simple conceptual framework for the encapsulation and interchange of data.) 126 528 T (\245) 115 508 T (provide a general API that can support current and future data interchange models.) 126 508 T (\245) 115 488 T -0.23 (enable the efficient, dynamic creation, registration, and interchange of rich and diverse) 126 488 P (data types.) 126 474 T (\245) 115 454 T (enable data interchange across process boundaries.) 126 454 T (\245) 115 434 T (enable the interchange of data between Java-based and platform-native applications.) 126 434 T -0.43 (The facilities are based around an interface,) 108 414 P 2 F -0.43 (Transferable,) 317.59 414 P 0 F -0.43 (that defines abstractions both for the) 385.17 414 P -0.52 (transferable data itself and a namespace, based on the class) 108 400 P 2 F -0.52 (DataFlavor,) 389.09 400 P 0 F -0.52 ( for identifying and ne-) 448.75 400 P (gotiating the type, or types, of data that may be exchanged.) 108 386 T 0.13 (Objects wishing to provide a structured representation of some aspect of the information they) 108 366 P 0.17 (encapsulate will implement the) 108 352 P 2 F 0.17 (Transferable) 261.34 352 P 0 F 0.17 (interface, and possibly introduce additional data) 326.51 352 P (types identifying new types of structured data by creating new) 108 338 T 2 F (DataFlavor) 409.94 338 T 0 F (s.) 466.61 338 T 0.24 (Objects wishing to obtain such structured data will obtain references to a particular) 108 318 P 2 F 0.24 (Transfer-) 512.66 318 P 0.34 (able) 108 304 P 0 F 0.34 (interface and will compare the) 132.01 304 P 2 F 0.34 (DataFlavor) 282.67 304 P 0 F 0.34 (s available to determine if the source offers a) 339.33 304 P (type, or types, that are familiar to the destination.) 108 290 T 0.3 (The current proposal, at the time of writing, is that the MIME namespace for data types shall) 108 270 P (be used by) 108 256 T 2 F (DataFlavors) 162.32 256 T 0 F (.) 223.66 256 T 3 14 Q (4.2) 54 228.67 T ( Clipboard/Selection services) 75 228.67 T 0 12 Q 1.31 (Clipboard, or Selection services build upon the abstractions provided by the Uniform Data) 108 208 P -0.55 (Transfer mechanisms to enable objects, applets, or applications to exchange structured data be-) 108 194 P 0.84 (tween each other, by introducing the concept of a) 108 180 P 2 F 0.84 (Clipboard) 355.48 180 P 0 F 0.84 (class) 408.67 180 P 2 F 0.84 (,) 431.99 180 P 0 F 0.84 ( or named Selection, that) 434.99 180 P -0.3 (provides a rendezvous for the interchange between the source and destination, and a) 108 166 P 2 F -0.3 (Clipboar-) 510.66 166 P (dOwner) 108 152 T 0 F ( interface that provides data sources with notifications of clipboard state changes.) 146.66 152 T 34 662 36 674 R V 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "21" 21 %%Page: "22" 22 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 54 746 558 756 R 7 X 0 0 0 1 0 0 0 K V 2 10 Q 0 X (JavaBeans) 54 749.33 T (Persistent Storage) 484.39 749.33 T 54 32.67 558 42.67 R 7 X V 0 X (Sun Microsystems) 54 36 T (22) 301 36 T (7/24/97) 527.44 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 54 72 558 720 R 7 X V 3 18 Q 0 X (5) 81 708 T (Persistent Storage) 108 708 T 3 14 Q (5.1) 54 678.67 T ( Goals) 75 678.67 T 0 12 Q 0.2 (Java Beans need to support a very wide range of storage behaviour. We want them to be able) 108 658 P -0.28 (to use existing data formats and plug into OLE or OpenDoc documents. For example, we want) 108 644 P (them to be able to pretend to be an Excel document inside a Word document.) 108 630 T 0.09 (We\325d also like it to be \322trivial\323 for the common case of a tiny Bean that simply wants to have) 108 610 P (its internal state saved and doesn\325t want to think about it.) 108 596 T 3 14 Q (5.2) 54 568.67 T ( A composite solution) 75 568.67 T 0 12 Q -0.19 (To meet these different goals we support a composite solution where a Bean can either choose) 108 548 P 0.16 (to use the automatic Java serialization mechanism or where it can choose to use an \322external-) 108 534 P (ization\323 stream mechanism that provides it with full control over the resulting data layout.) 108 520 T -0.26 (As part of Java Beans 1.0 we support the Java Object Serialization mechanism which provides) 108 500 P 0.03 (an automatic way of storing out and restoring the internal state of a collection of Java objects.) 108 486 P -0.05 (For further information see the Java Serialization specification. \050) 108 472 P -0.05 (See \322Related Documents\323 on) 417.85 472 P (page) 108 458 T (6.) 133.66 458 T (\051) 142.66 458 T 0 (\322Ex) 108 438 P 0 (ternalization\323) 126.66 438 P 0 (is an option within Serialization which allows a class c) 194.98 438 P 0 (omplete control over) 458.01 438 P (the writing of) 108 424 T (its s) 176.33 424 T (tate, so that) 195.34 424 T (it ca) 253.33 424 T (n choose to mimic arbitrary existing data formats) 273.66 424 T (.) 509.96 424 T 3 14 Q (5.3) 54 396.67 T ( What should be saved) 75 396.67 T 0 12 Q 0.59 (When a bean is made persistent it should store away appropriate parts of its internal state so) 108 376 P 0.98 (that it can be resurrected later with a similar appearance and similar behaviour. Normally a) 108 362 P -0.27 (bean will store away persistent state for all its exposed properties. It may also store away addi-) 108 348 P -0.21 (tional internal state that is not directly accessible via properties. This might include \050for exam-) 108 334 P -0.42 (ple\051 additional design choices that were made while running a bean Customizer \050see Section 5\051) 108 320 P (or internal state that was created by the bean developer.) 108 306 T 0.28 (A bean may contain other beans, in which case it should store away these beans as part of its) 108 286 P (internal state.) 108 272 T 0.52 (However a bean should not normally store away pointers to external beans \050either peers or a) 108 252 P -0.02 (parent container\051 but should rather expect these connections to be rebuilt by higher-level soft-) 108 238 P 0.19 (ware. So normally it should use the \322transient\323 keyword to mark pointers to other beans or to) 108 224 P -0.75 (event listeners. In general it is a container\325s responsibility to keep track of any inter-bean wiring) 108 210 P (it creates and to store and resurrect it as needed.) 108 196 T -0.07 (For the same reasons, normally event adaptors should mark their internal fields as \322transient\323.) 108 176 P 3 14 Q (5.4) 54 148.67 T ( Persistence) 75 148.67 T (though generated initialization code) 148.86 148.67 T 0 12 Q 1.24 (Builder tools typically allow users to configure beans at design time both by editing beans) 108 128 P -0.66 (properties and by running bean specific customizers \050see Section 9.3\051. The builder tool then has) 108 114 P -0.57 (the responsibility for making sure that at run-time the beans are resurrected with the same state.) 108 100 P 34 420 36 480 R V 34 268 36 294 R V 34 96 36 158 R V 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "22" 22 %%Page: "23" 23 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 54 746 558 756 R 7 X 0 0 0 1 0 0 0 K V 2 10 Q 0 X (JavaBeans) 54 749.33 T (Persistent Storage) 484.39 749.33 T 54 32.67 558 42.67 R 7 X V 0 X (Sun Microsystems) 54 36 T (23) 301 36 T (7/24/97) 527.44 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 54 72 558 720 R 7 X V 0 12 Q 0 X -0.47 (A builder tool may use Java serialization to save and restore the state of all its initialized beans.) 108 712 P -0.07 (However, alternatively, builder tools may chose to generate source code to reinitialize each of) 108 698 P (the beans to the correct state.) 108 684 T 0.52 (So for example a builder tool might check for properties which have changed since the bean) 108 664 P -0.32 (was created and generate code that allocates a similar bean and then calls property setter meth-) 108 650 P (ods to set the state of the bean. For example:) 108 636 T 4 10 Q (Wombat b = new Wombat\050\051;) 140.4 617.33 T (w.setBackground\050new java.awt.Color\050120,120,120\051\051;) 140.4 605.33 T (w.setWeight\05015\051;) 140.4 593.33 T 0 12 Q 0 (Note that the PropertyEditor.getJavaInitializationString\050\051 method can be used to obtain a Java) 108 574 P (string to act as the initialization value for the property \050see Section 9.2.5\051.) 108 560 T 3 F (5.4.1) 66 537 T (Limitations on generated initialization code) 108 537 T 0 F 0.79 (There is one important limitation to the use of generated code to restore the state of a bean.) 108 517 P -0.64 (Some beans may have internal state that is not accessible as properties. For example, a database) 108 503 P 0.32 (accessor bean may allow itself to be configured via a bean customizer, but it may not expose) 108 489 P 0.72 (all of its configuration information as properties. Or a spreadsheet bean may allow a user to) 108 475 P (enter cell values at design-time but may not wish to expose all these cell values as properties.) 108 461 T -0.29 (In these cases the bean designer may specify that the bean cannot be restored by simply saving) 108 441 P 0.14 (and restoring its properties. This can be done by using the FeatureDescriptor\325s attribute/value) 108 427 P 0.95 (mechanism to specify in the bean\325s BeanDescriptor an attribute named \322hidden-state\323 to be) 108 413 P (Boolean true.) 108 399 T (So in your BeanInfo class you might do:) 108 379 T 4 10 Q (public BeanDescriptor getBeanDescriptor\050\051 {) 140.4 360.33 T (BeanDescriptor bd = new BeanDescriptor\050a.b.MyBean.class\051;) 165.6 348.33 T (bd.setName\050\322SecretiveBean\323\051;) 165.6 336.33 T (bd.setValue\050\322hidden-state\323, Boolean.TRUE\051;) 165.6 324.33 T (return bd;) 165.6 312.33 T (}) 140.4 300.33 T 0 12 Q -0.01 (Tools that wish to generate source code to restore the state of a bean must check the BeanInfo) 108 281 P -0.54 (for the bean to see if the BeanDescriptor has the \322hidden-state\323 attribute set true. If so then they) 108 267 P (must use object serialization and/or externalization to save and restore the state of the bean.) 108 253 T 3 14 Q (5.5) 54 225.67 T (Summary of persistence) 78.5 225.67 T 0 12 Q (All beans must support either Serialization or Externalization.) 108 205 T 0.06 (It is always valid for an application to save and restore the state of a bean using the Java Seri-) 108 185 P (alization APIs. \050The serialization APIs handle both Serializable and Externalizable objects.\051) 108 171 T 0.01 (A tool may also use generated code to restore the state of a bean unless the bean has specified) 108 151 P 0.08 (the \322hidden-state\323 attribute, in which case the bean must be saved and restored with serializa-) 108 137 P (tion and/or externalization.) 108 123 T 34 119 36 720 R V 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "23" 23 %%Page: "24" 24 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 54 746 558 756 R 7 X 0 0 0 1 0 0 0 K V 2 10 Q 0 X (JavaBeans) 54 749.33 T (Events) 531.34 749.33 T 54 32.67 558 42.67 R 7 X V 0 X (Sun Microsystems) 54 36 T (24) 301 36 T (7/24/97) 527.44 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 54 72 558 720 R 7 X V 3 18 Q 0 X (6) 81 708 T (Events) 108 708 T 0 12 Q -0.35 (Events are one of the core features of the Java Beans architecture. Events provide a convenient) 108 680 P 0.62 (mechanism for allowing components to be plugged together in an application builder, by al-) 108 666 P 0.2 (lowing some components to act as sources for event notifications that can then be caught and) 108 652 P (processed by either scripting environments or by other components.) 108 638 T 3 14 Q (6.1) 54 610.67 T ( Goals) 75 610.67 T 0 12 Q 1.1 (Conceptually, events are a mechanism for propagating state change notifications between a) 108 590 P 2 F (source) 108 576 T 0 F ( object and one or more target) 139.99 576 T 2 F (listener) 286.96 576 T 0 F ( objects.) 322.96 576 T -0.57 (Events have many different uses, but a common example is their use in window system toolkits) 108 556 P (for delivering notifications of mouse actions, widget updates, keyboard actions, etc.) 108 542 T -0.33 (For Java, and Java Beans in particular, we require a generic, extensible event mechanism, that:) 108 522 P (1.) 126 502 T -0.66 (Provides a common framework for the definition and application of an extensible set of) 144 502 P (event types and propagation models, suitable for a broad range of applications.) 144 488 T (2.) 126 468 T (Integrates well with, and leverages the strengths of, the features of the Java language) 144 468 T (and environment.) 144 454 T (3.) 126 434 T (Allows events to be caught \050and fired\051 by scripting environments.) 144 434 T (4.) 126 414 T (Facilitates the use of application builder technology to directly manipulate events and) 144 414 T (the relationships between event sources and event listeners at design time.) 144 400 T (5.) 126 380 T (Does not rely on the use of sophisticated application development tools.) 144 380 T (In particular, the design should:) 108 360 T (6.) 126 340 T (Enable the discovery of the events that a particular object\325s class may generate.) 144 340 T (7.) 126 320 T (Enable the discovery of the events that a particular object\325s class may observe.) 144 320 T (8.) 126 300 T (Provide a common event registration mechanism that permits the dynamic) 144 300 T (manipulation of the relationships between event sources and event listeners.) 144 286 T (9.) 126 266 T (Be implementable without requiring changes to the VM or the language.) 144 266 T (10.) 126 246 T (Promote high performance propagation of events between sources and listeners.) 144 246 T (11.) 126 226 T -0.69 (Enable a natural mapping between Java Beans events and event models associated with) 144 226 P (other common component architectures.) 144 212 T 3 14 Q (6.2) 54 184.67 T ( Overview) 75 184.67 T 0 12 Q (The details of the event model are described in the following sections, but in outline:) 108 164 T (\245) 115 144 T 5.01 (Event notifications are propagated from sources to listeners by Java method) 126 144 P (invocations on the target listener objects.) 126 130 T (\245) 115 110 T 1.49 (Each distinct kind of event notification is defined as a distinct Java method. These) 126 110 P 8.49 (methods are then grouped in) 126 96 P 2 F 8.49 (EventListener) 308.08 96 P 0 F 8.49 ( interfaces that inherit from) 374.74 96 P 2 F (java.util.EventListener.) 126 82 T 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "24" 24 %%Page: "25" 25 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 54 746 558 756 R 7 X 0 0 0 1 0 0 0 K V 2 10 Q 0 X (JavaBeans) 54 749.33 T (Events) 531.34 749.33 T 54 32.67 558 42.67 R 7 X V 0 X (Sun Microsystems) 54 36 T (25) 301 36 T (7/24/97) 527.44 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 54 72 558 720 R 7 X V 0 12 Q 0 X (\245) 115 347.17 T 0.34 (Event listener classes identify themselves as interested in a particular set of events by) 126 347.17 P (implementing some set of) 126 333.17 T 2 F (EventListener) 253.33 333.17 T 0 F ( interfaces.) 319.99 333.17 T (\245) 115 313.17 T 1.17 (The state associated with an event notification is normally encapsulated in an event) 126 313.17 P 1.39 (state object that inherits from) 126 299.17 P 2 F 1.39 (java.util.EventObject) 276.62 299.17 P 0 F 1.39 ( and which is passed as the sole) 378.61 299.17 P (argument to the event method.) 126 285.17 T (\245) 115 265.17 T -0.53 (Event sources identify themselves as sourcing particular events by defining registration) 126 265.17 P -0.23 (methods that conform to a specific design pattern \050see Sections 8.2 and 8.4\051 and accept) 126 251.17 P (references to instances of particular) 126 237.17 T 2 F (EventListener) 299.6 237.17 T 0 F ( interfaces.) 366.26 237.17 T (\245) 115 217.17 T 1.04 (In circumstances where listeners cannot directly implement a particular interface, or) 126 217.17 P 0.16 (when some additional behavior is required, an instance of a custom adaptor class may) 126 203.17 P 1.72 (be interposed between a source and one or more listeners in order to establish the) 126 189.17 P (relationship or to augment behavior.) 126 175.17 T 3 14 Q (6.3) 54 147.83 T ( Event State Objects) 75 147.83 T 0 12 Q 2.04 (Information associated with a particular event notification is normally encapsulated in an) 108 127.17 P -0.25 (\322event state\323 object that is a subclass of) 108 113.17 P 2 F -0.25 (java.util.EventObject.) 299.29 113.17 P 0 F -0.25 (By convention these event state) 407.02 113.17 P (classes are given names ending in \322Event\323. For example:) 108 99.17 T 54 72 558 720 C 70.49 355.17 541.51 720 C 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 85.49 512.84 202.49 577.41 18 RR 7 X 0 0 0 1 0 0 0 K V 0.5 H 0 Z 0 X N 3 14 Q (Event Source) 104.13 540.36 T 358.49 513.66 484.49 578.23 18 RR 7 X V 0 X N (Event Listener) 377.35 541.18 T 83.27 679 335.27 715.9 R 7 X V 0 X N 3 9 Q (public synchronized) 86.79 700.49 T (FooListener addFooListener\050FooListener fel\051;) 86.79 689.14 T 139.49 577.41 139.49 679.22 2 L 7 X V 2 Z 0 X N 0 Z 90 450 31.5 32.29 281.49 545.18 A (FooEvent) 262.99 542.12 T 130.49 522.06 184.49 531.29 R N (eListener) 139.49 524.08 T 518.13 689.66 390.15 689.66 2 L V N 518.13 687.66 390.15 687.66 2 L V N 5 12 Q (Overview of Event Model.) 390.15 691.91 T 304.49 385.68 538.49 488.23 R 7 X V 0 X N 3 9 Q (class Fooey implements FooListener {) 313.49 470.68 T ( void fooBarHappened\050FooEvent fe\051 {) 313.49 460.04 T ( // ...) 313.49 449.4 T ( }) 313.49 438.77 T ( void fooBazOccurred\050FooEvent fe\051 {) 315.46 427.25 T ( // ...) 315.46 416.61 T ( }) 315.46 405.98 T (}) 315.46 395.34 T 420.66 513.9 420.66 487.23 2 L 7 X V 2 Z 0 X N 291.87 488.06 291.87 491.04 302.25 488.06 291.87 485.09 4 Y 0 Z N 291.87 488.06 291.87 491.04 302.25 488.06 291.87 485.09 4 Y V 186.49 488.06 291.62 488.06 2 L 7 X V 2 Z 0 X N 184.82 487.23 184.82 522.23 2 L 7 X V 0 X N 420.66 578.9 420.66 621.4 2 L 7 X V 0 X N 421.49 623.23 250.49 623.23 2 L 7 X V 0 X N 250.49 667.38 247.51 667.38 250.49 677.76 253.46 667.38 4 Y 0 Z N 250.49 667.38 247.51 667.38 250.49 677.76 253.46 667.38 4 Y V 250.49 623.23 250.49 667.13 2 L 7 X V 2 Z 0 X N 239.2 542.23 239.2 545.21 249.58 542.23 239.2 539.26 4 Y 0 Z N 239.2 542.23 239.2 545.21 249.58 542.23 239.2 539.26 4 Y V 202.32 542.23 238.95 542.23 2 L 7 X V 2 Z 0 X N 347.2 542.23 347.2 545.21 357.58 542.23 347.2 539.26 4 Y 0 Z N 347.2 542.23 347.2 545.21 357.58 542.23 347.2 539.26 4 Y V 313.49 542.23 346.95 542.23 2 L 7 X V 2 Z 0 X N 0 12 Q (register Listener) 286.49 632.23 T (fire) 214.49 560.23 T (Event) 214.49 548.23 T (interface reference) 196.49 497.23 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 54 72 558 720 C 0 0 612 792 C 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "25" 25 %%Page: "26" 26 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 54 746 558 756 R 7 X 0 0 0 1 0 0 0 K V 2 10 Q 0 X (JavaBeans) 54 749.33 T (Events) 531.34 749.33 T 54 32.67 558 42.67 R 7 X V 0 X (Sun Microsystems) 54 36 T (26) 301 36 T (7/24/97) 527.44 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 54 72 558 720 R 7 X V 4 F 0 X (public) 126 705.33 T (class MouseMovedExampleEvent extends java.util.EventObject {) 168 705.33 T (protected int x, y;) 154.8 693.33 T (// constructs a new MouseMovedExampleEvent) 154.8 673.33 T (MouseMovedExampleEvent\050java.awt.Component source, Point location\051 {) 154.8 661.33 T (super\050source\051;) 183.6 649.33 T (x = location.x;) 183.6 637.33 T (y = location.y;) 183.6 625.33 T (}) 154.8 613.33 T (// Access method for location) 154.8 593.33 T (public Point getLocation\050\051 {) 154.8 581.33 T (return new Point\050x, y\051;) 183.6 569.33 T (}) 154.8 557.33 T (// translates coords, for use when propagating up view hierarchy.) 154.8 537.33 T (public void translateLocation\050int dx, int dy\051 {) 154.8 525.33 T (x += dx;) 183.6 513.33 T (y += dy;) 183.6 501.33 T (}) 154.8 489.33 T (}) 126 477.33 T 0 12 Q 0.51 (As with) 108 458 P 2 F 0.51 (java.lang.Exception) 149.68 458 P 0 F 0.51 (, new subclasses of) 245.67 458 P 2 F 0.51 ( java.util.EventObject) 339.17 458 P 0 F 0.51 ( may be created simply) 444.66 458 P 0.46 (to allow logical distinctions between event state objects of different types, even if they share) 108 444 P (all the same data. So another example might be:) 108 430 T 4 10 Q (public) 126 403.33 T (class) 168 403.33 T ( ControlExampleEvent extends java.util.EventObject {) 198 403.33 T (// Simple \322logical\323 event. The significant information is the type) 154.8 391.33 T (// of the event subclass.) 154.8 379.33 T (ControlExampleEvent\050Control source\051 {) 154.8 367.33 T (super\050source\051;) 183.6 355.33 T (}) 154.8 343.33 T (}) 126 331.33 T 0 12 Q -0.16 (Typically, event state objects should be considered immutable. Therefore it is strongly recom-) 108 300 P 0.07 (mended that direct public access to fields be denied, and that accessor methods be used to ex-) 108 286 P -0.61 (pose details of event state objects. However where some aspects of an event state object require) 108 272 P 0.8 (modification \050e.g translating view relative coordinates when propagating an event through a) 108 258 P -0.21 (view hierarchy, as in the example above\051 it is recommended that such modifications be encap-) 108 244 P -0.04 (sulated by an appropriate method that effects the required modification \050as in the sample code) 108 230 P -0.09 (above\051, or alternatively a new event state object should be instantiated reflecting the appropri-) 108 216 P (ate modifications.) 108 202 T 1.64 (These accessor methods should follow the appropriate design patterns for read-only, read/) 108 182 P 0.27 (write, or write-only properties as defined in Section 8.3. This is especially important as it en-) 108 168 P -0.42 (ables the framework to identify in-out event data when bridging events between Java and other) 108 154 P -0.3 (component architectures that encompass the ability to return state to the originator of an event,) 108 140 P (through the event state object.) 108 126 T 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "26" 26 %%Page: "27" 27 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 54 746 558 756 R 7 X 0 0 0 1 0 0 0 K V 2 10 Q 0 X (JavaBeans) 54 749.33 T (Events) 531.34 749.33 T 54 32.67 558 42.67 R 7 X V 0 X (Sun Microsystems) 54 36 T (27) 301 36 T (7/24/97) 527.44 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 54 72 558 720 R 7 X V 3 14 Q 0 X (6.4) 54 710.67 T ( EventListener Interfaces) 75 710.67 T 0 12 Q -0.17 (Since the new Java event model is based on method invocation we need a way of defining and) 108 690 P 2.09 (grouping event handling methods. We require that event handling methods be defined in) 108 676 P 2 F 4.46 (EventListener) 108 662 P 0 F 4.46 ( interfaces that inherit from) 174.66 662 P 2 F 4.46 ( java.util.EventListener) 323.82 662 P 0 F 4.46 (. By convention these) 440.62 662 P 2 F (EventListener) 108 648 T 0 F (interfaces are given names ending in \322Listener\323.) 177.66 648 T -0.13 (A class that wants to handle any of the set of events defined in a given) 108 628 P 2 F -0.13 (EventListener) 446.49 628 P 0 F -0.13 (interface) 516.02 628 P (should implement that interface.) 108 614 T (So for example one might have:) 108 594 T 4 10 Q (public class MouseMovedExampleEvent extends java.util.EventObject {) 126 575.33 T (// This class defines the state object associated with the event) 154.8 563.33 T (...) 154.8 551.33 T (}) 126 539.33 T (interface MouseMovedExampleListener extends java.util.EventListener {) 126 519.33 T (// This interface defines the listener methods that any event) 154.8 507.33 T (// listeners for \322MouseMovedExample\323 events must support.) 154.8 495.33 T (void mouseMoved\050MouseMovedExampleEvent mme\051;) 154.8 483.33 T (}) 126 471.33 T (class ArbitraryObject implements MouseMovedExampleListener {) 126 451.33 T (public void mouseMoved\050MouseMovedExampleEvent mme\051 {) 154.8 439.33 T (...) 183.6 427.33 T (}) 154.8 415.33 T (}) 126 403.33 T 0 12 Q 1.55 (Event handling methods defined in) 108 376 P 2 F 1.55 ( EventListener) 282.19 376 P 0 F 1.55 ( interfaces should normally conform to a) 353.4 376 P 0.17 (standard design pattern. Requiring conformance to such a pattern aids in the utility and docu-) 108 362 P 0.5 (mentation of the event system, permits such interfaces to be determined by third parties pro-) 108 348 P (grammatically, and allows the automatic construction of generic event adaptors.) 108 334 T (The signature of this design pattern is:) 108 314 T 4 10 Q (void \050 evt\051;) 145 295.33 T 0 12 Q (Where the is a subclass of) 108 276 T 2 F (java.util.EventObject) 361.15 276 T 0 F (.) 463.14 276 T 1.34 (It is also permissible for the event handling method to throw \322checked\323 exceptions, which) 108 256 P -0.54 (should be declared in the normal way in a throws clause in the method signature. \050See also Sec-) 108 242 P (tion 6.6.3\051.) 108 228 T 0.31 (Typically, related event handling methods will be grouped into the same) 108 208 P 2 F 0.31 (EventListener) 462.04 208 P 0 F 0.31 (inter-) 532.01 208 P -0.16 (face. So for example, mouseEntered, mouseMoved, and mouseExited might be grouped in the) 108 194 P -0.6 (same) 108 180 P 2 F -0.6 (EventListener) 135.06 180 P 0 F -0.6 ( interface. \050However some) 201.72 180 P 2 F -0.6 (EventListener) 329.62 180 P 0 F -0.6 ( interfaces may only contain a sin-) 396.28 180 P -0.6 (gle method.\051 In addition, in situations where there are a large number of related kinds of events,) 108 166 P -0.14 (a hierarchy of) 108 152 P 2 F -0.14 (EventListener) 177.23 152 P 0 F -0.14 (s may be defined such that the occurrences most commonly of in-) 243.89 152 P -0.69 (terest to the majority of potential listeners are exposed in their own) 108 138 P 2 F -0.69 (EventListener) 424.4 138 P 0 F -0.69 (interface, and) 493.38 138 P -0.27 (the more complete set of occurrences are specified in subsequent) 108 124 P 2 F -0.27 (EventListener) 419.91 124 P 0 F -0.27 (interfaces per-) 489.3 124 P 0.46 (haps as part of an inheritance graph, thus reducing the implementation burden for the simple) 108 110 P (case. For example:) 108 96 T 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "27" 27 %%Page: "28" 28 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 54 746 558 756 R 7 X 0 0 0 1 0 0 0 K V 2 10 Q 0 X (JavaBeans) 54 749.33 T (Events) 531.34 749.33 T 54 32.67 558 42.67 R 7 X V 0 X (Sun Microsystems) 54 36 T (28) 301 36 T (7/24/97) 527.44 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 54 72 558 720 R 7 X V 4 F 0 X (public class ControlEvent extends java.util.EventObject {) 126 705.33 T (// ...) 154.8 693.33 T (}) 126 681.33 T (interface ControlListener extends java.util.EventListener {) 126 661.33 T (void controlFired\050ControlEvent ce\051;) 154.8 649.33 T (}) 126 637.33 T (interface ComplexControlListener extends ControlListener {) 126 617.33 T (void controlHighlighted\050ControlEvent ce\051;) 154.8 605.33 T (void controlPreviewAction\050ControlEvent ce\051;) 154.8 593.33 T (void controlUnhighlighted\050ControlEvent ce\051;) 154.8 581.33 T (void controlHelpRequested\050ControlEvent ce\051;) 154.8 569.33 T (}) 126 557.33 T 3 12 Q (6.4.1) 66 527 T (Event methods with arbitrary argument lists) 108 527 T 0 F -0.25 (As described above, normally event handling methods should have a single argument which is) 108 507 P (a sub-type of) 108 493 T 2 F (java.util.EventObject) 173.65 493 T 0 F (.) 275.64 493 T -0.66 (However under certain specific and unusual applications or circumstances, conformance to this) 108 473 P 0.31 (standard method signature may not be appropriate. This may happen, for example, when for-) 108 459 P 1.25 (warding event notifications to external environments that are implemented in different lan-) 108 445 P -0.49 (guages or with different conventions. In these circumstances it may be necessary to express the) 108 431 P (notification method signature in a style more in keeping with the target environment.) 108 417 T -0.22 (In these exceptional circumstances it is permissible to allow method signatures containing one) 108 397 P (or more parameters of any arbitrary Java type.) 108 383 T (The permitted signature is:) 108 363 T 4 10 Q (void \050\051;) 145 344.33 T 0 12 Q (The method may also have a \322throws\323 clause listing arbitrary exceptions.) 108 325 T -0.17 (Designers are strongly recommended to use considerable restraint in the application of this ar-) 108 305 P 0.03 (bitrary argument list in the design of their listener interfaces as there are several drawbacks to) 108 291 P -0.51 (its widespread application. Therefore it is recommended that its usage be confined to situations) 108 277 P -0.03 (where solutions utilizing the recommended pattern in conjunction with custom event adaptors) 108 263 P (are not generally applicable, as in the examples mentioned above.) 108 249 T 0.1 (Although usage of this relaxation in the design pattern is strongly discouraged for general ap-) 108 229 P -0.42 (plication, there will be circumstances where it will be used to good effect. Applications builder) 108 215 P 0.28 (environments should support such relaxed event method signatures and in general should not) 108 201 P -0.02 (discriminate between such methods and those that strictly conform to the standard design pat-) 108 187 P (tern.) 108 173 T 3 14 Q (6.5) 54 145.67 T ( Event Listener Registration) 75 145.67 T 0 12 Q 0.51 (In order for potential) 108 125 P 2 F 0.51 (EventListeners) 213.34 125 P 0 F 0.51 ( to register themselves with appropriate event source in-) 284.66 125 P 0.81 (stances, thus establishing an event flow from the source to the listener, event source classes) 108 111 P (must provide methods for registering and de-registering event listeners.) 108 97 T 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "28" 28 %%Page: "29" 29 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 54 746 558 756 R 7 X 0 0 0 1 0 0 0 K V 2 10 Q 0 X (JavaBeans) 54 749.33 T (Events) 531.34 749.33 T 54 32.67 558 42.67 R 7 X V 0 X (Sun Microsystems) 54 36 T (29) 301 36 T (7/24/97) 527.44 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 54 72 558 720 R 7 X V 0 12 Q 0 X 0.03 (The registration methods shall conform to a particular set of design patterns that aids in docu-) 108 712 P 0.22 (mentation and also enables programmatic introspection by the Java Beans introspection APIs) 108 698 P (and by application builder tools.) 108 684 T (The standard design pattern for EventListener registration is:) 108 664 T 4 10 Q (public void add<) 126 645.33 T 6 F (ListenerType) 222 645.33 T 4 F (>\050<) 294 645.33 T 6 F (ListenerType) 312 645.33 T 4 F (> listener\051;) 384 645.33 T (public void remove<) 126 633.33 T 6 F (ListenerType) 240 633.33 T 4 F (>\050<) 312 633.33 T 6 F (ListenerType) 330 633.33 T 4 F (> listener\051;) 402 633.33 T 0 12 Q -0.38 (The presence of this pattern identifies the implementor as a standard multicast event source for) 108 614 P (the listener interface specified by <) 108 600 T 2 F (ListenerType) 277.06 600 T 0 F (>.) 339.72 600 T 0.88 (Invoking the add<) 108 580 P 2 F 0.88 (ListenerType) 197.86 580 P 0 F 0.88 (> method adds the given listener to the set of event listeners) 260.53 580 P 0.01 (registered for events associated with the <) 108 566 P 2 F 0.01 (ListenerType) 310.1 566 P 0 F 0.01 (>. Similarly invoking the remove<) 372.76 566 P 2 F 0.01 (Lis-) 539.33 566 P 1.1 (tenerType) 108 552 P 0 F 1.1 (> method removes the given listener from the set of event listeners registered for) 155.99 552 P (events associated with the <) 108 538 T 2 F (ListenerType) 242.75 538 T 0 F (>.) 305.41 538 T 0 10 Q -0.17 (The add) 129 519.33 P 2 F -0.17 () 161.32 519.33 P 0 F -0.17 ( and remove) 227.04 519.33 P 2 F -0.17 () 276.12 519.33 P 0 F -0.17 ( methods should normally be) 341.84 519.33 P 2 F -0.17 ( synchronized) 457.25 519.33 P 0 F -0.17 (meth-) 514.67 519.33 P (ods to avoid races in multi-threaded code.) 129 507.33 T 0 12 Q 1.37 (The relationship between registration order and event delivery order is implementation de-) 108 484 P 0.69 (fined. In addition the effects of adding the same event listener object more than once on the) 108 470 P 0.05 (same event source, or of removing an event listener object more than once, or of removing an) 108 456 P (event listener object that is not registered, are all implementation defined.) 108 442 T 3 F (6.5.1) 66 419 T (Event Registration Example) 108 419 T 0 F (An example of event listener registration at a normal multicast event source:) 108 399 T 4 10 Q (public interface ModelChangedListener extends java.util.EventListener {) 126 372.33 T (void modelChanged\050EventObject e\051;) 154.8 360.33 T (}) 126 348.33 T (public abstract class Model {) 126 328.33 T (private Vector) 154.8 316.33 T ( listeners = new Vector\050\051; // list of Listeners) 238.8 316.33 T (public synchronized void) 154.8 292.33 T (addModelChangedListener\050ModelChangedListener mcl\051 {) 154.8 280.33 T (listeners.addElement\050mcl\051;) 183.6 268.33 T (}) 154.8 256.33 T (public synchronized void) 154.8 236.33 T (removeModelChangedListener\050ModelChangedListener mcl\051 {) 154.8 224.33 T (listeners.removeElement\050mcl\051;) 183.6 212.33 T (}) 154.8 200.33 T 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "29" 29 %%Page: "30" 30 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 54 746 558 756 R 7 X 0 0 0 1 0 0 0 K V 2 10 Q 0 X (JavaBeans) 54 749.33 T (Events) 531.34 749.33 T 54 32.67 558 42.67 R 7 X V 0 X (Sun Microsystems) 54 36 T (30) 301 36 T (7/24/97) 527.44 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 54 72 558 720 R 7 X V 4 F 0 X (protected void notifyModelChanged\050\051 {) 154.8 713.33 T (Vector) 183.6 701.33 T (l;) 241.2 701.33 T (EventObject) 183.6 689.33 T ( e = new EventObject\050this\051;) 249.6 689.33 T -0.74 (// Must copy the Vector here in order to freeze the state of the) 183.6 669.33 P -0.36 (// set of EventListeners the event should be delivered to prior) 183.6 657.33 P -0.87 (// to delivery. This ensures that any changes made to the Vector) 183.6 645.33 P -0.36 (// from a target listener\325s method, during the delivery of this) 183.6 633.33 P -0.87 (// event will not take effect until after the event is delivered) 183.6 621.33 P (synchronized\050this\051 { l = \050Vector\051listeners.clone\050\051; }) 183.6 601.33 T (for \050int i = 0; i < l.size\050\051; i++\051 { // deliver it!) 183.6 581.33 T (\050\050ModelChangedListener\051l.elementAt\050i\051\051.modelChanged\050e\051;) 212.4 569.33 T (}) 183.6 557.33 T (}) 154.8 545.33 T (}) 126 533.33 T 3 12 Q (6.5.2) 66 503 T (Unicast Event Listener Registration.) 108 503 T 0 F 0.25 (Wherever possible, event sources should support multicast event notification to arbitrary col-) 108 483 P 1.51 (lections of event listeners. However, for either semantic or implementation reasons it may) 108 469 P 0.26 (sometimes be inappropriate or impractical for some events to be multicast. We therefore also) 108 455 P (permit a unicast design pattern for event registration.) 108 441 T (The type signature for a unicast EventListener registration pattern is:) 108 421 T 4 10 Q (public void add) 126 402.33 T 6 F () 216 402.33 T 4 F (\050) 300 402.33 T 6 F () 306 402.33 T 4 F (listener\051) 396 402.33 T (throws java.util.TooManyListenersException;) 270 390.33 T (public void remove<) 126 378.33 T 6 F (ListenerType) 240 378.33 T 4 F (>\050<) 312 378.33 T 6 F (ListenerType) 330 378.33 T 4 F (> listener\051;) 402 378.33 T 0 12 Q 0 (The presence of the) 108 359 P 4 10 Q 0.01 (throws java.util.TooManyListenersException) 205.32 359 P 0 12 Q 0 (in the pattern identi-) 460.33 359 P 0.39 (fies the implementor as an event source with unicast event source semantics for the interface) 108 345 P (specified by) 108 331 T 2 F (.) 169.32 331 T 0 F -0.37 (Note that the unicast pattern is a special case of the multicast pattern and as such allows migra-) 108 311 P -0.35 (tion of a unicast event source to a multicast event source, without breaking existing client code) 108 297 P 0.37 (Invoking the add) 108 277 P 2 F 0.37 () 190.07 277 P 0 F 0.37 ( method on a unicast source registers the specified) 268.93 277 P 2 F 0.37 () 108 263 P 0 F 0.17 ( instance as the current listener only if no other listener is currently registered, other-) 149.42 263 P (wise the value of the currently registered listener is unchanged and the method throws:) 108 249 T 4 10 Q (java.util.TooManyListenersException.) 183.6 230.33 T 0 12 Q -0.02 (Passing) 108 211 P 2 F -0.02 (null) 147.65 211 P 0 F -0.02 (as the value of the listener is illegal, and may result in either an) 169.31 211 P 2 F -0.02 (IllegalArgument-) 475.34 211 P (Exception) 108 197 T 0 F ( or a) 155.99 197 T 2 F (NullPointerException) 180.31 197 T 0 F (.) 284.98 197 T 3 14 Q (6.6) 54 169.67 T ( Event Delivery Semantics) 75 169.67 T 3 12 Q (6.6.1) 66 146 T (Unicast/Multicast) 108 146 T 0 F 0.23 (Normal event delivery is multicast. Each multicast event source is required to keep track of a) 108 126 P (set of event listeners for each different kind of event it fires.) 108 112 T 0.12 (Wh) 108 92 P 0.12 (en an event is triggered, the event source shall call each eligible target listener. By default) 125.33 92 P -0.08 (all currently registered listeners shall be considered eligible for notification, however a partic-) 108 78 P 34 74 36 100 R V 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "30" 30 %%Page: "31" 31 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 54 746 558 756 R 7 X 0 0 0 1 0 0 0 K V 2 10 Q 0 X (JavaBeans) 54 749.33 T (Events) 531.34 749.33 T 54 32.67 558 42.67 R 7 X V 0 X (Sun Microsystems) 54 36 T (31) 301 36 T (7/24/97) 527.44 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 54 72 558 720 R 7 X V 0 12 Q 0 X 1.09 (ular source may restrict the set of eligible listeners to a subset of those currently registered) 108 712 P -0.22 (based upon an implementation dependent selection criteria that may be based upon the current) 108 698 P (state of the source, listeners, some arbitary part of the system or the nature of the event itself.) 108 684 T 0.21 (If) 108 664 P 0.21 ( any of the event listeners raise an exception \050see 6.6.3 below\051 it is an implementation deci-) 115.99 664 P (sion for the event source whether to continue and deliver the event to the remaining listeners.) 108 650 T 0.76 (As described in Section 6.5.2 some event sources may only support unicast. In this case the) 108 630 P 0.17 (event source is only required to keep track of a single event listener for each different unicast) 108 616 P 0.13 (event it fires. When a unicast event is triggered, the event source should call this single target) 108 602 P (listener.) 108 588 T 3 F (6.6.2) 66 565 T (Synchronous delivery) 108 565 T 0 F 0.09 (Event delivery is synchronous with respect to the event source. When the event source calls a) 108 545 P 0.65 (target listener method, the call is a normal Java method invocation and is executed synchro-) 108 531 P (nously, using the caller\325s thread.) 108 517 T 3 F (6.6.3) 66 494 T (Exceptional Conditions.) 108 494 T 0 F -0.56 (Target listener methods are permitted to throw checked Exceptions. It is an implementation de-) 108 474 P -0.22 (cision for the event source object how to react when a listener method has raised an exception.) 108 460 P 0.49 (In general, listener methods should not throw unchecked exceptions \050such as NullPointerEx-) 108 440 P 0.24 (ception\051, as these cannot be documented in throws clauses. However event sources should be) 108 426 P 0.01 (aware that target listeners may inadvertently throw such unchecked exceptions. Normally this) 108 412 P (should be treated as a bug in the target listener.) 108 398 T 3 F (6.6.4) 66 375 T (Concurrency control) 108 375 T 0 F -0.45 (In multi-threaded systems event handling is a common cause of both races and deadlocks. This) 108 355 P -0.09 (is partly due to the inherently asynchronous nature of event handling and partly because event) 108 341 P 0.42 (handling often flows \322upwards\323 against the normal program control flow, so that component) 108 327 P -0.45 (A may be delivering an event to component B at the same moment as component B is perform-) 108 313 P (ing a normal method invocation into component A.) 108 299 T -0.14 (We recommend that event sources should use synchronized methods and synchronized blocks) 108 279 P (to synchronize access to the data structures that describe event listeners.) 108 265 T 1.12 (In order to reduce the risk of deadlocks, we strongly recommend that event sources should) 108 245 P 0.29 (avoid holding their own internal locks when they call event listener methods. Specifically, as) 108 231 P 0.22 (in the example code in Section 6.5.1, we recommend they should avoid using a synchronized) 108 217 P -0.37 (method to fire an event and should instead merely use a synchronized block to locate the target) 108 203 P (listeners and then call the event listeners from unsynchronized code.) 108 189 T 3 F (6.6.5) 66 166 T (Modifications to the Set of Event Listeners during Event Delivery.) 108 166 T 0 F 0.28 (While an event is being multicast it is possible that the set of event listeners may be updated,) 108 146 P (either by one of the target event listener methods, or by some other thread.) 108 132 T -0.13 (The exact effects of such concurrent updates are implementation specific. Some event sources) 108 112 P 0.34 (may consult the currently registered listener set as they proceed and only deliver the event to) 108 98 P 34 660 36 720 R V 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "31" 31 %%Page: "32" 32 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 54 746 558 756 R 7 X 0 0 0 1 0 0 0 K V 2 10 Q 0 X (JavaBeans) 54 749.33 T (Events) 531.34 749.33 T 54 32.67 558 42.67 R 7 X V 0 X (Sun Microsystems) 54 36 T (32) 301 36 T (7/24/97) 527.44 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 54 72 558 720 R 7 X V 0 12 Q 0 X -0.64 (listeners still on the current list. Other implementations may choose to make a copy of the event) 108 712 P (target list when they start the event delivery and then deliver the event to that exact set.) 108 698 T -0.17 (Note that this means that an event listener may be removed from an event source and then still) 108 678 P -0.45 (receive subsequent event method calls from that source, because there were multicast events in) 108 664 P (progress when it was removed.) 108 650 T 3 14 Q (6.7) 54 622.67 T -1.17 ( Event Adaptors) 75 622.67 P 0 12 Q (Event adaptors are an extremely important part of the Java event model.) 108 602 T 0.58 (Particular applications or application builder tools may choose to use a standard set of event) 108 582 P -0.33 (adaptors to interpose between event sources and event listeners to provide additional policy on) 108 568 P (event delivery .) 108 554 T 3 F (6.7.1) 66 531 T (Event Adaptor Overview) 108 531 T 0 F 0.49 (When additional behavior is required during event delivery, an intermediary \322event adaptor\323) 108 511 P (class may be defined, and interposed between an event source and the real event listener.) 108 497 T 54 72 558 720 C 87.77 72 558 478.15 C 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 87.77 72 558 478.15 R 7 X 0 0 0 1 0 0 0 K V 90.02 244.76 207.02 309.33 18 RR V 0.5 H 0 Z 0 X N 3 14 Q (EventSource) 110.41 272.28 T 423.02 244.76 549.02 309.33 18 RR 7 X V 0 X N (Object) 465.8 272.28 T 90.02 429.25 342.02 466.15 R 7 X V 0 X N 3 9 Q (public synchronized) 93.54 450.74 T (void addFooListener\050FooListener fel\051;) 93.54 439.39 T 144.02 309.33 144.02 429.25 2 L 7 X V 2 Z 0 X N 0 Z 90 450 31.5 32.29 148.52 184.8 A (FooEvent) 130.02 181.74 T 252.02 97.15 378.02 161.74 18 RR 7 X V 0 X N 3 14 Q (EventAdaptor) 272.24 124.69 T 90 450 31.5 32.29 481.52 175.58 A 3 9 Q (FooEvent) 463.02 172.51 T 216.02 180.19 414.02 244.76 R N (class XyzListener implements FooListener {) 222.14 223.27 T ( void fooHappened\050FooEvent fe\051 {) 222.14 210.36 T 315.02 161.74 315.02 180.19 2 L 2 Z N J 189.68 423.42 188.14 420.87 180.79 428.79 191.21 425.97 4 Y 0 Z N 189.68 423.42 188.14 420.87 180.79 428.79 191.21 425.97 4 Y V J 422.14 283.01 189.89 423.29 2 L J 422.14 283.01 418.93 284.95 2 L 2 Z N [7.655 6.634] 7.655 I 418.93 284.95 193.1 421.35 2 L N J 193.1 421.35 189.89 423.29 2 L N J 153.02 228.37 155.99 228.37 153.02 217.99 150.04 228.37 4 Y 0 Z N 153.02 228.37 155.99 228.37 153.02 217.99 150.04 228.37 4 Y V J 153.02 244.76 153.02 228.62 2 L J 153.02 244.76 153.02 241.01 2 L 2 Z N [9.968 8.639] 9.968 I 153.02 241.01 153.02 232.37 2 L N J 153.02 232.37 153.02 228.62 2 L N J 439.98 185.34 441.33 187.98 449.21 180.6 438.62 182.69 4 Y 0 Z N 439.98 185.34 441.33 187.98 449.21 180.6 438.62 182.69 4 Y V J 414.02 198.64 439.75 185.45 2 L J 414.02 198.64 417.36 196.93 2 L 2 Z N [7.836 6.791] 7.836 I 417.36 196.93 436.42 187.16 2 L N J 436.42 187.16 439.75 185.45 2 L N J 486.02 233.48 483.04 233.48 486.02 243.85 488.99 233.48 4 Y 0 Z N 486.02 233.48 483.04 233.48 486.02 243.85 488.99 233.48 4 Y V J 486.02 207.86 486.02 233.23 2 L J 486.02 207.86 486.02 211.61 2 L 2 Z N [6.535 5.664] 6.535 I 486.02 211.61 486.02 229.48 2 L N J 486.02 229.48 486.02 233.23 2 L N J 396.02 327.78 549.02 383.13 R 0 Z N (void doIt\050FooEvent fe\051 {) 405.02 364.73 T (...) 405.02 355.51 T (}) 405.02 346.29 T 486.02 309.33 486.02 327.78 2 L 2 Z N 135.02 253.99 189.02 263.21 R 0 Z N (eListener) 144.02 256.01 T 306.02 106.39 360.02 115.62 R N (eDestination) 309.02 108.41 T 360.02 115.62 531.02 115.62 2 L 2 Z N 531.02 233.48 528.04 233.48 531.02 243.86 533.99 233.48 4 Y 0 Z N 531.02 233.48 528.04 233.48 531.02 243.86 533.99 233.48 4 Y V 531.02 115.62 531.02 233.23 2 L 2 Z N 189.02 253.99 189.02 152.52 2 L N 240.73 152.52 240.73 155.49 251.11 152.52 240.73 149.54 4 Y 0 Z N 240.73 152.52 240.73 155.49 251.11 152.52 240.73 149.54 4 Y V 189.02 152.52 240.48 152.52 2 L 2 Z N ( eDestination.doIt\050fe\051;) 222.14 201.13 T (}) 222.14 191.91 T 540.01 439.36 369.02 439.36 2 L V 0 Z N 540.01 437.36 369.02 437.36 2 L V N 5 12 Q (Overview of Event Adaptor Model.) 369.02 441.61 T 0 10 Q (register Listener) 211.38 356.72 T (fire) 121.52 232.15 T (Event) 121.52 222.15 T (forward) 445.52 232.15 T (Event) 445.52 222.15 T 3 9 Q (reference to destination) 409.52 106.15 T (interface) 202.52 169.15 T (reference) 202.52 160.15 T 54 72 558 720 C 0 0 612 792 C 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "32" 32 %%Page: "33" 33 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 54 746 558 756 R 7 X 0 0 0 1 0 0 0 K V 2 10 Q 0 X (JavaBeans) 54 749.33 T (Events) 531.34 749.33 T 54 32.67 558 42.67 R 7 X V 0 X (Sun Microsystems) 54 36 T (33) 301 36 T (7/24/97) 527.44 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 54 72 558 720 R 7 X V 0 12 Q 0 X -0.37 (The primary role of an event adaptor is to conform to the particular) 108 712 P 2 F -0.37 (EventListener) 428.78 712 P 0 F -0.37 ( interface ex-) 495.44 712 P 0.36 (pected by the event source, and to decouple the incoming event notifications on the interface) 108 698 P (from the actual listener\050s\051.) 108 684 T (Some examples of the uses of such adaptors are) 108 664 T (\245) 115 644 T (Implementing an event queuing mechanism between sources and listeners.) 126 644 T (\245) 115 624 T (Acting as a filter.) 126 624 T (\245) 115 604 T (Demultiplexing multiple event sources onto a single event listener.) 126 604 T (\245) 115 584 T (Acting as a generic \322wiring manager\323 between sources and listeners.) 126 584 T 3 F (6.7.2) 66 561 T (Security issues) 108 561 T 0 F -0.66 (Event adaptors that simply run as parts of downloaded applets add no new security issues. They) 108 541 P (will be constrained by the standard applet security model.) 108 527 T 0.03 (However event adaptors that are added to the standard base system must be careful to enforce) 108 507 P -0.09 (the current Java security model. Many security checks within the current Java virtual machine) 108 493 P -0.59 (are enforced by scanning backwards through the current thread\325s stack to see if any stack frame) 108 479 P -0.06 (belongs to an untrusted applet and if so denying access. Because the current event mechanism) 108 465 P 0.09 (delivers an event synchronously within the firing thread, this stack checking algorithm means) 108 451 P -0.42 (that actions by an event recipient are automatically limited if the event source was an untrusted) 108 437 P -0.21 (applet. This protects against certain security attacks where an applet fires bogus events to mis-) 108 423 P (lead a component.) 108 409 T 0.29 (Any event adaptors that are potentially going to be installed on the local disk and which may) 108 389 P -0.64 (be used by downloaded applets must be careful to maintain this model. Thus an event-queueing) 108 375 P 0.51 (adaptor must be careful that its event delivery threads do not look more trustworthy than the) 108 361 P (original event firer.) 108 347 T 0.26 (The only event adaptors that JavaSoft currently intends to deliver as part of the base JDK are) 108 327 P 0.84 (some simple utility base classes to make it easier to implement AWT event listeners. These) 108 313 P (adaptors do not introduce any new security issues.) 108 299 T 3 F (6.7.3) 66 276 T (Demultiplexing Event Adaptors.) 108 276 T 0 F (Demultiplexing is perhaps the most common expected use of the adaptor technique.) 108 256 T 1.37 (Any given event listener object may only implement a given) 108 236 P 2 F 1.37 (EventListener) 414.97 236 P 0 F 1.37 ( interface once.) 481.63 236 P -0.39 (Thus if a listener registers itself with multiple event sources for the same event, the listener has) 108 222 P (to determine for itself which source actually emitted a particular event.) 108 208 T -0.31 (To make event delivery more convenient, we would like to allow the events for different event) 108 188 P 0.09 (sources to be delivered to different target methods on the final listener object. So for example) 108 174 P 0.07 (if I have two buttons \322OKButton\323 and \322CancelButton\323, I would like to be able to arrange that) 108 160 P -0.11 (a push on the \322OKButton\323 results in a call on one method, whereas a push on the \322CancelBut-) 108 146 P (ton\323 results in a call on another method.) 108 132 T -0.22 (We can solve this problem by interposing \322demultiplexing\323 adaptors between each source and) 108 112 P -0.73 (the listener, where each demultiplexing adaptor takes an incoming method call of one name and) 108 98 P (then calls a differently named method on its target object.) 108 84 T 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "33" 33 %%Page: "34" 34 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 54 746 558 756 R 7 X 0 0 0 1 0 0 0 K V 2 10 Q 0 X (JavaBeans) 54 749.33 T (Events) 531.34 749.33 T 54 32.67 558 42.67 R 7 X V 0 X (Sun Microsystems) 54 36 T (34) 301 36 T (7/24/97) 527.44 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 54 72 558 720 R 7 X V 0 12 Q 0 X 0.92 (In the example \050see the diagram and code below\051 a DialogBox object has two push buttons) 108 383.8 P 0.4 (\322OK\323 and \322Cancel\323, both of which fire a) 108 369.8 P 2 F 0.4 (buttonPushed\050PBEvent\051) 310.1 369.8 P 0 F 0.4 ( method. The DialogBox is) 426.08 369.8 P -0.05 (designed to invoke the methods,) 108 355.8 P 2 F -0.05 (doOKAction\050\051) 265.74 355.8 P 0 F -0.05 (when the \322OK\323 button fires, and) 336.68 355.8 P 2 F -0.05 (doCancelAc-) 495.35 355.8 P (tion\050\051) 108 341.8 T 0 F ( when the \322Cancel\323 button fires.) 134.66 341.8 T -0.7 (The DialogBox defines two classes,) 108 321.8 P 2 F -0.7 (OKButtonAdaptor) 279.82 321.8 P 0 F -0.7 ( and) 367.82 321.8 P 2 F -0.7 (CancelButtonAdaptor) 389.76 321.8 P 0 F -0.7 ( that both im-) 495.09 321.8 P -0.05 (plement the) 108 307.8 P 2 F -0.05 (PBListener) 167.23 307.8 P 0 F -0.05 ( interface but dispatch the incoming notification to their respective ac-) 221.23 307.8 P (tion methods.) 108 293.8 T -0.51 (As a side effect of instantiation of the DialogBox, instances of the private adaptors are also cre-) 108 273.8 P 0.11 (ated and registered with the) 108 259.8 P 2 F 0.11 (PushButton) 244.18 259.8 P 0 F 0.11 ( instances, resulting in the appropriate event flow and) 300.18 259.8 P (mapping.) 108 245.8 T 4 10 Q (// Adaptor to map \322Cancel Pressed\323 events onto doCancelAction\050\051) 126 225.8 T (class CancelAdaptor implements PushButtonExampleListener {) 126 205.14 T (private Dialog) 154.8 193.14 T ( dialog;) 238.8 193.14 T (public CancelAdaptor\050Dialog dest\051 {) 154.8 181.14 T (dialog = dest;) 183.6 169.14 T (}) 154.8 157.14 T (public void buttonPushed\050PushButtonExampleEvent pbe\051 {) 154.8 145.14 T (dialog.doCancelAction\050\051;) 183.6 133.14 T (}) 154.8 121.14 T (}) 126 109.14 T 54 72 558 720 C 63 391.8 558 720 C 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 103.5 698.33 184.5 716.33 9 RR 7 X 0 0 0 1 0 0 0 K V 0.5 H 0 Z 0 X N 0 12 Q (OK Button) 121.5 703.23 T 103.5 428.33 184.5 446.33 9 RR 7 X V 0 X N (Cancel Button) 109.5 433.23 T 200.21 709.16 200.21 712.14 210.59 709.16 200.21 706.18 4 Y N 200.21 709.16 200.21 712.14 210.59 709.16 200.21 706.18 4 Y V 184.5 709.16 199.96 709.16 2 L 7 X V 2 Z 0 X N 0 9 Q (buttonPushed\050PBEvent pbe\051) 220.5 705.24 T 200.21 439.16 200.21 442.14 210.59 439.16 200.21 436.18 4 Y 0 Z N 200.21 439.16 200.21 442.14 210.59 439.16 200.21 436.18 4 Y V 184.5 439.16 199.96 439.16 2 L 7 X V 2 Z 0 X N (buttonPushed\050PBEvent pbe\051) 220.5 435.24 T 265.5 471.05 262.52 471.05 265.5 481.43 268.48 471.05 4 Y 0 Z N 265.5 471.05 262.52 471.05 265.5 481.43 268.48 471.05 4 Y V 265.5 470.8 265.5 446.33 2 L 7 X V 2 Z 0 X N 220.5 626.33 337.5 662.33 R 0 Z N 265.5 673.62 268.48 673.62 265.5 663.24 262.52 673.62 4 Y N 265.5 673.62 268.48 673.62 265.5 663.24 262.52 673.62 4 Y V 265.5 673.87 265.5 698.33 2 L 2 Z N 220.5 482.33 337.5 518.33 R 0 Z N (buttonPushed\050PBEvent pbe\051 {) 223.5 653.33 T ( dialog.doOKAction\050\051;) 220.5 641.33 T ( }) 220.5 632.33 T ( buttonPushed\050PBEvent pbe\051 {) 220.5 509.33 T ( dialog.doCancelAction\050\051;) 220.5 500.33 T ( }) 220.5 491.33 T 400.5 482.33 517.5 662.33 R N 0 12 Q (Dialog Box) 400.5 671.33 T (OKButtonAdaptor) 274.5 671.33 T 0 9 Q (doOKAction\050\051 {) 409.5 644.33 T ( // ...) 409.5 635.33 T (}) 409.5 626.33 T (doCancelAction\050\051 {) 409.5 518.33 T ( // ...) 409.5 509.33 T (}) 409.5 500.33 T 389.21 644.33 389.21 647.31 399.59 644.33 389.21 641.36 4 Y N 389.21 644.33 389.21 647.31 399.59 644.33 389.21 641.36 4 Y V 337.5 644.33 388.96 644.33 2 L 2 Z N 389.21 500.33 389.21 503.31 399.59 500.33 389.21 497.36 4 Y 0 Z N 389.21 500.33 389.21 503.31 399.59 500.33 389.21 497.36 4 Y V 337.5 500.33 388.96 500.33 2 L 2 Z N J 265.5 599.33 148.5 599.33 2 L J 265.5 599.33 261.75 599.33 2 L N [7.859 6.811] 7.859 I 261.75 599.33 152.25 599.33 2 L N J 152.25 599.33 148.5 599.33 2 L N J 148.5 687.05 145.52 687.05 148.5 697.43 151.48 687.05 4 Y 0 Z N 148.5 687.05 145.52 687.05 148.5 697.43 151.48 687.05 4 Y V J 148.5 608.33 148.5 686.8 2 L J 148.5 608.33 148.5 612.08 2 L 2 Z N [6.957 6.03] 6.957 I 148.5 612.08 148.5 683.05 2 L N J 148.5 683.05 148.5 686.8 2 L N J 148.5 457.62 151.48 457.62 148.5 447.24 145.52 457.62 4 Y 0 Z N 148.5 457.62 151.48 457.62 148.5 447.24 145.52 457.62 4 Y V J 148.5 457.87 148.5 545.33 2 L J 148.5 457.87 148.5 461.62 2 L 2 Z N [7.84 6.794] 7.84 I 148.5 461.62 148.5 541.58 2 L N J 148.5 541.58 148.5 545.33 2 L N (okButton.) 139.5 583.29 T (addP) 175.26 583.29 T (BListener\050okButtonAdaptor\051) 193.26 583.29 T J 265.5 599.33 265.5 626.33 2 L J 265.5 599.33 265.5 603.08 2 L N [7.134 6.183] 7.134 I 265.5 603.08 265.5 622.58 2 L N J 265.5 622.58 265.5 626.33 2 L N J 265.5 518.33 265.5 545.33 2 L J 265.5 518.33 265.5 522.08 2 L N [7.134 6.183] 7.134 I 265.5 522.08 265.5 541.58 2 L N J 265.5 541.58 265.5 545.33 2 L N J 265.5 545.33 148.5 545.33 2 L J 265.5 545.33 261.75 545.33 2 L N [7.859 6.811] 7.859 I 261.75 545.33 152.25 545.33 2 L N J 152.25 545.33 148.5 545.33 2 L N (cancelButton.) 139.5 556.29 T (addP) 189.24 556.29 T (BListener\050cancelButtonAdaptor\051) 207.24 556.29 T J 0 12 Q (CancelButtonAdaptor) 275.17 529.94 T 54 72 558 720 C 0 0 612 792 C 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "34" 34 %%Page: "35" 35 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 54 746 558 756 R 7 X 0 0 0 1 0 0 0 K V 2 10 Q 0 X (JavaBeans) 54 749.33 T (Events) 531.34 749.33 T 54 32.67 558 42.67 R 7 X V 0 X (Sun Microsystems) 54 36 T (35) 301 36 T (7/24/97) 527.44 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 54 72 558 720 R 7 X V 4 F 0 X (// Adaptor to map \322OK Pressed\323 events onto doOKAction\050\051) 126 713.33 T (class OKAdaptor implements PushButtonExampleListener {) 126 693.33 T (private Dialog) 154.8 681.33 T ( dialog;) 238.8 681.33 T (public OKAdaptor\050Dialog dest\051 {) 154.8 669.33 T (dialog = dest;) 183.6 657.33 T (}) 154.8 645.33 T (public void buttonPushed\050PushButtonExampleEvent pbe\051 {) 154.8 633.33 T (dialog.doOKAction\050\051;) 183.6 621.33 T (}) 154.8 609.33 T (}) 126 597.33 T (// Define generic Dialog with two methods, doOKAction\050\051) 126 577.33 T (// and doCancelAction\050\051) 126 565.33 T (public abstract class) 126 545.33 T ( DialogBox) 252 545.33 T ({) 312 545.33 T (// Dialog with two adaptors for OK and Cancel buttons) 154.8 533.33 T (protected) 154.8 521.33 T (PushButton) 212.4 521.33 T (okButton;) 278.4 521.33 T (protected) 154.8 509.33 T (PushButton) 212.4 509.33 T ( cancelButton;) 272.4 509.33 T (protected) 154.8 497.33 T (OKAdaptor) 212.4 497.33 T ( okAdaptor;) 266.4 497.33 T (protected) 154.8 485.33 T (CancelAdaptor) 212.4 485.33 T ( cancelAdaptor;) 290.4 485.33 T (DialogBox\050\051 {) 154.8 465.33 T (okButton) 183.6 453.33 T (= new PushButton\050\322OK\323\051;) 241.2 453.33 T (cancelButton) 183.6 441.33 T (= new PushButton\050\322Cancel\323\051;) 255.6 441.33 T (okAdaptor) 183.6 421.33 T (= new OKAdaptor\050this\051;) 255.6 421.33 T (okButton.addPushButtonExampleListener\050OKAdaptor\051) 183.6 409.33 T (cancelAdaptor) 183.6 389.33 T (= new CancelAdaptor\050cancelButton, this\051;) 261.6 389.33 T (cancelButton.addPushButtonExampleListener\050CancelAdaptor\051;) 183.6 377.33 T (}) 154.8 365.33 T (public abstract void doOKAction\050\051;) 154.8 345.33 T (public abstract void doCancelAction\050\051;) 154.8 333.33 T (}) 126 321.33 T 3 12 Q (6.7.4) 66 287 T (Generic demultiplexing adaptors.) 108 287 T 0 F -0.28 (The simple demultiplexing adaptor model described in Section 6.7.3 has the drawback that the) 108 267 P 0.08 (number of private adaptor classes can become very high if there are large number of different) 108 253 P (event targets, as a different adaptor class is required for each source-target hookup.) 108 239 T 0.15 (Where there are a large number of event source instances another technique can be employed) 108 219 P (in order to obviate the need for an adaptor class per source-target hookup.) 108 205 T -0.28 (This technique uses generic adaptors and is most suited to automatic code generation by appli-) 108 185 P 0.77 (cation builder tools. It involves synthesizing an adaptor class that utilizes the new low-level) 108 171 P -0.5 (Java introspection APIs to map incoming events from multiple source instances onto particular) 108 157 P (method invocations via the) 108 143 T 2 F (invoke) 240.66 143 T 0 F (method of the) 274.98 143 T 2 F (java.lang.reflect.Method) 344.64 143 T 0 F ( class.) 462.96 143 T 0.05 (The shortcoming of this technique however is that the use of the low-level introspection APIs) 108 123 P -0.62 (for method lookup and invocation via string names is in some senses \322unnatural\323, and it defeats) 108 109 P (the strong typing facilities.) 108 95 T 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "35" 35 %%Page: "36" 36 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 54 746 558 756 R 7 X 0 0 0 1 0 0 0 K V 2 10 Q 0 X (JavaBeans) 54 749.33 T (Events) 531.34 749.33 T 54 32.67 558 42.67 R 7 X V 0 X (Sun Microsystems) 54 36 T (36) 301 36 T (7/24/97) 527.44 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 54 72 558 720 R 7 X V 0 12 Q 0 X 0.29 (Therefore it is not recommended that this technique be used in manually generated code as it) 108 436 P 0.4 (may lead to fatal errors in an application using this technique at runtime. It is instead recom-) 108 422 P 0.16 (mended that this technique only be used by application builder generated code, where greater) 108 408 P 0.03 (constraints may be applied to, and subsequently checked during, the code generation and thus) 108 394 P 0.96 (there is less risk of introducing serious runtime errors into application code using this tech-) 108 380 P (nique.) 108 366 T 54 72 558 720 C 54 450 558 720 C 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 7 X 0 0 0 1 0 0 0 K 90 450 12.4 13.5 136.28 685.72 G 0.5 H 0 Z 0 X 90 450 12.4 13.5 136.28 685.72 A 196.65 686.89 196.65 689.86 207.03 686.89 196.65 683.91 4 Y N 196.65 686.89 196.65 689.86 207.03 686.89 196.65 683.91 4 Y V 148.99 686.89 196.4 686.89 2 L 7 X V 2 Z 0 X N 4 10 Q (fireE\050E\051) 152.05 689.22 T (ES1) 127.55 681.72 T 7 X 90 450 12.4 13.5 134.9 649.72 G 0 Z 0 X 90 450 12.4 13.5 134.9 649.72 A 195.27 650.89 195.27 653.86 205.65 650.89 195.27 647.91 4 Y N 195.27 650.89 195.27 653.86 205.65 650.89 195.27 647.91 4 Y V 147.61 650.89 195.02 650.89 2 L 7 X V 2 Z 0 X N (fireE\050E\051) 150.67 653.22 T (ES2) 126.17 645.72 T 7 X 90 450 12.4 13.5 134.9 613.72 G 0 Z 0 X 90 450 12.4 13.5 134.9 613.72 A 195.27 614.89 195.27 617.86 205.65 614.89 195.27 611.91 4 Y N 195.27 614.89 195.27 617.86 205.65 614.89 195.27 611.91 4 Y V 147.61 614.89 195.02 614.89 2 L 7 X V 2 Z 0 X N (fireE\050E\051) 150.67 617.22 T (ES3) 126.17 609.72 T 7 X 90 450 12.4 13.5 134.9 577.72 G 0 Z 0 X 90 450 12.4 13.5 134.9 577.72 A 195.27 578.89 195.27 581.86 205.65 578.89 195.27 575.91 4 Y N 195.27 578.89 195.27 581.86 205.65 578.89 195.27 575.91 4 Y V 147.61 578.89 195.02 578.89 2 L 7 X V 2 Z 0 X N (fireE\050E\051) 150.67 581.22 T (ES4) 126.17 573.72 T 7 X 90 450 12.4 13.5 133.23 519.72 G 0 Z 0 X 90 450 12.4 13.5 133.23 519.72 A 193.6 520.89 193.6 523.86 203.98 520.89 193.6 517.91 4 Y N 193.6 520.89 193.6 523.86 203.98 520.89 193.6 517.91 4 Y V 145.94 520.89 193.35 520.89 2 L 7 X V 2 Z 0 X N (fireE\050E\051) 149.01 523.22 T (ESN) 124.51 515.72 T (Sources) 123.88 707.39 T 206.55 672.22 264.43 699.22 R 0 Z N (Adaptor1) 211.49 682.58 T 206.55 636.22 264.43 663.22 R N (Adaptor2) 211.49 646.58 T 206.55 600.22 264.43 627.22 R N (Adaptor3) 211.49 610.58 T 204.26 563.39 263.67 590.39 R N (Adaptor4) 209.96 573.74 T 204.89 506.22 262.76 533.22 R N (AdaptorN) 209.83 516.58 T 328.93 685.39 328.93 688.36 339.31 685.39 328.93 682.41 4 Y N 328.93 685.39 328.93 688.36 339.31 685.39 328.93 682.41 4 Y V 264.43 685.39 328.68 685.39 2 L 2 Z N (action1\050\051) 272.09 686.55 T 329.39 649.05 329.39 652.03 339.77 649.05 329.39 646.08 4 Y 0 Z N 329.39 649.05 329.39 652.03 339.77 649.05 329.39 646.08 4 Y V 264.89 649.05 329.14 649.05 2 L 2 Z N (action2\050\051) 272.55 650.22 T 329.85 612.72 329.85 615.7 340.23 612.72 329.85 609.74 4 Y 0 Z N 329.85 612.72 329.85 615.7 340.23 612.72 329.85 609.74 4 Y V 265.35 612.72 329.6 612.72 2 L 2 Z N (action3\050\051) 273.01 613.89 T 329.55 577.22 329.55 580.2 339.92 577.22 329.55 574.24 4 Y 0 Z N 329.55 577.22 329.55 580.2 339.92 577.22 329.55 574.24 4 Y V 265.04 577.22 329.3 577.22 2 L 2 Z N (action4\050\051) 272.7 578.39 T 326.96 519.89 326.96 522.86 337.34 519.89 326.96 516.91 4 Y 0 Z N 326.96 519.89 326.96 522.86 337.34 519.89 326.96 516.91 4 Y V 262.46 519.89 326.71 519.89 2 L 2 Z N (actionN\050\051) 270.11 521.05 T 338.69 499.89 489.5 699.05 R 0 Z N (Adaptors) 207.78 707.39 T (Listener) 340.22 707.39 T (action1\050\051 { ... }) 347.11 684.05 T (action2\050\051 { ... }) 347.11 646.55 T (action3\050\051 { ... }) 347.11 609.89 T (action4\050\051 { ... }) 347.87 574.05 T (actionN\050\051 { ... }) 348.5 519.05 T 460.74 465.9 174.67 465.9 2 L V N 460.74 463.9 174.67 463.9 2 L V N 5 12 Q (Adaptor Proliferation with Simple Multiplexing Adaptors.) 174.67 468.15 T 54 72 558 720 C 0 0 612 792 C 54 72 558 720 C 67.07 72 544.93 342 C 0 0 0 1 0 0 0 K J 0 0 0 1 0 0 0 K 67.07 72 544.93 342 R 7 X 0 0 0 1 0 0 0 K V J 90 450 12.4 13.5 108.35 306.33 G 0.5 H 0 Z 0 X 90 450 12.4 13.5 108.35 306.33 A 168.72 307.5 168.72 310.48 179.1 307.5 168.72 304.52 4 Y N 168.72 307.5 168.72 310.48 179.1 307.5 168.72 304.52 4 Y V 121.06 307.5 168.47 307.5 2 L 7 X V 2 Z 0 X N 4 10 Q (fireE\050E\051) 124.12 309.83 T (ES1) 99.62 302.33 T 7 X 90 450 12.4 13.5 106.97 270.33 G 0 Z 0 X 90 450 12.4 13.5 106.97 270.33 A 167.34 271.5 167.34 274.48 177.72 271.5 167.34 268.52 4 Y N 167.34 271.5 167.34 274.48 177.72 271.5 167.34 268.52 4 Y V 119.68 271.5 167.09 271.5 2 L 7 X V 2 Z 0 X N (fireE\050E\051) 122.74 273.83 T (ES2) 98.24 266.33 T 7 X 90 450 12.4 13.5 106.97 234.33 G 0 Z 0 X 90 450 12.4 13.5 106.97 234.33 A 167.34 235.5 167.34 238.48 177.72 235.5 167.34 232.52 4 Y N 167.34 235.5 167.34 238.48 177.72 235.5 167.34 232.52 4 Y V 119.68 235.5 167.09 235.5 2 L 7 X V 2 Z 0 X N (fireE\050E\051) 122.74 237.83 T (ES3) 98.24 230.33 T 7 X 90 450 12.4 13.5 106.97 198.33 G 0 Z 0 X 90 450 12.4 13.5 106.97 198.33 A 167.34 199.5 167.34 202.48 177.72 199.5 167.34 196.52 4 Y N 167.34 199.5 167.34 202.48 177.72 199.5 167.34 196.52 4 Y V 119.68 199.5 167.09 199.5 2 L 7 X V 2 Z 0 X N (fireE\050E\051) 122.74 201.83 T (ES4) 98.24 194.33 T 7 X 90 450 12.4 13.5 106.14 152 G 0 Z 0 X 90 450 12.4 13.5 106.14 152 A 166.51 153.17 166.51 156.14 176.88 153.17 166.51 150.19 4 Y N 166.51 153.17 166.51 156.14 176.88 153.17 166.51 150.19 4 Y V 118.84 153.17 166.26 153.17 2 L 7 X V 2 Z 0 X N (fireE\050E\051) 121.91 155.5 T (ESN) 97.41 148 T (Sources) 95.95 328 T 376 304.33 376 307.31 386.38 304.33 376 301.36 4 Y 0 Z N 376 304.33 376 307.31 386.38 304.33 376 301.36 4 Y V 311.5 304.33 375.75 304.33 2 L 7 X V 2 Z 0 X N (action1\050\051) 319.99 305.5 T 376.46 268 376.46 270.98 386.84 268 376.46 265.02 4 Y 0 Z N 376.46 268 376.46 270.98 386.84 268 376.46 265.02 4 Y V 311.96 268 376.21 268 2 L 7 X V 2 Z 0 X N (action2\050\051) 320.45 269.17 T 376.92 231.67 376.92 234.64 387.3 231.67 376.92 228.69 4 Y 0 Z N 376.92 231.67 376.92 234.64 387.3 231.67 376.92 228.69 4 Y V 312.42 231.67 376.67 231.67 2 L 7 X V 2 Z 0 X N (action3\050\051) 320.91 232.83 T 376.61 196.17 376.61 199.14 386.99 196.17 376.61 193.19 4 Y 0 Z N 376.61 196.17 376.61 199.14 386.99 196.17 376.61 193.19 4 Y V 312.11 196.17 376.36 196.17 2 L 7 X V 2 Z 0 X N (action4\050\051) 320.6 197.33 T 374.86 148.83 374.86 151.81 385.24 148.83 374.86 145.86 4 Y 0 Z N 374.86 148.83 374.86 151.81 385.24 148.83 374.86 145.86 4 Y V 310.36 148.83 374.61 148.83 2 L 7 X V 2 Z 0 X N (actionN\050\051) 318.85 150 T 386.59 121.33 537.4 318 R 0 Z N (Adaptor) 179.85 328 T (Listener) 388.12 326.33 T (action1\050\051 { ... }) 395.01 303 T (action2\050\051 { ... }) 395.01 265.5 T (action3\050\051 { ... }) 395.01 228.83 T (actionN\050\051 { ... }) 393.07 146.33 T 174.57 120.83 304.57 314.17 R N ({) 185.4 305 T ( { ES1, \322action1\323 },) 185.4 295 T ( { ES2, \322action2\323 },) 185.4 285 T ( { ES3, \322action3\323 },) 185.4 275 T ( { ES4, \322action4\323 },) 185.4 265 T ( ...) 183.74 252.5 T ( { ESN, \322actionN\323 }) 183.74 241.67 T (}) 183.74 232.5 T 1 (Map incoming event) 185 215.83 P 1 (onto Method object) 185 203.83 P 2.67 (and then use low-) 185 191.83 P (level reflection:) 185 179.83 T (Method.invoke\050) 185 155.83 T -1 ( listener, null\051;) 185 143.83 P (action4\050\051 { ... }) 392.92 194.54 T 414.99 90.88 221.3 90.88 2 L V N 414.99 88.88 221.3 88.88 2 L V N 5 12 Q (Using a Generic Multiplexing Adaptor.) 221.3 93.13 T 54 72 558 720 C 0 0 612 792 C J 0 0 0 1 0 0 0 K J FMENDPAGE %%EndPage: "36" 36 %%Page: "37" 37 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 54 746 558 756 R 7 X 0 0 0 1 0 0 0 K V 2 10 Q 0 X (JavaBeans) 54 749.33 T 54 32.67 558 42.67 R 7 X V 0 X (Sun Microsystems) 54 36 T (37) 301 36 T (7/24/97) 527.44 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 54 72 558 720 R 7 X V 0 0 0 1 0 0 0 K 54 694 558 706 C 0 0 0 1 0 0 0 K 54 705 522 705 2 L 1 H 2 Z 0 X 0 0 0 1 0 0 0 K N 54 702 522 702 2 L N 0 0 0 1 0 0 0 K 0 0 612 792 C 0 0 0 1 0 0 0 K 3 14 Q 0 X 0 0 0 1 0 0 0 K (Interface Ev) 54 710.67 T (entListener) 128.12 710.67 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 4 10 Q (public) 90 671.33 T (interface) 132 671.33 T (java.util.) 192 671.33 T 7 F (EventListener) 252 671.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 F (A tagging interf) 90 647.33 T (ace that all e) 153.78 647.33 T (v) 203.79 647.33 T (ent listener interf) 208.64 647.33 T (aces must e) 276.86 647.33 T (xtend) 322.81 647.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "37" 37 %%Page: "38" 38 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 54 746 558 756 R 7 X 0 0 0 1 0 0 0 K V 2 10 Q 0 X (JavaBeans) 54 749.33 T 54 32.67 558 42.67 R 7 X V 0 X (Sun Microsystems) 54 36 T (38) 301 36 T (7/24/97) 527.44 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 54 72 558 720 R 7 X V 0 0 0 1 0 0 0 K 54 694 558 706 C 0 0 0 1 0 0 0 K 54 705 522 705 2 L 1 H 2 Z 0 X 0 0 0 1 0 0 0 K N 54 702 522 702 2 L N 0 0 0 1 0 0 0 K 0 0 612 792 C 0 0 0 1 0 0 0 K 3 14 Q 0 X 0 0 0 1 0 0 0 K (Class Ev) 54 710.67 T (entObject) 105.59 710.67 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 4 10 Q (public) 90 665.33 T (class) 132 665.33 T (java.util.) 168 665.33 T 7 F (EventObject) 228 665.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 4 F ( extends) 90 653.33 T (java.lang.) 162 653.33 T 7 F (Object) 222 653.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 4 F ( implements java.io.) 90 641.33 T 7 F (Serializable) 228 641.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 F (The Ev) 90 611.33 T (ent class is the abstract root class from which all e) 119.01 611.33 T (v) 319.28 611.33 T (ent state objects shall be deri) 324.13 611.33 T (v) 439.14 611.33 T (ed.) 443.99 611.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K -0.07 (All Ev) 90 593.33 P -0.07 (ent's are constructed with a reference to the object, the "source", that is logically deemed to be the object upon) 116.17 593.33 P 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (which the Ev) 90 581.33 T (ent in question initially occurred upon.) 142.62 581.33 T 0 0 0 1 0 0 0 K 54 542 558 552 C 0 0 0 1 0 0 0 K 53.67 548.5 207.83 548.5 2 L 1 H 2 Z 0 X 0 0 0 1 0 0 0 K N 0 0 0 1 0 0 0 K 0 0 612 792 C 0 0 0 1 0 0 0 K 3 12 Q 0 X 0 0 0 1 0 0 0 K (V) 54 556 T (ariables) 61.56 556 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 7 10 Q (\245 source) 68.4 522.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 4 F (protected transient Object source) 90 507.33 T 0 0 0 1 0 0 0 K 54 468 558 478 C 0 0 0 1 0 0 0 K 53.67 474.5 207.83 474.5 2 L 1 H 2 Z 0 X 0 0 0 1 0 0 0 K N 0 0 0 1 0 0 0 K 0 0 612 792 C 0 0 0 1 0 0 0 K 3 12 Q 0 X 0 0 0 1 0 0 0 K (Constructors) 54 482 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 7 10 Q (\245 EventObject) 68.4 448.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 4 F (public EventObject\050Object) 90 433.33 T (source\051) 246 433.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 F (Constructs a prototypical Ev) 90 411.33 T (ent) 204.01 411.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 3 F (P) 90 391.33 T (arameters:) 96.01 391.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 F (source) 126 379.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (The object that the Ev) 147.6 367.33 T (ent occurred upon.) 235.77 367.33 T 0 0 0 1 0 0 0 K 54 328 558 338 C 0 0 0 1 0 0 0 K 53.67 334.5 207.83 334.5 2 L 1 H 2 Z 0 X 0 0 0 1 0 0 0 K N 0 0 0 1 0 0 0 K 0 0 612 792 C 0 0 0 1 0 0 0 K 3 12 Q 0 X 0 0 0 1 0 0 0 K (Methods) 54 342 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 7 10 Q (\245 getSource) 68.4 308.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 4 F (public Object getSource\050\051) 90 293.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 3 F (Retur) 90 273.33 T (ns:) 114.84 273.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 F (The object that the Ev) 126 261.33 T (ent initially occurred upon.) 214.17 261.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 7 F (\245 toString) 68.4 239.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 4 F (public String toString\050\051) 90 224.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 3 F (Ov) 90 204.33 T (errides:) 102.68 204.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 F (toString\050\051 in class Object) 126 192.33 T (.) 228.77 192.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "38" 38 %%Page: "39" 39 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 54 746 558 756 R 7 X 0 0 0 1 0 0 0 K V 2 10 Q 0 X (JavaBeans) 54 749.33 T 54 32.67 558 42.67 R 7 X V 0 X (Sun Microsystems) 54 36 T (39) 301 36 T (7/24/97) 527.44 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 54 72 558 720 R 7 X V 0 0 0 1 0 0 0 K 54 694 558 706 C 0 0 0 1 0 0 0 K 54 705 522 705 2 L 1 H 2 Z 0 X 0 0 0 1 0 0 0 K N 54 702 522 702 2 L N 0 0 0 1 0 0 0 K 0 0 612 792 C 0 0 0 1 0 0 0 K 3 14 Q 0 X 0 0 0 1 0 0 0 K (Class T) 54 710.67 T (ooManyListenersException) 97.44 710.67 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 4 10 Q (public) 90 665.33 T (class) 132 665.33 T (java.util.) 168 665.33 T 7 F (TooManyListenersException) 228 665.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 4 F ( extends) 90 653.33 T (java.lang.) 162 653.33 T 7 F (Exception) 222 653.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 F (The) 90 623.33 T 4 F (TooManyListenersException) 108.05 623.33 T 0 F (Exception is used as part of the Ja) 264.05 623.33 T (v) 399.66 623.33 T (a Ev) 404.41 623.33 T (ent model to annotate and imple-) 422.31 623.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (ment a unicast special case of a multicast Ev) 90 611.33 T (ent Source.) 268.15 611.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (The presence of a "thro) 90 593.33 T (ws T) 183.24 593.33 T (ooMan) 202.16 593.33 T (yListenersException" clause on an) 230.34 593.33 T (y gi) 368.41 593.33 T (v) 383.44 593.33 T (en concrete implementation of the nor-) 388.29 593.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (mally multicast "v) 90 581.33 T (oid addXyzEv) 163.33 581.33 T (entListener" e) 220.67 581.33 T (v) 276.43 581.33 T (ent listener re) 281.28 581.33 T (gistration pattern is used to annotate that interf) 335.56 581.33 T (ace as) 521.83 581.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K -0.02 (implementing a unicast Listener special case, that is, that one and only one Listener may be re) 90 569.33 P -0.02 (gistered on the particu-) 465.58 569.33 P 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (lar e) 90 557.33 T (v) 107.24 557.33 T (ent listener source concurrently) 112.09 557.33 T (.) 237.24 557.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (See Also:) 90 539.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (Ev) 90 521.33 T (entObject) 100.96 521.33 T (, Ev) 142.34 521.33 T (entListener) 158.3 521.33 T (.) 205.79 521.33 T 0 0 0 1 0 0 0 K 54 482 558 492 C 0 0 0 1 0 0 0 K 53.67 488.5 207.83 488.5 2 L 1 H 2 Z 0 X 0 0 0 1 0 0 0 K N 0 0 0 1 0 0 0 K 0 0 612 792 C 0 0 0 1 0 0 0 K 3 12 Q 0 X 0 0 0 1 0 0 0 K (Constructors) 54 496 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 7 10 Q (\245 TooManyListenersException) 68.4 462.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 4 F (public TooManyListenersException\050\051) 90 447.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 F -0.18 (Constructs a T) 90 425.33 P -0.18 (ooMan) 147.16 425.33 P -0.18 (yListenersException with no detail message. A detail message is a String that describes this par-) 175.34 425.33 P 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (ticular e) 90 413.33 T (xception.) 122.34 413.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 7 F (\245 TooManyListenersException) 68.4 391.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 4 F (public TooManyListenersException\050String) 90 376.33 T (s\051) 330 376.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 F (Constructs a T) 90 354.33 T (ooMan) 147.53 354.33 T (yListenersException with the speci\336ed detail message. A detail message is a String that) 175.71 354.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (describes this particular e) 90 342.33 T (xception.) 191.77 342.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 3 F (P) 90 322.33 T (arameters:) 96.01 322.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 F (s) 126 310.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (the detail message) 147.6 298.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "39" 39 %%Page: "40" 40 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 54 746 558 756 R 7 X 0 0 0 1 0 0 0 K V 2 10 Q 0 X (JavaBeans) 54 749.33 T (Properties) 515.78 749.33 T 54 32.67 558 42.67 R 7 X V 0 X (Sun Microsystems) 54 36 T (40) 301 36 T (7/24/97) 527.44 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 54 72 558 720 R 7 X V 3 18 Q 0 X (7) 81 708 T (Properties) 108 708 T 0 12 Q -0.22 (Properties are discrete, named attributes of a Java Bean that can affect its appearance or its be-) 108 680 P 0.2 (haviour. For example, a GUI button might have a property named \322Label\323 that represents the) 108 666 P (text displayed in the button.) 108 652 T (Properties show up in a number of ways:) 108 632 T (1.) 126 612 T (Properties may be exposed in scripting environments as though they were fields of) 144 612 T -0.3 (objects. So in a Javascript environment I might do \322b.Label = foo\323 to set the value of a) 144 598 P (property.) 144 584 T (2.) 126 564 T (Properties can be accessed programmatically by other components calling their getter) 144 564 T (and setter methods \050see Section 7.1 below\051.) 144 550 T (3.) 126 530 T (As part of the process of customizing a component \050see Section 9\051, its properties may) 144 530 T (be presented in a property sheet for a user to edit.) 144 516 T (4.) 126 496 T (Typically a bean\325s properties will be persistent, so that their state will be stored away) 144 496 T (as part of the persistent state of the bean.) 144 482 T 0.41 (Properties can have arbitrary types, including both built-in Java types such as \322int\323 and class) 108 462 P (or interfaces types such as \322java.awt.Color\323.) 108 448 T 3 14 Q (7.1) 54 420.67 T ( Accessor methods) 75 420.67 T 0 12 Q -0.61 (Properties are always accessed via method calls on their owning object. For readable properties) 108 400 P -0.11 (there will be a) 108 386 P 2 F -0.11 (getter) 178.87 386 P 0 F -0.11 (method to read the property value. For writable properties there will be a) 209.75 386 P 2 F 0.11 (setter) 108 372 P 0 F 0.11 ( method to allow the property value to be updated. Thus even when a script writer types) 134.66 372 P -0.21 (in something such as \322b.Label = foo\323 there is still a method call into the target object to set the) 108 358 P (property, and the target object has full programmatic control.) 108 344 T -0.73 (So properties need not just be simple data fields, they can actually be computed values. Updates) 108 324 P -0.71 (may have various programmatic side effects. For example, changing a bean\325s background color) 108 310 P (property might also cause the bean to be repainted with the new color.) 108 296 T (For simple properties the accessor type signatures are:) 108 276 T 4 10 Q (void setFoo\050PropertyType value\051;) 126 257.33 T (// simple setter) 324 257.33 T (PropertyType getFoo\050\051;) 126 245.33 T (// simple getter) 324 245.33 T 2 12 Q 0.56 (GetFoo) 108 226 P 0 F 0.56 (and) 148.22 226 P 2 F 0.56 (setFoo) 169.12 226 P 0 F 0.56 ( are simply example names. Accessor methods can have arbitrary names.) 201.78 226 P 0.95 (However for standard naming conventions for accessor methods see the design patterns de-) 108 212 P (scribed in Section 8.3.) 108 198 T 3 14 Q (7.2) 54 170.67 T ( Indexed properties) 75 170.67 T 0 12 Q 0.17 (In addition to simple single-value properties, we also support) 108 150 P 2 F 0.17 (indexed properties) 406.18 150 P 0 F 0.17 (. An indexed) 496 150 P 0.05 (property supports a range of values. Whenever the property is read or written you just specify) 108 136 P (an index to identify which value you want.) 108 122 T (Property indexes must be Java \322int\323s.) 108 102 T 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "40" 40 %%Page: "41" 41 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 54 746 558 756 R 7 X 0 0 0 1 0 0 0 K V 2 10 Q 0 X (JavaBeans) 54 749.33 T (Properties) 515.78 749.33 T 54 32.67 558 42.67 R 7 X V 0 X (Sun Microsystems) 54 36 T (41) 301 36 T (7/24/97) 527.44 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 54 72 558 720 R 7 X V 0 F 0 X 0.3 (We may relax this restriction in the future to allow other index types. However it seems that \322int\323 in-) 129 713.33 P (dexes are in practice the most common and useful kind of property index.) 129 701.33 T 0 12 Q 0.96 (A component may also expose an indexed property as a single array value. For example, if) 108 678 P 0.17 (there is an indexed property \322fred\323 of type string it may be possible from a scripting environ-) 108 664 P -0.26 (ment to access an individual indexed value using \322b.fred[3]\323 and also to access the same prop-) 108 650 P (erty as an array using \322b.fred\323.) 108 636 T (For indexed properties the accessor type signatures are:) 108 616 T 4 10 Q (void setter\050int index, PropertyType value\051;) 126 597.33 T (// indexed setter) 396 597.33 T (PropertyType getter\050int index\051;) 126 585.33 T (// indexed getter) 396 585.33 T (void setter\050PropertyType values[]\051;) 126 573.33 T (// array setter) 396 573.33 T (PropertyType[] getter\050\051;) 126 561.33 T (// array getter) 396 561.33 T 0 12 Q -0.1 (The indexed getter and setter methods may throw a) 108 542 P 2 F -0.1 (java.lang.ArrayIndexOutOfBoundsExcep-) 356.04 542 P (tion) 108 528 T 0 F ( runtime exception if an index is used that is outside the current array bounds.) 126.67 528 T 0.41 (In order to change the size of the array you must use the array setter method to set a new \050or) 108 508 P (updated\051 array.) 108 494 T 3 14 Q (7.3) 54 466.67 T ( Exceptions on accessor methods) 75 466.67 T 0 12 Q 0.42 (Both simple and indexed property accessor methods may throw checked exceptions. This al-) 108 446 P (lows property setter/getter methods to report exceptional conditions.) 108 432 T (Thus for example you might have:) 108 412 T 4 10 Q (void setWombat\050Wombat value\051 throws BadWombatException;) 126 393.33 T (Marsupial getKangaroo\050int index\051 throws AwfulCommunicationException;) 126 381.33 T 3 14 Q (7.4) 54 354.67 T ( Bound and constrained properties) 75 354.67 T 0 12 Q 0.81 (Java Beans provides support for) 108 334 P 2 F 0.81 (bound) 269.05 334 P 0 F 0.81 (and) 302.86 334 P 2 F 0.81 (constrained) 324.01 334 P 0 F 0.81 (properties. These are advanced fea-) 384.48 334 P (tures that are not required for simple beans or for initial beans programming.) 108 320 T 3 F (7.4.1) 66 297 T (Bound properties) 108 297 T 0 F 0.01 (Sometimes when a bean property changes then either the bean\325s container or some other bean) 108 277 P (may wish to be notified of the change.) 108 263 T -0.16 (A component can choose to provide a change notification service for some or all of its proper-) 108 243 P 0.75 (ties. Such properties are commonly known as) 108 229 P 2 F 0.75 (bound properties) 334.54 229 P 0 F 0.75 (, as they allow other compo-) 417.62 229 P (nents to bind special behaviour to property changes.) 108 215 T -0.27 (The) 108 195 P 2 F -0.27 (PropertyChangeListener) 129.39 195 P 0 F -0.27 (event listener interface is used to report updates to simple bound) 251.44 195 P -0.53 (properties. If a bean supports bound properties then it should support a normal pair of multicast) 108 181 P (event listener registration methods for PropertyChangeListeners:) 108 167 T 4 10 Q (public void addPropertyChangeListener\050PropertyChangeListener x\051;) 126 148.33 T (public void removePropertyChangeListener\050PropertyChangeListener x\051;) 126 136.33 T 0 12 Q -0.23 (When a property change occurs on a bound property the bean should call the PropertyChange-) 108 117 P 0.26 (Listener.propertyChange method on any registered listeners, passing a) 108 103 P 2 F 0.26 (PropertyChangeEvent) 450.68 103 P 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "41" 41 %%Page: "42" 42 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 54 746 558 756 R 7 X 0 0 0 1 0 0 0 K V 2 10 Q 0 X (JavaBeans) 54 749.33 T (Properties) 515.78 749.33 T 54 32.67 558 42.67 R 7 X V 0 X (Sun Microsystems) 54 36 T (42) 301 36 T (7/24/97) 527.44 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 54 72 558 720 R 7 X V 0 12 Q 0 X 0.2 (object that encapsulates the locale-independent name of the property and its old and new val-) 108 712 P (ues.) 108 698 T (The event source should fire the event) 108 678 T 2 F (after) 294.29 678 T 0 F (updating its internal state.) 319.96 678 T 0.19 (For programming convenience, we provide a utility class PropertyChangeSupport that can be) 108 658 P (used to keep track of PropertyChangeListeners and to fire PropertyChange events.) 108 644 T 3 F (7.4.2) 66 621 T (Constrained properties) 108 621 T 0 F 0.39 (Sometimes when a property change occurs some other bean may wish to validate the change) 108 601 P (and reject it if it is inappropriate.) 108 587 T (We refer to properties that undergo this kind of checking as) 108 567 T 2 F (constrained properties) 396.94 567 T 0 F (.) 505.93 567 T -0.69 (In Java Beans, constrained property setter methods are required to support the) 108 547 P 2 F -0.69 (PropertyVetoEx-) 476.69 547 P -0.5 (ception) 108 533 P 0 F -0.5 (. This documents to the users of the constrained property that attempted updates may be) 143.33 533 P (vetoed.) 108 519 T (So a simple constrained property might look like:) 108 499 T 4 10 Q (PropertyType getFoo\050\051;) 126 480.33 T (void setFoo\050PropertyType value\051 throws PropertyVetoException;) 126 468.33 T 0 12 Q 0.58 (The) 108 437 P 2 F 0.58 (VetoableChangeListener) 130.24 437 P 0 F 0.58 (event listener interface is used to report updates to constrained) 253.15 437 P 0.98 (properties. If a bean supports constrained properties then it should support a normal pair of) 108 423 P (multicast event listener registration methods for VetoableChangeListeners:) 108 409 T 4 10 Q (public void addVetoableChangeListener\050VetoableChangeListener x\051;) 126 390.33 T (public void removeVetoableChangeListener\050VetoableChangeListener x\051;) 126 378.33 T 0 12 Q 1.87 (When a property change occurs on a constrained property the bean should call the Veto-) 108 359 P 0.76 (ableChangeListener.vetoableChange method on any registered listeners, passing a) 108 345 P 2 F 0.76 (Property-) 511.34 345 P 0.01 (ChangeEvent) 108 331 P 0 F 0.01 ( object that encapsulates the locale-independent name of the property and its old) 172.66 331 P 0.04 (and new values. If the event recipient does not wish the requested edit to be performed it may) 108 317 P 0.39 (throw a PropertyVetoException. It is the source bean\325s responsibility to catch this exception,) 108 303 P 0.23 (revert to the old value, and issue a new VetoableChangeListener.vetoableChange event to re-) 108 289 P (port the reversion.) 108 275 T 0 10 Q -0.01 (The initial vetoableChangeListener.vetoablePropertyChange event may have been multicast to a num-) 129 256.33 P -0.15 (ber of recipients before one vetoes the new value. If one of the recipients vetoes, then we have to make) 129 244.33 P 0.27 (sure that all the other recipients are informed that we have reverted to the old value. Thus the need to) 129 232.33 P -0.36 (fire another VetoableChangeListener.vetoableChange event when we revert. The source may choose to) 129 220.33 P (ignore vetoes when reverting to the old value.) 129 208.33 T 0 12 Q (The event source should fire the event) 108 185 T 2 F (before) 294.29 185 T 0 F ( updating its internal state.) 324.95 185 T 0.28 (For programming convenience we provide a utility class VetoableChangeSupport that can be) 108 165 P 1.54 (used to keep track of VetoableChangeListeners and to fire VetoableChange events. It also) 108 151 P (catches PropertyVetoExceptions and sends any necessary reversion event.) 108 137 T 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "42" 42 %%Page: "43" 43 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 54 746 558 756 R 7 X 0 0 0 1 0 0 0 K V 2 10 Q 0 X (JavaBeans) 54 749.33 T (Properties) 515.78 749.33 T 54 32.67 558 42.67 R 7 X V 0 X (Sun Microsystems) 54 36 T (43) 301 36 T (7/24/97) 527.44 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 54 72 558 720 R 7 X V 3 12 Q 0 X (7.4.3) 66 712 T (Listening for both bound and constrained propertie) 108 712 T (s) 372.7 712 T 0 F -0.01 (In general we recommend that if a property is constrained then it should also be bound. If it is) 108 692 P 0.38 (desirable to allow other beans to veto changes to a property then it is probably also desirable) 108 678 P (to allow them to be notified when the property is actually changed.) 108 664 T 0.87 (If a bean supports a property that is both bound and constrained, then it should fire a Veto-) 108 644 P 3.47 (ableChangeListener.vetoableChange event before updating the property and a Property-) 108 630 P (ChangeListener.propertyChange event after updating the property.) 108 616 T 0.22 (So if a bean is interested in both being able to veto proposed updates and in accurately moni-) 108 596 P -0.74 (toring the state of a property then it should use a \322two phase\323 approach and register both a Veto-) 108 582 P 0.24 (ableChangeListener and a PropertyChangeListener. In the first phase at vetoableChange time) 108 568 P -0.4 (it should merely check whether the proposed value is acceptable and veto unacceptable values.) 108 554 P 0.22 (In the second phase at PropertyChange time it can rely on the change being effective and can) 108 540 P (proceed to act on the new value.) 108 526 T 0 10 Q -0.43 (Some experienced developers may chose to use a \322single phase\323 mechanism to track the state of a prop-) 129 507.33 P -0.45 (erty and merely register a VetoableChangeListener and track the state of the bean though the successive) 129 495.33 P 0.5 (vetoableChange notifications. After all, if a vetoableChange is subsequently vetoed then a new veto-) 129 483.33 P -0.15 (ableChange will be sent reporting the reversion to the old value. Note however that this approach is in-) 129 471.33 P 1.32 (herently racy as it is hard to be sure when a new value is really effective. This approach requires) 129 459.33 P -0.14 (considerable care if it is to be used safely. However in some situations, this approach may be appropri-) 129 447.33 P (ate.) 129 435.33 T 3 12 Q (7.4.4) 66 412 T (Checking for changes that have no effect) 108 412 T 0 F 0.05 (If a property setter method gets called with an argument that is equal to the property\325s current) 108 392 P 0.4 (value, then we recommend that the bean does not fire either a VetoableChangeListener.veto-) 108 378 P -0.03 (ableChange event or a PropertyChangeListener.propertyChange event. This behaviour is both) 108 364 P -0.56 (more efficient and reduces the danger of loops when property setter methods are cross connect-) 108 350 P (ed.) 108 336 T 0.96 (Thus for example the following property update on a bound property \322fred\323 need not fire a) 108 316 P (PropertyChangeEvent:) 108 302 T 4 10 Q (x.setFred\050x.getFred\050\051\051;) 144 283.33 T 0 12 Q -0.63 (For code that uses the PropertyChangeSupport and VetoableChangeSupport utility classes, this) 108 264 P -0.53 (check for equality is handled automatically, as these classes check if the \322old\323 and \322new\323 prop-) 108 250 P (erty values are equal and if so avoid firing an event.) 108 236 T 3 F (7.4.5) 66 213 T (Optional support for listening on named properties) 108 213 T 0 F -0.66 (In addition to supporting the standard design pattern for adding and removing PropertyChange-) 108 193 P -0.3 (Listeners shown in Section 7.4.1 above, a bean that fires PropertyChangeEvents may also sup-) 108 179 P 2.24 (port an additional pair of methods that allow a PropertyChangeListener to be added and) 108 165 P (removed for a named property:) 108 151 T 4 10 Q (void addPropertyChangeListener\050String propertyName,) 126 132.33 T (PropertyChangeListener listener\051;) 270 120.33 T (void removePropertyChangeListener\050String propertyName,) 126 108.33 T (PropertyChangeListener listener\051;) 270 96.33 T 34 432 36 720 R V 34 93 36 221 R V 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "43" 43 %%Page: "44" 44 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 54 746 558 756 R 7 X 0 0 0 1 0 0 0 K V 2 10 Q 0 X (JavaBeans) 54 749.33 T (Properties) 515.78 749.33 T 54 32.67 558 42.67 R 7 X V 0 X (Sun Microsystems) 54 36 T (44) 301 36 T (7/24/97) 527.44 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 54 72 558 720 R 7 X V 0 12 Q 0 X -0.58 (In this case, the bean should associate the given listener with the given property name, and only) 108 712 P (invoke its propertyChange method when the given named property has been changed.) 108 698 T -0.25 (Similarly, in addition to supporting the standard design pattern for adding and removing Veto-) 108 678 P -0.13 (ableChangeListeners, beans may also support additional registration methods that are tied to a) 108 664 P (specific named property:) 108 650 T 4 10 Q (void addVetoableChangeListener\050String propertyName,) 126 631.33 T (VetoableChangeListener listener\051;) 270 619.33 T (void removeVetoableChangeListener\050String propertyName,) 126 607.33 T (VetoableChangeListener listener\051;) 270 595.33 T 0 12 Q 0.43 (Note that in both cases the bean must also support the standard design pattern for registering) 108 576 P (an event listener, which takes a single event listener argument.) 108 562 T 3 F (7.4.6) 66 539 T (Optional event handler methods for specific propertie) 108 539 T (s) 383.32 539 T 0 F 0.14 (As an alternative to the mechanism described in the previous section,) 108 519 P 0.14 ( a bean may) 441.67 519 P 0.14 ( provide ex-) 499.74 519 P -0.31 (plicit methods to allow the registration and removal of a event handlers for a specific property.) 108 505 P 0.1 (This is entirely optional, but if a bean chooses to support this) 108 491 P 0.1 (,) 401.77 491 P 0.1 ( then for each such bound prop-) 404.77 491 P (erty it) 108 477 T (may p) 139.33 477 T (rovide methods of the form:) 169 477 T 4 10 Q (void add<) 144 458.33 T 6 F (PropertyName) 198 458.33 T 4 F (>Listener\050PropertyChangeListener p\051;) 270 458.33 T (void remove<) 144 446.33 T 6 F (PropertyName) 216 446.33 T 4 F (>Listener\050PropertyChangeListener p\051;) 288 446.33 T 0 12 Q -0.69 (and it) 108 427 P -0.69 (may a) 136.63 427 P -0.69 (lso add a similarly named pair of optional methods for registering and deregistering) 164.94 427 P (VetoableChangeListeners:) 108 413 T 4 10 Q (void add<) 144 394.33 T 6 F (PropertyName) 198 394.33 T 4 F (>Listener\050VetoableChangeListener p\051;) 270 394.33 T (void remove<) 144 382.33 T 6 F (PropertyName) 216 382.33 T 4 F (>Listener\050VetoableChangeListener p\051;) 288 382.33 T 3 12 Q (7.4.7) 66 348 T (A bound and constrained example) 108 348 T 0 F 0.43 (In the following example the JellyBean class supports a bound property \322color\323 and a bound) 108 328 P -0.29 (and constrained property \322priceInCents\323. We use instances of the PropertyChangeSupport and) 108 314 P 0.29 (VetoableChangeSupport classes to help us keep track of the event listeners and to deliver the) 108 300 P (actual events.) 108 286 T 4 10 Q (import java.awt.*;) 126 267.33 T (import java.beans.*;) 126 255.33 T (public class JellyBean {) 126 231.33 T (public Color getColor\050\051 {) 144 213.33 T (return ourColor;) 162 201.33 T (}) 144 189.33 T (public void setColor\050Color newColor\051 {) 144 171.33 T (Color oldColor = ourColor;) 162 159.33 T (ourColor = newColor;) 162 147.33 T (changes.firePropertyChange\050\322color\323, oldColor, newColor\051;) 162 135.33 T (}) 144 123.33 T 34 473 36 720 R V 34 423 36 435 R V 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "44" 44 %%Page: "45" 45 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 54 746 558 756 R 7 X 0 0 0 1 0 0 0 K V 2 10 Q 0 X (JavaBeans) 54 749.33 T (Properties) 515.78 749.33 T 54 32.67 558 42.67 R 7 X V 0 X (Sun Microsystems) 54 36 T (45) 301 36 T (7/24/97) 527.44 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 54 72 558 720 R 7 X V 4 F 0 X (public int getPriceInCents\050\051 {) 144 713.33 T (return ourPriceInCents;) 162 701.33 T (}) 144 689.33 T (public void setPriceInCents\050int newPriceInCents\051) 144 671.33 T (throws PropertyVetoException {) 306 659.33 T (int oldPriceInCents = ourPriceInCents;) 162 647.33 T (// First tell the vetoers about the change. If anyone objects, we) 162 635.33 T (// let the PropertyVetoException propagate back to our caller.) 162 623.33 T (vetos.fireVetoableChange\050\322priceInCents\323,) 162 611.33 T (new Integer\050oldPriceInCents\051,) 252 599.33 T (new Integer\050newPriceInCents\051\051;) 252 587.33 T (// No one vetoed, so go ahead and make the change.) 162 575.33 T (ourPriceInCents = newPriceInCents;) 162 563.33 T (changes.firePropertyChange\050\322priceInCents\323,) 162 551.33 T (new Integer\050oldPriceInCents\051,) 252 539.33 T (new Integer\050newPriceInCents\051\051;) 252 527.33 T (}) 144 515.33 T (public void addPropertyChangeListener\050PropertyChangeListener l\051 {) 144 497.33 T (changes.addPropertyChangeListener\050l\051;) 162 485.33 T (}) 144 473.33 T (public void removePropertyChangeListener\050PropertyChangeListener l\051 {) 144 455.33 T (changes.removePropertyChangeListener\050l\051;) 162 443.33 T (}) 144 431.33 T (public void addVetoableChangeListener\050VetoableChangeListener l\051 {) 144 413.33 T (vetos.addVetoableChangeListener\050l\051;) 162 401.33 T (}) 144 389.33 T (public void removeVetoableChangeListener\050VetoableChangeListener l\051 {) 144 371.33 T (vetos.removeVetoableChangeListener\050l\051;) 162 359.33 T (}) 144 347.33 T (private PropertyChangeSupport changes =) 144 329.33 T (new PropertyChangeSupport\050this\051;) 270 317.33 T -1.2 (private VetoableChangeSupport vetos = new VetoableChangeSupport\050this\051;) 144 305.33 P (private Color ourColor = Color.orange;) 144 293.33 T (private int ourPriceInCents = 2;) 144 281.33 T (}) 126 269.33 T 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "45" 45 %%Page: "46" 46 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 54 746 558 756 R 7 X 0 0 0 1 0 0 0 K V 2 10 Q 0 X (JavaBeans) 54 749.33 T 54 32.67 558 42.67 R 7 X V 0 X (Sun Microsystems) 54 36 T (46) 301 36 T (7/24/97) 527.44 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 54 72 558 720 R 7 X V 0 0 0 1 0 0 0 K 54 694 558 706 C 0 0 0 1 0 0 0 K 54 705 522 705 2 L 1 H 2 Z 0 X 0 0 0 1 0 0 0 K N 54 702 522 702 2 L N 0 0 0 1 0 0 0 K 0 0 612 792 C 0 0 0 1 0 0 0 K 3 14 Q 0 X 0 0 0 1 0 0 0 K (Class Pr) 54 710.67 T (opertyChangeEv) 103.91 710.67 T (ent) 204.88 710.67 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 4 10 Q (public) 90 671.33 T (class) 132 671.33 T (java.beans.) 168 671.33 T 7 F (PropertyChangeEvent) 234 671.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 4 F ( extends) 90 659.33 T (java.util.) 162 659.33 T 7 F (EventObject) 222 659.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 F (A "PropertyChange" e) 90 635.33 T (v) 179.56 635.33 T (ent gets deli) 184.41 635.33 T (v) 232.49 635.33 T (ered whene) 237.34 635.33 T (v) 282.9 635.33 T (er a bean changes a "bound" or "constrained" property) 287.75 635.33 T (. A Property-) 504.47 635.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (ChangeEv) 90 623.33 T (ent object is sent as an ar) 131.51 623.33 T (gument to the PropertyChangeListener and V) 231.31 623.33 T (etoableChangeListener methods.) 412.12 623.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K -0.23 (Normally PropertyChangeEv) 90 605.33 P -0.23 (ents are accompanied by the name and the old and ne) 206.55 605.33 P -0.23 (w v) 417.24 605.33 P -0.23 (alue of the changed property) 431.48 605.33 P -0.23 (. If) 544.31 605.33 P 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (the ne) 90 593.33 T (w v) 113.91 593.33 T (alue is a primiti) 128.38 593.33 T (v) 190.63 593.33 T (e type \050such as int or boolean\051 it must be wrapped as the corresponding ja) 195.48 593.33 T (v) 489.67 593.33 T (a.lang.* Object) 494.42 593.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (type \050such as Inte) 90 581.33 T (ger or Boolean\051.) 160.11 581.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (Null v) 90 563.33 T (alues may be pro) 115.03 563.33 T (vided for the old and the ne) 182.92 563.33 T (w v) 292.65 563.33 T (alues if their true v) 307.12 563.33 T (alues are not kno) 382.41 563.33 T (wn.) 450.2 563.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (An e) 90 545.33 T (v) 108.91 545.33 T (ent source may send a null object as the name to indicate that an arbitrary set of if its properties ha) 113.76 545.33 T (v) 506.82 545.33 T (e changed.) 511.67 545.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (In this case the old and ne) 90 533.33 T (w v) 193.62 533.33 T (alues should also be null.) 208.09 533.33 T 0 0 0 1 0 0 0 K 54 494 558 504 C 0 0 0 1 0 0 0 K 53.67 500.5 207.83 500.5 2 L 1 H 2 Z 0 X 0 0 0 1 0 0 0 K N 0 0 0 1 0 0 0 K 0 0 612 792 C 0 0 0 1 0 0 0 K 3 12 Q 0 X 0 0 0 1 0 0 0 K (Constructors) 54 508 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 7 10 Q (\245 PropertyChangeEvent) 68.4 474.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 4 F (public PropertyChangeEvent\050Object) 90 459.33 T (source,) 294 459.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (String) 252 447.33 T (propertyName,) 294 447.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (Object) 252 435.33 T (oldValue,) 294 435.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (Object) 252 423.33 T (newValue\051) 294 423.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 3 F (P) 90 403.33 T (arameters:) 96.01 403.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 F (source) 126 391.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (The bean that \336red the e) 147.6 379.33 T (v) 244.27 379.33 T (ent.) 249.12 379.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (propertyName) 126 367.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (The programmatic name of the property that w) 147.6 355.33 T (as changed.) 334.96 355.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (oldV) 126 343.33 T (alue) 144.89 343.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (The old v) 147.6 331.33 T (alue of the property) 185.68 331.33 T (.) 263.62 331.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (ne) 126 319.33 T (wV) 135.19 319.33 T (alue) 148.52 319.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (The ne) 147.6 307.33 T (w v) 174.84 307.33 T (alue of the property) 189.31 307.33 T (.) 267.25 307.33 T 0 0 0 1 0 0 0 K 54 268 558 278 C 0 0 0 1 0 0 0 K 53.67 274.5 207.83 274.5 2 L 1 H 2 Z 0 X 0 0 0 1 0 0 0 K N 0 0 0 1 0 0 0 K 0 0 612 792 C 0 0 0 1 0 0 0 K 3 12 Q 0 X 0 0 0 1 0 0 0 K (Methods) 54 282 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 7 10 Q (\245 getNewValue) 68.4 248.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 4 F (public Object getNewValue\050\051) 90 233.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 3 F (Retur) 90 213.33 T (ns:) 114.84 213.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 F (The ne) 126 201.33 T (w v) 153.24 201.33 T (alue for the property) 167.71 201.33 T (, e) 248.98 201.33 T (xpressed as an Object. May be null if multiple properties ha) 258.27 201.33 T (v) 497.2 201.33 T (e changed.) 502.05 201.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 7 F (\245 getOldValue) 68.4 179.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 4 F (public Object getOldValue\050\051) 90 164.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 3 F (Retur) 90 144.33 T (ns:) 114.84 144.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 F (The old v) 126 132.33 T (alue for the property) 164.08 132.33 T (, e) 245.35 132.33 T (xpressed as an Object. May be null if multiple properties ha) 254.64 132.33 T (v) 493.57 132.33 T (e changed.) 498.42 132.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 7 F (\245 getPropagationId) 68.4 110.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 4 F (public Object getPropagationId\050\051) 90 95.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "46" 46 %%Page: "47" 47 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 54 746 558 756 R 7 X 0 0 0 1 0 0 0 K V 2 10 Q 0 X (JavaBeans) 54 749.33 T 54 32.67 558 42.67 R 7 X V 0 X (Sun Microsystems) 54 36 T (47) 301 36 T (7/24/97) 527.44 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 54 72 558 720 R 7 X V 0 F 0 X (The "propag) 90 713.33 T (ationId" \336eld is reserv) 139.85 713.33 T (ed for future use. In Beans 1.0 the sole requirement is that if a listener catches a) 228.49 713.33 T (PropertyChangeEv) 90 701.33 T (ent and then \336res a PropertyChangeEv) 165.95 701.33 T (ent of its o) 319.94 701.33 T (wn, then it should mak) 362.19 701.33 T (e sure that it propag) 453.48 701.33 T (ates) 532.86 701.33 T (the propag) 90 689.33 T (ationId \336eld from its incoming e) 132.44 689.33 T (v) 261.91 689.33 T (ent to its outgoing e) 266.76 689.33 T (v) 345.96 689.33 T (ent.) 350.81 689.33 T 3 F (Retur) 90 669.33 T (ns:) 114.84 669.33 T 0 F (the propag) 126 657.33 T (ationId object associated with a bound/constrained property update.) 168.44 657.33 T 7 F (\245 getPropertyName) 68.4 635.33 T 4 F (public String getPropertyName\050\051) 90 620.33 T 3 F (Retur) 90 600.33 T (ns:) 114.84 600.33 T 0 F (The programmatic name of the property that w) 126 588.33 T (as changed. May be null if multiple properties ha) 313.36 588.33 T (v) 509.52 588.33 T (e changed.) 514.37 588.33 T 7 F (\245 setPropagationId) 68.4 566.33 T 4 F (public void setPropagationId\050Object) 90 551.33 T (propagationId\051) 306 551.33 T 3 F (P) 90 531.33 T (arameters:) 96.01 531.33 T 0 F (propag) 126 519.33 T (ationId) 153.72 519.33 T (The propag) 147.6 507.33 T (ationId object for the e) 193.37 507.33 T (v) 284.21 507.33 T (ent.) 289.06 507.33 T 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "47" 47 %%Page: "48" 48 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 54 746 558 756 R 7 X 0 0 0 1 0 0 0 K V 2 10 Q 0 X (JavaBeans) 54 749.33 T 54 32.67 558 42.67 R 7 X V 0 X (Sun Microsystems) 54 36 T (48) 301 36 T (7/24/97) 527.44 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 54 72 558 720 R 7 X V 0 0 0 1 0 0 0 K 54 694 558 706 C 0 0 0 1 0 0 0 K 54 705 522 705 2 L 1 H 2 Z 0 X 0 0 0 1 0 0 0 K N 54 702 522 702 2 L N 0 0 0 1 0 0 0 K 0 0 612 792 C 0 0 0 1 0 0 0 K 3 14 Q 0 X 0 0 0 1 0 0 0 K (Interface Pr) 54 710.67 T (opertyChangeListener) 126.44 710.67 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 4 10 Q (public) 90 671.33 T (interface) 132 671.33 T (java.beans.) 192 671.33 T 7 F (PropertyChangeListener) 258 671.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 4 F ( extends java.util.) 90 659.33 T 7 F (EventListener) 222 659.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 F (A "PropertyChange" e) 90 635.33 T (v) 179.56 635.33 T (ent gets \336red whene) 184.41 635.33 T (v) 264.42 635.33 T (er a bean changes a "bound" property) 269.27 635.33 T (. Y) 418.4 635.33 T (ou can re) 429.52 635.33 T (gister a Property-) 466.02 635.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (ChangeListener with a source bean so as to be noti\336ed of an) 90 623.33 T (y bound property updates.) 330.64 623.33 T 0 0 0 1 0 0 0 K 54 584 558 594 C 0 0 0 1 0 0 0 K 53.67 590.5 207.83 590.5 2 L 1 H 2 Z 0 X 0 0 0 1 0 0 0 K N 0 0 0 1 0 0 0 K 0 0 612 792 C 0 0 0 1 0 0 0 K 3 12 Q 0 X 0 0 0 1 0 0 0 K (Methods) 54 598 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 7 10 Q (\245 propertyChange) 68.4 564.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 4 F (public void) 90 549.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (propertyChange\050PropertyChangeEvent) 90 537.33 T (evt\051) 300 537.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 F (This method gets called when a bound property is changed.) 90 515.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 3 F (P) 90 495.33 T (arameters:) 96.01 495.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 F (e) 126 483.33 T (vt) 130.19 483.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (A PropertyChangeEv) 147.6 471.33 T (ent object describing the e) 233.27 471.33 T (v) 338 471.33 T (ent source and the property that has changed.) 342.85 471.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "48" 48 %%Page: "49" 49 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 54 746 558 756 R 7 X 0 0 0 1 0 0 0 K V 2 10 Q 0 X (JavaBeans) 54 749.33 T 54 32.67 558 42.67 R 7 X V 0 X (Sun Microsystems) 54 36 T (49) 301 36 T (7/24/97) 527.44 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 54 72 558 720 R 7 X V 0 0 0 1 0 0 0 K 54 694 558 706 C 0 0 0 1 0 0 0 K 54 705 522 705 2 L 1 H 2 Z 0 X 0 0 0 1 0 0 0 K N 54 702 522 702 2 L N 0 0 0 1 0 0 0 K 0 0 612 792 C 0 0 0 1 0 0 0 K 3 14 Q 0 X 0 0 0 1 0 0 0 K (Class Pr) 54 710.67 T (opertyChangeSupport) 103.91 710.67 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 4 10 Q (public) 90 671.33 T (class) 132 671.33 T (java.beans.) 168 671.33 T 7 F (PropertyChangeSupport) 234 671.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 4 F ( extends) 90 659.33 T (java.lang.) 162 659.33 T 7 F (Object) 222 659.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 4 F ( implements java.io.) 90 647.33 T 7 F (Serializable) 228 647.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 F -0.09 (This is a utility class that can be used by beans that support bound properties. Y) 90 623.33 P -0.09 (ou can use an instance of this class as) 406.37 623.33 P 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (a member \336eld of your bean and dele) 90 611.33 T (g) 238.98 611.33 T (ate v) 243.93 611.33 T (arious w) 262.84 611.33 T (ork to it.) 296.9 611.33 T 0 0 0 1 0 0 0 K 54 572 558 582 C 0 0 0 1 0 0 0 K 53.67 578.5 207.83 578.5 2 L 1 H 2 Z 0 X 0 0 0 1 0 0 0 K N 0 0 0 1 0 0 0 K 0 0 612 792 C 0 0 0 1 0 0 0 K 3 12 Q 0 X 0 0 0 1 0 0 0 K (Constructors) 54 586 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 7 10 Q (\245 PropertyChangeSupport) 68.4 552.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 4 F (public PropertyChangeSupport\050Object) 90 537.33 T (sourceBean\051) 306 537.33 T 0 0 0 1 0 0 0 K 54 498 558 508 C 0 0 0 1 0 0 0 K 53.67 504.5 207.83 504.5 2 L 1 H 2 Z 0 X 0 0 0 1 0 0 0 K N 0 0 0 1 0 0 0 K 0 0 612 792 C 0 0 0 1 0 0 0 K 3 12 Q 0 X 0 0 0 1 0 0 0 K (Methods) 54 512 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 7 10 Q (\245 addPropertyChangeListener) 68.4 478.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 4 F (public synchronized void) 90 463.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (addPropertyChangeListener\050PropertyChangeListener) 90 451.33 T (listener\051) 384 451.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 F (Add a PropertyChangeListener to the listener list.) 90 429.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 3 F (P) 90 409.33 T (arameters:) 96.01 409.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 F (listener) 126 397.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (The PropertyChangeListener to be added) 147.6 385.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 7 F (\245 firePropertyChange) 68.4 363.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 4 F (public void) 90 348.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (firePropertyChange\050String) 90 336.33 T (propertyName,) 246 336.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (Object) 204 324.33 T (oldValue, Object) 246 324.33 T (newValue\051) 348 324.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 F (Report a bound property update to an) 90 302.33 T (y re) 239.27 302.33 T (gistered listeners. No e) 254.39 302.33 T (v) 345.79 302.33 T (ent is \336red if old and ne) 350.64 302.33 T (w are equal and non-null.) 445.38 302.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 3 F (P) 90 282.33 T (arameters:) 96.01 282.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 F (propertyName) 126 270.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (The programmatic name of the property that w) 147.6 258.33 T (as changed.) 334.96 258.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (oldV) 126 246.33 T (alue) 144.89 246.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (The old v) 147.6 234.33 T (alue of the property) 185.68 234.33 T (.) 263.62 234.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (ne) 126 222.33 T (wV) 135.19 222.33 T (alue) 148.52 222.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (The ne) 147.6 210.33 T (w v) 174.84 210.33 T (alue of the property) 189.31 210.33 T (.) 267.25 210.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 7 F (\245 removePropertyChangeListener) 68.4 188.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 4 F (public synchronized void) 90 173.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (removePropertyChangeListener\050PropertyChangeListener) 90 161.33 T (listener\051) 402 161.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 F (Remo) 90 139.33 T (v) 113.74 139.33 T (e a PropertyChangeListener from the listener list.) 118.59 139.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 3 F (P) 90 119.33 T (arameters:) 96.01 119.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 F (listener) 126 107.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (The PropertyChangeListener to be remo) 147.6 95.33 T (v) 308.53 95.33 T (ed) 313.38 95.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "49" 49 %%Page: "50" 50 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 54 746 558 756 R 7 X 0 0 0 1 0 0 0 K V 2 10 Q 0 X (JavaBeans) 54 749.33 T 54 32.67 558 42.67 R 7 X V 0 X (Sun Microsystems) 54 36 T (50) 301 36 T (7/24/97) 527.44 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 54 72 558 720 R 7 X V 0 0 0 1 0 0 0 K 54 694 558 706 C 0 0 0 1 0 0 0 K 54 705 522 705 2 L 1 H 2 Z 0 X 0 0 0 1 0 0 0 K N 54 702 522 702 2 L N 0 0 0 1 0 0 0 K 0 0 612 792 C 0 0 0 1 0 0 0 K 3 14 Q 0 X 0 0 0 1 0 0 0 K (Class Pr) 54 710.67 T (opertyV) 103.91 710.67 T (etoException) 151.5 710.67 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 4 10 Q (public) 90 671.33 T (class) 132 671.33 T (java.beans.) 168 671.33 T 7 F (PropertyVetoException) 234 671.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 4 F ( extends) 90 659.33 T (java.lang.) 162 659.33 T 7 F (Exception) 222 659.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 F (A PropertyV) 90 635.33 T (etoException is thro) 140.27 635.33 T (wn when a proposed change to a property represents an unacceptable v) 220.57 635.33 T (alue.) 504.4 635.33 T 0 0 0 1 0 0 0 K 54 596 558 606 C 0 0 0 1 0 0 0 K 53.67 602.5 207.83 602.5 2 L 1 H 2 Z 0 X 0 0 0 1 0 0 0 K N 0 0 0 1 0 0 0 K 0 0 612 792 C 0 0 0 1 0 0 0 K 3 12 Q 0 X 0 0 0 1 0 0 0 K (Constructors) 54 610 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 7 10 Q (\245 PropertyVetoException) 68.4 576.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 4 F (public) 90 561.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (PropertyVetoException\050String) 90 549.33 T (mess,) 264 549.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (PropertyChangeEvent) 222 537.33 T (evt\051) 342 537.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 3 F (P) 90 517.33 T (arameters:) 96.01 517.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 F (mess) 126 505.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (Descripti) 147.6 493.33 T (v) 184.01 493.33 T (e message) 188.86 493.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (e) 126 481.33 T (vt) 130.19 481.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (A PropertyChangeEv) 147.6 469.33 T (ent describing the v) 233.27 469.33 T (etoed change.) 311.72 469.33 T 0 0 0 1 0 0 0 K 54 430 558 440 C 0 0 0 1 0 0 0 K 53.67 436.5 207.83 436.5 2 L 1 H 2 Z 0 X 0 0 0 1 0 0 0 K N 0 0 0 1 0 0 0 K 0 0 612 792 C 0 0 0 1 0 0 0 K 3 12 Q 0 X 0 0 0 1 0 0 0 K (Methods) 54 444 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 7 10 Q (\245 getPropertyChangeEvent) 68.4 410.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 4 F (public PropertyChangeEvent getPropertyChangeEvent\050\051) 90 395.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "50" 50 %%Page: "51" 51 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 54 746 558 756 R 7 X 0 0 0 1 0 0 0 K V 2 10 Q 0 X (JavaBeans) 54 749.33 T 54 32.67 558 42.67 R 7 X V 0 X (Sun Microsystems) 54 36 T (51) 301 36 T (7/24/97) 527.44 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 54 72 558 720 R 7 X V 0 0 0 1 0 0 0 K 54 694 558 706 C 0 0 0 1 0 0 0 K 54 705 522 705 2 L 1 H 2 Z 0 X 0 0 0 1 0 0 0 K N 54 702 522 702 2 L N 0 0 0 1 0 0 0 K 0 0 612 792 C 0 0 0 1 0 0 0 K 3 14 Q 0 X 0 0 0 1 0 0 0 K (Interface V) 54 710.67 T (etoableChangeListener) 120.63 710.67 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 4 10 Q (public) 90 671.33 T (interface) 132 671.33 T (java.beans.) 192 671.33 T 7 F (VetoableChangeListener) 258 671.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 4 F ( extends java.util.) 90 659.33 T 7 F (EventListener) 222 659.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 F (A V) 90 635.33 T (etoableChange e) 105.83 635.33 T (v) 171.95 635.33 T (ent gets \336red whene) 176.8 635.33 T (v) 256.81 635.33 T (er a bean changes a "constrained" property) 261.66 635.33 T (. Y) 431.89 635.33 T (ou can re) 443.01 635.33 T (gister a V) 479.51 635.33 T (eto-) 517.28 635.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (ableChangeListener with a source bean so as to be noti\336ed of an) 90 623.33 T (y constrained property updates.) 347.3 623.33 T 0 0 0 1 0 0 0 K 54 584 558 594 C 0 0 0 1 0 0 0 K 53.67 590.5 207.83 590.5 2 L 1 H 2 Z 0 X 0 0 0 1 0 0 0 K N 0 0 0 1 0 0 0 K 0 0 612 792 C 0 0 0 1 0 0 0 K 3 12 Q 0 X 0 0 0 1 0 0 0 K (Methods) 54 598 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 7 10 Q (\245 vetoableChange) 68.4 564.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 4 F (public void) 90 549.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (vetoableChange\050PropertyChangeEvent) 90 537.33 T (evt\051) 300 537.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( throws PropertyVetoException) 72 525.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 F (This method gets called when a constrained property is changed.) 90 503.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 3 F (P) 90 483.33 T (arameters:) 96.01 483.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 F (e) 126 471.33 T (vt) 130.19 471.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (a) 147.6 459.33 T 4 F (PropertyChangeEvent) 154.54 459.33 T 0 F ( object describing the e) 268.54 459.33 T (v) 361.05 459.33 T (ent source and the property that has changed.) 365.9 459.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 3 F (Thr) 90 439.33 T (o) 106.49 439.33 T (ws:) 111.39 439.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 F (PropertyV) 128.33 439.33 T (etoException) 168.88 439.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (if the recipient wishes the property change to be rolled back.) 126 427.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "51" 51 %%Page: "52" 52 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 54 746 558 756 R 7 X 0 0 0 1 0 0 0 K V 2 10 Q 0 X (JavaBeans) 54 749.33 T 54 32.67 558 42.67 R 7 X V 0 X (Sun Microsystems) 54 36 T (52) 301 36 T (7/24/97) 527.44 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 54 72 558 720 R 7 X V 0 0 0 1 0 0 0 K 54 694 558 706 C 0 0 0 1 0 0 0 K 54 705 522 705 2 L 1 H 2 Z 0 X 0 0 0 1 0 0 0 K N 54 702 522 702 2 L N 0 0 0 1 0 0 0 K 0 0 612 792 C 0 0 0 1 0 0 0 K 3 14 Q 0 X 0 0 0 1 0 0 0 K (Class V) 54 710.67 T (etoableChangeSupport) 98.1 710.67 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 4 10 Q (public) 90 671.33 T (class) 132 671.33 T (java.beans.) 168 671.33 T 7 F (VetoableChangeSupport) 234 671.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 4 F ( extends) 90 659.33 T (java.lang.) 162 659.33 T 7 F (Object) 222 659.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 4 F ( implements java.io.) 90 647.33 T 7 F (Serializable) 228 647.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 F (This is a utility class that can be used by beans that support constrained properties. Y) 90 623.33 T (ou can use an instance of this) 428.86 623.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (class as a member \336eld of your bean and dele) 90 611.33 T (g) 271.75 611.33 T (ate v) 276.7 611.33 T (arious w) 295.61 611.33 T (ork to it.) 329.67 611.33 T 0 0 0 1 0 0 0 K 54 572 558 582 C 0 0 0 1 0 0 0 K 53.67 578.5 207.83 578.5 2 L 1 H 2 Z 0 X 0 0 0 1 0 0 0 K N 0 0 0 1 0 0 0 K 0 0 612 792 C 0 0 0 1 0 0 0 K 3 12 Q 0 X 0 0 0 1 0 0 0 K (Constructors) 54 586 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 7 10 Q (\245 VetoableChangeSupport) 68.4 552.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 4 F (public VetoableChangeSupport\050Object) 90 537.33 T (sourceBean\051) 306 537.33 T 0 0 0 1 0 0 0 K 54 498 558 508 C 0 0 0 1 0 0 0 K 53.67 504.5 207.83 504.5 2 L 1 H 2 Z 0 X 0 0 0 1 0 0 0 K N 0 0 0 1 0 0 0 K 0 0 612 792 C 0 0 0 1 0 0 0 K 3 12 Q 0 X 0 0 0 1 0 0 0 K (Methods) 54 512 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 7 10 Q (\245 addVetoableChangeListener) 68.4 478.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 4 F (public synchronized void) 90 463.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (addVetoableChangeListener\050VetoableChangeListener) 90 451.33 T (listener\051) 384 451.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 F (Add a V) 90 429.33 T (etoableListener to the listener list.) 122.77 429.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 3 F (P) 90 409.33 T (arameters:) 96.01 409.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 F (listener) 126 397.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (The V) 147.6 385.33 T (etoableChangeListener to be added) 171.76 385.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 7 F (\245 fireVetoableChange) 68.4 363.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 4 F (public void) 90 348.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (fireVetoableChange\050String) 90 336.33 T (propertyName,) 246 336.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (Object) 204 324.33 T (oldValue, Object) 246 324.33 T (newValue\051) 348 324.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( throws PropertyVetoException) 72 312.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 F -0.05 (Report a v) 90 290.33 P -0.05 (etoable property update to an) 131.41 290.33 P -0.05 (y re) 247.71 290.33 P -0.05 (gistered listeners. If an) 262.79 290.33 P -0.05 (yone v) 353.58 290.33 P -0.05 (etos the change, then \336re a ne) 380.32 290.33 P -0.05 (w e) 498.37 290.33 P -0.05 (v) 512.23 290.33 P -0.05 (ent re) 517.08 290.33 P -0.05 (v) 539.27 290.33 P -0.05 (ert-) 544.12 290.33 P 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (ing e) 90 278.33 T (v) 109.47 278.33 T (eryone to the old v) 114.32 278.33 T (alue and then rethro) 189.06 278.33 T (w the PropertyV) 268.51 278.33 T (etoException.) 333.5 278.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (No e) 90 260.33 T (v) 108.91 260.33 T (ent is \336red if old and ne) 113.76 260.33 T (w are equal and non-null.) 208.5 260.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 3 F (P) 90 240.33 T (arameters:) 96.01 240.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 F (propertyName) 126 228.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (The programmatic name of the property that w) 147.6 216.33 T (as changed.) 334.96 216.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (oldV) 126 204.33 T (alue) 144.89 204.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (The old v) 147.6 192.33 T (alue of the property) 185.68 192.33 T (.) 263.62 192.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (ne) 126 180.33 T (wV) 135.19 180.33 T (alue) 148.52 180.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (The ne) 147.6 168.33 T (w v) 174.84 168.33 T (alue of the property) 189.31 168.33 T (.) 267.25 168.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 3 F (Thr) 90 148.33 T (o) 106.49 148.33 T (ws:) 111.39 148.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 F (PropertyV) 128.33 148.33 T (etoException) 168.88 148.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (if the recipient wishes the property change to be rolled back.) 126 136.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 7 F (\245 removeVetoableChangeListener) 68.4 114.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 4 F (public synchronized void) 90 99.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (removeVetoableChangeListener\050VetoableChangeListener) 90 87.33 T (listener\051) 402 87.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "52" 52 %%Page: "53" 53 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 54 746 558 756 R 7 X 0 0 0 1 0 0 0 K V 2 10 Q 0 X (JavaBeans) 54 749.33 T 54 32.67 558 42.67 R 7 X V 0 X (Sun Microsystems) 54 36 T (53) 301 36 T (7/24/97) 527.44 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 54 72 558 720 R 7 X V 0 F 0 X (Remo) 90 713.33 T (v) 113.74 713.33 T (e a V) 118.59 713.33 T (etoableChangeListener from the listener list.) 138.58 713.33 T 3 F (P) 90 693.33 T (arameters:) 96.01 693.33 T 0 F (listener) 126 681.33 T (The V) 147.6 669.33 T (etoableChangeListener to be remo) 171.76 669.33 T (v) 309.08 669.33 T (ed) 313.93 669.33 T 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "53" 53 %%Page: "54" 54 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 54 746 558 756 R 7 X 0 0 0 1 0 0 0 K V 2 10 Q 0 X (JavaBeans) 54 749.33 T (Introspection) 504.67 749.33 T 54 32.67 558 42.67 R 7 X V 0 X (Sun Microsystems) 54 36 T (54) 301 36 T (7/24/97) 527.44 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 54 72 558 720 R 7 X V 3 18 Q 0 X (8) 81 708 T (Introspection) 108 708 T 3 14 Q (8.1) 54 678.67 T ( Overview) 75 678.67 T 0 12 Q 0.36 (At runtime and in the builder environment we need to be able to figure out which properties,) 108 658 P (events, and methods a Java Bean supports. We call this process) 108 644 T 2 F (introspection) 414.95 644 T 0 F (.) 478.28 644 T -0.5 (We want Java Beans developers to be able to work entirely in terms of Java. We therefore want) 108 624 P 0.27 (to avoid using any separate specification language for defining the behaviour of a Java Bean.) 108 610 P (Rather we\325d like all of its behaviour to be specifiable in Java.) 108 596 T 0.49 (A key goal of Java Beans is to make it very easy to write simple components and to provide) 108 576 P 0.13 (default implementations for most common tasks. Therefore, we\325d like to be able to introspect) 108 562 P -0.08 (on simple beans without requiring that the beans developer do a whole bunch of extra work to) 108 548 P -0.11 (support introspection. However, for more sophisticated components we also want to allow the) 108 534 P -0.1 (component developers full and precise control over which properties, events, and methods are) 108 520 P (exposed.) 108 506 T 0.74 (We therefore provide a composite mechanism. By default we will use a low level) 108 486 P 2 F 0.74 (reflection) 512 486 P 0 F -0.15 (mechanism to study the methods supported by a target bean and then apply simple) 108 472 P 2 F -0.15 (design pat-) 504.49 472 P -0.51 (terns) 108 458 P 0 F -0.51 (to deduce from those methods what properties, events, and public methods are supported.) 134.49 458 P -0.59 (However, if a bean implementor chooses to provide a BeanInfo class describing their bean then) 108 444 P (this BeanInfo class will be used to programmatically discover the beans behaviour.) 108 430 T -0.64 (To allow application builders and other tools to analyze beans, we provide an Introspector class) 108 410 P 1.01 (that understands the various design patterns and standard interfaces and provides a uniform) 108 396 P (way of introspecting on different beans.) 108 382 T 0.34 (For any given bean instance we expect its introspection information to be immutable and not) 108 362 P -0.47 (to vary in normal use. However if a bean is updated with a new improved set of class files, then) 108 348 P (of course its signatures may change.) 108 334 T 3 14 Q (8.2) 54 306.67 T ( Overview of) 75 306.67 T 5 F (Design Patterns) 154.7 306.67 T 0 12 Q -0.37 (By the term) 108 286 P 2 F -0.37 (design patterns) 166.54 286 P 0 F -0.37 ( we mean conventional names and type signatures for sets of meth-) 239.84 286 P 0.5 (ods and/or interfaces that are used for standard purposes. For example the use of getFoo and) 108 272 P (setFoo methods to retrieve and set the values of a \322foo\323 property.) 108 258 T -0.4 (These design patterns have two uses. First they are a useful documentation hint for human pro-) 108 238 P 0.76 (grammers. By quickly identifying particular methods as fitting standard design patterns, hu-) 108 224 P 1.72 (mans can more quickly assimilate and use new classes. Secondly, we can write tools and) 108 210 P 0.54 (libraries that recognize design patterns and use them to analyze and understand components.) 108 196 P -0.74 (In particular for Java Beans we use automatic identification of design patterns as a way for tools) 108 182 P (to identify properties, events, and exported methods.) 108 168 T 0.45 (However, within Java Beans the use of method and type names that match design patterns is) 108 148 P 0.53 (entirely optional. If a programmer is prepared to explicitly specify their properties, methods,) 108 134 P 0.58 (and events using the BeanInfo interface then they can call their methods and types whatever) 108 120 P 0.38 (they like. However, these methods and types will still have to match the required type signa-) 108 106 P (tures, as this is essential to their operation.) 108 92 T 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "54" 54 %%Page: "55" 55 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 54 746 558 756 R 7 X 0 0 0 1 0 0 0 K V 2 10 Q 0 X (JavaBeans) 54 749.33 T (Introspection) 504.67 749.33 T 54 32.67 558 42.67 R 7 X V 0 X (Sun Microsystems) 54 36 T (55) 301 36 T (7/24/97) 527.44 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 54 72 558 720 R 7 X V 0 12 Q 0 X -0.07 (Although use of the standard naming patterns is optional, we strongly recommend their use as) 108 712 P (standard naming conventions are an extremely valuable documentation technique.) 108 698 T 3 14 Q (8.3) 54 670.67 T ( Design Patterns for Properties) 75 670.67 T 3 12 Q (8.3.1) 66 647 T (Simple properties) 108 647 T 0 F (By default, we use design patterns to locate properties by looking for methods of the form:) 108 627 T 4 10 Q (public <) 126 608.33 T 6 F (PropertyType) 174 608.33 T 4 F (> get<) 246 608.33 T 6 F (PropertyName) 282 608.33 T 4 F (>\050\051;) 354 608.33 T (public void set<) 126 596.33 T 6 F (PropertyName) 222 596.33 T 4 F (>\050<) 294 596.33 T 6 F (PropertyType) 312 596.33 T 4 F (> a\051;) 384 596.33 T 0 12 Q 0.3 (If we discover a matching pair of \322get<) 108 577 P 2 F 0.3 (PropertyName) 299.17 577 P 0 F 0.3 (>\323 and \322set<) 369.82 577 P 2 F 0.3 (PropertyName) 431.28 577 P 0 F 0.3 (>\323 methods) 501.93 577 P -0.39 (that take and return the same type, then we regard these methods as defining a read-write prop-) 108 563 P 0.09 (erty whose name will be \322<) 108 549 P 2 F 0.09 (propertyName>\323) 240.86 549 P 0 F 0.09 (. We will use the \322get<) 324.96 549 P 2 F 0.09 (PropertyName) 436.16 549 P 0 F 0.09 (>\323 method) 506.81 549 P 0.06 (to get the property value and the \322set<) 108 535 P 2 F 0.06 (PropertyName) 292.17 535 P 0 F 0.06 (>\323 method to set the property value. The) 362.83 535 P 0.2 (pair of methods may be located either in the same class or one may be in a base class and the) 108 521 P (other may be in a derived class.) 108 507 T -0.52 (If we find only one of these methods, then we regard it as defining either a read-only or a write-) 108 487 P (only property called \322<) 108 473 T 2 F (propertyName>) 219.74 473 T 0 F (\323) 297.17 473 T (By default we assume that properties are neither) 108 453 T 2 F (bound) 342.61 453 T 0 F (nor) 375.61 453 T 2 F (constrained) 394.61 453 T 0 F ( \050see Section 7\051.) 451.27 453 T (So a simple read-write property \322foo\323 might be represented by a pair of methods:) 108 433 T 4 10 Q (public Wombat getFoo\050\051;) 126 414.33 T (public void setFoo\050Wombat w\051;) 126 402.33 T 3 12 Q (8.3.2) 66 380 T (Boolean properties) 108 380 T 0 F (In addition, for boolean properties, we allow a getter method to match the pattern:) 108 360 T 4 10 Q (public boolean is<) 126 341.33 T 6 F (PropertyName) 234 341.33 T 4 F (>\050\051;) 306 341.33 T 0 12 Q -0.17 (This \322is<) 108 322 P 2 F -0.17 (PropertyName) 152.27 322 P 0 F -0.17 (>\323 method may be provided instead of a \322get<) 222.93 322 P 2 F -0.17 (PropertyName) 444.42 322 P 0 F -0.17 (>\323 meth-) 515.08 322 P (od, or it may be provided in addition to a \322get<) 108 308 T 2 F (PropertyName) 334.42 308 T 0 F (>\323 method.) 405.07 308 T -0.72 (In either case, if the \322is<) 108 288 P 2 F -0.72 (PropertyName) 222.48 288 P 0 F -0.72 (>\323 method is present for a boolean property then we will) 293.13 288 P (use the \322is<) 108 274 T 2 F (PropertyName) 164.76 274 T 0 F (>\323 method to read the property value.) 235.42 274 T (An example boolean property might be:) 108 254 T 4 10 Q (public boolean isMarsupial\050\051;) 165.6 234 T (public void setMarsupial\050boolean m\051;) 165.6 221.33 T 3 12 Q (8.3.3) 66 199 T (Indexed properties) 108 199 T 0 F 0.97 (If we find a property whose type is an array \322<) 108 179 P 2 F 0.97 (PropertyElement>) 342.42 179 P 0 F 0.97 ([]\323, then we also look for) 432.5 179 P (methods of the form:) 108 165 T 4 10 Q (public <) 126 146.33 T 6 F (PropertyElement) 174 146.33 T 4 F (> get<) 264 146.33 T 6 F (PropertyName) 300 146.33 T 4 F (>\050int a\051;) 372 146.33 T (public void set<) 126 134.33 T 6 F (PropertyName) 222 134.33 T 4 F (>\050int a, <) 294 134.33 T 6 F (PropertyElement) 354 134.33 T 4 F (> b\051;) 444 134.33 T 0 12 Q -0.7 (If we find either kind of pattern then we assume that \322<) 108 115 P 2 F -0.7 (propertyName>\323) 366.71 115 P 0 F -0.7 ( is an indexed property) 450.81 115 P (and that these methods can be used to read and/or write an indexed value.) 108 101 T (Thus an indexed property \322foo\323 might be represented by four accessor methods:) 108 81 T 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "55" 55 %%Page: "56" 56 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 54 746 558 756 R 7 X 0 0 0 1 0 0 0 K V 2 10 Q 0 X (JavaBeans) 54 749.33 T (Introspection) 504.67 749.33 T 54 32.67 558 42.67 R 7 X V 0 X (Sun Microsystems) 54 36 T (56) 301 36 T (7/24/97) 527.44 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 54 72 558 720 R 7 X V 4 F 0 X (public Bah[] getFoo\050\051;) 126 713.33 T (public void setFoo\050Bah a[]\051;) 126 701.33 T (public Bah getFoo\050int a\051;) 126 689.33 T (public void setFoo\050int a, Bah b\051;) 126 677.33 T 3 14 Q (8.4) 54 650.67 T ( Design Patterns for Events) 75 650.67 T 0 12 Q 0.34 (By default, we use the following design pattern to determine which events a bean multicasts.) 108 630 P (We look for a pair of methods of the form:) 108 616 T 4 10 Q (public void add<) 126 597.33 T 6 F (EventListenerType) 222 597.33 T 4 F (>\050<) 324 597.33 T 6 F (EventListenerType) 342 597.33 T 4 F (> a\051) 444 597.33 T (public void remove<) 126 585.33 T 6 F (EventListenerType) 240 585.33 T 4 F (>\050<) 342 585.33 T 6 F (EventListenerType) 360 585.33 T 4 F (> a\051) 462 585.33 T 0 12 Q 4.22 (where both methods take the same \322<) 108 566 P 2 F 4.22 (EventListenerType) 314.06 566 P 0 F 4.22 (>\323 type argument, where the) 404.05 566 P 1.45 (\322<) 108 552 P 2 F 1.45 (EventListenerType) 120.1 552 P 0 F 1.45 (>\323 type extends the \322java.util.EventListener\323 interface, where the first) 210.08 552 P -0.18 (method starts with \322add\323, the second method starts with \322remove\323, and where the \322<) 108 538 P 2 F -0.18 (EventLis-) 512 538 P (tenerType>\323) 108 524 T 0 F ( type name ends with \322Listener\323.) 170.76 524 T 0.92 (This design pattern assumes that the Java Bean is acting as a multicast event source for the) 108 504 P (events specified in the \322<) 108 490 T 2 F (EventListenerType>\323) 230.08 490 T 0 F ( interface.) 334.84 490 T (So for example:) 108 470 T 4 10 Q (public void addFredListener\050FredListener t\051;) 126 451.33 T (public void removeFredListener\050FredListener t\051;) 126 439.33 T 0 12 Q (defines a multicast event source.) 108 420 T 3 F (8.4.1) 66 397 T (Unicast event sources) 108 397 T 0 F -0.31 (As a special case, when we locate an event source using the design pattern described above we) 108 377 P 1.55 (check if the \322add<) 108 363 P 2 F 1.55 (EventListenerType>\323) 201.06 363 P 0 F 1.55 (method throws the java.util.TooManyListenersEx-) 310.37 363 P 0.38 (ception. If so, we assume that the event source is unicast and can only tolerate a single event) 108 349 P (listener being registered at a time.) 108 335 T (So for example:) 108 315 T 4 10 Q (public void addJackListener\050JackListener t\051) 126 296.33 T (throws java.util.TooManyListenersException;) 266.4 284.33 T (public void removeJackListener\050JackListener t\051;) 126 272.33 T 0 12 Q (defines a unicast event source for the \322JackListener\323 interface.) 108 253 T 3 14 Q (8.5) 54 225.67 T ( Design Patterns for Methods) 75 225.67 T 0 12 Q 0.57 (By default, we assume that all public methods of a Java Bean should be exposed as external) 108 205 P 0.89 (methods within the component environment for access by other components or by scripting) 108 191 P (languages.) 108 177 T 0.03 (By default, this includes any property accessor methods, and any event listener registry meth-) 108 157 P (ods.) 108 143 T 3 14 Q (8.6) 54 115.67 T ( Explicit Specification using a BeanInfo class) 75 115.67 T 0 12 Q 0.43 (A Java Bean can also explicitly specify which properties, events, and methods it supports by) 108 95 P (providing a class that implements the BeanInfo interface.) 108 81 T 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "56" 56 %%Page: "57" 57 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 54 746 558 756 R 7 X 0 0 0 1 0 0 0 K V 2 10 Q 0 X (JavaBeans) 54 749.33 T (Introspection) 504.67 749.33 T 54 32.67 558 42.67 R 7 X V 0 X (Sun Microsystems) 54 36 T (57) 301 36 T (7/24/97) 527.44 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 54 72 558 720 R 7 X V 0 12 Q 0 X 0.61 (The BeanInfo interface provides methods for learning about the events, properties, methods,) 108 712 P 0.14 (and global information about a target bean. As part of delivering a bean, an ISV may also de-) 108 698 P 0.96 (liver a matching BeanInfo class whose name is formed by adding \322BeanInfo\323 to the bean\325s) 108 684 P (class name.) 108 670 T 0 10 Q 1.58 (Java Beans uses purely programmatic APIs to obtain introspection information through BeanInfo.) 129 651.33 P -0.26 (However note that individual component developers have the option of using arbitrary private bean de-) 129 639.33 P 0.55 (scription files behind the scenes and simply providing BeanInfo classes that know how to read these) 129 627.33 P (files.) 129 615.33 T 0 12 Q -0.19 (A bean\325s BeanInfo class may choose to only specify part of a bean\325s behavior. It might for ex-) 108 592 P -0.12 (ample return an EventSetDescriptor array from the getEventSetDescriptors method to provide) 108 578 P -0.17 (definitive information on the bean\325s events while opting to return null from the getMethodDe-) 108 564 P 0.14 (scriptors method, which indicates that the information on exposed methods should be discov-) 108 550 P (ered by examining the bean itself.) 108 536 T -0.22 (Thus to obtain a complete picture of a bean, application tools should always use the Introspec-) 108 516 P 1.31 (tor interface \050see next section\051 which combines the information from a variety of potential) 108 502 P (sources to construct a definitive BeanInfo descriptor for a target bean.) 108 488 T 3 14 Q (8.7) 54 460.67 T ( Analyzing a Bean) 75 460.67 T 0 12 Q 0.58 (We allow both explicit specification of a bean\325s exposed properties/methods/events and also) 108 440 P (implicit analysis using design patterns.) 108 426 T 0.06 (To simplify access to this information, and to make sure that all tools apply the same analysis) 108 406 P -0.19 (rules, we provide a class java.beans.Introspector that should be used to analyze a bean class. It) 108 392 P (allows you to obtain a BeanInfo object that comprehensively describes a target bean class.) 108 378 T -0.22 (The Introspector class walks over the class/superclass chain of the target class. At each level it) 108 358 P 1.26 (checks if there is a matching BeanInfo class which provides explicit information about the) 108 344 P -0.33 (bean, and if so uses that explicit information. Otherwise it uses the low level reflection APIs to) 108 330 P 0.74 (study the target class and uses design patterns to analyze its behaviour and then proceeds to) 108 316 P -0.45 (continue the introspection with its baseclass. \050See the Introspector class definition for a full de-) 108 302 P (scription of the analysis rules.\051) 108 288 T -0.11 (The reason for this multi-level analysis is to allow ISVs to deliver complex beans with explic-) 108 268 P -0.18 (itly specified behaviour where these beans are then subclassed and extended in minor ways by) 108 254 P 0.84 (end customers. We want to be able to use automatic introspection to analyze the extensions) 108 240 P -0.04 (added by the end customers and then add in the explicit information provided by the ISV who) 108 226 P (wrote the baseclass.) 108 212 T 3 14 Q (8.8) 54 184.67 T ( Capitalization of inferred names.) 75 184.67 T 0 12 Q 0.24 (When we use design patterns to infer a property or event name, we need to decide what rules) 108 164 P -0.54 (to follow for capitalizing the inferred name. If we extract the name from the middle of a normal) 108 150 P (mixedCase style Java name then the name will, by default, begin with a capital letter.) 108 136 T 0.87 (Java programmers are accustomed to having normal identifiers start with lower case letters.) 108 116 P 0.44 (Vigorous reviewer input has convinced us that we should follow this same conventional rule) 108 102 P (for property and event names.) 108 88 T 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "57" 57 %%Page: "58" 58 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 54 746 558 756 R 7 X 0 0 0 1 0 0 0 K V 2 10 Q 0 X (JavaBeans) 54 749.33 T (Introspection) 504.67 749.33 T 54 32.67 558 42.67 R 7 X V 0 X (Sun Microsystems) 54 36 T (58) 301 36 T (7/24/97) 527.44 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 54 72 558 720 R 7 X V 0 12 Q 0 X -0.03 (Thus when we extract a property or event name from the middle of an existing Java name, we) 108 712 P -0.35 (normally convert the first character to lower case. However to support the occasional use of all) 108 698 P 0.24 (upper-case names, we check if the first two characters of the name are both upper case and if) 108 684 P (so leave it alone. So for example,) 108 670 T (\322FooBah\323 becomes \322fooBah\323) 162 650 T (\322Z\323 becomes \322z\323) 162 630 T (\322URL\323 becomes \322URL\323) 162 610 T (We provide a method Introspector.decapitalize which implements this conversion rule.) 108 590 T 3 14 Q (8.9) 54 562.67 T ( Security) 75 562.67 T 0 12 Q 1.55 (The high-level Introspection APIs only provide information on \322public\323 methods of target) 108 542 P 0.77 (beans. The normal JDK security manager will allow even untrusted applets to access public) 108 528 P -0.27 (fields and methods using the java.lang.reflect APIs. However, while access to private methods) 108 514 P 0.31 (and fields may be available to \322trusted\323 application builders, this access will normally be de-) 108 500 P (nied to untrusted applets.) 108 486 T 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "58" 58 %%Page: "59" 59 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 54 746 558 756 R 7 X 0 0 0 1 0 0 0 K V 2 10 Q 0 X (JavaBeans) 54 749.33 T 54 32.67 558 42.67 R 7 X V 0 X (Sun Microsystems) 54 36 T (59) 301 36 T (7/24/97) 527.44 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 54 72 558 720 R 7 X V 0 0 0 1 0 0 0 K 54 694 558 706 C 0 0 0 1 0 0 0 K 54 705 522 705 2 L 1 H 2 Z 0 X 0 0 0 1 0 0 0 K N 54 702 522 702 2 L N 0 0 0 1 0 0 0 K 0 0 612 792 C 0 0 0 1 0 0 0 K 3 14 Q 0 X 0 0 0 1 0 0 0 K (Class BeanDescriptor) 54 710.67 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 4 10 Q (public) 90 671.33 T (class) 132 671.33 T (java.beans.) 168 671.33 T 7 F (BeanDescriptor) 234 671.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 4 F ( extends) 90 659.33 T (java.beans.) 162 659.33 T 7 F (FeatureDescriptor) 228 659.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 F (A BeanDescriptor pro) 90 635.33 T (vides global information about a "bean", including its Ja) 178.16 635.33 T (v) 403.05 635.33 T (a class, its displayName, etc.) 407.8 635.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (This is one of the kinds of descriptor returned by a BeanInfo object, which also returns descriptors for properties,) 90 617.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (method, and e) 90 605.33 T (v) 146.13 605.33 T (ents.) 150.98 605.33 T 0 0 0 1 0 0 0 K 54 566 558 576 C 0 0 0 1 0 0 0 K 53.67 572.5 207.83 572.5 2 L 1 H 2 Z 0 X 0 0 0 1 0 0 0 K N 0 0 0 1 0 0 0 K 0 0 612 792 C 0 0 0 1 0 0 0 K 3 12 Q 0 X 0 0 0 1 0 0 0 K (Constructors) 54 580 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 7 10 Q (\245 BeanDescriptor) 68.4 546.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 4 F (public BeanDescriptor\050Class) 90 531.33 T (beanClass\051) 258 531.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 F (Create a BeanDescriptor for a bean that doesn't ha) 90 509.33 T (v) 290.43 509.33 T (e a customizer) 295.28 509.33 T (.) 352.49 509.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 3 F (P) 90 489.33 T (arameters:) 96.01 489.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 F (beanClass) 126 477.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (The Class object of the Ja) 147.6 465.33 T (v) 250.44 465.33 T (a class that implements the bean. F) 255.19 465.33 T (or e) 394.75 465.33 T (xample sun.beans.OurButton.class.) 409.87 465.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 7 F (\245 BeanDescriptor) 68.4 443.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 4 F (public BeanDescriptor\050Class) 90 428.33 T (beanClass,) 258 428.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (Class) 222 416.33 T (customizerClass\051) 258 416.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 F (Create a BeanDescriptor for a bean that has a customizer) 90 394.33 T (.) 316.88 394.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 3 F (P) 90 374.33 T (arameters:) 96.01 374.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 F (beanClass) 126 362.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (The Class object of the Ja) 147.6 350.33 T (v) 250.44 350.33 T (a class that implements the bean. F) 255.19 350.33 T (or e) 394.75 350.33 T (xample sun.beans.OurButton.class.) 409.87 350.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (customizerClass) 126 338.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (The Class object of the Ja) 147.6 326.33 T (v) 250.44 326.33 T (a class that implements the bean's Customizer) 255.19 326.33 T (. F) 438.09 326.33 T (or e) 448.5 326.33 T (xample sun.beans.Our-) 463.62 326.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (ButtonCustomizer) 147.6 314.33 T (.class.) 220.39 314.33 T 0 0 0 1 0 0 0 K 54 275 558 285 C 0 0 0 1 0 0 0 K 53.67 281.5 207.83 281.5 2 L 1 H 2 Z 0 X 0 0 0 1 0 0 0 K N 0 0 0 1 0 0 0 K 0 0 612 792 C 0 0 0 1 0 0 0 K 3 12 Q 0 X 0 0 0 1 0 0 0 K (Methods) 54 289 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 7 10 Q (\245 getBeanClass) 68.4 255.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 4 F (public Class getBeanClass\050\051) 90 240.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 3 F (Retur) 90 220.33 T (ns:) 114.84 220.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 F (The Class object for the bean.) 126 208.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 7 F (\245 getCustomizerClass) 68.4 186.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 4 F (public Class getCustomizerClass\050\051) 90 171.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 3 F (Retur) 90 151.33 T (ns:) 114.84 151.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 F (The Class object for the bean's customizer) 126 139.33 T (. This may be null if the bean doesn't ha) 294.44 139.33 T (v) 453.8 139.33 T (e a customizer) 458.65 139.33 T (.) 515.86 139.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "59" 59 %%Page: "60" 60 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 54 746 558 756 R 7 X 0 0 0 1 0 0 0 K V 2 10 Q 0 X (JavaBeans) 54 749.33 T 54 32.67 558 42.67 R 7 X V 0 X (Sun Microsystems) 54 36 T (60) 301 36 T (7/24/97) 527.44 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 54 72 558 720 R 7 X V 0 0 0 1 0 0 0 K 54 694 558 706 C 0 0 0 1 0 0 0 K 54 705 522 705 2 L 1 H 2 Z 0 X 0 0 0 1 0 0 0 K N 54 702 522 702 2 L N 0 0 0 1 0 0 0 K 0 0 612 792 C 0 0 0 1 0 0 0 K 3 14 Q 0 X 0 0 0 1 0 0 0 K (Interface BeanInf) 54 710.67 T (o) 159.8 710.67 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 4 10 Q (public) 90 671.33 T (interface) 132 671.33 T (java.beans.) 192 671.33 T 7 F (BeanInfo) 258 671.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 F (A bean implementor who wishes to pro) 90 647.33 T (vide e) 247.61 647.33 T (xplicit information about their bean may pro) 271.62 647.33 T (vide a BeanInfo class that) 449.23 647.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (implements this BeanInfo interf) 90 635.33 T (ace and pro) 217.39 635.33 T (vides e) 263.33 635.33 T (xplicit information about the methods, properties, e) 291.23 635.33 T (v) 496.52 635.33 T (ents, etc, of) 501.37 635.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (their bean.) 90 623.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (A bean implementor doesn't need to pro) 90 605.33 T (vide a complete set of e) 249.96 605.33 T (xplicit information. Y) 344.51 605.33 T (ou can pick and choose which) 430.91 605.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (information you w) 90 593.33 T (ant to pro) 164.34 593.33 T (vide and the rest will be obtained by automatic analysis using lo) 202.52 593.33 T (w-le) 458.64 593.33 T (v) 476.16 593.33 T (el re\337ection of the) 481.01 593.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (bean classes' methods and applying standard design patterns.) 90 581.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K -0.13 (Y) 90 563.33 P -0.13 (ou get the opportunity to pro) 96.12 563.33 P -0.13 (vide lots and lots of dif) 210.06 563.33 P -0.13 (ferent information as part of the v) 301.67 563.33 P -0.13 (arious XyZDescriptor classes.) 435.63 563.33 P 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (But don't panic, you only really need to pro) 90 551.33 T (vide the minimal core information required by the v) 263.58 551.33 T (arious constructors.) 471.08 551.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (See also the SimpleBeanInfo class which pro) 90 533.33 T (vides a con) 270.38 533.33 T (v) 314.97 533.33 T (enient "noop" base class for BeanInfo classes, which you) 319.82 533.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (can o) 90 521.33 T (v) 111.23 521.33 T (erride for those speci\336c places where you w) 116.08 521.33 T (ant to return e) 291.76 521.33 T (xplicit info.) 347.43 521.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (T) 90 503.33 T (o learn about all the beha) 95.31 503.33 T (viour of a bean see the Introspector class.) 195.92 503.33 T 0 0 0 1 0 0 0 K 54 464 558 474 C 0 0 0 1 0 0 0 K 53.67 470.5 207.83 470.5 2 L 1 H 2 Z 0 X 0 0 0 1 0 0 0 K N 0 0 0 1 0 0 0 K 0 0 612 792 C 0 0 0 1 0 0 0 K 3 12 Q 0 X 0 0 0 1 0 0 0 K (V) 54 478 T (ariables) 61.56 478 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 7 10 Q (\245 ICON_COLOR_16x16) 68.4 444.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 4 F (public final static int ICON_COLOR_16x16) 90 429.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 F (Constant to indicate a 16 x 16 color icon.) 90 407.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 7 F (\245 ICON_COLOR_32x32) 68.4 385.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 4 F (public final static int ICON_COLOR_32x32) 90 370.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 F (Constant to indicate a 32 x 32 color icon.) 90 348.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 7 F (\245 ICON_MONO_16x16) 68.4 326.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 4 F (public final static int ICON_MONO_16x16) 90 311.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 F (Constant to indicate a 16 x 16 monochrome icon.) 90 289.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 7 F (\245 ICON_MONO_32x32) 68.4 267.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 4 F (public final static int ICON_MONO_32x32) 90 252.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 F (Constant to indicate a 32 x 32 monochrome icon.) 90 230.33 T 0 0 0 1 0 0 0 K 54 191 558 201 C 0 0 0 1 0 0 0 K 53.67 197.5 207.83 197.5 2 L 1 H 2 Z 0 X 0 0 0 1 0 0 0 K N 0 0 0 1 0 0 0 K 0 0 612 792 C 0 0 0 1 0 0 0 K 3 12 Q 0 X 0 0 0 1 0 0 0 K (Methods) 54 205 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 7 10 Q (\245 getAdditionalBeanInfo) 68.4 171.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 4 F (public BeanInfo[] getAdditionalBeanInfo\050\051) 90 156.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 F (This method allo) 90 134.33 T (ws a BeanInfo object to return an arbitrary collection of other BeanInfo objects that pro) 157.53 134.33 T (vide addi-) 507.3 134.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (tional information on the current bean.) 90 122.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (If there are con\337icts or o) 90 104.33 T (v) 188.43 104.33 T (erlaps between the information pro) 193.28 104.33 T (vided by dif) 333.1 104.33 T (ferent BeanInfo objects, then the current) 381.18 104.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (BeanInfo tak) 90 92.33 T (es precedence o) 141.83 92.33 T (v) 204.98 92.33 T (er the getAdditionalBeanInfo objects, and later elements in the array tak) 209.83 92.33 T (e precedence) 498.28 92.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (o) 90 80.33 T (v) 94.85 80.33 T (er earlier ones.) 99.7 80.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "60" 60 %%Page: "61" 61 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 54 746 558 756 R 7 X 0 0 0 1 0 0 0 K V 2 10 Q 0 X (JavaBeans) 54 749.33 T 54 32.67 558 42.67 R 7 X V 0 X (Sun Microsystems) 54 36 T (61) 301 36 T (7/24/97) 527.44 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 54 72 558 720 R 7 X V 3 F 0 X (Retur) 90 713.33 T (ns:) 114.84 713.33 T 0 F (an array of BeanInfo objects. May return null.) 126 701.33 T 7 F (\245 getBeanDescriptor) 68.4 679.33 T 4 F (public BeanDescriptor getBeanDescriptor\050\051) 90 664.33 T 3 F (Retur) 90 644.33 T (ns:) 114.84 644.33 T 0 F -0.38 (A BeanDescriptor pro) 126 632.33 P -0.38 (viding o) 213.4 632.33 P -0.38 (v) 245.93 632.33 P -0.38 (erall information about the bean, such as its displayName, its customizer) 250.78 632.33 P -0.38 (, etc.) 537.1 632.33 P (May return null if the information should be obtained by automatic analysis.) 126 620.33 T 7 F (\245 getDefaultEventIndex) 68.4 598.33 T 4 F (public int getDefaultEventIndex\050\051) 90 583.33 T 0 F (A bean may ha) 90 561.33 T (v) 150.06 561.33 T (e a "def) 154.91 561.33 T (ault" e) 185.54 561.33 T (v) 211.31 561.33 T (ent that is the e) 216.16 561.33 T (v) 276.46 561.33 T (ent that will mostly commonly be used by human's when using the) 281.31 561.33 T (bean.) 90 549.33 T 3 F (Retur) 90 529.33 T (ns:) 114.84 529.33 T 0 F (Inde) 126 517.33 T (x of def) 143.62 517.33 T (ault e) 174.62 517.33 T (v) 196.31 517.33 T (ent in the Ev) 201.16 517.33 T (entSetDescriptor array returned by getEv) 251.84 517.33 T (entSetDescriptors.) 416.09 517.33 T (Returns -1 if there is no def) 126 499.33 T (ault e) 235.88 499.33 T (v) 257.57 499.33 T (ent.) 262.42 499.33 T 7 F (\245 getDefaultPropertyIndex) 68.4 477.33 T 4 F (public int getDefaultPropertyIndex\050\051) 90 462.33 T 0 F -0.26 (A bean may ha) 90 440.33 P -0.26 (v) 149.28 440.33 P -0.26 (e a "def) 154.13 440.33 P -0.26 (ault" property that is the property that will mostly commonly be initially chosen for update by) 184.23 440.33 P (human's who are customizing the bean.) 90 428.33 T 3 F (Retur) 90 408.33 T (ns:) 114.84 408.33 T 0 F (Inde) 126 396.33 T (x of def) 143.62 396.33 T (ault property in the PropertyDescriptor array returned by getPropertyDescriptors.) 174.62 396.33 T (Returns -1 if there is no def) 126 378.33 T (ault property) 235.88 378.33 T (.) 286.61 378.33 T 7 F (\245 getEventSetDescriptors) 68.4 356.33 T 4 F (public EventSetDescriptor[]) 90 341.33 T (getEventSetDescriptors\050\051) 90 329.33 T 3 F (Retur) 90 309.33 T (ns:) 114.84 309.33 T 0 F (An array of Ev) 126 297.33 T (entSetDescriptors describing the kinds of e) 185.55 297.33 T (v) 357.22 297.33 T (ents \336red by this bean. May return null if the) 362.07 297.33 T (information should be obtained by automatic analysis.) 126 285.33 T 7 F (\245 getIcon) 68.4 263.33 T 4 F (public Image getIcon\050int) 90 248.33 T (iconKind\051) 240 248.33 T 0 F (This method returns an image object that can be used to represent the bean in toolbox) 90 226.33 T (es, toolbars, etc. Icon images) 431.74 226.33 T (will typically be GIFs, b) 90 214.33 T (ut may in future include other formats.) 187.3 214.33 T (Beans aren't required to pro) 90 196.33 T (vide icons and may return null from this method.) 200.51 196.33 T (There are four possible \337a) 90 178.33 T (v) 194.77 178.33 T (ors of icons \05016x16 color) 199.57 178.33 T (, 32x32 color) 299.71 178.33 T (, 16x16 mono, 32x32 mono\051. If a bean choses to) 352.36 178.33 T (only support a single icon we recommend supporting 16x16 color) 90 166.33 T (.) 352.48 166.33 T (W) 90 148.33 T (e recommend that icons ha) 98.64 148.33 T (v) 205.64 148.33 T (e a "transparent" background so the) 210.49 148.33 T (y can be rendered onto an e) 352.63 148.33 T (xisting background.) 462.44 148.33 T 3 F (P) 90 128.33 T (arameters:) 96.01 128.33 T 0 F (iconKind) 126 116.33 T (The kind of icon requested. This should be one of the constant v) 147.6 104.33 T (alues ICON_COLOR_16x16,) 404.26 104.33 T (ICON_COLOR_32x32, ICON_MONO_16x16, or ICON_MONO_32x32.) 147.6 92.33 T 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "61" 61 %%Page: "62" 62 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 54 746 558 756 R 7 X 0 0 0 1 0 0 0 K V 2 10 Q 0 X (JavaBeans) 54 749.33 T 54 32.67 558 42.67 R 7 X V 0 X (Sun Microsystems) 54 36 T (62) 301 36 T (7/24/97) 527.44 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 54 72 558 720 R 7 X V 3 F 0 X (Retur) 90 713.33 T (ns:) 114.84 713.33 T 0 F (An image object representing the requested icon. May return null if no suitable icon is a) 126 701.33 T (v) 477.41 701.33 T (ailable.) 482.16 701.33 T 7 F (\245 getMethodDescriptors) 68.4 679.33 T 4 F (public MethodDescriptor[]) 90 664.33 T (getMethodDescriptors\050\051) 90 652.33 T 3 F (Retur) 90 632.33 T (ns:) 114.84 632.33 T 0 F -0.37 (An array of MethodDescriptors describing the e) 126 620.33 P -0.37 (xternally visible methods supported by this bean. May return) 315.25 620.33 P (null if the information should be obtained by automatic analysis.) 126 608.33 T 7 F (\245 getPropertyDescriptors) 68.4 586.33 T 4 F (public PropertyDescriptor[]) 90 571.33 T (getPropertyDescriptors\050\051) 90 559.33 T 3 F (Retur) 90 539.33 T (ns:) 114.84 539.33 T 0 F -0.27 (An array of PropertyDescriptors describing the editable properties supported by this bean. May return null if) 126 527.33 P (the information should be obtained by automatic analysis.) 126 515.33 T (If a property is inde) 126 497.33 T (x) 204.72 497.33 T (ed, then its entry in the result array will belong to the Inde) 209.57 497.33 T (x) 441.89 497.33 T (edPropertyDescriptor sub-) 446.74 497.33 T (class of PropertyDescriptor) 126 485.33 T (. A client of getPropertyDescriptors can use "instanceof" to check if a gi) 234.87 485.33 T (v) 523.55 485.33 T (en) 528.4 485.33 T (PropertyDescriptor is an Inde) 126 473.33 T (x) 243.88 473.33 T (edPropertyDescriptor) 248.73 473.33 T (.) 334.27 473.33 T 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "62" 62 %%Page: "63" 63 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 54 746 558 756 R 7 X 0 0 0 1 0 0 0 K V 2 10 Q 0 X (JavaBeans) 54 749.33 T 54 32.67 558 42.67 R 7 X V 0 X (Sun Microsystems) 54 36 T (63) 301 36 T (7/24/97) 527.44 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 54 72 558 720 R 7 X V 0 0 0 1 0 0 0 K 54 694 558 706 C 0 0 0 1 0 0 0 K 54 705 522 705 2 L 1 H 2 Z 0 X 0 0 0 1 0 0 0 K N 54 702 522 702 2 L N 0 0 0 1 0 0 0 K 0 0 612 792 C 0 0 0 1 0 0 0 K 3 14 Q 0 X 0 0 0 1 0 0 0 K (Class Ev) 54 710.67 T (entSetDescriptor) 105.59 710.67 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 4 10 Q (public) 90 671.33 T (class) 132 671.33 T (java.beans.) 168 671.33 T 7 F (EventSetDescriptor) 234 671.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 4 F ( extends) 90 659.33 T (java.beans.) 162 659.33 T 7 F (FeatureDescriptor) 228 659.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 F (An Ev) 90 635.33 T (entSetDescriptor describes a group of e) 115.68 635.33 T (v) 272.89 635.33 T (ents that a gi) 277.74 635.33 T (v) 328.32 635.33 T (en Ja) 333.17 635.33 T (v) 353.24 635.33 T (a bean \336res.) 357.99 635.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (The gi) 90 617.33 T (v) 115.58 617.33 T (en group of e) 120.43 617.33 T (v) 173.22 617.33 T (ents are all deli) 178.07 617.33 T (v) 238.64 617.33 T (ered as method calls on a single e) 243.49 617.33 T (v) 377.38 617.33 T (ent listener interf) 382.23 617.33 T (ace, and an e) 450.45 617.33 T (v) 501.84 617.33 T (ent listener) 506.69 617.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (object can be re) 90 605.33 T (gistered via a call on a re) 152.88 605.33 T (gistration method supplied by the e) 252.7 605.33 T (v) 393.28 605.33 T (ent source.) 398.13 605.33 T 0 0 0 1 0 0 0 K 54 566 558 576 C 0 0 0 1 0 0 0 K 53.67 572.5 207.83 572.5 2 L 1 H 2 Z 0 X 0 0 0 1 0 0 0 K N 0 0 0 1 0 0 0 K 0 0 612 792 C 0 0 0 1 0 0 0 K 3 12 Q 0 X 0 0 0 1 0 0 0 K (Constructors) 54 580 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 7 10 Q (\245 EventSetDescriptor) 68.4 546.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 4 F (public EventSetDescriptor\050Class) 90 531.33 T (sourceClass,) 282 531.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (String) 246 519.33 T (eventSetName,) 288 519.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (Class) 246 507.33 T (listenerType,) 282 507.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (String) 246 495.33 T (listenerMethodName\051) 288 495.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( throws IntrospectionException) 72 483.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 F -0.01 (This constructor creates an Ev) 90 461.33 P -0.01 (entSetDescriptor assuming that you are follo) 210.89 461.33 P -0.01 (wing the most simple standard design pat-) 389.18 461.33 P 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K -0.13 (tern where a named e) 90 449.33 P -0.13 (v) 174.74 449.33 P -0.13 (ent "fred" is \0501\051 deli) 179.59 449.33 P -0.13 (v) 258.62 449.33 P -0.13 (ered as a call on the single method of interf) 263.48 449.33 P -0.13 (ace FredListener) 435.21 449.33 P -0.13 (, \0502\051 has a sin-) 501.6 449.33 P 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K -0.02 (gle ar) 90 437.33 P -0.02 (gument of type FredEv) 112.29 437.33 P -0.02 (ent, and \0503\051 where the FredListener may be re) 204.59 437.33 P -0.02 (gistered with a call on an addFredListener) 387.31 437.33 P 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (method of the source component and remo) 90 425.33 T (v) 260.93 425.33 T (ed with a call on a remo) 265.78 425.33 T (v) 361.72 425.33 T (eFredListener method.) 366.57 425.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 3 F (P) 90 405.33 T (arameters:) 96.01 405.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 F (sourceClass) 126 393.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (The class \336ring the e) 147.6 381.33 T (v) 230.67 381.33 T (ent.) 235.52 381.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (e) 126 369.33 T (v) 130.19 369.33 T (entSetName) 135.04 369.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (The programmatic name of the e) 147.6 357.33 T (v) 278.15 357.33 T (ent. E.g. "fred". Note that this should normally start with a lo) 283 357.33 T (wer) 526.73 357.33 T (-) 541.52 357.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (case character) 147.6 345.33 T (.) 203.4 345.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (listenerT) 126 333.33 T (ype) 160.75 333.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (The tar) 147.6 321.33 T (get interf) 176.02 321.33 T (ace that e) 212.3 321.33 T (v) 249.81 321.33 T (ents will get deli) 254.66 321.33 T (v) 320.8 321.33 T (ered to.) 325.65 321.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (listenerMethodName) 126 309.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (The method that will get called when the e) 147.6 297.33 T (v) 317.88 297.33 T (ent gets deli) 322.73 297.33 T (v) 370.81 297.33 T (ered to its tar) 375.66 297.33 T (get listener interf) 427.97 297.33 T (ace.) 496.19 297.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 3 F (Thr) 90 277.33 T (o) 106.49 277.33 T (ws:) 111.39 277.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 F (IntrospectionException) 128.33 277.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (if an e) 126 265.33 T (xception occurs during introspection.) 150.84 265.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 7 F (\245 EventSetDescriptor) 68.4 243.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 4 F (public) 90 228.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (EventSetDescriptor\050Class) 90 216.33 T (sourceClass,) 240 216.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (String) 204 204.33 T (eventSetName,) 246 204.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (Class) 204 192.33 T (listenerType,) 240 192.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (String) 204 180.33 T (listenerMethodNames[],) 246 180.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (String) 204 168.33 T (addListenerMethodName,) 246 168.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (String) 204 156.33 T (removeListenerMethodName\051) 246 156.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( throws IntrospectionException) 72 144.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 F (This constructor creates an Ev) 90 122.33 T (entSetDescriptor from scratch using string names.) 210.93 122.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 3 F (P) 90 102.33 T (arameters:) 96.01 102.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 F (sourceClass) 126 90.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (The class \336ring the e) 147.6 78.33 T (v) 230.67 78.33 T (ent.) 235.52 78.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "63" 63 %%Page: "64" 64 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 54 746 558 756 R 7 X 0 0 0 1 0 0 0 K V 2 10 Q 0 X (JavaBeans) 54 749.33 T 54 32.67 558 42.67 R 7 X V 0 X (Sun Microsystems) 54 36 T (64) 301 36 T (7/24/97) 527.44 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 54 72 558 720 R 7 X V 0 F 0 X (e) 126 713.33 T (v) 130.19 713.33 T (entSetName) 135.04 713.33 T -0.11 (The programmatic name of the e) 147.6 701.33 P -0.11 (v) 277.61 701.33 P -0.11 (ent set. Note that this should normally start with a lo) 282.46 701.33 P -0.11 (wer) 490.86 701.33 P -0.11 (-case charac-) 505.65 701.33 P (ter) 147.6 689.33 T (.) 157.6 689.33 T (listenerT) 126 677.33 T (ype) 160.75 677.33 T (The Class of the tar) 147.6 665.33 T (get interf) 225.74 665.33 T (ace that e) 262.02 665.33 T (v) 299.53 665.33 T (ents will get deli) 304.38 665.33 T (v) 370.52 665.33 T (ered to.) 375.37 665.33 T (listenerMethodNames) 126 653.33 T (The names of the methods that will get called when the e) 147.6 641.33 T (v) 375.37 641.33 T (ent gets deli) 380.22 641.33 T (v) 428.3 641.33 T (ered to its tar) 433.15 641.33 T (get listener inter-) 485.46 641.33 T (f) 147.6 629.33 T (ace.) 150.83 629.33 T (addListenerMethodName) 126 617.33 T (The name of the method on the e) 147.6 605.33 T (v) 279.27 605.33 T (ent source that can be used to re) 284.12 605.33 T (gister an e) 411.99 605.33 T (v) 452.84 605.33 T (ent listener object.) 457.69 605.33 T (remo) 126 593.33 T (v) 146.4 593.33 T (eListenerMethodName) 151.25 593.33 T (The name of the method on the e) 147.6 581.33 T (v) 279.27 581.33 T (ent source that can be used to de-re) 284.12 581.33 T (gister an e) 424.76 581.33 T (v) 465.61 581.33 T (ent listener object.) 470.46 581.33 T 3 F (Thr) 90 561.33 T (o) 106.49 561.33 T (ws:) 111.39 561.33 T 0 F (IntrospectionException) 128.33 561.33 T (if an e) 126 549.33 T (xception occurs during introspection.) 150.84 549.33 T 7 F (\245 EventSetDescriptor) 68.4 527.33 T 4 F (public) 90 512.33 T (EventSetDescriptor\050String) 90 500.33 T (eventSetName,) 246 500.33 T (Class) 204 488.33 T (listenerType,) 240 488.33 T (Method) 204 476.33 T (listenerMethods[],) 246 476.33 T (Method) 204 464.33 T (addListenerMethod,) 246 464.33 T (Method) 204 452.33 T (removeListenerMethod\051) 246 452.33 T ( throws IntrospectionException) 72 440.33 T 0 F (This constructor creates an Ev) 90 418.33 T (entSetDescriptor from scratch using ja) 210.93 418.33 T (v) 364.59 418.33 T (a.lang.re\337ect.Method and ja) 369.34 418.33 T (v) 481.06 418.33 T (a.lang.Class) 485.81 418.33 T (objects.) 90 406.33 T 3 F (P) 90 386.33 T (arameters:) 96.01 386.33 T 0 F (e) 126 374.33 T (v) 130.19 374.33 T (entSetName) 135.04 374.33 T (The programmatic name of the e) 147.6 362.33 T (v) 278.15 362.33 T (ent set.) 283 362.33 T (listenerT) 126 350.33 T (ype) 160.75 350.33 T (The Class for the listener interf) 147.6 338.33 T (ace.) 272.2 338.33 T (listenerMethods) 126 326.33 T (An array of Method objects describing each of the e) 147.6 314.33 T (v) 355.35 314.33 T (ent handling methods in the tar) 360.2 314.33 T (get listener) 484.18 314.33 T (.) 527.79 314.33 T (addListenerMethod) 126 302.33 T (The method on the e) 147.6 290.33 T (v) 229.56 290.33 T (ent source that can be used to re) 234.41 290.33 T (gister an e) 362.28 290.33 T (v) 403.13 290.33 T (ent listener object.) 407.98 290.33 T (remo) 126 278.33 T (v) 146.4 278.33 T (eListenerMethod) 151.25 278.33 T (The method on the e) 147.6 266.33 T (v) 229.56 266.33 T (ent source that can be used to de-re) 234.41 266.33 T (gister an e) 375.05 266.33 T (v) 415.9 266.33 T (ent listener object.) 420.75 266.33 T 3 F (Thr) 90 246.33 T (o) 106.49 246.33 T (ws:) 111.39 246.33 T 0 F (IntrospectionException) 128.33 246.33 T (if an e) 126 234.33 T (xception occurs during introspection.) 150.84 234.33 T 7 F (\245 EventSetDescriptor) 68.4 212.33 T 4 F (public) 90 197.33 T (EventSetDescriptor\050String) 90 185.33 T (eventSetName,) 246 185.33 T (Class) 204 173.33 T (listenerType,) 240 173.33 T (MethodDescriptor) 204 161.33 T (listenerMethodDescriptors[],) 306 161.33 T (Method) 204 149.33 T (addListenerMethod,) 246 149.33 T (Method) 204 137.33 T (removeListenerMethod\051) 246 137.33 T ( throws IntrospectionException) 72 125.33 T 0 F (This constructor creates an Ev) 90 103.33 T (entSetDescriptor from scratch using ja) 210.93 103.33 T (v) 364.59 103.33 T (a.lang.re\337ect.MethodDescriptor and) 369.34 103.33 T (ja) 90 91.33 T (v) 97.02 91.33 T (a.lang.Class objects.) 101.77 91.33 T 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "64" 64 %%Page: "65" 65 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 54 746 558 756 R 7 X 0 0 0 1 0 0 0 K V 2 10 Q 0 X (JavaBeans) 54 749.33 T 54 32.67 558 42.67 R 7 X V 0 X (Sun Microsystems) 54 36 T (65) 301 36 T (7/24/97) 527.44 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 54 72 558 720 R 7 X V 3 F 0 X (P) 90 713.33 T (arameters:) 96.01 713.33 T 0 F (e) 126 701.33 T (v) 130.19 701.33 T (entSetName) 135.04 701.33 T (The programmatic name of the e) 147.6 689.33 T (v) 278.15 689.33 T (ent set.) 283 689.33 T (listenerT) 126 677.33 T (ype) 160.75 677.33 T (The Class for the listener interf) 147.6 665.33 T (ace.) 272.2 665.33 T (listenerMethodDescriptors) 126 653.33 T (An array of MethodDescriptor objects describing each of the e) 147.6 641.33 T (v) 397.56 641.33 T (ent handling methods in the tar) 402.41 641.33 T (get lis-) 526.39 641.33 T (tener) 147.6 629.33 T (.) 167.04 629.33 T (addListenerMethod) 126 617.33 T (The method on the e) 147.6 605.33 T (v) 229.56 605.33 T (ent source that can be used to re) 234.41 605.33 T (gister an e) 362.28 605.33 T (v) 403.13 605.33 T (ent listener object.) 407.98 605.33 T (remo) 126 593.33 T (v) 146.4 593.33 T (eListenerMethod) 151.25 593.33 T (The method on the e) 147.6 581.33 T (v) 229.56 581.33 T (ent source that can be used to de-re) 234.41 581.33 T (gister an e) 375.05 581.33 T (v) 415.9 581.33 T (ent listener object.) 420.75 581.33 T 3 F (Thr) 90 561.33 T (o) 106.49 561.33 T (ws:) 111.39 561.33 T 0 F (IntrospectionException) 128.33 561.33 T (if an e) 126 549.33 T (xception occurs during introspection.) 150.84 549.33 T 0 0 0 1 0 0 0 K 54 510 558 520 C 0 0 0 1 0 0 0 K 53.67 516.5 207.83 516.5 2 L 1 H 2 Z 0 X 0 0 0 1 0 0 0 K N 0 0 0 1 0 0 0 K 0 0 612 792 C 0 0 0 1 0 0 0 K 3 12 Q 0 X 0 0 0 1 0 0 0 K (Methods) 54 524 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 7 10 Q (\245 getAddListenerMethod) 68.4 490.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 4 F (public Method getAddListenerMethod\050\051) 90 475.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 3 F (Retur) 90 455.33 T (ns:) 114.84 455.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 F (The method used to re) 126 443.33 T (gister a listener at the e) 215.28 443.33 T (v) 307.51 443.33 T (ent source.) 312.36 443.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 7 F (\245 getListenerMethodDescriptors) 68.4 421.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 4 F (public MethodDescriptor[]) 90 406.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (getListenerMethodDescriptors\050\051) 90 394.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 3 F (Retur) 90 374.33 T (ns:) 114.84 374.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 F -0.06 (An array of MethodDescriptor objects for the tar) 126 362.33 P -0.06 (get methods within the tar) 320.05 362.33 P -0.06 (get listener interf) 424.06 362.33 P -0.06 (ace that will get) 492.15 362.33 P 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (called when e) 126 350.33 T (v) 180.73 350.33 T (ents are \336red.) 185.58 350.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 7 F (\245 getListenerMethods) 68.4 328.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 4 F (public Method[] getListenerMethods\050\051) 90 313.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 3 F (Retur) 90 293.33 T (ns:) 114.84 293.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 F (An array of Method objects for the tar) 126 281.33 T (get methods within the tar) 278.28 281.33 T (get listener interf) 382.54 281.33 T (ace that will get called) 450.76 281.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (when e) 126 269.33 T (v) 154.35 269.33 T (ents are \336red.) 159.2 269.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 7 F (\245 getListenerType) 68.4 247.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 4 F (public Class getListenerType\050\051) 90 232.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 3 F (Retur) 90 212.33 T (ns:) 114.84 212.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 F (The Class object for the tar) 126 200.33 T (get interf) 234.41 200.33 T (ace that will get in) 270.69 200.33 T (v) 344.17 200.33 T (ok) 348.97 200.33 T (ed when the e) 358.87 200.33 T (v) 413.88 200.33 T (ent is \336red.) 418.73 200.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 7 F (\245 getRemoveListenerMethod) 68.4 178.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 4 F (public Method getRemoveListenerMethod\050\051) 90 163.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 3 F (Retur) 90 143.33 T (ns:) 114.84 143.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 F (The method used to re) 126 131.33 T (gister a listener at the e) 215.28 131.33 T (v) 307.51 131.33 T (ent source.) 312.36 131.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 7 F (\245 isInDefaultEventSet) 68.4 109.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 4 F (public boolean isInDefaultEventSet\050\051) 90 94.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "65" 65 %%Page: "66" 66 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 54 746 558 756 R 7 X 0 0 0 1 0 0 0 K V 2 10 Q 0 X (JavaBeans) 54 749.33 T 54 32.67 558 42.67 R 7 X V 0 X (Sun Microsystems) 54 36 T (66) 301 36 T (7/24/97) 527.44 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 54 72 558 720 R 7 X V 0 F 0 X (Report if an e) 90 713.33 T (v) 144.46 713.33 T (ent set is in the "def) 149.31 713.33 T (ault set".) 228.56 713.33 T 3 F (Retur) 90 693.33 T (ns:) 114.84 693.33 T 0 F (T) 126 681.33 T (rue if the e) 131.76 681.33 T (v) 174.55 681.33 T (ent set is in the "def) 179.4 681.33 T (ault set". Def) 258.65 681.33 T (aults to "true".) 311.23 681.33 T 7 F (\245 isUnicast) 68.4 659.33 T 4 F (public boolean isUnicast\050\051) 90 644.33 T 0 F (Normally e) 90 622.33 T (v) 135.02 622.33 T (ent sources are multicast. Ho) 139.87 622.33 T (we) 255.43 622.33 T (v) 266.84 622.33 T (er there are some e) 271.69 622.33 T (xceptions that are strictly unicast.) 347.06 622.33 T 3 F (Retur) 90 602.33 T (ns:) 114.84 602.33 T 0 F (T) 126 590.33 T (rue if the e) 131.76 590.33 T (v) 174.55 590.33 T (ent set is unicast. Def) 179.4 590.33 T (aults to "f) 265.12 590.33 T (alse".) 304.1 590.33 T 7 F (\245 setInDefaultEventSet) 68.4 568.33 T 4 F (public void) 90 553.33 T (setInDefaultEventSet\050boolean) 90 541.33 T (inDefaultEventSet\051) 264 541.33 T 0 F (Mark an e) 90 519.33 T (v) 130.29 519.33 T (ent set as being in the "def) 135.14 519.33 T (ault" set \050or not\051. By def) 240.77 519.33 T (ault this is true.) 338.07 519.33 T 3 F (P) 90 499.33 T (arameters:) 96.01 499.33 T 0 F (unicast) 126 487.33 T (T) 147.6 475.33 T (rue if the e) 153.36 475.33 T (v) 196.15 475.33 T (ent set is unicast.) 201 475.33 T 7 F (\245 setUnicast) 68.4 453.33 T 4 F (public void setUnicast\050boolean) 90 438.33 T (unicast\051) 276 438.33 T 0 F (Mark an e) 90 416.33 T (v) 130.29 416.33 T (ent set as unicast \050or not\051.) 135.14 416.33 T 3 F (P) 90 396.33 T (arameters:) 96.01 396.33 T 0 F (unicast) 126 384.33 T (T) 147.6 372.33 T (rue if the e) 153.36 372.33 T (v) 196.15 372.33 T (ent set is unicast.) 201 372.33 T 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "66" 66 %%Page: "67" 67 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 54 746 558 756 R 7 X 0 0 0 1 0 0 0 K V 2 10 Q 0 X (JavaBeans) 54 749.33 T 54 32.67 558 42.67 R 7 X V 0 X (Sun Microsystems) 54 36 T (67) 301 36 T (7/24/97) 527.44 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 54 72 558 720 R 7 X V 0 0 0 1 0 0 0 K 54 694 558 706 C 0 0 0 1 0 0 0 K 54 705 522 705 2 L 1 H 2 Z 0 X 0 0 0 1 0 0 0 K N 54 702 522 702 2 L N 0 0 0 1 0 0 0 K 0 0 612 792 C 0 0 0 1 0 0 0 K 3 14 Q 0 X 0 0 0 1 0 0 0 K (Class F) 54 710.67 T (eatur) 97.6 710.67 T (eDescriptor) 129.22 710.67 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 4 10 Q (public) 90 671.33 T (class) 132 671.33 T (java.beans.) 168 671.33 T 7 F (FeatureDescriptor) 234 671.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 4 F ( extends) 90 659.33 T (java.lang.) 162 659.33 T 7 F (Object) 222 659.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 F (The FeatureDescriptor class is the common baseclass for PropertyDescriptor) 90 635.33 T (, Ev) 396.2 635.33 T (entSetDescriptor) 412.16 635.33 T (, and MethodDe-) 478.97 635.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (scriptor) 90 623.33 T (, etc.) 120.15 623.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (It supports some common information that can be set and retrie) 90 605.33 T (v) 343.05 605.33 T (ed for an) 347.9 605.33 T (y of the introspection descriptors.) 383.29 605.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (In addition it pro) 90 587.33 T (vides an e) 157.35 587.33 T (xtension mechanism so that arbitrary attrib) 197.19 587.33 T (ute/v) 368.36 587.33 T (alue pairs can be associated with a design) 388.11 587.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (feature.) 90 575.33 T 0 0 0 1 0 0 0 K 54 536 558 546 C 0 0 0 1 0 0 0 K 53.67 542.5 207.83 542.5 2 L 1 H 2 Z 0 X 0 0 0 1 0 0 0 K N 0 0 0 1 0 0 0 K 0 0 612 792 C 0 0 0 1 0 0 0 K 3 12 Q 0 X 0 0 0 1 0 0 0 K (Constructors) 54 550 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 7 10 Q (\245 FeatureDescriptor) 68.4 516.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 4 F (public FeatureDescriptor\050\051) 90 501.33 T 0 0 0 1 0 0 0 K 54 462 558 472 C 0 0 0 1 0 0 0 K 53.67 468.5 207.83 468.5 2 L 1 H 2 Z 0 X 0 0 0 1 0 0 0 K N 0 0 0 1 0 0 0 K 0 0 612 792 C 0 0 0 1 0 0 0 K 3 12 Q 0 X 0 0 0 1 0 0 0 K (Methods) 54 476 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 7 10 Q (\245 attributeNames) 68.4 442.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 4 F (public Enumeration attributeNames\050\051) 90 427.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 3 F (Retur) 90 407.33 T (ns:) 114.84 407.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 F (An enumeration of the locale-independent names of an) 126 395.33 T (y attrib) 345.52 395.33 T (utes that ha) 373.93 395.33 T (v) 419.28 395.33 T (e been re) 424.13 395.33 T (gistered with setV) 460.07 395.33 T (alue.) 531.73 395.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 7 F (\245 getDisplayName) 68.4 373.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 4 F (public String getDisplayName\050\051) 90 358.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 3 F (Retur) 90 338.33 T (ns:) 114.84 338.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 F (The localized display name for the property/method/e) 126 326.33 T (v) 340.71 326.33 T (ent. This def) 345.56 326.33 T (aults to the same as its programmatic) 395.73 326.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (name from getName.) 126 314.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 7 F (\245 getName) 68.4 292.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 4 F (public String getName\050\051) 90 277.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 3 F (Retur) 90 257.33 T (ns:) 114.84 257.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 F (The programmatic name of the property/method/e) 126 245.33 T (v) 325.99 245.33 T (ent) 330.84 245.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 7 F (\245 getShortDescription) 68.4 223.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 4 F (public String getShortDescription\050\051) 90 208.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 3 F (Retur) 90 188.33 T (ns:) 114.84 188.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 F (A localized short description associated with this property/method/e) 126 176.33 T (v) 398.22 176.33 T (ent. This def) 403.07 176.33 T (aults to be the display) 453.24 176.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (name.) 126 164.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 7 F (\245 getValue) 68.4 142.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 4 F (public Object getValue\050String) 90 127.33 T (attributeName\051) 270 127.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 F (Retrie) 90 105.33 T (v) 114.19 105.33 T (e a named attrib) 119.04 105.33 T (ute with this feature.) 182.99 105.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 3 F (P) 90 85.33 T (arameters:) 96.01 85.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "67" 67 %%Page: "68" 68 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 54 746 558 756 R 7 X 0 0 0 1 0 0 0 K V 2 10 Q 0 X (JavaBeans) 54 749.33 T 54 32.67 558 42.67 R 7 X V 0 X (Sun Microsystems) 54 36 T (68) 301 36 T (7/24/97) 527.44 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 54 72 558 720 R 7 X V 0 F 0 X (attrib) 126 713.33 T (uteName) 146.91 713.33 T (The locale-independent name of the attrib) 147.6 701.33 T (ute) 314.86 701.33 T 3 F (Retur) 90 681.33 T (ns:) 114.84 681.33 T 0 F (The v) 126 669.33 T (alue of the attrib) 148.8 669.33 T (ute. May be null if the attrib) 214.42 669.33 T (ute is unkno) 326.71 669.33 T (wn.) 375.35 669.33 T 7 F (\245 isExpert) 68.4 647.33 T 4 F (public boolean isExpert\050\051) 90 632.33 T 0 F (The "e) 90 610.33 T (xpert" \337ag is used to distinguish between those features that are intended for e) 116.42 610.33 T (xpert users from those that are) 428.91 610.33 T (intended for normal users.) 90 598.33 T 3 F (Retur) 90 578.33 T (ns:) 114.84 578.33 T 0 F (T) 126 566.33 T (rue if this feature is intended for use by e) 131.76 566.33 T (xperts only) 295.74 566.33 T (.) 339.81 566.33 T 7 F (\245 isHidden) 68.4 544.33 T 4 F (public boolean isHidden\050\051) 90 529.33 T 0 F (The "hidden" \337ag is used to identify features that are intended only for tool use, and which should not be e) 90 507.33 T (xposed to) 516.01 507.33 T (humans.) 90 495.33 T 3 F (Retur) 90 475.33 T (ns:) 114.84 475.33 T 0 F (T) 126 463.33 T (rue if this feature should be hidden from human users.) 131.76 463.33 T 7 F (\245 setDisplayName) 68.4 441.33 T 4 F (public void setDisplayName\050String) 90 426.33 T (displayName\051) 294 426.33 T 3 F (P) 90 406.33 T (arameters:) 96.01 406.33 T 0 F (displayName) 126 394.33 T (The localized display name for the property/method/e) 147.6 382.33 T (v) 362.31 382.33 T (ent.) 367.16 382.33 T 7 F (\245 setExpert) 68.4 360.33 T 4 F (public void setExpert\050boolean) 90 345.33 T (expert\051) 270 345.33 T 0 F (The "e) 90 323.33 T (xpert" \337ag is used to distinguish between features that are intended for e) 116.42 323.33 T (xpert users from those that are) 405.3 323.33 T (intended for normal users.) 90 311.33 T 3 F (P) 90 291.33 T (arameters:) 96.01 291.33 T 0 F (e) 126 279.33 T (xpert) 130.29 279.33 T (T) 147.6 267.33 T (rue if this feature is intended for use by e) 153.36 267.33 T (xperts only) 317.34 267.33 T (.) 361.41 267.33 T 7 F (\245 setHidden) 68.4 245.33 T 4 F (public void setHidden\050boolean) 90 230.33 T (hidden\051) 270 230.33 T 0 F (The "hidden" \337ag is used to identify features that are intended only for tool use, and which should not be e) 90 208.33 T (xposed to) 516.01 208.33 T (humans.) 90 196.33 T 3 F (P) 90 176.33 T (arameters:) 96.01 176.33 T 0 F (hidden) 126 164.33 T (T) 147.6 152.33 T (rue if this feature should be hidden from human users.) 153.36 152.33 T 7 F (\245 setName) 68.4 130.33 T 4 F (public void setName\050String) 90 115.33 T (name\051) 252 115.33 T 3 F (P) 90 95.33 T (arameters:) 96.01 95.33 T 0 F (name) 126 83.33 T 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "68" 68 %%Page: "69" 69 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 54 746 558 756 R 7 X 0 0 0 1 0 0 0 K V 2 10 Q 0 X (JavaBeans) 54 749.33 T 54 32.67 558 42.67 R 7 X V 0 X (Sun Microsystems) 54 36 T (69) 301 36 T (7/24/97) 527.44 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 54 72 558 720 R 7 X V 0 F 0 X (The programmatic name of the property/method/e) 147.6 713.33 T (v) 347.59 713.33 T (ent) 352.44 713.33 T 7 F (\245 setShortDescription) 68.4 691.33 T 4 F (public void setShortDescription\050String) 90 676.33 T (text\051) 324 676.33 T 0 F (Y) 90 654.33 T (ou can associate a short descripti) 96.12 654.33 T (v) 227.23 654.33 T (e string with a feature. Normally these descripti) 232.08 654.33 T (v) 422.35 654.33 T (e strings should be less than) 427.2 654.33 T (about 40 characters.) 90 642.33 T 3 F (P) 90 622.33 T (arameters:) 96.01 622.33 T 0 F (te) 126 610.33 T (xt) 133.07 610.33 T (A \050localized\051 short description to be associated with this property/method/e) 147.6 598.33 T (v) 448.7 598.33 T (ent.) 453.55 598.33 T 7 F (\245 setValue) 68.4 576.33 T 4 F (public void) 90 561.33 T (setValue\050String) 90 549.33 T (attributeName, Object) 186 549.33 T (value\051) 318 549.33 T 0 F (Associate a named attrib) 90 527.33 T (ute with this feature.) 188.39 527.33 T 3 F (P) 90 507.33 T (arameters:) 96.01 507.33 T 0 F (attrib) 126 495.33 T (uteName) 146.91 495.33 T (The locale-independent name of the attrib) 147.6 483.33 T (ute) 314.86 483.33 T (v) 126 471.33 T (alue) 130.75 471.33 T (The v) 147.6 459.33 T (alue.) 170.4 459.33 T 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "69" 69 %%Page: "70" 70 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 54 746 558 756 R 7 X 0 0 0 1 0 0 0 K V 2 10 Q 0 X (JavaBeans) 54 749.33 T 54 32.67 558 42.67 R 7 X V 0 X (Sun Microsystems) 54 36 T (70) 301 36 T (7/24/97) 527.44 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 54 72 558 720 R 7 X V 0 0 0 1 0 0 0 K 54 694 558 706 C 0 0 0 1 0 0 0 K 54 705 522 705 2 L 1 H 2 Z 0 X 0 0 0 1 0 0 0 K N 54 702 522 702 2 L N 0 0 0 1 0 0 0 K 0 0 612 792 C 0 0 0 1 0 0 0 K 3 14 Q 0 X 0 0 0 1 0 0 0 K (Class IndexedPr) 54 710.67 T (opertyDescriptor) 152.14 710.67 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 4 10 Q (public) 90 671.33 T (class) 132 671.33 T (java.beans.) 168 671.33 T 7 F (IndexedPropertyDescriptor) 234 671.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 4 F ( extends) 90 659.33 T (java.beans.) 162 659.33 T 7 F (PropertyDescriptor) 228 659.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 F (An Inde) 90 635.33 T (x) 122.34 635.33 T (edPropertyDescriptor describes a property that acts lik) 127.19 635.33 T (e an array and has an inde) 344.82 635.33 T (x) 448.52 635.33 T (ed read and/or inde) 453.37 635.33 T (x) 530.14 635.33 T (ed) 534.99 635.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (write method to access speci\336c elements of the array) 90 623.33 T (.) 300.41 623.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K -0.27 (An inde) 90 605.33 P -0.27 (x) 121.52 605.33 P -0.27 (ed property may also pro) 126.37 605.33 P -0.27 (vide simple non-inde) 225.11 605.33 P -0.27 (x) 308.86 605.33 P -0.27 (ed read and write methods. If these are present, the) 313.71 605.33 P -0.27 (y read and) 514.66 605.33 P 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (write arrays of the type returned by the inde) 90 593.33 T (x) 265.36 593.33 T (ed read method.) 270.21 593.33 T 0 0 0 1 0 0 0 K 54 554 558 564 C 0 0 0 1 0 0 0 K 53.67 560.5 207.83 560.5 2 L 1 H 2 Z 0 X 0 0 0 1 0 0 0 K N 0 0 0 1 0 0 0 K 0 0 612 792 C 0 0 0 1 0 0 0 K 3 12 Q 0 X 0 0 0 1 0 0 0 K (Constructors) 54 568 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 7 10 Q (\245 IndexedPropertyDescriptor) 68.4 534.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 4 F (public) 90 519.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (IndexedPropertyDescriptor\050String) 90 507.33 T (propertyName,) 288 507.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (Class) 246 495.33 T (beanClass\051) 282 495.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( throws IntrospectionException) 72 483.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 F (This constructor constructs an Inde) 90 461.33 T (x) 230.38 461.33 T (edPropertyDescriptor for a property that follo) 235.23 461.33 T (ws the standard Ja) 417.44 461.33 T (v) 490.28 461.33 T (a con) 495.03 461.33 T (v) 516.01 461.33 T (entions) 520.86 461.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (by ha) 90 449.33 T (ving getF) 111.74 449.33 T (oo and setF) 149.65 449.33 T (oo accessor methods, for both inde) 195.61 449.33 T (x) 334.88 449.33 T (ed access and array access.) 339.73 449.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (Thus if the ar) 90 431.33 T (gument name is "fred", it will assume that there is an inde) 143.42 431.33 T (x) 374.74 431.33 T (ed reader method "getFred", a non-inde) 379.59 431.33 T (x) 537.56 431.33 T (ed) 542.41 431.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (\050array\051 reader method also called "getFred", an inde) 90 419.33 T (x) 297.39 419.33 T (ed writer method "setFred", and \336nally a non-inde) 302.24 419.33 T (x) 503 419.33 T (ed writer) 507.85 419.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (method "setFred".) 90 407.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 3 F (P) 90 387.33 T (arameters:) 96.01 387.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 F (propertyName) 126 375.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (The programmatic name of the property) 147.6 363.33 T (.) 307.19 363.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (beanClass) 126 351.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (The Class object for the tar) 147.6 339.33 T (get bean.) 256.01 339.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 3 F (Thr) 90 319.33 T (o) 106.49 319.33 T (ws:) 111.39 319.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 F (IntrospectionException) 128.33 319.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (if an e) 126 307.33 T (xception occurs during introspection.) 150.84 307.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 7 F (\245 IndexedPropertyDescriptor) 68.4 285.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 4 F (public) 90 270.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (IndexedPropertyDescriptor\050String) 90 258.33 T (propertyName,) 288 258.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (Class) 246 246.33 T (beanClass,) 282 246.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (String) 246 234.33 T (getterName,) 288 234.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (String) 246 222.33 T (setterName,) 288 222.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (String) 246 210.33 T (indexedGetterName,) 288 210.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (String) 246 198.33 T (indexedSetterName\051) 288 198.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( throws IntrospectionException) 72 186.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 F (This constructor tak) 90 164.33 T (es the name of a simple property) 169.89 164.33 T (, and method names for reading and writing the property) 299.77 164.33 T (, both) 525.19 164.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (inde) 90 152.33 T (x) 107.07 152.33 T (ed and non-inde) 111.92 152.33 T (x) 176.2 152.33 T (ed.) 181.05 152.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 3 F (P) 90 132.33 T (arameters:) 96.01 132.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 F (propertyName) 126 120.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (The programmatic name of the property) 147.6 108.33 T (.) 307.19 108.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (beanClass) 126 96.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (The Class object for the tar) 147.6 84.33 T (get bean.) 256.01 84.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "70" 70 %%Page: "71" 71 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 54 746 558 756 R 7 X 0 0 0 1 0 0 0 K V 2 10 Q 0 X (JavaBeans) 54 749.33 T 54 32.67 558 42.67 R 7 X V 0 X (Sun Microsystems) 54 36 T (71) 301 36 T (7/24/97) 527.44 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 54 72 558 720 R 7 X V 0 F 0 X (getterName) 126 713.33 T -0.17 (The name of the method used for reading the property v) 147.6 701.33 P -0.17 (alues as an array) 369.47 701.33 P -0.17 (. May be null if the property is) 434.67 701.33 P (write-only or must be inde) 147.6 689.33 T (x) 253.55 689.33 T (ed.) 258.4 689.33 T (setterName) 126 677.33 T -0.12 (The name of the method used for writing the property v) 147.6 665.33 P -0.12 (alues as an array) 368.89 665.33 P -0.12 (. May be null if the property is) 434.25 665.33 P (read-only or must be inde) 147.6 653.33 T (x) 250.21 653.33 T (ed.) 255.06 653.33 T (inde) 126 641.33 T (x) 143.07 641.33 T (edGetterName) 147.92 641.33 T (The name of the method used for reading an inde) 147.6 629.33 T (x) 344.35 629.33 T (ed property v) 349.2 629.33 T (alue. May be null if the property is) 402.27 629.33 T (write-only) 147.6 617.33 T (.) 188.61 617.33 T (inde) 126 605.33 T (x) 143.07 605.33 T (edSetterName) 147.92 605.33 T (The name of the method used for writing an inde) 147.6 593.33 T (x) 343.25 593.33 T (ed property v) 348.1 593.33 T (alue. May be null if the property is) 401.17 593.33 T (read-only) 147.6 581.33 T (.) 185.27 581.33 T 3 F (Thr) 90 561.33 T (o) 106.49 561.33 T (ws:) 111.39 561.33 T 0 F (IntrospectionException) 128.33 561.33 T (if an e) 126 549.33 T (xception occurs during introspection.) 150.84 549.33 T 7 F (\245 IndexedPropertyDescriptor) 68.4 527.33 T 4 F (public) 90 512.33 T (IndexedPropertyDescriptor\050String) 90 500.33 T (propertyName,) 288 500.33 T (Method) 246 488.33 T (getter,) 288 488.33 T (Method) 246 476.33 T (setter,) 288 476.33 T (Method) 246 464.33 T (indexedGetter,) 288 464.33 T (Method) 246 452.33 T (indexedSetter\051) 288 452.33 T ( throws IntrospectionException) 72 440.33 T 0 F (This constructor tak) 90 418.33 T (es the name of a simple property) 169.89 418.33 T (, and Method objects for reading and writing the property) 299.77 418.33 T (.) 529.08 418.33 T 3 F (P) 90 398.33 T (arameters:) 96.01 398.33 T 0 F (propertyName) 126 386.33 T (The programmatic name of the property) 147.6 374.33 T (.) 307.19 374.33 T (getter) 126 362.33 T (The method used for reading the property v) 147.6 350.33 T (alues as an array) 321.48 350.33 T (. May be null if the property is write-only) 387.19 350.33 T (or must be inde) 147.6 338.33 T (x) 209.39 338.33 T (ed.) 214.24 338.33 T (setter) 126 326.33 T -0.22 (The method used for writing the property v) 147.6 314.33 P -0.22 (alues as an array) 318.82 314.33 P -0.22 (. May be null if the property is read-only or) 383.86 314.33 P (must be inde) 147.6 302.33 T (x) 198.56 302.33 T (ed.) 203.41 302.33 T (inde) 126 290.33 T (x) 143.07 290.33 T (edGetter) 147.92 290.33 T (The method used for reading an inde) 147.6 278.33 T (x) 294.64 278.33 T (ed property v) 299.49 278.33 T (alue. May be null if the property is write-only) 352.56 278.33 T (.) 534.94 278.33 T (inde) 126 266.33 T (x) 143.07 266.33 T (edSetter) 147.92 266.33 T (The method used for writing an inde) 147.6 254.33 T (x) 293.54 254.33 T (ed property v) 298.39 254.33 T (alue. May be null if the property is read-only) 351.46 254.33 T (.) 530.5 254.33 T 3 F (Thr) 90 234.33 T (o) 106.49 234.33 T (ws:) 111.39 234.33 T 0 F (IntrospectionException) 128.33 234.33 T (if an e) 126 222.33 T (xception occurs during introspection.) 150.84 222.33 T 0 0 0 1 0 0 0 K 54 183 558 193 C 0 0 0 1 0 0 0 K 53.67 189.5 207.83 189.5 2 L 1 H 2 Z 0 X 0 0 0 1 0 0 0 K N 0 0 0 1 0 0 0 K 0 0 612 792 C 0 0 0 1 0 0 0 K 3 12 Q 0 X 0 0 0 1 0 0 0 K (Methods) 54 197 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 7 10 Q (\245 getIndexedPropertyType) 68.4 163.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 4 F (public Class getIndexedPropertyType\050\051) 90 148.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 3 F (Retur) 90 128.33 T (ns:) 114.84 128.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 F (The Ja) 126 116.33 T (v) 152.18 116.33 T (a Class for the inde) 156.93 116.33 T (x) 233.99 116.33 T (ed properties type. Note that the Class may describe a primiti) 238.84 116.33 T (v) 483.28 116.33 T (e Ja) 488.13 116.33 T (v) 503.2 116.33 T (a type such) 507.95 116.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (as "int".) 126 104.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (This is the type that will be returned by the inde) 126 86.33 T (x) 317.5 86.33 T (edReadMethod.) 322.35 86.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "71" 71 %%Page: "72" 72 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 54 746 558 756 R 7 X 0 0 0 1 0 0 0 K V 2 10 Q 0 X (JavaBeans) 54 749.33 T 54 32.67 558 42.67 R 7 X V 0 X (Sun Microsystems) 54 36 T (72) 301 36 T (7/24/97) 527.44 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 54 72 558 720 R 7 X V 7 F 0 X (\245 getIndexedReadMethod) 68.4 713.33 T 4 F (public Method getIndexedReadMethod\050\051) 90 698.33 T 3 F (Retur) 90 678.33 T (ns:) 114.84 678.33 T 0 F (The method that should be used to read an inde) 126 666.33 T (x) 314.99 666.33 T (ed property v) 319.84 666.33 T (alue. May return null if the property isn't) 372.91 666.33 T (inde) 126 654.33 T (x) 143.07 654.33 T (ed or is write-only) 147.92 654.33 T (.) 220.87 654.33 T 7 F (\245 getIndexedWriteMethod) 68.4 632.33 T 4 F (public Method getIndexedWriteMethod\050\051) 90 617.33 T 3 F (Retur) 90 597.33 T (ns:) 114.84 597.33 T 0 F (The method that should be used to write an inde) 126 585.33 T (x) 318.33 585.33 T (ed property v) 323.18 585.33 T (alue. May return null if the property isn't) 376.25 585.33 T (inde) 126 573.33 T (x) 143.07 573.33 T (ed or is read-only) 147.92 573.33 T (.) 217.53 573.33 T 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "72" 72 %%Page: "73" 73 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 54 746 558 756 R 7 X 0 0 0 1 0 0 0 K V 2 10 Q 0 X (JavaBeans) 54 749.33 T 54 32.67 558 42.67 R 7 X V 0 X (Sun Microsystems) 54 36 T (73) 301 36 T (7/24/97) 527.44 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 54 72 558 720 R 7 X V 0 0 0 1 0 0 0 K 54 694 558 706 C 0 0 0 1 0 0 0 K 54 705 522 705 2 L 1 H 2 Z 0 X 0 0 0 1 0 0 0 K N 54 702 522 702 2 L N 0 0 0 1 0 0 0 K 0 0 612 792 C 0 0 0 1 0 0 0 K 3 14 Q 0 X 0 0 0 1 0 0 0 K (Class Intr) 54 710.67 T (ospectionException) 113.25 710.67 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 4 10 Q (public) 90 671.33 T (class) 132 671.33 T (java.beans.) 168 671.33 T 7 F (IntrospectionException) 234 671.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 4 F ( extends) 90 659.33 T (java.lang.) 162 659.33 T 7 F (Exception) 222 659.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 F (Thro) 90 635.33 T (wn when an e) 109.19 635.33 T (xception happens during Introspection.) 164.3 635.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (T) 90 617.33 T (ypical causes include not being able to map a string class name to a Class object, not being able to resolv) 95.31 617.33 T (e a string) 514.83 617.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (method name, or specifying a method name that has the wrong type signature for its intended use.) 90 605.33 T 0 0 0 1 0 0 0 K 54 566 558 576 C 0 0 0 1 0 0 0 K 53.67 572.5 207.83 572.5 2 L 1 H 2 Z 0 X 0 0 0 1 0 0 0 K N 0 0 0 1 0 0 0 K 0 0 612 792 C 0 0 0 1 0 0 0 K 3 12 Q 0 X 0 0 0 1 0 0 0 K (Constructors) 54 580 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 7 10 Q (\245 IntrospectionException) 68.4 546.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 4 F (public IntrospectionException\050String) 90 531.33 T (mess\051) 312 531.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 3 F (P) 90 511.33 T (arameters:) 96.01 511.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 F (mess) 126 499.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (Descripti) 147.6 487.33 T (v) 184.01 487.33 T (e message) 188.86 487.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "73" 73 %%Page: "74" 74 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 54 746 558 756 R 7 X 0 0 0 1 0 0 0 K V 2 10 Q 0 X (JavaBeans) 54 749.33 T 54 32.67 558 42.67 R 7 X V 0 X (Sun Microsystems) 54 36 T (74) 301 36 T (7/24/97) 527.44 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 54 72 558 720 R 7 X V 0 0 0 1 0 0 0 K 54 694 558 706 C 0 0 0 1 0 0 0 K 54 705 522 705 2 L 1 H 2 Z 0 X 0 0 0 1 0 0 0 K N 54 702 522 702 2 L N 0 0 0 1 0 0 0 K 0 0 612 792 C 0 0 0 1 0 0 0 K 3 14 Q 0 X 0 0 0 1 0 0 0 K (Class Intr) 54 710.67 T (ospector) 113.25 710.67 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 4 10 Q (public) 90 671.33 T (class) 132 671.33 T (java.beans.) 168 671.33 T 7 F (Introspector) 234 671.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 4 F ( extends) 90 659.33 T (java.lang.) 162 659.33 T 7 F (Object) 222 659.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 F -0.04 (The Introspector class pro) 90 635.33 P -0.04 (vides a standard w) 193.87 635.33 P -0.04 (ay for tools to learn about the properties, e) 267.8 635.33 P -0.04 (v) 436.93 635.33 P -0.04 (ents, and methods supported) 441.78 635.33 P 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (by a tar) 90 623.33 T (get Ja) 119.81 623.33 T (v) 142.66 623.33 T (a Bean.) 147.41 623.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K -0.31 (F) 90 605.33 P -0.31 (or each of those three kinds of information, the Introspector will separately analyze the bean's class and superclasses) 95.41 605.33 P 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K -0.18 (looking for either e) 90 593.33 P -0.18 (xplicit or implicit information and use that information to b) 166.25 593.33 P -0.18 (uild a BeanInfo object that comprehen-) 401.97 593.33 P 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (si) 90 581.33 T (v) 96.42 581.33 T (ely describes the tar) 101.27 581.33 T (get bean.) 180.79 581.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (F) 90 563.33 T (or each class "F) 95.41 563.33 T (oo", e) 158.49 563.33 T (xplicit information may be a) 181.86 563.33 T (v) 295.54 563.33 T (ailable if there e) 300.29 563.33 T (xists a corresponding "F) 364.84 563.33 T (ooBeanInfo" class that) 461.82 563.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (pro) 90 551.33 T (vides a non-null v) 103.18 551.33 T (alue when queried for the information. W) 174.87 551.33 T (e \336rst look for the BeanInfo class by taking the full) 340.42 551.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (package-quali\336ed name of the tar) 90 539.33 T (get bean class and appending "BeanInfo" to form a ne) 223.67 539.33 T (w class name. If this f) 439.03 539.33 T (ails,) 526.69 539.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (then we tak) 90 527.33 T (e the \336nal classname component of this name, and look for that class in each of the packages speci\336ed in) 136 527.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (the BeanInfo package search path.) 90 515.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (Thus for a class such as "sun.xyz.OurButton" we w) 90 497.33 T (ould \336rst look for a BeanInfo class called "sun.xyz.OurButton-) 295.25 497.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (BeanInfo" and if that f) 90 485.33 T (ailed we'd look in each package in the BeanInfo search path for an OurButtonBeanInfo class.) 180.07 485.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (W) 90 473.33 T (ith the def) 99.04 473.33 T (ault search path, this w) 139.49 473.33 T (ould mean looking for "sun.beans.infos.OurButtonBeanInfo".) 231.32 473.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (If a class pro) 90 455.33 T (vides e) 141.22 455.33 T (xplicit BeanInfo about itself then we add that to the BeanInfo information we obtained from ana-) 169.12 455.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K -0.06 (lyzing an) 90 443.33 P -0.06 (y deri) 126.73 443.33 P -0.06 (v) 149.46 443.33 P -0.06 (ed classes, b) 154.32 443.33 P -0.06 (ut we re) 203.7 443.33 P -0.06 (g) 235.63 443.33 P -0.06 (ard the e) 240.59 443.33 P -0.06 (xplicit information as being de\336niti) 274.74 443.33 P -0.06 (v) 415.91 443.33 P -0.06 (e for the current class and its base) 420.76 443.33 P 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (classes, and do not proceed an) 90 431.33 T (y further up the superclass chain.) 210.93 431.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (If we don't \336nd e) 90 413.33 T (xplicit BeanInfo on a class, we use lo) 157.75 413.33 T (w-le) 306.92 413.33 T (v) 324.44 413.33 T (el re\337ection to study the methods of the class and apply) 329.29 413.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K -0.17 (standard design patterns to identify property accessors, e) 90 401.33 P -0.17 (v) 315.17 401.33 P -0.17 (ent sources, or public methods. W) 320.02 401.33 P -0.17 (e then proceed to analyze) 454.73 401.33 P 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (the class's superclass and add in the information from it \050and possibly on up the superclass chain\051.) 90 389.33 T 0 0 0 1 0 0 0 K 54 350 558 360 C 0 0 0 1 0 0 0 K 53.67 356.5 207.83 356.5 2 L 1 H 2 Z 0 X 0 0 0 1 0 0 0 K N 0 0 0 1 0 0 0 K 0 0 612 792 C 0 0 0 1 0 0 0 K 3 12 Q 0 X 0 0 0 1 0 0 0 K (Methods) 54 364 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 7 10 Q (\245 decapitalize) 68.4 330.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 4 F (public static String decapitalize\050String) 90 315.33 T (name\051) 336 315.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 F (Utility method to tak) 90 293.33 T (e a string and con) 173.52 293.33 T (v) 243.66 293.33 T (ert it to normal Ja) 248.51 293.33 T (v) 318.86 293.33 T (a v) 323.61 293.33 T (ariable name capitalization. This normally means con-) 335.3 293.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K -0.22 (v) 90 281.33 P -0.22 (erting the \336rst character from upper case to lo) 94.85 281.33 P -0.22 (wer case, b) 275.55 281.33 P -0.22 (ut in the \050unusual\051 special case when there is more than one) 319.61 281.33 P 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (character and both the \336rst and second characters are upper case, we lea) 90 269.33 T (v) 377.19 269.33 T (e it alone.) 382.04 269.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (Thus "F) 90 251.33 T (ooBah" becomes "fooBah" and "X" becomes "x", b) 121.99 251.33 T (ut "URL" stays as "URL".) 327.54 251.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 3 F (P) 90 231.33 T (arameters:) 96.01 231.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 F (name) 126 219.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (The string to be decapitalized.) 147.6 207.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 3 F (Retur) 90 187.33 T (ns:) 114.84 187.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 F (The decapitalized v) 126 175.33 T (ersion of the string.) 204.16 175.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 7 F (\245 getBeanInfo) 68.4 153.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 4 F (public static BeanInfo getBeanInfo\050Class) 90 138.33 T (beanClass\051) 336 138.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( throws IntrospectionException) 72 126.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 F (Introspect on a Ja) 90 104.33 T (v) 160.06 104.33 T (a bean and learn about all its properties, e) 164.81 104.33 T (xposed methods, and e) 331.01 104.33 T (v) 421.86 104.33 T (ents.) 426.71 104.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 3 F (P) 90 84.33 T (arameters:) 96.01 84.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "74" 74 %%Page: "75" 75 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 54 746 558 756 R 7 X 0 0 0 1 0 0 0 K V 2 10 Q 0 X (JavaBeans) 54 749.33 T 54 32.67 558 42.67 R 7 X V 0 X (Sun Microsystems) 54 36 T (75) 301 36 T (7/24/97) 527.44 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 54 72 558 720 R 7 X V 0 F 0 X (beanClass) 126 713.33 T (The bean class to be analyzed.) 147.6 701.33 T 3 F (Retur) 90 681.33 T (ns:) 114.84 681.33 T 0 F (A BeanInfo object describing the tar) 126 669.33 T (get bean.) 271.62 669.33 T 3 F (Thr) 90 649.33 T (o) 106.49 649.33 T (ws:) 111.39 649.33 T 0 F (IntrospectionException) 128.33 649.33 T (if an e) 126 637.33 T (xception occurs during introspection.) 150.84 637.33 T 7 F (\245 getBeanInfo) 68.4 615.33 T 4 F (public static BeanInfo) 90 600.33 T (getBeanInfo\050Class) 90 588.33 T (beanClass, Class) 198 588.33 T (stopClass\051) 300 588.33 T ( throws IntrospectionException) 72 576.33 T 0 F (Introspect on a Ja) 90 554.33 T (v) 160.06 554.33 T (a bean and learn all about its properties, e) 164.81 554.33 T (xposed methods, belo) 331.01 554.33 T (w a gi) 417.7 554.33 T (v) 441.89 554.33 T (en "stop" point.) 446.74 554.33 T 3 F (P) 90 534.33 T (arameters:) 96.01 534.33 T 0 F (bean) 126 522.33 T (The bean class to be analyzed.) 147.6 510.33 T (stopClass) 126 498.33 T (The baseclass at which to stop the analysis. An) 147.6 486.33 T (y methods/properties/e) 335.48 486.33 T (v) 426.61 486.33 T (ents in the stopClass or in its) 431.46 486.33 T (baseclasses will be ignored in the analysis.) 147.6 474.33 T 3 F (Thr) 90 454.33 T (o) 106.49 454.33 T (ws:) 111.39 454.33 T 0 F (IntrospectionException) 128.33 454.33 T (if an e) 126 442.33 T (xception occurs during introspection.) 150.84 442.33 T 7 F (\245 getBeanInfoSearchPath) 68.4 420.33 T 4 F (public static String[] getBeanInfoSearchPath\050\051) 90 405.33 T 3 F (Retur) 90 385.33 T (ns:) 114.84 385.33 T 0 F (The array of package names that will be searched in order to \336nd BeanInfo classes.) 126 373.33 T 7 F (\245 setBeanInfoSearchPath) 68.4 333.33 T 4 F (public static void) 90 318.33 T (setBeanInfoSearchPath\050String) 90 306.33 T (path[]\051) 264 306.33 T 0 F (Change the list of package names that will be used for \336nding BeanInfo classes.) 90 284.33 T 3 F (P) 90 264.33 T (arameters:) 96.01 264.33 T 0 F (path) 126 252.33 T (Array of package names.) 147.6 240.33 T 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "75" 75 %%Page: "76" 76 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 54 746 558 756 R 7 X 0 0 0 1 0 0 0 K V 2 10 Q 0 X (JavaBeans) 54 749.33 T 54 32.67 558 42.67 R 7 X V 0 X (Sun Microsystems) 54 36 T (76) 301 36 T (7/24/97) 527.44 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 54 72 558 720 R 7 X V 0 0 0 1 0 0 0 K 54 694 558 706 C 0 0 0 1 0 0 0 K 54 705 522 705 2 L 1 H 2 Z 0 X 0 0 0 1 0 0 0 K N 54 702 522 702 2 L N 0 0 0 1 0 0 0 K 0 0 612 792 C 0 0 0 1 0 0 0 K 3 14 Q 0 X 0 0 0 1 0 0 0 K (Class MethodDescriptor) 54 710.67 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 4 10 Q (public) 90 671.33 T (class) 132 671.33 T (java.beans.) 168 671.33 T 7 F (MethodDescriptor) 234 671.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 4 F ( extends) 90 659.33 T (java.beans.) 162 659.33 T 7 F (FeatureDescriptor) 228 659.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 F (A MethodDescriptor describes a particular method that a Ja) 90 635.33 T (v) 328.08 635.33 T (a Bean supports for e) 332.83 635.33 T (xternal access from other compo-) 417.66 635.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (nents.) 90 623.33 T 0 0 0 1 0 0 0 K 54 584 558 594 C 0 0 0 1 0 0 0 K 53.67 590.5 207.83 590.5 2 L 1 H 2 Z 0 X 0 0 0 1 0 0 0 K N 0 0 0 1 0 0 0 K 0 0 612 792 C 0 0 0 1 0 0 0 K 3 12 Q 0 X 0 0 0 1 0 0 0 K (Constructors) 54 598 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 7 10 Q (\245 MethodDescriptor) 68.4 564.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 4 F (public MethodDescriptor\050Method) 90 549.33 T (method\051) 276 549.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 3 F (P) 90 529.33 T (arameters:) 96.01 529.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 F (method) 126 517.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (The lo) 147.6 505.33 T (w-le) 173.18 505.33 T (v) 190.7 505.33 T (el method information.) 195.55 505.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 7 F (\245 MethodDescriptor) 68.4 483.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 4 F (public) 90 468.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (MethodDescriptor\050Method) 90 456.33 T (method,) 234 456.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (ParameterDescriptor) 192 444.33 T (parameterDescriptors[]\051) 312 444.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 3 F (P) 90 424.33 T (arameters:) 96.01 424.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 F (method) 126 412.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (The lo) 147.6 400.33 T (w-le) 173.18 400.33 T (v) 190.7 400.33 T (el method information.) 195.55 400.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (parameterDescriptors) 126 388.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (Descripti) 147.6 376.33 T (v) 184.01 376.33 T (e information for each of the method's parameters.) 188.86 376.33 T 0 0 0 1 0 0 0 K 54 337 558 347 C 0 0 0 1 0 0 0 K 53.67 343.5 207.83 343.5 2 L 1 H 2 Z 0 X 0 0 0 1 0 0 0 K N 0 0 0 1 0 0 0 K 0 0 612 792 C 0 0 0 1 0 0 0 K 3 12 Q 0 X 0 0 0 1 0 0 0 K (Methods) 54 351 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 7 10 Q (\245 getMethod) 68.4 317.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 4 F (public Method getMethod\050\051) 90 302.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 3 F (Retur) 90 282.33 T (ns:) 114.84 282.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 F (The lo) 126 270.33 T (w-le) 151.58 270.33 T (v) 169.1 270.33 T (el description of the method) 173.95 270.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 7 F (\245 getParameterDescriptors) 68.4 248.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 4 F (public ParameterDescriptor[]) 90 233.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (getParameterDescriptors\050\051) 90 221.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 3 F (Retur) 90 201.33 T (ns:) 114.84 201.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 F (The locale-independent names of the parameters. May return a null array if the parameter names aren't) 126 189.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (kno) 126 177.33 T (wn.) 140.75 177.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "76" 76 %%Page: "77" 77 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 54 746 558 756 R 7 X 0 0 0 1 0 0 0 K V 2 10 Q 0 X (JavaBeans) 54 749.33 T 54 32.67 558 42.67 R 7 X V 0 X (Sun Microsystems) 54 36 T (77) 301 36 T (7/24/97) 527.44 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 54 72 558 720 R 7 X V 0 0 0 1 0 0 0 K 54 694 558 706 C 0 0 0 1 0 0 0 K 54 705 522 705 2 L 1 H 2 Z 0 X 0 0 0 1 0 0 0 K N 54 702 522 702 2 L N 0 0 0 1 0 0 0 K 0 0 612 792 C 0 0 0 1 0 0 0 K 3 14 Q 0 X 0 0 0 1 0 0 0 K (Class P) 54 710.67 T (arameterDescriptor) 97.81 710.67 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 4 10 Q (public) 90 671.33 T (class) 132 671.33 T (java.beans.) 168 671.33 T 7 F (ParameterDescriptor) 234 671.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 4 F ( extends) 90 659.33 T (java.beans.) 162 659.33 T 7 F (FeatureDescriptor) 228 659.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 F (The P) 90 635.33 T (arameterDescriptor class allo) 113.46 635.33 T (ws bean implementors to pro) 229.84 635.33 T (vide additional information on each of their parame-) 345.79 635.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (ters, be) 90 623.33 T (yond the lo) 118.73 623.33 T (w le) 163.48 623.33 T (v) 180.17 623.33 T (el type information pro) 185.02 623.33 T (vided by the ja) 277.36 623.33 T (v) 336.32 623.33 T (a.lang.re\337ect.Method class.) 341.07 623.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (Currently all our state comes from the FeatureDescriptor base class.) 90 605.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "77" 77 %%Page: "78" 78 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 54 746 558 756 R 7 X 0 0 0 1 0 0 0 K V 2 10 Q 0 X (JavaBeans) 54 749.33 T 54 32.67 558 42.67 R 7 X V 0 X (Sun Microsystems) 54 36 T (78) 301 36 T (7/24/97) 527.44 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 54 72 558 720 R 7 X V 0 0 0 1 0 0 0 K 54 694 558 706 C 0 0 0 1 0 0 0 K 54 705 522 705 2 L 1 H 2 Z 0 X 0 0 0 1 0 0 0 K N 54 702 522 702 2 L N 0 0 0 1 0 0 0 K 0 0 612 792 C 0 0 0 1 0 0 0 K 3 14 Q 0 X 0 0 0 1 0 0 0 K (Class Pr) 54 710.67 T (opertyDescriptor) 103.91 710.67 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 4 10 Q (public) 90 671.33 T (class) 132 671.33 T (java.beans.) 168 671.33 T 7 F (PropertyDescriptor) 234 671.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 4 F ( extends) 90 659.33 T (java.beans.) 162 659.33 T 7 F (FeatureDescriptor) 228 659.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 F (A PropertyDescriptor describes one property that a Ja) 90 635.33 T (v) 304.47 635.33 T (a Bean e) 309.22 635.33 T (xports via a pair of accessor methods.) 343.5 635.33 T 0 0 0 1 0 0 0 K 54 596 558 606 C 0 0 0 1 0 0 0 K 53.67 602.5 207.83 602.5 2 L 1 H 2 Z 0 X 0 0 0 1 0 0 0 K N 0 0 0 1 0 0 0 K 0 0 612 792 C 0 0 0 1 0 0 0 K 3 12 Q 0 X 0 0 0 1 0 0 0 K (Constructors) 54 610 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 7 10 Q (\245 PropertyDescriptor) 68.4 576.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 4 F (public PropertyDescriptor\050String) 90 561.33 T (propertyName,) 288 561.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (Class) 246 549.33 T (beanClass\051) 282 549.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( throws IntrospectionException) 72 537.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 F -0.35 (Constructs a PropertyDescriptor for a property that follo) 90 515.33 P -0.35 (ws the standard Ja) 312.51 515.33 P -0.35 (v) 384.29 515.33 P -0.35 (a con) 389.04 515.33 P -0.35 (v) 409.66 515.33 P -0.35 (ention by ha) 414.51 515.33 P -0.35 (ving getF) 463.05 515.33 P -0.35 (oo and setF) 500.6 515.33 P -0.35 (oo) 545.85 515.33 P 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (accessor methods. Thus if the ar) 90 503.33 T (gument name is "fred", it will assume that the reader method is "getFred" and the) 218.68 503.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (writer method is "setFred". Note that the property name should start with a lo) 90 491.33 T (wer case character) 398.99 491.33 T (, which will be capi-) 472.43 491.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (talized in the method names.) 90 479.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 3 F (P) 90 459.33 T (arameters:) 96.01 459.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 F (propertyName) 126 447.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (The programmatic name of the property) 147.6 435.33 T (.) 307.19 435.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (beanClass) 126 423.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (The Class object for the tar) 147.6 411.33 T (get bean. F) 256.01 411.33 T (or e) 300.02 411.33 T (xample sun.beans.OurButton.class.) 315.14 411.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 3 F (Thr) 90 391.33 T (o) 106.49 391.33 T (ws:) 111.39 391.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 F (IntrospectionException) 128.33 391.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (if an e) 126 379.33 T (xception occurs during introspection.) 150.84 379.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 7 F (\245 PropertyDescriptor) 68.4 357.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 4 F (public PropertyDescriptor\050String) 90 342.33 T (propertyName,) 288 342.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (Class) 246 330.33 T (beanClass,) 282 330.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (String) 246 318.33 T (getterName,) 288 318.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (String) 246 306.33 T (setterName\051) 288 306.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( throws IntrospectionException) 72 294.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 F (This constructor tak) 90 272.33 T (es the name of a simple property) 169.89 272.33 T (, and method names for reading and writing the property) 299.77 272.33 T (.) 525.19 272.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 3 F (P) 90 252.33 T (arameters:) 96.01 252.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 F (propertyName) 126 240.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (The programmatic name of the property) 147.6 228.33 T (.) 307.19 228.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (beanClass) 126 216.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (The Class object for the tar) 147.6 204.33 T (get bean. F) 256.01 204.33 T (or e) 300.02 204.33 T (xample sun.beans.OurButton.class.) 315.14 204.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (getterName) 126 192.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (The name of the method used for reading the property v) 147.6 180.33 T (alue. May be null if the property is write-only) 371.19 180.33 T (.) 553.57 180.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (setterName) 126 168.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (The name of the method used for writing the property v) 147.6 156.33 T (alue. May be null if the property is read-only) 370.09 156.33 T (.) 549.13 156.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 3 F (Thr) 90 136.33 T (o) 106.49 136.33 T (ws:) 111.39 136.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 F (IntrospectionException) 128.33 136.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (if an e) 126 124.33 T (xception occurs during introspection.) 150.84 124.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 7 F (\245 PropertyDescriptor) 68.4 102.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 4 F (public) 90 87.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (PropertyDescriptor\050String) 90 75.33 T (propertyName,) 246 75.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "78" 78 %%Page: "79" 79 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 54 746 558 756 R 7 X 0 0 0 1 0 0 0 K V 2 10 Q 0 X (JavaBeans) 54 749.33 T 54 32.67 558 42.67 R 7 X V 0 X (Sun Microsystems) 54 36 T (79) 301 36 T (7/24/97) 527.44 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 54 72 558 720 R 7 X V 4 F 0 X (Method) 204 713.33 T (getter, Method) 246 713.33 T (setter\051) 336 713.33 T ( throws IntrospectionException) 72 701.33 T 0 F (This constructor tak) 90 679.33 T (es the name of a simple property) 169.89 679.33 T (, and Method objects for reading and writing the property) 299.77 679.33 T (.) 529.08 679.33 T 3 F (P) 90 659.33 T (arameters:) 96.01 659.33 T 0 F (propertyName) 126 647.33 T (The programmatic name of the property) 147.6 635.33 T (.) 307.19 635.33 T (getter) 126 623.33 T (The method used for reading the property v) 147.6 611.33 T (alue. May be null if the property is write-only) 321.48 611.33 T (.) 503.86 611.33 T (setter) 126 599.33 T (The method used for writing the property v) 147.6 587.33 T (alue. May be null if the property is read-only) 320.38 587.33 T (.) 499.42 587.33 T 3 F (Thr) 90 567.33 T (o) 106.49 567.33 T (ws:) 111.39 567.33 T 0 F (IntrospectionException) 128.33 567.33 T (if an e) 126 555.33 T (xception occurs during introspection.) 150.84 555.33 T 0 0 0 1 0 0 0 K 54 516 558 526 C 0 0 0 1 0 0 0 K 53.67 522.5 207.83 522.5 2 L 1 H 2 Z 0 X 0 0 0 1 0 0 0 K N 0 0 0 1 0 0 0 K 0 0 612 792 C 0 0 0 1 0 0 0 K 3 12 Q 0 X 0 0 0 1 0 0 0 K (Methods) 54 530 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 7 10 Q (\245 getPropertyEditorClass) 68.4 496.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 4 F (public Class getPropertyEditorClass\050\051) 90 481.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 3 F (Retur) 90 461.33 T (ns:) 114.84 461.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 F -0.17 (An) 126 449.33 P -0.17 (y e) 138.07 449.33 P -0.17 (xplicit PropertyEditor Class that has been re) 149.68 449.33 P -0.17 (gistered for this property) 325.14 449.33 P -0.17 (. Normally this will return "null",) 423.11 449.33 P 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K -0.02 (indicating that no special editor has been re) 126 437.33 P -0.02 (gistered, so the PropertyEditorManager should be used to locate) 299.31 437.33 P 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (a suitable PropertyEditor) 126 425.33 T (.) 225.44 425.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 7 F (\245 getPropertyType) 68.4 403.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 4 F (public Class getPropertyType\050\051) 90 388.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 3 F (Retur) 90 368.33 T (ns:) 114.84 368.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 F (The Ja) 126 356.33 T (v) 152.18 356.33 T (a type info for the property) 156.93 356.33 T (. Note that the "Class" object may describe a b) 264.31 356.33 T (uilt-in Ja) 450.02 356.33 T (v) 485.1 356.33 T (a type such as) 489.85 356.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ("int". The result may be "null" if this is an inde) 126 344.33 T (x) 314.11 344.33 T (ed property that does not support non-inde) 318.96 344.33 T (x) 488.79 344.33 T (ed access.) 493.64 344.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (This is the type that will be returned by the ReadMethod.) 126 326.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 7 F (\245 getReadMethod) 68.4 304.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 4 F (public Method getReadMethod\050\051) 90 289.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 3 F (Retur) 90 269.33 T (ns:) 114.84 269.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 F (The method that should be used to read the property v) 126 257.33 T (alue. May return null if the property can't be read.) 341.83 257.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 7 F (\245 getWriteMethod) 68.4 235.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 4 F (public Method getWriteMethod\050\051) 90 220.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 3 F (Retur) 90 200.33 T (ns:) 114.84 200.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 F (The method that should be used to write the property v) 126 188.33 T (alue. May return null if the property can't be written.) 345.17 188.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 7 F (\245 isBound) 68.4 166.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 4 F (public boolean isBound\050\051) 90 151.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 F (Updates to "bound" properties will cause a "PropertyChange" e) 90 129.33 T (v) 343.25 129.33 T (ent to get \336red when the property is changed.) 348.1 129.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 3 F (Retur) 90 109.33 T (ns:) 114.84 109.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 F (T) 126 97.33 T (rue if this is a bound property) 131.76 97.33 T (.) 249.43 97.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 7 F (\245 isConstrained) 68.4 75.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "79" 79 %%Page: "80" 80 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 54 746 558 756 R 7 X 0 0 0 1 0 0 0 K V 2 10 Q 0 X (JavaBeans) 54 749.33 T 54 32.67 558 42.67 R 7 X V 0 X (Sun Microsystems) 54 36 T (80) 301 36 T (7/24/97) 527.44 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 54 72 558 720 R 7 X V 4 F 0 X (public boolean isConstrained\050\051) 90 713.33 T 0 F -0.09 (Attempted updates to "Constrained" properties will cause a "V) 90 691.33 P -0.09 (etoableChange" e) 338.74 691.33 P -0.09 (v) 408.86 691.33 P -0.09 (ent to get \336red when the property is) 413.71 691.33 P (changed.) 90 679.33 T 3 F (Retur) 90 659.33 T (ns:) 114.84 659.33 T 0 F (T) 126 647.33 T (rue if this is a constrained property) 131.76 647.33 T (.) 270.53 647.33 T 7 F (\245 setBound) 68.4 625.33 T 4 F (public void setBound\050boolean) 90 610.33 T (bound\051) 264 610.33 T 0 F (Updates to "bound" properties will cause a "PropertyChange" e) 90 588.33 T (v) 343.25 588.33 T (ent to get \336red when the property is changed.) 348.1 588.33 T 3 F (P) 90 568.33 T (arameters:) 96.01 568.33 T 0 F (bound) 126 556.33 T (T) 147.6 544.33 T (rue if this is a bound property) 153.36 544.33 T (.) 271.03 544.33 T 7 F (\245 setConstrained) 68.4 522.33 T 4 F (public void setConstrained\050boolean) 90 507.33 T (constrained\051) 300 507.33 T 0 F -0.09 (Attempted updates to "Constrained" properties will cause a "V) 90 485.33 P -0.09 (etoableChange" e) 338.74 485.33 P -0.09 (v) 408.86 485.33 P -0.09 (ent to get \336red when the property is) 413.71 485.33 P (changed.) 90 473.33 T 3 F (P) 90 453.33 T (arameters:) 96.01 453.33 T 0 F (constrained) 126 441.33 T (T) 147.6 429.33 T (rue if this is a constrained property) 153.36 429.33 T (.) 292.13 429.33 T 7 F (\245 setPropertyEditorClass) 68.4 407.33 T 4 F (public void) 90 392.33 T (setPropertyEditorClass\050Class) 90 380.33 T (propertyEditorClass\051) 264 380.33 T 0 F (Normally PropertyEditors will be found using the PropertyEditorManager) 90 358.33 T (. Ho) 385.81 358.33 T (we) 402.78 358.33 T (v) 414.19 358.33 T (er if for some reason you w) 419.04 358.33 T (ant to) 528.91 358.33 T (associate a particular PropertyEditor with a gi) 90 346.33 T (v) 273.05 346.33 T (en property) 277.9 346.33 T (, then you can do it with this method.) 323.07 346.33 T 3 F (P) 90 326.33 T (arameters:) 96.01 326.33 T 0 F (propertyEditorClass) 126 314.33 T (The Class for the desired PropertyEditor) 147.6 302.33 T (.) 308.97 302.33 T 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "80" 80 %%Page: "81" 81 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 54 746 558 756 R 7 X 0 0 0 1 0 0 0 K V 2 10 Q 0 X (JavaBeans) 54 749.33 T 54 32.67 558 42.67 R 7 X V 0 X (Sun Microsystems) 54 36 T (81) 301 36 T (7/24/97) 527.44 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 54 72 558 720 R 7 X V 0 0 0 1 0 0 0 K 54 694 558 706 C 0 0 0 1 0 0 0 K 54 705 522 705 2 L 1 H 2 Z 0 X 0 0 0 1 0 0 0 K N 54 702 522 702 2 L N 0 0 0 1 0 0 0 K 0 0 612 792 C 0 0 0 1 0 0 0 K 3 14 Q 0 X 0 0 0 1 0 0 0 K (Class SimpleBeanInf) 54 710.67 T (o) 178.5 710.67 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 4 10 Q (public) 90 671.33 T (class) 132 671.33 T (java.beans.) 168 671.33 T 7 F (SimpleBeanInfo) 234 671.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 4 F ( extends) 90 659.33 T (java.lang.) 162 659.33 T 7 F (Object) 222 659.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 4 F ( implements java.beans.) 90 647.33 T 7 F (BeanInfo) 246 647.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 F (This is a support class to mak) 90 623.33 T (e it easier for people to pro) 208.23 623.33 T (vide BeanInfo classes.) 315.83 623.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K -0.03 (It def) 90 605.33 P -0.03 (aults to pro) 111.25 605.33 P -0.03 (viding "noop" information, and can be selecti) 156.04 605.33 P -0.03 (v) 337.35 605.33 P -0.03 (ely o) 342.2 605.33 P -0.03 (v) 361.74 605.33 P -0.03 (erriden to pro) 366.59 605.33 P -0.03 (vide more e) 420.81 605.33 P -0.03 (xplicit information on) 467.81 605.33 P 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K -0.08 (chosen topics. When the introspector sees the "noop" v) 90 593.33 P -0.08 (alues, it will apply lo) 309.18 593.33 P -0.08 (w le) 392.79 593.33 P -0.08 (v) 409.4 593.33 P -0.08 (el introspection and design patterns) 414.25 593.33 P 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (to automatically analyze the tar) 90 581.33 T (get bean.) 215.35 581.33 T 0 0 0 1 0 0 0 K 54 542 558 552 C 0 0 0 1 0 0 0 K 53.67 548.5 207.83 548.5 2 L 1 H 2 Z 0 X 0 0 0 1 0 0 0 K N 0 0 0 1 0 0 0 K 0 0 612 792 C 0 0 0 1 0 0 0 K 3 12 Q 0 X 0 0 0 1 0 0 0 K (Methods) 54 556 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 7 10 Q (\245 getAdditionalBeanInfo) 68.4 522.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 4 F (public BeanInfo[] getAdditionalBeanInfo\050\051) 90 507.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 F -0.11 (Claim there are no other rele) 90 485.33 P -0.11 (v) 203.88 485.33 P -0.11 (ant BeanInfo objects. Y) 208.63 485.33 P -0.11 (ou may o) 302.17 485.33 P -0.11 (v) 339.02 485.33 P -0.11 (erride this if you w) 343.87 485.33 P -0.11 (ant to \050for e) 419.42 485.33 P -0.11 (xample\051 return a Bean-) 465.87 485.33 P 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (Info for a base class.) 90 473.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 7 F (\245 getBeanDescriptor) 68.4 451.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 4 F (public BeanDescriptor getBeanDescriptor\050\051) 90 436.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 F (Den) 90 414.33 T (y kno) 106.51 414.33 T (wledge about the class and customizer of the bean. Y) 128.76 414.33 T (ou can o) 340.39 414.33 T (v) 374.12 414.33 T (erride this if you wish to pro) 378.97 414.33 T (vide e) 492.7 414.33 T (xplicit) 516.71 414.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (info.) 90 402.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 7 F (\245 getDefaultEventIndex) 68.4 380.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 4 F (public int getDefaultEventIndex\050\051) 90 365.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 F (Den) 90 343.33 T (y kno) 106.51 343.33 T (wledge of a def) 128.76 343.33 T (ault e) 190.58 343.33 T (v) 212.27 343.33 T (ent. Y) 217.12 343.33 T (ou can o) 240.46 343.33 T (v) 274.19 343.33 T (erride this if you wish to de\336ne a def) 279.04 343.33 T (ault e) 426.14 343.33 T (v) 447.83 343.33 T (ent for the bean.) 452.68 343.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 7 F (\245 getDefaultPropertyIndex) 68.4 321.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 4 F (public int getDefaultPropertyIndex\050\051) 90 306.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 F (Den) 90 284.33 T (y kno) 106.51 284.33 T (wledge of a def) 128.76 284.33 T (ault property) 190.58 284.33 T (. Y) 241.31 284.33 T (ou can o) 252.43 284.33 T (v) 286.16 284.33 T (erride this if you wish to de\336ne a def) 291.01 284.33 T (ault property for the bean.) 438.11 284.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 7 F (\245 getEventSetDescriptors) 68.4 262.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 4 F (public EventSetDescriptor[] getEventSetDescriptors\050\051) 90 247.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 F (Den) 90 225.33 T (y kno) 106.51 225.33 T (wledge of e) 128.76 225.33 T (v) 175.16 225.33 T (ent sets. Y) 180.01 225.33 T (ou can o) 220.85 225.33 T (v) 254.58 225.33 T (erride this if you wish to pro) 259.43 225.33 T (vide e) 373.16 225.33 T (xplicit e) 397.17 225.33 T (v) 429.42 225.33 T (ent set info.) 434.27 225.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 7 F (\245 getIcon) 68.4 203.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 4 F (public Image getIcon\050int) 90 188.33 T (iconKind\051) 240 188.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 F (Claim there are no icons a) 90 166.33 T (v) 194.5 166.33 T (ailable. Y) 199.25 166.33 T (ou can o) 237.03 166.33 T (v) 270.76 166.33 T (erride this if you w) 275.61 166.33 T (ant to pro) 351.61 166.33 T (vide icons for your bean.) 389.79 166.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 7 F (\245 getMethodDescriptors) 68.4 144.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 4 F (public MethodDescriptor[] getMethodDescriptors\050\051) 90 129.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 F (Den) 90 107.33 T (y kno) 106.51 107.33 T (wledge of methods. Y) 128.76 107.33 T (ou can o) 215.98 107.33 T (v) 249.71 107.33 T (erride this if you wish to pro) 254.56 107.33 T (vide e) 368.29 107.33 T (xplicit method info.) 392.3 107.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 7 F (\245 getPropertyDescriptors) 68.4 85.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "81" 81 %%Page: "82" 82 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 54 746 558 756 R 7 X 0 0 0 1 0 0 0 K V 2 10 Q 0 X (JavaBeans) 54 749.33 T 54 32.67 558 42.67 R 7 X V 0 X (Sun Microsystems) 54 36 T (82) 301 36 T (7/24/97) 527.44 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 54 72 558 720 R 7 X V 4 F 0 X (public PropertyDescriptor[] getPropertyDescriptors\050\051) 90 713.33 T 0 F (Den) 90 691.33 T (y kno) 106.51 691.33 T (wledge of properties. Y) 128.76 691.33 T (ou can o) 222.08 691.33 T (v) 255.81 691.33 T (erride this if you wish to pro) 260.66 691.33 T (vide e) 374.39 691.33 T (xplicit property info.) 398.4 691.33 T 7 F (\245 loadImage) 68.4 669.33 T 4 F (public Image loadImage\050String) 90 654.33 T (resourceName\051) 270 654.33 T 0 F -0.1 (This is a utility method to help in loading icon images. It tak) 90 632.33 P -0.1 (es the name of a resource \336le associated with the current) 330.6 632.33 P (object's class \336le and loads an image object from that \336le. T) 90 620.33 T (ypically images will be GIFs.) 328.75 620.33 T 3 F (P) 90 600.33 T (arameters:) 96.01 600.33 T 0 F (resourceName) 126 588.33 T (A pathname relati) 147.6 576.33 T (v) 219 576.33 T (e to the directory holding the class \336le of the current class. F) 223.85 576.33 T (or e) 465.61 576.33 T (xample,) 480.73 576.33 T ("w) 147.6 564.33 T (ombat.gif".) 158.8 564.33 T 3 F (Retur) 90 544.33 T (ns:) 114.84 544.33 T 0 F (an image object. May be null if the load f) 126 532.33 T (ailed.) 291.43 532.33 T 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "82" 82 %%Page: "83" 83 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 54 746 558 756 R 7 X 0 0 0 1 0 0 0 K V 2 10 Q 0 X (JavaBeans) 54 749.33 T (Customization) 500.21 749.33 T 54 32.67 558 42.67 R 7 X V 0 X (Sun Microsystems) 54 36 T (83) 301 36 T (7/24/97) 527.44 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 54 72 558 720 R 7 X V 3 18 Q 0 X (9) 81 708 T (Customization) 108 708 T 0 12 Q 0.5 (When a user is composing an application in an application builder we want to allow them to) 108 680 P (customize the appearance and behaviour of the various beans they are using.) 108 666 T -0.47 (We allow this customization to occur in two different ways. When a bean exports a set of prop-) 108 646 P 0.6 (erties, then an application builder can use these properties to construct a GUI) 108 632 P 2 F 0.6 (property sheet) 488.41 632 P 0 F -0.22 (that lists the properties and provides a) 108 618 P 2 F -0.22 (property editor) 291.42 618 P 0 F -0.22 ( for each property. The user can then use) 364.19 618 P (this property sheet to update the various properties of the bean.) 108 604 T 0.77 (This kind of simple property sheet is likely to work well for simple to medium sized beans.) 108 584 P 0.84 (However for larger and more complex beans, we want to allow more sophisticated kinds of) 108 570 P -0.05 (component customization. For example, we would like to allow component writers to provide) 108 556 P 1.03 (customization \322wizards\323 that guide users through the different steps of customizing a bean,) 108 542 P (rather than simply facing them with property sheet choices.) 108 528 T 0.16 (We therefore allow each Java Bean to be accompanied by a) 108 508 P 2 F 0.16 (customizer) 398.7 508 P 0 F 0.16 ( class that controls the) 450.69 508 P -0.48 (customization of the bean. This customizer class should be an AWT component that can be run) 108 494 P -0.35 (to customize a target bean. It can provide whatever GUI behaviour it wishes to control the cus-) 108 480 P (tomization of the target bean.) 108 466 T 3 14 Q (9.1) 54 438.67 T ( Storing customized components) 75 438.67 T 0 12 Q 0.46 (When a human has customized the behaviour of a set of components, the application builder) 108 418 P 0.87 (should use the persistence mechanisms described in Section 5 to store away the state of the) 108 404 P -0.11 (components. When the application is run, this pickled state should be read back in to initialize) 108 390 P (the components.) 108 376 T 3 14 Q (9.2) 54 348.67 T ( Property editors) 75 348.67 T 0 12 Q -0.37 (A) 108 328 P 2 F -0.37 (property editor) 119.3 328 P 0 F -0.37 ( is a class that exists to allow GUI editing of a property value such as a String) 191.93 328 P 0.45 (or Color. Bean developers may also deliver new property editors for any new data types that) 108 314 P -0.37 (they deliver as part of their bean. For example, if a database bean developer defines a new type) 108 300 P 0.93 (foo.baz.SQLString and uses that type for component properties, then they may also wish to) 108 286 P (provide a property editor foo.baz.SQLStringEditor for editing SQLString values.) 108 272 T -0.23 (The PropertyEditor class provides a number of different ways of reading and writing the prop-) 108 252 P -0.75 (erty value. Not all property editors need support all the different options. At the low-end a Prop-) 108 238 P 1.49 (ertyEditor may simply support reading and writing a value as a String. At the high-end, a) 108 224 P 0.1 (PropertyEditor is allowed to provide a full-blown java.awt.Component that can be popped-up) 108 210 P (to edit its value.) 108 196 T 0.47 (A property editor may be instantiated either as part of a property sheet, or as a field within a) 108 176 P -0.71 (more complex component customizer. If a PropertyEditor allows itself to be represented in sev-) 108 162 P 0.43 (eral different ways \050as a String, as a painted rectangle, as a full-blown custom editor compo-) 108 148 P -0.45 (nent, etc.\051 it is the responsibility of the higher-level tool to decide how best to represent a given) 108 134 P (PropertyEditor.) 108 120 T 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "83" 83 %%Page: "84" 84 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 54 746 558 756 R 7 X 0 0 0 1 0 0 0 K V 2 10 Q 0 X (JavaBeans) 54 749.33 T (Customization) 500.21 749.33 T 54 32.67 558 42.67 R 7 X V 0 X (Sun Microsystems) 54 36 T (84) 301 36 T (7/24/97) 527.44 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 54 72 558 720 R 7 X V 3 12 Q 0 X (9.2.1) 66 712 T (Locating property editors) 108 712 T 0 F 0.05 (Some property editors will be supplied as part of the Java Beans runtimes, other property edi-) 108 692 P -0.21 (tors may be supplied by component developers, other property editors may be provided by ap-) 108 678 P (plication builder tools.) 108 664 T 0.25 (To allow the right property editor to be located for a given Java data type, we provide a class) 108 644 P 0.26 (java.beans.PropertyEditorManager that maps between Java types and corresponding property) 108 630 P (editor classes.) 108 616 T 0.98 (The PropertyEditorManager class manages a registry of property editors, and allows you to) 108 596 P 0.71 (register a class to act as the property editor for a given Java type. The registry is pre-loaded) 108 582 P (with editors for the standard Java built-in types such as \322int\323, \322boolean\323, etc.) 108 568 T -0.51 (When you attempt to locate a property editor for a Java type, the property manager searches for) 108 548 P (a suitable property editor by:) 108 534 T (\245) 115 514 T (First looking to see if a property editor has been explicitly registered.) 126 514 T (\245) 115 494 T 0.02 (If that fails, it will take the given Java type name and add \322Editor\323 to the end and look) 126 494 P -0.3 (for that class. So for \322foo.bah.Wombat\323 it will look for \322foo.bah.WombatEditor\323 to act) 126 480 P (as the property editor.) 126 466 T (\245) 115 446 T 0 (If that also fails, it will take the final component of the given class name, add \322Editor\323) 126 446 P 0.73 (to the end and then look for that class name in a search-list of packages. \050By default) 126 432 P 14.77 (java.beans.editors\051. Thus for \322foo.bah.Wombat\323 it will check for) 126 418 P -0.51 (\322java.beans.editors.WombatEditor\323. Application builder tools may change the package) 126 404 P (search path, by for example, pre-pending a package that they themselves provide.) 126 390 T -0.38 (Normally component writers who define new types and want to supply property editors should) 108 370 P (simply provide an editor class whose name is the base type name + \322Editor\323.) 108 356 T 0.29 (Application builder tools can either use the set of default property editors provided with Java) 108 336 P (Beans or define their own set of property editors for the basic Java types.) 108 322 T 3 F (9.2.2) 66 299 T (Reporting changes) 108 299 T 0 F 0.17 (Whenever a property editor makes a change it should fire a \322PropertyChange\323 event. This al-) 108 279 P 0.12 (lows higher level software to detect the change, retrieve the new value, and do an appropriate) 108 265 P (setXXX call to the target component.) 108 251 T 3 F (9.2.3) 66 228 T (Don\325t change the initial object) 108 228 T 0 F 0.7 (Property editors are given an object representing the current value of a property. However a) 108 208 P 0.88 (property editor should not directly change this initial object. Instead, based on user input, it) 108 194 P -0.31 (should create a new object to reflect the revised state of the property. When the property editor) 108 180 P 0.78 (fires a \322PropertyChange\323 event \050see above\051 higher level software will detect the change, re-) 108 166 P 0.32 (trieve the new object, and do an appropriate property setter method call on the target compo-) 108 152 P (nent to set the new value.) 108 138 T -0.12 (Since most simple objects in Java \050String, Color, Font\051 are immutable, this model works natu-) 108 118 P -0.7 (rally for them. However, for mutable data types this also feels like the clearest and most reliable) 108 104 P 0.36 (model. It seems likely to lead to errors and misunderstandings if we were to try to change an) 108 90 P (existing property object\325s value under a component\325s feet.) 108 76 T 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "84" 84 %%Page: "85" 85 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 54 746 558 756 R 7 X 0 0 0 1 0 0 0 K V 2 10 Q 0 X (JavaBeans) 54 749.33 T (Customization) 500.21 749.33 T 54 32.67 558 42.67 R 7 X V 0 X (Sun Microsystems) 54 36 T (85) 301 36 T (7/24/97) 527.44 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 54 72 558 720 R 7 X V 0 12 Q 0 X -0.12 (Some property sheets may immediately apply each modified property value to the target com-) 108 712 P -0.3 (ponent. However some property sheets \050or customizers\051 may choose to delay the changes until) 108 698 P (the users confirms them.) 108 684 T 3 F (9.2.4) 66 661 T (Indirect property changes) 108 661 T 0 F (In some components, setting one property value may cause other property values to change.) 108 641 T -0.24 (If this happens while a property sheet is open, then the user would like the property sheet to be) 108 621 P 0.84 (updated with all the new values. We therefore recommend that after each property update a) 108 607 P -0.14 (property sheet manager should re-read all the properties associated with the target bean. How-) 108 593 P 0.06 (ever, in order to avoid excessive screen redraws we recommend that it should do an \322==\323 fol-) 108 579 P 0.44 (lowed by a \322Object.equals\323 test to compare each new property value with its previous value.) 108 565 P (The individual property editors should only be updated if the value has actually changed.) 108 551 T 0 10 Q 0.25 (We considered defining an \322IndirectPropertyUpdate\323 event that should get fired when a property was) 129 532.33 P -0.25 (changed as a side-effect of some other operation. However this seemed to add extra weight to the inter-) 129 520.33 P (face for only a fairly small performance gain.) 129 508.33 T 0 12 Q (See also \322bound properties\323 in Section 7.4.) 108 485 T 3 F (9.2.5) 66 462 T (The getJavaInitializationString method) 108 462 T 0 F -0.55 (If you are implementing a PropertyEditor, note that it is important to support the getJavaInitial-) 108 442 P -0.64 (ziationString method. Builder tools may use this method to help generate source code to restore) 108 428 P 0.1 (the state of a bean \050see Section 5.4\051. For example getJavaInitializationString might be used to) 108 414 P -0.41 (generate code that will reinitialize a bean\325s properties to the current values shown in a property) 108 400 P (sheet.) 108 386 T 0.17 (The String returned by getJavaInitializationString should represent a value that can be passed) 108 366 P (as a method or constructor argument.) 108 352 T (So for example:) 108 332 T (\245) 115 312 T 0.29 (The property editor for the \322int\323 primitive type might return strings such as \3220\323, \322-1\323,) 126 312 P (or \322555\323.) 126 298 T (\245) 115 278 T 10.49 (The property editor for java.awt.Color might return strings such as) 126 278 P (\322java.awt.Color.red\323 or \322new java.awt.Color\050128,128,128\051\323.) 126 264 T 3 14 Q (9.3) 54 236.67 T (C) 78.5 236.67 T (ustomizers) 88.61 236.67 T 0 12 Q (Property sheets will be an adequate way of customizing most simple components.) 108 216 T 0.75 (However for large components that offer a number of different ways of being configured, it) 108 196 P -0.14 (may be more appropriate for the component developer to provide a special class for customiz-) 108 182 P (ing the component. We refer to these classes as) 108 168 T 2 F (customizers) 337.94 168 T 0 F (.) 394.61 168 T -0.72 (Each customizer should inherit either directly or indirectly from java.awt.Component. It should) 108 148 P (also implement the java.beans.Customizer interface.) 108 134 T 34 232 36 470 R V 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "85" 85 %%Page: "86" 86 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 54 746 558 756 R 7 X 0 0 0 1 0 0 0 K V 2 10 Q 0 X (JavaBeans) 54 749.33 T (Customization) 500.21 749.33 T 54 32.67 558 42.67 R 7 X V 0 X (Sun Microsystems) 54 36 T (86) 301 36 T (7/24/97) 527.44 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 54 72 558 720 R 7 X V 3 12 Q 0 X (9.3.1) 66 712 T (GUI appearance) 108 712 T 0 F -0.11 (Normally each Customizer will be run in a separate AWT dialog window. The customizer has) 108 692 P 0.7 (complete discretion how it chooses to represent itself, and may redraw its appearance as the) 108 678 P (user navigates/moves through different stages of customization.) 108 664 T -0.55 (A customizer may choose to include property editors in its screen appearance to edit target data) 108 644 P (values.) 108 630 T 3 F (9.3.2) 66 607 T (In place update) 108 607 T 0 F (Each customizer will be given a target object to customize as its constructor argument.) 108 587 T 1 (It is entirely up to the individual customizer whether it chooses to apply changes as it goes) 108 567 P 0.61 (along, or whether it batches up changes and applies them to the object at appropriate points.) 108 553 P 1.18 (However, whenever possible, we advise that the target bean\325s screen appearance should be) 108 539 P (quickly updated to reflect requested changes.) 108 525 T 3 F (9.3.3) 66 502 T (Locating customizers) 108 502 T 0 F -0.56 (If a bean wishes to provide its own Customizer then it must provide its own BeanInfo class \050see) 108 482 P -0.62 (8.6\051. Tools can then use t) 108 468 P -0.62 (he BeanInfo.getBeanDescriptor\050\051.getCustomizerClass\050) 225.88 468 P -0.62 (\051 method to lo-) 488.2 468 P (cate the bean\325s Customizer class.) 108 454 T 34 464 36 476 R V 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "86" 86 %%Page: "87" 87 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 54 746 558 756 R 7 X 0 0 0 1 0 0 0 K V 2 10 Q 0 X (JavaBeans) 54 749.33 T 54 32.67 558 42.67 R 7 X V 0 X (Sun Microsystems) 54 36 T (87) 301 36 T (7/24/97) 527.44 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 54 72 558 720 R 7 X V 0 0 0 1 0 0 0 K 54 694 558 706 C 0 0 0 1 0 0 0 K 54 705 522 705 2 L 1 H 2 Z 0 X 0 0 0 1 0 0 0 K N 54 702 522 702 2 L N 0 0 0 1 0 0 0 K 0 0 612 792 C 0 0 0 1 0 0 0 K 3 14 Q 0 X 0 0 0 1 0 0 0 K (Interface Customizer) 54 710.67 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 4 10 Q (public) 90 671.33 T (interface) 132 671.33 T (java.beans.) 192 671.33 T 7 F (Customizer) 258 671.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 F (A customizer class pro) 90 647.33 T (vides a complete custom GUI for customizing a tar) 181.22 647.33 T (get Ja) 385.45 647.33 T (v) 408.3 647.33 T (a Bean.) 413.05 647.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (Each customizer should inherit from the ja) 90 629.33 T (v) 260.33 629.33 T (a.a) 265.08 629.33 T (wt.Component class so it can be instantiated inside an A) 276.31 629.33 T (WT dialog or) 500.95 629.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (panel.) 90 617.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (Each customizer should ha) 90 599.33 T (v) 197.28 599.33 T (e a null constructor) 202.13 599.33 T (.) 278.51 599.33 T 0 0 0 1 0 0 0 K 54 560 558 570 C 0 0 0 1 0 0 0 K 53.67 566.5 207.83 566.5 2 L 1 H 2 Z 0 X 0 0 0 1 0 0 0 K N 0 0 0 1 0 0 0 K 0 0 612 792 C 0 0 0 1 0 0 0 K 3 12 Q 0 X 0 0 0 1 0 0 0 K (Methods) 54 574 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 7 10 Q (\245 addPropertyChangeListener) 68.4 540.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 4 F (public void) 90 525.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (addPropertyChangeListener\050PropertyChangeListener) 90 513.33 T (listener\051) 384 513.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 F (Re) 90 491.33 T (gister a listener for the PropertyChange e) 100.96 491.33 T (v) 265.12 491.33 T (ent. The customizer should \336re a PropertyChange e) 269.97 491.33 T (v) 475.24 491.33 T (ent whene) 480.09 491.33 T (v) 520.66 491.33 T (er it) 525.51 491.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (changes the tar) 90 479.33 T (get bean in a w) 149.8 479.33 T (ay that might require the displayed properties to be refreshed.) 210.24 479.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 3 F (P) 90 459.33 T (arameters:) 96.01 459.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 F (listener) 126 447.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (An object to be in) 147.6 435.33 T (v) 218.86 435.33 T (ok) 223.66 435.33 T (ed when a PropertyChange e) 233.56 435.33 T (v) 348.28 435.33 T (ent is \336red.) 353.13 435.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 7 F (\245 removePropertyChangeListener) 68.4 413.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 4 F (public void) 90 398.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (removePropertyChangeListener\050PropertyChangeListener) 90 386.33 T (listener\051) 402 386.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 F (Remo) 90 364.33 T (v) 113.74 364.33 T (e a listener for the PropertyChange e) 118.59 364.33 T (v) 264.97 364.33 T (ent.) 269.82 364.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 3 F (P) 90 344.33 T (arameters:) 96.01 344.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 F (listener) 126 332.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (The PropertyChange listener to be remo) 147.6 320.33 T (v) 307.7 320.33 T (ed.) 312.55 320.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 7 F (\245 setObject) 68.4 298.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 4 F (public void setObject\050Object) 90 283.33 T (bean\051) 264 283.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 F (Set the object to be customized. This method should be called only once, before the Customizer has been added to) 90 261.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (an) 90 249.33 T (y parent A) 99.29 249.33 T (WT container) 140.6 249.33 T (.) 195.31 249.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 3 F (P) 90 229.33 T (arameters:) 96.01 229.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 F (bean) 126 217.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (The object to be customized.) 147.6 205.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "87" 87 %%Page: "88" 88 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 54 746 558 756 R 7 X 0 0 0 1 0 0 0 K V 2 10 Q 0 X (JavaBeans) 54 749.33 T 54 32.67 558 42.67 R 7 X V 0 X (Sun Microsystems) 54 36 T (88) 301 36 T (7/24/97) 527.44 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 54 72 558 720 R 7 X V 0 0 0 1 0 0 0 K 54 694 558 706 C 0 0 0 1 0 0 0 K 54 705 522 705 2 L 1 H 2 Z 0 X 0 0 0 1 0 0 0 K N 54 702 522 702 2 L N 0 0 0 1 0 0 0 K 0 0 612 792 C 0 0 0 1 0 0 0 K 3 14 Q 0 X 0 0 0 1 0 0 0 K (Interface Pr) 54 710.67 T (opertyEditor) 126.44 710.67 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 4 10 Q (public) 90 671.33 T (interface) 132 671.33 T (java.beans.) 192 671.33 T 7 F (PropertyEditor) 258 671.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 F (A PropertyEditor class pro) 90 647.33 T (vides support for GUIs that w) 196.78 647.33 T (ant to allo) 315.83 647.33 T (w users to edit a property v) 355.58 647.33 T (alue of a gi) 464.2 647.33 T (v) 508.66 647.33 T (en type.) 513.51 647.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K -0.12 (PropertyEditor supports a v) 90 629.33 P -0.12 (ariety of dif) 199.66 629.33 P -0.12 (ferent kinds of w) 246.38 629.33 P -0.12 (ays of displaying and updating property v) 313.96 629.33 P -0.12 (alues. Most Proper-) 479.64 629.33 P 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (tyEditors will only need to support a subset of the dif) 90 617.33 T (ferent options a) 302.52 617.33 T (v) 364.53 617.33 T (ailable in this API.) 369.28 617.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (Simple PropertyEditors may only support the getAsT) 90 599.33 T (e) 302.63 599.33 T (xt and setAsT) 306.92 599.33 T (e) 361.77 599.33 T (xt methods and need not support \050say\051 paint-) 366.06 599.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (V) 90 587.33 T (alue or getCustomEditor) 96.11 587.33 T (. More comple) 193.89 587.33 T (x types may be unable to support getAsT) 252.34 587.33 T (e) 415.79 587.33 T (xt and setAsT) 420.08 587.33 T (e) 474.93 587.33 T (xt b) 479.22 587.33 T (ut will instead) 494.3 587.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (support paintV) 90 575.33 T (alue and getCustomEditor) 148.61 575.33 T (.) 252.5 575.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (Ev) 90 557.33 T (ery propertyEditor must support one or more of the three simple display styles. Thus it can either \0501\051 support) 100.96 557.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (isP) 90 545.33 T (aintable or \0502\051 both return a non-null String[] from getT) 102.08 545.33 T (ags\050\051 and return a non-null v) 324.3 545.33 T (alue from getAsT) 438.19 545.33 T (e) 508.03 545.33 T (xt or \0503\051) 512.32 545.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (simply return a non-null String from getAsT) 90 533.33 T (e) 267.07 533.33 T (xt\050\051.) 271.36 533.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (Ev) 90 515.33 T (ery property editor must support a call on setV) 100.96 515.33 T (alue when the ar) 286.49 515.33 T (gument object is of the type for which this is the) 352.12 515.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K -0.1 (corresponding propertyEditor) 90 503.33 P -0.1 (. In addition, each property editor must either support a custom editor) 207.94 503.33 P -0.1 (, or support setAs-) 484.43 503.33 P 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (T) 90 491.33 T (e) 95.41 491.33 T (xt.) 99.7 491.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (Each PropertyEditor should ha) 90 473.33 T (v) 212.84 473.33 T (e a null constructor) 217.69 473.33 T (.) 294.07 473.33 T 0 0 0 1 0 0 0 K 54 434 558 444 C 0 0 0 1 0 0 0 K 53.67 440.5 207.83 440.5 2 L 1 H 2 Z 0 X 0 0 0 1 0 0 0 K N 0 0 0 1 0 0 0 K 0 0 612 792 C 0 0 0 1 0 0 0 K 3 12 Q 0 X 0 0 0 1 0 0 0 K (Methods) 54 448 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 7 10 Q (\245 addPropertyChangeListener) 68.4 414.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 4 F (public void) 90 399.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (addPropertyChangeListener\050PropertyChangeListener) 90 387.33 T (listener\051) 384 387.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 F (Re) 90 365.33 T (gister a listener for the PropertyChange e) 100.96 365.33 T (v) 265.12 365.33 T (ent. When a PropertyEditor changes its v) 269.97 365.33 T (alue it should \336re a Property-) 433.86 365.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K -0.16 (Change e) 90 353.33 P -0.16 (v) 127.08 353.33 P -0.16 (ent on all re) 131.93 353.33 P -0.16 (gistered PropertyChangeListeners, specifying the null v) 178.78 353.33 P -0.16 (alue for the property name and itself as) 400.46 353.33 P 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (the source.) 90 341.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 3 F (P) 90 321.33 T (arameters:) 96.01 321.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 F (listener) 126 309.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (An object to be in) 147.6 297.33 T (v) 218.86 297.33 T (ok) 223.66 297.33 T (ed when a PropertyChange e) 233.56 297.33 T (v) 348.28 297.33 T (ent is \336red.) 353.13 297.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 7 F (\245 getAsText) 68.4 275.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 4 F (public String getAsText\050\051) 90 260.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 3 F (Retur) 90 240.33 T (ns:) 114.84 240.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 F (The property v) 126 228.33 T (alue as a human editable string.) 185.18 228.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (Returns null if the v) 126 210.33 T (alue can't be e) 205.75 210.33 T (xpressed as an editable string.) 262.1 210.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K -0.04 (If a non-null v) 126 192.33 P -0.04 (alue is returned, then the PropertyEditor should be prepared to parse that string back in setAs-) 183.12 192.33 P 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (T) 126 180.33 T (e) 131.41 180.33 T (xt\050\051.) 135.7 180.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 7 F (\245 getCustomEditor) 68.4 158.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 4 F (public Component getCustomEditor\050\051) 90 143.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 F (A PropertyEditor may choose to mak) 90 121.33 T (e a) 239.05 121.33 T (v) 250.23 121.33 T (ailable a full custom Component that edits its property v) 254.98 121.33 T (alue. It is the) 480 121.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (responsibility of the PropertyEditor to hook itself up to its editor Component itself and to report property v) 90 109.33 T (alue) 516.68 109.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (changes by \336ring a PropertyChange e) 90 97.33 T (v) 240 97.33 T (ent.) 244.85 97.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K -0.07 (The higher) 90 79.33 P -0.07 (-le) 133.33 79.33 P -0.07 (v) 143.63 79.33 P -0.07 (el code that calls getCustomEditor may either embed the Component in some lar) 148.48 79.33 P -0.07 (ger property sheet, or) 470.24 79.33 P 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "88" 88 %%Page: "89" 89 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 54 746 558 756 R 7 X 0 0 0 1 0 0 0 K V 2 10 Q 0 X (JavaBeans) 54 749.33 T 54 32.67 558 42.67 R 7 X V 0 X (Sun Microsystems) 54 36 T (89) 301 36 T (7/24/97) 527.44 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 54 72 558 720 R 7 X V 0 F 0 X (it may put it in its o) 90 713.33 T (wn indi) 168.1 713.33 T (vidual dialog, or ...) 198.13 713.33 T 3 F (Retur) 90 693.33 T (ns:) 114.84 693.33 T 0 F -0.24 (A ja) 126 681.33 P -0.24 (v) 142.5 681.33 P -0.24 (a.a) 147.25 681.33 P -0.24 (wt.Component that will allo) 158.48 681.33 P -0.24 (w a human to directly edit the current property v) 269.73 681.33 P -0.24 (alue. May be null if this) 461.41 681.33 P (is not supported.) 126 669.33 T 7 F (\245 getJavaInitializationString) 68.4 647.33 T 4 F (public String getJavaInitializationString\050\051) 90 632.33 T 0 F -0.32 (This method is intended for use when generating Ja) 90 610.33 P -0.32 (v) 293.35 610.33 P -0.32 (a code to set the v) 298.1 610.33 P -0.32 (alue of the property) 368.2 610.33 P -0.32 (. It should return a fragment) 445.2 610.33 P (of Ja) 90 598.33 T (v) 108.96 598.33 T (a code that can be used to initialize a v) 113.71 598.33 T (ariable with the current property v) 268.15 598.33 T (alue.) 404.81 598.33 T (Example results are "2", "ne) 90 580.33 T (w Color\050127,127,34\051", "Color) 202.8 580.33 T (.orange", etc.) 322.35 580.33 T 3 F (Retur) 90 560.33 T (ns:) 114.84 560.33 T 0 F (A fragment of Ja) 126 548.33 T (v) 193.28 548.33 T (a code representing an initializer for the current v) 198.03 548.33 T (alue.) 395.5 548.33 T 7 F (\245 getTags) 68.4 526.33 T 4 F (public String[] getTags\050\051) 90 511.33 T 0 F -0.19 (If the property v) 90 489.33 P -0.19 (alue must be one of a set of kno) 154.45 489.33 P -0.19 (wn tagged v) 279.9 489.33 P -0.19 (alues, then this method should return an array of the tags.) 328.15 489.33 P -0.13 (This can be used to represent \050for e) 90 477.33 P -0.13 (xample\051 enum v) 229.72 477.33 P -0.13 (alues. If a PropertyEditor supports tags, then it should support the) 294.19 477.33 P (use of setAsT) 90 465.33 T (e) 144.29 465.33 T (xt with a tag v) 148.58 465.33 T (alue as a w) 205.55 465.33 T (ay of setting the v) 249.6 465.33 T (alue and the use of getAsT) 321.01 465.33 T (e) 427.23 465.33 T (xt to identify the current v) 431.52 465.33 T (alue.) 535.98 465.33 T 3 F (Retur) 90 445.33 T (ns:) 114.84 445.33 T 0 F (The tag v) 126 433.33 T (alues for this property) 163.52 433.33 T (. May be null if this property cannot be represented as a tagged v) 250.91 433.33 T (alue.) 510.05 433.33 T 7 F (\245 getValue) 68.4 411.33 T 4 F (public Object getValue\050\051) 90 396.33 T 3 F (Retur) 90 376.33 T (ns:) 114.84 376.33 T 0 F (The v) 126 364.33 T (alue of the property) 148.8 364.33 T (. Primiti) 226.74 364.33 T (v) 259.28 364.33 T (e types such as "int" will be wrapped as the corresponding object type) 264.13 364.33 T (such as "ja) 126 352.33 T (v) 168.76 352.33 T (a.lang.Inte) 173.51 352.33 T (ger".) 215.57 352.33 T 7 F (\245 isPaintable) 68.4 330.33 T 4 F (public boolean isPaintable\050\051) 90 315.33 T 3 F (Retur) 90 295.33 T (ns:) 114.84 295.33 T 0 F (T) 126 283.33 T (rue if the class will honor the paintV) 131.76 283.33 T (alue method.) 277.02 283.33 T 7 F (\245 paintValue) 68.4 261.33 T 4 F (public void) 90 246.33 T (paintValue\050Graphics) 90 234.33 T (gfx, Rectangle) 210 234.33 T (box\051) 300 234.33 T 0 F (P) 90 212.33 T (aint a representation of the v) 95.41 212.33 T (alue into a gi) 209.3 212.33 T (v) 260.99 212.33 T (en area of screen real estate. Note that the propertyEditor is responsible) 265.84 212.33 T (for doing its o) 90 200.33 T (wn clipping so that it \336ts into the gi) 146.14 200.33 T (v) 288.13 200.33 T (en rectangle.) 292.98 200.33 T (If the PropertyEditor doesn't honor paint requests \050see isP) 90 182.33 T (aintable\051 this method should be a silent noop.) 320.51 182.33 T (The gi) 90 164.33 T (v) 115.58 164.33 T (en Graphics object will ha) 120.43 164.33 T (v) 225.21 164.33 T (e the def) 230.06 164.33 T (ault font, color) 264.39 164.33 T (, etc of the parent container) 323.15 164.33 T (. The PropertyEditor may) 432.01 164.33 T (change graphics attrib) 90 152.33 T (utes such as font and color and doesn't need to restore the old v) 178.11 152.33 T (alues.) 430.45 152.33 T 3 F (P) 90 132.33 T (arameters:) 96.01 132.33 T 0 F (gfx) 126 120.33 T (Graphics object to paint into.) 147.6 108.33 T (box) 126 96.33 T (Rectangle within graphics object into which we should paint.) 147.6 84.33 T 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "89" 89 %%Page: "90" 90 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 54 746 558 756 R 7 X 0 0 0 1 0 0 0 K V 2 10 Q 0 X (JavaBeans) 54 749.33 T 54 32.67 558 42.67 R 7 X V 0 X (Sun Microsystems) 54 36 T (90) 301 36 T (7/24/97) 527.44 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 54 72 558 720 R 7 X V 7 F 0 X (\245 removePropertyChangeListener) 68.4 713.33 T 4 F (public void) 90 698.33 T (removePropertyChangeListener\050PropertyChangeListener) 90 686.33 T (listener\051) 402 686.33 T 0 F (Remo) 90 664.33 T (v) 113.74 664.33 T (e a listener for the PropertyChange e) 118.59 664.33 T (v) 264.97 664.33 T (ent.) 269.82 664.33 T 3 F (P) 90 644.33 T (arameters:) 96.01 644.33 T 0 F (listener) 126 632.33 T (The PropertyChange listener to be remo) 147.6 620.33 T (v) 307.7 620.33 T (ed.) 312.55 620.33 T 7 F (\245 setAsText) 68.4 598.33 T 4 F (public void setAsText\050String) 90 583.33 T (text\051) 264 583.33 T ( throws IllegalArgumentException) 72 571.33 T 0 F -0.09 (Set the property v) 90 549.33 P -0.09 (alue by parsing a gi) 160.85 549.33 P -0.09 (v) 238.55 549.33 P -0.09 (en String. May raise ja) 243.4 549.33 P -0.09 (v) 333.65 549.33 P -0.09 (a.lang.Ille) 338.4 549.33 P -0.09 (g) 378.24 549.33 P -0.09 (alAr) 383.19 549.33 P -0.09 (gumentException if either the String is) 400.78 549.33 P (badly formatted or if this kind of property can't be e) 90 537.33 T (xpressed as te) 297.17 537.33 T (xt.) 352.56 537.33 T 3 F (P) 90 517.33 T (arameters:) 96.01 517.33 T 0 F (te) 126 505.33 T (xt) 133.07 505.33 T (The string to be parsed.) 147.6 493.33 T 7 F (\245 setValue) 68.4 471.33 T 4 F (public void setValue\050Object) 90 456.33 T (value\051) 258 456.33 T 0 F (Set \050or change\051 the object that is to be edited. Primiti) 90 434.33 T (v) 301.12 434.33 T (e types such as "int" must be wrapped as the corresponding) 305.97 434.33 T (object type such as "ja) 90 422.33 T (v) 179.42 422.33 T (a.lang.Inte) 184.17 422.33 T (ger".) 226.23 422.33 T 3 F (P) 90 402.33 T (arameters:) 96.01 402.33 T 0 F (v) 126 390.33 T (alue) 130.75 390.33 T (The ne) 147.6 378.33 T (w tar) 174.84 378.33 T (get object to be edited. Note that this object should not be modi\336ed by the PropertyEditor) 194.93 378.33 T (,) 552.29 378.33 T (rather the PropertyEditor should create a ne) 147.6 366.33 T (w object to hold an) 321.75 366.33 T (y modi\336ed v) 398.26 366.33 T (alue.) 448.57 366.33 T 7 F (\245 supportsCustomEditor) 68.4 344.33 T 4 F (public boolean supportsCustomEditor\050\051) 90 329.33 T 3 F (Retur) 90 309.33 T (ns:) 114.84 309.33 T 0 F (T) 126 297.33 T (rue if the propertyEditor can pro) 131.76 297.33 T (vide a custom editor) 261.3 297.33 T (.) 342.13 297.33 T 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "90" 90 %%Page: "91" 91 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 54 746 558 756 R 7 X 0 0 0 1 0 0 0 K V 2 10 Q 0 X (JavaBeans) 54 749.33 T 54 32.67 558 42.67 R 7 X V 0 X (Sun Microsystems) 54 36 T (91) 301 36 T (7/24/97) 527.44 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 54 72 558 720 R 7 X V 0 0 0 1 0 0 0 K 54 694 558 706 C 0 0 0 1 0 0 0 K 54 705 522 705 2 L 1 H 2 Z 0 X 0 0 0 1 0 0 0 K N 54 702 522 702 2 L N 0 0 0 1 0 0 0 K 0 0 612 792 C 0 0 0 1 0 0 0 K 3 14 Q 0 X 0 0 0 1 0 0 0 K (Class Pr) 54 710.67 T (opertyEditorManager) 103.91 710.67 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 4 10 Q (public) 90 671.33 T (class) 132 671.33 T (java.beans.) 168 671.33 T 7 F (PropertyEditorManager) 234 671.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 4 F ( extends) 90 659.33 T (java.lang.) 162 659.33 T 7 F (Object) 222 659.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 F (The PropertyEditorManager can be used to locate a property editor for an) 90 635.33 T (y gi) 383.94 635.33 T (v) 398.97 635.33 T (en type name. This property editor) 403.82 635.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (must support the ja) 90 623.33 T (v) 166.19 623.33 T (a.beans.PropertyEditor interf) 170.94 623.33 T (ace for editing a gi) 286.65 623.33 T (v) 361.38 623.33 T (en object.) 366.23 623.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (The PropertyEditorManager uses three techniques for locating an editor for a gi) 90 605.33 T (v) 408.29 605.33 T (en type. First, it pro) 413.14 605.33 T (vides a re) 491.88 605.33 T (gis-) 530.05 605.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (terEditor method to allo) 90 593.33 T (w an editor to be speci\336cally re) 185.58 593.33 T (gistered for a gi) 310.96 593.33 T (v) 373.75 593.33 T (en type. Second it tries to locate a suitable) 378.6 593.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (class by adding "Editor" to the full quali\336ed classname of the gi) 90 581.33 T (v) 345.39 581.33 T (en type \050e.g. "foo.bah.F) 350.24 581.33 T (ozEditor"\051. Finally it tak) 444.43 581.33 T (es) 542.3 581.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (the simple classname \050without the package name\051 adds "Editor" to it and looks in a search-path of packages for a) 90 569.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (matching class.) 90 557.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (So for an input class foo.bah.Fred, the PropertyEditorManager w) 90 539.33 T (ould \336rst look in its tables to see if an editor had) 349.58 539.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (been re) 90 527.33 T (gistered for foo.bah.Fred and if so use that. Then it will look for a foo.bah.FredEditor class. Then it will look) 119 527.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (for \050say\051 standardEditorsP) 90 515.33 T (ackage.FredEditor class.) 194.83 515.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K -0.2 (Def) 90 497.33 P -0.2 (ault PropertyEditors will be pro) 104.89 497.33 P -0.2 (vided for the Ja) 230.61 497.33 P -0.2 (v) 291.75 497.33 P -0.2 (a primiti) 296.5 497.33 P -0.2 (v) 330.22 497.33 P -0.2 (e types "boolean", "byte", "short", "int", "long", "\337oat",) 335.07 497.33 P 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (and "double"; and for the classes ja) 90 485.33 T (v) 230.71 485.33 T (a.lang.String. ja) 235.46 485.33 T (v) 298.59 485.33 T (a.a) 303.34 485.33 T (wt.Color) 314.57 485.33 T (, and ja) 349.45 485.33 T (v) 378.41 485.33 T (a.a) 383.16 485.33 T (wt.F) 394.39 485.33 T (ont.) 412.3 485.33 T 0 0 0 1 0 0 0 K 54 446 558 456 C 0 0 0 1 0 0 0 K 53.67 452.5 207.83 452.5 2 L 1 H 2 Z 0 X 0 0 0 1 0 0 0 K N 0 0 0 1 0 0 0 K 0 0 612 792 C 0 0 0 1 0 0 0 K 3 12 Q 0 X 0 0 0 1 0 0 0 K (Methods) 54 460 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 7 10 Q (\245 findEditor) 68.4 426.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 4 F (public static PropertyEditor) 90 411.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (findEditor\050Class) 90 399.33 T (targetType\051) 192 399.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 F (Locate a v) 90 377.33 T (alue editor for a gi) 131.4 377.33 T (v) 205.02 377.33 T (en tar) 209.87 377.33 T (get type.) 232.18 377.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 3 F (P) 90 357.33 T (arameters:) 96.01 357.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 F (tar) 126 345.33 T (getT) 136.37 345.33 T (ype) 153.9 345.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (The Class object for the type to be edited) 147.6 333.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 3 F (Retur) 90 313.33 T (ns:) 114.84 313.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 F (An editor object for the gi) 126 301.33 T (v) 229.9 301.33 T (en tar) 234.75 301.33 T (get class. The result is null if no suitable editor can be found.) 257.06 301.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 7 F (\245 getEditorSearchPath) 68.4 279.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 4 F (public static String[] getEditorSearchPath\050\051) 90 264.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 3 F (Retur) 90 244.33 T (ns:) 114.84 244.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 F (The array of package names that will be searched in order to \336nd property editors.) 126 232.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 7 F (\245 registerEditor) 68.4 192.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 4 F (public static void) 90 177.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (registerEditor\050Class) 90 165.33 T (targetType, Class) 216 165.33 T (editorClass\051) 324 165.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 F (Re) 90 143.33 T (gister an editor class to be used to editor v) 100.96 143.33 T (alues of a gi) 269.3 143.33 T (v) 317.65 143.33 T (en tar) 322.5 143.33 T (get class.) 344.81 143.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 3 F (P) 90 123.33 T (arameters:) 96.01 123.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 F (tar) 126 111.33 T (getT) 136.37 111.33 T (ype) 153.9 111.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (the Class object of the type to be edited) 147.6 99.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (editorClass) 126 87.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (the Class object of the editor class. If this is null, then an) 147.6 75.33 T (y e) 374.1 75.33 T (xisting de\336nition will be remo) 385.89 75.33 T (v) 506.86 75.33 T (ed.) 511.71 75.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "91" 91 %%Page: "92" 92 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 54 746 558 756 R 7 X 0 0 0 1 0 0 0 K V 2 10 Q 0 X (JavaBeans) 54 749.33 T 54 32.67 558 42.67 R 7 X V 0 X (Sun Microsystems) 54 36 T (92) 301 36 T (7/24/97) 527.44 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 54 72 558 720 R 7 X V 7 F 0 X (\245 setEditorSearchPath) 68.4 713.33 T 4 F (public static void) 90 698.33 T (setEditorSearchPath\050String) 90 686.33 T (path[]\051) 252 686.33 T 0 F (Change the list of package names that will be used for \336nding property editors.) 90 664.33 T 3 F (P) 90 644.33 T (arameters:) 96.01 644.33 T 0 F (path) 126 632.33 T (Array of package names.) 147.6 620.33 T 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "92" 92 %%Page: "93" 93 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 54 746 558 756 R 7 X 0 0 0 1 0 0 0 K V 2 10 Q 0 X (JavaBeans) 54 749.33 T 54 32.67 558 42.67 R 7 X V 0 X (Sun Microsystems) 54 36 T (93) 301 36 T (7/24/97) 527.44 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 54 72 558 720 R 7 X V 0 0 0 1 0 0 0 K 54 694 558 706 C 0 0 0 1 0 0 0 K 54 705 522 705 2 L 1 H 2 Z 0 X 0 0 0 1 0 0 0 K N 54 702 522 702 2 L N 0 0 0 1 0 0 0 K 0 0 612 792 C 0 0 0 1 0 0 0 K 3 14 Q 0 X 0 0 0 1 0 0 0 K (Class Pr) 54 710.67 T (opertyEditorSupport) 103.91 710.67 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 4 10 Q (public) 90 671.33 T (class) 132 671.33 T (java.beans.) 168 671.33 T 7 F (PropertyEditorSupport) 234 671.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 4 F ( extends) 90 659.33 T (java.lang.) 162 659.33 T 7 F (Object) 222 659.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 4 F ( implements java.beans.) 90 647.33 T 7 F (PropertyEditor) 246 647.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 F (This is a support class to help b) 90 623.33 T (uild property editors.) 215.63 623.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (It can be used either as a base class or as a delag) 90 605.33 T (atee.) 283.22 605.33 T 0 0 0 1 0 0 0 K 54 566 558 576 C 0 0 0 1 0 0 0 K 53.67 572.5 207.83 572.5 2 L 1 H 2 Z 0 X 0 0 0 1 0 0 0 K N 0 0 0 1 0 0 0 K 0 0 612 792 C 0 0 0 1 0 0 0 K 3 12 Q 0 X 0 0 0 1 0 0 0 K (Constructors) 54 580 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 7 10 Q (\245 PropertyEditorSupport) 68.4 546.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 4 F (protected PropertyEditorSupport\050\051) 90 531.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 F (Constructor for use by deri) 90 509.33 T (v) 197.51 509.33 T (ed PropertyEditor classes.) 202.36 509.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 7 F (\245 PropertyEditorSupport) 68.4 487.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 4 F (protected PropertyEditorSupport\050Object) 90 472.33 T (source\051) 324 472.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 F (Constructor for use when a PropertyEditor is dele) 90 450.33 T (g) 288.43 450.33 T (ating to us.) 293.38 450.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 3 F (P) 90 430.33 T (arameters:) 96.01 430.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 F (source) 126 418.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (The source to use for an) 147.6 406.33 T (y e) 243.81 406.33 T (v) 255.5 406.33 T (ents we \336re.) 260.35 406.33 T 0 0 0 1 0 0 0 K 54 367 558 377 C 0 0 0 1 0 0 0 K 53.67 373.5 207.83 373.5 2 L 1 H 2 Z 0 X 0 0 0 1 0 0 0 K N 0 0 0 1 0 0 0 K 0 0 612 792 C 0 0 0 1 0 0 0 K 3 12 Q 0 X 0 0 0 1 0 0 0 K (Methods) 54 381 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 7 10 Q (\245 addPropertyChangeListener) 68.4 347.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 4 F (public synchronized void) 90 332.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (addPropertyChangeListener\050PropertyChangeListener) 90 320.33 T (listener\051) 384 320.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 F (Re) 90 298.33 T (gister a listener for the PropertyChange e) 100.96 298.33 T (v) 265.12 298.33 T (ent. The class will \336re a PropertyChange v) 269.97 298.33 T (alue whene) 440.25 298.33 T (v) 485.26 298.33 T (er the v) 490.11 298.33 T (alue is) 519.85 298.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (updated.) 90 286.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 3 F (P) 90 266.33 T (arameters:) 96.01 266.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 F (listener) 126 254.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (An object to be in) 147.6 242.33 T (v) 218.86 242.33 T (ok) 223.66 242.33 T (ed when a PropertyChange e) 233.56 242.33 T (v) 348.28 242.33 T (ent is \336red.) 353.13 242.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 7 F (\245 firePropertyChange) 68.4 220.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 4 F (public void firePropertyChange\050\051) 90 205.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 F (Report that we ha) 90 183.33 T (v) 160.62 183.33 T (e been modi\336ed to an) 165.47 183.33 T (y interested listeners.) 251.42 183.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 3 F (P) 90 163.33 T (arameters:) 96.01 163.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 F (source) 126 151.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (The PropertyEditor that caused the e) 147.6 139.33 T (v) 293.71 139.33 T (ent.) 298.56 139.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 7 F (\245 getAsText) 68.4 117.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 4 F (public String getAsText\050\051) 90 102.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 3 F (Retur) 90 82.33 T (ns:) 114.84 82.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "93" 93 %%Page: "94" 94 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 54 746 558 756 R 7 X 0 0 0 1 0 0 0 K V 2 10 Q 0 X (JavaBeans) 54 749.33 T 54 32.67 558 42.67 R 7 X V 0 X (Sun Microsystems) 54 36 T (94) 301 36 T (7/24/97) 527.44 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 54 72 558 720 R 7 X V 0 F 0 X (The property v) 126 713.33 T (alue as a string suitable for presentation to a human to edit.) 185.18 713.33 T (Returns "null" is the v) 126 695.33 T (alue can't be e) 214.47 695.33 T (xpressed as a string.) 270.82 695.33 T -0.04 (If a non-null v) 126 677.33 P -0.04 (alue is returned, then the PropertyEditor should be prepared to parse that string back in setAs-) 183.12 677.33 P (T) 126 665.33 T (e) 131.41 665.33 T (xt\050\051.) 135.7 665.33 T 7 F (\245 getCustomEditor) 68.4 643.33 T 4 F (public Component getCustomEditor\050\051) 90 628.33 T 0 F -0.06 (A PropertyEditor may chose to mak) 90 606.33 P -0.06 (e a) 233.75 606.33 P -0.06 (v) 244.87 606.33 P -0.06 (ailable a full custom Component that edits its property v) 249.62 606.33 P -0.06 (alue. It is the respon-) 474.09 606.33 P (sibility of the PropertyEditor to hook itself up to its editor Component itself and to report property v) 90 594.33 T (alue changes by) 490.02 594.33 T (\336ring a PropertyChange e) 90 582.33 T (v) 192.79 582.33 T (ent.) 197.64 582.33 T -0.07 (The higher) 90 564.33 P -0.07 (-le) 133.33 564.33 P -0.07 (v) 143.63 564.33 P -0.07 (el code that calls getCustomEditor may either embed the Component in some lar) 148.48 564.33 P -0.07 (ger property sheet, or) 470.24 564.33 P (it may put it in its o) 90 552.33 T (wn indi) 168.1 552.33 T (vidual dialog, or ...) 198.13 552.33 T 3 F (Retur) 90 532.33 T (ns:) 114.84 532.33 T 0 F -0.24 (A ja) 126 520.33 P -0.24 (v) 142.5 520.33 P -0.24 (a.a) 147.25 520.33 P -0.24 (wt.Component that will allo) 158.48 520.33 P -0.24 (w a human to directly edit the current property v) 269.73 520.33 P -0.24 (alue. May be null if this) 461.41 520.33 P (is not supported.) 126 508.33 T 7 F (\245 getJavaInitializationString) 68.4 486.33 T 4 F (public String getJavaInitializationString\050\051) 90 471.33 T 0 F -0.32 (This method is intended for use when generating Ja) 90 449.33 P -0.32 (v) 293.35 449.33 P -0.32 (a code to set the v) 298.1 449.33 P -0.32 (alue of the property) 368.2 449.33 P -0.32 (. It should return a fragment) 445.2 449.33 P (of Ja) 90 437.33 T (v) 108.96 437.33 T (a code that can be used to initialize a v) 113.71 437.33 T (ariable with the current property v) 268.15 437.33 T (alue.) 404.81 437.33 T (Example results are "2", "ne) 90 419.33 T (w Color\050127,127,34\051", "Color) 202.8 419.33 T (.orange", etc.) 322.35 419.33 T 3 F (Retur) 90 399.33 T (ns:) 114.84 399.33 T 0 F (A fragment of Ja) 126 387.33 T (v) 193.28 387.33 T (a code representing an initializer for the current v) 198.03 387.33 T (alue.) 395.5 387.33 T 7 F (\245 getTags) 68.4 365.33 T 4 F (public String[] getTags\050\051) 90 350.33 T 0 F (If the property v) 90 328.33 T (alue must be one of a set of kno) 155.01 328.33 T (wn tagged v) 281.96 328.33 T (alues, then this method should return an array of the tag) 330.59 328.33 T -0.16 (v) 90 316.33 P -0.16 (alues. This can be used to represent \050for e) 94.75 316.33 P -0.16 (xample\051 enum v) 259.7 316.33 P -0.16 (alues. If a PropertyEditor supports tags, then it should sup-) 324.13 316.33 P (port the use of setAsT) 90 304.33 T (e) 177.62 304.33 T (xt with a tag v) 181.91 304.33 T (alue as a w) 238.88 304.33 T (ay of setting the v) 282.93 304.33 T (alue.) 354.34 304.33 T 3 F (Retur) 90 284.33 T (ns:) 114.84 284.33 T 0 F (The tag v) 126 272.33 T (alues for this property) 163.52 272.33 T (. May be null if this property cannot be represented as a tagged v) 250.91 272.33 T (alue.) 510.05 272.33 T 7 F (\245 getValue) 68.4 250.33 T 4 F (public Object getValue\050\051) 90 235.33 T 3 F (Retur) 90 215.33 T (ns:) 114.84 215.33 T 0 F (The v) 126 203.33 T (alue of the property) 148.8 203.33 T (.) 226.74 203.33 T 7 F (\245 isPaintable) 68.4 181.33 T 4 F (public boolean isPaintable\050\051) 90 166.33 T 3 F (Retur) 90 146.33 T (ns:) 114.84 146.33 T 0 F (T) 126 134.33 T (rue if the class will honor the paintV) 131.76 134.33 T (alue method.) 277.02 134.33 T 7 F (\245 paintValue) 68.4 112.33 T 4 F (public void paintValue\050Graphics) 90 97.33 T (gfx, Rectangle) 282 97.33 T (box\051) 372 97.33 T 0 F (P) 90 75.33 T (aint a representation of the v) 95.41 75.33 T (alue into a gi) 209.3 75.33 T (v) 260.99 75.33 T (en area of screen real estate. Note that the propertyEditor is responsible) 265.84 75.33 T 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "94" 94 %%Page: "95" 95 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 54 746 558 756 R 7 X 0 0 0 1 0 0 0 K V 2 10 Q 0 X (JavaBeans) 54 749.33 T 54 32.67 558 42.67 R 7 X V 0 X (Sun Microsystems) 54 36 T (95) 301 36 T (7/24/97) 527.44 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 54 72 558 720 R 7 X V 0 F 0 X (for doing its o) 90 713.33 T (wn clipping so that it \336ts into the gi) 146.14 713.33 T (v) 288.13 713.33 T (en rectangle.) 292.98 713.33 T (If the PropertyEditor doesn't honor paint requests \050see isP) 90 695.33 T (aintable\051 this method should be a silent noop.) 320.51 695.33 T 3 F (P) 90 675.33 T (arameters:) 96.01 675.33 T 0 F (gfx) 126 663.33 T (Graphics object to paint into.) 147.6 651.33 T (box) 126 639.33 T (Rectangle within graphics object into which we should paint.) 147.6 627.33 T 7 F (\245 removePropertyChangeListener) 68.4 605.33 T 4 F (public synchronized void) 90 590.33 T (removePropertyChangeListener\050PropertyChangeListener) 90 578.33 T (listener\051) 402 578.33 T 0 F (Remo) 90 556.33 T (v) 113.74 556.33 T (e a listener for the PropertyChange e) 118.59 556.33 T (v) 264.97 556.33 T (ent.) 269.82 556.33 T 3 F (P) 90 536.33 T (arameters:) 96.01 536.33 T 0 F (listener) 126 524.33 T (The PropertyChange listener to be remo) 147.6 512.33 T (v) 307.7 512.33 T (ed.) 312.55 512.33 T 7 F (\245 setAsText) 68.4 490.33 T 4 F (public void setAsText\050String) 90 475.33 T (text\051) 264 475.33 T ( throws IllegalArgumentException) 72 463.33 T 0 F -0.09 (Set the property v) 90 441.33 P -0.09 (alue by parsing a gi) 160.85 441.33 P -0.09 (v) 238.55 441.33 P -0.09 (en String. May raise ja) 243.4 441.33 P -0.09 (v) 333.65 441.33 P -0.09 (a.lang.Ille) 338.4 441.33 P -0.09 (g) 378.24 441.33 P -0.09 (alAr) 383.19 441.33 P -0.09 (gumentException if either the String is) 400.78 441.33 P (badly formatted or if this kind of property can't be e) 90 429.33 T (xpressed as te) 297.17 429.33 T (xt.) 352.56 429.33 T 3 F (P) 90 409.33 T (arameters:) 96.01 409.33 T 0 F (te) 126 397.33 T (xt) 133.07 397.33 T (The string to be parsed.) 147.6 385.33 T 7 F (\245 setValue) 68.4 363.33 T 4 F (public void setValue\050Object) 90 348.33 T (value\051) 258 348.33 T 0 F (Set \050or change\051 the object that is to be edited.) 90 326.33 T 3 F (P) 90 306.33 T (arameters:) 96.01 306.33 T 0 F (v) 126 294.33 T (alue) 130.75 294.33 T (The ne) 147.6 282.33 T (w tar) 174.84 282.33 T (get object to be edited. Note that this object should not be modi\336ed by the PropertyEditor) 194.93 282.33 T (,) 552.29 282.33 T (rather the PropertyEditor should create a ne) 147.6 270.33 T (w object to hold an) 321.75 270.33 T (y modi\336ed v) 398.26 270.33 T (alue.) 448.57 270.33 T 7 F (\245 supportsCustomEditor) 68.4 248.33 T 4 F (public boolean supportsCustomEditor\050\051) 90 233.33 T 3 F (Retur) 90 213.33 T (ns:) 114.84 213.33 T 0 F (T) 126 201.33 T (rue if the propertyEditor can pro) 131.76 201.33 T (vide a custom editor) 261.3 201.33 T (.) 342.13 201.33 T 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "95" 95 %%Page: "96" 96 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 54 746 558 756 R 7 X 0 0 0 1 0 0 0 K V 2 10 Q 0 X (JavaBeans) 54 749.33 T (Miscellaneous) 500.23 749.33 T 54 32.67 558 42.67 R 7 X V 0 X (Sun Microsystems) 54 36 T (96) 301 36 T (7/24/97) 527.44 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 54 72 558 720 R 7 X V 3 18 Q 0 X (10) 72 708 T (Miscellaneous) 108 708 T 3 14 Q (10.1) 54 678.67 T ( java.beans.Beans) 82 678.67 T 0 12 Q (The java.beans.Beans class provides a few miscellaneous beans control methods.) 108 658 T 0.62 (The isDesignTime and isGuiAvailable methods allow a bean to test its environment so as to) 108 638 P (tailor its behaviour.) 108 624 T 3 14 Q (10.2) 54 596.67 T ( java.beans.Visibility) 82 596.67 T 0 12 Q 0.31 (Some beans may be run in both client GUI application and in \322invisible\323 server applications.) 108 576 P 0 (The java.beans.Visibility interface lets a container instruct a bean if it is in a server only envi-) 108 562 P (ronment.) 108 548 T 0.05 (This interface need only be supported by those beans that want to provide different behaviour) 108 528 P (in a server environment.) 108 514 T 3 14 Q (10.3) 54 486.67 T ( Instantiating a bean) 82 486.67 T 0 12 Q -0.41 (A bean can be delivered as either a serialized template \050which must be deserialized to create an) 108 466 P -0.41 (instance of the bean\051 or as an implementation class \050where a bean instance is created simply by) 108 452 P (creating an instance of the class\051.) 108 438 T -0.27 (If a programmer is certain that a bean is being delivered simply a class, then they can create an) 108 418 P (instance of the bean by doing a \322new\323:) 108 404 T 4 10 Q (JellyBean fred = new JellyBean\050\051;) 140.4 385.33 T 0 12 Q 0.84 (However we also provide a utility method \322Beans.instantiate\323 that can be used to allocate a) 108 366 P 0.16 (bean that can be either a class or a serialized template. Beans.instantiate will check whether a) 108 352 P 0.36 (given name represents either a serialized template or a class. If it represents a serialized tem-) 108 338 P 0.67 (plate, then Beans.instantiate will handle the mechanics of reading in the serialized form in a) 108 324 P (given ClassLoader context.) 108 310 T -0.04 (For example, in the following sample code, if the target ClassLoader has a serialized template) 108 290 P 0.12 (file \322acme.widgets.PurpleMutantWombat.ser\323 then Beans.instantiate will read in a bean from) 108 276 P (that template, otherwise it will look for a class \322acme.widgets.PurpleMutantWombat\323.) 108 262 T 4 10 Q (C) 140.4 243.33 T (lassLoader cl =) 146.4 243.33 T (this.getClass\050\051.) 242.4 243.33 T (getClassLoader\050\051;) 338.4 243.33 T (MutantWombat w = \050MutantWombat\051 Beans.instantiate\050cl,) 140.4 231.33 T (\322) 316.8 219.33 T (a) 322.8 219.33 T (cme) 328.8 219.33 T (.w) 346.8 219.33 T (idgets) 358.8 219.33 T (.P) 394.8 219.33 T (urpleMutantWombat) 406.8 219.33 T (\323) 508.8 219.33 T (\051) 514.8 219.33 T (;) 520.8 219.33 T 0 12 Q -0.26 (Beans.instantiate also checks whether the newly created bean is an Applet and if so provides it) 108 200 P (with a default Applet context.) 108 186 T -0.58 (In general, we recommend \050but do not require\051 that programers use Beans.instantiate when cre-) 108 166 P (ating beans, as it provides some isolation from how the bean is implemented and initialized.) 108 152 T -0.4 (If implementors chose to bypass Beans.instantiate then they must take care to emulate its func-) 108 132 P (tionality. For example, by providing applet contexts for beans that are applets.) 108 118 T 34 114 36 474 R V 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "96" 96 %%Page: "97" 97 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 54 746 558 756 R 7 X 0 0 0 1 0 0 0 K V 2 10 Q 0 X (JavaBeans) 54 749.33 T (Miscellaneous) 500.23 749.33 T 54 32.67 558 42.67 R 7 X V 0 X (Sun Microsystems) 54 36 T (97) 301 36 T (7/24/97) 527.44 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 54 72 558 720 R 7 X V 3 14 Q 0 X (10.4) 54 710.67 T ( Obtaining different type views of a Java Bean) 78.5 710.67 T 0 12 Q 0.51 (In Beans 1.0 each bean is represented by a single Java object. However in future versions of) 108 690 P 0.28 (Java Beans we may wish to add support for more complex beans, where a set of Java objects) 108 676 P -0.07 (cooperate to provide a set of differently typed views that are all part of one bean.) 108 662 P -0.07 ( \050See Section) 494.82 662 P (2.10\051) 108 648 T 0.53 (Therefore when an application program wishes to determine if a Java Bean supports a target) 108 628 P 0.27 (interface or if it wishes to cast a Java Bean to a target interface, we) 108 614 P 0.27 (require t) 435.89 614 P 0.27 (hat the Beans.in-) 476.48 614 P -0.39 (stanceOf and Beans.getInstanceOf methods are used. These methods are initially implemented) 108 600 P -0.52 (in Beans 1.0 simply in terms of the Java \322instanceof\323 operator, but as we evolve the Java Beans) 108 586 P -0.07 (APIs this may change.) 108 572 P -0.07 ( S) 215.78 572 P -0.07 (o developers) 225.39 572 P -0.07 (should u) 289.23 572 P -0.07 (se these methods now to allow their application) 330.17 572 P (code to work with future extensions.) 108 558 T (So a typical sequence for attempting to assess if a bean supports a particular API might be:) 108 538 T 4 10 Q (D) 140.4 519.33 T (ataseBaseAccessor x = getDBAccessor\050\051;) 146.4 519.33 T (java.awt.Component y = null) 140.4 507.33 T (;) 302.4 507.33 T (i) 140.4 495.33 T (f \050Beans.isInstanceOf\050x,) 146.4 495.33 T (java.awt.Component.class\051) 296.4 495.33 T (\051 {) 446.4 495.33 T (y = \050java.awt.Component\051 Beans.getInstanceOf\050x) 165.6 483.33 T (,) 441.6 483.33 T (java.awt.Component.class\051) 392.4 471.33 T (;) 542.4 471.33 T (}) 140.4 459.33 T 34 644 36 670 R V 34 610 36 622 R V 34 568 36 580 R V 34 468 36 526 R V 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "97" 97 %%Page: "98" 98 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 54 746 558 756 R 7 X 0 0 0 1 0 0 0 K V 2 10 Q 0 X (JavaBeans) 54 749.33 T 54 32.67 558 42.67 R 7 X V 0 X (Sun Microsystems) 54 36 T (98) 301 36 T (7/24/97) 527.44 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 54 72 558 720 R 7 X V 0 0 0 1 0 0 0 K 54 694 558 706 C 0 0 0 1 0 0 0 K 54 705 522 705 2 L 1 H 2 Z 0 X 0 0 0 1 0 0 0 K N 54 702 522 702 2 L N 0 0 0 1 0 0 0 K 0 0 612 792 C 0 0 0 1 0 0 0 K 3 14 Q 0 X 0 0 0 1 0 0 0 K (Class Beans) 54 710.67 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 4 10 Q (public) 90 671.33 T (class) 132 671.33 T (java.beans.) 168 671.33 T 7 F (Beans) 234 671.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 4 F ( extends) 90 659.33 T (java.lang.) 162 659.33 T 7 F (Object) 222 659.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 F (This class pro) 90 635.33 T (vides some general purpose beans control methods.) 145.4 635.33 T 0 0 0 1 0 0 0 K 54 596 558 606 C 0 0 0 1 0 0 0 K 53.67 602.5 207.83 602.5 2 L 1 H 2 Z 0 X 0 0 0 1 0 0 0 K N 0 0 0 1 0 0 0 K 0 0 612 792 C 0 0 0 1 0 0 0 K 3 12 Q 0 X 0 0 0 1 0 0 0 K (Methods) 54 610 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 7 10 Q (\245 getInstanceOf) 68.4 576.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 4 F (public static Object) 90 561.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (getInstanceOf\050Object) 90 549.33 T (bean, Class) 216 549.33 T (targetType\051) 288 549.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 F (From a gi) 90 527.33 T (v) 128.64 527.33 T (en bean, obtain an object representing a speci\336ed type vie) 133.49 527.33 T (w of that source object.) 364.3 527.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K -0.16 (The result may be the same object or a dif) 90 509.33 P -0.16 (ferent object. If the requested tar) 256.32 509.33 P -0.16 (get vie) 385.84 509.33 P -0.16 (w isn't a) 412.37 509.33 P -0.16 (v) 444.76 509.33 P -0.16 (ailable then the gi) 449.51 509.33 P -0.16 (v) 520.15 509.33 P -0.16 (en bean) 525 509.33 P 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (is returned.) 90 497.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (This method is pro) 90 479.33 T (vided in Beans 1.0 as a hook to allo) 165.13 479.33 T (w the addition of more \337e) 307.37 479.33 T (xible bean beha) 410.82 479.33 T (viour in the future.) 473.38 479.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 3 F (P) 90 459.33 T (arameters:) 96.01 459.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 F (obj) 126 447.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (Object from which we w) 147.6 435.33 T (ant to obtain a vie) 246.92 435.33 T (w) 318.33 435.33 T (.) 324.9 435.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (tar) 126 423.33 T (getT) 136.37 423.33 T (ype) 153.9 423.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (The type of vie) 147.6 411.33 T (w we'd lik) 208.17 411.33 T (e to get.) 249.31 411.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 7 F (\245 instantiate) 68.4 389.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 4 F (public static Object) 90 374.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (instantiate\050ClassLoader) 90 362.33 T (cls, String) 234 362.33 T (beanName\051) 306 362.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( throws IOException, ClassNotFoundException) 72 350.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 F (Instantiate a bean.) 90 328.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (The bean is created based on a name relati) 90 310.33 T (v) 259.14 310.33 T (e to a class-loader) 263.99 310.33 T (. This name should be a dot-separated name such as) 335.36 310.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ("a.b) 90 298.33 T (.c".) 105.62 298.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K -0.04 (In Beans 1.0 the gi) 90 280.33 P -0.04 (v) 164.85 280.33 P -0.04 (en name can indicate either a serialized object or a class. Other mechanisms may be added in the) 169.7 280.33 P 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (future. In beans 1.0 we \336rst try to treat the beanName as a serialized object name then as a class name.) 90 268.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (When using the beanName as a serialized object name we con) 90 250.33 T (v) 338.42 250.33 T (ert the gi) 343.27 250.33 T (v) 378.57 250.33 T (en beanName to a resource pathname and) 383.42 250.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (add a trailing ".ser" suf) 90 238.33 T (\336x. W) 182.06 238.33 T (e then try to load a serialized object from that resource.) 206.26 238.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (F) 90 220.33 T (or e) 95.41 220.33 T (xample, gi) 110.53 220.33 T (v) 152.5 220.33 T (en a beanName of "x.y", Beans.instantiate w) 157.35 220.33 T (ould \336rst try to read a serialized object from the) 335.65 220.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (resource "x/y) 90 208.33 T (.ser" and if that f) 142.58 208.33 T (ailed it w) 209.6 208.33 T (ould try to load the class "x.y" and create an instance of that class.) 246.72 208.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (If the bean is a subtype of ja) 90 190.33 T (v) 202.83 190.33 T (a.applet.Applet, then it is gi) 207.58 190.33 T (v) 318.16 190.33 T (en some special initialization. First, it is supplied with a) 323.01 190.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (def) 90 178.33 T (ault AppletStub and AppletConte) 102.67 178.33 T (xt. Second, if it w) 236.13 178.33 T (as instantiated from a classname the applet's "init" method is) 307.14 178.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (called. \050If the bean w) 90 166.33 T (as deserialized this step is skipped.\051) 174.59 166.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K -0.24 (Note that for beans which are applets, it is the caller's responsiblity to call "start" on the applet. F) 90 148.33 P -0.24 (or correct beha) 473.24 148.33 P -0.24 (viour) 532.53 148.33 P -0.24 (,) 553.24 148.33 P 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (this should be done after the applet has been added into a visible A) 90 136.33 T (WT container) 356.56 136.33 T (.) 411.27 136.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (Note that applets created via beans.instantiate run in a slightly dif) 90 118.33 T (ferent en) 351.66 118.33 T (vironment than applets running inside) 386.52 118.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (bro) 90 106.33 T (wsers. In particular) 103.08 106.33 T (, bean applets ha) 179.6 106.33 T (v) 246.05 106.33 T (e no access to "parameters", so the) 250.9 106.33 T (y may wish to pro) 389.15 106.33 T (vide property get/set) 461.22 106.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (methods to set parameter v) 90 94.33 T (alues. W) 197.51 94.33 T (e advise bean-applet de) 231.7 94.33 T (v) 325.03 94.33 T (elopers to test their bean-applets ag) 329.88 94.33 T (ainst both the JDK) 471.19 94.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (appletvie) 90 82.33 T (wer \050for a reference bro) 126.41 82.33 T (wser en) 221.1 82.33 T (vironment\051 and the BDK BeanBox \050for a reference bean container\051.) 251.52 82.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "98" 98 %%Page: "99" 99 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 54 746 558 756 R 7 X 0 0 0 1 0 0 0 K V 2 10 Q 0 X (JavaBeans) 54 749.33 T 54 32.67 558 42.67 R 7 X V 0 X (Sun Microsystems) 54 36 T (99) 301 36 T (7/24/97) 527.44 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 54 72 558 720 R 7 X V 3 F 0 X (P) 90 713.33 T (arameters:) 96.01 713.33 T 0 F (classLoader) 126 701.33 T (the class-loader from which we should create the bean. If this is null, then the system class-loader is) 147.6 689.33 T (used.) 147.6 677.33 T (beanName) 126 665.33 T (the name of the bean within the class-loader) 147.6 653.33 T (. F) 323.4 653.33 T (or e) 333.81 653.33 T (xample "sun.beanbox.foobah") 348.93 653.33 T 3 F (Thr) 90 633.33 T (o) 106.49 633.33 T (ws:) 111.39 633.33 T 0 F (ClassNotF) 128.33 633.33 T (oundException) 170.41 633.33 T (if the class of a serialized object could not be found.) 126 621.33 T 3 F (Thr) 90 601.33 T (o) 106.49 601.33 T (ws:) 111.39 601.33 T 0 F (IOException) 128.33 601.33 T (if an I/O error occurs.) 126 589.33 T 7 F (\245 isDesignTime) 68.4 567.33 T 4 F (public static boolean isDesignTime\050\051) 90 552.33 T 0 F (T) 90 530.33 T (est if we are in design-mode.) 95.41 530.33 T 3 F (Retur) 90 510.33 T (ns:) 114.84 510.33 T 0 F (T) 126 498.33 T (rue if we are running in an application construction en) 131.76 498.33 T (vironment.) 348.26 498.33 T 7 F (\245 isGuiAvailable) 68.4 476.33 T 4 F (public static boolean isGuiAvailable\050\051) 90 461.33 T 3 F (Retur) 90 441.33 T (ns:) 114.84 441.33 T 0 F (T) 126 429.33 T (rue if we are running in an en) 131.76 429.33 T (vironment where beans can assume that an interacti) 249.38 429.33 T (v) 455.47 429.33 T (e GUI is a) 460.32 429.33 T (v) 500.94 429.33 T (ailable, so) 505.69 429.33 T (the) 126 417.33 T (y can pop up dialog box) 138.07 417.33 T (es, etc. This will normally return true in a windo) 234.3 417.33 T (wing en) 427.64 417.33 T (vironment, and will nor-) 459.18 417.33 T (mally return f) 126 405.33 T (alse in a serv) 180.89 405.33 T (er en) 232.67 405.33 T (vironment or if an application is running as part of a batch job) 251.98 405.33 T (.) 499.88 405.33 T 7 F (\245 isInstanceOf) 68.4 383.33 T 4 F (public static boolean) 90 368.33 T (isInstanceOf\050Object) 90 356.33 T (bean, Class) 210 356.33 T (targetType\051) 282 356.33 T 0 F -0.18 (Check if a bean can be vie) 90 334.33 P -0.18 (wed as a gi) 194.2 334.33 P -0.18 (v) 238.12 334.33 P -0.18 (en tar) 242.97 334.33 P -0.18 (get type. The result will be true if the Beans.getInstanceof method can be) 265.1 334.33 P (used on the gi) 90 322.33 T (v) 145.58 322.33 T (en bean to obtain an object that represents the speci\336ed tar) 150.43 322.33 T (getT) 384.09 322.33 T (ype type vie) 401.62 322.33 T (w) 450.25 322.33 T (.) 456.82 322.33 T 3 F (P) 90 302.33 T (arameters:) 96.01 302.33 T 0 F (bean) 126 290.33 T (Bean from which we w) 147.6 278.33 T (ant to obtain a vie) 240.81 278.33 T (w) 312.22 278.33 T (.) 318.79 278.33 T (tar) 126 266.33 T (getT) 136.37 266.33 T (ype) 153.9 266.33 T (The type of vie) 147.6 254.33 T (w we'd lik) 208.17 254.33 T (e to get.) 249.31 254.33 T 3 F (Retur) 90 234.33 T (ns:) 114.84 234.33 T 0 F ("true" if the gi) 126 222.33 T (v) 183.07 222.33 T (en bean supports the gi) 187.92 222.33 T (v) 279.88 222.33 T (en tar) 284.73 222.33 T (getT) 307.04 222.33 T (ype.) 324.57 222.33 T 7 F (\245 setDesignTime) 68.4 200.33 T 4 F (public static void) 90 185.33 T (setDesignTime\050boolean) 90 173.33 T (isDesignTime\051) 222 173.33 T ( throws SecurityException) 72 161.33 T 0 F (Used to indicate whether of not we are running in an application b) 90 139.33 T (uilder en) 354.75 139.33 T (vironment. Note that this method is secu-) 389.62 139.33 T (rity check) 90 127.33 T (ed and is not a) 129.61 127.33 T (v) 187.18 127.33 T (ailable to \050for e) 191.93 127.33 T (xample\051 untrusted applets.) 253.15 127.33 T 3 F (P) 90 107.33 T (arameters:) 96.01 107.33 T 0 F (isDesignT) 126 95.33 T (ime) 166.76 95.33 T (T) 147.6 83.33 T (rue if we're in an application b) 153.36 83.33 T (uilder tool.) 274.93 83.33 T 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "99" 99 %%Page: "100" 100 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 54 746 558 756 R 7 X 0 0 0 1 0 0 0 K V 2 10 Q 0 X (JavaBeans) 54 749.33 T 54 32.67 558 42.67 R 7 X V 0 X (Sun Microsystems) 54 36 T (100) 298.5 36 T (7/24/97) 527.44 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 54 72 558 720 R 7 X V 7 F 0 X (\245 setGuiAvailable) 68.4 713.33 T 4 F (public static void) 90 698.33 T (setGuiAvailable\050boolean) 90 686.33 T (isGuiAvailable\051) 234 686.33 T ( throws SecurityException) 72 674.33 T 0 F (Used to indicate whether of not we are running in an en) 90 652.33 T (vironment where GUI interaction is a) 312.05 652.33 T (v) 461.54 652.33 T (ailable. Note that this) 466.29 652.33 T (method is security check) 90 640.33 T (ed and is not a) 189.05 640.33 T (v) 246.62 640.33 T (ailable to \050for e) 251.37 640.33 T (xample\051 untrusted applets.) 312.59 640.33 T 3 F (P) 90 620.33 T (arameters:) 96.01 620.33 T 0 F (isGuiA) 126 608.33 T (v) 154.15 608.33 T (ailable) 158.9 608.33 T (T) 147.6 596.33 T (rue if GUI interaction is a) 153.36 596.33 T (v) 256.19 596.33 T (ailable.) 260.94 596.33 T 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "100" 100 %%Page: "101" 101 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 54 746 558 756 R 7 X 0 0 0 1 0 0 0 K V 2 10 Q 0 X (JavaBeans) 54 749.33 T 54 32.67 558 42.67 R 7 X V 0 X (Sun Microsystems) 54 36 T (101) 298.5 36 T (7/24/97) 527.44 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 54 72 558 720 R 7 X V 0 0 0 1 0 0 0 K 54 694 558 706 C 0 0 0 1 0 0 0 K 54 705 522 705 2 L 1 H 2 Z 0 X 0 0 0 1 0 0 0 K N 54 702 522 702 2 L N 0 0 0 1 0 0 0 K 0 0 612 792 C 0 0 0 1 0 0 0 K 3 14 Q 0 X 0 0 0 1 0 0 0 K (Interface V) 54 710.67 T (isibility) 121.51 710.67 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 4 10 Q (public) 90 671.33 T (interface) 132 671.33 T (java.beans.) 192 671.33 T 7 F (Visibility) 258 671.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 F (Under some circumstances a bean may be run on serv) 90 647.33 T (ers where a GUI is not a) 305.07 647.33 T (v) 402.06 647.33 T (ailable. This interf) 406.81 647.33 T (ace can be used to) 480.31 647.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (query a bean to determine whether it absolutely needs a gui, and to advise the bean whether a GUI is a) 90 635.33 T (v) 499.43 635.33 T (ailable.) 504.18 635.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (This interf) 90 617.33 T (ace is for e) 131.84 617.33 T (xpert de) 175.28 617.33 T (v) 207.52 617.33 T (elopers, and is not needed for normal simple beans. T) 212.37 617.33 T (o a) 425.7 617.33 T (v) 437.44 617.33 T (oid confusing end-users we) 442.24 617.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (a) 90 605.33 T (v) 94.24 605.33 T (oid using getXXX setXXX design patterns for these methods.) 99.04 605.33 T 0 0 0 1 0 0 0 K 54 566 558 576 C 0 0 0 1 0 0 0 K 53.67 572.5 207.83 572.5 2 L 1 H 2 Z 0 X 0 0 0 1 0 0 0 K N 0 0 0 1 0 0 0 K 0 0 612 792 C 0 0 0 1 0 0 0 K 3 12 Q 0 X 0 0 0 1 0 0 0 K (Methods) 54 580 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 7 10 Q (\245 avoidingGui) 68.4 546.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 4 F (public boolean avoidingGui\050\051) 90 531.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 3 F (Retur) 90 511.33 T (ns:) 114.84 511.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 F (true if the bean is currently a) 126 499.33 T (v) 240.77 499.33 T (oiding use of the Gui. e.g. due to a call on dontUseGui\050\051.) 245.57 499.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 7 F (\245 dontUseGui) 68.4 477.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 4 F (public void dontUseGui\050\051) 90 462.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 F (This method instructs the bean that it should not use the Gui.) 90 440.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 7 F (\245 needsGui) 68.4 418.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 4 F (public boolean needsGui\050\051) 90 403.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 3 F (Retur) 90 383.33 T (ns:) 114.84 383.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 F (T) 126 371.33 T (rue if the bean absolutely needs a GUI a) 131.76 371.33 T (v) 292.07 371.33 T (ailable in order to get its w) 296.82 371.33 T (ork done.) 403.93 371.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 7 F (\245 okToUseGui) 68.4 349.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 4 F (public void okToUseGui\050\051) 90 334.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 F (This method instructs the bean that it is OK to use the Gui.) 90 312.33 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "101" 101 %%Page: "102" 102 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 54 746 558 756 R 7 X 0 0 0 1 0 0 0 K V 2 10 Q 0 X (JavaBeans) 54 749.33 T (Packaging) 515.23 749.33 T 54 32.67 558 42.67 R 7 X V 0 X (Sun Microsystems) 54 36 T (102) 298.5 36 T (7/24/97) 527.44 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 54 72 558 720 R 7 X V 3 18 Q 0 X (11) 72 708 T (Packaging) 108 708 T 3 14 Q (11.1) 54 678.67 T ( Goals and Non Goals) 82 678.67 T 0 12 Q -0.19 (This chapter specifies the format and conventions needed so that a packaged Java Bean can be) 108 658 P (used by tools and applications.) 108 644 T 0.05 (The Java Beans specification does) 108 624 P 2 F 0.05 (not) 275.86 624 P 0 F 0.05 ( prescribe a format to be used by an application to store) 291.2 624 P 0.42 (the Java Beans it uses. In particular, for the special but very important case of an application) 108 610 P 0.21 (builder, the Java Beans specification does) 108 596 P 2 F 0.21 (not) 312.87 596 P 0 F 0.21 ( prescribe a format for projects,) 328.2 596 P 2 F 0.21 (nor) 483.73 596 P 0 F 0.21 ( does it pre-) 500.39 596 P 0.47 (scribe a format for the delivery of built applications. So for example, although beans are ini-) 108 582 P 0.81 (tially delivered as JAR files, they may be arbitrarily repackaged when they are built into an) 108 568 P (application.) 108 554 T 3 14 Q (11.2) 54 526.67 T ( Overview) 82 526.67 T ( of JAR files) 143.04 526.67 T 0 12 Q -0.08 (J) 108 506 P -0.08 (ava Beans) 112.67 506 P -0.08 (are packaged and delivered in JAR files, which are a new technology supported in) 164.49 506 P -0.13 (JDK1.1) 108 492 P -0.13 (. JAR files are used to collect class files, serialized objects, images, help files and sim-) 145 492 P (ilar) 108 478 T 2 F (resource) 127 478 T 0 F (files) 171.98 478 T 0.69 (A JAR file is a ZIP format archive file that may optionally have a) 108 458 P 2 F 0.69 (manifest file) 435.61 458 P 0 F 0.69 (\050see Section) 498.99 458 P 0.05 (11.5 below\051) 108 444 P 0.05 (with additional information describing the contents of the JAR file) 168.42 444 P 0.05 (.) 488.52 444 P 0.05 (All JAR files) 494.56 444 P 0.84 (containing beans must have a manifest describing the beans. A) 108 430 P 0.84 ( single JAR file may contain) 416.82 430 P 0.47 (more than one Java Bean; this simplifies packaging and allows for sharing of classes and re-) 108 416 P (source files at packaging time.) 108 402 T -0.42 (Classes in a JAR file may be signed; this may grant additional privileges to them \050class signing) 108 382 P (uses information that is also stored in the manifest file\051.) 108 368 T 3 14 Q (11.3) 54 340.67 T ( Content) 82 340.67 T 0 12 Q -0.25 (A JavaBeans JAR file contains a number of entries defining one or more packaged JavaBeans.) 108 320 P (By convention, JAR file entries are given slash-separated names such as \322a/b/c\323.) 108 306 T (Each JavaBeans JAR may include entries defining:) 108 286 T (1.) 126 266 T -0.39 (A set of class files to provide behavior for a Java Bean. These entries must have names) 144 266 P (ending in \322.class\323. E.g. \322foo/bah/Aardvark.class\323.) 144 252 T (2.) 126 232 T (Optionally, a s) 144 232 T (erialized prototype of a bean to be used to initialize) 214.33 232 T (the b) 463.62 232 T (ean. These) 487.28 232 T (entries must have names ending in \322.ser\323. E.g. \322foo/elk.ser\323.) 144 218 T (3.) 126 198 T -0.49 (Optional help files in HTML format to provide documentation for the Java Bean. If the) 144 198 P -0.43 (Java Bean is localized, there might be multiple versions of this documentation, one per) 144 184 P (locale. These entries must have names of the form) 144 170 T 2 F () 387.95 170 T 5 F (/) 433.48 170 T 2 F (...) 436.81 170 T 5 F (/) 445.81 170 T 2 F (.html) 449.15 170 T 0 F (.) 505.69 170 T (4.) 126 150 T (Optional internationalization information to be used by the bean to localize itself.) 144 150 T (5.) 126 130 T (Other) 144 130 T 2 F (resource) 174.32 130 T 0 F ( files needed by the Java Bean \050like images, sound, video, whatever\051.) 216.31 130 T (This is open-ended.) 144 116 T 34 488 36 536 R V 34 426 36 466 R V 34 228 36 240 R V 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "102" 102 %%Page: "103" 103 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 54 746 558 756 R 7 X 0 0 0 1 0 0 0 K V 2 10 Q 0 X (JavaBeans) 54 749.33 T (Packaging) 515.23 749.33 T 54 32.67 558 42.67 R 7 X V 0 X (Sun Microsystems) 54 36 T (103) 298.5 36 T (7/24/97) 527.44 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 54 72 558 720 R 7 X V 3 14 Q 0 X (11.4) 54 710.67 T ( Names of) 82 710.67 T (B) 144.59 710.67 T (eans) 153.93 710.67 T 0 12 Q (The name of a bean is a) 108 690 T (st) 224.96 690 T (ring comprising a \322.\323 separated sequence of names) 232.97 690 T (.) 476.23 690 T -0.45 (Beans that are simply instantiated from classes have the same name as the corresponding class.) 108 670 P -0.01 (These are mapped to JAR entries by replacing each \322.\323with \322/\323 and adding \322.class\323 at the end.) 108 656 P (So a class \322x.y.z\323 will be read from the JAR entry \322x/y/z.class\323.) 108 642 T 0.89 (Beans that are based on serialized prototypes also have \322.\323 separated names similar to class) 108 622 P -0.26 (names. These are mapped to JAR entries by replacing each \322.\323with \322/\323 and adding \322.ser\323 at the) 108 608 P (end. So a serialized bean \322a.b.c\323 will be read from the JAR entry \322a/b/c.ser\323.) 108 594 T 0.63 (Bean names, like class names, must be unique within a given class loader. T) 108 574 P 0.63 (o avoid naming) 482.08 574 P 0.98 (collisions, bean developers should follow the standard Java de facto naming convention for) 108 560 P (classes, where the top-level package name is a company name) 108 546 T (.) 406.58 546 T -0.12 (A JAR file that contains beans must have a manifest file \050see next section\051 which will indicate) 108 526 P 0.75 (which of the entries in the JAR archive represent beans. For an entry ending in \322.class\323 this) 108 512 P -0.45 (means that the corresponding class is a bean, for an entry ending in \322.ser\323 this indicates that the) 108 498 P (entry holds a serialized bean.) 108 484 T 3 14 Q (11.5) 54 456.67 T ( Format of Manifest File) 82 456.67 T 0 12 Q 0.32 (As part of the JAR file format, a JAR archive may include a) 108 436 P 2 F 0.32 (manifest file) 403.42 436 P 0 F 0.32 ( to describe its con-) 462.74 436 P (tents. \050See the Manifest File specification for a full description.\051) 108 422 T (The manifest file must be named \322META-INF/MANIFEST.MF\323.) 108 402 T -0.41 (The manifest file in a JAR archive provides information on selected parts of the contents of the) 108 382 P 1.01 (archive. It is a sequence of) 108 368 P 2 F 1.01 (sections) 244.99 368 P 0 F 1.01 ( separated by empty lines. Each section contains one or) 283.66 368 P 1.22 (more) 108 354 P 2 F 1.22 (headers) 136.88 354 P 0 F 1.22 (, \050so named because they conform to the RFC822 standard\051 each of the form) 174.87 354 P 1.19 (<) 108 340 P 2 F 1.19 (tag>) 114.77 340 P 1.19 (: .) 138.2 340 P 0 F 1.19 ( The sections that provide information on files in the archive must have a) 191.58 340 P 0.58 (header whose) 108 326 P 2 F 0.58 (<) 177.81 326 P 0.58 (tag>) 185.91 326 P 0 F 0.58 ( is) 209.35 326 P 3 F 0.58 (Name) 224.52 326 P 0 F 0.58 (, and whose) 254.51 326 P 2 F 0.58 () 316.25 326 P 0 F 0.58 (is the relative name of the file being de-) 362.03 326 P (scribed.) 108 312 T 0 10 Q 0.04 (Note that in JDK1.1 manifest entry names must use forward slashes \322/\323 and will not be processed cor-) 129 293.33 P (rectly if they use backslashes \322\134\323.) 129 281.33 T 0 12 Q -0.06 (A manifest file can include information describing what beans are in the JAR archive. If a file) 108 258 P 0.01 (in the JAR archive is a) 108 244 P 0.01 (B) 220.06 244 P 0.01 (ean, its corresponding section) 228.06 244 P 0.01 (must c) 373.75 244 P 0.01 (ontain a header whose) 405.43 244 P 2 F 0.01 () 515.45 244 P 0 F 0.01 ( is) 546.98 244 P 3 F (Java-Bean) 108 230 T 0 F (, and whose) 162 230 T 2 F ( is) 256.08 230 T 3 F (True) 276.85 230 T 0 F (\050case is not important\051.) 305.18 230 T (For example, two relevant sections of a manifest file might be:) 108 210 T 4 10 Q (Name: wessex/wonder/bean.class) 134 191.33 T (Java-Bean: True) 134 179.33 T (Name: wessex/quaint/bean.ser) 134 155.33 T (Java-Bean: True) 134 143.33 T (Depends-On:) 134 131.33 T (wessex/wonder/bean.cla) 206 131.33 T (ss) 338 131.33 T 34 480 36 720 R V 34 322 36 348 R V 34 278 36 300 R V 34 240 36 252 R V 34 128 36 138 R V 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "103" 103 %%Page: "104" 104 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 54 746 558 756 R 7 X 0 0 0 1 0 0 0 K V 2 10 Q 0 X (JavaBeans) 54 749.33 T (Packaging) 515.23 749.33 T 54 32.67 558 42.67 R 7 X V 0 X (Sun Microsystems) 54 36 T (104) 298.5 36 T (7/24/97) 527.44 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 54 72 558 720 R 7 X V 0 12 Q 0 X -0.43 (Th) 108 712 P -0.43 (e JDK 1.1 \322jar\323 command can be used to create a JAR file. For example, the following com-) 121.33 712 P 0.09 (mand will create a JAR file fred.jar including the files foo.class and bah.class with a manifest) 108 698 P (that is initialized from manifest.tmp:) 108 684 T 4 10 Q (jar cfm fred.jar manifest.tmp foo.class bah.class) 134 665.33 T 3 14 Q (11.6) 54 638.67 T (Manifest headers used with JavaBeans) 85.5 638.67 T 0 12 Q 0.23 (Three manifest header tags are defined for use with JavaBeans: \322Java-Bean\323, \322Depends-On\323,) 108 618 P (and \322Design-Time-Only\323.) 108 604 T 3 F (11.6.1) 60 581 T (Java-Bean) 108 581 T 0 F (The header tag \322Java-Bean\323 is used to identify JAR entries that represent JavaBeans.) 108 561 T -0.05 (Each bean in a JAR file must be identified by a Manifest entry with a header line whose tag is) 108 541 P (\322Java-Bean\323 and whose value is \322True\323 \050case is not important\051.) 108 527 T -0.19 (So for example the following manifest defines two beans, the first of which is in the file \322wes-) 108 507 P 1.44 (sex/bean.class\323 and is therefore a class for a bean called \322wessex.bean\323 and the second of) 108 493 P 0.45 (which is in the file \322wessex/leaf.ser\323 and which is therefore a serialized prototype for a bean) 108 479 P (called \322wessex.leaf\323.) 108 465 T 4 10 Q (Name: wessex/bean.class) 134 446.33 T (Java-Bean: True) 134 434.33 T (Name: wessex/leaf.ser) 134 410.33 T (Java-Bean: True) 134 398.33 T 3 12 Q (11.6.2) 60 376 T (Depends-On) 108 376 T 0 F -0.51 (The manifest section for a JAR entry can optionally specify other JAR entries which it depends) 108 356 P (on using the \322Depends-On\323 tag.) 108 342 T -0.64 (The \322Depends-On\323 tag should be followed by a list of space separated JAR entry names. A giv-) 108 322 P 0.01 (en \322Depends-On\323 line can specify zero, one, or many dependencies. A given manifest section) 108 308 P (can contain zero, one, or many \322Depends-On\323 lines.) 108 294 T 0.57 (If a JAR entry\325s manifest section contains no \322Depends-On\323 lines, then its dependencies are) 108 274 P (unknown.) 108 260 T 0.22 (If a bean\325s manifest section contains one or more \322Depends-On\323 lines, then these should col-) 108 240 P 0.2 (lectively define the complete list of JAR entries that this bean depends on. If the list is empty) 108 226 P (then there are no dependencies.) 108 212 T 0 10 Q 0.6 (Note that a JAR entry that supports \322Depends-On\323 must explicitly specify) 129 193.33 P 2 F 0.6 (all) 434.77 193.33 P 0 F 0.6 (of its dependencies. It) 448.43 193.33 P (does not inherit any indirect dependencies from other JAR entries it depends on.) 129 181.33 T 0 12 Q (For example, the following manifest defines:) 108 158 T (\245) 115 138 T (a bean a.b whose dependencies are unknown) 126 138 T (\245) 115 118 T (a bean x.y which depends on x/a.gif, x/b.gif, and the class mammal.Wombat) 126 118 T (\245) 115 98 T (a bean TinyBean which has no dependencies) 126 98 T 34 94 36 720 R V 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "104" 104 %%Page: "105" 105 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 54 746 558 756 R 7 X 0 0 0 1 0 0 0 K V 2 10 Q 0 X (JavaBeans) 54 749.33 T (Packaging) 515.23 749.33 T 54 32.67 558 42.67 R 7 X V 0 X (Sun Microsystems) 54 36 T (105) 298.5 36 T (7/24/97) 527.44 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 54 72 558 720 R 7 X V 0 12 Q 0 X -0.51 (The manifest also references several JAR entries \050x/a.gif, x/b.gif and mammal.Wombat\051 which) 108 712 P -0.66 (don\325t have manifest entries. Since these don\325t have \322Depends-On\323 lines, their dependencies are) 108 698 P (unknown.) 108 684 T 4 10 Q (Name: a/b.ser) 134 661.33 T (Java-Bean: True) 134 649.33 T (Name: x/y.class) 134 625.33 T (Java-Bean: True) 134 613.33 T (Depends-On: x/a.gif x/b.gif) 134 601.33 T (Depends-On: mammal/Wombat.class) 134 589.33 T (Name: TinyBean.class) 134 565.33 T (Java-Bean: true) 134 553.33 T (Depends-On:) 134 541.33 T 3 12 Q (11.6.3) 60 507 T (Design-Time-Only) 108 507 T 0 F -0.57 (The manifest section for a JAR entry can optionally use the \322Design-Time-Only\323 tag to specify) 108 487 P -0.73 (whether the given entry is only needed at design time. This means that builder tools may choose) 108 473 P -0.13 (to exclude the given entry when they are packaging up a bean as part of a constructed applica-) 108 459 P (tion.) 108 445 T (The \322Design-Time-Only\323 tag should be followed by a value of either \322True\323 or \322False\323.) 108 425 T -0.42 (So for example, the following manifest defines a bean argle.Bargle and says that the JAR entry) 108 405 P (argle/BargleBeanInfo.class is only needed at design time.) 108 391 T 4 10 Q (Name: argle/Bargle.class) 134 372.33 T (Java-Bean: True) 134 360.33 T (Name argle/BargleBeanInfo.class) 134 336.33 T (Design-Time-Only: True) 134 324.33 T 0 12 Q -0.28 (Note that under some circumstances tools may wish to pass through some \322design time\323 infor-) 108 301 P 0.06 (mation. For example, if a tool has merely been used to customize a bean, then it may output a) 108 287 P 0.1 (new bean that includes all of the design-time information from the original bean. Similarly, if) 108 273 P 0.43 (a tool is generating beans that it expects to be separately visible and manipulable at run-time) 108 259 P (then it may include the design time information from the original beans.) 108 245 T 3 14 Q (11.7) 54 217.67 T ( Accessing Resource Files) 82 217.67 T 0 12 Q 0.32 (Java code occasionally needs to access some information stored in a file. Some examples are) 108 197 P (images, audio files, text messages, as well as serialized objects.) 108 183 T 0.28 (JDK1.1 provides a basic mechanism to specify a) 108 163 P 2 F 0.28 (resource) 346.55 163 P 0 F 0.28 ( used by a class in a way that is in-) 388.54 163 P 0.06 (dependent of where the class actually resides \050e.g. in a) 108 149 P 0.06 (local disk file o) 372.57 149 P 0.06 (r through a) 447.09 149 P 0.06 (n http based) 499.88 149 P 1.92 (C) 108 135 P 1.92 (lassLoader\051. Access to persistent representations of Beans \050Section 11.8\051 uses this basic) 116 135 P (mechanism, as do the I18N facilities in JDK1.1.) 108 121 T (A typical use could be:) 108 101 T 34 241 36 720 R V 34 131 36 157 R V 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "105" 105 %%Page: "106" 106 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 54 746 558 756 R 7 X 0 0 0 1 0 0 0 K V 2 10 Q 0 X (JavaBeans) 54 749.33 T (Packaging) 515.23 749.33 T 54 32.67 558 42.67 R 7 X V 0 X (Sun Microsystems) 54 36 T (106) 298.5 36 T (7/24/97) 527.44 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 54 72 558 720 R 7 X V 4 F 0 X (Class c = Class.forName\050\322foo.bah.XyzComponent\323\051;) 140.4 713.33 T (InputStream x = c.getResourceAsStream\050\323/foo/bah/MyRedStuff.txt\323\051;) 140.4 701.33 T 0 12 Q (See the section on) 108 682 T 2 F (resources) 197.99 682 T 0 F ( and) 244.64 682 T 2 F (Internationalization) 267.97 682 T 0 F (in JDK1.1 for more details.) 366.98 682 T 3 14 Q (11.8) 54 654.67 T ( Persistence representation) 82 654.67 T 0 12 Q -0.23 (A JAR file may contain serialized prototypes of Java Beans. Not all Java Beans need to have a) 108 634 P (prototype. Those that do will use the Java Object Serialization mechanism \050see Chapter 5\051.) 108 620 T 0.55 (The prototypes are stored and restored by a simple use of the) 108 600 P 2 F 0.55 (java.io.ObjectInputStream) 409.81 600 P 0 F 0.55 ( and) 537.13 600 P 2 F (java.io.ObjectOutputStream) 108 586 T 0 F (. Thus, to serialize) 243.32 586 T 4 10 Q (java.io.OutputStream out = ... // the stream where to serialize) 134 567.33 T (java.io.ObjectOutputStream s = new java.io.ObjectOutputStream\050out\051;) 134 555.33 T (s.writeObject\050myComponent\051;) 134 543.33 T 0 12 Q -0.4 (Deserialization is a little more complex. We will normally want to) 108 524 P -0.4 (d) 424.92 524 P -0.4 (eserialize a serialized) 430.92 524 P -0.4 (bean) 535.34 524 P 0.6 (in the context of a specific c) 108 510 P 0.6 (lass-loader. So we have to first locate a class that we can use to) 246.91 510 P 0.34 (identify the source class-loader, and then use Beans.instantiate to) 108 496 P 0.34 (instantiate a named bean a) 426.67 496 P 0.34 (t) 554.66 496 P (that class-loader.) 108 482 T 4 10 Q (ClassLoader cl = Class.forName\050\322foo.bah.Xyz\323\051.getClassLoader\050\051;) 140.4 463.33 T (MyStuff x = \050MyStuff\051 Beans.instantiate\050cl,\323) 140.4 451.33 T (f) 404.4 451.33 T (oo) 410.4 451.33 T (.b) 422.4 451.33 T (ah) 434.4 451.33 T (.M) 446.4 451.33 T (yRedStuff) 458.4 451.33 T (\323) 512.4 451.33 T (\051;) 518.4 451.33 T 0 12 Q -0.11 (When an object is deserialized from a stream) 108 432 P -0.11 (using Beans.instantiate w) 326.37 432 P -0.11 (e will use th) 448.47 432 P -0.11 (e specified) 506.46 432 P (c) 108 418 T (lass-loader as a source for .class files to satisfy any class dependencies.) 113.33 418 T (See the documentation on Serialization) 108 398 T (and on Beans.instantiate) 298.98 398 T (for more details.) 418.97 398 T 3 14 Q (11.9) 54 370.67 T ( Help Documentation) 82 370.67 T 0 12 Q -0.64 (Documentation is described as a collection of HTML entries. These entries should be in HTML) 108 350 P 0.12 (2.0 format. An application using Java Beans may choose to translate the contents of these en-) 108 336 P (tries into whatever format it chooses before presenting it to the user.) 108 322 T -0.17 (For each bean the optional top-level help documentation can in) 108 302 P 2 F -0.17 () 412.28 302 P 5 F -0.17 (/) 457.81 302 P 2 F -0.17 (.html) 461.15 302 P 0 F -0.17 (.) 555 302 P 0.35 (\050If the documentation is only available for a single locale, the initial) 108 288 P 2 F 0.35 () 441.1 288 P 5 F 0.35 (/) 486.63 288 P 0 F 0.35 ( may be omit-) 489.97 288 P (ted.\051) 108 274 T 0.32 (Cross references to other information can be presented as hyperlinks, either as relative URLs) 108 254 P -0.42 (to other html files in the same JAR file, or as absolute URLs that lead back to the vendor\325s web) 108 240 P (site.) 108 226 T 34 492 36 532 R V 34 394 36 458 R V 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "106" 106 %%Page: "107" 107 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 54 746 558 756 R 7 X 0 0 0 1 0 0 0 K V 2 10 Q 0 X (JavaBeans) 54 749.33 T (Transitional Beans under JDK 1.0.2) 412.44 749.33 T 54 32.67 558 42.67 R 7 X V 0 X (Sun Microsystems) 54 36 T (107) 298.5 36 T (7/24/97) 527.44 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 54 72 558 720 R 7 X V 3 18 Q 0 X (Appendix A: Transitional Beans under JDK 1.0.2) 118.22 708 T 3 14 Q (A.1) 54 678.67 T ( Goals.) 78.11 678.67 T 0 12 Q 0.57 (Some of the features of the full 1.0 Java Beans architecture rely on new Java core interfaces) 108 658 P (such as reflection and serialization that are being added in the JDK 1.1.) 108 644 T 0.34 (However in order to allow the early development and deployment of beans we want to allow) 108 624 P -0.26 (developers to produce beans that can run under JDK 1.0.2, but which are also fully compatible) 108 610 P (with the final beans architecture.) 108 596 T -0.58 (To enable this, we are defining a set of rules for \322transitional\323 Beans, which are fully compliant) 108 576 P 0.38 (with the 1.0 Java Beans architecture, but which can be used to build applets and applications) 108 562 P 0.23 (that can run on JDK 1.0.2 and on JDK 1.0.2 enabled systems such as Netscape Navigator 3.0) 108 548 P (and Internet Explorer 3.0.) 108 534 T -0.53 (These transitional beans will necessarily only use a subset of the full bean model. However this) 108 514 P -0.3 (subset includes the basic property/method/event mechanisms, so that a transitional bean is still) 108 500 P (very useful within a JDK 1.0.2 environment.) 108 486 T 0.56 (These transitional beans are primarily intended for use with leading edge application builder) 108 466 P (tools.) 108 452 T 3 14 Q (A.2) 54 424.67 T ( Marker classes) 78.11 424.67 T 0 12 Q 0.39 (In several places the Java Beans APIs use particular classes or interfaces as \322markers\323 to de-) 108 404 P 0.5 (termine that a given class is intended to perform a given role. For example, an event listener) 108 390 P (class must implement the java.util.EventListener interface.) 108 376 T 1.36 (We would like transitional Beans to use markers for events and serialization, so that these) 108 356 P -0.21 (markers can be recognized correctly when the transitional beans are used in full JDK 1.1 envi-) 108 342 P 2.37 (ronments. We require that transitional beans should use three transitional marker classes) 108 328 P (\050sunw.util.EventObject, sunw.util.EventListener, sunw.io.Serializable\051 as needed as markers.) 108 314 T (The fine print explains why.) 108 294 T 0 10 Q -0.56 (We could simply make available the appropriate JDK 1.1 marker classes to developers for use with JDK) 129 275.33 P 1.16 (1.0.2. However these marker classes are all in the java.* part of the namespace and many existing) 129 263.33 P (browsers are reluctant to allow downloading of java.* classes.) 129 251.33 T 0.22 (To solve this problem, JavaSoft is making available three interim marker classes \050sunw.util.EventOb-) 129 229.33 P 0.36 (ject, sunw.util.EventListener and sunw.io.Serializable\051 that can be downloaded over the net into JDK) 129 217.33 P 0.53 (1.0.2 browsers. These classes will be mostly noops under 1.0.2, but as part of JDK 1.1 JavaSoft will) 129 205.33 P (distribute replacement versions of these classes that correctly inherit from the real marker classes.) 129 193.33 T -0.05 (Thus a transitional bean might inherit from sun.io.Serializable to indicate that it is compatible with the) 129 171.33 P -0.34 (JDK 1.1 serialization mechanism. When this bean is downloaded into a JDK 1.0.2 system then the JDK) 129 159.33 P -0.26 (1.0.2 version of sunw.io.Serializable \050which is basically an empty interface\051 can be downloaded as part) 129 147.33 P -0.08 (of the bean. This will allow the bean to run happily on JDK 1.0.2. However when the same bean is run) 129 135.33 P 0.35 (on a JDK 1.1 system then the class loader will use the JDK 1.1 version of sunw.io.serializable which) 129 123.33 P 0.43 (inherits from java.io.Serializable. When the serialization code comes to examine the bean it will find) 129 111.33 P -0.25 (that \050by transitive closure\051 the bean inherits from java.io.Serializable. This will allow the bean to be se-) 129 99.33 P (rialized on JDK 1.1) 129 87.33 T 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "107" 107 %%Page: "108" 108 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 54 746 558 756 R 7 X 0 0 0 1 0 0 0 K V 2 10 Q 0 X (JavaBeans) 54 749.33 T (Transitional Beans under JDK 1.0.2) 412.44 749.33 T 54 32.67 558 42.67 R 7 X V 0 X (Sun Microsystems) 54 36 T (108) 298.5 36 T (7/24/97) 527.44 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 54 72 558 720 R 7 X V 3 14 Q 0 X (A.3) 54 710.67 T ( Rules for a transitional bean developer) 78.11 710.67 T 0 12 Q -0.25 (In order for a transitional bean to also be usable correctly in a full JDK 1.1 application builder,) 108 690 P (a bean developer must follow these rules:) 108 676 T (\245) 115 656 T (The bean should be delivered in a bean JAR file.) 126 656 T (\245) 115 636 T (The bean should use the getFoo/setFoo patterns \050see Section 8.3\051 for properties.) 126 636 T (\245) 115 616 T -0.02 (All of the bean\325s persistent state must be accessible via getFoo/setFoo properties. This) 126 616 P 0.54 (allows application builder tools to save and restore the beans state using the property) 126 602 P 0.98 (accessor methods. The one exception to this rule is that the bean can ignore state in) 126 588 P (java.awt base classes.) 126 574 T (\245) 115 554 T 0.87 (Any events the bean fires should use the new AWT event model and should use the) 126 554 P -0.49 (sunw.util.EventObject and sunw.util.EventListener interfaces to mark events and event) 126 540 P 1.16 (listeners. However in interacting with AWT, the bean must of necessity use the old) 126 526 P (AWT event model to catch AWT events.) 126 512 T (\245) 115 492 T 0.51 (If the bean is prepared in the future to use automatic serialization then it must inherit) 126 492 P (from the sunw.io.Serializable marker interface.) 126 478 T (\245) 115 458 T (The bean can\325t rely on any new 1.1 interfaces.) 126 458 T 3 14 Q (A.4) 54 430.67 T ( Application builder responsibilities) 78.11 430.67 T 0 12 Q 0.36 (To be able to use transitional beans to create JDK 1.0.2 conformant applets and applications,) 108 410 P (an application builder tool must:) 108 396 T (\245) 115 376 T (Read in a bean from a JAR file.) 126 376 T (\245) 115 356 T 0.41 (It must use its own reflection code to identify properties, events, and public methods,) 126 356 P (following the rules defined in Section 8.) 126 342 T (\245) 115 322 T 0.72 (Rather than using automatic serialization to store away a bean\325s state it must use the) 126 322 P 0.39 (getXXX methods to read its state and generate some code to call setXXX methods to) 126 308 P -0.28 (revive the bean. If the bean inherits from a JDK 1.0.2 java.awt.* component class, then) 126 294 P (it must generate code to restore the appropriate AWT state.) 126 280 T 3 14 Q (A.5) 54 232.67 T ( Example of a transitional bean) 78.11 232.67 T 0 12 Q -0.41 (The following three classes define a transitional bean that \050a\051 supports a pair of property acces-) 108 212 P 0.69 (sor methods for getting and setting a simple boolean property called \322debug\323 and \050b\051 fires a) 108 198 P (beans style event.) 108 184 T -0.75 (Because it inherits from java.awt.Button, it will also automatically get the \322label\323, foreground\323,) 108 164 P (\322background\323 and \322font\323 properties that can be inferred from the various methods it inherits.) 108 150 T 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "108" 108 %%Page: "109" 109 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 54 746 558 756 R 7 X 0 0 0 1 0 0 0 K V 2 10 Q 0 X (JavaBeans) 54 749.33 T (Transitional Beans under JDK 1.0.2) 412.44 749.33 T 54 32.67 558 42.67 R 7 X V 0 X (Sun Microsystems) 54 36 T (109) 298.5 36 T (7/24/97) 527.44 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 54 72 558 720 R 7 X V 4 F 0 X (// This class describes the event that gets generated when) 140.4 713.33 T (// OurButton gets pushed.) 140.4 701.33 T (public class ButtonPushEvent extends sunw.util.EventObject {) 140.4 681.33 T (public ButtonPushEvent\050java.awt.Component source\051 {) 165.6 669.33 T (super\050source\051;) 190.8 657.33 T (}) 165.6 645.33 T (}) 140.4 633.33 T (// This interface describes the method that gets called when) 140.4 609.33 T (// an OurButton gets pushed.) 140.4 597.33 T (public interface ButtonPushListener extends sunw.util.EventListener {) 140.4 577.33 T (public void push\050ButtonPushEvent e\051;) 165.6 565.33 T (}) 140.4 553.33 T -0.19 (// The OurButton class is a very minimal bean that simply extends the) 140.4 529.33 P (// standard JDK 1.0.2 Button class to throw a bean event.) 140.4 517.33 T (public class OurButton extends java.awt.Button implements) 140.4 497.33 T (sunw.io.Serializable {) 392.4 485.33 T (private boolean dbg;) 165.6 473.33 T (private Vector listeners = new Vector\050\051;) 165.6 461.33 T (public OurButton\050\051 {) 165.6 441.33 T (this\050\322press\323\051;) 190.8 429.33 T (}) 165.6 417.33 T (public OurButton\050String label\051 {) 165.6 397.33 T (super\050label\051;) 190.8 385.33 T (}) 165.6 373.33 T (// Register an Event Listener.) 165.6 353.33 T (public synchronized void) 165.6 341.33 T (addButtonPushListener\050ButtonPushListener bl\051 {) 165.6 329.33 T (listeners.addElement\050bl\051;) 190.8 317.33 T (}) 165.6 305.33 T (// Remove an Event Listener.) 165.6 285.33 T (public synchronized void) 165.6 273.33 T (removeButtonPushListener\050ButtonPushListener bl\051 {) 165.6 261.33 T (listeners.removeElement\050bl\051;) 190.8 249.33 T (}) 165.6 237.33 T 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "109" 109 %%Page: "110" 110 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 54 746 558 756 R 7 X 0 0 0 1 0 0 0 K V 2 10 Q 0 X (JavaBeans) 54 749.33 T (Transitional Beans under JDK 1.0.2) 412.44 749.33 T 54 32.67 558 42.67 R 7 X V 0 X (Sun Microsystems) 54 36 T (110) 298.5 36 T (7/24/97) 527.44 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 54 72 558 720 R 7 X V 4 F 0 X (// Catch an old style AWT event and fire it as a new style event.) 165.6 713.33 T (public boolean handleEvent\050Event evt\051 {) 165.6 693.33 T (if \050evt.id == Event.ACTION_EVENT\051 {) 190.8 681.33 T (// Notify each our our listeners.) 216 661.33 T (Vector) 212.4 649.33 T (l;) 270 649.33 T (ButtonPushEvent) 212.4 637.33 T ( e = new ButtonPushEvent\050this\051;) 302.4 637.33 T (synchronized\050this\051 {) 212.4 625.33 T (l = \050Vector\051 listeners.clone\050\051;) 241.2 613.33 T (}) 212.4 601.33 T (for \050int i = 0; i < l.size\050\051; i++\051 {) 212.4 581.33 T (ButtonPushListener bl =) 241.2 569.33 T (\050ButtonPushListener\051l.elementAt\050i\051;) 327.6 557.33 T (bl.push\050e\051;) 241.2 545.33 T (}) 216 533.33 T (}) 190.8 513.33 T (return super.handleEvent\050evt\051;) 190.8 501.33 T (}) 165.6 489.33 T (public boolean isDebug\050\051 { return dbg; }) 165.6 465.33 T (public void setDebug\050boolean x\051 { dbg = x; }) 165.6 453.33 T (}) 140.4 441.33 T 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "110" 110 %%Page: "111" 111 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 54 746 558 756 R 7 X 0 0 0 1 0 0 0 K V 2 10 Q 0 X (JavaBeans) 54 749.33 T (Future directions) 488.28 749.33 T 54 32.67 558 42.67 R 7 X V 0 X (Sun Microsystems) 54 36 T (111) 298.5 36 T (7/24/97) 527.44 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 54 72 558 720 R 7 X V 3 18 Q 0 X (Appendix B: Future directions) 190.49 708 T 0 12 Q 0.37 (Java Beans 1.0 specifies a complete set of core functionality required for a component archi-) 108 680 P 0.47 (tecture including support for properties, events, methods, and persistence. However JavaSoft) 108 666 P (is also planning to develop some additional APIs to supplement this core functionality.) 108 652 T -0.23 (See our web site at http://java.sun.com/beans for the latest information on future directions for) 108 632 P (JavaBeans and for review drafts of the various specifications as they emerge.) 108 618 T 3 14 Q (B.1) 54 590.67 T (Glasgow) 80.84 590.67 T 0 12 Q (The \322Glasgow\323 release will be the first update to the JavaBeans APIs.) 108 570 T (It is currently planned to ship in the second half of 1997 and is expected to include:) 108 550 T (\245) 115 530 T 7.64 (Support for aggregating several objects to make a bean, based on the) 126 530 P (Beans.isInstanceOf and Beans.getInstanceOf APIs provided in Beans 1.0) 126 516 T (\245) 115 496 T 0.8 (Support for bean contexts. This provides a containment hierarchy for JavaBeans and) 126 496 P 2.07 (provides ways for beans to find context-specific information such as design-mode) 126 482 P (versus run-mode.) 126 468 T (\245) 115 448 T -0.27 (Support for using beans as MIME viewers. This includes the ability for a bean to act as) 126 448 P (a viewer for a given kind of MIME typed data.) 126 434 T (\245) 115 414 T (Drag and drop support.) 126 414 T 3 14 Q (B.2) 54 386.67 T (Edinburgh) 80.84 386.67 T 0 12 Q (The \322Edinburgh\323 release will add further functionality after Glasgow.) 108 366 T (We\325re still investigating features for Edinburgh, but it is likely to include:) 108 346 T (\245) 115 326 T (Support for toolbar and menubar merging) 126 326 T (\245) 115 306 T (An online component help system) 126 306 T 0 (We\325re also investigating whether or not we ought to provide some support for structured stor-) 108 286 P (age. However we haven\325t yet reached a conclusion on this.) 108 272 T 3 14 Q (B.3) 54 244.67 T (InfoBus) 80.84 244.67 T 0 12 Q 0.54 (JavaSoft is working with Lotus Development Corp to turn Lotus\325s InfoBus technology ino a) 108 224 P 0.31 (Java standard. This will probably be made available sometime between the Glasgow and Ed-) 108 210 P (inburgh Beans releases.) 108 196 T 0.5 (Infobus provides a dynamic data transfer mechanism between beans that allows beans to ex-) 108 176 P 0.41 (change and display structured data. For example a spreadsheet bean to publish rows and col-) 108 162 P 1.36 (umns that can then be graphed by a charting bean. Or a database viewer bean can publish) 108 148 P (database rows for display and analysis by other beans.) 108 134 T 34 110 36 640 R V 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "111" 111 %%Page: "112" 112 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 54 746 558 756 R 7 X 0 0 0 1 0 0 0 K V 2 10 Q 0 X (JavaBeans) 54 749.33 T (Change History) 494.39 749.33 T 54 32.67 558 42.67 R 7 X V 0 X (Sun Microsystems) 54 36 T (112) 298.5 36 T (7/24/97) 527.44 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 54 72 558 720 R 7 X V 3 18 Q 0 X (Appendix C: Change History) 195.99 708 T 0 12 Q 0.15 (For changes between Version 1.00-A \050December 1996\051 and 1.01 there are change bars on the) 108 680 P (text, but not on the javadoc API definitions as these are mechanically generated.) 108 666 T 3 14 Q (C.1) 54 638.67 T ( Changes between 1.00 \050October \32496\051 and 1.00-A \050December \32496\051.) 78.11 638.67 T 0 12 Q 0.23 (Since the release of the initial JavaBeans 1.0 text in October we\325ve made some minor tweaks) 108 618 P 0.27 (to add in some small pieces of missing functionality \050notably icons\051, to tighten up some defi-) 108 604 P -0.71 (nitions \050particularly around manifest files and bound properties\051, and to fix one potential source) 108 590 P -0.56 (of errors \050the use of class name strings\051. Added BeanInfo.getIcon method and 4 static constants) 108 576 P -0.57 (for different icons. This allows BeanInfo classes to specify icons to represent their bean in tool-) 108 562 P (bars and toolboxes.) 108 548 T (\245) 115 528 T 1.97 (Added support in EventSetDescriptor for MethodDescriptor objects \050in addition to) 126 528 P 0.64 (Method objects\051 for listener methods. There is a new EventSetDescriptor constructor) 126 514 P 0.2 (taking MethodDescriptor objects as an alternative to Method objects, and you can use) 126 500 P 2.84 (getListenerMethodsDescriptors to retrieve MethodDescriptors instead of Methods.) 126 486 P -0.27 (This allows BeanInfo classes to provide more detailed information about event listener) 126 472 P (methods.) 126 458 T (\245) 115 438 T 1.06 (In the various Descriptor methods replaced the use of class name strings with Class) 126 438 P 2.37 (objects. This reflects the fact that in Java class name strings are actually context) 126 424 P 0.77 (sensitive, so that a class name that makes sense in one piece of code \050with one class) 126 410 P 0.22 (loader\051 may be inaccessible to another piece of code that uses a different class loader.) 126 396 P 0.15 (Therefore it is better to use Class objects as these have global scope. A new feature in) 126 382 P (JDK 1.1 \322class literals\323 makes it easier to reference Class objects for specific classes.) 126 368 T (\245) 115 348 T (Clarified that property accessor methods may throw checked exceptions \050Section 7.3\051) 126 348 T (\245) 115 328 T 2.89 (Specified that the JAR manifest file must be called META-INF/MANIFEST.MF) 126 328 P (\050Section 11.5\051.) 126 314 T (\245) 115 294 T 3.13 (Several minor changes to tighten up the specification of bound and constrained) 126 294 P (properties:) 126 280 T (-) 150.98 260 T 1.14 (Updated Section 7.4.1 to specify that propertyChange events should be fired) 162 260 P 3 F (after) 162 246 T 0 F ( the property change has been applied) 186.65 246 T (-) 150.98 226 T 1.14 (Updated Section 7.4.2 to specify that vetoableChange events should be fired) 162 226 P 3 F (before) 162 212 T 0 F ( the property change has been applied.) 194.65 212 T (-) 150.98 192 T 1.34 (Updated Section 7.4.3 to specify that for properties that are both bound and) 162 192 P 1.18 (constrained you should fire a VetoableChangeListener.vetoableChange event) 162 178 P 1.96 (before updating the property and a PropertyChangeListener.propertyChange) 162 164 P (event after updating the property.) 162 150 T (-) 150.98 130 T 0.07 (Added Section 7.4.4 advising that updates to bound and constrained properties) 162 130 P 0.42 (should not fire events if they are simply setting a value that is the same as the) 162 116 P (current value.) 162 102 T 34 662 36 688 R V 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "112" 112 %%Page: "113" 113 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 54 746 558 756 R 7 X 0 0 0 1 0 0 0 K V 2 10 Q 0 X (JavaBeans) 54 749.33 T (Change History) 494.39 749.33 T 54 32.67 558 42.67 R 7 X V 0 X (Sun Microsystems) 54 36 T (113) 298.5 36 T (7/24/97) 527.44 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 54 72 558 720 R 7 X V 3 14 Q 0 X (C.2) 54 710.67 T (Changes between 1.00-A and 1.01 to reflect the final JDK 1.1 APIs) 81.61 710.67 T 0 12 Q (\245) 115 690 T -0.06 (Stated that Beans.instantiate takes a dot separated name that can name either a class or) 126 690 P (a serialized form.) 126 676 T (\245) 115 656 T -0.15 (Added applet support to Beans.instantiate, so that an applet that is a bean will be given) 126 656 P (a default AppletContext and AppletStub) 126 642 T (\245) 115 622 T -0.59 (In Section 6 added specification of TooManyListenersException \050this had been omitted) 126 622 P (by accident\051.) 126 608 T (\245) 115 588 T 0.88 (In Section 9 added specification of PropertyEditorSupport \050this had been omitted by) 126 588 P (accident\051.) 126 574 T 3 14 Q (C.3) 54 546.67 T (Additional updates between 1.00-A and 1.01) 81.61 546.67 T 0 12 Q (\245) 115 526 T (Updated Appendix B \322Future Directions\323 to reflect our current plans.) 126 526 T (\245) 115 506 T (Changed example scenarios \050Section 3\051 to use Beans.instantiate) 126 506 T (\245) 115 486 T 1.88 (Clarified in Section 11.6.1 that a JAR file containing beans must have a Manifest) 126 486 P (identifying the beans.) 126 472 T (\245) 115 452 T 0.45 (In Section 11.5 emphasized that in JDK1.1 names within manifests must use forward) 126 452 P (slashes \322/\323.) 126 438 T (\245) 115 418 T 1.01 (In Section 7.4.3 explained how a \322two phase\323 mechanism can be used to accurately) 126 418 P (monitor the state of a bound and constrained property.) 126 404 T (\245) 115 384 T -0.26 (In PropertyEditor clarified that the paintValue method can change the graphics context) 126 384 P (and needn\325t restore the old state.) 126 370 T (\245) 115 350 T -0.75 (Defined two new Manifest tags for use with JavaBeans: \322Depends-On\323 \050Section 11.6.2\051) 126 350 P (and \322Design-Time-Only\323 \050Section 11.6.3\051.) 126 336 T (\245) 115 316 T 1.97 (Added Section 5.4 \322Persistence through generated initialization code\323 documentng) 126 316 P (how a bean can be resurrected using generated source code.) 126 302 T (\245) 115 282 T 0.41 (By popular demand, added an explicit statement that beans are not required to inherit) 126 282 P (from any standard base class or interface. \050Section 2.1\051.) 126 268 T (\245) 115 248 T -0.28 (Added an exhortation to support the PropertyEditor.getJavaInitializationString method) 126 248 P (in PropertyEditors \050Section 9.2.5\051) 126 234 T (\245) 115 214 T 0.08 (By popular demand, defined a new convention so that a bean can allow registration of) 126 214 P 1.01 (PropertyChangeListeners or VetoableChangeListeners for named properties \050Section) 126 200 P (7.4.5\051.) 126 186 T 34 182 36 720 R V 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "113" 113 %%Page: "114" 114 612 792 0 FMBEGINPAGE [0 0 0 1 0 0 0] [ 0 1 1 0 1 0 0] [ 1 0 1 0 0 1 0] [ 1 1 0 0 0 0 1] [ 1 0 0 0 0 1 1] [ 0 1 0 0 1 0 1] [ 0 0 1 0 1 1 0] 7 FrameSetSepColors FrameNoSep 0 0 0 1 0 0 0 K 54 746 558 756 R 7 X 0 0 0 1 0 0 0 K V 2 10 Q 0 X (JavaBeans) 54 749.33 T (Index of Classes and Interfaces) 432.46 749.33 T 54 32.67 558 42.67 R 7 X V 0 X (Sun Microsystems) 54 36 T (114) 298.5 36 T (7/24/97) 527.44 36 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K 54 351 558 684 R 7 X V 0 0 0 1 0 0 0 K 0 12 Q 0 X (BeanDescriptor) 90 676 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (. . . . . . . . . . . . . . . . .) 168 676 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( 59) 270 676 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (BeanInfo) 90 659 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( . . . . . . . . . . . . . . . . . . . . . .) 135 659 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( 60) 270 659 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (Beans) 90 642 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (. . . . . . . . . . . . . . . . . . . . . . . . .) 120 642 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( 98) 270 642 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (Customizer) 90 625 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( . . . . . . . . . . . . . . . . . . . .) 147 625 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( 87) 270 625 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (EventListener) 90 608 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( . . . . . . . . . . . . . . . . . .) 159 608 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( 37) 270 608 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (EventObject) 90 591 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (. . . . . . . . . . . . . . . . . . . .) 150 591 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( 38) 270 591 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (EventSetDescriptor) 90 574 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (. . . . . . . . . . . . . .) 186 574 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( 63) 270 574 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (FeatureDescriptor) 90 557 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( . . . . . . . . . . . . . . .) 177 557 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( 67) 270 557 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (IndexedPropertyDescriptor) 90 540 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (. . . . . . . .) 222 540 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( 70) 270 540 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (IntrospectionException) 90 523 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (. . . . . . . . . . .) 204 523 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( 73) 270 523 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (Introspector) 90 506 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (. . . . . . . . . . . . . . . . . . . .) 150 506 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( 74) 270 506 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (MethodDescriptor) 90 489 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (. . . . . . . . . . . . . . .) 180 489 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( 76) 270 489 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (ParameterDescriptor) 90 472 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (. . . . . . . . . . . . .) 192 472 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( 77) 270 472 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (PropertyChangeEvent) 90 455 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (. . . . . . . . . . . .) 198 455 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( 46) 270 455 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (PropertyChangeListener) 90 438 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (. . . . . . . . . .) 210 438 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( 48) 270 438 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (PropertyChangeSupport) 90 421 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( . . . . . . . . . .) 207 421 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( 49) 270 421 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (PropertyDescriptor) 90 404 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( . . . . . . . . . . . . . .) 183 404 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( 78) 270 404 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (PropertyEditor) 90 387 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (. . . . . . . . . . . . . . . . . .) 162 387 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( 88) 270 387 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (PropertyEditorManager) 90 370 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (. . . . . . . . . . .) 204 370 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( 91) 270 370 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (PropertyEditorSupport) 342 676 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( . . . . . . . . . . .) 453 676 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( 93) 522 676 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (PropertyVetoException) 342 659 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (. . . . . . . . . . .) 456 659 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( 50) 522 659 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (SimpleBeanInfo) 342 642 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( . . . . . . . . . . . . . . . .) 423 642 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( 81) 522 642 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (TooManyListenersException) 342 625 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( . . . . . .) 483 625 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( 39) 522 625 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (VetoableChangeListener) 342 608 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (. . . . . . . . . .) 462 608 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( 51) 522 608 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (VetoableChangeSupport) 342 591 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (. . . . . . . . . .) 462 591 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( 52) 522 591 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (Visibility) 342 574 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K (. . . . . . . . . . . . . . . . . . . . . .) 390 574 T 0 0 0 1 0 0 0 K 0 0 0 1 0 0 0 K ( 101) 522 574 T 0 0 0 1 0 0 0 K 3 14 Q (Index of Classes and Interfaces) 231.06 728.67 T 0 0 0 1 0 0 0 K FMENDPAGE %%EndPage: "114" 114 %%Trailer %%BoundingBox: 0 0 612 792 %%PageOrder: Ascend %%Pages: 114 %%DocumentFonts: Times-Roman %%+ Symbol %%+ Times-Italic %%+ Times-Bold %%+ Courier %%+ Times-BoldItalic %%+ Courier-Oblique %%+ Courier-Bold %%EOF .