HasBuiltInScrollArrows |
|
|
DirtyScrollArrows DotInWhichScrollArrow Draw DrawScrollArrows HandleTouchInScrollArrows ScrollArrowImage ScrollArrowPositions Touch |
|
CanDrawIn ScrollsHorizontally UseBuiltInScrollArrows |
Define Class HasBuiltInScrollArrows; mixes in with Viewable, HasScrolling; operation DirtyScrollArrows(), noFail; // calls DirtyBox on the enclosing box of each scroll arrow // call to force a redraw of the scroll arrow area without redrawing entire content // override rarely operation DotInWhichScrollArrow(probe: Dot): ScrollArrowType; // returns which scroll arrow (or none) probe is in // possible values are scrollBackArrow, scrollForwardArrow, and noScrollArrow operation DrawScrollArrows(), noFail; // draws scroll arrows // called from Draw // sometimes call from overrides of Draw if not calling inherited Draw for other reasons // override rarely operation HandleTouchInScrollArrows(touchInput: TouchInput): Boolean; // if UseBuiltInScrollArrows is false, returns false // if start point of <touchInput> was in back or forward arrow, handles the touch and returns true // else returns false // called from HasBuiltInScrollArrows_Touch, and from touch methods of subclasses that override touch // override rarely operation ScrollArrowImage(backArrow: Boolean): Image; // call to get image of scroll arrow from scroll direction // returns iScrollUpArrow if <backArrow> is true, iDownScrollArrow otherwise // override rarely to use different images; the two images should be the same size operation ScrollArrowPositions(var backArrowPosition: Dot; var forwardArrowPosition: Dot); // fills in position parameters with dots in upper right and lower right of self's content box // override sometimes to position scroll arrows elsewhere attribute ScrollsHorizontally: Boolean, readOnly; // distinguishes between up-and-down scrolling and left-and-right scrolling // returns false // override sometimes to return true for subclasses that scroll horizontally // overriders should also override ScrollArrowImage and probably ScrollArrowPositions since // default implementations are designed for vertical scrolling attribute UseBuiltInScrollArrows: Boolean, readOnly; // returns true // override sometimes to let subclass use built-in scroll arrows on an instance-by-instance basis overrides CanDrawIn; // returns kDontDrawHere if current touch is in built-in scroll arrows, // otherwise returns result of inherited method overrides Draw; // draws scroll arrows after calling inherited method overrides Touch; // calls HandleTouchInScrollArrows. If it returns false, calls inherited method. end class;