diff options
author | Sven Göthel <sgothel@jausoft.com> | 2024-01-15 11:02:09 +0100 |
---|---|---|
committer | Sven Göthel <sgothel@jausoft.com> | 2024-01-15 11:02:09 +0100 |
commit | 2bd66b50f21fd21e2102ac75cf4ce6cf875aca4d (patch) | |
tree | 4e8a332f2eed9fe2e1554180dea3f52e1eb080a7 /src/graphui/classes/com/jogamp/graph/ui/widgets/RangeSlider.java | |
parent | 31ef5df9c5868b2b8e4ce843a4bf0a6c3f5a9879 (diff) |
GraphUI Shape: Add receiveKeyEvents() and receiveMouseEvents() allowing a Shape to receive forwarded events from another Shape; Added receive*Events() specialisation for RangeSlider
Forwarding events from shape to shape is useful, allowing inner shapes to send them to its group,
which itself may send it out towards an outer widget like RangeSlider.
RangeSlider's receive*Events() specialisation receives desired events from the source to its barAndKnob and knob
shapes, which are listening. It also suppresses the mouseClicked() event as it is only useful coming from itself.
Diffstat (limited to 'src/graphui/classes/com/jogamp/graph/ui/widgets/RangeSlider.java')
-rw-r--r-- | src/graphui/classes/com/jogamp/graph/ui/widgets/RangeSlider.java | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/src/graphui/classes/com/jogamp/graph/ui/widgets/RangeSlider.java b/src/graphui/classes/com/jogamp/graph/ui/widgets/RangeSlider.java index ab57cc5d7..a11700287 100644 --- a/src/graphui/classes/com/jogamp/graph/ui/widgets/RangeSlider.java +++ b/src/graphui/classes/com/jogamp/graph/ui/widgets/RangeSlider.java @@ -146,7 +146,6 @@ public final class RangeSlider extends Widget { } private RangeSlider(final int renderModes_, final Vec2f size, final float knobScale, final Vec2f minMax, final float unitSize, final float pageSz, final float value) { - // final int renderModes = ( renderModes_ & ~Region.AA_RENDERING_MASK ) | Region.COLORCHANNEL_RENDERING_BIT; final int renderModes = renderModes_ & ~(Region.AA_RENDERING_MASK | Region.COLORCHANNEL_RENDERING_BIT); this.unitSize = unitSize; this.pageSize = pageSz; @@ -179,14 +178,14 @@ public final class RangeSlider extends Widget { barLineWidth = ( size.y() - height ) * pageBarLineScale; knobLength = width; knobHeight = height; - setPaddding(new Padding(size.y(), 0, size.y(), 0)); + setPaddding(new Padding(size.y()/2f, 0, size.y()/2f, 0)); } else { width = size.x() * pageKnobScale; height = pageSizePct * this.size.y(); barLineWidth = ( size.x() - width ) * pageBarLineScale; knobLength = height; knobHeight = width; - setPaddding(new Padding(0, size.x(), 0, size.x())); + setPaddding(new Padding(0, size.x()/2f, 0, size.x()/2f)); // System.err.println("ZZZ minMax "+minMax+", pageSize "+pageSize+" "+(pageSizePct*100f)+"% -> "+knobHeight+"/"+this.size.y()); } bar = new Rectangle(renderModes, this.size.x(), this.size.y(), barLineWidth); @@ -362,6 +361,19 @@ public final class RangeSlider extends Widget { } @Override + public void receiveKeyEvents(final Shape source) { + source.addKeyListener(new Shape.ForwardKeyListener(barAndKnob)); + source.addKeyListener(new Shape.ForwardKeyListener(knob)); + } + @Override + public void receiveMouseEvents(final Shape source) { + source.addMouseListener(new Shape.ForwardMouseListener(barAndKnob) { + @Override + public void mouseClicked(final MouseEvent e) { /* nop */ } + }); + } + + @Override protected void clearImpl0(final GL2ES2 gl, final RegionRenderer renderer) { super.clearImpl0(gl, renderer); sliderListeners.clear(); |