From: Richard K. <ric...@us...> - 2005-05-23 18:27:54
|
Update of /cvsroot/actionstep/actionstep/src/org/actionstep In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv16387 Modified Files: ASTheme.as ASThemeProtocol.as NSControl.as NSScroller.as Log Message: scroller works! Index: ASThemeProtocol.as =================================================================== RCS file: /cvsroot/actionstep/actionstep/src/org/actionstep/ASThemeProtocol.as,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** ASThemeProtocol.as 20 May 2005 20:36:21 -0000 1.7 --- ASThemeProtocol.as 23 May 2005 18:27:40 -0000 1.8 *************** *** 77,83 **** /** ! * Draws an NSTextFieldCell with the supplied colorset ("defaultTextfield") in the view. */ public function drawTextFieldWithRectInView(rect:NSRect, view:NSView); /** --- 77,93 ---- /** ! * Draws an NSTextFieldCell in the view. */ public function drawTextFieldWithRectInView(rect:NSRect, view:NSView); + + /** + * Draws an NSScroller slot in the view. + */ + public function drawScrollerSlotWithRectInView(rect:NSRect, view:NSView); + + /** + * Draws an NSScroller slot in the view. + */ + public function drawScrollerWithRectInClip(rect:NSRect, clip:MovieClip); /** Index: NSControl.as =================================================================== RCS file: /cvsroot/actionstep/actionstep/src/org/actionstep/NSControl.as,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -d -r1.10 -r1.11 *** NSControl.as 23 May 2005 11:10:12 -0000 1.10 --- NSControl.as 23 May 2005 18:27:40 -0000 1.11 *************** *** 469,473 **** return; } ! if(event.view == this) { m_cell.setHighlighted(true); setNeedsDisplay(true); --- 469,473 ---- return; } ! if(event.view == this && cellTrackingRect().pointInRect(convertPointFromView(event.mouseLocation, null))) { m_cell.setHighlighted(true); setNeedsDisplay(true); Index: NSScroller.as =================================================================== RCS file: /cvsroot/actionstep/actionstep/src/org/actionstep/NSScroller.as,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** NSScroller.as 23 May 2005 11:38:38 -0000 1.5 --- NSScroller.as 23 May 2005 18:27:40 -0000 1.6 *************** *** 29,33 **** */ ! import org.actionstep.ASDraw; import org.actionstep.NSControl; --- 29,33 ---- */ ! import org.actionstep.ASTheme; import org.actionstep.NSControl; *************** *** 39,42 **** --- 39,43 ---- import org.actionstep.NSEvent; import org.actionstep.NSButtonCell; + import org.actionstep.NSApplication; import org.actionstep.constants.NSScrollerPart; *************** *** 491,495 **** case NSScrollerPart.NSScrollerKnob: trackKnob(event); ! break; case NSScrollerPart.NSScrollerKnobSlot: var floatValue = floatValueAtPoint(convertPointFromView(location, null)); --- 492,496 ---- case NSScrollerPart.NSScrollerKnob: trackKnob(event); ! return; case NSScrollerPart.NSScrollerKnobSlot: var floatValue = floatValueAtPoint(convertPointFromView(location, null)); *************** *** 512,519 **** private function trackKnob(event:NSEvent) { } public function drawRect(rect:NSRect) { ! ASDraw.outlineRectWithRect(m_mcBounds, rect, [0x696E79,0xF6F8F9]); var rectIncrementLine:NSRect = rectForPart(NSScrollerPart.NSScrollerIncrementLine); var rectDecrementLine:NSRect = rectForPart(NSScrollerPart.NSScrollerDecrementLine); --- 513,547 ---- private function trackKnob(event:NSEvent) { + // This is necessary because of the async requirements of Flash + var rectKnob:NSRect = rectForPart(NSScrollerPart.NSScrollerKnob); + var point:NSPoint = convertPointFromView(event.mouseLocation, null); + m_trackingData = { + offsetY: point.y - rectKnob.origin.y, + offsetX: point.x - rectKnob.origin.x, + mouseDown: true, + eventMask: NSEvent.NSLeftMouseDownMask | NSEvent.NSLeftMouseUpMask | NSEvent.NSLeftMouseDraggedMask + | NSEvent.NSMouseMovedMask | NSEvent.NSOtherMouseDraggedMask | NSEvent.NSRightMouseDraggedMask, + complete: false, + }; + knobTrackingCallback(event); + } + + public function knobTrackingCallback(event:NSEvent) { + if (event.type == NSEvent.NSLeftMouseUp) { + return; + } + var point:NSPoint = convertPointFromView(event.mouseLocation, null); + if (m_horizontal) { + point.x -= m_trackingData.offsetX; + } else { + point.y -= m_trackingData.offsetY; + } + setFloatValue(floatValueAtPoint(point)); + sendActionTo(m_action, m_target); + NSApplication.sharedApplication().callObjectSelectorWithNextEventMatchingMaskDequeue(this, "knobTrackingCallback", m_trackingData.eventMask, true); } public function drawRect(rect:NSRect) { ! ASTheme.current().drawScrollerSlotWithRectInView(rect, this); var rectIncrementLine:NSRect = rectForPart(NSScrollerPart.NSScrollerIncrementLine); var rectDecrementLine:NSRect = rectForPart(NSScrollerPart.NSScrollerDecrementLine); *************** *** 524,529 **** private function drawKnob() { ! if (m_scrollerKnobClip == null) { m_scrollerKnobClip = createSubviewMovieClip(); } var rectKnob:NSRect = rectForPart(NSScrollerPart.NSScrollerKnob); --- 552,558 ---- private function drawKnob() { ! if (m_scrollerKnobClip == null || m_scrollerKnobClip._parent == undefined) { m_scrollerKnobClip = createSubviewMovieClip(); + m_scrollerKnobClip.view = this; } var rectKnob:NSRect = rectForPart(NSScrollerPart.NSScrollerKnob); *************** *** 539,545 **** m_scrollerKnobClipRect.size.width = rectKnob.size.width; m_scrollerKnobClipRect.size.width = rectKnob.size.height; ! ASDraw.outlineRectWithRect(m_scrollerKnobClip, ! new NSRect(0,0,rectKnob.size.width, rectKnob.size.height), ! [0xF6F8F9, 0x696E79]); } } --- 568,573 ---- m_scrollerKnobClipRect.size.width = rectKnob.size.width; m_scrollerKnobClipRect.size.width = rectKnob.size.height; ! m_scrollerKnobClip.clear(); ! ASTheme.current().drawScrollerWithRectInClip(new NSRect(0,0,rectKnob.size.width, rectKnob.size.height), m_scrollerKnobClip); } } *************** *** 562,573 **** private function setButtonCellTargets() { ! g_upCell.setTarget(m_target); ! g_upCell.setAction(m_action); ! g_downCell.setTarget(m_target); ! g_downCell.setAction(m_action); ! g_leftCell.setTarget(m_target); ! g_leftCell.setAction(m_action); ! g_rightCell.setTarget(m_target); ! g_rightCell.setAction(m_action); } --- 590,604 ---- private function setButtonCellTargets() { ! if (m_horizontal) { ! g_leftCell.setTarget(m_target); ! g_leftCell.setAction(m_action); ! g_rightCell.setTarget(m_target); ! g_rightCell.setAction(m_action); ! } else { ! g_upCell.setTarget(m_target); ! g_upCell.setAction(m_action); ! g_downCell.setTarget(m_target); ! g_downCell.setAction(m_action); ! } } *************** *** 580,589 **** if (m_horizontal) { ! min_pos = slotRect.minX() + knobRect.size.width/2 ! min_pos = slotRect.maxX() + knobRect.size.width/2 position = point.x; } else { ! min_pos = slotRect.minY() + knobRect.size.height/2 ! min_pos = slotRect.maxY() + knobRect.size.height/2 position = point.y; } --- 611,620 ---- if (m_horizontal) { ! min_pos = slotRect.minX(); ! max_pos = slotRect.maxX() - knobRect.size.width; position = point.x; } else { ! min_pos = slotRect.minY(); ! max_pos = slotRect.maxY() - knobRect.size.height; position = point.y; } Index: ASTheme.as =================================================================== RCS file: /cvsroot/actionstep/actionstep/src/org/actionstep/ASTheme.as,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** ASTheme.as 20 May 2005 20:36:21 -0000 1.8 --- ASTheme.as 23 May 2005 18:27:40 -0000 1.9 *************** *** 112,115 **** --- 112,123 ---- } + public function drawScrollerSlotWithRectInView(rect:NSRect, view:NSView) { + drawScrollerSlot(view.mcBounds(), rect); + } + + public function drawScrollerWithRectInClip(rect:NSRect, clip:MovieClip) { + drawScroller(clip, rect); + } + public function registerDefaultImages() { setImage("NSRadioButton", org.actionstep.images.ASRadioButtonRep); *************** *** 221,225 **** { var insetRect:NSRect = rect.insetRect(1,1); ! ASDraw.gradientRectWithRect( mc, rect, ANGLE_TOP_TO_BOTTOM, drawTextfield_colors, drawTextfield_ratios); ASDraw.gradientRectWithAlphaRect(mc, new NSRect(rect.origin.x, rect.origin.y, 5, rect.size.height), 30, drawTextfieldShadow_colors, drawTextfieldShadow_ratios, drawTextfieldShadow_alphas); --- 229,236 ---- { var insetRect:NSRect = rect.insetRect(1,1); ! ASDraw.solidRectWithRect( mc, rect, 0xCACDD2); ! //ASDraw.gradientRectWithRect( mc, rect, ANGLE_TOP_TO_BOTTOM, drawTextfield_colors, drawTextfield_ratios); ! ASDraw.gradientRectWithRect( mc, new NSRect(rect.origin.x, rect.origin.y, rect.size.width, 25), ANGLE_TOP_TO_BOTTOM, ! drawTextfield_colors, drawTextfield_ratios); ASDraw.gradientRectWithAlphaRect(mc, new NSRect(rect.origin.x, rect.origin.y, 5, rect.size.height), 30, drawTextfieldShadow_colors, drawTextfieldShadow_ratios, drawTextfieldShadow_alphas); *************** *** 229,232 **** --- 240,275 ---- /////////////////////////////// + /////////////////////////////// + // SCROLLER DRAW FUNCTIONS + private static var drawScrollerSlot_outlineColors:Array = [0x4B4F57, 0xDEE1E6]; + private static var drawScrollerSlot_colors:Array = [0x80848F, 0xAFB4BA, 0xCACDD2]; + private static var drawScrollerSlot_ratios:Array = [ 0, 6, 24]; + private static var drawScrollerSlotShadow_colors:Array = [0x767A85, 0xB6BBC1]; + private static var drawScrollerSlotShadow_alphas:Array = [ 100, 0]; + private static var drawScrollerSlotShadow_ratios:Array = [ 0, 5]; + private function drawScrollerSlot(mc:MovieClip, rect:NSRect) + { + var insetRect:NSRect = rect.insetRect(1,1); + ASDraw.solidRectWithRect( mc, rect, 0xCACDD2); + //ASDraw.gradientRectWithRect( mc, rect, ANGLE_TOP_TO_BOTTOM, drawTextfield_colors, drawTextfield_ratios); + ASDraw.gradientRectWithAlphaRect(mc, new NSRect(rect.origin.x, rect.origin.y, rect.size.width, 5), ANGLE_TOP_TO_BOTTOM, + drawScrollerSlotShadow_colors, drawScrollerSlotShadow_ratios, drawScrollerSlotShadow_alphas); + ASDraw.gradientRectWithAlphaRect(mc, new NSRect(rect.origin.x, rect.origin.y, 5, rect.size.height), 30, + drawScrollerSlotShadow_colors, drawScrollerSlotShadow_ratios, drawScrollerSlotShadow_alphas); + ASDraw.outlineRectWithRect( mc, rect, drawScrollerSlot_outlineColors); + } + + private static var drawScroller_outlineColors:Array = [0xDEE1E6, 0x4B4F57]; + private function drawScroller(mc:MovieClip, rect:NSRect) + { + ASDraw.solidRectWithRect( mc, rect, 0xCACDD2); + ASDraw.outlineRectWithRect( mc, rect, drawScroller_outlineColors); + } + + // END TEXTFIELD DRAW FUNCTIONS + /////////////////////////////// + + + //****************************************************** //* Public Static Properties * |