diff options
Diffstat (limited to 'jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/properties/JpaProjectPropertiesPage.java')
-rw-r--r-- | jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/properties/JpaProjectPropertiesPage.java | 1806 |
1 files changed, 0 insertions, 1806 deletions
diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/properties/JpaProjectPropertiesPage.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/properties/JpaProjectPropertiesPage.java deleted file mode 100644 index 1842119db4..0000000000 --- a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/properties/JpaProjectPropertiesPage.java +++ /dev/null @@ -1,1806 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2007, 2009 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.properties; - -import java.lang.reflect.InvocationTargetException; -import java.util.ArrayList; -import java.util.Collection; -import java.util.Comparator; -import java.util.HashMap; -import java.util.HashSet; -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import java.util.Set; - -import org.eclipse.core.resources.IProject; -import org.eclipse.core.resources.IWorkspace; -import org.eclipse.core.resources.IWorkspaceRunnable; -import org.eclipse.core.resources.IncrementalProjectBuilder; -import org.eclipse.core.resources.ResourcesPlugin; -import org.eclipse.core.runtime.CoreException; -import org.eclipse.core.runtime.IProgressMonitor; -import org.eclipse.core.runtime.IStatus; -import org.eclipse.core.runtime.Status; -import org.eclipse.core.runtime.preferences.IEclipsePreferences; -import org.eclipse.core.runtime.preferences.IEclipsePreferences.IPreferenceChangeListener; -import org.eclipse.core.runtime.preferences.IEclipsePreferences.PreferenceChangeEvent; -import org.eclipse.jface.dialogs.Dialog; -import org.eclipse.jface.dialogs.ProgressMonitorDialog; -import org.eclipse.jface.operation.IRunnableWithProgress; -import org.eclipse.jpt.core.JpaDataSource; -import org.eclipse.jpt.core.JpaProject; -import org.eclipse.jpt.core.JptCorePlugin; -import org.eclipse.jpt.core.internal.JpaModelManager; -import org.eclipse.jpt.core.internal.JptCoreMessages; -import org.eclipse.jpt.core.internal.facet.JpaLibraryProviderConstants; -import org.eclipse.jpt.core.internal.platform.JpaPlatformRegistry; -import org.eclipse.jpt.db.Catalog; -import org.eclipse.jpt.db.ConnectionAdapter; -import org.eclipse.jpt.db.ConnectionListener; -import org.eclipse.jpt.db.ConnectionProfile; -import org.eclipse.jpt.db.ConnectionProfileListener; -import org.eclipse.jpt.db.Database; -import org.eclipse.jpt.db.JptDbPlugin; -import org.eclipse.jpt.db.Schema; -import org.eclipse.jpt.db.ui.internal.DTPUiTools; -import org.eclipse.jpt.ui.internal.JpaHelpContextIds; -import org.eclipse.jpt.ui.internal.JptUiMessages; -import org.eclipse.jpt.ui.internal.swt.BooleanButtonModelAdapter; -import org.eclipse.jpt.ui.internal.swt.ComboModelAdapter; -import org.eclipse.jpt.ui.internal.util.ControlEnabler; -import org.eclipse.jpt.utility.internal.CollectionTools; -import org.eclipse.jpt.utility.internal.StringConverter; -import org.eclipse.jpt.utility.internal.StringTools; -import org.eclipse.jpt.utility.internal.iterators.EmptyIterator; -import org.eclipse.jpt.utility.internal.model.value.AspectAdapter; -import org.eclipse.jpt.utility.internal.model.value.BufferedWritablePropertyValueModel; -import org.eclipse.jpt.utility.internal.model.value.CachingTransformationPropertyValueModel; -import org.eclipse.jpt.utility.internal.model.value.CollectionListValueModelAdapter; -import org.eclipse.jpt.utility.internal.model.value.CompositeCollectionValueModel; -import org.eclipse.jpt.utility.internal.model.value.CompositeListValueModel; -import org.eclipse.jpt.utility.internal.model.value.ExtendedListValueModelWrapper; -import org.eclipse.jpt.utility.internal.model.value.ListPropertyValueModelAdapter; -import org.eclipse.jpt.utility.internal.model.value.PropertyAspectAdapter; -import org.eclipse.jpt.utility.internal.model.value.PropertyCollectionValueModelAdapter; -import org.eclipse.jpt.utility.internal.model.value.PropertyListValueModelAdapter; -import org.eclipse.jpt.utility.internal.model.value.SimpleListValueModel; -import org.eclipse.jpt.utility.internal.model.value.SimplePropertyValueModel; -import org.eclipse.jpt.utility.internal.model.value.SortedListValueModelAdapter; -import org.eclipse.jpt.utility.internal.model.value.TransformationWritablePropertyValueModel; -import org.eclipse.jpt.utility.internal.model.value.BufferedWritablePropertyValueModel.Trigger; -import org.eclipse.jpt.utility.model.event.PropertyChangeEvent; -import org.eclipse.jpt.utility.model.listener.ChangeListener; -import org.eclipse.jpt.utility.model.listener.CollectionChangeListener; -import org.eclipse.jpt.utility.model.listener.PropertyChangeListener; -import org.eclipse.jpt.utility.model.value.CollectionValueModel; -import org.eclipse.jpt.utility.model.value.ListValueModel; -import org.eclipse.jpt.utility.model.value.PropertyValueModel; -import org.eclipse.jpt.utility.model.value.WritablePropertyValueModel; -import org.eclipse.jst.common.project.facet.core.libprov.LibraryInstallDelegate; -import org.eclipse.jst.common.project.facet.ui.libprov.LibraryFacetPropertyPage; -import org.eclipse.osgi.util.NLS; -import org.eclipse.swt.SWT; -import org.eclipse.swt.events.SelectionAdapter; -import org.eclipse.swt.events.SelectionEvent; -import org.eclipse.swt.layout.GridData; -import org.eclipse.swt.layout.GridLayout; -import org.eclipse.swt.widgets.Button; -import org.eclipse.swt.widgets.Combo; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Control; -import org.eclipse.swt.widgets.Group; -import org.eclipse.swt.widgets.Label; -import org.eclipse.swt.widgets.Link; -import org.eclipse.ui.PlatformUI; -import org.eclipse.wst.common.project.facet.core.IFacetedProject; -import org.eclipse.wst.common.project.facet.core.IProjectFacet; -import org.eclipse.wst.common.project.facet.core.IProjectFacetVersion; -import org.eclipse.wst.common.project.facet.core.ProjectFacetsManager; - -public class JpaProjectPropertiesPage - extends LibraryFacetPropertyPage -{ - public static final String PROP_ID = "org.eclipse.jpt.ui.jpaProjectPropertiesPage"; //$NON-NLS-1$ - - - private WritablePropertyValueModel<IProject> projectHolder; - - private PropertyValueModel<JpaProject> jpaProjectHolder; - - private Trigger trigger; - - private PropertyChangeListener validationListener; - - private BufferedWritablePropertyValueModel<String> platformIdModel; - - private BufferedWritablePropertyValueModel<String> connectionModel; - - private ListValueModel<String> connectionChoicesModel; - - private PropertyValueModel<ConnectionProfile> connectionProfileModel; - - private BufferedWritablePropertyValueModel<Boolean> overrideDefaultCatalogModel; - - private BufferedWritablePropertyValueModel<String> defaultCatalogModel; - - private WritablePropertyValueModel<String> combinedDefaultCatalogModel; - - private ListValueModel<String> catalogChoicesModel; - - private BufferedWritablePropertyValueModel<Boolean> overrideDefaultSchemaModel; - - private BufferedWritablePropertyValueModel<String> defaultSchemaModel; - - private WritablePropertyValueModel<String> combinedDefaultSchemaModel; - - private ListValueModel<String> schemaChoicesModel; - - private BufferedWritablePropertyValueModel<Boolean> discoverAnnotatedClassesModel; - - private WritablePropertyValueModel<Boolean> listAnnotatedClassesModel; - - - // ************ construction/initialization ************ - - public JpaProjectPropertiesPage() { - super(); - initialize(); - } - - protected void initialize() { - this.projectHolder = new SimplePropertyValueModel<IProject>(); - this.jpaProjectHolder = initializeJpaProjectHolder(); - this.trigger = new Trigger(); - this.validationListener = this.initializeValidationListener(); - this.platformIdModel = this.initializePlatformIdModel(); - - this.connectionModel = this.initializeConnectionModel(); - this.connectionChoicesModel = this.initializeConnectionChoicesModel(); - this.connectionProfileModel = this.initializeConnectionProfileModel(); - - this.overrideDefaultCatalogModel = this.initializeOverrideDefaultCatalogModel(); - this.defaultCatalogModel = this.initializeDefaultCatalogModel(); - this.combinedDefaultCatalogModel = this.initializeCombinedDefaultCatalogModel(); - this.catalogChoicesModel = this.initializeCatalogChoicesModel(); - - this.overrideDefaultSchemaModel = this.initializeOverrideDefaultSchemaModel(); - this.defaultSchemaModel = this.initializeDefaultSchemaModel(); - this.combinedDefaultSchemaModel = this.initializeCombinedDefaultSchemaModel(); - this.schemaChoicesModel = this.initializeSchemaChoicesModel(); - - this.discoverAnnotatedClassesModel = this.initializeDiscoverAnnotatedClassesModel(); - this.listAnnotatedClassesModel = this.initializeListAnnotatedClassesModel(); - } - - protected PropertyValueModel<JpaProject> initializeJpaProjectHolder() { - return new JpaProjectHolder(this.projectHolder); - } - - protected PropertyChangeListener initializeValidationListener() { - return new PropertyChangeListener() { - public void propertyChanged(PropertyChangeEvent event) { - if (! JpaProjectPropertiesPage.this.getControl().isDisposed()) { - updateValidation(); - } - } - }; - } - - protected BufferedWritablePropertyValueModel<String> initializePlatformIdModel() { - BufferedWritablePropertyValueModel<String> model = - new BufferedWritablePropertyValueModel( - new PlatformIdModel(this.jpaProjectHolder), this.trigger); - model.addPropertyChangeListener(PropertyValueModel.VALUE, this.validationListener); - model.addPropertyChangeListener( - PropertyValueModel.VALUE, - new PropertyChangeListener() { - public void propertyChanged(PropertyChangeEvent event) { - JpaProjectPropertiesPage.this.getLibraryInstallDelegate(). - setEnablementContextVariable( - JpaLibraryProviderConstants.EXPR_VAR_JPA_PLATFORM, - event.getNewValue()); - } - }); - return model; - } - - protected BufferedWritablePropertyValueModel<String> initializeConnectionModel() { - BufferedWritablePropertyValueModel<String> model = - new BufferedWritablePropertyValueModel( - new ConnectionModel(this.jpaProjectHolder), this.trigger); - model.addPropertyChangeListener(PropertyValueModel.VALUE, this.validationListener); - return model; - } - - protected ListValueModel<String> initializeConnectionChoicesModel() { - return new ExtendedListValueModelWrapper( - (String) null, - new SortedListValueModelAdapter( - new CollectionListValueModelAdapter( - new ConnectionChoicesModel(this.projectHolder)))); - } - - protected PropertyValueModel<ConnectionProfile> initializeConnectionProfileModel() { - return new CachingTransformationPropertyValueModel<String, ConnectionProfile>(this.connectionModel) { - @Override - protected ConnectionProfile transform_(String value) { - return JptDbPlugin.instance().getConnectionProfileFactory().buildConnectionProfile(value); - } - }; - } - - protected BufferedWritablePropertyValueModel<Boolean> initializeOverrideDefaultCatalogModel() { - BufferedWritablePropertyValueModel<Boolean> model = - new BufferedWritablePropertyValueModel( - new OverrideDefaultCatalogModel(this.jpaProjectHolder), - this.trigger); - model.addPropertyChangeListener(PropertyValueModel.VALUE, this.validationListener); - return model; - - } - - protected BufferedWritablePropertyValueModel<String> initializeDefaultCatalogModel() { - return new BufferedWritablePropertyValueModel( - new DefaultCatalogModel(this.jpaProjectHolder), - new DefaultCatalogTrigger(this.trigger, this.overrideDefaultCatalogModel)); - } - - protected WritablePropertyValueModel<String> initializeCombinedDefaultCatalogModel() { - WritablePropertyValueModel<String> model = - new CombinedDefaultCatalogModel( - this.defaultCatalogModel, - this.overrideDefaultCatalogModel, - new DefaultDefaultCatalogModel(this.connectionProfileModel)); - model.addPropertyChangeListener(PropertyValueModel.VALUE, this.validationListener); - return model; - } - - protected ListValueModel<String> initializeCatalogChoicesModel() { - Collection<CollectionValueModel> cvms = new ArrayList<CollectionValueModel>(); - cvms.add(new PropertyCollectionValueModelAdapter(this.defaultCatalogModel)); - cvms.add(new CatalogChoicesModel(this.connectionProfileModel)); - return new SortedListValueModelAdapter( - new CompositeCollectionValueModel<CollectionValueModel, String>(cvms) { - @Override - public Iterator<String> iterator() { - Set<String> uniqueValues = new HashSet<String>(); - for (String each : CollectionTools.iterable(super.iterator())) { - if (each != null) { - uniqueValues.add(each); - } - } - return uniqueValues.iterator(); - } - }); - } - - protected BufferedWritablePropertyValueModel<Boolean> initializeOverrideDefaultSchemaModel() { - BufferedWritablePropertyValueModel<Boolean> model = - new BufferedWritablePropertyValueModel( - new OverrideDefaultSchemaModel(this.jpaProjectHolder), - this.trigger); - model.addPropertyChangeListener(PropertyValueModel.VALUE, this.validationListener); - return model; - - } - - protected BufferedWritablePropertyValueModel<String> initializeDefaultSchemaModel() { - return new BufferedWritablePropertyValueModel( - new DefaultSchemaModel(this.jpaProjectHolder), - new DefaultSchemaTrigger(this.trigger, this.overrideDefaultSchemaModel)); - } - - protected WritablePropertyValueModel<String> initializeCombinedDefaultSchemaModel() { - WritablePropertyValueModel<String> model = - new CombinedDefaultSchemaModel( - this.defaultSchemaModel, - this.overrideDefaultSchemaModel, - new DefaultDefaultSchemaModel(this.connectionProfileModel)); - model.addPropertyChangeListener(PropertyValueModel.VALUE, this.validationListener); - return model; - } - - protected ListValueModel<String> initializeSchemaChoicesModel() { - Collection<CollectionValueModel> cvms = new ArrayList<CollectionValueModel>(); - cvms.add(new PropertyCollectionValueModelAdapter(this.defaultSchemaModel)); - cvms.add(new SchemaChoicesModel(this.connectionProfileModel)); - return new SortedListValueModelAdapter( - new CompositeCollectionValueModel<CollectionValueModel, String>(cvms) { - @Override - public Iterator<String> iterator() { - Set<String> uniqueValues = new HashSet<String>(); - for (String each : CollectionTools.iterable(super.iterator())) { - if (each != null) { - uniqueValues.add(each); - } - } - return uniqueValues.iterator(); - } - }); - } - - protected BufferedWritablePropertyValueModel<Boolean> initializeDiscoverAnnotatedClassesModel() { - BufferedWritablePropertyValueModel<Boolean> model = - new BufferedWritablePropertyValueModel( - new DiscoverAnnotatedClassesModel(this.jpaProjectHolder), this.trigger); - model.addPropertyChangeListener(PropertyValueModel.VALUE, this.validationListener); - return model; - } - - protected WritablePropertyValueModel<Boolean> initializeListAnnotatedClassesModel() { - return new TransformationWritablePropertyValueModel<Boolean, Boolean>( - this.discoverAnnotatedClassesModel) { - @Override - protected Boolean transform_(Boolean value) { - return ! value; - } - - @Override - protected Boolean reverseTransform_(Boolean value) { - return ! value; - } - }; - } - - // ************ queries ************ - protected JpaProject getJpaProject() { - return this.jpaProjectHolder.getValue(); - } - - protected String getJpaPlatformId() { - return this.platformIdModel.getValue(); - } - - protected String getConnectionName() { - return this.connectionModel.getValue(); - } - - protected ConnectionProfile getConnectionProfile() { - // we just use the connection profile to log in, so go to the db plug-in - return JptDbPlugin.instance().getConnectionProfileFactory(). - buildConnectionProfile(getConnectionName()); - } - - protected Boolean getOverrideDefaultCatalog() { - return this.overrideDefaultCatalogModel.getValue(); - } - - protected List<String> getDefaultCatalogChoices() { - return CollectionTools.list(this.catalogChoicesModel.iterator()); - } - - protected String getDefaultCatalog() { - return this.defaultCatalogModel.getValue(); - } - - - protected Boolean getOverrideDefaultSchema() { - return this.overrideDefaultSchemaModel.getValue(); - } - - protected List<String> getDefaultSchemaChoices() { - return CollectionTools.list(this.schemaChoicesModel.iterator()); - } - - protected String getDefaultSchema() { - return this.defaultSchemaModel.getValue(); - } - - @Override - public IProjectFacetVersion getProjectFacetVersion() { - final IProjectFacet jsfFacet = ProjectFacetsManager.getProjectFacet( "jpt.jpa" ); - final IFacetedProject fproj = getFacetedProject(); - return fproj.getInstalledVersion( jsfFacet ); - } - - @Override - protected LibraryInstallDelegate createLibraryInstallDelegate( - IFacetedProject project, IProjectFacetVersion fv) { - Map<String, Object> enablementVariables = new HashMap<String, Object>(); - enablementVariables.put( - JpaLibraryProviderConstants.EXPR_VAR_JPA_PLATFORM, ""); - return new LibraryInstallDelegate(project, fv, enablementVariables); - } - - @Override - protected Control createPageContents(Composite parent) { - this.projectHolder.setValue(getProject()); - - Composite composite = new Composite(parent, SWT.NULL); - GridLayout layout = new GridLayout(); - layout.marginWidth = 0; - layout.marginHeight = 0; - composite.setLayout(layout); - - new PlatformGroup(composite); - - Control libraryProviderComposite = super.createPageContents(composite); - libraryProviderComposite.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); - - new ConnectionGroup(composite); - new PersistentClassManagementGroup(composite); - - Dialog.applyDialogFont(composite); - PlatformUI.getWorkbench().getHelpSystem().setHelp(composite, JpaHelpContextIds.PROPERTIES_JAVA_PERSISTENCE); - - updateValidation(); - - return composite; - } - - Button createButton(Composite container, int span, String text, int style) { - Button button = new Button(container, SWT.NONE | style); - button.setText(text); - GridData gd = new GridData(); - gd.horizontalSpan = span; - button.setLayoutData(gd); - return button; - } - - Combo createCombo(Composite container, int span, boolean fillHorizontal) { - Combo combo = new Combo(container, SWT.BORDER | SWT.SINGLE | SWT.READ_ONLY); - GridData gd; - if (fillHorizontal) { - gd = new GridData(GridData.FILL_HORIZONTAL); - } - else { - gd = new GridData(); - } - gd.horizontalSpan = span; - combo.setLayoutData(gd); - return combo; - } - - @Override - public boolean performOk() { - super.performOk(); - - final IWorkspaceRunnable wr = new IWorkspaceRunnable() { - public void run(IProgressMonitor monitor) - throws CoreException { - performOkInternal(monitor); - } - }; - - IRunnableWithProgress op = new IRunnableWithProgress() { - public void run(IProgressMonitor monitor) - throws InvocationTargetException, InterruptedException { - try { - IWorkspace ws = ResourcesPlugin.getWorkspace(); - ws.run(wr, ws.getRoot(), IWorkspace.AVOID_UPDATE, monitor); - } - catch(CoreException e) { - throw new InvocationTargetException(e); - } - } - }; - - try { - new ProgressMonitorDialog(getShell()).run(true, false, op); - } - catch (InterruptedException e) { - return false; - } - catch (InvocationTargetException e) { - final Throwable te = e.getTargetException(); - throw new RuntimeException(te); - } - - return true; - } - - private void performOkInternal(IProgressMonitor monitor) - throws CoreException { - if (this.platformIdModel.isBuffering()) { - this.trigger.accept(); - JpaModelManager.instance().rebuildJpaProject(getProject()); - getProject().build(IncrementalProjectBuilder.FULL_BUILD, monitor); - } - else if (this.connectionModel.isBuffering() - || this.defaultCatalogModel.isBuffering() - || this.defaultSchemaModel.isBuffering() - || this.discoverAnnotatedClassesModel.isBuffering()) { - this.trigger.accept(); - getProject().build(IncrementalProjectBuilder.FULL_BUILD, monitor); - } - } - - @Override - protected void performDefaults() { - super.performDefaults(); - this.trigger.reset(); - } - - @Override - protected IStatus performValidation() { - Map<Integer, List<IStatus>> statuses = new HashMap<Integer, List<IStatus>>(); - statuses.put(IStatus.ERROR, new ArrayList<IStatus>()); - statuses.put(IStatus.WARNING, new ArrayList<IStatus>()); - statuses.put(IStatus.INFO, new ArrayList<IStatus>()); - statuses.put(IStatus.OK, CollectionTools.list(Status.OK_STATUS)); - - /* validate platform */ - // user is unable to unset the platform, so no validation necessary - - /* library provider */ - IStatus lpStatus = super.performValidation(); - statuses.get(lpStatus.getSeverity()).add(lpStatus); - - /* validate connection */ - String connectionName = getConnectionName(); - ConnectionProfile connectionProfile = getConnectionProfile(); - if (! StringTools.stringIsEmpty(connectionName)) { - if (connectionProfile == null) { - statuses.get(IStatus.ERROR).add( - buildErrorStatus( - NLS.bind( - JptCoreMessages.VALIDATE_CONNECTION_INVALID, - connectionName))); - } - if (! connectionProfile.isActive()) { - statuses.get(IStatus.INFO).add( - buildInfoStatus( - JptCoreMessages.VALIDATE_CONNECTION_NOT_CONNECTED)); - } - } - - /* default catalog */ - if (getOverrideDefaultCatalog()) { - String defaultCatalog = getDefaultCatalog(); - if (StringTools.stringIsEmpty(defaultCatalog)) { - statuses.get(IStatus.ERROR).add( - buildErrorStatus( - JptCoreMessages.VALIDATE_DEFAULT_CATALOG_NOT_SPECIFIED)); - } - else if (connectionProfile != null - && connectionProfile.isConnected() - && ! getDefaultCatalogChoices().contains(defaultCatalog)) { - statuses.get(IStatus.WARNING).add( - buildWarningStatus( - NLS.bind( - JptCoreMessages.VALIDATE_CONNECTION_DOESNT_CONTAIN_CATALOG, - defaultCatalog))); - } - } - - /* default schema */ - if (getOverrideDefaultSchema()) { - String defaultSchema = getDefaultSchema(); - if (StringTools.stringIsEmpty(defaultSchema)) { - statuses.get(IStatus.ERROR).add( - buildErrorStatus( - JptCoreMessages.VALIDATE_DEFAULT_SCHEMA_NOT_SPECIFIED)); - } - else if (connectionProfile != null - && connectionProfile.isConnected() - && ! getDefaultSchemaChoices().contains(defaultSchema)) { - statuses.get(IStatus.WARNING).add( - buildWarningStatus( - NLS.bind( - JptCoreMessages.VALIDATE_CONNECTION_DOESNT_CONTAIN_SCHEMA, - defaultSchema))); - } - } - - if (! statuses.get(IStatus.ERROR).isEmpty()) { - return statuses.get(IStatus.ERROR).get(0); - } - else if (! statuses.get(IStatus.WARNING).isEmpty()) { - return statuses.get(IStatus.WARNING).get(0); - } - else if (! statuses.get(IStatus.INFO).isEmpty()) { - return statuses.get(IStatus.INFO).get(0); - } - else { - return statuses.get(IStatus.OK).get(0); - } - } - - private IStatus buildInfoStatus(String message) { - return buildStatus(IStatus.INFO, message); - } - - private IStatus buildWarningStatus(String message) { - return buildStatus(IStatus.WARNING, message); - } - - private IStatus buildErrorStatus(String message) { - return buildStatus(IStatus.ERROR, message); - } - - private IStatus buildStatus(int severity, String message) { - return new Status(severity, JptCorePlugin.PLUGIN_ID, message); - } - - - private static abstract class BasePropertyAspectAdapter<S, V> - extends AspectAdapter<S> - implements WritablePropertyValueModel<V> - { - /** - * Cache the current value so we can pass an old value when we fire a - * property change event - */ - protected V value; - - - protected BasePropertyAspectAdapter(PropertyValueModel<S> subjectHolder) { - super(subjectHolder); - this.value = null; - } - - - // ************ WritablePropertyValueModel impl ************************ - - @Override - public V getValue() { - return this.value; - } - - public final void setValue(V value) { - if (this.subject != null) { - setValue_(value); - } - } - - protected void setValue_(V value) { - throw new UnsupportedOperationException("setValue"); - } - - - // ************ AspectAdapter impl ************************************* - - @Override - protected Class<? extends ChangeListener> getListenerClass() { - return PropertyChangeListener.class; - } - - @Override - protected String getListenerAspectName() { - return VALUE; - } - - @Override - protected boolean hasListeners() { - return hasAnyPropertyChangeListeners(VALUE); - } - - @Override - protected void fireAspectChange(Object oldValue, Object newValue) { - firePropertyChanged(VALUE, oldValue, newValue); - } - - @Override - protected void engageSubject_() { - this.value = buildValue(); - } - - @Override - protected void disengageSubject_() { - this.value = null; - } - - @Override - public void toString(StringBuilder sb) { - sb.append(this.getValue()); - } - - - // ************ internal *********************************************** - - protected V buildValue() { - if (this.subject != null) { - return buildValue_(); - } - return null; - } - - protected abstract V buildValue_(); - - protected void valueChanged() { - V oldValue = this.getValue(); - this.value = buildValue(); - this.fireAspectChange(oldValue, this.getValue()); - } - } - - - private abstract static class BaseCollectionAspectAdapter<S, E> - extends AspectAdapter<S> - implements CollectionValueModel<E> - { - protected BaseCollectionAspectAdapter(PropertyValueModel<? extends S> subjectHolder) { - super(subjectHolder); - } - - - // ************ ListValueModel impl ************************************ - - public Iterator<E> iterator() { - return this.subject == null ? EmptyIterator.<E>instance() : this.iterator_(); - } - - public int size() { - return this.subject == null ? 0 : this.size_(); - } - - - // ************ AspectAdapter impl ************************************* - - @Override - protected Object getValue() { - return this.iterator(); - } - - @Override - protected Class<? extends ChangeListener> getListenerClass() { - return CollectionChangeListener.class; - } - - @Override - protected String getListenerAspectName() { - return VALUES; - } - - @Override - protected boolean hasListeners() { - return this.hasAnyCollectionChangeListeners(VALUES); - } - - @Override - protected void fireAspectChange(Object oldValue, Object newValue) { - this.fireCollectionChanged(VALUES); - } - - - // ************ internal *********************************************** - - protected Iterator<E> iterator_() { - throw new UnsupportedOperationException(); - } - - protected int size_() { - return CollectionTools.size(this.iterator()); - } - - protected void collectionChanged() { - this.fireCollectionChanged(VALUES); - } - } - - - private static class JpaProjectHolder - extends BasePropertyAspectAdapter<IProject, JpaProject> - { - /** - * Listens to the preferences to determine if the project's platform - * has changed, and is therefore a new JPA project - */ - private IPreferenceChangeListener platformChangeListener; - - - private JpaProjectHolder(PropertyValueModel<IProject> projectHolder) { - super(projectHolder); - this.platformChangeListener = buildPlatformChangeListener(); - } - - - // ************ initialization ***************************************** - - private IPreferenceChangeListener buildPlatformChangeListener() { - return new IPreferenceChangeListener() { - public void preferenceChange(PreferenceChangeEvent event) { - if (JptCorePlugin.JPA_PLATFORM.equals(event.getKey())) { - JpaProjectHolder.this.valueChanged(); - } - } - }; - } - - - // ************ AspectAdapter impl ************************************* - - @Override - protected void engageSubject_() { - IEclipsePreferences preferences = JptCorePlugin.getProjectPreferences(this.subject); - preferences.addPreferenceChangeListener(this.platformChangeListener); - super.engageSubject_(); - } - - @Override - protected void disengageSubject_() { - IEclipsePreferences preferences = JptCorePlugin.getProjectPreferences(this.subject); - preferences.removePreferenceChangeListener(this.platformChangeListener); - super.disengageSubject_(); - } - - - // ************ internal *********************************************** - - @Override - protected JpaProject buildValue_() { - return JptCorePlugin.getJpaProject(this.subject); - } - } - - - private static class PlatformIdModel - extends BasePropertyAspectAdapter<JpaProject, String> - { - private PlatformIdModel(PropertyValueModel<JpaProject> jpaProjectHolder) { - super(jpaProjectHolder); - } - - - // ************ WritablePropertyValueModel impl ************************ - - @Override - public void setValue_(String newPlatformId) { - JptCorePlugin.setJpaPlatformId(this.subject.getProject(), newPlatformId); - } - - - // ************ internal *********************************************** - - @Override - protected String buildValue_() { - return JptCorePlugin.getJpaPlatformId(this.subject.getProject()); - } - } - - - private final class PlatformGroup - { - private PlatformGroup(Composite composite) { - Group group = new Group(composite, SWT.NONE); - group.setText(JptUiMessages.JpaFacetWizardPage_platformLabel); - group.setLayout(new GridLayout()); - group.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); - - Combo platformCombo = createCombo(group, 1, true); - - ComboModelAdapter.adapt( - buildPlatformChoicesListValueModel(), - JpaProjectPropertiesPage.this.platformIdModel, - platformCombo, - buildPlatformLabelConverter()); - } - - - private ListValueModel<String> buildPlatformChoicesListValueModel() { - return new SortedListValueModelAdapter<String>( - new SimpleListValueModel<String>( - CollectionTools.list(JpaPlatformRegistry.instance().jpaPlatformIds())), - new Comparator<String>() { - public int compare(String o1, String o2) { - return JpaPlatformRegistry.instance().getJpaPlatformLabel(o1). - compareTo(JpaPlatformRegistry.instance().getJpaPlatformLabel(o2)); - } - }); - } - - private StringConverter<String> buildPlatformLabelConverter() { - return new StringConverter<String>() { - public String convertToString(String platformId) { - return JpaPlatformRegistry.instance().getJpaPlatformLabel(platformId); - } - }; - } - } - - - private static class ConnectionModel - extends BasePropertyAspectAdapter<JpaProject, String> - { - private PropertyChangeListener connectionChangeListener; - - - private ConnectionModel(PropertyValueModel<JpaProject> jpaProjectHolder) { - super(jpaProjectHolder); - this.connectionChangeListener = buildConnectionChangeListener(); - } - - - // ************ initialization ***************************************** - - private PropertyChangeListener buildConnectionChangeListener() { - return new PropertyChangeListener() { - public void propertyChanged(PropertyChangeEvent event) { - ConnectionModel.this.valueChanged(); - } - }; - } - - - // ************ WritablePropertyValueModel impl ************************ - - @Override - public void setValue_(String newConnection) { - this.subject.getDataSource().setConnectionProfileName(newConnection); - } - - - // ************ AspectAdapter impl ************************************* - - @Override - protected void engageSubject_() { - JpaDataSource dataSource = this.subject.getDataSource(); - dataSource.addPropertyChangeListener(JpaDataSource.CONNECTION_PROFILE_NAME_PROPERTY, this.connectionChangeListener); - super.engageSubject_(); - } - - @Override - protected void disengageSubject_() { - JpaDataSource dataSource = this.subject.getDataSource(); - dataSource.removePropertyChangeListener(JpaDataSource.CONNECTION_PROFILE_NAME_PROPERTY, this.connectionChangeListener); - super.disengageSubject_(); - } - - - // ************ internal *********************************************** - - @Override - protected String buildValue_() { - return this.subject.getDataSource().getConnectionProfileName(); - } - } - - - private static class ConnectionChoicesModel - extends BaseCollectionAspectAdapter<IProject, String> - { - private ConnectionProfileListener connectionProfileListener; - - - private ConnectionChoicesModel(PropertyValueModel<IProject> subjectHolder) { - super(subjectHolder); - this.connectionProfileListener = buildConnectionProfileListener(); - } - - - // ************ initialization ***************************************** - - private ConnectionProfileListener buildConnectionProfileListener() { - return new ConnectionProfileListener() { - public void connectionProfileAdded(String name) { - collectionChanged(); - } - - public void connectionProfileRemoved(String name) { - collectionChanged(); - } - - public void connectionProfileRenamed(String oldName, String newName) { - // ignore this event for now. connecting a profile actually - // throws a connection renamed event, which messes up the - // list selection. there shouldn't be a connection renamed - // within the scope of this dialog anyhow. - // collectionChanged(); - } - }; - } - - - // ************ AspectAdapter impl ************************************* - - @Override - protected void engageSubject_() { - JptDbPlugin.instance().getConnectionProfileFactory(). - addConnectionProfileListener(this.connectionProfileListener); - } - - @Override - protected void disengageSubject_() { - JptDbPlugin.instance().getConnectionProfileFactory(). - removeConnectionProfileListener(this.connectionProfileListener); - } - - - // ************ internal *********************************************** - - @Override - protected Iterator<String> iterator_() { - return JptDbPlugin.instance().getConnectionProfileFactory().connectionProfileNames(); - } - } - - - // ************ Catalog ************ - private static class OverrideDefaultCatalogModel - extends BasePropertyAspectAdapter<JpaProject, Boolean> - { - // the superclass "value" is the *cached* value - private Boolean actualValue; - - - private OverrideDefaultCatalogModel(PropertyValueModel<JpaProject> jpaProjectHolder) { - super(jpaProjectHolder); - } - - - // ************ WritablePropertyValueModel impl ************************ - - @Override - public Boolean getValue() { - Boolean value = super.getValue(); - return (value == null) ? Boolean.FALSE : value; - } - - @Override - public void setValue_(Boolean newValue) { - this.actualValue = newValue; - valueChanged(); - } - - - // ************ AspectAdapter impl ************************************* - - @Override - protected void engageSubject_() { - this.actualValue = this.buildActualValue_(); - super.engageSubject_(); - } - - @Override - protected void disengageSubject_() { - this.actualValue = null; - super.disengageSubject_(); - } - - - // ************ internal *********************************************** - - @Override - protected Boolean buildValue_() { - return this.actualValue; - } - - protected Boolean buildActualValue_() { - return ! StringTools.stringIsEmpty(this.subject.getUserOverrideDefaultCatalog()); - } - } - - - private static class DefaultCatalogModel - extends PropertyAspectAdapter<JpaProject, String> - { - private DefaultCatalogModel(PropertyValueModel<JpaProject> jpaProjectModel) { - super(jpaProjectModel, JpaProject.USER_OVERRIDE_DEFAULT_CATALOG_PROPERTY); - } - - - // ************ WritablePropertyValueModel impl ************************ - - @Override - public void setValue_(String newCatalog) { - this.subject.setUserOverrideDefaultCatalog(newCatalog); - } - - - // ************ internal *********************************************** - - @Override - protected String buildValue_() { - return this.subject.getUserOverrideDefaultCatalog(); - } - } - - private static class DefaultDefaultCatalogModel - extends BasePropertyAspectAdapter<ConnectionProfile, String> - { - private ConnectionListener connectionListener; - - - private DefaultDefaultCatalogModel( - PropertyValueModel<ConnectionProfile> connectionProfileModel) { - super(connectionProfileModel); - this.connectionListener = buildConnectionListener(); - } - - - // ************ initialization ***************************************** - - private ConnectionListener buildConnectionListener() { - return new ConnectionAdapter() { - @Override - public void opened(ConnectionProfile profile) { - if (profile.equals(DefaultDefaultCatalogModel.this.subject)) { - valueChanged(); - } - } - @Override - public void catalogChanged(ConnectionProfile profile, Catalog catalog) { - if (profile.equals(DefaultDefaultCatalogModel.this.subject)) { - valueChanged(); - } - } - }; - } - - - // ************ AspectAdapter impl ************************************* - - @Override - protected void engageSubject_() { - this.subject.addConnectionListener(this.connectionListener); - super.engageSubject_(); - } - - @Override - protected void disengageSubject_() { - this.subject.removeConnectionListener(this.connectionListener); - super.disengageSubject_(); - } - - - // ************ internal *********************************************** - - @Override - protected String buildValue_() { - Database db = this.subject.getDatabase(); - if (db == null) { - return null; - } - Catalog catalog = db.getDefaultCatalog(); - return (catalog == null) ? null : catalog.getIdentifier(); - } - } - - private static class CombinedDefaultCatalogModel - extends ListPropertyValueModelAdapter<String> - implements WritablePropertyValueModel<String> - { - private WritablePropertyValueModel<String> defaultCatalogModel; - - private PropertyValueModel<Boolean> overrideDefaultCatalogModel; - - private PropertyValueModel<String> defaultDefaultCatalogModel; - - - private CombinedDefaultCatalogModel( - WritablePropertyValueModel<String> defaultCatalogModel, - PropertyValueModel<Boolean> overrideDefaultCatalogModel, - PropertyValueModel<String> defaultDefaultCatalogModel) { - super( - new CompositeListValueModel( - CollectionTools.list( - new PropertyListValueModelAdapter<String>(defaultCatalogModel), - new PropertyListValueModelAdapter<Boolean>(overrideDefaultCatalogModel), - new PropertyListValueModelAdapter<String>(defaultDefaultCatalogModel) - ))); - this.defaultCatalogModel = defaultCatalogModel; - this.overrideDefaultCatalogModel = overrideDefaultCatalogModel; - this.defaultDefaultCatalogModel = defaultDefaultCatalogModel; - } - - - // ************ ListPropertyValueModelAdapter impl ********************* - - @Override - protected String buildValue() { - if (this.overrideDefaultCatalogModel.getValue()) { - return this.defaultCatalogModel.getValue(); - } - else { - return this.defaultDefaultCatalogModel.getValue(); - } - } - - - // ************ WritablePropertyValueModel impl ************************ - - public void setValue(String value) { - if (this.overrideDefaultCatalogModel.getValue()) { - this.defaultCatalogModel.setValue(value); - } - propertyChanged(); - } - } - - - private static class DefaultCatalogTrigger - extends Trigger - { - private Trigger parentTrigger; - - private PropertyValueModel<Boolean> overrideDefaultCatalogModel; - - - private DefaultCatalogTrigger( - Trigger parentTrigger, - PropertyValueModel<Boolean> overrideDefaultCatalogModel) { - super(); - this.parentTrigger = parentTrigger; - this.parentTrigger.addPropertyChangeListener( - VALUE, - new PropertyChangeListener() { - public void propertyChanged(PropertyChangeEvent event) { - respondToParent(); - } - }); - this.overrideDefaultCatalogModel = overrideDefaultCatalogModel; - this.overrideDefaultCatalogModel.addPropertyChangeListener( - VALUE, - new PropertyChangeListener() { - public void propertyChanged(PropertyChangeEvent event) { - respondToOverride(); - } - }); - } - - - protected void respondToParent() { - if (this.parentTrigger.isAccepted()) { - if (this.overrideDefaultCatalogModel.getValue()) { - accept(); - } - } - else if (this.parentTrigger.isReset()) { - reset(); - } - } - - protected void respondToOverride() { - if (! this.overrideDefaultCatalogModel.getValue()) { - reset(); - } - } - } - - - private static class CatalogChoicesModel - extends BaseCollectionAspectAdapter<ConnectionProfile, String> - { - private ConnectionListener connectionListener; - - - private CatalogChoicesModel(PropertyValueModel<ConnectionProfile> subjectHolder) { - super(subjectHolder); - this.connectionListener = buildConnectionListener(); - } - - - // ************ initialization ***************************************** - - private ConnectionListener buildConnectionListener() { - return new ConnectionAdapter() { - @Override - public void opened(ConnectionProfile profile) { - if (profile.equals(CatalogChoicesModel.this.subject)) { - collectionChanged(); - } - } - @Override - public void catalogChanged(ConnectionProfile profile, Catalog catalog) { - if (profile.equals(CatalogChoicesModel.this.subject)) { - collectionChanged(); - } - } - }; - } - - - // ************ AspectAdapter impl ************************************* - - @Override - protected void engageSubject_() { - this.subject.addConnectionListener(this.connectionListener); - } - - @Override - protected void disengageSubject_() { - this.subject.removeConnectionListener(this.connectionListener); - } - - - // ************ internal *********************************************** - - @Override - protected Iterator<String> iterator_() { - return (this.subject.getDatabase() == null) ? - EmptyIterator.<String>instance() : - this.subject.getDatabase().sortedCatalogIdentifiers(); - } - } - - - // ************ Schema ************ - private static class OverrideDefaultSchemaModel - extends BasePropertyAspectAdapter<JpaProject, Boolean> - { - // the superclass "value" is the *cached* value - private Boolean actualValue; - - - private OverrideDefaultSchemaModel(PropertyValueModel<JpaProject> jpaProjectHolder) { - super(jpaProjectHolder); - } - - - // ************ WritablePropertyValueModel impl ************************ - - @Override - public Boolean getValue() { - Boolean value = super.getValue(); - return (value == null) ? Boolean.FALSE : value; - } - - @Override - public void setValue_(Boolean newValue) { - this.actualValue = newValue; - valueChanged(); - } - - - // ************ AspectAdapter impl ************************************* - - @Override - protected void engageSubject_() { - this.actualValue = this.buildActualValue_(); - super.engageSubject_(); - } - - @Override - protected void disengageSubject_() { - this.actualValue = null; - super.disengageSubject_(); - } - - - // ************ internal *********************************************** - - @Override - protected Boolean buildValue_() { - return this.actualValue; - } - - protected Boolean buildActualValue_() { - return ! StringTools.stringIsEmpty(this.subject.getUserOverrideDefaultSchema()); - } - } - - - private static class DefaultSchemaModel - extends PropertyAspectAdapter<JpaProject, String> - { - private DefaultSchemaModel(PropertyValueModel<JpaProject> jpaProjectModel) { - super(jpaProjectModel, JpaProject.USER_OVERRIDE_DEFAULT_SCHEMA_PROPERTY); - } - - - // ************ WritablePropertyValueModel impl ************************ - - @Override - public void setValue_(String newSchema) { - this.subject.setUserOverrideDefaultSchema(newSchema); - } - - - // ************ internal *********************************************** - - @Override - protected String buildValue_() { - return this.subject.getUserOverrideDefaultSchema(); - } - } - - - private static class DefaultDefaultSchemaModel - extends BasePropertyAspectAdapter<ConnectionProfile, String> - { - private ConnectionListener connectionListener; - - - private DefaultDefaultSchemaModel( - PropertyValueModel<ConnectionProfile> connectionProfileModel) { - super(connectionProfileModel); - this.connectionListener = buildConnectionListener(); - } - - - // ************ initialization ***************************************** - - private ConnectionListener buildConnectionListener() { - return new ConnectionAdapter() { - @Override - public void opened(ConnectionProfile profile) { - if (profile.equals(DefaultDefaultSchemaModel.this.subject)) { - valueChanged(); - } - } - @Override - public void schemaChanged(ConnectionProfile profile, Schema schema) { - if (profile.equals(DefaultDefaultSchemaModel.this.subject)) { - valueChanged(); - } - } - }; - } - - - // ************ AspectAdapter impl ************************************* - - @Override - protected void engageSubject_() { - this.subject.addConnectionListener(this.connectionListener); - super.engageSubject_(); - } - - @Override - protected void disengageSubject_() { - this.subject.removeConnectionListener(this.connectionListener); - super.disengageSubject_(); - } - - - // ************ internal *********************************************** - - @Override - protected String buildValue_() { - Database db = this.subject.getDatabase(); - if (db == null) { - return null; - } - Schema schema = db.getDefaultSchema(); - return (schema == null) ? null : schema.getIdentifier(); - } - } - - - private static class CombinedDefaultSchemaModel - extends ListPropertyValueModelAdapter<String> - implements WritablePropertyValueModel<String> - { - private WritablePropertyValueModel<String> defaultSchemaModel; - - private PropertyValueModel<Boolean> overrideDefaultSchemaModel; - - private PropertyValueModel<String> defaultDefaultSchemaModel; - - - private CombinedDefaultSchemaModel( - WritablePropertyValueModel<String> defaultSchemaModel, - PropertyValueModel<Boolean> overrideDefaultSchemaModel, - PropertyValueModel<String> defaultDefaultSchemaModel) { - super( - new CompositeListValueModel( - CollectionTools.list( - new PropertyListValueModelAdapter<String>(defaultSchemaModel), - new PropertyListValueModelAdapter<Boolean>(overrideDefaultSchemaModel), - new PropertyListValueModelAdapter<String>(defaultDefaultSchemaModel) - ))); - this.defaultSchemaModel = defaultSchemaModel; - this.overrideDefaultSchemaModel = overrideDefaultSchemaModel; - this.defaultDefaultSchemaModel = defaultDefaultSchemaModel; - } - - - // ************ ListPropertyValueModelAdapter impl ********************* - - @Override - protected String buildValue() { - if (this.overrideDefaultSchemaModel.getValue()) { - return this.defaultSchemaModel.getValue(); - } - else { - return this.defaultDefaultSchemaModel.getValue(); - } - } - - - // ************ WritablePropertyValueModel impl ************************ - - public void setValue(String value) { - if (this.overrideDefaultSchemaModel.getValue()) { - this.defaultSchemaModel.setValue(value); - } - propertyChanged(); - } - } - - - private static class DefaultSchemaTrigger - extends Trigger - { - private Trigger parentTrigger; - - private PropertyValueModel<Boolean> overrideDefaultSchemaModel; - - - private DefaultSchemaTrigger( - Trigger parentTrigger, - PropertyValueModel<Boolean> overrideDefaultSchemaModel) { - super(); - this.parentTrigger = parentTrigger; - this.parentTrigger.addPropertyChangeListener( - VALUE, - new PropertyChangeListener() { - public void propertyChanged(PropertyChangeEvent event) { - respondToParent(); - } - }); - this.overrideDefaultSchemaModel = overrideDefaultSchemaModel; - this.overrideDefaultSchemaModel.addPropertyChangeListener( - VALUE, - new PropertyChangeListener() { - public void propertyChanged(PropertyChangeEvent event) { - respondToOverride(); - } - }); - } - - - protected void respondToParent() { - if (this.parentTrigger.isAccepted()) { - if (this.overrideDefaultSchemaModel.getValue()) { - accept(); - } - } - else if (this.parentTrigger.isReset()) { - reset(); - } - } - - protected void respondToOverride() { - if (! this.overrideDefaultSchemaModel.getValue()) { - reset(); - } - } - } - - - private static class SchemaChoicesModel - extends BaseCollectionAspectAdapter<ConnectionProfile, String> - { - private ConnectionListener connectionListener; - - - private SchemaChoicesModel(PropertyValueModel<ConnectionProfile> subjectHolder) { - super(subjectHolder); - this.connectionListener = buildConnectionListener(); - } - - - // ************ initialization ***************************************** - - private ConnectionListener buildConnectionListener() { - return new ConnectionAdapter() { - @Override - public void opened(ConnectionProfile profile) { - if (profile.equals(SchemaChoicesModel.this.subject)) { - collectionChanged(); - } - } - @Override - public void schemaChanged(ConnectionProfile profile, Schema schema) { - if (profile.equals(SchemaChoicesModel.this.subject)) { - collectionChanged(); - } - } - }; - } - - - // ************ AspectAdapter impl ************************************* - - @Override - protected void engageSubject_() { - this.subject.addConnectionListener(this.connectionListener); - } - - @Override - protected void disengageSubject_() { - this.subject.removeConnectionListener(this.connectionListener); - } - - - // ************ internal *********************************************** - - @Override - protected Iterator<String> iterator_() { - return (this.subject.getDatabase() == null) ? - EmptyIterator.<String>instance() : - this.subject.getDatabase().sortedSchemaIdentifiers(); - } - } - - - private final class ConnectionGroup - { - private Link connectLink; - - - public ConnectionGroup(Composite composite) { - Group group = new Group(composite, SWT.NONE); - group.setText(JptUiMessages.JpaFacetWizardPage_connectionLabel); - group.setLayout(new GridLayout(3, false)); - group.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); - - PlatformUI.getWorkbench().getHelpSystem().setHelp(group, JpaHelpContextIds.PROPERTIES_JAVA_PERSISTENCE_CONNECTION); - - Combo connectionCombo = createCombo(group, 3, true); - - ComboModelAdapter.adapt( - JpaProjectPropertiesPage.this.connectionChoicesModel, - JpaProjectPropertiesPage.this.connectionModel, - connectionCombo, - new StringConverter<String>() { - public String convertToString(String o) { - return (o == null) ? - JptUiMessages.JpaFacetWizardPage_none : - o; - } - }); - - Link connectionLink = new Link(group, SWT.NONE); - GridData data = new GridData(GridData.END, GridData.CENTER, false, false); - data.horizontalSpan = 2; - connectionLink.setLayoutData(data); - connectionLink.setText(JptUiMessages.JpaFacetWizardPage_connectionLink); - connectionLink.addSelectionListener( - new SelectionAdapter() { - @Override - public void widgetSelected(SelectionEvent e) { - openNewConnectionWizard(); - } - } - ); - - connectLink = new Link(group, SWT.NONE); - data = new GridData(GridData.END, GridData.CENTER, false, false); - data.horizontalSpan = 2; - connectLink.setLayoutData(data); - connectLink.setText(JptUiMessages.JpaFacetWizardPage_connectLink); - updateConnectLink(); - connectLink.addSelectionListener( - new SelectionAdapter() { - @Override - public void widgetSelected(SelectionEvent e) { - openConnectionProfile(); - } - }); - - PropertyChangeListener linkUpdateListener = new PropertyChangeListener() { - public void propertyChanged(PropertyChangeEvent event) { - updateConnectLink(); - } - }; - JpaProjectPropertiesPage.this.connectionModel.addPropertyChangeListener( - PropertyValueModel.VALUE, - linkUpdateListener); - - // overrideDefaultCatalog - Button overrideDefaultCatalogButton = createButton( - group, 3, - JptUiMessages.JpaFacetWizardPage_overrideDefaultCatalogLabel, - SWT.CHECK); - - BooleanButtonModelAdapter.adapt( - JpaProjectPropertiesPage.this.overrideDefaultCatalogModel, - overrideDefaultCatalogButton); - - Label defaultCatalogLabel = new Label(group, SWT.LEFT); - defaultCatalogLabel.setText(JptUiMessages.JpaFacetWizardPage_defaultCatalogLabel); - GridData gd = new GridData(); - gd.horizontalSpan = 1; - defaultCatalogLabel.setLayoutData(gd); - - Combo defaultCatalogCombo = createCombo(group, 1, true); - - ComboModelAdapter.adapt( - JpaProjectPropertiesPage.this.catalogChoicesModel, - JpaProjectPropertiesPage.this.combinedDefaultCatalogModel, - defaultCatalogCombo); - - new ControlEnabler( - JpaProjectPropertiesPage.this.overrideDefaultCatalogModel, - defaultCatalogLabel, defaultCatalogCombo); - - // overrideDefaultSchema - Button overrideDefaultSchemaButton = createButton( - group, 3, - JptUiMessages.JpaFacetWizardPage_overrideDefaultSchemaLabel, - SWT.CHECK); - - BooleanButtonModelAdapter.adapt( - JpaProjectPropertiesPage.this.overrideDefaultSchemaModel, - overrideDefaultSchemaButton); - - Label defaultSchemaLabel = new Label(group, SWT.LEFT); - defaultSchemaLabel.setText(JptUiMessages.JpaFacetWizardPage_defaultSchemaLabel); - gd = new GridData(); - gd.horizontalSpan = 1; - defaultSchemaLabel.setLayoutData(gd); - - Combo defaultSchemaCombo = createCombo(group, 1, true); - - ComboModelAdapter.adapt( - JpaProjectPropertiesPage.this.schemaChoicesModel, - JpaProjectPropertiesPage.this.combinedDefaultSchemaModel, - defaultSchemaCombo); - - new ControlEnabler( - JpaProjectPropertiesPage.this.overrideDefaultSchemaModel, - defaultSchemaLabel, defaultSchemaCombo); - } - - private void openNewConnectionWizard() { - String connectionName = DTPUiTools.createNewConnectionProfile(); - if (connectionName != null) { - JpaProjectPropertiesPage.this.connectionModel.setValue(connectionName); - } - } - - private void openConnectionProfile() { - ConnectionProfile cp = JpaProjectPropertiesPage.this.getConnectionProfile(); - if (cp != null) { - cp.connect(); - } - updateConnectLink(); - } - - private void updateConnectLink() { - if (! getControl().isDisposed()) { - ConnectionProfile cp = getConnectionProfile(); - this.connectLink.setEnabled((cp != null) && cp.isDisconnected()); - } - } - } - - - private class DiscoverAnnotatedClassesModel - extends PropertyAspectAdapter<JpaProject, Boolean> - { - private DiscoverAnnotatedClassesModel(PropertyValueModel<JpaProject> jpaProjectModel) { - super(jpaProjectModel, JpaProject.DISCOVERS_ANNOTATED_CLASSES_PROPERTY); - } - - - // ************ WritablePropertyValueModel impl ************************ - - @Override - protected void setValue_(Boolean newValue) { - this.subject.setDiscoversAnnotatedClasses(newValue); - } - - - // ************ internal *********************************************** - - @Override - protected Boolean buildValue_() { - return this.subject.discoversAnnotatedClasses(); - } - } - - - private final class PersistentClassManagementGroup - { - public PersistentClassManagementGroup(Composite composite) { - Group group = new Group(composite, SWT.NONE); - group.setText(JptUiMessages.JpaFacetWizardPage_persistentClassManagementLabel); - group.setLayout(new GridLayout()); - group.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); - PlatformUI.getWorkbench().getHelpSystem().setHelp(group, JpaHelpContextIds.NEW_JPA_PROJECT_CONTENT_PAGE_CLASSPATH); - - Button discoverClassesButton = createButton(group, 1, JptUiMessages.JpaFacetWizardPage_discoverClassesButton, SWT.RADIO); - - BooleanButtonModelAdapter.adapt( - JpaProjectPropertiesPage.this.discoverAnnotatedClassesModel, - discoverClassesButton); - - Button listClassesButton = createButton(group, 1, JptUiMessages.JpaFacetWizardPage_listClassesButton, SWT.RADIO); - - BooleanButtonModelAdapter.adapt( - JpaProjectPropertiesPage.this.listAnnotatedClassesModel, - listClassesButton); - } - } -} |