📄 resultsetpanel.java
字号:
/* * ResultSetPanel.java * * Copyright (C) 2002, 2003, 2004, 2005, 2006 Takis Diakoumis * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or any later version. * * This program 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 General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * */package org.executequery.gui.editor;import java.awt.BorderLayout;import java.awt.Color;import java.awt.Point;import java.awt.Toolkit;import java.awt.datatransfer.Clipboard;import java.awt.datatransfer.StringSelection;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.MouseAdapter;import java.awt.event.MouseEvent;import java.awt.print.Printable;import java.sql.SQLException;import java.util.Enumeration;import java.util.Vector;import javax.swing.JMenu;import javax.swing.JMenuItem;import javax.swing.JPanel;import javax.swing.JPopupMenu;import javax.swing.JScrollPane;import javax.swing.JTable;import javax.swing.event.TableModelEvent;import javax.swing.event.TableModelListener;import javax.swing.table.DefaultTableModel;import javax.swing.table.TableColumn;import javax.swing.table.TableColumnModel;import javax.swing.table.TableModel;import org.underworldlabs.util.SystemProperties;import org.underworldlabs.swing.table.RowNumberHeader;import org.underworldlabs.swing.table.TableSorter;import org.executequery.print.PrintUtilities;import org.executequery.print.TablePrinter;/* ---------------------------------------------------------- * CVS NOTE: Changes to the CVS repository prior to the * release of version 3.0.0beta1 has meant a * resetting of CVS revision numbers. * ---------------------------------------------------------- *//** * Simple SQL result set display panel. * * @author Takis Diakoumis * @version $Revision: 1.5 $ * @date $Date: 2006/07/15 16:36:32 $ */public class ResultSetPanel extends JPanel { /** the table display */ private QueryEditorResultsTable table; /** the table model */ private ResultSetTableModel model; /** the table scroll pane */ private JScrollPane scroller; /** the table sorter */ private TableSorter sorter; /** whether a result set exists in this view */ private boolean hasResultSet; /** whether to displaay the row header */ private boolean showRowHeader; /** the table display default column width */ private int columnWidth; /** the associated meta data panel */ private ResultSetMetaDataPanel metaDataPanel; /** table pop-up menu */ private PopMenu popupMenu; /** the row number header */ private RowNumberHeader rowNumberHeader; /** Creates a new instance of ResultSetPanel */ public ResultSetPanel() { super(new BorderLayout()); init(); } private void init() { Color bg = SystemProperties.getColourProperty("user", "editor.results.background.colour"); table = new QueryEditorResultsTable(); // this is set for the bg of any remaining // header region outside the cells themselves table.getTableHeader().setBackground(bg); scroller = new JScrollPane(table, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED); scroller.setBackground(bg); scroller.setBorder(null); scroller.getViewport().setBackground(bg); add(scroller, BorderLayout.CENTER); setTableProperties(); table.addMouseListener(new MouseHandler()); } /** * Sets the results background to that specified. * * @param the colour to set */ public void setResultBackground(Color c) { scroller.setBackground(c); scroller.getViewport().setBackground(c); if (table != null) { table.getTableHeader().setBackground(c); } } public void destroyTable() { table = null; if (popupMenu != null) { popupMenu.removeAll(); } popupMenu = null; } public void interrupt() { if (model != null) { model.interrupt(); } } public int setResultSet(ResultSetTableModel model, boolean showRowNumber) throws SQLException { this.model = model; int rowCount = model.getRowCount(); if (rowCount > 0) { buildTable(rowCount); } return rowCount; } /** * Builds the result set table display. * * @param the row count */ private void buildTable(int rowCount) throws SQLException { boolean sorterWasNull = false; if (sorter == null) { sorterWasNull = true; sorter = new TableSorter(model); } else { sorter.setTableModel(model); } if (table == null) { table = new QueryEditorResultsTable(sorter); scroller.getViewport().add(table); } else { table.setModel(sorter); } // reset the table header if (sorterWasNull) { sorter.setTableHeader(table.getTableHeader()); } setTableColumnWidth(); table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); hasResultSet = true; if (showRowHeader) { addRowNumberHeader(); } } protected void tableDataChanged() { if (showRowHeader) { addRowNumberHeader(); } } private void addRowNumberHeader() { boolean needRepaint = false; if (rowNumberHeader == null) { rowNumberHeader = new RowNumberHeader(table); rowNumberHeader.setBackground(SystemProperties.getColourProperty( "user", "editor.results.background.colour")); } else { rowNumberHeader.setTable(table); } scroller.setRowHeaderView(rowNumberHeader); } /** * Sets the user defined (preferences) table properties. */ public void setTableProperties() { table.setDragEnabled(true); table.setCellSelectionEnabled(true); table.setBackground( SystemProperties.getColourProperty("user", "results.table.cell.background.colour")); table.setRowHeight( SystemProperties.getIntProperty("user", "results.table.column.height")); table.setRowSelectionAllowed( SystemProperties.getBooleanProperty("user", "results.table.row.select")); table.getTableHeader().setResizingAllowed( SystemProperties.getBooleanProperty("user", "results.table.column.resize")); table.getTableHeader().setReorderingAllowed( SystemProperties.getBooleanProperty("user", "results.table.column.reorder")); showRowHeader = SystemProperties.getBooleanProperty("user", "results.table.row.numbers"); if (showRowHeader) { addRowNumberHeader(); } else { if (rowNumberHeader != null) { // remove the row header if its there now scroller.setRowHeaderView(null); } rowNumberHeader = null; } columnWidth = SystemProperties.getIntProperty("user", "results.table.column.width"); setTableColumnWidth(); if (model != null) { model.setHoldMetaData(SystemProperties.getBooleanProperty( "user", "editor.results.metadata")); } } /** * Sets the table column width. */ private void setTableColumnWidth() { TableColumnModel tcm = table.getColumnModel(); if (columnWidth != 75) { TableColumn col = null; for (Enumeration i = tcm.getColumns(); i.hasMoreElements();) { col = (TableColumn)i.nextElement(); col.setPreferredWidth(columnWidth); } } }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -