package org.crazyit.mysql.ui;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import javax.swing.AbstractAction;
import javax.swing.Action;
import javax.swing.ImageIcon;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPopupMenu;
import javax.swing.JScrollPane;
import javax.swing.JSplitPane;
import javax.swing.JToolBar;
import javax.swing.JTree;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeModel;
import javax.swing.tree.TreePath;
import org.crazyit.mysql.object.GlobalContext;
import org.crazyit.mysql.object.ViewObject;
import org.crazyit.mysql.object.list.AbstractData;
import org.crazyit.mysql.object.list.ProcedureData;
import org.crazyit.mysql.object.list.TableData;
import org.crazyit.mysql.object.list.ViewData;
import org.crazyit.mysql.object.tree.ConnectionNode;
import org.crazyit.mysql.object.tree.Database;
import org.crazyit.mysql.object.tree.ProcedureNode;
import org.crazyit.mysql.object.tree.RootNode;
import org.crazyit.mysql.object.tree.ServerConnection;
import org.crazyit.mysql.object.tree.TableNode;
import org.crazyit.mysql.object.tree.ViewNode;
import org.crazyit.mysql.ui.list.ListCellRenderer;
import org.crazyit.mysql.ui.tree.TreeCellRenderer;
import org.crazyit.mysql.ui.tree.TreeListener;
import org.crazyit.mysql.util.MySQLUtil;
/**
* 管理器的主界面
*
* @author yangenxiong yangenxiong2009@gmail.com
* @version 1.0
* <br/>网站: <a href="http://www.crazyit.org">疯狂Java联盟</a>
* <br>Copyright (C), 2009-2010, yangenxiong
* <br>This program is protected by copyright laws.
*/
@SuppressWarnings("serial")
public class MainFrame extends JFrame {
//主界面的分隔Pane
private JSplitPane mainPane;
//树的JScrollPane
private JScrollPane treePane;
//主界面的连接树, 树的第一层子节点是各个连接,第二层子节点是该连接下的数据库列表,
//第三层子节点是表、视图等
private JTree tree;
//树的Model
private DefaultTreeModel treeModel;
//JList的JScrollPane
private JScrollPane dataPane;
//表、视图等存放的JList
private JList dataList;
//空的数据
private Object[] emptyData = new Object[]{};
//工具栏
private JToolBar toolBar = new JToolBar();
//新连接界面
private ConnectionFrame connectionFrame;
//新建数据库界面
private DatabaseFrame databaseFrame;
//新连接
private Action newConnection = new AbstractAction("新连接", new ImageIcon("images/connection.gif")) {
public void actionPerformed(ActionEvent e) {
newConnection();
}
};
//表
private Action table = new AbstractAction("表", new ImageIcon("images/table.gif")) {
public void actionPerformed(ActionEvent e) {
viewTables();
}
};
//视图
private Action view = new AbstractAction("视图", new ImageIcon("images/view.gif")) {
public void actionPerformed(ActionEvent e) {
viewViews();
}
};
//存储过程
private Action procedure = new AbstractAction("存储过程", new ImageIcon("images/procedure.gif")) {
public void actionPerformed(ActionEvent e) {
viewProcedures();
}
};
//查询
private Action query = new AbstractAction("查询", new ImageIcon("images/query.gif")) {
public void actionPerformed(ActionEvent e) {
query();
}
};
//弹出菜单
JPopupMenu menu = new JPopupMenu();
//表的菜单
private JMenuItem addTableItem = new JMenuItem("新建表", new ImageIcon("images/add-table.gif"));
private JMenuItem editTableItem = new JMenuItem("编辑表", new ImageIcon("images/edit-table.gif"));
private JMenuItem deleteTableItem = new JMenuItem("删除表", new ImageIcon("images/delete-table.gif"));
private JMenuItem dumpTableItem = new JMenuItem("导出表", null);
private JMenuItem refresh = new JMenuItem("刷 新", new ImageIcon("images/refresh.gif"));
//视图菜单
private JMenuItem addViewItem = new JMenuItem("新建视图", new ImageIcon("images/add-view.gif"));
private JMenuItem editViewItem = new JMenuItem("编辑视图", new ImageIcon("images/edit-view.gif"));
private JMenuItem dropViewItem = new JMenuItem("删除视图", new ImageIcon("images/delete-view.gif"));
//存储过程菜单
private JMenuItem addProcedureItem = new JMenuItem("新建存储过程", new ImageIcon("images/add-procedure.gif"));
private JMenuItem editProcedureItem = new JMenuItem("编辑存储过程", new ImageIcon("images/edit-procedure.gif"));
private JMenuItem dropProcedureItem = new JMenuItem("删除存储过程", new ImageIcon("images/delete-procedure.gif"));
//树的弹出菜单
JPopupMenu treeMenu = new JPopupMenu();
private JMenuItem closeConnection = new JMenuItem("关闭连接", null);
private JMenuItem removeConnection = new JMenuItem("删除连接", null);
private JMenuItem closeDatabase = new JMenuItem("关闭数据库", null);
private JMenuItem newDatabase = new JMenuItem("新建数据库", null);
private JMenuItem removeDatabase = new JMenuItem("删除数据库", null);
private JMenuItem executeSQLFile = new JMenuItem("执行SQL文件", null);
private JMenuItem dumpSQLFile = new JMenuItem("导出SQL文件", null);
//全局上下文对象
private GlobalContext ctx;
//当前列表前所显示数据种类
private ViewObject currentView;
public MainFrame(GlobalContext ctx) {
this.ctx = ctx;
//初始化树对象
createTree();
this.treePane = new JScrollPane(this.tree);
//初始化表、视图的JList
this.dataList = createList();
this.dataPane = new JScrollPane(dataList);
this.dataPane.setPreferredSize(new Dimension(600, 400));
this.mainPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, this.treePane,
this.dataPane);
this.mainPane.setDividerLocation(170);
this.add(this.mainPane);
//创建工具栏
createToolBar();
this.add(this.toolBar, BorderLayout.NORTH);
this.setLocation(150, 100);
this.pack();
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setTitle("MySQL管理器");
//初始化各个界面
this.connectionFrame = new ConnectionFrame(this.ctx, this);
initMenuItemListeners();
}
//初始化右键菜单
private void initMenuItemListeners() {
this.addTableItem.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
newTable();
}
});
this.editTableItem.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
editTable();
}
});
this.deleteTableItem.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
dropTable();
}
});
this.dumpTableItem.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
dumpTable();
}
});
this.addViewItem.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
newView();
}
});
this.editViewItem.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
editView();
}
});
this.dropViewItem.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
dropView();
}
});
this.addProcedureItem.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
newProcedure();
}
});
this.editProcedureItem.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
editProcedure();
}
});
this.dropProcedureItem.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
dropProcedure();
}
});
this.refresh.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
refreshDataList();
}
});
this.closeConnection.addActionListener(new ActionListener(){
没有合适的资源?快使用搜索试试~ 我知道了~
《疯狂java讲义》第三版 随书附赠源代码
共2000个文件
class:1614个
java:1147个
gif:334个
5星 · 超过95%的资源 需积分: 28 64 下载量 137 浏览量
2017-11-13
15:31:22
上传
评论
收藏 11.97MB ZIP 举报
温馨提示
本压缩包是《疯狂Java讲义》第三版随书附赠的关盘上的内容,包括章节源代码以及设计模式大全
资源推荐
资源详情
资源评论
收起资源包目录
《疯狂java讲义》第三版 随书附赠源代码 (2000个子文件)
command.bat 22B
Java设计模式(疯狂Java联盟版).chm 437KB
MainFrame.class 25KB
TableData.class 20KB
MainFrame.class 19KB
TableFrame.class 17KB
EditorFrame.class 16KB
MainFrame.class 15KB
GameServiceImpl.class 15KB
SalePanel.class 14KB
SalePanel.class 14KB
BookPanel.class 14KB
BookPanel.class 14KB
GamePanel.class 14KB
RepertoryPanel.class 13KB
RepertoryPanel.class 13KB
MainFrame.class 13KB
MailFrame.class 11KB
TransactionServiceImpl.class 9KB
HallPanel.class 9KB
AbstractApplicationContext.class 8KB
ImageFrame.class 8KB
ConcernPanel.class 8KB
ConcernPanel.class 8KB
Database.class 8KB
MyTransactionPanel.class 8KB
MailLoaderImpl.class 8KB
DataFrame.class 7KB
SwingComponent.class 7KB
TypePanel.class 7KB
TypePanel.class 7KB
BlobTest.class 7KB
FileUtil.class 7KB
LoginFrame.class 7KB
ImageService.class 7KB
ProcedureFrame.class 7KB
TransactionManagePanel.class 7KB
PropertyHandlerImpl.class 7KB
ForeignTable.class 7KB
SetupFrame.class 7KB
ConnectionFrame.class 7KB
SaleRecordServiceImpl.class 7KB
BallService.class 7KB
ChessFrame.class 7KB
NewTaskFrame.class 6KB
NewTransactionDialog.class 6KB
SaleRecordServiceImpl.class 6KB
TransferTransactionDialog.class 6KB
MainFrame.class 6KB
GameHallFrame.class 6KB
AddUserDialog.class 6KB
MainFrame.class 6KB
ElementReaderImpl.class 6KB
InRecordServiceImpl.class 6KB
Resource.class 6KB
ListTest.class 6KB
DownloadThread.class 5KB
AdjustingWidth.class 5KB
InRecordServiceImpl.class 5KB
TableModelTest.class 5KB
JFormattedTextFieldTest.class 5KB
TakeChessAction.class 5KB
ViewTransactionDialog.class 5KB
JOptionPaneTest.class 5KB
Mail.class 5KB
CopyImage.class 5KB
SystemHandlerImpl.class 5KB
LinkGame.class 5KB
UserPanel.class 5KB
TransactionDaoImpl.class 5KB
TreeCreatorImpl.class 5KB
SelectUserDialog.class 5KB
ConfigFrame.class 5KB
MailContext.class 5KB
ElementReaderTest.class 5KB
CalFrame.class 5KB
HandleTransactionDialog.class 5KB
GobangGame.class 5KB
AbstractTool.class 5KB
FieldTable.class 5KB
ServerConnection.class 5KB
BackupHandlerImpl.class 5KB
MyTextPane.class 5KB
LoginFrame.class 4KB
BeanCreatorImpl.class 4KB
DefaultTableModelTest.class 4KB
JInternalFrameTest.class 4KB
EditJTree.class 4KB
PropertyHandlerTest.class 4KB
Table.class 4KB
MainFrame.class 4KB
UserTable.class 4KB
ImageViewer.class 4KB
ChatPanel.class 4KB
JSpinnerTest.class 4KB
MailSenderImpl.class 4KB
DataUtil.class 4KB
DataUtil.class 4KB
EditPane.class 4KB
JTabbedPaneTest.class 4KB
共 2000 条
- 1
- 2
- 3
- 4
- 5
- 6
- 20
资源评论
- 蓝天vszy2018-03-12很好的资源!「已注销」2018-08-12我设置的是不是有点太便宜了。。。。。。
- jjyjjyjjy2018-03-01还可以还可以
「已注销」
- 粉丝: 4601
- 资源: 16
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功