📄 ezcelldemo.java
字号:
/*
* Copyright 2002 EZCell , Inc. All rights reserved.
* Version 1.0.
* Author W.John
*/
package ezcell;
import java.awt.*;
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Graphics;
import java.awt.GraphicsEnvironment;
import java.awt.event.ActionEvent;
import java.awt.event.KeyEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import java.io.File;
import java.sql.*;
import javax.swing.AbstractAction;
import javax.swing.AbstractButton;
import javax.swing.Action;
import javax.swing.ButtonGroup;
import javax.swing.ButtonModel;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JCheckBoxMenuItem;
import javax.swing.JComboBox;
import javax.swing.JComponent;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JRadioButtonMenuItem;
import javax.swing.JToggleButton;
import javax.swing.JToolBar;
import javax.swing.KeyStroke;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
/**
* EZCellDemo 用来测试EZCell JavaBean 的主类。
*
* 从JFrame 派生,用来包含菜单,工具栏,EZCell 类
*
* @version 1.00
* @author W.John
*/
public class EZCellDemo extends JFrame implements EZCellListener {
// 文件打开保存对话框
static protected JFileChooser fileChooser;
// 各命令常值
final static int FILE_NEW = 0;
final static int FILE_OPEN = FILE_NEW + 1;
final static int FILE_SAVE = FILE_OPEN + 1;
final static int FILE_SAVEAS = FILE_SAVE + 1;
final static int FILE_PRINT = FILE_SAVEAS + 1;
final static int FILE_PRRINTSETUP = FILE_PRINT + 1;
final static int FILE_PRINTPREVIEW = FILE_PRRINTSETUP + 1;
final static int FILE_EXPORT_AS_POSTSCRIPT = FILE_PRINTPREVIEW + 1;
final static int FILE_EXIT = FILE_EXPORT_AS_POSTSCRIPT + 1;
final static int EDIT_UNDO = FILE_EXIT + 1;
final static int EDIT_REDO = EDIT_UNDO + 1;
final static int EDIT_COPY = EDIT_REDO + 1;
final static int EDIT_CUT = EDIT_COPY + 1;
final static int EDIT_PASTE = EDIT_CUT + 1;
final static int EDIT_PASTE_WITH_FORMAT = EDIT_PASTE + 1;
final static int EDIT_CLEAR = EDIT_PASTE_WITH_FORMAT + 1;
final static int EDIT_CLEAR_WITH_FORMAT = EDIT_CLEAR + 1;
final static int EDIT_CHECK_SPELL = EDIT_CLEAR_WITH_FORMAT + 1;
final static int EDIT_DELETE_ROW = EDIT_CHECK_SPELL + 1;
final static int EDIT_INSERT_ROW = EDIT_DELETE_ROW + 1;
final static int EDIT_DELETE_COL = EDIT_INSERT_ROW + 1;
final static int EDIT_INSERT_COL = EDIT_DELETE_COL + 1;
final static int EDIT_DELETE_SHEET = EDIT_INSERT_COL + 1;
final static int EDIT_INSERT_SHEET = EDIT_DELETE_SHEET + 1;
final static int EDIT_SHEET_PROPERTY = EDIT_INSERT_SHEET + 1;
final static int EDIT_BOOK_PROPERTY = EDIT_SHEET_PROPERTY + 1;
final static int VIEW_TOGGLE_TOOLBAR = EDIT_BOOK_PROPERTY + 1;
final static int VIEW_TOGGLE_SCROLLBAR = VIEW_TOGGLE_TOOLBAR + 1;
final static int VIEW_TOGGLE_TOP_HEADER = VIEW_TOGGLE_SCROLLBAR + 1;
final static int VIEW_TOGGLE_LEFT_HEADER = VIEW_TOGGLE_TOP_HEADER + 1;
final static int VIEW_TOGGLE_GRID_X = VIEW_TOGGLE_LEFT_HEADER + 1;
final static int VIEW_TOGGLE_GRID_Y = VIEW_TOGGLE_GRID_X + 1;
final static int VIEW_TOGGLE_SELECTION = VIEW_TOGGLE_GRID_Y + 1;
final static int VIEW_ZOOM_IN = VIEW_TOGGLE_SELECTION + 1;
final static int VIEW_ZOOM_OUT = VIEW_ZOOM_IN + 1;
final static int VIEW_ZOOM_TO = VIEW_ZOOM_OUT + 1;
final static int VIEW_ZOOM_TO_200 = VIEW_ZOOM_TO + 1;
final static int VIEW_ZOOM_TO_100 = VIEW_ZOOM_TO_200 + 1;
final static int VIEW_ZOOM_TO_75 = VIEW_ZOOM_TO_100 + 1;
final static int VIEW_ZOOM_TO_50 = VIEW_ZOOM_TO_75 + 1;
final static int VIEW_ZOOM_TO_25 = VIEW_ZOOM_TO_50 + 1;
final static int VIEW_PAGE = VIEW_ZOOM_TO_25 + 1;
final static int VIEW_OPTION = VIEW_PAGE + 1;
final static int SEARCH_FIND = VIEW_OPTION + 1;
final static int SEARCH_REPLACE = SEARCH_FIND + 1;
final static int SEARCH_FIND_NEXT = SEARCH_REPLACE + 1;
final static int SEARCH_GOTO = SEARCH_FIND_NEXT + 1;
final static int FORMAT_FONT = SEARCH_GOTO + 1;
final static int FORMAT_FONT_NAME = FORMAT_FONT + 1;
final static int FORMAT_FONT_SIZE = FORMAT_FONT_NAME + 1;
final static int FORMAT_FONT_BOLD = FORMAT_FONT_SIZE + 1;
final static int FORMAT_FONT_ITALIC = FORMAT_FONT_BOLD + 1;
final static int FORMAT_FONT_PLAIN = FORMAT_FONT_ITALIC + 1;
final static int FORMAT_FONT_OUTLINE = FORMAT_FONT_PLAIN + 1;
final static int FORMAT_TEXT_BRUSH = FORMAT_FONT_OUTLINE + 1;
final static int FORMAT_TEXT_COLOR = FORMAT_TEXT_BRUSH + 1;
final static int FORMAT_BACK_BRUSH = FORMAT_TEXT_COLOR + 1;
final static int FORMAT_BACK_COLOR = FORMAT_BACK_BRUSH + 1;
final static int FORMAT_ALIGN_X = FORMAT_BACK_COLOR + 1;
final static int FORMAT_ALIGN_LEFT = FORMAT_ALIGN_X + 1;
final static int FORMAT_ALIGN_RIGHT = FORMAT_ALIGN_LEFT + 1;
final static int FORMAT_ALIGN_X_CENTER = FORMAT_ALIGN_RIGHT + 1;
final static int FORMAT_ALIGN_Y = FORMAT_ALIGN_X_CENTER + 1;
final static int FORMAT_ALIGN_TOP = FORMAT_ALIGN_Y + 1;
final static int FORMAT_ALIGN_BOTTOM = FORMAT_ALIGN_TOP + 1;
final static int FORMAT_ALIGN_Y_CENTER = FORMAT_ALIGN_BOTTOM + 1;
final static int FORMAT_WORD_WRAP = FORMAT_ALIGN_Y_CENTER + 1;
final static int FORMAT_BORDER = FORMAT_WORD_WRAP + 1;
final static int FORMAT_MERGE = FORMAT_BORDER + 1;
final static int FORMAT_NUMBER_FORMAT = FORMAT_MERGE + 1;
final static int FORMAT_ROWS_HEIGHT = FORMAT_NUMBER_FORMAT + 1;
final static int FORMAT_COLS_WIDTH = FORMAT_ROWS_HEIGHT + 1;
final static int DATABASE_IMPORT_DATASET = FORMAT_COLS_WIDTH + 1;
final static int MENUITEM = 1;
final static int MENU = 2;
final static int RADIOMENU = 4;
final static int CHECKBOXMENU = 8;
final static int BUTTON = 16;
final static int TOGGLEBUTTON = 32;
final static int SELECTED = 64;
// 包含的JAVABEAN
protected EZCell cellBean;
// 所有工具栏
protected JToolBar fileTB;
protected JToolBar editTB;
protected JToolBar searchTB;
protected JToolBar viewTB;
protected JToolBar formatTB;
protected JPanel toolpane;
// 所有菜单条
protected JMenu fileMN;
protected JMenu editMN;
protected JMenu searchMN;
protected JMenu viewMN;
protected JMenu formatMN;
protected JMenu databaseMN;
protected SimpleFilter fileFilter;
// 如果是因为焦点的单元格变动,而引起的命令,忽略进行操作,
// 参见 AH.actionPerformed(),updateUI().
private boolean skipCommand;
EmptyIcon ei = new EmptyIcon(16, 16);
// Action handler,消息处理器
AH[] ahs = {
new AH(FILE_NEW, "New...", "/icons/new.gif", ctrl(KeyEvent.VK_N),
MENUITEM | BUTTON), //
new AH(FILE_OPEN, "Open...", "/icons/open.gif", ctrl(KeyEvent.VK_O),
MENUITEM | BUTTON), //
new AH(FILE_SAVE, "Save", "/icons/save.gif", ctrl(KeyEvent.VK_S),
MENUITEM | BUTTON), //
new AH(FILE_SAVEAS, "Save As...", "/icons/saveas.gif", null, MENUITEM), //
new AH(FILE_PRINT, "Print", "/icons/print.gif", ctrl(KeyEvent.VK_P),
MENUITEM | BUTTON), //
new AH(FILE_PRRINTSETUP, "Print Setup...", null, null, MENUITEM), //
new AH(FILE_PRINTPREVIEW, "Print Preview...", "/icons/printpreview.gif", null,
MENUITEM | BUTTON), //
new AH(FILE_EXPORT_AS_POSTSCRIPT, "Export As Postscript file ", null, null,
MENUITEM), //
new AH(FILE_EXIT, "Exit", "/icons/exit.gif", null, MENUITEM), //
new AH(EDIT_UNDO, "Undo", "/icons/undo.gif", ctrl(KeyEvent.VK_Z),
MENUITEM | BUTTON), //
new AH(EDIT_REDO, "Redo", "/icons/redo.gif", ctrl(KeyEvent.VK_Y),
MENUITEM | BUTTON), //
new AH(EDIT_COPY, "Copy", "/icons/copy.gif", ctrl(KeyEvent.VK_C),
MENUITEM | BUTTON), //
new AH(EDIT_CUT, "Cut", "/icons/cut.gif", ctrl(KeyEvent.VK_X), MENUITEM |
BUTTON), //
new AH(EDIT_PASTE, "Paste", "/icons/paste.gif", ctrl(KeyEvent.VK_V),
MENUITEM | BUTTON), //
new AH(EDIT_PASTE_WITH_FORMAT, "Paste All", null, null, MENUITEM), //
new AH(EDIT_CLEAR, "Clear", "/icons/clear.gif", key(KeyEvent.VK_DELETE),
MENUITEM | BUTTON), //
new AH(EDIT_CLEAR_WITH_FORMAT, "Clear All", null, null, MENUITEM), //
new AH(EDIT_CHECK_SPELL, "Check Spell", null, null, MENUITEM), //
new AH(EDIT_DELETE_ROW, "Delete Row", "/icons/deleterow.gif", null,
MENUITEM | BUTTON), //
new AH(EDIT_INSERT_ROW, "Insert Row", "/icons/insertrow.gif", null,
MENUITEM | BUTTON), //
new AH(EDIT_DELETE_COL, "Delete Column", "/icons/deletecol.gif", null,
MENUITEM | BUTTON), //
new AH(EDIT_INSERT_COL, "Insert Column", "/icons/insertcol.gif", null,
MENUITEM | BUTTON), //
new AH(EDIT_DELETE_SHEET, "Delete Sheet", null, null, MENUITEM), //
new AH(EDIT_INSERT_SHEET, "Insert Sheet", null, null, MENUITEM), //
new AH(EDIT_SHEET_PROPERTY, "Sheet Property...", null, null, MENUITEM), //
new AH(EDIT_BOOK_PROPERTY, "Book Property...", null, null, MENUITEM), //
new AH(VIEW_TOGGLE_TOOLBAR, "Toolbar", null, null, CHECKBOXMENU | SELECTED), //
new AH(VIEW_TOGGLE_SCROLLBAR, "Scrollbar ", null, null, CHECKBOXMENU |
SELECTED), //
new AH(VIEW_TOGGLE_TOP_HEADER, "Top Header", null, null, CHECKBOXMENU |
SELECTED), //
new AH(VIEW_TOGGLE_LEFT_HEADER, "Left Header", null, null,
CHECKBOXMENU | SELECTED), //
new AH(VIEW_TOGGLE_GRID_X, "Grid X", null, null, CHECKBOXMENU | SELECTED), //
new AH(VIEW_TOGGLE_GRID_Y, "Grid Y", null, null, CHECKBOXMENU | SELECTED), //
new AH(VIEW_TOGGLE_SELECTION, "Selection", null, null, CHECKBOXMENU | SELECTED), //
new AH(VIEW_ZOOM_IN, "Zoom In", "/icons/zoomin.gif", ctrl(KeyEvent.VK_PLUS),
MENUITEM | BUTTON), //
new AH(VIEW_ZOOM_OUT, "Zoom Out", "/icons/zoomout.gif", ctrl(KeyEvent.VK_MINUS),
MENUITEM | BUTTON), //
new AH(VIEW_ZOOM_TO, "Zoom To", null, ctrl(KeyEvent.VK_M), MENU), //
new AH(VIEW_ZOOM_TO_200, "200%", null, null, RADIOMENU), //
new AH(VIEW_ZOOM_TO_100, "100%", null, null, RADIOMENU | SELECTED), //
new AH(VIEW_ZOOM_TO_75, "75%", null, null, RADIOMENU), //
new AH(VIEW_ZOOM_TO_50, "50%", null, null, RADIOMENU), //
new AH(VIEW_ZOOM_TO_25, "25%", null, null, RADIOMENU),
new AH(VIEW_PAGE, "Page Header/Footer...", "/icons/page.gif", null,
CHECKBOXMENU | TOGGLEBUTTON),
new AH(VIEW_OPTION, "Option...", "/icons/option.gif", null, MENUITEM | BUTTON), //
new AH(SEARCH_FIND, "Find...", "/icons/find.gif", ctrl(KeyEvent.VK_F),
MENUITEM | BUTTON), //
new AH(SEARCH_REPLACE, "Replace...", "/icons/replace.gif", ctrl(KeyEvent.VK_R),
MENUITEM), //
new AH(SEARCH_FIND_NEXT, "Find Next", null, key(KeyEvent.VK_F3), MENUITEM), //
new AH(SEARCH_GOTO, "Go to...", null, null, MENUITEM), //
new AH(FORMAT_FONT, "Font...", null, null, MENUITEM), //
new AH(FORMAT_FONT_NAME, "Font Name", null, null, 0), //
new AH(FORMAT_FONT_SIZE, "Font Size", null, null, 0), //
new AH(FORMAT_FONT_BOLD, "Font Bold", "/icons/bold.gif", null, TOGGLEBUTTON), //
new AH(FORMAT_FONT_ITALIC, "Font Italic", "/icons/italic.gif", null, TOGGLEBUTTON), //
new AH(FORMAT_FONT_PLAIN, "Font Plain", "/icons/plain.gif", null, TOGGLEBUTTON), //
new AH(FORMAT_FONT_OUTLINE, "Font Outline", "/icons/outline.gif", null,
TOGGLEBUTTON), //
new AH(FORMAT_TEXT_BRUSH, "Text Brush...", "/icons/forecolor.gif", null, MENUITEM), //
new AH(FORMAT_TEXT_COLOR, "Text Color...", null, null, 0), //
new AH(FORMAT_BACK_BRUSH, "Background Brush...", "/icons/backcolor.gif", null,
MENUITEM), //
new AH(FORMAT_BACK_COLOR, "Background Color...", null, null, 0), //
new AH(FORMAT_ALIGN_X, "Alginment X", null, null, MENU), //
new AH(FORMAT_ALIGN_LEFT, "Left", "/icons/left.gif", null,
RADIOMENU | TOGGLEBUTTON), //
new AH(FORMAT_ALIGN_RIGHT, "Right", "/icons/right.gif", null,
RADIOMENU | TOGGLEBUTTON), //
new AH(FORMAT_ALIGN_X_CENTER, "X Center", "/icons/xcenter.gif", null,
RADIOMENU | TOGGLEBUTTON), //
new AH(FORMAT_ALIGN_Y, "Alginment Y", null, null, MENU), //
new AH(FORMAT_ALIGN_TOP, "Top", "/icons/top.gif", null, RADIOMENU |
TOGGLEBUTTON), //
new AH(FORMAT_ALIGN_BOTTOM, "Bottom", "/icons/bottom.gif", null,
RADIOMENU | TOGGLEBUTTON), //
new AH(FORMAT_ALIGN_Y_CENTER, "Y Center", "/icons/ycenter.gif", null,
RADIOMENU | TOGGLEBUTTON), //
new AH(FORMAT_WORD_WRAP, "Word Wrap", "/icons/wrap.gif", null,
CHECKBOXMENU | TOGGLEBUTTON), //
new AH(FORMAT_BORDER, "Borders...", "/icons/border.gif", null, MENUITEM |
BUTTON), //
new AH(FORMAT_MERGE, "Merge", "/icons/merge.gif", null,
CHECKBOXMENU | TOGGLEBUTTON), //
new AH(FORMAT_NUMBER_FORMAT, "Number Format...", "/icons/numberformat.gif", null,
MENUITEM), //
new AH(FORMAT_ROWS_HEIGHT, "Rows Height...", null, null, MENUITEM), //
new AH(FORMAT_COLS_WIDTH, "Columns Width...", null, null, MENUITEM),
new AH(DATABASE_IMPORT_DATASET, "Import Dataset", null, null, MENUITEM)
};
/**
* Creates a new EZCellDemo object.
*/
EZCellDemo() {
super("ZCell V1.0");
init();
}
/**
* DOCUMENT ME!
*
* @param cellBean DOCUMENT ME!
*/
public void activeCellChanged(EZCell cellBean) {
//改变相应菜单和工具栏的设置
updateFormatUI();
}
/**
* DOCUMENT ME!
*
* @param argv DOCUMENT ME!
*/
public static void main(String[] argv) {
// 改变菜单栏ICON,因为缺省的ICON总是使菜单文字参次不齐
UIManager.put("CheckBoxMenuItem.checkIcon", new ToggleIcon());
UIManager.put("RadioButtonMenuItem.checkIcon", new ToggleIcon());
UIManager.put("ToggleButton.select", new Color(234, 233, 230));
try {
// 如果是windows平台,就用windows 风格的外观吧
UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
} catch (UnsupportedLookAndFeelException ex) {
} catch (IllegalAccessException ex) {
} catch (InstantiationException ex) {
} catch (ClassNotFoundException ex) {
}
new EZCellDemo();
}
/**
* DOCUMENT ME!
*
* @param cellBean DOCUMENT ME!
*/
public void undoStateChanged(EZCell cellBean) {
// 改变undo ,redo 的
updateUndoUI();
}
/**
* DOCUMENT ME!
*
* @param cellBean DOCUMENT ME!
*/
public void viewStateChanged(EZCell cellBean) {
updateViewUI();
}
/**
* DOCUMENT ME!
*
* @param k DOCUMENT ME!
*
* @return DOCUMENT ME!
*/
KeyStroke ctrl(int k) {
return KeyStroke.getKeyStroke(k, KeyEvent.CTRL_MASK);
}
/**
* DOCUMENT ME!
*
* @param k DOCUMENT ME!
*
* @return DOCUMENT ME!
*/
KeyStroke key(int k) {
return KeyStroke.getKeyStroke(k, 0);
}
/**
* DOCUMENT ME!
*/
void onViewOption() {
}
/**
* DOCUMENT ME!
*/
void onViewZoomIn() {
JComboBox scales = (JComboBox) ahs[VIEW_ZOOM_TO].getValue("BUTTON");
int index = scales.getSelectedIndex() - 1;
if (index >= 0) {
scales.setSelectedIndex(index);
}
}
/**
* DOCUMENT ME!
*/
void onViewZoomOut() {
JComboBox scales = (JComboBox) ahs[VIEW_ZOOM_TO].getValue("BUTTON");
int index = scales.getSelectedIndex() + 1;
if (index < scales.getItemCount()) {
scales.setSelectedIndex(index);
}
}
/**
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -