diff options
author | tle | 2008-05-12 16:54:13 +0000 |
---|---|---|
committer | tle | 2008-05-12 16:54:13 +0000 |
commit | 2758e338bcdfa15952b1cb31899f7eaaa866783c (patch) | |
tree | 4840e26274a57d5903817483b6dd4626b461b358 | |
parent | 4c5c3fc578b7179c6d7ba91c994689426198c8ac (diff) | |
download | webtools.dali-2758e338bcdfa15952b1cb31899f7eaaa866783c.tar.gz webtools.dali-2758e338bcdfa15952b1cb31899f7eaaa866783c.tar.xz webtools.dali-2758e338bcdfa15952b1cb31899f7eaaa866783c.zip |
229511 - EclipseLink persistence.xml DDL Gen Location Browse button does not work
4 files changed, 154 insertions, 11 deletions
diff --git a/jpa/plugins/org.eclipse.jpt.eclipselink.ui/property_files/eclipselink_ui.properties b/jpa/plugins/org.eclipse.jpt.eclipselink.ui/property_files/eclipselink_ui.properties index 0b9362df53..7ed6517730 100644 --- a/jpa/plugins/org.eclipse.jpt.eclipselink.ui/property_files/eclipselink_ui.properties +++ b/jpa/plugins/org.eclipse.jpt.eclipselink.ui/property_files/eclipselink_ui.properties @@ -89,6 +89,7 @@ DdlGenerationTypeComposite_drop_and_create_tables = Drop and Create Tables PersistenceXmlSchemaGenerationTab_ddlGenerationLocationLabel = DDL Generation Location: DdlGenerationLocationComposite_dialogTitle = Generation Location +DdlGenerationLocationComposite_dialogMessage = Choose a folder for the generated DDL files: # Caching PersistenceXmlCachingTab_title = Caching diff --git a/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/EclipseLinkUiMessages.java b/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/EclipseLinkUiMessages.java index c950fbb2ff..00f1e4af42 100644 --- a/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/EclipseLinkUiMessages.java +++ b/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/EclipseLinkUiMessages.java @@ -111,6 +111,7 @@ public class EclipseLinkUiMessages extends NLS public static String PersistenceXmlSchemaGenerationTab_ddlGenerationLocationLabel; public static String DdlGenerationLocationComposite_dialogTitle; + public static String DdlGenerationLocationComposite_dialogMessage; // Caching public static String PersistenceXmlCachingTab_title; diff --git a/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/schema/generation/DdlGenerationLocationComposite.java b/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/schema/generation/DdlGenerationLocationComposite.java index 8913542b47..2d8705ee3c 100644 --- a/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/schema/generation/DdlGenerationLocationComposite.java +++ b/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/schema/generation/DdlGenerationLocationComposite.java @@ -10,10 +10,11 @@ package org.eclipse.jpt.eclipselink.ui.internal.schema.generation; import org.eclipse.core.resources.IResource; +import org.eclipse.core.resources.ResourcesPlugin; import org.eclipse.jpt.eclipselink.core.internal.context.schema.generation.SchemaGeneration; import org.eclipse.jpt.eclipselink.ui.internal.EclipseLinkUiMessages; import org.eclipse.jpt.ui.internal.widgets.AbstractPane; -import org.eclipse.jpt.ui.internal.widgets.FileChooserPane; +import org.eclipse.jpt.ui.internal.widgets.FolderChooserPane; import org.eclipse.jpt.utility.internal.model.value.PropertyAspectAdapter; import org.eclipse.jpt.utility.model.value.WritablePropertyValueModel; import org.eclipse.osgi.util.NLS; @@ -32,12 +33,13 @@ public class DdlGenerationLocationComposite extends AbstractPane<SchemaGeneratio @Override protected void initializeLayout(Composite container) { - - new FileChooserPane<SchemaGeneration>(this, container) { + + new FolderChooserPane<SchemaGeneration>(this, container) { @Override protected WritablePropertyValueModel<String> buildTextHolder() { - return new PropertyAspectAdapter<SchemaGeneration, String>(getSubjectHolder(), SchemaGeneration.APPLICATION_LOCATION_PROPERTY) { + return new PropertyAspectAdapter<SchemaGeneration, String>( + getSubjectHolder(), SchemaGeneration.APPLICATION_LOCATION_PROPERTY) { @Override protected String buildValue_() { @@ -75,8 +77,7 @@ public class DdlGenerationLocationComposite extends AbstractPane<SchemaGeneratio @Override protected String dialogMessage() { - //TODO - return "TODO"; + return EclipseLinkUiMessages.DdlGenerationLocationComposite_dialogMessage; } @Override @@ -85,11 +86,6 @@ public class DdlGenerationLocationComposite extends AbstractPane<SchemaGeneratio } @Override - protected IResource getDialogInput() { - return null; - } - - @Override protected String labelText() { return EclipseLinkUiMessages.PersistenceXmlSchemaGenerationTab_ddlGenerationLocationLabel; } diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/widgets/FolderChooserPane.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/widgets/FolderChooserPane.java new file mode 100644 index 0000000000..618578bc65 --- /dev/null +++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/widgets/FolderChooserPane.java @@ -0,0 +1,145 @@ +/******************************************************************************* + * Copyright (c) 2008 Oracle. All rights reserved. + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0, which accompanies this distribution + * and is available at http://www.eclipse.org/legal/epl-v10.html. + * + * Contributors: + * Oracle - initial API and implementation + ******************************************************************************/ +package org.eclipse.jpt.ui.internal.widgets; + +import org.eclipse.jpt.utility.model.Model; +import org.eclipse.jpt.utility.model.value.PropertyValueModel; +import org.eclipse.jpt.utility.model.value.WritablePropertyValueModel; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.swt.widgets.DirectoryDialog; + +/** + * This chooser allows the user to choose a folder when browsing. + * <p> + * Here the layout of this pane: + * <pre> + * ----------------------------------------------------------------------------- + * | ---------------------------------------------------- ------------- | + * | Label: | I | | Browse... | | + * | ---------------------------------------------------- ------------- | + * -----------------------------------------------------------------------------</pre> + * + * @version 2.0 + * @since 2.0 + */ +public abstract class FolderChooserPane<T extends Model> extends AbstractChooserPane<T> +{ + private WritablePropertyValueModel<String> textHolder; + + /** + * Creates a new <code>FolderChooserPane</code>. + * + * @param parentPane The parent pane of this one + * @param parent The parent container + */ + public FolderChooserPane(AbstractPane<? extends T> parentPane, + Composite parent) { + + super(parentPane, parent); + } + + /** + * Creates a new <code>FolderChooserPane</code>. + * + * @param parentPane The parent container of this one + * @param subjectHolder The holder of this pane's subject + * @param parent The parent container + */ + public FolderChooserPane(AbstractPane<?> parentPane, + PropertyValueModel<? extends T> subjectHolder, + Composite parent) { + + super(parentPane, subjectHolder, parent); + } + + /** + * {@inheritDoc} + */ + @Override + protected Runnable buildBrowseAction() { + return new Runnable() { + public void run() { + promptFolder(); + } + }; + } + + /** + * {@inheritDoc} + */ + @Override + protected Control buildMainControl(Composite container) { + return buildText(container, textHolder); + } + + /** + * Creates the value holder of the subject's property. + * + * @return The holder of the class name + */ + protected abstract WritablePropertyValueModel<String> buildTextHolder(); + + /** + * Returns the message to be shown in the selection dialog. + * + * @return A non-<code>null</code> string shown above the text field of the + * selection dialog + */ + protected abstract String dialogMessage(); + + /** + * Returns the selection dialog's title. + * + * @return A non-<code>null</code> string + */ + protected abstract String dialogTitle(); + + /** + * Returns the path that the dialog will use to filter the directories it + * shows to the argument, which may be null. If the string is null, then the + * operating system's default filter path will be used. + * <p> + * Note that the path string is platform dependent. For convenience, either + * '/' or '\' can be used as a path separator. + * </p> + * + * @return The filter path + */ + protected String filterPath() { + return null; + } + + /** + * {@inheritDoc} + */ + @Override + protected void initialize() { + super.initialize(); + textHolder = buildTextHolder(); + } + + /** + * The browse button was clicked, its action invokes this action which should + * prompt the user to select a folder and set it. + */ + protected void promptFolder() { + + DirectoryDialog dialog = new DirectoryDialog(shell()); + dialog.setMessage(dialogMessage()); + dialog.setText(dialogTitle()); + dialog.setFilterPath(filterPath()); + String directory = dialog.open(); + + if (directory != null) { + textHolder.setValue(directory); + } + } +} |