JX Application Framework
Loading...
Searching...
No Matches
Classes | Public Member Functions | Static Public Member Functions | Static Public Attributes | Protected Member Functions | List of all members
JXScrollbar Class Reference

#include <JXScrollbar.h>

Inheritance diagram for JXScrollbar:
[legend]

Classes

class  Scrolled
 

Public Member Functions

 JXScrollbar (JXContainer *enclosure, const HSizingOption hSizing, const VSizingOption vSizing, const JCoordinate x, const JCoordinate y, const JCoordinate w, const JCoordinate h)
 
 ~JXScrollbar () override
 
JCoordinate GetValue () const
 
void SetValue (const JCoordinate value)
 
void AdjustValue (const JCoordinate delta)
 
void StepLine (const JCoordinate lineCount)
 
void StepPage (const JFloat pageCount)
 
JCoordinate GetStepSize () const
 
void SetStepSize (const JCoordinate step)
 
JCoordinate GetPageStepSize () const
 
void SetPageStepSize (const JCoordinate step)
 
JCoordinate GetMaxValue () const
 
void SetMaxValue (const JCoordinate maxValue)
 
bool IsAtMin () const
 
void ScrollToMin ()
 
bool IsAtMax () const
 
void ScrollToMax ()
 
JFloat GetScrollDelay () const
 
void SetScrollDelay (const JFloat seconds)
 
void ReadSetup (std::istream &input)
 
void WriteSetup (std::ostream &output) const
 
void PlaceScrolltab ()
 
void ScrollToTab (const JIndex tabIndex)
 
void RemoveAllScrolltabs ()
 
bool IsHorizontal () const
 
bool IsVertical () const
 
void PrepareForLowerMaxValue (const JCoordinate start, const JSize length)
 
void PrepareForHigherMaxValue (const JCoordinate start, const JSize length)
 
void PrepareForScaledMaxValue (const JFloat scaleFactor)
 
void StripMoved (const JCoordinate origStart, const JSize length, const JCoordinate newStart)
 
void StripsSwapped (const JCoordinate start1, const JSize length1, const JCoordinate start2, const JSize length2)
 
void ScrolltabCreated (JXScrolltab *tab)
 
void ScrolltabDeleted (JXScrolltab *tab)
 
- Public Member Functions inherited from JXWidget
 ~JXWidget () override
 
void Deactivate () override
 
void Refresh () const override
 
void RefreshRect (const JRect &rect) const
 
void Redraw () const override
 
void RedrawRect (const JRect &rect) const
 
bool Focus ()
 
bool Unfocus ()
 
bool HasFocus () const
 
bool WillAcceptFocus () const
 
void SetSingleFocusWidget ()
 
virtual bool OKToUnfocus ()
 
bool WantsTab () const
 
bool WantsModifiedTab () const
 
virtual void HandleKeyPress (const JUtf8Character &c, const int keySym, const JXKeyModifiers &modifiers)
 
bool WillAcceptShortcut () const
 
virtual void HandleShortcut (const int key, const JXKeyModifiers &modifiers)
 
JPoint GlobalToLocal (const JCoordinate x, const JCoordinate y) const override
 
JPoint LocalToGlobal (const JCoordinate x, const JCoordinate y) const override
 
void Place (const JCoordinate enclX, const JCoordinate enclY) override
 
void Move (const JCoordinate dx, const JCoordinate dy) override
 
void SetSize (const JCoordinate w, const JCoordinate h) override
 
void AdjustSize (const JCoordinate dw, const JCoordinate dh) override
 
HSizingOption GetHSizing () const
 
VSizingOption GetVSizing () const
 
void SetSizing (const HSizingOption hSizing, const VSizingOption vSizing)
 
void CenterWithinEnclosure (const bool adjustHoriz, const bool adjustVert)
 
void FitToEnclosure (const bool fitHoriz=true, const bool fitVert=true)
 
bool Scroll (const JCoordinate dx, const JCoordinate dy)
 
bool ScrollTo (const JCoordinate x, const JCoordinate y)
 
bool ScrollTo (const JPoint &pt)
 
bool ScrollToRect (const JRect &r)
 
bool ScrollToRectCentered (const JRect &r, const bool forceScroll)
 
JRect GetBoundsGlobal () const override
 
JRect GetFrameGlobal () const override
 
JRect GetApertureGlobal () const override
 
JSize GetBorderWidth () const
 
void SetBorderWidth (const JSize width)
 
JColorID GetCurrBackColor () const
 
JColorID GetBackColor () const
 
void SetBackColor (const JColorID color)
 
JColorID GetFocusColor () const
 
void SetFocusColor (const JColorID color)
 
JString ToString () const override
 
virtual JPoint GlobalToLocal (const JCoordinate x, const JCoordinate y) const=0
 
JPoint GlobalToLocal (const JPoint &pt) const
 
JRect GlobalToLocal (const JRect &r) const
 
virtual JPoint LocalToGlobal (const JCoordinate x, const JCoordinate y) const=0
 
JPoint LocalToGlobal (const JPoint &pt) const
 
JRect LocalToGlobal (const JRect &r) const
 
- Public Member Functions inherited from JXContainer
 ~JXContainer () override
 
bool IsAncestor (JXContainer *obj) const
 
virtual void Show ()
 
virtual void Hide ()
 
bool IsVisible () const
 
void SetVisible (const bool vis)
 
bool WouldBeVisible () const
 
virtual void Activate ()
 
bool IsActive () const
 
void SetActive (const bool active)
 
bool WouldBeActive () const
 
virtual void Suspend ()
 
virtual void Resume ()
 
bool IsSuspended () const
 
bool IsDNDSource () const
 
bool IsDNDTarget () const
 
JPoint GlobalToLocal (const JPoint &pt) const
 
JRect GlobalToLocal (const JRect &r) const
 
JPoint LocalToGlobal (const JPoint &pt) const
 
JRect LocalToGlobal (const JRect &r) const
 
JRect GetBounds () const
 
JCoordinate GetBoundsWidth () const
 
JCoordinate GetBoundsHeight () const
 
JRect GetFrame () const
 
JRect GetFrameLocal () const
 
JCoordinate GetFrameWidth () const
 
JCoordinate GetFrameHeight () const
 
JRect GetAperture () const
 
JCoordinate GetApertureWidth () const
 
JCoordinate GetApertureHeight () const
 
JXDisplayGetDisplay () const
 
JXWindowGetWindow () const
 
JXContainerGetEnclosure () const
 
JFontManagerGetFontManager () const
 
JXFontManagerGetXFontManager () const
 
JXSelectionManagerGetSelectionManager () const
 
JXDNDManagerGetDNDManager () const
 
JXMenuManagerGetMenuManager () const
 
JCursorIndex GetDefaultCursor () const
 
bool GetHint (JString *text) const
 
void SetHint (const JString &text)
 
void ClearHint ()
 
bool GetVisibleRectGlobal (const JRect &origRectG, JRect *visRectG) const
 
void ForEach (const std::function< void(JXContainer *)> &f, const bool recurse)
 
void ForEach (const std::function< void(const JXContainer *)> &f, const bool recurse) const
 
void ExpandToFitContent ()
 
virtual bool RunInternalFTC (const bool horizontal, JCoordinate *newSize)
 
JRect ComputePaddingForInternalFTC () const
 
bool FindContainer (const JPoint &ptG, JXContainer **container) const
 
virtual bool IsMenu () const
 
virtual bool IsMenuTable () const
 
- Public Member Functions inherited from JBroadcaster
 JBroadcaster ()
 
virtual ~JBroadcaster ()
 
JBroadcasteroperator= (const JBroadcaster &source)
 
bool HasSenders () const
 
JSize GetSenderCount () const
 
bool HasRecipients () const
 
JSize GetRecipientCount () const
 
template<class T >
void ListenTo (const JBroadcaster *sender, const std::function< void(const T &)> &f)
 

Static Public Member Functions

static void SkipSetup (std::istream &input)
 
- Static Public Member Functions inherited from JXContainer
static void DebugExpandToFitContent (const bool horiz)
 
static void DebugExpandToFitContentExtras (const bool noop, const bool overlap)
 

Static Public Attributes

static const JCoordinate kMinValue = 0
 
static const JUtf8BytekScrolled = "Scrolled::JXScrollbar"
 
- Static Public Attributes inherited from JXWidget
static const JUtf8BytekGotFocus = "GotFocus::JXWidget"
 
static const JUtf8BytekLostFocus = "LostFocus::JXWidget"
 

Protected Member Functions

void Draw (JXWindowPainter &p, const JRect &rect) override
 
void DrawBorder (JXWindowPainter &p, const JRect &frame) override
 
void AdjustCursor (const JPoint &pt, const JXKeyModifiers &modifiers) override
 
void HandleMouseDown (const JPoint &pt, const JXMouseButton button, const JSize clickCount, const JXButtonStates &buttonStates, const JXKeyModifiers &modifiers) override
 
void HandleMouseDrag (const JPoint &pt, const JXButtonStates &buttonStates, const JXKeyModifiers &modifiers) override
 
void HandleMouseUp (const JPoint &pt, const JXMouseButton button, const JXButtonStates &buttonStates, const JXKeyModifiers &modifiers) override
 
- Protected Member Functions inherited from JXWidget
 JXWidget (JXContainer *enclosure, const HSizingOption hSizing, const VSizingOption vSizing, const JCoordinate x, const JCoordinate y, const JCoordinate w, const JCoordinate h)
 
void WantInput (const bool wantInput, const bool wantTab=false, const bool wantModifiedTab=false)
 
virtual void HandleFocusEvent ()
 
virtual void HandleUnfocusEvent ()
 
virtual void HandleWindowFocusEvent ()
 
virtual void HandleWindowUnfocusEvent ()
 
void UnlockBounds ()
 
void SetBounds (const JCoordinate w, const JCoordinate h)
 
void AdjustBounds (const JCoordinate dw, const JCoordinate dh)
 
void DrawBackground (JXWindowPainter &p, const JRect &frame) override
 
bool AcceptDrag (const JPoint &pt, const JXMouseButton button, const JXKeyModifiers &modifiers) override
 
JXDragPainterCreateDragInsidePainter ()
 
JXDragPainterCreateDragOutsidePainter ()
 
bool GetDragPainter (JXDragPainter **p) const
 
bool GetDragPainter (JPainter **p) const
 
void DeleteDragPainter ()
 
void BoundsMoved (const JCoordinate dx, const JCoordinate dy) override
 
void EnclosingBoundsMoved (const JCoordinate dx, const JCoordinate dy) override
 
void BoundsResized (const JCoordinate dw, const JCoordinate dh) override
 
void EnclosingBoundsResized (const JCoordinate dw, const JCoordinate dh) override
 
virtual void ApertureMoved (const JCoordinate dx, const JCoordinate dy)
 
virtual void ApertureResized (const JCoordinate dw, const JCoordinate dh)
 
void FTCAdjustSize (const JCoordinate dw, const JCoordinate dh) override
 
bool BeginDND (const JPoint &pt, const JXButtonStates &buttonStates, const JXKeyModifiers &modifiers, JXSelectionData *data, JXDNDManager::TargetFinder *targetFinder=nullptr)
 
virtual void DNDInit (const JPoint &pt, const JXButtonStates &buttonStates, const JXKeyModifiers &modifiers)
 
virtual void GetSelectionData (JXSelectionData *data, const JString &id)
 
virtual void DNDFinish (const bool isDrop, const JXContainer *target)
 
virtual void DNDCompletelyFinished ()
 
virtual Atom GetDNDAction (const JXContainer *target, const JXButtonStates &buttonStates, const JXKeyModifiers &modifiers)
 
virtual void GetDNDAskActions (const JXButtonStates &buttonStates, const JXKeyModifiers &modifiers, JArray< Atom > *askActionList, JPtrArray< JString > *askDescriptionList)
 
virtual void HandleDNDResponse (const JXContainer *target, const bool dropAccepted, const Atom action)
 
bool WillAllowUnboundedScrolling () const
 
void ShouldAllowUnboundedScrolling (const bool allow)
 
- Protected Member Functions inherited from JXContainer
 JXContainer (JXWindow *window, JXContainer *enclosure)
 
 JXContainer (JXDisplay *display, JXWindow *window, JXContainer *enclosure)
 
void TurnOnBufferedDrawing ()
 
void DrawAll (JXWindowPainter &p, const JRect &frameG)
 
virtual void HandleMouseEnter ()
 
virtual void HandleMouseHere (const JPoint &pt, const JXKeyModifiers &modifiers)
 
virtual void HandleMouseLeave ()
 
virtual bool HitSamePart (const JPoint &pt1, const JPoint &pt2) const
 
virtual bool WillAcceptDrop (const JArray< Atom > &typeList, Atom *action, const JPoint &pt, const Time time, const JXWidget *source)
 
virtual void HandleDNDEnter ()
 
virtual void HandleDNDHere (const JPoint &pt, const JXWidget *source)
 
virtual void HandleDNDLeave ()
 
virtual void HandleDNDDrop (const JPoint &pt, const JArray< Atom > &typeList, const Atom action, const Time time, const JXWidget *source)
 
virtual void HandleDNDScroll (const JPoint &pt, const JXMouseButton scrollButton, const JXKeyModifiers &modifiers)
 
bool DispatchClientMessage (const XClientMessageEvent &clientMessage)
 
virtual bool HandleClientMessage (const XClientMessageEvent &clientMessage)
 
void NotifyBoundsMoved (const JCoordinate dx, const JCoordinate dy)
 
void NotifyBoundsResized (const JCoordinate dw, const JCoordinate dh)
 
virtual bool IncludeInFTC () const
 
virtual bool NeedsInternalFTC () const
 
virtual JCoordinate GetFTCMinContentSize (const bool horizontal) const
 
virtual JRect GetFrameForFTC () const
 
bool GetEnclosedObjects (JPtrArrayIterator< JXContainer > **iter) const
 
void DeleteEnclosedObjects ()
 
void ShowCursor ()
 
void HideCursor ()
 
void SetDefaultCursor (const JCursorIndex index)
 
void DispatchCursor (const JPoint &ptG, const JXKeyModifiers &modifiers)
 
void DisplayCursor (const JCursorIndex index)
 
JXCursorAnimatorCreateCursorAnimator ()
 
JXCursorAnimatorGetCursorAnimator () const
 
void AnimateCursor () const
 
void RemoveCursorAnimator ()
 
void ActivateCursor (const JPoint &ptG, const JXKeyModifiers &modifiers)
 
void DeactivateCursor ()
 
std::ostream & GetFTCLog () const
 
virtual bool StealMouse (const int eventType, const JPoint &ptG, const JXMouseButton button, const unsigned int state)
 
- Protected Member Functions inherited from JBroadcaster
 JBroadcaster (const JBroadcaster &source)
 
void ListenTo (const JBroadcaster *sender)
 
void StopListening (const JBroadcaster *sender)
 
void ClearWhenGoingAway (const JBroadcaster *sender, void *pointerToMember)
 
void StopListening (const JBroadcaster *sender, const std::type_info &messageType)
 
template<class T >
void Send (JBroadcaster *recipient, const T &message)
 
template<class T >
void Broadcast (const T &message)
 
virtual void Receive (JBroadcaster *sender, const Message &message)
 
void SendWithFeedback (JBroadcaster *recipient, Message *message)
 
void BroadcastWithFeedback (Message *message)
 
virtual void ReceiveWithFeedback (JBroadcaster *sender, Message *message)
 
virtual void ReceiveGoingAway (JBroadcaster *sender)
 

Additional Inherited Members

- Public Types inherited from JXWidget
enum  HSizingOption {
  kFixedLeft ,
  kFixedRight ,
  kHElastic
}
 
enum  VSizingOption {
  kFixedTop ,
  kFixedBottom ,
  kVElastic
}
 

Detailed Description

Scrollbars take integer values from 0 to a client specified maximum.
(Sliders provide the general case.)

JXScrolltab:

    Meta-left-click on thumb:      place tab
    left-click on tab:             jump to our saved position
    Meta-left-click on tab:        remove this tab
    Meta-Shift-left-click on tab:  remove all tabs
    right-click on either:         open menu with available choices

To do:

    If scrolltabs get too close together, we could place consecutive ones
    on opposite edges of the scrollbar to produce a checkered pattern.
    To avoid any overlap at all, one could shift a colliding subset of
    scrolltabs by x pixels to minimize

        sum(((position[i] - true_position[i]) - x)^2)

    This gives x = sum(position[i] - true_position[i]) / n

Constructor & Destructor Documentation

◆ JXScrollbar()

JXScrollbar::JXScrollbar ( JXContainer enclosure,
const HSizingOption  hSizing,
const VSizingOption  vSizing,
const JCoordinate  x,
const JCoordinate  y,
const JCoordinate  w,
const JCoordinate  h 
)

◆ ~JXScrollbar()

JXScrollbar::~JXScrollbar ( )
override

Member Function Documentation

◆ AdjustCursor()

void JXScrollbar::AdjustCursor ( const JPoint pt,
const JXKeyModifiers modifiers 
)
overrideprotectedvirtual

Derived classes can override to adjust the cursor as appropriate.

Should not be called if cursor animator is active.

Reimplemented from JXContainer.

◆ AdjustValue()

void JXScrollbar::AdjustValue ( const JCoordinate  delta)
inline

◆ Draw()

void JXScrollbar::Draw ( JXWindowPainter p,
const JRect rect 
)
overrideprotectedvirtual

Implements JXContainer.

◆ DrawBorder()

void JXScrollbar::DrawBorder ( JXWindowPainter p,
const JRect frame 
)
overrideprotectedvirtual

Implements JXContainer.

◆ GetMaxValue()

JCoordinate JXScrollbar::GetMaxValue ( ) const
inline

◆ GetPageStepSize()

JCoordinate JXScrollbar::GetPageStepSize ( ) const
inline

◆ GetScrollDelay()

JFloat JXScrollbar::GetScrollDelay ( ) const
inline

This specifies how long to wait between actions when the mouse is held down on the arrows.

◆ GetStepSize()

JCoordinate JXScrollbar::GetStepSize ( ) const
inline

◆ GetValue()

JCoordinate JXScrollbar::GetValue ( ) const
inline

◆ HandleMouseDown()

void JXScrollbar::HandleMouseDown ( const JPoint pt,
const JXMouseButton  button,
const JSize  clickCount,
const JXButtonStates buttonStates,
const JXKeyModifiers modifiers 
)
overrideprotectedvirtual

Reimplemented from JXContainer.

◆ HandleMouseDrag()

void JXScrollbar::HandleMouseDrag ( const JPoint pt,
const JXButtonStates buttonStates,
const JXKeyModifiers modifiers 
)
overrideprotectedvirtual

Reimplemented from JXContainer.

◆ HandleMouseUp()

void JXScrollbar::HandleMouseUp ( const JPoint pt,
const JXMouseButton  button,
const JXButtonStates buttonStates,
const JXKeyModifiers modifiers 
)
overrideprotectedvirtual

Reimplemented from JXContainer.

◆ IsAtMax()

bool JXScrollbar::IsAtMax ( ) const
inline

◆ IsAtMin()

bool JXScrollbar::IsAtMin ( ) const
inline

◆ IsHorizontal()

bool JXScrollbar::IsHorizontal ( ) const
inline

◆ IsVertical()

bool JXScrollbar::IsVertical ( ) const
inline

◆ PlaceScrolltab()

void JXScrollbar::PlaceScrolltab ( )

◆ PrepareForHigherMaxValue()

void JXScrollbar::PrepareForHigherMaxValue ( const JCoordinate  start,
const JSize  length 
)

JXScrollableWidgets should call this before increasing the maximum value of a scrollbar so the scrolltabs will maintain the correct positions relative to the widget's contents.

start and length specify the strip of the widget that is being inserted.

◆ PrepareForLowerMaxValue()

void JXScrollbar::PrepareForLowerMaxValue ( const JCoordinate  start,
const JSize  length 
)

JXScrollableWidgets should call this before lowering the maximum value of a scrollbar so the scrolltabs will maintain the correct positions relative to the widget's contents.

start and length specify the strip of the widget that is being removed.

◆ PrepareForScaledMaxValue()

void JXScrollbar::PrepareForScaledMaxValue ( const JFloat  scaleFactor)

JXScrollableWidgets should call this before changing the maximum value of a scrollbar due to a change in scale so the scrolltabs will maintain the correct positions relative to the widget's contents.

◆ ReadSetup()

void JXScrollbar::ReadSetup ( std::istream &  input)

◆ RemoveAllScrolltabs()

void JXScrollbar::RemoveAllScrolltabs ( )

◆ ScrolltabCreated()

void JXScrollbar::ScrolltabCreated ( JXScrolltab tab)

◆ ScrolltabDeleted()

void JXScrollbar::ScrolltabDeleted ( JXScrolltab tab)

◆ ScrollToMax()

void JXScrollbar::ScrollToMax ( )
inline

◆ ScrollToMin()

void JXScrollbar::ScrollToMin ( )
inline

◆ ScrollToTab()

void JXScrollbar::ScrollToTab ( const JIndex  tabIndex)

Allows widgets to provide shortcuts (e.g. Ctrl-#) to jump to particular tabs.

◆ SetMaxValue()

void JXScrollbar::SetMaxValue ( const JCoordinate  maxValue)

◆ SetPageStepSize()

void JXScrollbar::SetPageStepSize ( const JCoordinate  step)
inline

◆ SetScrollDelay()

void JXScrollbar::SetScrollDelay ( const JFloat  seconds)
inline

◆ SetStepSize()

void JXScrollbar::SetStepSize ( const JCoordinate  step)
inline

◆ SetValue()

void JXScrollbar::SetValue ( const JCoordinate  value)

◆ SkipSetup()

void JXScrollbar::SkipSetup ( std::istream &  input)
static

◆ StepLine()

void JXScrollbar::StepLine ( const JCoordinate  lineCount)
inline

◆ StepPage()

void JXScrollbar::StepPage ( const JFloat  pageCount)
inline

◆ StripMoved()

void JXScrollbar::StripMoved ( const JCoordinate  origStart,
const JSize  length,
const JCoordinate  newStart 
)

JXScrollableWidgets should call this when a strip of the widget is moved to a different location.

◆ StripsSwapped()

void JXScrollbar::StripsSwapped ( const JCoordinate  start1,
const JSize  length1,
const JCoordinate  start2,
const JSize  length2 
)

JXScrollableWidgets should call this when two strips of the widget are swapped.

◆ WriteSetup()

void JXScrollbar::WriteSetup ( std::ostream &  output) const

Member Data Documentation

◆ kMinValue

const JCoordinate JXScrollbar::kMinValue = 0
static

◆ kScrolled

const JUtf8Byte * JXScrollbar::kScrolled = "Scrolled::JXScrollbar"
static

The documentation for this class was generated from the following files: