⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dbview.java

📁 J2EE eclipse 下开发数据库一个插件
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
/******************************************************************************* * Copyright (c) 2000, 2003 IBM Corporation and others. * All rights reserved. This program and the accompanying materials  * are made available under the terms of the Common Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/cpl-v10.html *  * Contributors: *     IBM Corporation - initial API and implementation *******************************************************************************/package com.tanghan.plugin.dbviews;import java.util.ArrayList;import java.util.List;import java.util.ResourceBundle;import org.eclipse.core.resources.ResourcesPlugin;import org.eclipse.core.runtime.IStatus;import org.eclipse.core.runtime.Status;import org.eclipse.jface.action.Action;import org.eclipse.jface.action.IMenuListener;import org.eclipse.jface.action.IMenuManager;import org.eclipse.jface.action.IToolBarManager;import org.eclipse.jface.action.MenuManager;import org.eclipse.jface.action.Separator;import org.eclipse.jface.dialogs.ErrorDialog;import org.eclipse.jface.dialogs.MessageDialog;import org.eclipse.jface.util.Assert;import org.eclipse.jface.viewers.DoubleClickEvent;import org.eclipse.jface.viewers.IDoubleClickListener;import org.eclipse.jface.viewers.ISelection;import org.eclipse.jface.viewers.ISelectionChangedListener;import org.eclipse.jface.viewers.IStructuredSelection;import org.eclipse.jface.viewers.ITreeContentProvider;import org.eclipse.jface.viewers.SelectionChangedEvent;import org.eclipse.jface.viewers.TreeViewer;import org.eclipse.jface.viewers.ViewerSorter;import org.eclipse.swt.SWT;import org.eclipse.swt.widgets.Composite;import org.eclipse.swt.widgets.Menu;import org.eclipse.ui.IActionBars;import org.eclipse.ui.IPageLayout;import org.eclipse.ui.ISharedImages;import org.eclipse.ui.IViewPart;import org.eclipse.ui.PartInitException;import org.eclipse.ui.PlatformUI;import org.eclipse.ui.part.DrillDownAdapter;import org.eclipse.ui.part.ViewPart;import org.eclipse.ui.views.properties.PropertySheet;import com.tanghan.db.Field;import com.tanghan.db.Table;import com.tanghan.db.logic.AbstractDealDatabaseInfo;import com.tanghan.db.util.DBConnection;import com.tanghan.db.util.Driver;import com.tanghan.plugin.IPublicImages;import com.tanghan.plugin.ITanghanConstants;import com.tanghan.plugin.TanghanClassLoader;import com.tanghan.plugin.TanghanPlugin;import com.tanghan.plugin.dataSave.IDBDealDataSave;import com.tanghan.plugin.dbviews.dialog.ConnectDialog;import com.tanghan.plugin.dbviews.dialog.ConnectionInfoDialog;import com.tanghan.plugin.dbviews.dialog.DriverInfoDialog;import com.tanghan.plugin.dbviews.elements.TreeObject;import com.tanghan.plugin.dbviews.elements.TreeParent;import com.tanghan.plugin.dbviews.elements.ViewContentProvider;import com.tanghan.plugin.dbviews.elements.ViewLabelProvider;import com.tanghan.util.DealString;import com.tanghan.util.TanghanException;/** * This sample class demonstrates how to plug-in a new * workbench view. The view shows data obtained from the * model. The sample creates a dummy model on the fly, * but a real implementation would connect to the model * available either in this or another plug-in (e.g. the workspace). * The view is connected to the model using a content provider. * <p> * The view uses a label provider to define how model * objects should be presented in the view. Each * view can present the same model objects using * different labels and icons, if needed. Alternatively, * a single label provider can be shared between views * in order to ensure that objects of the same type are * presented in the same way everywhere. * <p> */public class DBView extends ViewPart {//	TanghanPlugin.getDefault().getLog().log(new Status(IStatus.INFO, plugin.toString(),IStatus.OK, "测试",null));	/**当前使用的图形生成类*/	private static IPublicImages pubImages = TanghanPlugin.getDefault().getPublicImages();	/**处理存储数据*/	private static IDBDealDataSave dealDataSave = TanghanPlugin.getDefault().getDealDataSave();		private static TanghanClassLoader tanghanClassLoader = TanghanPlugin.getDefault().getTanghanClassLoader();		/**当前视图*/	private TreeViewer viewer;	/**下来菜单适配器*/	private DrillDownAdapter drillDownAdapter;	/**添加新的数据库连接的动作*/	private Action createConnAction;	/**修改数据库连接信息的动作.*/	private Action editConnInfoAction;	/**删除数据库连接信息的动作.*/	private Action delConnInfoAction;	/**TreeViewer的双击时间*/	private Action doubleClickAction;	/**连接数据库的事件*/	private Action connectDBAction;	/**断开数据库的事件*/	private Action disconnectDBAction;		/**添加驱动的事件*/	private Action addDriverAction;		/**添加驱动的事件*/	private Action editDriverAction;		/**添加驱动的事件*/	private Action deleteDriverAction;	/**分割*///	SashForm  fullForm ;	/**显示表数据的事件*/	private Action viewDataAction;		/**该视图对应的插件实例*/	//private static TanghanPlugin plugin = TanghanPlugin.getDefault();	/**资源文件*/	private static ResourceBundle res = TanghanPlugin.getDefault().getResourceBundle();		/***/	protected Composite parent = null;	/**被选择的对象*/	protected TreeObject selectObject = null;	/**排序*/	class NameSorter extends ViewerSorter {	}	/**	 * The constructor.	 */	public DBView() {	}	/**	 * This is a callback that will allow us	 * to create the viewer and initialize it.	 */	public void createPartControl(Composite parent) {		this.parent = parent;		viewer = new TreeViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL);		viewer.addSelectionChangedListener(new ISelectionChangedListener()		{			public void selectionChanged(SelectionChangedEvent evt)			{				IViewPart part = getSite().getPage().findView(IPageLayout.ID_PROP_SHEET);				if (part instanceof PropertySheet){					((PropertySheet) part).selectionChanged(DBView.this, evt.getSelection());				}			}		});						drillDownAdapter = new DrillDownAdapter(viewer);		viewer.setContentProvider(new ViewContentProvider());		viewer.setLabelProvider(new ViewLabelProvider());//		viewer.setSorter(new NameSorter());		viewer.setInput(ResourcesPlugin.getWorkspace());		makeDriversActions();		makeConnectionsActions();		hookContextMenu();		hookViewsListnerAction();		contributeToActionBars();		initData();	}	/**初始化数据*/	private void initData(){		//初始话数据库连接		List ls = dealDataSave.getDBConnectionInfos();		for (int i = 0;i<ls.size(); i++){			DBConnection dbConn = (DBConnection)ls.get(i);			addNewDatabase(dbConn);		}		//初始化驱动		ls = dealDataSave.getJDBCDrivers();		for (int i = 0;i<ls.size(); i++){			Driver driver = (Driver)ls.get(i);			loadJDBCDriver(driver);			addNewDriver(driver);		}	}	/**	 * 创建右键菜单	 */	private void hookContextMenu() {		MenuManager menuMgr = new MenuManager("#PopupMenu");		menuMgr.setRemoveAllWhenShown(true);		menuMgr.addMenuListener(new IMenuListener() {			public void menuAboutToShow(IMenuManager manager) {				DBView.this.fillContextMenu(manager);			}		});		Menu menu = menuMgr.createContextMenu(viewer.getControl());		viewer.getControl().setMenu(menu);		getSite().registerContextMenu(menuMgr, viewer);	}	/**	 * 添加Action Bar	 */	private void contributeToActionBars() {		IActionBars bars = getViewSite().getActionBars();		fillLocalPullDown(bars.getMenuManager());		fillLocalToolBar(bars.getToolBarManager());	}	/** 把Action添加到当前的下拉菜单	 * @param manager	 */	private void fillLocalPullDown(IMenuManager manager) {//		manager.add(createConnAction);//		manager.add(new Separator());//		manager.add(editConnInfoAction);	}	/** 	 * 把Action添加到当前的右键菜单中,并初始化当前菜单	 * @param manager	 */	private void fillContextMenu(IMenuManager manager) {		if(selectObject!=null){			if(selectObject.getType()<TreeObject.DRIVERS_NOTE_ITEM){				//添加有关连接的菜单				fillConnectionsMenu(manager);			}else{				//添加有关驱动的菜单				fillDriversMenu(manager);			}		}		manager.add(new Separator());				drillDownAdapter.addNavigationActions(manager);		manager.add(new Separator("Additions"));	}	/**显示驱动程序的Menu*/	private void fillDriversMenu(IMenuManager manager){				if(selectObject!=null){			switch(selectObject.getType()){				case TreeObject.DRIVERS_NOTE_ITEM:					editDriverAction.setEnabled(false);					deleteDriverAction.setEnabled(false);					createConnAction.setEnabled(false);					break;				case TreeObject.DRIVER_NOTE_ITEM:					editDriverAction.setEnabled(true);					deleteDriverAction.setEnabled(true);					createConnAction.setEnabled(true);					break;				default:					editDriverAction.setEnabled(false);					deleteDriverAction.setEnabled(false);					createConnAction.setEnabled(false);					break;			}		}		manager.add(addDriverAction);		manager.add(editDriverAction);		manager.add(deleteDriverAction);		manager.add(new Separator());		manager.add(createConnAction);	}	/**显示数据库连接程序的Menu*/	private void fillConnectionsMenu(IMenuManager manager){		if(selectObject!=null){			switch(selectObject.getType()){				case TreeObject.CONNECTION_ITEM:					editConnInfoAction.setEnabled(true);					viewDataAction.setEnabled(false);					DBConnection dbConn = (DBConnection)selectObject.getObject();					Assert.isNotNull(dbConn);					if(dbConn.isConnected()){						connectDBAction.setEnabled(false);						disconnectDBAction.setEnabled(true);						delConnInfoAction.setEnabled(false);					}else{						connectDBAction.setEnabled(true);						disconnectDBAction.setEnabled(false);						delConnInfoAction.setEnabled(true);					}					break;				case TreeObject.TABLE_ITEM:					viewDataAction.setEnabled(true);					editConnInfoAction.setEnabled(false);					connectDBAction.setEnabled(false);					disconnectDBAction.setEnabled(false);					delConnInfoAction.setEnabled(false);					break;				default:					viewDataAction.setEnabled(false);					editConnInfoAction.setEnabled(false);					connectDBAction.setEnabled(false);					disconnectDBAction.setEnabled(false);					delConnInfoAction.setEnabled(false);					break;			}		}		manager.add(createConnAction);		manager.add(editConnInfoAction);		manager.add(delConnInfoAction);				manager.add(new Separator());		manager.add(connectDBAction);		manager.add(disconnectDBAction);		manager.add(new Separator());		manager.add(viewDataAction);	}		/**	 * 初始话当前视图的ToolBar	 * @param manager	 */	private void fillLocalToolBar(IToolBarManager manager) {//		manager.add(createConnAction);//		manager.add(editConnInfoAction);//		manager.add(new Separator());		drillDownAdapter.addNavigationActions(manager);	}	/**	 * 创建有关驱动的相关Action	 */	private void makeDriversActions() {		//TO_DO 添加有关驱动的动作 complete\		//添加驱动的动作。		addDriverAction = new Action() {			public void run() {				DriverInfoDialog dlg = new DriverInfoDialog(parent.getShell());				Driver driver = dlg.open(null);				if(driver!=null){					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);						}					}				}			

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -