From: Richard K. <ric...@us...> - 2005-05-26 04:03:29
|
Update of /cvsroot/actionstep/actionstep/src/org/actionstep In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv17628 Modified Files: NSScrollView.as Log Message: implemented scrollAction handler for scroller target/action messages Index: NSScrollView.as =================================================================== RCS file: /cvsroot/actionstep/actionstep/src/org/actionstep/NSScrollView.as,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** NSScrollView.as 25 May 2005 22:07:14 -0000 1.2 --- NSScrollView.as 26 May 2005 04:03:19 -0000 1.3 *************** *** 39,42 **** --- 39,43 ---- import org.actionstep.constants.NSBorderType; + import org.actionstep.constants.NSScrollerPart; import org.actionstep.NSView; *************** *** 46,49 **** --- 47,51 ---- import org.actionstep.NSColor; import org.actionstep.NSRect; + import org.actionstep.NSPoint; import org.actionstep.NSEvent; *************** *** 64,67 **** --- 66,71 ---- private var m_verticalPageScroll:Number; + private var m_knobMoved:Boolean; + public function init():NSScrollView { return initWithFrame(NSRect.ZeroRect); *************** *** 314,319 **** } public function scrollAction(scroller:NSScroller) { ! //! implement } --- 318,398 ---- } + /** + * Callback from NSScroller in target/action + */ public function scrollAction(scroller:NSScroller) { ! var floatValue:Number = scroller.floatValue(); ! var hitPart:NSScrollerPart = scroller.hitPart(); ! var clipViewBounds:NSRect; ! var documentRect:NSRect; ! var amount:Number = 0; ! var point:NSPoint; ! ! if (m_contentView == null) { ! clipViewBounds = NSRect.ZeroRect; ! documentRect = NSRect.ZeroRect; ! } else { ! clipViewBounds = m_contentView.bounds(); ! documentRect = m_contentView.documentRect(); ! } ! point = clipViewBounds.origin.clone(); ! ! if (scroller != m_verticalScroller && scroller != m_horizontalScroller) { ! return; //Unknown scroller ! } ! ! m_knobMoved = false; ! switch(scroller.hitPart()) { ! case NSScrollerPart.NSScrollerKnob: ! case NSScrollerPart.NSScrollerKnobSlot: ! m_knobMoved = true; ! break; ! case NSScrollerPart.NSScrollerIncrementPage: ! if (scroller == m_horizontalScroller) { ! amount = clipViewBounds.size.width - m_horizontalPageScroll; ! } else { ! amount = clipViewBounds.size.height - m_verticalPageScroll; ! } ! break; ! case NSScrollerPart.NSScrollerIncrementLine: ! if (scroller == m_horizontalScroller) { ! amount = m_horizontalLineScroll; ! } else { ! amount = m_verticalLineScroll; ! } ! break; ! case NSScrollerPart.NSScrollerDecrementPage: ! if (scroller == m_horizontalScroller) { ! amount = m_horizontalPageScroll - clipViewBounds.size.width; ! } else { ! amount = m_verticalPageScroll - clipViewBounds.size.height; ! } ! break; ! case NSScrollerPart.NSScrollerDecrementLine: ! if (scroller == m_horizontalScroller) { ! amount = -m_horizontalLineScroll; ! } else { ! amount = -m_verticalLineScroll; ! } ! break; ! default: ! return; ! } ! if (!m_knobMoved) { ! if (scroller == m_horizontalScroller) { ! point.x = clipViewBounds.origin.x + amount; ! } else { ! point.y = clipViewBounds.origin.y + amount; ! } ! } else { ! if (scroller == m_horizontalScroller) { ! point.x = floatValue * (documentRect.size.width - clipViewBounds.size.width); ! point.x += documentRect.origin.x; ! } else { ! point.y = floatValue * (documentRect.size.height - clipViewBounds.size.height); ! point.y += documentRect.origin.y; ! } ! } ! m_contentView.scrollToPoint(point); } |