![JAR search and dependency download from the Maven repository](/logo.png)
net.sourceforge.squirrel_sql.fw.gui.TablePopupMenu Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of fw Show documentation
Show all versions of fw Show documentation
The framework library contains utility classes that are generic and useful for building applications
that introspect a database via JDBC. These are not intended to be SQuirreLSQL-specific and could be
used by other projects JDBC front-end applications. This project is guaranteed to have no code
dependencies on other SQuirreLSQL projects and could therefore be used when building a different
JDBC front-end application.
package net.sourceforge.squirrel_sql.fw.gui;
/*
* Copyright (C) 2001-2004 Colin Bell
* [email protected]
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* 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
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
import java.awt.Component;
import java.awt.event.ActionEvent;
import java.awt.event.MouseEvent;
import java.awt.event.KeyEvent;
import java.awt.print.PrinterJob;
import javax.swing.*;
import net.sourceforge.squirrel_sql.fw.gui.action.*;
import net.sourceforge.squirrel_sql.fw.util.StringManager;
import net.sourceforge.squirrel_sql.fw.util.StringManagerFactory;
import net.sourceforge.squirrel_sql.fw.datasetviewer.IDataSetUpdateableModel;
import net.sourceforge.squirrel_sql.fw.datasetviewer.DataSetViewerTablePanel;
public class TablePopupMenu extends BasePopupMenu
{
/**
* serialVersionUID
*/
private static final long serialVersionUID = -1016475198906837273L;
/** Internationalized strings for this class. */
private static final StringManager s_stringMgr =
StringManagerFactory.getStringManager(TablePopupMenu.class);
public interface IOptionTypes
{
int COPY = 0;
int COPY_WITH_HEADERS = 1;
int COPY_HTML = 2;
int COPY_IN_STATEMENT = 3;
int COPY_WHERE_STATEMENT = 4;
int COPY_UPDATE_STATEMENT = 5;
int COPY_INSERT_STATEMENT = 6;
int EXPORT_CSV = 7;
int SELECT_ALL = 8;
int ADJUST_ALL_COL_WIDTHS_ACTION = 9;
int ALWAYS_ADJUST_ALL_COL_WIDTHS_ACTION = 10;
int SHOW_ROW_NUMBERS = 11;
int LAST_ENTRY = 12;
}
private static final KeyStroke COPY_STROKE = KeyStroke.getKeyStroke(KeyEvent.VK_C, KeyEvent.CTRL_DOWN_MASK);
private final JMenuItem[] _menuItems = new JMenuItem[IOptionTypes.LAST_ENTRY + 1];
private JTable _table;
private JCheckBoxMenuItem _alwaysAdjustAllColWidtshActionItem;
private JCheckBoxMenuItem _showRowNumbersItem;
private CopyAction _copy = new CopyAction();
private CopyWithHeadersAction _copyWithHeaders = new CopyWithHeadersAction();
private CopyHtmlAction _copyHtml = new CopyHtmlAction();
private CopyInStatementAction _copyInStatement = new CopyInStatementAction();
private CopyWhereStatementAction _copyWhereStatement = new CopyWhereStatementAction();
private CopyUpdateStatementAction _copyUpdateStatement = new CopyUpdateStatementAction();
private CopyInsertStatementAction _copyInsertStatement = new CopyInsertStatementAction();
private ExportCsvAction _exportCvs = new ExportCsvAction();
private AdjustAllColWidthsAction _adjustAllColWidthsAction = new AdjustAllColWidthsAction();
private AlwaysAdjustAllColWidthsAction _alwaysAdjustAllColWidthsAction = new AlwaysAdjustAllColWidthsAction();
private ShowRowNumbersAction _showRowNumbersAction = new ShowRowNumbersAction();
private MakeEditableAction _makeEditable = new MakeEditableAction();
private UndoMakeEditableAction _undoMakeEditable = new UndoMakeEditableAction();
private DeleteRowsAction _deleteRows = new DeleteRowsAction();
private InsertRowAction _insertRow = new InsertRowAction();
private SelectAllAction _select = new SelectAllAction();
private PrintAction _print = new PrintAction();
// The following pointer is needed to allow the "Make Editable button
// to tell the application to set up an editable display panel
private IDataSetUpdateableModel _updateableModel = null;
// pointer to the viewer
// This is needed for insert and delete operations
private DataSetViewerTablePanel _viewer = null;
/**
* Constructor used when caller wants to be able to make table editable.
* We need both parameters because there is at least one case where the
* underlying data model is updateable, but we do not want to allow the
* user to enter editing mode because they are already in edit mode.
* The caller needs to determine whether or not to allow a request for edit mode.
*/
public TablePopupMenu(boolean allowEditing,
IDataSetUpdateableModel updateableModel,
DataSetViewerTablePanel viewer)
{
super();
// save the pointer needed to enable editing of data on-demand
_updateableModel = updateableModel;
// save the pointer needed for insert and delete operations
_viewer = viewer;
// add the menu items to the menu
_menuItems[IOptionTypes.COPY] = add(_copy);
_menuItems[IOptionTypes.COPY].setAccelerator(COPY_STROKE);
_menuItems[IOptionTypes.COPY_WITH_HEADERS] = add(_copyWithHeaders);
_menuItems[IOptionTypes.COPY_HTML] = add(_copyHtml);
_menuItems[IOptionTypes.COPY_IN_STATEMENT] = add(_copyInStatement);
_menuItems[IOptionTypes.COPY_WHERE_STATEMENT] = add(_copyWhereStatement);
_menuItems[IOptionTypes.COPY_UPDATE_STATEMENT] = add(_copyUpdateStatement);
if (_updateableModel != null) {
_menuItems[IOptionTypes.COPY_INSERT_STATEMENT] = add(_copyInsertStatement);
}
addSeparator();
_menuItems[IOptionTypes.EXPORT_CSV] = add(_exportCvs);
addSeparator();
_menuItems[IOptionTypes.ADJUST_ALL_COL_WIDTHS_ACTION] = add(_adjustAllColWidthsAction);
_alwaysAdjustAllColWidtshActionItem = new JCheckBoxMenuItem();
_alwaysAdjustAllColWidtshActionItem.setSelected(ButtonTableHeader.isAlwaysAdjustAllColWidths());
_alwaysAdjustAllColWidtshActionItem.setAction(_alwaysAdjustAllColWidthsAction);
_menuItems[IOptionTypes.ALWAYS_ADJUST_ALL_COL_WIDTHS_ACTION] = add(_alwaysAdjustAllColWidtshActionItem);
addSeparator();
_showRowNumbersItem = new JCheckBoxMenuItem();
_showRowNumbersItem.setSelected(false);
_showRowNumbersItem.setAction(_showRowNumbersAction);
_menuItems[IOptionTypes.SHOW_ROW_NUMBERS] = add(_showRowNumbersItem);
if (allowEditing)
{
addSeparator();
add(_makeEditable);
}
// if ( ! allowEditing )
if (updateableModel != null && updateableModel.editModeIsForced())
{
add(_undoMakeEditable);
}
addSeparator();
_menuItems[IOptionTypes.SELECT_ALL] = add(_select);
// add entries for insert and delete rows
// only if table is updateable and already editable (ie. allowEditing is false)
if (_updateableModel != null && allowEditing==false) {
addSeparator();
add(_insertRow);
add(_deleteRows);
}
addSeparator();
add(_print);
}
/**
* Constructor used when creating menu for use in cell editor.
*/
public TablePopupMenu(IDataSetUpdateableModel updateableModel,
DataSetViewerTablePanel viewer, JTable table)
{
super();
// save the pointer needed to enable editing of data on-demand
_updateableModel = updateableModel;
// save the pointer needed for insert and delete operations
_viewer = viewer;
_table = table;
replaceStandardTableCopyAction();
// Cut and Paste need to be worked on, so for now do not include them
// Also, the copy operations do not seem to work right - we may need special
// versions for the cellEditor menu.
// add(_cut);
// add(_copy);
// add(_copyHtml);
// add(_paste);
// addSeparator();
add(_select);
addSeparator();
add(_insertRow);
add(_deleteRows);
addSeparator();
add(_print);
}
public void setTable(JTable value)
{
_table = value;
replaceStandardTableCopyAction();
}
public void reset()
{
_showRowNumbersItem.setSelected(false);
}
private void replaceStandardTableCopyAction()
{
_table.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put(COPY_STROKE, "CopyAction");
_table.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(COPY_STROKE, "CopyAction");
_table.getInputMap(JComponent.WHEN_FOCUSED).put(COPY_STROKE, "CopyAction");
_table.getActionMap().put("CopyAction", _copy);
}
/**
* Show the menu.
*/
public void show(Component invoker, int x, int y)
{
super.show(invoker, x, y);
}
public void show(MouseEvent evt)
{
super.show(evt);
}
private String getStatementSeparatorFromModel()
{
return _updateableModel.getDataModelImplementationDetails().getStatementSeparator();
}
private class CopyAction extends BaseAction
{
/**
* serialVersionUID
*/
private static final long serialVersionUID = -2067301779079584296L;
CopyAction()
{
super(s_stringMgr.getString("TablePopupMenu.copy"));
}
public void actionPerformed(ActionEvent evt)
{
if (_table != null)
{
new TableCopyCommand(_table, false).execute();
}
}
}
private class CopyWithHeadersAction extends BaseAction
{
/**
* serialVersionUID
*/
private static final long serialVersionUID = 5382436496333309089L;
CopyWithHeadersAction()
{
super(s_stringMgr.getString("TablePopupMenu.copyWithHeaders"));
}
public void actionPerformed(ActionEvent evt)
{
if (_table != null)
{
new TableCopyCommand(_table, true).execute();
}
}
}
private class CopyHtmlAction extends BaseAction
{
/**
* serialVersionUID
*/
private static final long serialVersionUID = 2213871184115799502L;
CopyHtmlAction()
{
super(s_stringMgr.getString("TablePopupMenu.copyashtml"));
}
public void actionPerformed(ActionEvent evt)
{
if (_table != null)
{
new TableCopyHtmlCommand(_table).execute();
}
}
}
private class CopyInStatementAction extends BaseAction
{
/**
* serialVersionUID
*/
private static final long serialVersionUID = 1635818404738839629L;
CopyInStatementAction()
{
super(s_stringMgr.getString("TablePopupMenu.copyasinstatement"));
}
public void actionPerformed(ActionEvent evt)
{
if (_table != null)
{
new TableCopyInStatementCommand(_table).execute();
}
}
}
private class CopyWhereStatementAction extends BaseAction
{
/**
* serialVersionUID
*/
private static final long serialVersionUID = 5283906236033114554L;
CopyWhereStatementAction()
{
super(s_stringMgr.getString("TablePopupMenu.copyaswherestatement"));
}
public void actionPerformed(ActionEvent evt)
{
if (_table != null)
{
new TableCopyWhereStatementCommand(_table).execute();
}
}
}
private class CopyUpdateStatementAction extends BaseAction
{
/**
* serialVersionUID
*/
private static final long serialVersionUID = -6021874127769966277L;
CopyUpdateStatementAction()
{
super(s_stringMgr.getString("TablePopupMenu.copyasupdatestatement"));
}
public void actionPerformed(ActionEvent evt)
{
if (_table != null)
{
new TableCopyUpdateStatementCommand(_table).execute();
}
}
}
private class CopyInsertStatementAction extends BaseAction
{
/**
* serialVersionUID
*/
private static final long serialVersionUID = -7435854038358286356L;
CopyInsertStatementAction()
{
super(s_stringMgr.getString("TablePopupMenu.copyasinsertstatement"));
}
public void actionPerformed(ActionEvent evt)
{
if (_table != null)
{
new TableCopyInsertStatementCommand(_table, getStatementSeparatorFromModel()).execute();
}
}
}
private class ExportCsvAction extends BaseAction
{
/**
* serialVersionUID
*/
private static final long serialVersionUID = 6085745835588355015L;
ExportCsvAction()
{
// i18n[TablePopupMenu.export=Export CSV / MS Excel / XML ...]
super(s_stringMgr.getString("TablePopupMenu.export"));
}
public void actionPerformed(ActionEvent evt)
{
if (_table != null)
{
new TableExportCsvCommand(_table).execute();
}
}
}
private class AdjustAllColWidthsAction extends BaseAction
{
/**
* serialVersionUID
*/
private static final long serialVersionUID = -3098803720561054400L;
AdjustAllColWidthsAction()
{
super(s_stringMgr.getString("TablePopupMenu.adoptAllColWidthsAction"));
}
public void actionPerformed(ActionEvent evt)
{
if (_table != null)
{
if(_table.getTableHeader() instanceof ButtonTableHeader)
{
((ButtonTableHeader)_table.getTableHeader()).adjustAllColWidths(true);
}
}
}
}
private class AlwaysAdjustAllColWidthsAction extends BaseAction
{
/**
* serialVersionUID
*/
private static final long serialVersionUID = 1822505497525307610L;
AlwaysAdjustAllColWidthsAction()
{
super(s_stringMgr.getString("TablePopupMenu.alwaysAdoptAllColWiths"));
}
public void actionPerformed(ActionEvent evt)
{
ButtonTableHeader.setAlwaysAdjustAllColWidths(_alwaysAdjustAllColWidtshActionItem.isSelected());
if (_table != null && _alwaysAdjustAllColWidtshActionItem.isSelected())
{
((ButtonTableHeader)_table.getTableHeader()).adjustAllColWidths(true);
}
}
}
private class ShowRowNumbersAction extends BaseAction
{
/**
* serialVersionUID
*/
private static final long serialVersionUID = 2334425978292516278L;
ShowRowNumbersAction()
{
super(s_stringMgr.getString("TablePopupMenu.showRowNumbers"));
}
public void actionPerformed(ActionEvent evt)
{
if (_table != null)
{
JCheckBoxMenuItem mnu = (JCheckBoxMenuItem) evt.getSource();
new ShowRowNumbersCommand(_viewer, mnu.isSelected()).execute();
}
}
}
private class MakeEditableAction extends BaseAction
{
/**
* serialVersionUID
*/
private static final long serialVersionUID = 8437698495240738702L;
MakeEditableAction()
{
super(s_stringMgr.getString("TablePopupMenu.makeeditable"));
}
public void actionPerformed(ActionEvent evt)
{
if (_updateableModel != null)
{
new MakeEditableCommand(_updateableModel).execute();
}
}
}
private class UndoMakeEditableAction extends BaseAction
{
/**
* serialVersionUID
*/
private static final long serialVersionUID = -4529894089150172541L;
UndoMakeEditableAction()
{
super(s_stringMgr.getString("TablePopupMenu.undomakeeditable"));
}
public void actionPerformed(ActionEvent evt)
{
if (_updateableModel != null)
{
new UndoMakeEditableCommand(_updateableModel).execute();
}
}
}
private class DeleteRowsAction extends BaseAction
{
/**
* serialVersionUID
*/
private static final long serialVersionUID = -1579260225467807234L;
DeleteRowsAction()
{
super(s_stringMgr.getString("TablePopupMenu.deleterows"));
}
public void actionPerformed(ActionEvent evt)
{
if (_table != null)
{
int selectedRows[] = _table.getSelectedRows();
// Tell the DataSetViewer to delete the rows
// Note: rows are indexes in the SORTABLE model, not the ACTUAL model
_viewer.deleteRows(selectedRows);
}
}
}
private class InsertRowAction extends BaseAction
{
/**
* serialVersionUID
*/
private static final long serialVersionUID = -1162317166099751091L;
InsertRowAction()
{
super(s_stringMgr.getString("TablePopupMenu.insertrow"));
}
public void actionPerformed(ActionEvent evt)
{
_viewer.insertRow();
}
}
private class SelectAllAction extends BaseAction
{
/**
* serialVersionUID
*/
private static final long serialVersionUID = -1785396901358722169L;
SelectAllAction()
{
super(s_stringMgr.getString("TablePopupMenu.selectall"));
}
public void actionPerformed(ActionEvent evt)
{
if (_table != null)
{
new TableSelectAllCellsCommand(_table).execute();
}
}
}
private class PrintAction extends BaseAction
{
/**
* serialVersionUID
*/
private static final long serialVersionUID = 2017562921244356617L;
PrintAction()
{
super(s_stringMgr.getString("TablePopupMenu.print"));
}
public void actionPerformed(ActionEvent evt)
{
if (_table != null)
{
try
{
PrinterJob printerJob = PrinterJob.getPrinterJob();
printerJob.setPrintable(_viewer);
if (printerJob.printDialog())
{
printerJob.print();
}
}
catch (Exception e)
{
throw new RuntimeException(e);
}
}
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy