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

📄 dbview.java

📁 eclipse的hibernate插件,支持eclipse2.*版本
💻 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.HashMap;import java.util.List;import java.util.Map;import java.util.ResourceBundle;import org.apache.log4j.Logger;import org.eclipse.core.resources.IMarker;import org.eclipse.core.resources.IResource;import org.eclipse.core.resources.ResourcesPlugin;import org.eclipse.core.runtime.IStatus;import org.eclipse.core.runtime.Status;import org.eclipse.jdt.internal.ui.JavaPlugin;import org.eclipse.jdt.internal.ui.util.PixelConverter;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.jface.wizard.WizardDialog;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.IWorkbenchWizard;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.AboutDialog;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.plugin.dbviews.wizard.NewHBMFilesWizard;import com.tanghan.util.DealString;import com.tanghan.util.Log;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 {	private static Logger log = Log.getInstanse().getLogger(DBView.class);	//	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;	/**关于的相关dialog*/	private Action aboutDialog;	/**修改数据库连接信息的动作.*/	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;	/**根据数据库文件生成HBM文件的动作*/	private Action genHBMAction;	/**分割*///	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);				//IViewPart part1 = getSite().getPage().findView(IPageLayout.ID_TASK_LIST);				//log.debug(part1.getClass().getName());				/**测试				newTask();				*/				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();		makeHBMActions();		hookContextMenu();		hookViewsListnerAction();		contributeToActionBars();		initData();	}	private void newTask(){		try{			IResource resource = null;			if (resource == null) {				resource = ResourcesPlugin.getWorkspace().getRoot();			}				IMarker marker = resource.createMarker(IMarker.TASK);			Map initialAttrs = new HashMap(11);			initialAttrs.put(IMarker.MESSAGE, "Test");						// getInitialAttributes();			if (initialAttrs != null) {				marker.setAttributes(initialAttrs);			}			}catch(Exception ex){			log.debug(ex.getMessage(),ex);		}	}	/**初始化数据*/	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);					genHBMAction.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);					genHBMAction.setEnabled(true);					break;				default:					viewDataAction.setEnabled(false);					editConnInfoAction.setEnabled(false);					connectDBAction.setEnabled(false);					disconnectDBAction.setEnabled(false);					delConnInfoAction.setEnabled(false);					genHBMAction.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);		manager.add(new Separator());		manager.add(genHBMAction);	}	 	/**	 * 初始话当前视图的ToolBar	 * @param manager	 */	private void fillLocalToolBar(IToolBarManager manager) {//		manager.add(createConnAction);//		manager.add(editConnInfoAction);		manager.add(aboutDialog);		manager.add(new Separator());		drillDownAdapter.addNavigationActions(manager);	}	/**	 * 创建有关Hibernate的相关Action	 */	private void makeHBMActions() {		//根据数据库生成Hibernate配置文件的时间		genHBMAction = new Action() {			public void run() {				if(selectObject!=null&&selectObject.getObject()!=null){					if(selectObject!=null&&selectObject.getObject()!=null){						if(((TreeParent)selectObject).getChildren().length<1){							addTableFields((TreeParent)selectObject);						}						//GenerateHBMFileDiaLog dialog = new GenerateHBMFileDiaLog(parent.getShell(),(Table)selectObject.getObject());						//dialog.open();						NewHBMFilesWizard wizard = new NewHBMFilesWizard((Table)selectObject.getObject());						if (wizard instanceof IWorkbenchWizard) {							((IWorkbenchWizard)wizard).init(getSite().getWorkbenchWindow().getWorkbench(), null);						}						WizardDialog dialog= new WizardDialog(parent.getShell(), wizard);						PixelConverter converter= new PixelConverter(JavaPlugin.getActiveWorkbenchShell());									dialog.setMinimumPageSize(converter.convertWidthInCharsToPixels(70), converter.convertHeightInCharsToPixels(20));						dialog.create();						dialog.open();											}				}			}		};		genHBMAction.setText(res.getString("TP.Hibernate.Menu.DDL2HBM.Label"));		genHBMAction.setToolTipText(res.getString("TP.Hibernate.Menu.DDL2HBM.Label"));		genHBMAction.setImageDescriptor(PlatformUI.getWorkbench().getSharedImages().			getImageDescriptor(ISharedImages.IMG_OBJS_INFO_TSK));	}	/**	 * 创建有关驱动的相关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){

⌨️ 快捷键说明

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