📄 paginationwidget.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 + -