⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 paginationwidget.java

📁 java 文件下载器。可自定义
💻 JAVA
字号:
// Decompiled by Jad v1.5.8e2. Copyright 2001 Pavel Kouznetsov.
// Jad home page: http://kpdus.tripod.com/jad.html
// Decompiler options: packimports(3) fieldsfirst ansi space 
// Source File Name:   PaginationWidget.java

package org.gudy.azureus2.ui.swt.components.widgets;

import com.aelitis.azureus.ui.swt.utils.ColorCache;
import java.util.*;
import org.eclipse.swt.events.PaintEvent;
import org.eclipse.swt.events.PaintListener;
import org.eclipse.swt.graphics.*;
import org.eclipse.swt.layout.*;
import org.eclipse.swt.widgets.*;
import org.gudy.azureus2.ui.swt.Utils;

public class PaginationWidget
{
	public static interface PageSelectionListener
	{

		public abstract void pageSelected(int i);
	}


	private Composite parent;
	private Canvas canvas;
	private int hSpacing;
	private int yOffset;
	private Rectangle pages[];
	private int currentPage;
	private int height;
	private int width;
	private FormData fd;
	private Color color_normal;
	private Color color_selected;
	private List listeners;
	private int itemsPerPage;
	private int itemsTotal;

	public PaginationWidget(Composite parent)
	{
		this.parent = null;
		canvas = null;
		hSpacing = 3;
		yOffset = 5;
		pages = new Rectangle[1];
		currentPage = 0;
		height = 5;
		width = 8;
		color_normal = null;
		color_selected = null;
		listeners = new ArrayList();
		itemsPerPage = 1;
		itemsTotal = 0;
		if (null == parent || parent.isDisposed())
		{
			throw new IllegalArgumentException("parent can not be null or disposed");
		} else
		{
			this.parent = parent;
			init();
			return;
		}
	}

	private void init()
	{
		canvas = new Canvas(parent, 0);
		parent.setLayout(new FormLayout());
		fd = new FormData();
		fd.top = new FormAttachment(0, 0);
		fd.bottom = new FormAttachment(100, 0);
		fd.left = new FormAttachment(0, 0);
		fd.right = new FormAttachment(100, 0);
		canvas.setLayoutData(fd);
		color_selected = ColorCache.getColor(canvas.getDisplay(), 204, 204, 204);
		color_normal = ColorCache.getColor(canvas.getDisplay(), 99, 99, 99);
		canvas.addPaintListener(new PaintListener() {

			final PaginationWidget this$0;

			public void paintControl(PaintEvent e)
			{
				if (pages.length > 1)
				{
					for (int i = 0; i < pages.length; i++)
					{
						if (i == currentPage)
							e.gc.setBackground(color_selected);
						else
							e.gc.setBackground(color_normal);
						e.gc.fillRectangle(pages[i]);
					}

				}
			}

			
			{
				this$0 = PaginationWidget.this;
				super();
			}
		});
		Listener listener = new Listener() {

			final PaginationWidget this$0;

			public void handleEvent(Event event)
			{
				if (event.type == 3)
				{
					int i = 0;
					do
					{
						if (i >= pages.length)
							break;
						if (pages[i].contains(event.x, event.y))
						{
							currentPage = i;
							canvas.redraw();
							notifyListeners(i);
							break;
						}
						i++;
					} while (true);
				}
				if (event.type == 5)
				{
					boolean pageFound = false;
					int i = 0;
					do
					{
						if (i >= pages.length)
							break;
						if (pages[i].contains(event.x, event.y))
						{
							String tooltipText = getTooltip(i);
							if (!tooltipText.equals(canvas.getToolTipText()))
								canvas.setToolTipText(tooltipText);
							canvas.setCursor(canvas.getDisplay().getSystemCursor(21));
							pageFound = true;
							break;
						}
						i++;
					} while (true);
					if (!pageFound)
					{
						canvas.setCursor(null);
						canvas.setToolTipText(null);
					}
				}
			}

			
			{
				this$0 = PaginationWidget.this;
				super();
			}
		};
		canvas.addListener(3, listener);
		canvas.addListener(5, listener);
	}

	private String getTooltip(int pageIndex)
	{
		int end = Math.min(++pageIndex * itemsPerPage, itemsTotal);
		int start = Math.max(pageIndex * itemsPerPage - (itemsPerPage - 1), 1);
		return (new StringBuilder()).append(start).append("-").append(end).append(" of ").append(itemsTotal).toString();
	}

	public void setPageCount(int pageCount)
	{
		pages = new Rectangle[pageCount];
		pages[0] = new Rectangle(0, yOffset, width, height);
		int xOffset = width + hSpacing;
		for (int i = 1; i < pages.length; i++)
		{
			pages[i] = new Rectangle(xOffset, yOffset, width, height);
			xOffset += width + hSpacing;
		}

		if (parent.getLayoutData() instanceof FormData)
		{
			FormData pfd = (FormData)parent.getLayoutData();
			pfd.width = pageCount * (hSpacing + width);
		}
		fd.width = pageCount * (hSpacing + width);
		canvas.setSize(pageCount * (hSpacing + width), 16);
		Utils.relayout(parent);
	}

	public void addPageSelectionListener(PageSelectionListener listener)
	{
		if (!listeners.contains(listener) && null != listener)
			listeners.add(listener);
	}

	private void notifyListeners(int selectedPage)
	{
		PageSelectionListener listener;
		for (Iterator iterator = listeners.iterator(); iterator.hasNext(); listener.pageSelected(selectedPage))
			listener = (PageSelectionListener)iterator.next();

	}

	public int getCurrentPage()
	{
		return currentPage;
	}

	public void setCurrentPage(int currentPage)
	{
		if (this.currentPage != currentPage)
		{
			this.currentPage = currentPage;
			canvas.redraw();
		}
	}

	public int getItemsPerPage()
	{
		return itemsPerPage;
	}

	public void setItemsPerPage(int itemsPerPage)
	{
		this.itemsPerPage = itemsPerPage;
	}

	public int getItemsTotal()
	{
		return itemsTotal;
	}

	public void setItemsTotal(int itemsTotal)
	{
		this.itemsTotal = itemsTotal;
	}








}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -