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

📄 hibernatecfeditor.java

📁 eclipse的hibernate插件,支持eclipse2.*版本
💻 JAVA
字号:
package com.tanghan.plugin.hibernate.editor;import java.io.ByteArrayInputStream;import java.io.IOException;import java.io.InputStream;import java.io.UnsupportedEncodingException;import org.apache.log4j.Logger;import org.eclipse.core.resources.IFile;import org.eclipse.core.resources.IProject;import org.eclipse.core.resources.IResource;import org.eclipse.core.resources.IResourceChangeEvent;import org.eclipse.core.resources.IResourceChangeListener;import org.eclipse.core.resources.IWorkspace;import org.eclipse.core.runtime.CoreException;import org.eclipse.core.runtime.IProgressMonitor;import org.eclipse.jface.text.IDocument;import org.eclipse.jface.util.IPropertyChangeListener;import org.eclipse.jface.util.PropertyChangeEvent;import org.eclipse.pde.core.IEditable;import org.eclipse.pde.core.IModel;import org.eclipse.pde.internal.core.IModelProvider;import org.eclipse.pde.internal.ui.editor.IPDEEditorPage;import org.eclipse.pde.internal.ui.editor.PDEMultiPageXMLEditor;import com.tanghan.plugin.TanghanPlugin;import com.tanghan.plugin.hibernate.editor.formpages.HibernateCFFormPage;import com.tanghan.plugin.hibernate.editor.formpages.HibernateCFSourcePage;import com.tanghan.util.Log;/** * 用户修改Hibernate的值对象配置文件的编辑器 * @author Jerry Tang * @version v0.1.0 * @createdate 2003-3-25 * @copyright  (C) 2003 Tanghan工作组 *  * @see PDEMultiPageXMLEditor */public class HibernateCFEditor extends PDEMultiPageXMLEditor  			implements IPropertyChangeListener, IResourceChangeListener  {	private static Logger log = Log.getInstanse().getLogger(HibernateCFEditor.class);		private IProject project;	/**Model 提供商*/	private IModelProvider modelProvider;	public static final String SOURCE_PAGE = "SourcePage";	public static final String HIBERNATE_CONFIGFILE_PAGE = "HibernateConfigFilePage";	public static final String HIBERNATE_CONFIGFILE_TITLE = "Hibernate Config File";			public HibernateCFEditor() {		super();				TanghanPlugin.getDefault().getPreferenceStore().addPropertyChangeListener(this);		IWorkspace workspace = TanghanPlugin.getWorkspace();		workspace.addResourceChangeListener(			this,			IResourceChangeEvent.PRE_CLOSE);	}			/* (non-Javadoc)	 * @see org.eclipse.pde.internal.ui.editor.PDEMultiPageEditor#createModel(java.lang.Object)	 */	protected Object createModel(Object input) throws CoreException {		log.debug("createModel(Object input)");		log.debug(input.getClass().getName());		//根据系统传入的文件判断其应该怎么样作处理		if(input!=null && input instanceof IFile){			IFile file =(IFile)input;			log.debug(file.getFullPath().toOSString());			return createFileSystemModel((IFile) file);		}		return new HibernateCFModel();	}	private IHibernateCFModel createFileSystemModel(IFile file) throws CoreException {		InputStream stream = null;			if(!file.isSynchronized(IResource.DEPTH_ZERO)){			file.refreshLocal(IResource.DEPTH_ZERO,null);		}		//得到该文件的项目		project = file.getProject();		//得到		stream = file.getContents(false);										modelProvider = TanghanPlugin.getDefault().getHibernateCFModelManager();				modelProvider.connect(file, this);		IHibernateCFModel model =			(IHibernateCFModel) modelProvider.getModel(file, this);					model.load(stream,true);		try {			stream.close();		} catch (IOException e) {			log.debug(e.getMessage(),e);		}		//得到当前的Project		if(file.getProject()!=null)			model.setProject(file.getProject());							return model;	}		/* (non-Javadoc)	 * @see org.eclipse.pde.internal.ui.editor.PDEMultiPageEditor#createPages()	 */	protected void createPages() {		log.debug("add source page");		this.firstPageId = HIBERNATE_CONFIGFILE_PAGE;		formWorkbook.setFirstPageSelected(false);		this.addPage(HIBERNATE_CONFIGFILE_PAGE,new HibernateCFFormPage(this,HIBERNATE_CONFIGFILE_TITLE));		this.addPage(SOURCE_PAGE,new HibernateCFSourcePage(this));			}	/* (non-Javadoc)	 * @see org.eclipse.pde.internal.ui.editor.PDEMultiPageEditor#getHomePage()	 */	public IPDEEditorPage getHomePage() {		log.debug("getHomePage()");		return this.getPage(HIBERNATE_CONFIGFILE_PAGE);	}	/* (non-Javadoc)	 * @see org.eclipse.pde.internal.ui.editor.PDEMultiPageEditor#getSourcePageId()	 */	protected String getSourcePageId() {		log.debug("getSourcePageId()");		return SOURCE_PAGE;	}	/* (non-Javadoc)	 * @see org.eclipse.pde.internal.ui.editor.PDEMultiPageEditor#isModelDirty(java.lang.Object)	 */	protected boolean isModelDirty(Object model) {		return model != null			&& model instanceof IEditable			&& model instanceof IModel			&& ((IModel) model).isEditable()			&& ((IEditable) model).isDirty();	}	/* (non-Javadoc)	 * @see org.eclipse.pde.internal.ui.editor.PDEMultiPageEditor#updateModel()	 */	protected boolean updateModel() {		log.debug("updateModel()");		IHibernateCFModel model = (IHibernateCFModel) getModel();		IDocument document =			getDocumentProvider().getDocument(getEditorInput());		String text = document.get();		boolean cleanModel = true;		try {			InputStream stream =				new ByteArrayInputStream(text.getBytes("UTF8"));			try {				model.reload(stream, false);			} catch (CoreException e) {				e.printStackTrace();				cleanModel = false;			}			try {				stream.close();			} catch (IOException e) {				;			}		} catch (UnsupportedEncodingException e) {			log.error(e.getMessage(),e);		}		return cleanModel;	}	/* (non-Javadoc)	 * @see org.eclipse.ui.IWorkbenchPart#dispose()	 */	public void dispose() {		modelProvider.disconnect(getModel(), this);				IWorkspace workspace = TanghanPlugin.getWorkspace();		workspace.removeResourceChangeListener(this);		disposeSuperClass() ;	}	public final void disposeSuperClass() {		super.dispose();	}	/* (non-Javadoc)	 * @see org.eclipse.jface.util.IPropertyChangeListener#propertyChange(org.eclipse.jface.util.PropertyChangeEvent)	 */	public void propertyChange(PropertyChangeEvent event) {	}	/* (non-Javadoc)	 * @see org.eclipse.core.resources.IResourceChangeListener#resourceChanged(org.eclipse.core.resources.IResourceChangeEvent)	 */	public void resourceChanged(IResourceChangeEvent event) {	}	/* (非 Javadoc)	 * @see org.eclipse.ui.ISaveablePart#doSave(org.eclipse.core.runtime.IProgressMonitor)	 */	public void doSave(IProgressMonitor monitor) {		super.doSave(monitor);		IEditable editable = (IEditable)model;		editable.setDirty(false);		fireSaveNeeded();	}}

⌨️ 快捷键说明

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