📄 compareframe.java
字号:
package com.icbcsdc.ddlexp.ui;
import java.awt.AWTEvent;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.GridLayout;
import java.awt.Point;
import java.awt.Rectangle;
import java.awt.SystemColor;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowEvent;
import java.io.File;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.Types;
import javax.swing.BorderFactory;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JEditorPane;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JSplitPane;
import javax.swing.JToolBar;
import javax.swing.UIManager;
import javax.swing.border.Border;
import pv.jfcx.JPVButton;
import pv.jfcx.PVNode;
import com.icbc.util.Context;
import com.icbc.util.DAO;
import com.icbc.util.DbCompare;
import com.icbc.util.XMLReader;
import com.icbcsdc.ddlexp.pub.staticLog.Logger;
import com.icbcsdc.ddlexp.pub.util.ConfigFile;
import com.icbcsdc.ddlexp.pub.util.FileDb;
import com.icbcsdc.ddlexp.pub.util.MessageBox;
import com.icbcsdc.ddlexp.pub.xml.nodeinfo.ComparedNode;
import com.icbcsdc.ddlexp.pub.xml.nodeinfo.XMLDatabase;
import com.icbcsdc.ddlexp.pub.xml.nodeinfo.XMLManager;
import com.icbcsdc.ddlexp.pub.xml.nodeinfo.XMLNode;
import com.icbcsdc.ddlexp.pub.xml.nodeinfo.XMLSchema;
import com.icbcsdc.ddlexp.pub.xml.nodeinfo.XMLSchemas;
import com.icbcsdc.ddlexp.pub.connectionpool.JDBCCnn;
import com.icbcsdc.ddlexp.pub.connectionpool.JDBCException;
import com.icbcsdc.ddlexp.pub.connectionpool.JDBCPool;
import com.icbcsdc.ddlexp.pub.connectionpool.JDBCPoolManager;
import com.icbcsdc.ddlexp.ui.dialog.DeamonThread;
import com.icbcsdc.ddlexp.ui.dialog.MainFrameAboutBox;
import com.icbcsdc.ddlexp.ui.dialog.WaitingDlg;
import com.icbcsdc.ddlexp.ui.rightPanel.RightPanel;
/**
*
* 主窗口类
*
*/
public class CompareFrame extends TreeFrame implements ActionListener {
public MyTree selectedTreeView=null;
/**
* 本Frame的Panel
*/
private JPanel contentPane;
/**
* 窗体的菜单栏
*/
private JMenuBar myMenuBar = new JMenuBar();
/**
* File菜单
*/
private JMenu jMenuFile = new JMenu();
/**
* 退出菜单项
*/
private JMenuItem jMenuFileExit = new JMenuItem();
/**
* 帮助菜单
*/
private JMenu jMenuHelp = new JMenu();
/**
* 弹出about对话框的菜单项
*/
private JMenuItem jMenuHelpAbout = new JMenuItem();
/**
* 窗体的工具栏
*/
private JToolBar jToolBar = new JToolBar();
/**
* 窗体的工具栏按钮
*/
private JButton btnRefresh = new JButton();
/**
* 窗体的工具栏按钮
*/
private JButton btnHelp = new JButton();
/**
* 窗体的工具栏按钮
*/
private JButton btnCompare = new JButton();
/**
* 用户管理按钮图标
*/
private ImageIcon usermanagerImage = null;
/**
* 图标
*/
private ImageIcon refreshImage = null;
/**
* 图标
*/
private ImageIcon helpImage = null;
private ImageIcon compareImage = null;
/**
* 窗体边框
*/
private Border mainFrmBorder = null;
private File expFile = null;
/**
* 窗体的状态栏
*/
private JToolBar statusBar = new JToolBar();
private JLabel blankHeader = new JLabel(" ");
private JLabel statusHeader = new JLabel(" ");
private JLabel statusInfo = new JLabel(" ");
private BorderLayout mainFrmBorderLayout = new BorderLayout();
private JSplitPane splitPane = new JSplitPane();
private JSplitPane splitPaneTop = new JSplitPane();
private JSplitPane splitPaneBottom = new JSplitPane();
private FlowLayout flwLayout = new FlowLayout();
//private JButton button = new JButton("ttt");
JEditorPane editPane = new JEditorPane();
JPVButton jpvbutton = null;
javax.swing.Timer m_run;
/**
* 窗体左边树的容器
*/
protected MyTree treeSource;
protected MyTree treeDest;
/**
* 窗体右边树的容器
*/
protected MyTree treeCompared;
XMLSchema srcXMLSchema=null;
XMLSchema dstXMLSchema=null;
XMLDatabase resultXMLDB=null;
/**
* 窗体右边的容器
*/
protected JScrollPane jScrollPane = new JScrollPane();
private static DAO srcDao=null,desDao=null,storageDao=null;
private static Connection srcCon=null,desCon=null,storageCon=null;
private String scope="*";
//XMLManager manager=null;
//XMLManager managerB=null;
//XMLManager managerC=null;
/**
* Construct the frame
*/
public CompareFrame() {
//
try {
//manager= new XMLManager("源数据库");
// LoadDBFromInitfile();
jbInit();
enableEvents(AWTEvent.WINDOW_EVENT_MASK);
//jspStatic = jsp;
} catch (Exception e) {
Logger.log(Logger.ERROR, e.getMessage());
//e.printStackTrace();
}
}
static private CompareFrame instance = null; // 唯一实例
/**
* 返回唯一实例.如果是第一次调用此方法,则创建实例
*
* @return JDBCPoolManager 唯一实例
*/
static synchronized public CompareFrame getInstance() {
if (instance == null) {
instance = new CompareFrame();
instance.setExtendedState(Frame.MAXIMIZED_BOTH);
instance.show();
instance.LoadDBFromInitfile();
instance.selectedTreeView=instance.treeDest;
instance.LoadDBFromInitfile();
instance.selectedTreeView=instance.treeCompared;
instance.LoadDBFromInitfile();
}
//instance.setVisible(true);
return instance;
}
/**
* @throws Exception
* 窗体初始化
*/
private void jbInit() throws Exception {
/** 设置图标 */
usermanagerImage = new ImageIcon("img/user.gif");
refreshImage = new ImageIcon("img/refresh18.gif");
helpImage = new ImageIcon("img/help.gif");
compareImage = new ImageIcon("img/dbs.gif");
setIconImage(new ImageIcon("img/console1.gif").getImage());
/** 设置边框和布局 */
mainFrmBorder = BorderFactory.createEtchedBorder(SystemColor.desktop,
SystemColor.activeCaptionBorder);
contentPane = (JPanel) this.getContentPane();
contentPane.setLayout(mainFrmBorderLayout);
/** 树的生成 */
this.constructTree();
/** 设置按钮 */
//btnUserManagement.setIcon(usermanagerImage);
//btnUserManagement.setToolTipText("用户管理");
btnRefresh.setIcon(refreshImage);
btnRefresh.setToolTipText("刷新");
btnHelp.setIcon(helpImage);
btnHelp.setToolTipText("Help");
btnCompare.setIcon(compareImage);
btnCompare.setToolTipText("Compare");
//System.out.println("4");
jpvbutton = new pv.jfcx.JPVButton("") {
pv.shape.Cube m_cube = new pv.shape.Cube(45, 20, null);
protected Rectangle drawTextAndImage(Graphics g, int x, int y,
int w, int h) {
Rectangle r = super.drawTextAndImage(g, x, y, w, h);
//-----------------
// rotate cube on every paint
m_cube.x = x + 1;
m_cube.y = y + 1;
m_cube.lines = Color.gray;
double speed = 1;
if (isFlat())
speed /= 4.0;
else if (getPressed())
speed = -speed;
m_cube.angleX += speed * 6.0;
m_cube.angleY += speed;
m_cube.angleZ += speed;
m_cube.paint(g);
return r;
}
};
jpvbutton.setOpaque(true);
jpvbutton.setCanKeepPressed(false);
jpvbutton.setCanGetFocus(false);
jpvbutton.setFocusRect((6 & 1) == 0);
jpvbutton.setTextPressed("");
jpvbutton.setText3D(-1, -1);
jpvbutton.setThreeButtonStates(true);
myMenuBar.add(jpvbutton);
jpvbutton.setBounds(0, 0, 25, 25);
/** 设置菜单 */
this.setSize(new Dimension(800, 600));
this.setTitle("DDLExp");
jMenuFile.setText("File");
jMenuFileExit.setText("Exit");
jMenuHelp.setText("Help");
jMenuHelpAbout.setText("About");
// jMenuTool.setText("Tools");
jMenuFile.add(jMenuFileExit);
jMenuHelp.add(jMenuHelpAbout);
myMenuBar.setLayout(new GridLayout(1, 20));
myMenuBar.add(jMenuFile);
myMenuBar.add(jMenuHelp);
// myMenuBar.add(jMenuTool);
JPanel j1 = new JPanel();
myMenuBar.add(j1);
JPanel j2 = new JPanel();
myMenuBar.add(j2);
JPanel j3 = new JPanel();
myMenuBar.add(j3);
JPanel j4 = new JPanel();
myMenuBar.add(j4);
JPanel j5 = new JPanel();
myMenuBar.add(j5);
JPanel j6 = new JPanel();
myMenuBar.add(j6);
JPanel j7 = new JPanel();
myMenuBar.add(j7);
JPanel j8 = new JPanel();
myMenuBar.add(j8);
JPanel j9 = new JPanel();
myMenuBar.add(j9);
JPanel j10 = new JPanel();
myMenuBar.add(j10);
JPanel j11 = new JPanel();
myMenuBar.add(j11);
JPanel j12 = new JPanel();
myMenuBar.add(j12);
JPanel j13 = new JPanel();
myMenuBar.add(j13);
JPanel j14 = new JPanel();
myMenuBar.add(j14);
JPanel j15 = new JPanel();
//jMenuChange.add(jMenuNxtChange);
//jMenuNxtChange.add(jMenuItem1);
this.setJMenuBar(myMenuBar);
//System.out.println("6");
/** 将各种对象添加到主窗口中 */
jToolBar.setOrientation(JToolBar.VERTICAL);
jToolBar.add(btnRefresh);
jToolBar.add(btnHelp);
jToolBar.add(btnCompare);
jToolBar.setBackground(Color.lightGray);
contentPane.add(jToolBar, BorderLayout.WEST);
statusBar.setOrientation(JToolBar.HORIZONTAL);
statusBar.setPreferredSize(new Dimension(40, 25));
statusBar.add(blankHeader);
statusBar.add(statusHeader);
statusBar.add(statusInfo);
contentPane.add(statusBar, BorderLayout.SOUTH);
contentPane.add(splitPane, BorderLayout.CENTER);
contentPane.setBackground(Color.lightGray);
contentPane.setBorder(mainFrmBorder);
splitPane.setBackground(Color.lightGray);
// 设置左面树面板的边框
splitPane.setDividerSize(5);
splitPane.setEnabled(true);
//设置左左面板的边框
splitPaneTop.setDividerSize(3);
splitPaneTop.setEnabled(true);
//设置右右面板的边框
splitPaneBottom.setDividerSize(3);
splitPaneBottom.setEnabled(true);
treeSource.setBorderStyle(pv.util.PVBorder.OUTDENT + 4);
treeDest.setBorderStyle(pv.util.PVBorder.OUTDENT + 4);
treeCompared.setBorderStyle(pv.util.PVBorder.OUTDENT + 4);
//分裂框中间条的位置
splitPane.setDividerLocation(250);
splitPaneTop.setDividerLocation(480);
splitPaneBottom.setDividerLocation(300);
//加载左面树面板
splitPaneTop.add(treeSource, JSplitPane.LEFT);
splitPaneTop.add(treeDest, JSplitPane.RIGHT);
//加载右面树面板
splitPaneBottom.add(treeCompared, JSplitPane.LEFT);
splitPaneBottom.add(jScrollPane, JSplitPane.RIGHT);
jScrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
jScrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
jScrollPane.setViewportBorder(BorderFactory.createEtchedBorder());
splitPane.setOrientation(javax.swing.JSplitPane.VERTICAL_SPLIT);
splitPane.add(splitPaneTop, JSplitPane.TOP);
splitPane.add(splitPaneBottom, JSplitPane.BOTTOM);
//System.out.println("7");
/** 添加各类事件监听器 */
// 添加树的响应事件和鼠标事件
//pv.jfcx.PVTreeListener ls = TreeEventProcess.buildListener();
//treeView.addAllListeners(ls);
//tree.addMouseListener(TreeEventProcess.buildMouseListener());
//添加其它监听事件
addListner();
//System.out.println("8");
}
/**
* 退出
*
* @param e
*/
public void jMenuFileExit_actionPerformed(ActionEvent e) {
setVisible(false);
instance=null;
MainFrame frame=MainFrame.getInstance();
frame.setVisible(true);
// dispose();
}
/**
* 弹出about对话框
*
* @param e
*/
public void jMenuHelpAbout_actionPerformed(ActionEvent e) {
MainFrameAboutBox dlg = new MainFrameAboutBox(this);
Dimension dlgSize = dlg.getPreferredSize();
Dimension frmSize = getSize();
Point loc = getLocation();
dlg.setLocation((frmSize.width - dlgSize.width) / 2 + loc.x,
(frmSize.height - dlgSize.height) / 2 + loc.y);
dlg.setModal(true);
dlg.pack();
dlg.show();
}
//Overridden so we can exit when window is closed
protected void processWindowEvent(WindowEvent e) {
super.processWindowEvent(e);
if (e.getID() == WindowEvent.WINDOW_CLOSING) {
jMenuFileExit_actionPerformed(null);
}
if (e.getID() == WindowEvent.WINDOW_CLOSED) {
jMenuFileExit_actionPerformed(null);
}
}
public void actionPerformed(ActionEvent e) {
if (e.getSource() == m_run)
jpvbutton.repaint();
}
/**
* 把窗体上添加监听器的操作集中起来
*/
private void addListner() {
jMenuFileExit.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
jMenuFileExit_actionPerformed(e);
}
});
jMenuHelpAbout.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
jMenuHelpAbout_actionPerformed(e);
}
});
btnRefresh.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(ActionEvent e) {
refreshButtonCall();
}
});
btnHelp.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(ActionEvent e) {
//DBJFrame.main(null);
}
});
btnCompare.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(ActionEvent e) {
compareDB();
}
});
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -