Author: mculpepper(a)jboss.com
Date: 2007-09-10 06:27:27 -0400 (Mon, 10 Sep 2007)
New Revision: 3502
Added:
trunk/hibernatetools/plugins/org.hibernate.eclipse.console/src/org/hibernate/eclipse/launch/DirectoryBrowseField.java
Modified:
trunk/hibernatetools/plugins/org.hibernate.eclipse.console/src/org/hibernate/eclipse/launch/CodeGenerationLaunchDelegate.java
trunk/hibernatetools/plugins/org.hibernate.eclipse.console/src/org/hibernate/eclipse/launch/CodeGenerationSettings.java
Log:
the custom template directory can now be selected from either workspace or filesystem
http://jira.jboss.com/jira/browse/JBIDE-880
Modified:
trunk/hibernatetools/plugins/org.hibernate.eclipse.console/src/org/hibernate/eclipse/launch/CodeGenerationLaunchDelegate.java
===================================================================
---
trunk/hibernatetools/plugins/org.hibernate.eclipse.console/src/org/hibernate/eclipse/launch/CodeGenerationLaunchDelegate.java 2007-09-10
07:46:53 UTC (rev 3501)
+++
trunk/hibernatetools/plugins/org.hibernate.eclipse.console/src/org/hibernate/eclipse/launch/CodeGenerationLaunchDelegate.java 2007-09-10
10:27:27 UTC (rev 3502)
@@ -208,6 +208,12 @@
IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();
final IResource resource = findMember( root, attributes.getOutputPath() );
final IResource templateres = findMember(root, attributes.getTemplatePath());
+ String templatePath = null;
+
+ if (new File(attributes.getTemplatePath()).exists())
+ {
+ templatePath = attributes.getTemplatePath();
+ }
/*if (!resource.exists() || !(resource instanceof IContainer) ) {
throwCoreException("Output directory \"" + configName + "\"
does not exist.");
@@ -225,6 +231,7 @@
if (monitor.isCanceled())
return null;
+ final String finalTemplatePath = templatePath;
return (ArtifactCollector) cc.execute(new Command() {
private ArtifactCollector artifactCollector = new ArtifactCollector();
@@ -235,6 +242,8 @@
if(templateres!=null) {
templatePaths = new String[] { getLocation( templateres
).toOSString() }; // TODO: this should not be..should it ?
+ } else if (finalTemplatePath != null) {
+ templatePaths = new String[] { finalTemplatePath };
}
// Global properties
Modified:
trunk/hibernatetools/plugins/org.hibernate.eclipse.console/src/org/hibernate/eclipse/launch/CodeGenerationSettings.java
===================================================================
---
trunk/hibernatetools/plugins/org.hibernate.eclipse.console/src/org/hibernate/eclipse/launch/CodeGenerationSettings.java 2007-09-10
07:46:53 UTC (rev 3501)
+++
trunk/hibernatetools/plugins/org.hibernate.eclipse.console/src/org/hibernate/eclipse/launch/CodeGenerationSettings.java 2007-09-10
10:27:27 UTC (rev 3502)
@@ -21,6 +21,8 @@
*/
package org.hibernate.eclipse.launch;
+import java.io.File;
+
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.resources.ResourcesPlugin;
@@ -82,7 +84,7 @@
private SelectionButtonDialogField autoManyToMany;
private SelectionButtonDialogField useOwnTemplates;
- private StringButtonDialogField templatedir;
+ private DirectoryBrowseField templatedir;
@@ -98,7 +100,7 @@
GridLayout layout = new GridLayout();
container.setLayout(layout);
- layout.numColumns = 3;
+ layout.numColumns = 4;
layout.verticalSpacing = 10;
consoleConfigurationName = new ComboDialogField(SWT.READ_ONLY);
@@ -131,17 +133,11 @@
outputdir.setLabelText("Output &directory:");
outputdir.setButtonLabel("&Browse...");
- templatedir = new StringButtonDialogField(new IStringButtonAdapter() {
- public void changeControlPressed(DialogField field) {
- IPath[] paths = DialogSelectionHelper.chooseFileEntries(getShell(),
getTemplateDirectory(), new IPath[0], "Select template directory", "Choose
directory containing custom templates", new String[0], false, true, false);
- if(paths!=null && paths.length==1) {
- templatedir.setText( ( (paths[0]).toOSString() ) );
- }
- }
- });
+ templatedir = new DirectoryBrowseField(null, null, "Select template
directory", "Choose directory containing custom templates");
templatedir.setDialogFieldListener(fieldlistener);
templatedir.setLabelText("Template &directory:");
- templatedir.setButtonLabel("&Browse...");
+ templatedir.setFilesystemBrowseLabel("&Filesystem...");
+ templatedir.setWorkspaceBrowseLabel("&Workspace...");
packageName = new StringDialogField();
packageName.setDialogFieldListener(fieldlistener);
@@ -228,23 +224,23 @@
useOwnTemplates.attachDialogField(templatedir);
reverseengineer.attachDialogFields(new DialogField[] { packageName,
preferRawCompositeIds, reverseEngineeringSettings, reverseEngineeringStrategy,
autoManyToMany, autoVersioning });
- consoleConfigurationName.doFillIntoGrid(container, 3);
- Control[] controls = outputdir.doFillIntoGrid(container, 3);
+ consoleConfigurationName.doFillIntoGrid(container, 4);
+ Control[] controls = outputdir.doFillIntoGrid(container, 4);
// Hack to tell the text field to stretch!
( (GridData)controls[1].getLayoutData() ).grabExcessHorizontalSpace=true;
- reverseengineer.doFillIntoGrid(container, 3);
- packageName.doFillIntoGrid(container, 3);
- reverseEngineeringSettings.doFillIntoGrid(container, 3);
- reverseEngineeringStrategy.doFillIntoGrid(container, 3);
+ reverseengineer.doFillIntoGrid(container, 4);
+ packageName.doFillIntoGrid(container, 4);
+ reverseEngineeringSettings.doFillIntoGrid(container, 4);
+ reverseEngineeringStrategy.doFillIntoGrid(container, 4);
fillLabel(container);
- preferRawCompositeIds.doFillIntoGrid(container, 2);
+ preferRawCompositeIds.doFillIntoGrid(container, 3);
fillLabel(container);
- autoVersioning.doFillIntoGrid(container, 2);
+ autoVersioning.doFillIntoGrid(container, 3);
fillLabel(container);
- autoManyToMany.doFillIntoGrid(container, 2);
- useOwnTemplates.doFillIntoGrid(container, 3);
- controls = templatedir.doFillIntoGrid(container, 3);
+ autoManyToMany.doFillIntoGrid(container, 3);
+ useOwnTemplates.doFillIntoGrid(container, 4);
+ controls = templatedir.doFillIntoGrid(container, 4);
// Hack to tell the text field to stretch!
( (GridData)controls[1].getLayoutData() ).grabExcessHorizontalSpace=true;
@@ -268,7 +264,7 @@
return;
}
- String msg = checkDirectory(getOutputDirectory(), "output directory");
+ String msg = checkDirectory(getOutputDirectory(), "output directory",
false);
if (msg!=null) {
updateStatus(msg);
@@ -292,7 +288,7 @@
}
if(useOwnTemplates.isSelected() ) {
- msg = checkDirectory(getTemplateDirectory(), "template
directory");
+ msg = checkDirectory(getTemplateDirectory(), "template directory",
true);
if (msg!=null) {
updateStatus(msg);
return;
@@ -331,7 +327,13 @@
- protected String checkDirectory(IPath path, String name) {
+ protected String checkDirectory(IPath path, String name, boolean checkFilesystem) {
+ if (checkFilesystem) {
+ if (path != null && new File(path.toOSString()).exists()) {
+ return null;
+ }
+ }
+
IResource res= ResourcesPlugin.getWorkspace().getRoot().findMember(path);
if (res != null) {
int resType= res.getType();
Added:
trunk/hibernatetools/plugins/org.hibernate.eclipse.console/src/org/hibernate/eclipse/launch/DirectoryBrowseField.java
===================================================================
---
trunk/hibernatetools/plugins/org.hibernate.eclipse.console/src/org/hibernate/eclipse/launch/DirectoryBrowseField.java
(rev 0)
+++
trunk/hibernatetools/plugins/org.hibernate.eclipse.console/src/org/hibernate/eclipse/launch/DirectoryBrowseField.java 2007-09-10
10:27:27 UTC (rev 3502)
@@ -0,0 +1,151 @@
+package org.hibernate.eclipse.launch;
+
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.jdt.internal.ui.util.SWTUtil;
+import org.eclipse.jdt.internal.ui.wizards.dialogfields.StringDialogField;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.DirectoryDialog;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Text;
+import org.hibernate.eclipse.console.utils.DialogSelectionHelper;
+
+public class DirectoryBrowseField extends StringDialogField {
+
+ protected Button filesystemBrowse, workspaceBrowse;
+ protected String filesystemBrowseLabel, workspaceBrowseLabel;
+ protected IPath initialFilesystemPath, initialWorkspacePath;
+ protected String dialogTitle, dialogDescription;
+
+ public DirectoryBrowseField (IPath initialFilesystemPath, IPath initialWorkspacePath,
String dialogTitle, String dialogDescription)
+ {
+ super();
+
+ filesystemBrowseLabel = "Filesystem...";
+ workspaceBrowseLabel = "Workspace..";
+
+ this.initialFilesystemPath = initialFilesystemPath;
+ this.initialWorkspacePath = initialWorkspacePath;
+ this.dialogTitle = dialogTitle;
+ this.dialogDescription = dialogDescription;
+ }
+
+ protected void updateEnableState() {
+ super.updateEnableState();
+ boolean enabled = isEnabled();
+
+ if (filesystemBrowse != null)
+ filesystemBrowse.setEnabled(enabled);
+ if (workspaceBrowse != null)
+ workspaceBrowse.setEnabled(enabled);
+ }
+
+ protected static GridData gridDataForButton(Button button, int span) {
+ GridData gd= new GridData();
+ gd.horizontalAlignment= GridData.FILL;
+ gd.grabExcessHorizontalSpace= false;
+ gd.horizontalSpan= span;
+ gd.widthHint = SWTUtil.getButtonWidthHint(button);
+ return gd;
+ }
+
+ public int getNumberOfControls() {
+ return 4;
+ }
+
+ public Control[] doFillIntoGrid(Composite parent, int columns) {
+ assertEnoughColumns(columns);
+
+ Label label = getLabelControl(parent);
+ label.setLayoutData(gridDataForLabel(1));
+
+ Text text = getTextControl(parent);
+ text.setLayoutData(gridDataForText(columns - 3));
+
+
+ Button filesystemButton = getFilesystemBrowseButton(parent);
+ filesystemButton.setLayoutData(gridDataForButton(filesystemButton, 1));
+ Button workspaceButton = getWorkspaceBrowseButton(parent);
+ filesystemButton.setLayoutData(gridDataForButton(workspaceButton, 1));
+
+ return new Control[] { label, text, filesystemButton, workspaceButton };
+ }
+
+ protected void browseFilesystem ()
+ {
+ DirectoryDialog dialog = new DirectoryDialog(filesystemBrowse.getShell());
+ dialog.setText(dialogTitle);
+ dialog.setMessage(dialogDescription);
+ if (initialFilesystemPath != null) {
+ dialog.setFilterPath(initialFilesystemPath.toOSString());
+ }
+
+ String dir = dialog.open();
+ if (dir != null)
+ {
+ setText(dir);
+ }
+ }
+
+ protected void browseWorkspace ()
+ {
+ IPath[] paths = DialogSelectionHelper.chooseFileEntries(filesystemBrowse.getShell(),
initialWorkspacePath, new IPath[0], dialogTitle, dialogDescription, new String[0], false,
true, false);
+ if(paths!=null && paths.length==1) {
+ setText(paths[0].toOSString());
+ }
+ }
+
+ public Button getFilesystemBrowseButton (Composite parent)
+ {
+ if (filesystemBrowse == null)
+ {
+ filesystemBrowse = new Button(parent, SWT.PUSH);
+ filesystemBrowse.setFont(parent.getFont());
+ filesystemBrowse.setText(filesystemBrowseLabel);
+ filesystemBrowse.setEnabled(isEnabled());
+ filesystemBrowse.addSelectionListener(new SelectionListener() {
+ public void widgetDefaultSelected(SelectionEvent e) {
+ widgetSelected(e);
+ }
+ public void widgetSelected(SelectionEvent e) {
+ browseFilesystem();
+ }
+ });
+ }
+
+ return filesystemBrowse;
+ }
+
+ public Button getWorkspaceBrowseButton (Composite parent)
+ {
+ if (workspaceBrowse == null)
+ {
+ workspaceBrowse = new Button(parent, SWT.PUSH);
+ workspaceBrowse.setFont(parent.getFont());
+ workspaceBrowse.setText(workspaceBrowseLabel);
+ workspaceBrowse.setEnabled(isEnabled());
+ workspaceBrowse.addSelectionListener(new SelectionListener() {
+ public void widgetDefaultSelected(SelectionEvent e) {
+ widgetSelected(e);
+ }
+ public void widgetSelected(SelectionEvent e) {
+ browseWorkspace();
+ }
+ });
+ }
+ return workspaceBrowse;
+ }
+
+ public void setFilesystemBrowseLabel(String filesystemBrowseLabel) {
+ this.filesystemBrowseLabel = filesystemBrowseLabel;
+ }
+
+ public void setWorkspaceBrowseLabel(String workspaceBrowseLabel) {
+ this.workspaceBrowseLabel = workspaceBrowseLabel;
+ }
+}