/*
* WPCleaner: A tool to help on Wikipedia maintenance tasks.
* Copyright (C) 2013 Nicolas Vervelle
*
* See README.txt file for licensing information.
*/
package org.wikipediacleaner.gui.swing.bot;
import java.awt.Color;
import java.awt.Component;
import java.awt.FlowLayout;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JButton;
import javax.swing.JPanel;
import javax.swing.JTabbedPane;
import javax.swing.JTextArea;
import javax.swing.WindowConstants;
import org.wikipediacleaner.api.constants.EnumWikipedia;
import org.wikipediacleaner.gui.swing.action.ActionDispose;
import org.wikipediacleaner.gui.swing.basic.BasicWindow;
import org.wikipediacleaner.i18n.GT;
/**
* A window for bot tools.
*/
public class BotToolsWindow
extends BasicWindow {
public final static Integer WINDOW_VERSION = Integer.valueOf(5);
public final List<BotToolsPanel> panels = new ArrayList<BotToolsPanel>();
/**
* Create and display a BotToolsWindow.
*
* @param wikipedia Wikipedia.
*/
public static void createBotToolsWindow(
final EnumWikipedia wikipedia) {
createWindow(
"BotToolsWindow",
wikipedia,
WindowConstants.DISPOSE_ON_CLOSE,
BotToolsWindow.class,
null);
}
/**
* @return Window title.
*/
@Override
public String getTitle() {
return GT._("Bot tools");
}
/**
* @return Window components.
*/
@Override
protected Component createComponents() {
JPanel panel = new JPanel(new GridBagLayout());
// Initialize constraints
GridBagConstraints constraints = new GridBagConstraints();
constraints.fill = GridBagConstraints.BOTH;
constraints.gridheight = 1;
constraints.gridwidth = 1;
constraints.gridx = 0;
constraints.gridy = 0;
constraints.insets = new Insets(0, 0, 0, 0);
constraints.ipadx = 0;
constraints.ipady = 0;
constraints.weightx = 1;
constraints.weighty = 0;
// Warning
String txtWarning =
GT._("!!! WARNING !!!") + "\n" +
GT._("Functions available here are considered as bot tools.") + "\n" +
GT._("They may modify a lot of pages in a short period of time.") + "\n" +
GT._("On some Wikipedia projects, you may need the bot status for doing this.") + "\n" +
GT._("Please, check if you need the bot status by reading the rules of Wikipedia.");
JTextArea lblWarning = new JTextArea(txtWarning);
lblWarning.setEditable(false);
lblWarning.setBackground(getParentComponent().getBackground());
lblWarning.setForeground(Color.RED);
panel.add(lblWarning, constraints);
constraints.gridy++;
// Tabs
JTabbedPane pane = new JTabbedPane();
GeneralToolsPanel generalTools = new GeneralToolsPanel(this);
pane.addTab(GT._("General"), generalTools);
panels.add(generalTools);
CWToolsPanel cwTools = new CWToolsPanel(this);
pane.addTab(GT._("Check Wiki"), cwTools);
panels.add(cwTools);
constraints.weighty = 1;
panel.add(pane, constraints);
constraints.gridy++;
// Buttons
JPanel buttonPanel = new JPanel(new FlowLayout(FlowLayout.RIGHT));
JButton buttonClose = ActionDispose.createButton(getParentComponent(), true, false);
buttonPanel.add(buttonClose);
constraints.fill = GridBagConstraints.HORIZONTAL;
constraints.gridx = 0;
constraints.weightx = 1;
constraints.weighty = 0;
panel.add(buttonPanel, constraints);
constraints.gridy++;
updateComponentState();
return panel;
}
/**
* Update components states.
*/
@Override
protected void updateComponentState() {
super.updateComponentState();
for (BotToolsPanel panel : panels) {
panel.updateComponentState();
}
}
}