[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