package magic.ui.screen.stats; import java.awt.event.ActionEvent; import javax.swing.AbstractAction; import javax.swing.JButton; import javax.swing.JLabel; import javax.swing.JPanel; import magic.ui.helpers.MouseHelper; import net.miginfocom.swing.MigLayout; @SuppressWarnings("serial") public class PaginationPanel extends JPanel { private final JButton firstButton; private final JButton lastButton; private final JButton nextButton; private final JButton prevButton; private final JLabel pageLabel; private final IPagination paginator; public PaginationPanel(IPagination paginator) { this.paginator = paginator; setOpaque(false); setLayout(new MigLayout("insets 4, alignx center")); firstButton = new JButton("|<"); firstButton.setEnabled(false); firstButton.addActionListener(new AbstractAction("|<") { @Override public void actionPerformed(ActionEvent e) { MouseHelper.showBusyCursor(); firstButton.setEnabled(false); paginator.displayFirstPage(); setButtonsState(); setPageNum(); MouseHelper.showDefaultCursor(); } }); add(firstButton); prevButton = new JButton("<"); prevButton.setEnabled(false); prevButton.addActionListener(new AbstractAction("<") { @Override public void actionPerformed(ActionEvent e) { MouseHelper.showBusyCursor(); prevButton.setEnabled(false); paginator.displayPreviousPage(); setButtonsState(); setPageNum(); MouseHelper.showDefaultCursor(); } }); add(prevButton); pageLabel = new JLabel(); setPageNum(); add(pageLabel); nextButton = new JButton(">"); nextButton.setEnabled(false); nextButton.addActionListener(new AbstractAction(">") { @Override public void actionPerformed(ActionEvent e) { MouseHelper.showBusyCursor(); nextButton.setEnabled(false); paginator.displayNextPage(); setButtonsState(); setPageNum(); MouseHelper.showDefaultCursor(); } }); add(nextButton); lastButton = new JButton(">|"); lastButton.setEnabled(false); lastButton.addActionListener(new AbstractAction(">|") { @Override public void actionPerformed(ActionEvent e) { MouseHelper.showBusyCursor(); lastButton.setEnabled(false); paginator.displayLastPage(); setButtonsState(); setPageNum(); MouseHelper.showDefaultCursor(); } }); add(lastButton); setButtonsState(); } private void setPageNum() { pageLabel.setText(paginator.getPageNum() + " of " + paginator.getTotalPages()); } private void setButtonsState() { prevButton.setEnabled(paginator.hasPrevPage()); nextButton.setEnabled(paginator.hasNextPage()); firstButton.setEnabled(paginator.hasPrevPage()); lastButton.setEnabled(paginator.hasNextPage()); } public void refresh() { setPageNum(); setButtonsState(); } }