package thaw.plugins;
import java.util.Vector;
import javax.swing.JButton;
import thaw.core.Logger;
import thaw.core.MainWindow;
/**
* Not a plugin ! Just an helper for the plugins !
*/
public class ToolbarModifier {
private MainWindow mainWindow = null;
private Vector buttons; /* JButtons */
private boolean areDisplayed = false;
public ToolbarModifier() {
buttons = new Vector();
areDisplayed = false;
}
public ToolbarModifier(final MainWindow toolbarTarget) {
this();
setMainWindow(toolbarTarget);
}
public void setMainWindow(final MainWindow target) {
mainWindow = target;
mainWindow.resetLastKnowToolBarModifier();
}
public void addButtonToTheToolbar(final JButton button) {
addButtonToTheToolbar(button, -1);
}
/**
* @param position if == -1, then the button is put at the end
*/
public void addButtonToTheToolbar(final JButton button, int position) {
if (button != null)
button.setBorderPainted(false);
if (position < 0)
buttons.add(button);
else {
if (position > buttons.size())
buttons.setSize(position);
buttons.add(position, button);
}
if (areDisplayed) {
areDisplayed = false;
displayButtonsInTheToolbar();
}
}
public void removeButtonFromTheToolbar(final JButton button) {
buttons.remove(button);
if (areDisplayed) {
areDisplayed = false;
displayButtonsInTheToolbar();
}
}
public void displayButtonsInTheToolbar() {
if (mainWindow != null) {
if (areDisplayed && mainWindow.getLastToolbarModifier() == this) {
Logger.debug(this, "Already displayed !");
return;
}
if (buttons == null || buttons.size() == 0) {
Logger.notice(this, "No button to display ?");
mainWindow.changeButtonsInTheToolbar(this, null);
} else
mainWindow.changeButtonsInTheToolbar(this, buttons);
areDisplayed = true;
} else
Logger.error(this, "MainWindow not SET !");
}
public void hideButtonsInTheToolbar() {
if (mainWindow != null) {
if (areDisplayed) {
mainWindow.changeButtonsInTheToolbar(this, null);
areDisplayed = false;
}
} else
Logger.error(this, "MainWindow not SET !");
}
/**
* Don't forget to call it when the plugin is stopped !
*/
public void purgeButtonList() {
hideButtonsInTheToolbar();
buttons = new Vector();
}
}