📄 dbview.java
字号:
loadJDBCDriver(driver); addNewDriver(dealDataSave.addJDBCDriver(driver)); viewer.refresh(getDataRoot(TreeObject.DRIVERS_NOTE_ITEM)); } } }; addDriverAction.setText(res.getString("Tree.View.Action.NewDriver.Name")); addDriverAction.setToolTipText(res.getString("Tree.View.Action.NewDriver.Tip")); addDriverAction.setImageDescriptor(PlatformUI.getWorkbench().getSharedImages(). getImageDescriptor(ISharedImages.IMG_OBJS_INFO_TSK)); //修改驱动的动作。 editDriverAction = new Action() { public void run() { if(selectObject!=null&&selectObject.getObject()!=null){ if(selectObject.getObject() instanceof Driver){ DriverInfoDialog dlg = new DriverInfoDialog(parent.getShell()); Driver driver1 = (Driver)selectObject.getObject(); Driver driver = dlg.open(driver1);// DBConnection dbConn = connDia.open(dbConn1); if(driver!=null){ driver1.setDriverName(driver.getDriverName()); if(!DealString.equals(driver1.getJarFileName(),driver.getJarFileName())){ driver1.setJarFileName(driver.getJarFileName()); loadJDBCDriver(driver1); } driver1.setDriverClass(driver.getDriverClass()); driver1.setURLPrefix(driver.getURLPrefix()); selectObject.setName(driver.getDriverName()); viewer.refresh(selectObject); dealDataSave.updateJDBCDriver(driver1); } } } } }; editDriverAction.setText(res.getString("Tree.View.Action.EditDriver.Name")); editDriverAction.setToolTipText(res.getString("Tree.View.Action.EditDriver.Tip")); editDriverAction.setImageDescriptor(PlatformUI.getWorkbench().getSharedImages(). getImageDescriptor(ISharedImages.IMG_OBJS_INFO_TSK)); //删除驱动的动作。 deleteDriverAction = new Action() { public void run() { if(selectObject!=null&&selectObject.getObject()!=null){ if(selectObject.getObject() instanceof Driver){ Driver driver = (Driver)selectObject.getObject(); if(driver!=null){ //TO_DO 添加删除数据库连接的事件 if(MessageDialog.openConfirm(parent.getShell(),res.getString("TanghanPlugin.Message.ifDeleteTitle"),res.getString("TanghanPlugin.Message.ifDelete"))){ removeDatabase(selectObject); dealDataSave.removeJDBCDriver(driver); viewer.refresh(); } } } } } }; deleteDriverAction.setText(res.getString("Tree.View.Action.DeleteDriver.Name")); deleteDriverAction.setToolTipText(res.getString("Tree.View.Action.DeleteDriver.Tip")); deleteDriverAction.setImageDescriptor(PlatformUI.getWorkbench().getSharedImages(). getImageDescriptor(ISharedImages.IMG_OBJS_INFO_TSK)); } /** * 创建有关数据库连接的Action */ private void makeConnectionsActions() { aboutDialog = new Action() { public void run() { (new AboutDialog(parent.getShell())).open(); } }; aboutDialog.setText(res.getString("Tree.View.Action.About.Name")); aboutDialog.setToolTipText(res.getString("Tree.View.Action.About.Tip")); aboutDialog.setImageDescriptor(PlatformUI.getWorkbench().getSharedImages(). getImageDescriptor(ISharedImages.IMG_OBJS_INFO_TSK)); //TO DO 添加新的数据库的动作 complete createConnAction = new Action() { public void run() { ConnectionInfoDialog connDia = new ConnectionInfoDialog(parent.getShell()); DBConnection dbConn = null; if(selectObject!=null&&selectObject.getType()==TreeObject.DRIVER_NOTE_ITEM&&selectObject.getObject()!=null){ Driver driver = (Driver) selectObject.getObject(); dbConn = new DBConnection(); dbConn.setJdbcDriverName(driver.getDriverName()); dbConn.setJdbcDriverClass(driver.getDriverClass()); dbConn.setDatabaseURL(driver.getURLPrefix()); } dbConn = connDia.open(dbConn,getDriverList()); if(dbConn!=null){ addNewDatabase(dealDataSave.addDBConnectionInfo(dbConn)); } } }; createConnAction.setText(res.getString("Tree.View.Action.NewConn.Name")); createConnAction.setToolTipText(res.getString("Tree.View.Action.NewConn.Tip")); createConnAction.setImageDescriptor(PlatformUI.getWorkbench().getSharedImages(). getImageDescriptor(ISharedImages.IMG_OBJS_INFO_TSK)); //修改数据库信息的事件 editConnInfoAction = new Action() { public void run() { if(selectObject!=null&&selectObject.getObject()!=null){ if(selectObject.getObject() instanceof DBConnection){ ConnectionInfoDialog connDia = new ConnectionInfoDialog(parent.getShell()); DBConnection dbConn1 = (DBConnection)selectObject.getObject(); DBConnection dbConn = connDia.open(dbConn1,getDriverList()); if(dbConn!=null){ dbConn1.setConnectionName(dbConn.getConnectionName()); dbConn1.setJdbcDriverClass(dbConn.getJdbcDriverClass()); dbConn1.setJdbcDriverName(dbConn.getJdbcDriverName()); dbConn1.setDatabaseURL(dbConn.getDatabaseURL()); dbConn1.setPassword(dbConn.getPassword()); dbConn1.setUserName(dbConn.getUserName()); selectObject.setName(dbConn.getConnectionName()); viewer.refresh(selectObject); dealDataSave.updateDBConnectionInfo(dbConn1); } } } } }; editConnInfoAction.setText(res.getString("Tree.View.Action.EditConn.Name")); editConnInfoAction.setToolTipText(res.getString("Tree.View.Action.EditConn.Tip")); editConnInfoAction.setImageDescriptor(PlatformUI.getWorkbench().getSharedImages(). getImageDescriptor(ISharedImages.IMG_OBJS_TASK_TSK)); //删除数据库连接的事件 delConnInfoAction = new Action() { public void run() { if(selectObject!=null&&selectObject.getObject()!=null){ if(selectObject.getObject() instanceof DBConnection){ DBConnection dbConn = (DBConnection)selectObject.getObject(); if(dbConn!=null){ //TO_DO 添加删除数据库连接的事件 if(MessageDialog.openConfirm(parent.getShell(),res.getString("TanghanPlugin.Message.ifDeleteTitle"),res.getString("TanghanPlugin.Message.ifDelete"))){ removeDatabase(selectObject); dealDataSave.removeDBConnectionInfo(dbConn); viewer.refresh(); } } } } } }; delConnInfoAction.setText(res.getString("Tree.View.Action.DeleteConn.Name")); delConnInfoAction.setToolTipText(res.getString("Tree.View.Action.DeleteConn.Tip")); delConnInfoAction.setImageDescriptor(PlatformUI.getWorkbench().getSharedImages(). getImageDescriptor(ISharedImages.IMG_OBJS_TASK_TSK)); //连接数据库的事件 connectDBAction = new Action() { public void run() { if(selectObject!=null&&selectObject.getObject()!=null){ if(selectObject.getObject() instanceof DBConnection){ addDatabaseTables((TreeParent)selectObject); } } } }; connectDBAction.setText(res.getString("Tree.View.Action.ConnectDatabase")); connectDBAction.setToolTipText(res.getString("Tree.View.Action.ConnectDatabase")); //connectDBAction.setImageDescriptor() connectDBAction.setImageDescriptor(PlatformUI.getWorkbench().getSharedImages(). getImageDescriptor(ISharedImages.IMG_OBJS_TASK_TSK)); //断开数据库连接的动作 disconnectDBAction = new Action() { public void run() { if(selectObject!=null&&selectObject.getObject()!=null){ if(selectObject.getObject() instanceof DBConnection){ TreeParent trPa = (TreeParent)selectObject; TreeObject[] trObjs = trPa.getChildren(); for(int i=0;i<trObjs.length;i++){ trPa.removeChild(trObjs[i]); } ((DBConnection)selectObject.getObject()).setConnected(false); viewer.refresh(selectObject); } } } }; disconnectDBAction.setText(res.getString("Tree.View.Action.DisconnectDatabase")); disconnectDBAction.setToolTipText(res.getString("Tree.View.Action.DisconnectDatabase")); disconnectDBAction.setImageDescriptor(PlatformUI.getWorkbench().getSharedImages(). getImageDescriptor(ISharedImages.IMG_OBJS_TASK_TSK)); viewDataAction = new Action(){ public void run() { //viewData ISelection selection = viewer.getSelection(); Object obj = ((IStructuredSelection)selection).getFirstElement(); if(obj instanceof TreeParent){ TreeParent treObj = (TreeParent)obj; if(treObj.getType()== TreeObject.TABLE_ITEM){ TreeParent conObj = treObj.getParent().getParent(); viewData((DBConnection)conObj.getObject(),((Table)treObj.getObject()).getTableName()); } } } }; viewDataAction.setText(res.getString("Tree.View.Action.ViewData")); viewDataAction.setToolTipText(res.getString("Tree.View.Action.ViewData")); viewDataAction.setImageDescriptor(PlatformUI.getWorkbench().getSharedImages(). getImageDescriptor(ISharedImages.IMG_OBJS_TASK_TSK)); //鼠标双击事件 doubleClickAction = new Action() { public void run() { // TO DO 修改鼠标双击事件 complete ISelection selection = viewer.getSelection(); Object obj = ((IStructuredSelection)selection).getFirstElement(); if(obj instanceof TreeParent){ TreeParent treObj = (TreeParent)obj; switch(treObj.getType()){ case TreeObject.TABLE_ITEM: if(treObj.getChildren().length<1){ addTableFields(treObj); } break; default: //showMessage("修改"+obj.toString()+"数据库连接信息"); break; } } } }; } /**添加数据*/ private void hookViewsListnerAction() { /**为视图添加双击时间*/ viewer.addDoubleClickListener(new IDoubleClickListener() { public void doubleClick(DoubleClickEvent event) { doubleClickAction.run(); //event. } }); /**视图被选项转换是触发的事件*/ viewer.addSelectionChangedListener(new ISelectionChangedListener(){ public void selectionChanged(SelectionChangedEvent event){ ISelection selection = viewer.getSelection(); Object obj = ((IStructuredSelection)selection).getFirstElement(); if(obj instanceof TreeObject){ selectObject = (TreeObject)obj; if(selectObject.getType()==TreeObject.CONNECTION_ITEM){ editConnInfoAction.setEnabled(true); DBConnection dbConn = (DBConnection)selectObject.getObject(); if(dbConn!=null&&dbConn.isConnected()){ DBDataView ppDataView = (DBDataView)getSite().getPage().findView(ITanghanConstants.DB_DATAS_VIEW_ID); if(ppDataView!=null){ ppDataView.changeDBConnection(dbConn); } } }else{ editConnInfoAction.setEnabled(false); } }else{ selectObject = null; } } }); } private void showMessage(String message) { MessageDialog.openInformation( viewer.getControl().getShell(), res.getString("DatabaseView.Title"), message); } /** * Passing the focus request to the viewer's control. */ public void setFocus() { //this.fullForm.getParent().getC viewer.getControl().setFocus(); } /**删除数据联结*/ private void removeDatabase(TreeObject obj){ TreeParent parent = obj.getParent(); obj.setParent(null); parent.removeChild(obj); } /**添加数据库节点*/ private void addNewDatabase(DBConnection dbConn){ TreeParent root = getDataRoot(TreeObject.DATABASE_NOTE_ITEM); if(root==null){ return; } TreeParent dbItem = new TreeParent(dbConn.getConnectionName(),dbConn,TreeObject.CONNECTION_ITEM); dbItem.setObject(dbConn); root.addChild(dbItem); viewer.refresh(root); } /**check JDBC Drivers*/ private void loadJDBCDriver(Driver driver){ tanghanClassLoader.loadJarFile(driver.getJarFileName()); try{ Object cl = Class.forName(driver.getDriverClass(),true, tanghanClassLoader.getClassLoader()).newInstance(); if(cl instanceof java.sql.Driver){ tanghanClassLoader.loadClass(driver.getDriverClass()); driver.setActive(true); }else{ driver.setActive(false); } }catch(Exception ex){ driver.setActive(false); } } /**添加数据库节点*/ private void addNewDriver(Driver driver){ TreeParent root = getDataRoot(TreeObject.DRIVERS_NOTE_ITEM); if(root==null){ return; } TreeParent driverItem = new TreeParent(driver.getDriverName(),driver,TreeObject.DRIVER_NOTE_ITEM); driverItem.setObject(driver); root.addChild(driverItem); viewer.refresh(root); } /**为数据库添加表节点*/ private void addDatabaseTables(TreeParent parent){ DBConnection dbConn = (DBConnection)parent.getObject(); List tableList = null; try{ AbstractDealDatabaseInfo dealDB = AbstractDealDatabaseInfo.getInstance(ITanghanConstants.DEALDATABASEINFO,dbConn); List ls = dealDB.getSchemas(); String selectSchema = null; if(ls!=null&&ls.size()>0){ ConnectDialog connDia = new ConnectDialog(this.parent.getShell()); selectSchema = connDia.open(ls); } dbConn.setDefaultSchema(selectSchema); tableList = dealDB.getTableList(); }catch(TanghanException ex){ ErrorDialog.openError(this.parent.getShell(),res.getString("TanghanPlugin.Run.Error"),res.getString("TanghanPlugin.Error.DB.Connected.Error"), new Status(IStatus.ERROR,ITanghanConstants.PLUGIN_ID,IStatus.OK,ex.getCauseException().getMessage(),ex.getCauseException())); return; }catch(Exception ex){ ErrorDialog.openError(this.parent.getShell(),res.getString("TanghanPlugin.Run.Error"),res.getString("TanghanPlugin.Error.DB.Connected.Error"), new Status(IStatus.ERROR,ITanghanConstants.PLUGIN_ID,IStatus.OK,ex.getMessage(),ex)); return; } dbConn.setConnected(true); TreeParent tables = new TreeParent(res.getString("Tree.View.Table"),TreeObject.TABLE_NOTE_ITEM); TreeParent table = null; for(int i = 0;i<tableList.size();i++){ Table tbInfo= (Table) tableList.get(i); table = new TreeParent(tbInfo.getTableName(),TreeObject.TABLE_ITEM); table.setObject(tbInfo); tables.addChild(table); } parent.addChild(tables); viewer.refresh(parent); } /**为表添加该表的字段节点*/ private void addTableFields(TreeParent parent){ Table table = (Table)parent.getObject(); DBConnection dbConn = (DBConnection)parent.getParent().getParent().getObject(); AbstractDealDatabaseInfo dealDB = AbstractDealDatabaseInfo.getInstance(ITanghanConstants.DEALDATABASEINFO,dbConn); List fieldList = dealDB.getTableField(table.getTableName()); table.setFieldList(fieldList); TreeParent field = null; for(int i = 0;i<fieldList.size();i++){ Field fdInfo= (Field) fieldList.get(i); field = new TreeParent(fdInfo.getFieldName(),TreeObject.TABLEFIELD_ITEM); field.setObject(fdInfo); parent.addChild(field); } viewer.refresh(parent); } /**查看表格数据*/ private void viewData(DBConnection connInfo,String tableName){ try{ DBDataView ppDataView = (DBDataView)TanghanPlugin.getDefault().getWorkbench().getActiveWorkbenchWindow().getActivePage().showView("com.tanghan.plugin.dbviews.DBDataView"); Assert.isNotNull(ppDataView); ppDataView.changeTableData(connInfo,tableName,null); }catch(PartInitException ex){ } } /** * 得到数据的相应根目录 * */ private TreeParent getDataRoot(int type){ ITreeContentProvider content = (ITreeContentProvider)viewer.getContentProvider(); Object[] objs = content.getElements(ResourcesPlugin.getWorkspace()); TreeParent root = null; for(int i = 0;i<objs.length;i++){ TreeParent tp = (TreeParent)objs[i]; if(tp.getType()==type){ root = tp; break; } } return root; } /**得到驱动程序的列表*/ private List getDriverList(){ TreeParent parent = getDataRoot(TreeObject.DRIVERS_NOTE_ITEM); Object[] objs = parent.getChildren(); ArrayList ls = new ArrayList(); for(int i = 0;i<objs.length;i++){ TreeObject tp = (TreeObject)objs[i]; if(tp.getObject()!=null&&(tp.getObject() instanceof Driver)){ ls.add(tp.getObject()); } } return ls; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -