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

📄 hibernatecftreesection.java

📁 eclipse的hibernate插件,支持eclipse2.*版本
💻 JAVA
字号:
/* * Created on 2003-7-29 * * To change the template for this generated file go to * Window>Preferences>Java>Code Generation>Code and Comments */package com.tanghan.plugin.hibernate.editor.formpages;import java.util.ArrayList;import java.util.List;import java.util.ResourceBundle;import org.apache.log4j.Logger;import org.eclipse.core.resources.ResourcesPlugin;import org.eclipse.jface.action.Action;import org.eclipse.jface.action.IMenuManager;import org.eclipse.jface.action.Separator;import org.eclipse.jface.dialogs.MessageDialog;import org.eclipse.jface.viewers.IStructuredSelection;import org.eclipse.jface.viewers.ITreeContentProvider;import org.eclipse.jface.viewers.TreeViewer;import org.eclipse.pde.core.IEditable;import org.eclipse.pde.core.IModel;import org.eclipse.pde.core.IModelChangedEvent;import org.eclipse.pde.internal.ui.editor.PDEFormPage;import org.eclipse.pde.internal.ui.editor.TreeSection;import org.eclipse.pde.internal.ui.parts.TreePart;import org.eclipse.swt.SWT;import org.eclipse.swt.widgets.Composite;import org.eclipse.ui.IPageLayout;import org.eclipse.ui.ISharedImages;import org.eclipse.ui.IViewPart;import org.eclipse.ui.PlatformUI;import org.eclipse.ui.part.DrillDownAdapter;import org.eclipse.ui.views.properties.PropertySheet;import org.eclipse.update.ui.forms.internal.FormWidgetFactory;import org.w3c.dom.Document;import org.w3c.dom.Element;import org.w3c.dom.Node;import com.tanghan.plugin.TanghanPlugin;import com.tanghan.plugin.hibernate.editor.IHibernateCFModel;import com.tanghan.plugin.hibernate.editor.config.HibernateMappingScanner;import com.tanghan.plugin.hibernate.editor.elements.HibernateElementAttributes;import com.tanghan.plugin.hibernate.editor.elements.HibernateTreeObject;import com.tanghan.plugin.hibernate.editor.elements.HibernateTreeParent;import com.tanghan.plugin.hibernate.editor.elements.HibernateViewContentProvider;import com.tanghan.plugin.hibernate.editor.elements.HibernateViewLabelProvider;import com.tanghan.util.Log;/** * @author Jerry Tang * @version v0.1.0 * @copyright  (C) 2003 Tanghan Studio */public class HibernateCFTreeSection extends TreeSection {	private static ResourceBundle res =		TanghanPlugin.getDefault().getResourceBundle();			private static Logger log = Log.getInstanse().getLogger(HibernateCFTreeSection.class);		protected TreeViewer hibernateCFTree;	private HibernateTreeObject treeSelection;	private HibernateTreeObject copyObject;	private Composite container;	private DrillDownAdapter drillDownAdapter;		public HibernateCFTreeSection(PDEFormPage page) {		super(page, new String[0] );		setHeaderText(res.getString("Tanghan.Plugin.Hibernate.Edit.TreeSection.Title")); //$NON-NLS-1$		setDescription(res.getString("Tanghan.Plugin.Hibernate.Edit.TreeSection.Description")); //$NON-NLS-1$	}		/**	 * @param formPage	 * @param buttonLabels	 */	public HibernateCFTreeSection(		PDEFormPage formPage,		String[] buttonLabels) {		super(formPage, new String[0]);	}	/* (non-Javadoc)	 * @see org.eclipse.update.ui.forms.internal.FormSection#createClient(org.eclipse.swt.widgets.Composite, org.eclipse.update.ui.forms.internal.FormWidgetFactory)	 */	public Composite createClient(		Composite parent,		FormWidgetFactory factory) {						container = createClientContainer(parent, 2, factory);			TreePart treePart = getTreePart();			createViewerPartControl(container, SWT.MULTI, 2, factory);			hibernateCFTree = treePart.getTreeViewer();			hibernateCFTree.setAutoExpandLevel(2);			hibernateCFTree.setContentProvider(new HibernateViewContentProvider());			hibernateCFTree.setLabelProvider(new  HibernateViewLabelProvider());			hibernateCFTree.setInput(ResourcesPlugin.getWorkspace());			drillDownAdapter = new DrillDownAdapter(hibernateCFTree);			createMenuAction();			factory.paintBordersFor(container);			return container;	}		/* (non-Javadoc)	 * @see org.eclipse.update.ui.forms.internal.FormSection#initialize(java.lang.Object)	 */	public void initialize(Object input) {		//super.initialize(input);		loadObject(input);	}		protected void loadObject(Object input){		if(input instanceof IHibernateCFModel){			//清空树			HibernateTreeParent hTreeRoot = null;			ITreeContentProvider treePr = (ITreeContentProvider)this.getTreePart().getTreeViewer().getContentProvider();			hTreeRoot = (HibernateTreeParent)(treePr.getElements(ResourcesPlugin.getWorkspace())[0]);			hTreeRoot.setObject(null);			hTreeRoot.emptyChildren();			//重新装载树			IHibernateCFModel model = (IHibernateCFModel)input;			Document doc = model.getHibernateCFDocument();			if(doc!=null){				hTreeRoot = (HibernateTreeParent)(treePr.getElements(ResourcesPlugin.getWorkspace())[0]);								HibernateMappingScanner hMScanner = new HibernateMappingScanner();								hMScanner.visitDocument(doc,hTreeRoot);				getTreePart().getTreeViewer().refresh();			}		}			}			/* (non-Javadoc)	 * @see org.eclipse.pde.internal.ui.editor.TreeSection#selectionChanged(org.eclipse.jface.viewers.IStructuredSelection)	 */	protected void selectionChanged(IStructuredSelection selection) {		super.selectionChanged(selection);				IViewPart part = getFormPage().getEditor().getSite().getPage().findView(IPageLayout.ID_PROP_SHEET);		if (part instanceof PropertySheet){						((PropertySheet) part).selectionChanged(HibernateCFTreeSection.this.getFormPage(),selection);		}		for(int i = 0 ;i <selectionChangeList.size();i++){			IHibernateSelectionChange selectChange = (IHibernateSelectionChange)selectionChangeList.get(i);			selectChange.selectionChanged(selection.getFirstElement());		}		if(selection.getFirstElement()!=null && (selection.getFirstElement() instanceof HibernateTreeObject)){			this.treeSelection = (HibernateTreeObject)selection.getFirstElement();		}	}	private List selectionChangeList = new ArrayList() ;	public void addSelectionChanged(IHibernateSelectionChange selectChange){		selectionChangeList.add(selectChange);	}	public void dispose() {		if ( !container.isDisposed() && !container.getParent().isDisposed() ) {			container.getParent().dispose();		} 		super.dispose();	}	/* (非 Javadoc)	 * @see org.eclipse.update.ui.forms.internal.FormSection#update()	 */	public void update() {		reflow();	}	/* (非 Javadoc)	 * @see org.eclipse.pde.core.IModelChangedListener#modelChanged(org.eclipse.pde.core.IModelChangedEvent)	 */	public void modelChanged(IModelChangedEvent e) {		log.debug(this.getClass().getName()+"::modelChanged(IModelChangedEvent e)"); //$NON-NLS-1$		loadObject(this.getFormPage().getModel());		copyObject=null;	}	public void refreshTree(Object obj){		if(obj==null){			getTreePart().getTreeViewer().refresh();		}else{			getTreePart().getTreeViewer().refresh(obj);		}	}	/* (非 Javadoc)	 * @see org.eclipse.pde.internal.ui.editor.StructuredViewerSection#fillContextMenu(org.eclipse.jface.action.IMenuManager)	 */	protected void fillContextMenu(IMenuManager manager) {		super.fillContextMenu(manager);		if(treeSelection!=null && (treeSelection instanceof HibernateTreeParent)){			final HibernateTreeParent parent = (HibernateTreeParent)treeSelection;			if(parent.getObject()!=null){				final HibernateElementAttributes heAttr = (HibernateElementAttributes)parent.getObject();				final List childElemList = heAttr.getAllChildElement();				for(int i=0;i<childElemList.size();i++){					final String elemName =(String)childElemList.get(i);					Action action = new Action() {						public void run() {							Element element = heAttr.getElement();							Element child = element.getOwnerDocument().createElement(elemName);							element.appendChild(element.getOwnerDocument().createTextNode("\t"));							element.appendChild(child);							element.appendChild(element.getOwnerDocument().createTextNode("\n"));							HibernateMappingScanner hMScanner = new HibernateMappingScanner();							hMScanner.visitDocument(child,parent);							forceDirty();							refreshTree(parent);						}					};					action.setText(res.getString("Tanghan.Plugin.Hibernate.Edit.New")+elemName); //$NON-NLS-1$										action.setImageDescriptor(PlatformUI.getWorkbench().getSharedImages().						getImageDescriptor(ISharedImages.IMG_OBJS_INFO_TSK));					manager.add(action);				}				manager.add(new Separator());				if(treeSelection.getType()!=HibernateTreeObject.HIBERNATE_MAPPING_ROOT){					manager.add(copyAction);				}				boolean bPast = false;				pastAction.setText(res.getString("Tanghan.Plugin.Hibernate.Edit.Past")); //$NON-NLS-1$				manager.add(pastAction);				if(this.copyObject!=null&&copyObject.getObject()!=null){					HibernateElementAttributes heAttrCopy = (HibernateElementAttributes)copyObject.getObject();					pastAction.setText(res.getString("Tanghan.Plugin.Hibernate.Edit.Past.Space")+heAttrCopy.getElement().getNodeName()); //$NON-NLS-1$					if(heAttr.getAllChildElement().contains(heAttrCopy.getElement().getNodeName())){						bPast = true;					}					//heAttrCopy.getElement().cloneNode()				}				pastAction.setEnabled(bPast);								if(treeSelection.getType()!=HibernateTreeObject.HIBERNATE_MAPPING_ROOT){					manager.add(deleteAction);				}			}		}	}	//copy一个元素时的Action	private Action copyAction;	//Delete一个元素时的Action	private Action deleteAction;	//past一个元素时的Action	private Action pastAction;		private void  createMenuAction(){		//创建copy用的Action		copyAction = new Action() {			public void run() {				copyObject = treeSelection;					}		};		copyAction.setText(res.getString("Tanghan.Plugin.Hibernate.Edit.Copy")); //$NON-NLS-1$		copyAction.setImageDescriptor(PlatformUI.getWorkbench().getSharedImages().			getImageDescriptor(ISharedImages.IMG_OBJS_INFO_TSK));				//创建copy用的Action		pastAction = new Action() {			public void run() {				copyElement();			}		};				pastAction.setText(res.getString("Tanghan.Plugin.Hibernate.Edit.Past")); //$NON-NLS-1$		pastAction.setImageDescriptor(PlatformUI.getWorkbench().getSharedImages().			getImageDescriptor(ISharedImages.IMG_OBJS_INFO_TSK));		//创建delete用的Action		deleteAction = new Action() {			public void run() {				deleteElement();			}		};					deleteAction.setText(res.getString("Tanghan.Plugin.Hibernate.Edit.Delete")); //$NON-NLS-1$		deleteAction.setImageDescriptor(PlatformUI.getWorkbench().getSharedImages().			getImageDescriptor(ISharedImages.IMG_OBJS_INFO_TSK));	}		private void copyElement(){		//HibernateTreeParent parent = (HibernateTreeParent)treeSelection;		HibernateElementAttributes heAttr = (HibernateElementAttributes)treeSelection.getObject();		HibernateElementAttributes heAttrCopy = (HibernateElementAttributes)copyObject.getObject();				Node child = heAttrCopy.getElement().cloneNode(true);		heAttr.getElement().appendChild(heAttr.getElement().getOwnerDocument().createTextNode("\t"));		heAttr.getElement().appendChild(child);		heAttr.getElement().appendChild(heAttr.getElement().getOwnerDocument().createTextNode("\n"));		HibernateMappingScanner hMScanner = new HibernateMappingScanner();		hMScanner.visitDocument(child,(HibernateTreeParent)treeSelection);		forceDirty();		refreshTree(treeSelection);						log.debug("copy "); //$NON-NLS-1$	}			private void deleteElement(){		if(MessageDialog.openConfirm(container.getShell(),res.getString("Tanghan.Plugin.Hibernate.Edit.Delete.Sure"),res.getString("Tanghan.Plugin.Hibernate.Edit.Delete.Sure.Message"))){ //$NON-NLS-1$ //$NON-NLS-2$			HibernateTreeParent parent = treeSelection.getParent();			HibernateElementAttributes parentAttr = (HibernateElementAttributes)parent.getObject();			HibernateElementAttributes childAttr = (HibernateElementAttributes)treeSelection.getObject();			parentAttr.getElement().removeChild(childAttr.getElement());			parent.removeChild(treeSelection);					hibernateCFTree.refresh(parent);							for(int i = 0 ;i <selectionChangeList.size();i++){				IHibernateSelectionChange selectChange = (IHibernateSelectionChange)selectionChangeList.get(i);				selectChange.selectionChanged(null);			}					forceDirty();			if(copyObject == treeSelection){				copyObject = null;			}			this.treeSelection = null;			log.debug(res.getString("Tanghan.Plugin.Hibernate.Edit.delete.Space")+treeSelection.getName()); //$NON-NLS-1$		}	}	public void forceDirty() {		setDirty(true);		IModel model = (IModel)getFormPage().getModel();		if (model instanceof IEditable) {			IEditable editable = (IEditable)model;			editable.setDirty(true);			getFormPage().getEditor().fireSaveNeeded();		} 	}}

⌨️ 快捷键说明

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