[jboss-cvs] jbosside/seam/plugins/org.jboss.ide.seam.gen/src/org/jboss/ide/seam/gen ...

Max Rydahl Andersen mandersen at jboss.com
Thu Feb 15 07:20:44 EST 2007


  User: mandersen
  Date: 07/02/15 07:20:44

  Added:       seam/plugins/org.jboss.ide.seam.gen/src/org/jboss/ide/seam/gen    
                        GenerateEntitiesExporter.javax QuestionDialog.java
                        SeamGenPlugin.java SeamGenProperty.java
  Log:
  first cut at seamgen eclipse integration
  
  Revision  Changes    Path
  1.1      date: 2007/02/15 12:20:44;  author: mandersen;  state: Exp;jbosside/seam/plugins/org.jboss.ide.seam.gen/src/org/jboss/ide/seam/gen/GenerateEntitiesExporter.javax
  
  Index: GenerateEntitiesExporter.javax
  ===================================================================
  package org.jboss.ide.seam.gen;
  
  import java.io.File;
  import java.util.Map;
  import java.util.Properties;
  
  import org.hibernate.cfg.Configuration;
  import org.hibernate.tool.hbm2x.AbstractExporter;
  import org.hibernate.tool.hbm2x.GenericExporter;
  import org.hibernate.tool.hbm2x.pojo.POJOClass;
  
  public class GenerateEntitiesExporter extends AbstractExporter {
  
  	public GenerateEntitiesExporter() {
      }
      
      public GenerateEntitiesExporter(Configuration cfg, File outputdir) {
          super(cfg, outputdir);
          init();
      }
  
      private void init() {
      			
  	}
      
  	protected void exportComponent(Map additionalContext, POJOClass element) {
      	// noop - we dont want components
      }
  	
  	public String getName() {
  		return "seamgen generate-entities";
  	}
  
  	protected void setupContext() {
  		getProperties().put( "hibernatetool.util.toolclass",  "org.jboss.seam.tool.Util");
  		super.setupContext();
  				
  	}
  	public void doStart() {		
  		
  		configureExporter( "seam-gen/view/list.xhtml.ftl", "view/{class-name}List.xhtml").start();
  		 
  		configureExporter( "seam-gen/view/view.xhtml.ftl", "view/{class-name}.xhtml").start();
  		
  		configureExporter( "seam-gen/view/edit.xhtml.ftl", "view/{class-name}Edit.xhtml").start();
  		
  		configureExporter( "seam-gen/src/EntityList.java.ftl", "src/{package-name}/{class-name}List.java").start();
  		
  		configureExporter( "seam-gen/src/EntityHome.java.ftl", "src/{package-name}/{class-name}Home.java").start();
  		
  		configureExporter( "seam-gen/view/layout/menu.xhtml.ftl", "view/layout/menu.xhtml").start();
  						
  	}
  
  	private GenericExporter configureExporter(String template, String pattern) {
  		GenericExporter exporter = new GenericExporter(getConfiguration(),getOutputDirectory());
  		exporter.setProperties((Properties) getProperties().clone());
  		exporter.setTemplatePath(getTemplatePaths());
  		exporter.setTemplateName(template);
  		exporter.setFilePattern(pattern);
  		exporter.setArtifactCollector(getArtifactCollector());
  		return exporter;
  	}
  
  	
  }
  
  
  
  1.1      date: 2007/02/15 12:20:44;  author: mandersen;  state: Exp;jbosside/seam/plugins/org.jboss.ide.seam.gen/src/org/jboss/ide/seam/gen/QuestionDialog.java
  
  Index: QuestionDialog.java
  ===================================================================
  package org.jboss.ide.seam.gen;
  
  import java.util.Collections;
  import java.util.HashMap;
  import java.util.Iterator;
  import java.util.Map;
  import java.util.Properties;
  
  import org.eclipse.jface.dialogs.IDialogConstants;
  import org.eclipse.jface.dialogs.IMessageProvider;
  import org.eclipse.jface.dialogs.TitleAreaDialog;
  import org.eclipse.swt.SWT;
  import org.eclipse.swt.events.ModifyEvent;
  import org.eclipse.swt.events.ModifyListener;
  import org.eclipse.swt.layout.GridData;
  import org.eclipse.swt.layout.GridLayout;
  import org.eclipse.swt.widgets.Composite;
  import org.eclipse.swt.widgets.Control;
  import org.eclipse.swt.widgets.Label;
  import org.eclipse.swt.widgets.Shell;
  import org.eclipse.swt.widgets.Text;
  
  public class QuestionDialog extends TitleAreaDialog {
  
  	private final String title;
  	private final String description;
  	private final Map questions;
  
  	public QuestionDialog(Shell parentShell, String title, String description, Map questions) {
  		super( parentShell );
  		this.title = title;
  		this.description = description;
  		this.questions = questions;
  	}
  	
  	Map propertyToField = new HashMap();
  	Map propertyToDefaultLabel = new HashMap();
  	private Map result = Collections.EMPTY_MAP;
  	
  	protected Control createDialogArea(Composite parent) {
  		getShell().setText(title); 
  		setTitle(description); 
  		Composite control = (Composite) super.createDialogArea( parent );
  		
  		Composite composite = new Composite(control,SWT.NONE);
  		composite.setLayoutData(new GridData(GridData.FILL_BOTH));
  		GridLayout layout = new GridLayout(3,false);
  		layout.marginHeight = convertVerticalDLUsToPixels(IDialogConstants.VERTICAL_MARGIN);
          layout.marginWidth = convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_MARGIN);
          layout.verticalSpacing = convertVerticalDLUsToPixels(IDialogConstants.VERTICAL_SPACING);
          layout.horizontalSpacing = convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_SPACING);
          composite.setLayout(layout);
          
          ModifyListener modifyListener = new ModifyListener() {
  			
  			public void modifyText(ModifyEvent e) {
  				updateStatus();
  			}
  		
  		};
  
  		Map properties = questions;
  		
  		Text firstField = null;
  		Iterator iterator = properties.entrySet().iterator();
  		while ( iterator.hasNext() ) {
  			Map.Entry element = (Map.Entry) iterator.next();
  			String name = (String) element.getKey();
  			SeamGenProperty sgp = (SeamGenProperty) element.getValue();
  		
  			Label label = new Label(composite, SWT.NONE);
  			label.setText( sgp.getDescription() + ":" );
  			
  			Text text = new Text(composite, SWT.BORDER | SWT.LEAD);
  			text.setLayoutData(new GridData(GridData.GRAB_HORIZONTAL | GridData.FILL_HORIZONTAL));
  			text.setFocus();
  			text.addModifyListener( modifyListener );
  			if(firstField==null) {
  				firstField = text;
  			}
  			propertyToField.put(name, text);
  			
  			label = new Label(composite, SWT.NONE);
  			label.setText( "                       " );
  			propertyToDefaultLabel.put( name, label );
  			
  		}
  		
  		firstField.setFocus();
  		//initDefaultNames(ef, propertyCombo);
  		
  		return control;
  	}
  
  	
  	public Map getPropertiesResult() {
  		return result;
  	}
  
  	private Map internalGetResult() {
  		Map m = new HashMap();
  		Iterator iterator = propertyToField.entrySet().iterator();
  		while ( iterator.hasNext() ) {
  			Map.Entry element = (Map.Entry) iterator.next();
  			Text t = (Text) element.getValue();
  			
  			
  			String text = t.getText();
  			if(text.trim().length()>0) {
  				m.put( element.getKey(), text);	
  			} else {
  				Label dv = (Label) propertyToDefaultLabel.get(element.getKey());
  				if(dv.getText().trim().length()>0) {
  					m.put( element.getKey(), dv.getText());
  				}
  			}
  		}
  		return m;
  	}
  
  	boolean updating = false;
  	void updateStatus() {
  		if(!updating) {
  			setMessage( null );
  			getButton( IDialogConstants.OK_ID ).setEnabled( true );
  			updating = true;
  			// Big ineffective hack!
  			Map others = internalGetResult();
  			Properties properties = new Properties();
  			properties.putAll( others );
  
  			boolean haveNoWarning = true;
  			Iterator iter = questions.entrySet().iterator();
  			while ( iter.hasNext() ) {
  				Map.Entry element = (Map.Entry) iter.next();
  				SeamGenProperty gp = (SeamGenProperty) element.getValue();
  
  				Label text = (Label) propertyToDefaultLabel.get( element.getKey() );
  				
  				String defaultValue = gp.getDefaultValue( properties );
  				text.setText( defaultValue==null?"":defaultValue );
  				
  				Text enteredValue = (Text) propertyToField.get(element.getKey());
  				if(haveNoWarning && enteredValue.getText().trim().length()==0 && text.getText().trim().length()==0 ) {
  					setMessage( gp.getDescription() + " requires a value", IMessageProvider.ERROR );
  					haveNoWarning = false;
  					getButton( IDialogConstants.OK_ID ).setEnabled( false );
  				}
  				
  			}
  			updating = false;
  		}
  		
  	/*	if(StringHelper.isEmpty( getPropertyName() )) {
  			setMessage( "The property name must be chosen or entered",  IMessageProvider.ERROR);			
  		} else if (getPropertyName().indexOf( ' ' )>=0 || getPropertyName().indexOf( '\t' )>=0) {
  			setMessage( "The property name may not contain whitespaces", IMessageProvider.ERROR);
  		} else if(StringHelper.isEmpty( getPropertyValue() )) {
  			setMessage( "The property value must be non-empty",  IMessageProvider.ERROR);
  		} else {
  			if (ef.hasLocalValueFor( getPropertyName() )) {
  				setMessage( "The property " + getPropertyName() + " is already set, pressing ok will overwrite the current value",  IMessageProvider.WARNING);
  			} else {
  				setMessage( null, IMessageProvider.ERROR );
  			}
  			ok = true;
  		}
  		
  		Button button = getButton(IDialogConstants.OK_ID);
  		if(button!=null) {
  			button.setEnabled( ok );
  		}*/
  	}
  	
  	protected void okPressed() {
  		result = internalGetResult();
  		super.okPressed();		
  		
  	}
  	
  	public void create() {
  		super.create();
  		updateStatus();
  	}
  }
  
  
  
  1.1      date: 2007/02/15 12:20:44;  author: mandersen;  state: Exp;jbosside/seam/plugins/org.jboss.ide.seam.gen/src/org/jboss/ide/seam/gen/SeamGenPlugin.java
  
  Index: SeamGenPlugin.java
  ===================================================================
  package org.jboss.ide.seam.gen;
  
  import org.eclipse.core.runtime.CoreException;
  import org.eclipse.core.runtime.IStatus;
  import org.eclipse.core.runtime.Status;
  import org.eclipse.ui.plugin.AbstractUIPlugin;
  import org.osgi.framework.BundleContext;
  
  /**
   * The activator class controls the plug-in life cycle
   */
  public class SeamGenPlugin extends AbstractUIPlugin {
  
  	// The plug-in ID
  	public static final String PLUGIN_ID = "org.jboss.ide.seam.gen";
  
  	// The shared instance
  	private static SeamGenPlugin plugin;
  	
  	/**
  	 * The constructor
  	 */
  	public SeamGenPlugin() {
  		plugin = this;
  	}
  
  	/*
  	 * (non-Javadoc)
  	 * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
  	 */
  	public void start(BundleContext context) throws Exception {
  		super.start(context);
  	}
  
  	/*
  	 * (non-Javadoc)
  	 * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)
  	 */
  	public void stop(BundleContext context) throws Exception {
  		plugin = null;
  		super.stop(context);
  	}
  
  	/**
  	 * Returns the shared instance
  	 *
  	 * @return the shared instance
  	 */
  	public static SeamGenPlugin getDefault() {
  		return plugin;
  	}
  
  	
  	public static void log(IStatus status) {
  		getDefault().getLog().log(status);
  	}
  	
  	public static void logError(String message) {
  		logError(message, null);
  	}
  
  	public static void logInfo(String message) {
  		log(new Status(IStatus.INFO, PLUGIN_ID, 12345, message, null));
  	}
  
  	public static void logError(String message, Throwable e) {
  		log(new Status(IStatus.ERROR, PLUGIN_ID, 12345, message, e));
  		
  	}
  }
  
  
  
  1.1      date: 2007/02/15 12:20:44;  author: mandersen;  state: Exp;jbosside/seam/plugins/org.jboss.ide.seam.gen/src/org/jboss/ide/seam/gen/SeamGenProperty.java
  
  Index: SeamGenProperty.java
  ===================================================================
  package org.jboss.ide.seam.gen;
  
  import java.util.Properties;
  
  public class SeamGenProperty {
  
  	private final String description;
  
  	public SeamGenProperty(String description) {
  		this.description = description;
  	}
  
  	public String getDescription() {
  		return description;
  	}
  	
  	public String getDefaultValue(Properties others) {
  		return null;
  	}
  	
  	protected String upper(String name)
  	{
  		if(name==null || name.length()==0) return "";
  		return name.substring(0, 1).toUpperCase() + name.substring(1);
  	}
  
  	protected String lower(String name) {
  		if ( name == null || name.length() == 0 )
  			return "";
  		return name.substring( 0, 1 ).toLowerCase() + name.substring( 1 );
  	}
  }
  
  
  



More information about the jboss-cvs-commits mailing list