GWT CustomScrollPanel example

前端 未结 3 357
[愿得一人]
[愿得一人] 2020-12-06 03:40

I found out about GWT\'s CustomScrollPanel and how you can customize the scroll bar, but I can\'t find any examples or how to set it up. Are there any examples out there th

相关标签:
3条回答
  • 2020-12-06 03:58

    If anyone is interested in having the CSS for both vertical/horizontal, this is what I'm using.

    HorizontalScrollbar.css

    /* ***********
     * SCROLLBAR *
     * ***********/
    .nativeHorizontalScrollbar::-webkit-scrollbar
    {
        width: 10px;
        height: 10px;
    }
    
    /* *************
     * BUTTON AREA *
     * *************/
    .nativeHorizontalScrollbar::-webkit-scrollbar-button:horizontal
    {
        background-color: transparent;
    }
    
    /* Increment scroll left/right button. */
    .nativeHorizontalScrollbar::-webkit-scrollbar-button:start:decrement,
    .nativeHorizontalScrollbar::-webkit-scrollbar-button:end:increment
    {
        display: block;
    
        width: 10px;
        height: 8px;
    
        background-repeat: no-repeat;
        background-size: 10px 8px;
    }
    
    /* Increment scroll left button. */
    .nativeHorizontalScrollbar::-webkit-scrollbar-button:start:decrement
    {
        background-image: url('images/scroll-left.png');
    }
    
    /* Increment scroll right button. */
    .nativeHorizontalScrollbar::-webkit-scrollbar-button:end:increment
    {
        background-image: url('images/scroll-right.png');
    }
    
    /* Jump left/right buttons. */
    .nativeHorizontalScrollbar::-webkit-scrollbar-button:horizontal:start:increment,
    .nativeHorizontalScrollbar::-webkit-scrollbar-button:horizontal:end:decrement
    {
        display: none;
    }
    
    /* ******************
     * TRACKING SECTION *
     * ******************/
    .nativeHorizontalScrollbar::-webkit-scrollbar-track:horizontal
    {
        background-color: transparent;
    }
    
    /* Area between the thumb and the left button. */
    .nativeHorizontalScrollbar::-webkit-scrollbar-track-piece:horizontal:start
    {
    
    }
    
    /* Area between the thumb and and right button. */
    .nativeHorizontalScrollbar::-webkit-scrollbar-track-piece:horizontal:end
    {
    
    }
    
    /* 
     * The tracking area.
     * This is the area that the thumb travels along.
     */
    .nativeHorizontalScrollbar::-webkit-scrollbar-track-piece
    {
        background-color: rgba(255, 255, 255, 0.1);
    }
    
    /* The tracking piece. */
    .nativeHorizontalScrollbar::-webkit-scrollbar-thumb:horizontal
    {
        height: 15px;
    
        background-color: rgba(255, 255, 255, 0.75);
    
        border: none;
        -webkit-border-top-left-radius: 6px;
        -webkit-border-top-right-radius: 6px;
        -webkit-border-bottom-left-radius: 6px;
        -webkit-border-bottom-right-radius: 6px;
        -moz-border-radius-topleft: 6px;
        -moz-border-radius-topright: 6px;
        -moz-border-radius-bottomleft: 6px;
        -moz-border-radius-bottomright: 6px;
        border-top-left-radius: 6px;
        border-top-right-radius: 6px;
        border-bottom-left-radius: 6px;
        border-bottom-right-radius: 6px;
    }
    
    /* ********
     * CORNER *
     * ********/
    .nativeHorizontalScrollbar::-webkit-scrollbar-corner:horizontal
    {
        background-color: transparent;
    }
    
    /* *********
     * RESIZER *
     * *********/
    .nativeHorizontalScrollbar::-webkit-scrollbar-resizer:horizontal
    {
        background-color: transparent;
    }
    

    VerticalScrollbar.css /* *********** * SCROLLBAR * * ***********/

    .nativeVerticalScrollbar::-webkit-scrollbar
    {
        width: 10px;
        height: 10px;
    }
    
    /* *************
     * BUTTON AREA *
     * *************/
    .nativeVerticalScrollbar::-webkit-scrollbar-button:vertical
    {
        background-color: transparent;
    }
    
    /* Increment scroll up/down buttons. */
    .nativeVerticalScrollbar::-webkit-scrollbar-button:start:decrement,
    .nativeVerticalScrollbar::-webkit-scrollbar-button:end:increment
    {
        display: block;
    
        width: 10px;
        height: 8px;
    
        background-repeat: no-repeat;
        background-size: 10px 8px;
    }
    
    /* Increment scroll up button. */
    .nativeVerticalScrollbar::-webkit-scrollbar-button:start:decrement
    {
        background-image: url('images/scroll-up.png');
    }
    
    /* Increment scroll down button. */
    .nativeVerticalScrollbar::-webkit-scrollbar-button:end:increment
    {
        background-image: url('images/scroll-down.png');
    }
    
    /* Jump up/down buttons. */
    .nativeVerticalScrollbar::-webkit-scrollbar-button:vertical:start:increment,
    .nativeVerticalScrollbar::-webkit-scrollbar-button:vertical:end:decrement
    {
        display: none;
    }
    
    /* ******************
     * TRACKING SECTION *
     * ******************/
    .nativeVerticalScrollbar::-webkit-scrollbar-track:vertical
    {
        background-color: transparent;
    }
    
    /* Area between the thumb and the up button. */
    .nativeVerticalScrollbar::-webkit-scrollbar-track-piece:vertical:start
    {
    
    }
    
    /* Area between the thumb and and down button. */
    .nativeVerticalScrollbar::-webkit-scrollbar-track-piece:vertical:end
    {
    
    }
    
    /* 
     * The tracking area.
     * This is the area that the thumb travels along.
     */
    .nativeVerticalScrollbar::-webkit-scrollbar-track-piece
    {
        background-color: rgba(255, 255, 255, 0.1);
    }
    
    /* The tracking piece. */
    .nativeVerticalScrollbar::-webkit-scrollbar-thumb:vertical
    {
        height: 15px;
    
        background-color: rgba(255, 255, 255, 0.75);
    
        border: none;
        -webkit-border-top-left-radius: 6px;
        -webkit-border-top-right-radius: 6px;
        -webkit-border-bottom-left-radius: 6px;
        -webkit-border-bottom-right-radius: 6px;
        -moz-border-radius-topleft: 6px;
        -moz-border-radius-topright: 6px;
        -moz-border-radius-bottomleft: 6px;
        -moz-border-radius-bottomright: 6px;
        border-top-left-radius: 6px;
        border-top-right-radius: 6px;
        border-bottom-left-radius: 6px;
        border-bottom-right-radius: 6px;
    }
    
    /* ********
     * CORNER *
     * ********/
    .nativeVerticalScrollbar::-webkit-scrollbar-corner:vertical
    {
        background-color: transparent;
    }
    
    /* *********
     * RESIZER *
     * *********/
    .nativeVerticalScrollbar::-webkit-scrollbar-resizer:vertical
    {
        background-color: transparent;
    }
    
    0 讨论(0)
  • 2020-12-06 04:04

    To get the sleek scrollbars for vertical scrollbar in gwt, you need to add following code in the VerticalScrollbar.css. Which won't work for IE just like gmail.

    /* Turn on a 16x16 scrollbar */
    ::-webkit-scrollbar {
        width: 16px;
        height: 16px;
    }
    
    /* Turn on single button up on top, and down on bottom */
    ::-webkit-scrollbar-button:start:decrement,
    ::-webkit-scrollbar-button:end:increment {
        display: block;
    }
    
    /* Turn off the down area up on top, and up area on bottom */
    ::-webkit-scrollbar-button:vertical:start:increment,
    ::-webkit-scrollbar-button:vertical:end:decrement {
        display: none;
    }
    
    /* Place The scroll down button at the bottom */
    ::-webkit-scrollbar-button:end:increment {
        background-image: url(images/scroll_cntrl_dwn.png);
    }
    
    /* Place The scroll up button at the up */
    ::-webkit-scrollbar-button:start:decrement {
        background-image: url(images/scroll_cntrl_up.png);
    }
    
    /* Top area above thumb and below up button */
    ::-webkit-scrollbar-track-piece:vertical:start {
        background-image: url(images/scroll_gutter_top.png), url(images/scroll_gutter_mid.png);
        background-repeat: no-repeat, repeat-y;
    }
    
    /* Bottom area below thumb and down button */
    ::-webkit-scrollbar-track-piece:vertical:end {
        background-image: url(images/scroll_gutter_btm.png), url(images/scroll_gutter_mid.png);
        background-repeat: no-repeat, repeat-y;
        background-position: bottom left, 0 0;
    }
    
    /* The thumb itself */
    ::-webkit-scrollbar-thumb:vertical {
        height: 56px;
        -webkit-border-image: url(images/scroll_thumb.png) 8 0 8 0 stretch stretch;
        border-width: 8 0 8 0;
    }
    
    0 讨论(0)
  • 2020-12-06 04:13

    This is how you would customize the native scrollbars, however you could also develop your own scrollbar classes that implement VerticalScrollbar and HorizontalScrollbar that are a lot more customizable.

    Resource (style) definitions:

    public class ScrollResourcesContainer {
    
        public interface ScrollPanelResources extends CustomScrollPanel.Resources
        {
            @Override
            @Source( { "ScrollPanel.css", CustomScrollPanel.Style.DEFAULT_CSS } )
            CustomScrollPanel.Style customScrollPanelStyle();
        }
    
        public interface HorizontalResources extends NativeHorizontalScrollbar.Resources
        {
            @Override
            @Source( { "HorizontalScrollbar.css", NativeHorizontalScrollbar.StyleTransparant.DEFAULT_CSS } )
            NativeHorizontalScrollbar.Style nativeHorizontalScrollbarStyle();
        }
    
        public interface VerticalResources extends NativeVerticalScrollbar.Resources
        {
            @Override
            @Source( { "VerticalScrollbar.css", NativeVerticalScrollbar.StyleTransparant.DEFAULT_CSS } )
            NativeVerticalScrollbar.Style nativeVerticalScrollbarStyle();
        }
    }
    

    Usage through CustomScrollPanel :

        CustomScrollPanel csp = new CustomScrollPanel((ScrollResourcesContainer.ScrollPanelResources) GWT.create(ScrollResourcesContainer.ScrollPanelResources.class));
        csp.setHorizontalScrollbar(new NativeHorizontalScrollbar((HorizontalResources) GWT.create(HorizontalResources.class)),
        AbstractNativeScrollbar.getNativeScrollbarHeight());
        csp.setVerticalScrollbar(new NativeVerticalScrollbar((VerticalResources) GWT.create(VerticalResources.class)),
        AbstractNativeScrollbar.getNativeScrollbarWidth());
    
    0 讨论(0)
提交回复
热议问题