Package com.ponysdk.ui.server.list2.paging

Source Code of com.ponysdk.ui.server.list2.paging.DefaultPagerView

package com.ponysdk.ui.server.list2.paging;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.ponysdk.impl.theme.PonySDKTheme;
import com.ponysdk.ui.server.basic.IsPWidget;
import com.ponysdk.ui.server.basic.PCommand;
import com.ponysdk.ui.server.basic.PHorizontalPanel;
import com.ponysdk.ui.server.basic.PMenuBar;
import com.ponysdk.ui.server.basic.PMenuItem;

public class DefaultPagerView extends PHorizontalPanel implements PagerView {

    private final Map<Integer, IsPWidget> items = new HashMap<Integer, IsPWidget>();

    private PMenuBar menuBar;

    private PMenuItem startMenuItem;
    private PMenuItem previousMenuItem;
    private PMenuItem nextMenuItem;
    private PMenuItem endMenuItem;

    List<PagerListener> pagerListeners = new ArrayList<PagerListener>();

    public DefaultPagerView() {
        setVisible(false);
        initUI();
    }

    private void initUI() {
        menuBar = new PMenuBar();
        addStyleName(PonySDKTheme.PAGE_NAVIGATION);
        add(menuBar);

        startMenuItem = new PMenuItem("<<");
        menuBar.addItem(startMenuItem);
        menuBar.addSeparator();

        previousMenuItem = new PMenuItem("<");
        menuBar.addItem(previousMenuItem);
        menuBar.addSeparator();

        menuBar.addSeparator();
        nextMenuItem = new PMenuItem(">");
        menuBar.addItem(nextMenuItem);
        menuBar.addSeparator();

        endMenuItem = new PMenuItem(">>");
        menuBar.addItem(endMenuItem);
    }

    @Override
    public void addPageIndex(final int pageIndex) {
        final PMenuItem item = new PMenuItem(String.valueOf(pageIndex + 1));
        item.setCommand(getClickCommand(pageIndex));
        menuBar.insertItem(item, 4 + items.values().size());
        items.put(pageIndex, item);
    }

    private PCommand getClickCommand(final int pageIndex) {
        return new PCommand() {

            @Override
            public void execute() {
                for (final PagerListener pagerListener : pagerListeners) {
                    pagerListener.onPageChange(pageIndex);
                }
            }
        };
    }

    @Override
    public void addPagerListener(final PagerListener pagerListener) {
        pagerListeners.add(pagerListener);
    }

    @Override
    public void clear() {
        super.clear();
        items.clear();
        initUI();
    }

    @Override
    public void setStart(final boolean enabled, final int pageIndex) {
        startMenuItem.setEnabled(enabled);
        startMenuItem.setCommand(getClickCommand(pageIndex));
    }

    @Override
    public void setEnd(final boolean enabled, final int pageIndex) {
        endMenuItem.setEnabled(enabled);
        endMenuItem.setCommand(getClickCommand(pageIndex));

    }

    @Override
    public void setPrevious(final boolean enabled, final int pageIndex) {
        previousMenuItem.setEnabled(enabled);
        previousMenuItem.setCommand(getClickCommand(pageIndex));
    }

    @Override
    public void setNext(final boolean enabled, final int pageIndex) {
        nextMenuItem.setEnabled(enabled);
        nextMenuItem.setCommand(getClickCommand(pageIndex));
    }

    @Override
    public void setSelectedPage(final int pageIndex) {
        final PMenuItem item = (PMenuItem) items.get(pageIndex).asWidget();
        item.setEnabled(false);
        item.setStyleName(PonySDKTheme.PAGE_NAVIGATION_ITEM_SELECTED);
    }

}
TOP

Related Classes of com.ponysdk.ui.server.list2.paging.DefaultPagerView

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.