📄 hibernatecontentsection.java
字号:
/* * 创建日期 2003-7-31 * * 更改所生成文件模板为 * 窗口 > 首选项 > Java > 代码生成 > 代码和注释 */package com.tanghan.plugin.hibernate.editor.formpages;import java.util.List;import java.util.Properties;import java.util.ResourceBundle;import org.apache.log4j.Logger;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.PDEFormSection;import org.eclipse.swt.SWT;import org.eclipse.swt.events.ModifyEvent;import org.eclipse.swt.events.ModifyListener;import org.eclipse.swt.graphics.Color;import org.eclipse.swt.layout.GridData;import org.eclipse.swt.layout.GridLayout;import org.eclipse.swt.widgets.Combo;import org.eclipse.swt.widgets.Composite;import org.eclipse.swt.widgets.Label;import org.eclipse.swt.widgets.Text;import org.eclipse.update.ui.forms.internal.FormEntry;import org.eclipse.update.ui.forms.internal.FormWidgetFactory;import com.tanghan.plugin.TanghanPlugin;import com.tanghan.plugin.hibernate.editor.elements.ElementAttribute;import com.tanghan.plugin.hibernate.editor.elements.HibernateElementAttributes;import com.tanghan.plugin.hibernate.editor.elements.HibernateTreeObject;import com.tanghan.util.DealString;import com.tanghan.util.Log;/** * @author Jerry Tang * @version v0.1.0 * @copyright (C) 2003 Tanghan Studio * */public class HibernateContentSection extends PDEFormSection { private static ResourceBundle res = TanghanPlugin.getDefault().getResourceBundle(); private static Logger log = Log.getInstanse().getLogger(HibernateContentSection.class); HibernateTreeObject hibernateElemObject ; Composite container ; protected FormWidgetFactory factory; /** * @param formPage */ public HibernateContentSection(PDEFormPage formPage,HibernateTreeObject hibernateElemObject) { super(formPage); this.hibernateElemObject = hibernateElemObject; setHeaderText(res.getString("Tanghan.Plugin.Hibernate.Edit.ElementSection.Title")); //$NON-NLS-1$ setDescription(res.getString("Tanghan.Plugin.Hibernate.Edit.ElementSection.Description")); //$NON-NLS-1$ } /* (非 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) { this.factory = factory; container = factory.createComposite(parent); GridLayout layout = new GridLayout(); layout.numColumns = 2; layout.marginHeight = 2; layout.marginWidth = 2; container.setLayout(layout); createAttributesForm(container,factory); return container; } private void createAttributesForm(Composite parent,FormWidgetFactory factory){ if(hibernateElemObject!=null && hibernateElemObject.getObject()!=null){ final HibernateElementAttributes heAttr = (HibernateElementAttributes)hibernateElemObject.getObject(); List attList = heAttr.getAllAttributes(); final Properties prop = heAttr.getCurrentAttributes(); for(int i=0;i<attList.size();i++){ final ElementAttribute elemAtt = (ElementAttribute)attList.get(i); String value = DealString.trim(prop.getProperty(elemAtt.getAttributeName())); switch(elemAtt.getAttributeType()){ case ElementAttribute.BOOLEAN: case ElementAttribute.ENUM: createCombo(container, elemAtt.getAttributeName(),factory ,1,SWT.SINGLE | SWT.BORDER,elemAtt); break; default: final Text txt = createText(container, elemAtt.getAttributeName(),factory ,1,SWT.SINGLE | SWT.BORDER); if(elemAtt.isRequired()){ txt.setBackground(new Color(null,255,255,213)); } txt.setText(value); txt.addModifyListener(new ModifyListener(){ //String oldValue = ""; public void modifyText(ModifyEvent e){ if(!DealString.equals("",txt.getText())){ //$NON-NLS-1$ heAttr.getCurrentAttributes().setProperty(elemAtt.getAttributeName(), DealString.trim(txt.getText())); heAttr.getElement().setAttribute(elemAtt.getAttributeName(), DealString.trim(txt.getText())); }else{ heAttr.getCurrentAttributes().remove(elemAtt.getAttributeName()); heAttr.getElement().removeAttribute(elemAtt.getAttributeName()); } forceDirty(); log.debug("forceDirty(txt)"); //$NON-NLS-1$ } }); FormEntry titleText = new FormEntry(txt); break; } } //FormEntry titleText = new FormEntry(createText(container, hibernateElemObject.getName(),factory ,1,SWT.SINGLE | SWT.BORDER)); } } protected Combo createCombo( Composite parent, String label, FormWidgetFactory factory, int span, int style,final ElementAttribute elemAtt) { if((elemAtt.getAttributeType()!=ElementAttribute.BOOLEAN)&&(elemAtt.getAttributeType()!=ElementAttribute.ENUM)){ return null; } final HibernateElementAttributes heAttr = (HibernateElementAttributes)hibernateElemObject.getObject(); Label l = factory.createLabel(parent, label); if ((style & SWT.MULTI) != 0) { GridData gd = new GridData(GridData.VERTICAL_ALIGN_BEGINNING); l.setLayoutData(gd); } final Combo combo = new Combo(parent, SWT.READ_ONLY|SWT.DROP_DOWN); if(!elemAtt.isRequired()){ combo.add(""); //$NON-NLS-1$ } for(int i=0;i<elemAtt.getEnumData().length;i++){ combo.add(DealString.trim(elemAtt.getEnumData()[i])); } combo.setText(DealString.trim(elemAtt.getDefaultData())); int hfill =GridData.HORIZONTAL_ALIGN_FILL;// span == 1// ? GridData.FILL_HORIZONTAL// : GridData.HORIZONTAL_ALIGN_FILL;// GridData gd = new GridData(hfill | GridData.VERTICAL_ALIGN_CENTER); GridData gd = new GridData( GridData.VERTICAL_ALIGN_CENTER); gd.horizontalSpan = span; combo.setLayoutData(gd); combo.addModifyListener(new ModifyListener(){ //String oldValue = ""; public void modifyText(ModifyEvent e){ if(!DealString.equals("",combo.getText())){ //$NON-NLS-1$ heAttr.getCurrentAttributes().setProperty(elemAtt.getAttributeName(), DealString.trim(combo.getText())); heAttr.getElement().setAttribute(elemAtt.getAttributeName(), DealString.trim(combo.getText())); }else{ heAttr.getCurrentAttributes().remove(elemAtt.getAttributeName()); heAttr.getElement().removeAttribute(elemAtt.getAttributeName()); } forceDirty(); log.debug("forceDirty(combo)"); //$NON-NLS-1$ } } ); return combo; } public void forceDirty() { setDirty(true); HibernateCFForm form = (HibernateCFForm)getFormPage().getForm(); form.getHibernateCFTreeSection().refreshTree(hibernateElemObject); IModel model = (IModel)getFormPage().getModel(); if (model instanceof IEditable) { IEditable editable = (IEditable)model; editable.setDirty(true); getFormPage().getEditor().fireSaveNeeded(); } } /* (non-Javadoc) * @see org.eclipse.update.ui.forms.internal.FormSection#dispose() */ public void dispose() { if ( !container.isDisposed() && !container.getParent().isDisposed() ) { container.getParent().dispose(); } super.dispose(); } /* (non-Javadoc) * @see org.eclipse.update.ui.forms.internal.FormSection#update() */ public void update() { super.update(); this.reflow(); } /* (非 Javadoc) * @see org.eclipse.pde.core.IModelChangedListener#modelChanged(org.eclipse.pde.core.IModelChangedEvent) */ public void modelChanged(IModelChangedEvent e) { super.modelChanged(e); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -