package org.openswing.swing.mdi.client;
import java.util.*;
import java.awt.*;
import javax.swing.*;
import org.openswing.swing.client.*;
import org.openswing.swing.table.client.*;
import org.openswing.swing.form.client.Form;
/**
* <p>Title: OpenSwing Framework</p>
* <p>Description: Generic toolbar: contains all buttons used by GridControl or Form panel.</p>
* <p>Copyright: Copyright (C) 2006 Mauro Carniel</p>
*
* <p> This file is part of OpenSwing Framework.
* This library is free software; you can redistribute it and/or
* modify it under the terms of the (LGPL) Lesser General Public
* License as published by the Free Software Foundation;
*
* GNU LESSER GENERAL PUBLIC LICENSE
* Version 2.1, February 1999
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public
* License along with this library; if not, write to the Free
* Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
* The author may be contacted at:
* maurocarniel@tin.it</p>
*
* @author Mauro Carniel
* @version 1.0
*/
public class ToolBar extends JPanel {
protected InsertButton insertButton = new InsertButton();
protected EditButton editButton = new EditButton();
protected CopyButton copyButton = new CopyButton();
protected ReloadButton reloadButton = new ReloadButton();
protected SaveButton saveButton = new SaveButton();
protected DeleteButton deleteButton = new DeleteButton();
protected ImportButton importButton = new ImportButton();
protected ExportButton exportButton = new ExportButton();
protected FilterButton filterButton = new FilterButton();
protected NavigatorBar navigatorBar = new NavigatorBar();
public ToolBar() {
setLayout(new FlowLayout(FlowLayout.LEFT));
}
/**
* Rimove all listeners and disable all toolbar buttons.
*/
public final void disableAllButtons() {
insertButton.removeAllDataControllers();
editButton.removeAllDataControllers();
copyButton.removeAllDataControllers();
reloadButton.removeAllDataControllers();
saveButton.removeAllDataControllers();
deleteButton.removeAllDataControllers();
importButton.removeAllDataControllers();
exportButton.removeAllDataControllers();
filterButton.removeAllDataControllers();
navigatorBar.initNavigator(null);
insertButton.setEnabled(false);
editButton.setEnabled(false);
copyButton.setEnabled(false);
reloadButton.setEnabled(false);
saveButton.setEnabled(false);
deleteButton.setEnabled(false);
importButton.setEnabled(false);
exportButton.setEnabled(false);
filterButton.setEnabled(false);
navigatorBar.setEnabled(false);
}
/**
* @return <code>true</code> if the specified listener is already added to this, <code>false</code> otherwise
*/
public final boolean containsDataController(DataController dataController) {
if (!insertButton.containsDataController(dataController) &&
!editButton.containsDataController(dataController) &&
!copyButton.containsDataController(dataController) &&
!reloadButton.containsDataController(dataController) &&
!saveButton.containsDataController(dataController) &&
!deleteButton.containsDataController(dataController) &&
!importButton.containsDataController(dataController) &&
!exportButton.containsDataController(dataController) &&
!filterButton.containsDataController(dataController))
return false;
return true;
}
/**
* Rimove all listeners and disable all toolbar buttons.
*/
public final void setDataController(DataController dataController) {
if (!containsDataController(dataController))
disableAllButtons();
if (dataController.getBindedButtons().contains(insertButton)) {
insertButton.addDataController(dataController);
insertButton.setEnabled(dataController.getCurrentValue(insertButton));
}
if (dataController.getBindedButtons().contains(editButton)) {
editButton.addDataController(dataController);
editButton.setEnabled(dataController.getCurrentValue(editButton));
}
if (dataController.getBindedButtons().contains(copyButton)) {
copyButton.addDataController(dataController);
copyButton.setEnabled(dataController.getCurrentValue(copyButton));
}
if (dataController.getBindedButtons().contains(reloadButton)) {
reloadButton.addDataController(dataController);
reloadButton.setEnabled(dataController.getCurrentValue(reloadButton));
}
if (dataController.getBindedButtons().contains(saveButton)) {
saveButton.addDataController(dataController);
saveButton.setEnabled(dataController.getCurrentValue(saveButton));
}
if (dataController.getBindedButtons().contains(deleteButton)) {
deleteButton.addDataController(dataController);
deleteButton.setEnabled(dataController.getCurrentValue(deleteButton));
}
if (dataController.getBindedButtons().contains(importButton)) {
importButton.addDataController(dataController);
importButton.setEnabled(dataController.getCurrentValue(importButton));
}
if (dataController.getBindedButtons().contains(exportButton)) {
exportButton.addDataController(dataController);
exportButton.setEnabled(dataController.getCurrentValue(exportButton));
}
if (dataController.getBindedButtons().contains(filterButton)) {
filterButton.addDataController(dataController);
filterButton.setEnabled(dataController.getCurrentValue(filterButton));
}
if (dataController.getBindedButtons().contains(navigatorBar) && dataController instanceof Grids) {
navigatorBar.initNavigator( (Grids) dataController);
// navigatorBar.setEnabled(dataController.getOldValue(navigatorBar));
}
}
public CopyButton getCopyButton() {
return copyButton;
}
public DeleteButton getDeleteButton() {
return deleteButton;
}
public EditButton getEditButton() {
return editButton;
}
public ExportButton getExportButton() {
return exportButton;
}
public FilterButton getFilterButton() {
return filterButton;
}
public ImportButton getImportButton() {
return importButton;
}
public InsertButton getInsertButton() {
return insertButton;
}
public NavigatorBar getNavigatorBar() {
return navigatorBar;
}
public ReloadButton getReloadButton() {
return reloadButton;
}
public SaveButton getSaveButton() {
return saveButton;
}
/**
* Bind grid control to this toolbar, instead of bind single toolbar buttons to grid control.
* @param grid GridControl to bind to toolbar buttons
*/
public final void bindGrid(GridControl grid) {
grid.setCopyButton(getCopyButton());
grid.setDeleteButton(getDeleteButton());
grid.setEditButton(getEditButton());
grid.setExportButton(getExportButton());
grid.setFilterButton(getFilterButton());
grid.setImportButton(getImportButton());
grid.setInsertButton(getInsertButton());
grid.setNavBar(getNavigatorBar());
grid.setReloadButton(getReloadButton());
grid.setSaveButton(getSaveButton());
}
/**
* Bind Form panel to this toolbar, instead of bind single toolbar buttons to Form.
* @param form For panel to bind to toolbar buttons
*/
public final void bindForm(Form form) {
form.setCopyButton(getCopyButton());
form.setDeleteButton(getDeleteButton());
form.setEditButton(getEditButton());
form.setInsertButton(getInsertButton());
form.setReloadButton(getReloadButton());
form.setSaveButton(getSaveButton());
}
}