/*
* WPCleaner: A tool to help on Wikipedia maintenance tasks.
* Copyright (C) 2014 Nicolas Vervelle
*
* See README.txt file for licensing information.
*/
package org.wikipediacleaner.gui.swing.pagelist;
import java.util.List;
import javax.swing.JTable;
import org.wikipediacleaner.api.constants.EnumWikipedia;
import org.wikipediacleaner.api.data.Page;
import org.wikipediacleaner.api.data.ProgressionValue;
import org.wikipediacleaner.api.dataaccess.PageListProvider;
import org.wikipediacleaner.gui.swing.basic.Utilities;
import org.wikipediacleaner.gui.swing.component.ProgressionValueCellRenderer;
/**
* A table containing a list of pages.
*/
public class PageListTable extends JTable implements PageListProvider {
/** Serialization */
private static final long serialVersionUID = 9187589516812365281L;
/** Wiki */
private final EnumWikipedia wiki;
/** Underlying model for the table */
private final PageListTableModel model;
/**
* Create a table for a list of pages.
*
* @param wiki Wiki.
* @param pages List of pages.
* @return Table.
*/
public static PageListTable createTable(EnumWikipedia wiki, List<Page> pages) {
PageListTableModel model = new PageListTableModel(wiki, pages);
PageListTable table = new PageListTable(wiki, model);
table.setDefaultRenderer(ProgressionValue.class, new ProgressionValueCellRenderer());
model.configureColumnModel(table.getColumnModel());
Utilities.addRowSorter(table, model);
table.addMouseListener(new PageListMouseListener());
return table;
}
/**
* @param wiki Wiki.
* @param model Underlying model for the table.
*/
private PageListTable(
EnumWikipedia wiki,
PageListTableModel model) {
super(model);
this.model = model;
this.wiki = wiki;
}
/**
* @return Wiki
* @see org.wikipediacleaner.api.dataaccess.WikiProvider#getWiki()
*/
@Override
public EnumWikipedia getWiki() {
return wiki;
}
/**
* @return List of selected pages
* @see org.wikipediacleaner.api.dataaccess.PageListProvider#getPages()
*/
@Override
public List<Page> getPages() {
return getSelectedPages();
}
/**
* @return List of selected pages
*/
public List<Page> getSelectedPages() {
int[] rows = getSelectedRows();
for (int i = 0; i < rows.length; i++) {
rows[i] = Utilities.convertRowIndexToModel(this, rows[i]);
}
List<Page> result = model.getPages(rows);
return result;
}
/**
* Remove pages.
*/
public void removePages(List<Page> pages) {
model.removePages(pages);
}
/**
* @param page Page to be added.
*/
public void addPage(Page page) {
model.addPage(page);
}
/**
* Update information about watched pages.
*/
public void updateWatchedPages() {
model.updateWatchedPages();
}
}