Description

The goal of the bislider project is to provide to the java developper community a rich java implementation of a range slider. A range slider can replace 2 JSliders but also provide the opportunity to let the user see the constraint between the minimum and the maximum values. In order to provide a more generic tool the BiSlider project aims to explore other issues related to sliders (Segments for easier selection, Color gradient for color mapping, precision enhancement with sub-sliders, etc)

Files

BiSlider In Action

BiSlider screenshot:

Java applet: (jdk 1.5 plugin necessary)

No Java 2 SDK, Standard Edition v 1.5.0 support for APPLET!!
  • Simplest example
No Java 2 SDK, Standard Edition v 1.5.0 support for APPLET!!
  • This is a more complex example to illustrate as many options as possible
  • Parameters are initialized with applet param tags but everything can be interactively modified
  • Background transparency doesn't work for applet :-(
  • Precision popup may not work properly for applet since BiSlider need to hack your mouse (with a Robot) and such hack is prohibited for applet.

How to use it:

  • Such java bean is not intended to be used alone, should be coupled with a map/chart/visualization/table/etc.
  • This bean can be imported in a graphical java Interface Builder like Netbeans
  • Read the ReadMe.txt File for legal notice and javadoc for API
  • The jar package contain multiple examples

List of features:

  • Right click to bring a popup menu with user's options
  • Double click the triangles to bring a popup slider to set values with precision since version 1.3.5
  • It now works for integer or double values since version 1.3.3
  • Developer can force the segments to be uniform (= int division)
  • There are 3 different kinds of color interpolation: HSB, CENTRAL_BLACK and RGB
  • If SegmentCount equals 1 or SegemntSize equals the full range this bean behaves like a range slider
  • Since v1.3.5 corners can be rounded and foreground/background/font color can be changed
  • Double click a non-colored segment to select it as a the segment
  • Click and drag the maximum or the minimum triangle to change the according value
  • Shift+double click to extend the selection with a new segment
  • Shift click triangle or segment will align it on graduation
  • While dragging a triangle left or right, turn 90 to open the precision popup without releasing the mouse button
  • Alt+click+drag a triangle to select a range around the central value
  • Drag&Drop the minimum value (text in bold) of the legend to set the SegmentCount
  • Shift Drag&Drop the minimum value (text) to stay on the int values
  • Double click the minimum or maximum value (text) to change the scope of the bean
  • Font painting is now anti-aliased since v1.3.5
  • The content (colored segments) can be customized (see histogram in the applet for instance)
  • The content (colored segments) can be then also be animated (see example #2)

To Do list:

  • Multiple ranges management
  • Time based (non uniform & multi scales) segments (days, months, )
  • Standardized popup menu
  • CENTRAL_BLACK => generalized central color feature
  • Multiple API levels for SegmentListener, ColorListener, PrecisionListener, etc.

Other projects on range sliders:

Software architecture:

  • PAC architecture Model is very similar to MVC. It was invented by Joëlle Coutaz
  • PAC architecture suggests to build GUI using *agents* with 3 facets (Presentation, Abstraction and Control)
  • PAc agent are ususlly reprented by a Mickey head, each ear being a facet.
  • Presentation Facet (View&Control in MVC) hold the interaction with the user
  • Abstraction facet (Model in MVC) hold the logical state of the component
  • Control Facet hold communication between the two other facets and with outside components

The examples shown when the jar of the bean is launch directly

Copyright 1997-2007 Frédéric Vernier. All Rights Reserved

Permission to use, copy, modify and distribute this software and its documentation for educational, research and non-profit purposes, without fee, and without a written agreement is hereby granted, provided that the above copyright notice and the following three paragraphs appear in all copies.

To request Permission to incorporate this software into commercial products contact Frederic Vernier, 19 rue de la butte aux cailles, Paris, F75013, France. Tel: (+33) 871 747 387.

IN NO EVENT SHALL FREDERIC VERNIER BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF FREDERIC VERNIER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.

FREDERIC VERNIER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HERE UNDER IS ON AN "AS IS" BASIS, AND FREDERIC VERNIER HAS NO OBLIGATIONS TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.