diff options
author | kmoore | 2012-07-09 18:51:19 +0000 |
---|---|---|
committer | kmoore | 2012-07-09 18:51:19 +0000 |
commit | 3e668baf6594649efb222062b0f4418aeb3b45c3 (patch) | |
tree | e39ced8a49cc79079cb014aca0d1e764fbb6ff1a /jpa | |
parent | 541810122754d99b8319c61ac0e0f62b685151f7 (diff) | |
download | webtools.dali-3e668baf6594649efb222062b0f4418aeb3b45c3.tar.gz webtools.dali-3e668baf6594649efb222062b0f4418aeb3b45c3.tar.xz webtools.dali-3e668baf6594649efb222062b0f4418aeb3b45c3.zip |
Bug 379764 - JPA Details view causes SWT no more handles error
also fixes bugs:
281677 - add remove lists - selection problems
297867 - Order column section is editable after removing an attribute from orm.xml
379274 - State of components of secondary tables section retained cross entities
Diffstat (limited to 'jpa')
494 files changed, 15622 insertions, 17457 deletions
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/persistence/PersistenceUnit.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/persistence/PersistenceUnit.java index d8560f5714..91ab9bcc59 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/persistence/PersistenceUnit.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/context/persistence/PersistenceUnit.java @@ -356,6 +356,11 @@ public interface PersistenceUnit void removeSpecifiedClassRef(ClassRef classRef); /** + * Remove the specified class refs from the persistence unit. + */ + void removeSpecifiedClassRefs(Iterable<ClassRef> classRefs); + + /** * Remove the specified class ref at the specified index from the persistence unit. */ void removeSpecifiedClassRef(int index); diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/persistence/AbstractPersistenceUnit.java b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/persistence/AbstractPersistenceUnit.java index b6a38d1fe9..437223f8cb 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/persistence/AbstractPersistenceUnit.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.core/src/org/eclipse/jpt/jpa/core/internal/context/persistence/AbstractPersistenceUnit.java @@ -834,7 +834,7 @@ public abstract class AbstractPersistenceUnit this.specifiedClassRefContainer.removeContextElement(index).dispose(); } - protected void removeSpecifiedClassRefs(Iterable<ClassRef> classRefs) { + public void removeSpecifiedClassRefs(Iterable<ClassRef> classRefs) { ArrayList<XmlJavaClassRef> xmlClassRefs = new ArrayList<XmlJavaClassRef>(); for (ClassRef classRef : classRefs) { xmlClassRefs.add(classRef.getXmlClassRef()); diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/META-INF/MANIFEST.MF b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/META-INF/MANIFEST.MF index f8834024f7..a0c3393f39 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/META-INF/MANIFEST.MF +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/META-INF/MANIFEST.MF @@ -52,17 +52,11 @@ Export-Package: org.eclipse.jpt.jpa.eclipselink.ui, org.eclipse.jpt.jpa.eclipselink.ui.internal.persistence.connection;x-internal:=true, org.eclipse.jpt.jpa.eclipselink.ui.internal.persistence.customization;x-internal:=true, org.eclipse.jpt.jpa.eclipselink.ui.internal.persistence.general;x-internal:=true, - org.eclipse.jpt.jpa.eclipselink.ui.internal.persistence.logging;x-internal:=true, org.eclipse.jpt.jpa.eclipselink.ui.internal.persistence.options;x-internal:=true, - org.eclipse.jpt.jpa.eclipselink.ui.internal.persistence.schema.generation;x-internal:=true, org.eclipse.jpt.jpa.eclipselink.ui.internal.persistencexml.details;x-internal:=true, org.eclipse.jpt.jpa.eclipselink.ui.internal.platform;x-internal:=true, org.eclipse.jpt.jpa.eclipselink.ui.internal.structure;x-internal:=true, org.eclipse.jpt.jpa.eclipselink.ui.internal.v2_0.persistence;x-internal:=true, - org.eclipse.jpt.jpa.eclipselink.ui.internal.v2_0.persistence.caching;x-internal:=true, - org.eclipse.jpt.jpa.eclipselink.ui.internal.v2_0.persistence.customization;x-internal:=true, - org.eclipse.jpt.jpa.eclipselink.ui.internal.v2_0.persistence.logging;x-internal:=true, - org.eclipse.jpt.jpa.eclipselink.ui.internal.v2_0.persistence.options;x-internal:=true, org.eclipse.jpt.jpa.eclipselink.ui.internal.weave;x-internal:=true, org.eclipse.jpt.jpa.eclipselink.ui.internal.wizards;x-internal:=true, org.eclipse.jpt.jpa.eclipselink.ui.internal.wizards.conversion.java;x-internal:=true, diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/property_files/eclipselink_ui.properties b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/property_files/eclipselink_ui.properties index 66c0b2e5a8..b80e4161a6 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/property_files/eclipselink_ui.properties +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/property_files/eclipselink_ui.properties @@ -179,6 +179,8 @@ FlushClearCacheComposite_merge = Merge PersistenceXmlCustomizationTab_title = Customization PersistenceXmlCustomizationTab_sectionTitle = Persistence Unit Customization PersistenceXmlCustomizationTab_sectionDescription = Set default or entity specific EclipseLink customization and validation properties. +PersistenceXmlCustomizationTab_otherSection = Other +PersistenceXmlCustomizationTab_customizersSection = Customizers PersistenceXmlCustomizationTab_weavingPropertiesGroupBox = Weaving PersistenceXmlCustomizationTab_weavingLabel = Weaving: diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/EclipseLinkUiMessages.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/EclipseLinkUiMessages.java index ab090c7f50..9c92fd2f43 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/EclipseLinkUiMessages.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/EclipseLinkUiMessages.java @@ -187,6 +187,9 @@ public class EclipseLinkUiMessages { public static String PersistenceXmlCustomizationTab_sectionTitle; public static String PersistenceXmlCustomizationTab_sectionDescription; + public static String PersistenceXmlCustomizationTab_otherSection; + public static String PersistenceXmlCustomizationTab_customizersSection; + public static String PersistenceXmlCustomizationTab_weavingPropertiesGroupBox; public static String PersistenceXmlCustomizationTab_weavingLabel; diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkAlwaysRefreshComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkAlwaysRefreshComposite.java deleted file mode 100644 index 769bd0ce67..0000000000 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkAlwaysRefreshComposite.java +++ /dev/null @@ -1,101 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2008, 2012 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.jpa.eclipselink.ui.internal.details; - -import org.eclipse.jpt.common.ui.internal.JptCommonUiMessages; -import org.eclipse.jpt.common.ui.internal.widgets.Pane; -import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter; -import org.eclipse.jpt.common.utility.internal.model.value.TransformationPropertyValueModel; -import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; -import org.eclipse.jpt.common.utility.model.value.ModifiablePropertyValueModel; -import org.eclipse.jpt.jpa.eclipselink.core.context.EclipseLinkCaching; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.EclipseLinkHelpContextIds; -import org.eclipse.osgi.util.NLS; -import org.eclipse.swt.widgets.Composite; - - -/** - * This composite simply shows a tri-state check box for the Always Refresh option. - * - * @see EclipseLinkCaching - * @see EclipseLinkCachingComposite - A container of this widget - * - * @version 2.1 - * @since 2.1 - */ -public class EclipseLinkAlwaysRefreshComposite extends Pane<EclipseLinkCaching> -{ - /** - * Creates a new <code>OptionalComposite</code>. - * - * @param parentPane The parent container of this one - * @param parent The parent container - */ - public EclipseLinkAlwaysRefreshComposite(Pane<? extends EclipseLinkCaching> parentPane, - Composite parent) - { - super(parentPane, parent); - } - - @Override - protected void initializeLayout(Composite container) { - - addTriStateCheckBoxWithDefault( - container, - EclipseLinkUiDetailsMessages.EclipseLinkAlwaysRefreshComposite_alwaysRefreshLabel, - buildAlwaysRefreshHolder(), - buildAlwaysRefreshStringHolder(), - EclipseLinkHelpContextIds.CACHING_ALWAYS_REFRESH - ); - } - - private ModifiablePropertyValueModel<Boolean> buildAlwaysRefreshHolder() { - return new PropertyAspectAdapter<EclipseLinkCaching, Boolean>(getSubjectHolder(), EclipseLinkCaching.SPECIFIED_ALWAYS_REFRESH_PROPERTY) { - @Override - protected Boolean buildValue_() { - return this.subject.getSpecifiedAlwaysRefresh(); - } - - @Override - protected void setValue_(Boolean value) { - this.subject.setSpecifiedAlwaysRefresh(value); - } - }; - } - - private PropertyValueModel<String> buildAlwaysRefreshStringHolder() { - return new TransformationPropertyValueModel<Boolean, String>(buildDefaultAlwaysRefreshHolder()) { - @Override - protected String transform(Boolean value) { - if (value != null) { - String defaultStringValue = value.booleanValue() ? JptCommonUiMessages.Boolean_True : JptCommonUiMessages.Boolean_False; - return NLS.bind(EclipseLinkUiDetailsMessages.EclipseLinkAlwaysRefreshComposite_alwaysRefreshDefault, defaultStringValue); - } - return EclipseLinkUiDetailsMessages.EclipseLinkAlwaysRefreshComposite_alwaysRefreshLabel; - } - }; - } - - private PropertyValueModel<Boolean> buildDefaultAlwaysRefreshHolder() { - return new PropertyAspectAdapter<EclipseLinkCaching, Boolean>( - getSubjectHolder(), - EclipseLinkCaching.SPECIFIED_ALWAYS_REFRESH_PROPERTY, - EclipseLinkCaching.DEFAULT_ALWAYS_REFRESH_PROPERTY) - { - @Override - protected Boolean buildValue_() { - if (this.subject.getSpecifiedAlwaysRefresh() != null) { - return null; - } - return Boolean.valueOf(this.subject.isDefaultAlwaysRefresh()); - } - }; - } -}
\ No newline at end of file diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkArrayMapping2_3Composite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkArrayMapping2_3Composite.java index 1ecb68d3d1..330ebfc3f6 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkArrayMapping2_3Composite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkArrayMapping2_3Composite.java @@ -20,10 +20,11 @@ public class EclipseLinkArrayMapping2_3Composite extends Pane<EclipseLinkArrayMa implements JpaComposite { public EclipseLinkArrayMapping2_3Composite(PropertyValueModel<? extends EclipseLinkArrayMapping2_3> subjectHolder, - Composite parent, - WidgetFactory widgetFactory) { + PropertyValueModel<Boolean> enabledModel, + Composite parent, + WidgetFactory widgetFactory) { - super(subjectHolder, parent, widgetFactory); + super(subjectHolder, enabledModel, parent, widgetFactory); } @Override diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkBasicCollectionMappingComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkBasicCollectionMappingComposite.java index db4e28e583..85aefe3587 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkBasicCollectionMappingComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkBasicCollectionMappingComposite.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2008, 2010 Oracle. All rights reserved. + * Copyright (c) 2008, 2012 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. @@ -32,10 +32,11 @@ public class EclipseLinkBasicCollectionMappingComposite extends Pane<EclipseLink * @param widgetFactory The factory used to create various common widgets */ public EclipseLinkBasicCollectionMappingComposite(PropertyValueModel<? extends EclipseLinkBasicCollectionMapping> subjectHolder, - Composite parent, - WidgetFactory widgetFactory) { + PropertyValueModel<Boolean> enabledModel, + Composite parent, + WidgetFactory widgetFactory) { - super(subjectHolder, parent, widgetFactory); + super(subjectHolder, enabledModel, parent, widgetFactory); } @Override diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkBasicMapMappingComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkBasicMapMappingComposite.java index 97e61eac55..86c4e89cd3 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkBasicMapMappingComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkBasicMapMappingComposite.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2008, 2010 Oracle. All rights reserved. + * Copyright (c) 2008, 2012 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. @@ -32,10 +32,11 @@ public class EclipseLinkBasicMapMappingComposite extends Pane<EclipseLinkBasicMa * @param widgetFactory The factory used to create various common widgets */ public EclipseLinkBasicMapMappingComposite(PropertyValueModel<? extends EclipseLinkBasicMapMapping> subjectHolder, - Composite parent, - WidgetFactory widgetFactory) { + PropertyValueModel<Boolean> enabledModel, + Composite parent, + WidgetFactory widgetFactory) { - super(subjectHolder, parent, widgetFactory); + super(subjectHolder, enabledModel, parent, widgetFactory); } @Override diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkBasicMappingComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkBasicMappingComposite.java index d2752c0ca1..b87f40d26c 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkBasicMappingComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkBasicMappingComposite.java @@ -10,7 +10,7 @@ package org.eclipse.jpt.jpa.eclipselink.ui.internal.details; import org.eclipse.jpt.common.ui.WidgetFactory; -import org.eclipse.jpt.common.ui.internal.widgets.Pane; +import org.eclipse.jpt.common.utility.internal.model.value.CompositeBooleanPropertyValueModel; import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter; import org.eclipse.jpt.common.utility.internal.model.value.TransformationPropertyValueModel; import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; @@ -25,15 +25,19 @@ import org.eclipse.jpt.jpa.eclipselink.core.context.EclipseLinkConverterContaine import org.eclipse.jpt.jpa.eclipselink.core.context.EclipseLinkMutable; import org.eclipse.jpt.jpa.ui.internal.details.AbstractBasicMappingComposite; import org.eclipse.jpt.jpa.ui.internal.details.ColumnComposite; -import org.eclipse.jpt.jpa.ui.internal.details.EnumTypeComposite; -import org.eclipse.jpt.jpa.ui.internal.details.FetchTypeComposite; +import org.eclipse.jpt.jpa.ui.internal.details.EnumTypeComboViewer; +import org.eclipse.jpt.jpa.ui.internal.details.FetchTypeComboViewer; import org.eclipse.jpt.jpa.ui.internal.details.JptUiDetailsMessages; -import org.eclipse.jpt.jpa.ui.internal.details.OptionalComposite; -import org.eclipse.jpt.jpa.ui.internal.details.TemporalTypeComposite; +import org.eclipse.jpt.jpa.ui.internal.details.TemporalTypeCombo; import org.eclipse.swt.layout.GridData; -import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.swt.widgets.Label; +import org.eclipse.ui.forms.events.ExpansionAdapter; +import org.eclipse.ui.forms.events.ExpansionEvent; +import org.eclipse.ui.forms.widgets.ExpandableComposite; +import org.eclipse.ui.forms.widgets.Section; /** * Here the layout of this pane: @@ -78,11 +82,11 @@ import org.eclipse.swt.widgets.Composite; * * @see BasicMapping * @see ColumnComposite - * @see EnumTypeComposite - * @see FetchTypeComposite + * @see EnumTypeComboViewer + * @see FetchTypeComboViewer * @see LobComposite * @see OptionalComposite - * @see TemporalTypeComposite + * @see TemporalTypeCombo * * @version 3.2 * @since 2.1 @@ -97,23 +101,17 @@ public abstract class EclipseLinkBasicMappingComposite<T extends BasicMapping> e * @param widgetFactory The factory used to create various common widgets */ protected EclipseLinkBasicMappingComposite(PropertyValueModel<? extends T> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory) { - super(subjectHolder, parent, widgetFactory); + super(subjectHolder, enabledModel, parent, widgetFactory); } - @Override - protected void initializeBasicSection(Composite container) { - new ColumnComposite(this, buildColumnHolder(), container); - new FetchTypeComposite(this, container); - new OptionalComposite(this, addSubPane(container, 4)); - new EclipseLinkMutableComposite(this, buildMutableHolder(), container); - } @Override - protected void initializeTypeSection(Composite container) { - ((GridLayout) container.getLayout()).numColumns = 2; + protected Control initializeTypeSection(Composite container) { + container = this.addSubPane(container, 2, 0, 0, 0, 0); // No converter Button noConverterButton = addRadioButton( @@ -138,7 +136,7 @@ public abstract class EclipseLinkBasicMappingComposite<T extends BasicMapping> e JptUiDetailsMessages.TypeSection_temporal, buildConverterBooleanHolder(BaseTemporalConverter.class), null); - registerSubPane(new TemporalTypeComposite(buildTemporalConverterHolder(converterHolder), container, getWidgetFactory())); + registerSubPane(new TemporalTypeCombo(buildTemporalConverterHolder(converterHolder), getEnabledModel(), container, getWidgetFactory())); // Enumerated @@ -147,7 +145,7 @@ public abstract class EclipseLinkBasicMappingComposite<T extends BasicMapping> e JptUiDetailsMessages.TypeSection_enumerated, buildConverterBooleanHolder(BaseEnumeratedConverter.class), null); - registerSubPane(new EnumTypeComposite(buildEnumeratedConverterHolder(converterHolder), container, getWidgetFactory())); + registerSubPane(new EnumTypeComboViewer(buildEnumeratedConverterHolder(converterHolder), getEnabledModel(), container, getWidgetFactory())); // EclipseLink Converter Button elConverterButton = addRadioButton( @@ -157,17 +155,17 @@ public abstract class EclipseLinkBasicMappingComposite<T extends BasicMapping> e null); ((GridData) elConverterButton.getLayoutData()).horizontalSpan = 2; - Pane<EclipseLinkConvert> convertComposite = buildConvertComposite(buildEclipseLinkConverterHolder(converterHolder), container); - GridData gridData = (GridData) convertComposite.getControl().getLayoutData(); - gridData.horizontalSpan = 2; + PropertyValueModel<EclipseLinkConvert> convertHolder = buildEclipseLinkConverterHolder(converterHolder); + PropertyValueModel<Boolean> convertEnabledModel = CompositeBooleanPropertyValueModel.and(getEnabledModel(), buildEclipseLinkConvertBooleanHolder(convertHolder)); + Label convertLabel = this.addLabel(container, EclipseLinkUiDetailsMessages.EclipseLinkConvertComposite_converterNameLabel, convertEnabledModel); + GridData gridData = new GridData(); gridData.horizontalIndent = 20; - registerSubPane(convertComposite); - } + convertLabel.setLayoutData(gridData); + registerSubPane(new EclipseLinkConvertCombo(convertHolder, convertEnabledModel, container, getWidgetFactory())); - protected Pane<EclipseLinkConvert> buildConvertComposite(PropertyValueModel<EclipseLinkConvert> convertHolder, Composite container) { - return new EclipseLinkConvertComposite(convertHolder, container, getWidgetFactory()); + return container; } - + protected PropertyValueModel<EclipseLinkMutable> buildMutableHolder() { return new PropertyAspectAdapter<T, EclipseLinkMutable>(getSubjectHolder()) { @Override @@ -186,16 +184,31 @@ public abstract class EclipseLinkBasicMappingComposite<T extends BasicMapping> e }; } + protected PropertyValueModel<Boolean> buildEclipseLinkConvertBooleanHolder(PropertyValueModel<EclipseLinkConvert> convertHolder) { + return new TransformationPropertyValueModel<EclipseLinkConvert, Boolean>(convertHolder) { + @Override + protected Boolean transform(EclipseLinkConvert value) { + return Boolean.valueOf(value != null); + } + }; + } + protected void initializeConvertersCollapsibleSection(Composite container) { - container = addCollapsibleSection( - container, - EclipseLinkUiDetailsMessages.EclipseLinkTypeMappingComposite_converters - ); - initializeConvertersSection(container, this.buildConverterHolderValueModel()); + final Section section = this.getWidgetFactory().createSection(container, ExpandableComposite.TITLE_BAR | ExpandableComposite.TWISTIE); + section.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + section.setText(EclipseLinkUiDetailsMessages.EclipseLinkTypeMappingComposite_converters); + section.addExpansionListener(new ExpansionAdapter() { + @Override + public void expansionStateChanging(ExpansionEvent e) { + if (e.getState() && section.getClient() == null) { + section.setClient(EclipseLinkBasicMappingComposite.this.initializeConvertersSection(section)); + } + } + }); } - protected void initializeConvertersSection(Composite container, PropertyValueModel<EclipseLinkConverterContainer> converterHolder) { - new EclipseLinkConvertersComposite(this, converterHolder, container); + protected Control initializeConvertersSection(Composite container) { + return new EclipseLinkConvertersComposite(this, this.buildConverterHolderValueModel(), container).getControl(); } protected PropertyValueModel<EclipseLinkConverterContainer> buildConverterHolderValueModel() { diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkCacheCoordinationTypeComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkCacheCoordinationTypeComposite.java deleted file mode 100644 index afb47f9168..0000000000 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkCacheCoordinationTypeComposite.java +++ /dev/null @@ -1,113 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2008, 2012 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.jpa.eclipselink.ui.internal.details; - -import java.util.Collection; -import org.eclipse.jpt.common.ui.internal.widgets.EnumFormComboViewer; -import org.eclipse.jpt.common.ui.internal.widgets.Pane; -import org.eclipse.jpt.jpa.eclipselink.core.context.EclipseLinkCacheCoordinationType; -import org.eclipse.jpt.jpa.eclipselink.core.context.EclipseLinkCaching; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.EclipseLinkHelpContextIds; -import org.eclipse.swt.widgets.Composite; - -/** - * Here is the layout of this pane: - * <pre> - * ---------------------------------------------------------------------------- - * | ----------------------------------------------------- | - * | Coordination Type: | |v| | - * | ----------------------------------------------------- | - * ----------------------------------------------------------------------------</pre> - * - * @see EclipseLinkCaching - * @see EclipseLinkCachingComposite - A container of this widget - * - * @version 2.1 - * @since 2.1 - */ -public class EclipseLinkCacheCoordinationTypeComposite extends Pane<EclipseLinkCaching> { - - /** - * Creates a new <code>CacheTypeComposite</code>. - * - * @param parentPane The parent container of this one - * @param parent The parent container - */ - public EclipseLinkCacheCoordinationTypeComposite(Pane<? extends EclipseLinkCaching> parentPane, - Composite parent) { - - super(parentPane, parent); - } - - private EnumFormComboViewer<EclipseLinkCaching, EclipseLinkCacheCoordinationType> addCacheCoordinationTypeCombo(Composite container) { - - return new EnumFormComboViewer<EclipseLinkCaching, EclipseLinkCacheCoordinationType>(this, container) { - - @Override - protected void addPropertyNames(Collection<String> propertyNames) { - super.addPropertyNames(propertyNames); - propertyNames.add(EclipseLinkCaching.DEFAULT_COORDINATION_TYPE_PROPERTY); - propertyNames.add(EclipseLinkCaching.SPECIFIED_COORDINATION_TYPE_PROPERTY); - } - - @Override - protected EclipseLinkCacheCoordinationType[] getChoices() { - return EclipseLinkCacheCoordinationType.values(); - } - - @Override - protected EclipseLinkCacheCoordinationType getDefaultValue() { - return getSubject().getDefaultCoordinationType(); - } - - @Override - protected String displayString(EclipseLinkCacheCoordinationType value) { - switch (value) { - case INVALIDATE_CHANGED_OBJECTS : - return EclipseLinkUiDetailsMessages.EclipseLinkCacheCoordinationTypeComposite_invalidate_changed_objects; - case SEND_NEW_OBJECTS_WITH_CHANGES : - return EclipseLinkUiDetailsMessages.EclipseLinkCacheCoordinationTypeComposite_send_new_objects_with_changes; - case SEND_OBJECT_CHANGES : - return EclipseLinkUiDetailsMessages.EclipseLinkCacheCoordinationTypeComposite_send_object_changes; - case NONE : - return EclipseLinkUiDetailsMessages.EclipseLinkCacheCoordinationTypeComposite_none; - default : - throw new IllegalStateException(); - } - } - - @Override - protected EclipseLinkCacheCoordinationType getValue() { - return getSubject().getSpecifiedCoordinationType(); - } - - @Override - protected void setValue(EclipseLinkCacheCoordinationType value) { - getSubject().setSpecifiedCoordinationType(value); - } - - @Override - protected boolean sortChoices() { - return false; - } - }; - } - - @Override - protected void initializeLayout(Composite container) { - - addLabeledComposite( - container, - EclipseLinkUiDetailsMessages.EclipseLinkCacheCoordinationTypeComposite_label, - addCacheCoordinationTypeCombo(container), - EclipseLinkHelpContextIds.CACHING_CACHE_COORDINATION_TYPE - ); - } -} diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkCacheSizeComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkCacheSizeCombo.java index fd1b778beb..167839e845 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkCacheSizeComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkCacheSizeCombo.java @@ -32,7 +32,7 @@ import org.eclipse.swt.widgets.Composite; * @version 2.1 * @since 2.1 */ -public class EclipseLinkCacheSizeComposite extends Pane<EclipseLinkCaching> { +public class EclipseLinkCacheSizeCombo extends IntegerCombo<EclipseLinkCaching> { /** * Creates a new <code>CacheSizeComposite</code>. @@ -40,55 +40,40 @@ public class EclipseLinkCacheSizeComposite extends Pane<EclipseLinkCaching> { * @param parentPane The parent container of this one * @param parent The parent container */ - public EclipseLinkCacheSizeComposite(Pane<? extends EclipseLinkCaching> parentPane, - Composite parent) { + public EclipseLinkCacheSizeCombo(Pane<? extends EclipseLinkCaching> parentPane, + Composite parent, + PropertyValueModel<Boolean> enabledModel) { - super(parentPane, parent); + super(parentPane, parent, enabledModel); } @Override - protected void initializeLayout(Composite container) { - addSizeCombo(container); + protected String getHelpId() { + return null;//JpaHelpContextIds.MAPPING_COLUMN_LENGTH; } - - private void addSizeCombo(Composite container) { - new IntegerCombo<EclipseLinkCaching>(this, container) { - - @Override - protected String getLabelText() { - return EclipseLinkUiDetailsMessages.EclipseLinkCacheSizeComposite_size; - } - + + @Override + protected PropertyValueModel<Integer> buildDefaultHolder() { + return new PropertyAspectAdapter<EclipseLinkCaching, Integer>(getSubjectHolder(), EclipseLinkCaching.DEFAULT_SIZE_PROPERTY) { @Override - protected String getHelpId() { - return null;//JpaHelpContextIds.MAPPING_COLUMN_LENGTH; + protected Integer buildValue_() { + return Integer.valueOf(this.subject.getDefaultSize()); } + }; + } + @Override + protected ModifiablePropertyValueModel<Integer> buildSelectedItemHolder() { + return new PropertyAspectAdapter<EclipseLinkCaching, Integer>(getSubjectHolder(), EclipseLinkCaching.SPECIFIED_SIZE_PROPERTY) { @Override - protected PropertyValueModel<Integer> buildDefaultHolder() { - return new PropertyAspectAdapter<EclipseLinkCaching, Integer>(getSubjectHolder(), EclipseLinkCaching.DEFAULT_SIZE_PROPERTY) { - @Override - protected Integer buildValue_() { - return Integer.valueOf(this.subject.getDefaultSize()); - } - }; + protected Integer buildValue_() { + return this.subject.getSpecifiedSize(); } - - @Override - protected ModifiablePropertyValueModel<Integer> buildSelectedItemHolder() { - return new PropertyAspectAdapter<EclipseLinkCaching, Integer>(getSubjectHolder(), EclipseLinkCaching.SPECIFIED_SIZE_PROPERTY) { - @Override - protected Integer buildValue_() { - return this.subject.getSpecifiedSize(); - } - @Override - protected void setValue_(Integer value) { - this.subject.setSpecifiedSize(value); - } - }; + @Override + protected void setValue_(Integer value) { + this.subject.setSpecifiedSize(value); } }; } - } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkCacheTypeComboViewer.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkCacheTypeComboViewer.java new file mode 100644 index 0000000000..930aacb37e --- /dev/null +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkCacheTypeComboViewer.java @@ -0,0 +1,109 @@ +/******************************************************************************* + * Copyright (c) 2008, 2012 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.jpa.eclipselink.ui.internal.details; + +import java.util.Collection; +import org.eclipse.jpt.common.ui.internal.widgets.EnumFormComboViewer; +import org.eclipse.jpt.common.ui.internal.widgets.Pane; +import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; +import org.eclipse.jpt.jpa.eclipselink.core.context.EclipseLinkCacheType; +import org.eclipse.jpt.jpa.eclipselink.core.context.EclipseLinkCaching; +import org.eclipse.jpt.jpa.eclipselink.ui.internal.EclipseLinkHelpContextIds; +import org.eclipse.swt.widgets.Composite; + +/** + * Here is the layout of this pane: + * <pre> + * ---------------------------------------------------------------------------- + * | ------------------------------------------------------------------ | + * | Type: | |v| | + * | ------------------------------------------------------------------ | + * ----------------------------------------------------------------------------</pre> + * + * @see EclipseLinkCaching + * @see EclipseLinkCachingComposite - A container of this widget + * + * @version 2.1 + * @since 2.1 + */ +public class EclipseLinkCacheTypeComboViewer extends EnumFormComboViewer<EclipseLinkCaching, EclipseLinkCacheType> { + + /** + * Creates a new <code>CacheTypeComposite</code>. + * + * @param parentPane The parent container of this one + * @param parent The parent container + */ + public EclipseLinkCacheTypeComboViewer(Pane<? extends EclipseLinkCaching> parentPane, + Composite parent, + PropertyValueModel<Boolean> enabledModel) { + + super(parentPane, parent, enabledModel); + } + + @Override + protected void addPropertyNames(Collection<String> propertyNames) { + super.addPropertyNames(propertyNames); + propertyNames.add(EclipseLinkCaching.DEFAULT_TYPE_PROPERTY); + propertyNames.add(EclipseLinkCaching.SPECIFIED_TYPE_PROPERTY); + } + + @Override + protected EclipseLinkCacheType[] getChoices() { + return EclipseLinkCacheType.values(); + } + + @Override + protected EclipseLinkCacheType getDefaultValue() { + return getSubject().getDefaultType(); + } + + @Override + protected String displayString(EclipseLinkCacheType value) { + switch (value) { + case FULL : + return EclipseLinkUiDetailsMessages.EclipseLinkCacheTypeComposite_full; + case WEAK : + return EclipseLinkUiDetailsMessages.EclipseLinkCacheTypeComposite_weak; + case SOFT : + return EclipseLinkUiDetailsMessages.EclipseLinkCacheTypeComposite_soft; + case SOFT_WEAK : + return EclipseLinkUiDetailsMessages.EclipseLinkCacheTypeComposite_soft_weak; + case HARD_WEAK : + return EclipseLinkUiDetailsMessages.EclipseLinkCacheTypeComposite_hard_weak; + case CACHE : + return EclipseLinkUiDetailsMessages.EclipseLinkCacheTypeComposite_cache; + case NONE : + return EclipseLinkUiDetailsMessages.EclipseLinkCacheTypeComposite_none; + default : + throw new IllegalStateException(); + } + } + + @Override + protected EclipseLinkCacheType getValue() { + return getSubject().getSpecifiedType(); + } + + @Override + protected void setValue(EclipseLinkCacheType value) { + getSubject().setSpecifiedType(value); + } + + @Override + protected boolean sortChoices() { + return false; + } + + @Override + protected String getHelpId() { + return EclipseLinkHelpContextIds.CACHING_CACHE_TYPE; + } +} diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkCacheTypeComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkCacheTypeComposite.java deleted file mode 100644 index d3c7f2da2f..0000000000 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkCacheTypeComposite.java +++ /dev/null @@ -1,119 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2008, 2012 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.jpa.eclipselink.ui.internal.details; - -import java.util.Collection; -import org.eclipse.jpt.common.ui.internal.widgets.EnumFormComboViewer; -import org.eclipse.jpt.common.ui.internal.widgets.Pane; -import org.eclipse.jpt.jpa.eclipselink.core.context.EclipseLinkCacheType; -import org.eclipse.jpt.jpa.eclipselink.core.context.EclipseLinkCaching; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.EclipseLinkHelpContextIds; -import org.eclipse.swt.widgets.Composite; - -/** - * Here is the layout of this pane: - * <pre> - * ---------------------------------------------------------------------------- - * | ------------------------------------------------------------------ | - * | Type: | |v| | - * | ------------------------------------------------------------------ | - * ----------------------------------------------------------------------------</pre> - * - * @see EclipseLinkCaching - * @see EclipseLinkCachingComposite - A container of this widget - * - * @version 2.1 - * @since 2.1 - */ -public class EclipseLinkCacheTypeComposite extends Pane<EclipseLinkCaching> { - - /** - * Creates a new <code>CacheTypeComposite</code>. - * - * @param parentPane The parent container of this one - * @param parent The parent container - */ - public EclipseLinkCacheTypeComposite(Pane<? extends EclipseLinkCaching> parentPane, - Composite parent) { - - super(parentPane, parent); - } - - private EnumFormComboViewer<EclipseLinkCaching, EclipseLinkCacheType> addCacheTypeCombo(Composite container) { - - return new EnumFormComboViewer<EclipseLinkCaching, EclipseLinkCacheType>(this, container) { - - @Override - protected void addPropertyNames(Collection<String> propertyNames) { - super.addPropertyNames(propertyNames); - propertyNames.add(EclipseLinkCaching.DEFAULT_TYPE_PROPERTY); - propertyNames.add(EclipseLinkCaching.SPECIFIED_TYPE_PROPERTY); - } - - @Override - protected EclipseLinkCacheType[] getChoices() { - return EclipseLinkCacheType.values(); - } - - @Override - protected EclipseLinkCacheType getDefaultValue() { - return getSubject().getDefaultType(); - } - - @Override - protected String displayString(EclipseLinkCacheType value) { - switch (value) { - case FULL : - return EclipseLinkUiDetailsMessages.EclipseLinkCacheTypeComposite_full; - case WEAK : - return EclipseLinkUiDetailsMessages.EclipseLinkCacheTypeComposite_weak; - case SOFT : - return EclipseLinkUiDetailsMessages.EclipseLinkCacheTypeComposite_soft; - case SOFT_WEAK : - return EclipseLinkUiDetailsMessages.EclipseLinkCacheTypeComposite_soft_weak; - case HARD_WEAK : - return EclipseLinkUiDetailsMessages.EclipseLinkCacheTypeComposite_hard_weak; - case CACHE : - return EclipseLinkUiDetailsMessages.EclipseLinkCacheTypeComposite_cache; - case NONE : - return EclipseLinkUiDetailsMessages.EclipseLinkCacheTypeComposite_none; - default : - throw new IllegalStateException(); - } - } - - @Override - protected EclipseLinkCacheType getValue() { - return getSubject().getSpecifiedType(); - } - - @Override - protected void setValue(EclipseLinkCacheType value) { - getSubject().setSpecifiedType(value); - } - - @Override - protected boolean sortChoices() { - return false; - } - }; - } - - @Override - protected void initializeLayout(Composite container) { - - addLabeledComposite( - container, - EclipseLinkUiDetailsMessages.EclipseLinkCacheTypeComposite_label, - addCacheTypeCombo(container), - EclipseLinkHelpContextIds.CACHING_CACHE_TYPE - ); - } -} diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkCaching2_0Composite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkCaching2_0Composite.java index 11dd9f23bf..62cbc7d609 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkCaching2_0Composite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkCaching2_0Composite.java @@ -9,13 +9,10 @@ ******************************************************************************/ package org.eclipse.jpt.jpa.eclipselink.ui.internal.details; -import java.util.ArrayList; -import java.util.Collection; import org.eclipse.jpt.common.ui.internal.JptCommonUiMessages; -import org.eclipse.jpt.common.ui.internal.util.PaneEnabler; import org.eclipse.jpt.common.ui.internal.widgets.Pane; +import org.eclipse.jpt.common.ui.internal.widgets.TriStateCheckBox; import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter; -import org.eclipse.jpt.common.utility.internal.model.value.SimplePropertyValueModel; import org.eclipse.jpt.common.utility.internal.model.value.TransformationPropertyValueModel; import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; import org.eclipse.jpt.common.utility.model.value.ModifiablePropertyValueModel; @@ -26,7 +23,13 @@ import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.java.JavaEclipseLinkE import org.eclipse.jpt.jpa.ui.internal.JpaHelpContextIds; import org.eclipse.jpt.jpa.ui.internal.jpa2.details.JptUiDetailsMessages2_0; import org.eclipse.osgi.util.NLS; +import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Label; +import org.eclipse.ui.forms.events.ExpansionAdapter; +import org.eclipse.ui.forms.events.ExpansionEvent; +import org.eclipse.ui.forms.widgets.ExpandableComposite; +import org.eclipse.ui.forms.widgets.Section; /** * This pane shows the caching options. @@ -49,8 +52,8 @@ import org.eclipse.swt.widgets.Composite; * @see Entity * @see EclipseLinkCaching * @see JavaEclipseLinkEntityComposite - The parent container - * @see EclipseLinkCacheTypeComposite - * @see EclipseLinkCacheSizeComposite + * @see EclipseLinkCacheTypeComboViewer + * @see EclipseLinkCacheSizeCombo * @see EclipseLinkAlwaysRefreshComposite * @see EclipseLinkRefreshOnlyIfNewerComposite * @see EclipseLinkDisableHitsComposite @@ -58,14 +61,14 @@ import org.eclipse.swt.widgets.Composite; * @version 3.0 * @since 3.0 */ -public abstract class EclipseLinkCaching2_0Composite<T extends EclipseLinkCaching> extends Pane<T> +public abstract class EclipseLinkCaching2_0Composite<T extends EclipseLinkCaching> extends EclipseLinkCachingComposite<T> { protected EclipseLinkCaching2_0Composite(Pane<?> parentPane, PropertyValueModel<T> subjectHolder, Composite parent) { - super(parentPane, subjectHolder, parent, false); + super(parentPane, subjectHolder, parent); } @Override @@ -73,32 +76,51 @@ public abstract class EclipseLinkCaching2_0Composite<T extends EclipseLinkCachin PropertyValueModel<Cacheable2_0> cacheableHolder = buildCacheableHolder(); //Shared Check box, uncheck this and the rest of the panel is disabled - addTriStateCheckBoxWithDefault( - addSubPane(container, 8), + TriStateCheckBox sharedCheckBox = addTriStateCheckBoxWithDefault( + container, JptUiDetailsMessages2_0.Entity_cacheableLabel, buildSpecifiedCacheableHolder(cacheableHolder), buildCacheableStringHolder(cacheableHolder), JpaHelpContextIds.ENTITY_CACHEABLE ); + GridData gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.horizontalSpan = 2; + sharedCheckBox.getCheckBox().setLayoutData(gridData); - Composite subPane = addSubPane(container, 0, 16); + final PropertyValueModel<Boolean> cacheableEnableModel = buildCacheableEnabler(cacheableHolder); - Collection<Pane<?>> panes = new ArrayList<Pane<?>>(); - - this.initializeTypeSection(subPane, panes); + Label cacheTypeLabel = this.addLabel(container, EclipseLinkUiDetailsMessages.EclipseLinkCacheTypeComposite_label, cacheableEnableModel); + gridData = new GridData(); + gridData.horizontalIndent = 16; + cacheTypeLabel.setLayoutData(gridData); + new EclipseLinkCacheTypeComboViewer(this, container, cacheableEnableModel); + + Label cacheSizeLabel = this.addLabel(container, EclipseLinkUiDetailsMessages.EclipseLinkCacheSizeComposite_size, cacheableEnableModel); + gridData = new GridData(); + gridData.horizontalIndent = 16; + cacheSizeLabel.setLayoutData(gridData); + new EclipseLinkCacheSizeCombo(this, container, cacheableEnableModel); // Advanced sub-pane - Composite advancedSection = addCollapsibleSubSection( - subPane, - EclipseLinkUiDetailsMessages.EclipseLinkCachingComposite_advanced, - new SimplePropertyValueModel<Boolean>(Boolean.FALSE) - ); + final Section advancedSection = this.getWidgetFactory().createSection(container, ExpandableComposite.TWISTIE); + gridData = new GridData(GridData.FILL_BOTH); + gridData.horizontalIndent = 16; + gridData.horizontalSpan = 2; + advancedSection.setLayoutData(gridData); + advancedSection.setText(EclipseLinkUiDetailsMessages.EclipseLinkCachingComposite_advanced); - initializeAdvancedPane(addSubPane(advancedSection, 0, 16), panes); - - new PaneEnabler(buildCacheableEnabler(cacheableHolder), panes); + + advancedSection.addExpansionListener(new ExpansionAdapter() { + @Override + public void expansionStateChanging(ExpansionEvent e) { + if (e.getState() && advancedSection.getClient() == null) { + Composite advancedClient = initializeAdvancedPane(advancedSection, cacheableEnableModel); + advancedSection.setClient(advancedClient); + } + } + }); - initializeExistenceCheckingComposite(addSubPane(container, 8)); + initializeExistenceCheckingComposite(container); } protected PropertyValueModel<Cacheable2_0> buildCacheableHolder() { @@ -109,21 +131,6 @@ public abstract class EclipseLinkCaching2_0Composite<T extends EclipseLinkCachin } }; } - - protected void initializeTypeSection(Composite container, Collection<Pane<?>> panes) { - panes.add(new EclipseLinkCacheTypeComposite(this, container)); - panes.add(new EclipseLinkCacheSizeComposite(this, container)); - } - - protected void initializeAdvancedPane(Composite container, Collection<Pane<?>> panes) { - panes.add(new EclipseLinkExpiryComposite(this, container)); - panes.add(new EclipseLinkAlwaysRefreshComposite(this, container)); - panes.add(new EclipseLinkRefreshOnlyIfNewerComposite(this, container)); - panes.add(new EclipseLinkDisableHitsComposite(this, container)); - panes.add(new EclipseLinkCacheCoordinationTypeComposite(this, container)); - } - - protected abstract void initializeExistenceCheckingComposite(Composite parent); private PropertyValueModel<Boolean> buildCacheableEnabler(PropertyValueModel<Cacheable2_0> cacheableHolder) { return new PropertyAspectAdapter<Cacheable2_0, Boolean>( diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkCachingComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkCachingComposite.java index 44d4d6f793..668ee7704a 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkCachingComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkCachingComposite.java @@ -9,21 +9,28 @@ ******************************************************************************/ package org.eclipse.jpt.jpa.eclipselink.ui.internal.details; -import java.util.ArrayList; import java.util.Collection; import org.eclipse.jpt.common.ui.internal.JptCommonUiMessages; -import org.eclipse.jpt.common.ui.internal.util.PaneEnabler; +import org.eclipse.jpt.common.ui.internal.widgets.EnumFormComboViewer; import org.eclipse.jpt.common.ui.internal.widgets.Pane; +import org.eclipse.jpt.common.ui.internal.widgets.TriStateCheckBox; import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter; -import org.eclipse.jpt.common.utility.internal.model.value.SimplePropertyValueModel; import org.eclipse.jpt.common.utility.internal.model.value.TransformationPropertyValueModel; import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; import org.eclipse.jpt.common.utility.model.value.ModifiablePropertyValueModel; +import org.eclipse.jpt.jpa.eclipselink.core.context.EclipseLinkCacheCoordinationType; import org.eclipse.jpt.jpa.eclipselink.core.context.EclipseLinkCaching; +import org.eclipse.jpt.jpa.eclipselink.core.context.EclipseLinkExistenceType; import org.eclipse.jpt.jpa.eclipselink.ui.internal.EclipseLinkHelpContextIds; import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.java.JavaEclipseLinkEntityComposite; import org.eclipse.osgi.util.NLS; +import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Label; +import org.eclipse.ui.forms.events.ExpansionAdapter; +import org.eclipse.ui.forms.events.ExpansionEvent; +import org.eclipse.ui.forms.widgets.ExpandableComposite; +import org.eclipse.ui.forms.widgets.Section; /** * This pane shows the caching options. @@ -46,8 +53,8 @@ import org.eclipse.swt.widgets.Composite; * @see Entity * @see EclipseLinkCaching * @see JavaEclipseLinkEntityComposite - The parent container - * @see EclipseLinkCacheTypeComposite - * @see EclipseLinkCacheSizeComposite + * @see EclipseLinkCacheTypeComboViewer + * @see EclipseLinkCacheSizeCombo * @see EclipseLinkAlwaysRefreshComposite * @see EclipseLinkRefreshOnlyIfNewerComposite * @see EclipseLinkDisableHitsComposite @@ -62,51 +69,114 @@ public abstract class EclipseLinkCachingComposite<T extends EclipseLinkCaching> PropertyValueModel<T> subjectHolder, Composite parent) { - super(parentPane, subjectHolder, parent, false); + super(parentPane, subjectHolder, parent); } @Override - protected void initializeLayout(Composite container) { + protected Composite addComposite(Composite container) { + return this.addSubPane(container, 2, 0, 0, 0, 0); + } + @Override + protected void initializeLayout(Composite container) { //Shared Check box, uncheck this and the rest of the panel is disabled - addTriStateCheckBoxWithDefault( - addSubPane(container, 8), + TriStateCheckBox sharedCheckBox = addTriStateCheckBoxWithDefault( + container, EclipseLinkUiDetailsMessages.EclipseLinkCachingComposite_sharedLabel, buildSpecifiedSharedHolder(), buildSharedStringHolder(), EclipseLinkHelpContextIds.CACHING_SHARED ); + GridData gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.horizontalSpan = 2; + sharedCheckBox.getCheckBox().setLayoutData(gridData); - Composite subPane = addSubPane(container, 0, 16); - - Collection<Pane<?>> panes = new ArrayList<Pane<?>>(); + final PropertyValueModel<Boolean> sharedCacheEnableModel = buildSharedCacheEnabler(); - panes.add(new EclipseLinkCacheTypeComposite(this, subPane)); - panes.add(new EclipseLinkCacheSizeComposite(this, subPane)); + Label cacheTypeLabel = this.addLabel(container, EclipseLinkUiDetailsMessages.EclipseLinkCacheTypeComposite_label, sharedCacheEnableModel); + gridData = new GridData(); + gridData.horizontalIndent = 16; + cacheTypeLabel.setLayoutData(gridData); + new EclipseLinkCacheTypeComboViewer(this, container, sharedCacheEnableModel); + + Label cacheSizeLabel = this.addLabel(container, EclipseLinkUiDetailsMessages.EclipseLinkCacheSizeComposite_size, sharedCacheEnableModel); + gridData = new GridData(); + gridData.horizontalIndent = 16; + cacheSizeLabel.setLayoutData(gridData); + new EclipseLinkCacheSizeCombo(this, container, sharedCacheEnableModel); + // Advanced sub-pane - Composite advancedSection = addCollapsibleSubSection( - subPane, - EclipseLinkUiDetailsMessages.EclipseLinkCachingComposite_advanced, - new SimplePropertyValueModel<Boolean>(Boolean.FALSE) - ); + final Section advancedSection = this.getWidgetFactory().createSection(container, ExpandableComposite.TWISTIE); + advancedSection.setText(EclipseLinkUiDetailsMessages.EclipseLinkCachingComposite_advanced); + gridData = new GridData(GridData.FILL_BOTH); + gridData.horizontalIndent = 16; + gridData.horizontalSpan = 2; + advancedSection.setLayoutData(gridData); - initializeAdvancedPane(addSubPane(advancedSection, 0, 16), panes); - - new PaneEnabler(buildSharedCacheEnabler(), panes); + advancedSection.addExpansionListener(new ExpansionAdapter() { + @Override + public void expansionStateChanging(ExpansionEvent e) { + if (e.getState() && advancedSection.getClient() == null) { + advancedSection.setClient(initializeAdvancedPane(advancedSection, sharedCacheEnableModel)); + } + } + }); + - initializeExistenceCheckingComposite(addSubPane(container, 8)); + initializeExistenceCheckingComposite(container); } - protected void initializeAdvancedPane(Composite container, Collection<Pane<?>> panes) { - panes.add(new EclipseLinkExpiryComposite(this, container)); - panes.add(new EclipseLinkAlwaysRefreshComposite(this, container)); - panes.add(new EclipseLinkRefreshOnlyIfNewerComposite(this, container)); - panes.add(new EclipseLinkDisableHitsComposite(this, container)); - panes.add(new EclipseLinkCacheCoordinationTypeComposite(this, container)); + protected Composite initializeAdvancedPane(Composite container, PropertyValueModel<Boolean> sharedCacheEnableModel) { + container = addSubPane(container, 2, 0, 8, 0, 0); + + EclipseLinkExpiryComposite expiryComposite = new EclipseLinkExpiryComposite(this, container, sharedCacheEnableModel); + GridData gridData = new GridData(); + gridData.horizontalSpan = 2; + expiryComposite.getControl().setLayoutData(gridData); + + TriStateCheckBox alwaysRefreshCheckBox = addTriStateCheckBoxWithDefault( + container, + EclipseLinkUiDetailsMessages.EclipseLinkAlwaysRefreshComposite_alwaysRefreshLabel, + buildAlwaysRefreshHolder(), + buildAlwaysRefreshStringHolder(), + sharedCacheEnableModel, + EclipseLinkHelpContextIds.CACHING_ALWAYS_REFRESH + ); + gridData = new GridData(); + gridData.horizontalSpan = 2; + alwaysRefreshCheckBox.getCheckBox().setLayoutData(gridData); + + TriStateCheckBox refreshOnlyIfNewerCheckBox = addTriStateCheckBoxWithDefault( + container, + EclipseLinkUiDetailsMessages.EclipseLinkRefreshOnlyIfNewerComposite_refreshOnlyIfNewerLabel, + buildRefreshOnlyIfNewerHolder(), + buildRefreshOnlyIfNewerStringHolder(), + sharedCacheEnableModel, + EclipseLinkHelpContextIds.CACHING_REFRESH_ONLY_IF_NEWER + ); + gridData = new GridData(); + gridData.horizontalSpan = 2; + refreshOnlyIfNewerCheckBox.getCheckBox().setLayoutData(gridData); + + TriStateCheckBox disableHitsCheckBox = addTriStateCheckBoxWithDefault( + container, + EclipseLinkUiDetailsMessages.EclipseLinkDisableHitsComposite_disableHitsLabel, + buildDisableHitsHolder(), + buildDisableHitsStringHolder(), + sharedCacheEnableModel, + EclipseLinkHelpContextIds.CACHING_DISABLE_HITS + ); + gridData = new GridData(); + gridData.horizontalSpan = 2; + disableHitsCheckBox.getCheckBox().setLayoutData(gridData); + + this.addLabel(container, EclipseLinkUiDetailsMessages.EclipseLinkCacheCoordinationTypeComposite_label, sharedCacheEnableModel); + this.addCacheCoordinationTypeCombo(container, sharedCacheEnableModel); + return container; } - protected abstract void initializeExistenceCheckingComposite(Composite parent); + protected abstract void initializeExistenceCheckingComposite(Composite container); private PropertyValueModel<Boolean> buildSharedCacheEnabler() { return new PropertyAspectAdapter<EclipseLinkCaching, Boolean>( @@ -162,4 +232,248 @@ public abstract class EclipseLinkCachingComposite<T extends EclipseLinkCaching> } }; } + + private ModifiablePropertyValueModel<Boolean> buildAlwaysRefreshHolder() { + return new PropertyAspectAdapter<EclipseLinkCaching, Boolean>(getSubjectHolder(), EclipseLinkCaching.SPECIFIED_ALWAYS_REFRESH_PROPERTY) { + @Override + protected Boolean buildValue_() { + return this.subject.getSpecifiedAlwaysRefresh(); + } + + @Override + protected void setValue_(Boolean value) { + this.subject.setSpecifiedAlwaysRefresh(value); + } + }; + } + + private PropertyValueModel<String> buildAlwaysRefreshStringHolder() { + return new TransformationPropertyValueModel<Boolean, String>(buildDefaultAlwaysRefreshHolder()) { + @Override + protected String transform(Boolean value) { + if (value != null) { + String defaultStringValue = value.booleanValue() ? JptCommonUiMessages.Boolean_True : JptCommonUiMessages.Boolean_False; + return NLS.bind(EclipseLinkUiDetailsMessages.EclipseLinkAlwaysRefreshComposite_alwaysRefreshDefault, defaultStringValue); + } + return EclipseLinkUiDetailsMessages.EclipseLinkAlwaysRefreshComposite_alwaysRefreshLabel; + } + }; + } + + private PropertyValueModel<Boolean> buildDefaultAlwaysRefreshHolder() { + return new PropertyAspectAdapter<EclipseLinkCaching, Boolean>( + getSubjectHolder(), + EclipseLinkCaching.SPECIFIED_ALWAYS_REFRESH_PROPERTY, + EclipseLinkCaching.DEFAULT_ALWAYS_REFRESH_PROPERTY) + { + @Override + protected Boolean buildValue_() { + if (this.subject.getSpecifiedAlwaysRefresh() != null) { + return null; + } + return Boolean.valueOf(this.subject.isDefaultAlwaysRefresh()); + } + }; + } + + private ModifiablePropertyValueModel<Boolean> buildRefreshOnlyIfNewerHolder() { + return new PropertyAspectAdapter<EclipseLinkCaching, Boolean>(getSubjectHolder(), EclipseLinkCaching.SPECIFIED_REFRESH_ONLY_IF_NEWER_PROPERTY) { + @Override + protected Boolean buildValue_() { + return this.subject.getSpecifiedRefreshOnlyIfNewer(); + } + + @Override + protected void setValue_(Boolean value) { + this.subject.setSpecifiedRefreshOnlyIfNewer(value); + } + }; + } + + private PropertyValueModel<String> buildRefreshOnlyIfNewerStringHolder() { + + return new TransformationPropertyValueModel<Boolean, String>(buildDefaultRefreshOnlyIfNewerHolder()) { + + @Override + protected String transform(Boolean value) { + if (value != null) { + String defaultStringValue = value.booleanValue() ? JptCommonUiMessages.Boolean_True : JptCommonUiMessages.Boolean_False; + return NLS.bind(EclipseLinkUiDetailsMessages.EclipseLinkRefreshOnlyIfNewerComposite_refreshOnlyIfNewerDefault, defaultStringValue); + } + return EclipseLinkUiDetailsMessages.EclipseLinkRefreshOnlyIfNewerComposite_refreshOnlyIfNewerLabel; + } + }; + } + + private PropertyValueModel<Boolean> buildDefaultRefreshOnlyIfNewerHolder() { + return new PropertyAspectAdapter<EclipseLinkCaching, Boolean>( + getSubjectHolder(), + EclipseLinkCaching.SPECIFIED_REFRESH_ONLY_IF_NEWER_PROPERTY, + EclipseLinkCaching.DEFAULT_REFRESH_ONLY_IF_NEWER_PROPERTY) + { + @Override + protected Boolean buildValue_() { + if (this.subject.getSpecifiedRefreshOnlyIfNewer() != null) { + return null; + } + return Boolean.valueOf(this.subject.isDefaultRefreshOnlyIfNewer()); + } + }; + } + private ModifiablePropertyValueModel<Boolean> buildDisableHitsHolder() { + return new PropertyAspectAdapter<EclipseLinkCaching, Boolean>(getSubjectHolder(), EclipseLinkCaching.SPECIFIED_DISABLE_HITS_PROPERTY) { + @Override + protected Boolean buildValue_() { + return this.subject.getSpecifiedDisableHits(); + } + + @Override + protected void setValue_(Boolean value) { + this.subject.setSpecifiedDisableHits(value); + } + }; + } + + private PropertyValueModel<String> buildDisableHitsStringHolder() { + return new TransformationPropertyValueModel<Boolean, String>(buildDefaultDisableHitsHolder()) { + @Override + protected String transform(Boolean value) { + if (value != null) { + String defaultStringValue = value.booleanValue() ? JptCommonUiMessages.Boolean_True : JptCommonUiMessages.Boolean_False; + return NLS.bind(EclipseLinkUiDetailsMessages.EclipseLinkDisableHitsComposite_disableHitsDefault, defaultStringValue); + } + return EclipseLinkUiDetailsMessages.EclipseLinkDisableHitsComposite_disableHitsLabel; + } + }; + } + + private PropertyValueModel<Boolean> buildDefaultDisableHitsHolder() { + return new PropertyAspectAdapter<EclipseLinkCaching, Boolean>( + getSubjectHolder(), + EclipseLinkCaching.SPECIFIED_DISABLE_HITS_PROPERTY, + EclipseLinkCaching.DEFAULT_DISABLE_HITS_PROPERTY) + { + @Override + protected Boolean buildValue_() { + if (this.subject.getSpecifiedDisableHits() != null) { + return null; + } + return Boolean.valueOf(this.subject.isDefaultDisableHits()); + } + }; + } + + private EnumFormComboViewer<EclipseLinkCaching, EclipseLinkCacheCoordinationType> addCacheCoordinationTypeCombo(Composite container, PropertyValueModel<Boolean> sharedCacheEnableModel) { + + return new EnumFormComboViewer<EclipseLinkCaching, EclipseLinkCacheCoordinationType>(this, container, sharedCacheEnableModel) { + + @Override + protected void addPropertyNames(Collection<String> propertyNames) { + super.addPropertyNames(propertyNames); + propertyNames.add(EclipseLinkCaching.DEFAULT_COORDINATION_TYPE_PROPERTY); + propertyNames.add(EclipseLinkCaching.SPECIFIED_COORDINATION_TYPE_PROPERTY); + } + + @Override + protected EclipseLinkCacheCoordinationType[] getChoices() { + return EclipseLinkCacheCoordinationType.values(); + } + + @Override + protected EclipseLinkCacheCoordinationType getDefaultValue() { + return getSubject().getDefaultCoordinationType(); + } + + @Override + protected String displayString(EclipseLinkCacheCoordinationType value) { + switch (value) { + case INVALIDATE_CHANGED_OBJECTS : + return EclipseLinkUiDetailsMessages.EclipseLinkCacheCoordinationTypeComposite_invalidate_changed_objects; + case SEND_NEW_OBJECTS_WITH_CHANGES : + return EclipseLinkUiDetailsMessages.EclipseLinkCacheCoordinationTypeComposite_send_new_objects_with_changes; + case SEND_OBJECT_CHANGES : + return EclipseLinkUiDetailsMessages.EclipseLinkCacheCoordinationTypeComposite_send_object_changes; + case NONE : + return EclipseLinkUiDetailsMessages.EclipseLinkCacheCoordinationTypeComposite_none; + default : + throw new IllegalStateException(); + } + } + + @Override + protected EclipseLinkCacheCoordinationType getValue() { + return getSubject().getSpecifiedCoordinationType(); + } + + @Override + protected void setValue(EclipseLinkCacheCoordinationType value) { + getSubject().setSpecifiedCoordinationType(value); + } + + @Override + protected boolean sortChoices() { + return false; + } + + @Override + protected String getHelpId() { + return EclipseLinkHelpContextIds.CACHING_CACHE_COORDINATION_TYPE; + } + }; + } + + protected EnumFormComboViewer<EclipseLinkCaching, EclipseLinkExistenceType> addExistenceCheckingTypeCombo(Composite container) { + + return new EnumFormComboViewer<EclipseLinkCaching, EclipseLinkExistenceType>(this, container) { + + @Override + protected void addPropertyNames(Collection<String> propertyNames) { + super.addPropertyNames(propertyNames); + propertyNames.add(EclipseLinkCaching.DEFAULT_EXISTENCE_TYPE_PROPERTY); + propertyNames.add(EclipseLinkCaching.SPECIFIED_EXISTENCE_TYPE_PROPERTY); + } + + @Override + protected EclipseLinkExistenceType[] getChoices() { + return EclipseLinkExistenceType.values(); + } + + @Override + protected EclipseLinkExistenceType getDefaultValue() { + return getSubject().getDefaultExistenceType(); + } + + @Override + protected String displayString(EclipseLinkExistenceType value) { + switch (value) { + case CHECK_CACHE : + return EclipseLinkUiDetailsMessages.EclipseLinkExistenceCheckingComposite_check_cache; + case CHECK_DATABASE : + return EclipseLinkUiDetailsMessages.EclipseLinkExistenceCheckingComposite_check_database; + case ASSUME_EXISTENCE : + return EclipseLinkUiDetailsMessages.EclipseLinkExistenceCheckingComposite_assume_existence; + case ASSUME_NON_EXISTENCE : + return EclipseLinkUiDetailsMessages.EclipseLinkExistenceCheckingComposite_assume_non_existence; + default : + throw new IllegalStateException(); + } + } + + @Override + protected EclipseLinkExistenceType getValue() { + return getSubject().getSpecifiedExistenceType(); + } + + @Override + protected void setValue(EclipseLinkExistenceType value) { + getSubject().setSpecifiedExistenceType(value); + } + + @Override + protected boolean sortChoices() { + return false; + } + }; + } + }
\ No newline at end of file diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkChangeTrackingComboViewer.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkChangeTrackingComboViewer.java new file mode 100644 index 0000000000..68a6a244cb --- /dev/null +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkChangeTrackingComboViewer.java @@ -0,0 +1,96 @@ +/******************************************************************************* + * Copyright (c) 2008, 2012 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.jpa.eclipselink.ui.internal.details; + +import java.util.Collection; +import org.eclipse.jpt.common.ui.internal.widgets.EnumFormComboViewer; +import org.eclipse.jpt.common.ui.internal.widgets.Pane; +import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; +import org.eclipse.jpt.jpa.eclipselink.core.context.EclipseLinkChangeTracking; +import org.eclipse.jpt.jpa.eclipselink.core.context.EclipseLinkChangeTrackingType; +import org.eclipse.swt.widgets.Composite; + +/** + * Here is the layout of this pane: + * <pre> + * ------------------------------------------------------------------------- + * | ---------------------------------------------- | + * | Change Tracking : | |v| | + * | ---------------------------------------------- | + * -------------------------------------------------------------------------</pre> + * + * @see EclipseLinkChangeTracking + * + * @version 2.1 + * @since 2.1 + */ +public class EclipseLinkChangeTrackingComboViewer extends EnumFormComboViewer<EclipseLinkChangeTracking, EclipseLinkChangeTrackingType> { + + /** + * Creates a new <code>ChangeTrackingComposite</code>. + * + * @param parentPane The parent container of this one + * @param parent The parent container + */ + public EclipseLinkChangeTrackingComboViewer(Pane<?> parentPane, + PropertyValueModel<? extends EclipseLinkChangeTracking> subjectHolder, + Composite parent) { + + super(parentPane, subjectHolder, parent); + } + + @Override + protected void addPropertyNames(Collection<String> propertyNames) { + super.addPropertyNames(propertyNames); + propertyNames.add(EclipseLinkChangeTracking.DEFAULT_TYPE_PROPERTY); + propertyNames.add(EclipseLinkChangeTracking.SPECIFIED_TYPE_PROPERTY); + } + + @Override + protected EclipseLinkChangeTrackingType[] getChoices() { + return EclipseLinkChangeTrackingType.values(); + } + + @Override + protected EclipseLinkChangeTrackingType getDefaultValue() { + return getSubject().getDefaultType(); + } + + @Override + protected String displayString(EclipseLinkChangeTrackingType value) { + switch (value) { + case ATTRIBUTE : + return EclipseLinkUiDetailsMessages.EclipseLinkChangeTrackingComposite_attribute; + case AUTO : + return EclipseLinkUiDetailsMessages.EclipseLinkChangeTrackingComposite_auto; + case DEFERRED : + return EclipseLinkUiDetailsMessages.EclipseLinkChangeTrackingComposite_deferred; + case OBJECT : + return EclipseLinkUiDetailsMessages.EclipseLinkChangeTrackingComposite_object; + default : + throw new IllegalStateException(); + } + } + + @Override + protected EclipseLinkChangeTrackingType getValue() { + return getSubject().getSpecifiedType(); + } + + @Override + protected void setValue(EclipseLinkChangeTrackingType value) { + getSubject().setSpecifiedType(value); + } + + @Override + protected boolean sortChoices() { + return false; + } +} diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkChangeTrackingComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkChangeTrackingComposite.java deleted file mode 100644 index 5a58119c0c..0000000000 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkChangeTrackingComposite.java +++ /dev/null @@ -1,115 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2008, 2012 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.jpa.eclipselink.ui.internal.details; - -import java.util.Collection; -import org.eclipse.jpt.common.ui.internal.widgets.EnumFormComboViewer; -import org.eclipse.jpt.common.ui.internal.widgets.Pane; -import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; -import org.eclipse.jpt.jpa.eclipselink.core.context.EclipseLinkChangeTracking; -import org.eclipse.jpt.jpa.eclipselink.core.context.EclipseLinkChangeTrackingType; -import org.eclipse.swt.widgets.Composite; - -/** - * Here is the layout of this pane: - * <pre> - * ------------------------------------------------------------------------- - * | ---------------------------------------------- | - * | Change Tracking : | |v| | - * | ---------------------------------------------- | - * -------------------------------------------------------------------------</pre> - * - * @see EclipseLinkChangeTracking - * - * @version 2.1 - * @since 2.1 - */ -public class EclipseLinkChangeTrackingComposite extends Pane<EclipseLinkChangeTracking> { - - /** - * Creates a new <code>ChangeTrackingComposite</code>. - * - * @param parentPane The parent container of this one - * @param parent The parent container - */ - public EclipseLinkChangeTrackingComposite(Pane<?> parentPane, - PropertyValueModel<? extends EclipseLinkChangeTracking> subjectHolder, - Composite parent) { - - super(parentPane, subjectHolder, parent); - } - - @Override - protected void initializeLayout(Composite container) { - - addLabeledComposite( - container, - addLabel( - container, - EclipseLinkUiDetailsMessages.EclipseLinkChangeTrackingComposite_label), - addChangeTrackingTypeCombo(container).getControl(), - null - ); - } - - private EnumFormComboViewer<EclipseLinkChangeTracking, EclipseLinkChangeTrackingType> addChangeTrackingTypeCombo(Composite container) { - - return new EnumFormComboViewer<EclipseLinkChangeTracking, EclipseLinkChangeTrackingType>(this, container) { - - @Override - protected void addPropertyNames(Collection<String> propertyNames) { - super.addPropertyNames(propertyNames); - propertyNames.add(EclipseLinkChangeTracking.DEFAULT_TYPE_PROPERTY); - propertyNames.add(EclipseLinkChangeTracking.SPECIFIED_TYPE_PROPERTY); - } - - @Override - protected EclipseLinkChangeTrackingType[] getChoices() { - return EclipseLinkChangeTrackingType.values(); - } - - @Override - protected EclipseLinkChangeTrackingType getDefaultValue() { - return getSubject().getDefaultType(); - } - - @Override - protected String displayString(EclipseLinkChangeTrackingType value) { - switch (value) { - case ATTRIBUTE : - return EclipseLinkUiDetailsMessages.EclipseLinkChangeTrackingComposite_attribute; - case AUTO : - return EclipseLinkUiDetailsMessages.EclipseLinkChangeTrackingComposite_auto; - case DEFERRED : - return EclipseLinkUiDetailsMessages.EclipseLinkChangeTrackingComposite_deferred; - case OBJECT : - return EclipseLinkUiDetailsMessages.EclipseLinkChangeTrackingComposite_object; - default : - throw new IllegalStateException(); - } - } - - @Override - protected EclipseLinkChangeTrackingType getValue() { - return getSubject().getSpecifiedType(); - } - - @Override - protected void setValue(EclipseLinkChangeTrackingType value) { - getSubject().setSpecifiedType(value); - } - - @Override - protected boolean sortChoices() { - return false; - } - }; - } -} diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkConversionValueDialog.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkConversionValueDialog.java index 853d408a63..4b46324203 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkConversionValueDialog.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkConversionValueDialog.java @@ -159,16 +159,21 @@ public class EclipseLinkConversionValueDialog extends ValidatingDialog<EclipseLi } @Override + protected Composite addComposite(Composite container) { + return this.addSubPane(container, 2, 0, 0, 0, 0); + } + + @Override protected void initializeLayout(Composite container) { - this.dataValueText = addLabeledText( + this.addLabel(container,EclipseLinkUiDetailsMessages.EclipseLinkConversionValueDialog_dataValue); + this.dataValueText = this.addText( container, - EclipseLinkUiDetailsMessages.EclipseLinkConversionValueDialog_dataValue, buildDataValueHolder() ); - this.objectValueText = addLabeledText( + this.addLabel(container,EclipseLinkUiDetailsMessages.EclipseLinkConversionValueDialog_objectValue); + this.objectValueText = this.addText( container, - EclipseLinkUiDetailsMessages.EclipseLinkConversionValueDialog_objectValue, buildObjectValueHolder() ); } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkConvertComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkConvertCombo.java index 7cf9ed8509..746fd691a7 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkConvertComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkConvertCombo.java @@ -10,10 +10,8 @@ package org.eclipse.jpt.jpa.eclipselink.ui.internal.details; import java.util.ArrayList; - import org.eclipse.jpt.common.ui.WidgetFactory; import org.eclipse.jpt.common.ui.internal.JptCommonUiMessages; -import org.eclipse.jpt.common.ui.internal.util.PaneEnabler; import org.eclipse.jpt.common.ui.internal.util.SWTUtil; import org.eclipse.jpt.common.ui.internal.widgets.Pane; import org.eclipse.jpt.common.utility.internal.NonEmptyStringFilter; @@ -28,11 +26,10 @@ import org.eclipse.jpt.common.utility.internal.model.value.SetCollectionValueMod import org.eclipse.jpt.common.utility.internal.model.value.SortedListValueModelAdapter; import org.eclipse.jpt.common.utility.internal.model.value.StaticListValueModel; import org.eclipse.jpt.common.utility.internal.model.value.TransformationListValueModel; -import org.eclipse.jpt.common.utility.internal.model.value.TransformationPropertyValueModel; import org.eclipse.jpt.common.utility.model.value.CollectionValueModel; import org.eclipse.jpt.common.utility.model.value.ListValueModel; -import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; import org.eclipse.jpt.common.utility.model.value.ModifiablePropertyValueModel; +import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; import org.eclipse.jpt.jpa.core.context.JpaNamedContextNode; import org.eclipse.jpt.jpa.eclipselink.core.context.EclipseLinkConvert; import org.eclipse.jpt.jpa.eclipselink.core.context.EclipseLinkConverter; @@ -56,10 +53,12 @@ import org.eclipse.swt.widgets.Composite; * @version 2.1 * @since 2.1 */ -public class EclipseLinkConvertComposite +public class EclipseLinkConvertCombo extends Pane<EclipseLinkConvert> { + private Combo combo; + /** * A key used to represent the default value, this is required to convert * the selected item from a combo to an empty string. This key is most @@ -68,33 +67,41 @@ public class EclipseLinkConvertComposite * model. */ protected static String DEFAULT_KEY = "?!#!?#?#?default?#?!#?!#?"; //$NON-NLS-1$ - - + + /** - * Creates a new <code>EnumTypeComposite</code>. + * Creates a new <code>EclipseLinkConvertComposite</code>. */ - public EclipseLinkConvertComposite(PropertyValueModel<? extends EclipseLinkConvert> subjectHolder, + public EclipseLinkConvertCombo(PropertyValueModel<? extends EclipseLinkConvert> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory) { - super(subjectHolder, parent, widgetFactory); + super(subjectHolder, enabledModel, parent, widgetFactory); + } + + @Override + protected boolean addsComposite() { + return false; + } + + @Override + public Combo getControl() { + return this.combo; } @Override protected void initializeLayout(Composite container) { - Combo combo = addLabeledEditableCombo( + this.combo = this.addEditableCombo( container, - EclipseLinkUiDetailsMessages.EclipseLinkConvertComposite_converterNameLabel, buildConvertNameListHolder(), buildConvertNameHolder(), buildNameConverter(), - null + (String) null ); - SWTUtil.attachDefaultValueHandler(combo); - - new PaneEnabler(buildBooleanHolder(), this); + SWTUtil.attachDefaultValueHandler(this.combo); } - + protected final ModifiablePropertyValueModel<String> buildConvertNameHolder() { return new PropertyAspectAdapter<EclipseLinkConvert, String>(getSubjectHolder(), EclipseLinkConvert.SPECIFIED_CONVERTER_NAME_PROPERTY) { @Override @@ -112,7 +119,7 @@ public class EclipseLinkConvertComposite } }; } - + private ListValueModel<String> buildConvertNameListHolder() { java.util.List<ListValueModel<String>> list = new ArrayList<ListValueModel<String>>(); list.add(buildDefaultNameListHolder()); @@ -120,7 +127,7 @@ public class EclipseLinkConvertComposite list.add(buildSortedConverterNamesModel()); return new CompositeListValueModel<ListValueModel<String>, String>(list); } - + protected ListValueModel<String> buildDefaultNameListHolder() { return new PropertyListValueModelAdapter<String>( buildDefaultNameHolder() @@ -189,11 +196,11 @@ public class EclipseLinkConvertComposite protected ListValueModel<String> buildReservedConverterNameListHolder() { return new StaticListValueModel<String>(EclipseLinkConvert.RESERVED_CONVERTER_NAMES); } - + protected ListValueModel<String> buildSortedConverterNamesModel() { return new SortedListValueModelAdapter<String>(this.buildUniqueConverterNamesModel()); } - + protected CollectionValueModel<String> buildUniqueConverterNamesModel() { return new SetCollectionValueModel<String>(this.buildConverterNamesModel()); } @@ -227,7 +234,7 @@ public class EclipseLinkConvertComposite } }; } - + protected PropertyValueModel<EclipseLinkPersistenceUnit> buildPersistenceUnitHolder() { return new PropertyAspectAdapter<EclipseLinkConvert, EclipseLinkPersistenceUnit>(getSubjectHolder()) { @Override @@ -236,16 +243,4 @@ public class EclipseLinkConvertComposite } }; } - - protected PropertyValueModel<Boolean> buildBooleanHolder() { - return new TransformationPropertyValueModel<EclipseLinkConvert, Boolean>(getSubjectHolder()) { - @Override - protected Boolean transform(EclipseLinkConvert value) { - if (getSubject() != null && getSubject().getParent().getPersistentAttribute().isVirtual()) { - return Boolean.FALSE; - } - return Boolean.valueOf(value != null); - } - }; - } } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkConvertersComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkConvertersComposite.java index c3b5787506..5463eea96c 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkConvertersComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkConvertersComposite.java @@ -15,22 +15,22 @@ import org.eclipse.jface.viewers.ILabelProvider; import org.eclipse.jface.viewers.LabelProvider; import org.eclipse.jface.window.Window; import org.eclipse.jpt.common.ui.internal.util.ControlSwitcher; -import org.eclipse.jpt.common.ui.internal.util.PaneEnabler; import org.eclipse.jpt.common.ui.internal.widgets.AddRemoveListPane; import org.eclipse.jpt.common.ui.internal.widgets.AddRemovePane.Adapter; import org.eclipse.jpt.common.ui.internal.widgets.Pane; import org.eclipse.jpt.common.utility.internal.Transformer; import org.eclipse.jpt.common.utility.internal.iterables.ListIterable; import org.eclipse.jpt.common.utility.internal.iterables.SuperListIterableWrapper; +import org.eclipse.jpt.common.utility.internal.model.value.CollectionPropertyValueModelAdapter; import org.eclipse.jpt.common.utility.internal.model.value.CompositeListValueModel; import org.eclipse.jpt.common.utility.internal.model.value.ItemPropertyListValueModelAdapter; import org.eclipse.jpt.common.utility.internal.model.value.ListAspectAdapter; -import org.eclipse.jpt.common.utility.internal.model.value.SimplePropertyValueModel; +import org.eclipse.jpt.common.utility.internal.model.value.SimpleCollectionValueModel; import org.eclipse.jpt.common.utility.internal.model.value.TransformationPropertyValueModel; -import org.eclipse.jpt.common.utility.internal.model.value.swing.ObjectListSelectionModel; +import org.eclipse.jpt.common.utility.model.value.CollectionValueModel; import org.eclipse.jpt.common.utility.model.value.ListValueModel; +import org.eclipse.jpt.common.utility.model.value.ModifiableCollectionValueModel; import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; -import org.eclipse.jpt.common.utility.model.value.ModifiablePropertyValueModel; import org.eclipse.jpt.jpa.core.context.JpaNamedContextNode; import org.eclipse.jpt.jpa.eclipselink.core.context.EclipseLinkConverter; import org.eclipse.jpt.jpa.eclipselink.core.context.EclipseLinkConverterContainer; @@ -70,128 +70,166 @@ import org.eclipse.ui.part.PageBook; */ public class EclipseLinkConvertersComposite extends Pane<EclipseLinkConverterContainer> { - private AddRemoveListPane<EclipseLinkConverterContainer> listPane; private EclipseLinkCustomConverterComposite converterComposite; private EclipseLinkObjectTypeConverterComposite objectTypeConverterComposite; private EclipseLinkStructConverterComposite structConverterComposite; private EclipseLinkTypeConverterComposite typeConverterComposite; - private ModifiablePropertyValueModel<EclipseLinkConverter> selectedConverterHolder; + private ModifiableCollectionValueModel<EclipseLinkConverter> selectedConvertersModel; + private PropertyValueModel<EclipseLinkConverter> selectedConverterModel; public EclipseLinkConvertersComposite( Pane<?> parentPane, PropertyValueModel<? extends EclipseLinkConverterContainer> subjectHolder, Composite parent) { - super(parentPane, subjectHolder, parent, false); + super(parentPane, subjectHolder, parent); } @Override protected void initialize() { super.initialize(); - this.selectedConverterHolder = buildSelectedConverterHolder(); + this.selectedConvertersModel = this.buildSelectedConvertersModel(); + this.selectedConverterModel = this.buildSelectedConverterModel(this.selectedConvertersModel); } - private ModifiablePropertyValueModel<EclipseLinkConverter> buildSelectedConverterHolder() { - return new SimplePropertyValueModel<EclipseLinkConverter>(); + private ModifiableCollectionValueModel<EclipseLinkConverter> buildSelectedConvertersModel() { + return new SimpleCollectionValueModel<EclipseLinkConverter>(); } + protected PropertyValueModel<EclipseLinkConverter> buildSelectedConverterModel(ModifiableCollectionValueModel<EclipseLinkConverter> selectedConvertersModel) { + return new CollectionPropertyValueModelAdapter<EclipseLinkConverter, EclipseLinkConverter>(selectedConvertersModel) { + @Override + protected EclipseLinkConverter buildValue() { + if (this.collectionModel.size() == 1) { + return this.collectionModel.iterator().next(); + } + return null; + } + }; + } + + @Override protected void initializeLayout(Composite container) { - // List pane - this.listPane = addListPane(container); - this.installPaneEnabler(); + this.addListPane(container); // Property pane PageBook pageBook = new PageBook(container, SWT.NULL); pageBook.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); - this.converterComposite = new EclipseLinkCustomConverterComposite( - buildCustomConverterHolder(), - pageBook, - getWidgetFactory() - ); - registerSubPane(this.converterComposite); - - this.objectTypeConverterComposite = new EclipseLinkObjectTypeConverterComposite( - buildObjectTypeConverterHolder(), - pageBook, - getWidgetFactory() - ); - registerSubPane(this.objectTypeConverterComposite); - - this.structConverterComposite = new EclipseLinkStructConverterComposite( - buildStructConverterHolder(), - pageBook, - getWidgetFactory() - ); - registerSubPane(this.structConverterComposite); + installPaneSwitcher(pageBook); + } + + protected EclipseLinkCustomConverterComposite getCustomConverterComposite(PageBook pageBook) { + if (this.converterComposite == null) { + this.converterComposite = new EclipseLinkCustomConverterComposite( + buildSelectedCustomConverterModel(), + pageBook, + getWidgetFactory() + ); + registerSubPane(this.converterComposite); + } + return this.converterComposite; + } + + protected EclipseLinkObjectTypeConverterComposite getObjectTypeConverterComposite(PageBook pageBook) { + if (this.objectTypeConverterComposite == null) { + this.objectTypeConverterComposite = new EclipseLinkObjectTypeConverterComposite( + buildSelectedObjectTypeConverterModel(), + pageBook, + getWidgetFactory() + ); + registerSubPane(this.objectTypeConverterComposite); + } + return this.objectTypeConverterComposite; + } - this.typeConverterComposite = new EclipseLinkTypeConverterComposite( - buildTypeConverterHolder(), - pageBook, - getWidgetFactory() - ); - registerSubPane(this.typeConverterComposite); + protected EclipseLinkStructConverterComposite getStructConverterComposite(PageBook pageBook) { + if (this.structConverterComposite == null) { + this.structConverterComposite = new EclipseLinkStructConverterComposite( + buildSelectedStructConverterModel(), + pageBook, + getWidgetFactory() + ); + registerSubPane(this.structConverterComposite); + } + return this.structConverterComposite; + } - installPaneSwitcher(pageBook); + protected EclipseLinkTypeConverterComposite getTypeConverterComposite(PageBook pageBook) { + if (this.typeConverterComposite == null) { + this.typeConverterComposite = new EclipseLinkTypeConverterComposite( + buildSelectedTypeConverterModel(), + pageBook, + getWidgetFactory() + ); + registerSubPane(this.typeConverterComposite); + } + return this.typeConverterComposite; } - private AddRemoveListPane<EclipseLinkConverterContainer> addListPane(Composite container) { + private AddRemoveListPane<EclipseLinkConverterContainer, EclipseLinkConverter> addListPane(Composite container) { - return new AddRemoveListPane<EclipseLinkConverterContainer>( + return new AddRemoveListPane<EclipseLinkConverterContainer, EclipseLinkConverter>( this, container, buildConvertersAdapter(), buildDisplayableConvertersListHolder(), - this.selectedConverterHolder, + this.selectedConvertersModel, buildConvertersListLabelProvider(), null ); } private void installPaneSwitcher(PageBook pageBook) { - new ControlSwitcher(this.selectedConverterHolder, buildPaneTransformer(), pageBook); + new ControlSwitcher(this.selectedConverterModel, this.buildPaneTransformer(pageBook), pageBook); } - private Adapter buildConvertersAdapter() { + private Adapter<EclipseLinkConverter> buildConvertersAdapter() { - return new AddRemoveListPane.AbstractAdapter() { + return new AddRemoveListPane.AbstractAdapter<EclipseLinkConverter>() { - public void addNewItem(ObjectListSelectionModel listSelectionModel) { - addConverter(); + public EclipseLinkConverter addNewItem() { + return addConverter(); } - public void removeSelectedItems(ObjectListSelectionModel listSelectionModel) { - for (Object item : listSelectionModel.selectedValues()) { - if (((EclipseLinkConverter) item).getType() == EclipseLinkCustomConverter.class) { - getSubject().removeCustomConverter((EclipseLinkCustomConverter) item); - } - else if (((EclipseLinkConverter) item).getType() == EclipseLinkObjectTypeConverter.class) { - getSubject().removeObjectTypeConverter((EclipseLinkObjectTypeConverter) item); - } - else if (((EclipseLinkConverter) item).getType() == EclipseLinkStructConverter.class) { - getSubject().removeStructConverter((EclipseLinkStructConverter) item); - } - else if (((EclipseLinkConverter) item).getType() == EclipseLinkTypeConverter.class) { - getSubject().removeTypeConverter((EclipseLinkTypeConverter) item); - } + @Override + public PropertyValueModel<Boolean> buildRemoveButtonEnabledModel(CollectionValueModel<EclipseLinkConverter> selectedItemsModel) { + //enable the remove button only when 1 item is selected, same as the optional button + return this.buildSingleSelectedItemEnabledModel(selectedItemsModel); + } + + public void removeSelectedItems(CollectionValueModel<EclipseLinkConverter> selectedItemsModel) { + //assume only 1 item since remove button is disabled otherwise + EclipseLinkConverter item = selectedItemsModel.iterator().next(); + if (item.getType() == EclipseLinkCustomConverter.class) { + getSubject().removeCustomConverter((EclipseLinkCustomConverter) item); + } + else if (item.getType() == EclipseLinkObjectTypeConverter.class) { + getSubject().removeObjectTypeConverter((EclipseLinkObjectTypeConverter) item); + } + else if (item.getType() == EclipseLinkStructConverter.class) { + getSubject().removeStructConverter((EclipseLinkStructConverter) item); + } + else if (item.getType() == EclipseLinkTypeConverter.class) { + getSubject().removeTypeConverter((EclipseLinkTypeConverter) item); } } }; } - private void addConverter() { - this.addEclipseLinkConverterFromDialog(this.buildEclipseLinkConverterDialog()); + private EclipseLinkConverter addConverter() { + return this.addEclipseLinkConverterFromDialog(this.buildEclipseLinkConverterDialog()); } protected EclipseLinkConverterDialog buildEclipseLinkConverterDialog() { return new EclipseLinkConverterDialog(this.getShell(), this.getSubject()); } - protected void addEclipseLinkConverterFromDialog(EclipseLinkConverterDialog dialog) { + protected EclipseLinkConverter addEclipseLinkConverterFromDialog(EclipseLinkConverterDialog dialog) { if (dialog.open() != Window.OK) { - return; + return null; } Class<? extends EclipseLinkConverter> converterType = dialog.getConverterType(); EclipseLinkConverter converter; @@ -211,10 +249,11 @@ public class EclipseLinkConvertersComposite extends Pane<EclipseLinkConverterCon throw new IllegalArgumentException(); } converter.setName(dialog.getName()); - this.selectedConverterHolder.setValue(converter);//so that it gets selected in the List for the user to edit + + return converter; } - private Transformer<EclipseLinkConverter, Control> buildPaneTransformer() { + private Transformer<EclipseLinkConverter, Control> buildPaneTransformer(final PageBook pageBook) { return new Transformer<EclipseLinkConverter, Control>() { public Control transform(EclipseLinkConverter converter) { if (converter == null) { @@ -222,16 +261,16 @@ public class EclipseLinkConvertersComposite extends Pane<EclipseLinkConverterCon } if (converter.getType() == EclipseLinkCustomConverter.class) { - return EclipseLinkConvertersComposite.this.converterComposite.getControl(); + return EclipseLinkConvertersComposite.this.getCustomConverterComposite(pageBook).getControl(); } if (converter.getType() == EclipseLinkObjectTypeConverter.class) { - return EclipseLinkConvertersComposite.this.objectTypeConverterComposite.getControl(); + return EclipseLinkConvertersComposite.this.getObjectTypeConverterComposite(pageBook).getControl(); } if (converter.getType() == EclipseLinkStructConverter.class) { - return EclipseLinkConvertersComposite.this.structConverterComposite.getControl(); + return EclipseLinkConvertersComposite.this.getStructConverterComposite(pageBook).getControl(); } if (converter.getType() == EclipseLinkTypeConverter.class) { - return EclipseLinkConvertersComposite.this.typeConverterComposite.getControl(); + return EclipseLinkConvertersComposite.this.getTypeConverterComposite(pageBook).getControl(); } return null; @@ -323,8 +362,8 @@ public class EclipseLinkConvertersComposite extends Pane<EclipseLinkConverterCon }; } - private PropertyValueModel<EclipseLinkCustomConverter> buildCustomConverterHolder() { - return new TransformationPropertyValueModel<EclipseLinkConverter, EclipseLinkCustomConverter>(this.selectedConverterHolder) { + private PropertyValueModel<EclipseLinkCustomConverter> buildSelectedCustomConverterModel() { + return new TransformationPropertyValueModel<EclipseLinkConverter, EclipseLinkCustomConverter>(this.selectedConverterModel) { @Override protected EclipseLinkCustomConverter transform_(EclipseLinkConverter value) { return value.getType() == EclipseLinkCustomConverter.class ? (EclipseLinkCustomConverter) value : null; @@ -332,8 +371,8 @@ public class EclipseLinkConvertersComposite extends Pane<EclipseLinkConverterCon }; } - private PropertyValueModel<EclipseLinkObjectTypeConverter> buildObjectTypeConverterHolder() { - return new TransformationPropertyValueModel<EclipseLinkConverter, EclipseLinkObjectTypeConverter>(this.selectedConverterHolder) { + private PropertyValueModel<EclipseLinkObjectTypeConverter> buildSelectedObjectTypeConverterModel() { + return new TransformationPropertyValueModel<EclipseLinkConverter, EclipseLinkObjectTypeConverter>(this.selectedConverterModel) { @Override protected EclipseLinkObjectTypeConverter transform_(EclipseLinkConverter value) { return value.getType() == EclipseLinkObjectTypeConverter.class ? (EclipseLinkObjectTypeConverter) value : null; @@ -341,8 +380,8 @@ public class EclipseLinkConvertersComposite extends Pane<EclipseLinkConverterCon }; } - private PropertyValueModel<EclipseLinkStructConverter> buildStructConverterHolder() { - return new TransformationPropertyValueModel<EclipseLinkConverter, EclipseLinkStructConverter>(this.selectedConverterHolder) { + private PropertyValueModel<EclipseLinkStructConverter> buildSelectedStructConverterModel() { + return new TransformationPropertyValueModel<EclipseLinkConverter, EclipseLinkStructConverter>(this.selectedConverterModel) { @Override protected EclipseLinkStructConverter transform_(EclipseLinkConverter value) { return value.getType() == EclipseLinkStructConverter.class ? (EclipseLinkStructConverter) value : null; @@ -350,8 +389,8 @@ public class EclipseLinkConvertersComposite extends Pane<EclipseLinkConverterCon }; } - private PropertyValueModel<EclipseLinkTypeConverter> buildTypeConverterHolder() { - return new TransformationPropertyValueModel<EclipseLinkConverter, EclipseLinkTypeConverter>(this.selectedConverterHolder) { + private PropertyValueModel<EclipseLinkTypeConverter> buildSelectedTypeConverterModel() { + return new TransformationPropertyValueModel<EclipseLinkConverter, EclipseLinkTypeConverter>(this.selectedConverterModel) { @Override protected EclipseLinkTypeConverter transform_(EclipseLinkConverter value) { return value.getType() == EclipseLinkTypeConverter.class ? (EclipseLinkTypeConverter) value : null; @@ -367,20 +406,4 @@ public class EclipseLinkConvertersComposite extends Pane<EclipseLinkConverterCon } }; } - - private void installPaneEnabler() { - new PaneEnabler( - this.buildPaneEnablerHolder(), - this.listPane - ); - } - - private PropertyValueModel<Boolean> buildPaneEnablerHolder() { - return new TransformationPropertyValueModel<EclipseLinkConverterContainer, Boolean>(getSubjectHolder()) { - @Override - protected Boolean transform(EclipseLinkConverterContainer value) { - return (value != null); - } - }; - } }
\ No newline at end of file diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkCustomConverterComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkCustomConverterComposite.java index 0039b1b393..ca9cfcb18f 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkCustomConverterComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkCustomConverterComposite.java @@ -11,18 +11,17 @@ package org.eclipse.jpt.jpa.eclipselink.ui.internal.details; import org.eclipse.jdt.core.IJavaProject; import org.eclipse.jpt.common.ui.WidgetFactory; -import org.eclipse.jpt.common.ui.internal.util.PaneEnabler; import org.eclipse.jpt.common.ui.internal.widgets.ClassChooserPane; import org.eclipse.jpt.common.ui.internal.widgets.Pane; import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter; -import org.eclipse.jpt.common.utility.internal.model.value.TransformationPropertyValueModel; -import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; import org.eclipse.jpt.common.utility.model.value.ModifiablePropertyValueModel; +import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; import org.eclipse.jpt.jpa.core.context.JpaNamedContextNode; import org.eclipse.jpt.jpa.eclipselink.core.context.EclipseLinkConverter; import org.eclipse.jpt.jpa.eclipselink.core.context.EclipseLinkConverterClassConverter; import org.eclipse.jpt.jpa.eclipselink.core.context.EclipseLinkCustomConverter; import org.eclipse.swt.widgets.Composite; +import org.eclipse.ui.forms.widgets.Hyperlink; /** * Here the layout of this pane: @@ -34,7 +33,7 @@ import org.eclipse.swt.widgets.Composite; * -----------------------------------------------------------------------------</pre> * * @see EclipseLinkConverter - * @see EclipseLinkConvertComposite - A container of this widget + * @see EclipseLinkConvertCombo - A container of this widget * * @version 2.1 * @since 2.1 @@ -56,16 +55,17 @@ public class EclipseLinkCustomConverterComposite extends Pane<EclipseLinkCustomC } @Override + protected Composite addComposite(Composite container) { + return this.addSubPane(container, 2, 0, 0, 0, 0); + } + + @Override protected void initializeLayout(Composite container) { + this.addLabel(container, EclipseLinkUiDetailsMessages.EclipseLinkConverterComposite_nameTextLabel); + this.addText(container, buildNameTextHolder()); - addLabeledText( - container, - EclipseLinkUiDetailsMessages.EclipseLinkConverterComposite_nameTextLabel, - buildNameTextHolder()); - - addClassChooser(container); - - new PaneEnabler(buildBooleanHolder(), this); + Hyperlink hyperlink = this.addHyperlink(container, EclipseLinkUiDetailsMessages.EclipseLinkConverterComposite_classLabel); + this.addClassChooser(container, hyperlink); } protected ModifiablePropertyValueModel<String> buildNameTextHolder() { @@ -87,9 +87,9 @@ public class EclipseLinkCustomConverterComposite extends Pane<EclipseLinkCustomC } - private ClassChooserPane<EclipseLinkCustomConverter> addClassChooser(Composite container) { + private ClassChooserPane<EclipseLinkCustomConverter> addClassChooser(Composite container, Hyperlink hyperlink) { - return new ClassChooserPane<EclipseLinkCustomConverter>(this, container) { + return new ClassChooserPane<EclipseLinkCustomConverter>(this, container, hyperlink) { @Override protected ModifiablePropertyValueModel<String> buildTextHolder() { @@ -117,11 +117,6 @@ public class EclipseLinkCustomConverterComposite extends Pane<EclipseLinkCustomC } @Override - protected String getLabelText() { - return EclipseLinkUiDetailsMessages.EclipseLinkConverterComposite_classLabel; - } - - @Override protected IJavaProject getJavaProject() { return getSubject().getJpaProject().getJavaProject(); } @@ -147,17 +142,4 @@ public class EclipseLinkCustomConverterComposite extends Pane<EclipseLinkCustomC } }; } - - - protected PropertyValueModel<Boolean> buildBooleanHolder() { - return new TransformationPropertyValueModel<EclipseLinkCustomConverter, Boolean>(getSubjectHolder()) { - @Override - protected Boolean transform(EclipseLinkCustomConverter value) { -// if (getSubject() != null && getSubject().getParent().getPersistentAttribute().isVirtual()) { -// return Boolean.FALSE; -// } - return Boolean.valueOf(value != null); - } - }; - } } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkCustomizerClassChooser.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkCustomizerClassChooser.java new file mode 100644 index 0000000000..6a5e0175a6 --- /dev/null +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkCustomizerClassChooser.java @@ -0,0 +1,123 @@ +/******************************************************************************* + * Copyright (c) 2008, 2012 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.jpa.eclipselink.ui.internal.details; + +import org.eclipse.jdt.core.IJavaProject; +import org.eclipse.jpt.common.ui.internal.JptCommonUiMessages; +import org.eclipse.jpt.common.ui.internal.widgets.ClassChooserComboPane; +import org.eclipse.jpt.common.ui.internal.widgets.Pane; +import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter; +import org.eclipse.jpt.common.utility.internal.model.value.PropertyListValueModelAdapter; +import org.eclipse.jpt.common.utility.model.value.ListValueModel; +import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; +import org.eclipse.jpt.common.utility.model.value.ModifiablePropertyValueModel; +import org.eclipse.jpt.jpa.eclipselink.core.context.EclipseLinkCustomizer; +import org.eclipse.osgi.util.NLS; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.ui.forms.widgets.Hyperlink; + +/** + * + * @see EclipseLinkCustomizer + * + * @version 2.3 + * @since 2.1 + */ +public class EclipseLinkCustomizerClassChooser extends ClassChooserComboPane<EclipseLinkCustomizer> +{ + /** + * Creates a new <code>CustomizerComposite</code>. + * + * @param parentPane The parent container of this one + * @param parent The parent container + */ + public EclipseLinkCustomizerClassChooser(Pane<?> parentPane, + PropertyValueModel<? extends EclipseLinkCustomizer> subjectHolder, + Composite parent, + Hyperlink hyperlink) { + + super(parentPane, subjectHolder, parent, hyperlink); + } + + + @Override + protected String getClassName() { + return getSubject().getSpecifiedCustomizerClass(); + } + + @Override + protected void setClassName(String className) { + getSubject().setSpecifiedCustomizerClass(className); + } + + @Override + protected IJavaProject getJavaProject() { + return getSubject().getJpaProject().getJavaProject(); + } + + @Override + protected String getFullyQualifiedClassName() { + return getSubject().getFullyQualifiedCustomizerClass(); + } + + @Override + protected String getSuperInterfaceName() { + return EclipseLinkCustomizer.ECLIPSELINK_DESCRIPTOR_CUSTOMIZER_CLASS_NAME; + } + + @Override + protected char getEnclosingTypeSeparator() { + return getSubject().getCustomizerClassEnclosingTypeSeparator(); + } + + @Override + protected ModifiablePropertyValueModel<String> buildTextHolder() { + return new PropertyAspectAdapter<EclipseLinkCustomizer, String>( + getSubjectHolder(), + EclipseLinkCustomizer.SPECIFIED_CUSTOMIZER_CLASS_PROPERTY, + EclipseLinkCustomizer.DEFAULT_CUSTOMIZER_CLASS_PROPERTY) { + + @Override + protected String buildValue_() { + String value = this.subject.getSpecifiedCustomizerClass(); + return (value == null) ? defaultText(this.subject) : value; + } + + @Override + protected void setValue_(String value) { + if (value == null + || value.length() == 0 + || value.equals(defaultText(this.subject))) { + value = null; + } + this.subject.setSpecifiedCustomizerClass(value); + } + }; + } + + protected String defaultText(EclipseLinkCustomizer customizer) { + String defaultClassName = customizer.getDefaultCustomizerClass(); + return (defaultClassName == null) ? + JptCommonUiMessages.NoneSelected + : NLS.bind(JptCommonUiMessages.DefaultWithOneParam, defaultClassName); + } + + @Override + protected ListValueModel<String> buildClassListHolder() { + return new PropertyListValueModelAdapter<String>( + new PropertyAspectAdapter<EclipseLinkCustomizer, String>( + getSubjectHolder(), EclipseLinkCustomizer.DEFAULT_CUSTOMIZER_CLASS_PROPERTY) { + @Override + protected String buildValue_() { + return defaultText(this.subject); + } + }); + } +} diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkCustomizerComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkCustomizerComposite.java deleted file mode 100644 index dd76b5ce33..0000000000 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkCustomizerComposite.java +++ /dev/null @@ -1,138 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2008, 2012 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.jpa.eclipselink.ui.internal.details; - -import org.eclipse.jdt.core.IJavaProject; -import org.eclipse.jpt.common.ui.internal.JptCommonUiMessages; -import org.eclipse.jpt.common.ui.internal.widgets.ClassChooserComboPane; -import org.eclipse.jpt.common.ui.internal.widgets.Pane; -import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter; -import org.eclipse.jpt.common.utility.internal.model.value.PropertyListValueModelAdapter; -import org.eclipse.jpt.common.utility.model.value.ListValueModel; -import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; -import org.eclipse.jpt.common.utility.model.value.ModifiablePropertyValueModel; -import org.eclipse.jpt.jpa.eclipselink.core.context.EclipseLinkCustomizer; -import org.eclipse.osgi.util.NLS; -import org.eclipse.swt.widgets.Composite; - -/** - * - * @see EclipseLinkCustomizer - * - * @version 2.3 - * @since 2.1 - */ -public class EclipseLinkCustomizerComposite extends Pane<EclipseLinkCustomizer> -{ - /** - * Creates a new <code>CustomizerComposite</code>. - * - * @param parentPane The parent container of this one - * @param parent The parent container - */ - public EclipseLinkCustomizerComposite(Pane<?> parentPane, - PropertyValueModel<? extends EclipseLinkCustomizer> subjectHolder, - Composite parent) { - - super(parentPane, subjectHolder, parent); - } - - @Override - protected void initializeLayout(Composite container) { - new CustomizerClassChooserComboPane(this, container); - } - - private class CustomizerClassChooserComboPane - extends ClassChooserComboPane<EclipseLinkCustomizer> - { - public CustomizerClassChooserComboPane(Pane<EclipseLinkCustomizer> parentPane, Composite parent) { - super(parentPane, parent); - } - - @Override - protected String getClassName() { - return getSubject().getSpecifiedCustomizerClass(); - } - - @Override - protected void setClassName(String className) { - getSubject().setSpecifiedCustomizerClass(className); - } - - @Override - protected String getLabelText() { - return EclipseLinkUiDetailsMessages.EclipseLinkCustomizerComposite_classLabel; - } - - @Override - protected IJavaProject getJavaProject() { - return getSubject().getJpaProject().getJavaProject(); - } - - @Override - protected String getFullyQualifiedClassName() { - return getSubject().getFullyQualifiedCustomizerClass(); - } - - @Override - protected String getSuperInterfaceName() { - return EclipseLinkCustomizer.ECLIPSELINK_DESCRIPTOR_CUSTOMIZER_CLASS_NAME; - } - - @Override - protected char getEnclosingTypeSeparator() { - return getSubject().getCustomizerClassEnclosingTypeSeparator(); - } - - @Override - protected ModifiablePropertyValueModel<String> buildTextHolder() { - return new PropertyAspectAdapter<EclipseLinkCustomizer, String>( - getSubjectHolder(), - EclipseLinkCustomizer.SPECIFIED_CUSTOMIZER_CLASS_PROPERTY, - EclipseLinkCustomizer.DEFAULT_CUSTOMIZER_CLASS_PROPERTY) { - - @Override - protected String buildValue_() { - String value = this.subject.getSpecifiedCustomizerClass(); - return (value == null) ? defaultText(this.subject) : value; - } - - @Override - protected void setValue_(String value) { - if (value == null - || value.length() == 0 - || value.equals(defaultText(this.subject))) { - value = null; - } - this.subject.setSpecifiedCustomizerClass(value); - } - }; - } - - protected String defaultText(EclipseLinkCustomizer customizer) { - String defaultClassName = customizer.getDefaultCustomizerClass(); - return (defaultClassName == null) ? - JptCommonUiMessages.NoneSelected - : NLS.bind(JptCommonUiMessages.DefaultWithOneParam, defaultClassName); - } - - @Override - protected ListValueModel<String> buildClassListHolder() { - return new PropertyListValueModelAdapter<String>( - new PropertyAspectAdapter<EclipseLinkCustomizer, String>( - getSubjectHolder(), EclipseLinkCustomizer.DEFAULT_CUSTOMIZER_CLASS_PROPERTY) { - @Override - protected String buildValue_() { - return defaultText(this.subject); - } - }); - } - } -} diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkDisableHitsComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkDisableHitsComposite.java deleted file mode 100644 index 56ae323acd..0000000000 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkDisableHitsComposite.java +++ /dev/null @@ -1,100 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2008, 2012 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.jpa.eclipselink.ui.internal.details; - -import org.eclipse.jpt.common.ui.internal.JptCommonUiMessages; -import org.eclipse.jpt.common.ui.internal.widgets.Pane; -import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter; -import org.eclipse.jpt.common.utility.internal.model.value.TransformationPropertyValueModel; -import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; -import org.eclipse.jpt.common.utility.model.value.ModifiablePropertyValueModel; -import org.eclipse.jpt.jpa.eclipselink.core.context.EclipseLinkCaching; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.EclipseLinkHelpContextIds; -import org.eclipse.osgi.util.NLS; -import org.eclipse.swt.widgets.Composite; - -/** - * This composite simply shows a tri-state check box for the Disable Hits option. - * - * @see EclipseLinkCaching - * @see EclipseLinkCachingComposite - A container of this widget - * - * @version 2.1 - * @since 2.1 - */ -public class EclipseLinkDisableHitsComposite extends Pane<EclipseLinkCaching> -{ - /** - * Creates a new <code>OptionalComposite</code>. - * - * @param parentPane The parent container of this one - * @param parent The parent container - */ - public EclipseLinkDisableHitsComposite(Pane<? extends EclipseLinkCaching> parentPane, - Composite parent) - { - super(parentPane, parent); - } - - @Override - protected void initializeLayout(Composite container) { - - addTriStateCheckBoxWithDefault( - container, - EclipseLinkUiDetailsMessages.EclipseLinkDisableHitsComposite_disableHitsLabel, - buildDisableHitsHolder(), - buildDisableHitsStringHolder(), - EclipseLinkHelpContextIds.CACHING_DISABLE_HITS - ); - } - - private ModifiablePropertyValueModel<Boolean> buildDisableHitsHolder() { - return new PropertyAspectAdapter<EclipseLinkCaching, Boolean>(getSubjectHolder(), EclipseLinkCaching.SPECIFIED_DISABLE_HITS_PROPERTY) { - @Override - protected Boolean buildValue_() { - return this.subject.getSpecifiedDisableHits(); - } - - @Override - protected void setValue_(Boolean value) { - this.subject.setSpecifiedDisableHits(value); - } - }; - } - - private PropertyValueModel<String> buildDisableHitsStringHolder() { - return new TransformationPropertyValueModel<Boolean, String>(buildDefaultDisableHitsHolder()) { - @Override - protected String transform(Boolean value) { - if (value != null) { - String defaultStringValue = value.booleanValue() ? JptCommonUiMessages.Boolean_True : JptCommonUiMessages.Boolean_False; - return NLS.bind(EclipseLinkUiDetailsMessages.EclipseLinkDisableHitsComposite_disableHitsDefault, defaultStringValue); - } - return EclipseLinkUiDetailsMessages.EclipseLinkDisableHitsComposite_disableHitsLabel; - } - }; - } - - private PropertyValueModel<Boolean> buildDefaultDisableHitsHolder() { - return new PropertyAspectAdapter<EclipseLinkCaching, Boolean>( - getSubjectHolder(), - EclipseLinkCaching.SPECIFIED_DISABLE_HITS_PROPERTY, - EclipseLinkCaching.DEFAULT_DISABLE_HITS_PROPERTY) - { - @Override - protected Boolean buildValue_() { - if (this.subject.getSpecifiedDisableHits() != null) { - return null; - } - return Boolean.valueOf(this.subject.isDefaultDisableHits()); - } - }; - } -}
\ No newline at end of file diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkElementCollectionMapping2_0Composite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkElementCollectionMapping2_0Composite.java index 9828df15e4..ce1e1d939d 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkElementCollectionMapping2_0Composite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkElementCollectionMapping2_0Composite.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2011 Oracle. All rights reserved. + * Copyright (c) 2011, 2012 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. @@ -11,23 +11,31 @@ package org.eclipse.jpt.jpa.eclipselink.ui.internal.details; import org.eclipse.jpt.common.ui.WidgetFactory; import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter; +import org.eclipse.jpt.common.utility.internal.model.value.TransformationPropertyValueModel; import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; import org.eclipse.jpt.jpa.core.jpa2.context.ElementCollectionMapping2_0; +import org.eclipse.jpt.jpa.eclipselink.core.context.EclipseLinkConvert; import org.eclipse.jpt.jpa.eclipselink.core.context.EclipseLinkConverterContainer; import org.eclipse.jpt.jpa.eclipselink.core.context.EclipseLinkElementCollectionMapping2_0; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkUiDetailsMessages; import org.eclipse.jpt.jpa.ui.internal.jpa2.details.AbstractElementCollectionMapping2_0Composite; +import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.ui.forms.events.ExpansionAdapter; +import org.eclipse.ui.forms.events.ExpansionEvent; +import org.eclipse.ui.forms.widgets.ExpandableComposite; +import org.eclipse.ui.forms.widgets.Section; public abstract class EclipseLinkElementCollectionMapping2_0Composite<T extends ElementCollectionMapping2_0> extends AbstractElementCollectionMapping2_0Composite<T> { protected EclipseLinkElementCollectionMapping2_0Composite(PropertyValueModel<? extends T> subjectHolder, - Composite parent, - WidgetFactory widgetFactory) { + PropertyValueModel<Boolean> enabledModel, + Composite parent, + WidgetFactory widgetFactory) { - super(subjectHolder, parent, widgetFactory); + super(subjectHolder, enabledModel, parent, widgetFactory); } @Override @@ -39,17 +47,22 @@ public abstract class EclipseLinkElementCollectionMapping2_0Composite<T extends initializeOrderingCollapsibleSection(container); } - protected void initializeConvertersCollapsibleSection(Composite container) { - container = addCollapsibleSection( - container, - EclipseLinkUiDetailsMessages.EclipseLinkTypeMappingComposite_converters - ); - initializeConvertersSection(container, this.buildConverterHolderValueModel()); + final Section section = this.getWidgetFactory().createSection(container, ExpandableComposite.TITLE_BAR | ExpandableComposite.TWISTIE); + section.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + section.setText(EclipseLinkUiDetailsMessages.EclipseLinkTypeMappingComposite_converters); + section.addExpansionListener(new ExpansionAdapter() { + @Override + public void expansionStateChanging(ExpansionEvent e) { + if (e.getState() && section.getClient() == null) { + section.setClient(EclipseLinkElementCollectionMapping2_0Composite.this.initializeConvertersSection(section)); + } + } + }); } - protected void initializeConvertersSection(Composite container, PropertyValueModel<EclipseLinkConverterContainer> converterHolder) { - new EclipseLinkConvertersComposite(this, converterHolder, container); + protected Control initializeConvertersSection(Composite container) { + return new EclipseLinkConvertersComposite(this, this.buildConverterHolderValueModel(), container).getControl(); } protected PropertyValueModel<EclipseLinkConverterContainer> buildConverterHolderValueModel() { @@ -60,4 +73,14 @@ public abstract class EclipseLinkElementCollectionMapping2_0Composite<T extends } }; } + + protected PropertyValueModel<Boolean> buildEclipseLinkConvertBooleanHolder(PropertyValueModel<EclipseLinkConvert> convertHolder) { + return new TransformationPropertyValueModel<EclipseLinkConvert, Boolean>(convertHolder) { + @Override + protected Boolean transform(EclipseLinkConvert value) { + return Boolean.valueOf(value != null); + } + }; + } + }
\ No newline at end of file diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkEmbeddableAdvancedComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkEmbeddableAdvancedComposite.java index f34b6ce371..2653b111a3 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkEmbeddableAdvancedComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkEmbeddableAdvancedComposite.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2008, 2010 Oracle. All rights reserved. + * Copyright (c) 2008, 2012 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. @@ -10,49 +10,32 @@ package org.eclipse.jpt.jpa.eclipselink.ui.internal.details; import org.eclipse.jpt.common.ui.internal.widgets.Pane; -import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter; -import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; import org.eclipse.jpt.jpa.core.context.Embeddable; -import org.eclipse.jpt.jpa.eclipselink.core.context.EclipseLinkChangeTracking; -import org.eclipse.jpt.jpa.eclipselink.core.context.EclipseLinkCustomizer; -import org.eclipse.jpt.jpa.eclipselink.core.context.EclipseLinkEmbeddable; import org.eclipse.swt.widgets.Composite; +import org.eclipse.ui.forms.widgets.Hyperlink; -public class EclipseLinkEmbeddableAdvancedComposite extends Pane<Embeddable> { +public class EclipseLinkEmbeddableAdvancedComposite extends EclipseLinkTypeMappingAdvancedComposite<Embeddable> { public EclipseLinkEmbeddableAdvancedComposite( Pane<? extends Embeddable> parentPane, Composite parent) { - super(parentPane, parent, false); + super(parentPane, parent); } - + @Override - protected void initializeLayout(Composite container) { - container = addCollapsibleSection( - container, - EclipseLinkUiDetailsMessages.EclipseLinkTypeMappingComposite_advanced - ); - - new EclipseLinkCustomizerComposite(this, buildCustomizerHolder(), container); - new EclipseLinkChangeTrackingComposite(this, buildChangeTrackingHolder(), container); - } - - private PropertyValueModel<EclipseLinkCustomizer> buildCustomizerHolder() { - return new PropertyAspectAdapter<Embeddable, EclipseLinkCustomizer>(getSubjectHolder()) { - @Override - protected EclipseLinkCustomizer buildValue_() { - return ((EclipseLinkEmbeddable) this.subject).getCustomizer(); - } - }; + protected Composite addComposite(Composite container) { + return this.addSubPane(container, 2, 0, 0, 0, 0); } - - private PropertyValueModel<EclipseLinkChangeTracking> buildChangeTrackingHolder() { - return new PropertyAspectAdapter<Embeddable, EclipseLinkChangeTracking>(getSubjectHolder()) { - @Override - protected EclipseLinkChangeTracking buildValue_() { - return ((EclipseLinkEmbeddable) this.subject).getChangeTracking(); - } - }; + + @Override + protected void initializeLayout(Composite container) { + // customizer class chooser + Hyperlink customizerHyperlink = addHyperlink(container, EclipseLinkUiDetailsMessages.EclipseLinkCustomizerComposite_classLabel); + new EclipseLinkCustomizerClassChooser(this, this.buildCustomizerHolder(), container, customizerHyperlink); + + // change tracking type + this.addLabel(container, EclipseLinkUiDetailsMessages.EclipseLinkChangeTrackingComposite_label); + new EclipseLinkChangeTrackingComboViewer(this, this.buildChangeTrackingHolder(), container); } } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkEntityAdvancedComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkEntityAdvancedComposite.java deleted file mode 100644 index 5c262b66b7..0000000000 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkEntityAdvancedComposite.java +++ /dev/null @@ -1,69 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2008, 2010 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.jpa.eclipselink.ui.internal.details; - -import org.eclipse.jpt.common.ui.internal.widgets.Pane; -import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter; -import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; -import org.eclipse.jpt.jpa.core.context.Entity; -import org.eclipse.jpt.jpa.eclipselink.core.context.EclipseLinkChangeTracking; -import org.eclipse.jpt.jpa.eclipselink.core.context.EclipseLinkCustomizer; -import org.eclipse.jpt.jpa.eclipselink.core.context.EclipseLinkEntity; -import org.eclipse.jpt.jpa.eclipselink.core.context.EclipseLinkReadOnly; -import org.eclipse.swt.widgets.Composite; - -public class EclipseLinkEntityAdvancedComposite extends Pane<Entity> { - - public EclipseLinkEntityAdvancedComposite( - Pane<? extends Entity> parentPane, - Composite parent) { - - super(parentPane, parent, false); - } - - @Override - protected void initializeLayout(Composite container) { - container = addCollapsibleSection( - container, - EclipseLinkUiDetailsMessages.EclipseLinkTypeMappingComposite_advanced - ); - - new EclipseLinkReadOnlyComposite(this, buildReadOnlyHolder(), container); - new EclipseLinkCustomizerComposite(this, buildCustomizerHolder(), container); - new EclipseLinkChangeTrackingComposite(this, buildChangeTrackingHolder(), container); - } - - private PropertyValueModel<EclipseLinkReadOnly> buildReadOnlyHolder() { - return new PropertyAspectAdapter<Entity, EclipseLinkReadOnly>(getSubjectHolder()) { - @Override - protected EclipseLinkReadOnly buildValue_() { - return ((EclipseLinkEntity) this.subject).getReadOnly(); - } - }; - } - - private PropertyValueModel<EclipseLinkCustomizer> buildCustomizerHolder() { - return new PropertyAspectAdapter<Entity, EclipseLinkCustomizer>(getSubjectHolder()) { - @Override - protected EclipseLinkCustomizer buildValue_() { - return ((EclipseLinkEntity) this.subject).getCustomizer(); - } - }; - } - - private PropertyValueModel<EclipseLinkChangeTracking> buildChangeTrackingHolder() { - return new PropertyAspectAdapter<Entity, EclipseLinkChangeTracking>(getSubjectHolder()) { - @Override - protected EclipseLinkChangeTracking buildValue_() { - return ((EclipseLinkEntity) this.subject).getChangeTracking(); - } - }; - } -} diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkExpiryComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkExpiryComposite.java index a52b96fd97..044ea2a4d8 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkExpiryComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkExpiryComposite.java @@ -13,15 +13,18 @@ import org.eclipse.jpt.common.ui.internal.widgets.IntegerCombo; import org.eclipse.jpt.common.ui.internal.widgets.Pane; import org.eclipse.jpt.common.utility.internal.StringConverter; import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter; -import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; import org.eclipse.jpt.common.utility.model.value.ModifiablePropertyValueModel; +import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; import org.eclipse.jpt.jpa.eclipselink.core.context.EclipseLinkCaching; import org.eclipse.jpt.jpa.eclipselink.core.context.EclipseLinkTimeOfDay; 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.DateTime; import org.eclipse.swt.widgets.Group; +import org.eclipse.swt.widgets.Label; /** * Here is the layout of this pane: @@ -50,9 +53,10 @@ public class EclipseLinkExpiryComposite extends Pane<EclipseLinkCaching> { protected PropertyValueModel<Boolean> ttlEnabled; public EclipseLinkExpiryComposite(Pane<? extends EclipseLinkCaching> parentPane, - Composite parent) { + Composite parent, + PropertyValueModel<Boolean> enabledModel) { - super(parentPane, parent); + super(parentPane, parent, enabledModel); } /** @@ -67,81 +71,81 @@ public class EclipseLinkExpiryComposite extends Pane<EclipseLinkCaching> { } @Override + protected Composite addComposite(Composite container) { + Group group = this.getWidgetFactory().createGroup(container, EclipseLinkUiDetailsMessages.EclipseLinkExpiryComposite_expirySection); + + GridLayout layout = new GridLayout(4, false); + layout.marginHeight = 0; + layout.marginWidth = 0; + layout.marginTop = 5; + layout.marginLeft = 5; + layout.marginBottom = 5; + layout.marginRight = 5; + group.setLayout(layout); + + return group; + } + + @Override protected void initializeLayout(Composite container) { - // Expiry group pane - Group expiryGroupPane = addTitledGroup( - container, - EclipseLinkUiDetailsMessages.EclipseLinkExpiryComposite_expirySection, - 2, - null - ); - // No Expiry radio button Button button = addRadioButton( - expiryGroupPane, + container, EclipseLinkUiDetailsMessages.EclipseLinkExpiryComposite_noExpiry, buildNoExpiryHolder(), null ); GridData gridData = new GridData(); - gridData.horizontalSpan = 2; + gridData.horizontalSpan = 4; button.setLayoutData(gridData); // Time To Live Expiry radio button addRadioButton( - expiryGroupPane, + container, EclipseLinkUiDetailsMessages.EclipseLinkExpiryComposite_timeToLiveExpiry, buildExpiryHolder(), null ); - - addTimeToLiveComposite(expiryGroupPane); - - // Daily Expiry radio button - addRadioButton( - expiryGroupPane, - EclipseLinkUiDetailsMessages.EclipseLinkExpiryComposite_dailyExpiry, - buildTimeOfDayExpiryBooleanHolder(), - null - ); - - addTimeOfDayComposite(expiryGroupPane); - } - - protected void addTimeToLiveComposite(Composite parent) { - Composite container = this.addSubPane(parent, 3, 0, 10, 0, 0); - addLabel( + Label expireAfterLabel = this.addLabel( container, EclipseLinkUiDetailsMessages.EclipseLinkExpiryComposite_timeToLiveExpiryExpireAfter, this.getTtlEnabled() ); - - IntegerCombo<?> combo = addTimeToLiveExpiryCombo(container); - GridData gridData = new GridData(); - gridData.grabExcessHorizontalSpace = false; - combo.getControl().setLayoutData(gridData); + gridData = new GridData(); + gridData.horizontalIndent = 10; + expireAfterLabel.setLayoutData(gridData); + + this.addTimeToLiveExpiryCombo(container); - addLabel( + this.addLabel( container, EclipseLinkUiDetailsMessages.EclipseLinkExpiryComposite_timeToLiveExpiryMilliseconds, this.getTtlEnabled() ); - } - - protected void addTimeOfDayComposite(Composite parent) { - Composite container = this.addSubPane(parent, 2, 0, 10, 0, 0); + + + // Daily Expiry radio button + addRadioButton( + container, + EclipseLinkUiDetailsMessages.EclipseLinkExpiryComposite_dailyExpiry, + buildTimeOfDayExpiryBooleanHolder(), + null + ); PropertyValueModel<Boolean> todEnabled = this.buildTimeOfDayExpiryEnabler(); - addLabel( + Label expireAtLabel = addLabel( container, EclipseLinkUiDetailsMessages.EclipseLinkExpiryComposite_timeOfDayExpiryExpireAt, todEnabled ); + gridData = new GridData(); + gridData.horizontalIndent = 10; + expireAtLabel.setLayoutData(gridData); PropertyValueModel<EclipseLinkTimeOfDay> timeOfDayExpiryHolder = buildTimeOfDayExpiryHolder(); - addDateTime( + DateTime dataTime = addDateTime( container, buildTimeOfDayExpiryHourHolder(timeOfDayExpiryHolder), buildTimeOfDayExpiryMinuteHolder(timeOfDayExpiryHolder), @@ -149,6 +153,10 @@ public class EclipseLinkExpiryComposite extends Pane<EclipseLinkCaching> { null, todEnabled ); + + gridData = new GridData(); + gridData.horizontalSpan = 2; + dataTime.setLayoutData(gridData); } private ModifiablePropertyValueModel<Boolean> buildNoExpiryHolder() { @@ -219,13 +227,7 @@ public class EclipseLinkExpiryComposite extends Pane<EclipseLinkCaching> { StringConverter.Default.<String>instance(), EclipseLinkExpiryComposite.this.getTtlEnabled() ); - } - - @Override - protected String getLabelText() { - throw new UnsupportedOperationException(); - } - + } @Override protected String getHelpId() { diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkIdMappingComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkIdMappingComposite.java index bc5ba09e79..df5032aba0 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkIdMappingComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkIdMappingComposite.java @@ -10,7 +10,7 @@ package org.eclipse.jpt.jpa.eclipselink.ui.internal.details; import org.eclipse.jpt.common.ui.WidgetFactory; -import org.eclipse.jpt.common.ui.internal.widgets.Pane; +import org.eclipse.jpt.common.utility.internal.model.value.CompositeBooleanPropertyValueModel; import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter; import org.eclipse.jpt.common.utility.internal.model.value.TransformationPropertyValueModel; import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; @@ -24,32 +24,42 @@ import org.eclipse.jpt.jpa.eclipselink.core.context.EclipseLinkMutable; import org.eclipse.jpt.jpa.ui.internal.details.AbstractIdMappingComposite; import org.eclipse.jpt.jpa.ui.internal.details.ColumnComposite; import org.eclipse.jpt.jpa.ui.internal.details.JptUiDetailsMessages; -import org.eclipse.jpt.jpa.ui.internal.details.TemporalTypeComposite; +import org.eclipse.jpt.jpa.ui.internal.details.TemporalTypeCombo; import org.eclipse.swt.layout.GridData; -import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.swt.widgets.Label; +import org.eclipse.ui.forms.events.ExpansionAdapter; +import org.eclipse.ui.forms.events.ExpansionEvent; +import org.eclipse.ui.forms.widgets.ExpandableComposite; +import org.eclipse.ui.forms.widgets.Section; public abstract class EclipseLinkIdMappingComposite<T extends IdMapping> extends AbstractIdMappingComposite<T> { protected EclipseLinkIdMappingComposite( PropertyValueModel<? extends T> subjectHolder, - Composite parent, + PropertyValueModel<Boolean> enabledModel, + Composite parent, WidgetFactory widgetFactory) { - super(subjectHolder, parent, widgetFactory); + super(subjectHolder, enabledModel, parent, widgetFactory); } @Override - protected void initializeIdSection(Composite container) { + protected Control initializeIdSection(Composite container) { + container = this.addSubPane(container); + new ColumnComposite(this, buildColumnHolder(), container); - new EclipseLinkMutableComposite(this, buildMutableHolder(), container); + new EclipseLinkMutableTriStateCheckBox(this, buildMutableHolder(), container); + + return container; } @Override - protected void initializeTypeSection(Composite container) { - ((GridLayout) container.getLayout()).numColumns = 2; + protected Control initializeTypeSection(Composite container) { + container = this.addSubPane(container, 2, 0, 0, 0, 0); // No converter Button noConverterButton = addRadioButton( @@ -66,7 +76,7 @@ public abstract class EclipseLinkIdMappingComposite<T extends IdMapping> JptUiDetailsMessages.TypeSection_temporal, buildConverterBooleanHolder(BaseTemporalConverter.class), null); - registerSubPane(new TemporalTypeComposite(buildTemporalConverterHolder(converterHolder), container, getWidgetFactory())); + registerSubPane(new TemporalTypeCombo(buildTemporalConverterHolder(converterHolder), getEnabledModel(), container, getWidgetFactory())); // EclipseLink Converter Button elConverterButton = addRadioButton( @@ -76,15 +86,15 @@ public abstract class EclipseLinkIdMappingComposite<T extends IdMapping> null); ((GridData) elConverterButton.getLayoutData()).horizontalSpan = 2; - Pane<EclipseLinkConvert> convertComposite = buildConvertComposite(buildEclipseLinkConverterHolder(converterHolder), container); - GridData gridData = (GridData) convertComposite.getControl().getLayoutData(); - gridData.horizontalSpan = 2; + PropertyValueModel<EclipseLinkConvert> convertHolder = buildEclipseLinkConverterHolder(converterHolder); + PropertyValueModel<Boolean> convertEnabledModel = CompositeBooleanPropertyValueModel.and(getEnabledModel(), buildEclipseLinkConvertBooleanHolder(convertHolder)); + Label convertLabel = this.addLabel(container, EclipseLinkUiDetailsMessages.EclipseLinkConvertComposite_converterNameLabel, convertEnabledModel); + GridData gridData = new GridData(); gridData.horizontalIndent = 20; - registerSubPane(convertComposite); - } - - protected Pane<EclipseLinkConvert> buildConvertComposite(PropertyValueModel<EclipseLinkConvert> convertHolder, Composite container) { - return new EclipseLinkConvertComposite(convertHolder, container, getWidgetFactory()); + convertLabel.setLayoutData(gridData); + registerSubPane(new EclipseLinkConvertCombo(convertHolder, convertEnabledModel, container, getWidgetFactory())); + + return container; } protected PropertyValueModel<EclipseLinkConvert> buildEclipseLinkConverterHolder(PropertyValueModel<Converter> converterHolder) { @@ -95,6 +105,15 @@ public abstract class EclipseLinkIdMappingComposite<T extends IdMapping> } }; } + + protected PropertyValueModel<Boolean> buildEclipseLinkConvertBooleanHolder(PropertyValueModel<EclipseLinkConvert> convertHolder) { + return new TransformationPropertyValueModel<EclipseLinkConvert, Boolean>(convertHolder) { + @Override + protected Boolean transform(EclipseLinkConvert value) { + return Boolean.valueOf(value != null); + } + }; + } protected PropertyValueModel<EclipseLinkMutable> buildMutableHolder() { return new PropertyAspectAdapter<T, EclipseLinkMutable>(getSubjectHolder()) { @@ -105,16 +124,23 @@ public abstract class EclipseLinkIdMappingComposite<T extends IdMapping> }; } + protected void initializeConvertersCollapsibleSection(Composite container) { - container = addCollapsibleSection( - container, - EclipseLinkUiDetailsMessages.EclipseLinkTypeMappingComposite_converters - ); - initializeConvertersSection(container, this.buildConverterHolderValueModel()); + final Section section = this.getWidgetFactory().createSection(container, ExpandableComposite.TITLE_BAR | ExpandableComposite.TWISTIE); + section.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + section.setText(EclipseLinkUiDetailsMessages.EclipseLinkTypeMappingComposite_converters); + section.addExpansionListener(new ExpansionAdapter() { + @Override + public void expansionStateChanging(ExpansionEvent e) { + if (e.getState() && section.getClient() == null) { + section.setClient(EclipseLinkIdMappingComposite.this.initializeConvertersSection(section)); + } + } + }); } - protected void initializeConvertersSection(Composite container, PropertyValueModel<EclipseLinkConverterContainer> converterHolder) { - new EclipseLinkConvertersComposite(this, converterHolder, container); + protected Control initializeConvertersSection(Composite container) { + return new EclipseLinkConvertersComposite(this, this.buildConverterHolderValueModel(), container).getControl(); } protected PropertyValueModel<EclipseLinkConverterContainer> buildConverterHolderValueModel() { diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkJoinFetchComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkJoinFetchComboViewer.java index df171368ac..d9d08fd513 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkJoinFetchComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkJoinFetchComboViewer.java @@ -43,15 +43,9 @@ import org.eclipse.swt.widgets.Composite; * @version 2.3 * @since 2.1 */ -public class EclipseLinkJoinFetchComposite extends Pane<EclipseLinkJoinFetch> { +public class EclipseLinkJoinFetchComboViewer extends EnumFormComboViewer<EclipseLinkJoinFetch, EclipseLinkJoinFetchType> { - /** - * Creates a new <code>JoinFetchComposite</code>. - * - * @param parentPane The parent container of this one - * @param parent The parent container - */ - public EclipseLinkJoinFetchComposite(Pane<?> parentPane, + public EclipseLinkJoinFetchComboViewer(Pane<?> parentPane, PropertyValueModel<? extends EclipseLinkJoinFetch> subjectHolder, Composite parent) { @@ -59,64 +53,45 @@ public class EclipseLinkJoinFetchComposite extends Pane<EclipseLinkJoinFetch> { } @Override - protected void initializeLayout(Composite container) { - addLabeledComposite( - container, - addLabel( - container, - EclipseLinkUiDetailsMessages.EclipseLinkJoinFetchComposite_label), - addJoinFetchTypeCombo(container).getControl(), - null - ); + protected void addPropertyNames(Collection<String> propertyNames) { + super.addPropertyNames(propertyNames); + propertyNames.add(EclipseLinkJoinFetch.VALUE_PROPERTY); } - - - private EnumFormComboViewer<EclipseLinkJoinFetch, EclipseLinkJoinFetchType> addJoinFetchTypeCombo(Composite container) { - - return new EnumFormComboViewer<EclipseLinkJoinFetch, EclipseLinkJoinFetchType>(this, container) { - @Override - protected void addPropertyNames(Collection<String> propertyNames) { - super.addPropertyNames(propertyNames); - propertyNames.add(EclipseLinkJoinFetch.VALUE_PROPERTY); - } - - @Override - protected EclipseLinkJoinFetchType[] getChoices() { - return EclipseLinkJoinFetchType.values(); - } - - @Override - protected EclipseLinkJoinFetchType getDefaultValue() { - return null; - } - - @Override - protected String displayString(EclipseLinkJoinFetchType value) { - switch (value) { - case INNER : - return EclipseLinkUiDetailsMessages.EclipseLinkJoinFetchComposite_inner; - case OUTER : - return EclipseLinkUiDetailsMessages.EclipseLinkJoinFetchComposite_outer; - default : - throw new IllegalStateException(); - } - } - - @Override - protected String nullDisplayString() { - return JptCommonUiMessages.NoneSelected; - } + @Override + protected EclipseLinkJoinFetchType[] getChoices() { + return EclipseLinkJoinFetchType.values(); + } + + @Override + protected EclipseLinkJoinFetchType getDefaultValue() { + return null; + } + + @Override + protected String displayString(EclipseLinkJoinFetchType value) { + switch (value) { + case INNER : + return EclipseLinkUiDetailsMessages.EclipseLinkJoinFetchComposite_inner; + case OUTER : + return EclipseLinkUiDetailsMessages.EclipseLinkJoinFetchComposite_outer; + default : + throw new IllegalStateException(); + } + } + + @Override + protected String nullDisplayString() { + return JptCommonUiMessages.NoneSelected; + } - @Override - protected EclipseLinkJoinFetchType getValue() { - return getSubject().getValue(); - } + @Override + protected EclipseLinkJoinFetchType getValue() { + return getSubject().getValue(); + } - @Override - protected void setValue(EclipseLinkJoinFetchType value) { - getSubject().setValue(value); - } - }; + @Override + protected void setValue(EclipseLinkJoinFetchType value) { + getSubject().setValue(value); } } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkManyToManyMappingComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkManyToManyMappingComposite.java index 12693963e6..5e2b62f5ab 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkManyToManyMappingComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkManyToManyMappingComposite.java @@ -21,11 +21,19 @@ import org.eclipse.jpt.jpa.eclipselink.core.context.EclipseLinkRelationshipMappi import org.eclipse.jpt.jpa.ui.details.JpaComposite; import org.eclipse.jpt.jpa.ui.internal.details.AbstractManyToManyMappingComposite; import org.eclipse.jpt.jpa.ui.internal.details.CascadeComposite; -import org.eclipse.jpt.jpa.ui.internal.details.FetchTypeComposite; +import org.eclipse.jpt.jpa.ui.internal.details.FetchTypeComboViewer; +import org.eclipse.jpt.jpa.ui.internal.details.JptUiDetailsMessages; import org.eclipse.jpt.jpa.ui.internal.details.ManyToManyJoiningStrategyPane; import org.eclipse.jpt.jpa.ui.internal.details.OrderingComposite; -import org.eclipse.jpt.jpa.ui.internal.details.TargetEntityComposite; +import org.eclipse.jpt.jpa.ui.internal.details.TargetEntityClassChooser; +import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.ui.forms.events.ExpansionAdapter; +import org.eclipse.ui.forms.events.ExpansionEvent; +import org.eclipse.ui.forms.widgets.ExpandableComposite; +import org.eclipse.ui.forms.widgets.Hyperlink; +import org.eclipse.ui.forms.widgets.Section; /** * Here the layout of this pane: @@ -59,9 +67,9 @@ import org.eclipse.swt.widgets.Composite; * -----------------------------------------------------------------------------</pre> * * @see {@link ManyToManyMapping} - * @see {@link TargetEntityComposite} + * @see {@link TargetEntityClassChooser} * @see {@link ManyToManyJoiningStrategyPane} - * @see {@link FetchTypeComposite} + * @see {@link FetchTypeComboViewer} * @see {@link CascadeComposite} * @see {@link OrderingComposite} * @@ -80,18 +88,36 @@ public class EclipseLinkManyToManyMappingComposite<T extends ManyToManyMapping> * @param widgetFactory The factory used to create various common widgets */ public EclipseLinkManyToManyMappingComposite(PropertyValueModel<? extends T> subjectHolder, - Composite parent, - WidgetFactory widgetFactory) { + PropertyValueModel<Boolean> enabledModel, + Composite parent, + WidgetFactory widgetFactory) { - super(subjectHolder, parent, widgetFactory); + super(subjectHolder, enabledModel, parent, widgetFactory); } @Override - protected void initializeManyToManySection(Composite container) { - new TargetEntityComposite(this, container); - new FetchTypeComposite(this, container); - new EclipseLinkJoinFetchComposite(this, buildJoinFetchableHolder(), container); - new CascadeComposite(this, buildCascadeHolder(), addSubPane(container, 5)); + protected Control initializeManyToManySection(Composite container) { + container = this.addSubPane(container, 2, 0, 0, 0, 0); + + // Target entity widgets + Hyperlink targetEntityHyperlink = this.addHyperlink(container, JptUiDetailsMessages.TargetEntityChooser_label); + new TargetEntityClassChooser(this, container, targetEntityHyperlink); + + // Fetch type widgets + this.addLabel(container, JptUiDetailsMessages.BasicGeneralSection_fetchLabel); + new FetchTypeComboViewer(this, container); + + // Join fetch widgets + this.addLabel(container, EclipseLinkUiDetailsMessages.EclipseLinkJoinFetchComposite_label); + new EclipseLinkJoinFetchComboViewer(this, buildJoinFetchableHolder(), container); + + // Cascade widgets + CascadeComposite cascadeComposite = new CascadeComposite(this, buildCascadeHolder(), container); + GridData gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.horizontalSpan = 2; + cascadeComposite.getControl().setLayoutData(gridData); + + return container; } protected PropertyValueModel<EclipseLinkJoinFetch> buildJoinFetchableHolder() { @@ -104,15 +130,22 @@ public class EclipseLinkManyToManyMappingComposite<T extends ManyToManyMapping> } protected void initializeConvertersCollapsibleSection(Composite container) { - container = addCollapsibleSection( - container, - EclipseLinkUiDetailsMessages.EclipseLinkTypeMappingComposite_converters - ); - initializeConvertersSection(container, this.buildConverterHolderValueModel()); + final Section section = this.getWidgetFactory().createSection(container, ExpandableComposite.TITLE_BAR | ExpandableComposite.TWISTIE); + section.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + section.setText(EclipseLinkUiDetailsMessages.EclipseLinkTypeMappingComposite_converters); + + section.addExpansionListener(new ExpansionAdapter() { + @Override + public void expansionStateChanging(ExpansionEvent e) { + if (e.getState() && section.getClient() == null) { + section.setClient(initializeConvertersSection(section)); + } + } + }); } - protected void initializeConvertersSection(Composite container, PropertyValueModel<EclipseLinkConverterContainer> converterHolder) { - new EclipseLinkConvertersComposite(this, converterHolder, container); + protected Control initializeConvertersSection(Composite container) { + return new EclipseLinkConvertersComposite(this, this.buildConverterHolderValueModel(), container).getControl(); } protected PropertyValueModel<EclipseLinkConverterContainer> buildConverterHolderValueModel() { diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkManyToOneMappingComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkManyToOneMappingComposite.java index 6f02f8a73d..e6958b9254 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkManyToOneMappingComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkManyToOneMappingComposite.java @@ -18,11 +18,15 @@ import org.eclipse.jpt.jpa.eclipselink.core.context.EclipseLinkJoinFetch; import org.eclipse.jpt.jpa.eclipselink.core.context.EclipseLinkRelationshipMapping; import org.eclipse.jpt.jpa.ui.internal.details.AbstractManyToOneMappingComposite; import org.eclipse.jpt.jpa.ui.internal.details.CascadeComposite; -import org.eclipse.jpt.jpa.ui.internal.details.FetchTypeComposite; +import org.eclipse.jpt.jpa.ui.internal.details.FetchTypeComboViewer; +import org.eclipse.jpt.jpa.ui.internal.details.JptUiDetailsMessages; import org.eclipse.jpt.jpa.ui.internal.details.ManyToOneJoiningStrategyPane; -import org.eclipse.jpt.jpa.ui.internal.details.OptionalComposite; -import org.eclipse.jpt.jpa.ui.internal.details.TargetEntityComposite; +import org.eclipse.jpt.jpa.ui.internal.details.OptionalTriStateCheckBox; +import org.eclipse.jpt.jpa.ui.internal.details.TargetEntityClassChooser; +import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.ui.forms.widgets.Hyperlink; /** * Here the layout of this pane: @@ -56,9 +60,9 @@ import org.eclipse.swt.widgets.Composite; * -----------------------------------------------------------------------------</pre> * * @see {@link ManyToOneMapping} - * @see {@link TargetEntityComposite} + * @see {@link TargetEntityClassChooser} * @see {@link ManyToOneJoiningStrategyPane} - * @see {@link FetchTypeComposite} + * @see {@link FetchTypeComboViewer} * @see {@link OptionalComposite} * @see {@link CascadeComposite} * @@ -76,19 +80,42 @@ public class EclipseLinkManyToOneMappingComposite<T extends ManyToOneMapping> * @param widgetFactory The factory used to create various common widgets */ public EclipseLinkManyToOneMappingComposite(PropertyValueModel<? extends T> subjectHolder, - Composite parent, - WidgetFactory widgetFactory) { + PropertyValueModel<Boolean> enabledModel, + Composite parent, + WidgetFactory widgetFactory) { - super(subjectHolder, parent, widgetFactory); + super(subjectHolder, enabledModel, parent, widgetFactory); } @Override - protected void initializeManyToOneSection(Composite container) { - new TargetEntityComposite(this, container); - new FetchTypeComposite(this, container); - new EclipseLinkJoinFetchComposite(this, buildJoinFetchableHolder(), container); - new OptionalComposite(this, container); - new CascadeComposite(this, buildCascadeHolder(), addSubPane(container, 5)); + protected Control initializeManyToOneSection(Composite container) { + container = this.addSubPane(container, 2, 0, 0, 0, 0); + + // Target entity widgets + Hyperlink targetEntityHyperlink = this.addHyperlink(container, JptUiDetailsMessages.TargetEntityChooser_label); + new TargetEntityClassChooser(this, container, targetEntityHyperlink); + + // Fetch type widgets + this.addLabel(container, JptUiDetailsMessages.BasicGeneralSection_fetchLabel); + new FetchTypeComboViewer(this, container); + + // Join fetch widgets + this.addLabel(container, EclipseLinkUiDetailsMessages.EclipseLinkJoinFetchComposite_label); + new EclipseLinkJoinFetchComboViewer(this, buildJoinFetchableHolder(), container); + + // Optional widgets + OptionalTriStateCheckBox optionalCheckBox = new OptionalTriStateCheckBox(this, container); + GridData gridData = new GridData(); + gridData.horizontalSpan = 2; + optionalCheckBox.getControl().setLayoutData(gridData); + + // Cascade widgets + CascadeComposite cascadeComposite = new CascadeComposite(this, buildCascadeHolder(), container); + gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.horizontalSpan = 2; + cascadeComposite.getControl().setLayoutData(gridData); + + return container; } protected PropertyValueModel<EclipseLinkJoinFetch> buildJoinFetchableHolder() { diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkMappedSuperclassAdvancedComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkMappedSuperclassAdvancedComposite.java deleted file mode 100644 index 05dac7b39a..0000000000 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkMappedSuperclassAdvancedComposite.java +++ /dev/null @@ -1,69 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2008, 2010 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.jpa.eclipselink.ui.internal.details; - -import org.eclipse.jpt.common.ui.internal.widgets.Pane; -import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter; -import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; -import org.eclipse.jpt.jpa.core.context.MappedSuperclass; -import org.eclipse.jpt.jpa.eclipselink.core.context.EclipseLinkChangeTracking; -import org.eclipse.jpt.jpa.eclipselink.core.context.EclipseLinkCustomizer; -import org.eclipse.jpt.jpa.eclipselink.core.context.EclipseLinkMappedSuperclass; -import org.eclipse.jpt.jpa.eclipselink.core.context.EclipseLinkReadOnly; -import org.eclipse.swt.widgets.Composite; - -public class EclipseLinkMappedSuperclassAdvancedComposite extends Pane<MappedSuperclass> { - - public EclipseLinkMappedSuperclassAdvancedComposite( - Pane<? extends MappedSuperclass> parentPane, - Composite parent) { - - super(parentPane, parent, false); - } - - @Override - protected void initializeLayout(Composite container) { - container = addCollapsibleSection( - container, - EclipseLinkUiDetailsMessages.EclipseLinkTypeMappingComposite_advanced - ); - - new EclipseLinkReadOnlyComposite(this, buildReadOnlyHolder(), container); - new EclipseLinkCustomizerComposite(this, buildCustomizerHolder(), container); - new EclipseLinkChangeTrackingComposite(this, buildChangeTrackingHolder(), container); - } - - private PropertyValueModel<EclipseLinkReadOnly> buildReadOnlyHolder() { - return new PropertyAspectAdapter<MappedSuperclass, EclipseLinkReadOnly>(getSubjectHolder()) { - @Override - protected EclipseLinkReadOnly buildValue_() { - return ((EclipseLinkMappedSuperclass) this.subject).getReadOnly(); - } - }; - } - - private PropertyValueModel<EclipseLinkCustomizer> buildCustomizerHolder() { - return new PropertyAspectAdapter<MappedSuperclass, EclipseLinkCustomizer>(getSubjectHolder()) { - @Override - protected EclipseLinkCustomizer buildValue_() { - return ((EclipseLinkMappedSuperclass) this.subject).getCustomizer(); - } - }; - } - - private PropertyValueModel<EclipseLinkChangeTracking> buildChangeTrackingHolder() { - return new PropertyAspectAdapter<MappedSuperclass, EclipseLinkChangeTracking>(getSubjectHolder()) { - @Override - protected EclipseLinkChangeTracking buildValue_() { - return ((EclipseLinkMappedSuperclass) this.subject).getChangeTracking(); - } - }; - } -} diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkMultitenancyComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkMultitenancyComposite.java index d680a36f4c..559fc0ac03 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkMultitenancyComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkMultitenancyComposite.java @@ -35,6 +35,7 @@ import org.eclipse.jpt.jpa.eclipselink.core.context.TenantDiscriminatorColumn2_3 import org.eclipse.jpt.jpa.eclipselink.ui.internal.EclipseLinkHelpContextIds; import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.TenantDiscriminatorColumnsComposite.TenantDiscriminatorColumnsEditor; import org.eclipse.osgi.util.NLS; +import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Group; @@ -69,38 +70,35 @@ public class EclipseLinkMultitenancyComposite extends Pane<EclipseLinkMultitenan PropertyValueModel<? extends EclipseLinkMultitenancy2_3> subjectHolder, Composite parent) { - super(parentPane, subjectHolder, parent, false); + super(parentPane, subjectHolder, parent); } @Override - protected void initializeLayout(Composite container) { - int groupBoxMargin = getGroupBoxMargin(); - - Composite subPane = addSubPane( - container, 0, groupBoxMargin, 0, groupBoxMargin - ); + protected Composite addComposite(Composite container) { + return this.addSubPane(container, 2, 0, 0, 0, 0); + } + @Override + protected void initializeLayout(Composite container) { // Strategy widgets - addLabeledComposite( - subPane, - addCheckBox( - container, - EclipseLinkUiDetailsMessages.EclipseLinkMultitenancyComposite_strategy, - builMultitenantHolder(), - null - ), - addMultitenantStrategyCombo(subPane).getControl(), - EclipseLinkHelpContextIds.MULTITENANCY_STRATEGY - ); + this.addCheckBox( + container, + EclipseLinkUiDetailsMessages.EclipseLinkMultitenancyComposite_strategy, + buildMultitenantHolder(), + null); + this.addMultitenantStrategyCombo(container).getControl(); // Include criteria tri-state check box TriStateCheckBox includeCriteriaCheckBox = addTriStateCheckBoxWithDefault( - subPane, + container, EclipseLinkUiDetailsMessages.EclipseLinkMultitenancyComposite_includeCriteria, buildIncludeCriteriaHolder(), buildIncludeCriteriaStringHolder(), EclipseLinkHelpContextIds.MULTITENANCY_INCLUDE_CRITERIA); + GridData gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.horizontalSpan = 2; + includeCriteriaCheckBox.getCheckBox().setLayoutData(gridData); SWTTools.controlVisibleState(new EclipseLink2_4ProjectFlagModel<EclipseLinkMultitenancy2_3>(this.getSubjectHolder()), includeCriteriaCheckBox.getCheckBox()); // Tenant discriminator columns group pane @@ -108,21 +106,22 @@ public class EclipseLinkMultitenancyComposite extends Pane<EclipseLinkMultitenan container, EclipseLinkUiDetailsMessages.TenantDiscriminatorColumns_groupLabel ); + gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.horizontalSpan = 2; + tenantDiscriminatorColumnGroupPane.setLayoutData(gridData); // Override Default Tenant Discriminator Columns check box addCheckBox( - addSubPane(tenantDiscriminatorColumnGroupPane, 8), + tenantDiscriminatorColumnGroupPane, EclipseLinkUiDetailsMessages.EclipseLinkMultitenancy_overrideDefaultTenantDiscriminatorColumns, buildOverrideDefaultTenantDiscriminatorColumnHolder(), null ); this.tenantDiscriminatorColumnsComposite = this.buildTenantDiscriminatorColumnsComposite(tenantDiscriminatorColumnGroupPane); - - this.tenantDiscriminatorColumnsComposite.installListPaneEnabler(new TenantDiscriminatorColumnPaneEnablerHolder()); } - private ModifiablePropertyValueModel<Boolean> builMultitenantHolder() { + private ModifiablePropertyValueModel<Boolean> buildMultitenantHolder() { return new PropertyAspectAdapter<EclipseLinkMultitenancy2_3, Boolean>(getSubjectHolder(), EclipseLinkMultitenancy2_3.SPECIFIED_MULTITENANT_PROPERTY) { @Override protected Boolean buildValue_() { @@ -179,6 +178,11 @@ public class EclipseLinkMultitenancyComposite extends Pane<EclipseLinkMultitenan protected void setValue(EclipseLinkMultitenantType2_3 value) { getSubject().setSpecifiedType(value); } + + @Override + protected String getHelpId() { + return EclipseLinkHelpContextIds.MULTITENANCY_STRATEGY; + } }; } @@ -225,9 +229,11 @@ public class EclipseLinkMultitenancyComposite extends Pane<EclipseLinkMultitenan }; } + //TODO do i need to pass in the PaneEnabler from *this* pane as a Combined property value model? protected TenantDiscriminatorColumnsComposite<EclipseLinkMultitenancy2_3> buildTenantDiscriminatorColumnsComposite(Composite container) { return new TenantDiscriminatorColumnsComposite<EclipseLinkMultitenancy2_3>( getSubjectHolder(), + new TenantDiscriminatorColumnPaneEnablerHolder(), container, getWidgetFactory(), buildTenantDiscriminatorColumnsEditor()); @@ -239,9 +245,10 @@ public class EclipseLinkMultitenancyComposite extends Pane<EclipseLinkMultitenan class TenantDiscriminatorColumnsProvider implements TenantDiscriminatorColumnsEditor<EclipseLinkMultitenancy2_3> { - public void addTenantDiscriminatorColumn(EclipseLinkMultitenancy2_3 subject) { + public ReadOnlyTenantDiscriminatorColumn2_3 addTenantDiscriminatorColumn(EclipseLinkMultitenancy2_3 subject) { TenantDiscriminatorColumn2_3 column = subject.addSpecifiedTenantDiscriminatorColumn(); column.setSpecifiedName(ReadOnlyTenantDiscriminatorColumn2_3.DEFAULT_NAME); + return column; } public ListIterable<ReadOnlyTenantDiscriminatorColumn2_3> getDefaultTenantDiscriminatorColumns(EclipseLinkMultitenancy2_3 subject) { @@ -272,17 +279,11 @@ public class EclipseLinkMultitenancyComposite extends Pane<EclipseLinkMultitenan return subject.hasSpecifiedTenantDiscriminatorColumns(); } - public void removeTenantDiscriminatorColumns(EclipseLinkMultitenancy2_3 subject, int[] selectedIndices) { - for (int index = selectedIndices.length; index-- > 0; ) { - subject.removeSpecifiedTenantDiscriminatorColumn(selectedIndices[index]); - } + public void removeTenantDiscriminatorColumn(EclipseLinkMultitenancy2_3 subject, ReadOnlyTenantDiscriminatorColumn2_3 column) { + subject.removeSpecifiedTenantDiscriminatorColumn((TenantDiscriminatorColumn2_3) column); } } - void setSelectedTenantDiscriminatorColumn(ReadOnlyTenantDiscriminatorColumn2_3 tenantDiscriminatorColumn) { - this.tenantDiscriminatorColumnsComposite.setSelectedTenantDiscriminatorColumn(tenantDiscriminatorColumn); - } - private ModifiablePropertyValueModel<Boolean> buildOverrideDefaultTenantDiscriminatorColumnHolder() { return new OverrideDefaultTenantDiscriminatorColumnHolder(); } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkMutableComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkMutableTriStateCheckBox.java index 226c36fec8..5453bed0a5 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkMutableComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkMutableTriStateCheckBox.java @@ -11,6 +11,7 @@ package org.eclipse.jpt.jpa.eclipselink.ui.internal.details; import org.eclipse.jpt.common.ui.internal.JptCommonUiMessages; import org.eclipse.jpt.common.ui.internal.widgets.Pane; +import org.eclipse.jpt.common.ui.internal.widgets.TriStateCheckBox; import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter; import org.eclipse.jpt.common.utility.internal.model.value.TransformationPropertyValueModel; import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; @@ -18,6 +19,7 @@ import org.eclipse.jpt.common.utility.model.value.ModifiablePropertyValueModel; import org.eclipse.jpt.jpa.eclipselink.core.context.EclipseLinkMutable; import org.eclipse.osgi.util.NLS; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; /** * This composite simply shows a tri-state check box for the Mutable option. @@ -28,15 +30,17 @@ import org.eclipse.swt.widgets.Composite; * @version 2.1 * @since 2.1 */ -public class EclipseLinkMutableComposite extends Pane<EclipseLinkMutable> +public class EclipseLinkMutableTriStateCheckBox extends Pane<EclipseLinkMutable> { + private TriStateCheckBox checkBox; + /** * Creates a new <code>MutableComposite</code>. * * @param parentPane The parent container of this one * @param parent The parent container */ - public EclipseLinkMutableComposite(Pane<?> parentPane, + public EclipseLinkMutableTriStateCheckBox(Pane<?> parentPane, PropertyValueModel<? extends EclipseLinkMutable> subjectHolder, Composite parent) { @@ -44,8 +48,18 @@ public class EclipseLinkMutableComposite extends Pane<EclipseLinkMutable> } @Override + protected boolean addsComposite() { + return false; + } + + @Override + public Control getControl() { + return this.checkBox.getCheckBox(); + } + + @Override protected void initializeLayout(Composite container) { - addTriStateCheckBoxWithDefault( + this.checkBox = addTriStateCheckBoxWithDefault( container, EclipseLinkUiDetailsMessages.EclipseLinkMutableComposite_mutableLabel, buildMutableHolder(), @@ -81,7 +95,7 @@ public class EclipseLinkMutableComposite extends Pane<EclipseLinkMutable> } }; } - + private PropertyValueModel<Boolean> buildDefaultMutableHolder() { return new PropertyAspectAdapter<EclipseLinkMutable, Boolean>( getSubjectHolder(), diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkNonEmbeddableTypeMappingAdvancedComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkNonEmbeddableTypeMappingAdvancedComposite.java new file mode 100644 index 0000000000..1c4952d83c --- /dev/null +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkNonEmbeddableTypeMappingAdvancedComposite.java @@ -0,0 +1,62 @@ +/******************************************************************************* + * Copyright (c) 2008, 2012 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.jpa.eclipselink.ui.internal.details; + +import org.eclipse.jpt.common.ui.internal.widgets.Pane; +import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter; +import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; +import org.eclipse.jpt.jpa.core.context.TypeMapping; +import org.eclipse.jpt.jpa.eclipselink.core.context.EclipseLinkNonEmbeddableTypeMapping; +import org.eclipse.jpt.jpa.eclipselink.core.context.EclipseLinkReadOnly; +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.ui.forms.widgets.Hyperlink; + +public class EclipseLinkNonEmbeddableTypeMappingAdvancedComposite + extends EclipseLinkTypeMappingAdvancedComposite<TypeMapping> { + + public EclipseLinkNonEmbeddableTypeMappingAdvancedComposite( + Pane<? extends TypeMapping> parentPane, + Composite parent) { + + super(parentPane, parent); + } + + @Override + protected Composite addComposite(Composite container) { + return this.addSubPane(container, 2, 0, 0, 0, 0); + } + + @Override + protected void initializeLayout(Composite container) { + // read-only check box + EclipseLinkReadOnlyTriStateCheckBox readOnlyCheckBox = new EclipseLinkReadOnlyTriStateCheckBox(this, buildReadOnlyHolder(), container); + GridData gridData = new GridData(); + gridData.horizontalSpan = 2; + readOnlyCheckBox.getControl().setLayoutData(gridData); + + // customizer class chooser + Hyperlink customizerHyperlink = addHyperlink(container, EclipseLinkUiDetailsMessages.EclipseLinkCustomizerComposite_classLabel); + new EclipseLinkCustomizerClassChooser(this, this.buildCustomizerHolder(), container, customizerHyperlink); + + // change tracking type + this.addLabel(container, EclipseLinkUiDetailsMessages.EclipseLinkChangeTrackingComposite_label); + new EclipseLinkChangeTrackingComboViewer(this, this.buildChangeTrackingHolder(), container); + } + + private PropertyValueModel<EclipseLinkReadOnly> buildReadOnlyHolder() { + return new PropertyAspectAdapter<TypeMapping, EclipseLinkReadOnly>(getSubjectHolder()) { + @Override + protected EclipseLinkReadOnly buildValue_() { + return ((EclipseLinkNonEmbeddableTypeMapping) this.subject).getReadOnly(); + } + }; + } +} diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkObjectTypeConverterComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkObjectTypeConverterComposite.java index b926359657..04ee6710f1 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkObjectTypeConverterComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkObjectTypeConverterComposite.java @@ -16,7 +16,6 @@ import org.eclipse.jface.viewers.LabelProvider; import org.eclipse.jface.window.Window; import org.eclipse.jpt.common.ui.WidgetFactory; import org.eclipse.jpt.common.ui.internal.swt.ColumnAdapter; -import org.eclipse.jpt.common.ui.internal.util.PaneEnabler; import org.eclipse.jpt.common.ui.internal.widgets.AddRemoveListPane; import org.eclipse.jpt.common.ui.internal.widgets.AddRemoveTablePane; import org.eclipse.jpt.common.ui.internal.widgets.ClassChooserPane; @@ -27,11 +26,11 @@ import org.eclipse.jpt.common.utility.internal.iterables.SuperListIterableWrappe import org.eclipse.jpt.common.utility.internal.model.value.ItemPropertyListValueModelAdapter; import org.eclipse.jpt.common.utility.internal.model.value.ListAspectAdapter; import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter; -import org.eclipse.jpt.common.utility.internal.model.value.SimplePropertyValueModel; +import org.eclipse.jpt.common.utility.internal.model.value.SimpleCollectionValueModel; import org.eclipse.jpt.common.utility.internal.model.value.TransformationListValueModel; -import org.eclipse.jpt.common.utility.internal.model.value.TransformationPropertyValueModel; -import org.eclipse.jpt.common.utility.internal.model.value.swing.ObjectListSelectionModel; +import org.eclipse.jpt.common.utility.model.value.CollectionValueModel; import org.eclipse.jpt.common.utility.model.value.ListValueModel; +import org.eclipse.jpt.common.utility.model.value.ModifiableCollectionValueModel; import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; import org.eclipse.jpt.common.utility.model.value.ModifiablePropertyValueModel; import org.eclipse.jpt.jpa.core.context.JpaNamedContextNode; @@ -39,8 +38,10 @@ import org.eclipse.jpt.jpa.eclipselink.core.context.EclipseLinkConversionValue; import org.eclipse.jpt.jpa.eclipselink.core.context.EclipseLinkConverter; import org.eclipse.jpt.jpa.eclipselink.core.context.EclipseLinkObjectTypeConverter; import org.eclipse.swt.graphics.Image; +import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Group; +import org.eclipse.ui.forms.widgets.Hyperlink; /** * Here the layout of this pane: @@ -52,7 +53,7 @@ import org.eclipse.swt.widgets.Group; * -----------------------------------------------------------------------------</pre> * * @see EclipseLinkConverter - * @see EclipseLinkConvertComposite - A container of this widget + * @see EclipseLinkConvertCombo - A container of this widget * * @version 2.1 * @since 2.1 @@ -74,28 +75,34 @@ public class EclipseLinkObjectTypeConverterComposite extends Pane<EclipseLinkObj } @Override + protected Composite addComposite(Composite container) { + return this.addSubPane(container, 2, 0, 0, 0, 0); + } + + @Override protected void initializeLayout(Composite container) { + this.addLabel(container, EclipseLinkUiDetailsMessages.EclipseLinkConverterComposite_nameTextLabel); + this.addText(container, buildNameTextHolder()); - addLabeledText( - container, - EclipseLinkUiDetailsMessages.EclipseLinkConverterComposite_nameTextLabel, - buildNameTextHolder()); + Hyperlink dataTypeHyperlink = this.addHyperlink(container, EclipseLinkUiDetailsMessages.EclipseLinkObjectTypeConverterComposite_dataTypeLabel); + this.addDataTypeChooser(container, dataTypeHyperlink); - addDataTypeChooser(container); - addObjectTypeChooser(container); + Hyperlink objectTypeHyperlink = this.addHyperlink(container, EclipseLinkUiDetailsMessages.EclipseLinkObjectTypeConverterComposite_objectTypeLabel); + this.addObjectTypeChooser(container, objectTypeHyperlink); - addConversionValuesTable(container); + Composite conversionValuesTable = addConversionValuesTable(container); + GridData gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.horizontalSpan = 2; + conversionValuesTable.setLayoutData(gridData); - addLabeledEditableCombo( + this.addLabel(container, EclipseLinkUiDetailsMessages.EclipseLinkObjectTypeConverterComposite_defaultObjectValueLabel); + this.addEditableCombo( container, - EclipseLinkUiDetailsMessages.EclipseLinkObjectTypeConverterComposite_defaultObjectValueLabel, buildDefaultObjectValueListHolder(), buildDefaultObjectValueHolder(), buildStringConverter(), - null + (String) null ); - - new PaneEnabler(buildBooleanHolder(), this); } protected ModifiablePropertyValueModel<String> buildNameTextHolder() { @@ -116,9 +123,9 @@ public class EclipseLinkObjectTypeConverterComposite extends Pane<EclipseLinkObj }; } - private ClassChooserPane<EclipseLinkObjectTypeConverter> addDataTypeChooser(Composite container) { + private ClassChooserPane<EclipseLinkObjectTypeConverter> addDataTypeChooser(Composite container, Hyperlink hyperlink) { - return new ClassChooserPane<EclipseLinkObjectTypeConverter>(this, container) { + return new ClassChooserPane<EclipseLinkObjectTypeConverter>(this, container, hyperlink) { @Override protected ModifiablePropertyValueModel<String> buildTextHolder() { @@ -146,11 +153,6 @@ public class EclipseLinkObjectTypeConverterComposite extends Pane<EclipseLinkObj } @Override - protected String getLabelText() { - return EclipseLinkUiDetailsMessages.EclipseLinkObjectTypeConverterComposite_dataTypeLabel; - } - - @Override protected IJavaProject getJavaProject() { return getSubject().getJpaProject().getJavaProject(); } @@ -172,9 +174,9 @@ public class EclipseLinkObjectTypeConverterComposite extends Pane<EclipseLinkObj }; } - private ClassChooserPane<EclipseLinkObjectTypeConverter> addObjectTypeChooser(Composite container) { + private ClassChooserPane<EclipseLinkObjectTypeConverter> addObjectTypeChooser(Composite container, Hyperlink hyperlink) { - return new ClassChooserPane<EclipseLinkObjectTypeConverter>(this, container) { + return new ClassChooserPane<EclipseLinkObjectTypeConverter>(this, container, hyperlink) { @Override protected ModifiablePropertyValueModel<String> buildTextHolder() { @@ -202,11 +204,6 @@ public class EclipseLinkObjectTypeConverterComposite extends Pane<EclipseLinkObj } @Override - protected String getLabelText() { - return EclipseLinkUiDetailsMessages.EclipseLinkObjectTypeConverterComposite_objectTypeLabel; - } - - @Override protected IJavaProject getJavaProject() { return getSubject().getJpaProject().getJavaProject(); } @@ -233,23 +230,20 @@ public class EclipseLinkObjectTypeConverterComposite extends Pane<EclipseLinkObj }; } - protected void addConversionValuesTable(Composite container) { - + protected Composite addConversionValuesTable(Composite container) { // Join Columns group pane Group conversionValuesGroupPane = addTitledGroup( container, EclipseLinkUiDetailsMessages.EclipseLinkObjectTypeConverterComposite_conversionValuesGroupTitle ); - ModifiablePropertyValueModel<EclipseLinkConversionValue> conversionValueHolder = - buildConversionValueHolder(); // Conversion Values add/remove list pane - new AddRemoveTablePane<EclipseLinkObjectTypeConverter>( + new AddRemoveTablePane<EclipseLinkObjectTypeConverter, EclipseLinkConversionValue>( this, conversionValuesGroupPane, buildConversionValuesAdapter(), buildConversionValuesListModel(), - conversionValueHolder, + buildSelectedConversionValuesModel(), buildConversionValuesLabelProvider(), null//TODO need a help context id for this ) { @@ -259,18 +253,19 @@ public class EclipseLinkObjectTypeConverterComposite extends Pane<EclipseLinkObj } }; + return conversionValuesGroupPane; } - protected ModifiablePropertyValueModel<EclipseLinkConversionValue> buildConversionValueHolder() { - return new SimplePropertyValueModel<EclipseLinkConversionValue>(); + private ModifiableCollectionValueModel<EclipseLinkConversionValue> buildSelectedConversionValuesModel() { + return new SimpleCollectionValueModel<EclipseLinkConversionValue>(); } - protected AddRemoveListPane.Adapter buildConversionValuesAdapter() { - return new AddRemoveListPane.AbstractAdapter() { + protected AddRemoveListPane.Adapter<EclipseLinkConversionValue> buildConversionValuesAdapter() { + return new AddRemoveListPane.AbstractAdapter<EclipseLinkConversionValue>() { - public void addNewItem(ObjectListSelectionModel listSelectionModel) { + public EclipseLinkConversionValue addNewItem() { EclipseLinkConversionValueDialog dialog = buildConversionValueDialogForAdd(); - addConversionValueFromDialog(dialog, listSelectionModel); + return addConversionValueFromDialog(dialog); } @Override @@ -284,19 +279,23 @@ public class EclipseLinkObjectTypeConverterComposite extends Pane<EclipseLinkObj } @Override - public void optionOnSelection(ObjectListSelectionModel listSelectionModel) { - EclipseLinkConversionValue conversionValue = (EclipseLinkConversionValue) listSelectionModel.selectedValue(); + public void optionOnSelection(CollectionValueModel<EclipseLinkConversionValue> selectedItemsModel) { + EclipseLinkConversionValue conversionValue = selectedItemsModel.iterator().next(); EclipseLinkConversionValueDialog dialog = new EclipseLinkConversionValueDialog(getShell(), getSubject(), conversionValue); editConversionValueFromDialog(dialog, conversionValue); } - public void removeSelectedItems(ObjectListSelectionModel listSelectionModel) { - EclipseLinkObjectTypeConverter converter = getSubject(); - int[] selectedIndices = listSelectionModel.selectedIndices(); - for (int index = selectedIndices.length; --index >= 0; ) { - converter.removeConversionValue(selectedIndices[index]); - } + @Override + public PropertyValueModel<Boolean> buildRemoveButtonEnabledModel(CollectionValueModel<EclipseLinkConversionValue> selectedItemsModel) { + //enable the remove button only when 1 item is selected, same as the optional button + return this.buildSingleSelectedItemEnabledModel(selectedItemsModel); + } + + public void removeSelectedItems(CollectionValueModel<EclipseLinkConversionValue> selectedItemsModel) { + //assume only 1 item since remove button is disabled otherwise + EclipseLinkConversionValue item = selectedItemsModel.iterator().next(); + getSubject().removeConversionValue(item); } }; } @@ -306,16 +305,16 @@ public class EclipseLinkObjectTypeConverterComposite extends Pane<EclipseLinkObj return new EclipseLinkConversionValueDialog(getShell(), getSubject()); } - protected void addConversionValueFromDialog(EclipseLinkConversionValueDialog dialog, ObjectListSelectionModel listSelectionModel) { + protected EclipseLinkConversionValue addConversionValueFromDialog(EclipseLinkConversionValueDialog dialog) { if (dialog.open() != Window.OK) { - return; + return null; } EclipseLinkConversionValue conversionValue = this.getSubject().addConversionValue(); conversionValue.setDataValue(dialog.getDataValue()); conversionValue.setObjectValue(dialog.getObjectValue()); - listSelectionModel.setSelectedValue(conversionValue); + return conversionValue; } protected void editConversionValueFromDialog(EclipseLinkConversionValueDialog dialog, EclipseLinkConversionValue conversionValue) { @@ -385,15 +384,6 @@ public class EclipseLinkObjectTypeConverterComposite extends Pane<EclipseLinkObj } }; } - - protected PropertyValueModel<Boolean> buildBooleanHolder() { - return new TransformationPropertyValueModel<EclipseLinkObjectTypeConverter, Boolean>(getSubjectHolder()) { - @Override - protected Boolean transform(EclipseLinkObjectTypeConverter value) { - return Boolean.valueOf(value != null); - } - }; - } private class TableLabelProvider extends LabelProvider implements ITableLabelProvider { diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkOneToManyJoiningStrategyPane.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkOneToManyJoiningStrategyPane.java index 75cb9f7fde..108b2dc9be 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkOneToManyJoiningStrategyPane.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkOneToManyJoiningStrategyPane.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2009, 2011 Oracle. All rights reserved. + * Copyright (c) 2009, 2012 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. @@ -30,39 +30,39 @@ public class EclipseLinkOneToManyJoiningStrategyPane super(parentPane, subjectHolder, parent); } - + @Override + protected Composite addComposite(Composite container) { + return addCollapsibleSection( + container, + JptUiDetailsMessages.Joining_title, + new SimplePropertyValueModel<Boolean>(Boolean.TRUE)); + } + @Override protected void initializeLayout(Composite container) { - Composite composite = addCollapsibleSection( - container, - JptUiDetailsMessages.Joining_title, - new SimplePropertyValueModel<Boolean>(Boolean.TRUE)); - addRadioButton( - composite, + container, JptUiDetailsMessages.Joining_mappedByLabel, MappedByJoiningStrategyPane.buildUsesMappedByJoiningStrategyHolder(getSubjectHolder()), null); - new MappedByJoiningStrategyPane(this, composite); + new MappedByJoiningStrategyPane(this, container); addRadioButton( - composite, + container, JptUiDetailsMessages.Joining_joinColumnJoiningLabel, JoinColumnJoiningStrategyPane.buildUsesJoinColumnJoiningStrategyHolder(getSubjectHolder()), null); JoinColumnJoiningStrategyPane. - buildJoinColumnJoiningStrategyPaneWithIncludeOverrideCheckBox(this, composite); + buildJoinColumnJoiningStrategyPaneWithIncludeOverrideCheckBox(this, container); addRadioButton( - composite, + container, JptUiDetailsMessages.Joining_joinTableJoiningLabel, JoinTableJoiningStrategyPane.buildUsesJoinTableJoiningStrategyHolder(getSubjectHolder()), null); - new JoinTableJoiningStrategyPane(this, composite); - - addSubPane(composite, 5); + new JoinTableJoiningStrategyPane(this, container); } } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkOneToManyMappingComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkOneToManyMappingComposite.java index 7432fa9f43..21792ed847 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkOneToManyMappingComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkOneToManyMappingComposite.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2008, 2011 Oracle. All rights reserved. + * Copyright (c) 2008, 2012 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. @@ -22,10 +22,18 @@ import org.eclipse.jpt.jpa.eclipselink.core.context.EclipseLinkPrivateOwned; import org.eclipse.jpt.jpa.ui.details.JpaComposite; import org.eclipse.jpt.jpa.ui.internal.details.AbstractOneToManyMappingComposite; import org.eclipse.jpt.jpa.ui.internal.details.CascadeComposite; -import org.eclipse.jpt.jpa.ui.internal.details.FetchTypeComposite; +import org.eclipse.jpt.jpa.ui.internal.details.FetchTypeComboViewer; +import org.eclipse.jpt.jpa.ui.internal.details.JptUiDetailsMessages; import org.eclipse.jpt.jpa.ui.internal.details.OrderingComposite; -import org.eclipse.jpt.jpa.ui.internal.details.TargetEntityComposite; +import org.eclipse.jpt.jpa.ui.internal.details.TargetEntityClassChooser; +import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.ui.forms.events.ExpansionAdapter; +import org.eclipse.ui.forms.events.ExpansionEvent; +import org.eclipse.ui.forms.widgets.ExpandableComposite; +import org.eclipse.ui.forms.widgets.Hyperlink; +import org.eclipse.ui.forms.widgets.Section; /** * Here the layout of this pane: @@ -70,12 +78,12 @@ import org.eclipse.swt.widgets.Composite; * * @see OneToOneMapping * @see CascadeComposite - * @see EclipseLinkJoinFetchComposite - * @see EclipseLinkJoinFetchComposite + * @see EclipseLinkJoinFetchComboViewer + * @see EclipseLinkJoinFetchComboViewer * @see EclipseLinkOneToManyJoiningStrategyPane - * @see FetchTypeComposite + * @see FetchTypeComboViewer * @see OrderingComposite - * @see TargetEntityComposite + * @see TargetEntityClassChooser * * @version 2.3 * @since 2.1 @@ -92,19 +100,42 @@ public class EclipseLinkOneToManyMappingComposite<T extends OneToManyMapping> * @param widgetFactory The factory used to create various common widgets */ public EclipseLinkOneToManyMappingComposite(PropertyValueModel<? extends T> subjectHolder, - Composite parent, - WidgetFactory widgetFactory) { + PropertyValueModel<Boolean> enabledModel, + Composite parent, + WidgetFactory widgetFactory) { - super(subjectHolder, parent, widgetFactory); + super(subjectHolder, enabledModel, parent, widgetFactory); } @Override - protected void initializeOneToManySection(Composite container) { - new TargetEntityComposite(this, container); - new FetchTypeComposite(this, container); - new EclipseLinkJoinFetchComposite(this, buildJoinFetchableHolder(), container); - new EclipseLinkPrivateOwnedComposite(this, buildPrivateOwnableHolder(), container); - new CascadeComposite(this, buildCascadeHolder(), addSubPane(container, 5)); + protected Control initializeOneToManySection(Composite container) { + container = this.addSubPane(container, 2, 0, 0, 0, 0); + + // Target entity widgets + Hyperlink targetEntityHyperlink = this.addHyperlink(container, JptUiDetailsMessages.TargetEntityChooser_label); + new TargetEntityClassChooser(this, container, targetEntityHyperlink); + + // Fetch type widgets + this.addLabel(container, JptUiDetailsMessages.BasicGeneralSection_fetchLabel); + new FetchTypeComboViewer(this, container); + + // Join fetch widgets + this.addLabel(container, EclipseLinkUiDetailsMessages.EclipseLinkJoinFetchComposite_label); + new EclipseLinkJoinFetchComboViewer(this, buildJoinFetchableHolder(), container); + + // Private owned widgets + EclipseLinkPrivateOwnedCheckBox privateOwnedCheckBox = new EclipseLinkPrivateOwnedCheckBox(this, buildPrivateOwnableHolder(), container); + GridData gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.horizontalSpan = 2; + privateOwnedCheckBox.getControl().setLayoutData(gridData); + + // Cascade widgets + CascadeComposite cascadeComposite = new CascadeComposite(this, buildCascadeHolder(), container); + gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.horizontalSpan = 2; + cascadeComposite.getControl().setLayoutData(gridData); + + return container; } @Override @@ -131,15 +162,22 @@ public class EclipseLinkOneToManyMappingComposite<T extends OneToManyMapping> } protected void initializeConvertersCollapsibleSection(Composite container) { - container = addCollapsibleSection( - container, - EclipseLinkUiDetailsMessages.EclipseLinkTypeMappingComposite_converters - ); - initializeConvertersSection(container, this.buildConverterHolderValueModel()); + final Section section = this.getWidgetFactory().createSection(container, ExpandableComposite.TITLE_BAR | ExpandableComposite.TWISTIE); + section.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + section.setText(EclipseLinkUiDetailsMessages.EclipseLinkTypeMappingComposite_converters); + + section.addExpansionListener(new ExpansionAdapter() { + @Override + public void expansionStateChanging(ExpansionEvent e) { + if (e.getState() && section.getClient() == null) { + section.setClient(initializeConvertersSection(section)); + } + } + }); } - protected void initializeConvertersSection(Composite container, PropertyValueModel<EclipseLinkConverterContainer> converterHolder) { - new EclipseLinkConvertersComposite(this, converterHolder, container); + protected Control initializeConvertersSection(Composite container) { + return new EclipseLinkConvertersComposite(this, this.buildConverterHolderValueModel(), container).getControl(); } protected PropertyValueModel<EclipseLinkConverterContainer> buildConverterHolderValueModel() { diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkOneToOneMappingComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkOneToOneMappingComposite.java index 68a64c196c..d2a899234a 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkOneToOneMappingComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkOneToOneMappingComposite.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2008, 2011 Oracle. All rights reserved. + * Copyright (c) 2008, 2012 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. @@ -20,10 +20,14 @@ import org.eclipse.jpt.jpa.eclipselink.core.context.EclipseLinkPrivateOwned; import org.eclipse.jpt.jpa.ui.details.JpaComposite; import org.eclipse.jpt.jpa.ui.internal.details.AbstractOneToOneMappingComposite; import org.eclipse.jpt.jpa.ui.internal.details.CascadeComposite; -import org.eclipse.jpt.jpa.ui.internal.details.FetchTypeComposite; -import org.eclipse.jpt.jpa.ui.internal.details.OptionalComposite; -import org.eclipse.jpt.jpa.ui.internal.details.TargetEntityComposite; +import org.eclipse.jpt.jpa.ui.internal.details.FetchTypeComboViewer; +import org.eclipse.jpt.jpa.ui.internal.details.JptUiDetailsMessages; +import org.eclipse.jpt.jpa.ui.internal.details.OptionalTriStateCheckBox; +import org.eclipse.jpt.jpa.ui.internal.details.TargetEntityClassChooser; +import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.ui.forms.widgets.Hyperlink; public class EclipseLinkOneToOneMappingComposite<T extends OneToOneMapping> @@ -38,20 +42,48 @@ public class EclipseLinkOneToOneMappingComposite<T extends OneToOneMapping> * @param widgetFactory The factory used to create various common widgets */ public EclipseLinkOneToOneMappingComposite(PropertyValueModel<? extends T> subjectHolder, - Composite parent, + PropertyValueModel<Boolean> enabledModel, + Composite parent, WidgetFactory widgetFactory) { - super(subjectHolder, parent, widgetFactory); + super(subjectHolder, enabledModel, parent, widgetFactory); } @Override - protected void initializeOneToOneSection(Composite container) { - new TargetEntityComposite(this, container); - new FetchTypeComposite(this, container); - new EclipseLinkJoinFetchComposite(this, buildJoinFetchableHolder(), container); - new OptionalComposite(this, container); - new EclipseLinkPrivateOwnedComposite(this, buildPrivateOwnableHolder(), container); - new CascadeComposite(this, buildCascadeHolder(), addSubPane(container, 5)); + protected Control initializeOneToOneSection(Composite container) { + container = this.addSubPane(container, 2, 0, 0, 0, 0); + + // Target entity widgets + Hyperlink targetEntityHyperlink = this.addHyperlink(container, JptUiDetailsMessages.TargetEntityChooser_label); + new TargetEntityClassChooser(this, container, targetEntityHyperlink); + + // Fetch type widgets + this.addLabel(container, JptUiDetailsMessages.BasicGeneralSection_fetchLabel); + new FetchTypeComboViewer(this, container); + + // Join fetch widgets + this.addLabel(container, EclipseLinkUiDetailsMessages.EclipseLinkJoinFetchComposite_label); + new EclipseLinkJoinFetchComboViewer(this, buildJoinFetchableHolder(), container); + + // Optional widgets + OptionalTriStateCheckBox optionalCheckBox = new OptionalTriStateCheckBox(this, container); + GridData gridData = new GridData(); + gridData.horizontalSpan = 2; + optionalCheckBox.getControl().setLayoutData(gridData); + + // Private owned widgets + EclipseLinkPrivateOwnedCheckBox privateOwnedCheckBox = new EclipseLinkPrivateOwnedCheckBox(this, buildPrivateOwnableHolder(), container); + gridData = new GridData(); + gridData.horizontalSpan = 2; + privateOwnedCheckBox.getControl().setLayoutData(gridData); + + // Cascade widgets + CascadeComposite cascadeComposite = new CascadeComposite(this, buildCascadeHolder(), container); + gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.horizontalSpan = 2; + cascadeComposite.getControl().setLayoutData(gridData); + + return container; } protected PropertyValueModel<EclipseLinkJoinFetch> buildJoinFetchableHolder() { diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkPrivateOwnedComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkPrivateOwnedCheckBox.java index a02c942142..f906375c8e 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkPrivateOwnedComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkPrivateOwnedCheckBox.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2008, 2010 Oracle. All rights reserved. + * Copyright (c) 2008, 2012 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. @@ -14,7 +14,9 @@ import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; import org.eclipse.jpt.jpa.core.context.BasicMapping; import org.eclipse.jpt.jpa.eclipselink.core.context.EclipseLinkPrivateOwned; +import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; /** * This composite simply shows the Lob check box. @@ -24,21 +26,43 @@ import org.eclipse.swt.widgets.Composite; * @version 2.1 * @since 2.1 */ -public class EclipseLinkPrivateOwnedComposite extends Pane<EclipseLinkPrivateOwned> +public class EclipseLinkPrivateOwnedCheckBox extends Pane<EclipseLinkPrivateOwned> { + private Button checkBox; + /** * Creates a new <code>PrivateOwnedComposite</code>. * * @param parentPane The parent container of this one * @param parent The parent container */ - public EclipseLinkPrivateOwnedComposite(Pane<?> parentPane, + public EclipseLinkPrivateOwnedCheckBox(Pane<?> parentPane, PropertyValueModel<? extends EclipseLinkPrivateOwned> subjectHolder, Composite parent) { super(parentPane, subjectHolder, parent); } - + + @Override + protected boolean addsComposite() { + return false; + } + + @Override + public Control getControl() { + return this.checkBox; + } + + @Override + protected void initializeLayout(Composite container) { + this.checkBox = addCheckBox( + container, + EclipseLinkUiDetailsMessages.EclipseLinkPrivateOwnedComposite_privateOwnedLabel, + buildPrivateOwnedHolder(), + null + ); + } + private PropertyAspectAdapter<EclipseLinkPrivateOwned, Boolean> buildPrivateOwnedHolder() { return new PropertyAspectAdapter<EclipseLinkPrivateOwned, Boolean>(getSubjectHolder(), EclipseLinkPrivateOwned.PRIVATE_OWNED_PROPERTY) { @@ -54,14 +78,4 @@ public class EclipseLinkPrivateOwnedComposite extends Pane<EclipseLinkPrivateOwn } }; } - - @Override - protected void initializeLayout(Composite container) { - addCheckBox( - container, - EclipseLinkUiDetailsMessages.EclipseLinkPrivateOwnedComposite_privateOwnedLabel, - buildPrivateOwnedHolder(), - null - ); - } } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkReadOnlyComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkReadOnlyTriStateCheckBox.java index 7d3841738f..659dd38479 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkReadOnlyComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkReadOnlyTriStateCheckBox.java @@ -11,6 +11,7 @@ package org.eclipse.jpt.jpa.eclipselink.ui.internal.details; import org.eclipse.jpt.common.ui.internal.JptCommonUiMessages; import org.eclipse.jpt.common.ui.internal.widgets.Pane; +import org.eclipse.jpt.common.ui.internal.widgets.TriStateCheckBox; import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter; import org.eclipse.jpt.common.utility.internal.model.value.TransformationPropertyValueModel; import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; @@ -18,6 +19,7 @@ import org.eclipse.jpt.common.utility.model.value.ModifiablePropertyValueModel; import org.eclipse.jpt.jpa.eclipselink.core.context.EclipseLinkReadOnly; import org.eclipse.osgi.util.NLS; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; /** * This composite simply shows the Read Only check box. @@ -27,15 +29,17 @@ import org.eclipse.swt.widgets.Composite; * @version 2.1 * @since 2.1 */ -public class EclipseLinkReadOnlyComposite extends Pane<EclipseLinkReadOnly> +public class EclipseLinkReadOnlyTriStateCheckBox extends Pane<EclipseLinkReadOnly> { + private TriStateCheckBox checkBox; + /** * Creates a new <code>ReadOnlyComposite</code>. * * @param parentPane The parent container of this one * @param parent The parent container */ - public EclipseLinkReadOnlyComposite(Pane<?> parentPane, + public EclipseLinkReadOnlyTriStateCheckBox(Pane<?> parentPane, PropertyValueModel<? extends EclipseLinkReadOnly> subjectHolder, Composite parent) { @@ -43,9 +47,18 @@ public class EclipseLinkReadOnlyComposite extends Pane<EclipseLinkReadOnly> } @Override + protected boolean addsComposite() { + return false; + } + + @Override + public Control getControl() { + return this.checkBox.getCheckBox(); + } + + @Override protected void initializeLayout(Composite container) { - // read-only check box - addTriStateCheckBoxWithDefault( + this.checkBox = this.addTriStateCheckBoxWithDefault( container, EclipseLinkUiDetailsMessages.EclipseLinkReadOnlyComposite_readOnlyLabel, buildSpecifiedReadOnlyHolder(), @@ -53,7 +66,7 @@ public class EclipseLinkReadOnlyComposite extends Pane<EclipseLinkReadOnly> null ); } - + private ModifiablePropertyValueModel<Boolean> buildSpecifiedReadOnlyHolder() { return new PropertyAspectAdapter<EclipseLinkReadOnly, Boolean>( getSubjectHolder(), @@ -83,7 +96,7 @@ public class EclipseLinkReadOnlyComposite extends Pane<EclipseLinkReadOnly> } }; } - + private PropertyValueModel<Boolean> buildDefaultReadOnlyHolder() { return new PropertyAspectAdapter<EclipseLinkReadOnly, Boolean>( getSubjectHolder(), diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkRefreshOnlyIfNewerComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkRefreshOnlyIfNewerComposite.java deleted file mode 100644 index fca6dc8019..0000000000 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkRefreshOnlyIfNewerComposite.java +++ /dev/null @@ -1,102 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2008, 2012 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.jpa.eclipselink.ui.internal.details; - -import org.eclipse.jpt.common.ui.internal.JptCommonUiMessages; -import org.eclipse.jpt.common.ui.internal.widgets.Pane; -import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter; -import org.eclipse.jpt.common.utility.internal.model.value.TransformationPropertyValueModel; -import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; -import org.eclipse.jpt.common.utility.model.value.ModifiablePropertyValueModel; -import org.eclipse.jpt.jpa.eclipselink.core.context.EclipseLinkCaching; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.EclipseLinkHelpContextIds; -import org.eclipse.osgi.util.NLS; -import org.eclipse.swt.widgets.Composite; - -/** - * This composite simply shows a tri-state check box for the Refresh Only If Newer option. - * - * @see EclipseLinkCaching - * @see EclipseLinkCachingComposite - A container of this widget - * - * @version 2.1 - * @since 2.1 - */ -public class EclipseLinkRefreshOnlyIfNewerComposite extends Pane<EclipseLinkCaching> -{ - /** - * Creates a new <code>OptionalComposite</code>. - * - * @param parentPane The parent container of this one - * @param parent The parent container - */ - public EclipseLinkRefreshOnlyIfNewerComposite(Pane<? extends EclipseLinkCaching> parentPane, - Composite parent) - { - super(parentPane, parent); - } - - @Override - protected void initializeLayout(Composite container) { - - addTriStateCheckBoxWithDefault( - container, - EclipseLinkUiDetailsMessages.EclipseLinkRefreshOnlyIfNewerComposite_refreshOnlyIfNewerLabel, - buildRefreshOnlyIfNewerHolder(), - buildRefreshOnlyIfNewerStringHolder(), - EclipseLinkHelpContextIds.CACHING_REFRESH_ONLY_IF_NEWER - ); - } - - private ModifiablePropertyValueModel<Boolean> buildRefreshOnlyIfNewerHolder() { - return new PropertyAspectAdapter<EclipseLinkCaching, Boolean>(getSubjectHolder(), EclipseLinkCaching.SPECIFIED_REFRESH_ONLY_IF_NEWER_PROPERTY) { - @Override - protected Boolean buildValue_() { - return this.subject.getSpecifiedRefreshOnlyIfNewer(); - } - - @Override - protected void setValue_(Boolean value) { - this.subject.setSpecifiedRefreshOnlyIfNewer(value); - } - }; - } - - private PropertyValueModel<String> buildRefreshOnlyIfNewerStringHolder() { - - return new TransformationPropertyValueModel<Boolean, String>(buildDefaultRefreshOnlyIfNewerHolder()) { - - @Override - protected String transform(Boolean value) { - if (value != null) { - String defaultStringValue = value.booleanValue() ? JptCommonUiMessages.Boolean_True : JptCommonUiMessages.Boolean_False; - return NLS.bind(EclipseLinkUiDetailsMessages.EclipseLinkRefreshOnlyIfNewerComposite_refreshOnlyIfNewerDefault, defaultStringValue); - } - return EclipseLinkUiDetailsMessages.EclipseLinkRefreshOnlyIfNewerComposite_refreshOnlyIfNewerLabel; - } - }; - } - - private PropertyValueModel<Boolean> buildDefaultRefreshOnlyIfNewerHolder() { - return new PropertyAspectAdapter<EclipseLinkCaching, Boolean>( - getSubjectHolder(), - EclipseLinkCaching.SPECIFIED_REFRESH_ONLY_IF_NEWER_PROPERTY, - EclipseLinkCaching.DEFAULT_REFRESH_ONLY_IF_NEWER_PROPERTY) - { - @Override - protected Boolean buildValue_() { - if (this.subject.getSpecifiedRefreshOnlyIfNewer() != null) { - return null; - } - return Boolean.valueOf(this.subject.isDefaultRefreshOnlyIfNewer()); - } - }; - } -}
\ No newline at end of file diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkStructConverterComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkStructConverterComposite.java index d063e580bd..e58fccf90f 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkStructConverterComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkStructConverterComposite.java @@ -11,18 +11,17 @@ package org.eclipse.jpt.jpa.eclipselink.ui.internal.details; import org.eclipse.jdt.core.IJavaProject; import org.eclipse.jpt.common.ui.WidgetFactory; -import org.eclipse.jpt.common.ui.internal.util.PaneEnabler; import org.eclipse.jpt.common.ui.internal.widgets.ClassChooserPane; import org.eclipse.jpt.common.ui.internal.widgets.Pane; import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter; -import org.eclipse.jpt.common.utility.internal.model.value.TransformationPropertyValueModel; -import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; import org.eclipse.jpt.common.utility.model.value.ModifiablePropertyValueModel; +import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; import org.eclipse.jpt.jpa.core.context.JpaNamedContextNode; import org.eclipse.jpt.jpa.eclipselink.core.context.EclipseLinkConverter; import org.eclipse.jpt.jpa.eclipselink.core.context.EclipseLinkConverterClassConverter; import org.eclipse.jpt.jpa.eclipselink.core.context.EclipseLinkStructConverter; import org.eclipse.swt.widgets.Composite; +import org.eclipse.ui.forms.widgets.Hyperlink; /** * Here the layout of this pane: @@ -34,7 +33,7 @@ import org.eclipse.swt.widgets.Composite; * -----------------------------------------------------------------------------</pre> * * @see EclipseLinkConverter - * @see EclipseLinkConvertComposite - A container of this widget + * @see EclipseLinkConvertCombo - A container of this widget * * @version 2.1 * @since 2.1 @@ -56,18 +55,19 @@ public class EclipseLinkStructConverterComposite extends Pane<EclipseLinkStructC } @Override + protected Composite addComposite(Composite container) { + return this.addSubPane(container, 2, 0, 0, 0, 0); + } + + @Override protected void initializeLayout(Composite container) { - - addLabeledText( - container, - EclipseLinkUiDetailsMessages.EclipseLinkConverterComposite_nameTextLabel, - buildNameTextHolder()); - - addClassChooser(container); - - new PaneEnabler(buildBooleanHolder(), this); + this.addLabel(container, EclipseLinkUiDetailsMessages.EclipseLinkConverterComposite_nameTextLabel); + this.addText(container, buildNameTextHolder()); + + Hyperlink classHyperlink = this.addHyperlink(container, EclipseLinkUiDetailsMessages.EclipseLinkConverterComposite_classLabel); + this.addClassChooser(container, classHyperlink); } - + protected ModifiablePropertyValueModel<String> buildNameTextHolder() { return new PropertyAspectAdapter<EclipseLinkStructConverter, String>( getSubjectHolder(), JpaNamedContextNode.NAME_PROPERTY) { @@ -75,7 +75,7 @@ public class EclipseLinkStructConverterComposite extends Pane<EclipseLinkStructC protected String buildValue_() { return this.subject.getName(); } - + @Override protected void setValue_(String value) { if (value.length() == 0) { @@ -86,10 +86,10 @@ public class EclipseLinkStructConverterComposite extends Pane<EclipseLinkStructC }; } - - private ClassChooserPane<EclipseLinkStructConverter> addClassChooser(Composite container) { - return new ClassChooserPane<EclipseLinkStructConverter>(this, container) { + private ClassChooserPane<EclipseLinkStructConverter> addClassChooser(Composite container, Hyperlink hyperlink) { + + return new ClassChooserPane<EclipseLinkStructConverter>(this, container, hyperlink) { @Override protected ModifiablePropertyValueModel<String> buildTextHolder() { @@ -117,11 +117,6 @@ public class EclipseLinkStructConverterComposite extends Pane<EclipseLinkStructC } @Override - protected String getLabelText() { - return EclipseLinkUiDetailsMessages.EclipseLinkConverterComposite_classLabel; - } - - @Override protected IJavaProject getJavaProject() { return getSubject().getJpaProject().getJavaProject(); } @@ -147,13 +142,4 @@ public class EclipseLinkStructConverterComposite extends Pane<EclipseLinkStructC } }; } - - protected PropertyValueModel<Boolean> buildBooleanHolder() { - return new TransformationPropertyValueModel<EclipseLinkStructConverter, Boolean>(getSubjectHolder()) { - @Override - protected Boolean transform(EclipseLinkStructConverter value) { - return Boolean.valueOf(value != null); - } - }; - } } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkStructureMapping2_3Composite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkStructureMapping2_3Composite.java index 3feebf540b..b5d1cb791f 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkStructureMapping2_3Composite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkStructureMapping2_3Composite.java @@ -20,10 +20,11 @@ public class EclipseLinkStructureMapping2_3Composite extends Pane<EclipseLinkStr implements JpaComposite { public EclipseLinkStructureMapping2_3Composite(PropertyValueModel<? extends EclipseLinkStructureMapping2_3> subjectHolder, - Composite parent, - WidgetFactory widgetFactory) { + PropertyValueModel<Boolean> enabledModel, + Composite parent, + WidgetFactory widgetFactory) { - super(subjectHolder, parent, widgetFactory); + super(subjectHolder, enabledModel, parent, widgetFactory); } @Override diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkTransformationMappingComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkTransformationMappingComposite.java index 07b38a103c..1735c412dd 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkTransformationMappingComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkTransformationMappingComposite.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2008, 2010 Oracle. All rights reserved. + * Copyright (c) 2008, 2012 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. @@ -32,10 +32,11 @@ public class EclipseLinkTransformationMappingComposite extends Pane<EclipseLinkT * @param widgetFactory The factory used to create various common widgets */ public EclipseLinkTransformationMappingComposite(PropertyValueModel<? extends EclipseLinkTransformationMapping> subjectHolder, - Composite parent, - WidgetFactory widgetFactory) { + PropertyValueModel<Boolean> enabledModel, + Composite parent, + WidgetFactory widgetFactory) { - super(subjectHolder, parent, widgetFactory); + super(subjectHolder, enabledModel, parent, widgetFactory); } @Override diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkTypeConverterComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkTypeConverterComposite.java index 3b6e904e12..3f8947837b 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkTypeConverterComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkTypeConverterComposite.java @@ -11,17 +11,16 @@ package org.eclipse.jpt.jpa.eclipselink.ui.internal.details; import org.eclipse.jdt.core.IJavaProject; import org.eclipse.jpt.common.ui.WidgetFactory; -import org.eclipse.jpt.common.ui.internal.util.PaneEnabler; import org.eclipse.jpt.common.ui.internal.widgets.ClassChooserPane; import org.eclipse.jpt.common.ui.internal.widgets.Pane; import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter; -import org.eclipse.jpt.common.utility.internal.model.value.TransformationPropertyValueModel; -import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; import org.eclipse.jpt.common.utility.model.value.ModifiablePropertyValueModel; +import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; import org.eclipse.jpt.jpa.core.context.JpaNamedContextNode; import org.eclipse.jpt.jpa.eclipselink.core.context.EclipseLinkConverter; import org.eclipse.jpt.jpa.eclipselink.core.context.EclipseLinkTypeConverter; import org.eclipse.swt.widgets.Composite; +import org.eclipse.ui.forms.widgets.Hyperlink; /** * Here the layout of this pane: @@ -33,7 +32,7 @@ import org.eclipse.swt.widgets.Composite; * -----------------------------------------------------------------------------</pre> * * @see EclipseLinkConverter - * @see EclipseLinkConvertComposite - A container of this widget + * @see EclipseLinkConvertCombo - A container of this widget * * @version 2.1 * @since 2.1 @@ -55,17 +54,20 @@ public class EclipseLinkTypeConverterComposite extends Pane<EclipseLinkTypeConve } @Override + protected Composite addComposite(Composite container) { + return this.addSubPane(container, 2, 0, 0, 0, 0); + } + + @Override protected void initializeLayout(Composite container) { + this.addLabel(container, EclipseLinkUiDetailsMessages.EclipseLinkConverterComposite_nameTextLabel); + this.addText(container, buildNameTextHolder()); - addLabeledText( - container, - EclipseLinkUiDetailsMessages.EclipseLinkConverterComposite_nameTextLabel, - buildNameTextHolder()); + Hyperlink dataTypeHyperlink = this.addHyperlink(container, EclipseLinkUiDetailsMessages.EclipseLinkTypeConverterComposite_dataTypeLabel); + this.addDataTypeChooser(container, dataTypeHyperlink); - addDataTypeChooser(container); - addObjectTypeChooser(container); - - new PaneEnabler(buildBooleanHolder(), this); + Hyperlink objectTypeHyperlink = this.addHyperlink(container, EclipseLinkUiDetailsMessages.EclipseLinkTypeConverterComposite_objectTypeLabel); + this.addObjectTypeChooser(container, objectTypeHyperlink); } protected ModifiablePropertyValueModel<String> buildNameTextHolder() { @@ -87,9 +89,9 @@ public class EclipseLinkTypeConverterComposite extends Pane<EclipseLinkTypeConve } - private ClassChooserPane<EclipseLinkTypeConverter> addDataTypeChooser(Composite container) { + private ClassChooserPane<EclipseLinkTypeConverter> addDataTypeChooser(Composite container, Hyperlink hyperlink) { - return new ClassChooserPane<EclipseLinkTypeConverter>(this, container) { + return new ClassChooserPane<EclipseLinkTypeConverter>(this, container, hyperlink) { @Override protected ModifiablePropertyValueModel<String> buildTextHolder() { @@ -117,11 +119,6 @@ public class EclipseLinkTypeConverterComposite extends Pane<EclipseLinkTypeConve } @Override - protected String getLabelText() { - return EclipseLinkUiDetailsMessages.EclipseLinkTypeConverterComposite_dataTypeLabel; - } - - @Override protected IJavaProject getJavaProject() { return getSubject().getJpaProject().getJavaProject(); } @@ -143,9 +140,9 @@ public class EclipseLinkTypeConverterComposite extends Pane<EclipseLinkTypeConve }; } - private ClassChooserPane<EclipseLinkTypeConverter> addObjectTypeChooser(Composite container) { + private ClassChooserPane<EclipseLinkTypeConverter> addObjectTypeChooser(Composite container, Hyperlink hyperlink) { - return new ClassChooserPane<EclipseLinkTypeConverter>(this, container) { + return new ClassChooserPane<EclipseLinkTypeConverter>(this, container, hyperlink) { @Override protected ModifiablePropertyValueModel<String> buildTextHolder() { @@ -173,11 +170,6 @@ public class EclipseLinkTypeConverterComposite extends Pane<EclipseLinkTypeConve } @Override - protected String getLabelText() { - return EclipseLinkUiDetailsMessages.EclipseLinkTypeConverterComposite_objectTypeLabel; - } - - @Override protected IJavaProject getJavaProject() { return getSubject().getJpaProject().getJavaProject(); } @@ -198,13 +190,4 @@ public class EclipseLinkTypeConverterComposite extends Pane<EclipseLinkTypeConve } }; } - - protected PropertyValueModel<Boolean> buildBooleanHolder() { - return new TransformationPropertyValueModel<EclipseLinkTypeConverter, Boolean>(getSubjectHolder()) { - @Override - protected Boolean transform(EclipseLinkTypeConverter value) { - return Boolean.valueOf(value != null); - } - }; - } } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkTypeMappingAdvancedComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkTypeMappingAdvancedComposite.java new file mode 100644 index 0000000000..e70f750344 --- /dev/null +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkTypeMappingAdvancedComposite.java @@ -0,0 +1,47 @@ +/******************************************************************************* + * Copyright (c) 2008, 2012 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.jpa.eclipselink.ui.internal.details; + +import org.eclipse.jpt.common.ui.internal.widgets.Pane; +import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter; +import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; +import org.eclipse.jpt.jpa.core.context.TypeMapping; +import org.eclipse.jpt.jpa.eclipselink.core.context.EclipseLinkChangeTracking; +import org.eclipse.jpt.jpa.eclipselink.core.context.EclipseLinkCustomizer; +import org.eclipse.jpt.jpa.eclipselink.core.context.EclipseLinkTypeMapping; +import org.eclipse.swt.widgets.Composite; + +public abstract class EclipseLinkTypeMappingAdvancedComposite<T extends TypeMapping> extends Pane<T> { + + protected EclipseLinkTypeMappingAdvancedComposite( + Pane<? extends T> parentPane, + Composite parent) { + + super(parentPane, parent); + } + + protected PropertyValueModel<EclipseLinkCustomizer> buildCustomizerHolder() { + return new PropertyAspectAdapter<TypeMapping, EclipseLinkCustomizer>(getSubjectHolder()) { + @Override + protected EclipseLinkCustomizer buildValue_() { + return ((EclipseLinkTypeMapping) this.subject).getCustomizer(); + } + }; + } + + protected PropertyValueModel<EclipseLinkChangeTracking> buildChangeTrackingHolder() { + return new PropertyAspectAdapter<TypeMapping, EclipseLinkChangeTracking>(getSubjectHolder()) { + @Override + protected EclipseLinkChangeTracking buildValue_() { + return ((EclipseLinkTypeMapping) this.subject).getChangeTracking(); + } + }; + } +} diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkVariableOneToOneMappingComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkVariableOneToOneMappingComposite.java index ed914eae69..fb31567490 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkVariableOneToOneMappingComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkVariableOneToOneMappingComposite.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2009, 2010 Oracle. All rights reserved. + * Copyright (c) 2009, 2012 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. @@ -32,10 +32,11 @@ public class EclipseLinkVariableOneToOneMappingComposite extends Pane<EclipseLin * @param widgetFactory The factory used to create various common widgets */ public EclipseLinkVariableOneToOneMappingComposite(PropertyValueModel<? extends EclipseLinkVariableOneToOneMapping> subjectHolder, - Composite parent, - WidgetFactory widgetFactory) { + PropertyValueModel<Boolean> enabledModel, + Composite parent, + WidgetFactory widgetFactory) { - super(subjectHolder, parent, widgetFactory); + super(subjectHolder, enabledModel, parent, widgetFactory); } @Override diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkVersionMappingComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkVersionMappingComposite.java index b4df84bb1d..45bbc78d33 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkVersionMappingComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/EclipseLinkVersionMappingComposite.java @@ -10,7 +10,7 @@ package org.eclipse.jpt.jpa.eclipselink.ui.internal.details; import org.eclipse.jpt.common.ui.WidgetFactory; -import org.eclipse.jpt.common.ui.internal.widgets.Pane; +import org.eclipse.jpt.common.utility.internal.model.value.CompositeBooleanPropertyValueModel; import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter; import org.eclipse.jpt.common.utility.internal.model.value.TransformationPropertyValueModel; import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; @@ -25,11 +25,16 @@ import org.eclipse.jpt.jpa.eclipselink.core.context.EclipseLinkVersionMapping; import org.eclipse.jpt.jpa.ui.internal.details.AbstractVersionMappingComposite; import org.eclipse.jpt.jpa.ui.internal.details.ColumnComposite; import org.eclipse.jpt.jpa.ui.internal.details.JptUiDetailsMessages; -import org.eclipse.jpt.jpa.ui.internal.details.TemporalTypeComposite; +import org.eclipse.jpt.jpa.ui.internal.details.TemporalTypeCombo; import org.eclipse.swt.layout.GridData; -import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.swt.widgets.Label; +import org.eclipse.ui.forms.events.ExpansionAdapter; +import org.eclipse.ui.forms.events.ExpansionEvent; +import org.eclipse.ui.forms.widgets.ExpandableComposite; +import org.eclipse.ui.forms.widgets.Section; /** * Here the layout of this pane: @@ -54,7 +59,7 @@ import org.eclipse.swt.widgets.Composite; * * @see VersionMapping * @see ColumnComposite - * @see TemporalTypeComposite + * @see TemporalTypeCombo * * @version 3.2 * @since 2.1 @@ -70,21 +75,26 @@ public abstract class EclipseLinkVersionMappingComposite<T extends VersionMappin * @param widgetFactory The factory used to create various common widgets */ protected EclipseLinkVersionMappingComposite(PropertyValueModel<? extends T> subjectHolder, - Composite parent, - WidgetFactory widgetFactory) { + PropertyValueModel<Boolean> enabledModel, + Composite parent, + WidgetFactory widgetFactory) { - super(subjectHolder, parent, widgetFactory); + super(subjectHolder, enabledModel, parent, widgetFactory); } @Override - protected void initializeVersionSection(Composite container) { + protected Control initializeVersionSection(Composite container) { + container = this.addSubPane(container); + new ColumnComposite(this, buildColumnHolder(), container); - new EclipseLinkMutableComposite(this, buildMutableHolder(), container); + new EclipseLinkMutableTriStateCheckBox(this, buildMutableHolder(), container); + + return container; } @Override - protected void initializeTypeSection(Composite container) { - ((GridLayout) container.getLayout()).numColumns = 2; + protected Control initializeTypeSection(Composite container) { + container = this.addSubPane(container, 2, 0, 0, 0, 0); // No converter Button noConverterButton = addRadioButton( @@ -101,7 +111,7 @@ public abstract class EclipseLinkVersionMappingComposite<T extends VersionMappin JptUiDetailsMessages.TypeSection_temporal, buildConverterBooleanHolder(BaseTemporalConverter.class), null); - registerSubPane(new TemporalTypeComposite(buildTemporalConverterHolder(converterHolder), container, getWidgetFactory())); + registerSubPane(new TemporalTypeCombo(buildTemporalConverterHolder(converterHolder), getEnabledModel(), container, getWidgetFactory())); // EclipseLink Converter Button elConverterButton = addRadioButton( @@ -111,15 +121,15 @@ public abstract class EclipseLinkVersionMappingComposite<T extends VersionMappin null); ((GridData) elConverterButton.getLayoutData()).horizontalSpan = 2; - Pane<EclipseLinkConvert> convertComposite = buildConvertComposite(buildEclipseLinkConverterHolder(converterHolder), container); - GridData gridData = (GridData) convertComposite.getControl().getLayoutData(); - gridData.horizontalSpan = 2; + PropertyValueModel<EclipseLinkConvert> convertHolder = buildEclipseLinkConverterHolder(converterHolder); + PropertyValueModel<Boolean> convertEnabledModel = CompositeBooleanPropertyValueModel.and(getEnabledModel(), buildEclipseLinkConvertBooleanHolder(convertHolder)); + Label convertLabel = this.addLabel(container, EclipseLinkUiDetailsMessages.EclipseLinkConvertComposite_converterNameLabel, convertEnabledModel); + GridData gridData = new GridData(); gridData.horizontalIndent = 20; - registerSubPane(convertComposite); - } - - protected Pane<EclipseLinkConvert> buildConvertComposite(PropertyValueModel<EclipseLinkConvert> convertHolder, Composite container) { - return new EclipseLinkConvertComposite(convertHolder, container, getWidgetFactory()); + convertLabel.setLayoutData(gridData); + registerSubPane(new EclipseLinkConvertCombo(convertHolder, convertEnabledModel, container, getWidgetFactory())); + + return container; } @@ -140,6 +150,15 @@ public abstract class EclipseLinkVersionMappingComposite<T extends VersionMappin } }; } + + protected PropertyValueModel<Boolean> buildEclipseLinkConvertBooleanHolder(PropertyValueModel<EclipseLinkConvert> convertHolder) { + return new TransformationPropertyValueModel<EclipseLinkConvert, Boolean>(convertHolder) { + @Override + protected Boolean transform(EclipseLinkConvert value) { + return Boolean.valueOf(value != null); + } + }; + } protected PropertyValueModel<BaseTemporalConverter> buildTemporalConverterHolder(PropertyValueModel<Converter> converterHolder) { return new TransformationPropertyValueModel<Converter, BaseTemporalConverter>(converterHolder) { @@ -160,15 +179,22 @@ public abstract class EclipseLinkVersionMappingComposite<T extends VersionMappin } protected void initializeConvertersCollapsibleSection(Composite container) { - container = addCollapsibleSection( - container, - EclipseLinkUiDetailsMessages.EclipseLinkTypeMappingComposite_converters - ); - initializeConvertersSection(container, this.buildConverterHolderValueModel()); + final Section section = this.getWidgetFactory().createSection(container, ExpandableComposite.TITLE_BAR | ExpandableComposite.TWISTIE); + section.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + section.setText(EclipseLinkUiDetailsMessages.EclipseLinkTypeMappingComposite_converters); + section.addExpansionListener(new ExpansionAdapter() { + @Override + public void expansionStateChanging(ExpansionEvent e) { + if (e.getState() && section.getClient() == null) { + section.setClient(EclipseLinkVersionMappingComposite.this.initializeConvertersSection(section)); + } + } + }); + section.setClient(initializeConvertersSection(section)); } - protected void initializeConvertersSection(Composite container, PropertyValueModel<EclipseLinkConverterContainer> converterHolder) { - new EclipseLinkConvertersComposite(this, converterHolder, container); + protected Control initializeConvertersSection(Composite container) { + return new EclipseLinkConvertersComposite(this, this.buildConverterHolderValueModel(), container).getControl(); } protected PropertyValueModel<EclipseLinkConverterContainer> buildConverterHolderValueModel() { diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/TenantDiscriminatorColumnComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/TenantDiscriminatorColumnComposite.java index 5266145bb6..b333f79740 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/TenantDiscriminatorColumnComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/TenantDiscriminatorColumnComposite.java @@ -34,7 +34,9 @@ import org.eclipse.jpt.jpa.ui.internal.details.JptUiDetailsMessages; import org.eclipse.jpt.jpa.ui.internal.details.db.ColumnCombo; import org.eclipse.jpt.jpa.ui.internal.details.db.DatabaseObjectCombo; import org.eclipse.osgi.util.NLS; +import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; public class TenantDiscriminatorColumnComposite extends Pane<ReadOnlyTenantDiscriminatorColumn2_3> { @@ -45,56 +47,48 @@ public class TenantDiscriminatorColumnComposite extends Pane<ReadOnlyTenantDiscr super(parentPane, subjectHolder, parent); } + @Override + protected Composite addComposite(Composite container) { + return this.addSubPane(container, 2, 0, 0, 0, 0); + } @Override protected void initializeLayout(Composite container) { - // Name widgets - addLabeledComposite( - container, - EclipseLinkUiDetailsMessages.TenantDiscriminatorColumnComposite_nameLabel, - addNameCombo(container), - EclipseLinkHelpContextIds.TENANT_DISCRIMINATOR_COLUMN_NAME); + this.addLabel(container, EclipseLinkUiDetailsMessages.TenantDiscriminatorColumnComposite_nameLabel); + this.addNameCombo(container); // Table widgets - addLabeledComposite( - container, - EclipseLinkUiDetailsMessages.TenantDiscriminatorColumnComposite_tableLabel, - addTableCombo(container), - EclipseLinkHelpContextIds.TENANT_DISCRIMINATOR_COLUMN_TABLE); + this.addLabel(container, EclipseLinkUiDetailsMessages.TenantDiscriminatorColumnComposite_tableLabel); + this.addTableCombo(container); // Context property widgets - addLabeledComposite( - container, - EclipseLinkUiDetailsMessages.TenantDiscriminatorColumnComposite_contextPropertyLabel, - addContextPropertyCombo(container), - EclipseLinkHelpContextIds.TENANT_DISCRIMINATOR_COLUMN_CONTEXT_PROPERTY); + this.addLabel(container, EclipseLinkUiDetailsMessages.TenantDiscriminatorColumnComposite_contextPropertyLabel); + this.addContextPropertyCombo(container); // Discriminator Type widgets - addLabeledComposite( - container, - EclipseLinkUiDetailsMessages.TenantDiscriminatorColumnComposite_discriminatorTypeLabel, - addDiscriminatorTypeCombo(container), - EclipseLinkHelpContextIds.TENANT_DISCRIMINATOR_COLUMN_DISCRIMINATOR_TYPE - ); + this.addLabel(container, EclipseLinkUiDetailsMessages.TenantDiscriminatorColumnComposite_discriminatorTypeLabel); + this.addDiscriminatorTypeCombo(container); + // Length widgets - addLengthCombo(container); + this.addLabel(container, JptUiDetailsMessages.ColumnComposite_length); + this.addLengthCombo(container); // Column Definition widgets - addLabeledText( - container, - EclipseLinkUiDetailsMessages.TenantDiscriminatorColumnComposite_columnDefinitionLabel, - buildColumnDefinitionHolder(getSubjectHolder()) - ); + this.addLabel(container, EclipseLinkUiDetailsMessages.TenantDiscriminatorColumnComposite_columnDefinitionLabel); + this.addText(container, this.buildColumnDefinitionHolder(getSubjectHolder())); // Primary key tri-state check box TriStateCheckBox pkCheckBox = addTriStateCheckBoxWithDefault( - addSubPane(container, 4), + container, EclipseLinkUiDetailsMessages.TenantDiscriminatorColumnComposite_primaryKey, buildPrimaryKeyHolder(), buildPrimaryKeyStringHolder(), EclipseLinkHelpContextIds.TENANT_DISCRIMINATOR_COLUMN_PRIMARY_KEY); + GridData gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.horizontalSpan = 2; + pkCheckBox.getCheckBox().setLayoutData(gridData); SWTTools.controlVisibleState(new EclipseLink2_4ProjectFlagModel<ReadOnlyTenantDiscriminatorColumn2_3>(this.getSubjectHolder()), pkCheckBox.getCheckBox()); } @@ -149,6 +143,11 @@ public class TenantDiscriminatorColumnComposite extends Pane<ReadOnlyTenantDiscr } @Override + protected String getHelpId() { + return EclipseLinkHelpContextIds.TENANT_DISCRIMINATOR_COLUMN_NAME; + } + + @Override public String toString() { return "TenantDiscriminatorColumnComposite.nameCombo"; //$NON-NLS-1$ } @@ -196,6 +195,11 @@ public class TenantDiscriminatorColumnComposite extends Pane<ReadOnlyTenantDiscr } @Override + protected String getHelpId() { + return EclipseLinkHelpContextIds.TENANT_DISCRIMINATOR_COLUMN_TABLE; + } + + @Override public String toString() { return "TenantDiscriminatorColumnComposite.tableCombo"; //$NON-NLS-1$ } @@ -244,6 +248,11 @@ public class TenantDiscriminatorColumnComposite extends Pane<ReadOnlyTenantDiscr public String toString() { return "TenantDiscriminatorColumnComposite.contextPropertyCombo"; //$NON-NLS-1$ } + + @Override + protected String getHelpId() { + return EclipseLinkHelpContextIds.TENANT_DISCRIMINATOR_COLUMN_CONTEXT_PROPERTY; + } }; } @@ -299,6 +308,11 @@ public class TenantDiscriminatorColumnComposite extends Pane<ReadOnlyTenantDiscr protected void setValue(DiscriminatorType value) { ((TenantDiscriminatorColumn2_3) this.getSubject()).setSpecifiedDiscriminatorType(value); } + + @Override + protected String getHelpId() { + return EclipseLinkHelpContextIds.TENANT_DISCRIMINATOR_COLUMN_DISCRIMINATOR_TYPE; + } }; } @@ -306,11 +320,6 @@ public class TenantDiscriminatorColumnComposite extends Pane<ReadOnlyTenantDiscr new IntegerCombo<ReadOnlyTenantDiscriminatorColumn2_3>(this, container) { @Override - protected String getLabelText() { - return JptUiDetailsMessages.ColumnComposite_length; - } - - @Override protected String getHelpId() { return EclipseLinkHelpContextIds.TENANT_DISCRIMINATOR_COLUMN_LENGTH; } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/TenantDiscriminatorColumnsComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/TenantDiscriminatorColumnsComposite.java index 8098eebae1..0d72c81c86 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/TenantDiscriminatorColumnsComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/TenantDiscriminatorColumnsComposite.java @@ -15,28 +15,31 @@ import org.eclipse.jface.viewers.ILabelProvider; import org.eclipse.jface.viewers.LabelProvider; import org.eclipse.jpt.common.ui.WidgetFactory; import org.eclipse.jpt.common.ui.internal.util.ControlSwitcher; -import org.eclipse.jpt.common.ui.internal.util.PaneEnabler; import org.eclipse.jpt.common.ui.internal.widgets.AddRemoveListPane; import org.eclipse.jpt.common.ui.internal.widgets.AddRemovePane.AbstractAdapter; import org.eclipse.jpt.common.ui.internal.widgets.AddRemovePane.Adapter; import org.eclipse.jpt.common.ui.internal.widgets.Pane; +import org.eclipse.jpt.common.utility.internal.Transformer; import org.eclipse.jpt.common.utility.internal.iterables.ListIterable; +import org.eclipse.jpt.common.utility.internal.model.value.CollectionPropertyValueModelAdapter; import org.eclipse.jpt.common.utility.internal.model.value.CompositeListValueModel; import org.eclipse.jpt.common.utility.internal.model.value.ItemPropertyListValueModelAdapter; import org.eclipse.jpt.common.utility.internal.model.value.ListAspectAdapter; -import org.eclipse.jpt.common.utility.internal.model.value.SimplePropertyValueModel; -import org.eclipse.jpt.common.utility.internal.model.value.swing.ObjectListSelectionModel; +import org.eclipse.jpt.common.utility.internal.model.value.SimpleCollectionValueModel; +import org.eclipse.jpt.common.utility.model.value.CollectionValueModel; import org.eclipse.jpt.common.utility.model.value.ListValueModel; +import org.eclipse.jpt.common.utility.model.value.ModifiableCollectionValueModel; import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; -import org.eclipse.jpt.common.utility.model.value.ModifiablePropertyValueModel; import org.eclipse.jpt.jpa.core.JpaNode; import org.eclipse.jpt.jpa.core.context.ReadOnlyNamedColumn; import org.eclipse.jpt.jpa.eclipselink.core.context.ReadOnlyTenantDiscriminatorColumn2_3; +import org.eclipse.jpt.jpa.eclipselink.core.context.TenantDiscriminatorColumn2_3; import org.eclipse.jpt.jpa.eclipselink.ui.internal.EclipseLinkHelpContextIds; import org.eclipse.osgi.util.NLS; import org.eclipse.swt.SWT; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; import org.eclipse.ui.part.PageBook; /** @@ -61,36 +64,27 @@ public class TenantDiscriminatorColumnsComposite<T extends JpaNode> extends Pane */ TenantDiscriminatorColumnsEditor<T> tenantDiscriminatorColumnsEditor; - private AddRemoveListPane<T> listPane; private Pane<ReadOnlyTenantDiscriminatorColumn2_3> tenantDiscriminatorColumnPane; - private ModifiablePropertyValueModel<ReadOnlyTenantDiscriminatorColumn2_3> tenantDiscriminatorColumnHolder; + private ModifiableCollectionValueModel<ReadOnlyTenantDiscriminatorColumn2_3> selectedTenantDiscriminatorColumnsModel; + private PropertyValueModel<ReadOnlyTenantDiscriminatorColumn2_3> selectedTenantDiscriminatorColumnModel; public TenantDiscriminatorColumnsComposite(Pane<? extends T> parentPane, Composite parent, - TenantDiscriminatorColumnsEditor<T> tenantDiscriminatorColumnsEditor) { - - super(parentPane, parent); - this.tenantDiscriminatorColumnsEditor = tenantDiscriminatorColumnsEditor; - initializeLayout2(); - } - - public TenantDiscriminatorColumnsComposite(Pane<?> parentPane, - PropertyValueModel<? extends T> subjectHolder, - Composite parent, TenantDiscriminatorColumnsEditor<T> tenantDiscriminatorColumnsEditor, - boolean automaticallyAlignWidgets) { + PropertyValueModel<Boolean> enabledModel) { - super(parentPane, subjectHolder, parent, automaticallyAlignWidgets); + super(parentPane, parent, enabledModel); this.tenantDiscriminatorColumnsEditor = tenantDiscriminatorColumnsEditor; initializeLayout2(); } public TenantDiscriminatorColumnsComposite(PropertyValueModel<? extends T> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory, TenantDiscriminatorColumnsEditor<T> tenantDiscriminatorColumnsEditor) { - super(subjectHolder, parent, widgetFactory); + super(subjectHolder, enabledModel, parent, widgetFactory); this.tenantDiscriminatorColumnsEditor = tenantDiscriminatorColumnsEditor; initializeLayout2(); } @@ -98,11 +92,24 @@ public class TenantDiscriminatorColumnsComposite<T extends JpaNode> extends Pane @Override protected void initialize() { super.initialize(); - this.tenantDiscriminatorColumnHolder = buildTenantDiscriminatorColumnHolder(); + this.selectedTenantDiscriminatorColumnsModel = this.buildSelectedTenantDiscriminatorColumnsModel(); + this.selectedTenantDiscriminatorColumnModel = this.buildSelectedTenantDiscriminatorColumnModel(this.selectedTenantDiscriminatorColumnsModel); } - private ModifiablePropertyValueModel<ReadOnlyTenantDiscriminatorColumn2_3> buildTenantDiscriminatorColumnHolder() { - return new SimplePropertyValueModel<ReadOnlyTenantDiscriminatorColumn2_3>(); + private ModifiableCollectionValueModel<ReadOnlyTenantDiscriminatorColumn2_3> buildSelectedTenantDiscriminatorColumnsModel() { + return new SimpleCollectionValueModel<ReadOnlyTenantDiscriminatorColumn2_3>(); + } + + private PropertyValueModel<ReadOnlyTenantDiscriminatorColumn2_3> buildSelectedTenantDiscriminatorColumnModel(CollectionValueModel<ReadOnlyTenantDiscriminatorColumn2_3> selectedTenantDiscriminatorColumnsModel) { + return new CollectionPropertyValueModelAdapter<ReadOnlyTenantDiscriminatorColumn2_3, ReadOnlyTenantDiscriminatorColumn2_3>(selectedTenantDiscriminatorColumnsModel) { + @Override + protected ReadOnlyTenantDiscriminatorColumn2_3 buildValue() { + if (this.collectionModel.size() == 1) { + return this.collectionModel.iterator().next(); + } + return null; + } + }; } @Override @@ -110,39 +117,57 @@ public class TenantDiscriminatorColumnsComposite<T extends JpaNode> extends Pane //see intiailizeLayout2() } + @Override + public Composite getControl() { + return (Composite) super.getControl(); + } + private void initializeLayout2() { - this.listPane = new AddRemoveListPane<T>( + new AddRemoveListPane<T, ReadOnlyTenantDiscriminatorColumn2_3>( this, getControl(), buildTenantDiscriminatorColumnsAdapter(), buildTenantDiscriminatorColumnsListModel(), - this.tenantDiscriminatorColumnHolder, + this.selectedTenantDiscriminatorColumnsModel, buildTenantDiscriminatorColumnsListLabelProvider(), - EclipseLinkHelpContextIds.MULTITENANCY_TENANT_DISCRIMINATOR_COLUMNS, - false + EclipseLinkHelpContextIds.MULTITENANCY_TENANT_DISCRIMINATOR_COLUMNS ); // Property pane PageBook pageBook = new PageBook(getControl(), SWT.NULL); pageBook.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); - //Tenant Discriminator Column property pane - this.tenantDiscriminatorColumnPane = this.buildTenantDiscriminatorColumnComposite(pageBook); - - installPaneSwitcher(pageBook); } + protected Pane<ReadOnlyTenantDiscriminatorColumn2_3> getTenantDiscriminatorColumnComposite(PageBook pageBook) { + if (this.tenantDiscriminatorColumnPane == null) { + this.tenantDiscriminatorColumnPane = this.buildTenantDiscriminatorColumnComposite(pageBook); + } + return this.tenantDiscriminatorColumnPane; + } + protected Pane<ReadOnlyTenantDiscriminatorColumn2_3> buildTenantDiscriminatorColumnComposite(PageBook pageBook) { return new TenantDiscriminatorColumnComposite( this, - this.tenantDiscriminatorColumnHolder, + this.selectedTenantDiscriminatorColumnModel, pageBook ); } private void installPaneSwitcher(PageBook pageBook) { - new ControlSwitcher(this.tenantDiscriminatorColumnHolder, this.tenantDiscriminatorColumnPane.getControl(), pageBook); + new ControlSwitcher(this.selectedTenantDiscriminatorColumnModel, buildPaneTransformer(pageBook), pageBook); + } + + private Transformer<ReadOnlyTenantDiscriminatorColumn2_3, Control> buildPaneTransformer(final PageBook pageBook) { + return new Transformer<ReadOnlyTenantDiscriminatorColumn2_3, Control>() { + public Control transform(ReadOnlyTenantDiscriminatorColumn2_3 column) { + if (column == null) { + return null; + } + return getTenantDiscriminatorColumnComposite(pageBook).getControl(); + } + }; } String buildTenantDiscriminatorColumnLabel(ReadOnlyTenantDiscriminatorColumn2_3 tenantDiscriminatorColumn) { @@ -155,11 +180,11 @@ public class TenantDiscriminatorColumnsComposite<T extends JpaNode> extends Pane return tenantDiscriminatorColumn.getName(); } - private Adapter buildTenantDiscriminatorColumnsAdapter() { - return new AbstractAdapter() { + private Adapter<ReadOnlyTenantDiscriminatorColumn2_3> buildTenantDiscriminatorColumnsAdapter() { + return new AbstractAdapter<ReadOnlyTenantDiscriminatorColumn2_3>() { - public void addNewItem(ObjectListSelectionModel listSelectionModel) { - TenantDiscriminatorColumnsComposite.this.tenantDiscriminatorColumnsEditor.addTenantDiscriminatorColumn(getSubject()); + public ReadOnlyTenantDiscriminatorColumn2_3 addNewItem() { + return TenantDiscriminatorColumnsComposite.this.tenantDiscriminatorColumnsEditor.addTenantDiscriminatorColumn(getSubject()); } @Override @@ -167,8 +192,14 @@ public class TenantDiscriminatorColumnsComposite<T extends JpaNode> extends Pane return false; } - public void removeSelectedItems(ObjectListSelectionModel listSelectionModel) { - TenantDiscriminatorColumnsComposite.this.tenantDiscriminatorColumnsEditor.removeTenantDiscriminatorColumns(getSubject(), listSelectionModel.selectedIndices()); + @Override + public PropertyValueModel<Boolean> buildRemoveButtonEnabledModel(CollectionValueModel<ReadOnlyTenantDiscriminatorColumn2_3> selectedItemsModel) { + return buildSingleSelectedItemEnabledModel(selectedItemsModel); + } + + public void removeSelectedItems(CollectionValueModel<ReadOnlyTenantDiscriminatorColumn2_3> selectedItemsModel) { + TenantDiscriminatorColumn2_3 column = (TenantDiscriminatorColumn2_3) selectedItemsModel.iterator().next(); + TenantDiscriminatorColumnsComposite.this.tenantDiscriminatorColumnsEditor.removeTenantDiscriminatorColumn(getSubject(), column); } }; } @@ -223,20 +254,6 @@ public class TenantDiscriminatorColumnsComposite<T extends JpaNode> extends Pane }; } - public void installListPaneEnabler(PropertyValueModel<Boolean> paneEnablerHolder) { - new PaneEnabler(paneEnablerHolder, this.listPane); - } - - @Override - public void enableWidgets(boolean enabled) { - super.enableWidgets(enabled); - this.listPane.enableWidgets(enabled); - } - - public void setSelectedTenantDiscriminatorColumn(ReadOnlyTenantDiscriminatorColumn2_3 tenantDiscriminatorColumn) { - this.listPane.setSelectedItem(tenantDiscriminatorColumn); - } - /** * The editor is used to complete the behavior of this pane. */ @@ -245,7 +262,7 @@ public class TenantDiscriminatorColumnsComposite<T extends JpaNode> extends Pane /** * Add a tenant discriminator column to the given subject */ - void addTenantDiscriminatorColumn(T subject); + ReadOnlyTenantDiscriminatorColumn2_3 addTenantDiscriminatorColumn(T subject); /** * Return whether the subject has specified tenant discriminator columns @@ -283,8 +300,8 @@ public class TenantDiscriminatorColumnsComposite<T extends JpaNode> extends Pane String getDefaultTenantDiscriminatorsListPropertyName(); /** - * Remove the tenant discriminator columns at the specified indices from the subject + * Remove the tenant discriminator column from the subject */ - void removeTenantDiscriminatorColumns(T subject, int[] selectedIndices); + void removeTenantDiscriminatorColumn(T subject, ReadOnlyTenantDiscriminatorColumn2_3 column); } }
\ No newline at end of file diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/AbstractJavaEclipseLinkEmbeddableComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/AbstractJavaEclipseLinkEmbeddableComposite.java index 5c414a5f90..7ef374eae1 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/AbstractJavaEclipseLinkEmbeddableComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/AbstractJavaEclipseLinkEmbeddableComposite.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2007, 2011 Oracle. All rights reserved. + * Copyright (c) 2007, 2012 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. @@ -22,7 +22,13 @@ import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkUiDetailsM import org.eclipse.jpt.jpa.ui.details.JpaComposite; import org.eclipse.jpt.jpa.ui.details.java.JavaUiFactory; import org.eclipse.jpt.jpa.ui.internal.details.AbstractEmbeddableComposite; +import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.ui.forms.events.ExpansionAdapter; +import org.eclipse.ui.forms.events.ExpansionEvent; +import org.eclipse.ui.forms.widgets.ExpandableComposite; +import org.eclipse.ui.forms.widgets.Section; /** * This pane does not have any widgets. @@ -58,16 +64,22 @@ public abstract class AbstractJavaEclipseLinkEmbeddableComposite extends Abstrac } protected void initializeConvertersCollapsibleSection(Composite container) { + final Section section = this.getWidgetFactory().createSection(container, ExpandableComposite.TITLE_BAR | ExpandableComposite.TWISTIE); + section.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + section.setText(EclipseLinkUiDetailsMessages.EclipseLinkTypeMappingComposite_converters); - container = addCollapsibleSection( - container, - EclipseLinkUiDetailsMessages.EclipseLinkTypeMappingComposite_converters - ); - initializeConvertersSection(container, this.buildConverterHolderValueModel()); + section.addExpansionListener(new ExpansionAdapter() { + @Override + public void expansionStateChanging(ExpansionEvent e) { + if (e.getState() && section.getClient() == null) { + section.setClient(initializeConvertersSection(section)); + } + } + }); } - protected void initializeConvertersSection(Composite container, PropertyValueModel<JavaEclipseLinkConverterContainer> converterHolder) { - new EclipseLinkConvertersComposite(this, converterHolder, container); + protected Control initializeConvertersSection(Composite container) { + return new EclipseLinkConvertersComposite(this, this.buildConverterHolderValueModel(), container).getControl(); } protected PropertyValueModel<JavaEclipseLinkConverterContainer> buildConverterHolderValueModel() { @@ -78,8 +90,23 @@ public abstract class AbstractJavaEclipseLinkEmbeddableComposite extends Abstrac } }; } - + protected void initializeAdvancedCollapsibleSection(Composite container) { - new EclipseLinkEmbeddableAdvancedComposite(this, container); + final Section section = this.getWidgetFactory().createSection(container, ExpandableComposite.TITLE_BAR | ExpandableComposite.TWISTIE); + section.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + section.setText(EclipseLinkUiDetailsMessages.EclipseLinkTypeMappingComposite_advanced); + + section.addExpansionListener(new ExpansionAdapter() { + @Override + public void expansionStateChanging(ExpansionEvent e) { + if (e.getState() && section.getClient() == null) { + section.setClient(initializeAdvancedSection(section)); + } + } + }); + } + + protected Control initializeAdvancedSection(Composite container) { + return new EclipseLinkEmbeddableAdvancedComposite(this, container).getControl(); } }
\ No newline at end of file diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/AbstractJavaEclipseLinkEntity2_xComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/AbstractJavaEclipseLinkEntity2_xComposite.java index ba5b700720..8f10127fb7 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/AbstractJavaEclipseLinkEntity2_xComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/AbstractJavaEclipseLinkEntity2_xComposite.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2011 Oracle. All rights reserved. + * Copyright (c) 2011, 2012 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. @@ -13,19 +13,21 @@ import org.eclipse.jpt.common.ui.WidgetFactory; import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter; import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; import org.eclipse.jpt.jpa.core.context.AccessHolder; -import org.eclipse.jpt.jpa.core.context.GeneratorContainer; -import org.eclipse.jpt.jpa.core.context.QueryContainer; import org.eclipse.jpt.jpa.core.context.java.JavaEntity; -import org.eclipse.jpt.jpa.eclipselink.core.context.java.JavaEclipseLinkCaching; import org.eclipse.jpt.jpa.eclipselink.core.context.java.JavaEclipseLinkEntity; -import org.eclipse.jpt.jpa.ui.internal.details.AccessTypeComposite; -import org.eclipse.jpt.jpa.ui.internal.details.EntityNameComposite; -import org.eclipse.jpt.jpa.ui.internal.details.IdClassComposite; +import org.eclipse.jpt.jpa.ui.internal.JptUiMessages; +import org.eclipse.jpt.jpa.ui.internal.details.AccessTypeComboViewer; +import org.eclipse.jpt.jpa.ui.internal.details.EntityNameCombo; +import org.eclipse.jpt.jpa.ui.internal.details.IdClassChooser; +import org.eclipse.jpt.jpa.ui.internal.details.JptUiDetailsMessages; import org.eclipse.jpt.jpa.ui.internal.details.TableComposite; import org.eclipse.jpt.jpa.ui.internal.jpa2.details.Entity2_0OverridesComposite; import org.eclipse.jpt.jpa.ui.internal.jpa2.details.Generation2_0Composite; import org.eclipse.jpt.jpa.ui.internal.jpa2.details.Queries2_0Composite; +import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.ui.forms.widgets.Hyperlink; /** * The pane used for an EclipseLink 2.x Java entity. @@ -55,11 +57,28 @@ public abstract class AbstractJavaEclipseLinkEntity2_xComposite } @Override - protected void initializeEntitySection(Composite container) { - new TableComposite(this, container); - new EntityNameComposite(this, container); - new AccessTypeComposite(this, buildAccessHolder(), container); - new IdClassComposite(this, buildIdClassReferenceHolder(), container); + protected Control initializeEntitySection(Composite container) { + container = this.addSubPane(container, 2, 0, 0, 0, 0); + + // Table widgets + TableComposite tableComposite = new TableComposite(this, container); + GridData gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.horizontalSpan = 2; + tableComposite.getControl().setLayoutData(gridData); + + // Entity name widgets + this.addLabel(container, JptUiDetailsMessages.EntityNameComposite_name); + new EntityNameCombo(this, container); + + // Access type widgets + this.addLabel(container, JptUiMessages.AccessTypeComposite_access); + new AccessTypeComboViewer(this, this.buildAccessHolder(), container); + + // Id class widgets + Hyperlink hyperlink = this.addHyperlink(container,JptUiDetailsMessages.IdClassComposite_label); + new IdClassChooser(this, this.buildIdClassReferenceHolder(), container, hyperlink); + + return container; } protected PropertyValueModel<AccessHolder> buildAccessHolder() { @@ -72,22 +91,22 @@ public abstract class AbstractJavaEclipseLinkEntity2_xComposite } @Override - protected void initializeAttributeOverridesSection(Composite container) { - new Entity2_0OverridesComposite(this, container); + protected Control initializeAttributeOverridesSection(Composite container) { + return new Entity2_0OverridesComposite(this, container).getControl(); } @Override - protected void initializeGeneratorsSection(Composite container, PropertyValueModel<GeneratorContainer> generatorContainerHolder) { - new Generation2_0Composite(this, generatorContainerHolder, container); + protected Control initializeGeneratorsSection(Composite container) { + return new Generation2_0Composite(this, this.buildGeneratorContainerHolder(), container).getControl(); } @Override - protected void initializeCachingSection(Composite container, PropertyValueModel<JavaEclipseLinkCaching> cachingHolder) { - new JavaEclipseLinkCaching2_0Composite(this, cachingHolder, container); + protected Control initializeCachingSection(Composite container) { + return new JavaEclipseLinkCaching2_0Composite(this, this.buildCachingHolder(), container).getControl(); } @Override - protected void initializeQueriesSection(Composite container, PropertyValueModel<QueryContainer> queryContainerHolder) { - new Queries2_0Composite(this, queryContainerHolder, container); + protected Control initializeQueriesSection(Composite container) { + return new Queries2_0Composite(this, this.buildQueryContainerHolder(), container).getControl(); } } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/AbstractJavaEclipseLinkEntityComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/AbstractJavaEclipseLinkEntityComposite.java index 9cc6bb1f26..48a61c5818 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/AbstractJavaEclipseLinkEntityComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/AbstractJavaEclipseLinkEntityComposite.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2008, 2011 Oracle. All rights reserved. + * Copyright (c) 2008, 2012 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. @@ -17,12 +17,18 @@ import org.eclipse.jpt.jpa.eclipselink.core.context.java.JavaEclipseLinkCaching; import org.eclipse.jpt.jpa.eclipselink.core.context.java.JavaEclipseLinkConverterContainer; import org.eclipse.jpt.jpa.eclipselink.core.context.java.JavaEclipseLinkEntity; import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkConvertersComposite; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkEntityAdvancedComposite; +import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkNonEmbeddableTypeMappingAdvancedComposite; import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkUiDetailsMessages; import org.eclipse.jpt.jpa.ui.internal.details.AbstractEntityComposite; import org.eclipse.jpt.jpa.ui.internal.details.java.JavaInheritanceComposite; import org.eclipse.jpt.jpa.ui.internal.details.java.JavaSecondaryTablesComposite; +import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.ui.forms.events.ExpansionAdapter; +import org.eclipse.ui.forms.events.ExpansionEvent; +import org.eclipse.ui.forms.widgets.ExpandableComposite; +import org.eclipse.ui.forms.widgets.Section; /** * The pane used for an EclipseLink Java entity. @@ -55,7 +61,7 @@ public abstract class AbstractJavaEclipseLinkEntityComposite<T extends JavaEntit @Override protected void initializeLayout(Composite container) { this.initializeEntityCollapsibleSection(container); - this.initializeCachingCollapsibleSectionPane(container); + this.initializeCachingCollapsibleSection(container); this.initializeQueriesCollapsibleSection(container); this.initializeInheritanceCollapsibleSection(container); this.initializeAttributeOverridesCollapsibleSection(container); @@ -64,19 +70,27 @@ public abstract class AbstractJavaEclipseLinkEntityComposite<T extends JavaEntit this.initializeSecondaryTablesCollapsibleSection(container); this.initializeAdvancedCollapsibleSection(container); } - - protected void initializeCachingCollapsibleSectionPane(Composite container) { - container = addCollapsibleSection( - container, - EclipseLinkUiDetailsMessages.EclipseLinkTypeMappingComposite_caching); - initializeCachingSection(container, buildCachingHolder()); + + protected void initializeCachingCollapsibleSection(Composite container) { + final Section section = this.getWidgetFactory().createSection(container, ExpandableComposite.TITLE_BAR | ExpandableComposite.TWISTIE); + section.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + section.setText(EclipseLinkUiDetailsMessages.EclipseLinkTypeMappingComposite_caching); + + section.addExpansionListener(new ExpansionAdapter() { + @Override + public void expansionStateChanging(ExpansionEvent e) { + if (e.getState() && section.getClient() == null) { + section.setClient(initializeCachingSection(section)); + } + } + }); } - protected void initializeCachingSection(Composite container, PropertyValueModel<JavaEclipseLinkCaching> cachingHolder) { - new JavaEclipseLinkCachingComposite(this, cachingHolder, container); + protected Control initializeCachingSection(Composite container) { + return new JavaEclipseLinkCachingComposite(this, buildCachingHolder(), container).getControl(); } - private PropertyAspectAdapter<JavaEntity, JavaEclipseLinkCaching> buildCachingHolder() { + protected PropertyAspectAdapter<JavaEntity, JavaEclipseLinkCaching> buildCachingHolder() { return new PropertyAspectAdapter<JavaEntity, JavaEclipseLinkCaching>(getSubjectHolder()) { @Override protected JavaEclipseLinkCaching buildValue_() { @@ -84,19 +98,27 @@ public abstract class AbstractJavaEclipseLinkEntityComposite<T extends JavaEntit } }; } - + protected void initializeConvertersCollapsibleSection(Composite container) { - container = addCollapsibleSection( - container, - EclipseLinkUiDetailsMessages.EclipseLinkTypeMappingComposite_converters); - this.initializeConvertersSection(container, buildConverterHolderValueModel()); + final Section section = this.getWidgetFactory().createSection(container, ExpandableComposite.TITLE_BAR | ExpandableComposite.TWISTIE); + section.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + section.setText(EclipseLinkUiDetailsMessages.EclipseLinkTypeMappingComposite_converters); + + section.addExpansionListener(new ExpansionAdapter() { + @Override + public void expansionStateChanging(ExpansionEvent e) { + if (e.getState() && section.getClient() == null) { + section.setClient(initializeConvertersSection(section)); + } + } + }); } - - protected void initializeConvertersSection(Composite container, PropertyValueModel<JavaEclipseLinkConverterContainer> converterHolder) { - new EclipseLinkConvertersComposite(this, converterHolder, container); + + protected Control initializeConvertersSection(Composite container) { + return new EclipseLinkConvertersComposite(this, this.buildConverterContainerModel(), container).getControl(); } - private PropertyValueModel<JavaEclipseLinkConverterContainer> buildConverterHolderValueModel() { + private PropertyValueModel<JavaEclipseLinkConverterContainer> buildConverterContainerModel() { return new PropertyAspectAdapter<JavaEntity, JavaEclipseLinkConverterContainer>(getSubjectHolder()) { @Override protected JavaEclipseLinkConverterContainer buildValue_() { @@ -106,16 +128,31 @@ public abstract class AbstractJavaEclipseLinkEntityComposite<T extends JavaEntit } @Override - protected void initializeSecondaryTablesSection(Composite container) { - new JavaSecondaryTablesComposite(this, container); + protected Control initializeSecondaryTablesSection(Composite container) { + return new JavaSecondaryTablesComposite(this, container).getControl(); } @Override - protected void initializeInheritanceSection(Composite container) { - new JavaInheritanceComposite(this, container); + protected Control initializeInheritanceSection(Composite container) { + return new JavaInheritanceComposite(this, container).getControl(); } protected void initializeAdvancedCollapsibleSection(Composite container) { - new EclipseLinkEntityAdvancedComposite(this, container); + final Section section = this.getWidgetFactory().createSection(container, ExpandableComposite.TITLE_BAR | ExpandableComposite.TWISTIE); + section.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + section.setText(EclipseLinkUiDetailsMessages.EclipseLinkTypeMappingComposite_advanced); + + section.addExpansionListener(new ExpansionAdapter() { + @Override + public void expansionStateChanging(ExpansionEvent e) { + if (e.getState() && section.getClient() == null) { + section.setClient(initializeAdvancedSection(section)); + } + } + }); + } + + protected Control initializeAdvancedSection(Composite container) { + return new EclipseLinkNonEmbeddableTypeMappingAdvancedComposite(this, container).getControl(); } } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/AbstractJavaEclipseLinkMappedSuperclassComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/AbstractJavaEclipseLinkMappedSuperclassComposite.java index 68e4528d67..3bbd2ab487 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/AbstractJavaEclipseLinkMappedSuperclassComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/AbstractJavaEclipseLinkMappedSuperclassComposite.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2008, 2011 Oracle. All rights reserved. + * Copyright (c) 2008, 2012 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. @@ -18,11 +18,17 @@ import org.eclipse.jpt.jpa.eclipselink.core.context.java.JavaEclipseLinkCaching; import org.eclipse.jpt.jpa.eclipselink.core.context.java.JavaEclipseLinkConverterContainer; import org.eclipse.jpt.jpa.eclipselink.core.context.java.JavaEclipseLinkMappedSuperclass; import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkConvertersComposite; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkMappedSuperclassAdvancedComposite; +import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkNonEmbeddableTypeMappingAdvancedComposite; import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkUiDetailsMessages; import org.eclipse.jpt.jpa.ui.details.JpaComposite; import org.eclipse.jpt.jpa.ui.internal.details.AbstractJavaMappedSuperclassComposite; +import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.ui.forms.events.ExpansionAdapter; +import org.eclipse.ui.forms.events.ExpansionEvent; +import org.eclipse.ui.forms.widgets.ExpandableComposite; +import org.eclipse.ui.forms.widgets.Section; /** * The pane used for an EclipseLink Java Mapped Superclass. @@ -62,19 +68,26 @@ public abstract class AbstractJavaEclipseLinkMappedSuperclassComposite this.initializeAdvancedCollapsibleSection(container); } - protected void initializeCachingCollapsibleSection(Composite container) { - container = addCollapsibleSection( - container, - EclipseLinkUiDetailsMessages.EclipseLinkTypeMappingComposite_caching); - this.initializeCachingSection(container, buildCachingHolder()); + final Section section = this.getWidgetFactory().createSection(container, ExpandableComposite.TITLE_BAR | ExpandableComposite.TWISTIE); + section.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + section.setText(EclipseLinkUiDetailsMessages.EclipseLinkTypeMappingComposite_caching); + + section.addExpansionListener(new ExpansionAdapter() { + @Override + public void expansionStateChanging(ExpansionEvent e) { + if (e.getState() && section.getClient() == null) { + section.setClient(initializeCachingSection(section)); + } + } + }); } - protected void initializeCachingSection(Composite container, PropertyValueModel<JavaEclipseLinkCaching> cachingHolder) { - new JavaEclipseLinkCachingComposite(this, cachingHolder, container); + protected Control initializeCachingSection(Composite container) { + return new JavaEclipseLinkCachingComposite(this, buildCachingHolder(), container).getControl(); } - private PropertyAspectAdapter<JavaMappedSuperclass, JavaEclipseLinkCaching> buildCachingHolder() { + protected PropertyAspectAdapter<JavaMappedSuperclass, JavaEclipseLinkCaching> buildCachingHolder() { return new PropertyAspectAdapter<JavaMappedSuperclass, JavaEclipseLinkCaching>(getSubjectHolder()) { @Override protected JavaEclipseLinkCaching buildValue_() { @@ -82,14 +95,26 @@ public abstract class AbstractJavaEclipseLinkMappedSuperclassComposite } }; } - + protected void initializeConvertersCollapsibleSection(Composite container) { - container = addCollapsibleSection( - container, - EclipseLinkUiDetailsMessages.EclipseLinkTypeMappingComposite_converters); - this.initializeConvertersSection(container, buildConverterHolderValueModel()); + final Section section = this.getWidgetFactory().createSection(container, ExpandableComposite.TITLE_BAR | ExpandableComposite.TWISTIE); + section.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + section.setText(EclipseLinkUiDetailsMessages.EclipseLinkTypeMappingComposite_converters); + + section.addExpansionListener(new ExpansionAdapter() { + @Override + public void expansionStateChanging(ExpansionEvent e) { + if (e.getState() && section.getClient() == null) { + section.setClient(initializeConvertersSection(section)); + } + } + }); } - + + protected Control initializeConvertersSection(Composite container) { + return new EclipseLinkConvertersComposite(this, this.buildConverterHolderValueModel(), container).getControl(); + } + private PropertyValueModel<JavaEclipseLinkConverterContainer> buildConverterHolderValueModel() { return new PropertyAspectAdapter<JavaMappedSuperclass, JavaEclipseLinkConverterContainer>(getSubjectHolder()) { @Override @@ -99,11 +124,22 @@ public abstract class AbstractJavaEclipseLinkMappedSuperclassComposite }; } - protected void initializeConvertersSection(Composite container, PropertyValueModel<JavaEclipseLinkConverterContainer> converterHolder) { - new EclipseLinkConvertersComposite(this, converterHolder, container); + protected void initializeAdvancedCollapsibleSection(Composite container) { + final Section section = this.getWidgetFactory().createSection(container, ExpandableComposite.TITLE_BAR | ExpandableComposite.TWISTIE); + section.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + section.setText(EclipseLinkUiDetailsMessages.EclipseLinkTypeMappingComposite_advanced); + + section.addExpansionListener(new ExpansionAdapter() { + @Override + public void expansionStateChanging(ExpansionEvent e) { + if (e.getState() && section.getClient() == null) { + section.setClient(initializeAdvancedSection(section)); + } + } + }); } - protected void initializeAdvancedCollapsibleSection(Composite container) { - new EclipseLinkMappedSuperclassAdvancedComposite(this, container); + protected Control initializeAdvancedSection(Composite container) { + return new EclipseLinkNonEmbeddableTypeMappingAdvancedComposite(this, container).getControl(); } } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/DefaultJavaEclipseLinkOneToManyMappingUiDefinition.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/DefaultJavaEclipseLinkOneToManyMappingUiDefinition.java index 4db8ddceba..0a99951a98 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/DefaultJavaEclipseLinkOneToManyMappingUiDefinition.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/DefaultJavaEclipseLinkOneToManyMappingUiDefinition.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2008, 2009 Oracle. All rights reserved. + * Copyright (c) 2008, 2012 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. @@ -75,9 +75,10 @@ public class DefaultJavaEclipseLinkOneToManyMappingUiDefinition public JpaComposite buildAttributeMappingComposite( JavaUiFactory factory, PropertyValueModel<JavaOneToManyMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory) { - return factory.createJavaOneToManyMappingComposite(subjectHolder, parent, widgetFactory); + return factory.createJavaOneToManyMappingComposite(subjectHolder, enabledModel, parent, widgetFactory); } } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/DefaultJavaEclipseLinkOneToOneMappingUiDefinition.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/DefaultJavaEclipseLinkOneToOneMappingUiDefinition.java index c89858c9c5..e29c0a2ff8 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/DefaultJavaEclipseLinkOneToOneMappingUiDefinition.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/DefaultJavaEclipseLinkOneToOneMappingUiDefinition.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2008, 2009 Oracle. All rights reserved. + * Copyright (c) 2008, 2012 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. @@ -75,9 +75,10 @@ public class DefaultJavaEclipseLinkOneToOneMappingUiDefinition public JpaComposite buildAttributeMappingComposite( JavaUiFactory factory, PropertyValueModel<JavaOneToOneMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory) { - return factory.createJavaOneToOneMappingComposite(subjectHolder, parent, widgetFactory); + return factory.createJavaOneToOneMappingComposite(subjectHolder, enabledModel, parent, widgetFactory); } } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/DefaultJavaEclipseLinkVariableOneToOneMappingUiDefinition.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/DefaultJavaEclipseLinkVariableOneToOneMappingUiDefinition.java index 094b261aee..573a937a64 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/DefaultJavaEclipseLinkVariableOneToOneMappingUiDefinition.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/DefaultJavaEclipseLinkVariableOneToOneMappingUiDefinition.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2009, 2011 Oracle. All rights reserved. + * Copyright (c) 2009, 2012 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. @@ -71,8 +71,9 @@ public class DefaultJavaEclipseLinkVariableOneToOneMappingUiDefinition public JpaComposite buildAttributeMappingComposite( JavaUiFactory factory, PropertyValueModel<EclipseLinkVariableOneToOneMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory) { - return new EclipseLinkVariableOneToOneMappingComposite(subjectHolder, parent, widgetFactory); + return new EclipseLinkVariableOneToOneMappingComposite(subjectHolder, enabledModel, parent, widgetFactory); } } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/EclipseLink2_0JavaUiFactory.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/EclipseLink2_0JavaUiFactory.java index 84d2fe97dc..37485996ed 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/EclipseLink2_0JavaUiFactory.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/EclipseLink2_0JavaUiFactory.java @@ -1,5 +1,5 @@ /******************************************************************************* -* Copyright (c) 2009, 2011 Oracle. All rights reserved. +* Copyright (c) 2009, 2012 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. @@ -59,56 +59,63 @@ public class EclipseLink2_0JavaUiFactory @Override public JpaComposite createJavaIdMappingComposite( PropertyValueModel<JavaIdMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory) { - return new JavaEclipseLinkIdMapping2_0Composite(subjectHolder, parent, widgetFactory); + return new JavaEclipseLinkIdMapping2_0Composite(subjectHolder, enabledModel, parent, widgetFactory); } @Override public JpaComposite createJavaEmbeddedIdMappingComposite( PropertyValueModel<JavaEmbeddedIdMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory) { - return new EmbeddedIdMapping2_0Composite(subjectHolder, parent, widgetFactory); + return new EmbeddedIdMapping2_0Composite(subjectHolder, enabledModel, parent, widgetFactory); } public JpaComposite createJavaElementCollectionMapping2_0Composite( PropertyValueModel<JavaElementCollectionMapping2_0> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory) { - return new JavaEclipseLinkElementCollectionMapping2_0Composite(subjectHolder, parent, widgetFactory); + return new JavaEclipseLinkElementCollectionMapping2_0Composite(subjectHolder, enabledModel, parent, widgetFactory); } @Override public JpaComposite createJavaOneToManyMappingComposite( PropertyValueModel<JavaOneToManyMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory) { - return new JavaEclipseLinkOneToManyMapping2_0Composite(subjectHolder, parent, widgetFactory); + return new JavaEclipseLinkOneToManyMapping2_0Composite(subjectHolder, enabledModel, parent, widgetFactory); } @Override public JpaComposite createJavaOneToOneMappingComposite( PropertyValueModel<JavaOneToOneMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory) { - return new JavaEclipseLinkOneToOneMapping2_0Composite(subjectHolder, parent, widgetFactory); + return new JavaEclipseLinkOneToOneMapping2_0Composite(subjectHolder, enabledModel, parent, widgetFactory); } @Override public JpaComposite createJavaManyToOneMappingComposite( PropertyValueModel<JavaManyToOneMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory) { - return new JavaEclipseLinkManyToOneMapping2_0Composite(subjectHolder, parent, widgetFactory); + return new JavaEclipseLinkManyToOneMapping2_0Composite(subjectHolder, enabledModel, parent, widgetFactory); } @Override public JpaComposite createJavaManyToManyMappingComposite( PropertyValueModel<JavaManyToManyMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory) { - return new JavaEclipseLinkManyToManyMapping2_0Composite(subjectHolder, parent, widgetFactory); + return new JavaEclipseLinkManyToManyMapping2_0Composite(subjectHolder, enabledModel, parent, widgetFactory); } } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/EclipseLinkJavaUiFactory.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/EclipseLinkJavaUiFactory.java index f867821a66..a37e75d94f 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/EclipseLinkJavaUiFactory.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/EclipseLinkJavaUiFactory.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2008, 2011 Oracle. All rights reserved. + * Copyright (c) 2008, 2012 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. @@ -72,85 +72,96 @@ public class EclipseLinkJavaUiFactory extends BaseJavaUiFactory @Override public JpaComposite createJavaIdMappingComposite( PropertyValueModel<JavaIdMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory) { - return new JavaEclipseLinkIdMappingComposite(subjectHolder, parent, widgetFactory); + return new JavaEclipseLinkIdMappingComposite(subjectHolder, enabledModel, parent, widgetFactory); } @Override public JpaComposite createJavaBasicMappingComposite( PropertyValueModel<JavaBasicMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory) { - return new JavaEclipseLinkBasicMappingComposite(subjectHolder, parent, widgetFactory); + return new JavaEclipseLinkBasicMappingComposite(subjectHolder, enabledModel, parent, widgetFactory); } @Override public JpaComposite createJavaVersionMappingComposite( PropertyValueModel<JavaVersionMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory) { - return new JavaEclipseLinkVersionMappingComposite(subjectHolder, parent, widgetFactory); + return new JavaEclipseLinkVersionMappingComposite(subjectHolder, enabledModel, parent, widgetFactory); } @Override public JpaComposite createJavaManyToOneMappingComposite( PropertyValueModel<JavaManyToOneMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory) { - return new EclipseLinkManyToOneMappingComposite(subjectHolder, parent, widgetFactory); + return new EclipseLinkManyToOneMappingComposite(subjectHolder, enabledModel, parent, widgetFactory); } @Override public JpaComposite createJavaOneToManyMappingComposite( PropertyValueModel<JavaOneToManyMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory) { - return new EclipseLinkOneToManyMappingComposite(subjectHolder, parent, widgetFactory); + return new EclipseLinkOneToManyMappingComposite(subjectHolder, enabledModel, parent, widgetFactory); } @Override public JpaComposite createJavaOneToOneMappingComposite( PropertyValueModel<JavaOneToOneMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory) { - return new EclipseLinkOneToOneMappingComposite(subjectHolder, parent, widgetFactory); + return new EclipseLinkOneToOneMappingComposite(subjectHolder, enabledModel, parent, widgetFactory); } @Override public JpaComposite createJavaManyToManyMappingComposite( PropertyValueModel<JavaManyToManyMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory) { - return new EclipseLinkManyToManyMappingComposite(subjectHolder, parent, widgetFactory); + return new EclipseLinkManyToManyMappingComposite(subjectHolder, enabledModel, parent, widgetFactory); } public JpaComposite createJavaEclipseLinkBasicMapMappingComposite( PropertyValueModel<EclipseLinkBasicMapMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory) { - return new EclipseLinkBasicMapMappingComposite(subjectHolder, parent, widgetFactory); + return new EclipseLinkBasicMapMappingComposite(subjectHolder, enabledModel, parent, widgetFactory); } public JpaComposite createJavaEclipseLinkBasicCollectionMappingComposite( PropertyValueModel<EclipseLinkBasicCollectionMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory) { - return new EclipseLinkBasicCollectionMappingComposite(subjectHolder, parent, widgetFactory); + return new EclipseLinkBasicCollectionMappingComposite(subjectHolder, enabledModel, parent, widgetFactory); } public JpaComposite createJavaEclipseLinkVariableOneToOneMappingComposite( PropertyValueModel<EclipseLinkVariableOneToOneMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory) { - return new EclipseLinkVariableOneToOneMappingComposite(subjectHolder, parent, widgetFactory); + return new EclipseLinkVariableOneToOneMappingComposite(subjectHolder, enabledModel, parent, widgetFactory); } public JpaComposite createJavaEclipseLinkTransformationMappingComposite( PropertyValueModel<EclipseLinkTransformationMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory) { - return new EclipseLinkTransformationMappingComposite(subjectHolder, parent, widgetFactory); + return new EclipseLinkTransformationMappingComposite(subjectHolder, enabledModel, parent, widgetFactory); } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/JavaEclipseLinkArrayMapping2_3UiDefinition.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/JavaEclipseLinkArrayMapping2_3UiDefinition.java index 91ef3e112e..158ee1caab 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/JavaEclipseLinkArrayMapping2_3UiDefinition.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/JavaEclipseLinkArrayMapping2_3UiDefinition.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2011 Oracle. All rights reserved. + * Copyright (c) 2011, 2012 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. @@ -48,9 +48,10 @@ public class JavaEclipseLinkArrayMapping2_3UiDefinition public JpaComposite buildAttributeMappingComposite( JavaUiFactory factory, PropertyValueModel<EclipseLinkArrayMapping2_3> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory) { - return new EclipseLinkArrayMapping2_3Composite(subjectHolder, parent, widgetFactory); + return new EclipseLinkArrayMapping2_3Composite(subjectHolder, enabledModel, parent, widgetFactory); } } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/JavaEclipseLinkBasicCollectionMappingUiDefinition.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/JavaEclipseLinkBasicCollectionMappingUiDefinition.java index 6315dca2da..9f82c7169a 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/JavaEclipseLinkBasicCollectionMappingUiDefinition.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/JavaEclipseLinkBasicCollectionMappingUiDefinition.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2009 Oracle. All rights reserved. + * Copyright (c) 2009, 2012 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. @@ -48,9 +48,10 @@ public class JavaEclipseLinkBasicCollectionMappingUiDefinition public JpaComposite buildAttributeMappingComposite( JavaUiFactory factory, PropertyValueModel<EclipseLinkBasicCollectionMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory) { - return new EclipseLinkBasicCollectionMappingComposite(subjectHolder, parent, widgetFactory); + return new EclipseLinkBasicCollectionMappingComposite(subjectHolder, enabledModel, parent, widgetFactory); } } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/JavaEclipseLinkBasicMapMappingUiDefinition.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/JavaEclipseLinkBasicMapMappingUiDefinition.java index 58922cced3..5d4e91baa0 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/JavaEclipseLinkBasicMapMappingUiDefinition.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/JavaEclipseLinkBasicMapMappingUiDefinition.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2009 Oracle. All rights reserved. + * Copyright (c) 2009, 2012 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. @@ -48,9 +48,10 @@ public class JavaEclipseLinkBasicMapMappingUiDefinition public JpaComposite buildAttributeMappingComposite( JavaUiFactory factory, PropertyValueModel<EclipseLinkBasicMapMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory) { - return new EclipseLinkBasicMapMappingComposite(subjectHolder, parent, widgetFactory); + return new EclipseLinkBasicMapMappingComposite(subjectHolder, enabledModel, parent, widgetFactory); } } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/JavaEclipseLinkBasicMappingComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/JavaEclipseLinkBasicMappingComposite.java index f96456654a..cdc8e748ab 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/JavaEclipseLinkBasicMappingComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/JavaEclipseLinkBasicMappingComposite.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2011 Oracle. All rights reserved. + * Copyright (c) 2011, 2012 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. @@ -13,7 +13,14 @@ import org.eclipse.jpt.common.ui.WidgetFactory; import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; import org.eclipse.jpt.jpa.core.context.BasicMapping; import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkBasicMappingComposite; +import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkMutableTriStateCheckBox; +import org.eclipse.jpt.jpa.ui.internal.details.ColumnComposite; +import org.eclipse.jpt.jpa.ui.internal.details.FetchTypeComboViewer; +import org.eclipse.jpt.jpa.ui.internal.details.JptUiDetailsMessages; +import org.eclipse.jpt.jpa.ui.internal.details.OptionalTriStateCheckBox; +import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; public class JavaEclipseLinkBasicMappingComposite extends EclipseLinkBasicMappingComposite<BasicMapping> { @@ -25,10 +32,11 @@ public class JavaEclipseLinkBasicMappingComposite extends EclipseLinkBasicMappin * @param widgetFactory The factory used to create various common widgets */ public JavaEclipseLinkBasicMappingComposite(PropertyValueModel<? extends BasicMapping> subjectHolder, - Composite parent, - WidgetFactory widgetFactory) { + PropertyValueModel<Boolean> enabledModel, + Composite parent, + WidgetFactory widgetFactory) { - super(subjectHolder, parent, widgetFactory); + super(subjectHolder, enabledModel, parent, widgetFactory); } @Override @@ -38,4 +46,33 @@ public class JavaEclipseLinkBasicMappingComposite extends EclipseLinkBasicMappin initializeConvertersCollapsibleSection(container); } + @Override + protected Control initializeBasicSection(Composite container) { + container = this.addSubPane(container, 2, 0, 0, 0, 0); + + // Column widgets + ColumnComposite columnComposite = new ColumnComposite(this, buildColumnHolder(), container); + GridData gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.horizontalSpan = 2; + columnComposite.getControl().setLayoutData(gridData); + + // Fetch type widgets + this.addLabel(container, JptUiDetailsMessages.BasicGeneralSection_fetchLabel); + new FetchTypeComboViewer(this, container); + + // Optional widgets + OptionalTriStateCheckBox optionalCheckBox = new OptionalTriStateCheckBox(this, container); + gridData = new GridData(); + gridData.horizontalSpan = 2; + optionalCheckBox.getControl().setLayoutData(gridData); + + // Mutable widgets + EclipseLinkMutableTriStateCheckBox mutableCheckBox = new EclipseLinkMutableTriStateCheckBox(this, buildMutableHolder(), container); + gridData = new GridData(); + gridData.horizontalSpan = 2; + mutableCheckBox.getControl().setLayoutData(gridData); + + return container; + } + }
\ No newline at end of file diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/JavaEclipseLinkCaching2_0Composite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/JavaEclipseLinkCaching2_0Composite.java index e22419ae34..82bfc926f9 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/JavaEclipseLinkCaching2_0Composite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/JavaEclipseLinkCaching2_0Composite.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2009, 2011 Oracle. All rights reserved. + * Copyright (c) 2009, 2012 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. @@ -10,14 +10,14 @@ package org.eclipse.jpt.jpa.eclipselink.ui.internal.details.java; import org.eclipse.jpt.common.ui.internal.widgets.Pane; +import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter; +import org.eclipse.jpt.common.utility.model.value.ModifiablePropertyValueModel; import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; import org.eclipse.jpt.jpa.eclipselink.core.context.java.JavaEclipseLinkCaching; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkAlwaysRefreshComposite; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkCacheSizeComposite; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkCacheTypeComposite; +import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkCacheSizeCombo; +import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkCacheTypeComboViewer; import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkCaching2_0Composite; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkDisableHitsComposite; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkRefreshOnlyIfNewerComposite; +import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkUiDetailsMessages; import org.eclipse.swt.widgets.Composite; /** @@ -41,8 +41,8 @@ import org.eclipse.swt.widgets.Composite; * @see Entity * @see EclipseLinkCaching * @see JavaEclipseLinkEntityComposite - The parent container - * @see EclipseLinkCacheTypeComposite - * @see EclipseLinkCacheSizeComposite + * @see EclipseLinkCacheTypeComboViewer + * @see EclipseLinkCacheSizeCombo * @see EclipseLinkAlwaysRefreshComposite * @see EclipseLinkRefreshOnlyIfNewerComposite * @see EclipseLinkDisableHitsComposite @@ -61,7 +61,26 @@ public class JavaEclipseLinkCaching2_0Composite extends EclipseLinkCaching2_0Com } @Override - protected void initializeExistenceCheckingComposite(Composite parent) { - new JavaEclipseLinkExistenceCheckingComposite(this, parent); + protected void initializeExistenceCheckingComposite(Composite container) { + this.addCheckBox( + container, + EclipseLinkUiDetailsMessages.EclipseLinkExistenceCheckingComposite_label, + buildExistenceCheckingHolder(), + null); + this.addExistenceCheckingTypeCombo(container); + } + + private ModifiablePropertyValueModel<Boolean> buildExistenceCheckingHolder() { + return new PropertyAspectAdapter<JavaEclipseLinkCaching, Boolean>(getSubjectHolder(), JavaEclipseLinkCaching.EXISTENCE_CHECKING_PROPERTY) { + @Override + protected Boolean buildValue_() { + return Boolean.valueOf(this.subject.isExistenceChecking()); + } + + @Override + protected void setValue_(Boolean value) { + this.subject.setExistenceChecking(value.booleanValue()); + } + }; } }
\ No newline at end of file diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/JavaEclipseLinkCachingComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/JavaEclipseLinkCachingComposite.java index 15514ce19c..65c6363043 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/JavaEclipseLinkCachingComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/JavaEclipseLinkCachingComposite.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2008, 2010 Oracle. All rights reserved. + * Copyright (c) 2008, 2012 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. @@ -10,14 +10,14 @@ package org.eclipse.jpt.jpa.eclipselink.ui.internal.details.java; import org.eclipse.jpt.common.ui.internal.widgets.Pane; +import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter; +import org.eclipse.jpt.common.utility.model.value.ModifiablePropertyValueModel; import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; import org.eclipse.jpt.jpa.eclipselink.core.context.java.JavaEclipseLinkCaching; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkAlwaysRefreshComposite; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkCacheSizeComposite; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkCacheTypeComposite; +import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkCacheSizeCombo; +import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkCacheTypeComboViewer; import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkCachingComposite; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkDisableHitsComposite; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkRefreshOnlyIfNewerComposite; +import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkUiDetailsMessages; import org.eclipse.swt.widgets.Composite; /** @@ -41,8 +41,8 @@ import org.eclipse.swt.widgets.Composite; * @see Entity * @see EclipseLinkCaching2_0 * @see JavaEclipseLinkEntityComposite - The parent container - * @see EclipseLinkCacheTypeComposite - * @see EclipseLinkCacheSizeComposite + * @see EclipseLinkCacheTypeComboViewer + * @see EclipseLinkCacheSizeCombo * @see EclipseLinkAlwaysRefreshComposite * @see EclipseLinkRefreshOnlyIfNewerComposite * @see EclipseLinkDisableHitsComposite @@ -61,7 +61,26 @@ public class JavaEclipseLinkCachingComposite extends EclipseLinkCachingComposite } @Override - protected void initializeExistenceCheckingComposite(Composite parent) { - new JavaEclipseLinkExistenceCheckingComposite(this, parent); + protected void initializeExistenceCheckingComposite(Composite container) { + this.addCheckBox( + container, + EclipseLinkUiDetailsMessages.EclipseLinkExistenceCheckingComposite_label, + buildExistenceCheckingHolder(), + null); + this.addExistenceCheckingTypeCombo(container); + } + + private ModifiablePropertyValueModel<Boolean> buildExistenceCheckingHolder() { + return new PropertyAspectAdapter<JavaEclipseLinkCaching, Boolean>(getSubjectHolder(), JavaEclipseLinkCaching.EXISTENCE_CHECKING_PROPERTY) { + @Override + protected Boolean buildValue_() { + return Boolean.valueOf(this.subject.isExistenceChecking()); + } + + @Override + protected void setValue_(Boolean value) { + this.subject.setExistenceChecking(value.booleanValue()); + } + }; } }
\ No newline at end of file diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/JavaEclipseLinkElementCollectionMapping2_0Composite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/JavaEclipseLinkElementCollectionMapping2_0Composite.java index 8b7db1d49a..032dd69f62 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/JavaEclipseLinkElementCollectionMapping2_0Composite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/JavaEclipseLinkElementCollectionMapping2_0Composite.java @@ -10,7 +10,7 @@ package org.eclipse.jpt.jpa.eclipselink.ui.internal.details.java; import org.eclipse.jpt.common.ui.WidgetFactory; -import org.eclipse.jpt.common.ui.internal.widgets.Pane; +import org.eclipse.jpt.common.utility.internal.model.value.CompositeBooleanPropertyValueModel; import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter; import org.eclipse.jpt.common.utility.internal.model.value.TransformationPropertyValueModel; import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; @@ -21,16 +21,21 @@ import org.eclipse.jpt.jpa.core.jpa2.context.java.JavaElementCollectionMapping2_ import org.eclipse.jpt.jpa.eclipselink.core.context.EclipseLinkConvert; import org.eclipse.jpt.jpa.eclipselink.core.context.EclipseLinkElementCollectionMapping2_0; import org.eclipse.jpt.jpa.eclipselink.core.context.EclipseLinkJoinFetch; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkConvertComposite; +import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkConvertCombo; import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkElementCollectionMapping2_0Composite; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkJoinFetchComposite; +import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkJoinFetchComboViewer; import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkUiDetailsMessages; -import org.eclipse.jpt.jpa.ui.internal.details.FetchTypeComposite; +import org.eclipse.jpt.jpa.ui.internal.details.FetchTypeComboViewer; +import org.eclipse.jpt.jpa.ui.internal.details.JptUiDetailsMessages; import org.eclipse.jpt.jpa.ui.internal.jpa2.details.CollectionTable2_0Composite; -import org.eclipse.jpt.jpa.ui.internal.jpa2.details.TargetClassComposite; +import org.eclipse.jpt.jpa.ui.internal.jpa2.details.JptUiDetailsMessages2_0; +import org.eclipse.jpt.jpa.ui.internal.jpa2.details.TargetClassChooser; 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.Label; +import org.eclipse.ui.forms.widgets.Hyperlink; public class JavaEclipseLinkElementCollectionMapping2_0Composite extends EclipseLinkElementCollectionMapping2_0Composite<JavaElementCollectionMapping2_0> @@ -43,18 +48,36 @@ public class JavaEclipseLinkElementCollectionMapping2_0Composite * @param widgetFactory The factory used to create various common widgets */ public JavaEclipseLinkElementCollectionMapping2_0Composite(PropertyValueModel<? extends JavaElementCollectionMapping2_0> subjectHolder, - Composite parent, - WidgetFactory widgetFactory) { + PropertyValueModel<Boolean> enabledModel, + Composite parent, + WidgetFactory widgetFactory) { - super(subjectHolder, parent, widgetFactory); + super(subjectHolder, enabledModel, parent, widgetFactory); } @Override - protected void initializeElementCollectionSection(Composite container) { - new TargetClassComposite(this, container); - new FetchTypeComposite(this, container); - new EclipseLinkJoinFetchComposite(this, buildJoinFetchHolder(), container); - new CollectionTable2_0Composite(this, buildCollectionTableHolder(), container); + protected Control initializeElementCollectionSection(Composite container) { + container = this.addSubPane(container, 2, 0, 0, 0, 0); + + // Target class widgets + Hyperlink hyperlink = this.addHyperlink(container, JptUiDetailsMessages2_0.TargetClassComposite_label); + new TargetClassChooser(this, container, hyperlink); + + // Fetch type widgets + this.addLabel(container, JptUiDetailsMessages.BasicGeneralSection_fetchLabel); + new FetchTypeComboViewer(this, container); + + // Join fetch widgets + this.addLabel(container, EclipseLinkUiDetailsMessages.EclipseLinkJoinFetchComposite_label); + new EclipseLinkJoinFetchComboViewer(this, buildJoinFetchHolder(), container); + + // Collection table widgets + CollectionTable2_0Composite collectionTableComposite = new CollectionTable2_0Composite(this, buildCollectionTableHolder(), container); + GridData gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.horizontalSpan = 2; + collectionTableComposite.getControl().setLayoutData(gridData); + + return container; } protected PropertyValueModel<EclipseLinkJoinFetch> buildJoinFetchHolder() { @@ -68,23 +91,25 @@ public class JavaEclipseLinkElementCollectionMapping2_0Composite @Override - protected void initializeBasicValueTypeSection(Composite typeSection) { - super.initializeBasicValueTypeSection(typeSection); + protected void initializeBasicValueTypeSection(Composite container) { + super.initializeBasicValueTypeSection(container); PropertyValueModel<Converter> converterHolder = buildConverterHolder(); // EclipseLink Converter Button elConverterButton = addRadioButton( - typeSection, + container, EclipseLinkUiDetailsMessages.TypeSection_converted, buildConverterBooleanHolder(EclipseLinkConvert.class), null); ((GridData) elConverterButton.getLayoutData()).horizontalSpan = 2; - Pane<EclipseLinkConvert> convertComposite = buildConvertComposite(buildEclipseLinkConverterHolder(converterHolder), typeSection); - GridData gridData = (GridData) convertComposite.getControl().getLayoutData(); - gridData.horizontalSpan = 2; + PropertyValueModel<EclipseLinkConvert> convertHolder = buildEclipseLinkConverterHolder(converterHolder); + PropertyValueModel<Boolean> convertEnabledModel = CompositeBooleanPropertyValueModel.and(getEnabledModel(), buildEclipseLinkConvertBooleanHolder(convertHolder)); + Label convertLabel = this.addLabel(container, EclipseLinkUiDetailsMessages.EclipseLinkConvertComposite_converterNameLabel, convertEnabledModel); + GridData gridData = new GridData(); gridData.horizontalIndent = 20; - registerSubPane(convertComposite); + convertLabel.setLayoutData(gridData); + registerSubPane(new EclipseLinkConvertCombo(convertHolder, convertEnabledModel, container, getWidgetFactory())); } protected PropertyValueModel<Converter> buildConverterHolder() { @@ -113,10 +138,6 @@ public class JavaEclipseLinkElementCollectionMapping2_0Composite }; } - protected Pane<EclipseLinkConvert> buildConvertComposite(PropertyValueModel<EclipseLinkConvert> convertHolder, Composite container) { - return new EclipseLinkConvertComposite(convertHolder, container, getWidgetFactory()); - } - protected PropertyValueModel<EclipseLinkConvert> buildEclipseLinkConverterHolder(PropertyValueModel<Converter> converterHolder) { return new TransformationPropertyValueModel<Converter, EclipseLinkConvert>(converterHolder) { @Override diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/JavaEclipseLinkEmbeddable1_2Composite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/JavaEclipseLinkEmbeddable1_2Composite.java index 3c222e51f5..779da80043 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/JavaEclipseLinkEmbeddable1_2Composite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/JavaEclipseLinkEmbeddable1_2Composite.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2009, 2011 Oracle. All rights reserved. + * Copyright (c) 2009, 2012 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. @@ -16,8 +16,10 @@ import org.eclipse.jpt.jpa.core.context.AccessHolder; import org.eclipse.jpt.jpa.core.context.Embeddable; import org.eclipse.jpt.jpa.core.context.java.JavaEmbeddable; import org.eclipse.jpt.jpa.ui.details.java.JavaUiFactory; -import org.eclipse.jpt.jpa.ui.internal.details.AccessTypeComposite; +import org.eclipse.jpt.jpa.ui.internal.JptUiMessages; +import org.eclipse.jpt.jpa.ui.internal.details.AccessTypeComboViewer; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; /** * This pane does not have any widgets. @@ -53,8 +55,14 @@ public class JavaEclipseLinkEmbeddable1_2Composite extends AbstractJavaEclipseLi } @Override - protected void initializeEmbeddableSection(Composite container) { - new AccessTypeComposite(this, buildAccessHolder(), container); + protected Control initializeEmbeddableSection(Composite container) { + container = this.addSubPane(container, 2, 0, 0, 0, 0); + + // Access type widgets + this.addLabel(container, JptUiMessages.AccessTypeComposite_access); + new AccessTypeComboViewer(this, this.buildAccessHolder(), container); + + return container; } protected PropertyValueModel<AccessHolder> buildAccessHolder() { diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/JavaEclipseLinkEntity1_2Composite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/JavaEclipseLinkEntity1_2Composite.java index 2d0ceafed0..c7fbd63e61 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/JavaEclipseLinkEntity1_2Composite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/JavaEclipseLinkEntity1_2Composite.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2008, 2011 Oracle. All rights reserved. + * Copyright (c) 2008, 2012 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. @@ -15,11 +15,16 @@ import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; import org.eclipse.jpt.jpa.core.context.AccessHolder; import org.eclipse.jpt.jpa.core.context.java.JavaEntity; import org.eclipse.jpt.jpa.eclipselink.core.context.java.JavaEclipseLinkEntity; -import org.eclipse.jpt.jpa.ui.internal.details.AccessTypeComposite; -import org.eclipse.jpt.jpa.ui.internal.details.EntityNameComposite; -import org.eclipse.jpt.jpa.ui.internal.details.IdClassComposite; +import org.eclipse.jpt.jpa.ui.internal.JptUiMessages; +import org.eclipse.jpt.jpa.ui.internal.details.AccessTypeComboViewer; +import org.eclipse.jpt.jpa.ui.internal.details.EntityNameCombo; +import org.eclipse.jpt.jpa.ui.internal.details.IdClassChooser; +import org.eclipse.jpt.jpa.ui.internal.details.JptUiDetailsMessages; import org.eclipse.jpt.jpa.ui.internal.details.TableComposite; +import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.ui.forms.widgets.Hyperlink; /** * The pane used for an EclipseLink1.2 Java entity. @@ -49,11 +54,28 @@ public class JavaEclipseLinkEntity1_2Composite } @Override - protected void initializeEntitySection(Composite container) { - new TableComposite(this, container); - new EntityNameComposite(this, container); - new AccessTypeComposite(this, buildAccessHolder(), container); - new IdClassComposite(this, buildIdClassReferenceHolder(), container); + protected Control initializeEntitySection(Composite container) { + container = this.addSubPane(container, 2, 0, 0, 0, 0); + + // Table widgets + TableComposite tableComposite = new TableComposite(this, container); + GridData gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.horizontalSpan = 2; + tableComposite.getControl().setLayoutData(gridData); + + // Entity name widgets + this.addLabel(container, JptUiDetailsMessages.EntityNameComposite_name); + new EntityNameCombo(this, container); + + // Access type widgets + this.addLabel(container, JptUiMessages.AccessTypeComposite_access); + new AccessTypeComboViewer(this, this.buildAccessHolder(), container); + + // Id class widgets + Hyperlink hyperlink = this.addHyperlink(container,JptUiDetailsMessages.IdClassComposite_label); + new IdClassChooser(this, this.buildIdClassReferenceHolder(), container, hyperlink); + + return container; } protected PropertyValueModel<AccessHolder> buildAccessHolder() { diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/JavaEclipseLinkEntity2_3Composite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/JavaEclipseLinkEntity2_3Composite.java index cb8ec5d7aa..9efe4fc2a2 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/JavaEclipseLinkEntity2_3Composite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/JavaEclipseLinkEntity2_3Composite.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2011 Oracle. All rights reserved. + * Copyright (c) 2011, 2012 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. @@ -17,7 +17,13 @@ import org.eclipse.jpt.jpa.eclipselink.core.context.java.JavaEclipseLinkEntity; import org.eclipse.jpt.jpa.eclipselink.core.context.java.JavaEclipseLinkMultitenancy2_3; import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkMultitenancyComposite; import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkUiDetailsMessages; +import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.ui.forms.events.ExpansionAdapter; +import org.eclipse.ui.forms.events.ExpansionEvent; +import org.eclipse.ui.forms.widgets.ExpandableComposite; +import org.eclipse.ui.forms.widgets.Section; /** * The pane used for an EclipseLink 2.3 Java entity. @@ -39,26 +45,34 @@ public class JavaEclipseLinkEntity2_3Composite @Override protected void initializeLayout(Composite container) { this.initializeEntityCollapsibleSection(container); - this.initializeCachingCollapsibleSectionPane(container); + this.initializeCachingCollapsibleSection(container); this.initializeQueriesCollapsibleSection(container); this.initializeInheritanceCollapsibleSection(container); this.initializeAttributeOverridesCollapsibleSection(container); - this.initializeMultitenancyCollapsibleSectionPane(container); + this.initializeMultitenancyCollapsibleSection(container); this.initializeGeneratorsCollapsibleSection(container); this.initializeConvertersCollapsibleSection(container); this.initializeSecondaryTablesCollapsibleSection(container); this.initializeAdvancedCollapsibleSection(container); } - protected void initializeMultitenancyCollapsibleSectionPane(Composite container) { - container = addCollapsibleSection( - container, - EclipseLinkUiDetailsMessages.EclipseLinkTypeMappingComposite_multitenancy); - this.initializeMultitenancySection(container, buildMultitenancyHolder()); + protected void initializeMultitenancyCollapsibleSection(Composite container) { + final Section section = this.getWidgetFactory().createSection(container, ExpandableComposite.TITLE_BAR | ExpandableComposite.TWISTIE); + section.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + section.setText(EclipseLinkUiDetailsMessages.EclipseLinkTypeMappingComposite_multitenancy); + + section.addExpansionListener(new ExpansionAdapter() { + @Override + public void expansionStateChanging(ExpansionEvent e) { + if (e.getState() && section.getClient() == null) { + section.setClient(initializeMultitenancySection(section)); + } + } + }); } - protected void initializeMultitenancySection(Composite container, PropertyValueModel<JavaEclipseLinkMultitenancy2_3> multitenancyHolder) { - new EclipseLinkMultitenancyComposite(this, multitenancyHolder, container); + protected Control initializeMultitenancySection(Composite container) { + return new EclipseLinkMultitenancyComposite(this, this.buildMultitenancyHolder(), container).getControl(); } private PropertyAspectAdapter<JavaEntity, JavaEclipseLinkMultitenancy2_3> buildMultitenancyHolder() { diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/JavaEclipseLinkExistenceCheckingComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/JavaEclipseLinkExistenceCheckingComposite.java deleted file mode 100644 index 5720e445be..0000000000 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/JavaEclipseLinkExistenceCheckingComposite.java +++ /dev/null @@ -1,136 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2008, 2012 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.jpa.eclipselink.ui.internal.details.java; - -import java.util.Collection; -import org.eclipse.jpt.common.ui.internal.widgets.EnumFormComboViewer; -import org.eclipse.jpt.common.ui.internal.widgets.Pane; -import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter; -import org.eclipse.jpt.common.utility.model.value.ModifiablePropertyValueModel; -import org.eclipse.jpt.jpa.eclipselink.core.context.EclipseLinkCaching; -import org.eclipse.jpt.jpa.eclipselink.core.context.EclipseLinkExistenceType; -import org.eclipse.jpt.jpa.eclipselink.core.context.java.JavaEclipseLinkCaching; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkUiDetailsMessages; -import org.eclipse.swt.widgets.Composite; - -/** - * Here is the layout of this pane: - * <pre> - * ------------------------------------------------------------------------- - * | ---------------------------------------------- | - * | x Existence Checking: | |v| | - * | ---------------------------------------------- | - * -------------------------------------------------------------------------</pre> - * - * @see EclipseLinkCaching - * @see CachingComposite - A container of this widget - * - * @version 2.1 - * @since 2.1 - */ -public class JavaEclipseLinkExistenceCheckingComposite extends Pane<JavaEclipseLinkCaching> { - - /** - * Creates a new <code>ExistenceCheckingComposite</code>. - * - * @param parentPane The parent container of this one - * @param parent The parent container - */ - public JavaEclipseLinkExistenceCheckingComposite(Pane<? extends JavaEclipseLinkCaching> parentPane, - Composite parent) { - - super(parentPane, parent, false); - } - - @Override - protected void initializeLayout(Composite container) { - - addLabeledComposite( - container, - addCheckBox( - container, - EclipseLinkUiDetailsMessages.EclipseLinkExistenceCheckingComposite_label, - buildExistenceCheckingHolder(), - null - ), - addExistenceCheckingTypeCombo(container).getControl(), - null - ); - } - - private EnumFormComboViewer<EclipseLinkCaching, EclipseLinkExistenceType> addExistenceCheckingTypeCombo(Composite container) { - - return new EnumFormComboViewer<EclipseLinkCaching, EclipseLinkExistenceType>(this, container) { - - @Override - protected void addPropertyNames(Collection<String> propertyNames) { - super.addPropertyNames(propertyNames); - propertyNames.add(EclipseLinkCaching.DEFAULT_EXISTENCE_TYPE_PROPERTY); - propertyNames.add(EclipseLinkCaching.SPECIFIED_EXISTENCE_TYPE_PROPERTY); - } - - @Override - protected EclipseLinkExistenceType[] getChoices() { - return EclipseLinkExistenceType.values(); - } - - @Override - protected EclipseLinkExistenceType getDefaultValue() { - return getSubject().getDefaultExistenceType(); - } - - @Override - protected String displayString(EclipseLinkExistenceType value) { - switch (value) { - case CHECK_CACHE : - return EclipseLinkUiDetailsMessages.EclipseLinkExistenceCheckingComposite_check_cache; - case CHECK_DATABASE : - return EclipseLinkUiDetailsMessages.EclipseLinkExistenceCheckingComposite_check_database; - case ASSUME_EXISTENCE : - return EclipseLinkUiDetailsMessages.EclipseLinkExistenceCheckingComposite_assume_existence; - case ASSUME_NON_EXISTENCE : - return EclipseLinkUiDetailsMessages.EclipseLinkExistenceCheckingComposite_assume_non_existence; - default : - throw new IllegalStateException(); - } - } - - @Override - protected EclipseLinkExistenceType getValue() { - return getSubject().getSpecifiedExistenceType(); - } - - @Override - protected void setValue(EclipseLinkExistenceType value) { - getSubject().setSpecifiedExistenceType(value); - } - - @Override - protected boolean sortChoices() { - return false; - } - }; - } - - private ModifiablePropertyValueModel<Boolean> buildExistenceCheckingHolder() { - return new PropertyAspectAdapter<JavaEclipseLinkCaching, Boolean>(getSubjectHolder(), JavaEclipseLinkCaching.EXISTENCE_CHECKING_PROPERTY) { - @Override - protected Boolean buildValue_() { - return Boolean.valueOf(this.subject.isExistenceChecking()); - } - - @Override - protected void setValue_(Boolean value) { - this.subject.setExistenceChecking(value.booleanValue()); - } - }; - } - -} diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/JavaEclipseLinkIdMapping2_0Composite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/JavaEclipseLinkIdMapping2_0Composite.java index 6e943d9b13..157b40223a 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/JavaEclipseLinkIdMapping2_0Composite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/JavaEclipseLinkIdMapping2_0Composite.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2009, 2011 Oracle. All rights reserved. + * Copyright (c) 2009, 2012 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. @@ -13,21 +13,23 @@ import org.eclipse.jpt.common.ui.WidgetFactory; import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; import org.eclipse.jpt.jpa.core.context.java.JavaIdMapping; import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkIdMappingComposite; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkMutableComposite; +import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkMutableTriStateCheckBox; import org.eclipse.jpt.jpa.ui.internal.details.ColumnComposite; import org.eclipse.jpt.jpa.ui.internal.jpa2.details.IdMapping2_0MappedByRelationshipPane; import org.eclipse.jpt.jpa.ui.internal.jpa2.details.IdMappingGeneration2_0Composite; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; public class JavaEclipseLinkIdMapping2_0Composite extends EclipseLinkIdMappingComposite<JavaIdMapping> { public JavaEclipseLinkIdMapping2_0Composite( PropertyValueModel<? extends JavaIdMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory) { - super(subjectHolder, parent, widgetFactory); + super(subjectHolder, enabledModel, parent, widgetFactory); } @@ -40,10 +42,15 @@ public class JavaEclipseLinkIdMapping2_0Composite } @Override - protected void initializeIdSection(Composite container) { + protected Control initializeIdSection(Composite container) { + container = this.addSubPane(container); + new IdMapping2_0MappedByRelationshipPane(this, getSubjectHolder(), container); new ColumnComposite(this, buildColumnHolder(), container); - new EclipseLinkMutableComposite(this, buildMutableHolder(), container); + + new EclipseLinkMutableTriStateCheckBox(this, buildMutableHolder(), container); + + return container; } @Override diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/JavaEclipseLinkIdMappingComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/JavaEclipseLinkIdMappingComposite.java index 747e1091fc..9ef1ddb7df 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/JavaEclipseLinkIdMappingComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/JavaEclipseLinkIdMappingComposite.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2011 Oracle. All rights reserved. + * Copyright (c) 2011, 2012 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. @@ -20,10 +20,11 @@ public class JavaEclipseLinkIdMappingComposite { public JavaEclipseLinkIdMappingComposite( PropertyValueModel<? extends IdMapping> subjectHolder, - Composite parent, + PropertyValueModel<Boolean> enabledModel, + Composite parent, WidgetFactory widgetFactory) { - super(subjectHolder, parent, widgetFactory); + super(subjectHolder, enabledModel, parent, widgetFactory); } @Override diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/JavaEclipseLinkManyToManyMapping2_0Composite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/JavaEclipseLinkManyToManyMapping2_0Composite.java index ff0a1e3aa1..01b5616d3c 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/JavaEclipseLinkManyToManyMapping2_0Composite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/JavaEclipseLinkManyToManyMapping2_0Composite.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2010, 2011 Oracle. All rights reserved. + * Copyright (c) 2010, 2012 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. @@ -14,23 +14,29 @@ import org.eclipse.jpt.common.utility.internal.model.value.TransformationPropert import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; import org.eclipse.jpt.jpa.core.context.ManyToManyMapping; import org.eclipse.jpt.jpa.core.context.ManyToManyRelationship; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkJoinFetchComposite; +import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkJoinFetchComboViewer; import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkManyToManyMappingComposite; -import org.eclipse.jpt.jpa.ui.internal.details.FetchTypeComposite; -import org.eclipse.jpt.jpa.ui.internal.details.TargetEntityComposite; +import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkUiDetailsMessages; +import org.eclipse.jpt.jpa.ui.internal.details.FetchTypeComboViewer; +import org.eclipse.jpt.jpa.ui.internal.details.JptUiDetailsMessages; +import org.eclipse.jpt.jpa.ui.internal.details.TargetEntityClassChooser; import org.eclipse.jpt.jpa.ui.internal.jpa2.details.CascadePane2_0; import org.eclipse.jpt.jpa.ui.internal.jpa2.details.Ordering2_0Composite; +import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.ui.forms.widgets.Hyperlink; public class JavaEclipseLinkManyToManyMapping2_0Composite extends EclipseLinkManyToManyMappingComposite<ManyToManyMapping> { public JavaEclipseLinkManyToManyMapping2_0Composite( PropertyValueModel<? extends ManyToManyMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory) { - super(subjectHolder, parent, widgetFactory); + super(subjectHolder, enabledModel, parent, widgetFactory); } @Override @@ -42,16 +48,33 @@ public class JavaEclipseLinkManyToManyMapping2_0Composite } @Override - protected void initializeManyToManySection(Composite container) { - new TargetEntityComposite(this, container); - new FetchTypeComposite(this, container); - new EclipseLinkJoinFetchComposite(this, this.buildJoinFetchableHolder(), container); - new CascadePane2_0(this, buildCascadeHolder(), addSubPane(container, 5)); + protected Control initializeManyToManySection(Composite container) { + container = this.addSubPane(container, 2, 0, 0, 0, 0); + + // Target entity widgets + Hyperlink targetEntityHyperlink = this.addHyperlink(container, JptUiDetailsMessages.TargetEntityChooser_label); + new TargetEntityClassChooser(this, container, targetEntityHyperlink); + + // Fetch type widgets + this.addLabel(container, JptUiDetailsMessages.BasicGeneralSection_fetchLabel); + new FetchTypeComboViewer(this, container); + + // Join fetch widgets + this.addLabel(container, EclipseLinkUiDetailsMessages.EclipseLinkJoinFetchComposite_label); + new EclipseLinkJoinFetchComboViewer(this, this.buildJoinFetchableHolder(), container); + + // Cascade widgets + CascadePane2_0 cascadePane = new CascadePane2_0(this, buildCascadeHolder(), container); + GridData gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.horizontalSpan = 2; + cascadePane.getControl().setLayoutData(gridData); + + return container; } @Override - protected void initializeOrderingCollapsibleSection(Composite container) { - new Ordering2_0Composite(this, container); + protected Control initializeOrderingSection(Composite container) { + return new Ordering2_0Composite(this, container).getControl(); } protected PropertyValueModel<ManyToManyRelationship> buildEclipseLinkJoiningHolder() { diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/JavaEclipseLinkManyToOneMapping2_0Composite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/JavaEclipseLinkManyToOneMapping2_0Composite.java index 1b7a0e8750..5c82afec90 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/JavaEclipseLinkManyToOneMapping2_0Composite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/JavaEclipseLinkManyToOneMapping2_0Composite.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2009, 2011 Oracle. All rights reserved. + * Copyright (c) 2009, 2012 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. @@ -16,33 +16,61 @@ import org.eclipse.jpt.jpa.core.context.java.JavaManyToOneMapping; import org.eclipse.jpt.jpa.core.jpa2.context.java.JavaManyToOneRelationship2_0; import org.eclipse.jpt.jpa.eclipselink.core.context.EclipseLinkJoinFetch; import org.eclipse.jpt.jpa.eclipselink.core.context.EclipseLinkJoinFetchMapping; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkJoinFetchComposite; -import org.eclipse.jpt.jpa.ui.internal.details.FetchTypeComposite; -import org.eclipse.jpt.jpa.ui.internal.details.OptionalComposite; -import org.eclipse.jpt.jpa.ui.internal.details.TargetEntityComposite; +import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkJoinFetchComboViewer; +import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkUiDetailsMessages; +import org.eclipse.jpt.jpa.ui.internal.details.FetchTypeComboViewer; +import org.eclipse.jpt.jpa.ui.internal.details.JptUiDetailsMessages; +import org.eclipse.jpt.jpa.ui.internal.details.OptionalTriStateCheckBox; +import org.eclipse.jpt.jpa.ui.internal.details.TargetEntityClassChooser; import org.eclipse.jpt.jpa.ui.internal.jpa2.details.AbstractManyToOneMapping2_0Composite; import org.eclipse.jpt.jpa.ui.internal.jpa2.details.CascadePane2_0; +import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.ui.forms.widgets.Hyperlink; public class JavaEclipseLinkManyToOneMapping2_0Composite extends AbstractManyToOneMapping2_0Composite<JavaManyToOneMapping, JavaManyToOneRelationship2_0> { public JavaEclipseLinkManyToOneMapping2_0Composite( PropertyValueModel<? extends JavaManyToOneMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory) { - super(subjectHolder, parent, widgetFactory); + super(subjectHolder, enabledModel, parent, widgetFactory); } @Override - protected void initializeManyToOneSection(Composite container) { - new TargetEntityComposite(this, container); - new FetchTypeComposite(this, container); - new EclipseLinkJoinFetchComposite(this, buildJoinFetchableHolder(), container); - new OptionalComposite(this, container); - new CascadePane2_0(this, buildCascadeHolder(), addSubPane(container, 5)); + protected Control initializeManyToOneSection(Composite container) { + container = this.addSubPane(container, 2, 0, 0, 0, 0); + + // Target entity widgets + Hyperlink targetEntityHyperlink = this.addHyperlink(container, JptUiDetailsMessages.TargetEntityChooser_label); + new TargetEntityClassChooser(this, container, targetEntityHyperlink); + + // Fetch type widgets + this.addLabel(container, JptUiDetailsMessages.BasicGeneralSection_fetchLabel); + new FetchTypeComboViewer(this, container); + + // Join fetch widgets + this.addLabel(container, EclipseLinkUiDetailsMessages.EclipseLinkJoinFetchComposite_label); + new EclipseLinkJoinFetchComboViewer(this, buildJoinFetchableHolder(), container); + + // Optional widgets + OptionalTriStateCheckBox optionalCheckBox = new OptionalTriStateCheckBox(this, container); + GridData gridData = new GridData(); + gridData.horizontalSpan = 2; + optionalCheckBox.getControl().setLayoutData(gridData); + + // Cascade widgets + CascadePane2_0 cascadePane = new CascadePane2_0(this, buildCascadeHolder(), container); + gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.horizontalSpan = 2; + cascadePane.getControl().setLayoutData(gridData); + + return container; } protected PropertyValueModel<EclipseLinkJoinFetch> buildJoinFetchableHolder() { diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/JavaEclipseLinkMappedSuperclass1_2Composite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/JavaEclipseLinkMappedSuperclass1_2Composite.java index 90d44d0892..87dc67f9da 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/JavaEclipseLinkMappedSuperclass1_2Composite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/JavaEclipseLinkMappedSuperclass1_2Composite.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2008, 2011 Oracle. All rights reserved. + * Copyright (c) 2008, 2012 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. @@ -15,9 +15,13 @@ import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; import org.eclipse.jpt.jpa.core.context.AccessHolder; import org.eclipse.jpt.jpa.core.context.java.JavaMappedSuperclass; import org.eclipse.jpt.jpa.eclipselink.core.context.EclipseLinkMappedSuperclass; -import org.eclipse.jpt.jpa.ui.internal.details.AccessTypeComposite; -import org.eclipse.jpt.jpa.ui.internal.details.IdClassComposite; +import org.eclipse.jpt.jpa.ui.internal.JptUiMessages; +import org.eclipse.jpt.jpa.ui.internal.details.AccessTypeComboViewer; +import org.eclipse.jpt.jpa.ui.internal.details.IdClassChooser; +import org.eclipse.jpt.jpa.ui.internal.details.JptUiDetailsMessages; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.ui.forms.widgets.Hyperlink; /** * The pane used for an EclipseLink Java Mapped Superclass. @@ -47,9 +51,18 @@ public class JavaEclipseLinkMappedSuperclass1_2Composite } @Override - protected void initializeMappedSuperclassSection(Composite container) { - new AccessTypeComposite(this, buildAccessHolder(), container); - new IdClassComposite(this, buildIdClassReferenceHolder(), container); + protected Control initializeMappedSuperclassSection(Composite container) { + container = this.addSubPane(container, 2, 0, 0, 0, 0); + + // Access type widgets + this.addLabel(container, JptUiMessages.AccessTypeComposite_access); + new AccessTypeComboViewer(this, this.buildAccessHolder(), container); + + // Id class widgets + Hyperlink hyperlink = this.addHyperlink(container,JptUiDetailsMessages.IdClassComposite_label); + new IdClassChooser(this, this.buildIdClassReferenceHolder(), container, hyperlink); + + return container; } protected PropertyValueModel<AccessHolder> buildAccessHolder() { diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/JavaEclipseLinkMappedSuperclass2_0Composite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/JavaEclipseLinkMappedSuperclass2_0Composite.java index 79b795926f..020fb34110 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/JavaEclipseLinkMappedSuperclass2_0Composite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/JavaEclipseLinkMappedSuperclass2_0Composite.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2009, 2011 Oracle. All rights reserved. + * Copyright (c) 2009, 2012 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. @@ -15,10 +15,13 @@ import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; import org.eclipse.jpt.jpa.core.context.AccessHolder; import org.eclipse.jpt.jpa.core.context.java.JavaMappedSuperclass; import org.eclipse.jpt.jpa.eclipselink.core.context.EclipseLinkMappedSuperclass; -import org.eclipse.jpt.jpa.eclipselink.core.context.java.JavaEclipseLinkCaching; -import org.eclipse.jpt.jpa.ui.internal.details.AccessTypeComposite; -import org.eclipse.jpt.jpa.ui.internal.details.IdClassComposite; +import org.eclipse.jpt.jpa.ui.internal.JptUiMessages; +import org.eclipse.jpt.jpa.ui.internal.details.AccessTypeComboViewer; +import org.eclipse.jpt.jpa.ui.internal.details.IdClassChooser; +import org.eclipse.jpt.jpa.ui.internal.details.JptUiDetailsMessages; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.ui.forms.widgets.Hyperlink; /** * The pane used for an EclipseLink Java Mapped Superclass. @@ -48,9 +51,18 @@ public class JavaEclipseLinkMappedSuperclass2_0Composite } @Override - protected void initializeMappedSuperclassSection(Composite container) { - new AccessTypeComposite(this, buildAccessHolder(), container); - new IdClassComposite(this, buildIdClassReferenceHolder(), container); + protected Control initializeMappedSuperclassSection(Composite container) { + container = this.addSubPane(container, 2, 0, 0, 0, 0); + + // Access type widgets + this.addLabel(container, JptUiMessages.AccessTypeComposite_access); + new AccessTypeComboViewer(this, this.buildAccessHolder(), container); + + // Id class widgets + Hyperlink hyperlink = this.addHyperlink(container,JptUiDetailsMessages.IdClassComposite_label); + new IdClassChooser(this, this.buildIdClassReferenceHolder(), container, hyperlink); + + return container; } protected PropertyValueModel<AccessHolder> buildAccessHolder() { @@ -63,7 +75,7 @@ public class JavaEclipseLinkMappedSuperclass2_0Composite } @Override - protected void initializeCachingSection(Composite container, PropertyValueModel<JavaEclipseLinkCaching> cachingHolder) { - new JavaEclipseLinkCaching2_0Composite(this, cachingHolder, container); + protected Control initializeCachingSection(Composite container) { + return new JavaEclipseLinkCaching2_0Composite(this, this.buildCachingHolder(), container).getControl(); } }
\ No newline at end of file diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/JavaEclipseLinkMappedSuperclass2_3Composite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/JavaEclipseLinkMappedSuperclass2_3Composite.java index b58a546bd6..12073704d9 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/JavaEclipseLinkMappedSuperclass2_3Composite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/JavaEclipseLinkMappedSuperclass2_3Composite.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2011 Oracle. All rights reserved. + * Copyright (c) 2011, 2012 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. @@ -15,14 +15,22 @@ import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; import org.eclipse.jpt.jpa.core.context.AccessHolder; import org.eclipse.jpt.jpa.core.context.java.JavaMappedSuperclass; import org.eclipse.jpt.jpa.eclipselink.core.context.EclipseLinkMappedSuperclass; -import org.eclipse.jpt.jpa.eclipselink.core.context.java.JavaEclipseLinkCaching; import org.eclipse.jpt.jpa.eclipselink.core.context.java.JavaEclipseLinkMappedSuperclass; import org.eclipse.jpt.jpa.eclipselink.core.context.java.JavaEclipseLinkMultitenancy2_3; import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkMultitenancyComposite; import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkUiDetailsMessages; -import org.eclipse.jpt.jpa.ui.internal.details.AccessTypeComposite; -import org.eclipse.jpt.jpa.ui.internal.details.IdClassComposite; +import org.eclipse.jpt.jpa.ui.internal.JptUiMessages; +import org.eclipse.jpt.jpa.ui.internal.details.AccessTypeComboViewer; +import org.eclipse.jpt.jpa.ui.internal.details.IdClassChooser; +import org.eclipse.jpt.jpa.ui.internal.details.JptUiDetailsMessages; +import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.ui.forms.events.ExpansionAdapter; +import org.eclipse.ui.forms.events.ExpansionEvent; +import org.eclipse.ui.forms.widgets.ExpandableComposite; +import org.eclipse.ui.forms.widgets.Hyperlink; +import org.eclipse.ui.forms.widgets.Section; /** * The pane used for an EclipseLink 2.3 Java Mapped Superclass. @@ -62,9 +70,18 @@ public class JavaEclipseLinkMappedSuperclass2_3Composite } @Override - protected void initializeMappedSuperclassSection(Composite container) { - new AccessTypeComposite(this, buildAccessHolder(), container); - new IdClassComposite(this, buildIdClassReferenceHolder(), container); + protected Control initializeMappedSuperclassSection(Composite container) { + container = this.addSubPane(container, 2, 0, 0, 0, 0); + + // Access type widgets + this.addLabel(container, JptUiMessages.AccessTypeComposite_access); + new AccessTypeComboViewer(this, this.buildAccessHolder(), container); + + // Id class widgets + Hyperlink hyperlink = this.addHyperlink(container,JptUiDetailsMessages.IdClassComposite_label); + new IdClassChooser(this, this.buildIdClassReferenceHolder(), container, hyperlink); + + return container; } protected PropertyValueModel<AccessHolder> buildAccessHolder() { @@ -77,19 +94,27 @@ public class JavaEclipseLinkMappedSuperclass2_3Composite } @Override - protected void initializeCachingSection(Composite container, PropertyValueModel<JavaEclipseLinkCaching> cachingHolder) { - new JavaEclipseLinkCaching2_0Composite(this, cachingHolder, container); + protected Control initializeCachingSection(Composite container) { + return new JavaEclipseLinkCaching2_0Composite(this, this.buildCachingHolder(), container).getControl(); } - + protected void initializeMultitenancyCollapsibleSection(Composite container) { - container = addCollapsibleSection( - container, - EclipseLinkUiDetailsMessages.EclipseLinkTypeMappingComposite_multitenancy); - this.initializeMultitenancySection(container, buildMultitenancyHolder()); + final Section section = this.getWidgetFactory().createSection(container, ExpandableComposite.TITLE_BAR | ExpandableComposite.TWISTIE); + section.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + section.setText(EclipseLinkUiDetailsMessages.EclipseLinkTypeMappingComposite_multitenancy); + + section.addExpansionListener(new ExpansionAdapter() { + @Override + public void expansionStateChanging(ExpansionEvent e) { + if (e.getState() && section.getClient() == null) { + section.setClient(initializeMultitenancySection(section)); + } + } + }); } - protected void initializeMultitenancySection(Composite container, PropertyValueModel<JavaEclipseLinkMultitenancy2_3> multitenancyHolder) { - new EclipseLinkMultitenancyComposite(this, multitenancyHolder, container); + protected Control initializeMultitenancySection(Composite container) { + return new EclipseLinkMultitenancyComposite(this, this.buildMultitenancyHolder(), container).getControl(); } private PropertyAspectAdapter<JavaMappedSuperclass, JavaEclipseLinkMultitenancy2_3> buildMultitenancyHolder() { diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/JavaEclipseLinkOneToManyMapping2_0Composite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/JavaEclipseLinkOneToManyMapping2_0Composite.java index b3745710ab..6ba80b40a0 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/JavaEclipseLinkOneToManyMapping2_0Composite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/JavaEclipseLinkOneToManyMapping2_0Composite.java @@ -1,5 +1,5 @@ /******************************************************************************* -* Copyright (c) 2009, 2011 Oracle. All rights reserved. +* Copyright (c) 2009, 2012 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. @@ -15,25 +15,31 @@ import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; import org.eclipse.jpt.jpa.core.context.java.JavaOneToManyMapping; import org.eclipse.jpt.jpa.core.jpa2.context.OrphanRemovable2_0; import org.eclipse.jpt.jpa.core.jpa2.context.OrphanRemovalHolder2_0; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkJoinFetchComposite; +import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkJoinFetchComboViewer; import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkOneToManyMappingComposite; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkPrivateOwnedComposite; -import org.eclipse.jpt.jpa.ui.internal.details.FetchTypeComposite; -import org.eclipse.jpt.jpa.ui.internal.details.TargetEntityComposite; +import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkPrivateOwnedCheckBox; +import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkUiDetailsMessages; +import org.eclipse.jpt.jpa.ui.internal.details.FetchTypeComboViewer; +import org.eclipse.jpt.jpa.ui.internal.details.JptUiDetailsMessages; +import org.eclipse.jpt.jpa.ui.internal.details.TargetEntityClassChooser; import org.eclipse.jpt.jpa.ui.internal.jpa2.details.CascadePane2_0; import org.eclipse.jpt.jpa.ui.internal.jpa2.details.Ordering2_0Composite; -import org.eclipse.jpt.jpa.ui.internal.jpa2.details.OrphanRemoval2_0Composite; +import org.eclipse.jpt.jpa.ui.internal.jpa2.details.OrphanRemoval2_0TriStateCheckBox; +import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.ui.forms.widgets.Hyperlink; public class JavaEclipseLinkOneToManyMapping2_0Composite extends EclipseLinkOneToManyMappingComposite<JavaOneToManyMapping> { public JavaEclipseLinkOneToManyMapping2_0Composite( PropertyValueModel<? extends JavaOneToManyMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory) { - super(subjectHolder, parent, widgetFactory); + super(subjectHolder, enabledModel, parent, widgetFactory); } @Override @@ -45,18 +51,45 @@ public class JavaEclipseLinkOneToManyMapping2_0Composite } @Override - protected void initializeOneToManySection(Composite container) { - new TargetEntityComposite(this, container); - new FetchTypeComposite(this, container); - new EclipseLinkJoinFetchComposite(this, this.buildJoinFetchableHolder(), container); - new EclipseLinkPrivateOwnedComposite(this, this.buildPrivateOwnableHolder(), container); - new OrphanRemoval2_0Composite(this, this.buildOrphanRemovableHolder(), container); - new CascadePane2_0(this, this.buildCascadeHolder(), this.addSubPane(container, 5)); + protected Control initializeOneToManySection(Composite container) { + container = this.addSubPane(container, 2, 0, 0, 0, 0); + + // Target entity widgets + Hyperlink targetEntityHyperlink = this.addHyperlink(container, JptUiDetailsMessages.TargetEntityChooser_label); + new TargetEntityClassChooser(this, container, targetEntityHyperlink); + + // Fetch type widgets + this.addLabel(container, JptUiDetailsMessages.BasicGeneralSection_fetchLabel); + new FetchTypeComboViewer(this, container); + + // Join fetch widgets + this.addLabel(container, EclipseLinkUiDetailsMessages.EclipseLinkJoinFetchComposite_label); + new EclipseLinkJoinFetchComboViewer(this, this.buildJoinFetchableHolder(), container); + + // Private owned widgets + EclipseLinkPrivateOwnedCheckBox privateOwnedCheckBox = new EclipseLinkPrivateOwnedCheckBox(this, buildPrivateOwnableHolder(), container); + GridData gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.horizontalSpan = 2; + privateOwnedCheckBox.getControl().setLayoutData(gridData); + + // Orphan removal widgets + OrphanRemoval2_0TriStateCheckBox orphanRemovalCheckBox = new OrphanRemoval2_0TriStateCheckBox(this, buildOrphanRemovableHolder(), container); + gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.horizontalSpan = 2; + orphanRemovalCheckBox.getControl().setLayoutData(gridData); + + // Cascade widgets + CascadePane2_0 cascadePane = new CascadePane2_0(this, this.buildCascadeHolder(), container); + gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.horizontalSpan = 2; + cascadePane.getControl().setLayoutData(gridData); + + return container; } @Override - protected void initializeOrderingCollapsibleSection(Composite container) { - new Ordering2_0Composite(this, container); + protected Control initializeOrderingSection(Composite container) { + return new Ordering2_0Composite(this, container).getControl(); } protected PropertyValueModel<OrphanRemovable2_0> buildOrphanRemovableHolder() { diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/JavaEclipseLinkOneToOneMapping2_0Composite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/JavaEclipseLinkOneToOneMapping2_0Composite.java index beb154c98d..b438e63966 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/JavaEclipseLinkOneToOneMapping2_0Composite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/JavaEclipseLinkOneToOneMapping2_0Composite.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2009, 2011 Oracle. All rights reserved. + * Copyright (c) 2009, 2012 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. @@ -19,37 +19,75 @@ import org.eclipse.jpt.jpa.core.jpa2.context.java.JavaOneToOneRelationship2_0; import org.eclipse.jpt.jpa.eclipselink.core.context.EclipseLinkJoinFetch; import org.eclipse.jpt.jpa.eclipselink.core.context.EclipseLinkOneToOneMapping; import org.eclipse.jpt.jpa.eclipselink.core.context.EclipseLinkPrivateOwned; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkJoinFetchComposite; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkPrivateOwnedComposite; -import org.eclipse.jpt.jpa.ui.internal.details.FetchTypeComposite; -import org.eclipse.jpt.jpa.ui.internal.details.OptionalComposite; -import org.eclipse.jpt.jpa.ui.internal.details.TargetEntityComposite; +import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkJoinFetchComboViewer; +import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkPrivateOwnedCheckBox; +import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkUiDetailsMessages; +import org.eclipse.jpt.jpa.ui.internal.details.FetchTypeComboViewer; +import org.eclipse.jpt.jpa.ui.internal.details.JptUiDetailsMessages; +import org.eclipse.jpt.jpa.ui.internal.details.OptionalTriStateCheckBox; +import org.eclipse.jpt.jpa.ui.internal.details.TargetEntityClassChooser; import org.eclipse.jpt.jpa.ui.internal.jpa2.details.AbstractOneToOneMapping2_0Composite; import org.eclipse.jpt.jpa.ui.internal.jpa2.details.CascadePane2_0; import org.eclipse.jpt.jpa.ui.internal.jpa2.details.OneToOneJoiningStrategy2_0Pane; -import org.eclipse.jpt.jpa.ui.internal.jpa2.details.OrphanRemoval2_0Composite; +import org.eclipse.jpt.jpa.ui.internal.jpa2.details.OrphanRemoval2_0TriStateCheckBox; +import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.ui.forms.widgets.Hyperlink; public class JavaEclipseLinkOneToOneMapping2_0Composite extends AbstractOneToOneMapping2_0Composite<JavaOneToOneMapping, JavaOneToOneRelationship2_0> { public JavaEclipseLinkOneToOneMapping2_0Composite( PropertyValueModel<? extends JavaOneToOneMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory) { - super(subjectHolder, parent, widgetFactory); + super(subjectHolder, enabledModel, parent, widgetFactory); } @Override - protected void initializeOneToOneSection(Composite container) { - new TargetEntityComposite(this, container); - new FetchTypeComposite(this, container); - new EclipseLinkJoinFetchComposite(this, buildJoinFetchableHolder(), container); - new OptionalComposite(this, container); - new EclipseLinkPrivateOwnedComposite(this, buildPrivateOwnableHolder(), container); - new OrphanRemoval2_0Composite(this, buildOrphanRemovableHolder(), container); - new CascadePane2_0(this, buildCascadeHolder(), addSubPane(container, 5)); + protected Control initializeOneToOneSection(Composite container) { + container = this.addSubPane(container, 2, 0, 0, 0, 0); + + // Target entity widgets + Hyperlink targetEntityHyperlink = this.addHyperlink(container, JptUiDetailsMessages.TargetEntityChooser_label); + new TargetEntityClassChooser(this, container, targetEntityHyperlink); + + // Fetch type widgets + this.addLabel(container, JptUiDetailsMessages.BasicGeneralSection_fetchLabel); + new FetchTypeComboViewer(this, container); + + // Join fetch widgets + this.addLabel(container, EclipseLinkUiDetailsMessages.EclipseLinkJoinFetchComposite_label); + new EclipseLinkJoinFetchComboViewer(this, buildJoinFetchableHolder(), container); + + // Optional widgets + OptionalTriStateCheckBox optionalCheckBox = new OptionalTriStateCheckBox(this, container); + GridData gridData = new GridData(); + gridData.horizontalSpan = 2; + optionalCheckBox.getControl().setLayoutData(gridData); + + // Private owned widgets + EclipseLinkPrivateOwnedCheckBox privateOwnedCheckBox = new EclipseLinkPrivateOwnedCheckBox(this, buildPrivateOwnableHolder(), container); + gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.horizontalSpan = 2; + privateOwnedCheckBox.getControl().setLayoutData(gridData); + + // Orphan removal widgets + OrphanRemoval2_0TriStateCheckBox orphanRemovalCheckBox = new OrphanRemoval2_0TriStateCheckBox(this, buildOrphanRemovableHolder(), container); + gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.horizontalSpan = 2; + orphanRemovalCheckBox.getControl().setLayoutData(gridData); + + // Cascade widgets + CascadePane2_0 cascadePane = new CascadePane2_0(this, buildCascadeHolder(), container); + gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.horizontalSpan = 2; + cascadePane.getControl().setLayoutData(gridData); + + return container; } @Override diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/JavaEclipseLinkStructureMapping2_3UiDefinition.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/JavaEclipseLinkStructureMapping2_3UiDefinition.java index 726c2ccf1b..9cf6e91a19 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/JavaEclipseLinkStructureMapping2_3UiDefinition.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/JavaEclipseLinkStructureMapping2_3UiDefinition.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2011 Oracle. All rights reserved. + * Copyright (c) 2011, 2012 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. @@ -48,9 +48,10 @@ public class JavaEclipseLinkStructureMapping2_3UiDefinition public JpaComposite buildAttributeMappingComposite( JavaUiFactory factory, PropertyValueModel<EclipseLinkStructureMapping2_3> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory) { - return new EclipseLinkStructureMapping2_3Composite(subjectHolder, parent, widgetFactory); + return new EclipseLinkStructureMapping2_3Composite(subjectHolder, enabledModel, parent, widgetFactory); } } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/JavaEclipseLinkTransformationMappingUiDefinition.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/JavaEclipseLinkTransformationMappingUiDefinition.java index 0a835248d5..8e7dbc145e 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/JavaEclipseLinkTransformationMappingUiDefinition.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/JavaEclipseLinkTransformationMappingUiDefinition.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2009 Oracle. All rights reserved. + * Copyright (c) 2009, 2012 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. @@ -48,9 +48,10 @@ public class JavaEclipseLinkTransformationMappingUiDefinition public JpaComposite buildAttributeMappingComposite( JavaUiFactory factory, PropertyValueModel<EclipseLinkTransformationMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory) { - return new EclipseLinkTransformationMappingComposite(subjectHolder, parent, widgetFactory); + return new EclipseLinkTransformationMappingComposite(subjectHolder, enabledModel, parent, widgetFactory); } } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/JavaEclipseLinkVariableOneToOneMappingUiDefinition.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/JavaEclipseLinkVariableOneToOneMappingUiDefinition.java index 3aed33b3ff..e583209518 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/JavaEclipseLinkVariableOneToOneMappingUiDefinition.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/JavaEclipseLinkVariableOneToOneMappingUiDefinition.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2009 Oracle. All rights reserved. + * Copyright (c) 2009, 2012 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. @@ -48,9 +48,10 @@ public class JavaEclipseLinkVariableOneToOneMappingUiDefinition public JpaComposite buildAttributeMappingComposite( JavaUiFactory factory, PropertyValueModel<EclipseLinkVariableOneToOneMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory) { - return new EclipseLinkVariableOneToOneMappingComposite(subjectHolder, parent, widgetFactory); + return new EclipseLinkVariableOneToOneMappingComposite(subjectHolder, enabledModel, parent, widgetFactory); } } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/JavaEclipseLinkVersionMappingComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/JavaEclipseLinkVersionMappingComposite.java index 447eb1f7d5..9b81692e80 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/JavaEclipseLinkVersionMappingComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/java/JavaEclipseLinkVersionMappingComposite.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2011 Oracle. All rights reserved. + * Copyright (c) 2011, 2012 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. @@ -26,10 +26,11 @@ public class JavaEclipseLinkVersionMappingComposite * @param widgetFactory The factory used to create various common widgets */ public JavaEclipseLinkVersionMappingComposite(PropertyValueModel<? extends VersionMapping> subjectHolder, - Composite parent, - WidgetFactory widgetFactory) { + PropertyValueModel<Boolean> enabledModel, + Composite parent, + WidgetFactory widgetFactory) { - super(subjectHolder, parent, widgetFactory); + super(subjectHolder, enabledModel, parent, widgetFactory); } @Override diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/AbstractEclipseLinkEntityMappingsDetailsPage.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/AbstractEclipseLinkEntityMappingsDetailsPage.java index cd33a5bfb3..9c9390641e 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/AbstractEclipseLinkEntityMappingsDetailsPage.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/AbstractEclipseLinkEntityMappingsDetailsPage.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2008, 2011 Oracle. All rights reserved. + * Copyright (c) 2008, 2012 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. @@ -23,9 +23,14 @@ import org.eclipse.jpt.jpa.ui.internal.details.db.SchemaCombo; import org.eclipse.jpt.jpa.ui.internal.details.orm.AbstractEntityMappingsDetailsPage; import org.eclipse.jpt.jpa.ui.internal.details.orm.EntityMappingsGeneratorsComposite; import org.eclipse.jpt.jpa.ui.internal.details.orm.OrmPackageChooser; -import org.eclipse.jpt.jpa.ui.internal.details.orm.OrmQueriesComposite; import org.eclipse.jpt.jpa.ui.internal.details.orm.PersistenceUnitMetadataComposite; +import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.ui.forms.events.ExpansionAdapter; +import org.eclipse.ui.forms.events.ExpansionEvent; +import org.eclipse.ui.forms.widgets.ExpandableComposite; +import org.eclipse.ui.forms.widgets.Section; /** * Here the layout of this pane: @@ -74,7 +79,7 @@ import org.eclipse.swt.widgets.Composite; * @see EnumFormComboViewer * @see EntityMappingsGeneratorsComposite * @see OrmPackageChooser - * @see OrmQueriesComposite + * @see QueriesComposite * @see PersistenceUnitMetadataComposite * @see SchemaCombo * @@ -105,22 +110,24 @@ public abstract class AbstractEclipseLinkEntityMappingsDetailsPage extends Abstr } protected void initializeConvertersCollapsibleSection(Composite container) { - container = addCollapsibleSection( - container, - EclipseLinkUiDetailsMessages.EclipseLinkTypeMappingComposite_converters - ); + final Section section = this.getWidgetFactory().createSection(container, ExpandableComposite.TITLE_BAR | ExpandableComposite.TWISTIE); + section.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + section.setText(EclipseLinkUiDetailsMessages.EclipseLinkTypeMappingComposite_converters); - this.initializeConvertersSection(container); + section.addExpansionListener(new ExpansionAdapter() { + @Override + public void expansionStateChanging(ExpansionEvent e) { + if (e.getState() && section.getClient() == null) { + section.setClient(initializeConvertersSection(section)); + } + } + }); } - protected void initializeConvertersSection(Composite container) { - new EclipseLinkConvertersComposite( - this, - this.buildConverterHolder(), - container - ); + protected Control initializeConvertersSection(Composite container) { + return new EclipseLinkConvertersComposite(this, this.buildConverterHolder(), container).getControl(); } - + private PropertyValueModel<OrmEclipseLinkConverterContainer> buildConverterHolder() { return new PropertyAspectAdapter<EntityMappings, OrmEclipseLinkConverterContainer>(getSubjectHolder()) { @Override @@ -129,5 +136,4 @@ public abstract class AbstractEclipseLinkEntityMappingsDetailsPage extends Abstr } }; } - }
\ No newline at end of file diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/AbstractOrmEclipseLinkEntity2_xComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/AbstractOrmEclipseLinkEntity2_xComposite.java index 4c2c1df450..1e0d07db59 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/AbstractOrmEclipseLinkEntity2_xComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/AbstractOrmEclipseLinkEntity2_xComposite.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2011 Oracle. + * Copyright (c) 2011, 2012 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 @@ -12,14 +12,12 @@ package org.eclipse.jpt.jpa.eclipselink.ui.internal.details.orm; import org.eclipse.jpt.common.ui.WidgetFactory; import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; -import org.eclipse.jpt.jpa.core.context.GeneratorContainer; -import org.eclipse.jpt.jpa.core.context.QueryContainer; import org.eclipse.jpt.jpa.core.context.orm.OrmEntity; -import org.eclipse.jpt.jpa.eclipselink.core.context.orm.OrmEclipseLinkCaching; import org.eclipse.jpt.jpa.ui.internal.jpa2.details.Entity2_0OverridesComposite; import org.eclipse.jpt.jpa.ui.internal.jpa2.details.Generation2_0Composite; import org.eclipse.jpt.jpa.ui.internal.jpa2.details.Queries2_0Composite; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; public abstract class AbstractOrmEclipseLinkEntity2_xComposite extends AbstractOrmEclipseLinkEntityComposite { @@ -30,23 +28,23 @@ public abstract class AbstractOrmEclipseLinkEntity2_xComposite extends AbstractO } @Override - protected void initializeAttributeOverridesSection(Composite container) { - new Entity2_0OverridesComposite(this, container); + protected Control initializeAttributeOverridesSection(Composite container) { + return new Entity2_0OverridesComposite(this, container).getControl(); } @Override - protected void initializeGeneratorsSection(Composite container, PropertyValueModel<GeneratorContainer> generatorContainerHolder) { - new Generation2_0Composite(this, generatorContainerHolder, container); + protected Control initializeGeneratorsSection(Composite container) { + return new Generation2_0Composite(this, this.buildGeneratorContainerHolder(), container).getControl(); } @Override - protected void initializeCachingSection(Composite container, PropertyValueModel<OrmEclipseLinkCaching> cachingHolder) { - new OrmEclipseLinkCaching2_0Composite(this, cachingHolder, container); + protected Control initializeCachingSection(Composite container) { + return new OrmEclipseLinkCaching2_0Composite(this, this.buildCachingHolder(), container).getControl(); } @Override - protected void initializeQueriesSection(Composite container, PropertyValueModel<QueryContainer> queryContainerHolder) { - new Queries2_0Composite(this, queryContainerHolder, container); + protected Control initializeQueriesSection(Composite container) { + return new Queries2_0Composite(this, this.buildQueryContainerHolder(), container).getControl(); } } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/AbstractOrmEclipseLinkEntityComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/AbstractOrmEclipseLinkEntityComposite.java index f3c6372a17..3b65fe21af 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/AbstractOrmEclipseLinkEntityComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/AbstractOrmEclipseLinkEntityComposite.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2008, 2011 Oracle. + * Copyright (c) 2008, 2012 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 @@ -18,10 +18,16 @@ import org.eclipse.jpt.jpa.eclipselink.core.context.orm.OrmEclipseLinkCaching; import org.eclipse.jpt.jpa.eclipselink.core.context.orm.OrmEclipseLinkConverterContainer; import org.eclipse.jpt.jpa.eclipselink.core.context.orm.OrmEclipseLinkEntity; import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkConvertersComposite; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkEntityAdvancedComposite; +import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkNonEmbeddableTypeMappingAdvancedComposite; import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkUiDetailsMessages; import org.eclipse.jpt.jpa.ui.internal.details.orm.AbstractOrmEntityComposite; +import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.ui.forms.events.ExpansionAdapter; +import org.eclipse.ui.forms.events.ExpansionEvent; +import org.eclipse.ui.forms.widgets.ExpandableComposite; +import org.eclipse.ui.forms.widgets.Section; public abstract class AbstractOrmEclipseLinkEntityComposite extends AbstractOrmEntityComposite { @@ -35,7 +41,7 @@ public abstract class AbstractOrmEclipseLinkEntityComposite extends AbstractOrmE @Override protected void initializeLayout(Composite container) { this.initializeEntityCollapsibleSection(container); - this.initializeCachingCollapsibleSectionPane(container); + this.initializeCachingCollapsibleSection(container); this.initializeQueriesCollapsibleSection(container); this.initializeInheritanceCollapsibleSection(container); this.initializeAttributeOverridesCollapsibleSection(container); @@ -44,20 +50,27 @@ public abstract class AbstractOrmEclipseLinkEntityComposite extends AbstractOrmE this.initializeSecondaryTablesCollapsibleSection(container); this.initializeAdvancedCollapsibleSection(container); } - - protected void initializeCachingCollapsibleSectionPane(Composite container) { - container = addCollapsibleSection( - container, - EclipseLinkUiDetailsMessages.EclipseLinkTypeMappingComposite_caching); - initializeCachingSection(container, buildCachingHolder()); + + protected void initializeCachingCollapsibleSection(Composite container) { + final Section section = this.getWidgetFactory().createSection(container, ExpandableComposite.TITLE_BAR | ExpandableComposite.TWISTIE); + section.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + section.setText(EclipseLinkUiDetailsMessages.EclipseLinkTypeMappingComposite_caching); + + section.addExpansionListener(new ExpansionAdapter() { + @Override + public void expansionStateChanging(ExpansionEvent e) { + if (e.getState() && section.getClient() == null) { + section.setClient(initializeCachingSection(section)); + } + } + }); } - protected void initializeCachingSection(Composite container, PropertyValueModel<OrmEclipseLinkCaching> cachingHolder) { - new OrmEclipseLinkCachingComposite(this, cachingHolder, container); + protected Control initializeCachingSection(Composite container) { + return new OrmEclipseLinkCachingComposite(this, buildCachingHolder(), container).getControl(); } - - private PropertyAspectAdapter<OrmEntity, OrmEclipseLinkCaching> buildCachingHolder() { + protected PropertyAspectAdapter<OrmEntity, OrmEclipseLinkCaching> buildCachingHolder() { return new PropertyAspectAdapter<OrmEntity, OrmEclipseLinkCaching>(getSubjectHolder()) { @Override protected OrmEclipseLinkCaching buildValue_() { @@ -65,16 +78,24 @@ public abstract class AbstractOrmEclipseLinkEntityComposite extends AbstractOrmE } }; } - + protected void initializeConvertersCollapsibleSection(Composite container) { - container = addCollapsibleSection( - container, - EclipseLinkUiDetailsMessages.EclipseLinkTypeMappingComposite_converters); - this.initializeConvertersSection(container, buildConverterContainerModel()); + final Section section = this.getWidgetFactory().createSection(container, ExpandableComposite.TITLE_BAR | ExpandableComposite.TWISTIE); + section.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + section.setText(EclipseLinkUiDetailsMessages.EclipseLinkTypeMappingComposite_converters); + + section.addExpansionListener(new ExpansionAdapter() { + @Override + public void expansionStateChanging(ExpansionEvent e) { + if (e.getState() && section.getClient() == null) { + section.setClient(initializeConvertersSection(section)); + } + } + }); } - - protected void initializeConvertersSection(Composite container, PropertyValueModel<OrmEclipseLinkConverterContainer> converterHolder) { - new EclipseLinkConvertersComposite(this, converterHolder, container); + + protected Control initializeConvertersSection(Composite container) { + return new EclipseLinkConvertersComposite(this, this.buildConverterContainerModel(), container).getControl(); } private PropertyValueModel<OrmEclipseLinkConverterContainer> buildConverterContainerModel() { @@ -85,8 +106,23 @@ public abstract class AbstractOrmEclipseLinkEntityComposite extends AbstractOrmE } }; } - + protected void initializeAdvancedCollapsibleSection(Composite container) { - new EclipseLinkEntityAdvancedComposite(this, container); + final Section section = this.getWidgetFactory().createSection(container, ExpandableComposite.TITLE_BAR | ExpandableComposite.TWISTIE); + section.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + section.setText(EclipseLinkUiDetailsMessages.EclipseLinkTypeMappingComposite_advanced); + + section.addExpansionListener(new ExpansionAdapter() { + @Override + public void expansionStateChanging(ExpansionEvent e) { + if (e.getState() && section.getClient() == null) { + section.setClient(initializeAdvancedSection(section)); + } + } + }); + } + + protected Control initializeAdvancedSection(Composite container) { + return new EclipseLinkNonEmbeddableTypeMappingAdvancedComposite(this, container).getControl(); } } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/AbstractOrmEclipseLinkMappedSuperclassComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/AbstractOrmEclipseLinkMappedSuperclassComposite.java index 94e34d7f99..52ee6daf48 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/AbstractOrmEclipseLinkMappedSuperclassComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/AbstractOrmEclipseLinkMappedSuperclassComposite.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2008, 2011 Oracle. All rights reserved. + * Copyright (c) 2008, 2012 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. @@ -18,15 +18,25 @@ import org.eclipse.jpt.jpa.eclipselink.core.context.orm.OrmEclipseLinkCaching; import org.eclipse.jpt.jpa.eclipselink.core.context.orm.OrmEclipseLinkConverterContainer; import org.eclipse.jpt.jpa.eclipselink.core.context.orm.OrmEclipseLinkMappedSuperclass; import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkConvertersComposite; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkMappedSuperclassAdvancedComposite; +import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkNonEmbeddableTypeMappingAdvancedComposite; import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkUiDetailsMessages; import org.eclipse.jpt.jpa.ui.details.JpaComposite; +import org.eclipse.jpt.jpa.ui.internal.JptUiMessages; import org.eclipse.jpt.jpa.ui.internal.details.AbstractMappedSuperclassComposite; -import org.eclipse.jpt.jpa.ui.internal.details.AccessTypeComposite; -import org.eclipse.jpt.jpa.ui.internal.details.IdClassComposite; -import org.eclipse.jpt.jpa.ui.internal.details.orm.MetadataCompleteComposite; +import org.eclipse.jpt.jpa.ui.internal.details.AccessTypeComboViewer; +import org.eclipse.jpt.jpa.ui.internal.details.IdClassChooser; +import org.eclipse.jpt.jpa.ui.internal.details.JptUiDetailsMessages; +import org.eclipse.jpt.jpa.ui.internal.details.orm.JptUiDetailsOrmMessages; +import org.eclipse.jpt.jpa.ui.internal.details.orm.MetadataCompleteTriStateCheckBox; import org.eclipse.jpt.jpa.ui.internal.details.orm.OrmJavaClassChooser; +import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.ui.forms.events.ExpansionAdapter; +import org.eclipse.ui.forms.events.ExpansionEvent; +import org.eclipse.ui.forms.widgets.ExpandableComposite; +import org.eclipse.ui.forms.widgets.Hyperlink; +import org.eclipse.ui.forms.widgets.Section; public abstract class AbstractOrmEclipseLinkMappedSuperclassComposite extends AbstractMappedSuperclassComposite<OrmMappedSuperclass> @@ -49,22 +59,47 @@ public abstract class AbstractOrmEclipseLinkMappedSuperclassComposite } @Override - protected void initializeMappedSuperclassSection(Composite container) { - new OrmJavaClassChooser(this, getSubjectHolder(), container); - new AccessTypeComposite(this, buildAccessHolder(), container); - new IdClassComposite(this, buildIdClassReferenceHolder(), container); - new MetadataCompleteComposite(this, getSubjectHolder(), container); + protected Control initializeMappedSuperclassSection(Composite container) { + container = this.addSubPane(container, 2, 0, 0, 0, 0); + + // Java class widgets + Hyperlink javaClassHyperlink = addHyperlink(container, JptUiDetailsOrmMessages.OrmJavaClassChooser_javaClass); + new OrmJavaClassChooser(this, getSubjectHolder(), container, javaClassHyperlink); + + // Access type widgets + this.addLabel(container, JptUiMessages.AccessTypeComposite_access); + new AccessTypeComboViewer(this, this.buildAccessHolder(), container); + + // Id class widgets + Hyperlink hyperlink = this.addHyperlink(container,JptUiDetailsMessages.IdClassComposite_label); + new IdClassChooser(this, this.buildIdClassReferenceHolder(), container, hyperlink); + + // Metadata complete widgets + MetadataCompleteTriStateCheckBox metadataCompleteComposite = new MetadataCompleteTriStateCheckBox(this, getSubjectHolder(), container); + GridData gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.horizontalSpan = 2; + metadataCompleteComposite.getControl().setLayoutData(gridData); + + return container; } protected void initializeCachingCollapsibleSection(Composite container) { - container = addCollapsibleSection( - container, - EclipseLinkUiDetailsMessages.EclipseLinkTypeMappingComposite_caching); - this.initializeCachingSection(container, buildCachingHolder()); + final Section section = this.getWidgetFactory().createSection(container, ExpandableComposite.TITLE_BAR | ExpandableComposite.TWISTIE); + section.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + section.setText(EclipseLinkUiDetailsMessages.EclipseLinkTypeMappingComposite_caching); + + section.addExpansionListener(new ExpansionAdapter() { + @Override + public void expansionStateChanging(ExpansionEvent e) { + if (e.getState() && section.getClient() == null) { + section.setClient(initializeCachingSection(section)); + } + } + }); } - protected void initializeCachingSection(Composite container, PropertyValueModel<OrmEclipseLinkCaching> cachingHolder) { - new OrmEclipseLinkCachingComposite(this, cachingHolder, container); + protected Control initializeCachingSection(Composite container) { + return new OrmEclipseLinkCachingComposite(this, buildCachingHolder(), container).getControl(); } protected PropertyValueModel<AccessHolder> buildAccessHolder() { @@ -76,7 +111,7 @@ public abstract class AbstractOrmEclipseLinkMappedSuperclassComposite }; } - private PropertyAspectAdapter<OrmMappedSuperclass, OrmEclipseLinkCaching> buildCachingHolder() { + protected PropertyAspectAdapter<OrmMappedSuperclass, OrmEclipseLinkCaching> buildCachingHolder() { return new PropertyAspectAdapter<OrmMappedSuperclass, OrmEclipseLinkCaching>(getSubjectHolder()) { @Override protected OrmEclipseLinkCaching buildValue_() { @@ -84,18 +119,26 @@ public abstract class AbstractOrmEclipseLinkMappedSuperclassComposite } }; } - + protected void initializeConvertersCollapsibleSection(Composite container) { - container = addCollapsibleSection( - container, - EclipseLinkUiDetailsMessages.EclipseLinkTypeMappingComposite_converters); - this.initializeConvertersSection(container, buildConverterContainerModel()); + final Section section = this.getWidgetFactory().createSection(container, ExpandableComposite.TITLE_BAR | ExpandableComposite.TWISTIE); + section.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + section.setText(EclipseLinkUiDetailsMessages.EclipseLinkTypeMappingComposite_converters); + + section.addExpansionListener(new ExpansionAdapter() { + @Override + public void expansionStateChanging(ExpansionEvent e) { + if (e.getState() && section.getClient() == null) { + section.setClient(initializeConvertersSection(section)); + } + } + }); } - - protected void initializeConvertersSection(Composite container, PropertyValueModel<OrmEclipseLinkConverterContainer> converterHolder) { - new EclipseLinkConvertersComposite(this, converterHolder, container); + + protected Control initializeConvertersSection(Composite container) { + return new EclipseLinkConvertersComposite(this, this.buildConverterContainerModel(), container).getControl(); } - + private PropertyValueModel<OrmEclipseLinkConverterContainer> buildConverterContainerModel() { return new PropertyAspectAdapter<OrmMappedSuperclass, OrmEclipseLinkConverterContainer>(getSubjectHolder()) { @Override @@ -104,8 +147,23 @@ public abstract class AbstractOrmEclipseLinkMappedSuperclassComposite } }; } - + protected void initializeAdvancedCollapsibleSection(Composite container) { - new EclipseLinkMappedSuperclassAdvancedComposite(this, container); + final Section section = this.getWidgetFactory().createSection(container, ExpandableComposite.TITLE_BAR | ExpandableComposite.TWISTIE); + section.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + section.setText(EclipseLinkUiDetailsMessages.EclipseLinkTypeMappingComposite_advanced); + + section.addExpansionListener(new ExpansionAdapter() { + @Override + public void expansionStateChanging(ExpansionEvent e) { + if (e.getState() && section.getClient() == null) { + section.setClient(initializeAdvancedSection(section)); + } + } + }); + } + + protected Control initializeAdvancedSection(Composite container) { + return new EclipseLinkNonEmbeddableTypeMappingAdvancedComposite(this, container).getControl(); } } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/BaseEclipseLinkOrmXmlUiFactory.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/BaseEclipseLinkOrmXmlUiFactory.java index 4049f9d0f1..0d89a0a126 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/BaseEclipseLinkOrmXmlUiFactory.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/BaseEclipseLinkOrmXmlUiFactory.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2007, 2011 Oracle. All rights reserved. + * Copyright (c) 2007, 2012 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. @@ -61,64 +61,72 @@ public abstract class BaseEclipseLinkOrmXmlUiFactory extends BaseOrmXmlUiFactory @Override public JpaComposite createOrmIdMappingComposite( PropertyValueModel<OrmIdMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory) { - return new OrmEclipseLinkIdMappingComposite(subjectHolder, parent, widgetFactory); + return new OrmEclipseLinkIdMappingComposite(subjectHolder, enabledModel, parent, widgetFactory); } @Override public JpaComposite createOrmBasicMappingComposite( PropertyValueModel<OrmBasicMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory) { - return new OrmEclipseLinkBasicMappingComposite(subjectHolder, parent, widgetFactory); + return new OrmEclipseLinkBasicMappingComposite(subjectHolder, enabledModel, parent, widgetFactory); } @Override public JpaComposite createOrmVersionMappingComposite( PropertyValueModel<OrmVersionMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory) { - return new OrmEclipseLinkVersionMappingComposite(subjectHolder, parent, widgetFactory); + return new OrmEclipseLinkVersionMappingComposite(subjectHolder, enabledModel, parent, widgetFactory); } @Override public JpaComposite createOrmManyToOneMappingComposite( PropertyValueModel<OrmManyToOneMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory) { - return new OrmEclipseLinkManyToOneMappingComposite(subjectHolder, parent, widgetFactory); + return new OrmEclipseLinkManyToOneMappingComposite(subjectHolder, enabledModel, parent, widgetFactory); } @Override public JpaComposite createOrmOneToManyMappingComposite( PropertyValueModel<OrmOneToManyMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory) { - return new OrmEclipseLinkOneToManyMappingComposite(subjectHolder, parent, widgetFactory); + return new OrmEclipseLinkOneToManyMappingComposite(subjectHolder, enabledModel, parent, widgetFactory); } @Override public JpaComposite createOrmOneToOneMappingComposite( PropertyValueModel<OrmOneToOneMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory) { - return new OrmEclipseLinkOneToOneMappingComposite(subjectHolder, parent, widgetFactory); + return new OrmEclipseLinkOneToOneMappingComposite(subjectHolder, enabledModel, parent, widgetFactory); } @Override public JpaComposite createOrmManyToManyMappingComposite( PropertyValueModel<OrmManyToManyMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory) { - return new OrmEclipseLinkManyToManyMappingComposite(subjectHolder, parent, widgetFactory); + return new OrmEclipseLinkManyToManyMappingComposite(subjectHolder, enabledModel, parent, widgetFactory); } @Override public JpaComposite createOrmTransientMappingComposite( PropertyValueModel<OrmTransientMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory) { - return new TransientMappingComposite(subjectHolder, parent, widgetFactory); + return new TransientMappingComposite(subjectHolder, enabledModel, parent, widgetFactory); } } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/EclipseLink2_3PersistenceUnitMetadataComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/EclipseLink2_3PersistenceUnitMetadataComposite.java index d29110cf30..16b0ad2b69 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/EclipseLink2_3PersistenceUnitMetadataComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/EclipseLink2_3PersistenceUnitMetadataComposite.java @@ -26,13 +26,15 @@ import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkUiDetailsM import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.TenantDiscriminatorColumnsComposite; import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.TenantDiscriminatorColumnsComposite.TenantDiscriminatorColumnsEditor; import org.eclipse.jpt.jpa.ui.internal.JpaHelpContextIds; -import org.eclipse.jpt.jpa.ui.internal.details.AccessTypeComposite; +import org.eclipse.jpt.jpa.ui.internal.JptUiMessages; +import org.eclipse.jpt.jpa.ui.internal.details.AccessTypeComboViewer; import org.eclipse.jpt.jpa.ui.internal.details.db.CatalogCombo; import org.eclipse.jpt.jpa.ui.internal.details.db.SchemaCombo; import org.eclipse.jpt.jpa.ui.internal.details.orm.EntityMappingsDetailsPage; import org.eclipse.jpt.jpa.ui.internal.details.orm.JptUiDetailsOrmMessages; import org.eclipse.jpt.jpa.ui.internal.details.orm.PersistenceUnitMetadataComposite; import org.eclipse.jpt.jpa.ui.internal.jpa2.Jpa2_0FlagTransformer; +import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Group; @@ -83,46 +85,39 @@ public class EclipseLink2_3PersistenceUnitMetadataComposite extends PersistenceU @Override protected void initializeLayout(Composite container) { - - // Section - container = addCollapsibleSection( - container, - JptUiDetailsOrmMessages.PersistenceUnitMetadataComposite_persistenceUnitSection - ); - // XML mapping metadata complete check box - addCheckBox( + Button metadataCompleteCheckBox = addCheckBox( container, JptUiDetailsOrmMessages.PersistenceUnitMetadataComposite_xmlMappingMetadataCompleteCheckBox, buildXmlMappingMetadataCompleteHolder(), JpaHelpContextIds.ENTITY_ORM_XML ); + GridData gridData = new GridData(); + gridData.horizontalSpan = 2; + metadataCompleteCheckBox.setLayoutData(gridData); // Cascade Persist check-box - addCheckBox( + Button cascadePersistCheckBox = addCheckBox( container, JptUiDetailsOrmMessages.PersistenceUnitMetadataComposite_cascadePersistCheckBox, buildCascadePersistHolder(), JpaHelpContextIds.ENTITY_ORM_CASCADE ); + gridData = new GridData(); + gridData.horizontalSpan = 2; + cascadePersistCheckBox.setLayoutData(gridData); // Schema widgets - addLabeledComposite( - container, - JptUiDetailsOrmMessages.PersistenceUnitMetadataComposite_schema, - addSchemaCombo(container), - JpaHelpContextIds.ENTITY_ORM_SCHEMA - ); + this.addLabel(container, JptUiDetailsOrmMessages.PersistenceUnitMetadataComposite_schema); + this.addSchemaCombo(container); // Catalog widgets - addLabeledComposite( - container, - JptUiDetailsOrmMessages.PersistenceUnitMetadataComposite_catalog, - addCatalogCombo(container), - JpaHelpContextIds.ENTITY_ORM_CATALOG - ); + this.addLabel(container, JptUiDetailsOrmMessages.PersistenceUnitMetadataComposite_catalog); + this.addCatalogCombo(container); - new AccessTypeComposite(this, this.getPersistenceUnitDefaultsHolder(), container); + // Access type widgets + this.addLabel(container, JptUiMessages.AccessTypeComposite_access); + new AccessTypeComboViewer(this, this.getPersistenceUnitDefaultsHolder(), container); // Delimited Identifiers check-box Button diCheckBox = this.addCheckBox( @@ -131,6 +126,9 @@ public class EclipseLink2_3PersistenceUnitMetadataComposite extends PersistenceU this.buildDelimitedIdentifiersHolder(), JpaHelpContextIds.ENTITY_ORM_DELIMITED_IDENTIFIERS ); + gridData = new GridData(); + gridData.horizontalSpan = 2; + diCheckBox.setLayoutData(gridData); SWTTools.controlVisibleState(Jpa2_0FlagTransformer.convertToFlagModel(this.getSubjectHolder()), diCheckBox); @@ -140,19 +138,17 @@ public class EclipseLink2_3PersistenceUnitMetadataComposite extends PersistenceU container, EclipseLinkUiDetailsMessages.TenantDiscriminatorColumns_groupLabel ); + gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.horizontalSpan = 2; + tenantDiscriminatorColumnGroupPane.setLayoutData(gridData); this.tenantDiscriminatorColumnsComposite = new TenantDiscriminatorColumnsComposite<OrmPersistenceUnitDefaults>( getPersistenceUnitDefaultsHolder(), + buildPaneEnablerHolder(), tenantDiscriminatorColumnGroupPane, getWidgetFactory(), buildTenantDiscriminatorColumnsEditor() ); - - installTenantDiscriminatorColumnsPaneEnabler(this.tenantDiscriminatorColumnsComposite); - } - - protected void installTenantDiscriminatorColumnsPaneEnabler(TenantDiscriminatorColumnsComposite<OrmPersistenceUnitDefaults> pane) { - pane.installListPaneEnabler(buildPaneEnablerHolder()); } private PropertyValueModel<Boolean> buildPaneEnablerHolder() { @@ -170,9 +166,10 @@ public class EclipseLink2_3PersistenceUnitMetadataComposite extends PersistenceU class TenantDiscriminatorColumnsProvider implements TenantDiscriminatorColumnsEditor<OrmPersistenceUnitDefaults> { - public void addTenantDiscriminatorColumn(OrmPersistenceUnitDefaults subject) { + public ReadOnlyTenantDiscriminatorColumn2_3 addTenantDiscriminatorColumn(OrmPersistenceUnitDefaults subject) { OrmTenantDiscriminatorColumn2_3 column = ((EclipseLinkPersistenceUnitDefaults) subject).addTenantDiscriminatorColumn(); column.setSpecifiedName(ReadOnlyTenantDiscriminatorColumn2_3.DEFAULT_NAME); + return column; } public ListIterable<ReadOnlyTenantDiscriminatorColumn2_3> getDefaultTenantDiscriminatorColumns(OrmPersistenceUnitDefaults subject) { @@ -203,10 +200,8 @@ public class EclipseLink2_3PersistenceUnitMetadataComposite extends PersistenceU return ((EclipseLinkPersistenceUnitDefaults) subject).hasTenantDiscriminatorColumns(); } - public void removeTenantDiscriminatorColumns(OrmPersistenceUnitDefaults subject, int[] selectedIndices) { - for (int index = selectedIndices.length; index-- > 0; ) { - ((EclipseLinkPersistenceUnitDefaults) subject).removeTenantDiscriminatorColumn(selectedIndices[index]); - } + public void removeTenantDiscriminatorColumn(OrmPersistenceUnitDefaults subject, ReadOnlyTenantDiscriminatorColumn2_3 column) { + ((EclipseLinkPersistenceUnitDefaults) subject).removeTenantDiscriminatorColumn((OrmTenantDiscriminatorColumn2_3) column); } } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/EclipseLinkConverterDialog.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/EclipseLinkConverterDialog.java index fade87acf0..c52f2515b2 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/EclipseLinkConverterDialog.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/EclipseLinkConverterDialog.java @@ -114,20 +114,22 @@ public class EclipseLinkConverterDialog } @Override + protected Composite addComposite(Composite container) { + return this.addSubPane(container, 2, 0, 0, 0, 0); + } + + @Override protected void initializeLayout(Composite container) { - this.nameText = addLabeledText( - container, - EclipseLinkUiDetailsMessages.EclipseLinkConverterDialog_name, - buildNameHolder() - ); + this.addLabel(container, EclipseLinkUiDetailsMessages.EclipseLinkConverterDialog_name); + this.addText(container, buildNameHolder()); - addLabeledCombo( + this.addLabel(container, EclipseLinkUiDetailsMessages.EclipseLinkConverterDialog_converterType); + this.addCombo( container, - EclipseLinkUiDetailsMessages.EclipseLinkConverterDialog_converterType, buildConverterTypeListHolder(), buildConverterTypeHolder(), buildStringConverter(), - null); + (String) null); } protected ListValueModel<Class<? extends EclipseLinkConverter>> buildConverterTypeListHolder() { diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/EclipseLinkEntityMappings2_0DetailsPage.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/EclipseLinkEntityMappings2_0DetailsPage.java index 55fd4380f3..82718d1f47 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/EclipseLinkEntityMappings2_0DetailsPage.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/EclipseLinkEntityMappings2_0DetailsPage.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2009, 2011 Oracle. All rights reserved. + * Copyright (c) 2009, 2012 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. @@ -16,11 +16,11 @@ import org.eclipse.jpt.jpa.ui.internal.details.db.CatalogCombo; import org.eclipse.jpt.jpa.ui.internal.details.db.SchemaCombo; import org.eclipse.jpt.jpa.ui.internal.details.orm.EntityMappingsGeneratorsComposite; import org.eclipse.jpt.jpa.ui.internal.details.orm.OrmPackageChooser; -import org.eclipse.jpt.jpa.ui.internal.details.orm.OrmQueriesComposite; import org.eclipse.jpt.jpa.ui.internal.details.orm.PersistenceUnitMetadataComposite; +import org.eclipse.jpt.jpa.ui.internal.jpa2.details.Queries2_0Composite; import org.eclipse.jpt.jpa.ui.internal.jpa2.details.orm.EntityMappingsGenerators2_0Composite; -import org.eclipse.jpt.jpa.ui.internal.jpa2.details.orm.OrmQueries2_0Composite; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; /** * Here the layout of this pane: @@ -91,12 +91,12 @@ public class EclipseLinkEntityMappings2_0DetailsPage extends AbstractEclipseLink } @Override - protected void initializeGeneratorsCollapsibleSection(Composite container) { - new EntityMappingsGenerators2_0Composite(this, container); + protected Control initializeGeneratorsSection(Composite container) { + return new EntityMappingsGenerators2_0Composite(this, container).getControl(); } @Override - protected void initializeQueriesCollapsibleSection(Composite container) { - new OrmQueries2_0Composite(this, container); + protected Control initializeQueriesSection(Composite container) { + return new Queries2_0Composite(this, this.buildQueryContainerHolder(), container).getControl(); } }
\ No newline at end of file diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/EclipseLinkEntityMappings2_3DetailsPage.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/EclipseLinkEntityMappings2_3DetailsPage.java index fb5f43a3e1..b11f63332f 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/EclipseLinkEntityMappings2_3DetailsPage.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/EclipseLinkEntityMappings2_3DetailsPage.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2011 Oracle. All rights reserved. + * Copyright (c) 2011, 2012 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. @@ -10,9 +10,16 @@ package org.eclipse.jpt.jpa.eclipselink.ui.internal.details.orm; import org.eclipse.jpt.common.ui.WidgetFactory; +import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkUiDetailsMessages; +import org.eclipse.jpt.jpa.ui.internal.jpa2.details.Queries2_0Composite; import org.eclipse.jpt.jpa.ui.internal.jpa2.details.orm.EntityMappingsGenerators2_0Composite; -import org.eclipse.jpt.jpa.ui.internal.jpa2.details.orm.OrmQueries2_0Composite; +import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.ui.forms.events.ExpansionAdapter; +import org.eclipse.ui.forms.events.ExpansionEvent; +import org.eclipse.ui.forms.widgets.ExpandableComposite; +import org.eclipse.ui.forms.widgets.Section; /** * Here the layout of this pane: @@ -89,26 +96,41 @@ public class EclipseLinkEntityMappings2_3DetailsPage extends AbstractEclipseLink } @Override - protected void initializeGeneratorsCollapsibleSection(Composite container) { - new EntityMappingsGenerators2_0Composite(this, container); + protected Control initializeGeneratorsSection(Composite container) { + return new EntityMappingsGenerators2_0Composite(this, container).getControl(); } @Override - protected void initializeQueriesCollapsibleSection(Composite container) { - new OrmQueries2_0Composite(this, container); + protected Control initializeQueriesSection(Composite container) { + return new Queries2_0Composite(this, this.buildQueryContainerHolder(), container).getControl(); } @Override - protected void initializePersistenceUnitMetadataCollapsibleSection(Composite container) { - new EclipseLink2_3PersistenceUnitMetadataComposite( + protected Control initializePersistenceUnitMetadataSection(Composite container) { + return new EclipseLink2_3PersistenceUnitMetadataComposite( this, buildPersistentUnitMetadataHolder(), - addSubPane(container, 5) - ); + container + ).getControl(); } protected void initializeMultitenancyCollapsibleSection(Composite container) { - new EclipseLinkEntityMappingsTenantDiscriminatorColumnsComposite(this, container).getControl(); + final Section section = this.getWidgetFactory().createSection(container, ExpandableComposite.TITLE_BAR | ExpandableComposite.TWISTIE); + section.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + section.setText(EclipseLinkUiDetailsMessages.EclipseLinkTypeMappingComposite_multitenancy); + + section.addExpansionListener(new ExpansionAdapter() { + @Override + public void expansionStateChanging(ExpansionEvent e) { + if (e.getState() && section.getClient() == null) { + section.setClient(initializeMultitenancySection(section)); + } + } + }); + } + + protected Control initializeMultitenancySection(Composite container) { + return new EclipseLinkEntityMappingsTenantDiscriminatorColumnsComposite(this, container).getControl(); } }
\ No newline at end of file diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/EclipseLinkEntityMappingsDetailsPage.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/EclipseLinkEntityMappingsDetailsPage.java index 3939440cff..f66ee8c966 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/EclipseLinkEntityMappingsDetailsPage.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/EclipseLinkEntityMappingsDetailsPage.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2008, 2009 Oracle. All rights reserved. + * Copyright (c) 2008, 2012 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. @@ -16,7 +16,6 @@ import org.eclipse.jpt.jpa.ui.internal.details.db.CatalogCombo; import org.eclipse.jpt.jpa.ui.internal.details.db.SchemaCombo; import org.eclipse.jpt.jpa.ui.internal.details.orm.EntityMappingsGeneratorsComposite; import org.eclipse.jpt.jpa.ui.internal.details.orm.OrmPackageChooser; -import org.eclipse.jpt.jpa.ui.internal.details.orm.OrmQueriesComposite; import org.eclipse.jpt.jpa.ui.internal.details.orm.PersistenceUnitMetadataComposite; import org.eclipse.swt.widgets.Composite; @@ -67,7 +66,7 @@ import org.eclipse.swt.widgets.Composite; * @see EnumFormComboViewer * @see EntityMappingsGeneratorsComposite * @see OrmPackageChooser - * @see OrmQueriesComposite + * @see QueriesComposite * @see PersistenceUnitMetadataComposite * @see SchemaCombo * diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/EclipseLinkEntityMappingsTenantDiscriminatorColumnsComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/EclipseLinkEntityMappingsTenantDiscriminatorColumnsComposite.java index 65584d2503..7778aff0ad 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/EclipseLinkEntityMappingsTenantDiscriminatorColumnsComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/EclipseLinkEntityMappingsTenantDiscriminatorColumnsComposite.java @@ -34,23 +34,14 @@ import org.eclipse.swt.widgets.Group; public class EclipseLinkEntityMappingsTenantDiscriminatorColumnsComposite extends Pane<EntityMappings> { - private TenantDiscriminatorColumnsComposite<EntityMappings> tenantDiscriminatorColumnsComposite; - public EclipseLinkEntityMappingsTenantDiscriminatorColumnsComposite(Pane<? extends EntityMappings> parentPane, Composite parent) { super(parentPane, parent); } - @Override protected void initializeLayout(Composite container) { - - container = this.addCollapsibleSection( - container, - EclipseLinkUiDetailsMessages.EclipseLinkTypeMappingComposite_multitenancy - ); - // Tenant discriminator columns group pane Group tenantDiscriminatorColumnGroupPane = addTitledGroup( container, @@ -59,20 +50,19 @@ public class EclipseLinkEntityMappingsTenantDiscriminatorColumnsComposite extend // Override Default Tenant Discriminator Columns check box addCheckBox( - addSubPane(tenantDiscriminatorColumnGroupPane, 8), + tenantDiscriminatorColumnGroupPane, EclipseLinkUiDetailsMessages.EclipseLinkMultitenancy_overrideDefaultTenantDiscriminatorColumns, buildOverrideDefaultTenantDiscriminatorColumnHolder(), null ); - this.tenantDiscriminatorColumnsComposite = this.buildTenantDiscriminatorColumnsComposite(tenantDiscriminatorColumnGroupPane); - - this.tenantDiscriminatorColumnsComposite.installListPaneEnabler(new TenantDiscriminatorColumnPaneEnablerHolder()); + this.buildTenantDiscriminatorColumnsComposite(tenantDiscriminatorColumnGroupPane); } protected TenantDiscriminatorColumnsComposite<EntityMappings> buildTenantDiscriminatorColumnsComposite(Composite container) { return new TenantDiscriminatorColumnsComposite<EntityMappings>( getSubjectHolder(), + new TenantDiscriminatorColumnPaneEnablerHolder(), container, getWidgetFactory(), buildTenantDiscriminatorColumnsEditor()); @@ -85,9 +75,10 @@ public class EclipseLinkEntityMappingsTenantDiscriminatorColumnsComposite extend class TenantDiscriminatorColumnsProvider implements TenantDiscriminatorColumnsEditor<EntityMappings> { - public void addTenantDiscriminatorColumn(EntityMappings subject) { + public ReadOnlyTenantDiscriminatorColumn2_3 addTenantDiscriminatorColumn(EntityMappings subject) { OrmTenantDiscriminatorColumn2_3 column = ((EclipseLinkEntityMappings) subject).addSpecifiedTenantDiscriminatorColumn(); column.setSpecifiedName(ReadOnlyTenantDiscriminatorColumn2_3.DEFAULT_NAME); + return column; } public ListIterable<ReadOnlyTenantDiscriminatorColumn2_3> getDefaultTenantDiscriminatorColumns(EntityMappings subject) { @@ -118,17 +109,11 @@ public class EclipseLinkEntityMappingsTenantDiscriminatorColumnsComposite extend return ((EclipseLinkEntityMappings) subject).hasSpecifiedTenantDiscriminatorColumns(); } - public void removeTenantDiscriminatorColumns(EntityMappings subject, int[] selectedIndices) { - for (int index = selectedIndices.length; index-- > 0; ) { - ((EclipseLinkEntityMappings) subject).removeSpecifiedTenantDiscriminatorColumn(selectedIndices[index]); - } + public void removeTenantDiscriminatorColumn(EntityMappings subject, ReadOnlyTenantDiscriminatorColumn2_3 column) { + ((EclipseLinkEntityMappings) subject).removeSpecifiedTenantDiscriminatorColumn((OrmTenantDiscriminatorColumn2_3) column); } } - void setSelectedTenantDiscriminatorColumn(ReadOnlyTenantDiscriminatorColumn2_3 tenantDiscriminatorColumn) { - this.tenantDiscriminatorColumnsComposite.setSelectedTenantDiscriminatorColumn(tenantDiscriminatorColumn); - } - private ModifiablePropertyValueModel<Boolean> buildOverrideDefaultTenantDiscriminatorColumnHolder() { return new OverrideDefaultTenantDiscriminatorColumnHolder(); } @@ -223,7 +208,7 @@ public class EclipseLinkEntityMappingsTenantDiscriminatorColumnsComposite extend @Override protected Boolean transform(EntityMappings v) { - return (v == null) ? Boolean.FALSE : super.transform(v); + return (v == null) ? Boolean.FALSE : super.transform(v); } @Override diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/EclipseLinkOrmXml1_1UiFactory.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/EclipseLinkOrmXml1_1UiFactory.java index 654e751cfe..72001f7562 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/EclipseLinkOrmXml1_1UiFactory.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/EclipseLinkOrmXml1_1UiFactory.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2007, 2011 Oracle. All rights reserved. + * Copyright (c) 2007, 2012 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. @@ -30,74 +30,81 @@ public class EclipseLinkOrmXml1_1UiFactory extends BaseEclipseLinkOrmXmlUiFactor @Override public JpaComposite createOrmIdMappingComposite( PropertyValueModel<OrmIdMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory) { - return new OrmEclipseLinkIdMapping1_1Composite(subjectHolder, parent, widgetFactory); + return new OrmEclipseLinkIdMapping1_1Composite(subjectHolder, enabledModel, parent, widgetFactory); } @Override public JpaComposite createOrmEmbeddedIdMappingComposite( PropertyValueModel<OrmEmbeddedIdMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory) { - return new OrmEclipseLinkEmbeddedIdMapping1_1Composite(subjectHolder, parent, widgetFactory); + return new OrmEclipseLinkEmbeddedIdMapping1_1Composite(subjectHolder, enabledModel, parent, widgetFactory); } @Override public JpaComposite createOrmBasicMappingComposite( PropertyValueModel<OrmBasicMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory) { - return new OrmEclipseLinkBasicMapping1_1Composite(subjectHolder, parent, widgetFactory); + return new OrmEclipseLinkBasicMapping1_1Composite(subjectHolder, enabledModel, parent, widgetFactory); } @Override public JpaComposite createOrmVersionMappingComposite( PropertyValueModel<OrmVersionMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory) { - return new OrmEclipseLinkVersionMapping1_1Composite(subjectHolder, parent, widgetFactory); + return new OrmEclipseLinkVersionMapping1_1Composite(subjectHolder, enabledModel, parent, widgetFactory); } @Override public JpaComposite createOrmManyToOneMappingComposite( PropertyValueModel<OrmManyToOneMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory) { - return new OrmEclipseLinkManyToOneMapping1_1Composite(subjectHolder, parent, widgetFactory); + return new OrmEclipseLinkManyToOneMapping1_1Composite(subjectHolder, enabledModel, parent, widgetFactory); } @Override - @SuppressWarnings("unchecked") public JpaComposite createOrmOneToManyMappingComposite( PropertyValueModel<OrmOneToManyMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory) { - return new OrmEclipseLinkOneToManyMapping1_1Composite(subjectHolder, parent, widgetFactory); + return new OrmEclipseLinkOneToManyMapping1_1Composite(subjectHolder, enabledModel, parent, widgetFactory); } @Override - @SuppressWarnings("unchecked") public JpaComposite createOrmOneToOneMappingComposite( PropertyValueModel<OrmOneToOneMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory) { - return new OrmEclipseLinkOneToOneMapping1_1Composite(subjectHolder, parent, widgetFactory); + return new OrmEclipseLinkOneToOneMapping1_1Composite(subjectHolder, enabledModel, parent, widgetFactory); } @Override public JpaComposite createOrmManyToManyMappingComposite( PropertyValueModel<OrmManyToManyMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory) { - return new OrmEclipseLinkManyToManyMapping1_1Composite(subjectHolder, parent, widgetFactory); + return new OrmEclipseLinkManyToManyMapping1_1Composite(subjectHolder, enabledModel, parent, widgetFactory); } @Override public JpaComposite createOrmEmbeddedMappingComposite( PropertyValueModel<OrmEmbeddedMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory) { - return new OrmEclipseLinkEmbeddedMapping1_1Composite(subjectHolder, parent, widgetFactory); + return new OrmEclipseLinkEmbeddedMapping1_1Composite(subjectHolder, enabledModel,parent, widgetFactory); } } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/EclipseLinkOrmXml2_0UiFactory.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/EclipseLinkOrmXml2_0UiFactory.java index ae64260644..c89eec7d73 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/EclipseLinkOrmXml2_0UiFactory.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/EclipseLinkOrmXml2_0UiFactory.java @@ -52,79 +52,89 @@ public class EclipseLinkOrmXml2_0UiFactory @Override public JpaComposite createOrmIdMappingComposite( PropertyValueModel<OrmIdMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory) { - return new OrmEclipseLinkIdMapping2_0Composite(subjectHolder, parent, widgetFactory); + return new OrmEclipseLinkIdMapping2_0Composite(subjectHolder, enabledModel, parent, widgetFactory); } @Override public JpaComposite createOrmEmbeddedMappingComposite( PropertyValueModel<OrmEmbeddedMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory) { - return new OrmEclipseLinkEmbeddedMapping2_0Composite(subjectHolder, parent, widgetFactory); + return new OrmEclipseLinkEmbeddedMapping2_0Composite(subjectHolder, enabledModel, parent, widgetFactory); } @Override public JpaComposite createOrmEmbeddedIdMappingComposite( PropertyValueModel<OrmEmbeddedIdMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory) { - return new OrmEclipseLinkEmbeddedIdMapping2_0Composite(subjectHolder, parent, widgetFactory); + return new OrmEclipseLinkEmbeddedIdMapping2_0Composite(subjectHolder, enabledModel, parent, widgetFactory); } @Override public JpaComposite createOrmBasicMappingComposite( PropertyValueModel<OrmBasicMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory) { - return new OrmEclipseLinkBasicMapping1_1Composite(subjectHolder, parent, widgetFactory); + return new OrmEclipseLinkBasicMapping1_1Composite(subjectHolder, enabledModel, parent, widgetFactory); } @Override public JpaComposite createOrmVersionMappingComposite( PropertyValueModel<OrmVersionMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory) { - return new OrmEclipseLinkVersionMapping1_1Composite(subjectHolder, parent, widgetFactory); + return new OrmEclipseLinkVersionMapping1_1Composite(subjectHolder, enabledModel, parent, widgetFactory); } @Override public JpaComposite createOrmManyToOneMappingComposite( PropertyValueModel<OrmManyToOneMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory) { - return new OrmEclipseLinkManyToOneMapping2_0Composite(subjectHolder, parent, widgetFactory); + return new OrmEclipseLinkManyToOneMapping2_0Composite(subjectHolder, enabledModel, parent, widgetFactory); } @Override public JpaComposite createOrmOneToManyMappingComposite( PropertyValueModel<OrmOneToManyMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory) { - return new OrmEclipseLinkOneToManyMapping2_0Composite(subjectHolder, parent, widgetFactory); + return new OrmEclipseLinkOneToManyMapping2_0Composite(subjectHolder, enabledModel, parent, widgetFactory); } @Override public JpaComposite createOrmOneToOneMappingComposite( PropertyValueModel<OrmOneToOneMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory) { - return new OrmEclipseLinkOneToOneMapping2_0Composite(subjectHolder, parent, widgetFactory); + return new OrmEclipseLinkOneToOneMapping2_0Composite(subjectHolder, enabledModel, parent, widgetFactory); } @Override public JpaComposite createOrmManyToManyMappingComposite( PropertyValueModel<OrmManyToManyMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory) { - return new OrmEclipseLinkManyToManyMapping2_0Composite(subjectHolder, parent, widgetFactory); + return new OrmEclipseLinkManyToManyMapping2_0Composite(subjectHolder, enabledModel, parent, widgetFactory); } public JpaComposite createOrmElementCollectionMapping2_0Composite( PropertyValueModel<OrmElementCollectionMapping2_0> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory) { - return new OrmEclipseLinkElementCollectionMapping2_0Composite(subjectHolder, parent, widgetFactory); + return new OrmEclipseLinkElementCollectionMapping2_0Composite(subjectHolder, enabledModel, parent, widgetFactory); } } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/EclipseLinkOrmXml2_1UiFactory.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/EclipseLinkOrmXml2_1UiFactory.java index 837f7e82d6..9b314371db 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/EclipseLinkOrmXml2_1UiFactory.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/EclipseLinkOrmXml2_1UiFactory.java @@ -23,9 +23,10 @@ public class EclipseLinkOrmXml2_1UiFactory @Override public JpaComposite createOrmElementCollectionMapping2_0Composite( PropertyValueModel<OrmElementCollectionMapping2_0> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory) { - return new OrmEclipseLinkElementCollectionMapping2_1Composite(subjectHolder, parent, widgetFactory); + return new OrmEclipseLinkElementCollectionMapping2_1Composite(subjectHolder, enabledModel, parent, widgetFactory); } @Override diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmAttributeTypeComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmAttributeTypeClassChooser.java index 2119f7e8ca..6c9087949b 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmAttributeTypeComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmAttributeTypeClassChooser.java @@ -20,25 +20,27 @@ import org.eclipse.jpt.jpa.core.context.AccessHolder; import org.eclipse.jpt.jpa.core.context.AttributeMapping; import org.eclipse.jpt.jpa.core.context.orm.OrmAttributeMapping; import org.eclipse.jpt.jpa.eclipselink.core.context.EclipseLinkAccessType; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkUiDetailsMessages; import org.eclipse.swt.widgets.Composite; +import org.eclipse.ui.forms.widgets.Hyperlink; -public class OrmAttributeTypeComposite +public class OrmAttributeTypeClassChooser extends ClassChooserPane<AttributeMapping> { - public OrmAttributeTypeComposite(Pane<?> parentPane, + public OrmAttributeTypeClassChooser(Pane<?> parentPane, PropertyValueModel<? extends AttributeMapping> subjectHolder, - Composite parent) { + Composite parent, + Hyperlink hyperlink) { - this(parentPane, subjectHolder, parent, buildVirtualAttributeModel(subjectHolder)); + this(parentPane, subjectHolder, buildVirtualAttributeModel(subjectHolder), parent, hyperlink); } - public OrmAttributeTypeComposite(Pane<?> parentPane, + public OrmAttributeTypeClassChooser(Pane<?> parentPane, PropertyValueModel<? extends AttributeMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, - PropertyValueModel<Boolean> enabledModel) { + Hyperlink hyperlink) { - super(parentPane, subjectHolder, parent, enabledModel); + super(parentPane, subjectHolder, enabledModel, parent, hyperlink); } @Override @@ -47,11 +49,6 @@ public class OrmAttributeTypeComposite } @Override - protected String getLabelText() { - return EclipseLinkUiDetailsMessages.OrmAttributeTypeComposite_attributeType; - } - - @Override protected ModifiablePropertyValueModel<String> buildTextHolder() { return new PropertyAspectAdapter<AttributeMapping, String>( getSubjectHolder(), diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkArrayMapping2_3UiDefinition.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkArrayMapping2_3UiDefinition.java index ad000afce5..1893978953 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkArrayMapping2_3UiDefinition.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkArrayMapping2_3UiDefinition.java @@ -47,9 +47,10 @@ public class OrmEclipseLinkArrayMapping2_3UiDefinition public JpaComposite buildAttributeMappingComposite( OrmXmlUiFactory factory, PropertyValueModel<EclipseLinkArrayMapping2_3> subjectHolder, - Composite parent, + PropertyValueModel<Boolean> enabledModel, + Composite parent, WidgetFactory widgetFactory) { - return new EclipseLinkArrayMapping2_3Composite(subjectHolder, parent, widgetFactory); + return new EclipseLinkArrayMapping2_3Composite(subjectHolder, enabledModel, parent, widgetFactory); } } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkBasicCollectionMapping1_1Composite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkBasicCollectionMapping1_1Composite.java index f8eff7837e..86aec0547f 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkBasicCollectionMapping1_1Composite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkBasicCollectionMapping1_1Composite.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2009, 2011 Oracle. All rights reserved. + * Copyright (c) 2009, 2012 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. @@ -16,7 +16,8 @@ import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; import org.eclipse.jpt.jpa.core.context.AccessHolder; import org.eclipse.jpt.jpa.eclipselink.core.context.EclipseLinkBasicCollectionMapping; import org.eclipse.jpt.jpa.ui.details.JpaComposite; -import org.eclipse.jpt.jpa.ui.internal.details.AccessTypeComposite; +import org.eclipse.jpt.jpa.ui.internal.JptUiMessages; +import org.eclipse.jpt.jpa.ui.internal.details.AccessTypeComboViewer; import org.eclipse.swt.widgets.Composite; /** @@ -42,8 +43,14 @@ public class OrmEclipseLinkBasicCollectionMapping1_1Composite extends Pane<Eclip } @Override + protected Composite addComposite(Composite container) { + return this.addSubPane(container, 2, 0, 0, 0, 0); + } + + @Override protected void initializeLayout(Composite container) { - new AccessTypeComposite(this, buildAccessHolderHolder(), container); + this.addLabel(container, JptUiMessages.AccessTypeComposite_access); + new AccessTypeComboViewer(this, this.buildAccessHolderHolder(), container); } protected PropertyValueModel<AccessHolder> buildAccessHolderHolder() { diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkBasicCollectionMappingUiDefinition.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkBasicCollectionMappingUiDefinition.java index 20d7eb523b..ad59afbd01 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkBasicCollectionMappingUiDefinition.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkBasicCollectionMappingUiDefinition.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2009, 2011 Oracle. All rights reserved. + * Copyright (c) 2009, 2012 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. @@ -48,9 +48,10 @@ public class OrmEclipseLinkBasicCollectionMappingUiDefinition public JpaComposite buildAttributeMappingComposite( OrmXmlUiFactory factory, PropertyValueModel<EclipseLinkBasicCollectionMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory) { - return new EclipseLinkBasicCollectionMappingComposite(subjectHolder, parent, widgetFactory); + return new EclipseLinkBasicCollectionMappingComposite(subjectHolder, enabledModel, parent, widgetFactory); } } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkBasicMapMapping1_1Composite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkBasicMapMapping1_1Composite.java index 42c83957c4..a49581b295 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkBasicMapMapping1_1Composite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkBasicMapMapping1_1Composite.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2009, 2011 Oracle. All rights reserved. + * Copyright (c) 2009, 2012 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. @@ -16,7 +16,8 @@ import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; import org.eclipse.jpt.jpa.core.context.AccessHolder; import org.eclipse.jpt.jpa.eclipselink.core.context.EclipseLinkBasicMapMapping; import org.eclipse.jpt.jpa.ui.details.JpaComposite; -import org.eclipse.jpt.jpa.ui.internal.details.AccessTypeComposite; +import org.eclipse.jpt.jpa.ui.internal.JptUiMessages; +import org.eclipse.jpt.jpa.ui.internal.details.AccessTypeComboViewer; import org.eclipse.swt.widgets.Composite; /** @@ -42,8 +43,14 @@ public class OrmEclipseLinkBasicMapMapping1_1Composite extends Pane<EclipseLinkB } @Override + protected Composite addComposite(Composite container) { + return this.addSubPane(container, 2, 0, 0, 0, 0); + } + + @Override protected void initializeLayout(Composite container) { - new AccessTypeComposite(this, buildAccessHolderHolder(), container); + this.addLabel(container, JptUiMessages.AccessTypeComposite_access); + new AccessTypeComboViewer(this, this.buildAccessHolderHolder(), container); } protected PropertyValueModel<AccessHolder> buildAccessHolderHolder() { diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkBasicMapMappingUiDefinition.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkBasicMapMappingUiDefinition.java index 901be5bfc9..a034356191 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkBasicMapMappingUiDefinition.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkBasicMapMappingUiDefinition.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2009, 2011 Oracle. All rights reserved. + * Copyright (c) 2009, 2012 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. @@ -48,9 +48,10 @@ public class OrmEclipseLinkBasicMapMappingUiDefinition public JpaComposite buildAttributeMappingComposite( OrmXmlUiFactory factory, PropertyValueModel<EclipseLinkBasicMapMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory) { - return new EclipseLinkBasicMapMappingComposite(subjectHolder, parent, widgetFactory); + return new EclipseLinkBasicMapMappingComposite(subjectHolder, enabledModel, parent, widgetFactory); } } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkBasicMapping1_1Composite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkBasicMapping1_1Composite.java index 45d8dbfac9..7aecc13395 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkBasicMapping1_1Composite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkBasicMapping1_1Composite.java @@ -15,13 +15,20 @@ import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; import org.eclipse.jpt.jpa.core.context.AccessHolder; import org.eclipse.jpt.jpa.core.context.BasicMapping; import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkBasicMappingComposite; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkMutableComposite; -import org.eclipse.jpt.jpa.ui.internal.details.AccessTypeComposite; +import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkMutableTriStateCheckBox; +import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkUiDetailsMessages; +import org.eclipse.jpt.jpa.ui.internal.JptUiMessages; +import org.eclipse.jpt.jpa.ui.internal.details.AccessTypeComboViewer; import org.eclipse.jpt.jpa.ui.internal.details.ColumnComposite; -import org.eclipse.jpt.jpa.ui.internal.details.FetchTypeComposite; -import org.eclipse.jpt.jpa.ui.internal.details.OptionalComposite; -import org.eclipse.jpt.jpa.ui.internal.details.orm.OrmMappingNameChooser; +import org.eclipse.jpt.jpa.ui.internal.details.FetchTypeComboViewer; +import org.eclipse.jpt.jpa.ui.internal.details.JptUiDetailsMessages; +import org.eclipse.jpt.jpa.ui.internal.details.OptionalTriStateCheckBox; +import org.eclipse.jpt.jpa.ui.internal.details.orm.JptUiDetailsOrmMessages; +import org.eclipse.jpt.jpa.ui.internal.details.orm.OrmMappingNameText; +import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.ui.forms.widgets.Hyperlink; public class OrmEclipseLinkBasicMapping1_1Composite extends EclipseLinkBasicMappingComposite<BasicMapping> { @@ -33,10 +40,11 @@ public class OrmEclipseLinkBasicMapping1_1Composite extends EclipseLinkBasicMapp * @param widgetFactory The factory used to create various common widgets */ public OrmEclipseLinkBasicMapping1_1Composite(PropertyValueModel<? extends BasicMapping> subjectHolder, - Composite parent, - WidgetFactory widgetFactory) { - - super(subjectHolder, parent, widgetFactory); + PropertyValueModel<Boolean> enabledModel, + Composite parent, + WidgetFactory widgetFactory) { + + super(subjectHolder, enabledModel, parent, widgetFactory); } @Override @@ -47,14 +55,44 @@ public class OrmEclipseLinkBasicMapping1_1Composite extends EclipseLinkBasicMapp } @Override - protected void initializeBasicSection(Composite container) { - new ColumnComposite(this, buildColumnHolder(), container); - new OrmMappingNameChooser(this, getSubjectHolder(), container); - new OrmAttributeTypeComposite(this, getSubjectHolder(), container); - new AccessTypeComposite(this, buildAccessHolderHolder(), container); - new FetchTypeComposite(this, container); - new OptionalComposite(this, addSubPane(container, 4)); - new EclipseLinkMutableComposite(this, buildMutableHolder(), container); + protected Control initializeBasicSection(Composite container) { + container = this.addSubPane(container, 2, 0, 0, 0, 0); + + // Column widgets + ColumnComposite columnComposite = new ColumnComposite(this, buildColumnHolder(), container); + GridData gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.horizontalSpan = 2; + columnComposite.getControl().setLayoutData(gridData); + + // Name widgets + this.addLabel(container, JptUiDetailsOrmMessages.OrmMappingNameChooser_name); + new OrmMappingNameText(this, getSubjectHolder(), container); + + // Attribute type widgets + Hyperlink attributeTypeHyperlink = this.addHyperlink(container, EclipseLinkUiDetailsMessages.OrmAttributeTypeComposite_attributeType); + new OrmAttributeTypeClassChooser(this, getSubjectHolder(), container, attributeTypeHyperlink); + + // Access type widgets + this.addLabel(container, JptUiMessages.AccessTypeComposite_access); + new AccessTypeComboViewer(this, this.buildAccessHolderHolder(), container); + + // Fetch type widgets + this.addLabel(container, JptUiDetailsMessages.BasicGeneralSection_fetchLabel); + new FetchTypeComboViewer(this, container); + + // Optional widgets + OptionalTriStateCheckBox optionalCheckBox = new OptionalTriStateCheckBox(this, container); + gridData = new GridData(); + gridData.horizontalSpan = 2; + optionalCheckBox.getControl().setLayoutData(gridData); + + // Mutable widgets + EclipseLinkMutableTriStateCheckBox mutableCheckBox = new EclipseLinkMutableTriStateCheckBox(this, buildMutableHolder(), container); + gridData = new GridData(); + gridData.horizontalSpan = 2; + mutableCheckBox.getControl().setLayoutData(gridData); + + return container; } protected PropertyValueModel<AccessHolder> buildAccessHolderHolder() { diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkBasicMappingComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkBasicMappingComposite.java index 8b1fc2234d..7e6bab1add 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkBasicMappingComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkBasicMappingComposite.java @@ -13,12 +13,18 @@ import org.eclipse.jpt.common.ui.WidgetFactory; import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; import org.eclipse.jpt.jpa.core.context.BasicMapping; import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkBasicMappingComposite; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkMutableComposite; +import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkMutableTriStateCheckBox; +import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkUiDetailsMessages; import org.eclipse.jpt.jpa.ui.internal.details.ColumnComposite; -import org.eclipse.jpt.jpa.ui.internal.details.FetchTypeComposite; -import org.eclipse.jpt.jpa.ui.internal.details.OptionalComposite; -import org.eclipse.jpt.jpa.ui.internal.details.orm.OrmMappingNameChooser; +import org.eclipse.jpt.jpa.ui.internal.details.FetchTypeComboViewer; +import org.eclipse.jpt.jpa.ui.internal.details.JptUiDetailsMessages; +import org.eclipse.jpt.jpa.ui.internal.details.OptionalTriStateCheckBox; +import org.eclipse.jpt.jpa.ui.internal.details.orm.JptUiDetailsOrmMessages; +import org.eclipse.jpt.jpa.ui.internal.details.orm.OrmMappingNameText; +import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.ui.forms.widgets.Hyperlink; public class OrmEclipseLinkBasicMappingComposite extends EclipseLinkBasicMappingComposite<BasicMapping> { @@ -30,19 +36,47 @@ public class OrmEclipseLinkBasicMappingComposite extends EclipseLinkBasicMapping * @param widgetFactory The factory used to create various common widgets */ public OrmEclipseLinkBasicMappingComposite(PropertyValueModel<? extends BasicMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory) { - super(subjectHolder, parent, widgetFactory); + super(subjectHolder, enabledModel, parent, widgetFactory); } @Override - protected void initializeBasicSection(Composite container) { - new ColumnComposite(this, buildColumnHolder(), container); - new OrmMappingNameChooser(this, getSubjectHolder(), container); - new OrmAttributeTypeComposite(this, getSubjectHolder(), container); - new FetchTypeComposite(this, container); - new OptionalComposite(this, addSubPane(container, 4)); - new EclipseLinkMutableComposite(this, buildMutableHolder(), container); + protected Control initializeBasicSection(Composite container) { + container = this.addSubPane(container, 2, 0, 0, 0, 0); + + // Column widgets + ColumnComposite columnComposite = new ColumnComposite(this, buildColumnHolder(), container); + GridData gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.horizontalSpan = 2; + columnComposite.getControl().setLayoutData(gridData); + + // Name widgets + this.addLabel(container, JptUiDetailsOrmMessages.OrmMappingNameChooser_name); + new OrmMappingNameText(this, getSubjectHolder(), container); + + // Attribute type widgets + Hyperlink attributeTypeHyperlink = this.addHyperlink(container, EclipseLinkUiDetailsMessages.OrmAttributeTypeComposite_attributeType); + new OrmAttributeTypeClassChooser(this, getSubjectHolder(), container, attributeTypeHyperlink); + + // Fetch type widgets + this.addLabel(container, JptUiDetailsMessages.BasicGeneralSection_fetchLabel); + new FetchTypeComboViewer(this, container); + + // Optional widgets + OptionalTriStateCheckBox optionalCheckBox = new OptionalTriStateCheckBox(this, container); + gridData = new GridData(); + gridData.horizontalSpan = 2; + optionalCheckBox.getControl().setLayoutData(gridData); + + // Mutable widgets + EclipseLinkMutableTriStateCheckBox mutableCheckBox = new EclipseLinkMutableTriStateCheckBox(this, buildMutableHolder(), container); + gridData = new GridData(); + gridData.horizontalSpan = 2; + mutableCheckBox.getControl().setLayoutData(gridData); + + return container; } }
\ No newline at end of file diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkCaching2_0Composite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkCaching2_0Composite.java index 445f3ce413..b00b8456a0 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkCaching2_0Composite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkCaching2_0Composite.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2009, 2011 Oracle. All rights reserved. + * Copyright (c) 2009, 201 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. @@ -12,12 +12,10 @@ package org.eclipse.jpt.jpa.eclipselink.ui.internal.details.orm; import org.eclipse.jpt.common.ui.internal.widgets.Pane; import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; import org.eclipse.jpt.jpa.eclipselink.core.context.orm.OrmEclipseLinkCaching; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkAlwaysRefreshComposite; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkCacheSizeComposite; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkCacheTypeComposite; +import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkCacheSizeCombo; +import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkCacheTypeComboViewer; import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkCaching2_0Composite; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkDisableHitsComposite; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkRefreshOnlyIfNewerComposite; +import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkUiDetailsMessages; import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.java.JavaEclipseLinkEntityComposite; import org.eclipse.swt.widgets.Composite; @@ -42,8 +40,8 @@ import org.eclipse.swt.widgets.Composite; * @see Entity * @see EclipseLinkCaching * @see JavaEclipseLinkEntityComposite - The parent container - * @see EclipseLinkCacheTypeComposite - * @see EclipseLinkCacheSizeComposite + * @see EclipseLinkCacheTypeComboViewer + * @see EclipseLinkCacheSizeCombo * @see EclipseLinkAlwaysRefreshComposite * @see EclipseLinkRefreshOnlyIfNewerComposite * @see EclipseLinkDisableHitsComposite @@ -62,7 +60,8 @@ public class OrmEclipseLinkCaching2_0Composite extends EclipseLinkCaching2_0Comp } @Override - protected void initializeExistenceCheckingComposite(Composite parent) { - new OrmEclipseLinkExistenceCheckingComposite(this, parent); + protected void initializeExistenceCheckingComposite(Composite container) { + this.addLabel(container, EclipseLinkUiDetailsMessages.EclipseLinkExistenceCheckingComposite_label); + this.addExistenceCheckingTypeCombo(container); } }
\ No newline at end of file diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkCachingComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkCachingComposite.java index cf0dd25520..a554e1f656 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkCachingComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkCachingComposite.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2008, 2010 Oracle. All rights reserved. + * Copyright (c) 2008, 2012 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. @@ -12,12 +12,10 @@ package org.eclipse.jpt.jpa.eclipselink.ui.internal.details.orm; import org.eclipse.jpt.common.ui.internal.widgets.Pane; import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; import org.eclipse.jpt.jpa.eclipselink.core.context.orm.OrmEclipseLinkCaching; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkAlwaysRefreshComposite; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkCacheSizeComposite; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkCacheTypeComposite; +import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkCacheSizeCombo; +import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkCacheTypeComboViewer; import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkCachingComposite; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkDisableHitsComposite; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkRefreshOnlyIfNewerComposite; +import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkUiDetailsMessages; import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.java.JavaEclipseLinkEntityComposite; import org.eclipse.swt.widgets.Composite; @@ -42,8 +40,8 @@ import org.eclipse.swt.widgets.Composite; * @see Entity * @see EclipseLinkCaching * @see JavaEclipseLinkEntityComposite - The parent container - * @see EclipseLinkCacheTypeComposite - * @see EclipseLinkCacheSizeComposite + * @see EclipseLinkCacheTypeComboViewer + * @see EclipseLinkCacheSizeCombo * @see EclipseLinkAlwaysRefreshComposite * @see EclipseLinkRefreshOnlyIfNewerComposite * @see EclipseLinkDisableHitsComposite @@ -62,7 +60,8 @@ public class OrmEclipseLinkCachingComposite extends EclipseLinkCachingComposite< } @Override - protected void initializeExistenceCheckingComposite(Composite parent) { - new OrmEclipseLinkExistenceCheckingComposite(this, parent); + protected void initializeExistenceCheckingComposite(Composite container) { + this.addLabel(container, EclipseLinkUiDetailsMessages.EclipseLinkExistenceCheckingComposite_label); + this.addExistenceCheckingTypeCombo(container); } }
\ No newline at end of file diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkElementCollectionMapping2_0Composite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkElementCollectionMapping2_0Composite.java index cc53250494..e35febff2e 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkElementCollectionMapping2_0Composite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkElementCollectionMapping2_0Composite.java @@ -10,7 +10,7 @@ package org.eclipse.jpt.jpa.eclipselink.ui.internal.details.orm; import org.eclipse.jpt.common.ui.WidgetFactory; -import org.eclipse.jpt.common.ui.internal.widgets.Pane; +import org.eclipse.jpt.common.utility.internal.model.value.CompositeBooleanPropertyValueModel; import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter; import org.eclipse.jpt.common.utility.internal.model.value.TransformationPropertyValueModel; import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; @@ -20,17 +20,24 @@ import org.eclipse.jpt.jpa.core.context.Converter; import org.eclipse.jpt.jpa.core.context.ConvertibleMapping; import org.eclipse.jpt.jpa.core.jpa2.context.ElementCollectionMapping2_0; import org.eclipse.jpt.jpa.eclipselink.core.context.EclipseLinkConvert; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkConvertComposite; +import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkConvertCombo; import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkElementCollectionMapping2_0Composite; import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkUiDetailsMessages; -import org.eclipse.jpt.jpa.ui.internal.details.AccessTypeComposite; -import org.eclipse.jpt.jpa.ui.internal.details.FetchTypeComposite; -import org.eclipse.jpt.jpa.ui.internal.details.orm.OrmMappingNameChooser; +import org.eclipse.jpt.jpa.ui.internal.JptUiMessages; +import org.eclipse.jpt.jpa.ui.internal.details.AccessTypeComboViewer; +import org.eclipse.jpt.jpa.ui.internal.details.FetchTypeComboViewer; +import org.eclipse.jpt.jpa.ui.internal.details.JptUiDetailsMessages; +import org.eclipse.jpt.jpa.ui.internal.details.orm.JptUiDetailsOrmMessages; +import org.eclipse.jpt.jpa.ui.internal.details.orm.OrmMappingNameText; import org.eclipse.jpt.jpa.ui.internal.jpa2.details.CollectionTable2_0Composite; -import org.eclipse.jpt.jpa.ui.internal.jpa2.details.TargetClassComposite; +import org.eclipse.jpt.jpa.ui.internal.jpa2.details.JptUiDetailsMessages2_0; +import org.eclipse.jpt.jpa.ui.internal.jpa2.details.TargetClassChooser; 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.Label; +import org.eclipse.ui.forms.widgets.Hyperlink; public class OrmEclipseLinkElementCollectionMapping2_0Composite extends EclipseLinkElementCollectionMapping2_0Composite<ElementCollectionMapping2_0> @@ -43,20 +50,44 @@ public class OrmEclipseLinkElementCollectionMapping2_0Composite * @param widgetFactory The factory used to create various common widgets */ public OrmEclipseLinkElementCollectionMapping2_0Composite(PropertyValueModel<? extends ElementCollectionMapping2_0> subjectHolder, - Composite parent, - WidgetFactory widgetFactory) { + PropertyValueModel<Boolean> enabledModel, + Composite parent, + WidgetFactory widgetFactory) { - super(subjectHolder, parent, widgetFactory); + super(subjectHolder, enabledModel, parent, widgetFactory); } @Override - protected void initializeElementCollectionSection(Composite container) { - new TargetClassComposite(this, container); - new OrmMappingNameChooser(this, getSubjectHolder(), container); - new OrmAttributeTypeComposite(this, getSubjectHolder(), container); - new AccessTypeComposite(this, buildAccessHolderHolder(), container); - new FetchTypeComposite(this, container); - new CollectionTable2_0Composite(this, buildCollectionTableHolder(), container); + protected Control initializeElementCollectionSection(Composite container) { + container = this.addSubPane(container, 2, 0, 0, 0, 0); + + // Target class widgets + Hyperlink hyperlink = this.addHyperlink(container, JptUiDetailsMessages2_0.TargetClassComposite_label); + new TargetClassChooser(this, container, hyperlink); + + // Name widgets + this.addLabel(container, JptUiDetailsOrmMessages.OrmMappingNameChooser_name); + new OrmMappingNameText(this, getSubjectHolder(), container); + + // Attribute type widgets + Hyperlink attributeTypeHyperlink = this.addHyperlink(container, EclipseLinkUiDetailsMessages.OrmAttributeTypeComposite_attributeType); + new OrmAttributeTypeClassChooser(this, getSubjectHolder(), container, attributeTypeHyperlink); + + // Access type widgets + this.addLabel(container, JptUiMessages.AccessTypeComposite_access); + new AccessTypeComboViewer(this, this.buildAccessHolderHolder(), container); + + // Fetch type widgets + this.addLabel(container, JptUiDetailsMessages.BasicGeneralSection_fetchLabel); + new FetchTypeComboViewer(this, container); + + // Collection table widgets + CollectionTable2_0Composite collectionTableComposite = new CollectionTable2_0Composite(this, buildCollectionTableHolder(), container); + GridData gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.horizontalSpan = 2; + collectionTableComposite.getControl().setLayoutData(gridData); + + return container; } protected PropertyValueModel<AccessHolder> buildAccessHolderHolder() { @@ -69,23 +100,25 @@ public class OrmEclipseLinkElementCollectionMapping2_0Composite } @Override - protected void initializeBasicValueTypeSection(Composite typeSection) { - super.initializeBasicValueTypeSection(typeSection); + protected void initializeBasicValueTypeSection(Composite container) { + super.initializeBasicValueTypeSection(container); PropertyValueModel<Converter> converterHolder = buildConverterHolder(); // EclipseLink Converter Button elConverterButton = addRadioButton( - typeSection, + container, EclipseLinkUiDetailsMessages.TypeSection_converted, buildConverterBooleanHolder(EclipseLinkConvert.class), null); ((GridData) elConverterButton.getLayoutData()).horizontalSpan = 2; - Pane<EclipseLinkConvert> convertComposite = buildConvertComposite(buildEclipseLinkConverterHolder(converterHolder), typeSection); - GridData gridData = (GridData) convertComposite.getControl().getLayoutData(); - gridData.horizontalSpan = 2; + PropertyValueModel<EclipseLinkConvert> convertHolder = buildEclipseLinkConverterHolder(converterHolder); + PropertyValueModel<Boolean> convertEnabledModel = CompositeBooleanPropertyValueModel.and(getEnabledModel(), buildEclipseLinkConvertBooleanHolder(convertHolder)); + Label convertLabel = this.addLabel(container, EclipseLinkUiDetailsMessages.EclipseLinkConvertComposite_converterNameLabel, convertEnabledModel); + GridData gridData = new GridData(); gridData.horizontalIndent = 20; - registerSubPane(convertComposite); + convertLabel.setLayoutData(gridData); + registerSubPane(new EclipseLinkConvertCombo(convertHolder, convertEnabledModel, container, getWidgetFactory())); } protected PropertyValueModel<Converter> buildConverterHolder() { @@ -114,10 +147,6 @@ public class OrmEclipseLinkElementCollectionMapping2_0Composite }; } - protected Pane<EclipseLinkConvert> buildConvertComposite(PropertyValueModel<EclipseLinkConvert> convertHolder, Composite container) { - return new EclipseLinkConvertComposite(convertHolder, container, getWidgetFactory()); - } - protected PropertyValueModel<EclipseLinkConvert> buildEclipseLinkConverterHolder(PropertyValueModel<Converter> converterHolder) { return new TransformationPropertyValueModel<Converter, EclipseLinkConvert>(converterHolder) { @Override diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkElementCollectionMapping2_1Composite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkElementCollectionMapping2_1Composite.java index b7026f07f9..91eaabd763 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkElementCollectionMapping2_1Composite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkElementCollectionMapping2_1Composite.java @@ -10,7 +10,7 @@ package org.eclipse.jpt.jpa.eclipselink.ui.internal.details.orm; import org.eclipse.jpt.common.ui.WidgetFactory; -import org.eclipse.jpt.common.ui.internal.widgets.Pane; +import org.eclipse.jpt.common.utility.internal.model.value.CompositeBooleanPropertyValueModel; import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter; import org.eclipse.jpt.common.utility.internal.model.value.TransformationPropertyValueModel; import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; @@ -22,18 +22,25 @@ import org.eclipse.jpt.jpa.core.jpa2.context.ElementCollectionMapping2_0; import org.eclipse.jpt.jpa.eclipselink.core.context.EclipseLinkConvert; import org.eclipse.jpt.jpa.eclipselink.core.context.EclipseLinkElementCollectionMapping2_0; import org.eclipse.jpt.jpa.eclipselink.core.context.EclipseLinkJoinFetch; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkConvertComposite; +import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkConvertCombo; import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkElementCollectionMapping2_0Composite; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkJoinFetchComposite; +import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkJoinFetchComboViewer; import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkUiDetailsMessages; -import org.eclipse.jpt.jpa.ui.internal.details.AccessTypeComposite; -import org.eclipse.jpt.jpa.ui.internal.details.FetchTypeComposite; -import org.eclipse.jpt.jpa.ui.internal.details.orm.OrmMappingNameChooser; +import org.eclipse.jpt.jpa.ui.internal.JptUiMessages; +import org.eclipse.jpt.jpa.ui.internal.details.AccessTypeComboViewer; +import org.eclipse.jpt.jpa.ui.internal.details.FetchTypeComboViewer; +import org.eclipse.jpt.jpa.ui.internal.details.JptUiDetailsMessages; +import org.eclipse.jpt.jpa.ui.internal.details.orm.JptUiDetailsOrmMessages; +import org.eclipse.jpt.jpa.ui.internal.details.orm.OrmMappingNameText; import org.eclipse.jpt.jpa.ui.internal.jpa2.details.CollectionTable2_0Composite; -import org.eclipse.jpt.jpa.ui.internal.jpa2.details.TargetClassComposite; +import org.eclipse.jpt.jpa.ui.internal.jpa2.details.JptUiDetailsMessages2_0; +import org.eclipse.jpt.jpa.ui.internal.jpa2.details.TargetClassChooser; 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.Label; +import org.eclipse.ui.forms.widgets.Hyperlink; public class OrmEclipseLinkElementCollectionMapping2_1Composite extends EclipseLinkElementCollectionMapping2_0Composite<ElementCollectionMapping2_0> @@ -46,21 +53,48 @@ public class OrmEclipseLinkElementCollectionMapping2_1Composite * @param widgetFactory The factory used to create various common widgets */ public OrmEclipseLinkElementCollectionMapping2_1Composite(PropertyValueModel<? extends ElementCollectionMapping2_0> subjectHolder, - Composite parent, - WidgetFactory widgetFactory) { + PropertyValueModel<Boolean> enabledModel, + Composite parent, + WidgetFactory widgetFactory) { - super(subjectHolder, parent, widgetFactory); + super(subjectHolder, enabledModel, parent, widgetFactory); } @Override - protected void initializeElementCollectionSection(Composite container) { - new TargetClassComposite(this, container); - new OrmMappingNameChooser(this, getSubjectHolder(), container); - new OrmAttributeTypeComposite(this, getSubjectHolder(), container); - new AccessTypeComposite(this, buildAccessHolderHolder(), container); - new FetchTypeComposite(this, container); - new EclipseLinkJoinFetchComposite(this, buildJoinFetchHolder(), container); - new CollectionTable2_0Composite(this, buildCollectionTableHolder(), container); + protected Control initializeElementCollectionSection(Composite container) { + container = this.addSubPane(container, 2, 0, 0, 0, 0); + + // Target class widgets + Hyperlink hyperlink = this.addHyperlink(container, JptUiDetailsMessages2_0.TargetClassComposite_label); + new TargetClassChooser(this, container, hyperlink); + + // Name widgets + this.addLabel(container, JptUiDetailsOrmMessages.OrmMappingNameChooser_name); + new OrmMappingNameText(this, getSubjectHolder(), container); + + // Attribute type widgets + Hyperlink attributeTypeHyperlink = this.addHyperlink(container, EclipseLinkUiDetailsMessages.OrmAttributeTypeComposite_attributeType); + new OrmAttributeTypeClassChooser(this, getSubjectHolder(), container, attributeTypeHyperlink); + + // Access type widgets + this.addLabel(container, JptUiMessages.AccessTypeComposite_access); + new AccessTypeComboViewer(this, this.buildAccessHolderHolder(), container); + + // Fetch type widgets + this.addLabel(container, JptUiDetailsMessages.BasicGeneralSection_fetchLabel); + new FetchTypeComboViewer(this, container); + + // Join fetch widgets + this.addLabel(container, EclipseLinkUiDetailsMessages.EclipseLinkJoinFetchComposite_label); + new EclipseLinkJoinFetchComboViewer(this, buildJoinFetchHolder(), container); + + // Collection table widgets + CollectionTable2_0Composite collectionTableComposite = new CollectionTable2_0Composite(this, buildCollectionTableHolder(), container); + GridData gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.horizontalSpan = 2; + collectionTableComposite.getControl().setLayoutData(gridData); + + return container; } protected PropertyValueModel<AccessHolder> buildAccessHolderHolder() { @@ -82,23 +116,25 @@ public class OrmEclipseLinkElementCollectionMapping2_1Composite } @Override - protected void initializeBasicValueTypeSection(Composite typeSection) { - super.initializeBasicValueTypeSection(typeSection); + protected void initializeBasicValueTypeSection(Composite container) { + super.initializeBasicValueTypeSection(container); PropertyValueModel<Converter> converterHolder = buildConverterHolder(); // EclipseLink Converter Button elConverterButton = addRadioButton( - typeSection, + container, EclipseLinkUiDetailsMessages.TypeSection_converted, buildConverterBooleanHolder(EclipseLinkConvert.class), null); ((GridData) elConverterButton.getLayoutData()).horizontalSpan = 2; - Pane<EclipseLinkConvert> convertComposite = buildConvertComposite(buildEclipseLinkConverterHolder(converterHolder), typeSection); - GridData gridData = (GridData) convertComposite.getControl().getLayoutData(); - gridData.horizontalSpan = 2; + PropertyValueModel<EclipseLinkConvert> convertHolder = buildEclipseLinkConverterHolder(converterHolder); + PropertyValueModel<Boolean> convertEnabledModel = CompositeBooleanPropertyValueModel.and(getEnabledModel(), buildEclipseLinkConvertBooleanHolder(convertHolder)); + Label convertLabel = this.addLabel(container, EclipseLinkUiDetailsMessages.EclipseLinkConvertComposite_converterNameLabel, convertEnabledModel); + GridData gridData = new GridData(); gridData.horizontalIndent = 20; - registerSubPane(convertComposite); + convertLabel.setLayoutData(gridData); + registerSubPane(new EclipseLinkConvertCombo(convertHolder, convertEnabledModel, container, getWidgetFactory())); } protected PropertyValueModel<Converter> buildConverterHolder() { @@ -127,10 +163,6 @@ public class OrmEclipseLinkElementCollectionMapping2_1Composite }; } - protected Pane<EclipseLinkConvert> buildConvertComposite(PropertyValueModel<EclipseLinkConvert> convertHolder, Composite container) { - return new EclipseLinkConvertComposite(convertHolder, container, getWidgetFactory()); - } - protected PropertyValueModel<EclipseLinkConvert> buildEclipseLinkConverterHolder(PropertyValueModel<Converter> converterHolder) { return new TransformationPropertyValueModel<Converter, EclipseLinkConvert>(converterHolder) { @Override diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkEmbeddableComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkEmbeddableComposite.java index cf12bc8da5..fc053ae83f 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkEmbeddableComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkEmbeddableComposite.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2008, 2011 Oracle. All rights reserved. + * Copyright (c) 2008, 2012 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. @@ -21,11 +21,20 @@ import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkConverters import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkEmbeddableAdvancedComposite; import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkUiDetailsMessages; import org.eclipse.jpt.jpa.ui.details.JpaComposite; +import org.eclipse.jpt.jpa.ui.internal.JptUiMessages; import org.eclipse.jpt.jpa.ui.internal.details.AbstractEmbeddableComposite; -import org.eclipse.jpt.jpa.ui.internal.details.AccessTypeComposite; -import org.eclipse.jpt.jpa.ui.internal.details.orm.MetadataCompleteComposite; +import org.eclipse.jpt.jpa.ui.internal.details.AccessTypeComboViewer; +import org.eclipse.jpt.jpa.ui.internal.details.orm.JptUiDetailsOrmMessages; +import org.eclipse.jpt.jpa.ui.internal.details.orm.MetadataCompleteTriStateCheckBox; import org.eclipse.jpt.jpa.ui.internal.details.orm.OrmJavaClassChooser; +import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.ui.forms.events.ExpansionAdapter; +import org.eclipse.ui.forms.events.ExpansionEvent; +import org.eclipse.ui.forms.widgets.ExpandableComposite; +import org.eclipse.ui.forms.widgets.Hyperlink; +import org.eclipse.ui.forms.widgets.Section; /** * This pane does not have any widgets. @@ -62,10 +71,24 @@ public class OrmEclipseLinkEmbeddableComposite } @Override - protected void initializeEmbeddableSection(Composite container) { - new OrmJavaClassChooser(this, getSubjectHolder(), container); - new AccessTypeComposite(this, buildAccessHolder(), container); - new MetadataCompleteComposite(this, getSubjectHolder(), container); + protected Control initializeEmbeddableSection(Composite container) { + container = this.addSubPane(container, 2, 0, 0, 0, 0); + + // Java class widgets + Hyperlink javaClassHyperlink = this.addHyperlink(container, JptUiDetailsOrmMessages.OrmJavaClassChooser_javaClass); + new OrmJavaClassChooser(this, getSubjectHolder(), container, javaClassHyperlink); + + // Access type widgets + this.addLabel(container, JptUiMessages.AccessTypeComposite_access); + new AccessTypeComboViewer(this, this.buildAccessHolder(), container); + + // Metadata complete widgets + MetadataCompleteTriStateCheckBox metadataCompleteComposite = new MetadataCompleteTriStateCheckBox(this, getSubjectHolder(), container); + GridData gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.horizontalSpan = 2; + metadataCompleteComposite.getControl().setLayoutData(gridData); + + return container; } protected PropertyValueModel<AccessHolder> buildAccessHolder() { @@ -78,19 +101,26 @@ public class OrmEclipseLinkEmbeddableComposite } }; } + protected void initializeConvertersCollapsibleSection(Composite container) { + final Section section = this.getWidgetFactory().createSection(container, ExpandableComposite.TITLE_BAR | ExpandableComposite.TWISTIE); + section.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + section.setText(EclipseLinkUiDetailsMessages.EclipseLinkTypeMappingComposite_converters); - container = addCollapsibleSection( - container, - EclipseLinkUiDetailsMessages.EclipseLinkTypeMappingComposite_converters - ); - initializeConvertersSection(container, this.buildConverterContainerModel()); + section.addExpansionListener(new ExpansionAdapter() { + @Override + public void expansionStateChanging(ExpansionEvent e) { + if (e.getState() && section.getClient() == null) { + section.setClient(initializeConvertersSection(section)); + } + } + }); } - protected void initializeConvertersSection(Composite container, PropertyValueModel<OrmEclipseLinkConverterContainer> converterHolder) { - new EclipseLinkConvertersComposite(this, converterHolder, container); + protected Control initializeConvertersSection(Composite container) { + return new EclipseLinkConvertersComposite(this, this.buildConverterContainerModel(), container).getControl(); } - + private PropertyValueModel<OrmEclipseLinkConverterContainer> buildConverterContainerModel() { return new PropertyAspectAdapter<OrmEmbeddable, OrmEclipseLinkConverterContainer>(getSubjectHolder()) { @Override @@ -99,8 +129,23 @@ public class OrmEclipseLinkEmbeddableComposite } }; } - + protected void initializeAdvancedCollapsibleSection(Composite container) { - new EclipseLinkEmbeddableAdvancedComposite(this, container); + final Section section = this.getWidgetFactory().createSection(container, ExpandableComposite.TITLE_BAR | ExpandableComposite.TWISTIE); + section.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + section.setText(EclipseLinkUiDetailsMessages.EclipseLinkTypeMappingComposite_advanced); + + section.addExpansionListener(new ExpansionAdapter() { + @Override + public void expansionStateChanging(ExpansionEvent e) { + if (e.getState() && section.getClient() == null) { + section.setClient(initializeAdvancedSection(section)); + } + } + }); + } + + protected Control initializeAdvancedSection(Composite container) { + return new EclipseLinkEmbeddableAdvancedComposite(this, container).getControl(); } }
\ No newline at end of file diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkEmbeddedIdMapping1_1Composite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkEmbeddedIdMapping1_1Composite.java index 2a5ccdade8..75efb18467 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkEmbeddedIdMapping1_1Composite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkEmbeddedIdMapping1_1Composite.java @@ -14,33 +14,57 @@ import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; import org.eclipse.jpt.jpa.core.context.AccessHolder; import org.eclipse.jpt.jpa.core.context.EmbeddedIdMapping; +import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkUiDetailsMessages; +import org.eclipse.jpt.jpa.ui.internal.JptUiMessages; import org.eclipse.jpt.jpa.ui.internal.details.AbstractEmbeddedIdMappingComposite; -import org.eclipse.jpt.jpa.ui.internal.details.AccessTypeComposite; +import org.eclipse.jpt.jpa.ui.internal.details.AccessTypeComboViewer; import org.eclipse.jpt.jpa.ui.internal.details.EmbeddedMappingOverridesComposite; -import org.eclipse.jpt.jpa.ui.internal.details.orm.OrmMappingNameChooser; + +import org.eclipse.jpt.jpa.ui.internal.details.orm.JptUiDetailsOrmMessages; +import org.eclipse.jpt.jpa.ui.internal.details.orm.OrmMappingNameText; +import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.ui.forms.widgets.Hyperlink; public class OrmEclipseLinkEmbeddedIdMapping1_1Composite extends AbstractEmbeddedIdMappingComposite<EmbeddedIdMapping> { public OrmEclipseLinkEmbeddedIdMapping1_1Composite( PropertyValueModel<? extends EmbeddedIdMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory) { - super(subjectHolder, parent, widgetFactory); + super(subjectHolder, enabledModel, parent, widgetFactory); } @Override - protected void initializeEmbeddedIdSection(Composite container) { - new OrmMappingNameChooser(this, getSubjectHolder(), container); - new OrmAttributeTypeComposite(this, getSubjectHolder(), container); - new AccessTypeComposite(this, buildAccessHolderHolder(), container); + protected Control initializeEmbeddedIdSection(Composite container) { + container = this.addSubPane(container, 2, 0, 0, 0, 0); + + // Name widgets + this.addLabel(container, JptUiDetailsOrmMessages.OrmMappingNameChooser_name); + new OrmMappingNameText(this, getSubjectHolder(), container); + + // Attribute type widgets + Hyperlink attributeTypeHyperlink = this.addHyperlink(container, EclipseLinkUiDetailsMessages.OrmAttributeTypeComposite_attributeType); + new OrmAttributeTypeClassChooser(this, getSubjectHolder(), container, attributeTypeHyperlink); - new EmbeddedMappingOverridesComposite( + // Access type widgets + this.addLabel(container, JptUiMessages.AccessTypeComposite_access); + new AccessTypeComboViewer(this, this.buildAccessHolderHolder(), container); + + // Overrides widgets + EmbeddedMappingOverridesComposite overridesComposite = new EmbeddedMappingOverridesComposite( this, container); + GridData gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.horizontalSpan = 2; + overridesComposite.getControl().setLayoutData(gridData); + + return container; } protected PropertyValueModel<AccessHolder> buildAccessHolderHolder() { diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkEmbeddedIdMapping2_0Composite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkEmbeddedIdMapping2_0Composite.java index 8933f37b3d..e38a76eb10 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkEmbeddedIdMapping2_0Composite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkEmbeddedIdMapping2_0Composite.java @@ -13,31 +13,61 @@ package org.eclipse.jpt.jpa.eclipselink.ui.internal.details.orm; import org.eclipse.jpt.common.ui.WidgetFactory; import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; import org.eclipse.jpt.jpa.core.context.EmbeddedIdMapping; -import org.eclipse.jpt.jpa.ui.internal.details.AccessTypeComposite; +import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkUiDetailsMessages; +import org.eclipse.jpt.jpa.ui.internal.JptUiMessages; +import org.eclipse.jpt.jpa.ui.internal.details.AccessTypeComboViewer; import org.eclipse.jpt.jpa.ui.internal.details.EmbeddedMappingOverridesComposite; -import org.eclipse.jpt.jpa.ui.internal.details.orm.OrmMappingNameChooser; +import org.eclipse.jpt.jpa.ui.internal.details.orm.JptUiDetailsOrmMessages; +import org.eclipse.jpt.jpa.ui.internal.details.orm.OrmMappingNameText; import org.eclipse.jpt.jpa.ui.internal.jpa2.details.EmbeddedIdMapping2_0MappedByRelationshipPane; +import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.ui.forms.widgets.Hyperlink; public class OrmEclipseLinkEmbeddedIdMapping2_0Composite extends OrmEclipseLinkEmbeddedIdMapping1_1Composite { public OrmEclipseLinkEmbeddedIdMapping2_0Composite( PropertyValueModel<? extends EmbeddedIdMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory) { - super(subjectHolder, parent, widgetFactory); + super(subjectHolder, enabledModel, parent, widgetFactory); } @Override - protected void initializeEmbeddedIdSection(Composite container) { - new OrmMappingNameChooser(this, getSubjectHolder(), container); - new OrmAttributeTypeComposite(this, getSubjectHolder(), container); - new AccessTypeComposite(this, buildAccessHolderHolder(), container); + protected Control initializeEmbeddedIdSection(Composite container) { + container = this.addSubPane(container, 2, 0, 0, 0, 0); + + // Name widgets + this.addLabel(container, JptUiDetailsOrmMessages.OrmMappingNameChooser_name); + new OrmMappingNameText(this, getSubjectHolder(), container); + + // Attribute type widgets + Hyperlink attributeTypeHyperlink = this.addHyperlink(container, EclipseLinkUiDetailsMessages.OrmAttributeTypeComposite_attributeType); + new OrmAttributeTypeClassChooser(this, getSubjectHolder(), container, attributeTypeHyperlink); + + // Access type widgets + this.addLabel(container, JptUiMessages.AccessTypeComposite_access); + new AccessTypeComboViewer(this, this.buildAccessHolderHolder(), container); - new EmbeddedIdMapping2_0MappedByRelationshipPane(this, getSubjectHolder(), container); - new EmbeddedMappingOverridesComposite(this, container); + // Mapped by relationship widgets + EmbeddedIdMapping2_0MappedByRelationshipPane mappedByRelationshipPane = new EmbeddedIdMapping2_0MappedByRelationshipPane(this, getSubjectHolder(), container); + GridData gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.horizontalSpan = 2; + mappedByRelationshipPane.getControl().setLayoutData(gridData); + + // Overrides widgets + EmbeddedMappingOverridesComposite overridesComposite = new EmbeddedMappingOverridesComposite( + this, + container); + gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.horizontalSpan = 2; + overridesComposite.getControl().setLayoutData(gridData); + + return container; } } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkEmbeddedMapping1_1Composite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkEmbeddedMapping1_1Composite.java index 84af284756..d28f75f763 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkEmbeddedMapping1_1Composite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkEmbeddedMapping1_1Composite.java @@ -14,11 +14,17 @@ import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; import org.eclipse.jpt.jpa.core.context.AccessHolder; import org.eclipse.jpt.jpa.core.context.EmbeddedMapping; +import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkUiDetailsMessages; +import org.eclipse.jpt.jpa.ui.internal.JptUiMessages; import org.eclipse.jpt.jpa.ui.internal.details.AbstractEmbeddedMappingComposite; -import org.eclipse.jpt.jpa.ui.internal.details.AccessTypeComposite; +import org.eclipse.jpt.jpa.ui.internal.details.AccessTypeComboViewer; import org.eclipse.jpt.jpa.ui.internal.details.EmbeddedMappingOverridesComposite; -import org.eclipse.jpt.jpa.ui.internal.details.orm.OrmMappingNameChooser; +import org.eclipse.jpt.jpa.ui.internal.details.orm.JptUiDetailsOrmMessages; +import org.eclipse.jpt.jpa.ui.internal.details.orm.OrmMappingNameText; +import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.ui.forms.widgets.Hyperlink; /** * Here the layout of this pane: @@ -47,22 +53,38 @@ public class OrmEclipseLinkEmbeddedMapping1_1Composite * @param widgetFactory The factory used to create various common widgets */ public OrmEclipseLinkEmbeddedMapping1_1Composite(PropertyValueModel<? extends EmbeddedMapping> subjectHolder, - Composite parent, + PropertyValueModel<Boolean> enabledModel, + Composite parent, WidgetFactory widgetFactory) { - super(subjectHolder, parent, widgetFactory); + super(subjectHolder, enabledModel, parent, widgetFactory); } @Override - protected void initializeEmbeddedSection(Composite container) { - new OrmMappingNameChooser(this, getSubjectHolder(), container); - new OrmAttributeTypeComposite(this, getSubjectHolder(), container); - new AccessTypeComposite(this, buildAccessHolderHolder(), container); + protected Control initializeEmbeddedSection(Composite container) { + container = this.addSubPane(container, 2, 0, 0, 0, 0); - new EmbeddedMappingOverridesComposite( - this, - container - ); + // Name widgets + this.addLabel(container, JptUiDetailsOrmMessages.OrmMappingNameChooser_name); + new OrmMappingNameText(this, getSubjectHolder(), container); + + // Attribute type widgets + Hyperlink attributeTypeHyperlink = this.addHyperlink(container, EclipseLinkUiDetailsMessages.OrmAttributeTypeComposite_attributeType); + new OrmAttributeTypeClassChooser(this, getSubjectHolder(), container, attributeTypeHyperlink); + + // Access type widgets + this.addLabel(container, JptUiMessages.AccessTypeComposite_access); + new AccessTypeComboViewer(this, this.buildAccessHolderHolder(), container); + + // Overrides widgets + EmbeddedMappingOverridesComposite overridesComposite = new EmbeddedMappingOverridesComposite( + this, + container); + GridData gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.horizontalSpan = 2; + overridesComposite.getControl().setLayoutData(gridData); + + return container; } protected PropertyValueModel<AccessHolder> buildAccessHolderHolder() { diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkEmbeddedMapping2_0Composite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkEmbeddedMapping2_0Composite.java index 2c5f5987ec..4e4f5ffdba 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkEmbeddedMapping2_0Composite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkEmbeddedMapping2_0Composite.java @@ -14,12 +14,18 @@ import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; import org.eclipse.jpt.jpa.core.context.AccessHolder; import org.eclipse.jpt.jpa.core.context.EmbeddedMapping; +import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkUiDetailsMessages; +import org.eclipse.jpt.jpa.ui.internal.JptUiMessages; import org.eclipse.jpt.jpa.ui.internal.details.AbstractEmbeddedMappingComposite; -import org.eclipse.jpt.jpa.ui.internal.details.AccessTypeComposite; +import org.eclipse.jpt.jpa.ui.internal.details.AccessTypeComboViewer; import org.eclipse.jpt.jpa.ui.internal.details.java.BaseJavaUiFactory; -import org.eclipse.jpt.jpa.ui.internal.details.orm.OrmMappingNameChooser; +import org.eclipse.jpt.jpa.ui.internal.details.orm.JptUiDetailsOrmMessages; +import org.eclipse.jpt.jpa.ui.internal.details.orm.OrmMappingNameText; import org.eclipse.jpt.jpa.ui.internal.jpa2.details.EmbeddedMapping2_0OverridesComposite; +import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.ui.forms.widgets.Hyperlink; /** * Here the layout of this pane: @@ -49,22 +55,39 @@ public class OrmEclipseLinkEmbeddedMapping2_0Composite * @param widgetFactory The factory used to create various common widgets */ public OrmEclipseLinkEmbeddedMapping2_0Composite(PropertyValueModel<? extends EmbeddedMapping> subjectHolder, - Composite parent, + PropertyValueModel<Boolean> enabledModel, + Composite parent, WidgetFactory widgetFactory) { - super(subjectHolder, parent, widgetFactory); + super(subjectHolder, enabledModel, parent, widgetFactory); } @Override - protected void initializeEmbeddedSection(Composite container) { - new OrmMappingNameChooser(this, getSubjectHolder(), container); - new OrmAttributeTypeComposite(this, getSubjectHolder(), container); - new AccessTypeComposite(this, buildAccessHolderHolder(), container); + protected Control initializeEmbeddedSection(Composite container) { + container = this.addSubPane(container, 2, 0, 0, 0, 0); - new EmbeddedMapping2_0OverridesComposite( + // Name widgets + this.addLabel(container, JptUiDetailsOrmMessages.OrmMappingNameChooser_name); + new OrmMappingNameText(this, getSubjectHolder(), container); + + // Attribute type widgets + Hyperlink attributeTypeHyperlink = this.addHyperlink(container, EclipseLinkUiDetailsMessages.OrmAttributeTypeComposite_attributeType); + new OrmAttributeTypeClassChooser(this, getSubjectHolder(), container, attributeTypeHyperlink); + + // Access type widgets + this.addLabel(container, JptUiMessages.AccessTypeComposite_access); + new AccessTypeComboViewer(this, this.buildAccessHolderHolder(), container); + + // Overrides widgets + EmbeddedMapping2_0OverridesComposite overridesComposite = new EmbeddedMapping2_0OverridesComposite( this, container ); + GridData gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.horizontalSpan = 2; + overridesComposite.getControl().setLayoutData(gridData); + + return container; } protected PropertyValueModel<AccessHolder> buildAccessHolderHolder() { diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkEntity2_3Composite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkEntity2_3Composite.java index f2195a2840..183e5e2532 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkEntity2_3Composite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkEntity2_3Composite.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2011 Oracle. + * Copyright (c) 2011, 2012 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 @@ -18,7 +18,13 @@ import org.eclipse.jpt.jpa.eclipselink.core.context.orm.OrmEclipseLinkEntity; import org.eclipse.jpt.jpa.eclipselink.core.context.orm.OrmEclipseLinkMultitenancy2_3; import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkMultitenancyComposite; import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkUiDetailsMessages; +import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.ui.forms.events.ExpansionAdapter; +import org.eclipse.ui.forms.events.ExpansionEvent; +import org.eclipse.ui.forms.widgets.ExpandableComposite; +import org.eclipse.ui.forms.widgets.Section; public class OrmEclipseLinkEntity2_3Composite extends AbstractOrmEclipseLinkEntity2_xComposite { @@ -31,26 +37,34 @@ public class OrmEclipseLinkEntity2_3Composite extends AbstractOrmEclipseLinkEnti @Override protected void initializeLayout(Composite container) { this.initializeEntityCollapsibleSection(container); - this.initializeCachingCollapsibleSectionPane(container); + this.initializeCachingCollapsibleSection(container); this.initializeQueriesCollapsibleSection(container); this.initializeInheritanceCollapsibleSection(container); this.initializeAttributeOverridesCollapsibleSection(container); - this.initializeMultitenancyCollapsibleSectionPane(container); + this.initializeMultitenancyCollapsibleSection(container); this.initializeGeneratorsCollapsibleSection(container); this.initializeConvertersCollapsibleSection(container); this.initializeSecondaryTablesCollapsibleSection(container); this.initializeAdvancedCollapsibleSection(container); } - protected void initializeMultitenancyCollapsibleSectionPane(Composite container) { - container = addCollapsibleSection( - container, - EclipseLinkUiDetailsMessages.EclipseLinkTypeMappingComposite_multitenancy); - initializeMultitenancySection(container, buildMultitenancyHolder()); + protected void initializeMultitenancyCollapsibleSection(Composite container) { + final Section section = this.getWidgetFactory().createSection(container, ExpandableComposite.TITLE_BAR | ExpandableComposite.TWISTIE); + section.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + section.setText(EclipseLinkUiDetailsMessages.EclipseLinkTypeMappingComposite_multitenancy); + + section.addExpansionListener(new ExpansionAdapter() { + @Override + public void expansionStateChanging(ExpansionEvent e) { + if (e.getState() && section.getClient() == null) { + section.setClient(initializeMultitenancySection(section)); + } + } + }); } - protected void initializeMultitenancySection(Composite container, PropertyValueModel<OrmEclipseLinkMultitenancy2_3> multitenancyHolder) { - new EclipseLinkMultitenancyComposite(this, multitenancyHolder, container); + protected Control initializeMultitenancySection(Composite container) { + return new EclipseLinkMultitenancyComposite(this, this.buildMultitenancyHolder(), container).getControl(); } private PropertyAspectAdapter<OrmEntity, OrmEclipseLinkMultitenancy2_3> buildMultitenancyHolder() { diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkExistenceCheckingComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkExistenceCheckingComposite.java deleted file mode 100644 index 989081b890..0000000000 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkExistenceCheckingComposite.java +++ /dev/null @@ -1,114 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2008, 2012 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.jpa.eclipselink.ui.internal.details.orm; - -import java.util.Collection; -import org.eclipse.jpt.common.ui.internal.widgets.EnumFormComboViewer; -import org.eclipse.jpt.common.ui.internal.widgets.Pane; -import org.eclipse.jpt.jpa.eclipselink.core.context.EclipseLinkCaching; -import org.eclipse.jpt.jpa.eclipselink.core.context.EclipseLinkExistenceType; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkUiDetailsMessages; -import org.eclipse.swt.widgets.Composite; - -/** - * Here is the layout of this pane: - * <pre> - * ------------------------------------------------------------------------- - * | ---------------------------------------------- | - * | x Existence Checking: | |v| | - * | ---------------------------------------------- | - * -------------------------------------------------------------------------</pre> - * - * @see EclipseLinkCaching - * @see CachingComposite - A container of this widget - * - * @version 2.1 - * @since 2.1 - */ -public class OrmEclipseLinkExistenceCheckingComposite extends Pane<EclipseLinkCaching> { - - /** - * Creates a new <code>ExistenceCheckingComposite</code>. - * - * @param parentPane The parent container of this one - * @param parent The parent container - */ - public OrmEclipseLinkExistenceCheckingComposite(Pane<? extends EclipseLinkCaching> parentPane, - Composite parent) { - - super(parentPane, parent, false); - } - - @Override - protected void initializeLayout(Composite container) { - - addLabeledComposite( - container, - EclipseLinkUiDetailsMessages.EclipseLinkExistenceCheckingComposite_label, - addExistenceCheckingTypeCombo(container).getControl(), - null - ); - } - - private EnumFormComboViewer<EclipseLinkCaching, EclipseLinkExistenceType> addExistenceCheckingTypeCombo(Composite container) { - - return new EnumFormComboViewer<EclipseLinkCaching, EclipseLinkExistenceType>(this, container) { - - @Override - protected void addPropertyNames(Collection<String> propertyNames) { - super.addPropertyNames(propertyNames); - propertyNames.add(EclipseLinkCaching.DEFAULT_EXISTENCE_TYPE_PROPERTY); - propertyNames.add(EclipseLinkCaching.SPECIFIED_EXISTENCE_TYPE_PROPERTY); - } - - @Override - protected EclipseLinkExistenceType[] getChoices() { - return EclipseLinkExistenceType.values(); - } - - @Override - protected EclipseLinkExistenceType getDefaultValue() { - return getSubject().getDefaultExistenceType(); - } - - @Override - protected String displayString(EclipseLinkExistenceType value) { - switch (value) { - case CHECK_CACHE : - return EclipseLinkUiDetailsMessages.EclipseLinkExistenceCheckingComposite_check_cache; - case CHECK_DATABASE : - return EclipseLinkUiDetailsMessages.EclipseLinkExistenceCheckingComposite_check_database; - case ASSUME_EXISTENCE : - return EclipseLinkUiDetailsMessages.EclipseLinkExistenceCheckingComposite_assume_existence; - case ASSUME_NON_EXISTENCE : - return EclipseLinkUiDetailsMessages.EclipseLinkExistenceCheckingComposite_assume_non_existence; - default : - throw new IllegalStateException(); - } - } - - @Override - protected EclipseLinkExistenceType getValue() { - return getSubject().getSpecifiedExistenceType(); - } - - @Override - protected void setValue(EclipseLinkExistenceType value) { - getSubject().setSpecifiedExistenceType(value); - } - - @Override - protected boolean sortChoices() { - return false; - } - }; - } - -} diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkIdMapping1_1Composite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkIdMapping1_1Composite.java index 4c576c790c..464c50ad60 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkIdMapping1_1Composite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkIdMapping1_1Composite.java @@ -15,21 +15,28 @@ import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; import org.eclipse.jpt.jpa.core.context.AccessHolder; import org.eclipse.jpt.jpa.core.context.IdMapping; import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkIdMappingComposite; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkMutableComposite; -import org.eclipse.jpt.jpa.ui.internal.details.AccessTypeComposite; +import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkMutableTriStateCheckBox; +import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkUiDetailsMessages; +import org.eclipse.jpt.jpa.ui.internal.JptUiMessages; +import org.eclipse.jpt.jpa.ui.internal.details.AccessTypeComboViewer; import org.eclipse.jpt.jpa.ui.internal.details.ColumnComposite; -import org.eclipse.jpt.jpa.ui.internal.details.orm.OrmMappingNameChooser; +import org.eclipse.jpt.jpa.ui.internal.details.orm.JptUiDetailsOrmMessages; +import org.eclipse.jpt.jpa.ui.internal.details.orm.OrmMappingNameText; +import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.ui.forms.widgets.Hyperlink; public class OrmEclipseLinkIdMapping1_1Composite extends EclipseLinkIdMappingComposite<IdMapping> { public OrmEclipseLinkIdMapping1_1Composite( PropertyValueModel<? extends IdMapping> subjectHolder, - Composite parent, + PropertyValueModel<Boolean> enabledModel, + Composite parent, WidgetFactory widgetFactory) { - super(subjectHolder, parent, widgetFactory); + super(subjectHolder, enabledModel, parent, widgetFactory); } @@ -42,12 +49,34 @@ public class OrmEclipseLinkIdMapping1_1Composite } @Override - protected void initializeIdSection(Composite container) { - new ColumnComposite(this, buildColumnHolder(), container); - new OrmMappingNameChooser(this, getSubjectHolder(), container); - new OrmAttributeTypeComposite(this, getSubjectHolder(), container); - new AccessTypeComposite(this, buildAccessHolderHolder(), container); - new EclipseLinkMutableComposite(this, buildMutableHolder(), container); + protected Control initializeIdSection(Composite container) { + container = this.addSubPane(container, 2, 0, 0, 0, 0); + + // Column widgets + ColumnComposite columnComposite = new ColumnComposite(this, buildColumnHolder(), container); + GridData gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.horizontalSpan = 2; + columnComposite.getControl().setLayoutData(gridData); + + // Name widgets + this.addLabel(container, JptUiDetailsOrmMessages.OrmMappingNameChooser_name); + new OrmMappingNameText(this, getSubjectHolder(), container); + + // Attribute type widgets + Hyperlink attributeTypeHyperlink = this.addHyperlink(container, EclipseLinkUiDetailsMessages.OrmAttributeTypeComposite_attributeType); + new OrmAttributeTypeClassChooser(this, getSubjectHolder(), container, attributeTypeHyperlink); + + // Access type widgets + this.addLabel(container, JptUiMessages.AccessTypeComposite_access); + new AccessTypeComboViewer(this, this.buildAccessHolderHolder(), container); + + // Mutable widgets + EclipseLinkMutableTriStateCheckBox mutableCheckBox = new EclipseLinkMutableTriStateCheckBox(this, buildMutableHolder(), container); + gridData = new GridData(); + gridData.horizontalSpan = 2; + mutableCheckBox.getControl().setLayoutData(gridData); + + return container; } protected PropertyValueModel<AccessHolder> buildAccessHolderHolder() { diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkIdMapping2_0Composite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkIdMapping2_0Composite.java index ad00b36d8d..2a8594e2a4 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkIdMapping2_0Composite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkIdMapping2_0Composite.java @@ -12,34 +12,67 @@ package org.eclipse.jpt.jpa.eclipselink.ui.internal.details.orm; import org.eclipse.jpt.common.ui.WidgetFactory; import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; import org.eclipse.jpt.jpa.core.context.IdMapping; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkMutableComposite; -import org.eclipse.jpt.jpa.ui.internal.details.AccessTypeComposite; +import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkMutableTriStateCheckBox; +import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkUiDetailsMessages; +import org.eclipse.jpt.jpa.ui.internal.JptUiMessages; +import org.eclipse.jpt.jpa.ui.internal.details.AccessTypeComboViewer; import org.eclipse.jpt.jpa.ui.internal.details.ColumnComposite; -import org.eclipse.jpt.jpa.ui.internal.details.orm.OrmMappingNameChooser; +import org.eclipse.jpt.jpa.ui.internal.details.orm.JptUiDetailsOrmMessages; +import org.eclipse.jpt.jpa.ui.internal.details.orm.OrmMappingNameText; import org.eclipse.jpt.jpa.ui.internal.jpa2.details.IdMapping2_0MappedByRelationshipPane; import org.eclipse.jpt.jpa.ui.internal.jpa2.details.IdMappingGeneration2_0Composite; +import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.ui.forms.widgets.Hyperlink; public class OrmEclipseLinkIdMapping2_0Composite extends OrmEclipseLinkIdMapping1_1Composite { public OrmEclipseLinkIdMapping2_0Composite( PropertyValueModel<? extends IdMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory) { - super(subjectHolder, parent, widgetFactory); + super(subjectHolder, enabledModel, parent, widgetFactory); } @Override - protected void initializeIdSection(Composite container) { - new IdMapping2_0MappedByRelationshipPane(this, getSubjectHolder(), container); - new ColumnComposite(this, buildColumnHolder(), container); - new OrmMappingNameChooser(this, getSubjectHolder(), container); - new OrmAttributeTypeComposite(this, getSubjectHolder(), container); - new AccessTypeComposite(this, buildAccessHolderHolder(), container); - new EclipseLinkMutableComposite(this, buildMutableHolder(), container); + protected Control initializeIdSection(Composite container) { + container = this.addSubPane(container, 2, 0, 0, 0, 0); + + IdMapping2_0MappedByRelationshipPane mappedByRelationshipPane = new IdMapping2_0MappedByRelationshipPane(this, getSubjectHolder(), container); + GridData gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.horizontalSpan = 2; + mappedByRelationshipPane.getControl().setLayoutData(gridData); + + // Column widgets + ColumnComposite columnComposite = new ColumnComposite(this, buildColumnHolder(), container); + gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.horizontalSpan = 2; + columnComposite.getControl().setLayoutData(gridData); + + // Name widgets + this.addLabel(container, JptUiDetailsOrmMessages.OrmMappingNameChooser_name); + new OrmMappingNameText(this, getSubjectHolder(), container); + + // Attribute type widgets + Hyperlink attributeTypeHyperlink = this.addHyperlink(container, EclipseLinkUiDetailsMessages.OrmAttributeTypeComposite_attributeType); + new OrmAttributeTypeClassChooser(this, getSubjectHolder(), container, attributeTypeHyperlink); + + // Access type widgets + this.addLabel(container, JptUiMessages.AccessTypeComposite_access); + new AccessTypeComboViewer(this, this.buildAccessHolderHolder(), container); + + // Mutable widgets + EclipseLinkMutableTriStateCheckBox mutableCheckBox = new EclipseLinkMutableTriStateCheckBox(this, buildMutableHolder(), container); + gridData = new GridData(); + gridData.horizontalSpan = 2; + mutableCheckBox.getControl().setLayoutData(gridData); + + return container; } @Override diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkIdMappingComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkIdMappingComposite.java index 83fe510fb0..843c43ab95 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkIdMappingComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkIdMappingComposite.java @@ -13,27 +13,52 @@ import org.eclipse.jpt.common.ui.WidgetFactory; import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; import org.eclipse.jpt.jpa.core.context.IdMapping; import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkIdMappingComposite; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkMutableComposite; +import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkMutableTriStateCheckBox; +import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkUiDetailsMessages; import org.eclipse.jpt.jpa.ui.internal.details.ColumnComposite; -import org.eclipse.jpt.jpa.ui.internal.details.orm.OrmMappingNameChooser; +import org.eclipse.jpt.jpa.ui.internal.details.orm.JptUiDetailsOrmMessages; +import org.eclipse.jpt.jpa.ui.internal.details.orm.OrmMappingNameText; +import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.ui.forms.widgets.Hyperlink; public class OrmEclipseLinkIdMappingComposite extends EclipseLinkIdMappingComposite<IdMapping> { public OrmEclipseLinkIdMappingComposite( PropertyValueModel<? extends IdMapping> subjectHolder, - Composite parent, + PropertyValueModel<Boolean> enabledModel, + Composite parent, WidgetFactory widgetFactory) { - super(subjectHolder, parent, widgetFactory); + super(subjectHolder, enabledModel, parent, widgetFactory); } @Override - protected void initializeIdSection(Composite container) { - new ColumnComposite(this, buildColumnHolder(), container); - new OrmMappingNameChooser(this, getSubjectHolder(), container); - new OrmAttributeTypeComposite(this, getSubjectHolder(), container); - new EclipseLinkMutableComposite(this, buildMutableHolder(), container); + protected Control initializeIdSection(Composite container) { + container = this.addSubPane(container, 2, 0, 0, 0, 0); + + // Column widgets + ColumnComposite columnComposite = new ColumnComposite(this, buildColumnHolder(), container); + GridData gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.horizontalSpan = 2; + columnComposite.getControl().setLayoutData(gridData); + + // Name widgets + this.addLabel(container, JptUiDetailsOrmMessages.OrmMappingNameChooser_name); + new OrmMappingNameText(this, getSubjectHolder(), container); + + // Attribute type widgets + Hyperlink attributeTypeHyperlink = this.addHyperlink(container, EclipseLinkUiDetailsMessages.OrmAttributeTypeComposite_attributeType); + new OrmAttributeTypeClassChooser(this, getSubjectHolder(), container, attributeTypeHyperlink); + + // Mutable widgets + EclipseLinkMutableTriStateCheckBox mutableCheckBox = new EclipseLinkMutableTriStateCheckBox(this, buildMutableHolder(), container); + gridData = new GridData(); + gridData.horizontalSpan = 2; + mutableCheckBox.getControl().setLayoutData(gridData); + + return container; } } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkManyToManyMapping1_1Composite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkManyToManyMapping1_1Composite.java index 3cef067c46..3e2383028a 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkManyToManyMapping1_1Composite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkManyToManyMapping1_1Composite.java @@ -13,16 +13,23 @@ import org.eclipse.jpt.common.ui.WidgetFactory; import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; import org.eclipse.jpt.jpa.core.context.ManyToManyMapping; import org.eclipse.jpt.jpa.core.context.orm.OrmManyToManyMapping; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkJoinFetchComposite; +import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkJoinFetchComboViewer; import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkManyToManyMappingComposite; -import org.eclipse.jpt.jpa.ui.internal.details.AccessTypeComposite; +import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkUiDetailsMessages; +import org.eclipse.jpt.jpa.ui.internal.JptUiMessages; +import org.eclipse.jpt.jpa.ui.internal.details.AccessTypeComboViewer; import org.eclipse.jpt.jpa.ui.internal.details.CascadeComposite; -import org.eclipse.jpt.jpa.ui.internal.details.FetchTypeComposite; +import org.eclipse.jpt.jpa.ui.internal.details.FetchTypeComboViewer; +import org.eclipse.jpt.jpa.ui.internal.details.JptUiDetailsMessages; import org.eclipse.jpt.jpa.ui.internal.details.ManyToManyJoiningStrategyPane; import org.eclipse.jpt.jpa.ui.internal.details.OrderingComposite; -import org.eclipse.jpt.jpa.ui.internal.details.TargetEntityComposite; -import org.eclipse.jpt.jpa.ui.internal.details.orm.OrmMappingNameChooser; +import org.eclipse.jpt.jpa.ui.internal.details.TargetEntityClassChooser; +import org.eclipse.jpt.jpa.ui.internal.details.orm.JptUiDetailsOrmMessages; +import org.eclipse.jpt.jpa.ui.internal.details.orm.OrmMappingNameText; +import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.ui.forms.widgets.Hyperlink; /** * Here the layout of this pane: @@ -56,9 +63,9 @@ import org.eclipse.swt.widgets.Composite; * -----------------------------------------------------------------------------</pre> * * @see {@link ManyToManyMapping} - * @see {@link TargetEntityComposite} + * @see {@link TargetEntityClassChooser} * @see {@link ManyToManyJoiningStrategyPane} - * @see {@link FetchTypeComposite} + * @see {@link FetchTypeComboViewer} * @see {@link CascadeComposite} * @see {@link OrderingComposite} * @@ -76,21 +83,48 @@ public class OrmEclipseLinkManyToManyMapping1_1Composite * @param widgetFactory The factory used to create various common widgets */ public OrmEclipseLinkManyToManyMapping1_1Composite(PropertyValueModel<? extends OrmManyToManyMapping> subjectHolder, - Composite parent, - WidgetFactory widgetFactory) { + PropertyValueModel<Boolean> enabledModel, + Composite parent, + WidgetFactory widgetFactory) { - super(subjectHolder, parent, widgetFactory); + super(subjectHolder, enabledModel, parent, widgetFactory); } @Override - protected void initializeManyToManySection(Composite container) { - new TargetEntityComposite(this, container); - new OrmMappingNameChooser(this, getSubjectHolder(), container); - new OrmAttributeTypeComposite(this, getSubjectHolder(), container); - new AccessTypeComposite(this, buildAccessHolderHolder(), container); - new FetchTypeComposite(this, container); - new EclipseLinkJoinFetchComposite(this, buildJoinFetchableHolder(), container); - new CascadeComposite(this, buildCascadeHolder(), addSubPane(container, 5)); + protected Control initializeManyToManySection(Composite container) { + container = this.addSubPane(container, 2, 0, 0, 0, 0); + + // Target entity widgets + Hyperlink targetEntityHyperlink = this.addHyperlink(container, JptUiDetailsMessages.TargetEntityChooser_label); + new TargetEntityClassChooser(this, container, targetEntityHyperlink); + + // Name widgets + this.addLabel(container, JptUiDetailsOrmMessages.OrmMappingNameChooser_name); + new OrmMappingNameText(this, getSubjectHolder(), container); + + // Attribute type widgets + Hyperlink attributeTypeHyperlink = this.addHyperlink(container, EclipseLinkUiDetailsMessages.OrmAttributeTypeComposite_attributeType); + new OrmAttributeTypeClassChooser(this, getSubjectHolder(), container, attributeTypeHyperlink); + + // Access type widgets + this.addLabel(container, JptUiMessages.AccessTypeComposite_access); + new AccessTypeComboViewer(this, this.buildAccessHolderHolder(), container); + + // Fetch type widgets + this.addLabel(container, JptUiDetailsMessages.BasicGeneralSection_fetchLabel); + new FetchTypeComboViewer(this, container); + + // Join fetch widgets + this.addLabel(container, EclipseLinkUiDetailsMessages.EclipseLinkJoinFetchComposite_label); + new EclipseLinkJoinFetchComboViewer(this, buildJoinFetchableHolder(), container); + + // Cascade widgets + CascadeComposite cascadeComposite = new CascadeComposite(this, buildCascadeHolder(), container); + GridData gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.horizontalSpan = 2; + cascadeComposite.getControl().setLayoutData(gridData); + + return container; } }
\ No newline at end of file diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkManyToManyMapping2_0Composite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkManyToManyMapping2_0Composite.java index 5caa9bf269..d7073e216b 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkManyToManyMapping2_0Composite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkManyToManyMapping2_0Composite.java @@ -12,25 +12,33 @@ package org.eclipse.jpt.jpa.eclipselink.ui.internal.details.orm; import org.eclipse.jpt.common.ui.WidgetFactory; import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; import org.eclipse.jpt.jpa.core.context.orm.OrmManyToManyMapping; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkJoinFetchComposite; +import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkJoinFetchComboViewer; import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkManyToManyMappingComposite; -import org.eclipse.jpt.jpa.ui.internal.details.AccessTypeComposite; -import org.eclipse.jpt.jpa.ui.internal.details.FetchTypeComposite; -import org.eclipse.jpt.jpa.ui.internal.details.TargetEntityComposite; -import org.eclipse.jpt.jpa.ui.internal.details.orm.OrmMappingNameChooser; +import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkUiDetailsMessages; +import org.eclipse.jpt.jpa.ui.internal.JptUiMessages; +import org.eclipse.jpt.jpa.ui.internal.details.AccessTypeComboViewer; +import org.eclipse.jpt.jpa.ui.internal.details.FetchTypeComboViewer; +import org.eclipse.jpt.jpa.ui.internal.details.JptUiDetailsMessages; +import org.eclipse.jpt.jpa.ui.internal.details.TargetEntityClassChooser; +import org.eclipse.jpt.jpa.ui.internal.details.orm.JptUiDetailsOrmMessages; +import org.eclipse.jpt.jpa.ui.internal.details.orm.OrmMappingNameText; import org.eclipse.jpt.jpa.ui.internal.jpa2.details.CascadePane2_0; import org.eclipse.jpt.jpa.ui.internal.jpa2.details.Ordering2_0Composite; +import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.ui.forms.widgets.Hyperlink; public class OrmEclipseLinkManyToManyMapping2_0Composite extends EclipseLinkManyToManyMappingComposite<OrmManyToManyMapping> { public OrmEclipseLinkManyToManyMapping2_0Composite( PropertyValueModel<? extends OrmManyToManyMapping> subjectHolder, - Composite parent, + PropertyValueModel<Boolean> enabledModel, + Composite parent, WidgetFactory widgetFactory) { - super(subjectHolder, parent, widgetFactory); + super(subjectHolder, enabledModel, parent, widgetFactory); } @Override @@ -42,18 +50,44 @@ public class OrmEclipseLinkManyToManyMapping2_0Composite } @Override - protected void initializeManyToManySection(Composite container) { - new TargetEntityComposite(this, container); - new OrmMappingNameChooser(this, getSubjectHolder(), container); - new OrmAttributeTypeComposite(this, getSubjectHolder(), container); - new AccessTypeComposite(this, buildAccessHolderHolder(), container); - new FetchTypeComposite(this, container); - new EclipseLinkJoinFetchComposite(this, buildJoinFetchableHolder(), container); - new CascadePane2_0(this, buildCascadeHolder(), addSubPane(container, 5)); + protected Control initializeManyToManySection(Composite container) { + container = this.addSubPane(container, 2, 0, 0, 0, 0); + + // Target entity widgets + Hyperlink targetEntityHyperlink = this.addHyperlink(container, JptUiDetailsMessages.TargetEntityChooser_label); + new TargetEntityClassChooser(this, container, targetEntityHyperlink); + + // Name widgets + this.addLabel(container, JptUiDetailsOrmMessages.OrmMappingNameChooser_name); + new OrmMappingNameText(this, getSubjectHolder(), container); + + // Attribute type widgets + Hyperlink attributeTypeHyperlink = this.addHyperlink(container, EclipseLinkUiDetailsMessages.OrmAttributeTypeComposite_attributeType); + new OrmAttributeTypeClassChooser(this, getSubjectHolder(), container, attributeTypeHyperlink); + + // Access type widgets + this.addLabel(container, JptUiMessages.AccessTypeComposite_access); + new AccessTypeComboViewer(this, this.buildAccessHolderHolder(), container); + + // Fetch type widgets + this.addLabel(container, JptUiDetailsMessages.BasicGeneralSection_fetchLabel); + new FetchTypeComboViewer(this, container); + + // Join fetch widgets + this.addLabel(container, EclipseLinkUiDetailsMessages.EclipseLinkJoinFetchComposite_label); + new EclipseLinkJoinFetchComboViewer(this, buildJoinFetchableHolder(), container); + + // Cascade widgets + CascadePane2_0 cascadePane = new CascadePane2_0(this, buildCascadeHolder(), container); + GridData gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.horizontalSpan = 2; + cascadePane.getControl().setLayoutData(gridData); + + return container; } - + @Override - protected void initializeOrderingCollapsibleSection(Composite container) { - new Ordering2_0Composite(this, container); + protected Control initializeOrderingSection(Composite container) { + return new Ordering2_0Composite(this, container).getControl(); } }
\ No newline at end of file diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkManyToManyMappingComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkManyToManyMappingComposite.java index 54ecddc9f1..8c2eb22874 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkManyToManyMappingComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkManyToManyMappingComposite.java @@ -13,15 +13,21 @@ import org.eclipse.jpt.common.ui.WidgetFactory; import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; import org.eclipse.jpt.jpa.core.context.ManyToManyMapping; import org.eclipse.jpt.jpa.core.context.orm.OrmManyToManyMapping; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkJoinFetchComposite; +import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkJoinFetchComboViewer; import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkManyToManyMappingComposite; +import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkUiDetailsMessages; import org.eclipse.jpt.jpa.ui.internal.details.CascadeComposite; -import org.eclipse.jpt.jpa.ui.internal.details.FetchTypeComposite; +import org.eclipse.jpt.jpa.ui.internal.details.FetchTypeComboViewer; +import org.eclipse.jpt.jpa.ui.internal.details.JptUiDetailsMessages; import org.eclipse.jpt.jpa.ui.internal.details.ManyToManyJoiningStrategyPane; import org.eclipse.jpt.jpa.ui.internal.details.OrderingComposite; -import org.eclipse.jpt.jpa.ui.internal.details.TargetEntityComposite; -import org.eclipse.jpt.jpa.ui.internal.details.orm.OrmMappingNameChooser; +import org.eclipse.jpt.jpa.ui.internal.details.TargetEntityClassChooser; +import org.eclipse.jpt.jpa.ui.internal.details.orm.JptUiDetailsOrmMessages; +import org.eclipse.jpt.jpa.ui.internal.details.orm.OrmMappingNameText; +import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.ui.forms.widgets.Hyperlink; /** * Here the layout of this pane: @@ -55,9 +61,9 @@ import org.eclipse.swt.widgets.Composite; * -----------------------------------------------------------------------------</pre> * * @see {@link ManyToManyMapping} - * @see {@link TargetEntityComposite} + * @see {@link TargetEntityClassChooser} * @see {@link ManyToManyJoiningStrategyPane} - * @see {@link FetchTypeComposite} + * @see {@link FetchTypeComboViewer} * @see {@link CascadeComposite} * @see {@link OrderingComposite} * @@ -75,20 +81,44 @@ public class OrmEclipseLinkManyToManyMappingComposite * @param widgetFactory The factory used to create various common widgets */ public OrmEclipseLinkManyToManyMappingComposite(PropertyValueModel<? extends OrmManyToManyMapping> subjectHolder, - Composite parent, - WidgetFactory widgetFactory) { + PropertyValueModel<Boolean> enabledModel, + Composite parent, + WidgetFactory widgetFactory) { - super(subjectHolder, parent, widgetFactory); + super(subjectHolder, enabledModel, parent, widgetFactory); } @Override - protected void initializeManyToManySection(Composite container) { - new TargetEntityComposite(this, container); - new OrmMappingNameChooser(this, getSubjectHolder(), container); - new OrmAttributeTypeComposite(this, getSubjectHolder(), container); - new FetchTypeComposite(this, container); - new EclipseLinkJoinFetchComposite(this, buildJoinFetchableHolder(), container); - new CascadeComposite(this, buildCascadeHolder(), addSubPane(container, 5)); + protected Control initializeManyToManySection(Composite container) { + container = this.addSubPane(container, 2, 0, 0, 0, 0); + + // Target entity widgets + Hyperlink targetEntityHyperlink = this.addHyperlink(container, JptUiDetailsMessages.TargetEntityChooser_label); + new TargetEntityClassChooser(this, container, targetEntityHyperlink); + + // Name widgets + this.addLabel(container, JptUiDetailsOrmMessages.OrmMappingNameChooser_name); + new OrmMappingNameText(this, getSubjectHolder(), container); + + // Attribute type widgets + Hyperlink attributeTypeHyperlink = this.addHyperlink(container, EclipseLinkUiDetailsMessages.OrmAttributeTypeComposite_attributeType); + new OrmAttributeTypeClassChooser(this, getSubjectHolder(), container, attributeTypeHyperlink); + + // Fetch type widgets + this.addLabel(container, JptUiDetailsMessages.BasicGeneralSection_fetchLabel); + new FetchTypeComboViewer(this, container); + + // Join fetch widgets + this.addLabel(container, EclipseLinkUiDetailsMessages.EclipseLinkJoinFetchComposite_label); + new EclipseLinkJoinFetchComboViewer(this, buildJoinFetchableHolder(), container); + + // Cascade widgets + CascadeComposite cascadeComposite = new CascadeComposite(this, buildCascadeHolder(), container); + GridData gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.horizontalSpan = 2; + cascadeComposite.getControl().setLayoutData(gridData); + + return container; } }
\ No newline at end of file diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkManyToOneMapping1_1Composite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkManyToOneMapping1_1Composite.java index b1c3616433..be0b8b2838 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkManyToOneMapping1_1Composite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkManyToOneMapping1_1Composite.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2009, 2011 Oracle. All rights reserved. + * Copyright (c) 2009, 2012 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. @@ -14,16 +14,23 @@ import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; import org.eclipse.jpt.jpa.core.context.AccessHolder; import org.eclipse.jpt.jpa.core.context.ManyToOneMapping; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkJoinFetchComposite; +import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkJoinFetchComboViewer; import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkManyToOneMappingComposite; -import org.eclipse.jpt.jpa.ui.internal.details.AccessTypeComposite; +import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkUiDetailsMessages; +import org.eclipse.jpt.jpa.ui.internal.JptUiMessages; +import org.eclipse.jpt.jpa.ui.internal.details.AccessTypeComboViewer; import org.eclipse.jpt.jpa.ui.internal.details.CascadeComposite; -import org.eclipse.jpt.jpa.ui.internal.details.FetchTypeComposite; +import org.eclipse.jpt.jpa.ui.internal.details.FetchTypeComboViewer; +import org.eclipse.jpt.jpa.ui.internal.details.JptUiDetailsMessages; import org.eclipse.jpt.jpa.ui.internal.details.ManyToOneJoiningStrategyPane; -import org.eclipse.jpt.jpa.ui.internal.details.OptionalComposite; -import org.eclipse.jpt.jpa.ui.internal.details.TargetEntityComposite; -import org.eclipse.jpt.jpa.ui.internal.details.orm.OrmMappingNameChooser; +import org.eclipse.jpt.jpa.ui.internal.details.OptionalTriStateCheckBox; +import org.eclipse.jpt.jpa.ui.internal.details.TargetEntityClassChooser; +import org.eclipse.jpt.jpa.ui.internal.details.orm.JptUiDetailsOrmMessages; +import org.eclipse.jpt.jpa.ui.internal.details.orm.OrmMappingNameText; +import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.ui.forms.widgets.Hyperlink; /** * Here the layout of this pane: @@ -57,9 +64,9 @@ import org.eclipse.swt.widgets.Composite; * -----------------------------------------------------------------------------</pre> * * @see {@link ManyToOneMapping} - * @see {@link TargetEntityComposite} + * @see {@link TargetEntityClassChooser} * @see {@link ManyToOneJoiningStrategyPane} - * @see {@link FetchTypeComposite} + * @see {@link FetchTypeComboViewer} * @see {@link OptionalComposite} * @see {@link CascadeComposite} * @@ -77,21 +84,50 @@ public class OrmEclipseLinkManyToOneMapping1_1Composite * @param widgetFactory The factory used to create various common widgets */ public OrmEclipseLinkManyToOneMapping1_1Composite(PropertyValueModel<? extends ManyToOneMapping> subjectHolder, - Composite parent, + PropertyValueModel<Boolean> enabledModel, + Composite parent, WidgetFactory widgetFactory) { - super(subjectHolder, parent, widgetFactory); + super(subjectHolder, enabledModel, parent, widgetFactory); } @Override - protected void initializeManyToOneSection(Composite container) { - new TargetEntityComposite(this, container); - new OrmMappingNameChooser(this, getSubjectHolder(), container); - new AccessTypeComposite(this, buildAccessHolderHolder(), container); - new FetchTypeComposite(this, container); - new EclipseLinkJoinFetchComposite(this, buildJoinFetchableHolder(), container); - new OptionalComposite(this, container); - new CascadeComposite(this, buildCascadeHolder(), addSubPane(container, 5)); + protected Control initializeManyToOneSection(Composite container) { + container = this.addSubPane(container, 2, 0, 0, 0, 0); + + // Target entity widgets + Hyperlink targetEntityHyperlink = this.addHyperlink(container, JptUiDetailsMessages.TargetEntityChooser_label); + new TargetEntityClassChooser(this, container, targetEntityHyperlink); + + // Name widgets + this.addLabel(container, JptUiDetailsOrmMessages.OrmMappingNameChooser_name); + new OrmMappingNameText(this, getSubjectHolder(), container); + + // Access type widgets + this.addLabel(container, JptUiMessages.AccessTypeComposite_access); + new AccessTypeComboViewer(this, this.buildAccessHolderHolder(), container); + + // Fetch type widgets + this.addLabel(container, JptUiDetailsMessages.BasicGeneralSection_fetchLabel); + new FetchTypeComboViewer(this, container); + + // Join fetch widgets + this.addLabel(container, EclipseLinkUiDetailsMessages.EclipseLinkJoinFetchComposite_label); + new EclipseLinkJoinFetchComboViewer(this, buildJoinFetchableHolder(), container); + + // Optional widgets + OptionalTriStateCheckBox optionalCheckBox = new OptionalTriStateCheckBox(this, container); + GridData gridData = new GridData(); + gridData.horizontalSpan = 2; + optionalCheckBox.getControl().setLayoutData(gridData); + + // Cascade widgets + CascadeComposite cascadeComposite = new CascadeComposite(this, buildCascadeHolder(), container); + gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.horizontalSpan = 2; + cascadeComposite.getControl().setLayoutData(gridData); + + return container; } protected PropertyValueModel<AccessHolder> buildAccessHolderHolder() { diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkManyToOneMapping2_0Composite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkManyToOneMapping2_0Composite.java index 89bd4f9bd2..86ddbdaa7c 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkManyToOneMapping2_0Composite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkManyToOneMapping2_0Composite.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2009, 2011 Oracle. All rights reserved. + * Copyright (c) 2009, 2012 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. @@ -17,37 +17,73 @@ import org.eclipse.jpt.jpa.core.context.ManyToOneMapping; import org.eclipse.jpt.jpa.core.jpa2.context.ManyToOneRelationship2_0; import org.eclipse.jpt.jpa.eclipselink.core.context.EclipseLinkJoinFetch; import org.eclipse.jpt.jpa.eclipselink.core.context.EclipseLinkJoinFetchMapping; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkJoinFetchComposite; -import org.eclipse.jpt.jpa.ui.internal.details.AccessTypeComposite; -import org.eclipse.jpt.jpa.ui.internal.details.FetchTypeComposite; -import org.eclipse.jpt.jpa.ui.internal.details.OptionalComposite; -import org.eclipse.jpt.jpa.ui.internal.details.TargetEntityComposite; -import org.eclipse.jpt.jpa.ui.internal.details.orm.OrmMappingNameChooser; +import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkJoinFetchComboViewer; +import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkUiDetailsMessages; +import org.eclipse.jpt.jpa.ui.internal.JptUiMessages; +import org.eclipse.jpt.jpa.ui.internal.details.AccessTypeComboViewer; +import org.eclipse.jpt.jpa.ui.internal.details.FetchTypeComboViewer; +import org.eclipse.jpt.jpa.ui.internal.details.JptUiDetailsMessages; +import org.eclipse.jpt.jpa.ui.internal.details.OptionalTriStateCheckBox; +import org.eclipse.jpt.jpa.ui.internal.details.TargetEntityClassChooser; +import org.eclipse.jpt.jpa.ui.internal.details.orm.JptUiDetailsOrmMessages; +import org.eclipse.jpt.jpa.ui.internal.details.orm.OrmMappingNameText; import org.eclipse.jpt.jpa.ui.internal.jpa2.details.AbstractManyToOneMapping2_0Composite; import org.eclipse.jpt.jpa.ui.internal.jpa2.details.CascadePane2_0; +import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.ui.forms.widgets.Hyperlink; public class OrmEclipseLinkManyToOneMapping2_0Composite extends AbstractManyToOneMapping2_0Composite<ManyToOneMapping, ManyToOneRelationship2_0> { public OrmEclipseLinkManyToOneMapping2_0Composite( PropertyValueModel<? extends ManyToOneMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory) { - super(subjectHolder, parent, widgetFactory); + super(subjectHolder, enabledModel, parent, widgetFactory); } @Override - protected void initializeManyToOneSection(Composite container) { - new TargetEntityComposite(this, container); - new OrmMappingNameChooser(this, getSubjectHolder(), container); - new AccessTypeComposite(this, buildAccessHolderHolder(), container); - new FetchTypeComposite(this, container); - new EclipseLinkJoinFetchComposite(this, buildJoinFetchableHolder(), container); - new OptionalComposite(this, container); - new CascadePane2_0(this, buildCascadeHolder(), addSubPane(container, 5)); + protected Control initializeManyToOneSection(Composite container) { + container = this.addSubPane(container, 2, 0, 0, 0, 0); + + // Target entity widgets + Hyperlink targetEntityHyperlink = this.addHyperlink(container, JptUiDetailsMessages.TargetEntityChooser_label); + new TargetEntityClassChooser(this, container, targetEntityHyperlink); + + // Name widgets + this.addLabel(container, JptUiDetailsOrmMessages.OrmMappingNameChooser_name); + new OrmMappingNameText(this, getSubjectHolder(), container); + + // Access type widgets + this.addLabel(container, JptUiMessages.AccessTypeComposite_access); + new AccessTypeComboViewer(this, this.buildAccessHolderHolder(), container); + + // Fetch type widgets + this.addLabel(container, JptUiDetailsMessages.BasicGeneralSection_fetchLabel); + new FetchTypeComboViewer(this, container); + + // Join fetch widgets + this.addLabel(container, EclipseLinkUiDetailsMessages.EclipseLinkJoinFetchComposite_label); + new EclipseLinkJoinFetchComboViewer(this, buildJoinFetchableHolder(), container); + + // Optional widgets + OptionalTriStateCheckBox optionalCheckBox = new OptionalTriStateCheckBox(this, container); + GridData gridData = new GridData(); + gridData.horizontalSpan = 2; + optionalCheckBox.getControl().setLayoutData(gridData); + + // Cascade widgets + CascadePane2_0 cascadePane = new CascadePane2_0(this, buildCascadeHolder(), container); + gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.horizontalSpan = 2; + cascadePane.getControl().setLayoutData(gridData); + + return container; } protected PropertyValueModel<AccessHolder> buildAccessHolderHolder() { diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkManyToOneMappingComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkManyToOneMappingComposite.java index fd1fb6daf9..e667440f60 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkManyToOneMappingComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkManyToOneMappingComposite.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2010 Oracle. All rights reserved. + * Copyright (c) 2010, 2012 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. @@ -14,15 +14,21 @@ import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; import org.eclipse.jpt.jpa.core.context.AccessHolder; import org.eclipse.jpt.jpa.core.context.ManyToOneMapping; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkJoinFetchComposite; +import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkJoinFetchComboViewer; import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkManyToOneMappingComposite; +import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkUiDetailsMessages; import org.eclipse.jpt.jpa.ui.internal.details.CascadeComposite; -import org.eclipse.jpt.jpa.ui.internal.details.FetchTypeComposite; +import org.eclipse.jpt.jpa.ui.internal.details.FetchTypeComboViewer; +import org.eclipse.jpt.jpa.ui.internal.details.JptUiDetailsMessages; import org.eclipse.jpt.jpa.ui.internal.details.ManyToOneJoiningStrategyPane; -import org.eclipse.jpt.jpa.ui.internal.details.OptionalComposite; -import org.eclipse.jpt.jpa.ui.internal.details.TargetEntityComposite; -import org.eclipse.jpt.jpa.ui.internal.details.orm.OrmMappingNameChooser; +import org.eclipse.jpt.jpa.ui.internal.details.OptionalTriStateCheckBox; +import org.eclipse.jpt.jpa.ui.internal.details.TargetEntityClassChooser; +import org.eclipse.jpt.jpa.ui.internal.details.orm.JptUiDetailsOrmMessages; +import org.eclipse.jpt.jpa.ui.internal.details.orm.OrmMappingNameText; +import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.ui.forms.widgets.Hyperlink; /** * Here the layout of this pane: @@ -56,9 +62,9 @@ import org.eclipse.swt.widgets.Composite; * -----------------------------------------------------------------------------</pre> * * @see {@link ManyToOneMapping} - * @see {@link TargetEntityComposite} + * @see {@link TargetEntityClassChooser} * @see {@link ManyToOneJoiningStrategyPane} - * @see {@link FetchTypeComposite} + * @see {@link FetchTypeComboViewer} * @see {@link OptionalComposite} * @see {@link CascadeComposite} * @@ -76,20 +82,46 @@ public class OrmEclipseLinkManyToOneMappingComposite * @param widgetFactory The factory used to create various common widgets */ public OrmEclipseLinkManyToOneMappingComposite(PropertyValueModel<? extends ManyToOneMapping> subjectHolder, - Composite parent, - WidgetFactory widgetFactory) { + PropertyValueModel<Boolean> enabledModel, + Composite parent, + WidgetFactory widgetFactory) { - super(subjectHolder, parent, widgetFactory); + super(subjectHolder, enabledModel, parent, widgetFactory); } @Override - protected void initializeManyToOneSection(Composite container) { - new TargetEntityComposite(this, container); - new OrmMappingNameChooser(this, getSubjectHolder(), container); - new FetchTypeComposite(this, container); - new EclipseLinkJoinFetchComposite(this, buildJoinFetchableHolder(), container); - new OptionalComposite(this, container); - new CascadeComposite(this, buildCascadeHolder(), addSubPane(container, 5)); + protected Control initializeManyToOneSection(Composite container) { + container = this.addSubPane(container, 2, 0, 0, 0, 0); + + // Target entity widgets + Hyperlink targetEntityHyperlink = this.addHyperlink(container, JptUiDetailsMessages.TargetEntityChooser_label); + new TargetEntityClassChooser(this, container, targetEntityHyperlink); + + // Name widgets + this.addLabel(container, JptUiDetailsOrmMessages.OrmMappingNameChooser_name); + new OrmMappingNameText(this, getSubjectHolder(), container); + + // Fetch type widgets + this.addLabel(container, JptUiDetailsMessages.BasicGeneralSection_fetchLabel); + new FetchTypeComboViewer(this, container); + + // Join fetch widgets + this.addLabel(container, EclipseLinkUiDetailsMessages.EclipseLinkJoinFetchComposite_label); + new EclipseLinkJoinFetchComboViewer(this, buildJoinFetchableHolder(), container); + + // Optional widgets + OptionalTriStateCheckBox optionalCheckBox = new OptionalTriStateCheckBox(this, container); + GridData gridData = new GridData(); + gridData.horizontalSpan = 2; + optionalCheckBox.getControl().setLayoutData(gridData); + + // Cascade widgets + CascadeComposite cascadeComposite = new CascadeComposite(this, buildCascadeHolder(), container); + gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.horizontalSpan = 2; + cascadeComposite.getControl().setLayoutData(gridData); + + return container; } protected PropertyValueModel<AccessHolder> buildAccessHolderHolder() { diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkMappedSuperclass2_0Composite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkMappedSuperclass2_0Composite.java index 88a3d983ab..d827e7588a 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkMappedSuperclass2_0Composite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkMappedSuperclass2_0Composite.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2009, 2011 Oracle. + * Copyright (c) 2009, 2012 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 @@ -13,8 +13,8 @@ package org.eclipse.jpt.jpa.eclipselink.ui.internal.details.orm; import org.eclipse.jpt.common.ui.WidgetFactory; import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; import org.eclipse.jpt.jpa.core.context.orm.OrmMappedSuperclass; -import org.eclipse.jpt.jpa.eclipselink.core.context.orm.OrmEclipseLinkCaching; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; public class OrmEclipseLinkMappedSuperclass2_0Composite extends AbstractOrmEclipseLinkMappedSuperclassComposite @@ -27,7 +27,7 @@ public class OrmEclipseLinkMappedSuperclass2_0Composite } @Override - protected void initializeCachingSection(Composite container, PropertyValueModel<OrmEclipseLinkCaching> cachingHolder) { - new OrmEclipseLinkCaching2_0Composite(this, cachingHolder, container); + protected Control initializeCachingSection(Composite container) { + return new OrmEclipseLinkCaching2_0Composite(this, this.buildCachingHolder(), container).getControl(); } } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkMappedSuperclass2_1Composite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkMappedSuperclass2_1Composite.java index 858af0c74e..59991b026d 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkMappedSuperclass2_1Composite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkMappedSuperclass2_1Composite.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2011 Oracle. All rights reserved. + * Copyright (c) 2011, 2012 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. @@ -14,11 +14,16 @@ import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; import org.eclipse.jpt.jpa.core.context.QueryContainer; import org.eclipse.jpt.jpa.core.context.orm.OrmMappedSuperclass; -import org.eclipse.jpt.jpa.eclipselink.core.context.orm.OrmEclipseLinkCaching; import org.eclipse.jpt.jpa.eclipselink.core.context.orm.OrmEclipseLinkMappedSuperclass; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkUiDetailsMessages; +import org.eclipse.jpt.jpa.ui.internal.details.JptUiDetailsMessages; import org.eclipse.jpt.jpa.ui.internal.details.QueriesComposite; +import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.ui.forms.events.ExpansionAdapter; +import org.eclipse.ui.forms.events.ExpansionEvent; +import org.eclipse.ui.forms.widgets.ExpandableComposite; +import org.eclipse.ui.forms.widgets.Section; public class OrmEclipseLinkMappedSuperclass2_1Composite extends AbstractOrmEclipseLinkMappedSuperclassComposite { @@ -40,20 +45,27 @@ public class OrmEclipseLinkMappedSuperclass2_1Composite } @Override - protected void initializeCachingSection(Composite container, PropertyValueModel<OrmEclipseLinkCaching> cachingHolder) { - new OrmEclipseLinkCaching2_0Composite(this, cachingHolder, container); + protected Control initializeCachingSection(Composite container) { + return new OrmEclipseLinkCaching2_0Composite(this, this.buildCachingHolder(), container).getControl(); } - + protected void initializeQueriesCollapsibleSection(Composite container) { - container = addCollapsibleSection( - container, - EclipseLinkUiDetailsMessages.EclipseLinkMappedSuperclassComposite_queries); - this.initializeQueriesSection(container, buildQueryContainerHolder()); - + final Section section = this.getWidgetFactory().createSection(container, ExpandableComposite.TITLE_BAR | ExpandableComposite.TWISTIE); + section.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + section.setText(JptUiDetailsMessages.EntityComposite_queries); + + section.addExpansionListener(new ExpansionAdapter() { + @Override + public void expansionStateChanging(ExpansionEvent e) { + if (e.getState() && section.getClient() == null) { + section.setClient(initializeQueriesSection(section)); + } + } + }); } - protected void initializeQueriesSection(Composite container, PropertyValueModel<QueryContainer> queryContainerHolder) { - new QueriesComposite(this, queryContainerHolder, container); + protected Control initializeQueriesSection(Composite container) { + return new QueriesComposite(this, this.buildQueryContainerHolder(), container).getControl(); } private PropertyValueModel<QueryContainer> buildQueryContainerHolder() { diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkMappedSuperclass2_3Composite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkMappedSuperclass2_3Composite.java index da19c373fc..e8ca80a41a 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkMappedSuperclass2_3Composite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkMappedSuperclass2_3Composite.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2011 Oracle. All rights reserved. + * Copyright (c) 2011, 2012 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. @@ -14,13 +14,19 @@ import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; import org.eclipse.jpt.jpa.core.context.QueryContainer; import org.eclipse.jpt.jpa.core.context.orm.OrmMappedSuperclass; -import org.eclipse.jpt.jpa.eclipselink.core.context.orm.OrmEclipseLinkCaching; import org.eclipse.jpt.jpa.eclipselink.core.context.orm.OrmEclipseLinkMappedSuperclass; import org.eclipse.jpt.jpa.eclipselink.core.context.orm.OrmEclipseLinkMultitenancy2_3; import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkMultitenancyComposite; import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkUiDetailsMessages; +import org.eclipse.jpt.jpa.ui.internal.details.JptUiDetailsMessages; import org.eclipse.jpt.jpa.ui.internal.details.QueriesComposite; +import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.ui.forms.events.ExpansionAdapter; +import org.eclipse.ui.forms.events.ExpansionEvent; +import org.eclipse.ui.forms.widgets.ExpandableComposite; +import org.eclipse.ui.forms.widgets.Section; public class OrmEclipseLinkMappedSuperclass2_3Composite extends AbstractOrmEclipseLinkMappedSuperclassComposite { @@ -43,20 +49,27 @@ public class OrmEclipseLinkMappedSuperclass2_3Composite } @Override - protected void initializeCachingSection(Composite container, PropertyValueModel<OrmEclipseLinkCaching> cachingHolder) { - new OrmEclipseLinkCaching2_0Composite(this, cachingHolder, container); + protected Control initializeCachingSection(Composite container) { + return new OrmEclipseLinkCaching2_0Composite(this, this.buildCachingHolder(), container).getControl(); } - + protected void initializeQueriesCollapsibleSection(Composite container) { - container = addCollapsibleSection( - container, - EclipseLinkUiDetailsMessages.EclipseLinkMappedSuperclassComposite_queries); - this.initializeQueriesSection(container, buildQueryContainerHolder()); - + final Section section = this.getWidgetFactory().createSection(container, ExpandableComposite.TITLE_BAR | ExpandableComposite.TWISTIE); + section.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + section.setText(JptUiDetailsMessages.EntityComposite_queries); + + section.addExpansionListener(new ExpansionAdapter() { + @Override + public void expansionStateChanging(ExpansionEvent e) { + if (e.getState() && section.getClient() == null) { + section.setClient(initializeQueriesSection(section)); + } + } + }); } - protected void initializeQueriesSection(Composite container, PropertyValueModel<QueryContainer> queryContainerHolder) { - new QueriesComposite(this, queryContainerHolder, container); + protected Control initializeQueriesSection(Composite container) { + return new QueriesComposite(this, this.buildQueryContainerHolder(), container).getControl(); } private PropertyValueModel<QueryContainer> buildQueryContainerHolder() { @@ -68,16 +81,24 @@ public class OrmEclipseLinkMappedSuperclass2_3Composite } }; } - + protected void initializeMultitenancyCollapsibleSection(Composite container) { - container = addCollapsibleSection( - container, - EclipseLinkUiDetailsMessages.EclipseLinkTypeMappingComposite_multitenancy); - this.initializeMultitenancySection(container, buildMultitenancyHolder()); + final Section section = this.getWidgetFactory().createSection(container, ExpandableComposite.TITLE_BAR | ExpandableComposite.TWISTIE); + section.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + section.setText(EclipseLinkUiDetailsMessages.EclipseLinkTypeMappingComposite_multitenancy); + + section.addExpansionListener(new ExpansionAdapter() { + @Override + public void expansionStateChanging(ExpansionEvent e) { + if (e.getState() && section.getClient() == null) { + section.setClient(initializeMultitenancySection(section)); + } + } + }); } - protected void initializeMultitenancySection(Composite container, PropertyValueModel<OrmEclipseLinkMultitenancy2_3> multitenancyHolder) { - new EclipseLinkMultitenancyComposite(this, multitenancyHolder, container); + protected Control initializeMultitenancySection(Composite container) { + return new EclipseLinkMultitenancyComposite(this, this.buildMultitenancyHolder(), container).getControl(); } private PropertyAspectAdapter<OrmMappedSuperclass, OrmEclipseLinkMultitenancy2_3> buildMultitenancyHolder() { diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkOneToManyMapping1_1Composite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkOneToManyMapping1_1Composite.java index e89de26f6c..af1adee3fd 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkOneToManyMapping1_1Composite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkOneToManyMapping1_1Composite.java @@ -14,15 +14,22 @@ import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; import org.eclipse.jpt.jpa.core.context.AccessHolder; import org.eclipse.jpt.jpa.core.context.OneToManyMapping; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkJoinFetchComposite; +import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkJoinFetchComboViewer; import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkOneToManyMappingComposite; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkPrivateOwnedComposite; -import org.eclipse.jpt.jpa.ui.internal.details.AccessTypeComposite; +import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkPrivateOwnedCheckBox; +import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkUiDetailsMessages; +import org.eclipse.jpt.jpa.ui.internal.JptUiMessages; +import org.eclipse.jpt.jpa.ui.internal.details.AccessTypeComboViewer; import org.eclipse.jpt.jpa.ui.internal.details.CascadeComposite; -import org.eclipse.jpt.jpa.ui.internal.details.FetchTypeComposite; -import org.eclipse.jpt.jpa.ui.internal.details.TargetEntityComposite; -import org.eclipse.jpt.jpa.ui.internal.details.orm.OrmMappingNameChooser; +import org.eclipse.jpt.jpa.ui.internal.details.FetchTypeComboViewer; +import org.eclipse.jpt.jpa.ui.internal.details.JptUiDetailsMessages; +import org.eclipse.jpt.jpa.ui.internal.details.TargetEntityClassChooser; +import org.eclipse.jpt.jpa.ui.internal.details.orm.JptUiDetailsOrmMessages; +import org.eclipse.jpt.jpa.ui.internal.details.orm.OrmMappingNameText; +import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.ui.forms.widgets.Hyperlink; public class OrmEclipseLinkOneToManyMapping1_1Composite @@ -30,21 +37,53 @@ public class OrmEclipseLinkOneToManyMapping1_1Composite { public OrmEclipseLinkOneToManyMapping1_1Composite( PropertyValueModel<? extends OneToManyMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory) { - super(subjectHolder, parent, widgetFactory); + super(subjectHolder, enabledModel, parent, widgetFactory); } @Override - protected void initializeOneToManySection(Composite container) { - new TargetEntityComposite(this, container); - new OrmMappingNameChooser(this, getSubjectHolder(), container); - new OrmAttributeTypeComposite(this, getSubjectHolder(), container); - new AccessTypeComposite(this, buildAccessHolderHolder(), container); - new FetchTypeComposite(this, container); - new EclipseLinkJoinFetchComposite(this, buildJoinFetchableHolder(), container); - new EclipseLinkPrivateOwnedComposite(this, buildPrivateOwnableHolder(), container); - new CascadeComposite(this, buildCascadeHolder(), addSubPane(container, 5)); + protected Control initializeOneToManySection(Composite container) { + container = this.addSubPane(container, 2, 0, 0, 0, 0); + + // Target entity widgets + Hyperlink targetEntityHyperlink = this.addHyperlink(container, JptUiDetailsMessages.TargetEntityChooser_label); + new TargetEntityClassChooser(this, container, targetEntityHyperlink); + + // Name widgets + this.addLabel(container, JptUiDetailsOrmMessages.OrmMappingNameChooser_name); + new OrmMappingNameText(this, getSubjectHolder(), container); + + // Attribute type widgets + Hyperlink attributeTypeHyperlink = this.addHyperlink(container, EclipseLinkUiDetailsMessages.OrmAttributeTypeComposite_attributeType); + new OrmAttributeTypeClassChooser(this, getSubjectHolder(), container, attributeTypeHyperlink); + + // Access type widgets + this.addLabel(container, JptUiMessages.AccessTypeComposite_access); + new AccessTypeComboViewer(this, this.buildAccessHolderHolder(), container); + + // Fetch type widgets + this.addLabel(container, JptUiDetailsMessages.BasicGeneralSection_fetchLabel); + new FetchTypeComboViewer(this, container); + + // Join fetch widgets + this.addLabel(container, EclipseLinkUiDetailsMessages.EclipseLinkJoinFetchComposite_label); + new EclipseLinkJoinFetchComboViewer(this, buildJoinFetchableHolder(), container); + + // Private owned widgets + EclipseLinkPrivateOwnedCheckBox privateOwnedCheckBox = new EclipseLinkPrivateOwnedCheckBox(this, buildPrivateOwnableHolder(), container); + GridData gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.horizontalSpan = 2; + privateOwnedCheckBox.getControl().setLayoutData(gridData); + + // Cascade widgets + CascadeComposite cascadeComposite = new CascadeComposite(this, buildCascadeHolder(), container); + gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.horizontalSpan = 2; + cascadeComposite.getControl().setLayoutData(gridData); + + return container; } protected PropertyValueModel<AccessHolder> buildAccessHolderHolder() { diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkOneToManyMapping2_0Composite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkOneToManyMapping2_0Composite.java index 697b7fe60c..b291477c23 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkOneToManyMapping2_0Composite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkOneToManyMapping2_0Composite.java @@ -16,17 +16,24 @@ import org.eclipse.jpt.jpa.core.context.AccessHolder; import org.eclipse.jpt.jpa.core.context.OneToManyMapping; import org.eclipse.jpt.jpa.core.jpa2.context.OrphanRemovable2_0; import org.eclipse.jpt.jpa.core.jpa2.context.OrphanRemovalHolder2_0; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkJoinFetchComposite; +import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkJoinFetchComboViewer; import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkOneToManyMappingComposite; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkPrivateOwnedComposite; -import org.eclipse.jpt.jpa.ui.internal.details.AccessTypeComposite; -import org.eclipse.jpt.jpa.ui.internal.details.FetchTypeComposite; -import org.eclipse.jpt.jpa.ui.internal.details.TargetEntityComposite; -import org.eclipse.jpt.jpa.ui.internal.details.orm.OrmMappingNameChooser; +import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkPrivateOwnedCheckBox; +import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkUiDetailsMessages; +import org.eclipse.jpt.jpa.ui.internal.JptUiMessages; +import org.eclipse.jpt.jpa.ui.internal.details.AccessTypeComboViewer; +import org.eclipse.jpt.jpa.ui.internal.details.FetchTypeComboViewer; +import org.eclipse.jpt.jpa.ui.internal.details.JptUiDetailsMessages; +import org.eclipse.jpt.jpa.ui.internal.details.TargetEntityClassChooser; +import org.eclipse.jpt.jpa.ui.internal.details.orm.JptUiDetailsOrmMessages; +import org.eclipse.jpt.jpa.ui.internal.details.orm.OrmMappingNameText; import org.eclipse.jpt.jpa.ui.internal.jpa2.details.CascadePane2_0; import org.eclipse.jpt.jpa.ui.internal.jpa2.details.Ordering2_0Composite; -import org.eclipse.jpt.jpa.ui.internal.jpa2.details.OrphanRemoval2_0Composite; +import org.eclipse.jpt.jpa.ui.internal.jpa2.details.OrphanRemoval2_0TriStateCheckBox; +import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.ui.forms.widgets.Hyperlink; public class OrmEclipseLinkOneToManyMapping2_0Composite @@ -34,10 +41,11 @@ public class OrmEclipseLinkOneToManyMapping2_0Composite { public OrmEclipseLinkOneToManyMapping2_0Composite( PropertyValueModel<? extends OneToManyMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory) { - super(subjectHolder, parent, widgetFactory); + super(subjectHolder, enabledModel, parent, widgetFactory); } @@ -50,21 +58,57 @@ public class OrmEclipseLinkOneToManyMapping2_0Composite } @Override - protected void initializeOneToManySection(Composite container) { - new TargetEntityComposite(this, container); - new OrmMappingNameChooser(this, getSubjectHolder(), container); - new OrmAttributeTypeComposite(this, getSubjectHolder(), container); - new AccessTypeComposite(this, this.buildAccessHolderHolder(), container); - new FetchTypeComposite(this, container); - new EclipseLinkJoinFetchComposite(this, this.buildJoinFetchableHolder(), container); - new EclipseLinkPrivateOwnedComposite(this, this.buildPrivateOwnableHolder(), container); - new OrphanRemoval2_0Composite(this, this.buildOrphanRemovableHolder(), container); - new CascadePane2_0(this, this.buildCascadeHolder(), this.addSubPane(container, 5)); + protected Control initializeOneToManySection(Composite container) { + container = this.addSubPane(container, 2, 0, 0, 0, 0); + + // Target entity widgets + Hyperlink targetEntityHyperlink = this.addHyperlink(container, JptUiDetailsMessages.TargetEntityChooser_label); + new TargetEntityClassChooser(this, container, targetEntityHyperlink); + + // Name widgets + this.addLabel(container, JptUiDetailsOrmMessages.OrmMappingNameChooser_name); + new OrmMappingNameText(this, getSubjectHolder(), container); + + // Attribute type widgets + Hyperlink attributeTypeHyperlink = this.addHyperlink(container, EclipseLinkUiDetailsMessages.OrmAttributeTypeComposite_attributeType); + new OrmAttributeTypeClassChooser(this, getSubjectHolder(), container, attributeTypeHyperlink); + + // Access type widgets + this.addLabel(container, JptUiMessages.AccessTypeComposite_access); + new AccessTypeComboViewer(this, this.buildAccessHolderHolder(), container); + + // Fetch type widgets + this.addLabel(container, JptUiDetailsMessages.BasicGeneralSection_fetchLabel); + new FetchTypeComboViewer(this, container); + + // Join fetch widgets + this.addLabel(container, EclipseLinkUiDetailsMessages.EclipseLinkJoinFetchComposite_label); + new EclipseLinkJoinFetchComboViewer(this, this.buildJoinFetchableHolder(), container); + + // Private owned widgets + EclipseLinkPrivateOwnedCheckBox privateOwnedCheckBox = new EclipseLinkPrivateOwnedCheckBox(this, buildPrivateOwnableHolder(), container); + GridData gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.horizontalSpan = 2; + privateOwnedCheckBox.getControl().setLayoutData(gridData); + + // Orphan removal widgets + OrphanRemoval2_0TriStateCheckBox orphanRemovalCheckBox = new OrphanRemoval2_0TriStateCheckBox(this, buildOrphanRemovableHolder(), container); + gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.horizontalSpan = 2; + orphanRemovalCheckBox.getControl().setLayoutData(gridData); + + // Cascade widgets + CascadePane2_0 cascadePane = new CascadePane2_0(this, this.buildCascadeHolder(), container); + gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.horizontalSpan = 2; + cascadePane.getControl().setLayoutData(gridData); + + return container; } @Override - protected void initializeOrderingCollapsibleSection(Composite container) { - new Ordering2_0Composite(this, container); + protected Control initializeOrderingSection(Composite container) { + return new Ordering2_0Composite(this, container).getControl(); } protected PropertyValueModel<AccessHolder> buildAccessHolderHolder() { diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkOneToManyMappingComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkOneToManyMappingComposite.java index 9d3114dd56..2390dacc2d 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkOneToManyMappingComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkOneToManyMappingComposite.java @@ -14,14 +14,20 @@ import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; import org.eclipse.jpt.jpa.core.context.AccessHolder; import org.eclipse.jpt.jpa.core.context.OneToManyMapping; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkJoinFetchComposite; +import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkJoinFetchComboViewer; import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkOneToManyMappingComposite; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkPrivateOwnedComposite; +import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkPrivateOwnedCheckBox; +import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkUiDetailsMessages; import org.eclipse.jpt.jpa.ui.internal.details.CascadeComposite; -import org.eclipse.jpt.jpa.ui.internal.details.FetchTypeComposite; -import org.eclipse.jpt.jpa.ui.internal.details.TargetEntityComposite; -import org.eclipse.jpt.jpa.ui.internal.details.orm.OrmMappingNameChooser; +import org.eclipse.jpt.jpa.ui.internal.details.FetchTypeComboViewer; +import org.eclipse.jpt.jpa.ui.internal.details.JptUiDetailsMessages; +import org.eclipse.jpt.jpa.ui.internal.details.TargetEntityClassChooser; +import org.eclipse.jpt.jpa.ui.internal.details.orm.JptUiDetailsOrmMessages; +import org.eclipse.jpt.jpa.ui.internal.details.orm.OrmMappingNameText; +import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.ui.forms.widgets.Hyperlink; public class OrmEclipseLinkOneToManyMappingComposite @@ -29,20 +35,49 @@ public class OrmEclipseLinkOneToManyMappingComposite { public OrmEclipseLinkOneToManyMappingComposite( PropertyValueModel<? extends OneToManyMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory) { - super(subjectHolder, parent, widgetFactory); + super(subjectHolder, enabledModel, parent, widgetFactory); } @Override - protected void initializeOneToManySection(Composite container) { - new TargetEntityComposite(this, container); - new OrmMappingNameChooser(this, getSubjectHolder(), container); - new OrmAttributeTypeComposite(this, getSubjectHolder(), container); - new FetchTypeComposite(this, container); - new EclipseLinkJoinFetchComposite(this, buildJoinFetchableHolder(), container); - new EclipseLinkPrivateOwnedComposite(this, buildPrivateOwnableHolder(), container); - new CascadeComposite(this, buildCascadeHolder(), addSubPane(container, 5)); + protected Control initializeOneToManySection(Composite container) { + container = this.addSubPane(container, 2, 0, 0, 0, 0); + + // Target entity widgets + Hyperlink targetEntityHyperlink = this.addHyperlink(container, JptUiDetailsMessages.TargetEntityChooser_label); + new TargetEntityClassChooser(this, container, targetEntityHyperlink); + + // Name widgets + this.addLabel(container, JptUiDetailsOrmMessages.OrmMappingNameChooser_name); + new OrmMappingNameText(this, getSubjectHolder(), container); + + // Attribute type widgets + Hyperlink attributeTypeHyperlink = this.addHyperlink(container, EclipseLinkUiDetailsMessages.OrmAttributeTypeComposite_attributeType); + new OrmAttributeTypeClassChooser(this, getSubjectHolder(), container, attributeTypeHyperlink); + + // Fetch type widgets + this.addLabel(container, JptUiDetailsMessages.BasicGeneralSection_fetchLabel); + new FetchTypeComboViewer(this, container); + + // Join fetch widgets + this.addLabel(container, EclipseLinkUiDetailsMessages.EclipseLinkJoinFetchComposite_label); + new EclipseLinkJoinFetchComboViewer(this, buildJoinFetchableHolder(), container); + + // Private owned widgets + EclipseLinkPrivateOwnedCheckBox privateOwnedCheckBox = new EclipseLinkPrivateOwnedCheckBox(this, buildPrivateOwnableHolder(), container); + GridData gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.horizontalSpan = 2; + privateOwnedCheckBox.getControl().setLayoutData(gridData); + + // Cascade widgets + CascadeComposite cascadeComposite = new CascadeComposite(this, buildCascadeHolder(), container); + gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.horizontalSpan = 2; + cascadeComposite.getControl().setLayoutData(gridData); + + return container; } protected PropertyValueModel<AccessHolder> buildAccessHolderHolder() { diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkOneToOneMapping1_1Composite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkOneToOneMapping1_1Composite.java index 386e7aa9b0..0905086660 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkOneToOneMapping1_1Composite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkOneToOneMapping1_1Composite.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2009, 2011 Oracle. All rights reserved. + * Copyright (c) 2009, 2012 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. @@ -14,18 +14,25 @@ import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; import org.eclipse.jpt.jpa.core.context.AccessHolder; import org.eclipse.jpt.jpa.core.context.OneToOneMapping; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkJoinFetchComposite; +import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkJoinFetchComboViewer; import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkOneToOneMappingComposite; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkPrivateOwnedComposite; -import org.eclipse.jpt.jpa.ui.internal.details.AccessTypeComposite; +import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkPrivateOwnedCheckBox; +import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkUiDetailsMessages; +import org.eclipse.jpt.jpa.ui.internal.JptUiMessages; +import org.eclipse.jpt.jpa.ui.internal.details.AccessTypeComboViewer; import org.eclipse.jpt.jpa.ui.internal.details.CascadeComposite; -import org.eclipse.jpt.jpa.ui.internal.details.FetchTypeComposite; +import org.eclipse.jpt.jpa.ui.internal.details.FetchTypeComboViewer; +import org.eclipse.jpt.jpa.ui.internal.details.JptUiDetailsMessages; import org.eclipse.jpt.jpa.ui.internal.details.MappedByPane; import org.eclipse.jpt.jpa.ui.internal.details.OneToOneJoiningStrategyPane; -import org.eclipse.jpt.jpa.ui.internal.details.OptionalComposite; -import org.eclipse.jpt.jpa.ui.internal.details.TargetEntityComposite; -import org.eclipse.jpt.jpa.ui.internal.details.orm.OrmMappingNameChooser; +import org.eclipse.jpt.jpa.ui.internal.details.OptionalTriStateCheckBox; +import org.eclipse.jpt.jpa.ui.internal.details.TargetEntityClassChooser; +import org.eclipse.jpt.jpa.ui.internal.details.orm.JptUiDetailsOrmMessages; +import org.eclipse.jpt.jpa.ui.internal.details.orm.OrmMappingNameText; +import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.ui.forms.widgets.Hyperlink; /** * Here the layout of this pane: @@ -76,13 +83,13 @@ import org.eclipse.swt.widgets.Composite; * @see OneToOneMapping * @see AccessTypeComposite * @see CascadeComposite - * @see EclipseLinkJoinFetchComposite - * @see EclipseLinkPrivateOwnedComposite - * @see FetchTypeComposite + * @see EclipseLinkJoinFetchComboViewer + * @see EclipseLinkPrivateOwnedCheckBox + * @see FetchTypeComboViewer * @see MappedByPane * @see OneToOneJoiningStrategyPane * @see OptionalComposite - * @see TargetEntityComposite + * @see TargetEntityClassChooser * * @version 2.3 * @since 2.2 @@ -98,22 +105,56 @@ extends EclipseLinkOneToOneMappingComposite<OneToOneMapping> * @param widgetFactory The factory used to create various common widgets */ public OrmEclipseLinkOneToOneMapping1_1Composite(PropertyValueModel<? extends OneToOneMapping> subjectHolder, - Composite parent, + PropertyValueModel<Boolean> enabledModel, + Composite parent, WidgetFactory widgetFactory) { - super(subjectHolder, parent, widgetFactory); + super(subjectHolder, enabledModel, parent, widgetFactory); } @Override - protected void initializeOneToOneSection(Composite container) { - new TargetEntityComposite(this, container); - new OrmMappingNameChooser(this, getSubjectHolder(), container); - new AccessTypeComposite(this, buildAccessHolderHolder(), container); - new FetchTypeComposite(this, container); - new EclipseLinkJoinFetchComposite(this, buildJoinFetchableHolder(), container); - new OptionalComposite(this, container); - new EclipseLinkPrivateOwnedComposite(this, buildPrivateOwnableHolder(), container); - new CascadeComposite(this, buildCascadeHolder(), addSubPane(container, 5)); + protected Control initializeOneToOneSection(Composite container) { + container = this.addSubPane(container, 2, 0, 0, 0, 0); + + // Target entity widgets + Hyperlink targetEntityHyperlink = this.addHyperlink(container, JptUiDetailsMessages.TargetEntityChooser_label); + new TargetEntityClassChooser(this, container, targetEntityHyperlink); + + // Name widgets + this.addLabel(container, JptUiDetailsOrmMessages.OrmMappingNameChooser_name); + new OrmMappingNameText(this, getSubjectHolder(), container); + + // Access type widgets + this.addLabel(container, JptUiMessages.AccessTypeComposite_access); + new AccessTypeComboViewer(this, this.buildAccessHolderHolder(), container); + + // Fetch type widgets + this.addLabel(container, JptUiDetailsMessages.BasicGeneralSection_fetchLabel); + new FetchTypeComboViewer(this, container); + + // Join fetch widgets + this.addLabel(container, EclipseLinkUiDetailsMessages.EclipseLinkJoinFetchComposite_label); + new EclipseLinkJoinFetchComboViewer(this, buildJoinFetchableHolder(), container); + + // Optional widgets + OptionalTriStateCheckBox optionalCheckBox = new OptionalTriStateCheckBox(this, container); + GridData gridData = new GridData(); + gridData.horizontalSpan = 2; + optionalCheckBox.getControl().setLayoutData(gridData); + + // Private owned widgets + EclipseLinkPrivateOwnedCheckBox privateOwnedCheckBox = new EclipseLinkPrivateOwnedCheckBox(this, buildPrivateOwnableHolder(), container); + gridData = new GridData(); + gridData.horizontalSpan = 2; + privateOwnedCheckBox.getControl().setLayoutData(gridData); + + // Cascade widgets + CascadeComposite cascadeComposite = new CascadeComposite(this, buildCascadeHolder(), container); + gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.horizontalSpan = 2; + cascadeComposite.getControl().setLayoutData(gridData); + + return container; } protected PropertyValueModel<AccessHolder> buildAccessHolderHolder() { diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkOneToOneMapping2_0Composite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkOneToOneMapping2_0Composite.java index de6a10b7dd..6a3bc231cc 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkOneToOneMapping2_0Composite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkOneToOneMapping2_0Composite.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2009, 2011 Oracle. All rights reserved. + * Copyright (c) 2009, 2012 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. @@ -20,42 +20,88 @@ import org.eclipse.jpt.jpa.core.jpa2.context.OrphanRemovalHolder2_0; import org.eclipse.jpt.jpa.eclipselink.core.context.EclipseLinkJoinFetch; import org.eclipse.jpt.jpa.eclipselink.core.context.EclipseLinkOneToOneMapping; import org.eclipse.jpt.jpa.eclipselink.core.context.EclipseLinkPrivateOwned; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkJoinFetchComposite; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkPrivateOwnedComposite; -import org.eclipse.jpt.jpa.ui.internal.details.AccessTypeComposite; -import org.eclipse.jpt.jpa.ui.internal.details.FetchTypeComposite; -import org.eclipse.jpt.jpa.ui.internal.details.OptionalComposite; -import org.eclipse.jpt.jpa.ui.internal.details.TargetEntityComposite; -import org.eclipse.jpt.jpa.ui.internal.details.orm.OrmMappingNameChooser; +import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkJoinFetchComboViewer; +import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkPrivateOwnedCheckBox; +import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkUiDetailsMessages; +import org.eclipse.jpt.jpa.ui.internal.JptUiMessages; +import org.eclipse.jpt.jpa.ui.internal.details.AccessTypeComboViewer; +import org.eclipse.jpt.jpa.ui.internal.details.FetchTypeComboViewer; +import org.eclipse.jpt.jpa.ui.internal.details.JptUiDetailsMessages; +import org.eclipse.jpt.jpa.ui.internal.details.OptionalTriStateCheckBox; +import org.eclipse.jpt.jpa.ui.internal.details.TargetEntityClassChooser; +import org.eclipse.jpt.jpa.ui.internal.details.orm.JptUiDetailsOrmMessages; +import org.eclipse.jpt.jpa.ui.internal.details.orm.OrmMappingNameText; import org.eclipse.jpt.jpa.ui.internal.jpa2.details.AbstractOneToOneMapping2_0Composite; import org.eclipse.jpt.jpa.ui.internal.jpa2.details.CascadePane2_0; import org.eclipse.jpt.jpa.ui.internal.jpa2.details.OneToOneJoiningStrategy2_0Pane; -import org.eclipse.jpt.jpa.ui.internal.jpa2.details.OrphanRemoval2_0Composite; +import org.eclipse.jpt.jpa.ui.internal.jpa2.details.OrphanRemoval2_0TriStateCheckBox; +import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.ui.forms.widgets.Hyperlink; public class OrmEclipseLinkOneToOneMapping2_0Composite extends AbstractOneToOneMapping2_0Composite<OneToOneMapping, OneToOneRelationship2_0> { public OrmEclipseLinkOneToOneMapping2_0Composite( PropertyValueModel<? extends OneToOneMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory) { - super(subjectHolder, parent, widgetFactory); + super(subjectHolder, enabledModel, parent, widgetFactory); } @Override - protected void initializeOneToOneSection(Composite container) { - new TargetEntityComposite(this, container); - new OrmMappingNameChooser(this, getSubjectHolder(), container); - new AccessTypeComposite(this, buildAccessHolderHolder(), container); - new FetchTypeComposite(this, container); - new EclipseLinkJoinFetchComposite(this, buildJoinFetchableHolder(), container); - new OptionalComposite(this, container); - new EclipseLinkPrivateOwnedComposite(this, buildPrivateOwnableHolder(), container); - new OrphanRemoval2_0Composite(this, buildOrphanRemovableHolder(), container); - new CascadePane2_0(this, buildCascadeHolder(), addSubPane(container, 5)); + protected Control initializeOneToOneSection(Composite container) { + container = this.addSubPane(container, 2, 0, 0, 0, 0); + + // Target entity widgets + Hyperlink targetEntityHyperlink = this.addHyperlink(container, JptUiDetailsMessages.TargetEntityChooser_label); + new TargetEntityClassChooser(this, container, targetEntityHyperlink); + + // Name widgets + this.addLabel(container, JptUiDetailsOrmMessages.OrmMappingNameChooser_name); + new OrmMappingNameText(this, getSubjectHolder(), container); + + // Access type widgets + this.addLabel(container, JptUiMessages.AccessTypeComposite_access); + new AccessTypeComboViewer(this, this.buildAccessHolderHolder(), container); + + // Fetch type widgets + this.addLabel(container, JptUiDetailsMessages.BasicGeneralSection_fetchLabel); + new FetchTypeComboViewer(this, container); + + // Join fetch widgets + this.addLabel(container, EclipseLinkUiDetailsMessages.EclipseLinkJoinFetchComposite_label); + new EclipseLinkJoinFetchComboViewer(this, buildJoinFetchableHolder(), container); + + // Optional widgets + OptionalTriStateCheckBox optionalCheckBox = new OptionalTriStateCheckBox(this, container); + GridData gridData = new GridData(); + gridData.horizontalSpan = 2; + optionalCheckBox.getControl().setLayoutData(gridData); + + // Private owned widgets + EclipseLinkPrivateOwnedCheckBox privateOwnedCheckBox = new EclipseLinkPrivateOwnedCheckBox(this, buildPrivateOwnableHolder(), container); + gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.horizontalSpan = 2; + privateOwnedCheckBox.getControl().setLayoutData(gridData); + + // Orphan removal widgets + OrphanRemoval2_0TriStateCheckBox orphanRemovalCheckBox = new OrphanRemoval2_0TriStateCheckBox(this, buildOrphanRemovableHolder(), container); + gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.horizontalSpan = 2; + orphanRemovalCheckBox.getControl().setLayoutData(gridData); + + // Cascade widgets + CascadePane2_0 cascadePane = new CascadePane2_0(this, buildCascadeHolder(), container); + gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.horizontalSpan = 2; + cascadePane.getControl().setLayoutData(gridData); + + return container; } @Override diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkOneToOneMappingComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkOneToOneMappingComposite.java index e67e9d51fa..da930dd4c0 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkOneToOneMappingComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkOneToOneMappingComposite.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2010 Oracle. All rights reserved. + * Copyright (c) 2010, 2012 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. @@ -14,18 +14,23 @@ import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; import org.eclipse.jpt.jpa.core.context.AccessHolder; import org.eclipse.jpt.jpa.core.context.OneToOneMapping; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkJoinFetchComposite; +import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkJoinFetchComboViewer; import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkOneToOneMappingComposite; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkPrivateOwnedComposite; -import org.eclipse.jpt.jpa.ui.internal.details.AccessTypeComposite; +import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkPrivateOwnedCheckBox; +import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkUiDetailsMessages; import org.eclipse.jpt.jpa.ui.internal.details.CascadeComposite; -import org.eclipse.jpt.jpa.ui.internal.details.FetchTypeComposite; +import org.eclipse.jpt.jpa.ui.internal.details.FetchTypeComboViewer; +import org.eclipse.jpt.jpa.ui.internal.details.JptUiDetailsMessages; import org.eclipse.jpt.jpa.ui.internal.details.MappedByPane; import org.eclipse.jpt.jpa.ui.internal.details.OneToOneJoiningStrategyPane; -import org.eclipse.jpt.jpa.ui.internal.details.OptionalComposite; -import org.eclipse.jpt.jpa.ui.internal.details.TargetEntityComposite; -import org.eclipse.jpt.jpa.ui.internal.details.orm.OrmMappingNameChooser; +import org.eclipse.jpt.jpa.ui.internal.details.OptionalTriStateCheckBox; +import org.eclipse.jpt.jpa.ui.internal.details.TargetEntityClassChooser; +import org.eclipse.jpt.jpa.ui.internal.details.orm.JptUiDetailsOrmMessages; +import org.eclipse.jpt.jpa.ui.internal.details.orm.OrmMappingNameText; +import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.ui.forms.widgets.Hyperlink; /** * Here the layout of this pane: @@ -76,13 +81,13 @@ import org.eclipse.swt.widgets.Composite; * @see OneToOneMapping * @see AccessTypeComposite * @see CascadeComposite - * @see EclipseLinkJoinFetchComposite - * @see EclipseLinkPrivateOwnedComposite - * @see FetchTypeComposite + * @see EclipseLinkJoinFetchComboViewer + * @see EclipseLinkPrivateOwnedCheckBox + * @see FetchTypeComboViewer * @see MappedByPane * @see OneToOneJoiningStrategyPane * @see OptionalComposite - * @see TargetEntityComposite + * @see TargetEntityClassChooser * * @version 2.2 * @since 2.2 @@ -98,21 +103,52 @@ extends EclipseLinkOneToOneMappingComposite<OneToOneMapping> * @param widgetFactory The factory used to create various common widgets */ public OrmEclipseLinkOneToOneMappingComposite(PropertyValueModel<? extends OneToOneMapping> subjectHolder, - Composite parent, + PropertyValueModel<Boolean> enabledModel, + Composite parent, WidgetFactory widgetFactory) { - super(subjectHolder, parent, widgetFactory); + super(subjectHolder, enabledModel, parent, widgetFactory); } @Override - protected void initializeOneToOneSection(Composite container) { - new TargetEntityComposite(this, container); - new OrmMappingNameChooser(this, getSubjectHolder(), container); - new FetchTypeComposite(this, container); - new EclipseLinkJoinFetchComposite(this, buildJoinFetchableHolder(), container); - new OptionalComposite(this, container); - new EclipseLinkPrivateOwnedComposite(this, buildPrivateOwnableHolder(), container); - new CascadeComposite(this, buildCascadeHolder(), addSubPane(container, 5)); + protected Control initializeOneToOneSection(Composite container) { + container = this.addSubPane(container, 2, 0, 0, 0, 0); + + // Target entity widgets + Hyperlink targetEntityHyperlink = this.addHyperlink(container, JptUiDetailsMessages.TargetEntityChooser_label); + new TargetEntityClassChooser(this, container, targetEntityHyperlink); + + // Name widgets + this.addLabel(container, JptUiDetailsOrmMessages.OrmMappingNameChooser_name); + new OrmMappingNameText(this, getSubjectHolder(), container); + + // Fetch type widgets + this.addLabel(container, JptUiDetailsMessages.BasicGeneralSection_fetchLabel); + new FetchTypeComboViewer(this, container); + + // Join fetch widgets + this.addLabel(container, EclipseLinkUiDetailsMessages.EclipseLinkJoinFetchComposite_label); + new EclipseLinkJoinFetchComboViewer(this, buildJoinFetchableHolder(), container); + + // Optional widgets + OptionalTriStateCheckBox optionalCheckBox = new OptionalTriStateCheckBox(this, container); + GridData gridData = new GridData(); + gridData.horizontalSpan = 2; + optionalCheckBox.getControl().setLayoutData(gridData); + + // Private owned widgets + EclipseLinkPrivateOwnedCheckBox privateOwnedCheckBox = new EclipseLinkPrivateOwnedCheckBox(this, buildPrivateOwnableHolder(), container); + gridData = new GridData(); + gridData.horizontalSpan = 2; + privateOwnedCheckBox.getControl().setLayoutData(gridData); + + // Cascade widgets + CascadeComposite cascadeComposite = new CascadeComposite(this, buildCascadeHolder(), container); + gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.horizontalSpan = 2; + cascadeComposite.getControl().setLayoutData(gridData); + + return container; } protected PropertyValueModel<AccessHolder> buildAccessHolderHolder() { diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkStructureMapping2_3UiDefinition.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkStructureMapping2_3UiDefinition.java index 1d9d5960f5..81d66a90eb 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkStructureMapping2_3UiDefinition.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkStructureMapping2_3UiDefinition.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2011 Oracle. All rights reserved. + * Copyright (c) 2011, 2012 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. @@ -47,9 +47,10 @@ public class OrmEclipseLinkStructureMapping2_3UiDefinition public JpaComposite buildAttributeMappingComposite( OrmXmlUiFactory factory, PropertyValueModel<EclipseLinkStructureMapping2_3> subjectHolder, - Composite parent, + PropertyValueModel<Boolean> enabledModel, + Composite parent, WidgetFactory widgetFactory) { - return new EclipseLinkStructureMapping2_3Composite(subjectHolder, parent, widgetFactory); + return new EclipseLinkStructureMapping2_3Composite(subjectHolder, enabledModel, parent, widgetFactory); } } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkTransformationMappingUiDefinition.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkTransformationMappingUiDefinition.java index 06ba78f760..eef7a31258 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkTransformationMappingUiDefinition.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkTransformationMappingUiDefinition.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2009, 2011 Oracle. All rights reserved. + * Copyright (c) 2009, 2012 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. @@ -48,9 +48,10 @@ public class OrmEclipseLinkTransformationMappingUiDefinition public JpaComposite buildAttributeMappingComposite( OrmXmlUiFactory factory, PropertyValueModel<EclipseLinkTransformationMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory) { - return new EclipseLinkTransformationMappingComposite(subjectHolder, parent, widgetFactory); + return new EclipseLinkTransformationMappingComposite(subjectHolder, enabledModel, parent, widgetFactory); } } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkVariableOneToOneMappingUiDefinition.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkVariableOneToOneMappingUiDefinition.java index bbf3b0dc07..e459f3deaa 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkVariableOneToOneMappingUiDefinition.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkVariableOneToOneMappingUiDefinition.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2009, 2011 Oracle. All rights reserved. + * Copyright (c) 2009, 2012 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. @@ -48,9 +48,10 @@ public class OrmEclipseLinkVariableOneToOneMappingUiDefinition public JpaComposite buildAttributeMappingComposite( OrmXmlUiFactory factory, PropertyValueModel<EclipseLinkVariableOneToOneMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory) { - return new EclipseLinkVariableOneToOneMappingComposite(subjectHolder, parent, widgetFactory); + return new EclipseLinkVariableOneToOneMappingComposite(subjectHolder, enabledModel, parent, widgetFactory); } } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkVersionMapping1_1Composite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkVersionMapping1_1Composite.java index 52f9b576af..a4092f02c9 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkVersionMapping1_1Composite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkVersionMapping1_1Composite.java @@ -14,12 +14,18 @@ import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; import org.eclipse.jpt.jpa.core.context.AccessHolder; import org.eclipse.jpt.jpa.core.context.VersionMapping; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkMutableComposite; +import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkMutableTriStateCheckBox; +import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkUiDetailsMessages; import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkVersionMappingComposite; -import org.eclipse.jpt.jpa.ui.internal.details.AccessTypeComposite; +import org.eclipse.jpt.jpa.ui.internal.JptUiMessages; +import org.eclipse.jpt.jpa.ui.internal.details.AccessTypeComboViewer; import org.eclipse.jpt.jpa.ui.internal.details.ColumnComposite; -import org.eclipse.jpt.jpa.ui.internal.details.orm.OrmMappingNameChooser; +import org.eclipse.jpt.jpa.ui.internal.details.orm.JptUiDetailsOrmMessages; +import org.eclipse.jpt.jpa.ui.internal.details.orm.OrmMappingNameText; +import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.ui.forms.widgets.Hyperlink; public class OrmEclipseLinkVersionMapping1_1Composite extends EclipseLinkVersionMappingComposite<VersionMapping> @@ -32,10 +38,11 @@ public class OrmEclipseLinkVersionMapping1_1Composite * @param widgetFactory The factory used to create various common widgets */ public OrmEclipseLinkVersionMapping1_1Composite(PropertyValueModel<? extends VersionMapping> subjectHolder, - Composite parent, - WidgetFactory widgetFactory) { + PropertyValueModel<Boolean> enabledModel, + Composite parent, + WidgetFactory widgetFactory) { - super(subjectHolder, parent, widgetFactory); + super(subjectHolder, enabledModel, parent, widgetFactory); } @Override @@ -46,12 +53,34 @@ public class OrmEclipseLinkVersionMapping1_1Composite } @Override - protected void initializeVersionSection(Composite container) { - new ColumnComposite(this, buildColumnHolder(), container); - new OrmMappingNameChooser(this, getSubjectHolder(), container); - new OrmAttributeTypeComposite(this, getSubjectHolder(), container); - new AccessTypeComposite(this, buildAccessHolderHolder(), container); - new EclipseLinkMutableComposite(this, buildMutableHolder(), container); + protected Control initializeVersionSection(Composite container) { + container = this.addSubPane(container, 2, 0, 0, 0, 0); + + // Column widgets + ColumnComposite columnComposite = new ColumnComposite(this, buildColumnHolder(), container); + GridData gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.horizontalSpan = 2; + columnComposite.getControl().setLayoutData(gridData); + + // Name widgets + this.addLabel(container, JptUiDetailsOrmMessages.OrmMappingNameChooser_name); + new OrmMappingNameText(this, getSubjectHolder(), container); + + // Attribute type widgets + Hyperlink attributeTypeHyperlink = this.addHyperlink(container, EclipseLinkUiDetailsMessages.OrmAttributeTypeComposite_attributeType); + new OrmAttributeTypeClassChooser(this, getSubjectHolder(), container, attributeTypeHyperlink); + + // Access type widgets + this.addLabel(container, JptUiMessages.AccessTypeComposite_access); + new AccessTypeComboViewer(this, this.buildAccessHolderHolder(), container); + + // Mutable widgets + EclipseLinkMutableTriStateCheckBox mutableCheckBox = new EclipseLinkMutableTriStateCheckBox(this, buildMutableHolder(), container); + gridData = new GridData(); + gridData.horizontalSpan = 2; + mutableCheckBox.getControl().setLayoutData(gridData); + + return container; } protected PropertyValueModel<AccessHolder> buildAccessHolderHolder() { diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkVersionMappingComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkVersionMappingComposite.java index 2935f682e2..0e9516f689 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkVersionMappingComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/details/orm/OrmEclipseLinkVersionMappingComposite.java @@ -12,11 +12,16 @@ package org.eclipse.jpt.jpa.eclipselink.ui.internal.details.orm; import org.eclipse.jpt.common.ui.WidgetFactory; import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; import org.eclipse.jpt.jpa.core.context.VersionMapping; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkMutableComposite; +import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkMutableTriStateCheckBox; +import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkUiDetailsMessages; import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkVersionMappingComposite; import org.eclipse.jpt.jpa.ui.internal.details.ColumnComposite; -import org.eclipse.jpt.jpa.ui.internal.details.orm.OrmMappingNameChooser; +import org.eclipse.jpt.jpa.ui.internal.details.orm.JptUiDetailsOrmMessages; +import org.eclipse.jpt.jpa.ui.internal.details.orm.OrmMappingNameText; +import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.ui.forms.widgets.Hyperlink; public class OrmEclipseLinkVersionMappingComposite extends EclipseLinkVersionMappingComposite<VersionMapping> @@ -29,17 +34,37 @@ public class OrmEclipseLinkVersionMappingComposite * @param widgetFactory The factory used to create various common widgets */ public OrmEclipseLinkVersionMappingComposite(PropertyValueModel<? extends VersionMapping> subjectHolder, - Composite parent, - WidgetFactory widgetFactory) { + PropertyValueModel<Boolean> enabledModel, + Composite parent, + WidgetFactory widgetFactory) { - super(subjectHolder, parent, widgetFactory); + super(subjectHolder, enabledModel, parent, widgetFactory); } @Override - protected void initializeVersionSection(Composite container) { - new ColumnComposite(this, buildColumnHolder(), container); - new OrmMappingNameChooser(this, getSubjectHolder(), container); - new OrmAttributeTypeComposite(this, getSubjectHolder(), container); - new EclipseLinkMutableComposite(this, buildMutableHolder(), container); + protected Control initializeVersionSection(Composite container) { + container = this.addSubPane(container, 2, 0, 0, 0, 0); + + // Column widgets + ColumnComposite columnComposite = new ColumnComposite(this, buildColumnHolder(), container); + GridData gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.horizontalSpan = 2; + columnComposite.getControl().setLayoutData(gridData); + + // Name widgets + this.addLabel(container, JptUiDetailsOrmMessages.OrmMappingNameChooser_name); + new OrmMappingNameText(this, getSubjectHolder(), container); + + // Attribute type widgets + Hyperlink attributeTypeHyperlink = this.addHyperlink(container, EclipseLinkUiDetailsMessages.OrmAttributeTypeComposite_attributeType); + new OrmAttributeTypeClassChooser(this, getSubjectHolder(), container, attributeTypeHyperlink); + + // Mutable widgets + EclipseLinkMutableTriStateCheckBox mutableCheckBox = new EclipseLinkMutableTriStateCheckBox(this, buildMutableHolder(), container); + gridData = new GridData(); + gridData.horizontalSpan = 2; + mutableCheckBox.getControl().setLayoutData(gridData); + + return container; } }
\ No newline at end of file diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/EclipseLinkPersistenceXmlUiDefinition.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/EclipseLinkPersistenceXmlUiDefinition.java index c04baff4ff..300867d931 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/EclipseLinkPersistenceXmlUiDefinition.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/EclipseLinkPersistenceXmlUiDefinition.java @@ -15,8 +15,8 @@ import org.eclipse.jpt.common.ui.jface.ItemTreeStateProviderFactoryProvider; import org.eclipse.jpt.jpa.core.JptJpaCorePlugin; import org.eclipse.jpt.jpa.eclipselink.ui.internal.structure.EclipseLinkPersistenceStructureItemContentProviderFactory; import org.eclipse.jpt.jpa.ui.ResourceUiDefinition; -import org.eclipse.jpt.jpa.ui.internal.persistence.details.AbstractPersistenceXmlResourceUiDefinition; -import org.eclipse.jpt.jpa.ui.internal.persistence.details.PersistenceXmlUiFactory; +import org.eclipse.jpt.jpa.ui.internal.persistence.AbstractPersistenceXmlResourceUiDefinition; +import org.eclipse.jpt.jpa.ui.internal.persistence.PersistenceXmlUiFactory; import org.eclipse.jpt.jpa.ui.internal.structure.PersistenceStructureItemLabelProviderFactory; public class EclipseLinkPersistenceXmlUiDefinition diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/EclipseLinkPersistenceXmlUiFactory.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/EclipseLinkPersistenceXmlUiFactory.java index d232e203db..e18c095491 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/EclipseLinkPersistenceXmlUiFactory.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/EclipseLinkPersistenceXmlUiFactory.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2008, 2011 Oracle. All rights reserved. + * Copyright (c) 2008, 2012 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. @@ -19,19 +19,14 @@ import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.Caching; import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.Connection; import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.Customization; import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.EclipseLinkPersistenceUnit; -import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.Logging; -import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.Options; -import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.SchemaGeneration; import org.eclipse.jpt.jpa.eclipselink.ui.internal.persistence.caching.PersistenceXmlCachingTab; import org.eclipse.jpt.jpa.eclipselink.ui.internal.persistence.connection.PersistenceXmlConnectionTab; import org.eclipse.jpt.jpa.eclipselink.ui.internal.persistence.customization.PersistenceXmlCustomizationTab; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.persistence.general.EclipseLinkPersistenceUnitGeneralComposite; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.persistence.logging.PersistenceXmlLoggingTab; +import org.eclipse.jpt.jpa.eclipselink.ui.internal.persistence.general.EclipseLinkPersistenceUnitGeneralTab; import org.eclipse.jpt.jpa.eclipselink.ui.internal.persistence.options.PersistenceXmlOptionsTab; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.persistence.schema.generation.PersistenceXmlSchemaGenerationTab; -import org.eclipse.jpt.jpa.ui.details.JpaPageComposite; -import org.eclipse.jpt.jpa.ui.internal.persistence.details.PersistenceUnitPropertiesComposite; -import org.eclipse.jpt.jpa.ui.internal.persistence.details.PersistenceXmlUiFactory; +import org.eclipse.jpt.jpa.ui.editors.JpaPageComposite; +import org.eclipse.jpt.jpa.ui.internal.persistence.PersistenceUnitPropertiesTab; +import org.eclipse.jpt.jpa.ui.internal.persistence.PersistenceXmlUiFactory; import org.eclipse.swt.widgets.Composite; public class EclipseLinkPersistenceXmlUiFactory implements PersistenceXmlUiFactory @@ -51,16 +46,11 @@ public class EclipseLinkPersistenceXmlUiFactory implements PersistenceXmlUiFacto ArrayList<JpaPageComposite> pages = new ArrayList<JpaPageComposite>(8); - PropertyValueModel<EclipseLinkPersistenceUnit> eclipseLinkPersistenceUnitHolder = - this.buildEclipseLinkPersistenceUnitHolder(subjectHolder); - pages.add(this.buildGeneralTab(subjectHolder, parent, widgetFactory)); pages.add(this.buildConnectionTab(subjectHolder, parent, widgetFactory)); - pages.add(this.buildCustomizationTab(eclipseLinkPersistenceUnitHolder, parent, widgetFactory)); - pages.add(this.buildCachingTab(eclipseLinkPersistenceUnitHolder, parent, widgetFactory)); - pages.add(this.buildLoggingTab(eclipseLinkPersistenceUnitHolder, parent, widgetFactory)); + pages.add(this.buildCustomizationTab(subjectHolder, parent, widgetFactory)); + pages.add(this.buildCachingTab(subjectHolder, parent, widgetFactory)); pages.add(this.buildOptionsTab(subjectHolder, parent, widgetFactory)); - pages.add(this.buildSchemaGenerationTab(eclipseLinkPersistenceUnitHolder, parent, widgetFactory)); pages.add(this.buildPropertiesTab(subjectHolder, parent, widgetFactory)); return pages.listIterator(); @@ -68,34 +58,32 @@ public class EclipseLinkPersistenceXmlUiFactory implements PersistenceXmlUiFacto // ********** persistence unit tabs ********** - protected EclipseLinkPersistenceUnitGeneralComposite buildGeneralTab( + protected EclipseLinkPersistenceUnitGeneralTab buildGeneralTab( PropertyValueModel<PersistenceUnit> subjectHolder, Composite parent, WidgetFactory widgetFactory) { - return new EclipseLinkPersistenceUnitGeneralComposite(subjectHolder, parent, widgetFactory); + return new EclipseLinkPersistenceUnitGeneralTab(subjectHolder, parent, widgetFactory); } protected PersistenceXmlConnectionTab<? extends Connection> buildConnectionTab( PropertyValueModel<PersistenceUnit> subjectHolder, Composite parent, WidgetFactory widgetFactory) { - PropertyValueModel<Connection> connectionHolder = this.buildConnectionHolder(subjectHolder); - return new PersistenceXmlConnectionTab<Connection>(connectionHolder, parent, widgetFactory); + return new PersistenceXmlConnectionTab<Connection>( this.buildConnectionHolder(subjectHolder), parent, widgetFactory); } protected PersistenceXmlCustomizationTab<? extends Customization> buildCustomizationTab( - PropertyValueModel<EclipseLinkPersistenceUnit> subjectHolder, + PropertyValueModel<PersistenceUnit> subjectHolder, Composite parent, WidgetFactory widgetFactory) { - PropertyValueModel<Customization> customizationHolder = this.buildCustomizationHolder(subjectHolder); - return new PersistenceXmlCustomizationTab<Customization>(customizationHolder, parent, widgetFactory); + return new PersistenceXmlCustomizationTab<Customization>(this.buildCustomizationHolder(subjectHolder), parent, widgetFactory); } protected PersistenceXmlCachingTab<? extends Caching> buildCachingTab( - PropertyValueModel<EclipseLinkPersistenceUnit> subjectHolder, + PropertyValueModel<PersistenceUnit> subjectHolder, Composite parent, WidgetFactory widgetFactory) { PropertyValueModel<Caching> cachingHolder = this.buildCachingHolder(subjectHolder); @@ -103,111 +91,51 @@ public class EclipseLinkPersistenceXmlUiFactory implements PersistenceXmlUiFacto return new PersistenceXmlCachingTab<Caching>(cachingHolder, parent, widgetFactory); } - protected PersistenceXmlLoggingTab<? extends Logging> buildLoggingTab( - PropertyValueModel<EclipseLinkPersistenceUnit> subjectHolder, - Composite parent, - WidgetFactory widgetFactory) { - PropertyValueModel<Logging> loggingHolder = this.buildLoggingHolder(subjectHolder); - - return new PersistenceXmlLoggingTab<Logging>(loggingHolder, parent, widgetFactory); - } - - protected PersistenceXmlOptionsTab<? extends Options> buildOptionsTab( + protected PersistenceXmlOptionsTab<? extends PersistenceUnit> buildOptionsTab( PropertyValueModel<PersistenceUnit> subjectHolder, Composite parent, WidgetFactory widgetFactory) { - PropertyValueModel<Options> optionsHolder = this.buildOptionsHolder(subjectHolder); - - return new PersistenceXmlOptionsTab<Options>(optionsHolder, parent, widgetFactory); - } - - protected PersistenceXmlSchemaGenerationTab buildSchemaGenerationTab( - PropertyValueModel<EclipseLinkPersistenceUnit> subjectHolder, - Composite parent, - WidgetFactory widgetFactory) { - PropertyValueModel<SchemaGeneration> schemaGenHolder = this.buildSchemaGenerationHolder(subjectHolder); - return new PersistenceXmlSchemaGenerationTab(schemaGenHolder, parent, widgetFactory); + return new PersistenceXmlOptionsTab<PersistenceUnit>(subjectHolder, parent, widgetFactory); } - protected PersistenceUnitPropertiesComposite buildPropertiesTab( + protected PersistenceUnitPropertiesTab buildPropertiesTab( PropertyValueModel<PersistenceUnit> subjectHolder, Composite parent, WidgetFactory widgetFactory) { - return new PersistenceUnitPropertiesComposite(subjectHolder, parent, widgetFactory); + return new PersistenceUnitPropertiesTab(subjectHolder, parent, widgetFactory); } // ********** private methods ********** - private PropertyValueModel<EclipseLinkPersistenceUnit> buildEclipseLinkPersistenceUnitHolder( - PropertyValueModel<PersistenceUnit> subjectHolder) { - return new TransformationPropertyValueModel<PersistenceUnit, EclipseLinkPersistenceUnit>(subjectHolder) { - @Override - protected EclipseLinkPersistenceUnit transform_(PersistenceUnit value) { - return (EclipseLinkPersistenceUnit) value; - } - }; - } - private PropertyValueModel<Connection> buildConnectionHolder( PropertyValueModel<PersistenceUnit> subjectHolder) { return new TransformationPropertyValueModel<PersistenceUnit, Connection>(subjectHolder) { @Override protected Connection transform_(PersistenceUnit value) { - return ((EclipseLinkPersistenceUnit)value).getConnection(); + return ((EclipseLinkPersistenceUnit) value).getConnection(); } }; } protected PropertyValueModel<Customization> buildCustomizationHolder( - PropertyValueModel<EclipseLinkPersistenceUnit> subjectHolder) { - return new TransformationPropertyValueModel<EclipseLinkPersistenceUnit, Customization>(subjectHolder) { + PropertyValueModel<PersistenceUnit> subjectHolder) { + return new TransformationPropertyValueModel<PersistenceUnit, Customization>(subjectHolder) { @Override - protected Customization transform_(EclipseLinkPersistenceUnit value) { - return value.getCustomization(); + protected Customization transform_(PersistenceUnit value) { + return ((EclipseLinkPersistenceUnit) value).getCustomization(); } }; } protected PropertyValueModel<Caching> buildCachingHolder( - PropertyValueModel<EclipseLinkPersistenceUnit> subjectHolder) { - return new TransformationPropertyValueModel<EclipseLinkPersistenceUnit, Caching>(subjectHolder) { - @Override - protected Caching transform_(EclipseLinkPersistenceUnit value) { - return value.getCaching(); - } - }; - } - - private PropertyValueModel<Logging> buildLoggingHolder( - PropertyValueModel<EclipseLinkPersistenceUnit> subjectHolder) { - return new TransformationPropertyValueModel<EclipseLinkPersistenceUnit, Logging>(subjectHolder) { - @Override - protected Logging transform_(EclipseLinkPersistenceUnit value) { - return value.getLogging(); - } - }; - } - - private PropertyValueModel<Options> buildOptionsHolder( PropertyValueModel<PersistenceUnit> subjectHolder) { - return new TransformationPropertyValueModel<PersistenceUnit, Options>(subjectHolder) { - @Override - protected Options transform_(PersistenceUnit value) { - - return ((EclipseLinkPersistenceUnit)value).getOptions(); - } - }; - } - - private PropertyValueModel<SchemaGeneration> buildSchemaGenerationHolder( - PropertyValueModel<EclipseLinkPersistenceUnit> subjectHolder) { - return new TransformationPropertyValueModel<EclipseLinkPersistenceUnit, SchemaGeneration>(subjectHolder) { + return new TransformationPropertyValueModel<PersistenceUnit, Caching>(subjectHolder) { @Override - protected SchemaGeneration transform_(EclipseLinkPersistenceUnit value) { - return value.getSchemaGeneration(); + protected Caching transform_(PersistenceUnit value) { + return ((EclipseLinkPersistenceUnit) value).getCaching(); } }; } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/caching/CacheDefaultsComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/caching/CacheDefaultsComposite.java index 698161c1fa..2327672344 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/caching/CacheDefaultsComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/caching/CacheDefaultsComposite.java @@ -1,5 +1,5 @@ /******************************************************************************* -* Copyright (c) 2009, 2011 Oracle. All rights reserved. +* Copyright (c) 2009, 2012 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. @@ -9,9 +9,22 @@ *******************************************************************************/ package org.eclipse.jpt.jpa.eclipselink.ui.internal.persistence.caching; +import java.util.Collection; +import org.eclipse.jpt.common.ui.internal.JptCommonUiMessages; +import org.eclipse.jpt.common.ui.internal.widgets.EnumFormComboViewer; +import org.eclipse.jpt.common.ui.internal.widgets.IntegerCombo; import org.eclipse.jpt.common.ui.internal.widgets.Pane; +import org.eclipse.jpt.common.ui.internal.widgets.TriStateCheckBox; +import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter; +import org.eclipse.jpt.common.utility.internal.model.value.TransformationPropertyValueModel; +import org.eclipse.jpt.common.utility.model.value.ModifiablePropertyValueModel; +import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; +import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.CacheType; import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.Caching; +import org.eclipse.jpt.jpa.eclipselink.ui.internal.EclipseLinkHelpContextIds; import org.eclipse.jpt.jpa.eclipselink.ui.internal.EclipseLinkUiMessages; +import org.eclipse.osgi.util.NLS; +import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; /** @@ -26,30 +39,171 @@ public class CacheDefaultsComposite<T extends Caching> extends Pane<T> } @Override - protected void initializeLayout(Composite parent) { - - this.initializeCacheDefaultsPane(parent); - } - - protected void initializeCacheDefaultsPane(Composite parent) { - - Composite defaultPane = this.addTitledGroup( + protected Composite addComposite(Composite parent) { + return this.addTitledGroup( parent, - EclipseLinkUiMessages.CacheDefaultsComposite_groupTitle + EclipseLinkUiMessages.CacheDefaultsComposite_groupTitle, + 2, + null ); - - this.initializeCacheDefaultsComposites(defaultPane); } - - protected void initializeCacheDefaultsComposites(Composite parent) { + @Override + protected void initializeLayout(Composite parent) { // Default Cache Type - new DefaultCacheTypeComposite(this, parent); + addLabel(parent, EclipseLinkUiMessages.PersistenceXmlCachingTab_defaultCacheTypeLabel); + buildDefaultCacheTypeCombo(parent); // Default Cache Size - new DefaultCacheSizeComposite<T>(this, parent); + addLabel(parent, EclipseLinkUiMessages.DefaultCacheSizeComposite_defaultCacheSize); + addDefaultCacheSizeCombo(parent); // Default Shared Cache - new DefaultSharedCacheComposite(this, parent); + TriStateCheckBox sharedCacheCheckBox = this.addTriStateCheckBoxWithDefault( + parent, + EclipseLinkUiMessages.PersistenceXmlCachingTab_sharedCacheDefaultLabel, + this.buildDefaultSharedCacheHolder(), + this.buildDefaultSharedCacheStringHolder(), + EclipseLinkHelpContextIds.PERSISTENCE_CACHING_DEFAULT_SHARED + ); + GridData gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.horizontalSpan = 2; + sharedCacheCheckBox.getCheckBox().setLayoutData(gridData); + } + + protected EnumFormComboViewer<Caching, CacheType> buildDefaultCacheTypeCombo(Composite container) { + return new EnumFormComboViewer<Caching, CacheType>(this, container) { + @Override + protected void addPropertyNames(Collection<String> propertyNames) { + super.addPropertyNames(propertyNames); + propertyNames.add(Caching.CACHE_TYPE_DEFAULT_PROPERTY); + } + + @Override + protected CacheType[] getChoices() { + return CacheType.values(); + } + + @Override + protected boolean sortChoices() { + return false; + } + + @Override + protected CacheType getDefaultValue() { + return getSubject().getDefaultCacheTypeDefault(); + } + + @Override + protected String displayString(CacheType value) { + switch (value) { + case full : + return EclipseLinkUiMessages.CacheTypeComposite_full; + case weak : + return EclipseLinkUiMessages.CacheTypeComposite_weak; + case soft : + return EclipseLinkUiMessages.CacheTypeComposite_soft; + case soft_weak : + return EclipseLinkUiMessages.CacheTypeComposite_soft_weak; + case hard_weak : + return EclipseLinkUiMessages.CacheTypeComposite_hard_weak; + case none : + return EclipseLinkUiMessages.CacheTypeComposite_none; + default : + throw new IllegalStateException(); + } + + } + + @Override + protected CacheType getValue() { + return getSubject().getCacheTypeDefault(); + } + + @Override + protected void setValue(CacheType value) { + getSubject().setCacheTypeDefault(value); + } + + @Override + protected String getHelpId() { + return EclipseLinkHelpContextIds.PERSISTENCE_CACHING_DEFAULT_TYPE; + } + }; + } + + protected void addDefaultCacheSizeCombo(Composite container) { + new IntegerCombo<Caching>(this, container) { + @Override + protected String getHelpId() { + return EclipseLinkHelpContextIds.PERSISTENCE_CACHING_DEFAULT_SIZE; + } + + @Override + protected PropertyValueModel<Integer> buildDefaultHolder() { + return new PropertyAspectAdapter<Caching, Integer>(getSubjectHolder()) { + @Override + protected Integer buildValue_() { + return this.subject.getDefaultCacheSizeDefault(); + } + }; + } + + @Override + protected ModifiablePropertyValueModel<Integer> buildSelectedItemHolder() { + return new PropertyAspectAdapter<Caching, Integer>(getSubjectHolder(), Caching.CACHE_SIZE_DEFAULT_PROPERTY) { + @Override + protected Integer buildValue_() { + return this.subject.getCacheSizeDefault(); + } + + @Override + protected void setValue_(Integer value) { + this.subject.setCacheSizeDefault(value); + } + }; + } + }; + } + + private ModifiablePropertyValueModel<Boolean> buildDefaultSharedCacheHolder() { + return new PropertyAspectAdapter<Caching, Boolean>(getSubjectHolder(), Caching.SHARED_CACHE_DEFAULT_PROPERTY) { + @Override + protected Boolean buildValue_() { + return this.subject.getSharedCacheDefault(); + } + + @Override + protected void setValue_(Boolean value) { + this.subject.setSharedCacheDefault(value); + } + }; + } + + private PropertyValueModel<String> buildDefaultSharedCacheStringHolder() { + return new TransformationPropertyValueModel<Boolean, String>(buildDefaultDefaultSharedCacheHolder()) { + @Override + protected String transform(Boolean value) { + if (value != null) { + String defaultStringValue = value.booleanValue() ? JptCommonUiMessages.Boolean_True : JptCommonUiMessages.Boolean_False; + return NLS.bind(EclipseLinkUiMessages.PersistenceXmlCachingTab_defaultSharedCacheDefaultLabel, defaultStringValue); + } + return EclipseLinkUiMessages.PersistenceXmlCachingTab_sharedCacheDefaultLabel; + } + }; + } + private PropertyValueModel<Boolean> buildDefaultDefaultSharedCacheHolder() { + return new PropertyAspectAdapter<Caching, Boolean>( + getSubjectHolder(), + Caching.SHARED_CACHE_DEFAULT_PROPERTY) + { + @Override + protected Boolean buildValue_() { + if (this.subject.getSharedCacheDefault() != null) { + return null; + } + return this.subject.getDefaultSharedCacheDefault(); + } + }; } } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/caching/CacheSizeComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/caching/CacheSizeComposite.java deleted file mode 100644 index 74b0b5fa89..0000000000 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/caching/CacheSizeComposite.java +++ /dev/null @@ -1,109 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2008, 2012 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.jpa.eclipselink.ui.internal.persistence.caching; - -import org.eclipse.jpt.common.ui.internal.widgets.IntegerCombo; -import org.eclipse.jpt.common.ui.internal.widgets.Pane; -import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter; -import org.eclipse.jpt.common.utility.internal.model.value.TransformationPropertyValueModel; -import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; -import org.eclipse.jpt.common.utility.model.value.ModifiablePropertyValueModel; -import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.Caching; -import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.CachingEntity; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.EclipseLinkHelpContextIds; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.EclipseLinkUiMessages; -import org.eclipse.swt.widgets.Composite; - -/** - * CacheSizeComposite - */ -public class CacheSizeComposite extends Pane<CachingEntity> -{ - /** - * Creates a new <code>CacheTypeComposite</code>. - * - * @param parentController - * The parent container of this one - * @param parent - * The parent container - */ - public CacheSizeComposite(Pane<CachingEntity> parentComposite, - Composite parent) { - - super(parentComposite, parent); - } - - @Override - protected void initializeLayout(Composite container) { - this.addCacheSizeCombo(container); - } - - private void addCacheSizeCombo(Composite container) { - new IntegerCombo<CachingEntity>(this, container) { - - @Override - protected String getLabelText() { - return EclipseLinkUiMessages.CacheSizeComposite_cacheSize; - } - - @Override - protected String getHelpId() { - return EclipseLinkHelpContextIds.PERSISTENCE_CACHING; - } - - @Override - protected PropertyValueModel<Integer> buildDefaultHolder() { - return new PropertyAspectAdapter<Caching, Integer>(buildCachingHolder(), Caching.CACHE_SIZE_DEFAULT_PROPERTY) { - @Override - protected Integer buildValue_() { - Integer value = this.subject.getCacheSizeDefault(); - if (value == null) { - value = this.subject.getDefaultCacheSizeDefault(); - } - return value; - } - }; - } - - @Override - protected ModifiablePropertyValueModel<Integer> buildSelectedItemHolder() { - return new PropertyAspectAdapter<CachingEntity, Integer>(this.getSubjectHolder(), CachingEntity.CACHE_SIZE_PROPERTY) { - @Override - protected Integer buildValue_() { - return getSubjectParent().getCacheSizeOf(getSubjectName()); - } - - @Override - protected void setValue_(Integer value) { - getSubjectParent().setCacheSizeOf(getSubjectName(), value); - } - }; - } - }; - } - - private String getSubjectName() { - return this.getSubjectHolder().getValue().getName(); - } - - private Caching getSubjectParent() { - return this.getSubjectHolder().getValue().getParent(); - } - - private PropertyValueModel<Caching> buildCachingHolder() { - return new TransformationPropertyValueModel<CachingEntity, Caching>(this.getSubjectHolder()) { - @Override - protected Caching transform_(CachingEntity value) { - return value.getParent(); - } - }; - } - -}
\ No newline at end of file diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/caching/CacheTypeComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/caching/CacheTypeComposite.java deleted file mode 100644 index 25a014a48e..0000000000 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/caching/CacheTypeComposite.java +++ /dev/null @@ -1,181 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2008, 2012 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.jpa.eclipselink.ui.internal.persistence.caching; - -import java.util.Collection; -import org.eclipse.jpt.common.ui.internal.listeners.SWTPropertyChangeListenerWrapper; -import org.eclipse.jpt.common.ui.internal.widgets.EnumFormComboViewer; -import org.eclipse.jpt.common.ui.internal.widgets.Pane; -import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter; -import org.eclipse.jpt.common.utility.internal.model.value.TransformationPropertyValueModel; -import org.eclipse.jpt.common.utility.model.event.PropertyChangeEvent; -import org.eclipse.jpt.common.utility.model.listener.PropertyChangeListener; -import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; -import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.CacheType; -import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.Caching; -import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.CachingEntity; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.EclipseLinkHelpContextIds; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.EclipseLinkUiMessages; -import org.eclipse.swt.widgets.Composite; - -/** - * CacheTypeComposite - */ -public class CacheTypeComposite extends Pane<CachingEntity> -{ - /** - * Creates a new <code>CacheTypeComposite</code>. - * - * @param parentController - * The parent container of this one - * @param parent - * The parent container - */ - public CacheTypeComposite(Pane<CachingEntity> parentComposite, - Composite parent) { - - super(parentComposite, parent); - } - - @Override - protected void initializeLayout(Composite container) { - - this.addLabeledComposite( - container, - EclipseLinkUiMessages.PersistenceXmlCachingTab_cacheTypeLabel, - new CacheTypeCombo(container), - EclipseLinkHelpContextIds.PERSISTENCE_CACHING - ); - } - - private class CacheTypeCombo extends EnumFormComboViewer<CachingEntity, CacheType> { - - private CacheTypeCombo(Composite parent) { - super(CacheTypeComposite.this, parent); - } - - @Override - protected void addPropertyNames(Collection<String> propertyNames) { - super.addPropertyNames(propertyNames); - propertyNames.add(CachingEntity.CACHE_TYPE_PROPERTY); - } - - private PropertyValueModel<Caching> buildCachingHolder() { - return new TransformationPropertyValueModel<CachingEntity, Caching>(getSubjectHolder()) { - @Override - protected Caching transform_(CachingEntity value) { - return value.getParent(); - } - }; - } - - private PropertyValueModel<CacheType> buildDefaultCacheTypeHolder() { - return new PropertyAspectAdapter<Caching, CacheType>(buildCachingHolder(), Caching.CACHE_TYPE_DEFAULT_PROPERTY) { - @Override - protected CacheType buildValue_() { - CacheType cacheType = subject.getCacheTypeDefault(); - if (cacheType == null) { - cacheType = subject.getDefaultCacheTypeDefault(); - } - return cacheType; - } - }; - } - - private PropertyChangeListener buildDefaultCachingTypePropertyChangeListener() { - return new SWTPropertyChangeListenerWrapper( - buildDefaultCachingTypePropertyChangeListener_() - ); - } - - private PropertyChangeListener buildDefaultCachingTypePropertyChangeListener_() { - return new PropertyChangeListener() { - public void propertyChanged(PropertyChangeEvent e) { - if ((e.getNewValue() != null) && !getCombo().isDisposed()) { - CacheTypeCombo.this.doPopulate(); - } - } - }; - } - - @Override - protected CacheType[] getChoices() { - return CacheType.values(); - } - - @Override - protected CacheType getDefaultValue() { - return getSubjectParent().getDefaultCacheType(); - } - - @Override - protected String displayString(CacheType value) { - switch (value) { - case full : - return EclipseLinkUiMessages.CacheTypeComposite_full; - case weak : - return EclipseLinkUiMessages.CacheTypeComposite_weak; - case soft : - return EclipseLinkUiMessages.CacheTypeComposite_soft; - case soft_weak : - return EclipseLinkUiMessages.CacheTypeComposite_soft_weak; - case hard_weak : - return EclipseLinkUiMessages.CacheTypeComposite_hard_weak; - case none : - return EclipseLinkUiMessages.CacheTypeComposite_none; - default : - throw new IllegalStateException(); - } - } - - @Override - protected void doPopulate() { - // This is required to allow the class loader to let the listener - // written above to access this method - super.doPopulate(); - } - - @Override - protected CacheType getValue() { - return getSubjectParent().getCacheTypeOf(getSubjectName()); - } - - @Override - protected void initialize() { - super.initialize(); - - PropertyValueModel<CacheType> defaultCacheTypeHolder = - buildDefaultCacheTypeHolder(); - - defaultCacheTypeHolder.addPropertyChangeListener( - PropertyValueModel.VALUE, - buildDefaultCachingTypePropertyChangeListener() - ); - } - - @Override - protected void setValue(CacheType value) { - getSubjectParent().setCacheTypeOf(getSubjectName(), value); - } - - @Override - protected boolean sortChoices() { - return false; - } - } - - private String getSubjectName() { - return this.getSubjectHolder().getValue().getName(); - } - - private Caching getSubjectParent() { - return this.getSubjectHolder().getValue().getParent(); - } -}
\ No newline at end of file diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/caching/DefaultCacheSizeComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/caching/DefaultCacheSizeComposite.java deleted file mode 100644 index 15288d7837..0000000000 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/caching/DefaultCacheSizeComposite.java +++ /dev/null @@ -1,88 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2008, 2012 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.jpa.eclipselink.ui.internal.persistence.caching; - -import org.eclipse.jpt.common.ui.internal.widgets.IntegerCombo; -import org.eclipse.jpt.common.ui.internal.widgets.Pane; -import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter; -import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; -import org.eclipse.jpt.common.utility.model.value.ModifiablePropertyValueModel; -import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.Caching; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.EclipseLinkHelpContextIds; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.EclipseLinkUiMessages; -import org.eclipse.swt.widgets.Composite; - -/** - * CacheSizeComposite - */ -public class DefaultCacheSizeComposite<T extends Caching> extends Pane<T> -{ - /** - * Creates a new <code>CacheTypeComposite</code>. - * - * @param parentController - * The parent container of this one - * @param parent - * The parent container - */ - public DefaultCacheSizeComposite(Pane<T> parentComposite, - Composite parent) { - - super(parentComposite, parent); - } - - - - @Override - protected void initializeLayout(Composite container) { - addDefaultCacheSizeCombo(container); - } - - private void addDefaultCacheSizeCombo(Composite container) { - new IntegerCombo<Caching>(this, container) { - - @Override - protected String getLabelText() { - return EclipseLinkUiMessages.DefaultCacheSizeComposite_defaultCacheSize; - } - - @Override - protected String getHelpId() { - return EclipseLinkHelpContextIds.PERSISTENCE_CACHING_DEFAULT_SIZE; - } - - @Override - protected PropertyValueModel<Integer> buildDefaultHolder() { - return new PropertyAspectAdapter<Caching, Integer>(getSubjectHolder()) { - @Override - protected Integer buildValue_() { - return this.subject.getDefaultCacheSizeDefault(); - } - }; - } - - @Override - protected ModifiablePropertyValueModel<Integer> buildSelectedItemHolder() { - return new PropertyAspectAdapter<Caching, Integer>(getSubjectHolder(), Caching.CACHE_SIZE_DEFAULT_PROPERTY) { - @Override - protected Integer buildValue_() { - return this.subject.getCacheSizeDefault(); - } - - @Override - protected void setValue_(Integer value) { - this.subject.setCacheSizeDefault(value); - } - }; - } - }; - } - -}
\ No newline at end of file diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/caching/DefaultCacheTypeComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/caching/DefaultCacheTypeComposite.java deleted file mode 100644 index ce98727a8e..0000000000 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/caching/DefaultCacheTypeComposite.java +++ /dev/null @@ -1,107 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2008, 2012 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.jpa.eclipselink.ui.internal.persistence.caching; - -import java.util.Collection; -import org.eclipse.jpt.common.ui.internal.widgets.EnumFormComboViewer; -import org.eclipse.jpt.common.ui.internal.widgets.Pane; -import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.CacheType; -import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.Caching; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.EclipseLinkHelpContextIds; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.EclipseLinkUiMessages; -import org.eclipse.swt.widgets.Composite; - -/** - * DefaultCacheTypeComposite - */ -public class DefaultCacheTypeComposite extends Pane<Caching> -{ - /** - * Creates a new <code>DefaultCacheTypeComposite</code>. - * - * @param parentController - * The parent container of this one - * @param parent - * The parent container - */ - public DefaultCacheTypeComposite( - Pane<? extends Caching> parentComposite, - Composite parent) { - - super( parentComposite, parent); - } - - private EnumFormComboViewer<Caching, CacheType> buildDefaultCacheTypeCombo(Composite container) { - return new EnumFormComboViewer<Caching, CacheType>(this, container) { - @Override - protected void addPropertyNames(Collection<String> propertyNames) { - super.addPropertyNames(propertyNames); - propertyNames.add(Caching.CACHE_TYPE_DEFAULT_PROPERTY); - } - - @Override - protected CacheType[] getChoices() { - return CacheType.values(); - } - - @Override - protected boolean sortChoices() { - return false; - } - - @Override - protected CacheType getDefaultValue() { - return getSubject().getDefaultCacheTypeDefault(); - } - - @Override - protected String displayString(CacheType value) { - switch (value) { - case full : - return EclipseLinkUiMessages.CacheTypeComposite_full; - case weak : - return EclipseLinkUiMessages.CacheTypeComposite_weak; - case soft : - return EclipseLinkUiMessages.CacheTypeComposite_soft; - case soft_weak : - return EclipseLinkUiMessages.CacheTypeComposite_soft_weak; - case hard_weak : - return EclipseLinkUiMessages.CacheTypeComposite_hard_weak; - case none : - return EclipseLinkUiMessages.CacheTypeComposite_none; - default : - throw new IllegalStateException(); - } - - } - - @Override - protected CacheType getValue() { - return getSubject().getCacheTypeDefault(); - } - - @Override - protected void setValue(CacheType value) { - getSubject().setCacheTypeDefault(value); - } - }; - } - - @Override - protected void initializeLayout( Composite container) { - - this.addLabeledComposite( - container, - EclipseLinkUiMessages.PersistenceXmlCachingTab_defaultCacheTypeLabel, - this.buildDefaultCacheTypeCombo( container), - EclipseLinkHelpContextIds.PERSISTENCE_CACHING_DEFAULT_TYPE - ); - } -} diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/caching/DefaultSharedCacheComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/caching/DefaultSharedCacheComposite.java deleted file mode 100644 index b7aa220caf..0000000000 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/caching/DefaultSharedCacheComposite.java +++ /dev/null @@ -1,96 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2008, 2012 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.jpa.eclipselink.ui.internal.persistence.caching; - -import org.eclipse.jpt.common.ui.internal.JptCommonUiMessages; -import org.eclipse.jpt.common.ui.internal.widgets.Pane; -import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter; -import org.eclipse.jpt.common.utility.internal.model.value.TransformationPropertyValueModel; -import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; -import org.eclipse.jpt.common.utility.model.value.ModifiablePropertyValueModel; -import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.Caching; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.EclipseLinkHelpContextIds; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.EclipseLinkUiMessages; -import org.eclipse.osgi.util.NLS; -import org.eclipse.swt.widgets.Composite; - -/** - * DefaultShareCacheComposite - */ -public class DefaultSharedCacheComposite extends Pane<Caching> -{ - /** - * Creates a new <code>DefaultShareCacheComposite</code>. - * - * @param parentController - * The parent container of this one - * @param parent - * The parent container - */ - public DefaultSharedCacheComposite( - Pane<? extends Caching> parentComposite, - Composite parent) { - - super(parentComposite, parent); - } - - @Override - protected void initializeLayout(Composite container) { - - this.addTriStateCheckBoxWithDefault( - container, - EclipseLinkUiMessages.PersistenceXmlCachingTab_sharedCacheDefaultLabel, - this.buildDefaultSharedCacheHolder(), - this.buildDefaultSharedCacheStringHolder(), - EclipseLinkHelpContextIds.PERSISTENCE_CACHING_DEFAULT_SHARED - ); - } - - private ModifiablePropertyValueModel<Boolean> buildDefaultSharedCacheHolder() { - return new PropertyAspectAdapter<Caching, Boolean>(getSubjectHolder(), Caching.SHARED_CACHE_DEFAULT_PROPERTY) { - @Override - protected Boolean buildValue_() { - return this.subject.getSharedCacheDefault(); - } - - @Override - protected void setValue_(Boolean value) { - this.subject.setSharedCacheDefault(value); - } - }; - } - - private PropertyValueModel<String> buildDefaultSharedCacheStringHolder() { - return new TransformationPropertyValueModel<Boolean, String>(buildDefaultDefaultSharedCacheHolder()) { - @Override - protected String transform(Boolean value) { - if (value != null) { - String defaultStringValue = value.booleanValue() ? JptCommonUiMessages.Boolean_True : JptCommonUiMessages.Boolean_False; - return NLS.bind(EclipseLinkUiMessages.PersistenceXmlCachingTab_defaultSharedCacheDefaultLabel, defaultStringValue); - } - return EclipseLinkUiMessages.PersistenceXmlCachingTab_sharedCacheDefaultLabel; - } - }; - } - private PropertyValueModel<Boolean> buildDefaultDefaultSharedCacheHolder() { - return new PropertyAspectAdapter<Caching, Boolean>( - getSubjectHolder(), - Caching.SHARED_CACHE_DEFAULT_PROPERTY) - { - @Override - protected Boolean buildValue_() { - if (this.subject.getSharedCacheDefault() != null) { - return null; - } - return this.subject.getDefaultSharedCacheDefault(); - } - }; - } -} diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/caching/EclipseLinkCachingComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/caching/EclipseLinkCachingComposite.java deleted file mode 100644 index dbc3dbd616..0000000000 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/caching/EclipseLinkCachingComposite.java +++ /dev/null @@ -1,45 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2008, 2011 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.jpa.eclipselink.ui.internal.persistence.caching; - -import org.eclipse.jpt.common.ui.internal.widgets.Pane; -import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.Caching; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.EclipseLinkUiMessages; -import org.eclipse.swt.widgets.Composite; - -/** - * EclipseLinkCachingComposite - */ -public class EclipseLinkCachingComposite<T extends Caching> extends Pane<T> -{ - public EclipseLinkCachingComposite(Pane<T> subjectHolder, - Composite container) { - - super(subjectHolder, container); - } - - @Override - protected void initializeLayout(Composite parent) { - - Composite container = this.addSection( - parent, - EclipseLinkUiMessages.PersistenceXmlCachingTab_sectionTitle, - EclipseLinkUiMessages.PersistenceXmlCachingTab_sectionDescription - ); - - // Defaults - new CacheDefaultsComposite<T>(this, container); - // EntitiesList - new EntityListComposite<T>(this, container); - // Flush Clear Cache - new FlushClearCacheComposite(this, container); - } - -}
\ No newline at end of file diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/caching/EntityCachingPropertyComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/caching/EntityCachingPropertyComposite.java index 75db700c32..c8151ba4c9 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/caching/EntityCachingPropertyComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/caching/EntityCachingPropertyComposite.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2008, 2011 Oracle. All rights reserved. + * Copyright (c) 2008, 2012 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. @@ -9,10 +9,31 @@ ******************************************************************************/ package org.eclipse.jpt.jpa.eclipselink.ui.internal.persistence.caching; +import java.util.ArrayList; +import java.util.Collection; +import org.eclipse.jpt.common.ui.internal.JptCommonUiMessages; +import org.eclipse.jpt.common.ui.internal.listeners.SWTPropertyChangeListenerWrapper; +import org.eclipse.jpt.common.ui.internal.widgets.EnumFormComboViewer; +import org.eclipse.jpt.common.ui.internal.widgets.IntegerCombo; import org.eclipse.jpt.common.ui.internal.widgets.Pane; +import org.eclipse.jpt.common.ui.internal.widgets.TriStateCheckBox; +import org.eclipse.jpt.common.utility.internal.model.value.CompositeListValueModel; +import org.eclipse.jpt.common.utility.internal.model.value.ListPropertyValueModelAdapter; +import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter; +import org.eclipse.jpt.common.utility.internal.model.value.PropertyListValueModelAdapter; +import org.eclipse.jpt.common.utility.internal.model.value.TransformationPropertyValueModel; +import org.eclipse.jpt.common.utility.model.event.PropertyChangeEvent; +import org.eclipse.jpt.common.utility.model.listener.PropertyChangeListener; +import org.eclipse.jpt.common.utility.model.value.ListValueModel; +import org.eclipse.jpt.common.utility.model.value.ModifiablePropertyValueModel; import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; +import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.CacheType; import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.Caching; import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.CachingEntity; +import org.eclipse.jpt.jpa.eclipselink.ui.internal.EclipseLinkHelpContextIds; +import org.eclipse.jpt.jpa.eclipselink.ui.internal.EclipseLinkUiMessages; +import org.eclipse.osgi.util.NLS; +import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; /** @@ -30,24 +51,290 @@ public class EntityCachingPropertyComposite extends Pane<CachingEntity> { */ public EntityCachingPropertyComposite(Pane<? extends Caching> parentComposite, PropertyValueModel<CachingEntity> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent) { - super(parentComposite, subjectHolder, parent); + super(parentComposite, subjectHolder, enabledModel, parent); } - /* - * (non-Javadoc) - */ @Override - protected void initializeLayout(Composite container) { + protected Composite addComposite(Composite parent) { + return addSubPane(parent, 2, 0, 0, 0, 0); + } - // Cache Type - new CacheTypeComposite(this, container); + @Override + protected void initializeLayout(Composite container) { + this.addLabel(container, EclipseLinkUiMessages.PersistenceXmlCachingTab_cacheTypeLabel); + new CacheTypeComboViewer(container); // Cache Size - new CacheSizeComposite(this, container); + this.addLabel(container, EclipseLinkUiMessages.CacheSizeComposite_cacheSize); + this.addCacheSizeCombo(container); + + TriStateCheckBox sharedCacheCheckBox = this.addTriStateCheckBoxWithDefault( + container, + EclipseLinkUiMessages.PersistenceXmlCachingTab_sharedCacheLabel, + this.buildSharedCacheHolder(), + this.buildSharedCacheStringHolder(), + EclipseLinkHelpContextIds.PERSISTENCE_CACHING + ); + GridData gridData = new GridData(); + gridData.horizontalSpan = 2; + sharedCacheCheckBox.getCheckBox().setLayoutData(gridData); + } + + private class CacheTypeComboViewer extends EnumFormComboViewer<CachingEntity, CacheType> { + + private CacheTypeComboViewer(Composite parent) { + super(EntityCachingPropertyComposite.this, parent); + } + + @Override + protected void addPropertyNames(Collection<String> propertyNames) { + super.addPropertyNames(propertyNames); + propertyNames.add(CachingEntity.CACHE_TYPE_PROPERTY); + } + + private PropertyValueModel<Caching> buildCachingHolder() { + return new TransformationPropertyValueModel<CachingEntity, Caching>(getSubjectHolder()) { + @Override + protected Caching transform_(CachingEntity value) { + return value.getParent(); + } + }; + } + + private PropertyValueModel<CacheType> buildDefaultCacheTypeHolder() { + return new PropertyAspectAdapter<Caching, CacheType>(buildCachingHolder(), Caching.CACHE_TYPE_DEFAULT_PROPERTY) { + @Override + protected CacheType buildValue_() { + CacheType cacheType = subject.getCacheTypeDefault(); + if (cacheType == null) { + cacheType = subject.getDefaultCacheTypeDefault(); + } + return cacheType; + } + }; + } + + private PropertyChangeListener buildDefaultCachingTypePropertyChangeListener() { + return new SWTPropertyChangeListenerWrapper( + buildDefaultCachingTypePropertyChangeListener_() + ); + } + + private PropertyChangeListener buildDefaultCachingTypePropertyChangeListener_() { + return new PropertyChangeListener() { + public void propertyChanged(PropertyChangeEvent e) { + if ((e.getNewValue() != null) && !getControl().isDisposed()) { + CacheTypeComboViewer.this.doPopulate(); + } + } + }; + } + + @Override + protected CacheType[] getChoices() { + return CacheType.values(); + } + + @Override + protected CacheType getDefaultValue() { + return getSubjectParent().getDefaultCacheType(); + } + + @Override + protected String displayString(CacheType value) { + switch (value) { + case full : + return EclipseLinkUiMessages.CacheTypeComposite_full; + case weak : + return EclipseLinkUiMessages.CacheTypeComposite_weak; + case soft : + return EclipseLinkUiMessages.CacheTypeComposite_soft; + case soft_weak : + return EclipseLinkUiMessages.CacheTypeComposite_soft_weak; + case hard_weak : + return EclipseLinkUiMessages.CacheTypeComposite_hard_weak; + case none : + return EclipseLinkUiMessages.CacheTypeComposite_none; + default : + throw new IllegalStateException(); + } + } + + @Override + protected void doPopulate() { + // This is required to allow the class loader to let the listener + // written above to access this method + super.doPopulate(); + } + + @Override + protected CacheType getValue() { + return getSubjectParent().getCacheTypeOf(getSubjectName()); + } + + @Override + protected void initialize() { + super.initialize(); + + PropertyValueModel<CacheType> defaultCacheTypeHolder = + buildDefaultCacheTypeHolder(); + + defaultCacheTypeHolder.addPropertyChangeListener( + PropertyValueModel.VALUE, + buildDefaultCachingTypePropertyChangeListener() + ); + } + + @Override + protected void setValue(CacheType value) { + getSubjectParent().setCacheTypeOf(getSubjectName(), value); + } + + @Override + protected boolean sortChoices() { + return false; + } + + @Override + protected String getHelpId() { + return EclipseLinkHelpContextIds.PERSISTENCE_CACHING; + } + } + + private String getSubjectName() { + return this.getSubjectHolder().getValue().getName(); + } + + private Caching getSubjectParent() { + return this.getSubjectHolder().getValue().getParent(); + } + + private void addCacheSizeCombo(Composite container) { + new IntegerCombo<CachingEntity>(this, container) { + @Override + protected String getHelpId() { + return EclipseLinkHelpContextIds.PERSISTENCE_CACHING; + } + @Override + protected PropertyValueModel<Integer> buildDefaultHolder() { + return new PropertyAspectAdapter<Caching, Integer>(buildCachingHolder(), Caching.CACHE_SIZE_DEFAULT_PROPERTY) { + @Override + protected Integer buildValue_() { + Integer value = this.subject.getCacheSizeDefault(); + if (value == null) { + value = this.subject.getDefaultCacheSizeDefault(); + } + return value; + } + }; + } + + @Override + protected ModifiablePropertyValueModel<Integer> buildSelectedItemHolder() { + return new PropertyAspectAdapter<CachingEntity, Integer>(getSubjectHolder(), CachingEntity.CACHE_SIZE_PROPERTY) { + @Override + protected Integer buildValue_() { + return getSubjectParent().getCacheSizeOf(getSubjectName()); + } + + @Override + protected void setValue_(Integer value) { + getSubjectParent().setCacheSizeOf(getSubjectName(), value); + } + }; + } + }; + } + + private PropertyValueModel<Caching> buildCachingHolder() { + return new TransformationPropertyValueModel<CachingEntity, Caching>(this.getSubjectHolder()) { + @Override + protected Caching transform_(CachingEntity value) { + return value.getParent(); + } + }; + } + + private ModifiablePropertyValueModel<Boolean> buildSharedCacheHolder() { + return new PropertyAspectAdapter<CachingEntity, Boolean>( + getSubjectHolder(), CachingEntity.SHARED_CACHE_PROPERTY) { + @Override + protected Boolean buildValue_() { + return getSubjectParent().getSharedCacheOf(getSubjectName()); + } + + @Override + protected void setValue_(Boolean value) { + getSubjectParent().setSharedCacheOf(getSubjectName(), value); + } + }; + } + + private PropertyValueModel<String> buildSharedCacheStringHolder() { + return new TransformationPropertyValueModel<Boolean, String>(buildDefaultAndNonDefaultSharedCacheHolder()) { + @Override + protected String transform(Boolean value) { + if (value != null) { + String defaultStringValue = value.booleanValue() ? JptCommonUiMessages.Boolean_True : JptCommonUiMessages.Boolean_False; + return NLS.bind(EclipseLinkUiMessages.PersistenceXmlCachingTab_defaultSharedCacheLabel, defaultStringValue); + } + return EclipseLinkUiMessages.PersistenceXmlCachingTab_sharedCacheLabel; + } + }; + } + + private PropertyValueModel<Boolean> buildDefaultAndNonDefaultSharedCacheHolder() { + return new ListPropertyValueModelAdapter<Boolean>( + buildDefaultAndNonDefaultSharedCacheListHolder() + ) { + @Override + protected Boolean buildValue() { + // If the number of ListValueModel equals 1, that means the shared + // Cache properties is not set (partially selected), which means we + // want to see the default value appended to the text + if (this.listModel.size() == 1) { + return (Boolean) this.listModel.listIterator().next(); + } + return null; + } + }; + } + + private ListValueModel<Boolean> buildDefaultAndNonDefaultSharedCacheListHolder() { + ArrayList<ListValueModel<Boolean>> holders = new ArrayList<ListValueModel<Boolean>>(2); + holders.add(buildSharedCacheListHolder()); + holders.add(buildDefaultSharedCacheListHolder()); + + return new CompositeListValueModel<ListValueModel<Boolean>, Boolean>( + holders + ); + } + + private ListValueModel<Boolean> buildSharedCacheListHolder() { + return new PropertyListValueModelAdapter<Boolean>( + buildSharedCacheHolder() + ); + } + + private ListValueModel<Boolean> buildDefaultSharedCacheListHolder() { + return new PropertyListValueModelAdapter<Boolean>( + buildDefaultSharedCacheHolder() + ); + } - // Share Cache - new SharedCacheComposite(this, container); + private PropertyValueModel<Boolean> buildDefaultSharedCacheHolder() { + return new PropertyAspectAdapter<Caching, Boolean>(buildCachingHolder(), Caching.SHARED_CACHE_DEFAULT_PROPERTY) { + @Override + protected Boolean buildValue_() { + Boolean value = this.subject.getSharedCacheDefault(); + if (value == null) { + value = this.subject.getDefaultSharedCacheDefault(); + } + return value; + } + }; } } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/caching/EntityListComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/caching/EntityListComposite.java index a2bc198203..24cb4d4cdd 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/caching/EntityListComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/caching/EntityListComposite.java @@ -20,18 +20,17 @@ import org.eclipse.jdt.ui.JavaUI; import org.eclipse.jface.viewers.ILabelProvider; import org.eclipse.jface.viewers.LabelProvider; import org.eclipse.jface.window.Window; -import org.eclipse.jpt.common.ui.internal.util.PaneEnabler; import org.eclipse.jpt.common.ui.internal.widgets.AddRemoveListPane; import org.eclipse.jpt.common.ui.internal.widgets.Pane; -import org.eclipse.jpt.common.utility.internal.CollectionTools; import org.eclipse.jpt.common.utility.internal.iterables.ListIterable; +import org.eclipse.jpt.common.utility.internal.model.value.CollectionPropertyValueModelAdapter; import org.eclipse.jpt.common.utility.internal.model.value.ListAspectAdapter; -import org.eclipse.jpt.common.utility.internal.model.value.SimplePropertyValueModel; +import org.eclipse.jpt.common.utility.internal.model.value.SimpleCollectionValueModel; import org.eclipse.jpt.common.utility.internal.model.value.TransformationPropertyValueModel; -import org.eclipse.jpt.common.utility.internal.model.value.swing.ObjectListSelectionModel; +import org.eclipse.jpt.common.utility.model.value.CollectionValueModel; import org.eclipse.jpt.common.utility.model.value.ListValueModel; +import org.eclipse.jpt.common.utility.model.value.ModifiableCollectionValueModel; import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; -import org.eclipse.jpt.common.utility.model.value.ModifiablePropertyValueModel; import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.Caching; import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.CachingEntity; import org.eclipse.jpt.jpa.eclipselink.ui.JptJpaEclipseLinkUiPlugin; @@ -47,7 +46,8 @@ import org.eclipse.ui.progress.IProgressService; */ public class EntityListComposite<T extends Caching> extends Pane<T> { - ModifiablePropertyValueModel<CachingEntity> entityHolder; + private ModifiableCollectionValueModel<CachingEntity> selectedEntitiesModel; + private PropertyValueModel<CachingEntity> selectedEntityModel; public EntityListComposite(Pane<T> parentComposite, Composite parent) { @@ -57,54 +57,79 @@ public class EntityListComposite<T extends Caching> extends Pane<T> @Override protected void initialize() { super.initialize(); - this.entityHolder = this.buildEntityHolder(); + this.selectedEntitiesModel = this.buildSelectedEntitiesModel(); + this.selectedEntityModel = this.buildSelectedEntityModel(this.selectedEntitiesModel); } - @Override - protected void initializeLayout(Composite container) { + private ModifiableCollectionValueModel<CachingEntity> buildSelectedEntitiesModel() { + return new SimpleCollectionValueModel<CachingEntity>(); + } - container = this.addTitledGroup( - container, + private PropertyValueModel<CachingEntity> buildSelectedEntityModel(CollectionValueModel<CachingEntity> selectedEntitiesModel) { + return new CollectionPropertyValueModelAdapter<CachingEntity, CachingEntity>(selectedEntitiesModel) { + @Override + protected CachingEntity buildValue() { + if (this.collectionModel.size() == 1) { + return this.collectionModel.iterator().next(); + } + return null; + } + }; + } + + @Override + protected Composite addComposite(Composite parent) { + return this.addTitledGroup( + parent, EclipseLinkUiMessages.CachingEntityListComposite_groupTitle ); + } + + @Override + protected void initializeLayout(Composite container) { // Entities add/remove list pane - new AddRemoveListPane<Caching>( + new AddRemoveListPane<Caching, CachingEntity>( this, container, this.buildEntitiesAdapter(), this.buildEntitiesListHolder(), - this.entityHolder, + this.selectedEntitiesModel, this.buildEntityLabelProvider(), EclipseLinkHelpContextIds.PERSISTENCE_CACHING ); // Entity Caching property pane - EntityCachingPropertyComposite pane = new EntityCachingPropertyComposite( + new EntityCachingPropertyComposite( this, - this.entityHolder, + this.selectedEntityModel, + buildPaneEnablerModel(this.selectedEntityModel), container ); - this.installPaneEnabler(this.entityHolder, pane); } - private AddRemoveListPane.Adapter buildEntitiesAdapter() { - return new AddRemoveListPane.AbstractAdapter() { - public void addNewItem(ObjectListSelectionModel listSelectionModel) { - EntityListComposite.this.addEntities(listSelectionModel); + private AddRemoveListPane.Adapter<CachingEntity> buildEntitiesAdapter() { + return new AddRemoveListPane.AbstractAdapter<CachingEntity>() { + + public CachingEntity addNewItem() { + return EntityListComposite.this.addEntity(); } - public void removeSelectedItems(ObjectListSelectionModel listSelectionModel) { - Caching caching = getSubject(); - for (Object item : listSelectionModel.selectedValues()) { - CachingEntity entityCaching = (CachingEntity) item; - caching.removeEntity(entityCaching.getName()); - } + @Override + public PropertyValueModel<Boolean> buildRemoveButtonEnabledModel(CollectionValueModel<CachingEntity> selectedItemsModel) { + //enable the remove button only when 1 item is selected, same as the optional button + return this.buildSingleSelectedItemEnabledModel(selectedItemsModel); + } + + public void removeSelectedItems(CollectionValueModel<CachingEntity> selectedItemsModel) { + //assume only 1 item since remove button is disabled otherwise + CachingEntity cachingEntity = selectedItemsModel.iterator().next(); + getSubject().removeEntity(cachingEntity.getName()); } }; } - private void addEntities(ObjectListSelectionModel listSelectionModel) { + private CachingEntity addEntity() { IType type = this.chooseEntity(); @@ -115,13 +140,10 @@ public class EntityListComposite<T extends Caching> extends Pane<T> } if( ! this.getSubject().entityExists(entityName)) { - this.getSubject().addEntity(entityName); - int index = CollectionTools.indexOf(this.getSubject().getEntityNames(), entityName); - CachingEntity entity = (CachingEntity) listSelectionModel.getListModel().getElementAt(index); - listSelectionModel.setSelectedValue(entity); - this.entityHolder.setValue(entity); + return this.getSubject().addEntity(entityName); } } + return null; } private String getEntityName(String fullyQualifiedTypeName) { @@ -174,10 +196,6 @@ public class EntityListComposite<T extends Caching> extends Pane<T> }; } - private ModifiablePropertyValueModel<CachingEntity> buildEntityHolder() { - return new SimplePropertyValueModel<CachingEntity>(); - } - private ListValueModel<CachingEntity> buildEntitiesListHolder() { return new ListAspectAdapter<Caching, CachingEntity>( this.getSubjectHolder(), Caching.ENTITIES_LIST) { @@ -192,20 +210,11 @@ public class EntityListComposite<T extends Caching> extends Pane<T> }; } - private void installPaneEnabler(ModifiablePropertyValueModel<CachingEntity> entityHolder, - EntityCachingPropertyComposite pane) { - - new PaneEnabler( - this.buildPaneEnablerHolder(entityHolder), - pane - ); - } - - private PropertyValueModel<Boolean> buildPaneEnablerHolder(ModifiablePropertyValueModel<CachingEntity> entityHolder) { + private PropertyValueModel<Boolean> buildPaneEnablerModel(PropertyValueModel<CachingEntity> entityHolder) { return new TransformationPropertyValueModel<CachingEntity, Boolean>(entityHolder) { @Override protected Boolean transform_(CachingEntity value) { - return value.entityNameIsValid(); + return Boolean.valueOf(value.entityNameIsValid()); } }; } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/caching/FlushClearCacheComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/caching/FlushClearCacheComposite.java deleted file mode 100644 index 87f3042da1..0000000000 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/caching/FlushClearCacheComposite.java +++ /dev/null @@ -1,99 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2008, 2012 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.jpa.eclipselink.ui.internal.persistence.caching; - -import java.util.Collection; -import org.eclipse.jpt.common.ui.internal.widgets.EnumFormComboViewer; -import org.eclipse.jpt.common.ui.internal.widgets.Pane; -import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.Caching; -import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.FlushClearCache; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.EclipseLinkHelpContextIds; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.EclipseLinkUiMessages; -import org.eclipse.swt.widgets.Composite; - -/** - * FlushClearCacheComposite - */ -public class FlushClearCacheComposite extends Pane<Caching> -{ - /** - * Creates a new <code>FlushClearCacheComposite</code>. - * - * @param parentController - * The parent container of this one - * @param parent - * The parent container - */ - public FlushClearCacheComposite( - Pane<? extends Caching> parentComposite, - Composite parent) { - - super(parentComposite, parent); - } - - @Override - protected void initializeLayout(Composite parent) { - this.addLabeledComposite( - parent, - EclipseLinkUiMessages.PersistenceXmlCachingTab_FlushClearCacheLabel, - this.addFlushClearCacheCombo(parent), - EclipseLinkHelpContextIds.PERSISTENCE_CACHING - ); - } - - private EnumFormComboViewer<Caching, FlushClearCache> addFlushClearCacheCombo(Composite container) { - return new EnumFormComboViewer<Caching, FlushClearCache>(this, container) { - @Override - protected void addPropertyNames(Collection<String> propertyNames) { - super.addPropertyNames(propertyNames); - propertyNames.add(Caching.FLUSH_CLEAR_CACHE_PROPERTY); - } - - @Override - protected FlushClearCache[] getChoices() { - return FlushClearCache.values(); - } - - @Override - protected boolean sortChoices() { - return false; - } - - @Override - protected FlushClearCache getDefaultValue() { - return this.getSubject().getDefaultFlushClearCache(); - } - - @Override - protected String displayString(FlushClearCache value) { - switch (value) { - case drop : - return EclipseLinkUiMessages.FlushClearCacheComposite_drop; - case drop_invalidate : - return EclipseLinkUiMessages.FlushClearCacheComposite_drop_invalidate; - case merge : - return EclipseLinkUiMessages.FlushClearCacheComposite_merge; - default : - throw new IllegalStateException(); - } - } - - @Override - protected FlushClearCache getValue() { - return this.getSubject().getFlushClearCache(); - } - - @Override - protected void setValue(FlushClearCache value) { - this.getSubject().setFlushClearCache(value); - } - }; - } -} diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/caching/PersistenceXmlCachingTab.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/caching/PersistenceXmlCachingTab.java index 8dfbd3c17d..80be10a55e 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/caching/PersistenceXmlCachingTab.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/caching/PersistenceXmlCachingTab.java @@ -1,5 +1,5 @@ /******************************************************************************* -* Copyright (c) 2007, 2011 Oracle. All rights reserved. +* Copyright (c) 2007, 2012 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. @@ -9,15 +9,17 @@ *******************************************************************************/ package org.eclipse.jpt.jpa.eclipselink.ui.internal.persistence.caching; +import java.util.Collection; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.jpt.common.ui.WidgetFactory; +import org.eclipse.jpt.common.ui.internal.widgets.EnumFormComboViewer; import org.eclipse.jpt.common.ui.internal.widgets.Pane; import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.Caching; +import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.FlushClearCache; import org.eclipse.jpt.jpa.eclipselink.ui.internal.EclipseLinkHelpContextIds; import org.eclipse.jpt.jpa.eclipselink.ui.internal.EclipseLinkUiMessages; -import org.eclipse.jpt.jpa.ui.details.JpaPageComposite; -import org.eclipse.swt.SWT; +import org.eclipse.jpt.jpa.ui.editors.JpaPageComposite; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Composite; @@ -36,12 +38,6 @@ public class PersistenceXmlCachingTab<T extends Caching> super(subjectHolder, parent, widgetFactory); } - - @Override - protected void initializeLayout(Composite container) { - - new EclipseLinkCachingComposite<T>(this, container); - } // ********** JpaPageComposite implementation ********** @@ -56,32 +52,84 @@ public class PersistenceXmlCachingTab<T extends Caching> return EclipseLinkUiMessages.PersistenceXmlCachingTab_title; } - // ********** Layout ********** @Override - protected Composite addContainer(Composite parent) { - GridLayout layout = new GridLayout(1, true); - layout.marginHeight = 0; - layout.marginWidth = 0; - layout.marginTop = 0; - layout.marginLeft = 0; - layout.marginBottom = 0; - layout.marginRight = 0; - layout.verticalSpacing = 15; - - Composite container = addPane(parent, layout); - updateGridData(container); - - return container; - } + protected void initializeLayout(Composite container) { + container = this.addSection( + container, + EclipseLinkUiMessages.PersistenceXmlCachingTab_sectionTitle, + EclipseLinkUiMessages.PersistenceXmlCachingTab_sectionDescription + ); + container.setLayout(new GridLayout(2, false)); + + // Defaults + CacheDefaultsComposite<T> defaultsComposite = new CacheDefaultsComposite<T>(this, container); + GridData gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.horizontalSpan = 2; + defaultsComposite.getControl().setLayoutData(gridData); + + // EntitiesList + EntityListComposite<T> entitiesComposite = new EntityListComposite<T>(this, container); + gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.horizontalSpan = 2; + entitiesComposite.getControl().setLayoutData(gridData); - private void updateGridData(Composite container) { - GridData gridData = new GridData(); - gridData.grabExcessHorizontalSpace = true; - gridData.grabExcessVerticalSpace = true; - gridData.horizontalAlignment = SWT.FILL; - gridData.verticalAlignment = SWT.FILL; - container.setLayoutData(gridData); + // Flush Clear Cache + this.addLabel(container, EclipseLinkUiMessages.PersistenceXmlCachingTab_FlushClearCacheLabel); + this.addFlushClearCacheCombo(container); } + protected EnumFormComboViewer<Caching, FlushClearCache> addFlushClearCacheCombo(Composite container) { + return new EnumFormComboViewer<Caching, FlushClearCache>(this, container) { + @Override + protected void addPropertyNames(Collection<String> propertyNames) { + super.addPropertyNames(propertyNames); + propertyNames.add(Caching.FLUSH_CLEAR_CACHE_PROPERTY); + } + + @Override + protected FlushClearCache[] getChoices() { + return FlushClearCache.values(); + } + + @Override + protected boolean sortChoices() { + return false; + } + + @Override + protected FlushClearCache getDefaultValue() { + return this.getSubject().getDefaultFlushClearCache(); + } + + @Override + protected String displayString(FlushClearCache value) { + switch (value) { + case drop : + return EclipseLinkUiMessages.FlushClearCacheComposite_drop; + case drop_invalidate : + return EclipseLinkUiMessages.FlushClearCacheComposite_drop_invalidate; + case merge : + return EclipseLinkUiMessages.FlushClearCacheComposite_merge; + default : + throw new IllegalStateException(); + } + } + + @Override + protected FlushClearCache getValue() { + return this.getSubject().getFlushClearCache(); + } + + @Override + protected void setValue(FlushClearCache value) { + this.getSubject().setFlushClearCache(value); + } + + @Override + protected String getHelpId() { + return EclipseLinkHelpContextIds.PERSISTENCE_CACHING; + } + }; + } } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/caching/SharedCacheComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/caching/SharedCacheComposite.java deleted file mode 100644 index 206145de1b..0000000000 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/caching/SharedCacheComposite.java +++ /dev/null @@ -1,158 +0,0 @@ -/******************************************************************************* -* Copyright (c) 2008, 2012 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.jpa.eclipselink.ui.internal.persistence.caching; - -import java.util.ArrayList; -import org.eclipse.jpt.common.ui.internal.JptCommonUiMessages; -import org.eclipse.jpt.common.ui.internal.widgets.Pane; -import org.eclipse.jpt.common.ui.internal.widgets.TriStateCheckBox; -import org.eclipse.jpt.common.utility.internal.model.value.CompositeListValueModel; -import org.eclipse.jpt.common.utility.internal.model.value.ListPropertyValueModelAdapter; -import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter; -import org.eclipse.jpt.common.utility.internal.model.value.PropertyListValueModelAdapter; -import org.eclipse.jpt.common.utility.internal.model.value.TransformationPropertyValueModel; -import org.eclipse.jpt.common.utility.model.value.ListValueModel; -import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; -import org.eclipse.jpt.common.utility.model.value.ModifiablePropertyValueModel; -import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.Caching; -import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.CachingEntity; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.EclipseLinkHelpContextIds; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.EclipseLinkUiMessages; -import org.eclipse.osgi.util.NLS; -import org.eclipse.swt.widgets.Composite; - -/** - * SharedCacheComposite - */ -public class SharedCacheComposite extends Pane<CachingEntity> -{ - private TriStateCheckBox sharedCacheCheckBox; - - /** - * Creates a new <code>ShareCacheComposite</code>. - * - * @param parentController The parent container of this one - * @param parent The parent container - */ - public SharedCacheComposite(Pane<CachingEntity> parentComposite, - Composite parent) { - - super(parentComposite, parent); - } - - private PropertyValueModel<Caching> buildCachingHolder() { - return new TransformationPropertyValueModel<CachingEntity, Caching>(this.getSubjectHolder()) { - @Override - protected Caching transform_(CachingEntity value) { - return value.getParent(); - } - }; - } - - private PropertyValueModel<Boolean> buildDefaultAndNonDefaultSharedCacheHolder() { - return new ListPropertyValueModelAdapter<Boolean>( - buildDefaultAndNonDefaultSharedCacheListHolder() - ) { - @Override - protected Boolean buildValue() { - // If the number of ListValueModel equals 1, that means the shared - // Cache properties is not set (partially selected), which means we - // want to see the default value appended to the text - if (this.listModel.size() == 1) { - return (Boolean) this.listModel.listIterator().next(); - } - return null; - } - }; - } - - private ListValueModel<Boolean> buildDefaultAndNonDefaultSharedCacheListHolder() { - ArrayList<ListValueModel<Boolean>> holders = new ArrayList<ListValueModel<Boolean>>(2); - holders.add(buildSharedCacheListHolder()); - holders.add(buildDefaultSharedCacheListHolder()); - - return new CompositeListValueModel<ListValueModel<Boolean>, Boolean>( - holders - ); - } - - private PropertyValueModel<Boolean> buildDefaultSharedCacheHolder() { - return new PropertyAspectAdapter<Caching, Boolean>(buildCachingHolder(), Caching.SHARED_CACHE_DEFAULT_PROPERTY) { - @Override - protected Boolean buildValue_() { - Boolean value = this.subject.getSharedCacheDefault(); - if (value == null) { - value = this.subject.getDefaultSharedCacheDefault(); - } - return value; - } - }; - } - - private ListValueModel<Boolean> buildDefaultSharedCacheListHolder() { - return new PropertyListValueModelAdapter<Boolean>( - buildDefaultSharedCacheHolder() - ); - } - - private ModifiablePropertyValueModel<Boolean> buildSharedCacheHolder() { - return new PropertyAspectAdapter<CachingEntity, Boolean>( - getSubjectHolder(), CachingEntity.SHARED_CACHE_PROPERTY) { - @Override - protected Boolean buildValue_() { - return getSubjectParent().getSharedCacheOf(getSubjectName()); - } - - @Override - protected void setValue_(Boolean value) { - getSubjectParent().setSharedCacheOf(getSubjectName(), value); - } - }; - } - - private String getSubjectName() { - return this.getSubjectHolder().getValue().getName(); - } - - private Caching getSubjectParent() { - return this.getSubjectHolder().getValue().getParent(); - } - - private ListValueModel<Boolean> buildSharedCacheListHolder() { - return new PropertyListValueModelAdapter<Boolean>( - buildSharedCacheHolder() - ); - } - - private PropertyValueModel<String> buildSharedCacheStringHolder() { - return new TransformationPropertyValueModel<Boolean, String>(buildDefaultAndNonDefaultSharedCacheHolder()) { - @Override - protected String transform(Boolean value) { - if (value != null) { - String defaultStringValue = value.booleanValue() ? JptCommonUiMessages.Boolean_True : JptCommonUiMessages.Boolean_False; - return NLS.bind(EclipseLinkUiMessages.PersistenceXmlCachingTab_defaultSharedCacheLabel, defaultStringValue); - } - return EclipseLinkUiMessages.PersistenceXmlCachingTab_sharedCacheLabel; - } - }; - } - - @Override - protected void initializeLayout(Composite container) { - - this.sharedCacheCheckBox = this.addTriStateCheckBoxWithDefault( - container, - EclipseLinkUiMessages.PersistenceXmlCachingTab_sharedCacheLabel, - this.buildSharedCacheHolder(), - this.buildSharedCacheStringHolder(), - EclipseLinkHelpContextIds.PERSISTENCE_CACHING - ); - } -}
\ No newline at end of file diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/connection/BatchWritingComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/connection/BatchWritingComposite.java deleted file mode 100644 index 19272784b2..0000000000 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/connection/BatchWritingComposite.java +++ /dev/null @@ -1,98 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2008, 2012 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.jpa.eclipselink.ui.internal.persistence.connection; - -import java.util.Collection; -import org.eclipse.jpt.common.ui.internal.widgets.EnumFormComboViewer; -import org.eclipse.jpt.common.ui.internal.widgets.Pane; -import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.BatchWriting; -import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.Connection; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.EclipseLinkUiMessages; -import org.eclipse.jpt.jpa.ui.internal.JpaHelpContextIds; -import org.eclipse.swt.widgets.Composite; - -/** - * BatchWritingComposite - */ -public class BatchWritingComposite<T extends Connection> - extends Pane<T> -{ - /** - * Creates a new <code>BatchWritingComposite</code>. - * - * @param parentController - * The parent container of this one - * @param parent - * The parent container - */ - public BatchWritingComposite( - Pane<T> parentComposite, - Composite parent) { - - super( parentComposite, parent); - } - - private EnumFormComboViewer<Connection, BatchWriting> addBatchWritingCombo(Composite container) { - return new EnumFormComboViewer<Connection, BatchWriting>(this, container) { - @Override - protected void addPropertyNames(Collection<String> propertyNames) { - super.addPropertyNames(propertyNames); - propertyNames.add(Connection.BATCH_WRITING_PROPERTY); - } - - @Override - protected BatchWriting[] getChoices() { - return BatchWriting.values(); - } - - @Override - protected BatchWriting getDefaultValue() { - return getSubject().getDefaultBatchWriting(); - } - - @Override - protected String displayString(BatchWriting value) { - switch (value) { - case buffered : - return EclipseLinkUiMessages.BatchWritingComposite_buffered; - case jdbc : - return EclipseLinkUiMessages.BatchWritingComposite_jdbc; - case none : - return EclipseLinkUiMessages.BatchWritingComposite_none; - case oracle_jdbc : - return EclipseLinkUiMessages.BatchWritingComposite_oracle_jdbc; - default : - throw new IllegalStateException(); - } - } - - @Override - protected BatchWriting getValue() { - return getSubject().getBatchWriting(); - } - - @Override - protected void setValue(BatchWriting value) { - getSubject().setBatchWriting(value); - } - }; - } - - @Override - protected void initializeLayout( Composite container) { - - this.addLabeledComposite( - container, - EclipseLinkUiMessages.PersistenceXmlConnectionTab_batchWritingLabel, - this.addBatchWritingCombo( container), - JpaHelpContextIds.PERSISTENCE_XML_CONNECTION - ); - } -} diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/connection/CacheStatementsPropertiesComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/connection/CacheStatementsPropertiesComposite.java deleted file mode 100644 index 4bbcb8d129..0000000000 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/connection/CacheStatementsPropertiesComposite.java +++ /dev/null @@ -1,135 +0,0 @@ -/******************************************************************************* -* Copyright (c) 2008, 2012 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.jpa.eclipselink.ui.internal.persistence.connection; - -import org.eclipse.jpt.common.ui.internal.util.PaneEnabler; -import org.eclipse.jpt.common.ui.internal.widgets.IntegerCombo; -import org.eclipse.jpt.common.ui.internal.widgets.Pane; -import org.eclipse.jpt.common.utility.internal.StringConverter; -import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter; -import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; -import org.eclipse.jpt.common.utility.model.value.ModifiablePropertyValueModel; -import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.Connection; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.EclipseLinkUiMessages; -import org.eclipse.jpt.jpa.ui.internal.JpaHelpContextIds; -import org.eclipse.swt.widgets.Combo; -import org.eclipse.swt.widgets.Composite; - -/** - * CacheStatementsPropertiesComposite - */ -public class CacheStatementsPropertiesComposite<T extends Connection> - extends Pane<T> -{ - public CacheStatementsPropertiesComposite( - Pane<T> parentComposite, - Composite parent) { - - super(parentComposite, parent); - } - - @Override - protected void initializeLayout(Composite container) { - - ModifiablePropertyValueModel<Boolean> cacheStatementsHolder = buildCacheStatementsHolder(); - - container = this.addSubPane(container, 3, 5, 0, 0, 0); - - this.addTriStateCheckBox( - container, - EclipseLinkUiMessages.PersistenceXmlConnectionTab_cacheStatementsLabel, - cacheStatementsHolder, - JpaHelpContextIds.PERSISTENCE_XML_CONNECTION - ); - IntegerCombo<?> combo = addCacheStatementsSizeCombo(container); - - this.installControlEnabler(cacheStatementsHolder, combo); - } - - private ModifiablePropertyValueModel<Boolean> buildCacheStatementsHolder() { - return new PropertyAspectAdapter<Connection, Boolean>(getSubjectHolder(), Connection.CACHE_STATEMENTS_PROPERTY) { - @Override - protected Boolean buildValue_() { - return this.subject.getCacheStatements(); - } - - @Override - protected void setValue_(Boolean value) { - this.subject.setCacheStatements(value); - } - - @Override - protected synchronized void subjectChanged() { - Boolean oldValue = this.getValue(); - super.subjectChanged(); - Boolean newValue = this.getValue(); - - // Make sure the default value is appended to the text - if (oldValue == newValue && newValue == null) { - this.fireAspectChanged(Boolean.TRUE, newValue); - } - } - }; - } - - private IntegerCombo<Connection> addCacheStatementsSizeCombo(Composite container) { - return new IntegerCombo<Connection>(this, container) { - - @Override - protected Combo addIntegerCombo(Composite container) { - return this.addEditableCombo( - container, - buildDefaultListHolder(), - buildSelectedItemStringHolder(), - StringConverter.Default.<String>instance()); - } - - @Override - protected String getLabelText() { - throw new UnsupportedOperationException(); - } - - @Override - protected String getHelpId() { - return JpaHelpContextIds.PERSISTENCE_XML_CONNECTION; - } - - @Override - protected PropertyValueModel<Integer> buildDefaultHolder() { - return new PropertyAspectAdapter<Connection, Integer>(getSubjectHolder()) { - @Override - protected Integer buildValue_() { - return this.subject.getDefaultCacheStatementsSize(); - } - }; - } - - @Override - protected ModifiablePropertyValueModel<Integer> buildSelectedItemHolder() { - return new PropertyAspectAdapter<Connection, Integer>(getSubjectHolder(), Connection.CACHE_STATEMENTS_SIZE_PROPERTY) { - @Override - protected Integer buildValue_() { - return this.subject.getCacheStatementsSize(); - } - - @Override - protected void setValue_(Integer value) { - this.subject.setCacheStatementsSize(value); - } - }; - } - }; - } - - private void installControlEnabler(ModifiablePropertyValueModel<Boolean> cacheStatementsHolder, IntegerCombo<?> combo) { - - new PaneEnabler(cacheStatementsHolder, combo); - } -}
\ No newline at end of file diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/connection/ConnectionPropertiesComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/connection/ConnectionPropertiesComposite.java index f08a3728e5..6413494da1 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/connection/ConnectionPropertiesComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/connection/ConnectionPropertiesComposite.java @@ -1,5 +1,5 @@ /******************************************************************************* -* Copyright (c) 2008, 2011 Oracle. All rights reserved. +* Copyright (c) 2008, 2012 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. @@ -10,8 +10,16 @@ package org.eclipse.jpt.jpa.eclipselink.ui.internal.persistence.connection; import org.eclipse.jpt.common.ui.internal.widgets.Pane; +import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter; +import org.eclipse.jpt.common.utility.internal.model.value.TransformationPropertyValueModel; +import org.eclipse.jpt.common.utility.model.value.ModifiablePropertyValueModel; +import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; +import org.eclipse.jpt.jpa.core.context.persistence.PersistenceUnit; +import org.eclipse.jpt.jpa.core.context.persistence.PersistenceUnitTransactionType; import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.Connection; import org.eclipse.jpt.jpa.eclipselink.ui.internal.EclipseLinkUiMessages; +import org.eclipse.jpt.jpa.ui.internal.JpaHelpContextIds; +import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; /** @@ -27,19 +35,133 @@ public class ConnectionPropertiesComposite<T extends Connection> super(parentComposite, parent); } - @Override - protected void initializeLayout(Composite container) { + public String getHelpID() { + return JpaHelpContextIds.PERSISTENCE_XML_CONNECTION; + } - container = addTitledGroup( + @Override + protected Composite addComposite(Composite container) { + return addTitledGroup( container, - EclipseLinkUiMessages.ConnectionPropertiesComposite_Database_GroupBox + EclipseLinkUiMessages.ConnectionPropertiesComposite_Database_GroupBox, + 2, + null ); + } + + @Override + protected void initializeLayout(Composite container) { + // JTA Data Source + PropertyValueModel<Boolean> jtaEnabled = this.buildJTADataSourceHolder(); + addLabel(container, EclipseLinkUiMessages.PersistenceXmlConnectionTab_jtaDataSourceLabel, jtaEnabled); + addText(container, this.buildJtaDataSourceHolder(), this.getHelpID(), jtaEnabled); + + // Non-JTA Data Source + PropertyValueModel<Boolean> nonJtaEnabled = this.buildNonJTADataSourceHolder(); + addLabel(container, EclipseLinkUiMessages.PersistenceXmlConnectionTab_nonJtaDataSourceLabel, nonJtaEnabled); + addText(container, buildNonJtaDataSourceHolder(), this.getHelpID(), nonJtaEnabled); + + + PropertyValueModel<Boolean> enabledModel = buildTransacationTypeResourceLocalEnabledModel(); - // Data source - new DataSourcePropertiesComposite<T>(this, container); // EclipseLink Connection Pool - new JdbcPropertiesComposite<T>(this, container); + JdbcPropertiesComposite<T> jdbcComposite = new JdbcPropertiesComposite<T>(this, container, enabledModel); + GridData gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.horizontalSpan = 2; + jdbcComposite.getControl().setLayoutData(gridData); + // Exclusive Connections - new JdbcExclusiveConnectionsPropertiesComposite<T>(this, container); + JdbcExclusiveConnectionsPropertiesComposite<T> exclusiveConnectionsComposite = new JdbcExclusiveConnectionsPropertiesComposite<T>(this, container, enabledModel); + gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.horizontalSpan = 2; + exclusiveConnectionsComposite.getControl().setLayoutData(gridData); + } + + + + private PropertyValueModel<Boolean> buildTransacationTypeResourceLocalEnabledModel() { + return new TransformationPropertyValueModel<PersistenceUnitTransactionType, Boolean>(this.buildTransactionTypeHolder()) { + @Override + protected Boolean transform(PersistenceUnitTransactionType value) { + return Boolean.valueOf(value == PersistenceUnitTransactionType.RESOURCE_LOCAL); + } + }; + } + + private ModifiablePropertyValueModel<String> buildJtaDataSourceHolder() { + return new PropertyAspectAdapter<PersistenceUnit, String>(buildPersistenceUnitHolder(), PersistenceUnit.JTA_DATA_SOURCE_PROPERTY) { + @Override + protected String buildValue_() { + return this.subject.getJtaDataSource(); + } + + @Override + protected void setValue_(String value) { + if (value.length() == 0) { + value = null; + } + this.subject.setJtaDataSource(value); + } + }; + } + + private PropertyValueModel<Boolean> buildJTADataSourceHolder() { + return new TransformationPropertyValueModel<PersistenceUnitTransactionType, Boolean>(buildTransactionTypeHolder()) { + @Override + protected Boolean transform(PersistenceUnitTransactionType value) { + return Boolean.valueOf(this.transform2(value)); + } + private boolean transform2(PersistenceUnitTransactionType value) { + return value == null || value == PersistenceUnitTransactionType.JTA; + } + }; + } + + private ModifiablePropertyValueModel<String> buildNonJtaDataSourceHolder() { + return new PropertyAspectAdapter<PersistenceUnit, String>(buildPersistenceUnitHolder(), PersistenceUnit.NON_JTA_DATA_SOURCE_PROPERTY) { + @Override + protected String buildValue_() { + return this.subject.getNonJtaDataSource(); + } + + @Override + protected void setValue_(String value) { + if (value.length() == 0) { + value = null; + } + this.subject.setNonJtaDataSource(value); + } + }; } + + private PropertyValueModel<Boolean> buildNonJTADataSourceHolder() { + return new TransformationPropertyValueModel<PersistenceUnitTransactionType, Boolean>(buildTransactionTypeHolder()) { + @Override + protected Boolean transform(PersistenceUnitTransactionType value) { + return Boolean.valueOf(value == PersistenceUnitTransactionType.RESOURCE_LOCAL); + } + }; + } + + private PropertyValueModel<PersistenceUnitTransactionType> buildTransactionTypeHolder() { + return new PropertyAspectAdapter<PersistenceUnit, PersistenceUnitTransactionType>( + buildPersistenceUnitHolder(), + PersistenceUnit.SPECIFIED_TRANSACTION_TYPE_PROPERTY, + PersistenceUnit.DEFAULT_TRANSACTION_TYPE_PROPERTY) { + @Override + protected PersistenceUnitTransactionType buildValue_() { + return this.subject.getTransactionType(); + } + }; + } + + private PropertyValueModel<PersistenceUnit> buildPersistenceUnitHolder() { + return new PropertyAspectAdapter<Connection, PersistenceUnit>(getSubjectHolder()) { + @Override + protected PersistenceUnit buildValue_() { + return this.subject.getPersistenceUnit(); + } + }; + } + }
\ No newline at end of file diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/connection/DataSourcePropertiesComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/connection/DataSourcePropertiesComposite.java deleted file mode 100644 index 64080cd763..0000000000 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/connection/DataSourcePropertiesComposite.java +++ /dev/null @@ -1,146 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2008, 2012 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.jpa.eclipselink.ui.internal.persistence.connection; - -import org.eclipse.jpt.common.ui.internal.widgets.Pane; -import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter; -import org.eclipse.jpt.common.utility.internal.model.value.TransformationPropertyValueModel; -import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; -import org.eclipse.jpt.common.utility.model.value.ModifiablePropertyValueModel; -import org.eclipse.jpt.jpa.core.context.persistence.PersistenceUnit; -import org.eclipse.jpt.jpa.core.context.persistence.PersistenceUnitTransactionType; -import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.Connection; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.EclipseLinkUiMessages; -import org.eclipse.jpt.jpa.ui.internal.JpaHelpContextIds; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Label; -import org.eclipse.swt.widgets.Text; - -/** - * @version 2.0 - * @since 2.0 - */ -public class DataSourcePropertiesComposite<T extends Connection> - extends Pane<T> -{ - /** - * Creates a new <code>DataSourcePropertiesComposite</code>. - * - * @param parentPane The parent container of this one - * @param parent The parent container - */ - public DataSourcePropertiesComposite( - Pane<T> parentComposite, - Composite parent) { - - super(parentComposite, parent); - } - - private ModifiablePropertyValueModel<String> buildJtaDataSourceHolder() { - return new PropertyAspectAdapter<PersistenceUnit, String>(buildPersistenceUnitHolder(), PersistenceUnit.JTA_DATA_SOURCE_PROPERTY) { - @Override - protected String buildValue_() { - return this.subject.getJtaDataSource(); - } - - @Override - protected void setValue_(String value) { - if (value.length() == 0) { - value = null; - } - this.subject.setJtaDataSource(value); - } - }; - } - - private PropertyValueModel<Boolean> buildJTADataSourceHolder() { - return new TransformationPropertyValueModel<PersistenceUnitTransactionType, Boolean>(buildTransactionTypeHolder()) { - @Override - protected Boolean transform(PersistenceUnitTransactionType value) { - return Boolean.valueOf(this.transform2(value)); - } - private boolean transform2(PersistenceUnitTransactionType value) { - return value == null || value == PersistenceUnitTransactionType.JTA; - } - }; - } - - private ModifiablePropertyValueModel<String> buildNonJtaDataSourceHolder() { - return new PropertyAspectAdapter<PersistenceUnit, String>(buildPersistenceUnitHolder(), PersistenceUnit.NON_JTA_DATA_SOURCE_PROPERTY) { - @Override - protected String buildValue_() { - return this.subject.getNonJtaDataSource(); - } - - @Override - protected void setValue_(String value) { - if (value.length() == 0) { - value = null; - } - this.subject.setNonJtaDataSource(value); - } - }; - } - - private PropertyValueModel<Boolean> buildNonJTADataSourceHolder() { - return new TransformationPropertyValueModel<PersistenceUnitTransactionType, Boolean>(buildTransactionTypeHolder()) { - @Override - protected Boolean transform(PersistenceUnitTransactionType value) { - return Boolean.valueOf(value == PersistenceUnitTransactionType.RESOURCE_LOCAL); - } - }; - } - - private PropertyValueModel<PersistenceUnitTransactionType> buildTransactionTypeHolder() { - return new PropertyAspectAdapter<PersistenceUnit, PersistenceUnitTransactionType>( - buildPersistenceUnitHolder(), - PersistenceUnit.SPECIFIED_TRANSACTION_TYPE_PROPERTY, - PersistenceUnit.DEFAULT_TRANSACTION_TYPE_PROPERTY) { - @Override - protected PersistenceUnitTransactionType buildValue_() { - return this.subject.getTransactionType(); - } - }; - } - - private PropertyValueModel<PersistenceUnit> buildPersistenceUnitHolder() { - return new PropertyAspectAdapter<Connection, PersistenceUnit>(getSubjectHolder()) { - @Override - protected PersistenceUnit buildValue_() { - return this.subject.getPersistenceUnit(); - } - }; - - } - - @Override - protected void initializeLayout(Composite container) { - - int groupBoxMargin = getGroupBoxMargin(); - - container = addSubPane(container, 0, groupBoxMargin, 0, groupBoxMargin); - - // JTA Data Source - PropertyValueModel<Boolean> jtaEnabled = this.buildJTADataSourceHolder(); - Label jtaLabel = addLabel(container, EclipseLinkUiMessages.PersistenceXmlConnectionTab_jtaDataSourceLabel, jtaEnabled); - Text jtaText = addText(container, this.buildJtaDataSourceHolder(), this.getHelpID(), jtaEnabled); - this.addLabeledComposite(container, jtaLabel, jtaText, this.getHelpID()); - - // Non-JTA Data Source - PropertyValueModel<Boolean> nonJtaEnabled = this.buildNonJTADataSourceHolder(); - Label nonJtaLabel = addLabel(container, EclipseLinkUiMessages.PersistenceXmlConnectionTab_nonJtaDataSourceLabel, nonJtaEnabled); - Text nonJtaText = addText(container, buildNonJtaDataSourceHolder(), this.getHelpID(), nonJtaEnabled); - this.addLabeledComposite(container, nonJtaLabel, nonJtaText, this.getHelpID()); - } - - public String getHelpID() { - return JpaHelpContextIds.PERSISTENCE_XML_CONNECTION; - } -}
\ No newline at end of file diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/connection/EclipseLinkConnectionComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/connection/EclipseLinkConnectionComposite.java deleted file mode 100644 index 014c004b62..0000000000 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/connection/EclipseLinkConnectionComposite.java +++ /dev/null @@ -1,55 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2008, 2011 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.jpa.eclipselink.ui.internal.persistence.connection; - -import org.eclipse.jpt.common.ui.internal.widgets.Pane; -import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.Connection; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.EclipseLinkUiMessages; -import org.eclipse.swt.widgets.Composite; - -/** - * EclipseLinkConnectionComposite - */ -public class EclipseLinkConnectionComposite<T extends Connection> - extends Pane<T> -{ - public EclipseLinkConnectionComposite( - Pane<T> subjectHolder, - Composite container) { - super(subjectHolder, container, false); - } - - @Override - protected void initializeLayout(Composite container) { - - int groupBoxMargin = getGroupBoxMargin() * 2; - - container = addSection( - container, - EclipseLinkUiMessages.PersistenceXmlConnectionTab_sectionTitle, - EclipseLinkUiMessages.PersistenceXmlConnectionTab_sectionDescription - ); - - Composite subPane = addSubPane( - container, - 0, groupBoxMargin, 10, groupBoxMargin - ); - - new TransactionTypeComposite<T>(this, subPane); - - new BatchWritingComposite<T>(this, subPane); - - new CacheStatementsPropertiesComposite<T>(this, subPane); - - new NativeSqlComposite<T>(this, subPane); - - new ConnectionPropertiesComposite<T>(this, container); - } -}
\ No newline at end of file diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/connection/JdbcBindParametersComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/connection/JdbcBindParametersComposite.java deleted file mode 100644 index 71d2fa018c..0000000000 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/connection/JdbcBindParametersComposite.java +++ /dev/null @@ -1,97 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2008, 2012 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.jpa.eclipselink.ui.internal.persistence.connection; - -import org.eclipse.jpt.common.ui.internal.JptCommonUiMessages; -import org.eclipse.jpt.common.ui.internal.widgets.Pane; -import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter; -import org.eclipse.jpt.common.utility.internal.model.value.TransformationPropertyValueModel; -import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; -import org.eclipse.jpt.common.utility.model.value.ModifiablePropertyValueModel; -import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.Connection; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.EclipseLinkUiMessages; -import org.eclipse.jpt.jpa.ui.internal.JpaHelpContextIds; -import org.eclipse.osgi.util.NLS; -import org.eclipse.swt.widgets.Composite; - -/** - * JdbcBindParametersComposite - */ -public class JdbcBindParametersComposite extends Pane<Connection> -{ - /** - * Creates a new <code>JdbcBindParametersComposite</code>. - * - * @param parentController - * The parent container of this one - * @param parent - * The parent container - */ - public JdbcBindParametersComposite( - Pane<? extends Connection> parentComposite, - Composite parent) { - - super(parentComposite, parent); - } - - @Override - protected void initializeLayout(Composite container) { - - this.addTriStateCheckBoxWithDefault( - container, - EclipseLinkUiMessages.PersistenceXmlConnectionTab_bindParametersLabel, - this.buildBindParametersHolder(), - this.buildBindParametersStringHolder(), - JpaHelpContextIds.PERSISTENCE_XML_CONNECTION - ); - } - - private ModifiablePropertyValueModel<Boolean> buildBindParametersHolder() { - return new PropertyAspectAdapter<Connection, Boolean>(getSubjectHolder(), Connection.BIND_PARAMETERS_PROPERTY) { - @Override - protected Boolean buildValue_() { - return this.subject.getBindParameters(); - } - - @Override - protected void setValue_(Boolean value) { - this.subject.setBindParameters(value); - } - }; - } - - private PropertyValueModel<String> buildBindParametersStringHolder() { - return new TransformationPropertyValueModel<Boolean, String>(buildDefaultBindParametersHolder()) { - @Override - protected String transform(Boolean value) { - if (value != null) { - String defaultStringValue = value.booleanValue() ? JptCommonUiMessages.Boolean_True : JptCommonUiMessages.Boolean_False; - return NLS.bind(EclipseLinkUiMessages.PersistenceXmlConnectionTab_bindParametersLabelDefault, defaultStringValue); - } - return EclipseLinkUiMessages.PersistenceXmlConnectionTab_bindParametersLabel; - } - }; - } - - private PropertyValueModel<Boolean> buildDefaultBindParametersHolder() { - return new PropertyAspectAdapter<Connection, Boolean>( - getSubjectHolder(), - Connection.BIND_PARAMETERS_PROPERTY) - { - @Override - protected Boolean buildValue_() { - if (this.subject.getBindParameters() != null) { - return null; - } - return this.subject.getDefaultBindParameters(); - } - }; - } -} diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/connection/JdbcConnectionPropertiesComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/connection/JdbcConnectionPropertiesComposite.java index b936d8a50d..bcd4d2cdd9 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/connection/JdbcConnectionPropertiesComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/connection/JdbcConnectionPropertiesComposite.java @@ -15,27 +15,37 @@ import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Status; import org.eclipse.core.runtime.SubMonitor; +import org.eclipse.jdt.core.IJavaProject; import org.eclipse.jface.dialogs.IDialogConstants; import org.eclipse.jface.dialogs.IDialogSettings; import org.eclipse.jface.viewers.ILabelProvider; import org.eclipse.jface.viewers.LabelProvider; +import org.eclipse.jpt.common.ui.internal.JptCommonUiMessages; +import org.eclipse.jpt.common.ui.internal.widgets.ClassChooserPane; import org.eclipse.jpt.common.ui.internal.widgets.Pane; +import org.eclipse.jpt.common.ui.internal.widgets.TriStateCheckBox; import org.eclipse.jpt.common.utility.internal.CollectionTools; import org.eclipse.jpt.common.utility.internal.StringTools; import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter; +import org.eclipse.jpt.common.utility.internal.model.value.TransformationPropertyValueModel; import org.eclipse.jpt.common.utility.model.value.ModifiablePropertyValueModel; +import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; import org.eclipse.jpt.jpa.db.ConnectionProfile; import org.eclipse.jpt.jpa.db.ConnectionProfileFactory; import org.eclipse.jpt.jpa.db.JptJpaDbPlugin; import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.Connection; import org.eclipse.jpt.jpa.eclipselink.ui.JptJpaEclipseLinkUiPlugin; import org.eclipse.jpt.jpa.eclipselink.ui.internal.EclipseLinkUiMessages; +import org.eclipse.jpt.jpa.ui.internal.JpaHelpContextIds; import org.eclipse.jpt.jpa.ui.internal.jpa2.persistence.JptUiPersistence2_0Messages; +import org.eclipse.osgi.util.NLS; import org.eclipse.swt.graphics.Image; +import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Shell; import org.eclipse.ui.dialogs.FilteredItemsSelectionDialog; +import org.eclipse.ui.forms.widgets.Hyperlink; /** * JdbcConnectionPropertiesComposite @@ -116,41 +126,134 @@ public class JdbcConnectionPropertiesComposite<T extends Connection> } @Override + protected Composite addComposite(Composite parent) { + return this.addSubPane(parent, 2, 0, 0, 0, 0); + } + + @Override protected void initializeLayout(Composite container) { // Populate from Connection hyperlink - this.addHyperlink( + Hyperlink hyperLink = this.addHyperlink( container, JptUiPersistence2_0Messages.JdbcConnectionPropertiesComposite_populateFromConnectionHyperLink, buildPopulateFromConnectionAction() ); + GridData gridData = new GridData(); + gridData.horizontalSpan = 2; + hyperLink.setLayoutData(gridData); // Driver - new JdbcDriverComposite(this, container); + this.addLabel(container, EclipseLinkUiMessages.PersistenceXmlConnectionTab_driverLabel); + this.initializeJdbcDriverClassChooser(container); // Url - this.addLabeledText( - container, - EclipseLinkUiMessages.PersistenceXmlConnectionTab_urlLabel, - buildUrlHolder() - ); + this.addLabel(container, EclipseLinkUiMessages.PersistenceXmlConnectionTab_urlLabel); + this.addText(container, buildUrlHolder()); // User - this.addLabeledText( - container, - EclipseLinkUiMessages.PersistenceXmlConnectionTab_userLabel, - buildUserHolder() - ); + this.addLabel(container, EclipseLinkUiMessages.PersistenceXmlConnectionTab_userLabel); + this.addText(container, buildUserHolder()); // Password - this.addLabeledPasswordText( + this.addLabel(container, EclipseLinkUiMessages.PersistenceXmlConnectionTab_passwordLabel); + this.addPasswordText(container, buildPasswordHolder()); + + // Bind Parameters + + TriStateCheckBox bindParametersCheckBox = this.addTriStateCheckBoxWithDefault( container, - EclipseLinkUiMessages.PersistenceXmlConnectionTab_passwordLabel, - buildPasswordHolder() + EclipseLinkUiMessages.PersistenceXmlConnectionTab_bindParametersLabel, + this.buildBindParametersHolder(), + this.buildBindParametersStringHolder(), + JpaHelpContextIds.PERSISTENCE_XML_CONNECTION ); + gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.horizontalSpan = 2; + bindParametersCheckBox.getCheckBox().setLayoutData(gridData); + } - // Bind Parameters - new JdbcBindParametersComposite(this, container); + private ClassChooserPane<Connection> initializeJdbcDriverClassChooser(Composite container) { + + return new ClassChooserPane<Connection>(this, container) { + + @Override + protected ModifiablePropertyValueModel<String> buildTextHolder() { + return new PropertyAspectAdapter<Connection, String>( + this.getSubjectHolder(), Connection.DRIVER_PROPERTY) { + @Override + protected String buildValue_() { + return this.subject.getDriver(); + } + + @Override + protected void setValue_(String value) { + + if (value.length() == 0) { + value = null; + } + this.subject.setDriver(value); + } + }; + } + + @Override + protected String getClassName() { + return this.getSubject().getDriver(); + } + + @Override + protected IJavaProject getJavaProject() { + return getSubject().getJpaProject().getJavaProject(); + } + + @Override + protected void setClassName(String className) { + this.getSubject().setDriver(className); + } + }; + } + + private ModifiablePropertyValueModel<Boolean> buildBindParametersHolder() { + return new PropertyAspectAdapter<Connection, Boolean>(getSubjectHolder(), Connection.BIND_PARAMETERS_PROPERTY) { + @Override + protected Boolean buildValue_() { + return this.subject.getBindParameters(); + } + + @Override + protected void setValue_(Boolean value) { + this.subject.setBindParameters(value); + } + }; + } + + private PropertyValueModel<String> buildBindParametersStringHolder() { + return new TransformationPropertyValueModel<Boolean, String>(buildDefaultBindParametersHolder()) { + @Override + protected String transform(Boolean value) { + if (value != null) { + String defaultStringValue = value.booleanValue() ? JptCommonUiMessages.Boolean_True : JptCommonUiMessages.Boolean_False; + return NLS.bind(EclipseLinkUiMessages.PersistenceXmlConnectionTab_bindParametersLabelDefault, defaultStringValue); + } + return EclipseLinkUiMessages.PersistenceXmlConnectionTab_bindParametersLabel; + } + }; + } + + private PropertyValueModel<Boolean> buildDefaultBindParametersHolder() { + return new PropertyAspectAdapter<Connection, Boolean>( + getSubjectHolder(), + Connection.BIND_PARAMETERS_PROPERTY) + { + @Override + protected Boolean buildValue_() { + if (this.subject.getBindParameters() != null) { + return null; + } + return this.subject.getDefaultBindParameters(); + } + }; } void promptConnection() { diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/connection/JdbcDriverComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/connection/JdbcDriverComposite.java deleted file mode 100644 index e665ac0537..0000000000 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/connection/JdbcDriverComposite.java +++ /dev/null @@ -1,94 +0,0 @@ -/******************************************************************************* -* Copyright (c) 2008, 2012 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.jpa.eclipselink.ui.internal.persistence.connection; - -import org.eclipse.jdt.core.IJavaProject; -import org.eclipse.jpt.common.ui.internal.widgets.ClassChooserPane; -import org.eclipse.jpt.common.ui.internal.widgets.Pane; -import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter; -import org.eclipse.jpt.common.utility.model.value.ModifiablePropertyValueModel; -import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.Connection; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.EclipseLinkUiMessages; -import org.eclipse.swt.widgets.Composite; - -/** - * JdbcDriverComposite - */ -public class JdbcDriverComposite extends Pane<Connection> -{ - /** - * Creates a new <code>EventListenerComposite</code>. - * - * @param parentPane The parent pane of this one - * @param parent The parent container - */ - public JdbcDriverComposite(Pane<? extends Connection> parentPane, - Composite parent) { - - super(parentPane, parent); - } - - private ClassChooserPane<Connection> initializeClassChooser(Composite container) { - - return new ClassChooserPane<Connection>(this, container) { - - @Override - protected ModifiablePropertyValueModel<String> buildTextHolder() { - return new PropertyAspectAdapter<Connection, String>( - this.getSubjectHolder(), Connection.DRIVER_PROPERTY) { - @Override - protected String buildValue_() { - return this.subject.getDriver(); - } - - @Override - protected void setValue_(String value) { - - if (value.length() == 0) { - value = null; - } - this.subject.setDriver(value); - } - }; - } - - @Override - protected String getClassName() { - return this.getSubject().getDriver(); - } - - @Override - protected String getLabelText() { - return EclipseLinkUiMessages.PersistenceXmlConnectionTab_driverLabel; - } - - @Override - protected IJavaProject getJavaProject() { - return getSubject().getJpaProject().getJavaProject(); - } - - @Override - protected void setClassName(String className) { - this.getSubject().setDriver(className); - } - - @Override - protected boolean allowTypeCreation() { - //Does not make sense to allow the user to create a new Driver class - return false; - } - }; - } - - @Override - protected void initializeLayout(Composite container) { - this.initializeClassChooser(container); - } -} diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/connection/JdbcExclusiveConnectionModeComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/connection/JdbcExclusiveConnectionModeComposite.java deleted file mode 100644 index 52c88d81af..0000000000 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/connection/JdbcExclusiveConnectionModeComposite.java +++ /dev/null @@ -1,96 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2010, 2012 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.jpa.eclipselink.ui.internal.persistence.connection; - -import java.util.Collection; -import org.eclipse.jpt.common.ui.internal.widgets.EnumFormComboViewer; -import org.eclipse.jpt.common.ui.internal.widgets.Pane; -import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.Connection; -import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.ExclusiveConnectionMode; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.EclipseLinkUiMessages; -import org.eclipse.jpt.jpa.ui.internal.JpaHelpContextIds; -import org.eclipse.swt.widgets.Composite; - -/** - * ExclusiveConnectionModeComposite - */ -public class JdbcExclusiveConnectionModeComposite<T extends Connection> - extends Pane<T> -{ - /** - * Creates a new <code>ExclusiveConnectionModeComposite</code>. - * - * @param parentController - * The parent container of this one - * @param parent - * The parent container - */ - public JdbcExclusiveConnectionModeComposite( - Pane<T> parentComposite, - Composite parent) { - - super(parentComposite, parent); - } - - @Override - protected void initializeLayout( Composite container) { - - this.addLabeledComposite( - container, - EclipseLinkUiMessages.PersistenceXmlConnectionTab_exclusiveConnectionModeLabel, - this.addExclusiveConnectionModeCombo(container), - JpaHelpContextIds.PERSISTENCE_XML_CONNECTION - ); - } - - private EnumFormComboViewer<Connection, ExclusiveConnectionMode> addExclusiveConnectionModeCombo(Composite container) { - return new EnumFormComboViewer<Connection, ExclusiveConnectionMode>(this, container) { - @Override - protected void addPropertyNames(Collection<String> propertyNames) { - super.addPropertyNames(propertyNames); - propertyNames.add(Connection.EXCLUSIVE_CONNECTION_MODE_PROPERTY); - } - - @Override - protected ExclusiveConnectionMode[] getChoices() { - return ExclusiveConnectionMode.values(); - } - - @Override - protected ExclusiveConnectionMode getDefaultValue() { - return this.getSubject().getDefaultExclusiveConnectionMode(); - } - - @Override - protected String displayString(ExclusiveConnectionMode value) { - switch (value) { - case always : - return EclipseLinkUiMessages.JdbcExclusiveConnectionModeComposite_always; - case isolated : - return EclipseLinkUiMessages.JdbcExclusiveConnectionModeComposite_isolated; - case transactional : - return EclipseLinkUiMessages.JdbcExclusiveConnectionModeComposite_transactional; - default : - throw new IllegalStateException(); - } - } - - @Override - protected ExclusiveConnectionMode getValue() { - return this.getSubject().getExclusiveConnectionMode(); - } - - @Override - protected void setValue(ExclusiveConnectionMode value) { - this.getSubject().setExclusiveConnectionMode(value); - } - }; - } -} diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/connection/JdbcExclusiveConnectionsPropertiesComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/connection/JdbcExclusiveConnectionsPropertiesComposite.java index 046b785107..96ab6e6c3b 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/connection/JdbcExclusiveConnectionsPropertiesComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/connection/JdbcExclusiveConnectionsPropertiesComposite.java @@ -1,5 +1,5 @@ /******************************************************************************* -* Copyright (c) 2010, 2011 Oracle. All rights reserved. +* Copyright (c) 2010, 2012 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. @@ -9,15 +9,21 @@ *******************************************************************************/ package org.eclipse.jpt.jpa.eclipselink.ui.internal.persistence.connection; -import org.eclipse.jpt.common.ui.internal.util.PaneEnabler; +import java.util.Collection; +import org.eclipse.jpt.common.ui.internal.JptCommonUiMessages; +import org.eclipse.jpt.common.ui.internal.widgets.EnumFormComboViewer; import org.eclipse.jpt.common.ui.internal.widgets.Pane; +import org.eclipse.jpt.common.ui.internal.widgets.TriStateCheckBox; import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter; import org.eclipse.jpt.common.utility.internal.model.value.TransformationPropertyValueModel; +import org.eclipse.jpt.common.utility.model.value.ModifiablePropertyValueModel; import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; -import org.eclipse.jpt.jpa.core.context.persistence.PersistenceUnit; -import org.eclipse.jpt.jpa.core.context.persistence.PersistenceUnitTransactionType; import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.Connection; +import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.ExclusiveConnectionMode; import org.eclipse.jpt.jpa.eclipselink.ui.internal.EclipseLinkUiMessages; +import org.eclipse.jpt.jpa.ui.internal.JpaHelpContextIds; +import org.eclipse.osgi.util.NLS; +import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; /** @@ -26,58 +32,128 @@ import org.eclipse.swt.widgets.Composite; public class JdbcExclusiveConnectionsPropertiesComposite<T extends Connection> extends Pane<T> { - public JdbcExclusiveConnectionsPropertiesComposite(Pane<T> parentComposite, Composite parent) { + public JdbcExclusiveConnectionsPropertiesComposite(Pane<T> parentComposite, Composite parent, PropertyValueModel<Boolean> enabledModel) { - super(parentComposite, parent); + super(parentComposite, parent, enabledModel); } - - @Override - protected void initializeLayout(Composite container) { - container = this.addTitledGroup( - this.addSubPane(container, 10), - EclipseLinkUiMessages.JdbcExclusiveConnectionsPropertiesComposite_GroupBox + @Override + protected Composite addComposite(Composite parent) { + return this.addTitledGroup( + parent, + EclipseLinkUiMessages.JdbcExclusiveConnectionsPropertiesComposite_GroupBox, + 2, + null ); + } + + @Override + protected void initializeLayout(Composite container) { // Exclusive connection mode - new JdbcExclusiveConnectionModeComposite<T>(this, container); + this.addLabel(container, EclipseLinkUiMessages.PersistenceXmlConnectionTab_exclusiveConnectionModeLabel); + this.addExclusiveConnectionModeCombo(container); // Lazy Connection - new JdbcLazyConnectionComposite<T>(this, container); + TriStateCheckBox lazyConnectionCheckBox = this.addTriStateCheckBoxWithDefault( + container, + EclipseLinkUiMessages.PersistenceXmlConnectionTab_lazyConnectionLabel, + this.buildLazyConnectionHolder(), + this.buildLazyConnectionStringHolder(), + JpaHelpContextIds.PERSISTENCE_XML_CONNECTION + ); + GridData gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.horizontalSpan = 2; + lazyConnectionCheckBox.getCheckBox().setLayoutData(gridData); - this.installPaneEnabler(); } - private void installPaneEnabler() { - new PaneEnabler(this.buildPaneEnablerHolder(), this); - } + private EnumFormComboViewer<Connection, ExclusiveConnectionMode> addExclusiveConnectionModeCombo(Composite container) { + return new EnumFormComboViewer<Connection, ExclusiveConnectionMode>(this, container) { + @Override + protected void addPropertyNames(Collection<String> propertyNames) { + super.addPropertyNames(propertyNames); + propertyNames.add(Connection.EXCLUSIVE_CONNECTION_MODE_PROPERTY); + } + + @Override + protected ExclusiveConnectionMode[] getChoices() { + return ExclusiveConnectionMode.values(); + } + + @Override + protected ExclusiveConnectionMode getDefaultValue() { + return this.getSubject().getDefaultExclusiveConnectionMode(); + } - private PropertyValueModel<Boolean> buildPaneEnablerHolder() { - return new TransformationPropertyValueModel<PersistenceUnitTransactionType, Boolean>(this.buildTransactionTypeHolder()) { @Override - protected Boolean transform(PersistenceUnitTransactionType value) { - return value == PersistenceUnitTransactionType.RESOURCE_LOCAL; + protected String displayString(ExclusiveConnectionMode value) { + switch (value) { + case always : + return EclipseLinkUiMessages.JdbcExclusiveConnectionModeComposite_always; + case isolated : + return EclipseLinkUiMessages.JdbcExclusiveConnectionModeComposite_isolated; + case transactional : + return EclipseLinkUiMessages.JdbcExclusiveConnectionModeComposite_transactional; + default : + throw new IllegalStateException(); + } + } + + @Override + protected ExclusiveConnectionMode getValue() { + return this.getSubject().getExclusiveConnectionMode(); + } + + @Override + protected void setValue(ExclusiveConnectionMode value) { + this.getSubject().setExclusiveConnectionMode(value); + } + @Override + protected String getHelpId() { + return JpaHelpContextIds.PERSISTENCE_XML_CONNECTION; } }; } + + private ModifiablePropertyValueModel<Boolean> buildLazyConnectionHolder() { + return new PropertyAspectAdapter<Connection, Boolean>(this.getSubjectHolder(), Connection.LAZY_CONNECTION_PROPERTY) { + @Override + protected Boolean buildValue_() { + return this.subject.getLazyConnection(); + } - private PropertyValueModel<PersistenceUnitTransactionType> buildTransactionTypeHolder() { - return new PropertyAspectAdapter<PersistenceUnit, PersistenceUnitTransactionType>( - this.buildPersistenceUnitHolder(), - PersistenceUnit.SPECIFIED_TRANSACTION_TYPE_PROPERTY, - PersistenceUnit.DEFAULT_TRANSACTION_TYPE_PROPERTY) { @Override - protected PersistenceUnitTransactionType buildValue_() { - return this.subject.getTransactionType(); + protected void setValue_(Boolean value) { + this.subject.setLazyConnection(value); } }; } - private PropertyValueModel<PersistenceUnit> buildPersistenceUnitHolder() { - return new PropertyAspectAdapter<Connection, PersistenceUnit>(this.getSubjectHolder()) { + private PropertyValueModel<String> buildLazyConnectionStringHolder() { + return new TransformationPropertyValueModel<Boolean, String>(this.buildDefaultLazyConnectionHolder()) { + @Override + protected String transform(Boolean value) { + if (value != null) { + String defaultStringValue = value.booleanValue() ? JptCommonUiMessages.Boolean_True : JptCommonUiMessages.Boolean_False; + return NLS.bind(EclipseLinkUiMessages.PersistenceXmlConnectionTab_lazyConnectionLabelDefault, defaultStringValue); + } + return EclipseLinkUiMessages.PersistenceXmlConnectionTab_lazyConnectionLabel; + } + }; + } + + private PropertyValueModel<Boolean> buildDefaultLazyConnectionHolder() { + return new PropertyAspectAdapter<Connection, Boolean>( + this.getSubjectHolder(), + Connection.LAZY_CONNECTION_PROPERTY) + { @Override - protected PersistenceUnit buildValue_() { - return this.subject.getPersistenceUnit(); + protected Boolean buildValue_() { + if (this.subject.getLazyConnection() != null) { + return null; + } + return this.subject.getDefaultLazyConnection(); } }; } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/connection/JdbcLazyConnectionComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/connection/JdbcLazyConnectionComposite.java deleted file mode 100644 index 74d4edab20..0000000000 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/connection/JdbcLazyConnectionComposite.java +++ /dev/null @@ -1,98 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2010, 2012 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.jpa.eclipselink.ui.internal.persistence.connection; - -import org.eclipse.jpt.common.ui.internal.JptCommonUiMessages; -import org.eclipse.jpt.common.ui.internal.widgets.Pane; -import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter; -import org.eclipse.jpt.common.utility.internal.model.value.TransformationPropertyValueModel; -import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; -import org.eclipse.jpt.common.utility.model.value.ModifiablePropertyValueModel; -import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.Connection; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.EclipseLinkUiMessages; -import org.eclipse.jpt.jpa.ui.internal.JpaHelpContextIds; -import org.eclipse.osgi.util.NLS; -import org.eclipse.swt.widgets.Composite; - -/** - * JdbcLazyConnectionComposite - */ -public class JdbcLazyConnectionComposite<T extends Connection> - extends Pane<T> -{ - /** - * Creates a new <code>JdbcLazyConnectionComposite</code>. - * - * @param parentController - * The parent container of this one - * @param parent - * The parent container - */ - public JdbcLazyConnectionComposite( - Pane<T> parentComposite, - Composite parent) { - - super(parentComposite, parent); - } - - @Override - protected void initializeLayout(Composite container) { - - this.addTriStateCheckBoxWithDefault( - container, - EclipseLinkUiMessages.PersistenceXmlConnectionTab_lazyConnectionLabel, - this.buildLazyConnectionHolder(), - this.buildLazyConnectionStringHolder(), - JpaHelpContextIds.PERSISTENCE_XML_CONNECTION - ); - } - - private ModifiablePropertyValueModel<Boolean> buildLazyConnectionHolder() { - return new PropertyAspectAdapter<Connection, Boolean>(this.getSubjectHolder(), Connection.LAZY_CONNECTION_PROPERTY) { - @Override - protected Boolean buildValue_() { - return this.subject.getLazyConnection(); - } - - @Override - protected void setValue_(Boolean value) { - this.subject.setLazyConnection(value); - } - }; - } - - private PropertyValueModel<String> buildLazyConnectionStringHolder() { - return new TransformationPropertyValueModel<Boolean, String>(this.buildDefaultLazyConnectionHolder()) { - @Override - protected String transform(Boolean value) { - if (value != null) { - String defaultStringValue = value.booleanValue() ? JptCommonUiMessages.Boolean_True : JptCommonUiMessages.Boolean_False; - return NLS.bind(EclipseLinkUiMessages.PersistenceXmlConnectionTab_lazyConnectionLabelDefault, defaultStringValue); - } - return EclipseLinkUiMessages.PersistenceXmlConnectionTab_lazyConnectionLabel; - } - }; - } - - private PropertyValueModel<Boolean> buildDefaultLazyConnectionHolder() { - return new PropertyAspectAdapter<Connection, Boolean>( - this.getSubjectHolder(), - Connection.LAZY_CONNECTION_PROPERTY) - { - @Override - protected Boolean buildValue_() { - if (this.subject.getLazyConnection() != null) { - return null; - } - return this.subject.getDefaultLazyConnection(); - } - }; - } -} diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/connection/JdbcPropertiesComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/connection/JdbcPropertiesComposite.java index bcd471e2e1..65322ab8dc 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/connection/JdbcPropertiesComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/connection/JdbcPropertiesComposite.java @@ -1,5 +1,5 @@ /******************************************************************************* -* Copyright (c) 2008, 2011 Oracle. All rights reserved. +* Copyright (c) 2008, 2012 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. @@ -9,15 +9,21 @@ *******************************************************************************/ package org.eclipse.jpt.jpa.eclipselink.ui.internal.persistence.connection; -import org.eclipse.jpt.common.ui.internal.util.PaneEnabler; +import org.eclipse.jpt.common.ui.internal.JptCommonUiMessages; +import org.eclipse.jpt.common.ui.internal.widgets.IntegerCombo; import org.eclipse.jpt.common.ui.internal.widgets.Pane; +import org.eclipse.jpt.common.ui.internal.widgets.TriStateCheckBox; import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter; +import org.eclipse.jpt.common.utility.internal.model.value.SimplePropertyValueModel; import org.eclipse.jpt.common.utility.internal.model.value.TransformationPropertyValueModel; +import org.eclipse.jpt.common.utility.model.value.ModifiablePropertyValueModel; import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; -import org.eclipse.jpt.jpa.core.context.persistence.PersistenceUnit; -import org.eclipse.jpt.jpa.core.context.persistence.PersistenceUnitTransactionType; import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.Connection; import org.eclipse.jpt.jpa.eclipselink.ui.internal.EclipseLinkUiMessages; +import org.eclipse.jpt.jpa.ui.internal.JpaHelpContextIds; +import org.eclipse.osgi.util.NLS; +import org.eclipse.swt.SWT; +import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Composite; @@ -27,64 +33,251 @@ import org.eclipse.swt.widgets.Composite; public class JdbcPropertiesComposite<T extends Connection> extends Pane<T> { - public JdbcPropertiesComposite(Pane<T> parentComposite, Composite parent) { + public JdbcPropertiesComposite(Pane<T> parentComposite, Composite parent, PropertyValueModel<Boolean> enabledModel) { - super(parentComposite, parent); + super(parentComposite, parent, enabledModel); } @Override - protected void initializeLayout(Composite container) { - - container = this.addTitledGroup( - this.addSubPane(container, 10), - EclipseLinkUiMessages.JdbcPropertiesComposite_EclipseLinkConnectionPool_GroupBox + protected Composite addComposite(Composite parent) { + return this.addTitledGroup( + parent, + EclipseLinkUiMessages.JdbcPropertiesComposite_EclipseLinkConnectionPool_GroupBox, + 2, + null ); + } + @Override + protected void initializeLayout(Composite container) { // Connection Properties - new JdbcConnectionPropertiesComposite<T>(this, container); - - container = this.addPane(container, new GridLayout(2, true)); + JdbcConnectionPropertiesComposite<T> connectionComposite = new JdbcConnectionPropertiesComposite<T>(this, container); + GridData gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.horizontalSpan = 2; + connectionComposite.getControl().setLayoutData(gridData); // Read Connection - new JdbcReadConnectionPropertiesComposite<T>(this, container); - // Write Connection - new JdbcWriteConnectionPropertiesComposite<T>(this, container); + Composite readConnectionSection = this.addCollapsibleSubSection( + container, + EclipseLinkUiMessages.PersistenceXmlConnectionTab_readConnectionsSectionTitle, + new SimplePropertyValueModel<Boolean>(Boolean.TRUE) //expanded + ); + readConnectionSection.getParent().setLayoutData(new GridData()); //change layout so it doesn't fill horizontally + readConnectionSection.setLayout(new GridLayout(2, false)); + + // Read Connections Shared + TriStateCheckBox sharedCheckBox = this.addTriStateCheckBoxWithDefault( + readConnectionSection, + EclipseLinkUiMessages.PersistenceXmlConnectionTab_readConnectionsSharedLabel, + this.buildReadConnectionsSharedHolder(), + this.buildReadConnectionsSharedStringHolder(), + JpaHelpContextIds.PERSISTENCE_XML_CONNECTION + ); + gridData = new GridData(); + gridData.horizontalSpan = 2; + sharedCheckBox.getCheckBox().setLayoutData(gridData); + + // Read Connections Minimum + this.addLabel(readConnectionSection, EclipseLinkUiMessages.PersistenceXmlConnectionTab_readConnectionsMinLabel); + this.addReadConnectionsMinCombo(readConnectionSection); + + // Read Connections Maximum + this.addLabel(readConnectionSection, EclipseLinkUiMessages.PersistenceXmlConnectionTab_readConnectionsMaxLabel); + this.addReadConnectionsMaxCombo(readConnectionSection); - this.installPaneEnabler(); + + // Write Connection + Composite writeConnectionSection = this.addCollapsibleSubSection( + container, + EclipseLinkUiMessages.PersistenceXmlConnectionTab_writeConnectionsSectionTitle, + new SimplePropertyValueModel<Boolean>(Boolean.TRUE) //expanded + ); + gridData = new GridData(); + gridData.horizontalIndent = 15; + gridData.verticalAlignment = SWT.TOP; + writeConnectionSection.getParent().setLayoutData(gridData); + writeConnectionSection.setLayout(new GridLayout(2, false)); + + // Write Connections Minimum + this.addLabel(writeConnectionSection, EclipseLinkUiMessages.PersistenceXmlConnectionTab_writeConnectionsMinLabel); + this.addWriteConnectionsMinCombo(writeConnectionSection); + + // Write Connections Maximum + this.addLabel(writeConnectionSection, EclipseLinkUiMessages.PersistenceXmlConnectionTab_writeConnectionsMaxLabel); + this.addWriteConnectionsMaxCombo(writeConnectionSection); } - private void installPaneEnabler() { - new PaneEnabler(this.buildPaneEnablerHolder(), this); + private ModifiablePropertyValueModel<Boolean> buildReadConnectionsSharedHolder() { + return new PropertyAspectAdapter<Connection, Boolean>(getSubjectHolder(), Connection.READ_CONNECTIONS_SHARED_PROPERTY) { + @Override + protected Boolean buildValue_() { + return this.subject.getReadConnectionsShared(); + } + + @Override + protected void setValue_(Boolean value) { + this.subject.setReadConnectionsShared(value); + } + }; } - private PropertyValueModel<Boolean> buildPaneEnablerHolder() { - return new TransformationPropertyValueModel<PersistenceUnitTransactionType, Boolean>(this.buildTransactionTypeHolder()) { + private PropertyValueModel<String> buildReadConnectionsSharedStringHolder() { + return new TransformationPropertyValueModel<Boolean, String>(buildDefaultReadConnectionsSharedHolder()) { @Override - protected Boolean transform(PersistenceUnitTransactionType value) { - return value == PersistenceUnitTransactionType.RESOURCE_LOCAL; + protected String transform(Boolean value) { + if (value != null) { + String defaultStringValue = value.booleanValue() ? JptCommonUiMessages.Boolean_True : JptCommonUiMessages.Boolean_False; + return NLS.bind(EclipseLinkUiMessages.PersistenceXmlConnectionTab_readConnectionsSharedLabelDefault, defaultStringValue); + } + return EclipseLinkUiMessages.PersistenceXmlConnectionTab_readConnectionsSharedLabel; + } + }; + } + + private PropertyValueModel<Boolean> buildDefaultReadConnectionsSharedHolder() { + return new PropertyAspectAdapter<Connection, Boolean>( + getSubjectHolder(), + Connection.READ_CONNECTIONS_SHARED_PROPERTY) + { + @Override + protected Boolean buildValue_() { + if (this.subject.getReadConnectionsShared() != null) { + return null; + } + return this.subject.getDefaultReadConnectionsShared(); } }; } - private PropertyValueModel<PersistenceUnitTransactionType> buildTransactionTypeHolder() { - return new PropertyAspectAdapter<PersistenceUnit, PersistenceUnitTransactionType>( - this.buildPersistenceUnitHolder(), - PersistenceUnit.SPECIFIED_TRANSACTION_TYPE_PROPERTY, - PersistenceUnit.DEFAULT_TRANSACTION_TYPE_PROPERTY) { + + private void addReadConnectionsMinCombo(Composite container) { + new IntegerCombo<Connection>(this, container) { + @Override + protected String getHelpId() { + return JpaHelpContextIds.PERSISTENCE_XML_CONNECTION; + } @Override - protected PersistenceUnitTransactionType buildValue_() { - return this.subject.getTransactionType(); + protected PropertyValueModel<Integer> buildDefaultHolder() { + return new PropertyAspectAdapter<Connection, Integer>(getSubjectHolder()) { + @Override + protected Integer buildValue_() { + return this.subject.getDefaultReadConnectionsMin(); + } + }; + } + + @Override + protected ModifiablePropertyValueModel<Integer> buildSelectedItemHolder() { + return new PropertyAspectAdapter<Connection, Integer>(getSubjectHolder(), Connection.READ_CONNECTIONS_MIN_PROPERTY) { + @Override + protected Integer buildValue_() { + return this.subject.getReadConnectionsMin(); + } + + @Override + protected void setValue_(Integer value) { + this.subject.setReadConnectionsMin(value); + } + }; } }; } - private PropertyValueModel<PersistenceUnit> buildPersistenceUnitHolder() { - return new PropertyAspectAdapter<Connection, PersistenceUnit>(this.getSubjectHolder()) { + private void addReadConnectionsMaxCombo(Composite container) { + new IntegerCombo<Connection>(this, container) { + @Override + protected String getHelpId() { + return JpaHelpContextIds.PERSISTENCE_XML_CONNECTION; + } + @Override + protected PropertyValueModel<Integer> buildDefaultHolder() { + return new PropertyAspectAdapter<Connection, Integer>(getSubjectHolder()) { + @Override + protected Integer buildValue_() { + return this.subject.getDefaultReadConnectionsMax(); + } + }; + } + @Override - protected PersistenceUnit buildValue_() { - return this.subject.getPersistenceUnit(); + protected ModifiablePropertyValueModel<Integer> buildSelectedItemHolder() { + return new PropertyAspectAdapter<Connection, Integer>(getSubjectHolder(), Connection.READ_CONNECTIONS_MAX_PROPERTY) { + @Override + protected Integer buildValue_() { + return this.subject.getReadConnectionsMax(); + } + + @Override + protected void setValue_(Integer value) { + this.subject.setReadConnectionsMax(value); + } + }; + } + }; + } + + private void addWriteConnectionsMinCombo(Composite container) { + new IntegerCombo<Connection>(this, container) { + @Override + protected String getHelpId() { + return JpaHelpContextIds.PERSISTENCE_XML_CONNECTION; + } + @Override + protected PropertyValueModel<Integer> buildDefaultHolder() { + return new PropertyAspectAdapter<Connection, Integer>(getSubjectHolder()) { + @Override + protected Integer buildValue_() { + return this.subject.getDefaultWriteConnectionsMin(); + } + }; + } + + @Override + protected ModifiablePropertyValueModel<Integer> buildSelectedItemHolder() { + return new PropertyAspectAdapter<Connection, Integer>(getSubjectHolder(), Connection.WRITE_CONNECTIONS_MIN_PROPERTY) { + @Override + protected Integer buildValue_() { + return this.subject.getWriteConnectionsMin(); + } + + @Override + protected void setValue_(Integer value) { + this.subject.setWriteConnectionsMin(value); + } + }; + } + }; + } + private void addWriteConnectionsMaxCombo(Composite container) { + new IntegerCombo<Connection>(this, container) { + @Override + protected String getHelpId() { + return JpaHelpContextIds.PERSISTENCE_XML_CONNECTION; + } + @Override + protected PropertyValueModel<Integer> buildDefaultHolder() { + return new PropertyAspectAdapter<Connection, Integer>(getSubjectHolder()) { + @Override + protected Integer buildValue_() { + return this.subject.getDefaultWriteConnectionsMax(); + } + }; + } + + @Override + protected ModifiablePropertyValueModel<Integer> buildSelectedItemHolder() { + return new PropertyAspectAdapter<Connection, Integer>(getSubjectHolder(), Connection.WRITE_CONNECTIONS_MAX_PROPERTY) { + @Override + protected Integer buildValue_() { + return this.subject.getWriteConnectionsMax(); + } + + @Override + protected void setValue_(Integer value) { + this.subject.setWriteConnectionsMax(value); + } + }; } }; - } }
\ No newline at end of file diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/connection/JdbcReadConnectionPropertiesComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/connection/JdbcReadConnectionPropertiesComposite.java deleted file mode 100644 index 0136e6a62e..0000000000 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/connection/JdbcReadConnectionPropertiesComposite.java +++ /dev/null @@ -1,57 +0,0 @@ -/******************************************************************************* -* Copyright (c) 2008, 2011 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.jpa.eclipselink.ui.internal.persistence.connection; - -import org.eclipse.jpt.common.ui.internal.widgets.Pane; -import org.eclipse.jpt.common.utility.internal.model.value.SimplePropertyValueModel; -import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.Connection; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.EclipseLinkUiMessages; -import org.eclipse.swt.SWT; -import org.eclipse.swt.layout.GridData; -import org.eclipse.swt.widgets.Composite; - -/** - * JdbcReadConnectionPropertiesComposite - */ -public class JdbcReadConnectionPropertiesComposite<T extends Connection> - extends Pane<T> -{ - public JdbcReadConnectionPropertiesComposite( - Pane<T> parentComposite, - Composite parent) { - - super(parentComposite, parent, false); - } - - @Override - protected void initializeLayout(Composite container) { - - container = this.addCollapsibleSubSection( - container, - EclipseLinkUiMessages.PersistenceXmlConnectionTab_readConnectionsSectionTitle, - new SimplePropertyValueModel<Boolean>(Boolean.TRUE) //exapanded - ); - - GridData data = (GridData) container.getLayoutData(); - data.verticalAlignment = SWT.TOP; - - data = (GridData) getControl().getLayoutData(); - data.verticalAlignment = SWT.TOP; - - // Read Connections Shared - new JdbcReadConnectionsSharedComposite<T>(this, container); - - // Read Connections Minimum - new JdbcReadConnectionsMinComposite<T>(this, container); - - // Read Connections Maximum - new JdbcReadConnectionsMaxComposite<T>(this, container); - } -}
\ No newline at end of file diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/connection/JdbcReadConnectionsMaxComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/connection/JdbcReadConnectionsMaxComposite.java deleted file mode 100644 index 3748d4b84e..0000000000 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/connection/JdbcReadConnectionsMaxComposite.java +++ /dev/null @@ -1,88 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2008, 2012 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.jpa.eclipselink.ui.internal.persistence.connection; - -import org.eclipse.jpt.common.ui.internal.widgets.IntegerCombo; -import org.eclipse.jpt.common.ui.internal.widgets.Pane; -import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter; -import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; -import org.eclipse.jpt.common.utility.model.value.ModifiablePropertyValueModel; -import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.Connection; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.EclipseLinkUiMessages; -import org.eclipse.jpt.jpa.ui.internal.JpaHelpContextIds; -import org.eclipse.swt.widgets.Composite; - -/** - * JdbcReadConnectionsMaxComposite - */ -public class JdbcReadConnectionsMaxComposite<T extends Connection> - extends Pane<T> -{ - /** - * Creates a new <code>JdbcReadConnectionsMaxComposite</code>. - * - * @param parentController - * The parent container of this one - * @param parent - * The parent container - */ - public JdbcReadConnectionsMaxComposite( - Pane<T> parentComposite, - Composite parent) { - - super(parentComposite, parent); - } - - - @Override - protected void initializeLayout(Composite container) { - addReadConnectionsMaxCombo(container); - } - - private void addReadConnectionsMaxCombo(Composite container) { - new IntegerCombo<Connection>(this, container) { - - @Override - protected String getLabelText() { - return EclipseLinkUiMessages.PersistenceXmlConnectionTab_readConnectionsMaxLabel; - } - - @Override - protected String getHelpId() { - return JpaHelpContextIds.PERSISTENCE_XML_CONNECTION; - } - - @Override - protected PropertyValueModel<Integer> buildDefaultHolder() { - return new PropertyAspectAdapter<Connection, Integer>(getSubjectHolder()) { - @Override - protected Integer buildValue_() { - return this.subject.getDefaultReadConnectionsMax(); - } - }; - } - - @Override - protected ModifiablePropertyValueModel<Integer> buildSelectedItemHolder() { - return new PropertyAspectAdapter<Connection, Integer>(getSubjectHolder(), Connection.READ_CONNECTIONS_MAX_PROPERTY) { - @Override - protected Integer buildValue_() { - return this.subject.getReadConnectionsMax(); - } - - @Override - protected void setValue_(Integer value) { - this.subject.setReadConnectionsMax(value); - } - }; - } - }; - } -}
\ No newline at end of file diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/connection/JdbcReadConnectionsMinComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/connection/JdbcReadConnectionsMinComposite.java deleted file mode 100644 index 272cde3166..0000000000 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/connection/JdbcReadConnectionsMinComposite.java +++ /dev/null @@ -1,87 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2008, 2012 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.jpa.eclipselink.ui.internal.persistence.connection; - -import org.eclipse.jpt.common.ui.internal.widgets.IntegerCombo; -import org.eclipse.jpt.common.ui.internal.widgets.Pane; -import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter; -import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; -import org.eclipse.jpt.common.utility.model.value.ModifiablePropertyValueModel; -import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.Connection; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.EclipseLinkUiMessages; -import org.eclipse.jpt.jpa.ui.internal.JpaHelpContextIds; -import org.eclipse.swt.widgets.Composite; - -/** - * JdbcReadConnectionsMinComposite - */ -public class JdbcReadConnectionsMinComposite<T extends Connection> - extends Pane<T> -{ - /** - * Creates a new <code>JdbcReadConnectionsMinComposite</code>. - * - * @param parentController - * The parent container of this one - * @param parent - * The parent container - */ - public JdbcReadConnectionsMinComposite( - Pane<T> parentComposite, - Composite parent) { - - super(parentComposite, parent); - } - - @Override - protected void initializeLayout(Composite container) { - addReadConnectionsMinCombo(container); - } - - private void addReadConnectionsMinCombo(Composite container) { - new IntegerCombo<Connection>(this, container) { - - @Override - protected String getLabelText() { - return EclipseLinkUiMessages.PersistenceXmlConnectionTab_readConnectionsMinLabel; - } - - @Override - protected String getHelpId() { - return JpaHelpContextIds.PERSISTENCE_XML_CONNECTION; - } - - @Override - protected PropertyValueModel<Integer> buildDefaultHolder() { - return new PropertyAspectAdapter<Connection, Integer>(getSubjectHolder()) { - @Override - protected Integer buildValue_() { - return this.subject.getDefaultReadConnectionsMin(); - } - }; - } - - @Override - protected ModifiablePropertyValueModel<Integer> buildSelectedItemHolder() { - return new PropertyAspectAdapter<Connection, Integer>(getSubjectHolder(), Connection.READ_CONNECTIONS_MIN_PROPERTY) { - @Override - protected Integer buildValue_() { - return this.subject.getReadConnectionsMin(); - } - - @Override - protected void setValue_(Integer value) { - this.subject.setReadConnectionsMin(value); - } - }; - } - }; - } -}
\ No newline at end of file diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/connection/JdbcReadConnectionsSharedComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/connection/JdbcReadConnectionsSharedComposite.java deleted file mode 100644 index 40341774ee..0000000000 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/connection/JdbcReadConnectionsSharedComposite.java +++ /dev/null @@ -1,98 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2008, 2012 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.jpa.eclipselink.ui.internal.persistence.connection; - -import org.eclipse.jpt.common.ui.internal.JptCommonUiMessages; -import org.eclipse.jpt.common.ui.internal.widgets.Pane; -import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter; -import org.eclipse.jpt.common.utility.internal.model.value.TransformationPropertyValueModel; -import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; -import org.eclipse.jpt.common.utility.model.value.ModifiablePropertyValueModel; -import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.Connection; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.EclipseLinkUiMessages; -import org.eclipse.jpt.jpa.ui.internal.JpaHelpContextIds; -import org.eclipse.osgi.util.NLS; -import org.eclipse.swt.widgets.Composite; - -/** - * ReadConnectionsSharedComposite - */ -public class JdbcReadConnectionsSharedComposite<T extends Connection> - extends Pane<T> -{ - /** - * Creates a new <code>ReadConnectionsSharedComposite</code>. - * - * @param parentController - * The parent container of this one - * @param parent - * The parent container - */ - public JdbcReadConnectionsSharedComposite( - Pane<T> parentComposite, - Composite parent) { - - super(parentComposite, parent); - } - - @Override - protected void initializeLayout(Composite container) { - - this.addTriStateCheckBoxWithDefault( - container, - EclipseLinkUiMessages.PersistenceXmlConnectionTab_readConnectionsSharedLabel, - this.buildReadConnectionsSharedHolder(), - this.buildReadConnectionsSharedStringHolder(), - JpaHelpContextIds.PERSISTENCE_XML_CONNECTION - ); - } - - private ModifiablePropertyValueModel<Boolean> buildReadConnectionsSharedHolder() { - return new PropertyAspectAdapter<Connection, Boolean>(getSubjectHolder(), Connection.READ_CONNECTIONS_SHARED_PROPERTY) { - @Override - protected Boolean buildValue_() { - return this.subject.getReadConnectionsShared(); - } - - @Override - protected void setValue_(Boolean value) { - this.subject.setReadConnectionsShared(value); - } - }; - } - - private PropertyValueModel<String> buildReadConnectionsSharedStringHolder() { - return new TransformationPropertyValueModel<Boolean, String>(buildDefaultReadConnectionsSharedHolder()) { - @Override - protected String transform(Boolean value) { - if (value != null) { - String defaultStringValue = value.booleanValue() ? JptCommonUiMessages.Boolean_True : JptCommonUiMessages.Boolean_False; - return NLS.bind(EclipseLinkUiMessages.PersistenceXmlConnectionTab_readConnectionsSharedLabelDefault, defaultStringValue); - } - return EclipseLinkUiMessages.PersistenceXmlConnectionTab_readConnectionsSharedLabel; - } - }; - } - - private PropertyValueModel<Boolean> buildDefaultReadConnectionsSharedHolder() { - return new PropertyAspectAdapter<Connection, Boolean>( - getSubjectHolder(), - Connection.READ_CONNECTIONS_SHARED_PROPERTY) - { - @Override - protected Boolean buildValue_() { - if (this.subject.getReadConnectionsShared() != null) { - return null; - } - return this.subject.getDefaultReadConnectionsShared(); - } - }; - } -} diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/connection/JdbcWriteConnectionPropertiesComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/connection/JdbcWriteConnectionPropertiesComposite.java deleted file mode 100644 index 7a7b431563..0000000000 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/connection/JdbcWriteConnectionPropertiesComposite.java +++ /dev/null @@ -1,63 +0,0 @@ -/******************************************************************************* -* Copyright (c) 2008, 2011 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.jpa.eclipselink.ui.internal.persistence.connection; - -import org.eclipse.jpt.common.ui.internal.widgets.Pane; -import org.eclipse.jpt.common.utility.internal.model.value.SimplePropertyValueModel; -import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.Connection; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.EclipseLinkUiMessages; -import org.eclipse.swt.SWT; -import org.eclipse.swt.graphics.Point; -import org.eclipse.swt.layout.GridData; -import org.eclipse.swt.widgets.Button; -import org.eclipse.swt.widgets.Composite; - -/** - * JdbcWriteConnectionPropertiesComposite - */ -@SuppressWarnings("nls") -public class JdbcWriteConnectionPropertiesComposite<T extends Connection> - extends Pane<T> -{ - public JdbcWriteConnectionPropertiesComposite( - Pane<T> parentComposite, - Composite parent) { - - super(parentComposite, parent, false); - } - - @Override - protected void initializeLayout(Composite container) { - - container = this.addCollapsibleSubSection( - container, - EclipseLinkUiMessages.PersistenceXmlConnectionTab_writeConnectionsSectionTitle, - new SimplePropertyValueModel<Boolean>(Boolean.TRUE) //exapanded - ); - - GridData data = (GridData) container.getLayoutData(); - data.verticalAlignment = SWT.TOP; - - data = (GridData) getControl().getLayoutData(); - data.verticalAlignment = SWT.TOP; - - // This will add space to have the same layout than read connection pool - Button space = this.getWidgetFactory().createCheckBox(container, "m"); - Point size = space.computeSize(SWT.DEFAULT, SWT.DEFAULT); - container = this.addSubPane(container, size.y + 5); - space.dispose(); - - // Write Connections Minimum - new JdbcWriteConnectionsMinComposite<T>(this, container); - - // Write Connections Maximum - new JdbcWriteConnectionsMaxComposite<T>(this, container); - } -} diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/connection/JdbcWriteConnectionsMaxComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/connection/JdbcWriteConnectionsMaxComposite.java deleted file mode 100644 index f0ef8aa24a..0000000000 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/connection/JdbcWriteConnectionsMaxComposite.java +++ /dev/null @@ -1,87 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2008, 2012 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.jpa.eclipselink.ui.internal.persistence.connection; - -import org.eclipse.jpt.common.ui.internal.widgets.IntegerCombo; -import org.eclipse.jpt.common.ui.internal.widgets.Pane; -import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter; -import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; -import org.eclipse.jpt.common.utility.model.value.ModifiablePropertyValueModel; -import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.Connection; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.EclipseLinkUiMessages; -import org.eclipse.jpt.jpa.ui.internal.JpaHelpContextIds; -import org.eclipse.swt.widgets.Composite; - -/** - * JdbcWriteConnectionsMaxComposite - */ -public class JdbcWriteConnectionsMaxComposite<T extends Connection> - extends Pane<T> -{ - /** - * Creates a new <code>JdbcWriteConnectionsMaxComposite</code>. - * - * @param parentController - * The parent container of this one - * @param parent - * The parent container - */ - public JdbcWriteConnectionsMaxComposite( - Pane<T> parentComposite, - Composite parent) { - - super(parentComposite, parent); - } - - @Override - protected void initializeLayout(Composite container) { - addWriteConnectionsMaxCombo(container); - } - - private void addWriteConnectionsMaxCombo(Composite container) { - new IntegerCombo<Connection>(this, container) { - - @Override - protected String getLabelText() { - return EclipseLinkUiMessages.PersistenceXmlConnectionTab_writeConnectionsMaxLabel; - } - - @Override - protected String getHelpId() { - return JpaHelpContextIds.PERSISTENCE_XML_CONNECTION; - } - - @Override - protected PropertyValueModel<Integer> buildDefaultHolder() { - return new PropertyAspectAdapter<Connection, Integer>(getSubjectHolder()) { - @Override - protected Integer buildValue_() { - return this.subject.getDefaultWriteConnectionsMax(); - } - }; - } - - @Override - protected ModifiablePropertyValueModel<Integer> buildSelectedItemHolder() { - return new PropertyAspectAdapter<Connection, Integer>(getSubjectHolder(), Connection.WRITE_CONNECTIONS_MAX_PROPERTY) { - @Override - protected Integer buildValue_() { - return this.subject.getWriteConnectionsMax(); - } - - @Override - protected void setValue_(Integer value) { - this.subject.setWriteConnectionsMax(value); - } - }; - } - }; - } -}
\ No newline at end of file diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/connection/JdbcWriteConnectionsMinComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/connection/JdbcWriteConnectionsMinComposite.java deleted file mode 100644 index bd3b320a99..0000000000 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/connection/JdbcWriteConnectionsMinComposite.java +++ /dev/null @@ -1,87 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2008, 2012 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.jpa.eclipselink.ui.internal.persistence.connection; - -import org.eclipse.jpt.common.ui.internal.widgets.IntegerCombo; -import org.eclipse.jpt.common.ui.internal.widgets.Pane; -import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter; -import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; -import org.eclipse.jpt.common.utility.model.value.ModifiablePropertyValueModel; -import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.Connection; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.EclipseLinkUiMessages; -import org.eclipse.jpt.jpa.ui.internal.JpaHelpContextIds; -import org.eclipse.swt.widgets.Composite; - -/** - * JdbcWriteConnectionsMinComposite - */ -public class JdbcWriteConnectionsMinComposite<T extends Connection> - extends Pane<T> -{ - /** - * Creates a new <code>JdbcWriteConnectionsMinComposite</code>. - * - * @param parentController - * The parent container of this one - * @param parent - * The parent container - */ - public JdbcWriteConnectionsMinComposite( - Pane<T> parentComposite, - Composite parent) { - - super(parentComposite, parent); - } - - @Override - protected void initializeLayout(Composite container) { - addWriteConnectionsMinCombo(container); - } - - private void addWriteConnectionsMinCombo(Composite container) { - new IntegerCombo<Connection>(this, container) { - - @Override - protected String getLabelText() { - return EclipseLinkUiMessages.PersistenceXmlConnectionTab_writeConnectionsMinLabel; - } - - @Override - protected String getHelpId() { - return JpaHelpContextIds.PERSISTENCE_XML_CONNECTION; - } - - @Override - protected PropertyValueModel<Integer> buildDefaultHolder() { - return new PropertyAspectAdapter<Connection, Integer>(getSubjectHolder()) { - @Override - protected Integer buildValue_() { - return this.subject.getDefaultWriteConnectionsMin(); - } - }; - } - - @Override - protected ModifiablePropertyValueModel<Integer> buildSelectedItemHolder() { - return new PropertyAspectAdapter<Connection, Integer>(getSubjectHolder(), Connection.WRITE_CONNECTIONS_MIN_PROPERTY) { - @Override - protected Integer buildValue_() { - return this.subject.getWriteConnectionsMin(); - } - - @Override - protected void setValue_(Integer value) { - this.subject.setWriteConnectionsMin(value); - } - }; - } - }; - } -}
\ No newline at end of file diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/connection/NativeSqlComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/connection/NativeSqlComposite.java deleted file mode 100644 index 4f3f9f5be9..0000000000 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/connection/NativeSqlComposite.java +++ /dev/null @@ -1,98 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2008, 2012 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.jpa.eclipselink.ui.internal.persistence.connection; - -import org.eclipse.jpt.common.ui.internal.JptCommonUiMessages; -import org.eclipse.jpt.common.ui.internal.widgets.Pane; -import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter; -import org.eclipse.jpt.common.utility.internal.model.value.TransformationPropertyValueModel; -import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; -import org.eclipse.jpt.common.utility.model.value.ModifiablePropertyValueModel; -import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.Connection; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.EclipseLinkUiMessages; -import org.eclipse.jpt.jpa.ui.internal.JpaHelpContextIds; -import org.eclipse.osgi.util.NLS; -import org.eclipse.swt.widgets.Composite; - -/** - * NativeSqlComposite - */ -public class NativeSqlComposite<T extends Connection> - extends Pane<T> -{ - /** - * Creates a new <code>NativeSqlComposite</code>. - * - * @param parentController - * The parent container of this one - * @param parent - * The parent container - */ - public NativeSqlComposite( - Pane<T> parentComposite, - Composite parent) { - - super(parentComposite, parent); - } - - @Override - protected void initializeLayout(Composite container) { - this.addTriStateCheckBoxWithDefault( - container, - EclipseLinkUiMessages.PersistenceXmlConnectionTab_nativeSqlLabel, - this.buildNativeSqlHolder(), - this.buildNativeSqlStringHolder(), - JpaHelpContextIds.PERSISTENCE_XML_CONNECTION - ); - } - - private ModifiablePropertyValueModel<Boolean> buildNativeSqlHolder() { - return new PropertyAspectAdapter<Connection, Boolean>(getSubjectHolder(), Connection.NATIVE_SQL_PROPERTY) { - @Override - protected Boolean buildValue_() { - return this.subject.getNativeSql(); - } - - @Override - protected void setValue_(Boolean value) { - this.subject.setNativeSql(value); - } - - }; - } - - private PropertyValueModel<String> buildNativeSqlStringHolder() { - return new TransformationPropertyValueModel<Boolean, String>(buildDefaultNativeSqlHolder()) { - @Override - protected String transform(Boolean value) { - if (value != null) { - String defaultStringValue = value.booleanValue() ? JptCommonUiMessages.Boolean_True : JptCommonUiMessages.Boolean_False; - return NLS.bind(EclipseLinkUiMessages.PersistenceXmlConnectionTab_nativeSqlLabelDefault, defaultStringValue); - } - return EclipseLinkUiMessages.PersistenceXmlConnectionTab_nativeSqlLabel; - } - }; - } - - private PropertyValueModel<Boolean> buildDefaultNativeSqlHolder() { - return new PropertyAspectAdapter<Connection, Boolean>( - getSubjectHolder(), - Connection.NATIVE_SQL_PROPERTY) - { - @Override - protected Boolean buildValue_() { - if (this.subject.getNativeSql() != null) { - return null; - } - return this.subject.getDefaultNativeSql(); - } - }; - } -} diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/connection/PersistenceXmlConnectionTab.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/connection/PersistenceXmlConnectionTab.java index ddd14367ed..34faa61da3 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/connection/PersistenceXmlConnectionTab.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/connection/PersistenceXmlConnectionTab.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2007, 2011 Oracle. All rights reserved. + * Copyright (c) 2007, 2012 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. @@ -9,15 +9,27 @@ *******************************************************************************/ package org.eclipse.jpt.jpa.eclipselink.ui.internal.persistence.connection; +import java.util.Collection; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.jpt.common.ui.WidgetFactory; +import org.eclipse.jpt.common.ui.internal.JptCommonUiMessages; +import org.eclipse.jpt.common.ui.internal.utility.swt.SWTTools; +import org.eclipse.jpt.common.ui.internal.widgets.EnumFormComboViewer; +import org.eclipse.jpt.common.ui.internal.widgets.IntegerCombo; import org.eclipse.jpt.common.ui.internal.widgets.Pane; +import org.eclipse.jpt.common.ui.internal.widgets.TriStateCheckBox; +import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter; +import org.eclipse.jpt.common.utility.internal.model.value.TransformationPropertyValueModel; +import org.eclipse.jpt.common.utility.model.value.ModifiablePropertyValueModel; import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; +import org.eclipse.jpt.jpa.core.context.persistence.PersistenceUnit; +import org.eclipse.jpt.jpa.core.context.persistence.PersistenceUnitTransactionType; +import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.BatchWriting; import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.Connection; import org.eclipse.jpt.jpa.eclipselink.ui.internal.EclipseLinkUiMessages; -import org.eclipse.jpt.jpa.ui.details.JpaPageComposite; +import org.eclipse.jpt.jpa.ui.editors.JpaPageComposite; import org.eclipse.jpt.jpa.ui.internal.JpaHelpContextIds; -import org.eclipse.swt.SWT; +import org.eclipse.osgi.util.NLS; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Composite; @@ -38,11 +50,6 @@ public class PersistenceXmlConnectionTab<T extends Connection> super(subjectHolder, parent, widgetFactory); } - @Override - protected void initializeLayout(Composite container) { - new EclipseLinkConnectionComposite<T>(this, container); - } - // ********** JpaPageComposite implementation ********** public String getHelpID() { @@ -57,28 +64,304 @@ public class PersistenceXmlConnectionTab<T extends Connection> return EclipseLinkUiMessages.PersistenceXmlConnectionTab_title; } - // ********** Layout ********** + @Override - protected Composite addContainer(Composite parent) { - GridLayout layout = new GridLayout(1, true); + protected void initializeLayout(Composite container) { + container = addSection( + container, + EclipseLinkUiMessages.PersistenceXmlConnectionTab_sectionTitle, + EclipseLinkUiMessages.PersistenceXmlConnectionTab_sectionDescription + ); + GridLayout layout = new GridLayout(2, false); layout.marginHeight = 0; - layout.marginWidth = 0; - layout.marginTop = 0; - layout.marginLeft = 0; + layout.marginWidth = 0; + layout.marginTop = 0; + layout.marginLeft = 0; layout.marginBottom = 0; - layout.marginRight = 0; - layout.verticalSpacing = 15; - Composite container = this.addPane(parent, layout); - this.updateGridData(container); - return container; - } + layout.marginRight = 0; + container.setLayout(layout); - private void updateGridData(Composite container) { + //transaction type + this.addLabel(container, EclipseLinkUiMessages.PersistenceXmlConnectionTab_transactionTypeLabel); + this.addTransactionTypeCombo(container); + + //batch writing + this.addLabel(container, EclipseLinkUiMessages.PersistenceXmlConnectionTab_batchWritingLabel); + this.addBatchWritingCombo(container); + + + //cache statements + ModifiablePropertyValueModel<Boolean> cacheStatementsHolder = buildCacheStatementsHolder(); + this.addTriStateCheckBox( + container, + EclipseLinkUiMessages.PersistenceXmlConnectionTab_cacheStatementsLabel, + cacheStatementsHolder, + JpaHelpContextIds.PERSISTENCE_XML_CONNECTION + ); + IntegerCombo<?> combo = addCacheStatementsSizeCombo(container); + + this.installControlEnabler(cacheStatementsHolder, combo); + + + TriStateCheckBox nativeSqlCheckBox = this.addTriStateCheckBoxWithDefault( + container, + EclipseLinkUiMessages.PersistenceXmlConnectionTab_nativeSqlLabel, + this.buildNativeSqlHolder(), + this.buildNativeSqlStringHolder(), + JpaHelpContextIds.PERSISTENCE_XML_CONNECTION + ); GridData gridData = new GridData(); - gridData.grabExcessHorizontalSpace = true; - gridData.grabExcessVerticalSpace = true; - gridData.horizontalAlignment = SWT.FILL; - gridData.verticalAlignment = SWT.FILL; - container.setLayoutData(gridData); + gridData.horizontalSpan = 2; + nativeSqlCheckBox.getCheckBox().setLayoutData(gridData); + + ConnectionPropertiesComposite<T> connectionPropertiesComposite = new ConnectionPropertiesComposite<T>(this, container); + gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.horizontalSpan = 2; + connectionPropertiesComposite.getControl().setLayoutData(gridData); + } + + private EnumFormComboViewer<PersistenceUnit, PersistenceUnitTransactionType> addTransactionTypeCombo(Composite container) { + return new EnumFormComboViewer<PersistenceUnit, PersistenceUnitTransactionType>(this, this.buildPersistenceUnitHolder(), container) { + @Override + protected void addPropertyNames(Collection<String> propertyNames) { + super.addPropertyNames(propertyNames); + propertyNames.add(PersistenceUnit.SPECIFIED_TRANSACTION_TYPE_PROPERTY); + propertyNames.add(PersistenceUnit.DEFAULT_TRANSACTION_TYPE_PROPERTY); + } + + @Override + protected PersistenceUnitTransactionType[] getChoices() { + return PersistenceUnitTransactionType.values(); + } + + @Override + protected PersistenceUnitTransactionType getDefaultValue() { + return this.getSubject().getDefaultTransactionType(); + } + + @Override + protected String displayString(PersistenceUnitTransactionType value) { + switch (value) { + case JTA : + return EclipseLinkUiMessages.TransactionTypeComposite_jta; + case RESOURCE_LOCAL : + return EclipseLinkUiMessages.TransactionTypeComposite_resource_local; + default : + throw new IllegalStateException(); + } + } + + @Override + protected PersistenceUnitTransactionType getValue() { + return this.getSubject().getSpecifiedTransactionType(); + } + + @Override + protected void setValue(PersistenceUnitTransactionType value) { + this.getSubject().setSpecifiedTransactionType(value); + + if (value == PersistenceUnitTransactionType.RESOURCE_LOCAL) { + clearJTAProperties(); + } + else { + clearResourceLocalProperties(); + } + } + + @Override + protected String getHelpId() { + return JpaHelpContextIds.PERSISTENCE_XML_CONNECTION; + } + }; + } + + private PropertyValueModel<PersistenceUnit> buildPersistenceUnitHolder() { + return new PropertyAspectAdapter<Connection, PersistenceUnit>(getSubjectHolder()) { + @Override + protected PersistenceUnit buildValue_() { + return this.subject.getPersistenceUnit(); + } + }; + + } + + private void clearJTAProperties() { + getSubject().getPersistenceUnit().setJtaDataSource(null); + } + + private void clearResourceLocalProperties() { + Connection connection = this.getSubject(); + connection.getPersistenceUnit().setNonJtaDataSource(null); + connection.setDriver(null); + connection.setUrl(null); + connection.setUser(null); + connection.setPassword(null); + connection.setBindParameters(null); + connection.setWriteConnectionsMax(null); + connection.setWriteConnectionsMin(null); + connection.setReadConnectionsMax(null); + connection.setReadConnectionsMin(null); + connection.setReadConnectionsShared(null); + connection.setExclusiveConnectionMode(null); + connection.setLazyConnection(null); + } + + private EnumFormComboViewer<Connection, BatchWriting> addBatchWritingCombo(Composite container) { + return new EnumFormComboViewer<Connection, BatchWriting>(this, container) { + @Override + protected void addPropertyNames(Collection<String> propertyNames) { + super.addPropertyNames(propertyNames); + propertyNames.add(Connection.BATCH_WRITING_PROPERTY); + } + + @Override + protected BatchWriting[] getChoices() { + return BatchWriting.values(); + } + + @Override + protected BatchWriting getDefaultValue() { + return getSubject().getDefaultBatchWriting(); + } + + @Override + protected String displayString(BatchWriting value) { + switch (value) { + case buffered : + return EclipseLinkUiMessages.BatchWritingComposite_buffered; + case jdbc : + return EclipseLinkUiMessages.BatchWritingComposite_jdbc; + case none : + return EclipseLinkUiMessages.BatchWritingComposite_none; + case oracle_jdbc : + return EclipseLinkUiMessages.BatchWritingComposite_oracle_jdbc; + default : + throw new IllegalStateException(); + } + } + + @Override + protected BatchWriting getValue() { + return getSubject().getBatchWriting(); + } + + @Override + protected void setValue(BatchWriting value) { + getSubject().setBatchWriting(value); + } + + @Override + protected String getHelpId() { + return JpaHelpContextIds.PERSISTENCE_XML_CONNECTION; + } + }; + } + + private ModifiablePropertyValueModel<Boolean> buildNativeSqlHolder() { + return new PropertyAspectAdapter<Connection, Boolean>(getSubjectHolder(), Connection.NATIVE_SQL_PROPERTY) { + @Override + protected Boolean buildValue_() { + return this.subject.getNativeSql(); + } + + @Override + protected void setValue_(Boolean value) { + this.subject.setNativeSql(value); + } + + }; + } + + private PropertyValueModel<String> buildNativeSqlStringHolder() { + return new TransformationPropertyValueModel<Boolean, String>(buildDefaultNativeSqlHolder()) { + @Override + protected String transform(Boolean value) { + if (value != null) { + String defaultStringValue = value.booleanValue() ? JptCommonUiMessages.Boolean_True : JptCommonUiMessages.Boolean_False; + return NLS.bind(EclipseLinkUiMessages.PersistenceXmlConnectionTab_nativeSqlLabelDefault, defaultStringValue); + } + return EclipseLinkUiMessages.PersistenceXmlConnectionTab_nativeSqlLabel; + } + }; + } + + private PropertyValueModel<Boolean> buildDefaultNativeSqlHolder() { + return new PropertyAspectAdapter<Connection, Boolean>( + getSubjectHolder(), + Connection.NATIVE_SQL_PROPERTY) + { + @Override + protected Boolean buildValue_() { + if (this.subject.getNativeSql() != null) { + return null; + } + return this.subject.getDefaultNativeSql(); + } + }; + } + + + private ModifiablePropertyValueModel<Boolean> buildCacheStatementsHolder() { + return new PropertyAspectAdapter<Connection, Boolean>(getSubjectHolder(), Connection.CACHE_STATEMENTS_PROPERTY) { + @Override + protected Boolean buildValue_() { + return this.subject.getCacheStatements(); + } + + @Override + protected void setValue_(Boolean value) { + this.subject.setCacheStatements(value); + } + + @Override + protected synchronized void subjectChanged() { + Boolean oldValue = this.getValue(); + super.subjectChanged(); + Boolean newValue = this.getValue(); + + // Make sure the default value is appended to the text + if (oldValue == newValue && newValue == null) { + this.fireAspectChanged(Boolean.TRUE, newValue); + } + } + }; + } + + private IntegerCombo<Connection> addCacheStatementsSizeCombo(Composite container) { + return new IntegerCombo<Connection>(this, container) { + @Override + protected String getHelpId() { + return JpaHelpContextIds.PERSISTENCE_XML_CONNECTION; + } + + @Override + protected PropertyValueModel<Integer> buildDefaultHolder() { + return new PropertyAspectAdapter<Connection, Integer>(getSubjectHolder()) { + @Override + protected Integer buildValue_() { + return this.subject.getDefaultCacheStatementsSize(); + } + }; + } + + @Override + protected ModifiablePropertyValueModel<Integer> buildSelectedItemHolder() { + return new PropertyAspectAdapter<Connection, Integer>(getSubjectHolder(), Connection.CACHE_STATEMENTS_SIZE_PROPERTY) { + @Override + protected Integer buildValue_() { + return this.subject.getCacheStatementsSize(); + } + + @Override + protected void setValue_(Integer value) { + this.subject.setCacheStatementsSize(value); + } + }; + } + }; + } + + private void installControlEnabler(ModifiablePropertyValueModel<Boolean> cacheStatementsHolder, IntegerCombo<?> combo) { + SWTTools.controlEnabledState(cacheStatementsHolder, combo.getControl()); } } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/connection/TransactionTypeComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/connection/TransactionTypeComposite.java deleted file mode 100644 index 0b7fc8b535..0000000000 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/connection/TransactionTypeComposite.java +++ /dev/null @@ -1,136 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2008, 2012 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.jpa.eclipselink.ui.internal.persistence.connection; - -import java.util.Collection; -import org.eclipse.jpt.common.ui.internal.widgets.EnumFormComboViewer; -import org.eclipse.jpt.common.ui.internal.widgets.Pane; -import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter; -import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; -import org.eclipse.jpt.jpa.core.context.persistence.PersistenceUnit; -import org.eclipse.jpt.jpa.core.context.persistence.PersistenceUnitTransactionType; -import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.Connection; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.EclipseLinkUiMessages; -import org.eclipse.jpt.jpa.ui.internal.JpaHelpContextIds; -import org.eclipse.swt.widgets.Composite; - -/** - * TransactionTypeComposite - */ -public class TransactionTypeComposite<T extends Connection> - extends Pane<T> -{ - /** - * Creates a new <code>TransactionTypeComposite</code>. - * - * @param parentController - * The parent container of this one - * @param parent - * The parent container - */ - public TransactionTypeComposite( - Pane<T> parentComposite, - Composite parent) { - - super( parentComposite, parent); - } - - @Override - protected void initializeLayout( Composite container) { - - this.addLabeledComposite( - container, - EclipseLinkUiMessages.PersistenceXmlConnectionTab_transactionTypeLabel, - this.addTransactionTypeCombo( container), - JpaHelpContextIds.PERSISTENCE_XML_CONNECTION - ); - } - - private EnumFormComboViewer<PersistenceUnit, PersistenceUnitTransactionType> addTransactionTypeCombo(Composite container) { - return new EnumFormComboViewer<PersistenceUnit, PersistenceUnitTransactionType>(this, this.buildPersistenceUnitHolder(), container) { - @Override - protected void addPropertyNames(Collection<String> propertyNames) { - super.addPropertyNames(propertyNames); - propertyNames.add(PersistenceUnit.SPECIFIED_TRANSACTION_TYPE_PROPERTY); - propertyNames.add(PersistenceUnit.DEFAULT_TRANSACTION_TYPE_PROPERTY); - } - - @Override - protected PersistenceUnitTransactionType[] getChoices() { - return PersistenceUnitTransactionType.values(); - } - - @Override - protected PersistenceUnitTransactionType getDefaultValue() { - return this.getSubject().getDefaultTransactionType(); - } - - @Override - protected String displayString(PersistenceUnitTransactionType value) { - switch (value) { - case JTA : - return EclipseLinkUiMessages.TransactionTypeComposite_jta; - case RESOURCE_LOCAL : - return EclipseLinkUiMessages.TransactionTypeComposite_resource_local; - default : - throw new IllegalStateException(); - } - } - - @Override - protected PersistenceUnitTransactionType getValue() { - return this.getSubject().getSpecifiedTransactionType(); - } - - @Override - protected void setValue(PersistenceUnitTransactionType value) { - this.getSubject().setSpecifiedTransactionType(value); - - if (value == PersistenceUnitTransactionType.RESOURCE_LOCAL) { - clearJTAProperties(); - } - else { - clearResourceLocalProperties(); - } - } - }; - } - - private PropertyValueModel<PersistenceUnit> buildPersistenceUnitHolder() { - return new PropertyAspectAdapter<Connection, PersistenceUnit>(getSubjectHolder()) { - @Override - protected PersistenceUnit buildValue_() { - return this.subject.getPersistenceUnit(); - } - }; - - } - - private void clearJTAProperties() { - getSubject().getPersistenceUnit().setJtaDataSource(null); - } - - private void clearResourceLocalProperties() { - Connection connection = this.getSubject(); - connection.getPersistenceUnit().setNonJtaDataSource(null); - connection.setDriver(null); - connection.setUrl(null); - connection.setUser(null); - connection.setPassword(null); - connection.setBindParameters(null); - connection.setWriteConnectionsMax(null); - connection.setWriteConnectionsMin(null); - connection.setReadConnectionsMax(null); - connection.setReadConnectionsMin(null); - connection.setReadConnectionsShared(null); - connection.setExclusiveConnectionMode(null); - connection.setLazyConnection(null); - } -} diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/customization/CustomizerComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/customization/CustomizerComposite.java deleted file mode 100644 index 74295f1a35..0000000000 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/customization/CustomizerComposite.java +++ /dev/null @@ -1,103 +0,0 @@ -/******************************************************************************* -* Copyright (c) 2008, 2012 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.jpa.eclipselink.ui.internal.persistence.customization; - -import org.eclipse.jdt.core.IJavaProject; -import org.eclipse.jpt.common.ui.internal.widgets.ClassChooserPane; -import org.eclipse.jpt.common.ui.internal.widgets.Pane; -import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter; -import org.eclipse.jpt.common.utility.model.value.ModifiablePropertyValueModel; -import org.eclipse.jpt.jpa.eclipselink.core.context.EclipseLinkCustomizer; -import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.Customization; -import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.CustomizationEntity; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.EclipseLinkUiMessages; -import org.eclipse.swt.widgets.Composite; - -/** - * CustomizerComposite - */ -public class CustomizerComposite extends Pane<CustomizationEntity> -{ - /** - * Creates a new <code>CustomizerComposite</code>. - * - * @param parentPane The parent pane of this one - * @param parent The parent container - */ - public CustomizerComposite(Pane<? extends CustomizationEntity> parentPane, - Composite parent) { - - super(parentPane, parent); - } - - private ClassChooserPane<CustomizationEntity> initializeClassChooser(Composite container) { - - return new ClassChooserPane<CustomizationEntity>(this, container) { - - @Override - protected ModifiablePropertyValueModel<String> buildTextHolder() { - return new PropertyAspectAdapter<CustomizationEntity, String>( - this.getSubjectHolder(), CustomizationEntity.DESCRIPTOR_CUSTOMIZER_PROPERTY) { - @Override - protected String buildValue_() { - return getSubjectParent().getDescriptorCustomizerOf(getSubjectName()); - } - - @Override - protected void setValue_(String value) { - - if (value.length() == 0) { - value = null; - } - getSubjectParent().setDescriptorCustomizerOf(getSubjectName(), value); - } - }; - } - - @Override - protected String getClassName() { - return getSubjectParent().getDescriptorCustomizerOf(getSubjectName()); - } - - @Override - protected String getLabelText() { - return EclipseLinkUiMessages.PersistenceXmlCustomizationTab_customizerLabel; - } - - @Override - protected IJavaProject getJavaProject() { - return getSubjectParent().getJpaProject().getJavaProject(); - } - - @Override - protected void setClassName(String className) { - getSubjectParent().setDescriptorCustomizerOf(getSubjectName(), className); - } - - @Override - protected String getSuperInterfaceName() { - return EclipseLinkCustomizer.ECLIPSELINK_DESCRIPTOR_CUSTOMIZER_CLASS_NAME; - } - }; - } - - private String getSubjectName() { - return this.getSubjectHolder().getValue().getName(); - } - - private Customization getSubjectParent() { - return this.getSubjectHolder().getValue().getParent(); - } - - @Override - protected void initializeLayout(Composite container) { - this.initializeClassChooser(container); - } -} diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/customization/EclipseLinkCustomizationComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/customization/EclipseLinkCustomizationComposite.java deleted file mode 100644 index eda7fae366..0000000000 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/customization/EclipseLinkCustomizationComposite.java +++ /dev/null @@ -1,77 +0,0 @@ -/******************************************************************************* -* Copyright (c) 2008, 2011 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.jpa.eclipselink.ui.internal.persistence.customization; - -import org.eclipse.jpt.common.ui.internal.widgets.Pane; -import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.Customization; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.EclipseLinkUiMessages; -import org.eclipse.swt.SWT; -import org.eclipse.swt.layout.GridData; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.ui.forms.widgets.ExpandableComposite; -import org.eclipse.ui.forms.widgets.Section; - -/** - * PersistenceUnitCustomizationComposite - */ -public class EclipseLinkCustomizationComposite<T extends Customization> extends Pane<T> -{ - public EclipseLinkCustomizationComposite(Pane<T> subjectHolder, - Composite container) { - - super(subjectHolder, container); - } - - @Override - protected void initializeLayout(Composite parent) { - Section section = getWidgetFactory().createSection(parent, SWT.FLAT | ExpandableComposite.TITLE_BAR | Section.DESCRIPTION); - section.setText(EclipseLinkUiMessages.PersistenceXmlCustomizationTab_sectionTitle); - section.setDescription(EclipseLinkUiMessages.PersistenceXmlCustomizationTab_sectionDescription); - section.setLayoutData(new GridData(GridData.FILL_BOTH)); - - Composite composite = this.addSubPane(section); - section.setClient(composite); - - // Default pane - int groupBoxMargin = this.getGroupBoxMargin(); - - Composite defaultPane = this.addSubPane( - composite, - 0, groupBoxMargin, 0, groupBoxMargin - ); - - // Weaving Group - new WeavingPropertiesComposite(this, defaultPane); - - // Validation Only - new ValidationOnlyComposite(this, defaultPane); - - // Mapping Files Validate Schema - new ValidateSchemaComposite(this, defaultPane); - - // Throw Exceptions - new ThrowExceptionsComposite(this, defaultPane); - - // Exception Handler - new ExceptionHandlerComposite(this, defaultPane); - - // Session Customizer - new SessionCustomizersComposite(this, composite); - - this.buildEntityListComposite(composite); - - // Profiler: - new ProfilerComposite(this, composite); - } - - protected void buildEntityListComposite(Composite parent) { - new EntityListComposite(this, parent); - } -}
\ No newline at end of file diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/customization/EntityCustomizationPropertyComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/customization/EntityCustomizationPropertyComposite.java deleted file mode 100644 index e6f59d3972..0000000000 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/customization/EntityCustomizationPropertyComposite.java +++ /dev/null @@ -1,47 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2008, 2011 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.jpa.eclipselink.ui.internal.persistence.customization; - -import org.eclipse.jpt.common.ui.internal.widgets.Pane; -import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; -import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.Customization; -import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.CustomizationEntity; -import org.eclipse.swt.widgets.Composite; - -/** - * EntityCustomizationPropertyComposite - */ -public class EntityCustomizationPropertyComposite extends Pane<CustomizationEntity> { - - /** - * Creates a new <code>EntityCustomizationPropertyComposite</code>. - * - * @param parentPane The parent container of this one - * @param subjectHolder The holder of this pane's subject - * @param parent The parent container - */ - public EntityCustomizationPropertyComposite(Pane<Customization> parentComposite, - PropertyValueModel<CustomizationEntity> subjectHolder, - Composite parent) { - - super(parentComposite, subjectHolder, parent); - } - - /* - * (non-Javadoc) - */ - @Override - protected void initializeLayout(Composite container) { - - // Customizer - new CustomizerComposite(this, container); - - } -} diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/customization/EntityListComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/customization/EntityListComposite.java index dd1a69730c..64a281e0f3 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/customization/EntityListComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/customization/EntityListComposite.java @@ -20,18 +20,22 @@ import org.eclipse.jdt.ui.JavaUI; import org.eclipse.jface.viewers.ILabelProvider; import org.eclipse.jface.viewers.LabelProvider; import org.eclipse.jface.window.Window; -import org.eclipse.jpt.common.ui.internal.util.PaneEnabler; import org.eclipse.jpt.common.ui.internal.widgets.AddRemoveListPane; +import org.eclipse.jpt.common.ui.internal.widgets.ClassChooserPane; import org.eclipse.jpt.common.ui.internal.widgets.Pane; -import org.eclipse.jpt.common.utility.internal.CollectionTools; import org.eclipse.jpt.common.utility.internal.iterables.ListIterable; +import org.eclipse.jpt.common.utility.internal.model.value.CollectionPropertyValueModelAdapter; import org.eclipse.jpt.common.utility.internal.model.value.ListAspectAdapter; +import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter; +import org.eclipse.jpt.common.utility.internal.model.value.SimpleCollectionValueModel; import org.eclipse.jpt.common.utility.internal.model.value.SimplePropertyValueModel; import org.eclipse.jpt.common.utility.internal.model.value.TransformationPropertyValueModel; -import org.eclipse.jpt.common.utility.internal.model.value.swing.ObjectListSelectionModel; +import org.eclipse.jpt.common.utility.model.value.CollectionValueModel; import org.eclipse.jpt.common.utility.model.value.ListValueModel; -import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; +import org.eclipse.jpt.common.utility.model.value.ModifiableCollectionValueModel; import org.eclipse.jpt.common.utility.model.value.ModifiablePropertyValueModel; +import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; +import org.eclipse.jpt.jpa.eclipselink.core.context.EclipseLinkCustomizer; import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.Customization; import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.CustomizationEntity; import org.eclipse.jpt.jpa.eclipselink.ui.JptJpaEclipseLinkUiPlugin; @@ -40,6 +44,7 @@ import org.eclipse.jpt.jpa.eclipselink.ui.internal.EclipseLinkUiMessages; import org.eclipse.swt.widgets.Composite; import org.eclipse.ui.PlatformUI; import org.eclipse.ui.dialogs.SelectionDialog; +import org.eclipse.ui.forms.widgets.Hyperlink; import org.eclipse.ui.progress.IProgressService; /** @@ -47,7 +52,8 @@ import org.eclipse.ui.progress.IProgressService; */ public class EntityListComposite extends Pane<Customization> { - private ModifiablePropertyValueModel<CustomizationEntity> entityHolder; + private ModifiableCollectionValueModel<CustomizationEntity> selectedEntitiesModel; + private PropertyValueModel<CustomizationEntity> selectedEntityModel; public EntityListComposite(Pane<? extends Customization> parentComposite, Composite parent) { @@ -57,55 +63,74 @@ public class EntityListComposite extends Pane<Customization> @Override protected void initialize() { super.initialize(); - this.entityHolder = this.buildEntityHolder(); + this.selectedEntitiesModel = this.buildSelectedEntitiesModel(); + this.selectedEntityModel = this.buildSelectedEntityModel(this.selectedEntitiesModel); } - @Override - protected void initializeLayout(Composite container) { + private ModifiableCollectionValueModel<CustomizationEntity> buildSelectedEntitiesModel() { + return new SimpleCollectionValueModel<CustomizationEntity>(); + } - container = this.addTitledGroup( - container, + private PropertyValueModel<CustomizationEntity> buildSelectedEntityModel(CollectionValueModel<CustomizationEntity> selectedEntitiesModel) { + return new CollectionPropertyValueModelAdapter<CustomizationEntity, CustomizationEntity>(selectedEntitiesModel) { + @Override + protected CustomizationEntity buildValue() { + if (this.collectionModel.size() == 1) { + return this.collectionModel.iterator().next(); + } + return null; + } + }; + } + + @Override + protected Composite addComposite(Composite parent) { + return this.addTitledGroup( + parent, EclipseLinkUiMessages.CustomizationEntityListComposite_groupTitle ); + } + @Override + protected void initializeLayout(Composite container) { // Entities add/remove list pane - new AddRemoveListPane<Customization>( + new AddRemoveListPane<Customization, CustomizationEntity>( this, container, this.buildEntitiesAdapter(), this.buildEntitiesListHolder(), - this.entityHolder, + this.selectedEntitiesModel, this.buildEntityLabelProvider(), EclipseLinkHelpContextIds.PERSISTENCE_CUSTOMIZATION ); // Entity Customization property pane - EntityCustomizationPropertyComposite pane = new EntityCustomizationPropertyComposite( - this, - this.entityHolder, - container - ); - this.installPaneEnabler(this.entityHolder, pane); + Hyperlink customizationHyperlink = this.addHyperlink(container, EclipseLinkUiMessages.PersistenceXmlCustomizationTab_customizerLabel); + this.initializeClassChooser(container, customizationHyperlink); } - private AddRemoveListPane.Adapter buildEntitiesAdapter() { - return new AddRemoveListPane.AbstractAdapter() { - public void addNewItem(ObjectListSelectionModel listSelectionModel) { - EntityListComposite.this.addEntities(listSelectionModel); + private AddRemoveListPane.Adapter<CustomizationEntity> buildEntitiesAdapter() { + return new AddRemoveListPane.AbstractAdapter<CustomizationEntity>() { + + public CustomizationEntity addNewItem() { + return EntityListComposite.this.addEntity(); } - public void removeSelectedItems(ObjectListSelectionModel listSelectionModel) { - Customization customization = getSubject(); - for (Object item : listSelectionModel.selectedValues()) { - CustomizationEntity entityCustomization = (CustomizationEntity) item; - customization.removeEntity(entityCustomization.getName()); - } + @Override + public PropertyValueModel<Boolean> buildRemoveButtonEnabledModel(CollectionValueModel<CustomizationEntity> selectedItemsModel) { + //enable the remove button only when 1 item is selected, same as the optional button + return this.buildSingleSelectedItemEnabledModel(selectedItemsModel); + } + + public void removeSelectedItems(CollectionValueModel<CustomizationEntity> selectedItemsModel) { + //assume only 1 item since remove button is disabled otherwise + CustomizationEntity customizationEntity = selectedItemsModel.iterator().next(); + getSubject().removeEntity(customizationEntity.getName()); } }; } - private void addEntities(ObjectListSelectionModel listSelectionModel) { - + private CustomizationEntity addEntity() { IType type = this.chooseEntity(); if (type != null) { @@ -115,13 +140,10 @@ public class EntityListComposite extends Pane<Customization> } if( ! this.getSubject().entityExists(entityName)) { - this.getSubject().addEntity(entityName); - int index = CollectionTools.indexOf(this.getSubject().getEntityNames(), entityName); - CustomizationEntity entity = (CustomizationEntity) listSelectionModel.getListModel().getElementAt(index); - listSelectionModel.setSelectedValue(entity); - this.entityHolder.setValue(entity); + return this.getSubject().addEntity(entityName); } } + return null; } private String getEntityName(String fullyQualifiedTypeName) { @@ -192,21 +214,67 @@ public class EntityListComposite extends Pane<Customization> }; } - private void installPaneEnabler(ModifiablePropertyValueModel<CustomizationEntity> entityHolder, - EntityCustomizationPropertyComposite pane) { - - new PaneEnabler( - this.buildPaneEnablerHolder(entityHolder), - pane - ); - } - - private PropertyValueModel<Boolean> buildPaneEnablerHolder(ModifiablePropertyValueModel<CustomizationEntity> entityHolder) { + private PropertyValueModel<Boolean> buildPaneEnablerHolder(PropertyValueModel<CustomizationEntity> entityHolder) { return new TransformationPropertyValueModel<CustomizationEntity, Boolean>(entityHolder) { @Override protected Boolean transform_(CustomizationEntity value) { - return value.entityNameIsValid(); + return Boolean.valueOf(value.entityNameIsValid()); } }; } + + + private ClassChooserPane<CustomizationEntity> initializeClassChooser(Composite container, Hyperlink hyperlink) { + return new ClassChooserPane<CustomizationEntity>(this, this.selectedEntityModel, this.buildPaneEnablerHolder(this.selectedEntityModel), container, hyperlink) { + + @Override + protected ModifiablePropertyValueModel<String> buildTextHolder() { + return new PropertyAspectAdapter<CustomizationEntity, String>( + this.getSubjectHolder(), CustomizationEntity.DESCRIPTOR_CUSTOMIZER_PROPERTY) { + @Override + protected String buildValue_() { + return getSubjectParent().getDescriptorCustomizerOf(getSubjectName()); + } + + @Override + protected void setValue_(String value) { + + if (value.length() == 0) { + value = null; + } + getSubjectParent().setDescriptorCustomizerOf(getSubjectName(), value); + } + }; + } + + @Override + protected String getClassName() { + return getSubjectParent().getDescriptorCustomizerOf(getSubjectName()); + } + + @Override + protected IJavaProject getJavaProject() { + return getSubjectParent().getJpaProject().getJavaProject(); + } + + @Override + protected void setClassName(String className) { + getSubjectParent().setDescriptorCustomizerOf(getSubjectName(), className); + } + + @Override + protected String getSuperInterfaceName() { + return EclipseLinkCustomizer.ECLIPSELINK_DESCRIPTOR_CUSTOMIZER_CLASS_NAME; + } + + private String getSubjectName() { + return this.getSubjectHolder().getValue().getName(); + } + + private Customization getSubjectParent() { + return this.getSubjectHolder().getValue().getParent(); + } + }; + } + } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/customization/ExceptionHandlerComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/customization/ExceptionHandlerComposite.java deleted file mode 100644 index b723aeb79d..0000000000 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/customization/ExceptionHandlerComposite.java +++ /dev/null @@ -1,93 +0,0 @@ -/******************************************************************************* -* Copyright (c) 2008, 2012 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.jpa.eclipselink.ui.internal.persistence.customization; - -import org.eclipse.jdt.core.IJavaProject; -import org.eclipse.jpt.common.ui.internal.widgets.ClassChooserPane; -import org.eclipse.jpt.common.ui.internal.widgets.Pane; -import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter; -import org.eclipse.jpt.common.utility.model.value.ModifiablePropertyValueModel; -import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.Customization; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.EclipseLinkUiMessages; -import org.eclipse.swt.widgets.Composite; - -/** - * ExceptionHandlerComposite - */ -public class ExceptionHandlerComposite extends Pane<Customization> -{ - /** - * Creates a new <code>ExceptionHandlerComposite</code>. - * - * @param parentPane The parent pane of this one - * @param parent The parent container - */ - public ExceptionHandlerComposite(Pane<? extends Customization> parentPane, - Composite parent) { - - super(parentPane, parent); - } - - private ClassChooserPane<Customization> initializeClassChooser(Composite container) { - - return new ClassChooserPane<Customization>(this, container) { - - @Override - protected ModifiablePropertyValueModel<String> buildTextHolder() { - return new PropertyAspectAdapter<Customization, String>( - this.getSubjectHolder(), Customization.EXCEPTION_HANDLER_PROPERTY) { - @Override - protected String buildValue_() { - return this.subject.getExceptionHandler(); - } - - @Override - protected void setValue_(String value) { - - if (value.length() == 0) { - value = null; - } - this.subject.setExceptionHandler(value); - } - }; - } - - @Override - protected String getClassName() { - return this.getSubject().getExceptionHandler(); - } - - @Override - protected String getLabelText() { - return EclipseLinkUiMessages.PersistenceXmlCustomizationTab_exceptionHandlerLabel; - } - - @Override - protected IJavaProject getJavaProject() { - return getSubject().getJpaProject().getJavaProject(); - } - - @Override - protected void setClassName(String className) { - this.getSubject().setExceptionHandler(className); - } - - @Override - protected String getSuperInterfaceName() { - return Customization.ECLIPSELINK_EXCEPTION_HANDLER_CLASS_NAME; - } - }; - } - - @Override - protected void initializeLayout(Composite container) { - this.initializeClassChooser(container); - } -} diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/customization/PersistenceXmlCustomizationTab.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/customization/PersistenceXmlCustomizationTab.java index 05f7414140..24da558146 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/customization/PersistenceXmlCustomizationTab.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/customization/PersistenceXmlCustomizationTab.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2009, 2011 Oracle. All rights reserved. + * Copyright (c) 2009, 2012 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. @@ -9,18 +9,30 @@ ******************************************************************************/ package org.eclipse.jpt.jpa.eclipselink.ui.internal.persistence.customization; +import org.eclipse.jdt.core.IJavaProject; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.jpt.common.ui.WidgetFactory; +import org.eclipse.jpt.common.ui.internal.JptCommonUiMessages; +import org.eclipse.jpt.common.ui.internal.widgets.ClassChooserPane; import org.eclipse.jpt.common.ui.internal.widgets.Pane; +import org.eclipse.jpt.common.ui.internal.widgets.TriStateCheckBox; +import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter; +import org.eclipse.jpt.common.utility.internal.model.value.TransformationPropertyValueModel; +import org.eclipse.jpt.common.utility.model.value.ModifiablePropertyValueModel; import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.Customization; import org.eclipse.jpt.jpa.eclipselink.ui.internal.EclipseLinkHelpContextIds; import org.eclipse.jpt.jpa.eclipselink.ui.internal.EclipseLinkUiMessages; -import org.eclipse.jpt.jpa.ui.details.JpaPageComposite; +import org.eclipse.jpt.jpa.ui.editors.JpaPageComposite; +import org.eclipse.osgi.util.NLS; import org.eclipse.swt.SWT; 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.ui.forms.widgets.ExpandableComposite; +import org.eclipse.ui.forms.widgets.Hyperlink; +import org.eclipse.ui.forms.widgets.Section; /** * PersistenceXmlCustomizationTabItem @@ -37,12 +49,6 @@ public class PersistenceXmlCustomizationTab<T extends Customization> super(subjectHolder, parent, widgetFactory); } - @Override - protected void initializeLayout(Composite container) { - - this.buildEclipseLinkCustomizationComposite(container); - } - // ********** JpaPageComposite implementation ********** public String getHelpID() { @@ -57,35 +63,295 @@ public class PersistenceXmlCustomizationTab<T extends Customization> return EclipseLinkUiMessages.PersistenceXmlCustomizationTab_title; } - // ********** Layout ********** - @Override - protected Composite addContainer(Composite parent) { - GridLayout layout = new GridLayout(1, true); + protected Composite addComposite(Composite container) { + GridLayout layout = new GridLayout(2, true); //2 columns equal width layout.marginHeight = 0; - layout.marginWidth = 0; - layout.marginTop = 0; - layout.marginLeft = 0; + layout.marginWidth = 0; + layout.marginTop = 0; + layout.marginLeft = 0; layout.marginBottom = 0; - layout.marginRight = 0; - layout.verticalSpacing = 15; + layout.marginRight = 0; + + return this.addPane(container, layout); + } + + @Override + protected void initializeLayout(Composite parent) { + Section weavingSection = this.getWidgetFactory().createSection(parent, ExpandableComposite.TITLE_BAR); + weavingSection.setText(EclipseLinkUiMessages.PersistenceXmlCustomizationTab_weavingPropertiesGroupBox); + weavingSection.setClient(this.initializeWeavingSection(weavingSection)); + GridData gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.verticalAlignment = SWT.TOP; + weavingSection.setLayoutData(gridData); - Composite container = addPane(parent, layout); - updateGridData(container); + Section customizersSection = this.getWidgetFactory().createSection(parent, ExpandableComposite.TITLE_BAR); + customizersSection.setText(EclipseLinkUiMessages.PersistenceXmlCustomizationTab_customizersSection); + customizersSection.setClient(this.initializeCustomizersSection(customizersSection)); + gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.verticalAlignment = SWT.TOP; + gridData.verticalSpan = 2; + customizersSection.setLayoutData(gridData); + + Section otherSection = this.getWidgetFactory().createSection(parent, ExpandableComposite.TITLE_BAR); + otherSection.setText(EclipseLinkUiMessages.PersistenceXmlCustomizationTab_otherSection); + otherSection.setClient(this.initializeOtherSection(otherSection)); + gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.verticalAlignment = SWT.TOP; + otherSection.setLayoutData(gridData); + } + + protected Control initializeWeavingSection(Section weavingSection) { + return new WeavingPropertiesComposite(this, weavingSection).getControl(); + } + + protected Control initializeOtherSection(Section otherSection) { + Composite container = this.addSubPane(otherSection, 2, 0, 0, 0, 0); + + // Validation Only + TriStateCheckBox validationOnlyCheckBox = this.addTriStateCheckBoxWithDefault( + container, + EclipseLinkUiMessages.PersistenceXmlCustomizationTab_validationOnlyLabel, + this.buildValidationOnlyHolder(), + this.buildValidationOnlyStringHolder(), + EclipseLinkHelpContextIds.PERSISTENCE_CUSTOMIZATION + ); + GridData gridData = new GridData(); + gridData.horizontalSpan = 2; + validationOnlyCheckBox.getCheckBox().setLayoutData(gridData); + + // Mapping Files Validate Schema + + TriStateCheckBox validateSchemaCheckBox = this.addTriStateCheckBoxWithDefault( + container, + EclipseLinkUiMessages.PersistenceXmlCustomizationTab_validateSchemaLabel, + this.buildValidateSchemaHolder(), + this.buildValidateSchemaStringHolder(), + EclipseLinkHelpContextIds.PERSISTENCE_CUSTOMIZATION + ); + gridData = new GridData(); + gridData.horizontalSpan = 2; + validateSchemaCheckBox.getCheckBox().setLayoutData(gridData); + + // Throw Exceptions + TriStateCheckBox throwExceptionsCheckBox = this.addTriStateCheckBoxWithDefault( + container, + EclipseLinkUiMessages.PersistenceXmlCustomizationTab_throwExceptionsLabel, + this.buildThrowExceptionsHolder(), + this.buildThrowExceptionsStringHolder(), + EclipseLinkHelpContextIds.PERSISTENCE_CUSTOMIZATION + ); + gridData = new GridData(); + gridData.horizontalSpan = 2; + throwExceptionsCheckBox.getCheckBox().setLayoutData(gridData); + + // Exception Handler + Hyperlink exceptionHandlerHyperlink = this.addHyperlink(container, EclipseLinkUiMessages.PersistenceXmlCustomizationTab_exceptionHandlerLabel); + this.initializeExceptionHandlerClassChooser(container, exceptionHandlerHyperlink); + + // Profiler: + Hyperlink profilerHyperlink = this.addHyperlink(container, EclipseLinkUiMessages.PersistenceXmlCustomizationTab_profilerLabel); + new ProfilerClassChooser(this, container, profilerHyperlink); return container; } - private void updateGridData(Composite container) { - GridData gridData = new GridData(); - gridData.grabExcessHorizontalSpace = true; - gridData.grabExcessVerticalSpace = true; - gridData.horizontalAlignment = SWT.FILL; - gridData.verticalAlignment = SWT.FILL; - container.setLayoutData(gridData); + protected Control initializeCustomizersSection(Section customizersSection) { + Composite container = this.addSubPane(customizersSection); + + // Session Customizer + new SessionCustomizersComposite(this, container); + + this.buildEntityListComposite(container); + + return container; + } + + protected void buildEntityListComposite(Composite parent) { + new EntityListComposite(this, parent); + } + + + //********* validation only *********** + + private ModifiablePropertyValueModel<Boolean> buildValidationOnlyHolder() { + return new PropertyAspectAdapter<Customization, Boolean>(getSubjectHolder(), Customization.VALIDATION_ONLY_PROPERTY) { + @Override + protected Boolean buildValue_() { + return this.subject.getValidationOnly(); + } + + @Override + protected void setValue_(Boolean value) { + this.subject.setValidationOnly(value); + } + }; + } + + private PropertyValueModel<String> buildValidationOnlyStringHolder() { + return new TransformationPropertyValueModel<Boolean, String>(buildDefaultValidationOnlyHolder()) { + @Override + protected String transform(Boolean value) { + if (value != null) { + String defaultStringValue = value.booleanValue() ? JptCommonUiMessages.Boolean_True : JptCommonUiMessages.Boolean_False; + return NLS.bind(EclipseLinkUiMessages.PersistenceXmlCustomizationTab_validationOnlyLabelDefault, defaultStringValue); + } + return EclipseLinkUiMessages.PersistenceXmlCustomizationTab_validationOnlyLabel; + } + }; + } + + private PropertyValueModel<Boolean> buildDefaultValidationOnlyHolder() { + return new PropertyAspectAdapter<Customization, Boolean>( + getSubjectHolder(), + Customization.VALIDATION_ONLY_PROPERTY) + { + @Override + protected Boolean buildValue_() { + if (this.subject.getValidationOnly() != null) { + return null; + } + return this.subject.getDefaultValidationOnly(); + } + }; + } + + + //********* validate schema *********** + + private ModifiablePropertyValueModel<Boolean> buildValidateSchemaHolder() { + return new PropertyAspectAdapter<Customization, Boolean>(getSubjectHolder(), Customization.VALIDATE_SCHEMA_PROPERTY) { + @Override + protected Boolean buildValue_() { + return this.subject.getValidateSchema(); + } + + @Override + protected void setValue_(Boolean value) { + this.subject.setValidateSchema(value); + } + }; } - protected void buildEclipseLinkCustomizationComposite(Composite container) { - new EclipseLinkCustomizationComposite<T>(this, container); + private PropertyValueModel<String> buildValidateSchemaStringHolder() { + return new TransformationPropertyValueModel<Boolean, String>(buildDefaultValidateSchemaHolder()) { + @Override + protected String transform(Boolean value) { + if (value != null) { + String defaultStringValue = value.booleanValue() ? JptCommonUiMessages.Boolean_True : JptCommonUiMessages.Boolean_False; + return NLS.bind(EclipseLinkUiMessages.PersistenceXmlCustomizationTab_validateSchemaLabelDefault, defaultStringValue); + } + return EclipseLinkUiMessages.PersistenceXmlCustomizationTab_validateSchemaLabel; + } + }; + } + + private PropertyValueModel<Boolean> buildDefaultValidateSchemaHolder() { + return new PropertyAspectAdapter<Customization, Boolean>( + getSubjectHolder(), + Customization.VALIDATE_SCHEMA_PROPERTY) + { + @Override + protected Boolean buildValue_() { + if (this.subject.getValidateSchema() != null) { + return null; + } + return this.subject.getDefaultValidateSchema(); + } + }; } + + + //********* throw exceptions *********** + + private ModifiablePropertyValueModel<Boolean> buildThrowExceptionsHolder() { + return new PropertyAspectAdapter<Customization, Boolean>(getSubjectHolder(), Customization.THROW_EXCEPTIONS_PROPERTY) { + @Override + protected Boolean buildValue_() { + return this.subject.getThrowExceptions(); + } + @Override + protected void setValue_(Boolean value) { + this.subject.setThrowExceptions(value); + } + }; + } + + private PropertyValueModel<String> buildThrowExceptionsStringHolder() { + return new TransformationPropertyValueModel<Boolean, String>(buildDefaultThrowExceptionsHolder()) { + @Override + protected String transform(Boolean value) { + if (value != null) { + String defaultStringValue = value.booleanValue() ? JptCommonUiMessages.Boolean_True : JptCommonUiMessages.Boolean_False; + return NLS.bind(EclipseLinkUiMessages.PersistenceXmlCustomizationTab_throwExceptionsLabelDefault, defaultStringValue); + } + return EclipseLinkUiMessages.PersistenceXmlCustomizationTab_throwExceptionsLabel; + } + }; + } + + private PropertyValueModel<Boolean> buildDefaultThrowExceptionsHolder() { + return new PropertyAspectAdapter<Customization, Boolean>( + getSubjectHolder(), + Customization.THROW_EXCEPTIONS_PROPERTY) + { + @Override + protected Boolean buildValue_() { + if (this.subject.getThrowExceptions() != null) { + return null; + } + return this.subject.getDefaultThrowExceptions(); + } + }; + } + + + //********* exception handler *********** + + private ClassChooserPane<Customization> initializeExceptionHandlerClassChooser(Composite container, Hyperlink hyperlink) { + + return new ClassChooserPane<Customization>(this, container, hyperlink) { + + @Override + protected ModifiablePropertyValueModel<String> buildTextHolder() { + return new PropertyAspectAdapter<Customization, String>( + this.getSubjectHolder(), Customization.EXCEPTION_HANDLER_PROPERTY) { + @Override + protected String buildValue_() { + return this.subject.getExceptionHandler(); + } + + @Override + protected void setValue_(String value) { + + if (value.length() == 0) { + value = null; + } + this.subject.setExceptionHandler(value); + } + }; + } + + @Override + protected String getClassName() { + return this.getSubject().getExceptionHandler(); + } + + @Override + protected IJavaProject getJavaProject() { + return getSubject().getJpaProject().getJavaProject(); + } + + @Override + protected void setClassName(String className) { + this.getSubject().setExceptionHandler(className); + } + + @Override + protected String getSuperInterfaceName() { + return Customization.ECLIPSELINK_EXCEPTION_HANDLER_CLASS_NAME; + } + }; + } + } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/customization/ProfilerComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/customization/ProfilerClassChooser.java index 3b07cedc57..2dc6f9a188 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/customization/ProfilerComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/customization/ProfilerClassChooser.java @@ -33,12 +33,13 @@ import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.Profiler; import org.eclipse.jpt.jpa.eclipselink.ui.internal.EclipseLinkUiMessages; import org.eclipse.osgi.util.NLS; import org.eclipse.swt.widgets.Composite; +import org.eclipse.ui.forms.widgets.Hyperlink; import com.ibm.icu.text.Collator; /** * ProfilerComposite */ -public class ProfilerComposite extends ClassChooserComboPane<Customization> +public class ProfilerClassChooser extends ClassChooserComboPane<Customization> { /** @@ -47,28 +48,24 @@ public class ProfilerComposite extends ClassChooserComboPane<Customization> * @param parentPane The parent container of this one * @param parent The parent container */ - public ProfilerComposite( + public ProfilerClassChooser( Pane<? extends Customization> parentPane, - Composite parent) { + Composite parent, + Hyperlink hyperlink) { - super(parentPane, parent); + super(parentPane, parent, hyperlink); } @Override protected String getClassName() { return Profiler.getProfilerClassName(this.getSubject().getProfiler()); } - - @Override - protected String getLabelText() { - return EclipseLinkUiMessages.PersistenceXmlCustomizationTab_profilerLabel; - } - + @Override protected IJavaProject getJavaProject() { return getSubject().getJpaProject().getJavaProject(); } - + @Override protected ModifiablePropertyValueModel<String> buildTextHolder() { return new PropertyAspectAdapter<Customization, String>(this.getSubjectHolder(), Customization.PROFILER_PROPERTY) { @@ -77,7 +74,7 @@ public class ProfilerComposite extends ClassChooserComboPane<Customization> String name = this.subject.getProfiler(); if (name == null) { - name = ProfilerComposite.this.getDefaultValue(this.subject); + name = ProfilerClassChooser.this.getDefaultValue(this.subject); } return name; } @@ -92,12 +89,12 @@ public class ProfilerComposite extends ClassChooserComboPane<Customization> } }; } - + private PropertyValueModel<String> buildDefaultProfilerHolder() { return new PropertyAspectAdapter<Customization, String>(this.getSubjectHolder(), Customization.DEFAULT_PROFILER) { @Override protected String buildValue_() { - return ProfilerComposite.this.getDefaultValue(this.subject); + return ProfilerClassChooser.this.getDefaultValue(this.subject); } }; } @@ -152,7 +149,6 @@ public class ProfilerComposite extends ClassChooserComboPane<Customization> }; } - @Override protected ListValueModel<String> buildClassListHolder() { ArrayList<ListValueModel<String>> holders = new ArrayList<ListValueModel<String>>(2); @@ -194,12 +190,12 @@ public class ProfilerComposite extends ClassChooserComboPane<Customization> } return JptCommonUiMessages.DefaultEmpty; } - + @Override protected void setClassName(String className) { this.getSubject().setProfiler(className); } - + @Override protected String getSuperInterfaceName() { return Customization.ECLIPSELINK_SESSION_PROFILER_CLASS_NAME; diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/customization/SessionCustomizersComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/customization/SessionCustomizersComposite.java index c21f8e76fc..7e04146227 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/customization/SessionCustomizersComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/customization/SessionCustomizersComposite.java @@ -26,16 +26,15 @@ import org.eclipse.jpt.common.ui.internal.widgets.AddRemovePane.Adapter; import org.eclipse.jpt.common.ui.internal.widgets.Pane; import org.eclipse.jpt.common.utility.internal.iterables.ListIterable; import org.eclipse.jpt.common.utility.internal.model.value.ListAspectAdapter; -import org.eclipse.jpt.common.utility.internal.model.value.SimplePropertyValueModel; -import org.eclipse.jpt.common.utility.internal.model.value.swing.ObjectListSelectionModel; +import org.eclipse.jpt.common.utility.internal.model.value.SimpleCollectionValueModel; +import org.eclipse.jpt.common.utility.model.value.CollectionValueModel; import org.eclipse.jpt.common.utility.model.value.ListValueModel; -import org.eclipse.jpt.common.utility.model.value.ModifiablePropertyValueModel; +import org.eclipse.jpt.common.utility.model.value.ModifiableCollectionValueModel; +import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.Customization; import org.eclipse.jpt.jpa.eclipselink.ui.JptJpaEclipseLinkUiPlugin; import org.eclipse.jpt.jpa.eclipselink.ui.internal.EclipseLinkUiMessages; -import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Table; import org.eclipse.ui.PlatformUI; import org.eclipse.ui.dialogs.SelectionDialog; import org.eclipse.ui.progress.IProgressService; @@ -58,7 +57,7 @@ public class SessionCustomizersComposite extends Pane<Customization> } - private void addSessionCustomizerClass(ObjectListSelectionModel listSelectionModel) { + private String addSessionCustomizerClass() { IType type = chooseType(); @@ -66,22 +65,27 @@ public class SessionCustomizersComposite extends Pane<Customization> String className = type.getFullyQualifiedName('$'); if( ! this.getSubject().sessionCustomizerExists(className)) { - String classRef = this.getSubject().addSessionCustomizer(className); - listSelectionModel.setSelectedValue(classRef); + return this.getSubject().addSessionCustomizer(className); } } + return null; } - private Adapter buildAdapter() { - return new AddRemoveListPane.AbstractAdapter() { - public void addNewItem(ObjectListSelectionModel listSelectionModel) { - addSessionCustomizerClass(listSelectionModel); + private Adapter<String> buildAdapter() { + return new AddRemoveListPane.AbstractAdapter<String>() { + public String addNewItem() { + return addSessionCustomizerClass(); } - public void removeSelectedItems(ObjectListSelectionModel listSelectionModel) { - for (Object item : listSelectionModel.selectedValues()) { - getSubject().removeSessionCustomizer((String) item); - } + @Override + public PropertyValueModel<Boolean> buildRemoveButtonEnabledModel(CollectionValueModel<String> selectedItemsModel) { + //enable the remove button only when 1 item is selected, same as the optional button + return this.buildSingleSelectedItemEnabledModel(selectedItemsModel); + } + + public void removeSelectedItems(CollectionValueModel<String> selectedItemsModel) { + String item = selectedItemsModel.iterator().next(); + getSubject().removeSessionCustomizer(item); } }; } @@ -115,8 +119,8 @@ public class SessionCustomizersComposite extends Pane<Customization> }; } - private ModifiablePropertyValueModel<String> buildSelectedItemHolder() { - return new SimplePropertyValueModel<String>(); + private ModifiableCollectionValueModel<String> buildSelectedItemsModel() { + return new SimpleCollectionValueModel<String>(); } /** @@ -158,32 +162,24 @@ public class SessionCustomizersComposite extends Pane<Customization> } @Override - protected void initializeLayout(Composite container) { - // Description - container = addTitledGroup( - container, + protected Composite addComposite(Composite parent) { + return addTitledGroup( + parent, EclipseLinkUiMessages.PersistenceXmlCustomizationTab_sessionCustomizerLabel ); + } + @Override + protected void initializeLayout(Composite container) { // List pane - new AddRemoveListPane<Customization>( + new AddRemoveListPane<Customization, String>( this, container, buildAdapter(), buildListHolder(), - buildSelectedItemHolder(), + buildSelectedItemsModel(), buildLabelProvider() - ) - { - @Override - protected void initializeTable(Table table) { - super.initializeTable(table); - - Composite container = table.getParent(); - GridData gridData = (GridData) container.getLayoutData(); - gridData.heightHint = 75; - } - }; + ); } private IJavaProject getJavaProject() { diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/customization/ThrowExceptionsComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/customization/ThrowExceptionsComposite.java deleted file mode 100644 index b6e5a939a1..0000000000 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/customization/ThrowExceptionsComposite.java +++ /dev/null @@ -1,97 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2008, 2012 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.jpa.eclipselink.ui.internal.persistence.customization; - -import org.eclipse.jpt.common.ui.internal.JptCommonUiMessages; -import org.eclipse.jpt.common.ui.internal.widgets.Pane; -import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter; -import org.eclipse.jpt.common.utility.internal.model.value.TransformationPropertyValueModel; -import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; -import org.eclipse.jpt.common.utility.model.value.ModifiablePropertyValueModel; -import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.Customization; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.EclipseLinkHelpContextIds; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.EclipseLinkUiMessages; -import org.eclipse.osgi.util.NLS; -import org.eclipse.swt.widgets.Composite; - -/** - * ThrowExceptionsComposite - */ -public class ThrowExceptionsComposite extends Pane<Customization> -{ - /** - * Creates a new <code>ThrowExceptionsComposite</code>. - * - * @param parentController - * The parent container of this one - * @param parent - * The parent container - */ - public ThrowExceptionsComposite( - Pane<? extends Customization> parentComposite, - Composite parent) { - - super(parentComposite, parent); - } - - @Override - protected void initializeLayout(Composite container) { - - this.addTriStateCheckBoxWithDefault( - container, - EclipseLinkUiMessages.PersistenceXmlCustomizationTab_throwExceptionsLabel, - this.buildThrowExceptionsHolder(), - this.buildThrowExceptionsStringHolder(), - EclipseLinkHelpContextIds.PERSISTENCE_CUSTOMIZATION - ); - } - - private ModifiablePropertyValueModel<Boolean> buildThrowExceptionsHolder() { - return new PropertyAspectAdapter<Customization, Boolean>(getSubjectHolder(), Customization.THROW_EXCEPTIONS_PROPERTY) { - @Override - protected Boolean buildValue_() { - return this.subject.getThrowExceptions(); - } - - @Override - protected void setValue_(Boolean value) { - this.subject.setThrowExceptions(value); - } - }; - } - - private PropertyValueModel<String> buildThrowExceptionsStringHolder() { - return new TransformationPropertyValueModel<Boolean, String>(buildDefaultThrowExceptionsHolder()) { - @Override - protected String transform(Boolean value) { - if (value != null) { - String defaultStringValue = value.booleanValue() ? JptCommonUiMessages.Boolean_True : JptCommonUiMessages.Boolean_False; - return NLS.bind(EclipseLinkUiMessages.PersistenceXmlCustomizationTab_throwExceptionsLabelDefault, defaultStringValue); - } - return EclipseLinkUiMessages.PersistenceXmlCustomizationTab_throwExceptionsLabel; - } - }; - } - - private PropertyValueModel<Boolean> buildDefaultThrowExceptionsHolder() { - return new PropertyAspectAdapter<Customization, Boolean>( - getSubjectHolder(), - Customization.THROW_EXCEPTIONS_PROPERTY) - { - @Override - protected Boolean buildValue_() { - if (this.subject.getThrowExceptions() != null) { - return null; - } - return this.subject.getDefaultThrowExceptions(); - } - }; - } -} diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/customization/ValidateSchemaComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/customization/ValidateSchemaComposite.java deleted file mode 100644 index 1d1e12a836..0000000000 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/customization/ValidateSchemaComposite.java +++ /dev/null @@ -1,97 +0,0 @@ -/******************************************************************************* -* Copyright (c) 2010, 2012 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.jpa.eclipselink.ui.internal.persistence.customization; - -import org.eclipse.jpt.common.ui.internal.JptCommonUiMessages; -import org.eclipse.jpt.common.ui.internal.widgets.Pane; -import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter; -import org.eclipse.jpt.common.utility.internal.model.value.TransformationPropertyValueModel; -import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; -import org.eclipse.jpt.common.utility.model.value.ModifiablePropertyValueModel; -import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.Customization; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.EclipseLinkHelpContextIds; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.EclipseLinkUiMessages; -import org.eclipse.osgi.util.NLS; -import org.eclipse.swt.widgets.Composite; - -/** - * ValidateSchemaComposite - */ -public class ValidateSchemaComposite extends Pane<Customization> -{ - /** - * Creates a new <code>ValidateSchemaComposite</code>. - * - * @param parentController - * The parent container of this one - * @param parent - * The parent container - */ - public ValidateSchemaComposite( - Pane<? extends Customization> parentComposite, - Composite parent) { - - super(parentComposite, parent); - } - - @Override - protected void initializeLayout(Composite container) { - - this.addTriStateCheckBoxWithDefault( - container, - EclipseLinkUiMessages.PersistenceXmlCustomizationTab_validateSchemaLabel, - this.buildValidateSchemaHolder(), - this.buildValidateSchemaStringHolder(), - EclipseLinkHelpContextIds.PERSISTENCE_CUSTOMIZATION - ); - } - - private ModifiablePropertyValueModel<Boolean> buildValidateSchemaHolder() { - return new PropertyAspectAdapter<Customization, Boolean>(getSubjectHolder(), Customization.VALIDATE_SCHEMA_PROPERTY) { - @Override - protected Boolean buildValue_() { - return this.subject.getValidateSchema(); - } - - @Override - protected void setValue_(Boolean value) { - this.subject.setValidateSchema(value); - } - }; - } - - private PropertyValueModel<String> buildValidateSchemaStringHolder() { - return new TransformationPropertyValueModel<Boolean, String>(buildDefaultValidateSchemaHolder()) { - @Override - protected String transform(Boolean value) { - if (value != null) { - String defaultStringValue = value.booleanValue() ? JptCommonUiMessages.Boolean_True : JptCommonUiMessages.Boolean_False; - return NLS.bind(EclipseLinkUiMessages.PersistenceXmlCustomizationTab_validateSchemaLabelDefault, defaultStringValue); - } - return EclipseLinkUiMessages.PersistenceXmlCustomizationTab_validateSchemaLabel; - } - }; - } - - private PropertyValueModel<Boolean> buildDefaultValidateSchemaHolder() { - return new PropertyAspectAdapter<Customization, Boolean>( - getSubjectHolder(), - Customization.VALIDATE_SCHEMA_PROPERTY) - { - @Override - protected Boolean buildValue_() { - if (this.subject.getValidateSchema() != null) { - return null; - } - return this.subject.getDefaultValidateSchema(); - } - }; - } -} diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/customization/ValidationOnlyComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/customization/ValidationOnlyComposite.java deleted file mode 100644 index 0bceaa9834..0000000000 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/customization/ValidationOnlyComposite.java +++ /dev/null @@ -1,97 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2008, 2012 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.jpa.eclipselink.ui.internal.persistence.customization; - -import org.eclipse.jpt.common.ui.internal.JptCommonUiMessages; -import org.eclipse.jpt.common.ui.internal.widgets.Pane; -import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter; -import org.eclipse.jpt.common.utility.internal.model.value.TransformationPropertyValueModel; -import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; -import org.eclipse.jpt.common.utility.model.value.ModifiablePropertyValueModel; -import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.Customization; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.EclipseLinkHelpContextIds; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.EclipseLinkUiMessages; -import org.eclipse.osgi.util.NLS; -import org.eclipse.swt.widgets.Composite; - -/** - * ValidationOnlyComposite - */ -public class ValidationOnlyComposite extends Pane<Customization> -{ - /** - * Creates a new <code>ValidationOnlyComposite</code>. - * - * @param parentController - * The parent container of this one - * @param parent - * The parent container - */ - public ValidationOnlyComposite( - Pane<? extends Customization> parentComposite, - Composite parent) { - - super(parentComposite, parent); - } - - @Override - protected void initializeLayout(Composite container) { - - this.addTriStateCheckBoxWithDefault( - container, - EclipseLinkUiMessages.PersistenceXmlCustomizationTab_validationOnlyLabel, - this.buildValidationOnlyHolder(), - this.buildValidationOnlyStringHolder(), - EclipseLinkHelpContextIds.PERSISTENCE_CUSTOMIZATION - ); - } - - private ModifiablePropertyValueModel<Boolean> buildValidationOnlyHolder() { - return new PropertyAspectAdapter<Customization, Boolean>(getSubjectHolder(), Customization.VALIDATION_ONLY_PROPERTY) { - @Override - protected Boolean buildValue_() { - return this.subject.getValidationOnly(); - } - - @Override - protected void setValue_(Boolean value) { - this.subject.setValidationOnly(value); - } - }; - } - - private PropertyValueModel<String> buildValidationOnlyStringHolder() { - return new TransformationPropertyValueModel<Boolean, String>(buildDefaultValidationOnlyHolder()) { - @Override - protected String transform(Boolean value) { - if (value != null) { - String defaultStringValue = value.booleanValue() ? JptCommonUiMessages.Boolean_True : JptCommonUiMessages.Boolean_False; - return NLS.bind(EclipseLinkUiMessages.PersistenceXmlCustomizationTab_validationOnlyLabelDefault, defaultStringValue); - } - return EclipseLinkUiMessages.PersistenceXmlCustomizationTab_validationOnlyLabel; - } - }; - } - - private PropertyValueModel<Boolean> buildDefaultValidationOnlyHolder() { - return new PropertyAspectAdapter<Customization, Boolean>( - getSubjectHolder(), - Customization.VALIDATION_ONLY_PROPERTY) - { - @Override - protected Boolean buildValue_() { - if (this.subject.getValidationOnly() != null) { - return null; - } - return this.subject.getDefaultValidationOnly(); - } - }; - } -} diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/customization/WeavingChangeTrackingComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/customization/WeavingChangeTrackingComposite.java deleted file mode 100644 index 8f2d45b882..0000000000 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/customization/WeavingChangeTrackingComposite.java +++ /dev/null @@ -1,97 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2008, 2012 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.jpa.eclipselink.ui.internal.persistence.customization; - -import org.eclipse.jpt.common.ui.internal.JptCommonUiMessages; -import org.eclipse.jpt.common.ui.internal.widgets.Pane; -import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter; -import org.eclipse.jpt.common.utility.internal.model.value.TransformationPropertyValueModel; -import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; -import org.eclipse.jpt.common.utility.model.value.ModifiablePropertyValueModel; -import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.Customization; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.EclipseLinkHelpContextIds; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.EclipseLinkUiMessages; -import org.eclipse.osgi.util.NLS; -import org.eclipse.swt.widgets.Composite; - -/** - * WeavingChangeTrackingComposite - */ -public class WeavingChangeTrackingComposite extends Pane<Customization> -{ - /** - * Creates a new <code>WeavingChangeTrackingComposite</code>. - * - * @param parentController - * The parent container of this one - * @param parent - * The parent container - */ - public WeavingChangeTrackingComposite( - Pane<? extends Customization> parentComposite, - Composite parent) { - - super(parentComposite, parent); - } - - @Override - protected void initializeLayout(Composite container) { - - this.addTriStateCheckBoxWithDefault( - container, - EclipseLinkUiMessages.PersistenceXmlCustomizationTab_weavingChangeTrackingLabel, - this.buildWeavingChangeTrackingHolder(), - this.buildWeavingChangeTrackingStringHolder(), - EclipseLinkHelpContextIds.PERSISTENCE_CUSTOMIZATION - ); - } - - private ModifiablePropertyValueModel<Boolean> buildWeavingChangeTrackingHolder() { - return new PropertyAspectAdapter<Customization, Boolean>(getSubjectHolder(), Customization.WEAVING_CHANGE_TRACKING_PROPERTY) { - @Override - protected Boolean buildValue_() { - return this.subject.getWeavingChangeTracking(); - } - - @Override - protected void setValue_(Boolean value) { - this.subject.setWeavingChangeTracking(value); - } - }; - } - - private PropertyValueModel<String> buildWeavingChangeTrackingStringHolder() { - return new TransformationPropertyValueModel<Boolean, String>(buildDefaultWeavingChangeTrackingHolder()) { - @Override - protected String transform(Boolean value) { - if (value != null) { - String defaultStringValue = value.booleanValue() ? JptCommonUiMessages.Boolean_True : JptCommonUiMessages.Boolean_False; - return NLS.bind(EclipseLinkUiMessages.PersistenceXmlCustomizationTab_weavingChangeTrackingLabelDefault, defaultStringValue); - } - return EclipseLinkUiMessages.PersistenceXmlCustomizationTab_weavingChangeTrackingLabel; - } - }; - } - - private PropertyValueModel<Boolean> buildDefaultWeavingChangeTrackingHolder() { - return new PropertyAspectAdapter<Customization, Boolean>( - getSubjectHolder(), - Customization.WEAVING_CHANGE_TRACKING_PROPERTY) - { - @Override - protected Boolean buildValue_() { - if (this.subject.getWeavingChangeTracking() != null) { - return null; - } - return this.subject.getDefaultWeavingChangeTracking(); - } - }; - } -} diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/customization/WeavingComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/customization/WeavingComposite.java deleted file mode 100644 index d4c5c3c905..0000000000 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/customization/WeavingComposite.java +++ /dev/null @@ -1,96 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2008, 2012 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.jpa.eclipselink.ui.internal.persistence.customization; - -import java.util.Collection; -import org.eclipse.jpt.common.ui.internal.widgets.EnumFormComboViewer; -import org.eclipse.jpt.common.ui.internal.widgets.Pane; -import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.Customization; -import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.Weaving; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.EclipseLinkHelpContextIds; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.EclipseLinkUiMessages; -import org.eclipse.swt.widgets.Composite; - -/** - * WeavingComposite - */ -public class WeavingComposite extends Pane<Customization> -{ - /** - * Creates a new <code>WeavingComposite</code>. - * - * @param parentController - * The parent container of this one - * @param parent - * The parent container - */ - public WeavingComposite( - Pane<? extends Customization> parentComposite, - Composite parent) { - - super( parentComposite, parent); - } - - private EnumFormComboViewer<Customization, Weaving> addWeavingCombo(Composite container) { - return new EnumFormComboViewer<Customization, Weaving>(this, container) { - @Override - protected void addPropertyNames(Collection<String> propertyNames) { - super.addPropertyNames(propertyNames); - propertyNames.add(Customization.WEAVING_PROPERTY); - } - - @Override - protected Weaving[] getChoices() { - return Weaving.values(); - } - - @Override - protected Weaving getDefaultValue() { - return getSubject().getDefaultWeaving(); - } - - @Override - protected String displayString(Weaving value) { - switch (value) { - case true_ : - return EclipseLinkUiMessages.WeavingComposite_true_; - case false_ : - return EclipseLinkUiMessages.WeavingComposite_false_; - case static_ : - return EclipseLinkUiMessages.WeavingComposite_static_; - default : - throw new IllegalStateException(); - } - } - - @Override - protected Weaving getValue() { - return getSubject().getWeaving(); - } - - @Override - protected void setValue(Weaving value) { - getSubject().setWeaving(value); - } - }; - } - - @Override - protected void initializeLayout( Composite container) { - - this.addLabeledComposite( - container, - EclipseLinkUiMessages.PersistenceXmlCustomizationTab_weavingLabel, - this.addWeavingCombo( container), - EclipseLinkHelpContextIds.PERSISTENCE_CUSTOMIZATION - ); - } - -} diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/customization/WeavingEagerComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/customization/WeavingEagerComposite.java deleted file mode 100644 index 27c1affcbb..0000000000 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/customization/WeavingEagerComposite.java +++ /dev/null @@ -1,97 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2008, 2012 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.jpa.eclipselink.ui.internal.persistence.customization; - -import org.eclipse.jpt.common.ui.internal.JptCommonUiMessages; -import org.eclipse.jpt.common.ui.internal.widgets.Pane; -import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter; -import org.eclipse.jpt.common.utility.internal.model.value.TransformationPropertyValueModel; -import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; -import org.eclipse.jpt.common.utility.model.value.ModifiablePropertyValueModel; -import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.Customization; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.EclipseLinkHelpContextIds; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.EclipseLinkUiMessages; -import org.eclipse.osgi.util.NLS; -import org.eclipse.swt.widgets.Composite; - -/** - * WeavingEagerComposite - */ -public class WeavingEagerComposite extends Pane<Customization> -{ - /** - * Creates a new <code>WeavingEagerComposite</code>. - * - * @param parentController - * The parent container of this one - * @param parent - * The parent container - */ - public WeavingEagerComposite( - Pane<? extends Customization> parentComposite, - Composite parent) { - - super(parentComposite, parent); - } - - @Override - protected void initializeLayout(Composite container) { - - this.addTriStateCheckBoxWithDefault( - container, - EclipseLinkUiMessages.PersistenceXmlCustomizationTab_weavingEagerLabel, - this.buildWeavingEagerHolder(), - this.buildWeavingEagerStringHolder(), - EclipseLinkHelpContextIds.PERSISTENCE_CUSTOMIZATION - ); - } - - private ModifiablePropertyValueModel<Boolean> buildWeavingEagerHolder() { - return new PropertyAspectAdapter<Customization, Boolean>(getSubjectHolder(), Customization.WEAVING_EAGER_PROPERTY) { - @Override - protected Boolean buildValue_() { - return this.subject.getWeavingEager(); - } - - @Override - protected void setValue_(Boolean value) { - this.subject.setWeavingEager(value); - } - }; - } - - private PropertyValueModel<String> buildWeavingEagerStringHolder() { - return new TransformationPropertyValueModel<Boolean, String>(buildDefaultWeavingEagerHolder()) { - @Override - protected String transform(Boolean value) { - if (value != null) { - String defaultStringValue = value.booleanValue() ? JptCommonUiMessages.Boolean_True : JptCommonUiMessages.Boolean_False; - return NLS.bind(EclipseLinkUiMessages.PersistenceXmlCustomizationTab_weavingEagerLabelDefault, defaultStringValue); - } - return EclipseLinkUiMessages.PersistenceXmlCustomizationTab_weavingEagerLabel; - } - }; - } - - private PropertyValueModel<Boolean> buildDefaultWeavingEagerHolder() { - return new PropertyAspectAdapter<Customization, Boolean>( - getSubjectHolder(), - Customization.WEAVING_EAGER_PROPERTY) - { - @Override - protected Boolean buildValue_() { - if (this.subject.getWeavingEager() != null) { - return null; - } - return this.subject.getDefaultWeavingEager(); - } - }; - } -} diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/customization/WeavingFetchGroupsComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/customization/WeavingFetchGroupsComposite.java deleted file mode 100644 index 98747053dd..0000000000 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/customization/WeavingFetchGroupsComposite.java +++ /dev/null @@ -1,97 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2008, 2012 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.jpa.eclipselink.ui.internal.persistence.customization; - -import org.eclipse.jpt.common.ui.internal.JptCommonUiMessages; -import org.eclipse.jpt.common.ui.internal.widgets.Pane; -import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter; -import org.eclipse.jpt.common.utility.internal.model.value.TransformationPropertyValueModel; -import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; -import org.eclipse.jpt.common.utility.model.value.ModifiablePropertyValueModel; -import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.Customization; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.EclipseLinkHelpContextIds; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.EclipseLinkUiMessages; -import org.eclipse.osgi.util.NLS; -import org.eclipse.swt.widgets.Composite; - -/** - * WeavingFetchGroupsComposite - */ -public class WeavingFetchGroupsComposite extends Pane<Customization> -{ - /** - * Creates a new <code>WeavingFetchGroupsComposite</code>. - * - * @param parentController - * The parent container of this one - * @param parent - * The parent container - */ - public WeavingFetchGroupsComposite( - Pane<? extends Customization> parentComposite, - Composite parent) { - - super(parentComposite, parent); - } - - @Override - protected void initializeLayout(Composite container) { - - this.addTriStateCheckBoxWithDefault( - container, - EclipseLinkUiMessages.PersistenceXmlCustomizationTab_weavingFetchGroupsLabel, - this.buildWeavingFetchGroupsHolder(), - this.buildWeavingFetchGroupsStringHolder(), - EclipseLinkHelpContextIds.PERSISTENCE_CUSTOMIZATION - ); - } - - private ModifiablePropertyValueModel<Boolean> buildWeavingFetchGroupsHolder() { - return new PropertyAspectAdapter<Customization, Boolean>(getSubjectHolder(), Customization.WEAVING_FETCH_GROUPS_PROPERTY) { - @Override - protected Boolean buildValue_() { - return this.subject.getWeavingFetchGroups(); - } - - @Override - protected void setValue_(Boolean value) { - this.subject.setWeavingFetchGroups(value); - } - }; - } - - private PropertyValueModel<String> buildWeavingFetchGroupsStringHolder() { - return new TransformationPropertyValueModel<Boolean, String>(buildDefaultWeavingFetchGroupsHolder()) { - @Override - protected String transform(Boolean value) { - if (value != null) { - String defaultStringValue = value.booleanValue() ? JptCommonUiMessages.Boolean_True : JptCommonUiMessages.Boolean_False; - return NLS.bind(EclipseLinkUiMessages.PersistenceXmlCustomizationTab_weavingFetchGroupsLabelDefault, defaultStringValue); - } - return EclipseLinkUiMessages.PersistenceXmlCustomizationTab_weavingFetchGroupsLabel; - } - }; - } - - private PropertyValueModel<Boolean> buildDefaultWeavingFetchGroupsHolder() { - return new PropertyAspectAdapter<Customization, Boolean>( - getSubjectHolder(), - Customization.WEAVING_FETCH_GROUPS_PROPERTY) - { - @Override - protected Boolean buildValue_() { - if (this.subject.getWeavingFetchGroups() != null) { - return null; - } - return this.subject.getDefaultWeavingFetchGroups(); - } - }; - } -} diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/customization/WeavingInternalComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/customization/WeavingInternalComposite.java deleted file mode 100644 index 34fcf48b63..0000000000 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/customization/WeavingInternalComposite.java +++ /dev/null @@ -1,98 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2008, 2012 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.jpa.eclipselink.ui.internal.persistence.customization; - -import org.eclipse.jpt.common.ui.internal.JptCommonUiMessages; -import org.eclipse.jpt.common.ui.internal.widgets.Pane; -import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter; -import org.eclipse.jpt.common.utility.internal.model.value.TransformationPropertyValueModel; -import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; -import org.eclipse.jpt.common.utility.model.value.ModifiablePropertyValueModel; -import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.Customization; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.EclipseLinkHelpContextIds; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.EclipseLinkUiMessages; -import org.eclipse.osgi.util.NLS; -import org.eclipse.swt.widgets.Composite; - -/** - * WeavingInternalComposite - */ -public class WeavingInternalComposite extends Pane<Customization> -{ - /** - * Creates a new <code>WeavingInternalComposite</code>. - * - * @param parentController - * The parent container of this one - * @param parent - * The parent container - */ - public WeavingInternalComposite( - Pane<? extends Customization> parentComposite, - Composite parent) { - - super(parentComposite, parent); - } - - @Override - protected void initializeLayout(Composite container) { - - this.addTriStateCheckBoxWithDefault( - container, - EclipseLinkUiMessages.PersistenceXmlCustomizationTab_weavingInternalLabel, - this.buildWeavingInternalHolder(), - this.buildWeavingInternalStringHolder(), - EclipseLinkHelpContextIds.PERSISTENCE_CUSTOMIZATION - ); - } - - private ModifiablePropertyValueModel<Boolean> buildWeavingInternalHolder() { - return new PropertyAspectAdapter<Customization, Boolean>(getSubjectHolder(), Customization.WEAVING_INTERNAL_PROPERTY) { - @Override - protected Boolean buildValue_() { - return this.subject.getWeavingInternal(); - } - - @Override - protected void setValue_(Boolean value) { - this.subject.setWeavingInternal(value); - } - }; - } - - private PropertyValueModel<String> buildWeavingInternalStringHolder() { - return new TransformationPropertyValueModel<Boolean, String>(buildDefaultWeavingInternalHolder()) { - @Override - protected String transform(Boolean value) { - if (value != null) { - String defaultStringValue = value.booleanValue() ? JptCommonUiMessages.Boolean_True : JptCommonUiMessages.Boolean_False; - return NLS.bind(EclipseLinkUiMessages.PersistenceXmlCustomizationTab_weavingInternalLabelDefault, defaultStringValue); - } - return EclipseLinkUiMessages.PersistenceXmlCustomizationTab_weavingInternalLabel; - } - }; - } - - - private PropertyValueModel<Boolean> buildDefaultWeavingInternalHolder() { - return new PropertyAspectAdapter<Customization, Boolean>( - getSubjectHolder(), - Customization.WEAVING_INTERNAL_PROPERTY) - { - @Override - protected Boolean buildValue_() { - if (this.subject.getWeavingInternal() != null) { - return null; - } - return this.subject.getDefaultWeavingInternal(); - } - }; - } -} diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/customization/WeavingLazyComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/customization/WeavingLazyComposite.java deleted file mode 100644 index 6080b37e29..0000000000 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/customization/WeavingLazyComposite.java +++ /dev/null @@ -1,97 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2008, 2012 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.jpa.eclipselink.ui.internal.persistence.customization; - -import org.eclipse.jpt.common.ui.internal.JptCommonUiMessages; -import org.eclipse.jpt.common.ui.internal.widgets.Pane; -import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter; -import org.eclipse.jpt.common.utility.internal.model.value.TransformationPropertyValueModel; -import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; -import org.eclipse.jpt.common.utility.model.value.ModifiablePropertyValueModel; -import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.Customization; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.EclipseLinkHelpContextIds; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.EclipseLinkUiMessages; -import org.eclipse.osgi.util.NLS; -import org.eclipse.swt.widgets.Composite; - -/** - * WeavingLazyComposite - */ -public class WeavingLazyComposite extends Pane<Customization> -{ - /** - * Creates a new <code>WeavingLazyComposite</code>. - * - * @param parentController - * The parent container of this one - * @param parent - * The parent container - */ - public WeavingLazyComposite( - Pane<? extends Customization> parentComposite, - Composite parent) { - - super(parentComposite, parent); - } - - @Override - protected void initializeLayout(Composite container) { - - this.addTriStateCheckBoxWithDefault( - container, - EclipseLinkUiMessages.PersistenceXmlCustomizationTab_weavingLazyLabel, - this.buildWeavingLazyHolder(), - this.buildWeavingLazyStringHolder(), - EclipseLinkHelpContextIds.PERSISTENCE_CUSTOMIZATION - ); - } - - private ModifiablePropertyValueModel<Boolean> buildWeavingLazyHolder() { - return new PropertyAspectAdapter<Customization, Boolean>(getSubjectHolder(), Customization.WEAVING_LAZY_PROPERTY) { - @Override - protected Boolean buildValue_() { - return this.subject.getWeavingLazy(); - } - - @Override - protected void setValue_(Boolean value) { - this.subject.setWeavingLazy(value); - } - }; - } - - private PropertyValueModel<String> buildWeavingLazyStringHolder() { - return new TransformationPropertyValueModel<Boolean, String>(buildDefaultWeavingLazyHolder()) { - @Override - protected String transform(Boolean value) { - if (value != null) { - String defaultStringValue = value.booleanValue() ? JptCommonUiMessages.Boolean_True : JptCommonUiMessages.Boolean_False; - return NLS.bind(EclipseLinkUiMessages.PersistenceXmlCustomizationTab_weavingLazyLabelDefault, defaultStringValue); - } - return EclipseLinkUiMessages.PersistenceXmlCustomizationTab_weavingLazyLabel; - } - }; - } - - private PropertyValueModel<Boolean> buildDefaultWeavingLazyHolder() { - return new PropertyAspectAdapter<Customization, Boolean>( - getSubjectHolder(), - Customization.WEAVING_LAZY_PROPERTY) - { - @Override - protected Boolean buildValue_() { - if (this.subject.getWeavingLazy() != null) { - return null; - } - return this.subject.getDefaultWeavingLazy(); - } - }; - } -} diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/customization/WeavingPropertiesComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/customization/WeavingPropertiesComposite.java index f4de4eaeba..7929792a8c 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/customization/WeavingPropertiesComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/customization/WeavingPropertiesComposite.java @@ -1,5 +1,5 @@ /******************************************************************************* -* Copyright (c) 2010, 2011 Oracle. All rights reserved. +* Copyright (c) 2010, 2012 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. @@ -9,9 +9,21 @@ *******************************************************************************/ package org.eclipse.jpt.jpa.eclipselink.ui.internal.persistence.customization; +import java.util.Collection; +import org.eclipse.jpt.common.ui.internal.JptCommonUiMessages; +import org.eclipse.jpt.common.ui.internal.widgets.EnumFormComboViewer; import org.eclipse.jpt.common.ui.internal.widgets.Pane; +import org.eclipse.jpt.common.ui.internal.widgets.TriStateCheckBox; +import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter; +import org.eclipse.jpt.common.utility.internal.model.value.TransformationPropertyValueModel; +import org.eclipse.jpt.common.utility.model.value.ModifiablePropertyValueModel; +import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.Customization; +import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.Weaving; +import org.eclipse.jpt.jpa.eclipselink.ui.internal.EclipseLinkHelpContextIds; import org.eclipse.jpt.jpa.eclipselink.ui.internal.EclipseLinkUiMessages; +import org.eclipse.osgi.util.NLS; +import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; /** @@ -26,31 +38,351 @@ public class WeavingPropertiesComposite extends Pane<Customization> } @Override - protected void initializeLayout(Composite parent) { - - Composite weavingGroup = this.addTitledGroup( - this.addSubPane(parent, 10), - EclipseLinkUiMessages.PersistenceXmlCustomizationTab_weavingPropertiesGroupBox - ); + protected Composite addComposite(Composite parent) { + return this.addSubPane(parent, 2, 0, 0, 0, 0); + } + @Override + protected void initializeLayout(Composite container) { // Weaving - new WeavingComposite(this, weavingGroup); + this.addLabel(container, EclipseLinkUiMessages.PersistenceXmlCustomizationTab_weavingLabel); + this.addWeavingCombo(container); // Weaving Lazy - new WeavingLazyComposite(this, weavingGroup); + TriStateCheckBox weavingLazyCheckBox = this.addTriStateCheckBoxWithDefault( + container, + EclipseLinkUiMessages.PersistenceXmlCustomizationTab_weavingLazyLabel, + this.buildWeavingLazyHolder(), + this.buildWeavingLazyStringHolder(), + EclipseLinkHelpContextIds.PERSISTENCE_CUSTOMIZATION + ); + GridData gridData = new GridData(); + gridData.horizontalSpan = 2; + weavingLazyCheckBox.getCheckBox().setLayoutData(gridData); // Weaving Fetch Groups - new WeavingFetchGroupsComposite(this, weavingGroup); + TriStateCheckBox weavingFetchGroupsCheckBox = this.addTriStateCheckBoxWithDefault( + container, + EclipseLinkUiMessages.PersistenceXmlCustomizationTab_weavingFetchGroupsLabel, + this.buildWeavingFetchGroupsHolder(), + this.buildWeavingFetchGroupsStringHolder(), + EclipseLinkHelpContextIds.PERSISTENCE_CUSTOMIZATION + ); + gridData = new GridData(); + gridData.horizontalSpan = 2; + weavingFetchGroupsCheckBox.getCheckBox().setLayoutData(gridData); // Weaving Internal - new WeavingInternalComposite(this, weavingGroup); + TriStateCheckBox weavingInternalCheckBox = this.addTriStateCheckBoxWithDefault( + container, + EclipseLinkUiMessages.PersistenceXmlCustomizationTab_weavingInternalLabel, + this.buildWeavingInternalHolder(), + this.buildWeavingInternalStringHolder(), + EclipseLinkHelpContextIds.PERSISTENCE_CUSTOMIZATION + ); + gridData = new GridData(); + gridData.horizontalSpan = 2; + weavingInternalCheckBox.getCheckBox().setLayoutData(gridData); // Weaving Eager - new WeavingEagerComposite(this, weavingGroup); + TriStateCheckBox weavingEagerCheckBox = this.addTriStateCheckBoxWithDefault( + container, + EclipseLinkUiMessages.PersistenceXmlCustomizationTab_weavingEagerLabel, + this.buildWeavingEagerHolder(), + this.buildWeavingEagerStringHolder(), + EclipseLinkHelpContextIds.PERSISTENCE_CUSTOMIZATION + ); + gridData = new GridData(); + gridData.horizontalSpan = 2; + weavingEagerCheckBox.getCheckBox().setLayoutData(gridData); // Weaving Change Tracking - new WeavingChangeTrackingComposite(this, weavingGroup); + TriStateCheckBox weavingChangeTrackingCheckBox = this.addTriStateCheckBoxWithDefault( + container, + EclipseLinkUiMessages.PersistenceXmlCustomizationTab_weavingChangeTrackingLabel, + this.buildWeavingChangeTrackingHolder(), + this.buildWeavingChangeTrackingStringHolder(), + EclipseLinkHelpContextIds.PERSISTENCE_CUSTOMIZATION + ); + gridData = new GridData(); + gridData.horizontalSpan = 2; + weavingChangeTrackingCheckBox.getCheckBox().setLayoutData(gridData); + } + + // ********* weaving ********** + + private EnumFormComboViewer<Customization, Weaving> addWeavingCombo(Composite container) { + return new EnumFormComboViewer<Customization, Weaving>(this, container) { + @Override + protected void addPropertyNames(Collection<String> propertyNames) { + super.addPropertyNames(propertyNames); + propertyNames.add(Customization.WEAVING_PROPERTY); + } + + @Override + protected Weaving[] getChoices() { + return Weaving.values(); + } + + @Override + protected Weaving getDefaultValue() { + return getSubject().getDefaultWeaving(); + } + + @Override + protected String displayString(Weaving value) { + switch (value) { + case true_ : + return EclipseLinkUiMessages.WeavingComposite_true_; + case false_ : + return EclipseLinkUiMessages.WeavingComposite_false_; + case static_ : + return EclipseLinkUiMessages.WeavingComposite_static_; + default : + throw new IllegalStateException(); + } + } + + @Override + protected Weaving getValue() { + return getSubject().getWeaving(); + } + + @Override + protected void setValue(Weaving value) { + getSubject().setWeaving(value); + } + + @Override + protected String getHelpId() { + return EclipseLinkHelpContextIds.PERSISTENCE_CUSTOMIZATION; + } + }; + } + + + // ********* weaving lazy ********** + + private ModifiablePropertyValueModel<Boolean> buildWeavingLazyHolder() { + return new PropertyAspectAdapter<Customization, Boolean>(getSubjectHolder(), Customization.WEAVING_LAZY_PROPERTY) { + @Override + protected Boolean buildValue_() { + return this.subject.getWeavingLazy(); + } + + @Override + protected void setValue_(Boolean value) { + this.subject.setWeavingLazy(value); + } + }; + } + + private PropertyValueModel<String> buildWeavingLazyStringHolder() { + return new TransformationPropertyValueModel<Boolean, String>(buildDefaultWeavingLazyHolder()) { + @Override + protected String transform(Boolean value) { + if (value != null) { + String defaultStringValue = value.booleanValue() ? JptCommonUiMessages.Boolean_True : JptCommonUiMessages.Boolean_False; + return NLS.bind(EclipseLinkUiMessages.PersistenceXmlCustomizationTab_weavingLazyLabelDefault, defaultStringValue); + } + return EclipseLinkUiMessages.PersistenceXmlCustomizationTab_weavingLazyLabel; + } + }; + } + + private PropertyValueModel<Boolean> buildDefaultWeavingLazyHolder() { + return new PropertyAspectAdapter<Customization, Boolean>( + getSubjectHolder(), + Customization.WEAVING_LAZY_PROPERTY) + { + @Override + protected Boolean buildValue_() { + if (this.subject.getWeavingLazy() != null) { + return null; + } + return this.subject.getDefaultWeavingLazy(); + } + }; + } + + + // ********* weaving fetch groups ********** + + private ModifiablePropertyValueModel<Boolean> buildWeavingFetchGroupsHolder() { + return new PropertyAspectAdapter<Customization, Boolean>(getSubjectHolder(), Customization.WEAVING_FETCH_GROUPS_PROPERTY) { + @Override + protected Boolean buildValue_() { + return this.subject.getWeavingFetchGroups(); + } + @Override + protected void setValue_(Boolean value) { + this.subject.setWeavingFetchGroups(value); + } + }; } + + private PropertyValueModel<String> buildWeavingFetchGroupsStringHolder() { + return new TransformationPropertyValueModel<Boolean, String>(buildDefaultWeavingFetchGroupsHolder()) { + @Override + protected String transform(Boolean value) { + if (value != null) { + String defaultStringValue = value.booleanValue() ? JptCommonUiMessages.Boolean_True : JptCommonUiMessages.Boolean_False; + return NLS.bind(EclipseLinkUiMessages.PersistenceXmlCustomizationTab_weavingFetchGroupsLabelDefault, defaultStringValue); + } + return EclipseLinkUiMessages.PersistenceXmlCustomizationTab_weavingFetchGroupsLabel; + } + }; + } + + private PropertyValueModel<Boolean> buildDefaultWeavingFetchGroupsHolder() { + return new PropertyAspectAdapter<Customization, Boolean>( + getSubjectHolder(), + Customization.WEAVING_FETCH_GROUPS_PROPERTY) + { + @Override + protected Boolean buildValue_() { + if (this.subject.getWeavingFetchGroups() != null) { + return null; + } + return this.subject.getDefaultWeavingFetchGroups(); + } + }; + } + + + // ********* weaving internal ********** + + private ModifiablePropertyValueModel<Boolean> buildWeavingInternalHolder() { + return new PropertyAspectAdapter<Customization, Boolean>(getSubjectHolder(), Customization.WEAVING_INTERNAL_PROPERTY) { + @Override + protected Boolean buildValue_() { + return this.subject.getWeavingInternal(); + } + + @Override + protected void setValue_(Boolean value) { + this.subject.setWeavingInternal(value); + } + }; + } + + private PropertyValueModel<String> buildWeavingInternalStringHolder() { + return new TransformationPropertyValueModel<Boolean, String>(buildDefaultWeavingInternalHolder()) { + @Override + protected String transform(Boolean value) { + if (value != null) { + String defaultStringValue = value.booleanValue() ? JptCommonUiMessages.Boolean_True : JptCommonUiMessages.Boolean_False; + return NLS.bind(EclipseLinkUiMessages.PersistenceXmlCustomizationTab_weavingInternalLabelDefault, defaultStringValue); + } + return EclipseLinkUiMessages.PersistenceXmlCustomizationTab_weavingInternalLabel; + } + }; + } + + + private PropertyValueModel<Boolean> buildDefaultWeavingInternalHolder() { + return new PropertyAspectAdapter<Customization, Boolean>( + getSubjectHolder(), + Customization.WEAVING_INTERNAL_PROPERTY) + { + @Override + protected Boolean buildValue_() { + if (this.subject.getWeavingInternal() != null) { + return null; + } + return this.subject.getDefaultWeavingInternal(); + } + }; + } + + + // ********* weaving eager ********** + private ModifiablePropertyValueModel<Boolean> buildWeavingEagerHolder() { + return new PropertyAspectAdapter<Customization, Boolean>(getSubjectHolder(), Customization.WEAVING_EAGER_PROPERTY) { + @Override + protected Boolean buildValue_() { + return this.subject.getWeavingEager(); + } + + @Override + protected void setValue_(Boolean value) { + this.subject.setWeavingEager(value); + } + }; + } + + private PropertyValueModel<String> buildWeavingEagerStringHolder() { + return new TransformationPropertyValueModel<Boolean, String>(buildDefaultWeavingEagerHolder()) { + @Override + protected String transform(Boolean value) { + if (value != null) { + String defaultStringValue = value.booleanValue() ? JptCommonUiMessages.Boolean_True : JptCommonUiMessages.Boolean_False; + return NLS.bind(EclipseLinkUiMessages.PersistenceXmlCustomizationTab_weavingEagerLabelDefault, defaultStringValue); + } + return EclipseLinkUiMessages.PersistenceXmlCustomizationTab_weavingEagerLabel; + } + }; + } + + private PropertyValueModel<Boolean> buildDefaultWeavingEagerHolder() { + return new PropertyAspectAdapter<Customization, Boolean>( + getSubjectHolder(), + Customization.WEAVING_EAGER_PROPERTY) + { + @Override + protected Boolean buildValue_() { + if (this.subject.getWeavingEager() != null) { + return null; + } + return this.subject.getDefaultWeavingEager(); + } + }; + } + + + // ********* weaving change tracking ********** + + private ModifiablePropertyValueModel<Boolean> buildWeavingChangeTrackingHolder() { + return new PropertyAspectAdapter<Customization, Boolean>(getSubjectHolder(), Customization.WEAVING_CHANGE_TRACKING_PROPERTY) { + @Override + protected Boolean buildValue_() { + return this.subject.getWeavingChangeTracking(); + } + + @Override + protected void setValue_(Boolean value) { + this.subject.setWeavingChangeTracking(value); + } + }; + } + + private PropertyValueModel<String> buildWeavingChangeTrackingStringHolder() { + return new TransformationPropertyValueModel<Boolean, String>(buildDefaultWeavingChangeTrackingHolder()) { + @Override + protected String transform(Boolean value) { + if (value != null) { + String defaultStringValue = value.booleanValue() ? JptCommonUiMessages.Boolean_True : JptCommonUiMessages.Boolean_False; + return NLS.bind(EclipseLinkUiMessages.PersistenceXmlCustomizationTab_weavingChangeTrackingLabelDefault, defaultStringValue); + } + return EclipseLinkUiMessages.PersistenceXmlCustomizationTab_weavingChangeTrackingLabel; + } + }; + } + + private PropertyValueModel<Boolean> buildDefaultWeavingChangeTrackingHolder() { + return new PropertyAspectAdapter<Customization, Boolean>( + getSubjectHolder(), + Customization.WEAVING_CHANGE_TRACKING_PROPERTY) + { + @Override + protected Boolean buildValue_() { + if (this.subject.getWeavingChangeTracking() != null) { + return null; + } + return this.subject.getDefaultWeavingChangeTracking(); + } + }; + } }
\ No newline at end of file diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/general/EclipseLinkPersistenceUnitGeneralComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/general/EclipseLinkPersistenceUnitGeneralComposite.java deleted file mode 100644 index 883a4b3959..0000000000 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/general/EclipseLinkPersistenceUnitGeneralComposite.java +++ /dev/null @@ -1,68 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2008, 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.jpa.eclipselink.ui.internal.persistence.general; - -import org.eclipse.jpt.common.ui.WidgetFactory; -import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; -import org.eclipse.jpt.jpa.core.context.persistence.PersistenceUnit; -import org.eclipse.jpt.jpa.ui.internal.persistence.JptUiPersistenceMessages; -import org.eclipse.jpt.jpa.ui.internal.persistence.details.PersistenceUnitGeneralComposite; -import org.eclipse.swt.widgets.Composite; - -/** - * EclipseLinkPersistenceUnitGeneralComposite - */ -public class EclipseLinkPersistenceUnitGeneralComposite - extends PersistenceUnitGeneralComposite -{ - // ********** constructors ********** - public EclipseLinkPersistenceUnitGeneralComposite( - PropertyValueModel<PersistenceUnit> subjectHolder, - Composite container, - WidgetFactory widgetFactory) { - super(subjectHolder, container, widgetFactory); - } - - // ********** initialization ********** - @Override - protected void initializeLayout(Composite container) { - this.initializeGeneralPane(container); - this.initializeMappedClassesPane(container); - this.initializeJPAMappingDescriptorsPane(container); - this.initializeJarFilesPane(container); - } - - protected void initializeJPAMappingDescriptorsPane(Composite container) { - - container = addCollapsibleSection( - container, - JptUiPersistenceMessages.PersistenceUnitGeneralComposite_jpaMappingDescriptors, - JptUiPersistenceMessages.PersistenceUnitGeneralComposite_jpaMappingDescriptors_description - ); - - updateGridData(container); - updateGridData(container.getParent()); - - new EclipseLinkPersistenceUnitMappingFilesComposite(this, container); - } - - protected void initializeJarFilesPane(Composite container) { - - container = addCollapsibleSection( - container, - JptUiPersistenceMessages.PersistenceUnitGeneralComposite_jarFiles - ); - - updateGridData(container); - updateGridData(container.getParent()); - - new EclipseLinkPersistenceUnitJarFilesComposite(this, container); - } -}
\ No newline at end of file diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/general/EclipseLinkPersistenceUnitGeneralTab.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/general/EclipseLinkPersistenceUnitGeneralTab.java new file mode 100644 index 0000000000..3877d46bfa --- /dev/null +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/general/EclipseLinkPersistenceUnitGeneralTab.java @@ -0,0 +1,42 @@ +/******************************************************************************* + * Copyright (c) 2008, 2012 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.jpa.eclipselink.ui.internal.persistence.general; + +import org.eclipse.jpt.common.ui.WidgetFactory; +import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; +import org.eclipse.jpt.jpa.core.context.persistence.PersistenceUnit; +import org.eclipse.jpt.jpa.ui.internal.persistence.PersistenceUnitGeneralTab; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; + +/** + * EclipseLinkPersistenceUnitGeneralTab + */ +public class EclipseLinkPersistenceUnitGeneralTab + extends PersistenceUnitGeneralTab +{ + // ********** constructors ********** + public EclipseLinkPersistenceUnitGeneralTab( + PropertyValueModel<PersistenceUnit> subjectHolder, + Composite container, + WidgetFactory widgetFactory) { + super(subjectHolder, container, widgetFactory); + } + + @Override + protected Control buildMappingFilesComposite(Composite parent) { + return new EclipseLinkPersistenceUnitMappingFilesComposite(this, parent).getControl(); + } + + @Override + protected Control buildJarFilesComposite(Composite parent) { + return new EclipseLinkPersistenceUnitJarFilesComposite(this, parent).getControl(); + } +}
\ No newline at end of file diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/general/EclipseLinkPersistenceUnitJarFilesComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/general/EclipseLinkPersistenceUnitJarFilesComposite.java index 25a7415cc5..52913277ca 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/general/EclipseLinkPersistenceUnitJarFilesComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/general/EclipseLinkPersistenceUnitJarFilesComposite.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2009 Oracle. + * Copyright (c) 2009, 2012 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 @@ -14,9 +14,9 @@ import org.eclipse.core.resources.IFile; import org.eclipse.jpt.common.ui.internal.widgets.Pane; import org.eclipse.jpt.jpa.core.JptJpaCorePlugin; import org.eclipse.jpt.jpa.core.context.persistence.PersistenceUnit; -import org.eclipse.jpt.jpa.ui.internal.persistence.details.ArchiveFileSelectionDialog; -import org.eclipse.jpt.jpa.ui.internal.persistence.details.PersistenceUnitJarFilesComposite; -import org.eclipse.jpt.jpa.ui.internal.persistence.details.ArchiveFileSelectionDialog.DeploymentPathCalculator; +import org.eclipse.jpt.jpa.ui.internal.persistence.ArchiveFileSelectionDialog; +import org.eclipse.jpt.jpa.ui.internal.persistence.PersistenceUnitJarFilesComposite; +import org.eclipse.jpt.jpa.ui.internal.persistence.ArchiveFileSelectionDialog.DeploymentPathCalculator; import org.eclipse.swt.widgets.Composite; public class EclipseLinkPersistenceUnitJarFilesComposite @@ -45,9 +45,7 @@ public class EclipseLinkPersistenceUnitJarFilesComposite if (JptJpaCorePlugin.projectHasWebFacet(file.getProject())) { return "../" + baseDeploymentPath; } - else { - return baseDeploymentPath; - } + return baseDeploymentPath; } } } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/general/EclipseLinkPersistenceUnitMappingFilesComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/general/EclipseLinkPersistenceUnitMappingFilesComposite.java index 575456e430..dc483c06a9 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/general/EclipseLinkPersistenceUnitMappingFilesComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/general/EclipseLinkPersistenceUnitMappingFilesComposite.java @@ -21,8 +21,8 @@ import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.EclipseLinkPersi import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.GeneralProperties; import org.eclipse.jpt.jpa.eclipselink.ui.internal.EclipseLinkUiMessages; import org.eclipse.jpt.jpa.ui.internal.JpaHelpContextIds; -import org.eclipse.jpt.jpa.ui.internal.persistence.details.PersistenceUnitGeneralComposite; -import org.eclipse.jpt.jpa.ui.internal.persistence.details.PersistenceUnitMappingFilesComposite; +import org.eclipse.jpt.jpa.ui.internal.persistence.PersistenceUnitGeneralTab; +import org.eclipse.jpt.jpa.ui.internal.persistence.PersistenceUnitMappingFilesComposite; import org.eclipse.osgi.util.NLS; import org.eclipse.swt.widgets.Composite; @@ -38,7 +38,7 @@ import org.eclipse.swt.widgets.Composite; * -----------------------------------------------------------------------------</pre> * * @see PersistenceUnit - * @see PersistenceUnitGeneralComposite - The parent container + * @see PersistenceUnitGeneralTab - The parent container * @see AddRemoveListPane * * @version 2.0 diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/logging/EclipseLinkLoggingComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/logging/EclipseLinkLoggingComposite.java deleted file mode 100644 index 5c16de6981..0000000000 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/logging/EclipseLinkLoggingComposite.java +++ /dev/null @@ -1,83 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2008, 2011 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.jpa.eclipselink.ui.internal.persistence.logging; - -import org.eclipse.jpt.common.ui.internal.widgets.Pane; -import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.Logging; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.EclipseLinkUiMessages; -import org.eclipse.swt.SWT; -import org.eclipse.swt.layout.GridData; -import org.eclipse.swt.layout.GridLayout; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.ui.forms.widgets.ExpandableComposite; -import org.eclipse.ui.forms.widgets.Section; - -/** - * EclipseLinkLoggingComposite - */ -public class EclipseLinkLoggingComposite<T extends Logging> - extends Pane<T> -{ - public EclipseLinkLoggingComposite( - Pane<T> subjectHolder, - Composite container) { - super(subjectHolder, container, false); - } - - @Override - protected void initializeLayout(Composite parent) { - Section section = getWidgetFactory().createSection(parent, SWT.FLAT | ExpandableComposite.TITLE_BAR | Section.DESCRIPTION); - section.setText(EclipseLinkUiMessages.PersistenceXmlLoggingTab_sectionTitle); - section.setDescription(EclipseLinkUiMessages.PersistenceXmlLoggingTab_sectionDescription); - Composite composite = getWidgetFactory().createComposite(section); - composite.setLayout(new GridLayout(1, false)); - section.setClient(composite); - this.updateGridData(composite); - this.updateGridData(composite.getParent()); - - // LoggingLevel: - new LoggingLevelComposite(this, composite); - - // Boolean properties group - this.logPropertiesComposite(composite); - - // LoggingFile: - new LoggingFileLocationComposite(this, composite); - - // Logger: - new LoggerComposite(this, composite); - - return; - } - - protected void logPropertiesComposite(Composite parent) { - - // Timestamp: - new TimestampComposite(this, parent); - - // Thread: - new ThreadComposite(this, parent); - - // Session: - new SessionComposite(this, parent); - - // Exceptions: - new ExceptionsComposite(this, parent); - } - - private void updateGridData(Composite container) { - GridData gridData = new GridData(); - gridData.grabExcessHorizontalSpace = true; - gridData.grabExcessVerticalSpace = true; - gridData.horizontalAlignment = SWT.FILL; - gridData.verticalAlignment = SWT.FILL; - container.setLayoutData(gridData); - } -} diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/logging/ExceptionsComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/logging/ExceptionsComposite.java deleted file mode 100644 index 97b0105d43..0000000000 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/logging/ExceptionsComposite.java +++ /dev/null @@ -1,97 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2008, 2012 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.jpa.eclipselink.ui.internal.persistence.logging; - -import org.eclipse.jpt.common.ui.internal.JptCommonUiMessages; -import org.eclipse.jpt.common.ui.internal.widgets.Pane; -import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter; -import org.eclipse.jpt.common.utility.internal.model.value.TransformationPropertyValueModel; -import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; -import org.eclipse.jpt.common.utility.model.value.ModifiablePropertyValueModel; -import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.Logging; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.EclipseLinkHelpContextIds; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.EclipseLinkUiMessages; -import org.eclipse.osgi.util.NLS; -import org.eclipse.swt.widgets.Composite; - -/** - * ExceptionsComposite - */ -public class ExceptionsComposite extends Pane<Logging> -{ - /** - * Creates a new <code>ExceptionsComposite</code>. - * - * @param parentController - * The parent container of this one - * @param parent - * The parent container - */ - public ExceptionsComposite( - Pane<? extends Logging> parentComposite, - Composite parent) { - - super(parentComposite, parent); - } - - @Override - protected void initializeLayout(Composite container) { - - this.addTriStateCheckBoxWithDefault( - container, - EclipseLinkUiMessages.PersistenceXmlLoggingTab_exceptionsLabel, - this.buildExceptionsHolder(), - this.buildExceptionsStringHolder(), - EclipseLinkHelpContextIds.PERSISTENCE_LOGGING_EXCEPTIONS - ); - } - - private ModifiablePropertyValueModel<Boolean> buildExceptionsHolder() { - return new PropertyAspectAdapter<Logging, Boolean>(getSubjectHolder(), Logging.EXCEPTIONS_PROPERTY) { - @Override - protected Boolean buildValue_() { - return this.subject.getExceptions(); - } - - @Override - protected void setValue_(Boolean value) { - this.subject.setExceptions(value); - } - }; - } - - private PropertyValueModel<String> buildExceptionsStringHolder() { - return new TransformationPropertyValueModel<Boolean, String>(buildDefaultExceptionsHolder()) { - @Override - protected String transform(Boolean value) { - if (value != null) { - String defaultStringValue = value.booleanValue() ? JptCommonUiMessages.Boolean_True : JptCommonUiMessages.Boolean_False; - return NLS.bind(EclipseLinkUiMessages.PersistenceXmlLoggingTab_exceptionsLabelDefault, defaultStringValue); - } - return EclipseLinkUiMessages.PersistenceXmlLoggingTab_exceptionsLabel; - } - }; - } - - private PropertyValueModel<Boolean> buildDefaultExceptionsHolder() { - return new PropertyAspectAdapter<Logging, Boolean>( - getSubjectHolder(), - Logging.EXCEPTIONS_PROPERTY) - { - @Override - protected Boolean buildValue_() { - if (this.subject.getExceptions() != null) { - return null; - } - return this.subject.getDefaultExceptions(); - } - }; - } -} diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/logging/LoggingFileLocationComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/logging/LoggingFileLocationComposite.java deleted file mode 100644 index 052fdf5be9..0000000000 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/logging/LoggingFileLocationComposite.java +++ /dev/null @@ -1,98 +0,0 @@ -/******************************************************************************* -* Copyright (c) 2008, 2012 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.jpa.eclipselink.ui.internal.persistence.logging; - -import org.eclipse.jpt.common.ui.internal.JptCommonUiMessages; -import org.eclipse.jpt.common.ui.internal.widgets.FileChooserComboPane; -import org.eclipse.jpt.common.ui.internal.widgets.Pane; -import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter; -import org.eclipse.jpt.common.utility.model.value.ModifiablePropertyValueModel; -import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.Logging; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.EclipseLinkUiMessages; -import org.eclipse.osgi.util.NLS; -import org.eclipse.swt.widgets.Composite; - -/** - * LoggingFileLocationComposite - */ -public class LoggingFileLocationComposite extends Pane<Logging> -{ - public LoggingFileLocationComposite(Pane<? extends Logging> parentPane, - Composite parent) { - - super(parentPane, parent); - } - - @Override - protected void initializeLayout(Composite container) { - - new FileChooserComboPane<Logging>(this, container) { - - @Override - protected ModifiablePropertyValueModel<String> buildTextHolder() { - return new PropertyAspectAdapter<Logging, String>( - getSubjectHolder(), Logging.LOG_FILE_LOCATION_PROPERTY) { - @Override - protected String buildValue_() { - - String name = subject.getLogFileLocation(); - if (name == null) { - name = defaultValue(subject); - } - return name; - } - - @Override - protected void setValue_(String value) { - - if (defaultValue(subject).equals(value)) { - value = null; - } - subject.setLogFileLocation(value); - } - }; - } - - private String defaultValue(Logging subject) { - String defaultValue = subject.getDefaultLogFileLocation(); - - if (defaultValue != null) { - return NLS.bind( - JptCommonUiMessages.DefaultWithOneParam, - defaultValue - ); - } - else { - return this.getDefaultString(); - } - } - - @Override - protected String getDefaultString() { - return EclipseLinkUiMessages.PersistenceXmlLoggingTab_defaultStdout; - } - - @Override - protected String getDialogTitle() { - return EclipseLinkUiMessages.LoggingFileLocationComposite_dialogTitle; - } - - @Override - protected String getLabelText() { - return EclipseLinkUiMessages.PersistenceXmlLoggingTab_loggingFileLabel; - } - - @Override - protected String getProjectPath() { - return this.getSubject().getJpaProject().getProject().getLocation().toString(); - } - }; - } -} diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/logging/LoggingLevelComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/logging/LoggingLevelComposite.java deleted file mode 100644 index 9af650bc97..0000000000 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/logging/LoggingLevelComposite.java +++ /dev/null @@ -1,111 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2008, 2012 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.jpa.eclipselink.ui.internal.persistence.logging; - -import java.util.Collection; -import org.eclipse.jpt.common.ui.internal.widgets.EnumFormComboViewer; -import org.eclipse.jpt.common.ui.internal.widgets.Pane; -import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.Logging; -import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.LoggingLevel; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.EclipseLinkHelpContextIds; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.EclipseLinkUiMessages; -import org.eclipse.swt.widgets.Composite; - -/** - * LoggingLevelComposite - */ -public class LoggingLevelComposite extends Pane<Logging> -{ - /** - * Creates a new <code>LoggingLevelComposite</code>. - * - * @param parentController - * The parent container of this one - * @param parent - * The parent container - */ - public LoggingLevelComposite( - Pane<? extends Logging> parentComposite, - Composite parent) { - - super(parentComposite, parent); - } - - private EnumFormComboViewer<Logging, LoggingLevel> addLoggingLevelCombo(Composite container) { - return new EnumFormComboViewer<Logging, LoggingLevel>(this, container) { - @Override - protected void addPropertyNames(Collection<String> propertyNames) { - super.addPropertyNames(propertyNames); - propertyNames.add(Logging.LEVEL_PROPERTY); - } - - @Override - protected LoggingLevel[] getChoices() { - return LoggingLevel.values(); - } - - @Override - protected boolean sortChoices() { - return false; - } - - @Override - protected LoggingLevel getDefaultValue() { - return this.getSubject().getDefaultLevel(); - } - - @Override - protected String displayString(LoggingLevel value) { - switch (value) { - case all : - return EclipseLinkUiMessages.LoggingLevelComposite_all; - case config : - return EclipseLinkUiMessages.LoggingLevelComposite_config; - case fine : - return EclipseLinkUiMessages.LoggingLevelComposite_fine; - case finer : - return EclipseLinkUiMessages.LoggingLevelComposite_finer; - case finest : - return EclipseLinkUiMessages.LoggingLevelComposite_finest; - case info : - return EclipseLinkUiMessages.LoggingLevelComposite_info; - case off : - return EclipseLinkUiMessages.LoggingLevelComposite_off; - case severe : - return EclipseLinkUiMessages.LoggingLevelComposite_severe; - case warning : - return EclipseLinkUiMessages.LoggingLevelComposite_warning; - default : - throw new IllegalStateException(); - } - } - - @Override - protected LoggingLevel getValue() { - return this.getSubject().getLevel(); - } - - @Override - protected void setValue(LoggingLevel value) { - this.getSubject().setLevel(value); - } - }; - } - - @Override - protected void initializeLayout(Composite container) { - this.addLabeledComposite( - container, - EclipseLinkUiMessages.PersistenceXmlLoggingTab_loggingLevelLabel, - this.addLoggingLevelCombo(container), - EclipseLinkHelpContextIds.PERSISTENCE_LOGGING_LEVEL - ); - } -} diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/logging/PersistenceXmlLoggingTab.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/logging/PersistenceXmlLoggingTab.java deleted file mode 100644 index c7eb00aa8d..0000000000 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/logging/PersistenceXmlLoggingTab.java +++ /dev/null @@ -1,84 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2007, 2011 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.jpa.eclipselink.ui.internal.persistence.logging; - -import org.eclipse.jface.resource.ImageDescriptor; -import org.eclipse.jpt.common.ui.WidgetFactory; -import org.eclipse.jpt.common.ui.internal.widgets.Pane; -import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; -import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.Logging; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.EclipseLinkHelpContextIds; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.EclipseLinkUiMessages; -import org.eclipse.jpt.jpa.ui.details.JpaPageComposite; -import org.eclipse.swt.SWT; -import org.eclipse.swt.layout.GridData; -import org.eclipse.swt.layout.GridLayout; -import org.eclipse.swt.widgets.Composite; - -/** - * PersistenceXmlLoggingTab - */ -public class PersistenceXmlLoggingTab<T extends Logging> - extends Pane<T> - implements JpaPageComposite -{ - // ********** constructors/initialization ********** - public PersistenceXmlLoggingTab( - PropertyValueModel<T> subjectHolder, - Composite parent, - WidgetFactory widgetFactory) { - - super(subjectHolder, parent, widgetFactory); - } - - @Override - protected void initializeLayout(Composite container) { - new EclipseLinkLoggingComposite<T>(this, container); - } - - // ********** JpaPageComposite implementation ********** - - public String getHelpID() { - return EclipseLinkHelpContextIds.PERSISTENCE_LOGGING; - } - - public ImageDescriptor getPageImageDescriptor() { - return null; - } - - public String getPageText() { - return EclipseLinkUiMessages.PersistenceXmlLoggingTab_title; - } - - // ********** Layout ********** - @Override - protected Composite addContainer(Composite parent) { - GridLayout layout = new GridLayout(1, true); - layout.marginHeight = 0; - layout.marginWidth = 0; - layout.marginTop = 0; - layout.marginLeft = 0; - layout.marginBottom = 0; - layout.marginRight = 0; - layout.verticalSpacing = 15; - Composite container = this.addPane(parent, layout); - this.updateGridData(container); - return container; - } - - private void updateGridData(Composite container) { - GridData gridData = new GridData(); - gridData.grabExcessHorizontalSpace = true; - gridData.grabExcessVerticalSpace = true; - gridData.horizontalAlignment = SWT.FILL; - gridData.verticalAlignment = SWT.FILL; - container.setLayoutData(gridData); - } -} diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/logging/SessionComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/logging/SessionComposite.java deleted file mode 100644 index 349fbb2110..0000000000 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/logging/SessionComposite.java +++ /dev/null @@ -1,98 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2008, 2012 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.jpa.eclipselink.ui.internal.persistence.logging; - -import org.eclipse.jpt.common.ui.internal.JptCommonUiMessages; -import org.eclipse.jpt.common.ui.internal.widgets.Pane; -import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter; -import org.eclipse.jpt.common.utility.internal.model.value.TransformationPropertyValueModel; -import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; -import org.eclipse.jpt.common.utility.model.value.ModifiablePropertyValueModel; -import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.Logging; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.EclipseLinkHelpContextIds; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.EclipseLinkUiMessages; -import org.eclipse.osgi.util.NLS; -import org.eclipse.swt.widgets.Composite; - -/** - * SessionComposite - */ -public class SessionComposite extends Pane<Logging> -{ - /** - * Creates a new <code>SessionComposite</code>. - * - * @param parentController - * The parent container of this one - * @param parent - * The parent container - */ - public SessionComposite( - Pane<? extends Logging> parentComposite, - Composite parent) { - - super(parentComposite, parent); - } - - @Override - protected void initializeLayout(Composite container) { - - this.addTriStateCheckBoxWithDefault( - container, - EclipseLinkUiMessages.PersistenceXmlLoggingTab_sessionLabel, - this.buildSessionHolder(), - this.buildSessionStringHolder(), - EclipseLinkHelpContextIds.PERSISTENCE_LOGGING_SESSION - ); - } - - private ModifiablePropertyValueModel<Boolean> buildSessionHolder() { - return new PropertyAspectAdapter<Logging, Boolean>(getSubjectHolder(), Logging.SESSION_PROPERTY) { - @Override - protected Boolean buildValue_() { - return this.subject.getSession(); - } - - @Override - protected void setValue_(Boolean value) { - this.subject.setSession(value); - } - }; - } - - private PropertyValueModel<String> buildSessionStringHolder() { - return new TransformationPropertyValueModel<Boolean, String>(buildDefaultSessionHolder()) { - @Override - protected String transform(Boolean value) { - if (value != null) { - String defaultStringValue = value.booleanValue() ? JptCommonUiMessages.Boolean_True : JptCommonUiMessages.Boolean_False; - return NLS.bind(EclipseLinkUiMessages.PersistenceXmlLoggingTab_sessionLabelDefault, defaultStringValue); - } - return EclipseLinkUiMessages.PersistenceXmlLoggingTab_sessionLabel; - } - }; - } - - private PropertyValueModel<Boolean> buildDefaultSessionHolder() { - return new PropertyAspectAdapter<Logging, Boolean>( - getSubjectHolder(), - Logging.SESSION_PROPERTY) - { - @Override - protected Boolean buildValue_() { - if (this.subject.getSession() != null) { - return null; - } - return this.subject.getDefaultSession(); - } - }; - } - -} diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/logging/ThreadComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/logging/ThreadComposite.java deleted file mode 100644 index 460170e9d9..0000000000 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/logging/ThreadComposite.java +++ /dev/null @@ -1,97 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2008, 2012 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.jpa.eclipselink.ui.internal.persistence.logging; - -import org.eclipse.jpt.common.ui.internal.JptCommonUiMessages; -import org.eclipse.jpt.common.ui.internal.widgets.Pane; -import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter; -import org.eclipse.jpt.common.utility.internal.model.value.TransformationPropertyValueModel; -import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; -import org.eclipse.jpt.common.utility.model.value.ModifiablePropertyValueModel; -import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.Logging; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.EclipseLinkHelpContextIds; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.EclipseLinkUiMessages; -import org.eclipse.osgi.util.NLS; -import org.eclipse.swt.widgets.Composite; - -/** - * ThreadComposite - */ -public class ThreadComposite extends Pane<Logging> -{ - /** - * Creates a new <code>ThreadComposite</code>. - * - * @param parentController - * The parent container of this one - * @param parent - * The parent container - */ - public ThreadComposite( - Pane<? extends Logging> parentComposite, - Composite parent) { - - super(parentComposite, parent); - } - - @Override - protected void initializeLayout(Composite container) { - - this.addTriStateCheckBoxWithDefault( - container, - EclipseLinkUiMessages.PersistenceXmlLoggingTab_threadLabel, - this.buildThreadHolder(), - this.buildThreadStringHolder(), - EclipseLinkHelpContextIds.PERSISTENCE_LOGGING_THREAD - ); - } - - private ModifiablePropertyValueModel<Boolean> buildThreadHolder() { - return new PropertyAspectAdapter<Logging, Boolean>(getSubjectHolder(), Logging.THREAD_PROPERTY) { - @Override - protected Boolean buildValue_() { - return this.subject.getThread(); - } - - @Override - protected void setValue_(Boolean value) { - this.subject.setThread(value); - } - }; - } - - private PropertyValueModel<String> buildThreadStringHolder() { - return new TransformationPropertyValueModel<Boolean, String>(buildDefaultThreadHolder()) { - @Override - protected String transform(Boolean value) { - if (value != null) { - String defaultStringValue = value.booleanValue() ? JptCommonUiMessages.Boolean_True : JptCommonUiMessages.Boolean_False; - return NLS.bind(EclipseLinkUiMessages.PersistenceXmlLoggingTab_threadLabelDefault, defaultStringValue); - } - return EclipseLinkUiMessages.PersistenceXmlLoggingTab_threadLabel; - } - }; - } - - private PropertyValueModel<Boolean> buildDefaultThreadHolder() { - return new PropertyAspectAdapter<Logging, Boolean>( - getSubjectHolder(), - Logging.THREAD_PROPERTY) - { - @Override - protected Boolean buildValue_() { - if (this.subject.getThread() != null) { - return null; - } - return this.subject.getDefaultThread(); - } - }; - } -} diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/logging/TimestampComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/logging/TimestampComposite.java deleted file mode 100644 index 743c8e0992..0000000000 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/logging/TimestampComposite.java +++ /dev/null @@ -1,96 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2008, 2012 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.jpa.eclipselink.ui.internal.persistence.logging; - -import org.eclipse.jpt.common.ui.internal.JptCommonUiMessages; -import org.eclipse.jpt.common.ui.internal.widgets.Pane; -import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter; -import org.eclipse.jpt.common.utility.internal.model.value.TransformationPropertyValueModel; -import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; -import org.eclipse.jpt.common.utility.model.value.ModifiablePropertyValueModel; -import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.Logging; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.EclipseLinkHelpContextIds; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.EclipseLinkUiMessages; -import org.eclipse.osgi.util.NLS; -import org.eclipse.swt.widgets.Composite; - -/** - * TimestampComposite - */ -public class TimestampComposite extends Pane<Logging> -{ - /** - * Creates a new <code>TimestampComposite</code>. - * - * @param parentController - * The parent container of this one - * @param parent - * The parent container - */ - public TimestampComposite( - Pane<? extends Logging> parentComposite, - Composite parent) { - - super(parentComposite, parent); - } - - @Override - protected void initializeLayout(Composite container) { - - this.addTriStateCheckBoxWithDefault( - container, - EclipseLinkUiMessages.PersistenceXmlLoggingTab_timestampLabel, - this.buildTimestampHolder(), - this.buildTimestampStringHolder(), - EclipseLinkHelpContextIds.PERSISTENCE_LOGGING_TIMESTAMP - ); - } - - private ModifiablePropertyValueModel<Boolean> buildTimestampHolder() { - return new PropertyAspectAdapter<Logging, Boolean>(getSubjectHolder(), Logging.TIMESTAMP_PROPERTY) { - @Override - protected Boolean buildValue_() { - return this.subject.getTimestamp(); - } - - @Override - protected void setValue_(Boolean value) { - this.subject.setTimestamp(value); - } - }; - } - - private PropertyValueModel<String> buildTimestampStringHolder() { - return new TransformationPropertyValueModel<Boolean, String>(buildDefaultTimestampHolder()) { - @Override - protected String transform(Boolean value) { - if (value != null) { - String defaultStringValue = value.booleanValue() ? JptCommonUiMessages.Boolean_True : JptCommonUiMessages.Boolean_False; - return NLS.bind(EclipseLinkUiMessages.PersistenceXmlLoggingTab_timestampLabelDefault, defaultStringValue); - } - return EclipseLinkUiMessages.PersistenceXmlLoggingTab_timestampLabel; - } - }; - } - private PropertyValueModel<Boolean> buildDefaultTimestampHolder() { - return new PropertyAspectAdapter<Logging, Boolean>( - getSubjectHolder(), - Logging.TIMESTAMP_PROPERTY) - { - @Override - protected Boolean buildValue_() { - if (this.subject.getTimestamp() != null) { - return null; - } - return this.subject.getDefaultTimestamp(); - } - }; - } -} diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/options/EclipseLinkLoggingComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/options/EclipseLinkLoggingComposite.java new file mode 100644 index 0000000000..b073c23ac6 --- /dev/null +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/options/EclipseLinkLoggingComposite.java @@ -0,0 +1,418 @@ +/******************************************************************************* + * Copyright (c) 2008, 2012 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.jpa.eclipselink.ui.internal.persistence.options; + +import java.util.Collection; +import org.eclipse.jpt.common.ui.WidgetFactory; +import org.eclipse.jpt.common.ui.internal.JptCommonUiMessages; +import org.eclipse.jpt.common.ui.internal.widgets.EnumFormComboViewer; +import org.eclipse.jpt.common.ui.internal.widgets.FileChooserComboPane; +import org.eclipse.jpt.common.ui.internal.widgets.Pane; +import org.eclipse.jpt.common.ui.internal.widgets.TriStateCheckBox; +import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter; +import org.eclipse.jpt.common.utility.internal.model.value.TransformationPropertyValueModel; +import org.eclipse.jpt.common.utility.model.value.ModifiablePropertyValueModel; +import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; +import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.Logging; +import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.LoggingLevel; +import org.eclipse.jpt.jpa.eclipselink.ui.internal.EclipseLinkHelpContextIds; +import org.eclipse.jpt.jpa.eclipselink.ui.internal.EclipseLinkUiMessages; +import org.eclipse.osgi.util.NLS; +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.ui.forms.widgets.Hyperlink; + +/** + * EclipseLinkLoggingComposite + */ +public class EclipseLinkLoggingComposite<T extends Logging> + extends Pane<T> +{ + public EclipseLinkLoggingComposite( + PropertyValueModel<T> subjectHolder, + Composite parent, + WidgetFactory widgetFactory) { + super(subjectHolder, parent, widgetFactory); + } + + @Override + protected Composite addComposite(Composite container) { + return addSubPane(container, 2, 0, 0, 0, 0); + } + + @Override + protected void initializeLayout(Composite container) { + // LoggingLevel: + this.addLabel(container, EclipseLinkUiMessages.PersistenceXmlLoggingTab_loggingLevelLabel); + this.addLoggingLevelCombo(container); + + this.logPropertiesComposite(container); + + // LoggingFile: + this.addLabel(container, EclipseLinkUiMessages.PersistenceXmlLoggingTab_loggingFileLabel); + this.addLogFileLocationComposite(container); + + // Logger: + Hyperlink loggerHyperlink = this.addHyperlink(container, EclipseLinkUiMessages.PersistenceXmlLoggingTab_loggerLabel); + new LoggerClassChooser(this, container, loggerHyperlink); + } + + protected void logPropertiesComposite(Composite parent) { + // Timestamp: + TriStateCheckBox timestampCheckBox = this.addTriStateCheckBoxWithDefault( + parent, + EclipseLinkUiMessages.PersistenceXmlLoggingTab_timestampLabel, + this.buildTimestampHolder(), + this.buildTimestampStringHolder(), + EclipseLinkHelpContextIds.PERSISTENCE_LOGGING_TIMESTAMP + ); + GridData gridData = new GridData(); + gridData.horizontalSpan = 2; + timestampCheckBox.getCheckBox().setLayoutData(gridData); + + // Thread: + TriStateCheckBox threadCheckBox = this.addTriStateCheckBoxWithDefault( + parent, + EclipseLinkUiMessages.PersistenceXmlLoggingTab_threadLabel, + this.buildThreadHolder(), + this.buildThreadStringHolder(), + EclipseLinkHelpContextIds.PERSISTENCE_LOGGING_THREAD + ); + threadCheckBox.getCheckBox().setLayoutData(gridData); + + // Session: + TriStateCheckBox sessionCheckBox = this.addTriStateCheckBoxWithDefault( + parent, + EclipseLinkUiMessages.PersistenceXmlLoggingTab_sessionLabel, + this.buildSessionHolder(), + this.buildSessionStringHolder(), + EclipseLinkHelpContextIds.PERSISTENCE_LOGGING_SESSION + ); + sessionCheckBox.getCheckBox().setLayoutData(gridData); + + // Exceptions: + TriStateCheckBox exceptionsCheckBox = this.addTriStateCheckBoxWithDefault( + parent, + EclipseLinkUiMessages.PersistenceXmlLoggingTab_exceptionsLabel, + this.buildExceptionsHolder(), + this.buildExceptionsStringHolder(), + EclipseLinkHelpContextIds.PERSISTENCE_LOGGING_EXCEPTIONS + ); + exceptionsCheckBox.getCheckBox().setLayoutData(gridData); + } + + //************* logging level ************ + + private EnumFormComboViewer<Logging, LoggingLevel> addLoggingLevelCombo(Composite container) { + return new EnumFormComboViewer<Logging, LoggingLevel>(this, container) { + @Override + protected void addPropertyNames(Collection<String> propertyNames) { + super.addPropertyNames(propertyNames); + propertyNames.add(Logging.LEVEL_PROPERTY); + } + + @Override + protected LoggingLevel[] getChoices() { + return LoggingLevel.values(); + } + + @Override + protected boolean sortChoices() { + return false; + } + + @Override + protected LoggingLevel getDefaultValue() { + return this.getSubject().getDefaultLevel(); + } + + @Override + protected String displayString(LoggingLevel value) { + switch (value) { + case all : + return EclipseLinkUiMessages.LoggingLevelComposite_all; + case config : + return EclipseLinkUiMessages.LoggingLevelComposite_config; + case fine : + return EclipseLinkUiMessages.LoggingLevelComposite_fine; + case finer : + return EclipseLinkUiMessages.LoggingLevelComposite_finer; + case finest : + return EclipseLinkUiMessages.LoggingLevelComposite_finest; + case info : + return EclipseLinkUiMessages.LoggingLevelComposite_info; + case off : + return EclipseLinkUiMessages.LoggingLevelComposite_off; + case severe : + return EclipseLinkUiMessages.LoggingLevelComposite_severe; + case warning : + return EclipseLinkUiMessages.LoggingLevelComposite_warning; + default : + throw new IllegalStateException(); + } + } + + @Override + protected LoggingLevel getValue() { + return this.getSubject().getLevel(); + } + + @Override + protected void setValue(LoggingLevel value) { + this.getSubject().setLevel(value); + } + @Override + protected String getHelpId() { + return EclipseLinkHelpContextIds.PERSISTENCE_LOGGING_LEVEL; + } + }; + + } + + //************* logging level ************ + + private FileChooserComboPane<Logging> addLogFileLocationComposite(Composite parent) { + return new FileChooserComboPane<Logging>(this, parent) { + + @Override + protected ModifiablePropertyValueModel<String> buildTextHolder() { + return new PropertyAspectAdapter<Logging, String>( + getSubjectHolder(), Logging.LOG_FILE_LOCATION_PROPERTY) { + @Override + protected String buildValue_() { + + String name = subject.getLogFileLocation(); + if (name == null) { + name = defaultValue(subject); + } + return name; + } + + @Override + protected void setValue_(String value) { + + if (defaultValue(subject).equals(value)) { + value = null; + } + subject.setLogFileLocation(value); + } + }; + } + + private String defaultValue(Logging subject) { + String defaultValue = subject.getDefaultLogFileLocation(); + + if (defaultValue != null) { + return NLS.bind( + JptCommonUiMessages.DefaultWithOneParam, + defaultValue + ); + } + else { + return this.getDefaultString(); + } + } + + @Override + protected String getDefaultString() { + return EclipseLinkUiMessages.PersistenceXmlLoggingTab_defaultStdout; + } + + @Override + protected String getDialogTitle() { + return EclipseLinkUiMessages.LoggingFileLocationComposite_dialogTitle; + } + + @Override + protected String getProjectPath() { + return this.getSubject().getJpaProject().getProject().getLocation().toString(); + } + }; + } + + + //************* timestamp ************ + + private ModifiablePropertyValueModel<Boolean> buildTimestampHolder() { + return new PropertyAspectAdapter<Logging, Boolean>(getSubjectHolder(), Logging.TIMESTAMP_PROPERTY) { + @Override + protected Boolean buildValue_() { + return this.subject.getTimestamp(); + } + + @Override + protected void setValue_(Boolean value) { + this.subject.setTimestamp(value); + } + }; + } + + private PropertyValueModel<String> buildTimestampStringHolder() { + return new TransformationPropertyValueModel<Boolean, String>(buildDefaultTimestampHolder()) { + @Override + protected String transform(Boolean value) { + if (value != null) { + String defaultStringValue = value.booleanValue() ? JptCommonUiMessages.Boolean_True : JptCommonUiMessages.Boolean_False; + return NLS.bind(EclipseLinkUiMessages.PersistenceXmlLoggingTab_timestampLabelDefault, defaultStringValue); + } + return EclipseLinkUiMessages.PersistenceXmlLoggingTab_timestampLabel; + } + }; + } + private PropertyValueModel<Boolean> buildDefaultTimestampHolder() { + return new PropertyAspectAdapter<Logging, Boolean>( + getSubjectHolder(), + Logging.TIMESTAMP_PROPERTY) + { + @Override + protected Boolean buildValue_() { + if (this.subject.getTimestamp() != null) { + return null; + } + return this.subject.getDefaultTimestamp(); + } + }; + } + + + //************* thread ************ + + private ModifiablePropertyValueModel<Boolean> buildThreadHolder() { + return new PropertyAspectAdapter<Logging, Boolean>(getSubjectHolder(), Logging.THREAD_PROPERTY) { + @Override + protected Boolean buildValue_() { + return this.subject.getThread(); + } + + @Override + protected void setValue_(Boolean value) { + this.subject.setThread(value); + } + }; + } + + private PropertyValueModel<String> buildThreadStringHolder() { + return new TransformationPropertyValueModel<Boolean, String>(buildDefaultThreadHolder()) { + @Override + protected String transform(Boolean value) { + if (value != null) { + String defaultStringValue = value.booleanValue() ? JptCommonUiMessages.Boolean_True : JptCommonUiMessages.Boolean_False; + return NLS.bind(EclipseLinkUiMessages.PersistenceXmlLoggingTab_threadLabelDefault, defaultStringValue); + } + return EclipseLinkUiMessages.PersistenceXmlLoggingTab_threadLabel; + } + }; + } + + private PropertyValueModel<Boolean> buildDefaultThreadHolder() { + return new PropertyAspectAdapter<Logging, Boolean>( + getSubjectHolder(), + Logging.THREAD_PROPERTY) + { + @Override + protected Boolean buildValue_() { + if (this.subject.getThread() != null) { + return null; + } + return this.subject.getDefaultThread(); + } + }; + } + + + //************* session ************ + + private ModifiablePropertyValueModel<Boolean> buildSessionHolder() { + return new PropertyAspectAdapter<Logging, Boolean>(getSubjectHolder(), Logging.SESSION_PROPERTY) { + @Override + protected Boolean buildValue_() { + return this.subject.getSession(); + } + + @Override + protected void setValue_(Boolean value) { + this.subject.setSession(value); + } + }; + } + + private PropertyValueModel<String> buildSessionStringHolder() { + return new TransformationPropertyValueModel<Boolean, String>(buildDefaultSessionHolder()) { + @Override + protected String transform(Boolean value) { + if (value != null) { + String defaultStringValue = value.booleanValue() ? JptCommonUiMessages.Boolean_True : JptCommonUiMessages.Boolean_False; + return NLS.bind(EclipseLinkUiMessages.PersistenceXmlLoggingTab_sessionLabelDefault, defaultStringValue); + } + return EclipseLinkUiMessages.PersistenceXmlLoggingTab_sessionLabel; + } + }; + } + + private PropertyValueModel<Boolean> buildDefaultSessionHolder() { + return new PropertyAspectAdapter<Logging, Boolean>( + getSubjectHolder(), + Logging.SESSION_PROPERTY) + { + @Override + protected Boolean buildValue_() { + if (this.subject.getSession() != null) { + return null; + } + return this.subject.getDefaultSession(); + } + }; + } + + + //********** exceptions ************ + + private ModifiablePropertyValueModel<Boolean> buildExceptionsHolder() { + return new PropertyAspectAdapter<Logging, Boolean>(getSubjectHolder(), Logging.EXCEPTIONS_PROPERTY) { + @Override + protected Boolean buildValue_() { + return this.subject.getExceptions(); + } + + @Override + protected void setValue_(Boolean value) { + this.subject.setExceptions(value); + } + }; + } + + private PropertyValueModel<String> buildExceptionsStringHolder() { + return new TransformationPropertyValueModel<Boolean, String>(buildDefaultExceptionsHolder()) { + @Override + protected String transform(Boolean value) { + if (value != null) { + String defaultStringValue = value.booleanValue() ? JptCommonUiMessages.Boolean_True : JptCommonUiMessages.Boolean_False; + return NLS.bind(EclipseLinkUiMessages.PersistenceXmlLoggingTab_exceptionsLabelDefault, defaultStringValue); + } + return EclipseLinkUiMessages.PersistenceXmlLoggingTab_exceptionsLabel; + } + }; + } + + private PropertyValueModel<Boolean> buildDefaultExceptionsHolder() { + return new PropertyAspectAdapter<Logging, Boolean>( + getSubjectHolder(), + Logging.EXCEPTIONS_PROPERTY) + { + @Override + protected Boolean buildValue_() { + if (this.subject.getExceptions() != null) { + return null; + } + return this.subject.getDefaultExceptions(); + } + }; + } +} diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/options/EclipseLinkOptionsComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/options/EclipseLinkOptionsComposite.java deleted file mode 100644 index 1396f30a3a..0000000000 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/options/EclipseLinkOptionsComposite.java +++ /dev/null @@ -1,85 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2008, 2011 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.jpa.eclipselink.ui.internal.persistence.options; - -import org.eclipse.jpt.common.ui.internal.widgets.Pane; -import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.Options; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.EclipseLinkUiMessages; -import org.eclipse.swt.SWT; -import org.eclipse.swt.layout.GridData; -import org.eclipse.swt.widgets.Composite; - -/** - * EclipseLinkOptionsComposite - */ -public class EclipseLinkOptionsComposite<T extends Options> extends Pane<T> -{ - public EclipseLinkOptionsComposite( - Pane<T> subjectHolder, - Composite container) { - - super(subjectHolder, container, false); - } - - @Override - protected void initializeLayout(Composite parent) { - this.initializeSessionOptionsPane(parent); - this.initializeMiscellaneousPane(parent); - } - - private void initializeSessionOptionsPane(Composite parent) { - Composite composite = this.addSection(parent, - EclipseLinkUiMessages.PersistenceXmlOptionsTab_sessionSectionTitle, - EclipseLinkUiMessages.PersistenceXmlOptionsTab_sessionSectionDescription); - - this.updateGridData(composite); - this.updateGridData(composite.getParent()); - - new SessionNameComposite(this, composite); - - new SessionsXmlComposite(this, composite); - - new TargetDatabaseComposite(this, composite); - - new TargetServerComposite(this, composite); - - new EventListenerComposite(this, composite); - - new IncludeDescriptorQueriesComposite(this, composite); - - return; - } - - protected Composite initializeMiscellaneousPane(Composite container) { - - this.updateGridData(container); - this.updateGridData(container.getParent()); - - Composite composite = this.addSection(container, - EclipseLinkUiMessages.PersistenceXmlOptionsTab_miscellaneousSectionTitle, - EclipseLinkUiMessages.PersistenceXmlOptionsTab_miscellaneousSectionDescription); - - this.updateGridData(composite); - this.updateGridData(composite.getParent()); - - new TemporalMutableComposite(this, composite); - - return composite; - } - - private void updateGridData(Composite container) { - GridData gridData = new GridData(); - gridData.grabExcessHorizontalSpace = true; - gridData.grabExcessVerticalSpace = true; - gridData.horizontalAlignment = SWT.FILL; - gridData.verticalAlignment = SWT.FILL; - container.setLayoutData(gridData); - } -} diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/options/EventListenerComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/options/EventListenerComposite.java deleted file mode 100644 index a117e1a0cd..0000000000 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/options/EventListenerComposite.java +++ /dev/null @@ -1,93 +0,0 @@ -/******************************************************************************* -* Copyright (c) 2008, 2012 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.jpa.eclipselink.ui.internal.persistence.options; - -import org.eclipse.jdt.core.IJavaProject; -import org.eclipse.jpt.common.ui.internal.widgets.ClassChooserPane; -import org.eclipse.jpt.common.ui.internal.widgets.Pane; -import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter; -import org.eclipse.jpt.common.utility.model.value.ModifiablePropertyValueModel; -import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.Options; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.EclipseLinkUiMessages; -import org.eclipse.swt.widgets.Composite; - -/** - * EventListenerComposite - */ -public class EventListenerComposite extends Pane<Options> -{ - /** - * Creates a new <code>EventListenerComposite</code>. - * - * @param parentPane The parent pane of this one - * @param parent The parent container - */ - public EventListenerComposite(Pane<? extends Options> parentPane, - Composite parent) { - - super(parentPane, parent); - } - - private ClassChooserPane<Options> initializeClassChooser(Composite container) { - - return new ClassChooserPane<Options>(this, container) { - - @Override - protected ModifiablePropertyValueModel<String> buildTextHolder() { - return new PropertyAspectAdapter<Options, String>( - this.getSubjectHolder(), Options.SESSION_EVENT_LISTENER_PROPERTY) { - @Override - protected String buildValue_() { - return this.subject.getEventListener(); - } - - @Override - protected void setValue_(String value) { - - if (value.length() == 0) { - value = null; - } - this.subject.setEventListener(value); - } - }; - } - - @Override - protected String getClassName() { - return this.getSubject().getEventListener(); - } - - @Override - protected String getLabelText() { - return EclipseLinkUiMessages.PersistenceXmlOptionsTab_eventListenerLabel; - } - - @Override - protected IJavaProject getJavaProject() { - return getSubject().getJpaProject().getJavaProject(); - } - - @Override - protected void setClassName(String className) { - this.getSubject().setEventListener(className); - } - - @Override - protected String getSuperInterfaceName() { - return Options.ECLIPSELINK_EVENT_LISTENER_CLASS_NAME; - } - }; - } - - @Override - protected void initializeLayout(Composite container) { - this.initializeClassChooser(container); - } -} diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/options/IncludeDescriptorQueriesComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/options/IncludeDescriptorQueriesComposite.java deleted file mode 100644 index c9d4576b6e..0000000000 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/options/IncludeDescriptorQueriesComposite.java +++ /dev/null @@ -1,97 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2008, 2012 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.jpa.eclipselink.ui.internal.persistence.options; - -import org.eclipse.jpt.common.ui.internal.JptCommonUiMessages; -import org.eclipse.jpt.common.ui.internal.widgets.Pane; -import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter; -import org.eclipse.jpt.common.utility.internal.model.value.TransformationPropertyValueModel; -import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; -import org.eclipse.jpt.common.utility.model.value.ModifiablePropertyValueModel; -import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.Options; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.EclipseLinkHelpContextIds; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.EclipseLinkUiMessages; -import org.eclipse.osgi.util.NLS; -import org.eclipse.swt.widgets.Composite; - -/** - * IncludeDescriptorQueriesComposite - */ -public class IncludeDescriptorQueriesComposite extends Pane<Options> -{ - /** - * Creates a new <code>IncludeDescriptorQueriesComposite</code>. - * - * @param parentController - * The parent container of this one - * @param parent - * The parent container - */ - public IncludeDescriptorQueriesComposite( - Pane<? extends Options> parentComposite, - Composite parent) { - - super(parentComposite, parent); - } - - @Override - protected void initializeLayout(Composite container) { - - this.addTriStateCheckBoxWithDefault( - container, - EclipseLinkUiMessages.PersistenceXmlOptionsTab_includeDescriptorQueriesLabel, - this.buildIncludeDescriptorQueriesHolder(), - this.buildIncludeDescriptorQueriesStringHolder(), - EclipseLinkHelpContextIds.PERSISTENCE_OPTIONS - ); - } - - private ModifiablePropertyValueModel<Boolean> buildIncludeDescriptorQueriesHolder() { - return new PropertyAspectAdapter<Options, Boolean>(getSubjectHolder(), Options.SESSION_INCLUDE_DESCRIPTOR_QUERIES_PROPERTY) { - @Override - protected Boolean buildValue_() { - return this.subject.getIncludeDescriptorQueries(); - } - - @Override - protected void setValue_(Boolean value) { - this.subject.setIncludeDescriptorQueries(value); - } - }; - } - - private PropertyValueModel<String> buildIncludeDescriptorQueriesStringHolder() { - return new TransformationPropertyValueModel<Boolean, String>(buildDefaultIncludeDescriptorQueriesHolder()) { - @Override - protected String transform(Boolean value) { - if (value != null) { - String defaultStringValue = value.booleanValue() ? JptCommonUiMessages.Boolean_True : JptCommonUiMessages.Boolean_False; - return NLS.bind(EclipseLinkUiMessages.PersistenceXmlOptionsTab_includeDescriptorQueriesLabelDefault, defaultStringValue); - } - return EclipseLinkUiMessages.PersistenceXmlOptionsTab_includeDescriptorQueriesLabel; - } - }; - } - - private PropertyValueModel<Boolean> buildDefaultIncludeDescriptorQueriesHolder() { - return new PropertyAspectAdapter<Options, Boolean>( - getSubjectHolder(), - Options.SESSION_INCLUDE_DESCRIPTOR_QUERIES_PROPERTY) - { - @Override - protected Boolean buildValue_() { - if (this.subject.getIncludeDescriptorQueries() != null) { - return null; - } - return this.subject.getDefaultIncludeDescriptorQueries(); - } - }; - } -} diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/logging/LoggerComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/options/LoggerClassChooser.java index 1bfe19b2b7..7a14fe44ff 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/logging/LoggerComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/options/LoggerClassChooser.java @@ -7,7 +7,7 @@ * Contributors: * Oracle - initial API and implementation *******************************************************************************/ -package org.eclipse.jpt.jpa.eclipselink.ui.internal.persistence.logging; +package org.eclipse.jpt.jpa.eclipselink.ui.internal.persistence.options; import java.util.ArrayList; import java.util.Comparator; @@ -33,12 +33,13 @@ import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.Logging; import org.eclipse.jpt.jpa.eclipselink.ui.internal.EclipseLinkUiMessages; import org.eclipse.osgi.util.NLS; import org.eclipse.swt.widgets.Composite; +import org.eclipse.ui.forms.widgets.Hyperlink; import com.ibm.icu.text.Collator; /** * LoggerComposite */ -public class LoggerComposite extends ClassChooserComboPane<Logging> +public class LoggerClassChooser extends ClassChooserComboPane<Logging> { /** * Creates a new <code>LoggerComposite</code>. @@ -46,11 +47,11 @@ public class LoggerComposite extends ClassChooserComboPane<Logging> * @param parentPane The parent container of this one * @param parent The parent container */ - public LoggerComposite( - Pane<? extends Logging> parentPane, - Composite parent) { + public LoggerClassChooser(Pane<? extends Logging> parentPane, + Composite parent, + Hyperlink hyperlink) { - super(parentPane, parent); + super(parentPane, parent, hyperlink); } @Override @@ -60,11 +61,6 @@ public class LoggerComposite extends ClassChooserComboPane<Logging> } return Logger.getLoggerClassName(this.getSubject().getLogger()); } - - @Override - protected String getLabelText() { - return EclipseLinkUiMessages.PersistenceXmlLoggingTab_loggerLabel; - } @Override protected IJavaProject getJavaProject() { @@ -84,7 +80,7 @@ public class LoggerComposite extends ClassChooserComboPane<Logging> String name = this.subject.getLogger(); if (name == null) { - name = LoggerComposite.this.getDefaultValue(this.subject); + name = LoggerClassChooser.this.getDefaultValue(this.subject); } return name; } @@ -104,7 +100,7 @@ public class LoggerComposite extends ClassChooserComboPane<Logging> return new PropertyAspectAdapter<Logging, String>(this.getSubjectHolder(), Logging.DEFAULT_LOGGER) { @Override protected String buildValue_() { - return LoggerComposite.this.getDefaultValue(this.subject); + return LoggerClassChooser.this.getDefaultValue(this.subject); } }; } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/options/PersistenceXmlOptionsTab.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/options/PersistenceXmlOptionsTab.java index ee58f8fb55..221db18e37 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/options/PersistenceXmlOptionsTab.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/options/PersistenceXmlOptionsTab.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2007, 2011 Oracle. All rights reserved. + * Copyright (c) 2008, 2012 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. @@ -9,27 +9,61 @@ *******************************************************************************/ package org.eclipse.jpt.jpa.eclipselink.ui.internal.persistence.options; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.Iterator; +import org.eclipse.jdt.core.IJavaProject; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.jpt.common.ui.WidgetFactory; +import org.eclipse.jpt.common.ui.internal.JptCommonUiMessages; +import org.eclipse.jpt.common.ui.internal.util.SWTUtil; +import org.eclipse.jpt.common.ui.internal.widgets.ClassChooserPane; import org.eclipse.jpt.common.ui.internal.widgets.Pane; +import org.eclipse.jpt.common.ui.internal.widgets.TriStateCheckBox; +import org.eclipse.jpt.common.utility.internal.CollectionTools; +import org.eclipse.jpt.common.utility.internal.StringConverter; +import org.eclipse.jpt.common.utility.internal.iterators.TransformationIterator; +import org.eclipse.jpt.common.utility.internal.model.value.CompositeListValueModel; +import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter; +import org.eclipse.jpt.common.utility.internal.model.value.PropertyListValueModelAdapter; +import org.eclipse.jpt.common.utility.internal.model.value.SimpleCollectionValueModel; +import org.eclipse.jpt.common.utility.internal.model.value.SortedListValueModelAdapter; +import org.eclipse.jpt.common.utility.internal.model.value.TransformationPropertyValueModel; +import org.eclipse.jpt.common.utility.model.value.CollectionValueModel; +import org.eclipse.jpt.common.utility.model.value.ListValueModel; +import org.eclipse.jpt.common.utility.model.value.ModifiablePropertyValueModel; import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; +import org.eclipse.jpt.jpa.core.context.persistence.PersistenceUnit; +import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.EclipseLinkPersistenceUnit; +import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.Logging; import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.Options; +import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.SchemaGeneration; +import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.TargetDatabase; +import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.TargetServer; import org.eclipse.jpt.jpa.eclipselink.ui.internal.EclipseLinkHelpContextIds; import org.eclipse.jpt.jpa.eclipselink.ui.internal.EclipseLinkUiMessages; -import org.eclipse.jpt.jpa.ui.details.JpaPageComposite; +import org.eclipse.jpt.jpa.ui.editors.JpaPageComposite; +import org.eclipse.osgi.util.NLS; import org.eclipse.swt.SWT; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; +import org.eclipse.swt.widgets.Combo; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.ui.forms.widgets.ExpandableComposite; +import org.eclipse.ui.forms.widgets.Hyperlink; +import org.eclipse.ui.forms.widgets.Section; +import com.ibm.icu.text.Collator; /** - * PersistenceXmlOptionsTab + * EclipseLinkOptionsComposite */ -public class PersistenceXmlOptionsTab<T extends Options> +public class PersistenceXmlOptionsTab<T extends PersistenceUnit> extends Pane<T> implements JpaPageComposite { - // ********** constructors/initialization ********** + private PropertyValueModel<Options> optionsHolder; + public PersistenceXmlOptionsTab( PropertyValueModel<T> subjectHolder, Composite parent, @@ -38,11 +72,6 @@ public class PersistenceXmlOptionsTab<T extends Options> super(subjectHolder, parent, widgetFactory); } - @Override - protected void initializeLayout(Composite container) { - new EclipseLinkOptionsComposite<T>(this, container); - } - // ********** JpaPageComposite implementation ********** public String getHelpID() { @@ -57,28 +86,705 @@ public class PersistenceXmlOptionsTab<T extends Options> return EclipseLinkUiMessages.PersistenceXmlOptionsTab_title; } - // ********** Layout ********** @Override - protected Composite addContainer(Composite parent) { - GridLayout layout = new GridLayout(1, true); + protected Composite addComposite(Composite parent) { + return this.addSubPane(parent, 2, 0, 0, 0, 0); + } + + @Override + protected void initializeLayout(Composite container) { + Section sessionOptionsSection = this.getWidgetFactory().createSection(container, ExpandableComposite.TITLE_BAR); + sessionOptionsSection.setText(EclipseLinkUiMessages.PersistenceXmlOptionsTab_sessionSectionTitle); + Control sessionOptionsComposite = this.initializeSessionOptionsSection(sessionOptionsSection); + GridData gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.verticalAlignment = SWT.TOP; + sessionOptionsSection.setLayoutData(gridData); + sessionOptionsSection.setClient(sessionOptionsComposite); + + Section schemaGenerationSection = this.getWidgetFactory().createSection(container, ExpandableComposite.TITLE_BAR); + schemaGenerationSection.setText(EclipseLinkUiMessages.PersistenceXmlSchemaGenerationTab_sectionTitle); + gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.verticalAlignment = SWT.TOP; + schemaGenerationSection.setLayoutData(gridData); + Control schemaGenerationComposite = this.initializeSchemaGenerationSection(schemaGenerationSection); + schemaGenerationSection.setClient(schemaGenerationComposite); + + Section loggingSection = this.getWidgetFactory().createSection(container, ExpandableComposite.TITLE_BAR); + loggingSection.setText(EclipseLinkUiMessages.PersistenceXmlLoggingTab_sectionTitle); + gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.verticalAlignment = SWT.TOP; + loggingSection.setLayoutData(gridData); + Control loggingComposite = this.initializeLoggingSection(loggingSection); + loggingSection.setClient(loggingComposite); + + Section miscellaneousSection = this.getWidgetFactory().createSection(container, ExpandableComposite.TITLE_BAR); + miscellaneousSection.setText(EclipseLinkUiMessages.PersistenceXmlOptionsTab_miscellaneousSectionTitle); + gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.verticalAlignment = SWT.TOP; + miscellaneousSection.setLayoutData(gridData); + Control miscellaneousComposite = this.initializeMiscellaneousSection(miscellaneousSection); + miscellaneousSection.setClient(miscellaneousComposite); + } + + private Control initializeSessionOptionsSection(Section section) { + this.optionsHolder = this.buildOptionsHolder(); + GridLayout layout = new GridLayout(2, false); layout.marginHeight = 0; - layout.marginWidth = 0; - layout.marginTop = 0; - layout.marginLeft = 0; + layout.marginWidth = 0; + layout.marginTop = 0; + layout.marginLeft = 0; layout.marginBottom = 0; - layout.marginRight = 0; - layout.verticalSpacing = 15; - Composite container = this.addPane(parent, layout); - this.updateGridData(container); + layout.marginRight = 0; + Composite container = this.addPane(section, layout); + + this.addLabel(container, EclipseLinkUiMessages.PersistenceXmlOptionsTab_sessionName); + Combo sessionNameCombo = addEditableCombo( + container, + this.buildDefaultSessionNameListHolder(), + this.buildSessionNameHolder(), + StringConverter.Default.<String>instance(), + EclipseLinkHelpContextIds.PERSISTENCE_OPTIONS_SESSION_NAME + + ); + SWTUtil.attachDefaultValueHandler(sessionNameCombo); + + + this.addLabel(container, EclipseLinkUiMessages.PersistenceXmlOptionsTab_sessionsXml); + Combo sessionsXmlCombo = addEditableCombo( + container, + this.buildDefaultSessionsXmlFileNameListHolder(), + this.buildSessionsXmlFileNameHolder(), + StringConverter.Default.<String>instance(), + EclipseLinkHelpContextIds.PERSISTENCE_OPTIONS_SESSIONS_XML); + SWTUtil.attachDefaultValueHandler(sessionsXmlCombo); + + + this.addLabel(container, EclipseLinkUiMessages.PersistenceXmlOptionsTab_targetDatabaseLabel); + Combo targetDatabaseCombo = addEditableCombo( + container, + this.buildTargetDatabaseListHolder(), + this.buildTargetDatabaseHolder(), + this.buildTargetDatabaseConverter(), + EclipseLinkHelpContextIds.PERSISTENCE_OPTIONS_TARGET_DATABASE + ); + SWTUtil.attachDefaultValueHandler(targetDatabaseCombo); + + + this.addLabel(container, EclipseLinkUiMessages.PersistenceXmlOptionsTab_targetServerLabel); + Combo targetServerCombo = addEditableCombo( + container, + this.buildTargetServerListHolder(), + this.buildTargetServerHolder(), + this.buildTargetServerConverter(), + EclipseLinkHelpContextIds.PERSISTENCE_OPTIONS_TARGET_SERVER + ); + SWTUtil.attachDefaultValueHandler(targetServerCombo); + + Hyperlink eventListenerLink = addHyperlink(container, EclipseLinkUiMessages.PersistenceXmlOptionsTab_eventListenerLabel); + this.initializeEventListenerClassChooser(container, eventListenerLink); + + TriStateCheckBox includeDescriptorQueriesCheckBox = this.addTriStateCheckBoxWithDefault( + container, + EclipseLinkUiMessages.PersistenceXmlOptionsTab_includeDescriptorQueriesLabel, + this.buildIncludeDescriptorQueriesHolder(), + this.buildIncludeDescriptorQueriesStringHolder(), + EclipseLinkHelpContextIds.PERSISTENCE_OPTIONS + ); + GridData gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.horizontalSpan = 2; + includeDescriptorQueriesCheckBox.getCheckBox().setLayoutData(gridData); + return container; } - private void updateGridData(Composite container) { - GridData gridData = new GridData(); - gridData.grabExcessHorizontalSpace = true; - gridData.grabExcessVerticalSpace = true; - gridData.horizontalAlignment = SWT.FILL; - gridData.verticalAlignment = SWT.FILL; - container.setLayoutData(gridData); + protected Control initializeLoggingSection(Section section) { + return new EclipseLinkLoggingComposite<Logging>(this.buildLoggingHolder(), section, getWidgetFactory()).getControl(); + } + + protected Control initializeSchemaGenerationSection(Section section) { + return new PersistenceXmlSchemaGenerationComposite(this.buildSchemaGenerationHolder(), section, getWidgetFactory()).getControl(); + } + + protected Control initializeMiscellaneousSection(Section section) { + Composite container = this.addSubPane(section); + this.addTriStateCheckBoxWithDefault( + container, + EclipseLinkUiMessages.PersistenceXmlOptionsTab_temporalMutableLabel, + this.buildTemporalMutableHolder(), + this.buildTemporalMutableStringHolder(), + EclipseLinkHelpContextIds.PERSISTENCE_OPTIONS + ); + + return container; + } + + private PropertyValueModel<SchemaGeneration> buildSchemaGenerationHolder() { + return new TransformationPropertyValueModel<PersistenceUnit, SchemaGeneration>(getSubjectHolder()) { + @Override + protected SchemaGeneration transform_(PersistenceUnit value) { + return ((EclipseLinkPersistenceUnit) value).getSchemaGeneration(); + } + }; + } + + private PropertyValueModel<Logging> buildLoggingHolder() { + return new TransformationPropertyValueModel<PersistenceUnit, Logging>(getSubjectHolder()) { + @Override + protected Logging transform_(PersistenceUnit value) { + return ((EclipseLinkPersistenceUnit) value).getLogging(); + } + }; + } + + private PropertyValueModel<Options> buildOptionsHolder() { + return new TransformationPropertyValueModel<PersistenceUnit, Options>(getSubjectHolder()) { + @Override + protected Options transform_(PersistenceUnit value) { + + return ((EclipseLinkPersistenceUnit)value).getOptions(); + } + }; + } + + + //******** session name ********* + + private PropertyValueModel<String> buildDefaultSessionNameHolder() { + return new PropertyAspectAdapter<Options, String>(this.optionsHolder, Options.DEFAULT_SESSION_NAME) { + @Override + protected String buildValue_() { + return PersistenceXmlOptionsTab.this.getSessionNameDefaultValue(subject); + } + }; + } + + private ListValueModel<String> buildDefaultSessionNameListHolder() { + return new PropertyListValueModelAdapter<String>( + this.buildDefaultSessionNameHolder() + ); + } + + private ModifiablePropertyValueModel<String> buildSessionNameHolder() { + return new PropertyAspectAdapter<Options, String>(this.optionsHolder, Options.SESSION_NAME_PROPERTY) { + @Override + protected String buildValue_() { + + String name = subject.getSessionName(); + if (name == null) { + name = PersistenceXmlOptionsTab.this.getSessionNameDefaultValue(subject); + } + return name; + } + + @Override + protected void setValue_(String value) { + + if (getSessionNameDefaultValue(subject).equals(value)) { + value = null; + } + subject.setSessionName(value); + } + }; + } + + private String getSessionNameDefaultValue(Options subject) { + String defaultValue = subject.getDefaultSessionName(); + + if (defaultValue != null) { + return NLS.bind( + JptCommonUiMessages.DefaultWithOneParam, + defaultValue + ); + } + return JptCommonUiMessages.DefaultEmpty; + } + + + //******** sessions xml ********* + + private PropertyValueModel<String> buildDefaultSessionsXmlFileNameHolder() { + return new PropertyAspectAdapter<Options, String>(this.optionsHolder, Options.DEFAULT_SESSIONS_XML) { + @Override + protected String buildValue_() { + return PersistenceXmlOptionsTab.this.getSessionsXmlDefaultValue(subject); + } + }; + } + + private ListValueModel<String> buildDefaultSessionsXmlFileNameListHolder() { + return new PropertyListValueModelAdapter<String>( + this.buildDefaultSessionsXmlFileNameHolder() + ); + } + + private ModifiablePropertyValueModel<String> buildSessionsXmlFileNameHolder() { + return new PropertyAspectAdapter<Options, String>(this.optionsHolder, Options.SESSIONS_XML_PROPERTY) { + @Override + protected String buildValue_() { + + String name = subject.getSessionsXml(); + if (name == null) { + name = PersistenceXmlOptionsTab.this.getSessionsXmlDefaultValue(subject); + } + return name; + } + + @Override + protected void setValue_(String value) { + + if (getSessionsXmlDefaultValue(subject).equals(value)) { + value = null; + } + subject.setSessionsXml(value); + } + }; + } + + private String getSessionsXmlDefaultValue(Options subject) { + String defaultValue = subject.getDefaultSessionsXml(); + + if (defaultValue != null) { + return NLS.bind( + JptCommonUiMessages.DefaultWithOneParam, + defaultValue + ); + } + return JptCommonUiMessages.DefaultEmpty; + } + + + //******** target database ********* + + private PropertyValueModel<String> buildDefaultTargetDatabaseHolder() { + return new PropertyAspectAdapter<Options, String>(this.optionsHolder, Options.DEFAULT_TARGET_DATABASE) { + @Override + protected String buildValue_() { + return PersistenceXmlOptionsTab.this.getTargetDatabaseDefaultValue(subject); + } + }; + } + + private ListValueModel<String> buildDefaultTargetDatabaseListHolder() { + return new PropertyListValueModelAdapter<String>( + this.buildDefaultTargetDatabaseHolder() + ); + } + + private String buildTargetDatabaseDisplayString(String targetDatabaseName) { + switch (TargetDatabase.valueOf(targetDatabaseName)) { + case attunity : + return EclipseLinkUiMessages.TargetDatabaseComposite_attunity; + case auto : + return EclipseLinkUiMessages.TargetDatabaseComposite_auto; + case cloudscape : + return EclipseLinkUiMessages.TargetDatabaseComposite_cloudscape; + case database : + return EclipseLinkUiMessages.TargetDatabaseComposite_database; + case db2 : + return EclipseLinkUiMessages.TargetDatabaseComposite_db2; + case db2mainframe : + return EclipseLinkUiMessages.TargetDatabaseComposite_db2mainframe; + case dbase : + return EclipseLinkUiMessages.TargetDatabaseComposite_dbase; + case derby : + return EclipseLinkUiMessages.TargetDatabaseComposite_derby; + case hsql : + return EclipseLinkUiMessages.TargetDatabaseComposite_hsql; + case informix : + return EclipseLinkUiMessages.TargetDatabaseComposite_informix; + case javadb : + return EclipseLinkUiMessages.TargetDatabaseComposite_javadb; + case maxdb : + return EclipseLinkUiMessages.TargetDatabaseComposite_maxdb; + case mysql : + return EclipseLinkUiMessages.TargetDatabaseComposite_mysql; + case oracle : + return EclipseLinkUiMessages.TargetDatabaseComposite_oracle; + case oracle10 : + return EclipseLinkUiMessages.TargetDatabaseComposite_oracle10; + case oracle11 : + return EclipseLinkUiMessages.TargetDatabaseComposite_oracle11; + case oracle8 : + return EclipseLinkUiMessages.TargetDatabaseComposite_oracle8; + case oracle9 : + return EclipseLinkUiMessages.TargetDatabaseComposite_oracle9; + case pointbase : + return EclipseLinkUiMessages.TargetDatabaseComposite_pointbase; + case postgresql : + return EclipseLinkUiMessages.TargetDatabaseComposite_postgresql; + case sqlanywhere : + return EclipseLinkUiMessages.TargetDatabaseComposite_sqlanywhere; + case sqlserver : + return EclipseLinkUiMessages.TargetDatabaseComposite_sqlserver; + case sybase : + return EclipseLinkUiMessages.TargetDatabaseComposite_sybase; + case symfoware : + return EclipseLinkUiMessages.TargetDatabaseComposite_symfoware; + case timesten : + return EclipseLinkUiMessages.TargetDatabaseComposite_timesten; + default : + throw new IllegalStateException(); + } + } + + private Comparator<String> buildTargetDatabaseComparator() { + return new Comparator<String>() { + public int compare(String targetDatabase1, String targetDatabase2) { + targetDatabase1 = buildTargetDatabaseDisplayString(targetDatabase1); + targetDatabase2 = buildTargetDatabaseDisplayString(targetDatabase2); + return Collator.getInstance().compare(targetDatabase1, targetDatabase2); + } + }; + } + + private StringConverter<String> buildTargetDatabaseConverter() { + return new StringConverter<String>() { + public String convertToString(String value) { + try { + TargetDatabase.valueOf(value); + value = buildTargetDatabaseDisplayString(value); + } + catch (Exception e) { + // Ignore since the value is not a TargetDatabase + } + return value; + } + }; + } + + private ModifiablePropertyValueModel<String> buildTargetDatabaseHolder() { + return new PropertyAspectAdapter<Options, String>(this.optionsHolder, Options.TARGET_DATABASE_PROPERTY) { + @Override + protected String buildValue_() { + + String name = subject.getTargetDatabase(); + if (name == null) { + name = PersistenceXmlOptionsTab.this.getTargetDatabaseDefaultValue(subject); + } + return name; + } + + @Override + protected void setValue_(String value) { + + if (getTargetDatabaseDefaultValue(subject).equals(value)) { + value = null; + } + subject.setTargetDatabase(value); + } + }; + } + + private ListValueModel<String> buildTargetDatabaseListHolder() { + ArrayList<ListValueModel<String>> holders = new ArrayList<ListValueModel<String>>(2); + holders.add(buildDefaultTargetDatabaseListHolder()); + holders.add(buildTargetDatabasesListHolder()); + return new CompositeListValueModel<ListValueModel<String>, String>(holders); + } + + private Iterator<String> buildTargetDatabases() { + return new TransformationIterator<TargetDatabase, String>(CollectionTools.iterator(TargetDatabase.values())) { + @Override + protected String transform(TargetDatabase next) { + return next.name(); + } + }; + } + + private CollectionValueModel<String> buildTargetDatabasesCollectionHolder() { + return new SimpleCollectionValueModel<String>( + CollectionTools.collection(buildTargetDatabases()) + ); + } + + private ListValueModel<String> buildTargetDatabasesListHolder() { + return new SortedListValueModelAdapter<String>( + buildTargetDatabasesCollectionHolder(), + buildTargetDatabaseComparator() + ); + } + + private String getTargetDatabaseDefaultValue(Options subject) { + String defaultValue = subject.getDefaultTargetDatabase(); + + if (defaultValue != null) { + return NLS.bind( + JptCommonUiMessages.DefaultWithOneParam, + defaultValue + ); + } + return JptCommonUiMessages.DefaultEmpty; + } + + + //******** target server ********* + + private PropertyValueModel<String> buildDefaultTargetServerHolder() { + return new PropertyAspectAdapter<Options, String>(this.optionsHolder, Options.DEFAULT_TARGET_SERVER) { + @Override + protected String buildValue_() { + return PersistenceXmlOptionsTab.this.getTargetServerDefaultValue(subject); + } + }; + } + + private ListValueModel<String> buildDefaultTargetServerListHolder() { + return new PropertyListValueModelAdapter<String>( + this.buildDefaultTargetServerHolder() + ); + } + + private String buildTargetServerDisplayString(String targetServerName) { + switch (TargetServer.valueOf(targetServerName)) { + case jboss : + return EclipseLinkUiMessages.TargetServerComposite_jboss; + case netweaver_7_1 : + return EclipseLinkUiMessages.TargetServerComposite_netweaver_7_1; + case none : + return EclipseLinkUiMessages.TargetServerComposite_none; + case oc4j : + return EclipseLinkUiMessages.TargetServerComposite_oc4j; + case sunas9 : + return EclipseLinkUiMessages.TargetServerComposite_sunas9; + case weblogic : + return EclipseLinkUiMessages.TargetServerComposite_weblogic; + case weblogic_10 : + return EclipseLinkUiMessages.TargetServerComposite_weblogic_10; + case weblogic_9 : + return EclipseLinkUiMessages.TargetServerComposite_weblogic_9; + case websphere : + return EclipseLinkUiMessages.TargetServerComposite_websphere; + case websphere_6_1 : + return EclipseLinkUiMessages.TargetServerComposite_websphere_6_1; + case websphere_7 : + return EclipseLinkUiMessages.TargetServerComposite_websphere_7; + default : + throw new IllegalStateException(); + } + } + + private Comparator<String> buildTargetServerComparator() { + return new Comparator<String>() { + public int compare(String targetServer1, String targetServer2) { + targetServer1 = buildTargetServerDisplayString(targetServer1); + targetServer2 = buildTargetServerDisplayString(targetServer2); + return Collator.getInstance().compare(targetServer1, targetServer2); + } + }; + } + + private StringConverter<String> buildTargetServerConverter() { + return new StringConverter<String>() { + public String convertToString(String value) { + try { + TargetServer.valueOf(value); + value = buildTargetServerDisplayString(value); + } + catch (Exception e) { + // Ignore since the value is not a TargetServer + } + return value; + } + }; + } + + private ModifiablePropertyValueModel<String> buildTargetServerHolder() { + return new PropertyAspectAdapter<Options, String>(this.optionsHolder, Options.TARGET_SERVER_PROPERTY) { + @Override + protected String buildValue_() { + String name = subject.getTargetServer(); + if (name == null) { + name = PersistenceXmlOptionsTab.this.getTargetServerDefaultValue(subject); + } + return name; + } + + @Override + protected void setValue_(String value) { + if (getTargetServerDefaultValue(subject).equals(value)) { + value = null; + } + subject.setTargetServer(value); + } + }; + } + + private ListValueModel<String> buildTargetServerListHolder() { + ArrayList<ListValueModel<String>> holders = new ArrayList<ListValueModel<String>>(2); + holders.add(buildDefaultTargetServerListHolder()); + holders.add(buildTargetServersListHolder()); + return new CompositeListValueModel<ListValueModel<String>, String>(holders); + } + + private Iterator<String> buildTargetServers() { + return new TransformationIterator<TargetServer, String>(CollectionTools.iterator(TargetServer.values())) { + @Override + protected String transform(TargetServer next) { + return next.name(); + } + }; + } + + private CollectionValueModel<String> buildTargetServersCollectionHolder() { + return new SimpleCollectionValueModel<String>( + CollectionTools.collection(buildTargetServers()) + ); + } + + private ListValueModel<String> buildTargetServersListHolder() { + return new SortedListValueModelAdapter<String>( + buildTargetServersCollectionHolder(), + buildTargetServerComparator() + ); + } + + private String getTargetServerDefaultValue(Options subject) { + String defaultValue = subject.getDefaultTargetServer(); + + if (defaultValue != null) { + return NLS.bind( + JptCommonUiMessages.DefaultWithOneParam, + defaultValue + ); + } + return JptCommonUiMessages.DefaultEmpty; + } + + + //********event listener ********* + + private ClassChooserPane<Options> initializeEventListenerClassChooser(Composite container, Hyperlink hyperlink) { + return new ClassChooserPane<Options>(this, this.optionsHolder, container, hyperlink) { + + @Override + protected ModifiablePropertyValueModel<String> buildTextHolder() { + return new PropertyAspectAdapter<Options, String>( + this.getSubjectHolder(), Options.SESSION_EVENT_LISTENER_PROPERTY) { + @Override + protected String buildValue_() { + return this.subject.getEventListener(); + } + + @Override + protected void setValue_(String value) { + + if (value.length() == 0) { + value = null; + } + this.subject.setEventListener(value); + } + }; + } + + @Override + protected String getClassName() { + return this.getSubject().getEventListener(); + } + + @Override + protected IJavaProject getJavaProject() { + return getSubject().getJpaProject().getJavaProject(); + } + + @Override + protected void setClassName(String className) { + this.getSubject().setEventListener(className); + } + + @Override + protected String getSuperInterfaceName() { + return Options.ECLIPSELINK_EVENT_LISTENER_CLASS_NAME; + } + }; + } + + + //******** include descriptor queries ********* + + private ModifiablePropertyValueModel<Boolean> buildIncludeDescriptorQueriesHolder() { + return new PropertyAspectAdapter<Options, Boolean>(this.optionsHolder, Options.SESSION_INCLUDE_DESCRIPTOR_QUERIES_PROPERTY) { + @Override + protected Boolean buildValue_() { + return this.subject.getIncludeDescriptorQueries(); + } + + @Override + protected void setValue_(Boolean value) { + this.subject.setIncludeDescriptorQueries(value); + } + }; + } + + private PropertyValueModel<String> buildIncludeDescriptorQueriesStringHolder() { + return new TransformationPropertyValueModel<Boolean, String>(buildDefaultIncludeDescriptorQueriesHolder()) { + @Override + protected String transform(Boolean value) { + if (value != null) { + String defaultStringValue = value.booleanValue() ? JptCommonUiMessages.Boolean_True : JptCommonUiMessages.Boolean_False; + return NLS.bind(EclipseLinkUiMessages.PersistenceXmlOptionsTab_includeDescriptorQueriesLabelDefault, defaultStringValue); + } + return EclipseLinkUiMessages.PersistenceXmlOptionsTab_includeDescriptorQueriesLabel; + } + }; + } + + private PropertyValueModel<Boolean> buildDefaultIncludeDescriptorQueriesHolder() { + return new PropertyAspectAdapter<Options, Boolean>( + this.optionsHolder, + Options.SESSION_INCLUDE_DESCRIPTOR_QUERIES_PROPERTY) + { + @Override + protected Boolean buildValue_() { + if (this.subject.getIncludeDescriptorQueries() != null) { + return null; + } + return this.subject.getDefaultIncludeDescriptorQueries(); + } + }; + } + + + //******** temporal mutable ********* + + protected ModifiablePropertyValueModel<Boolean> buildTemporalMutableHolder() { + return new PropertyAspectAdapter<Options, Boolean>(this.optionsHolder, Options.TEMPORAL_MUTABLE_PROPERTY) { + @Override + protected Boolean buildValue_() { + return this.subject.getTemporalMutable(); + } + + @Override + protected void setValue_(Boolean value) { + this.subject.setTemporalMutable(value); + } + }; + } + + protected PropertyValueModel<String> buildTemporalMutableStringHolder() { + return new TransformationPropertyValueModel<Boolean, String>(buildDefaultTemporalMutableHolder()) { + @Override + protected String transform(Boolean value) { + if (value != null) { + String defaultStringValue = value.booleanValue() ? JptCommonUiMessages.Boolean_True : JptCommonUiMessages.Boolean_False; + return NLS.bind(EclipseLinkUiMessages.PersistenceXmlOptionsTab_temporalMutableLabelDefault, defaultStringValue); + } + return EclipseLinkUiMessages.PersistenceXmlOptionsTab_temporalMutableLabel; + } + }; + } + + private PropertyValueModel<Boolean> buildDefaultTemporalMutableHolder() { + return new PropertyAspectAdapter<Options, Boolean>( + this.optionsHolder, + Options.TEMPORAL_MUTABLE_PROPERTY) + { + @Override + protected Boolean buildValue_() { + if (this.subject.getTemporalMutable() != null) { + return null; + } + return this.subject.getDefaultTemporalMutable(); + } + }; } } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/options/PersistenceXmlSchemaGenerationComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/options/PersistenceXmlSchemaGenerationComposite.java new file mode 100644 index 0000000000..4adb437f77 --- /dev/null +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/options/PersistenceXmlSchemaGenerationComposite.java @@ -0,0 +1,362 @@ +/******************************************************************************* + * Copyright (c) 2007, 2012 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.jpa.eclipselink.ui.internal.persistence.options; + +import java.util.Collection; +import org.eclipse.jpt.common.ui.WidgetFactory; +import org.eclipse.jpt.common.ui.internal.JptCommonUiMessages; +import org.eclipse.jpt.common.ui.internal.util.SWTUtil; +import org.eclipse.jpt.common.ui.internal.widgets.EnumFormComboViewer; +import org.eclipse.jpt.common.ui.internal.widgets.FolderChooserComboPane; +import org.eclipse.jpt.common.ui.internal.widgets.Pane; +import org.eclipse.jpt.common.utility.internal.StringConverter; +import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter; +import org.eclipse.jpt.common.utility.internal.model.value.PropertyListValueModelAdapter; +import org.eclipse.jpt.common.utility.model.value.ListValueModel; +import org.eclipse.jpt.common.utility.model.value.ModifiablePropertyValueModel; +import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; +import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.DdlGenerationType; +import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.OutputMode; +import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.SchemaGeneration; +import org.eclipse.jpt.jpa.eclipselink.ui.internal.EclipseLinkHelpContextIds; +import org.eclipse.jpt.jpa.eclipselink.ui.internal.EclipseLinkUiMessages; +import org.eclipse.osgi.util.NLS; +import org.eclipse.swt.widgets.Combo; +import org.eclipse.swt.widgets.Composite; + +/** + * PersistenceXmlSchemaGenerationTab + */ +public class PersistenceXmlSchemaGenerationComposite + extends Pane<SchemaGeneration> +{ + // ********** constructors/initialization ********** + public PersistenceXmlSchemaGenerationComposite( + PropertyValueModel<SchemaGeneration> subjectHolder, + Composite parent, + WidgetFactory widgetFactory) { + + super(subjectHolder, parent, widgetFactory); + } + + // ********** JpaPageComposite implementation ********** + + public String getHelpID() { + return EclipseLinkHelpContextIds.PERSISTENCE_SCHEMA_GENERATION; + } + + @Override + protected Composite addComposite(Composite container) { + return addSubPane(container, 2, 0, 0, 0, 0); + } + + @Override + protected void initializeLayout(Composite container) { + // DDL Generation Type: + this.addLabel(container, EclipseLinkUiMessages.PersistenceXmlSchemaGenerationTab_ddlGenerationTypeLabel); + this.addDdlGenerationTypeCombo(container); + + // Output Mode: + this.addLabel(container, EclipseLinkUiMessages.PersistenceXmlSchemaGenerationTab_outputModeLabel); + this.addBuildOutputModeCombo(container); + + // DDL Generation Location + this.addLabel(container, EclipseLinkUiMessages.PersistenceXmlSchemaGenerationTab_ddlGenerationLocationLabel); + this.buildDdlGenerationLocationComposite(container); + + // Create DDL File Name: + this.addLabel(container, EclipseLinkUiMessages.PersistenceXmlSchemaGenerationTab_createDdlFileNameLabel); + Combo ddlFileNameCombo = addEditableCombo( + container, + this.buildDefaultCreateDdlFileNameListHolder(), + this.buildCreateDdlFileNameHolder(), + StringConverter.Default.<String>instance(), + getHelpID() + ); + SWTUtil.attachDefaultValueHandler(ddlFileNameCombo); + + // Drop DDL File Name: + this.addLabel(container, EclipseLinkUiMessages.PersistenceXmlSchemaGenerationTab_dropDdlFileNameLabel); + Combo dropDDLCombo = addEditableCombo( + container, + this.buildDefaultDropDdlFileNameListHolder(), + this.buildDropDdlFileNameHolder(), + StringConverter.Default.<String>instance(), + getHelpID() + ); + SWTUtil.attachDefaultValueHandler(dropDDLCombo); + } + + //************ DDL generation type ************ + + private EnumFormComboViewer<SchemaGeneration, DdlGenerationType> addDdlGenerationTypeCombo(Composite container) { + return new EnumFormComboViewer<SchemaGeneration, DdlGenerationType>(this, container) { + @Override + protected void addPropertyNames(Collection<String> propertyNames) { + super.addPropertyNames(propertyNames); + propertyNames.add(SchemaGeneration.DDL_GENERATION_TYPE_PROPERTY); + } + + @Override + protected DdlGenerationType[] getChoices() { + return DdlGenerationType.values(); + } + + @Override + protected DdlGenerationType getDefaultValue() { + return this.getSubject().getDefaultDdlGenerationType(); + } + + @Override + protected String displayString(DdlGenerationType value) { + switch (value) { + case create_tables : + return EclipseLinkUiMessages.DdlGenerationTypeComposite_create_tables; + case drop_and_create_tables : + return EclipseLinkUiMessages.DdlGenerationTypeComposite_drop_and_create_tables; + case none : + return EclipseLinkUiMessages.DdlGenerationTypeComposite_none; + default : + throw new IllegalStateException(); + } + } + + @Override + protected DdlGenerationType getValue() { + return this.getSubject().getDdlGenerationType(); + } + + @Override + protected void setValue(DdlGenerationType value) { + this.getSubject().setDdlGenerationType(value); + } + + @Override + protected String getHelpId() { + return getHelpID(); + } + }; + } + + + //************ output mode ************ + + private EnumFormComboViewer<SchemaGeneration, OutputMode> addBuildOutputModeCombo(Composite container) { + return new EnumFormComboViewer<SchemaGeneration, OutputMode>(this, container) { + @Override + protected void addPropertyNames(Collection<String> propertyNames) { + super.addPropertyNames(propertyNames); + propertyNames.add(SchemaGeneration.OUTPUT_MODE_PROPERTY); + } + + @Override + protected OutputMode[] getChoices() { + return OutputMode.values(); + } + + @Override + protected OutputMode getDefaultValue() { + return this.getSubject().getDefaultOutputMode(); + } + + @Override + protected String displayString(OutputMode value) { + switch (value) { + case both : + return EclipseLinkUiMessages.OutputModeComposite_both; + case database : + return EclipseLinkUiMessages.OutputModeComposite_database; + case sql_script : + return EclipseLinkUiMessages.OutputModeComposite_sql_script; + default : + throw new IllegalStateException(); + } + } + + @Override + protected OutputMode getValue() { + return this.getSubject().getOutputMode(); + } + + @Override + protected void setValue(OutputMode value) { + this.getSubject().setOutputMode(value); + } + @Override + protected String getHelpId() { + return getHelpID(); + } + }; + } + + + //************ Create DDL file name ************ + + private PropertyValueModel<String> buildDefaultCreateDdlFileNameHolder() { + return new PropertyAspectAdapter<SchemaGeneration, String>(this.getSubjectHolder(), SchemaGeneration.DEFAULT_SCHEMA_GENERATION_CREATE_FILE_NAME) { + @Override + protected String buildValue_() { + return PersistenceXmlSchemaGenerationComposite.this.getDefaultCreateFileNameValue(subject); + } + }; + } + + private ListValueModel<String> buildDefaultCreateDdlFileNameListHolder() { + return new PropertyListValueModelAdapter<String>( + this.buildDefaultCreateDdlFileNameHolder() + ); + } + + private ModifiablePropertyValueModel<String> buildCreateDdlFileNameHolder() { + return new PropertyAspectAdapter<SchemaGeneration, String>(this.getSubjectHolder(), SchemaGeneration.CREATE_FILE_NAME_PROPERTY) { + @Override + protected String buildValue_() { + + String name = subject.getCreateFileName(); + if (name == null) { + name = PersistenceXmlSchemaGenerationComposite.this.getDefaultCreateFileNameValue(subject); + } + return name; + } + + @Override + protected void setValue_(String value) { + + if (getDefaultCreateFileNameValue(subject).equals(value)) { + value = null; + } + subject.setCreateFileName(value); + } + }; + } + + private String getDefaultCreateFileNameValue(SchemaGeneration subject) { + String defaultValue = subject.getDefaultCreateFileName(); + + if (defaultValue != null) { + return NLS.bind( + JptCommonUiMessages.DefaultWithOneParam, + defaultValue + ); + } + return JptCommonUiMessages.DefaultEmpty; + } + + + //************ Drop DDL file name ************ + + + private PropertyValueModel<String> buildDefaultDropDdlFileNameHolder() { + return new PropertyAspectAdapter<SchemaGeneration, String>(this.getSubjectHolder(), SchemaGeneration.DEFAULT_SCHEMA_GENERATION_DROP_FILE_NAME) { + @Override + protected String buildValue_() { + return PersistenceXmlSchemaGenerationComposite.this.getDefaultDropDdlFileNameValue(subject); + } + }; + } + + private ListValueModel<String> buildDefaultDropDdlFileNameListHolder() { + return new PropertyListValueModelAdapter<String>( + this.buildDefaultDropDdlFileNameHolder() + ); + } + + private ModifiablePropertyValueModel<String> buildDropDdlFileNameHolder() { + return new PropertyAspectAdapter<SchemaGeneration, String>(this.getSubjectHolder(), SchemaGeneration.DROP_FILE_NAME_PROPERTY) { + @Override + protected String buildValue_() { + + String name = subject.getDropFileName(); + if (name == null) { + name = PersistenceXmlSchemaGenerationComposite.this.getDefaultDropDdlFileNameValue(subject); + } + return name; + } + + @Override + protected void setValue_(String value) { + + if (PersistenceXmlSchemaGenerationComposite.this.getDefaultDropDdlFileNameValue(subject).equals(value)) { + value = null; + } + subject.setDropFileName(value); + } + }; + } + + private String getDefaultDropDdlFileNameValue(SchemaGeneration subject) { + String defaultValue = subject.getDefaultDropFileName(); + + if (defaultValue != null) { + return NLS.bind( + JptCommonUiMessages.DefaultWithOneParam, + defaultValue + ); + } + return JptCommonUiMessages.DefaultEmpty; + } + + private Pane<SchemaGeneration> buildDdlGenerationLocationComposite(Composite container) { + return new FolderChooserComboPane<SchemaGeneration>(this, container) { + + @Override + protected ModifiablePropertyValueModel<String> buildTextHolder() { + return new PropertyAspectAdapter<SchemaGeneration, String>( + getSubjectHolder(), SchemaGeneration.APPLICATION_LOCATION_PROPERTY) { + @Override + protected String buildValue_() { + + String name = subject.getApplicationLocation(); + if (name == null) { + name = defaultValue(subject); + } + return name; + } + + @Override + protected void setValue_(String value) { + + if (defaultValue(subject).equals(value)) { + value = null; + } + subject.setApplicationLocation(value); + } + }; + } + + private String defaultValue(SchemaGeneration subject) { + String defaultValue = subject.getDefaultApplicationLocation(); + + if (defaultValue != null) { + return NLS.bind( + JptCommonUiMessages.DefaultWithOneParam, + defaultValue + ); + } + return this.getDefaultString(); + } + + @Override + protected String getDefaultString() { + return EclipseLinkUiMessages.PersistenceXmlSchemaGenerationTab_defaultDot; + } + + @Override + protected String getDialogMessage() { + return EclipseLinkUiMessages.DdlGenerationLocationComposite_dialogMessage; + } + + @Override + protected String getDialogTitle() { + return EclipseLinkUiMessages.DdlGenerationLocationComposite_dialogTitle; + } + }; + } +}
\ No newline at end of file diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/options/SessionNameComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/options/SessionNameComposite.java deleted file mode 100644 index c104501b51..0000000000 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/options/SessionNameComposite.java +++ /dev/null @@ -1,107 +0,0 @@ -/******************************************************************************* -* Copyright (c) 2008, 2012 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.jpa.eclipselink.ui.internal.persistence.options; - -import org.eclipse.jpt.common.ui.internal.JptCommonUiMessages; -import org.eclipse.jpt.common.ui.internal.util.SWTUtil; -import org.eclipse.jpt.common.ui.internal.widgets.Pane; -import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter; -import org.eclipse.jpt.common.utility.internal.model.value.PropertyListValueModelAdapter; -import org.eclipse.jpt.common.utility.model.value.ListValueModel; -import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; -import org.eclipse.jpt.common.utility.model.value.ModifiablePropertyValueModel; -import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.Options; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.EclipseLinkHelpContextIds; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.EclipseLinkUiMessages; -import org.eclipse.osgi.util.NLS; -import org.eclipse.swt.widgets.Combo; -import org.eclipse.swt.widgets.Composite; - -/** - * SessionNameComposite - */ -public class SessionNameComposite extends Pane<Options> -{ - /** - * Creates a new <code>SessionNameComposite</code>. - * - * @param parentPane The parent container of this one - * @param parent The parent container - */ - public SessionNameComposite( - Pane<? extends Options> parentPane, - Composite parent) { - - super(parentPane, parent); - } - - private PropertyValueModel<String> buildDefaultSessionNameHolder() { - return new PropertyAspectAdapter<Options, String>(this.getSubjectHolder(), Options.DEFAULT_SESSION_NAME) { - @Override - protected String buildValue_() { - return SessionNameComposite.this.getDefaultValue(subject); - } - }; - } - - private ListValueModel<String> buildDefaultSessionNameListHolder() { - return new PropertyListValueModelAdapter<String>( - this.buildDefaultSessionNameHolder() - ); - } - - private ModifiablePropertyValueModel<String> buildSessionNameHolder() { - return new PropertyAspectAdapter<Options, String>(this.getSubjectHolder(), Options.SESSION_NAME_PROPERTY) { - @Override - protected String buildValue_() { - - String name = subject.getSessionName(); - if (name == null) { - name = SessionNameComposite.this.getDefaultValue(subject); - } - return name; - } - - @Override - protected void setValue_(String value) { - - if (getDefaultValue(subject).equals(value)) { - value = null; - } - subject.setSessionName(value); - } - }; - } - - private String getDefaultValue(Options subject) { - String defaultValue = subject.getDefaultSessionName(); - - if (defaultValue != null) { - return NLS.bind( - JptCommonUiMessages.DefaultWithOneParam, - defaultValue - ); - } - return JptCommonUiMessages.DefaultEmpty; - } - - @Override - protected void initializeLayout(Composite container) { - - Combo combo = addLabeledEditableCombo( - container, - EclipseLinkUiMessages.PersistenceXmlOptionsTab_sessionName, - this.buildDefaultSessionNameListHolder(), - this.buildSessionNameHolder(), - EclipseLinkHelpContextIds.PERSISTENCE_OPTIONS_SESSION_NAME - ); - SWTUtil.attachDefaultValueHandler(combo); - } -} diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/options/SessionsXmlComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/options/SessionsXmlComposite.java deleted file mode 100644 index fa56c59ad6..0000000000 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/options/SessionsXmlComposite.java +++ /dev/null @@ -1,107 +0,0 @@ -/******************************************************************************* -* Copyright (c) 2008, 2012 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.jpa.eclipselink.ui.internal.persistence.options; - -import org.eclipse.jpt.common.ui.internal.JptCommonUiMessages; -import org.eclipse.jpt.common.ui.internal.util.SWTUtil; -import org.eclipse.jpt.common.ui.internal.widgets.Pane; -import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter; -import org.eclipse.jpt.common.utility.internal.model.value.PropertyListValueModelAdapter; -import org.eclipse.jpt.common.utility.model.value.ListValueModel; -import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; -import org.eclipse.jpt.common.utility.model.value.ModifiablePropertyValueModel; -import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.Options; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.EclipseLinkHelpContextIds; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.EclipseLinkUiMessages; -import org.eclipse.osgi.util.NLS; -import org.eclipse.swt.widgets.Combo; -import org.eclipse.swt.widgets.Composite; - -/** - * SessionsXmlComposite - */ -public class SessionsXmlComposite extends Pane<Options> -{ - /** - * Creates a new <code>SessionsXmlComposite</code>. - * - * @param parentPane The parent container of this one - * @param parent The parent container - */ - public SessionsXmlComposite( - Pane<? extends Options> parentPane, - Composite parent) { - - super(parentPane, parent); - } - - private PropertyValueModel<String> buildDefaultSessionsXmlFileNameHolder() { - return new PropertyAspectAdapter<Options, String>(this.getSubjectHolder(), Options.DEFAULT_SESSIONS_XML) { - @Override - protected String buildValue_() { - return SessionsXmlComposite.this.getDefaultValue(subject); - } - }; - } - - private ListValueModel<String> buildDefaultSessionsXmlFileNameListHolder() { - return new PropertyListValueModelAdapter<String>( - this.buildDefaultSessionsXmlFileNameHolder() - ); - } - - private ModifiablePropertyValueModel<String> buildSessionsXmlFileNameHolder() { - return new PropertyAspectAdapter<Options, String>(this.getSubjectHolder(), Options.SESSIONS_XML_PROPERTY) { - @Override - protected String buildValue_() { - - String name = subject.getSessionsXml(); - if (name == null) { - name = SessionsXmlComposite.this.getDefaultValue(subject); - } - return name; - } - - @Override - protected void setValue_(String value) { - - if (getDefaultValue(subject).equals(value)) { - value = null; - } - subject.setSessionsXml(value); - } - }; - } - - private String getDefaultValue(Options subject) { - String defaultValue = subject.getDefaultSessionsXml(); - - if (defaultValue != null) { - return NLS.bind( - JptCommonUiMessages.DefaultWithOneParam, - defaultValue - ); - } - return JptCommonUiMessages.DefaultEmpty; - } - - @Override - protected void initializeLayout(Composite container) { - - Combo combo = addLabeledEditableCombo( - container, - EclipseLinkUiMessages.PersistenceXmlOptionsTab_sessionsXml, - this.buildDefaultSessionsXmlFileNameListHolder(), - this.buildSessionsXmlFileNameHolder(), - EclipseLinkHelpContextIds.PERSISTENCE_OPTIONS_SESSIONS_XML - ); - SWTUtil.attachDefaultValueHandler(combo); - } -} diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/options/TargetDatabaseComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/options/TargetDatabaseComposite.java deleted file mode 100644 index 122de1cd8f..0000000000 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/options/TargetDatabaseComposite.java +++ /dev/null @@ -1,232 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2008, 2012 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.jpa.eclipselink.ui.internal.persistence.options; - -import java.util.ArrayList; -import java.util.Comparator; -import java.util.Iterator; -import org.eclipse.jpt.common.ui.internal.JptCommonUiMessages; -import org.eclipse.jpt.common.ui.internal.util.SWTUtil; -import org.eclipse.jpt.common.ui.internal.widgets.Pane; -import org.eclipse.jpt.common.utility.internal.CollectionTools; -import org.eclipse.jpt.common.utility.internal.StringConverter; -import org.eclipse.jpt.common.utility.internal.iterators.TransformationIterator; -import org.eclipse.jpt.common.utility.internal.model.value.CompositeListValueModel; -import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter; -import org.eclipse.jpt.common.utility.internal.model.value.PropertyListValueModelAdapter; -import org.eclipse.jpt.common.utility.internal.model.value.SimpleCollectionValueModel; -import org.eclipse.jpt.common.utility.internal.model.value.SortedListValueModelAdapter; -import org.eclipse.jpt.common.utility.model.value.CollectionValueModel; -import org.eclipse.jpt.common.utility.model.value.ListValueModel; -import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; -import org.eclipse.jpt.common.utility.model.value.ModifiablePropertyValueModel; -import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.Options; -import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.TargetDatabase; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.EclipseLinkHelpContextIds; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.EclipseLinkUiMessages; -import org.eclipse.osgi.util.NLS; -import org.eclipse.swt.widgets.Combo; -import org.eclipse.swt.widgets.Composite; -import com.ibm.icu.text.Collator; - -/** - * TargetDatabaseComposite - */ -public class TargetDatabaseComposite extends Pane<Options> -{ - /** - * Creates a new <code>TargetDatabaseComposite</code>. - * - * @param parentPane The parent container of this one - * @param parent The parent container - */ - public TargetDatabaseComposite( - Pane<? extends Options> parentPane, - Composite parent) { - - super(parentPane, parent); - } - - private PropertyValueModel<String> buildDefaultTargetDatabaseHolder() { - return new PropertyAspectAdapter<Options, String>(this.getSubjectHolder(), Options.DEFAULT_TARGET_DATABASE) { - @Override - protected String buildValue_() { - return TargetDatabaseComposite.this.getDefaultValue(subject); - } - }; - } - - private ListValueModel<String> buildDefaultTargetDatabaseListHolder() { - return new PropertyListValueModelAdapter<String>( - this.buildDefaultTargetDatabaseHolder() - ); - } - - private String buildDisplayString(String targetDatabaseName) { - switch (TargetDatabase.valueOf(targetDatabaseName)) { - case attunity : - return EclipseLinkUiMessages.TargetDatabaseComposite_attunity; - case auto : - return EclipseLinkUiMessages.TargetDatabaseComposite_auto; - case cloudscape : - return EclipseLinkUiMessages.TargetDatabaseComposite_cloudscape; - case database : - return EclipseLinkUiMessages.TargetDatabaseComposite_database; - case db2 : - return EclipseLinkUiMessages.TargetDatabaseComposite_db2; - case db2mainframe : - return EclipseLinkUiMessages.TargetDatabaseComposite_db2mainframe; - case dbase : - return EclipseLinkUiMessages.TargetDatabaseComposite_dbase; - case derby : - return EclipseLinkUiMessages.TargetDatabaseComposite_derby; - case hsql : - return EclipseLinkUiMessages.TargetDatabaseComposite_hsql; - case informix : - return EclipseLinkUiMessages.TargetDatabaseComposite_informix; - case javadb : - return EclipseLinkUiMessages.TargetDatabaseComposite_javadb; - case maxdb : - return EclipseLinkUiMessages.TargetDatabaseComposite_maxdb; - case mysql : - return EclipseLinkUiMessages.TargetDatabaseComposite_mysql; - case oracle : - return EclipseLinkUiMessages.TargetDatabaseComposite_oracle; - case oracle10 : - return EclipseLinkUiMessages.TargetDatabaseComposite_oracle10; - case oracle11 : - return EclipseLinkUiMessages.TargetDatabaseComposite_oracle11; - case oracle8 : - return EclipseLinkUiMessages.TargetDatabaseComposite_oracle8; - case oracle9 : - return EclipseLinkUiMessages.TargetDatabaseComposite_oracle9; - case pointbase : - return EclipseLinkUiMessages.TargetDatabaseComposite_pointbase; - case postgresql : - return EclipseLinkUiMessages.TargetDatabaseComposite_postgresql; - case sqlanywhere : - return EclipseLinkUiMessages.TargetDatabaseComposite_sqlanywhere; - case sqlserver : - return EclipseLinkUiMessages.TargetDatabaseComposite_sqlserver; - case sybase : - return EclipseLinkUiMessages.TargetDatabaseComposite_sybase; - case symfoware : - return EclipseLinkUiMessages.TargetDatabaseComposite_symfoware; - case timesten : - return EclipseLinkUiMessages.TargetDatabaseComposite_timesten; - default : - throw new IllegalStateException(); - } - } - - private Comparator<String> buildTargetDatabaseComparator() { - return new Comparator<String>() { - public int compare(String targetDatabase1, String targetDatabase2) { - targetDatabase1 = buildDisplayString(targetDatabase1); - targetDatabase2 = buildDisplayString(targetDatabase2); - return Collator.getInstance().compare(targetDatabase1, targetDatabase2); - } - }; - } - - private StringConverter<String> buildTargetDatabaseConverter() { - return new StringConverter<String>() { - public String convertToString(String value) { - try { - TargetDatabase.valueOf(value); - value = buildDisplayString(value); - } - catch (Exception e) { - // Ignore since the value is not a TargetDatabase - } - return value; - } - }; - } - - private ModifiablePropertyValueModel<String> buildTargetDatabaseHolder() { - return new PropertyAspectAdapter<Options, String>(this.getSubjectHolder(), Options.TARGET_DATABASE_PROPERTY) { - @Override - protected String buildValue_() { - - String name = subject.getTargetDatabase(); - if (name == null) { - name = TargetDatabaseComposite.this.getDefaultValue(subject); - } - return name; - } - - @Override - protected void setValue_(String value) { - - if (getDefaultValue(subject).equals(value)) { - value = null; - } - subject.setTargetDatabase(value); - } - }; - } - - private ListValueModel<String> buildTargetDatabaseListHolder() { - ArrayList<ListValueModel<String>> holders = new ArrayList<ListValueModel<String>>(2); - holders.add(buildDefaultTargetDatabaseListHolder()); - holders.add(buildTargetDatabasesListHolder()); - return new CompositeListValueModel<ListValueModel<String>, String>(holders); - } - - private Iterator<String> buildTargetDatabases() { - return new TransformationIterator<TargetDatabase, String>(CollectionTools.iterator(TargetDatabase.values())) { - @Override - protected String transform(TargetDatabase next) { - return next.name(); - } - }; - } - - private CollectionValueModel<String> buildTargetDatabasesCollectionHolder() { - return new SimpleCollectionValueModel<String>( - CollectionTools.collection(buildTargetDatabases()) - ); - } - - private ListValueModel<String> buildTargetDatabasesListHolder() { - return new SortedListValueModelAdapter<String>( - buildTargetDatabasesCollectionHolder(), - buildTargetDatabaseComparator() - ); - } - - private String getDefaultValue(Options subject) { - String defaultValue = subject.getDefaultTargetDatabase(); - - if (defaultValue != null) { - return NLS.bind( - JptCommonUiMessages.DefaultWithOneParam, - defaultValue - ); - } - return JptCommonUiMessages.DefaultEmpty; - } - - @Override - protected void initializeLayout(Composite container) { - - Combo combo = addLabeledEditableCombo( - container, - EclipseLinkUiMessages.PersistenceXmlOptionsTab_targetDatabaseLabel, - this.buildTargetDatabaseListHolder(), - this.buildTargetDatabaseHolder(), - this.buildTargetDatabaseConverter(), - EclipseLinkHelpContextIds.PERSISTENCE_OPTIONS_TARGET_DATABASE - ); - - SWTUtil.attachDefaultValueHandler(combo); - } -} diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/options/TargetServerComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/options/TargetServerComposite.java deleted file mode 100644 index f92fa70f0c..0000000000 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/options/TargetServerComposite.java +++ /dev/null @@ -1,203 +0,0 @@ -/******************************************************************************* -* Copyright (c) 2008, 2012 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.jpa.eclipselink.ui.internal.persistence.options; - -import java.util.ArrayList; -import java.util.Comparator; -import java.util.Iterator; -import org.eclipse.jpt.common.ui.internal.JptCommonUiMessages; -import org.eclipse.jpt.common.ui.internal.util.SWTUtil; -import org.eclipse.jpt.common.ui.internal.widgets.Pane; -import org.eclipse.jpt.common.utility.internal.CollectionTools; -import org.eclipse.jpt.common.utility.internal.StringConverter; -import org.eclipse.jpt.common.utility.internal.iterators.TransformationIterator; -import org.eclipse.jpt.common.utility.internal.model.value.CompositeListValueModel; -import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter; -import org.eclipse.jpt.common.utility.internal.model.value.PropertyListValueModelAdapter; -import org.eclipse.jpt.common.utility.internal.model.value.SimpleCollectionValueModel; -import org.eclipse.jpt.common.utility.internal.model.value.SortedListValueModelAdapter; -import org.eclipse.jpt.common.utility.model.value.CollectionValueModel; -import org.eclipse.jpt.common.utility.model.value.ListValueModel; -import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; -import org.eclipse.jpt.common.utility.model.value.ModifiablePropertyValueModel; -import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.Options; -import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.TargetServer; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.EclipseLinkHelpContextIds; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.EclipseLinkUiMessages; -import org.eclipse.osgi.util.NLS; -import org.eclipse.swt.widgets.Combo; -import org.eclipse.swt.widgets.Composite; -import com.ibm.icu.text.Collator; - -/** - * TargetServerComposite - */ -public class TargetServerComposite extends Pane<Options> -{ - /** - * Creates a new <code>TargetServerComposite</code>. - * - * @param parentPane The parent container of this one - * @param parent The parent container - */ - public TargetServerComposite( - Pane<? extends Options> parentPane, - Composite parent) { - - super(parentPane, parent); - } - - private PropertyValueModel<String> buildDefaultTargetServerHolder() { - return new PropertyAspectAdapter<Options, String>(this.getSubjectHolder(), Options.DEFAULT_TARGET_SERVER) { - @Override - protected String buildValue_() { - return TargetServerComposite.this.getDefaultValue(subject); - } - }; - } - - private ListValueModel<String> buildDefaultTargetServerListHolder() { - return new PropertyListValueModelAdapter<String>( - this.buildDefaultTargetServerHolder() - ); - } - - private String buildDisplayString(String targetServerName) { - switch (TargetServer.valueOf(targetServerName)) { - case jboss : - return EclipseLinkUiMessages.TargetServerComposite_jboss; - case netweaver_7_1 : - return EclipseLinkUiMessages.TargetServerComposite_netweaver_7_1; - case none : - return EclipseLinkUiMessages.TargetServerComposite_none; - case oc4j : - return EclipseLinkUiMessages.TargetServerComposite_oc4j; - case sunas9 : - return EclipseLinkUiMessages.TargetServerComposite_sunas9; - case weblogic : - return EclipseLinkUiMessages.TargetServerComposite_weblogic; - case weblogic_10 : - return EclipseLinkUiMessages.TargetServerComposite_weblogic_10; - case weblogic_9 : - return EclipseLinkUiMessages.TargetServerComposite_weblogic_9; - case websphere : - return EclipseLinkUiMessages.TargetServerComposite_websphere; - case websphere_6_1 : - return EclipseLinkUiMessages.TargetServerComposite_websphere_6_1; - case websphere_7 : - return EclipseLinkUiMessages.TargetServerComposite_websphere_7; - default : - throw new IllegalStateException(); - } - } - - private Comparator<String> buildTargetServerComparator() { - return new Comparator<String>() { - public int compare(String targetServer1, String targetServer2) { - targetServer1 = buildDisplayString(targetServer1); - targetServer2 = buildDisplayString(targetServer2); - return Collator.getInstance().compare(targetServer1, targetServer2); - } - }; - } - - private StringConverter<String> buildTargetServerConverter() { - return new StringConverter<String>() { - public String convertToString(String value) { - try { - TargetServer.valueOf(value); - value = buildDisplayString(value); - } - catch (Exception e) { - // Ignore since the value is not a TargetServer - } - return value; - } - }; - } - - private ModifiablePropertyValueModel<String> buildTargetServerHolder() { - return new PropertyAspectAdapter<Options, String>(this.getSubjectHolder(), Options.TARGET_SERVER_PROPERTY) { - @Override - protected String buildValue_() { - - String name = subject.getTargetServer(); - if (name == null) { - name = TargetServerComposite.this.getDefaultValue(subject); - } - return name; - } - - @Override - protected void setValue_(String value) { - - if (getDefaultValue(subject).equals(value)) { - value = null; - } - subject.setTargetServer(value); - } - }; - } - - private ListValueModel<String> buildTargetServerListHolder() { - ArrayList<ListValueModel<String>> holders = new ArrayList<ListValueModel<String>>(2); - holders.add(buildDefaultTargetServerListHolder()); - holders.add(buildTargetServersListHolder()); - return new CompositeListValueModel<ListValueModel<String>, String>(holders); - } - - private Iterator<String> buildTargetServers() { - return new TransformationIterator<TargetServer, String>(CollectionTools.iterator(TargetServer.values())) { - @Override - protected String transform(TargetServer next) { - return next.name(); - } - }; - } - - private CollectionValueModel<String> buildTargetServersCollectionHolder() { - return new SimpleCollectionValueModel<String>( - CollectionTools.collection(buildTargetServers()) - ); - } - - private ListValueModel<String> buildTargetServersListHolder() { - return new SortedListValueModelAdapter<String>( - buildTargetServersCollectionHolder(), - buildTargetServerComparator() - ); - } - - private String getDefaultValue(Options subject) { - String defaultValue = subject.getDefaultTargetServer(); - - if (defaultValue != null) { - return NLS.bind( - JptCommonUiMessages.DefaultWithOneParam, - defaultValue - ); - } - return JptCommonUiMessages.DefaultEmpty; - } - - @Override - protected void initializeLayout(Composite container) { - Combo combo = addLabeledEditableCombo( - container, - EclipseLinkUiMessages.PersistenceXmlOptionsTab_targetServerLabel, - this.buildTargetServerListHolder(), - this.buildTargetServerHolder(), - this.buildTargetServerConverter(), - EclipseLinkHelpContextIds.PERSISTENCE_OPTIONS_TARGET_SERVER - ); - - SWTUtil.attachDefaultValueHandler(combo); - } -} diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/options/TemporalMutableComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/options/TemporalMutableComposite.java deleted file mode 100644 index 0bbfbce083..0000000000 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/options/TemporalMutableComposite.java +++ /dev/null @@ -1,97 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2008, 2012 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.jpa.eclipselink.ui.internal.persistence.options; - -import org.eclipse.jpt.common.ui.internal.JptCommonUiMessages; -import org.eclipse.jpt.common.ui.internal.widgets.Pane; -import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter; -import org.eclipse.jpt.common.utility.internal.model.value.TransformationPropertyValueModel; -import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; -import org.eclipse.jpt.common.utility.model.value.ModifiablePropertyValueModel; -import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.Options; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.EclipseLinkHelpContextIds; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.EclipseLinkUiMessages; -import org.eclipse.osgi.util.NLS; -import org.eclipse.swt.widgets.Composite; - -/** - * TemporalMutableComposite - */ -public class TemporalMutableComposite extends Pane<Options> -{ - /** - * Creates a new <code>TemporalMutableComposite</code>. - * - * @param parentController - * The parent container of this one - * @param parent - * The parent container - */ - public TemporalMutableComposite( - Pane<? extends Options> parentComposite, - Composite parent) { - - super(parentComposite, parent); - } - - @Override - protected void initializeLayout(Composite container) { - - this.addTriStateCheckBoxWithDefault( - container, - EclipseLinkUiMessages.PersistenceXmlOptionsTab_temporalMutableLabel, - this.buildTemporalMutableHolder(), - this.buildTemporalMutableStringHolder(), - EclipseLinkHelpContextIds.PERSISTENCE_OPTIONS - ); - } - - private ModifiablePropertyValueModel<Boolean> buildTemporalMutableHolder() { - return new PropertyAspectAdapter<Options, Boolean>(getSubjectHolder(), Options.TEMPORAL_MUTABLE_PROPERTY) { - @Override - protected Boolean buildValue_() { - return this.subject.getTemporalMutable(); - } - - @Override - protected void setValue_(Boolean value) { - this.subject.setTemporalMutable(value); - } - }; - } - - private PropertyValueModel<String> buildTemporalMutableStringHolder() { - return new TransformationPropertyValueModel<Boolean, String>(buildDefaultTemporalMutableHolder()) { - @Override - protected String transform(Boolean value) { - if (value != null) { - String defaultStringValue = value.booleanValue() ? JptCommonUiMessages.Boolean_True : JptCommonUiMessages.Boolean_False; - return NLS.bind(EclipseLinkUiMessages.PersistenceXmlOptionsTab_temporalMutableLabelDefault, defaultStringValue); - } - return EclipseLinkUiMessages.PersistenceXmlOptionsTab_temporalMutableLabel; - } - }; - } - - private PropertyValueModel<Boolean> buildDefaultTemporalMutableHolder() { - return new PropertyAspectAdapter<Options, Boolean>( - getSubjectHolder(), - Options.TEMPORAL_MUTABLE_PROPERTY) - { - @Override - protected Boolean buildValue_() { - if (this.subject.getTemporalMutable() != null) { - return null; - } - return this.subject.getDefaultTemporalMutable(); - } - }; - } -} diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/schema/generation/CreateDdlFileNameComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/schema/generation/CreateDdlFileNameComposite.java deleted file mode 100644 index 6ab6de68a3..0000000000 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/schema/generation/CreateDdlFileNameComposite.java +++ /dev/null @@ -1,106 +0,0 @@ -/******************************************************************************* -* Copyright (c) 2008, 2012 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.jpa.eclipselink.ui.internal.persistence.schema.generation; - -import org.eclipse.jpt.common.ui.internal.JptCommonUiMessages; -import org.eclipse.jpt.common.ui.internal.util.SWTUtil; -import org.eclipse.jpt.common.ui.internal.widgets.Pane; -import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter; -import org.eclipse.jpt.common.utility.internal.model.value.PropertyListValueModelAdapter; -import org.eclipse.jpt.common.utility.model.value.ListValueModel; -import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; -import org.eclipse.jpt.common.utility.model.value.ModifiablePropertyValueModel; -import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.SchemaGeneration; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.EclipseLinkHelpContextIds; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.EclipseLinkUiMessages; -import org.eclipse.osgi.util.NLS; -import org.eclipse.swt.widgets.Combo; -import org.eclipse.swt.widgets.Composite; - -/** - * CreateDdlFileNameComposite - */ -public class CreateDdlFileNameComposite extends Pane<SchemaGeneration> -{ - /** - * Creates a new <code>CreateDdlFileNameComposite</code>. - * - * @param parentPane The parent container of this one - * @param parent The parent container - */ - public CreateDdlFileNameComposite( - Pane<? extends SchemaGeneration> parentPane, - Composite parent) { - - super(parentPane, parent); - } - - private PropertyValueModel<String> buildDefaultCreateDdlFileNameHolder() { - return new PropertyAspectAdapter<SchemaGeneration, String>(this.getSubjectHolder(), SchemaGeneration.DEFAULT_SCHEMA_GENERATION_CREATE_FILE_NAME) { - @Override - protected String buildValue_() { - return CreateDdlFileNameComposite.this.getDefaultValue(subject); - } - }; - } - - private ListValueModel<String> buildDefaultCreateDdlFileNameListHolder() { - return new PropertyListValueModelAdapter<String>( - this.buildDefaultCreateDdlFileNameHolder() - ); - } - - private ModifiablePropertyValueModel<String> buildCreateDdlFileNameHolder() { - return new PropertyAspectAdapter<SchemaGeneration, String>(this.getSubjectHolder(), SchemaGeneration.CREATE_FILE_NAME_PROPERTY) { - @Override - protected String buildValue_() { - - String name = subject.getCreateFileName(); - if (name == null) { - name = CreateDdlFileNameComposite.this.getDefaultValue(subject); - } - return name; - } - - @Override - protected void setValue_(String value) { - - if (getDefaultValue(subject).equals(value)) { - value = null; - } - subject.setCreateFileName(value); - } - }; - } - - private String getDefaultValue(SchemaGeneration subject) { - String defaultValue = subject.getDefaultCreateFileName(); - - if (defaultValue != null) { - return NLS.bind( - JptCommonUiMessages.DefaultWithOneParam, - defaultValue - ); - } - return JptCommonUiMessages.DefaultEmpty; - } - - @Override - protected void initializeLayout(Composite container) { - Combo combo = addLabeledEditableCombo( - container, - EclipseLinkUiMessages.PersistenceXmlSchemaGenerationTab_createDdlFileNameLabel, - this.buildDefaultCreateDdlFileNameListHolder(), - this.buildCreateDdlFileNameHolder(), - EclipseLinkHelpContextIds.PERSISTENCE_SCHEMA_GENERATION - ); - SWTUtil.attachDefaultValueHandler(combo); - } -} diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/schema/generation/DdlGenerationLocationComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/schema/generation/DdlGenerationLocationComposite.java deleted file mode 100644 index 3db55a53bc..0000000000 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/schema/generation/DdlGenerationLocationComposite.java +++ /dev/null @@ -1,98 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2008, 2012 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.jpa.eclipselink.ui.internal.persistence.schema.generation; - -import org.eclipse.jpt.common.ui.internal.JptCommonUiMessages; -import org.eclipse.jpt.common.ui.internal.widgets.FolderChooserComboPane; -import org.eclipse.jpt.common.ui.internal.widgets.Pane; -import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter; -import org.eclipse.jpt.common.utility.model.value.ModifiablePropertyValueModel; -import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.SchemaGeneration; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.EclipseLinkUiMessages; -import org.eclipse.osgi.util.NLS; -import org.eclipse.swt.widgets.Composite; - -/** - * DdlGenerationLocationComposite - */ -public class DdlGenerationLocationComposite extends Pane<SchemaGeneration> -{ - public DdlGenerationLocationComposite(Pane<? extends SchemaGeneration> parentPane, - Composite parent) { - - super(parentPane, parent); - } - - @Override - protected void initializeLayout(Composite container) { - - new FolderChooserComboPane<SchemaGeneration>(this, container) { - - @Override - protected ModifiablePropertyValueModel<String> buildTextHolder() { - return new PropertyAspectAdapter<SchemaGeneration, String>( - getSubjectHolder(), SchemaGeneration.APPLICATION_LOCATION_PROPERTY) { - @Override - protected String buildValue_() { - - String name = subject.getApplicationLocation(); - if (name == null) { - name = defaultValue(subject); - } - return name; - } - - @Override - protected void setValue_(String value) { - - if (defaultValue(subject).equals(value)) { - value = null; - } - subject.setApplicationLocation(value); - } - }; - } - - private String defaultValue(SchemaGeneration subject) { - String defaultValue = subject.getDefaultApplicationLocation(); - - if (defaultValue != null) { - return NLS.bind( - JptCommonUiMessages.DefaultWithOneParam, - defaultValue - ); - } - else { - return this.getDefaultString(); - } - } - - @Override - protected String getDefaultString() { - return EclipseLinkUiMessages.PersistenceXmlSchemaGenerationTab_defaultDot; - } - - @Override - protected String getDialogMessage() { - return EclipseLinkUiMessages.DdlGenerationLocationComposite_dialogMessage; - } - - @Override - protected String getDialogTitle() { - return EclipseLinkUiMessages.DdlGenerationLocationComposite_dialogTitle; - } - - @Override - protected String getLabelText() { - return EclipseLinkUiMessages.PersistenceXmlSchemaGenerationTab_ddlGenerationLocationLabel; - } - }; - } -} diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/schema/generation/DdlGenerationTypeComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/schema/generation/DdlGenerationTypeComposite.java deleted file mode 100644 index 8f7a65cca8..0000000000 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/schema/generation/DdlGenerationTypeComposite.java +++ /dev/null @@ -1,96 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2008, 2012 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.jpa.eclipselink.ui.internal.persistence.schema.generation; - -import java.util.Collection; -import org.eclipse.jpt.common.ui.internal.widgets.EnumFormComboViewer; -import org.eclipse.jpt.common.ui.internal.widgets.Pane; -import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.DdlGenerationType; -import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.SchemaGeneration; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.EclipseLinkHelpContextIds; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.EclipseLinkUiMessages; -import org.eclipse.swt.widgets.Composite; - -/** - * DdlGenerationTypeComposite - */ -public class DdlGenerationTypeComposite - extends Pane<SchemaGeneration> -{ - /** - * Creates a new <code>DdlGenerationTypeComposite</code>. - * - * @param parentController - * The parent container of this one - * @param parent - * The parent container - */ - public DdlGenerationTypeComposite( - Pane<? extends SchemaGeneration> parentComposite, - Composite parent) { - - super(parentComposite, parent); - } - - private EnumFormComboViewer<SchemaGeneration, DdlGenerationType> addDdlGenerationTypeCombo(Composite container) { - return new EnumFormComboViewer<SchemaGeneration, DdlGenerationType>(this, container) { - @Override - protected void addPropertyNames(Collection<String> propertyNames) { - super.addPropertyNames(propertyNames); - propertyNames.add(SchemaGeneration.DDL_GENERATION_TYPE_PROPERTY); - } - - @Override - protected DdlGenerationType[] getChoices() { - return DdlGenerationType.values(); - } - - @Override - protected DdlGenerationType getDefaultValue() { - return this.getSubject().getDefaultDdlGenerationType(); - } - - @Override - protected String displayString(DdlGenerationType value) { - switch (value) { - case create_tables : - return EclipseLinkUiMessages.DdlGenerationTypeComposite_create_tables; - case drop_and_create_tables : - return EclipseLinkUiMessages.DdlGenerationTypeComposite_drop_and_create_tables; - case none : - return EclipseLinkUiMessages.DdlGenerationTypeComposite_none; - default : - throw new IllegalStateException(); - } - } - - @Override - protected DdlGenerationType getValue() { - return this.getSubject().getDdlGenerationType(); - } - - @Override - protected void setValue(DdlGenerationType value) { - this.getSubject().setDdlGenerationType(value); - } - }; - } - - @Override - protected void initializeLayout(Composite container) { - - this.addLabeledComposite( - container, - EclipseLinkUiMessages.PersistenceXmlSchemaGenerationTab_ddlGenerationTypeLabel, - addDdlGenerationTypeCombo( container), - EclipseLinkHelpContextIds.PERSISTENCE_SCHEMA_GENERATION - ); - } -} diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/schema/generation/DropDdlFileNameComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/schema/generation/DropDdlFileNameComposite.java deleted file mode 100644 index 528f1d984f..0000000000 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/schema/generation/DropDdlFileNameComposite.java +++ /dev/null @@ -1,106 +0,0 @@ -/******************************************************************************* -* Copyright (c) 2008, 2012 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.jpa.eclipselink.ui.internal.persistence.schema.generation; - -import org.eclipse.jpt.common.ui.internal.JptCommonUiMessages; -import org.eclipse.jpt.common.ui.internal.util.SWTUtil; -import org.eclipse.jpt.common.ui.internal.widgets.Pane; -import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter; -import org.eclipse.jpt.common.utility.internal.model.value.PropertyListValueModelAdapter; -import org.eclipse.jpt.common.utility.model.value.ListValueModel; -import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; -import org.eclipse.jpt.common.utility.model.value.ModifiablePropertyValueModel; -import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.SchemaGeneration; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.EclipseLinkHelpContextIds; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.EclipseLinkUiMessages; -import org.eclipse.osgi.util.NLS; -import org.eclipse.swt.widgets.Combo; -import org.eclipse.swt.widgets.Composite; - -/** - * DropDdlFileNameComposite - */ -public class DropDdlFileNameComposite extends Pane<SchemaGeneration> -{ - /** - * Creates a new <code>DropDdlFileNameComposite</code>. - * - * @param parentPane The parent container of this one - * @param parent The parent container - */ - public DropDdlFileNameComposite( - Pane<? extends SchemaGeneration> parentPane, - Composite parent) { - - super(parentPane, parent); - } - - private PropertyValueModel<String> buildDefaultDropDdlFileNameHolder() { - return new PropertyAspectAdapter<SchemaGeneration, String>(this.getSubjectHolder(), SchemaGeneration.DEFAULT_SCHEMA_GENERATION_DROP_FILE_NAME) { - @Override - protected String buildValue_() { - return DropDdlFileNameComposite.this.getDefaultValue(subject); - } - }; - } - - private ListValueModel<String> buildDefaultDropDdlFileNameListHolder() { - return new PropertyListValueModelAdapter<String>( - this.buildDefaultDropDdlFileNameHolder() - ); - } - - private ModifiablePropertyValueModel<String> buildDropDdlFileNameHolder() { - return new PropertyAspectAdapter<SchemaGeneration, String>(this.getSubjectHolder(), SchemaGeneration.DROP_FILE_NAME_PROPERTY) { - @Override - protected String buildValue_() { - - String name = subject.getDropFileName(); - if (name == null) { - name = DropDdlFileNameComposite.this.getDefaultValue(subject); - } - return name; - } - - @Override - protected void setValue_(String value) { - - if (DropDdlFileNameComposite.this.getDefaultValue(subject).equals(value)) { - value = null; - } - subject.setDropFileName(value); - } - }; - } - - private String getDefaultValue(SchemaGeneration subject) { - String defaultValue = subject.getDefaultDropFileName(); - - if (defaultValue != null) { - return NLS.bind( - JptCommonUiMessages.DefaultWithOneParam, - defaultValue - ); - } - return JptCommonUiMessages.DefaultEmpty; - } - - @Override - protected void initializeLayout(Composite container) { - Combo combo = addLabeledEditableCombo( - container, - EclipseLinkUiMessages.PersistenceXmlSchemaGenerationTab_dropDdlFileNameLabel, - this.buildDefaultDropDdlFileNameListHolder(), - this.buildDropDdlFileNameHolder(), - EclipseLinkHelpContextIds.PERSISTENCE_SCHEMA_GENERATION - ); - SWTUtil.attachDefaultValueHandler(combo); - } -} diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/schema/generation/EclipseLinkSchemaGenerationComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/schema/generation/EclipseLinkSchemaGenerationComposite.java deleted file mode 100644 index 957ba3c31b..0000000000 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/schema/generation/EclipseLinkSchemaGenerationComposite.java +++ /dev/null @@ -1,49 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2008, 2011 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.jpa.eclipselink.ui.internal.persistence.schema.generation; - -import org.eclipse.jpt.common.ui.internal.widgets.Pane; -import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.SchemaGeneration; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.EclipseLinkUiMessages; -import org.eclipse.swt.widgets.Composite; - -/** - * EclipseLinkSchemaGenerationComposite - */ -public class EclipseLinkSchemaGenerationComposite - extends Pane<SchemaGeneration> -{ - public EclipseLinkSchemaGenerationComposite( - Pane<SchemaGeneration> subjectHolder, - Composite container) { - super(subjectHolder, container, false); - } - - @Override - protected void initializeLayout(Composite container) { - - container = addSection( - container, - EclipseLinkUiMessages.PersistenceXmlSchemaGenerationTab_sectionTitle, - EclipseLinkUiMessages.PersistenceXmlSchemaGenerationTab_sectionDescription - ); - - // DDL Generation Type: - new DdlGenerationTypeComposite(this, container); - // Output Mode: - new OutputModeComposite(this, container); - // DDL Generation Location - new DdlGenerationLocationComposite(this, container); - // Create DDL File Name: - new CreateDdlFileNameComposite(this, container); - // Drop DDL File Name: - new DropDdlFileNameComposite(this, container); - } -}
\ No newline at end of file diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/schema/generation/OutputModeComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/schema/generation/OutputModeComposite.java deleted file mode 100644 index 73aa5054e4..0000000000 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/schema/generation/OutputModeComposite.java +++ /dev/null @@ -1,94 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2008, 2012 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.jpa.eclipselink.ui.internal.persistence.schema.generation; - -import java.util.Collection; -import org.eclipse.jpt.common.ui.internal.widgets.EnumFormComboViewer; -import org.eclipse.jpt.common.ui.internal.widgets.Pane; -import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.OutputMode; -import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.SchemaGeneration; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.EclipseLinkHelpContextIds; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.EclipseLinkUiMessages; -import org.eclipse.swt.widgets.Composite; - -/** - * OutputModeComposite - */ -public class OutputModeComposite extends Pane<SchemaGeneration> -{ - /** - * Creates a new <code>OutputModeComposite</code>. - * - * @param parentController - * The parent container of this one - * @param parent - * The parent container - */ - public OutputModeComposite( - Pane<? extends SchemaGeneration> parentComposite, - Composite parent) { - - super(parentComposite, parent); - } - - private EnumFormComboViewer<SchemaGeneration, OutputMode> addBuildOutputModeCombo(Composite container) { - return new EnumFormComboViewer<SchemaGeneration, OutputMode>(this, container) { - @Override - protected void addPropertyNames(Collection<String> propertyNames) { - super.addPropertyNames(propertyNames); - propertyNames.add(SchemaGeneration.OUTPUT_MODE_PROPERTY); - } - - @Override - protected OutputMode[] getChoices() { - return OutputMode.values(); - } - - @Override - protected OutputMode getDefaultValue() { - return this.getSubject().getDefaultOutputMode(); - } - - @Override - protected String displayString(OutputMode value) { - switch (value) { - case both : - return EclipseLinkUiMessages.OutputModeComposite_both; - case database : - return EclipseLinkUiMessages.OutputModeComposite_database; - case sql_script : - return EclipseLinkUiMessages.OutputModeComposite_sql_script; - default : - throw new IllegalStateException(); - } - } - - @Override - protected OutputMode getValue() { - return this.getSubject().getOutputMode(); - } - - @Override - protected void setValue(OutputMode value) { - this.getSubject().setOutputMode(value); - } - }; - } - - @Override - protected void initializeLayout(Composite container) { - this.addLabeledComposite( - container, - EclipseLinkUiMessages.PersistenceXmlSchemaGenerationTab_outputModeLabel, - this.addBuildOutputModeCombo(container), - EclipseLinkHelpContextIds.PERSISTENCE_SCHEMA_GENERATION - ); - } -} diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/schema/generation/PersistenceXmlSchemaGenerationTab.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/schema/generation/PersistenceXmlSchemaGenerationTab.java deleted file mode 100644 index cd961341e5..0000000000 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/persistence/schema/generation/PersistenceXmlSchemaGenerationTab.java +++ /dev/null @@ -1,56 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2007, 2011 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.jpa.eclipselink.ui.internal.persistence.schema.generation; - -import org.eclipse.jface.resource.ImageDescriptor; -import org.eclipse.jpt.common.ui.WidgetFactory; -import org.eclipse.jpt.common.ui.internal.widgets.Pane; -import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; -import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.SchemaGeneration; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.EclipseLinkHelpContextIds; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.EclipseLinkUiMessages; -import org.eclipse.jpt.jpa.ui.details.JpaPageComposite; -import org.eclipse.swt.widgets.Composite; - -/** - * PersistenceXmlSchemaGenerationTab - */ -public class PersistenceXmlSchemaGenerationTab - extends Pane<SchemaGeneration> - implements JpaPageComposite -{ - // ********** constructors/initialization ********** - public PersistenceXmlSchemaGenerationTab( - PropertyValueModel<SchemaGeneration> subjectHolder, - Composite parent, - WidgetFactory widgetFactory) { - - super(subjectHolder, parent, widgetFactory); - } - - @Override - protected void initializeLayout(Composite container) { - new EclipseLinkSchemaGenerationComposite(this, container); - } - - // ********** JpaPageComposite implementation ********** - - public String getHelpID() { - return EclipseLinkHelpContextIds.PERSISTENCE_SCHEMA_GENERATION; - } - - public ImageDescriptor getPageImageDescriptor() { - return null; - } - - public String getPageText() { - return EclipseLinkUiMessages.PersistenceXmlSchemaGenerationTab_title; - } -}
\ No newline at end of file diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/v2_0/persistence/EclipseLink2_0PersistenceXmlUiFactory.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/v2_0/persistence/EclipseLink2_0PersistenceXmlUiFactory.java index 66109843f5..4d9cbe9e1b 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/v2_0/persistence/EclipseLink2_0PersistenceXmlUiFactory.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/v2_0/persistence/EclipseLink2_0PersistenceXmlUiFactory.java @@ -1,5 +1,5 @@ /******************************************************************************* -* Copyright (c) 2009, 2011 Oracle. All rights reserved. +* Copyright (c) 2009, 2012 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. @@ -10,24 +10,14 @@ package org.eclipse.jpt.jpa.eclipselink.ui.internal.v2_0.persistence; import org.eclipse.jpt.common.ui.WidgetFactory; -import org.eclipse.jpt.common.utility.internal.model.value.TransformationPropertyValueModel; import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; import org.eclipse.jpt.jpa.core.context.persistence.PersistenceUnit; -import org.eclipse.jpt.jpa.core.jpa2.context.persistence.PersistenceUnit2_0; import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.Caching; import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.Customization; -import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.EclipseLinkPersistenceUnit; -import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.Logging2_0; -import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.Options2_0; import org.eclipse.jpt.jpa.eclipselink.ui.internal.persistence.EclipseLinkPersistenceXmlUiFactory; import org.eclipse.jpt.jpa.eclipselink.ui.internal.persistence.caching.PersistenceXmlCachingTab; import org.eclipse.jpt.jpa.eclipselink.ui.internal.persistence.customization.PersistenceXmlCustomizationTab; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.persistence.logging.PersistenceXmlLoggingTab; import org.eclipse.jpt.jpa.eclipselink.ui.internal.persistence.options.PersistenceXmlOptionsTab; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.v2_0.persistence.caching.PersistenceXmlCaching2_0Tab; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.v2_0.persistence.customization.PersistenceXmlCustomization2_0Tab; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.v2_0.persistence.logging.PersistenceXmlLogging2_0Tab; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.v2_0.persistence.options.PersistenceXmlOptions2_0Tab; import org.eclipse.swt.widgets.Composite; public class EclipseLink2_0PersistenceXmlUiFactory extends EclipseLinkPersistenceXmlUiFactory @@ -42,65 +32,25 @@ public class EclipseLink2_0PersistenceXmlUiFactory extends EclipseLinkPersistenc @Override protected PersistenceXmlCustomizationTab<Customization> buildCustomizationTab( - PropertyValueModel<EclipseLinkPersistenceUnit> subjectHolder, + PropertyValueModel<PersistenceUnit> subjectHolder, Composite parent, WidgetFactory widgetFactory) { - PropertyValueModel<Customization> customizationHolder = this.buildCustomizationHolder(subjectHolder); - - return new PersistenceXmlCustomization2_0Tab(customizationHolder, parent, widgetFactory); + return new PersistenceXmlCustomization2_0Tab(this.buildCustomizationHolder(subjectHolder), parent, widgetFactory); } @Override protected PersistenceXmlCachingTab<Caching> buildCachingTab( - PropertyValueModel<EclipseLinkPersistenceUnit> subjectHolder, - Composite parent, - WidgetFactory widgetFactory) { - PropertyValueModel<Caching> cachingHolder = this.buildCachingHolder(subjectHolder); - - return new PersistenceXmlCaching2_0Tab(cachingHolder, parent, widgetFactory); - } - - @Override - protected PersistenceXmlLoggingTab<? extends Logging2_0> buildLoggingTab( - PropertyValueModel<EclipseLinkPersistenceUnit> subjectHolder, + PropertyValueModel<PersistenceUnit> subjectHolder, Composite parent, WidgetFactory widgetFactory) { - PropertyValueModel<Logging2_0> logging2_0Holder = this.buildLogging2_0Holder(subjectHolder); - - return new PersistenceXmlLogging2_0Tab(logging2_0Holder, parent, widgetFactory); + return new PersistenceXmlCaching2_0Tab(this.buildCachingHolder(subjectHolder), parent, widgetFactory); } @Override - protected PersistenceXmlOptionsTab<Options2_0> buildOptionsTab( + protected PersistenceXmlOptionsTab<PersistenceUnit> buildOptionsTab( PropertyValueModel<PersistenceUnit> subjectHolder, Composite parent, WidgetFactory widgetFactory) { - PropertyValueModel<Options2_0> options2_0Holder = this.buildOptions2_0Holder(subjectHolder); - - return new PersistenceXmlOptions2_0Tab(options2_0Holder, parent, widgetFactory); - } - - // ********** private methods ********** - - private PropertyValueModel<Logging2_0> buildLogging2_0Holder( - PropertyValueModel<EclipseLinkPersistenceUnit> subjectHolder) { - return new TransformationPropertyValueModel<EclipseLinkPersistenceUnit, Logging2_0>(subjectHolder) { - @Override - protected Logging2_0 transform_(EclipseLinkPersistenceUnit value) { - - return (Logging2_0) value.getLogging(); - } - }; - } - - private PropertyValueModel<Options2_0> buildOptions2_0Holder( - PropertyValueModel<PersistenceUnit> subjectHolder) { - return new TransformationPropertyValueModel<PersistenceUnit, Options2_0>(subjectHolder) { - @Override - protected Options2_0 transform_(PersistenceUnit value) { - - return (Options2_0) ((PersistenceUnit2_0)value).getOptions(); - } - }; + return new PersistenceXmlOptions2_0Tab(subjectHolder, parent, widgetFactory); } } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/v2_0/persistence/EclipseLinkLogging2_0Composite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/v2_0/persistence/EclipseLinkLogging2_0Composite.java new file mode 100644 index 0000000000..06ecba83e2 --- /dev/null +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/v2_0/persistence/EclipseLinkLogging2_0Composite.java @@ -0,0 +1,254 @@ +/******************************************************************************* + * Copyright (c) 2009, 2012 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.jpa.eclipselink.ui.internal.v2_0.persistence; + +import java.util.Collection; +import org.eclipse.jpt.common.ui.WidgetFactory; +import org.eclipse.jpt.common.ui.internal.JptCommonUiMessages; +import org.eclipse.jpt.common.ui.internal.widgets.EnumFormComboViewer; +import org.eclipse.jpt.common.ui.internal.widgets.TriStateCheckBox; +import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter; +import org.eclipse.jpt.common.utility.internal.model.value.SimplePropertyValueModel; +import org.eclipse.jpt.common.utility.internal.model.value.TransformationPropertyValueModel; +import org.eclipse.jpt.common.utility.model.value.ModifiablePropertyValueModel; +import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; +import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.Logging2_0; +import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.LoggingLevel; +import org.eclipse.jpt.jpa.eclipselink.ui.internal.EclipseLinkUiMessages; +import org.eclipse.jpt.jpa.eclipselink.ui.internal.persistence.options.EclipseLinkLoggingComposite; +import org.eclipse.osgi.util.NLS; +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.layout.GridLayout; +import org.eclipse.swt.widgets.Composite; + +/** + * EclipseLinkLogging2_0Composite + */ +public class EclipseLinkLogging2_0Composite extends EclipseLinkLoggingComposite<Logging2_0> +{ + + public EclipseLinkLogging2_0Composite( + PropertyValueModel<Logging2_0> subjectHolder, + Composite parent, + WidgetFactory widgetFactory) { + super(subjectHolder, parent, widgetFactory); + } + + @Override + protected void initializeLayout(Composite container) { + super.initializeLayout(container); + + Composite loggingLevelComposite = this.addCategoryLoggingLevelComposite(container); + GridData gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.horizontalSpan = 2; + loggingLevelComposite.setLayoutData(gridData); + } + + protected Composite addCategoryLoggingLevelComposite(Composite container) { + container = this.addCollapsibleSubSection( + container, + EclipseLinkUiMessages.PersistenceXmlLoggingTab_categoryLoggingLevelSectionTitle, + new SimplePropertyValueModel<Boolean>(Boolean.FALSE) + ); + GridLayout layout = new GridLayout(2, false); + container.setLayout(layout); + + this.addLabel(container, EclipseLinkUiMessages.PersistenceXmlLoggingTab_sqlLoggingLevelLabel); + this.addLoggingLevelCombo(container, Logging2_0.SQL_CATEGORY_LOGGING_PROPERTY); + + this.addLabel(container, EclipseLinkUiMessages.PersistenceXmlLoggingTab_connectionLoggingLevelLabel); + this.addLoggingLevelCombo(container, Logging2_0.TRANSACTION_CATEGORY_LOGGING_PROPERTY); + + this.addLabel(container, EclipseLinkUiMessages.PersistenceXmlLoggingTab_eventLoggingLevelLabel); + this.addLoggingLevelCombo(container, Logging2_0.EVENT_CATEGORY_LOGGING_PROPERTY); + + this.addLabel(container, EclipseLinkUiMessages.PersistenceXmlLoggingTab_connectionLoggingLevelLabel); + this.addLoggingLevelCombo(container, Logging2_0.CONNECTION_CATEGORY_LOGGING_PROPERTY); + + this.addLabel(container, EclipseLinkUiMessages.PersistenceXmlLoggingTab_queryLoggingLevelLabel); + this.addLoggingLevelCombo(container, Logging2_0.QUERY_CATEGORY_LOGGING_PROPERTY); + + this.addLabel(container, EclipseLinkUiMessages.PersistenceXmlLoggingTab_cacheLoggingLevelLabel); + this.addLoggingLevelCombo(container, Logging2_0.CACHE_CATEGORY_LOGGING_PROPERTY); + + this.addLabel(container, EclipseLinkUiMessages.PersistenceXmlLoggingTab_propagationLoggingLevelLabel); + this.addLoggingLevelCombo(container, Logging2_0.PROPAGATION_CATEGORY_LOGGING_PROPERTY); + + this.addLabel(container, EclipseLinkUiMessages.PersistenceXmlLoggingTab_sequencingLoggingLevelLabel); + this.addLoggingLevelCombo(container, Logging2_0.SEQUENCING_CATEGORY_LOGGING_PROPERTY); + + this.addLabel(container, EclipseLinkUiMessages.PersistenceXmlLoggingTab_ejbLoggingLevelLabel); + this.addLoggingLevelCombo(container, Logging2_0.EJB_CATEGORY_LOGGING_PROPERTY); + + this.addLabel(container, EclipseLinkUiMessages.PersistenceXmlLoggingTab_dmsLoggingLevelLabel); + this.addLoggingLevelCombo(container, Logging2_0.DMS_CATEGORY_LOGGING_PROPERTY); + + this.addLabel(container, EclipseLinkUiMessages.PersistenceXmlLoggingTab_ejb_or_metadataLoggingLevelLabel); + this.addLoggingLevelCombo(container, Logging2_0.EJB_OR_METADATA_CATEGORY_LOGGING_PROPERTY); + + this.addLabel(container, EclipseLinkUiMessages.PersistenceXmlLoggingTab_jpa_metamodelLoggingLevelLabel); + this.addLoggingLevelCombo(container, Logging2_0.METAMODEL_CATEGORY_LOGGING_PROPERTY); + + this.addLabel(container, EclipseLinkUiMessages.PersistenceXmlLoggingTab_weaverLoggingLevelLabel); + this.addLoggingLevelCombo(container, Logging2_0.WEAVER_CATEGORY_LOGGING_PROPERTY); + + this.addLabel(container, EclipseLinkUiMessages.PersistenceXmlLoggingTab_propertiesLoggingLevelLabel); + this.addLoggingLevelCombo(container, Logging2_0.PROPERTIES_CATEGORY_LOGGING_PROPERTY); + + this.addLabel(container, EclipseLinkUiMessages.PersistenceXmlLoggingTab_serverLoggingLevelLabel); + this.addLoggingLevelCombo(container, Logging2_0.SERVER_CATEGORY_LOGGING_PROPERTY); + + return container.getParent(); //return the Section, instead of its client + } + + @Override + protected void logPropertiesComposite(Composite container) { + super.logPropertiesComposite(container); + // Connection: + TriStateCheckBox connectionCheckBox = + this.addTriStateCheckBoxWithDefault( + container, + EclipseLinkUiMessages.PersistenceXmlLoggingTab_connectionLabel, + this.buildConnectionHolder(), + this.buildConnectionStringHolder(), + null +// EclipseLinkHelpContextIds.PERSISTENCE_LOGGING_CONNECTION // TODO + ); + + GridData gridData = new GridData(); + gridData.horizontalSpan = 2; + connectionCheckBox.getCheckBox().setLayoutData(gridData); + } + + private ModifiablePropertyValueModel<Boolean> buildConnectionHolder() { + return new PropertyAspectAdapter<Logging2_0, Boolean>(getSubjectHolder(), Logging2_0.CONNECTION_PROPERTY) { + @Override + protected Boolean buildValue_() { + return this.subject.getConnection(); + } + + @Override + protected void setValue_(Boolean value) { + this.subject.setConnection(value); + } + }; + } + + private PropertyValueModel<String> buildConnectionStringHolder() { + return new TransformationPropertyValueModel<Boolean, String>(this.buildDefaultConnectionHolder()) { + @Override + protected String transform(Boolean value) { + if (value != null) { + String defaultStringValue = value.booleanValue() ? JptCommonUiMessages.Boolean_True : JptCommonUiMessages.Boolean_False; + return NLS.bind(EclipseLinkUiMessages.PersistenceXmlLoggingTab_connectionLabelDefault, defaultStringValue); + } + return EclipseLinkUiMessages.PersistenceXmlLoggingTab_connectionLabel; + } + }; + } + + private PropertyValueModel<Boolean> buildDefaultConnectionHolder() { + return new PropertyAspectAdapter<Logging2_0, Boolean>( + getSubjectHolder(), + Logging2_0.CONNECTION_PROPERTY) + { + @Override + protected Boolean buildValue_() { + if (this.subject.getConnection() != null) { + return null; + } + return this.subject.getDefaultConnection(); + } + }; + } + private static final String DEFAULT_PROPERTY = Logging2_0.CATEGORIES_DEFAULT_LOGGING_PROPERTY; + + private EnumFormComboViewer<Logging2_0, LoggingLevel> addLoggingLevelCombo(Composite container, final String category) { + return new EnumFormComboViewer<Logging2_0, LoggingLevel>(this, container) { + @Override + protected void addPropertyNames(Collection<String> propertyNames) { + super.addPropertyNames(propertyNames); + propertyNames.add(DEFAULT_PROPERTY); + propertyNames.add(Logging2_0.SQL_CATEGORY_LOGGING_PROPERTY); + propertyNames.add(Logging2_0.TRANSACTION_CATEGORY_LOGGING_PROPERTY); + propertyNames.add(Logging2_0.EVENT_CATEGORY_LOGGING_PROPERTY); + propertyNames.add(Logging2_0.CONNECTION_CATEGORY_LOGGING_PROPERTY); + propertyNames.add(Logging2_0.QUERY_CATEGORY_LOGGING_PROPERTY); + propertyNames.add(Logging2_0.CACHE_CATEGORY_LOGGING_PROPERTY); + propertyNames.add(Logging2_0.PROPAGATION_CATEGORY_LOGGING_PROPERTY); + propertyNames.add(Logging2_0.SEQUENCING_CATEGORY_LOGGING_PROPERTY); + propertyNames.add(Logging2_0.EJB_CATEGORY_LOGGING_PROPERTY); + propertyNames.add(Logging2_0.DMS_CATEGORY_LOGGING_PROPERTY); + propertyNames.add(Logging2_0.EJB_OR_METADATA_CATEGORY_LOGGING_PROPERTY); + propertyNames.add(Logging2_0.METAMODEL_CATEGORY_LOGGING_PROPERTY); + propertyNames.add(Logging2_0.WEAVER_CATEGORY_LOGGING_PROPERTY); + propertyNames.add(Logging2_0.PROPERTIES_CATEGORY_LOGGING_PROPERTY); + propertyNames.add(Logging2_0.SERVER_CATEGORY_LOGGING_PROPERTY); + } + + @Override + protected LoggingLevel[] getChoices() { + return LoggingLevel.values(); + } + + @Override + protected boolean sortChoices() { + return false; + } + + @Override + protected LoggingLevel getDefaultValue() { + return this.getSubject().getCategoriesDefaultLevel(); + } + + @Override + protected String displayString(LoggingLevel value) { + switch (value) { + case all : + return EclipseLinkUiMessages.EclipseLinkCategoryLoggingLevelComposite_all; + case config : + return EclipseLinkUiMessages.EclipseLinkCategoryLoggingLevelComposite_config; + case fine : + return EclipseLinkUiMessages.EclipseLinkCategoryLoggingLevelComposite_fine; + case finer : + return EclipseLinkUiMessages.EclipseLinkCategoryLoggingLevelComposite_finer; + case finest : + return EclipseLinkUiMessages.EclipseLinkCategoryLoggingLevelComposite_finest; + case info : + return EclipseLinkUiMessages.EclipseLinkCategoryLoggingLevelComposite_info; + case off : + return EclipseLinkUiMessages.EclipseLinkCategoryLoggingLevelComposite_off; + case severe : + return EclipseLinkUiMessages.EclipseLinkCategoryLoggingLevelComposite_severe; + case warning : + return EclipseLinkUiMessages.EclipseLinkCategoryLoggingLevelComposite_warning; + default : + throw new IllegalStateException(); + } + } + + @Override + protected LoggingLevel getValue() { + return this.getSubject().getLevel(category); + } + + @Override + protected void setValue(LoggingLevel value) { + this.getSubject().setLevel(category, value); + } + + @Override + protected void propertyChanged(String propertyName) { + if( propertyName != category && propertyName != DEFAULT_PROPERTY) return; + super.propertyChanged(propertyName); + } + }; + } +} diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/v2_0/persistence/EclipseLinkPersistenceXml2_0UiDefinition.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/v2_0/persistence/EclipseLinkPersistenceXml2_0UiDefinition.java index df03c31cdf..92bb31464a 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/v2_0/persistence/EclipseLinkPersistenceXml2_0UiDefinition.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/v2_0/persistence/EclipseLinkPersistenceXml2_0UiDefinition.java @@ -14,8 +14,8 @@ import org.eclipse.jpt.common.ui.jface.ItemTreeStateProviderFactoryProvider; import org.eclipse.jpt.jpa.core.JptJpaCorePlugin; import org.eclipse.jpt.jpa.eclipselink.ui.internal.persistence.EclipseLinkPersistenceXmlUiDefinition; import org.eclipse.jpt.jpa.ui.ResourceUiDefinition; -import org.eclipse.jpt.jpa.ui.internal.persistence.details.AbstractPersistenceXmlResourceUiDefinition; -import org.eclipse.jpt.jpa.ui.internal.persistence.details.PersistenceXmlUiFactory; +import org.eclipse.jpt.jpa.ui.internal.persistence.AbstractPersistenceXmlResourceUiDefinition; +import org.eclipse.jpt.jpa.ui.internal.persistence.PersistenceXmlUiFactory; public class EclipseLinkPersistenceXml2_0UiDefinition extends AbstractPersistenceXmlResourceUiDefinition diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/v2_0/persistence/PersistenceXmlCaching2_0Tab.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/v2_0/persistence/PersistenceXmlCaching2_0Tab.java new file mode 100644 index 0000000000..e55f83abd1 --- /dev/null +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/v2_0/persistence/PersistenceXmlCaching2_0Tab.java @@ -0,0 +1,264 @@ +/******************************************************************************* +* Copyright (c) 2009, 2012 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.jpa.eclipselink.ui.internal.v2_0.persistence; + +import java.util.Collection; +import org.eclipse.jpt.common.ui.WidgetFactory; +import org.eclipse.jpt.common.ui.internal.utility.swt.SWTTools; +import org.eclipse.jpt.common.ui.internal.widgets.EnumFormComboViewer; +import org.eclipse.jpt.common.ui.internal.widgets.IntegerCombo; +import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter; +import org.eclipse.jpt.common.utility.internal.model.value.TransformationPropertyValueModel; +import org.eclipse.jpt.common.utility.model.value.ModifiablePropertyValueModel; +import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; +import org.eclipse.jpt.jpa.core.jpa2.context.persistence.PersistenceUnit2_0; +import org.eclipse.jpt.jpa.core.jpa2.context.persistence.options.SharedCacheMode; +import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.CacheType; +import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.Caching; +import org.eclipse.jpt.jpa.eclipselink.ui.internal.EclipseLinkHelpContextIds; +import org.eclipse.jpt.jpa.eclipselink.ui.internal.EclipseLinkUiMessages; +import org.eclipse.jpt.jpa.eclipselink.ui.internal.persistence.caching.PersistenceXmlCachingTab; +import org.eclipse.jpt.jpa.ui.internal.jpa2.persistence.JptUiPersistence2_0Messages; +import org.eclipse.swt.layout.GridLayout; +import org.eclipse.swt.widgets.Combo; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Label; + +/** + * PersistenceXmlCaching2_0Tab + */ +public class PersistenceXmlCaching2_0Tab extends PersistenceXmlCachingTab<Caching> +{ + public PersistenceXmlCaching2_0Tab( + PropertyValueModel<Caching> subjectHolder, + Composite parent, + WidgetFactory widgetFactory) { + + super(subjectHolder, parent, widgetFactory); + } + + @Override + protected void initializeLayout(Composite container) { + container = this.addSection( + container, + EclipseLinkUiMessages.PersistenceXmlCachingTab_sectionTitle, + EclipseLinkUiMessages.PersistenceXmlCachingTab_sectionDescription + ); + container.setLayout(new GridLayout(2, false)); + + // SharedCacheMode + this.addLabel(container, JptUiPersistence2_0Messages.SharedCacheModeComposite_sharedCacheModeLabel); + this.addSharedCacheModeCombo(container, this.buildPersistenceUnit2_0Holder()); + + // Defaults + // Default Cache Type + Label cacheTypeLabel = this.addLabel(container, EclipseLinkUiMessages.PersistenceXmlCachingTab_defaultCacheTypeLabel); + Combo cacheTypeCombo = this.buildDefaultCacheTypeCombo(container).getControl(); + + // Default Cache Size + Label cacheSizeLabel = this.addLabel(container, EclipseLinkUiMessages.DefaultCacheSizeComposite_defaultCacheSize); + Combo cacheSizeCombo = this.addDefaultCacheSizeCombo(container).getControl(); + + + // Flush Clear Cache + Label flushClearCacheLabel = this.addLabel(container, EclipseLinkUiMessages.PersistenceXmlCachingTab_FlushClearCacheLabel); + Combo flushClearCacheCombo = this.addFlushClearCacheCombo(container).getControl(); + + SWTTools.controlEnabledState( + this.buildSharedCacheModeEnablerHolder(), + cacheTypeLabel, + cacheTypeCombo, + cacheSizeLabel, + cacheSizeCombo, + flushClearCacheLabel, + flushClearCacheCombo); + } + + private PropertyValueModel<PersistenceUnit2_0> buildPersistenceUnit2_0Holder() { + return new PropertyAspectAdapter<Caching, PersistenceUnit2_0>(this.getSubjectHolder()) { + @Override + protected PersistenceUnit2_0 buildValue_() { + return (PersistenceUnit2_0) this.subject.getPersistenceUnit(); + } + }; + } + + + //********* shared cache mode *********** + + private EnumFormComboViewer<PersistenceUnit2_0, SharedCacheMode> addSharedCacheModeCombo(Composite parent, PropertyValueModel<? extends PersistenceUnit2_0> subjectHolder) { + return new EnumFormComboViewer<PersistenceUnit2_0, SharedCacheMode>(this, subjectHolder, parent) { + @Override + protected void addPropertyNames(Collection<String> propertyNames) { + super.addPropertyNames(propertyNames); + propertyNames.add(PersistenceUnit2_0.SPECIFIED_SHARED_CACHE_MODE_PROPERTY); + } + + @Override + protected SharedCacheMode[] getChoices() { + return SharedCacheMode.values(); + } + + @Override + protected boolean sortChoices() { + return false; + } + + @Override + protected SharedCacheMode getDefaultValue() { + return this.getSubject().getDefaultSharedCacheMode(); + } + + @Override + protected String displayString(SharedCacheMode value) { + switch (value) { + case ALL : + return JptUiPersistence2_0Messages.SharedCacheModeComposite_all; + case DISABLE_SELECTIVE : + return JptUiPersistence2_0Messages.SharedCacheModeComposite_disable_selective; + case ENABLE_SELECTIVE : + return JptUiPersistence2_0Messages.SharedCacheModeComposite_enable_selective; + case NONE : + return JptUiPersistence2_0Messages.SharedCacheModeComposite_none; + case UNSPECIFIED : + return JptUiPersistence2_0Messages.SharedCacheModeComposite_unspecified; + default : + throw new IllegalStateException(); + } + } + + @Override + protected SharedCacheMode getValue() { + return this.getSubject().getSpecifiedSharedCacheMode(); + } + + @Override + protected void setValue(SharedCacheMode value) { + this.getSubject().setSpecifiedSharedCacheMode(value); + } + }; + } + + private PropertyValueModel<Boolean> buildSharedCacheModeEnablerHolder() { + return new TransformationPropertyValueModel<SharedCacheMode, Boolean>(this.buildSharedCacheModeHolder()) { + @Override + protected Boolean transform(SharedCacheMode value) { + return value != SharedCacheMode.NONE; + } + }; + } + + private PropertyValueModel<SharedCacheMode> buildSharedCacheModeHolder() { + return new PropertyAspectAdapter<PersistenceUnit2_0, SharedCacheMode>( + this.buildPersistenceUnit2_0Holder(), + PersistenceUnit2_0.SPECIFIED_SHARED_CACHE_MODE_PROPERTY, + PersistenceUnit2_0.DEFAULT_SHARED_CACHE_MODE_PROPERTY) { + @Override + protected SharedCacheMode buildValue_() { + return this.subject.getSharedCacheMode(); + } + }; + } + + protected EnumFormComboViewer<Caching, CacheType> buildDefaultCacheTypeCombo(Composite container) { + return new EnumFormComboViewer<Caching, CacheType>(this, container) { + @Override + protected void addPropertyNames(Collection<String> propertyNames) { + super.addPropertyNames(propertyNames); + propertyNames.add(Caching.CACHE_TYPE_DEFAULT_PROPERTY); + } + + @Override + protected CacheType[] getChoices() { + return CacheType.values(); + } + + @Override + protected boolean sortChoices() { + return false; + } + + @Override + protected CacheType getDefaultValue() { + return getSubject().getDefaultCacheTypeDefault(); + } + + @Override + protected String displayString(CacheType value) { + switch (value) { + case full : + return EclipseLinkUiMessages.CacheTypeComposite_full; + case weak : + return EclipseLinkUiMessages.CacheTypeComposite_weak; + case soft : + return EclipseLinkUiMessages.CacheTypeComposite_soft; + case soft_weak : + return EclipseLinkUiMessages.CacheTypeComposite_soft_weak; + case hard_weak : + return EclipseLinkUiMessages.CacheTypeComposite_hard_weak; + case none : + return EclipseLinkUiMessages.CacheTypeComposite_none; + default : + throw new IllegalStateException(); + } + + } + + @Override + protected CacheType getValue() { + return getSubject().getCacheTypeDefault(); + } + + @Override + protected void setValue(CacheType value) { + getSubject().setCacheTypeDefault(value); + } + + @Override + protected String getHelpId() { + return EclipseLinkHelpContextIds.PERSISTENCE_CACHING_DEFAULT_TYPE; + } + }; + } + + protected IntegerCombo<Caching> addDefaultCacheSizeCombo(Composite container) { + return new IntegerCombo<Caching>(this, container) { + @Override + protected String getHelpId() { + return EclipseLinkHelpContextIds.PERSISTENCE_CACHING_DEFAULT_SIZE; + } + + @Override + protected PropertyValueModel<Integer> buildDefaultHolder() { + return new PropertyAspectAdapter<Caching, Integer>(getSubjectHolder()) { + @Override + protected Integer buildValue_() { + return this.subject.getDefaultCacheSizeDefault(); + } + }; + } + + @Override + protected ModifiablePropertyValueModel<Integer> buildSelectedItemHolder() { + return new PropertyAspectAdapter<Caching, Integer>(getSubjectHolder(), Caching.CACHE_SIZE_DEFAULT_PROPERTY) { + @Override + protected Integer buildValue_() { + return this.subject.getCacheSizeDefault(); + } + + @Override + protected void setValue_(Integer value) { + this.subject.setCacheSizeDefault(value); + } + }; + } + }; + } +} diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/v2_0/persistence/customization/PersistenceXmlCustomization2_0Tab.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/v2_0/persistence/PersistenceXmlCustomization2_0Tab.java index 83db6df75a..47259000a7 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/v2_0/persistence/customization/PersistenceXmlCustomization2_0Tab.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/v2_0/persistence/PersistenceXmlCustomization2_0Tab.java @@ -1,5 +1,5 @@ /******************************************************************************* -* Copyright (c) 2010, 2011 Oracle. All rights reserved. +* Copyright (c) 2010, 2012 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. @@ -7,7 +7,7 @@ * Contributors: * Oracle - initial API and implementation *******************************************************************************/ -package org.eclipse.jpt.jpa.eclipselink.ui.internal.v2_0.persistence.customization; +package org.eclipse.jpt.jpa.eclipselink.ui.internal.v2_0.persistence; import org.eclipse.jpt.common.ui.WidgetFactory; import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; @@ -28,9 +28,10 @@ public class PersistenceXmlCustomization2_0Tab extends PersistenceXmlCustomizati super(subjectHolder, parent, widgetFactory); } + @Override - protected void buildEclipseLinkCustomizationComposite(Composite container) { - new EclipseLinkCustomization2_0Composite(this, container); + protected void buildEntityListComposite(Composite parent) { + // do nothing } } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/v2_0/persistence/PersistenceXmlOptions2_0Tab.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/v2_0/persistence/PersistenceXmlOptions2_0Tab.java new file mode 100644 index 0000000000..1f3ab1dc46 --- /dev/null +++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/v2_0/persistence/PersistenceXmlOptions2_0Tab.java @@ -0,0 +1,499 @@ +/******************************************************************************* +* Copyright (c) 2009, 2012 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.jpa.eclipselink.ui.internal.v2_0.persistence; + +import java.util.Collection; +import org.eclipse.jdt.core.IJavaElement; +import org.eclipse.jdt.core.IJavaProject; +import org.eclipse.jdt.core.IType; +import org.eclipse.jdt.core.JavaModelException; +import org.eclipse.jdt.core.search.IJavaSearchScope; +import org.eclipse.jdt.core.search.SearchEngine; +import org.eclipse.jdt.ui.IJavaElementSearchConstants; +import org.eclipse.jdt.ui.JavaUI; +import org.eclipse.jface.viewers.ILabelProvider; +import org.eclipse.jface.viewers.LabelProvider; +import org.eclipse.jface.window.Window; +import org.eclipse.jpt.common.ui.WidgetFactory; +import org.eclipse.jpt.common.ui.internal.JptCommonUiMessages; +import org.eclipse.jpt.common.ui.internal.widgets.AddRemoveListPane; +import org.eclipse.jpt.common.ui.internal.widgets.AddRemovePane.Adapter; +import org.eclipse.jpt.common.ui.internal.widgets.EnumFormComboViewer; +import org.eclipse.jpt.common.ui.internal.widgets.IntegerCombo; +import org.eclipse.jpt.common.ui.internal.widgets.TriStateCheckBox; +import org.eclipse.jpt.common.utility.internal.iterables.ListIterable; +import org.eclipse.jpt.common.utility.internal.model.value.ListAspectAdapter; +import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter; +import org.eclipse.jpt.common.utility.internal.model.value.SimpleCollectionValueModel; +import org.eclipse.jpt.common.utility.internal.model.value.TransformationPropertyValueModel; +import org.eclipse.jpt.common.utility.model.value.CollectionValueModel; +import org.eclipse.jpt.common.utility.model.value.ListValueModel; +import org.eclipse.jpt.common.utility.model.value.ModifiableCollectionValueModel; +import org.eclipse.jpt.common.utility.model.value.ModifiablePropertyValueModel; +import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; +import org.eclipse.jpt.jpa.core.context.persistence.PersistenceUnit; +import org.eclipse.jpt.jpa.core.jpa2.context.persistence.PersistenceUnit2_0; +import org.eclipse.jpt.jpa.core.jpa2.context.persistence.options.JpaOptions2_0; +import org.eclipse.jpt.jpa.core.jpa2.context.persistence.options.ValidationMode; +import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.EclipseLinkPersistenceUnit; +import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.Logging2_0; +import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.Options2_0; +import org.eclipse.jpt.jpa.eclipselink.ui.JptJpaEclipseLinkUiPlugin; +import org.eclipse.jpt.jpa.eclipselink.ui.internal.EclipseLinkHelpContextIds; +import org.eclipse.jpt.jpa.eclipselink.ui.internal.EclipseLinkUiMessages; +import org.eclipse.jpt.jpa.eclipselink.ui.internal.persistence.options.PersistenceXmlOptionsTab; +import org.eclipse.jpt.jpa.ui.internal.jpa2.persistence.JptUiPersistence2_0Messages; +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.ui.PlatformUI; +import org.eclipse.ui.dialogs.SelectionDialog; +import org.eclipse.ui.forms.widgets.Section; +import org.eclipse.ui.progress.IProgressService; + +/** + * EclipseLinkOptions2_0Composite + */ +public class PersistenceXmlOptions2_0Tab extends PersistenceXmlOptionsTab<PersistenceUnit> +{ + private PropertyValueModel<Options2_0> optionsHolder; + + public PersistenceXmlOptions2_0Tab( + PropertyValueModel<PersistenceUnit> subjectHolder, + Composite parent, + WidgetFactory widgetFactory) { + + super(subjectHolder, parent, widgetFactory); + } + + @Override + protected Control initializeMiscellaneousSection(Section section) { + Composite container = this.addSubPane(section, 2, 0, 0, 0, 0); + + TriStateCheckBox checkBox = this.addTriStateCheckBoxWithDefault( + container, + EclipseLinkUiMessages.PersistenceXmlOptionsTab_temporalMutableLabel, + this.buildTemporalMutableHolder(), + this.buildTemporalMutableStringHolder(), + EclipseLinkHelpContextIds.PERSISTENCE_OPTIONS + ); + GridData gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.horizontalSpan = 2; + checkBox.getCheckBox().setLayoutData(gridData); + + this.optionsHolder = this.buildOptions2_0Holder(); + this.addLabel(container, JptUiPersistence2_0Messages.LockingConfigurationComposite_lockTimeoutLabel); + this.addLockTimeoutCombo(container); + + this.addLabel(container, JptUiPersistence2_0Messages.QueryConfigurationComposite_queryTimeoutLabel); + this.addQueryTimeoutCombo(container); + + + // ValidationMode + this.addLabel(container, JptUiPersistence2_0Messages.ValidationModeComposite_validationModeLabel); + this.addValidationModeCombo(container); + + // ValidationGroupPrePersist + this.addLabel(container, JptUiPersistence2_0Messages.ValidationConfigurationComposite_groupPrePersistLabel); + this.addPrePersistListPane(container); + + // ValidationGroupPreUpdate + this.addLabel(container, JptUiPersistence2_0Messages.ValidationConfigurationComposite_groupPreUpdateLabel); + this.addPreUpdateListPane(container); + + // ValidationGroupPreRemove + this.addLabel(container, JptUiPersistence2_0Messages.ValidationConfigurationComposite_groupPreRemoveLabel); + this.addPreRemoveListPane(container); + + return container; + } + + @Override + protected Control initializeLoggingSection(Section section) { + return new EclipseLinkLogging2_0Composite(this.buildLoggingHolder(), section, getWidgetFactory()).getControl(); + } + + private PropertyValueModel<Logging2_0> buildLoggingHolder() { + return new TransformationPropertyValueModel<PersistenceUnit, Logging2_0>(getSubjectHolder()) { + @Override + protected Logging2_0 transform_(PersistenceUnit value) { + return (Logging2_0) ((EclipseLinkPersistenceUnit) value).getLogging(); + } + }; + } + + private void addLockTimeoutCombo(Composite container) { + new IntegerCombo<Options2_0>(this, this.optionsHolder, container) { + @Override + protected String getHelpId() { + return null; // TODO + } + @Override + protected PropertyValueModel<Integer> buildDefaultHolder() { + return new PropertyAspectAdapter<Options2_0, Integer>(this.getSubjectHolder()) { + @Override + protected Integer buildValue_() { + return this.subject.getDefaultLockTimeout(); + } + }; + } + + @Override + protected ModifiablePropertyValueModel<Integer> buildSelectedItemHolder() { + return new PropertyAspectAdapter<Options2_0, Integer>(this.getSubjectHolder(), Options2_0.LOCK_TIMEOUT_PROPERTY) { + @Override + protected Integer buildValue_() { + return this.subject.getLockTimeout(); + } + + @Override + protected void setValue_(Integer value) { + this.subject.setLockTimeout(value); + } + }; + } + }; + } + + private void addQueryTimeoutCombo(Composite container) { + new IntegerCombo<Options2_0>(this, this.optionsHolder, container) { + @Override + protected String getHelpId() { + return null; // TODO + } + + @Override + protected PropertyValueModel<Integer> buildDefaultHolder() { + return new PropertyAspectAdapter<Options2_0, Integer>(this.getSubjectHolder()) { + @Override + protected Integer buildValue_() { + return this.subject.getDefaultQueryTimeout(); + } + }; + } + + @Override + protected ModifiablePropertyValueModel<Integer> buildSelectedItemHolder() { + return new PropertyAspectAdapter<Options2_0, Integer>(this.getSubjectHolder(), Options2_0.QUERY_TIMEOUT_PROPERTY) { + @Override + protected Integer buildValue_() { + return this.subject.getQueryTimeout(); + } + + @Override + protected void setValue_(Integer value) { + this.subject.setQueryTimeout(value); + } + }; + } + }; + } + + private EnumFormComboViewer<PersistenceUnit, ValidationMode> addValidationModeCombo(Composite parent) { + return new EnumFormComboViewer<PersistenceUnit, ValidationMode>(this, this.getSubjectHolder(), parent) { + @Override + protected void addPropertyNames(Collection<String> propertyNames) { + super.addPropertyNames(propertyNames); + propertyNames.add(PersistenceUnit2_0.SPECIFIED_VALIDATION_MODE_PROPERTY); + } + + @Override + protected ValidationMode[] getChoices() { + return ValidationMode.values(); + } + + @Override + protected boolean sortChoices() { + return false; + } + + @Override + protected ValidationMode getDefaultValue() { + return ((PersistenceUnit2_0) this.getSubject()).getDefaultValidationMode(); + } + + @Override + protected String displayString(ValidationMode value) { + switch (value) { + case AUTO : + return JptUiPersistence2_0Messages.ValidationModeComposite_auto; + case CALLBACK : + return JptUiPersistence2_0Messages.ValidationModeComposite_callback; + case NONE : + return JptUiPersistence2_0Messages.ValidationModeComposite_none; + default : + throw new IllegalStateException(); + } + } + + @Override + protected ValidationMode getValue() { + return ((PersistenceUnit2_0) this.getSubject()).getSpecifiedValidationMode(); + } + + @Override + protected void setValue(ValidationMode value) { + ((PersistenceUnit2_0) this.getSubject()).setSpecifiedValidationMode(value); + } + }; + } + + // ********** ValidationGroupPrePersists ********** + + private void addPrePersistListPane(Composite parent) { + new AddRemoveListPane<Options2_0, String>( + this, + this.optionsHolder, + parent, + this.buildPrePersistAdapter(), + this.buildPrePersistListHolder(), + this.buildSelectedItemsModel(), + this.buildLabelProvider() + ); + } + + private Adapter<String> buildPrePersistAdapter() { + return new AddRemoveListPane.AbstractAdapter<String>() { + public String addNewItem() { + return addPrePersistClass(); + } + + @Override + public PropertyValueModel<Boolean> buildRemoveButtonEnabledModel(CollectionValueModel<String> selectedItemsModel) { + //enable the remove button only when 1 item is selected, same as the optional button + return this.buildSingleSelectedItemEnabledModel(selectedItemsModel); + } + + public void removeSelectedItems(CollectionValueModel<String> selectedItemsModel) { + String item = selectedItemsModel.iterator().next(); + optionsHolder.getValue().removeValidationGroupPrePersist(item); + } + }; + } + + private ListValueModel<String> buildPrePersistListHolder() { + return new ListAspectAdapter<Options2_0, String>(this.optionsHolder, JpaOptions2_0.VALIDATION_GROUP_PRE_PERSIST_LIST) { + @Override + protected ListIterable<String> getListIterable() { + return subject.getValidationGroupPrePersists(); + } + + @Override + protected int size_() { + return subject.getValidationGroupPrePersistsSize(); + } + }; + } + + private String addPrePersistClass() { + + IType type = this.chooseType(); + + if (type != null) { + String className = type.getFullyQualifiedName('$'); + if( ! this.optionsHolder.getValue().validationGroupPrePersistExists(className)) { + + return this.optionsHolder.getValue().addValidationGroupPrePersist(className); + } + } + return null; + } + + // ********** ValidationGroupPreUpdates ********** + + private void addPreUpdateListPane(Composite parent) { + new AddRemoveListPane<Options2_0, String>( + this, + this.optionsHolder, + parent, + this.buildPreUpdateAdapter(), + this.buildPreUpdateListHolder(), + this.buildSelectedItemsModel(), + this.buildLabelProvider() + ); + } + + private Adapter<String> buildPreUpdateAdapter() { + return new AddRemoveListPane.AbstractAdapter<String>() { + public String addNewItem() { + return addPreUpdateClass(); + } + + @Override + public PropertyValueModel<Boolean> buildRemoveButtonEnabledModel(CollectionValueModel<String> selectedItemsModel) { + //enable the remove button only when 1 item is selected, same as the optional button + return this.buildSingleSelectedItemEnabledModel(selectedItemsModel); + } + + public void removeSelectedItems(CollectionValueModel<String> selectedItemsModel) { + String item = selectedItemsModel.iterator().next(); + optionsHolder.getValue().removeValidationGroupPreUpdate(item); + } + }; + } + + private ListValueModel<String> buildPreUpdateListHolder() { + return new ListAspectAdapter<Options2_0, String>(this.optionsHolder, Options2_0.VALIDATION_GROUP_PRE_UPDATE_LIST) { + @Override + protected ListIterable<String> getListIterable() { + return subject.getValidationGroupPreUpdates(); + } + + @Override + protected int size_() { + return subject.getValidationGroupPreUpdatesSize(); + } + }; + } + + private String addPreUpdateClass() { + + IType type = this.chooseType(); + + if (type != null) { + String className = type.getFullyQualifiedName('$'); + if( ! this.optionsHolder.getValue().validationGroupPreUpdateExists(className)) { + + return this.optionsHolder.getValue().addValidationGroupPreUpdate(className); + } + } + return null; + } + + // ********** ValidationGroupPreRemoves ********** + + private void addPreRemoveListPane(Composite parent) { + new AddRemoveListPane<Options2_0, String>( + this, + this.optionsHolder, + parent, + this.buildPreRemoveAdapter(), + this.buildPreRemoveListHolder(), + this.buildSelectedItemsModel(), + this.buildLabelProvider() + ); + } + + private Adapter<String> buildPreRemoveAdapter() { + return new AddRemoveListPane.AbstractAdapter<String>() { + public String addNewItem() { + return addPreRemoveClass(); + } + + @Override + public PropertyValueModel<Boolean> buildRemoveButtonEnabledModel(CollectionValueModel<String> selectedItemsModel) { + //enable the remove button only when 1 item is selected, same as the optional button + return this.buildSingleSelectedItemEnabledModel(selectedItemsModel); + } + + public void removeSelectedItems(CollectionValueModel<String> selectedItemsModel) { + String item = selectedItemsModel.iterator().next(); + optionsHolder.getValue().removeValidationGroupPreRemove(item); + } + }; + } + + private ListValueModel<String> buildPreRemoveListHolder() { + return new ListAspectAdapter<Options2_0, String>(this.optionsHolder, JpaOptions2_0.VALIDATION_GROUP_PRE_REMOVE_LIST) { + @Override + protected ListIterable<String> getListIterable() { + return subject.getValidationGroupPreRemoves(); + } + + @Override + protected int size_() { + return subject.getValidationGroupPreRemovesSize(); + } + }; + } + + private String addPreRemoveClass() { + + IType type = this.chooseType(); + + if (type != null) { + String className = type.getFullyQualifiedName('$'); + if( ! this.optionsHolder.getValue().validationGroupPreRemoveExists(className)) { + + return this.optionsHolder.getValue().addValidationGroupPreRemove(className); + } + } + return null; + } + + + // ********** Private methods ********** + + private ILabelProvider buildLabelProvider() { + return new LabelProvider() { + + @Override + public String getText(Object element) { + String name = (String) element; + + if (name == null) { + name = EclipseLinkUiMessages.PersistenceXmlOptionsTab_noName; + } + return name; + } + }; + } + + /** + * Prompts the user the Open Type dialog. + * + * @return Either the selected type or <code>null</code> if the user + * canceled the dialog + */ + private IType chooseType() { + IJavaProject javaProject = this.getSubject().getJpaProject().getJavaProject(); + IJavaElement[] elements = new IJavaElement[] { javaProject }; + IJavaSearchScope scope = SearchEngine.createJavaSearchScope(elements); + IProgressService service = PlatformUI.getWorkbench().getProgressService(); + SelectionDialog typeSelectionDialog; + + try { + typeSelectionDialog = JavaUI.createTypeDialog( + getShell(), + service, + scope, + IJavaElementSearchConstants.CONSIDER_CLASSES, + false, + "" + ); + } + catch (JavaModelException e) { + JptJpaEclipseLinkUiPlugin.log(e); + return null; + } + + typeSelectionDialog.setTitle(JptCommonUiMessages.ClassChooserPane_dialogTitle); + typeSelectionDialog.setMessage(JptCommonUiMessages.ClassChooserPane_dialogMessage); + + if (typeSelectionDialog.open() == Window.OK) { + return (IType) typeSelectionDialog.getResult()[0]; + } + + return null; + } + + private ModifiableCollectionValueModel<String> buildSelectedItemsModel() { + return new SimpleCollectionValueModel<String>(); + } + + private PropertyValueModel<Options2_0> buildOptions2_0Holder() { + return new TransformationPropertyValueModel<PersistenceUnit, Options2_0>(getSubjectHolder()) { + @Override + protected Options2_0 transform_(PersistenceUnit value) { + return (Options2_0) ((PersistenceUnit2_0) value).getOptions(); + } + }; + } +} diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/v2_0/persistence/caching/CacheDefaults2_0Composite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/v2_0/persistence/caching/CacheDefaults2_0Composite.java deleted file mode 100644 index 9e9136a970..0000000000 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/v2_0/persistence/caching/CacheDefaults2_0Composite.java +++ /dev/null @@ -1,88 +0,0 @@ -/******************************************************************************* -* Copyright (c) 2009, 2011 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.jpa.eclipselink.ui.internal.v2_0.persistence.caching; - -import org.eclipse.jpt.common.ui.internal.util.PaneEnabler; -import org.eclipse.jpt.common.ui.internal.widgets.Pane; -import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter; -import org.eclipse.jpt.common.utility.internal.model.value.TransformationPropertyValueModel; -import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; -import org.eclipse.jpt.jpa.core.jpa2.context.persistence.PersistenceUnit2_0; -import org.eclipse.jpt.jpa.core.jpa2.context.persistence.options.SharedCacheMode; -import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.Caching; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.persistence.caching.CacheDefaultsComposite; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.persistence.caching.DefaultCacheSizeComposite; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.persistence.caching.DefaultCacheTypeComposite; -import org.eclipse.swt.widgets.Composite; - -/** - * CacheDefaults2_0Composite - */ -public class CacheDefaults2_0Composite extends CacheDefaultsComposite<Caching> -{ - public CacheDefaults2_0Composite(Pane<Caching> subjectHolder, - Composite container) { - - super(subjectHolder, container); - } - - @Override - protected void initializeLayout(Composite parent) { - this.initializeCacheDefaultsComposites(parent); - this.installPaneEnabler(); - } - - @Override - protected void initializeCacheDefaultsComposites(Composite parent) { - - // Default Cache Type - new DefaultCacheTypeComposite(this, parent); - - // Default Cache Size - new DefaultCacheSizeComposite<Caching>(this, parent); - - } - - // ********** private methods ********** - - private void installPaneEnabler() { - new PaneEnabler(this.buildPaneEnablerHolder(), this); - } - - private PropertyValueModel<Boolean> buildPaneEnablerHolder() { - return new TransformationPropertyValueModel<SharedCacheMode, Boolean>(this.buildSharedCacheModeHolder()) { - @Override - protected Boolean transform(SharedCacheMode value) { - return value != SharedCacheMode.NONE; - } - }; - } - - private PropertyValueModel<SharedCacheMode> buildSharedCacheModeHolder() { - return new PropertyAspectAdapter<PersistenceUnit2_0, SharedCacheMode>( - this.buildPersistenceUnit2_0Holder(), - PersistenceUnit2_0.SPECIFIED_SHARED_CACHE_MODE_PROPERTY, - PersistenceUnit2_0.DEFAULT_SHARED_CACHE_MODE_PROPERTY) { - @Override - protected SharedCacheMode buildValue_() { - return this.subject.getSharedCacheMode(); - } - }; - } - - private PropertyValueModel<PersistenceUnit2_0> buildPersistenceUnit2_0Holder() { - return new PropertyAspectAdapter<Caching, PersistenceUnit2_0>(this.getSubjectHolder()) { - @Override - protected PersistenceUnit2_0 buildValue_() { - return (PersistenceUnit2_0) this.subject.getPersistenceUnit(); - } - }; - } -} diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/v2_0/persistence/caching/EclipseLinkCaching2_0Composite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/v2_0/persistence/caching/EclipseLinkCaching2_0Composite.java deleted file mode 100644 index 14bb1e1d7a..0000000000 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/v2_0/persistence/caching/EclipseLinkCaching2_0Composite.java +++ /dev/null @@ -1,74 +0,0 @@ -/******************************************************************************* -* Copyright (c) 2009, 2011 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.jpa.eclipselink.ui.internal.v2_0.persistence.caching; - -import org.eclipse.jpt.common.ui.internal.widgets.Pane; -import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter; -import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; -import org.eclipse.jpt.jpa.core.jpa2.context.persistence.PersistenceUnit2_0; -import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.Caching; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.EclipseLinkUiMessages; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.persistence.caching.EclipseLinkCachingComposite; -import org.eclipse.jpt.jpa.ui.internal.jpa2.persistence.options.SharedCacheModeComposite; -import org.eclipse.swt.SWT; -import org.eclipse.swt.layout.GridData; -import org.eclipse.swt.layout.GridLayout; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.ui.forms.widgets.ExpandableComposite; -import org.eclipse.ui.forms.widgets.Section; - -/** - * EclipseLinkCaching2_0Composite - */ -public class EclipseLinkCaching2_0Composite extends EclipseLinkCachingComposite<Caching> -{ - public EclipseLinkCaching2_0Composite( - Pane<Caching> subjectHolder, - Composite container) { - super(subjectHolder, container); - } - - @Override - protected void initializeLayout(Composite parent) { - Section section = getWidgetFactory().createSection(parent, SWT.FLAT | ExpandableComposite.TITLE_BAR | Section.DESCRIPTION); - section.setText(EclipseLinkUiMessages.PersistenceXmlCachingTab_sectionTitle); - section.setDescription(EclipseLinkUiMessages.PersistenceXmlCachingTab_sectionDescription); - Composite composite = getWidgetFactory().createComposite(section); - composite.setLayout(new GridLayout(1, false)); - section.setClient(composite); - this.updateGridData(composite); - this.updateGridData(composite.getParent()); - - // SharedCacheMode - new SharedCacheModeComposite(this, this.buildPersistenceUnit2_0Holder(), composite); - // Defaults - new CacheDefaults2_0Composite(this, composite); - // Flush Clear Cache - new FlushClearCache2_0Composite(this, composite); - } - - private PropertyValueModel<PersistenceUnit2_0> buildPersistenceUnit2_0Holder() { - return new PropertyAspectAdapter<Caching, PersistenceUnit2_0>(this.getSubjectHolder()) { - @Override - protected PersistenceUnit2_0 buildValue_() { - return (PersistenceUnit2_0) this.subject.getPersistenceUnit(); - } - }; - } - - private void updateGridData(Composite container) { - GridData gridData = new GridData(); - gridData.grabExcessHorizontalSpace = true; - gridData.grabExcessVerticalSpace = true; - gridData.horizontalAlignment = SWT.FILL; - gridData.verticalAlignment = SWT.FILL; - container.setLayoutData(gridData); - } -}
\ No newline at end of file diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/v2_0/persistence/caching/FlushClearCache2_0Composite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/v2_0/persistence/caching/FlushClearCache2_0Composite.java deleted file mode 100644 index 3b528f6142..0000000000 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/v2_0/persistence/caching/FlushClearCache2_0Composite.java +++ /dev/null @@ -1,85 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2009, 2011 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.jpa.eclipselink.ui.internal.v2_0.persistence.caching; - -import org.eclipse.jpt.common.ui.internal.util.PaneEnabler; -import org.eclipse.jpt.common.ui.internal.widgets.Pane; -import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter; -import org.eclipse.jpt.common.utility.internal.model.value.TransformationPropertyValueModel; -import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; -import org.eclipse.jpt.jpa.core.jpa2.context.persistence.PersistenceUnit2_0; -import org.eclipse.jpt.jpa.core.jpa2.context.persistence.options.SharedCacheMode; -import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.Caching; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.persistence.caching.FlushClearCacheComposite; -import org.eclipse.swt.widgets.Composite; - -/** - * FlushClearCache2_0Composite - */ -public class FlushClearCache2_0Composite extends FlushClearCacheComposite -{ - /** - * Creates a new <code>FlushClearCache2_0Composite</code>. - * - * @param parentController - * The parent container of this one - * @param parent - * The parent container - */ - public FlushClearCache2_0Composite( - Pane<? extends Caching> parentComposite, - Composite parent) { - - super(parentComposite, parent); - } - - @Override - protected void initializeLayout(Composite parent) { - super.initializeLayout(parent); - - this.installPaneEnabler(); - } - - // ********** private methods ********** - - private void installPaneEnabler() { - new PaneEnabler(this.buildPaneEnablerHolder(), this); - } - - private PropertyValueModel<Boolean> buildPaneEnablerHolder() { - return new TransformationPropertyValueModel<SharedCacheMode, Boolean>(this.buildSharedCacheModeHolder()) { - @Override - protected Boolean transform(SharedCacheMode value) { - return value != SharedCacheMode.NONE; - } - }; - } - - private PropertyValueModel<SharedCacheMode> buildSharedCacheModeHolder() { - return new PropertyAspectAdapter<PersistenceUnit2_0, SharedCacheMode>( - this.buildPersistenceUnit2_0Holder(), - PersistenceUnit2_0.SPECIFIED_SHARED_CACHE_MODE_PROPERTY, - PersistenceUnit2_0.DEFAULT_SHARED_CACHE_MODE_PROPERTY) { - @Override - protected SharedCacheMode buildValue_() { - return this.subject.getSharedCacheMode(); - } - }; - } - - private PropertyValueModel<PersistenceUnit2_0> buildPersistenceUnit2_0Holder() { - return new PropertyAspectAdapter<Caching, PersistenceUnit2_0>(this.getSubjectHolder()) { - @Override - protected PersistenceUnit2_0 buildValue_() { - return (PersistenceUnit2_0) this.subject.getPersistenceUnit(); - } - }; - } -} diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/v2_0/persistence/caching/PersistenceXmlCaching2_0Tab.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/v2_0/persistence/caching/PersistenceXmlCaching2_0Tab.java deleted file mode 100644 index 116dc65da4..0000000000 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/v2_0/persistence/caching/PersistenceXmlCaching2_0Tab.java +++ /dev/null @@ -1,36 +0,0 @@ -/******************************************************************************* -* Copyright (c) 2009, 2011 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.jpa.eclipselink.ui.internal.v2_0.persistence.caching; - -import org.eclipse.jpt.common.ui.WidgetFactory; -import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; -import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.Caching; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.persistence.caching.PersistenceXmlCachingTab; -import org.eclipse.swt.widgets.Composite; - -/** - * PersistenceXmlCaching2_0Tab - */ -public class PersistenceXmlCaching2_0Tab extends PersistenceXmlCachingTab<Caching> -{ - public PersistenceXmlCaching2_0Tab( - PropertyValueModel<Caching> subjectHolder, - Composite parent, - WidgetFactory widgetFactory) { - - super(subjectHolder, parent, widgetFactory); - } - - @Override - protected void initializeLayout(Composite container) { - - new EclipseLinkCaching2_0Composite(this, container); - } -} diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/v2_0/persistence/customization/EclipseLinkCustomization2_0Composite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/v2_0/persistence/customization/EclipseLinkCustomization2_0Composite.java deleted file mode 100644 index ce0de967b9..0000000000 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/v2_0/persistence/customization/EclipseLinkCustomization2_0Composite.java +++ /dev/null @@ -1,32 +0,0 @@ -/******************************************************************************* -* Copyright (c) 2010, 2011 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.jpa.eclipselink.ui.internal.v2_0.persistence.customization; - -import org.eclipse.jpt.common.ui.internal.widgets.Pane; -import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.Customization; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.persistence.customization.EclipseLinkCustomizationComposite; -import org.eclipse.swt.widgets.Composite; - -/** - * EclipseLinkCustomization2_0Composite - */ -public class EclipseLinkCustomization2_0Composite extends EclipseLinkCustomizationComposite<Customization> -{ - public EclipseLinkCustomization2_0Composite( - Pane<Customization> subjectHolder, - Composite container) { - super(subjectHolder, container); - } - - @Override - protected void buildEntityListComposite(Composite parent) { - // do nothing - } -} diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/v2_0/persistence/logging/ConnectionComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/v2_0/persistence/logging/ConnectionComposite.java deleted file mode 100644 index c2210f96f9..0000000000 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/v2_0/persistence/logging/ConnectionComposite.java +++ /dev/null @@ -1,98 +0,0 @@ -/******************************************************************************* -* Copyright (c) 2010, 2012 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.jpa.eclipselink.ui.internal.v2_0.persistence.logging; - -import org.eclipse.jpt.common.ui.internal.JptCommonUiMessages; -import org.eclipse.jpt.common.ui.internal.widgets.Pane; -import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter; -import org.eclipse.jpt.common.utility.internal.model.value.TransformationPropertyValueModel; -import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; -import org.eclipse.jpt.common.utility.model.value.ModifiablePropertyValueModel; -import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.Logging2_0; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.EclipseLinkUiMessages; -import org.eclipse.osgi.util.NLS; -import org.eclipse.swt.widgets.Composite; - -/** - * ConnectionComposite - */ -public class ConnectionComposite extends Pane<Logging2_0> -{ - /** - * Creates a new <code>ConnectionComposite</code>. - * - * @param parentController - * The parent container of this one - * @param parent - * The parent container - */ - public ConnectionComposite( - Pane<? extends Logging2_0> parentComposite, - Composite parent) { - - super(parentComposite, parent); - } - - @Override - protected void initializeLayout(Composite container) { - - this.addTriStateCheckBoxWithDefault( - container, - EclipseLinkUiMessages.PersistenceXmlLoggingTab_connectionLabel, - this.buildConnectionHolder(), - this.buildConnectionStringHolder(), - null -// EclipseLinkHelpContextIds.PERSISTENCE_LOGGING_CONNECTION // TODO - ); - } - - private ModifiablePropertyValueModel<Boolean> buildConnectionHolder() { - return new PropertyAspectAdapter<Logging2_0, Boolean>(getSubjectHolder(), Logging2_0.CONNECTION_PROPERTY) { - @Override - protected Boolean buildValue_() { - return this.subject.getConnection(); - } - - @Override - protected void setValue_(Boolean value) { - this.subject.setConnection(value); - } - }; - } - - private PropertyValueModel<String> buildConnectionStringHolder() { - return new TransformationPropertyValueModel<Boolean, String>(this.buildDefaultConnectionHolder()) { - @Override - protected String transform(Boolean value) { - if (value != null) { - String defaultStringValue = value.booleanValue() ? JptCommonUiMessages.Boolean_True : JptCommonUiMessages.Boolean_False; - return NLS.bind(EclipseLinkUiMessages.PersistenceXmlLoggingTab_connectionLabelDefault, defaultStringValue); - } - return EclipseLinkUiMessages.PersistenceXmlLoggingTab_connectionLabel; - } - }; - } - - private PropertyValueModel<Boolean> buildDefaultConnectionHolder() { - return new PropertyAspectAdapter<Logging2_0, Boolean>( - getSubjectHolder(), - Logging2_0.CONNECTION_PROPERTY) - { - @Override - protected Boolean buildValue_() { - if (this.subject.getConnection() != null) { - return null; - } - return this.subject.getDefaultConnection(); - } - }; - } - -} diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/v2_0/persistence/logging/EclipseLinkCategoryLoggingLevelComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/v2_0/persistence/logging/EclipseLinkCategoryLoggingLevelComposite.java deleted file mode 100644 index 5192b28283..0000000000 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/v2_0/persistence/logging/EclipseLinkCategoryLoggingLevelComposite.java +++ /dev/null @@ -1,198 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2009, 2012 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.jpa.eclipselink.ui.internal.v2_0.persistence.logging; - -import java.util.Collection; -import org.eclipse.jpt.common.ui.internal.widgets.EnumFormComboViewer; -import org.eclipse.jpt.common.ui.internal.widgets.Pane; -import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.Logging2_0; -import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.LoggingLevel; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.EclipseLinkUiMessages; -import org.eclipse.swt.widgets.Composite; - -/** - * EclipseLinkCategoryLoggingLevelComposite - */ -public class EclipseLinkCategoryLoggingLevelComposite extends Pane<Logging2_0> -{ - - /** - * Creates a new <code>EclipseLinkCategoryLoggingLevelComposite</code>. - * - * @param parentController - * The parent container of this one - * @param parent - * The parent container - */ - public EclipseLinkCategoryLoggingLevelComposite( - Pane<Logging2_0> parentComposite, - Composite parent) { - - super(parentComposite, parent); - } - - @Override - protected void initializeLayout(Composite parent) { - new CategoryLoggingLevelComboViewer(this, parent, Logging2_0.SQL_CATEGORY_LOGGING_PROPERTY, EclipseLinkUiMessages.PersistenceXmlLoggingTab_sqlLoggingLevelLabel); - - new CategoryLoggingLevelComboViewer(this, parent, Logging2_0.TRANSACTION_CATEGORY_LOGGING_PROPERTY, EclipseLinkUiMessages.PersistenceXmlLoggingTab_connectionLoggingLevelLabel); - - new CategoryLoggingLevelComboViewer(this, parent, Logging2_0.EVENT_CATEGORY_LOGGING_PROPERTY, EclipseLinkUiMessages.PersistenceXmlLoggingTab_eventLoggingLevelLabel); - - new CategoryLoggingLevelComboViewer(this, parent, Logging2_0.CONNECTION_CATEGORY_LOGGING_PROPERTY, EclipseLinkUiMessages.PersistenceXmlLoggingTab_connectionLoggingLevelLabel); - - new CategoryLoggingLevelComboViewer(this, parent, Logging2_0.QUERY_CATEGORY_LOGGING_PROPERTY, EclipseLinkUiMessages.PersistenceXmlLoggingTab_queryLoggingLevelLabel); - - new CategoryLoggingLevelComboViewer(this, parent, Logging2_0.CACHE_CATEGORY_LOGGING_PROPERTY, EclipseLinkUiMessages.PersistenceXmlLoggingTab_cacheLoggingLevelLabel); - - new CategoryLoggingLevelComboViewer(this, parent, Logging2_0.PROPAGATION_CATEGORY_LOGGING_PROPERTY, EclipseLinkUiMessages.PersistenceXmlLoggingTab_propagationLoggingLevelLabel); - - new CategoryLoggingLevelComboViewer(this, parent, Logging2_0.SEQUENCING_CATEGORY_LOGGING_PROPERTY, EclipseLinkUiMessages.PersistenceXmlLoggingTab_sequencingLoggingLevelLabel); - - new CategoryLoggingLevelComboViewer(this, parent, Logging2_0.EJB_CATEGORY_LOGGING_PROPERTY, EclipseLinkUiMessages.PersistenceXmlLoggingTab_ejbLoggingLevelLabel); - - new CategoryLoggingLevelComboViewer(this, parent, Logging2_0.DMS_CATEGORY_LOGGING_PROPERTY, EclipseLinkUiMessages.PersistenceXmlLoggingTab_dmsLoggingLevelLabel); - - new CategoryLoggingLevelComboViewer(this, parent, Logging2_0.EJB_OR_METADATA_CATEGORY_LOGGING_PROPERTY, EclipseLinkUiMessages.PersistenceXmlLoggingTab_ejb_or_metadataLoggingLevelLabel); - - new CategoryLoggingLevelComboViewer(this, parent, Logging2_0.METAMODEL_CATEGORY_LOGGING_PROPERTY, EclipseLinkUiMessages.PersistenceXmlLoggingTab_jpa_metamodelLoggingLevelLabel); - - new CategoryLoggingLevelComboViewer(this, parent, Logging2_0.WEAVER_CATEGORY_LOGGING_PROPERTY, EclipseLinkUiMessages.PersistenceXmlLoggingTab_weaverLoggingLevelLabel); - - new CategoryLoggingLevelComboViewer(this, parent, Logging2_0.PROPERTIES_CATEGORY_LOGGING_PROPERTY, EclipseLinkUiMessages.PersistenceXmlLoggingTab_propertiesLoggingLevelLabel); - - new CategoryLoggingLevelComboViewer(this, parent, Logging2_0.SERVER_CATEGORY_LOGGING_PROPERTY, EclipseLinkUiMessages.PersistenceXmlLoggingTab_serverLoggingLevelLabel); - } - - - - private class CategoryLoggingLevelComboViewer extends Pane<Logging2_0> - { - private static final String DEFAULT_PROPERTY = Logging2_0.CATEGORIES_DEFAULT_LOGGING_PROPERTY; - final private String category; - final private String labelString; - - /** - * Creates a new <code>CategoryLoggingLevelComposite</code>. - * - * @param parentController - * The parent container of this one - * @param parent - * The parent container - */ - public CategoryLoggingLevelComboViewer( - Pane<? extends Logging2_0> parentComposite, - Composite parent, - String property, - String labelString) { - super(parentComposite, parent); - - this.category = property; - this.labelString = labelString; - initializeLayout2(this.getControl()); - } - - private EnumFormComboViewer<Logging2_0, LoggingLevel> addLoggingLevelCombo(Composite container) { - return new EnumFormComboViewer<Logging2_0, LoggingLevel>(this, container) { - @Override - protected void addPropertyNames(Collection<String> propertyNames) { - super.addPropertyNames(propertyNames); - propertyNames.add(DEFAULT_PROPERTY); - propertyNames.add(Logging2_0.SQL_CATEGORY_LOGGING_PROPERTY); - propertyNames.add(Logging2_0.TRANSACTION_CATEGORY_LOGGING_PROPERTY); - propertyNames.add(Logging2_0.EVENT_CATEGORY_LOGGING_PROPERTY); - propertyNames.add(Logging2_0.CONNECTION_CATEGORY_LOGGING_PROPERTY); - propertyNames.add(Logging2_0.QUERY_CATEGORY_LOGGING_PROPERTY); - propertyNames.add(Logging2_0.CACHE_CATEGORY_LOGGING_PROPERTY); - propertyNames.add(Logging2_0.PROPAGATION_CATEGORY_LOGGING_PROPERTY); - propertyNames.add(Logging2_0.SEQUENCING_CATEGORY_LOGGING_PROPERTY); - propertyNames.add(Logging2_0.EJB_CATEGORY_LOGGING_PROPERTY); - propertyNames.add(Logging2_0.DMS_CATEGORY_LOGGING_PROPERTY); - propertyNames.add(Logging2_0.EJB_OR_METADATA_CATEGORY_LOGGING_PROPERTY); - propertyNames.add(Logging2_0.METAMODEL_CATEGORY_LOGGING_PROPERTY); - propertyNames.add(Logging2_0.WEAVER_CATEGORY_LOGGING_PROPERTY); - propertyNames.add(Logging2_0.PROPERTIES_CATEGORY_LOGGING_PROPERTY); - propertyNames.add(Logging2_0.SERVER_CATEGORY_LOGGING_PROPERTY); - } - - @Override - protected LoggingLevel[] getChoices() { - return LoggingLevel.values(); - } - - @Override - protected boolean sortChoices() { - return false; - } - - @Override - protected LoggingLevel getDefaultValue() { - return this.getSubject().getCategoriesDefaultLevel(); - } - - @Override - protected String displayString(LoggingLevel value) { - switch (value) { - case all : - return EclipseLinkUiMessages.EclipseLinkCategoryLoggingLevelComposite_all; - case config : - return EclipseLinkUiMessages.EclipseLinkCategoryLoggingLevelComposite_config; - case fine : - return EclipseLinkUiMessages.EclipseLinkCategoryLoggingLevelComposite_fine; - case finer : - return EclipseLinkUiMessages.EclipseLinkCategoryLoggingLevelComposite_finer; - case finest : - return EclipseLinkUiMessages.EclipseLinkCategoryLoggingLevelComposite_finest; - case info : - return EclipseLinkUiMessages.EclipseLinkCategoryLoggingLevelComposite_info; - case off : - return EclipseLinkUiMessages.EclipseLinkCategoryLoggingLevelComposite_off; - case severe : - return EclipseLinkUiMessages.EclipseLinkCategoryLoggingLevelComposite_severe; - case warning : - return EclipseLinkUiMessages.EclipseLinkCategoryLoggingLevelComposite_warning; - default : - throw new IllegalStateException(); - } - } - - @Override - protected LoggingLevel getValue() { - return this.getSubject().getLevel(category); - } - - @Override - protected void setValue(LoggingLevel value) { - this.getSubject().setLevel(category, value); - } - - @Override - protected void propertyChanged(String propertyName) { - if( propertyName != category && propertyName != DEFAULT_PROPERTY) return; - super.propertyChanged(propertyName); - } - }; - } - - @Override - protected void initializeLayout(Composite container) { - // see initializeLayout2 - } - - protected void initializeLayout2(Composite parent) { - this.addLabeledComposite( - parent, - this.labelString, - this.addLoggingLevelCombo(parent), - null // TODO - ); - } - } -}
\ No newline at end of file diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/v2_0/persistence/logging/EclipseLinkLogging2_0Composite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/v2_0/persistence/logging/EclipseLinkLogging2_0Composite.java deleted file mode 100644 index 7503618004..0000000000 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/v2_0/persistence/logging/EclipseLinkLogging2_0Composite.java +++ /dev/null @@ -1,55 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2009, 2011 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.jpa.eclipselink.ui.internal.v2_0.persistence.logging; - -import org.eclipse.jpt.common.ui.internal.widgets.Pane; -import org.eclipse.jpt.common.utility.internal.model.value.SimplePropertyValueModel; -import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.Logging2_0; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.EclipseLinkUiMessages; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.persistence.logging.EclipseLinkLoggingComposite; -import org.eclipse.swt.widgets.Composite; - -/** - * EclipseLinkLogging2_0Composite - */ -public class EclipseLinkLogging2_0Composite extends EclipseLinkLoggingComposite<Logging2_0> -{ - - public EclipseLinkLogging2_0Composite( - Pane<Logging2_0> subjectHolder, - Composite container) { - super(subjectHolder, container); - } - - @Override - protected void initializeLayout(Composite parent) { - super.initializeLayout(parent); - - Composite categoryLoggingSection = this.addCollapsibleSubSection( - this.addSubPane(parent, 0, 16), - EclipseLinkUiMessages.PersistenceXmlLoggingTab_categoryLoggingLevelSectionTitle, - new SimplePropertyValueModel<Boolean>(Boolean.FALSE) - ); - - this.addCategoryLoggingLevelComposite(categoryLoggingSection); - } - - protected void addCategoryLoggingLevelComposite(Composite parent) { - new EclipseLinkCategoryLoggingLevelComposite(this, parent); - } - - @Override - protected void logPropertiesComposite(Composite parent) { - super.logPropertiesComposite(parent); - - // Connection: - new ConnectionComposite(this, parent); - } -} diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/v2_0/persistence/logging/PersistenceXmlLogging2_0Tab.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/v2_0/persistence/logging/PersistenceXmlLogging2_0Tab.java deleted file mode 100644 index ec4bc98e30..0000000000 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/v2_0/persistence/logging/PersistenceXmlLogging2_0Tab.java +++ /dev/null @@ -1,37 +0,0 @@ -/******************************************************************************* -* Copyright (c) 2009, 2011 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.jpa.eclipselink.ui.internal.v2_0.persistence.logging; - -import org.eclipse.jpt.common.ui.WidgetFactory; -import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; -import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.Logging2_0; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.persistence.logging.PersistenceXmlLoggingTab; -import org.eclipse.swt.widgets.Composite; - -/** - * PersistenceXmlLogging2_0Tab - */ -public class PersistenceXmlLogging2_0Tab extends PersistenceXmlLoggingTab<Logging2_0> -{ - // ********** constructors/initialization ********** - public PersistenceXmlLogging2_0Tab( - PropertyValueModel<Logging2_0> subjectHolder, - Composite parent, - WidgetFactory widgetFactory) { - - super(subjectHolder, parent, widgetFactory); - } - - @Override - protected void initializeLayout(Composite container) { - new EclipseLinkLogging2_0Composite(this, container); - } - -} diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/v2_0/persistence/options/EclipseLinkOptions2_0Composite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/v2_0/persistence/options/EclipseLinkOptions2_0Composite.java deleted file mode 100644 index 4f52bbd266..0000000000 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/v2_0/persistence/options/EclipseLinkOptions2_0Composite.java +++ /dev/null @@ -1,38 +0,0 @@ -/******************************************************************************* -* Copyright (c) 2009, 2011 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.jpa.eclipselink.ui.internal.v2_0.persistence.options; - -import org.eclipse.jpt.common.ui.internal.widgets.Pane; -import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.Options2_0; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.persistence.options.EclipseLinkOptionsComposite; -import org.eclipse.swt.widgets.Composite; - -/** - * EclipseLinkOptions2_0Composite - */ -public class EclipseLinkOptions2_0Composite extends EclipseLinkOptionsComposite<Options2_0> -{ - public EclipseLinkOptions2_0Composite( - Pane<Options2_0> subjectHolder, - Composite container) { - super(subjectHolder, container); - } - - @Override - protected Composite initializeMiscellaneousPane(Composite container) { - Composite composite = super.initializeMiscellaneousPane(container); - - new LockingConfigurationComposite(this, composite); - new QueryConfigurationComposite(this, composite); - new ValidationConfigurationComposite(this, composite); - return composite; - } - -} diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/v2_0/persistence/options/LockingConfigurationComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/v2_0/persistence/options/LockingConfigurationComposite.java deleted file mode 100644 index 19656f8129..0000000000 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/v2_0/persistence/options/LockingConfigurationComposite.java +++ /dev/null @@ -1,85 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2009, 2012 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.jpa.eclipselink.ui.internal.v2_0.persistence.options; - -import org.eclipse.jpt.common.ui.internal.widgets.IntegerCombo; -import org.eclipse.jpt.common.ui.internal.widgets.Pane; -import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter; -import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; -import org.eclipse.jpt.common.utility.model.value.ModifiablePropertyValueModel; -import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.Options2_0; -import org.eclipse.jpt.jpa.ui.internal.jpa2.persistence.JptUiPersistence2_0Messages; -import org.eclipse.swt.widgets.Composite; - -/** - * LockingConfigurationComposite - */ -public class LockingConfigurationComposite extends Pane<Options2_0> -{ - /** - * Creates a new <code>LockingConfigurationComposite</code>. - * - * @param parentController - * The parent container of this one - * @param parent - * The parent container - */ - public LockingConfigurationComposite( - Pane<Options2_0> parentComposite, - Composite parent) { - - super(parentComposite, parent); - } - - @Override - protected void initializeLayout(Composite container) { - addLockTimeoutCombo(container); - } - - private void addLockTimeoutCombo(Composite container) { - new IntegerCombo<Options2_0>(this, container) { - - @Override - protected String getLabelText() { - return JptUiPersistence2_0Messages.LockingConfigurationComposite_lockTimeoutLabel; - } - - @Override - protected String getHelpId() { - return null; // TODO - } - - @Override - protected PropertyValueModel<Integer> buildDefaultHolder() { - return new PropertyAspectAdapter<Options2_0, Integer>(this.getSubjectHolder()) { - @Override - protected Integer buildValue_() { - return this.subject.getDefaultLockTimeout(); - } - }; - } - - @Override - protected ModifiablePropertyValueModel<Integer> buildSelectedItemHolder() { - return new PropertyAspectAdapter<Options2_0, Integer>(this.getSubjectHolder(), Options2_0.LOCK_TIMEOUT_PROPERTY) { - @Override - protected Integer buildValue_() { - return this.subject.getLockTimeout(); - } - - @Override - protected void setValue_(Integer value) { - this.subject.setLockTimeout(value); - } - }; - } - }; - } -}
\ No newline at end of file diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/v2_0/persistence/options/PersistenceXmlOptions2_0Tab.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/v2_0/persistence/options/PersistenceXmlOptions2_0Tab.java deleted file mode 100644 index 8a556e1169..0000000000 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/v2_0/persistence/options/PersistenceXmlOptions2_0Tab.java +++ /dev/null @@ -1,37 +0,0 @@ -/******************************************************************************* -* Copyright (c) 2009, 2011 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.jpa.eclipselink.ui.internal.v2_0.persistence.options; - -import org.eclipse.jpt.common.ui.WidgetFactory; -import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; -import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.Options2_0; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.persistence.options.PersistenceXmlOptionsTab; -import org.eclipse.swt.widgets.Composite; - -/** - * PersistenceXmlOptions2_0Tab - */ -public class PersistenceXmlOptions2_0Tab extends PersistenceXmlOptionsTab<Options2_0> -{ - // ********** constructors/initialization ********** - public PersistenceXmlOptions2_0Tab( - PropertyValueModel<Options2_0> subjectHolder, - Composite parent, - WidgetFactory widgetFactory) { - - super(subjectHolder, parent, widgetFactory); - } - - @Override - protected void initializeLayout(Composite container) { - new EclipseLinkOptions2_0Composite(this, container); - } - -} diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/v2_0/persistence/options/QueryConfigurationComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/v2_0/persistence/options/QueryConfigurationComposite.java deleted file mode 100644 index 994dc7bc6b..0000000000 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/v2_0/persistence/options/QueryConfigurationComposite.java +++ /dev/null @@ -1,85 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2009, 2012 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.jpa.eclipselink.ui.internal.v2_0.persistence.options; - -import org.eclipse.jpt.common.ui.internal.widgets.IntegerCombo; -import org.eclipse.jpt.common.ui.internal.widgets.Pane; -import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter; -import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; -import org.eclipse.jpt.common.utility.model.value.ModifiablePropertyValueModel; -import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.Options2_0; -import org.eclipse.jpt.jpa.ui.internal.jpa2.persistence.JptUiPersistence2_0Messages; -import org.eclipse.swt.widgets.Composite; - -/** - * QueryConfigurationComposite - */ -public class QueryConfigurationComposite extends Pane<Options2_0> -{ - /** - * Creates a new <code>QueryConfigurationComposite</code>. - * - * @param parentController - * The parent container of this one - * @param parent - * The parent container - */ - public QueryConfigurationComposite( - Pane<Options2_0> parentComposite, - Composite parent) { - - super(parentComposite, parent); - } - - @Override - protected void initializeLayout(Composite container) { - this.addQueryTimeoutCombo(container); - } - - private void addQueryTimeoutCombo(Composite container) { - new IntegerCombo<Options2_0>(this, container) { - - @Override - protected String getLabelText() { - return JptUiPersistence2_0Messages.QueryConfigurationComposite_queryTimeoutLabel; - } - - @Override - protected String getHelpId() { - return null; // TODO - } - - @Override - protected PropertyValueModel<Integer> buildDefaultHolder() { - return new PropertyAspectAdapter<Options2_0, Integer>(this.getSubjectHolder()) { - @Override - protected Integer buildValue_() { - return this.subject.getDefaultQueryTimeout(); - } - }; - } - - @Override - protected ModifiablePropertyValueModel<Integer> buildSelectedItemHolder() { - return new PropertyAspectAdapter<Options2_0, Integer>(this.getSubjectHolder(), Options2_0.QUERY_TIMEOUT_PROPERTY) { - @Override - protected Integer buildValue_() { - return this.subject.getQueryTimeout(); - } - - @Override - protected void setValue_(Integer value) { - this.subject.setQueryTimeout(value); - } - }; - } - }; - } -}
\ No newline at end of file diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/v2_0/persistence/options/ValidationConfigurationComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/v2_0/persistence/options/ValidationConfigurationComposite.java deleted file mode 100644 index d7847c4ce3..0000000000 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/v2_0/persistence/options/ValidationConfigurationComposite.java +++ /dev/null @@ -1,382 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2009, 2012 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.jpa.eclipselink.ui.internal.v2_0.persistence.options; - -import org.eclipse.jdt.core.IJavaElement; -import org.eclipse.jdt.core.IJavaProject; -import org.eclipse.jdt.core.IType; -import org.eclipse.jdt.core.JavaModelException; -import org.eclipse.jdt.core.search.IJavaSearchScope; -import org.eclipse.jdt.core.search.SearchEngine; -import org.eclipse.jdt.ui.IJavaElementSearchConstants; -import org.eclipse.jdt.ui.JavaUI; -import org.eclipse.jface.viewers.ILabelProvider; -import org.eclipse.jface.viewers.LabelProvider; -import org.eclipse.jface.window.Window; -import org.eclipse.jpt.common.ui.internal.JptCommonUiMessages; -import org.eclipse.jpt.common.ui.internal.widgets.AddRemoveListPane; -import org.eclipse.jpt.common.ui.internal.widgets.AddRemovePane.Adapter; -import org.eclipse.jpt.common.ui.internal.widgets.Pane; -import org.eclipse.jpt.common.utility.internal.iterables.ListIterable; -import org.eclipse.jpt.common.utility.internal.model.value.ListAspectAdapter; -import org.eclipse.jpt.common.utility.internal.model.value.SimplePropertyValueModel; -import org.eclipse.jpt.common.utility.internal.model.value.TransformationPropertyValueModel; -import org.eclipse.jpt.common.utility.internal.model.value.swing.ObjectListSelectionModel; -import org.eclipse.jpt.common.utility.model.value.ListValueModel; -import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; -import org.eclipse.jpt.common.utility.model.value.ModifiablePropertyValueModel; -import org.eclipse.jpt.jpa.core.jpa2.context.persistence.PersistenceUnit2_0; -import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.Options2_0; -import org.eclipse.jpt.jpa.eclipselink.ui.JptJpaEclipseLinkUiPlugin; -import org.eclipse.jpt.jpa.eclipselink.ui.internal.EclipseLinkUiMessages; -import org.eclipse.jpt.jpa.ui.internal.jpa2.persistence.JptUiPersistence2_0Messages; -import org.eclipse.swt.layout.GridData; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Table; -import org.eclipse.ui.PlatformUI; -import org.eclipse.ui.dialogs.SelectionDialog; -import org.eclipse.ui.progress.IProgressService; - -/** - * ValidationConfigurationComposite - */ -public class ValidationConfigurationComposite extends Pane<Options2_0> -{ - /** - * Creates a new <code>ValidationGroupComposite</code>. - * - * @param parentController - * The parent container of this one - * @param parent - * The parent container - */ - public ValidationConfigurationComposite( - Pane<Options2_0> parentComposite, - Composite parent) { - - super(parentComposite, parent); - } - - @Override - protected void initializeLayout(Composite parent) { - - // ValidationMode - new ValidationModeComposite(this, this.buildPersistenceUnit2_0Holder(), parent); - - // ValidationGroupPrePersist - this.addGroupPrePersistListPane(parent); - - // ValidationGroupPreUpdate - this.addGroupPreUpdateListPane(parent); - - // ValidationGroupPreRemove - this.addGroupPreRemoveListPane(parent); - } - - // ********** ValidationGroupPrePersists ********** - - private void addGroupPrePersistListPane(Composite parent) { - - this.addLabeledComposite(parent, - JptUiPersistence2_0Messages.ValidationConfigurationComposite_groupPrePersistLabel, - this.addPrePersistListPane(parent), - null // TODO Help - ); - } - - private AddRemoveListPane<Options2_0> addPrePersistListPane(Composite parent) { - - // List pane - AddRemoveListPane<Options2_0> listPane = new AddRemoveListPane<Options2_0>( - this, - parent, - this.buildPrePersistAdapter(), - this.buildPrePersistListHolder(), - this.buildSelectedItemHolder(), - this.buildLabelProvider() - ) - { - @Override - protected void initializeTable(Table table) { - super.initializeTable(table); - - Composite container = table.getParent(); - GridData gridData = (GridData) container.getLayoutData(); - gridData.heightHint = 75; - } - }; - return listPane; - } - - private Adapter buildPrePersistAdapter() { - return new AddRemoveListPane.AbstractAdapter() { - public void addNewItem(ObjectListSelectionModel listSelectionModel) { - addPrePersistClass(listSelectionModel); - } - - public void removeSelectedItems(ObjectListSelectionModel listSelectionModel) { - for (Object item : listSelectionModel.selectedValues()) { - getSubject().removeValidationGroupPrePersist((String) item); - } - } - }; - } - - private ListValueModel<String> buildPrePersistListHolder() { - return new ListAspectAdapter<Options2_0, String>(getSubjectHolder(), Options2_0.VALIDATION_GROUP_PRE_PERSIST_LIST) { - @Override - protected ListIterable<String> getListIterable() { - return subject.getValidationGroupPrePersists(); - } - - @Override - protected int size_() { - return subject.getValidationGroupPrePersistsSize(); - } - }; - } - - private void addPrePersistClass(ObjectListSelectionModel listSelectionModel) { - - IType type = this.chooseType(); - - if (type != null) { - String className = type.getFullyQualifiedName('$'); - if( ! this.getSubject().validationGroupPrePersistExists(className)) { - - String classRef = this.getSubject().addValidationGroupPrePersist(className); - listSelectionModel.setSelectedValue(classRef); - } - } - } - - // ********** ValidationGroupPreUpdates ********** - - private void addGroupPreUpdateListPane(Composite parent) { - - this.addLabeledComposite(parent, - JptUiPersistence2_0Messages.ValidationConfigurationComposite_groupPreUpdateLabel, - this.addPreUpdateListPane(parent), - null // TODO Help - ); - } - - private AddRemoveListPane<Options2_0> addPreUpdateListPane(Composite parent) { - - // List pane - AddRemoveListPane<Options2_0> listPane = new AddRemoveListPane<Options2_0>( - this, - parent, - this.buildPreUpdateAdapter(), - this.buildPreUpdateListHolder(), - this.buildSelectedItemHolder(), - this.buildLabelProvider() - ) - { - @Override - protected void initializeTable(Table table) { - super.initializeTable(table); - - Composite container = table.getParent(); - GridData gridData = (GridData) container.getLayoutData(); - gridData.heightHint = 75; - } - }; - return listPane; - } - - private Adapter buildPreUpdateAdapter() { - return new AddRemoveListPane.AbstractAdapter() { - public void addNewItem(ObjectListSelectionModel listSelectionModel) { - addPreUpdateClass(listSelectionModel); - } - - public void removeSelectedItems(ObjectListSelectionModel listSelectionModel) { - for (Object item : listSelectionModel.selectedValues()) { - getSubject().removeValidationGroupPreUpdate((String) item); - } - } - }; - } - - private ListValueModel<String> buildPreUpdateListHolder() { - return new ListAspectAdapter<Options2_0, String>(getSubjectHolder(), Options2_0.VALIDATION_GROUP_PRE_UPDATE_LIST) { - @Override - protected ListIterable<String> getListIterable() { - return subject.getValidationGroupPreUpdates(); - } - - @Override - protected int size_() { - return subject.getValidationGroupPreUpdatesSize(); - } - }; - } - - private void addPreUpdateClass(ObjectListSelectionModel listSelectionModel) { - - IType type = this.chooseType(); - - if (type != null) { - String className = type.getFullyQualifiedName('$'); - if( ! this.getSubject().validationGroupPreUpdateExists(className)) { - - String classRef = this.getSubject().addValidationGroupPreUpdate(className); - listSelectionModel.setSelectedValue(classRef); - } - } - } - - // ********** ValidationGroupPreRemoves ********** - - private void addGroupPreRemoveListPane(Composite parent) { - - this.addLabeledComposite(parent, - JptUiPersistence2_0Messages.ValidationConfigurationComposite_groupPreRemoveLabel, - this.addPreRemoveListPane(parent), - null // TODO Help - ); - } - - private AddRemoveListPane<Options2_0> addPreRemoveListPane(Composite parent) { - - // List pane - AddRemoveListPane<Options2_0> listPane = new AddRemoveListPane<Options2_0>( - this, - parent, - this.buildPreRemoveAdapter(), - this.buildPreRemoveListHolder(), - this.buildSelectedItemHolder(), - this.buildLabelProvider() - ) - { - @Override - protected void initializeTable(Table table) { - super.initializeTable(table); - - Composite container = table.getParent(); - GridData gridData = (GridData) container.getLayoutData(); - gridData.heightHint = 75; - } - }; - return listPane; - } - - private Adapter buildPreRemoveAdapter() { - return new AddRemoveListPane.AbstractAdapter() { - public void addNewItem(ObjectListSelectionModel listSelectionModel) { - addPreRemoveClass(listSelectionModel); - } - - public void removeSelectedItems(ObjectListSelectionModel listSelectionModel) { - for (Object item : listSelectionModel.selectedValues()) { - getSubject().removeValidationGroupPreRemove((String) item); - } - } - }; - } - - private ListValueModel<String> buildPreRemoveListHolder() { - return new ListAspectAdapter<Options2_0, String>(getSubjectHolder(), Options2_0.VALIDATION_GROUP_PRE_REMOVE_LIST) { - @Override - protected ListIterable<String> getListIterable() { - return subject.getValidationGroupPreRemoves(); - } - - @Override - protected int size_() { - return subject.getValidationGroupPreRemovesSize(); - } - }; - } - - private void addPreRemoveClass(ObjectListSelectionModel listSelectionModel) { - - IType type = this.chooseType(); - - if (type != null) { - String className = type.getFullyQualifiedName('$'); - if( ! this.getSubject().validationGroupPreRemoveExists(className)) { - - String classRef = this.getSubject().addValidationGroupPreRemove(className); - listSelectionModel.setSelectedValue(classRef); - } - } - } - - - // ********** Private methods ********** - - private ILabelProvider buildLabelProvider() { - return new LabelProvider() { - - @Override - public String getText(Object element) { - String name = (String) element; - - if (name == null) { - name = EclipseLinkUiMessages.PersistenceXmlOptionsTab_noName; - } - return name; - } - }; - } - - /** - * Prompts the user the Open Type dialog. - * - * @return Either the selected type or <code>null</code> if the user - * canceled the dialog - */ - private IType chooseType() { - IJavaProject javaProject = this.getSubject().getJpaProject().getJavaProject(); - IJavaElement[] elements = new IJavaElement[] { javaProject }; - IJavaSearchScope scope = SearchEngine.createJavaSearchScope(elements); - IProgressService service = PlatformUI.getWorkbench().getProgressService(); - SelectionDialog typeSelectionDialog; - - try { - typeSelectionDialog = JavaUI.createTypeDialog( - getShell(), - service, - scope, - IJavaElementSearchConstants.CONSIDER_CLASSES, - false, - "" - ); - } - catch (JavaModelException e) { - JptJpaEclipseLinkUiPlugin.log(e); - return null; - } - - typeSelectionDialog.setTitle(JptCommonUiMessages.ClassChooserPane_dialogTitle); - typeSelectionDialog.setMessage(JptCommonUiMessages.ClassChooserPane_dialogMessage); - - if (typeSelectionDialog.open() == Window.OK) { - return (IType) typeSelectionDialog.getResult()[0]; - } - - return null; - } - - private ModifiablePropertyValueModel<String> buildSelectedItemHolder() { - return new SimplePropertyValueModel<String>(); - } - - private PropertyValueModel<PersistenceUnit2_0> buildPersistenceUnit2_0Holder() { - return new TransformationPropertyValueModel<Options2_0, PersistenceUnit2_0>(this.getSubjectHolder()) { - @Override - protected PersistenceUnit2_0 transform_(Options2_0 value) { - return (PersistenceUnit2_0) value.getPersistenceUnit(); - } - }; - } -}
\ No newline at end of file diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/v2_0/persistence/options/ValidationModeComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/v2_0/persistence/options/ValidationModeComposite.java deleted file mode 100644 index d8623bd0c5..0000000000 --- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/src/org/eclipse/jpt/jpa/eclipselink/ui/internal/v2_0/persistence/options/ValidationModeComposite.java +++ /dev/null @@ -1,101 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2009, 2012 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.jpa.eclipselink.ui.internal.v2_0.persistence.options; - -import java.util.Collection; -import org.eclipse.jpt.common.ui.internal.widgets.EnumFormComboViewer; -import org.eclipse.jpt.common.ui.internal.widgets.Pane; -import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; -import org.eclipse.jpt.jpa.core.jpa2.context.persistence.PersistenceUnit2_0; -import org.eclipse.jpt.jpa.core.jpa2.context.persistence.options.ValidationMode; -import org.eclipse.jpt.jpa.ui.internal.jpa2.persistence.JptUiPersistence2_0Messages; -import org.eclipse.swt.widgets.Composite; - -/** - * ValidationModeComposite - */ -public class ValidationModeComposite extends Pane<PersistenceUnit2_0> -{ - /** - * Creates a new <code>ValidationModeComposite</code>. - * - * @param parentController - * The parent container of this one - * @param parent - * The parent container - */ - public ValidationModeComposite( - Pane<?> parentPane, - PropertyValueModel<? extends PersistenceUnit2_0> subjectHolder, - Composite parent) { - - super(parentPane, subjectHolder, parent); - } - - @Override - protected void initializeLayout(Composite parent) { - this.addLabeledComposite( - parent, - JptUiPersistence2_0Messages.ValidationModeComposite_validationModeLabel, - this.addValidationModeCombo(parent), - null // TODO - ); - } - - private EnumFormComboViewer<PersistenceUnit2_0, ValidationMode> addValidationModeCombo(Composite parent) { - - return new EnumFormComboViewer<PersistenceUnit2_0, ValidationMode>(this, this.getSubjectHolder(), parent) { - @Override - protected void addPropertyNames(Collection<String> propertyNames) { - super.addPropertyNames(propertyNames); - propertyNames.add(PersistenceUnit2_0.SPECIFIED_VALIDATION_MODE_PROPERTY); - } - - @Override - protected ValidationMode[] getChoices() { - return ValidationMode.values(); - } - - @Override - protected boolean sortChoices() { - return false; - } - - @Override - protected ValidationMode getDefaultValue() { - return this.getSubject().getDefaultValidationMode(); - } - - @Override - protected String displayString(ValidationMode value) { - switch (value) { - case AUTO : - return JptUiPersistence2_0Messages.ValidationModeComposite_auto; - case CALLBACK : - return JptUiPersistence2_0Messages.ValidationModeComposite_callback; - case NONE : - return JptUiPersistence2_0Messages.ValidationModeComposite_none; - default : - throw new IllegalStateException(); - } - } - - @Override - protected ValidationMode getValue() { - return this.getSubject().getSpecifiedValidationMode(); - } - - @Override - protected void setValue(ValidationMode value) { - this.getSubject().setSpecifiedValidationMode(value); - } - }; - } -} diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/META-INF/MANIFEST.MF b/jpa/plugins/org.eclipse.jpt.jpa.ui/META-INF/MANIFEST.MF index 3a2f3b7f58..5ded5941f2 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/META-INF/MANIFEST.MF +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/META-INF/MANIFEST.MF @@ -51,6 +51,7 @@ Export-Package: org.eclipse.jpt.jpa.ui, org.eclipse.jpt.jpa.ui.details, org.eclipse.jpt.jpa.ui.details.java, org.eclipse.jpt.jpa.ui.details.orm, + org.eclipse.jpt.jpa.ui.editors, org.eclipse.jpt.jpa.ui.internal;x-internal:=true, org.eclipse.jpt.jpa.ui.internal.actions;x-internal:=true, org.eclipse.jpt.jpa.ui.internal.commands;x-internal:=true, @@ -66,15 +67,12 @@ Export-Package: org.eclipse.jpt.jpa.ui, org.eclipse.jpt.jpa.ui.internal.jpa2.details.java;x-internal:=true, org.eclipse.jpt.jpa.ui.internal.jpa2.details.orm;x-internal:=true, org.eclipse.jpt.jpa.ui.internal.jpa2.persistence;x-internal:=true, - org.eclipse.jpt.jpa.ui.internal.jpa2.persistence.connection;x-internal:=true, - org.eclipse.jpt.jpa.ui.internal.jpa2.persistence.options;x-internal:=true, org.eclipse.jpt.jpa.ui.internal.jpa2.platform.generic;x-internal:=true, org.eclipse.jpt.jpa.ui.internal.jpql;x-internal:=true, org.eclipse.jpt.jpa.ui.internal.listeners;x-internal:=true, org.eclipse.jpt.jpa.ui.internal.menus;x-internal:=true, org.eclipse.jpt.jpa.ui.internal.navigator;x-internal:=true, org.eclipse.jpt.jpa.ui.internal.persistence;x-internal:=true, - org.eclipse.jpt.jpa.ui.internal.persistence.details;x-internal:=true, org.eclipse.jpt.jpa.ui.internal.perspective;x-internal:=true, org.eclipse.jpt.jpa.ui.internal.platform;x-internal:=true, org.eclipse.jpt.jpa.ui.internal.platform.base;x-internal:=true, diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/JpaPlatformUi.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/JpaPlatformUi.java index 4cae15da39..dc8d458fc9 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/JpaPlatformUi.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/JpaPlatformUi.java @@ -111,6 +111,7 @@ public interface JpaPlatformUi { String mappingKey, Composite parent, PropertyValueModel<AttributeMapping> mappingHolder, + PropertyValueModel<Boolean> enabledModel, WidgetFactory widgetFactory); DefaultMappingUiDefinition<ReadOnlyPersistentAttribute, ? extends AttributeMapping> diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/MappingResourceUiDefinition.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/MappingResourceUiDefinition.java index 3f18490732..4ff92e64e8 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/MappingResourceUiDefinition.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/MappingResourceUiDefinition.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2009 Oracle. All rights reserved. + * Copyright (c) 2009, 2012 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. @@ -37,7 +37,9 @@ public interface MappingResourceUiDefinition extends ResourceUiDefinition JpaComposite buildAttributeMappingComposite( String key, PropertyValueModel<AttributeMapping> mappingHolder, - Composite parent, WidgetFactory widgetFactory); + PropertyValueModel<Boolean> enabledModel, + Composite parent, + WidgetFactory widgetFactory); /** * Return an iterator of attribute mapping ui definitions appropriate for this file type diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/PersistenceXmlResourceUiDefinition.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/PersistenceXmlResourceUiDefinition.java index c1d4ab6225..14d85ea95e 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/PersistenceXmlResourceUiDefinition.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/PersistenceXmlResourceUiDefinition.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2009 Oracle. All rights reserved. + * Copyright (c) 2009, 2012 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. @@ -13,7 +13,7 @@ import java.util.ListIterator; import org.eclipse.jpt.common.ui.WidgetFactory; import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; import org.eclipse.jpt.jpa.core.context.persistence.PersistenceUnit; -import org.eclipse.jpt.jpa.ui.details.JpaPageComposite; +import org.eclipse.jpt.jpa.ui.editors.JpaPageComposite; import org.eclipse.swt.widgets.Composite; /** diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/details/JpaComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/details/JpaComposite.java index 45a34c1b6c..d0da39714d 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/details/JpaComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/details/JpaComposite.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2005, 2009 Oracle. All rights reserved. + * Copyright (c) 2005, 2012 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. @@ -31,14 +31,6 @@ public interface JpaComposite { Control getControl(); /** - * Changes the enablement state of the widgets of this pane. - * - * @param enabled <code>true</code> to enable the widgets or <code>false</code> - * to disable them - */ - void enableWidgets(boolean enabled); - - /** * Notifies this composite it should dispose any resources. */ void dispose(); diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/details/java/JavaAttributeMappingUiDefinition.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/details/java/JavaAttributeMappingUiDefinition.java index eca73a692a..5dbbfa1c76 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/details/java/JavaAttributeMappingUiDefinition.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/details/java/JavaAttributeMappingUiDefinition.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2006, 2009 Oracle. All rights reserved. + * Copyright (c) 2006, 2012 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. @@ -43,6 +43,7 @@ public interface JavaAttributeMappingUiDefinition<T extends AttributeMapping> JpaComposite buildAttributeMappingComposite( JavaUiFactory factory, PropertyValueModel<T> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory); } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/details/java/JavaUiFactory.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/details/java/JavaUiFactory.java index f3f86666af..7e8a111122 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/details/java/JavaUiFactory.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/details/java/JavaUiFactory.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2009 Oracle. All rights reserved. + * Copyright (c) 2009, 2012 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. @@ -142,6 +142,7 @@ public interface JavaUiFactory */ JpaComposite createJavaIdMappingComposite( PropertyValueModel<JavaIdMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory); @@ -155,6 +156,7 @@ public interface JavaUiFactory */ JpaComposite createJavaEmbeddedIdMappingComposite( PropertyValueModel<JavaEmbeddedIdMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory); @@ -168,6 +170,7 @@ public interface JavaUiFactory */ JpaComposite createJavaBasicMappingComposite( PropertyValueModel<JavaBasicMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory); @@ -181,6 +184,7 @@ public interface JavaUiFactory */ JpaComposite createJavaVersionMappingComposite( PropertyValueModel<JavaVersionMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory); @@ -194,6 +198,7 @@ public interface JavaUiFactory */ JpaComposite createJavaManyToOneMappingComposite( PropertyValueModel<JavaManyToOneMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory); @@ -207,6 +212,7 @@ public interface JavaUiFactory */ JpaComposite createJavaOneToManyMappingComposite( PropertyValueModel<JavaOneToManyMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory); @@ -220,6 +226,7 @@ public interface JavaUiFactory */ JpaComposite createJavaOneToOneMappingComposite( PropertyValueModel<JavaOneToOneMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory); @@ -233,6 +240,7 @@ public interface JavaUiFactory */ JpaComposite createJavaManyToManyMappingComposite( PropertyValueModel<JavaManyToManyMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory); @@ -246,6 +254,7 @@ public interface JavaUiFactory */ JpaComposite createJavaEmbeddedMappingComposite( PropertyValueModel<JavaEmbeddedMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory); @@ -259,6 +268,7 @@ public interface JavaUiFactory */ JpaComposite createJavaTransientMappingComposite( PropertyValueModel<JavaTransientMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory); diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/details/orm/OrmAttributeMappingUiDefinition.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/details/orm/OrmAttributeMappingUiDefinition.java index 2c5861fbe6..a3fb5478e0 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/details/orm/OrmAttributeMappingUiDefinition.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/details/orm/OrmAttributeMappingUiDefinition.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2006, 2009 Oracle. All rights reserved. + * Copyright (c) 2006, 2012 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. @@ -43,6 +43,7 @@ public interface OrmAttributeMappingUiDefinition<T extends AttributeMapping> JpaComposite buildAttributeMappingComposite( OrmXmlUiFactory factory, PropertyValueModel<T> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory); } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/details/orm/OrmXmlUiFactory.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/details/orm/OrmXmlUiFactory.java index 6c1eaf975e..1bb2548373 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/details/orm/OrmXmlUiFactory.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/details/orm/OrmXmlUiFactory.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2009 Oracle. All rights reserved. + * Copyright (c) 2009, 2012 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. @@ -98,6 +98,7 @@ public interface OrmXmlUiFactory */ JpaComposite createOrmIdMappingComposite( PropertyValueModel<OrmIdMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory); @@ -111,6 +112,7 @@ public interface OrmXmlUiFactory */ JpaComposite createOrmEmbeddedIdMappingComposite( PropertyValueModel<OrmEmbeddedIdMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory); @@ -124,6 +126,7 @@ public interface OrmXmlUiFactory */ JpaComposite createOrmBasicMappingComposite( PropertyValueModel<OrmBasicMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory); @@ -137,6 +140,7 @@ public interface OrmXmlUiFactory */ JpaComposite createOrmVersionMappingComposite( PropertyValueModel<OrmVersionMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory); @@ -150,6 +154,7 @@ public interface OrmXmlUiFactory */ JpaComposite createOrmManyToOneMappingComposite( PropertyValueModel<OrmManyToOneMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory); @@ -163,6 +168,7 @@ public interface OrmXmlUiFactory */ JpaComposite createOrmOneToManyMappingComposite( PropertyValueModel<OrmOneToManyMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory); @@ -176,6 +182,7 @@ public interface OrmXmlUiFactory */ JpaComposite createOrmOneToOneMappingComposite( PropertyValueModel<OrmOneToOneMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory); @@ -189,6 +196,7 @@ public interface OrmXmlUiFactory */ JpaComposite createOrmManyToManyMappingComposite( PropertyValueModel<OrmManyToManyMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory); @@ -202,6 +210,7 @@ public interface OrmXmlUiFactory */ JpaComposite createOrmEmbeddedMappingComposite( PropertyValueModel<OrmEmbeddedMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory); @@ -215,6 +224,7 @@ public interface OrmXmlUiFactory */ JpaComposite createOrmTransientMappingComposite( PropertyValueModel<OrmTransientMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory); }
\ No newline at end of file diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/details/JpaPageComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/editors/JpaPageComposite.java index 7a28e81d88..e0031ae4d6 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/details/JpaPageComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/editors/JpaPageComposite.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2005, 2010 Oracle. All rights reserved. + * Copyright (c) 2005, 2012 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. @@ -7,9 +7,10 @@ * Contributors: * Oracle - initial API and implementation ******************************************************************************/ -package org.eclipse.jpt.jpa.ui.details; +package org.eclipse.jpt.jpa.ui.editors; import org.eclipse.jface.resource.ImageDescriptor; +import org.eclipse.jpt.jpa.ui.details.JpaComposite; /** * A {@link JpaPageComposite} defines the common behavior of the JPA diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/GenericJpaPlatformUiProvider.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/GenericJpaPlatformUiProvider.java index 03077a3de2..3cffe86bc5 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/GenericJpaPlatformUiProvider.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/GenericJpaPlatformUiProvider.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2007, 2009 Oracle. All rights reserved. + * Copyright (c) 2007, 2012 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. @@ -20,7 +20,7 @@ import org.eclipse.jpt.jpa.ui.internal.details.orm.EntityMappingsDetailsProvider import org.eclipse.jpt.jpa.ui.internal.details.orm.OrmPersistentAttributeDetailsProvider; import org.eclipse.jpt.jpa.ui.internal.details.orm.OrmPersistentTypeDetailsProvider; import org.eclipse.jpt.jpa.ui.internal.details.orm.OrmXmlUiDefinition; -import org.eclipse.jpt.jpa.ui.internal.persistence.details.PersistenceXmlUiDefinition; +import org.eclipse.jpt.jpa.ui.internal.persistence.PersistenceXmlUiDefinition; /** * All the state in the JPA platform should be "static" (i.e. unchanging once diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/AbstractBasicMappingComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/AbstractBasicMappingComposite.java index b3928aedde..2445dd1477 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/AbstractBasicMappingComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/AbstractBasicMappingComposite.java @@ -12,7 +12,6 @@ package org.eclipse.jpt.jpa.ui.internal.details; import org.eclipse.jpt.common.ui.WidgetFactory; import org.eclipse.jpt.common.ui.internal.widgets.Pane; import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter; -import org.eclipse.jpt.common.utility.internal.model.value.SimplePropertyValueModel; import org.eclipse.jpt.common.utility.internal.model.value.TransformationPropertyValueModel; import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; import org.eclipse.jpt.common.utility.model.value.ModifiablePropertyValueModel; @@ -25,9 +24,13 @@ import org.eclipse.jpt.jpa.core.context.LobConverter; import org.eclipse.jpt.jpa.core.context.BaseTemporalConverter; import org.eclipse.jpt.jpa.ui.details.JpaComposite; import org.eclipse.swt.layout.GridData; -import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.ui.forms.events.ExpansionAdapter; +import org.eclipse.ui.forms.events.ExpansionEvent; +import org.eclipse.ui.forms.widgets.ExpandableComposite; +import org.eclipse.ui.forms.widgets.Section; /** * Here the layout of this pane: @@ -67,11 +70,11 @@ import org.eclipse.swt.widgets.Composite; * * @see BasicMapping * @see ColumnComposite - * @see EnumTypeComposite - * @see FetchTypeComposite + * @see EnumTypeComboViewer + * @see FetchTypeComboViewer * @see LobComposite - * @see OptionalComposite - * @see TemporalTypeComposite + * @see OptionalTriStateCheckBox + * @see TemporalTypeCombo * * @version 2.3 * @since 1.0 @@ -88,10 +91,11 @@ public abstract class AbstractBasicMappingComposite<T extends BasicMapping> * @param widgetFactory The factory used to create various common widgets */ protected AbstractBasicMappingComposite(PropertyValueModel<? extends T> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory) { - super(subjectHolder, parent, widgetFactory); + super(subjectHolder, enabledModel, parent, widgetFactory); } @Override @@ -101,31 +105,48 @@ public abstract class AbstractBasicMappingComposite<T extends BasicMapping> } protected void initializeBasicCollapsibleSection(Composite container) { - container = addCollapsibleSection( - container, - JptUiDetailsMessages.BasicSection_title, - new SimplePropertyValueModel<Boolean>(Boolean.TRUE) - ); - - this.initializeBasicSection(container); + final Section section = this.getWidgetFactory().createSection(container, ExpandableComposite.TITLE_BAR | ExpandableComposite.TWISTIE); + section.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + section.setText(JptUiDetailsMessages.BasicSection_title); + section.setExpanded(true); + section.setClient(this.initializeBasicSection(section)); } - protected void initializeBasicSection(Composite container) { - new ColumnComposite(this, buildColumnHolder(), container); - new FetchTypeComposite(this, container); - new OptionalComposite(this, addSubPane(container, 4)); + protected Control initializeBasicSection(Composite container) { + container = this.addSubPane(container, 2, 0, 0, 0, 0); + + ColumnComposite columnComposite = new ColumnComposite(this, buildColumnHolder(), container); + GridData gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.horizontalSpan = 2; + columnComposite.getControl().setLayoutData(gridData); + + this.addLabel(container, JptUiDetailsMessages.BasicGeneralSection_fetchLabel); + new FetchTypeComboViewer(this, container); + + OptionalTriStateCheckBox optionalCheckBox = new OptionalTriStateCheckBox(this, container); + gridData = new GridData(); + gridData.horizontalSpan = 2; + optionalCheckBox.getControl().setLayoutData(gridData); + + return container; } protected void initializeTypeCollapsibleSection(Composite container) { - container = addCollapsibleSection( - container, - JptUiDetailsMessages.TypeSection_type - ); - this.initializeTypeSection(container); + final Section section = this.getWidgetFactory().createSection(container, ExpandableComposite.TITLE_BAR | ExpandableComposite.TWISTIE); + section.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + section.setText(JptUiDetailsMessages.TypeSection_type); + section.addExpansionListener(new ExpansionAdapter() { + @Override + public void expansionStateChanging(ExpansionEvent e) { + if (e.getState() && section.getClient() == null) { + section.setClient(AbstractBasicMappingComposite.this.initializeTypeSection(section)); + } + } + }); } - protected void initializeTypeSection(Composite container) { - ((GridLayout) container.getLayout()).numColumns = 2; + protected Control initializeTypeSection(Composite container) { + container = this.addSubPane(container, 2, 0, 0, 0, 0); // No converter Button noConverterButton = addRadioButton( @@ -150,7 +171,7 @@ public abstract class AbstractBasicMappingComposite<T extends BasicMapping> JptUiDetailsMessages.TypeSection_temporal, buildConverterBooleanHolder(BaseTemporalConverter.class), null); - registerSubPane(new TemporalTypeComposite(buildTemporalConverterHolder(converterHolder), container, getWidgetFactory())); + registerSubPane(new TemporalTypeCombo(buildTemporalConverterHolder(converterHolder), getEnabledModel(), container, getWidgetFactory())); // Enumerated @@ -159,7 +180,8 @@ public abstract class AbstractBasicMappingComposite<T extends BasicMapping> JptUiDetailsMessages.TypeSection_enumerated, buildConverterBooleanHolder(BaseEnumeratedConverter.class), null); - registerSubPane(new EnumTypeComposite(buildEnumeratedConverterHolder(converterHolder), container, getWidgetFactory())); + registerSubPane(new EnumTypeComboViewer(buildEnumeratedConverterHolder(converterHolder), getEnabledModel(), container, getWidgetFactory())); + return container; } protected PropertyValueModel<Column> buildColumnHolder() { diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/AbstractEmbeddableComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/AbstractEmbeddableComposite.java index cd59441aea..d9dd837b94 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/AbstractEmbeddableComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/AbstractEmbeddableComposite.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2007, 2010 Oracle. All rights reserved. + * Copyright (c) 2007, 2012 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. @@ -11,12 +11,15 @@ package org.eclipse.jpt.jpa.ui.internal.details; import org.eclipse.jpt.common.ui.WidgetFactory; import org.eclipse.jpt.common.ui.internal.widgets.Pane; -import org.eclipse.jpt.common.utility.internal.model.value.SimplePropertyValueModel; import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; import org.eclipse.jpt.jpa.core.context.Embeddable; import org.eclipse.jpt.jpa.ui.details.JpaComposite; -import org.eclipse.jpt.jpa.ui.internal.details.JptUiDetailsMessages; +import org.eclipse.jpt.jpa.ui.details.java.JavaUiFactory; +import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.ui.forms.widgets.ExpandableComposite; +import org.eclipse.ui.forms.widgets.Section; /** * This pane does not have any widgets. @@ -45,22 +48,16 @@ public abstract class AbstractEmbeddableComposite<T extends Embeddable> super(subjectHolder, parent, widgetFactory); } - - @Override - protected void initializeLayout(Composite container) { - } protected void initializeEmbeddableCollapsibleSection(Composite container) { - container = addCollapsibleSection( - container, - JptUiDetailsMessages.EmbeddableSection_title, - new SimplePropertyValueModel<Boolean>(Boolean.TRUE) - ); - - this.initializeEmbeddableSection(container); + final Section section = this.getWidgetFactory().createSection(container, ExpandableComposite.TITLE_BAR | ExpandableComposite.TWISTIE); + section.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + section.setText(JptUiDetailsMessages.EmbeddableSection_title); + section.setExpanded(true); + section.setClient(this.initializeEmbeddableSection(section)); } - protected void initializeEmbeddableSection(Composite container) { - + protected Control initializeEmbeddableSection(Composite container) { + throw new UnsupportedOperationException(); } }
\ No newline at end of file diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/AbstractEmbeddedIdMappingComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/AbstractEmbeddedIdMappingComposite.java index 0fc0e5137b..71a212efe1 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/AbstractEmbeddedIdMappingComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/AbstractEmbeddedIdMappingComposite.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2007, 2010 Oracle. All rights reserved. + * Copyright (c) 2007, 2012 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. @@ -11,11 +11,14 @@ package org.eclipse.jpt.jpa.ui.internal.details; import org.eclipse.jpt.common.ui.WidgetFactory; import org.eclipse.jpt.common.ui.internal.widgets.Pane; -import org.eclipse.jpt.common.utility.internal.model.value.SimplePropertyValueModel; import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; import org.eclipse.jpt.jpa.core.context.EmbeddedIdMapping; import org.eclipse.jpt.jpa.ui.details.JpaComposite; +import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.ui.forms.widgets.ExpandableComposite; +import org.eclipse.ui.forms.widgets.Section; public abstract class AbstractEmbeddedIdMappingComposite<T extends EmbeddedIdMapping> extends Pane<T> @@ -23,26 +26,26 @@ public abstract class AbstractEmbeddedIdMappingComposite<T extends EmbeddedIdMap { protected AbstractEmbeddedIdMappingComposite( PropertyValueModel<? extends T> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory) { - super(subjectHolder, parent, widgetFactory); + super(subjectHolder, enabledModel, parent, widgetFactory); } - - + @Override protected void initializeLayout(Composite container) { - initializeEmbeddedIdCollapsibleSection(container); + this.initializeEmbeddedIdCollapsibleSection(container); } - + protected void initializeEmbeddedIdCollapsibleSection(Composite container) { - container = addCollapsibleSection( - container, - JptUiDetailsMessages.EmbeddedIdSection_title, - new SimplePropertyValueModel<Boolean>(Boolean.TRUE)); - - this.initializeEmbeddedIdSection(container); + final Section section = this.getWidgetFactory().createSection(container, ExpandableComposite.TITLE_BAR | ExpandableComposite.TWISTIE); + section.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + section.setText(JptUiDetailsMessages.EmbeddedIdSection_title); + section.setClient(this.initializeEmbeddedIdSection(section)); + section.setExpanded(true); } - - protected abstract void initializeEmbeddedIdSection(Composite container); + + protected abstract Control initializeEmbeddedIdSection(Composite container); + } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/AbstractEmbeddedMappingComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/AbstractEmbeddedMappingComposite.java index 8aedf8ec83..a490743948 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/AbstractEmbeddedMappingComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/AbstractEmbeddedMappingComposite.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2007, 2010 Oracle. All rights reserved. + * Copyright (c) 2007, 2012 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. @@ -11,11 +11,14 @@ package org.eclipse.jpt.jpa.ui.internal.details; import org.eclipse.jpt.common.ui.WidgetFactory; import org.eclipse.jpt.common.ui.internal.widgets.Pane; -import org.eclipse.jpt.common.utility.internal.model.value.SimplePropertyValueModel; import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; import org.eclipse.jpt.jpa.core.context.EmbeddedMapping; import org.eclipse.jpt.jpa.ui.details.JpaComposite; +import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.ui.forms.widgets.ExpandableComposite; +import org.eclipse.ui.forms.widgets.Section; /** * Here the layout of this pane: @@ -45,10 +48,11 @@ public abstract class AbstractEmbeddedMappingComposite<T extends EmbeddedMapping * @param widgetFactory The factory used to create various common widgets */ protected AbstractEmbeddedMappingComposite(PropertyValueModel<? extends T> subjectHolder, - Composite parent, + PropertyValueModel<Boolean> enabledModel, + Composite parent, WidgetFactory widgetFactory) { - super(subjectHolder, parent, widgetFactory); + super(subjectHolder, enabledModel, parent, widgetFactory); } @Override @@ -57,19 +61,18 @@ public abstract class AbstractEmbeddedMappingComposite<T extends EmbeddedMapping } protected void initializeEmbeddedCollapsibleSection(Composite container) { - container = addCollapsibleSection( - container, - JptUiDetailsMessages.EmbeddedSection_title, - new SimplePropertyValueModel<Boolean>(Boolean.TRUE) - ); - - this.initializeEmbeddedSection(container); + final Section section = this.getWidgetFactory().createSection(container, ExpandableComposite.TITLE_BAR | ExpandableComposite.TWISTIE); + section.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + section.setText(JptUiDetailsMessages.EmbeddedSection_title); + section.setClient(this.initializeEmbeddedSection(section)); + section.setExpanded(true); } - protected void initializeEmbeddedSection(Composite container) { - new EmbeddedMappingOverridesComposite( - this, - container - ); + protected Control initializeEmbeddedSection(Composite container) { + //a Section having a Group as its client causes exceptions. EmbeddedMappingOverridesComposite + //uses a Group as its 'control' so I am adding an extra composite here. + container = this.addSubPane(container); + new EmbeddedMappingOverridesComposite(this, container); + return container; } }
\ No newline at end of file diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/AbstractEmbeddedMappingOverridesComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/AbstractEmbeddedMappingOverridesComposite.java index 8311fd4897..d7df150650 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/AbstractEmbeddedMappingOverridesComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/AbstractEmbeddedMappingOverridesComposite.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2009, 2010 Oracle. All rights reserved. + * Copyright (c) 2009, 2012 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. @@ -26,7 +26,13 @@ public abstract class AbstractEmbeddedMappingOverridesComposite<T extends BaseEm super(parentPane, parent); } - + @Override + protected Composite addComposite(Composite container) { + return addTitledGroup( + container, + JptUiDetailsMessages.OverridesComposite_attributeOverridesGroup); + } + @Override protected PropertyValueModel<AttributeOverrideContainer> buildAttributeOverrideContainerHolder() { return new PropertyAspectAdapter<T, AttributeOverrideContainer>(getSubjectHolder()) { diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/AbstractEntityComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/AbstractEntityComposite.java index 56219a0784..d0fa283b25 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/AbstractEntityComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/AbstractEntityComposite.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2006, 2010 Oracle. All rights reserved. + * Copyright (c) 2006, 2012 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. @@ -12,14 +12,20 @@ package org.eclipse.jpt.jpa.ui.internal.details; import org.eclipse.jpt.common.ui.WidgetFactory; import org.eclipse.jpt.common.ui.internal.widgets.Pane; import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter; -import org.eclipse.jpt.common.utility.internal.model.value.SimplePropertyValueModel; import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; import org.eclipse.jpt.jpa.core.context.Entity; import org.eclipse.jpt.jpa.core.context.GeneratorContainer; import org.eclipse.jpt.jpa.core.context.IdClassReference; import org.eclipse.jpt.jpa.core.context.QueryContainer; import org.eclipse.jpt.jpa.ui.details.JpaComposite; +import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.ui.forms.events.ExpansionAdapter; +import org.eclipse.ui.forms.events.ExpansionEvent; +import org.eclipse.ui.forms.widgets.ExpandableComposite; +import org.eclipse.ui.forms.widgets.Hyperlink; +import org.eclipse.ui.forms.widgets.Section; /** * Here the layout of this pane: @@ -78,7 +84,6 @@ import org.eclipse.swt.widgets.Composite; * -----------------------------------------------------------------------------</pre> * * @see Entity - * @see EntityNameComposite * @see InheritanceComposite * @see IdClassComposite * @see EntityOverridesComposite @@ -108,12 +113,7 @@ public abstract class AbstractEntityComposite<T extends Entity> super(subjectHolder, parent, widgetFactory); } - - - protected abstract void initializeSecondaryTablesSection(Composite container); - - protected abstract void initializeInheritanceSection(Composite container); - + @Override protected void initializeLayout(Composite container) { this.initializeEntityCollapsibleSection(container); @@ -125,19 +125,31 @@ public abstract class AbstractEntityComposite<T extends Entity> } protected void initializeEntityCollapsibleSection(Composite container) { - container = addCollapsibleSection( - container, - JptUiDetailsMessages.EntitySection_title, - new SimplePropertyValueModel<Boolean>(Boolean.TRUE) - ); - - this.initializeEntitySection(container); + final Section section = this.getWidgetFactory().createSection(container, ExpandableComposite.TITLE_BAR | ExpandableComposite.TWISTIE); + section.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + section.setText(JptUiDetailsMessages.EntitySection_title); + section.setExpanded(true); + section.setClient(this.initializeEntitySection(section)); } - protected void initializeEntitySection(Composite container) { - new TableComposite(this, container); - new EntityNameComposite(this, container); - new IdClassComposite(this, buildIdClassReferenceHolder(), container); + protected Control initializeEntitySection(Composite container) { + container = this.addSubPane(container, 2, 0, 0, 0, 0); + + //Table widgets + TableComposite tableComposite = new TableComposite(this, container); + GridData gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.horizontalSpan = 2; + tableComposite.getControl().setLayoutData(gridData); + + //Entity name widgets + this.addLabel(container, JptUiDetailsMessages.EntityNameComposite_name); + new EntityNameCombo(this, container); + + //Id class widgets + Hyperlink hyperlink = this.addHyperlink(container, JptUiDetailsMessages.IdClassComposite_label); + new IdClassChooser(this, this.buildIdClassReferenceHolder(), container, hyperlink); + + return container; } protected PropertyValueModel<IdClassReference> buildIdClassReferenceHolder() { @@ -150,17 +162,25 @@ public abstract class AbstractEntityComposite<T extends Entity> } protected void initializeQueriesCollapsibleSection(Composite container) { - container = addCollapsibleSection( - container, - JptUiDetailsMessages.EntityComposite_queries); - this.initializeQueriesSection(container, buildQueryContainerHolder()); + final Section section = this.getWidgetFactory().createSection(container, ExpandableComposite.TITLE_BAR | ExpandableComposite.TWISTIE); + section.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + section.setText(JptUiDetailsMessages.EntityComposite_queries); + + section.addExpansionListener(new ExpansionAdapter() { + @Override + public void expansionStateChanging(ExpansionEvent e) { + if (e.getState() && section.getClient() == null) { + section.setClient(initializeQueriesSection(section)); + } + } + }); } - - protected void initializeQueriesSection(Composite container, PropertyValueModel<QueryContainer> queryContainerHolder) { - new QueriesComposite(this, queryContainerHolder, container); + + protected Control initializeQueriesSection(Composite container) { + return new QueriesComposite(this, this.buildQueryContainerHolder(), container).getControl(); } - private PropertyValueModel<QueryContainer> buildQueryContainerHolder() { + protected PropertyValueModel<QueryContainer> buildQueryContainerHolder() { return new PropertyAspectAdapter<Entity, QueryContainer>(getSubjectHolder()) { @Override protected QueryContainer buildValue_() { @@ -168,37 +188,63 @@ public abstract class AbstractEntityComposite<T extends Entity> } }; } - + protected void initializeAttributeOverridesCollapsibleSection(Composite container) { - container = addCollapsibleSection( - container, - JptUiDetailsMessages.OverridesComposite_attributeOverridesSection); - initializeAttributeOverridesSection(container); + final Section section = this.getWidgetFactory().createSection(container, ExpandableComposite.TITLE_BAR | ExpandableComposite.TWISTIE); + section.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + section.setText(JptUiDetailsMessages.OverridesComposite_attributeOverridesSection); + + section.addExpansionListener(new ExpansionAdapter() { + @Override + public void expansionStateChanging(ExpansionEvent e) { + if (e.getState() && section.getClient() == null) { + section.setClient(initializeAttributeOverridesSection(section)); + } + } + }); } - protected void initializeAttributeOverridesSection(Composite container) { - new EntityOverridesComposite(this, container); + protected Control initializeAttributeOverridesSection(Composite container) { + return new EntityOverridesComposite(this, container).getControl(); } - + protected void initializeInheritanceCollapsibleSection(Composite container) { - container = addCollapsibleSection( - container, - JptUiDetailsMessages.EntityComposite_inheritance); - initializeInheritanceSection(container); + final Section section = this.getWidgetFactory().createSection(container, ExpandableComposite.TITLE_BAR | ExpandableComposite.TWISTIE); + section.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + section.setText(JptUiDetailsMessages.EntityComposite_inheritance); + + section.addExpansionListener(new ExpansionAdapter() { + @Override + public void expansionStateChanging(ExpansionEvent e) { + if (e.getState() && section.getClient() == null) { + section.setClient(initializeInheritanceSection(section)); + } + } + }); } + + protected abstract Control initializeInheritanceSection(Composite container); protected void initializeGeneratorsCollapsibleSection(Composite container) { - container = addCollapsibleSection( - container, - JptUiDetailsMessages.IdMappingComposite_primaryKeyGenerationSection); - initializeGeneratorsSection(container, buildGeneratorContainer()); + final Section section = this.getWidgetFactory().createSection(container, ExpandableComposite.TITLE_BAR | ExpandableComposite.TWISTIE); + section.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + section.setText(JptUiDetailsMessages.IdMappingComposite_primaryKeyGenerationSection); + + section.addExpansionListener(new ExpansionAdapter() { + @Override + public void expansionStateChanging(ExpansionEvent e) { + if (e.getState() && section.getClient() == null) { + section.setClient(initializeGeneratorsSection(section)); + } + } + }); } - - protected void initializeGeneratorsSection(Composite container, PropertyValueModel<GeneratorContainer> generatorContainerHolder) { - new GenerationComposite(this, generatorContainerHolder, container); + + protected Control initializeGeneratorsSection(Composite container) { + return new GenerationComposite(this, this.buildGeneratorContainerHolder(), container).getControl(); } - private PropertyValueModel<GeneratorContainer> buildGeneratorContainer() { + protected PropertyValueModel<GeneratorContainer> buildGeneratorContainerHolder() { return new PropertyAspectAdapter<Entity, GeneratorContainer>(getSubjectHolder()) { @Override protected GeneratorContainer buildValue_() { @@ -208,9 +254,20 @@ public abstract class AbstractEntityComposite<T extends Entity> } protected void initializeSecondaryTablesCollapsibleSection(Composite container) { - container = addCollapsibleSection( - container, - JptUiDetailsMessages.SecondaryTablesComposite_secondaryTables); - initializeSecondaryTablesSection(container); + final Section section = this.getWidgetFactory().createSection(container, ExpandableComposite.TITLE_BAR | ExpandableComposite.TWISTIE); + section.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + section.setText(JptUiDetailsMessages.SecondaryTablesComposite_secondaryTables); + + section.addExpansionListener(new ExpansionAdapter() { + @Override + public void expansionStateChanging(ExpansionEvent e) { + if (e.getState() && section.getClient() == null) { + section.setClient(initializeSecondaryTablesSection(section)); + } + } + }); } + + protected abstract Control initializeSecondaryTablesSection(Composite container); + }
\ No newline at end of file diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/AbstractIdMappingComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/AbstractIdMappingComposite.java index 8c2f8f527b..2e501e8748 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/AbstractIdMappingComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/AbstractIdMappingComposite.java @@ -12,7 +12,6 @@ package org.eclipse.jpt.jpa.ui.internal.details; import org.eclipse.jpt.common.ui.WidgetFactory; import org.eclipse.jpt.common.ui.internal.widgets.Pane; import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter; -import org.eclipse.jpt.common.utility.internal.model.value.SimplePropertyValueModel; import org.eclipse.jpt.common.utility.internal.model.value.TransformationPropertyValueModel; import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; import org.eclipse.jpt.common.utility.model.value.ModifiablePropertyValueModel; @@ -23,9 +22,13 @@ import org.eclipse.jpt.jpa.core.context.IdMapping; import org.eclipse.jpt.jpa.core.context.BaseTemporalConverter; import org.eclipse.jpt.jpa.ui.details.JpaComposite; import org.eclipse.swt.layout.GridData; -import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.ui.forms.events.ExpansionAdapter; +import org.eclipse.ui.forms.events.ExpansionEvent; +import org.eclipse.ui.forms.widgets.ExpandableComposite; +import org.eclipse.ui.forms.widgets.Section; public abstract class AbstractIdMappingComposite<T extends IdMapping> extends Pane<T> @@ -33,10 +36,11 @@ public abstract class AbstractIdMappingComposite<T extends IdMapping> { public AbstractIdMappingComposite( PropertyValueModel<? extends T> subjectHolder, - Composite parent, + PropertyValueModel<Boolean> enabledModel, + Composite parent, WidgetFactory widgetFactory) { - super(subjectHolder, parent, widgetFactory); + super(subjectHolder, enabledModel, parent, widgetFactory); } @@ -48,25 +52,31 @@ public abstract class AbstractIdMappingComposite<T extends IdMapping> } protected void initializeIdCollapsibleSection(Composite container) { - container = addCollapsibleSection( - container, - JptUiDetailsMessages.IdSection_title, - new SimplePropertyValueModel<Boolean>(Boolean.TRUE)); - - this.initializeIdSection(container); + final Section section = this.getWidgetFactory().createSection(container, ExpandableComposite.TITLE_BAR | ExpandableComposite.TWISTIE); + section.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + section.setText(JptUiDetailsMessages.IdSection_title); + section.setExpanded(true); + section.setClient(this.initializeIdSection(section)); } - protected abstract void initializeIdSection(Composite container); + protected abstract Control initializeIdSection(Composite container); protected void initializeTypeCollapsibleSection(Composite container) { - container = addCollapsibleSection( - container, - JptUiDetailsMessages.TypeSection_type); - this.initializeTypeSection(container); + final Section section = this.getWidgetFactory().createSection(container, ExpandableComposite.TITLE_BAR | ExpandableComposite.TWISTIE); + section.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + section.setText(JptUiDetailsMessages.TypeSection_type); + section.addExpansionListener(new ExpansionAdapter() { + @Override + public void expansionStateChanging(ExpansionEvent e) { + if (e.getState() && section.getClient() == null) { + section.setClient(AbstractIdMappingComposite.this.initializeTypeSection(section)); + } + } + }); } - protected void initializeTypeSection(Composite container) { - ((GridLayout) container.getLayout()).numColumns = 2; + protected Control initializeTypeSection(Composite container) { + container = this.addSubPane(container, 2, 0, 0, 0, 0); // No converter Button noConverterButton = addRadioButton( @@ -83,7 +93,9 @@ public abstract class AbstractIdMappingComposite<T extends IdMapping> JptUiDetailsMessages.TypeSection_temporal, buildConverterBooleanHolder(BaseTemporalConverter.class), null); - registerSubPane(new TemporalTypeComposite(buildTemporalConverterHolder(converterHolder), container, getWidgetFactory())); + registerSubPane(new TemporalTypeCombo(buildTemporalConverterHolder(converterHolder), getEnabledModel(), container, getWidgetFactory())); + + return container; } protected void initializeGenerationCollapsibleSection(Composite container) { diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/AbstractInheritanceComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/AbstractInheritanceComposite.java index b081309d0f..c062afb87c 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/AbstractInheritanceComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/AbstractInheritanceComposite.java @@ -24,9 +24,9 @@ import org.eclipse.jpt.jpa.core.context.Entity; import org.eclipse.jpt.jpa.core.context.InheritanceType; import org.eclipse.jpt.jpa.ui.internal.JpaHelpContextIds; import org.eclipse.osgi.util.NLS; -import org.eclipse.swt.widgets.Combo; +import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Label; +import org.eclipse.swt.widgets.Control; /** * Here the layout of this pane: @@ -81,52 +81,48 @@ public abstract class AbstractInheritanceComposite<T extends Entity> extends Pan public AbstractInheritanceComposite(Pane<? extends T> parentPane, Composite parent) { - super(parentPane, parent, false); + super(parentPane, parent); } @Override - protected void initializeLayout(Composite container) { - - int groupBoxMargin = getGroupBoxMargin(); - - Composite subPane = addSubPane( - container, 0, groupBoxMargin, 0, groupBoxMargin - ); + protected Composite addComposite(Composite container) { + return this.addSubPane(container, 2, 0, 0, 0, 0); + } + @Override + protected void initializeLayout(Composite container) { // Strategy widgets - addLabeledComposite( - subPane, - JptUiDetailsMessages.InheritanceComposite_strategy, - addStrategyCombo(subPane), - JpaHelpContextIds.ENTITY_INHERITANCE_STRATEGY - ); + this.addLabel(container, JptUiDetailsMessages.InheritanceComposite_strategy); + this.addStrategyCombo(container); // Discriminator Value widgets PropertyValueModel<Boolean> dvEnabled = this.buildDiscriminatorValueEnabledHolder(); - Combo discriminatorValueCombo = addEditableCombo( - subPane, - buildDiscriminatorValueListHolder(), - buildDiscriminatorValueHolder(), - StringConverter.Default.<String>instance(), - dvEnabled - ); - Label discriminatorValueLabel = addLabel( - subPane, + this.addLabel( + container, JptUiDetailsMessages.InheritanceComposite_discriminatorValue, dvEnabled ); - addLabeledComposite( - subPane, - discriminatorValueLabel, - discriminatorValueCombo, - null, + this.addEditableCombo( + container, + buildDiscriminatorValueListHolder(), + buildDiscriminatorValueHolder(), + StringConverter.Default.<String>instance(), + dvEnabled, JpaHelpContextIds.ENTITY_INHERITANCE_DISCRIMINATOR_VALUE ); - new DiscriminatorColumnComposite<Entity>(this, container); + // Discriminator column widgets + DiscriminatorColumnComposite<Entity> discriminatorColumnComposite = new DiscriminatorColumnComposite<Entity>(this, container); + GridData gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.horizontalSpan = 2; + gridData.verticalIndent = 10; + discriminatorColumnComposite.getControl().setLayoutData(gridData); // Primary Key Join Columns widgets - addPrimaryKeyJoinColumnsComposite(addSubPane(container, 5)); + Control pkJoinColumnsComposite = addPrimaryKeyJoinColumnsComposite(container); + gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.horizontalSpan = 2; + pkJoinColumnsComposite.setLayoutData(gridData); } protected ModifiablePropertyValueModel<Boolean> buildDiscriminatorValueEnabledHolder() { @@ -195,7 +191,6 @@ public abstract class AbstractInheritanceComposite<T extends Entity> extends Pan } private EnumFormComboViewer<Entity, InheritanceType> addStrategyCombo(Composite container) { - return new EnumFormComboViewer<Entity, InheritanceType>(this, container) { @Override @@ -238,9 +233,14 @@ public abstract class AbstractInheritanceComposite<T extends Entity> extends Pan protected void setValue(InheritanceType value) { getSubject().setSpecifiedInheritanceStrategy(value); } + + @Override + protected String getHelpId() { + return JpaHelpContextIds.ENTITY_INHERITANCE_STRATEGY; + } }; } - protected abstract void addPrimaryKeyJoinColumnsComposite(Composite container); + protected abstract Control addPrimaryKeyJoinColumnsComposite(Composite container); }
\ No newline at end of file diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/AbstractJavaMappedSuperclassComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/AbstractJavaMappedSuperclassComposite.java index 9c0d7ad153..0913d4b096 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/AbstractJavaMappedSuperclassComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/AbstractJavaMappedSuperclassComposite.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2011 Oracle. All rights reserved. + * Copyright (c) 2011, 2012 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. @@ -14,7 +14,13 @@ import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; import org.eclipse.jpt.jpa.core.context.QueryContainer; import org.eclipse.jpt.jpa.core.context.java.JavaMappedSuperclass; +import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.ui.forms.events.ExpansionAdapter; +import org.eclipse.ui.forms.events.ExpansionEvent; +import org.eclipse.ui.forms.widgets.ExpandableComposite; +import org.eclipse.ui.forms.widgets.Section; /** * Here the layout of this pane: @@ -65,20 +71,26 @@ public abstract class AbstractJavaMappedSuperclassComposite extends this.initializeQueriesCollapsibleSection(container); } - protected void initializeQueriesCollapsibleSection(Composite container) { - container = addCollapsibleSection( - container, - JptUiDetailsMessages.MappedSuperclassComposite_queries); - this.initializeQueriesSection(container, buildQueryContainerHolder()); - + final Section section = this.getWidgetFactory().createSection(container, ExpandableComposite.TITLE_BAR | ExpandableComposite.TWISTIE); + section.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + section.setText(JptUiDetailsMessages.EntityComposite_queries); + + section.addExpansionListener(new ExpansionAdapter() { + @Override + public void expansionStateChanging(ExpansionEvent e) { + if (e.getState() && section.getClient() == null) { + section.setClient(initializeQueriesSection(section)); + } + } + }); } - protected void initializeQueriesSection(Composite container, PropertyValueModel<QueryContainer> queryContainerHolder) { - new QueriesComposite(this, queryContainerHolder, container); + protected Control initializeQueriesSection(Composite container) { + return new QueriesComposite(this, this.buildQueryContainerHolder(), container).getControl(); } - private PropertyValueModel<QueryContainer> buildQueryContainerHolder() { + protected PropertyValueModel<QueryContainer> buildQueryContainerHolder() { return new PropertyAspectAdapter<JavaMappedSuperclass, QueryContainer>(getSubjectHolder()) { @Override protected QueryContainer buildValue_() { diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/AbstractJoiningStrategyPane.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/AbstractJoiningStrategyPane.java index 4aeddfbec6..5b538dba39 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/AbstractJoiningStrategyPane.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/AbstractJoiningStrategyPane.java @@ -48,7 +48,7 @@ public abstract class AbstractJoiningStrategyPane <R extends ReadOnlyRelationship, S extends ReadOnlyRelationshipStrategy> extends Pane<R> { - protected Composite strategyDetailsComposite; + protected Control strategyDetailsComposite; /** @@ -72,26 +72,45 @@ public abstract class AbstractJoiningStrategyPane protected abstract ModifiablePropertyValueModel<Boolean> buildUsesStrategyHolder(); - + @Override - protected void initializeLayout(Composite container) { + protected Composite addComposite(Composite container) { PageBook pageBook = new PageBook(container, SWT.NULL); GridData gd = new GridData(GridData.FILL_HORIZONTAL); gd.horizontalIndent = 5; pageBook.setLayoutData(gd); - - this.strategyDetailsComposite = buildStrategyDetailsComposite(pageBook); - - new ControlSwitcher(this.buildUsesStrategyHolder(), buildPageBookTransformer(), pageBook); + return pageBook; + } + + @Override + public Composite getControl() { + return (Composite) super.getControl(); + } + + @Override + protected void initializeLayout(Composite container) { + this.strategyDetailsComposite = this.buildStrategyDetailsComposite(container); + + new ControlSwitcher( + this.buildUsesStrategyHolder(), + buildPageBookTransformer(container), + (PageBook) container); //I know this is a PageBook, built in addComposite(Composite) } - protected abstract Composite buildStrategyDetailsComposite(Composite parent); + protected Control getStrategyDetailsComposite(Composite parent) { + if (this.strategyDetailsComposite == null) { + this.strategyDetailsComposite = this.buildStrategyDetailsComposite(parent); + } + return this.strategyDetailsComposite; + } + + protected abstract Control buildStrategyDetailsComposite(Composite parent); - protected Transformer<Boolean, Control> buildPageBookTransformer() { + protected Transformer<Boolean, Control> buildPageBookTransformer(final Composite parent) { return new Transformer<Boolean, Control>() { public Control transform(Boolean usesStrategy) { return (usesStrategy.booleanValue()) ? - AbstractJoiningStrategyPane.this.strategyDetailsComposite : + AbstractJoiningStrategyPane.this.getStrategyDetailsComposite(parent) : null; } }; diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/AbstractJpaDetailsPage.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/AbstractJpaDetailsPage.java index 73880de681..6fce4d1e85 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/AbstractJpaDetailsPage.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/AbstractJpaDetailsPage.java @@ -16,7 +16,6 @@ import org.eclipse.jpt.common.utility.model.value.ModifiablePropertyValueModel; import org.eclipse.jpt.jpa.core.JpaStructureNode; import org.eclipse.jpt.jpa.ui.JpaPlatformUi; import org.eclipse.jpt.jpa.ui.details.JpaDetailsPageManager; -import org.eclipse.jpt.jpa.ui.internal.platform.JpaPlatformUiRegistry; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; @@ -32,6 +31,7 @@ public abstract class AbstractJpaDetailsPage<T extends JpaStructureNode> extends Pane<T> implements JpaDetailsPageManager<T> { + protected AbstractJpaDetailsPage(Composite parent, WidgetFactory widgetFactory) { super(new SimplePropertyValueModel<T>(), parent, widgetFactory); } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/AbstractManyToManyMappingComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/AbstractManyToManyMappingComposite.java index 60fff9a731..e0793051cd 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/AbstractManyToManyMappingComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/AbstractManyToManyMappingComposite.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2006, 2011 Oracle. All rights reserved. + * Copyright (c) 2006, 2012 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. @@ -12,7 +12,6 @@ package org.eclipse.jpt.jpa.ui.internal.details; import org.eclipse.jpt.common.ui.WidgetFactory; import org.eclipse.jpt.common.ui.internal.widgets.Pane; import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter; -import org.eclipse.jpt.common.utility.internal.model.value.SimplePropertyValueModel; import org.eclipse.jpt.common.utility.internal.model.value.TransformationPropertyValueModel; import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; import org.eclipse.jpt.jpa.core.context.AccessHolder; @@ -20,7 +19,13 @@ import org.eclipse.jpt.jpa.core.context.Cascade; import org.eclipse.jpt.jpa.core.context.ManyToManyMapping; import org.eclipse.jpt.jpa.core.context.ManyToManyRelationship; import org.eclipse.jpt.jpa.ui.details.JpaComposite; +import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.ui.forms.events.ExpansionAdapter; +import org.eclipse.ui.forms.events.ExpansionEvent; +import org.eclipse.ui.forms.widgets.ExpandableComposite; +import org.eclipse.ui.forms.widgets.Section; /** * Here the layout of this pane: @@ -54,9 +59,9 @@ import org.eclipse.swt.widgets.Composite; * -----------------------------------------------------------------------------</pre> * * @see {@link ManyToManyMapping} - * @see {@link TargetEntityComposite} + * @see {@link TargetEntityClassChooser} * @see {@link ManyToManyJoiningStrategyPane} - * @see {@link FetchTypeComposite} + * @see {@link FetchTypeComboViewer} * @see {@link CascadeComposite} * @see {@link OrderingComposite} * @@ -75,10 +80,11 @@ public abstract class AbstractManyToManyMappingComposite<T extends ManyToManyMap * @param widgetFactory The factory used to create various common widgets */ protected AbstractManyToManyMappingComposite(PropertyValueModel<? extends T> subjectHolder, - Composite parent, - WidgetFactory widgetFactory) { + PropertyValueModel<Boolean> enabledModel, + Composite parent, + WidgetFactory widgetFactory) { - super(subjectHolder, parent, widgetFactory); + super(subjectHolder, enabledModel, parent, widgetFactory); } @Override @@ -89,23 +95,36 @@ public abstract class AbstractManyToManyMappingComposite<T extends ManyToManyMap } protected void initializeManyToManyCollapsibleSection(Composite container) { - container = addCollapsibleSection( - container, - JptUiDetailsMessages.ManyToManySection_title, - new SimplePropertyValueModel<Boolean>(Boolean.TRUE) - ); - - this.initializeManyToManySection(container); + final Section section = this.getWidgetFactory().createSection(container, ExpandableComposite.TITLE_BAR | ExpandableComposite.TWISTIE); + section.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + section.setText(JptUiDetailsMessages.ManyToManySection_title); + section.setExpanded(true); + section.setClient(this.initializeManyToManySection(section)); } - protected abstract void initializeManyToManySection(Composite container); + protected abstract Control initializeManyToManySection(Composite container); protected void initializeJoiningStrategyCollapsibleSection(Composite container) { new ManyToManyJoiningStrategyPane(this, buildJoiningHolder(), container); } - + protected void initializeOrderingCollapsibleSection(Composite container) { - new OrderingComposite(this, container); + final Section section = this.getWidgetFactory().createSection(container, ExpandableComposite.TITLE_BAR | ExpandableComposite.TWISTIE); + section.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + section.setText(JptUiDetailsMessages.OrderingComposite_orderingGroup); + + section.addExpansionListener(new ExpansionAdapter() { + @Override + public void expansionStateChanging(ExpansionEvent e) { + if (e.getState() && section.getClient() == null) { + section.setClient(initializeOrderingSection(section)); + } + } + }); + } + + protected Control initializeOrderingSection(Composite container) { + return new OrderingComposite(this, container).getControl(); } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/AbstractManyToOneMappingComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/AbstractManyToOneMappingComposite.java index c72c170e37..aeeb47a9fd 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/AbstractManyToOneMappingComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/AbstractManyToOneMappingComposite.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2006, 2011 Oracle. All rights reserved. + * Copyright (c) 2006, 2012 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. @@ -11,14 +11,17 @@ package org.eclipse.jpt.jpa.ui.internal.details; import org.eclipse.jpt.common.ui.WidgetFactory; import org.eclipse.jpt.common.ui.internal.widgets.Pane; -import org.eclipse.jpt.common.utility.internal.model.value.SimplePropertyValueModel; import org.eclipse.jpt.common.utility.internal.model.value.TransformationPropertyValueModel; import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; import org.eclipse.jpt.jpa.core.context.Cascade; import org.eclipse.jpt.jpa.core.context.ManyToOneMapping; import org.eclipse.jpt.jpa.core.context.ManyToOneRelationship; import org.eclipse.jpt.jpa.ui.details.JpaComposite; +import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.ui.forms.widgets.ExpandableComposite; +import org.eclipse.ui.forms.widgets.Section; public abstract class AbstractManyToOneMappingComposite<T extends ManyToOneMapping, R extends ManyToOneRelationship> extends Pane<T> @@ -26,10 +29,11 @@ public abstract class AbstractManyToOneMappingComposite<T extends ManyToOneMappi { protected AbstractManyToOneMappingComposite( PropertyValueModel<? extends T> subjectHolder, - Composite parent, + PropertyValueModel<Boolean> enabledModel, + Composite parent, WidgetFactory widgetFactory) { - super(subjectHolder, parent, widgetFactory); + super(subjectHolder, enabledModel, parent, widgetFactory); } @Override @@ -39,16 +43,14 @@ public abstract class AbstractManyToOneMappingComposite<T extends ManyToOneMappi } protected void initializeManyToOneCollapsibleSection(Composite container) { - container = addCollapsibleSection( - container, - JptUiDetailsMessages.ManyToOneSection_title, - new SimplePropertyValueModel<Boolean>(Boolean.TRUE) - ); - - this.initializeManyToOneSection(container); + final Section section = this.getWidgetFactory().createSection(container, ExpandableComposite.TITLE_BAR | ExpandableComposite.TWISTIE); + section.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + section.setText(JptUiDetailsMessages.ManyToOneSection_title); + section.setExpanded(true); + section.setClient(this.initializeManyToOneSection(section)); } - protected abstract void initializeManyToOneSection(Composite container); + protected abstract Control initializeManyToOneSection(Composite container); protected void initializeJoiningStrategyCollapsibleSection(Composite container) { new ManyToOneJoiningStrategyPane(this, buildJoiningHolder(), container); @@ -73,8 +75,4 @@ public abstract class AbstractManyToOneMappingComposite<T extends ManyToOneMappi } }; } - - protected Composite addPane(Composite container, int groupBoxMargin) { - return addSubPane(container, 0, groupBoxMargin, 0, groupBoxMargin); - } } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/AbstractMappedSuperclassComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/AbstractMappedSuperclassComposite.java index c9b29c24d8..1ba595ac4e 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/AbstractMappedSuperclassComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/AbstractMappedSuperclassComposite.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2006, 2010 Oracle. All rights reserved. + * Copyright (c) 2006, 2012 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. @@ -12,12 +12,16 @@ package org.eclipse.jpt.jpa.ui.internal.details; import org.eclipse.jpt.common.ui.WidgetFactory; import org.eclipse.jpt.common.ui.internal.widgets.Pane; import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter; -import org.eclipse.jpt.common.utility.internal.model.value.SimplePropertyValueModel; import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; import org.eclipse.jpt.jpa.core.context.IdClassReference; import org.eclipse.jpt.jpa.core.context.MappedSuperclass; import org.eclipse.jpt.jpa.ui.details.JpaComposite; +import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.ui.forms.widgets.ExpandableComposite; +import org.eclipse.ui.forms.widgets.Hyperlink; +import org.eclipse.ui.forms.widgets.Section; public abstract class AbstractMappedSuperclassComposite<T extends MappedSuperclass> @@ -38,17 +42,20 @@ public abstract class AbstractMappedSuperclassComposite<T extends MappedSupercla } protected void initializeMappedSuperclassCollapsibleSection(Composite container) { - container = addCollapsibleSection( - container, - JptUiDetailsMessages.MappedSuperclassSection_title, - new SimplePropertyValueModel<Boolean>(Boolean.TRUE) - ); - - this.initializeMappedSuperclassSection(container); + final Section section = this.getWidgetFactory().createSection(container, ExpandableComposite.TITLE_BAR | ExpandableComposite.TWISTIE); + section.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + section.setText(JptUiDetailsMessages.MappedSuperclassSection_title); + section.setExpanded(true); + section.setClient(this.initializeMappedSuperclassSection(section)); } - protected void initializeMappedSuperclassSection(Composite container) { - new IdClassComposite(this, buildIdClassReferenceHolder(), container); + protected Control initializeMappedSuperclassSection(Composite container) { + container = this.addSubPane(container, 2, 0, 0, 0, 0); + + Hyperlink hyperlink = this.addHyperlink(container,JptUiDetailsMessages.IdClassComposite_label); + new IdClassChooser(this, this.buildIdClassReferenceHolder(), container, hyperlink); + + return container; } protected PropertyValueModel<IdClassReference> buildIdClassReferenceHolder() { diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/AbstractOneToManyMappingComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/AbstractOneToManyMappingComposite.java index f1511e6ef2..bf68d463e3 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/AbstractOneToManyMappingComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/AbstractOneToManyMappingComposite.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2006, 2011 Oracle. All rights reserved. + * Copyright (c) 2006, 2012 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. @@ -11,14 +11,19 @@ package org.eclipse.jpt.jpa.ui.internal.details; import org.eclipse.jpt.common.ui.WidgetFactory; import org.eclipse.jpt.common.ui.internal.widgets.Pane; -import org.eclipse.jpt.common.utility.internal.model.value.SimplePropertyValueModel; import org.eclipse.jpt.common.utility.internal.model.value.TransformationPropertyValueModel; import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; import org.eclipse.jpt.jpa.core.context.Cascade; import org.eclipse.jpt.jpa.core.context.OneToManyMapping; import org.eclipse.jpt.jpa.core.context.OneToManyRelationship; import org.eclipse.jpt.jpa.ui.details.JpaComposite; +import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.ui.forms.events.ExpansionAdapter; +import org.eclipse.ui.forms.events.ExpansionEvent; +import org.eclipse.ui.forms.widgets.ExpandableComposite; +import org.eclipse.ui.forms.widgets.Section; /** * Here the layout of this pane: @@ -53,10 +58,10 @@ import org.eclipse.swt.widgets.Composite; * * @see OneToManyMapping * @see CascadeComposite - * @see FetchTypeComposite + * @see FetchTypeComboViewer * @see JoinTableComposite * @see OrderingComposite - * @see TargetEntityComposite + * @see TargetEntityClassChooser * * @version 2.3 * @since 1.0 @@ -73,10 +78,11 @@ public abstract class AbstractOneToManyMappingComposite<T extends OneToManyMappi * @param widgetFactory The factory used to create various common widgets */ protected AbstractOneToManyMappingComposite(PropertyValueModel<? extends T> subjectHolder, - Composite parent, - WidgetFactory widgetFactory) { + PropertyValueModel<Boolean> enabledModel, + Composite parent, + WidgetFactory widgetFactory) { - super(subjectHolder, parent, widgetFactory); + super(subjectHolder, enabledModel, parent, widgetFactory); } @Override @@ -87,23 +93,36 @@ public abstract class AbstractOneToManyMappingComposite<T extends OneToManyMappi } protected void initializeOneToManyCollapsibleSection(Composite container) { - container = addCollapsibleSection( - container, - JptUiDetailsMessages.OneToManySection_title, - new SimplePropertyValueModel<Boolean>(Boolean.TRUE) - ); - - this.initializeOneToManySection(container); + final Section section = this.getWidgetFactory().createSection(container, ExpandableComposite.TITLE_BAR | ExpandableComposite.TWISTIE); + section.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + section.setText(JptUiDetailsMessages.OneToManySection_title); + section.setExpanded(true); + section.setClient(this.initializeOneToManySection(section)); } - protected abstract void initializeOneToManySection(Composite container); + protected abstract Control initializeOneToManySection(Composite container); protected void initializeJoiningStrategyCollapsibleSection(Composite container) { new OneToManyJoiningStrategyPane(this, buildJoiningHolder(), container); } - + protected void initializeOrderingCollapsibleSection(Composite container) { - new OrderingComposite(this, container); + final Section section = this.getWidgetFactory().createSection(container, ExpandableComposite.TITLE_BAR | ExpandableComposite.TWISTIE); + section.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + section.setText(JptUiDetailsMessages.OrderingComposite_orderingGroup); + + section.addExpansionListener(new ExpansionAdapter() { + @Override + public void expansionStateChanging(ExpansionEvent e) { + if (e.getState() && section.getClient() == null) { + section.setClient(initializeOrderingSection(section)); + } + } + }); + } + + protected Control initializeOrderingSection(Composite container) { + return new OrderingComposite(this, container).getControl(); } protected PropertyValueModel<R> buildJoiningHolder() { @@ -124,9 +143,4 @@ public abstract class AbstractOneToManyMappingComposite<T extends OneToManyMappi } }; } - - protected Composite addPane(Composite container, int groupBoxMargin) { - return addSubPane(container, 0, groupBoxMargin, 0, groupBoxMargin); - } - }
\ No newline at end of file diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/AbstractOneToOneMappingComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/AbstractOneToOneMappingComposite.java index 0ed720721c..f506e7a341 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/AbstractOneToOneMappingComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/AbstractOneToOneMappingComposite.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2007, 2011 Oracle. All rights reserved. + * Copyright (c) 2007, 2012 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. @@ -11,14 +11,17 @@ package org.eclipse.jpt.jpa.ui.internal.details; import org.eclipse.jpt.common.ui.WidgetFactory; import org.eclipse.jpt.common.ui.internal.widgets.Pane; -import org.eclipse.jpt.common.utility.internal.model.value.SimplePropertyValueModel; import org.eclipse.jpt.common.utility.internal.model.value.TransformationPropertyValueModel; import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; import org.eclipse.jpt.jpa.core.context.Cascade; import org.eclipse.jpt.jpa.core.context.OneToOneMapping; import org.eclipse.jpt.jpa.core.context.OneToOneRelationship; import org.eclipse.jpt.jpa.ui.details.JpaComposite; +import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.ui.forms.widgets.ExpandableComposite; +import org.eclipse.ui.forms.widgets.Section; public abstract class AbstractOneToOneMappingComposite<T extends OneToOneMapping, R extends OneToOneRelationship> extends Pane<T> @@ -26,10 +29,11 @@ public abstract class AbstractOneToOneMappingComposite<T extends OneToOneMapping { protected AbstractOneToOneMappingComposite( PropertyValueModel<? extends T> subjectHolder, - Composite parent, + PropertyValueModel<Boolean> enabledModel, + Composite parent, WidgetFactory widgetFactory) { - super(subjectHolder, parent, widgetFactory); + super(subjectHolder, enabledModel, parent, widgetFactory); } @Override @@ -39,25 +43,19 @@ public abstract class AbstractOneToOneMappingComposite<T extends OneToOneMapping } protected void initializeOneToOneCollapsibleSection(Composite container) { - container = addCollapsibleSection( - container, - JptUiDetailsMessages.OneToOneSection_title, - new SimplePropertyValueModel<Boolean>(Boolean.TRUE) - ); - - this.initializeOneToOneSection(container); + final Section section = this.getWidgetFactory().createSection(container, ExpandableComposite.TITLE_BAR | ExpandableComposite.TWISTIE); + section.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + section.setText(JptUiDetailsMessages.OneToOneSection_title); + section.setExpanded(true); + section.setClient(this.initializeOneToOneSection(section)); } - protected abstract void initializeOneToOneSection(Composite container); + protected abstract Control initializeOneToOneSection(Composite container); protected void initializeJoiningStrategyCollapsibleSection(Composite container) { new OneToOneJoiningStrategyPane(this, buildJoiningHolder(), container); } - protected Composite addPane(Composite container, int groupBoxMargin) { - return addSubPane(container, 0, groupBoxMargin, 0, groupBoxMargin); - } - protected PropertyValueModel<R> buildJoiningHolder() { return new TransformationPropertyValueModel<T, R>( getSubjectHolder()) { diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/AbstractOverridesComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/AbstractOverridesComposite.java index ad09327019..537fa2ec87 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/AbstractOverridesComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/AbstractOverridesComposite.java @@ -14,7 +14,6 @@ import java.util.List; import org.eclipse.jface.viewers.ILabelProvider; import org.eclipse.jface.viewers.LabelProvider; import org.eclipse.jpt.common.ui.internal.util.ControlSwitcher; -import org.eclipse.jpt.common.ui.internal.util.PaneEnabler; import org.eclipse.jpt.common.ui.internal.utility.swt.SWTTools; import org.eclipse.jpt.common.ui.internal.widgets.AddRemoveListPane; import org.eclipse.jpt.common.ui.internal.widgets.AddRemovePane.Adapter; @@ -26,13 +25,14 @@ import org.eclipse.jpt.common.utility.internal.iterables.SuperListIterableWrappe import org.eclipse.jpt.common.utility.internal.model.value.CompositeListValueModel; import org.eclipse.jpt.common.utility.internal.model.value.ItemPropertyListValueModelAdapter; import org.eclipse.jpt.common.utility.internal.model.value.ListAspectAdapter; +import org.eclipse.jpt.common.utility.internal.model.value.ModifiablePropertyCollectionValueModelAdapter; import org.eclipse.jpt.common.utility.internal.model.value.SimplePropertyValueModel; import org.eclipse.jpt.common.utility.internal.model.value.TransformationPropertyValueModel; import org.eclipse.jpt.common.utility.internal.model.value.TransformationWritablePropertyValueModel; -import org.eclipse.jpt.common.utility.internal.model.value.swing.ObjectListSelectionModel; +import org.eclipse.jpt.common.utility.model.value.CollectionValueModel; import org.eclipse.jpt.common.utility.model.value.ListValueModel; -import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; import org.eclipse.jpt.common.utility.model.value.ModifiablePropertyValueModel; +import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; import org.eclipse.jpt.jpa.core.context.AssociationOverride; import org.eclipse.jpt.jpa.core.context.AssociationOverrideContainer; import org.eclipse.jpt.jpa.core.context.AttributeOverride; @@ -59,7 +59,7 @@ public abstract class AbstractOverridesComposite<T extends JpaContextNode> private Pane<ReadOnlyAttributeOverride> attributeOverridePane; private Pane<ReadOnlyAssociationOverride> associationOverridePane; - private ModifiablePropertyValueModel<ReadOnlyOverride> selectedOverrideHolder; + private ModifiablePropertyValueModel<ReadOnlyOverride> selectedOverrideModel; private ModifiablePropertyValueModel<Boolean> overrideVirtualOverrideHolder; @@ -67,37 +67,30 @@ public abstract class AbstractOverridesComposite<T extends JpaContextNode> Pane<? extends T> parentPane, Composite parent) { - super(parentPane, parent, false); + super(parentPane, parent); } @Override protected void initialize() { super.initialize(); - this.selectedOverrideHolder = buildSelectedOverrideHolder(); + this.selectedOverrideModel = this.buildSelectedOverrideModel(); } - - private ModifiablePropertyValueModel<ReadOnlyOverride> buildSelectedOverrideHolder() { + + private ModifiablePropertyValueModel<ReadOnlyOverride> buildSelectedOverrideModel() { return new SimplePropertyValueModel<ReadOnlyOverride>(); } protected abstract boolean supportsAssociationOverrides(); - + @Override protected void initializeLayout(Composite container) { - // Overrides group pane - container = addTitledGroup( - container, - JptUiDetailsMessages.OverridesComposite_attributeOverridesGroup); - // Overrides list pane initializeOverridesList(container); - int groupBoxMargin = getGroupBoxMargin(); - // Override Default check box Button overrideCheckBox = addCheckBox( - addSubPane(container, 0, groupBoxMargin, 0, groupBoxMargin), + container, JptUiDetailsMessages.OverridesComposite_overrideDefault, getOverrideVirtualOverrideHolder(), null); @@ -105,19 +98,11 @@ public abstract class AbstractOverridesComposite<T extends JpaContextNode> // Property pane PageBook pageBook = addPageBook(container); - initializeOverridePanes(pageBook); - installOverrideControlSwitcher(this.selectedOverrideHolder, pageBook); - } - - protected void initializeOverridePanes(PageBook pageBook) { - initializeAttributeOverridePane(pageBook); - if (supportsAssociationOverrides()) { - initializeAssociationOverridePane(pageBook); - } + installOverrideControlSwitcher(this.selectedOverrideModel, pageBook); } private PropertyValueModel<Boolean> buildSelectedOverrideBooleanHolder() { - return new TransformationPropertyValueModel<ReadOnlyOverride, Boolean>(this.selectedOverrideHolder) { + return new TransformationPropertyValueModel<ReadOnlyOverride, Boolean>(this.selectedOverrideModel) { @Override protected Boolean transform(ReadOnlyOverride value) { return Boolean.valueOf(value != null); @@ -126,12 +111,12 @@ public abstract class AbstractOverridesComposite<T extends JpaContextNode> } private void initializeOverridesList(Composite container) { - new AddRemoveListPane<T>( + new AddRemoveListPane<T, ReadOnlyOverride>( this, - addSubPane(container, 8), + container, buildOverridesAdapter(), buildOverridesListModel(), - this.selectedOverrideHolder, + new ModifiablePropertyCollectionValueModelAdapter<ReadOnlyOverride>(this.selectedOverrideModel), buildOverrideLabelProvider(), JpaHelpContextIds.ENTITY_ATTRIBUTE_OVERRIDES) { @@ -139,53 +124,40 @@ public abstract class AbstractOverridesComposite<T extends JpaContextNode> protected void initializeButtonPane(Composite c, String helpId) { //no buttons: no way to add/remove/edit overrides, they are all defaulted in } - - @Override - protected void updateButtons() { - //no buttons: no way to add/remove/edit overrides, they are all defaulted in - } }; } - - protected void initializeAttributeOverridePane(PageBook pageBook) { - PropertyValueModel<ReadOnlyAttributeOverride> attributeOverrideHolder = buildAttributeOverrideHolder(); - this.attributeOverridePane = buildAttributeOverridePane(pageBook, attributeOverrideHolder); - installAttributeOverridePaneEnabler(this.attributeOverridePane, attributeOverrideHolder); - } - - protected Pane<ReadOnlyAttributeOverride> buildAttributeOverridePane(PageBook pageBook, PropertyValueModel<ReadOnlyAttributeOverride> attributeOverrideHolder) { - return new AttributeOverrideComposite(this, attributeOverrideHolder, pageBook); + + protected Pane<ReadOnlyAttributeOverride> getAttributeOverridePane(PageBook pageBook) { + if (this.attributeOverridePane == null) { + PropertyValueModel<ReadOnlyAttributeOverride> attributeOverrideHolder = buildAttributeOverrideHolder(); + this.attributeOverridePane = buildAttributeOverridePane(pageBook, attributeOverrideHolder); + } + return this.attributeOverridePane; } - private void installAttributeOverridePaneEnabler(Pane<ReadOnlyAttributeOverride> pane, PropertyValueModel<ReadOnlyAttributeOverride> overrideHolder) { - new PaneEnabler( - buildOverrideBooleanHolder(overrideHolder), - pane); + protected Pane<ReadOnlyAttributeOverride> buildAttributeOverridePane(PageBook pageBook, PropertyValueModel<ReadOnlyAttributeOverride> overrideHolder) { + return new AttributeOverrideComposite(this, overrideHolder, buildOverrideBooleanHolder(overrideHolder), pageBook); } private PropertyValueModel<Boolean> buildOverrideBooleanHolder(PropertyValueModel<? extends ReadOnlyOverride> overrideHolder) { return new TransformationPropertyValueModel<ReadOnlyOverride, Boolean>(overrideHolder) { @Override protected Boolean transform_(ReadOnlyOverride v) { - return Boolean.valueOf( ! v.isVirtual()); + return Boolean.valueOf(!v.isVirtual()); } }; } - - protected void initializeAssociationOverridePane(PageBook pageBook) { - PropertyValueModel<ReadOnlyAssociationOverride> associationOverrideHolder = buildAssociationOverrideHolder(); - this.associationOverridePane = buildAssociationOverridePane(pageBook, associationOverrideHolder); - installAssociationOverridePaneEnabler(this.associationOverridePane, associationOverrideHolder); - } - - protected Pane<ReadOnlyAssociationOverride> buildAssociationOverridePane(PageBook pageBook, PropertyValueModel<ReadOnlyAssociationOverride> associationOverrideHolder) { - return new AssociationOverrideComposite(this, associationOverrideHolder, pageBook); + + protected Pane<ReadOnlyAssociationOverride> getAssociationOverridePane(PageBook pageBook) { + if (this.associationOverridePane == null) { + PropertyValueModel<ReadOnlyAssociationOverride> associationOverrideModel = buildAssociationOverrideModel(); + this.associationOverridePane = buildAssociationOverridePane(pageBook, associationOverrideModel); + } + return this.associationOverridePane; } - - private void installAssociationOverridePaneEnabler(Pane<ReadOnlyAssociationOverride> pane, PropertyValueModel<ReadOnlyAssociationOverride> overrideHolder) { - new PaneEnabler( - buildOverrideBooleanHolder(overrideHolder), - pane); + + protected Pane<ReadOnlyAssociationOverride> buildAssociationOverridePane(PageBook pageBook, PropertyValueModel<ReadOnlyAssociationOverride> overrideHolder) { + return new AssociationOverrideComposite(this, overrideHolder, buildOverrideBooleanHolder(overrideHolder), pageBook); } private void installOverrideControlSwitcher( @@ -194,12 +166,12 @@ public abstract class AbstractOverridesComposite<T extends JpaContextNode> new ControlSwitcher( overrideHolder, - buildPaneTransformer(), + buildPaneTransformer(pageBook), pageBook); } - private ModifiablePropertyValueModel<ReadOnlyAssociationOverride> buildAssociationOverrideHolder() { - return new TransformationWritablePropertyValueModel<ReadOnlyOverride, ReadOnlyAssociationOverride>(this.selectedOverrideHolder) { + private PropertyValueModel<ReadOnlyAssociationOverride> buildAssociationOverrideModel() { + return new TransformationPropertyValueModel<ReadOnlyOverride, ReadOnlyAssociationOverride>(this.selectedOverrideModel) { @Override protected ReadOnlyAssociationOverride transform_(ReadOnlyOverride v) { return (v instanceof ReadOnlyAssociationOverride) ? (ReadOnlyAssociationOverride) v : null; @@ -207,8 +179,8 @@ public abstract class AbstractOverridesComposite<T extends JpaContextNode> }; } - private ModifiablePropertyValueModel<ReadOnlyAttributeOverride> buildAttributeOverrideHolder() { - return new TransformationWritablePropertyValueModel<ReadOnlyOverride, ReadOnlyAttributeOverride>(this.selectedOverrideHolder) { + private PropertyValueModel<ReadOnlyAttributeOverride> buildAttributeOverrideHolder() { + return new TransformationPropertyValueModel<ReadOnlyOverride, ReadOnlyAttributeOverride>(this.selectedOverrideModel) { @Override protected ReadOnlyAttributeOverride transform_(ReadOnlyOverride v) { return (v instanceof ReadOnlyAttributeOverride) ? (ReadOnlyAttributeOverride) v : null; @@ -252,7 +224,7 @@ public abstract class AbstractOverridesComposite<T extends JpaContextNode> } private ModifiablePropertyValueModel<Boolean> buildOverrideVirtualOverrideHolder() { - return new TransformationWritablePropertyValueModel<ReadOnlyOverride, Boolean>(this.selectedOverrideHolder) { + return new TransformationWritablePropertyValueModel<ReadOnlyOverride, Boolean>(this.selectedOverrideModel) { @Override public void setValue(Boolean value) { updateOverride(value.booleanValue()); @@ -301,14 +273,15 @@ public abstract class AbstractOverridesComposite<T extends JpaContextNode> }; } - protected Adapter buildOverridesAdapter() { - return new AddRemoveListPane.AbstractAdapter() { - public void addNewItem(ObjectListSelectionModel listSelectionModel) { + protected Adapter<ReadOnlyOverride> buildOverridesAdapter() { + return new AddRemoveListPane.AbstractAdapter<ReadOnlyOverride>() { + public ReadOnlyOverride addNewItem() { //no way to add/remove/edit overrides, they are all defaulted in + throw new UnsupportedOperationException(); } - - public void removeSelectedItems(ObjectListSelectionModel listSelectionModel) { + public void removeSelectedItems(CollectionValueModel<ReadOnlyOverride> selectedItemsModel) { //no way to add/remove/edit overrides, they are all defaulted in + throw new UnsupportedOperationException(); } }; } @@ -339,10 +312,10 @@ public abstract class AbstractOverridesComposite<T extends JpaContextNode> ReadOnlyOverride.NAME_PROPERTY); } - private Transformer<ReadOnlyOverride, Control> buildPaneTransformer() { + private Transformer<ReadOnlyOverride, Control> buildPaneTransformer(final PageBook pageBook) { return new Transformer<ReadOnlyOverride, Control>() { public Control transform(ReadOnlyOverride override) { - return AbstractOverridesComposite.this.transformSelectedOverride(override); + return AbstractOverridesComposite.this.transformSelectedOverride(override, pageBook); } }; } @@ -350,13 +323,13 @@ public abstract class AbstractOverridesComposite<T extends JpaContextNode> /** * Given the selected override, return the control that will be displayed */ - protected Control transformSelectedOverride(ReadOnlyOverride selectedOverride) { + protected Control transformSelectedOverride(ReadOnlyOverride selectedOverride, PageBook pageBook) { if (selectedOverride instanceof ReadOnlyAttributeOverride) { - return AbstractOverridesComposite.this.attributeOverridePane.getControl(); + return AbstractOverridesComposite.this.getAttributeOverridePane(pageBook).getControl(); } if (selectedOverride instanceof ReadOnlyAssociationOverride) { - return AbstractOverridesComposite.this.associationOverridePane.getControl(); + return AbstractOverridesComposite.this.getAssociationOverridePane(pageBook).getControl(); } return null; @@ -398,12 +371,12 @@ public abstract class AbstractOverridesComposite<T extends JpaContextNode> setPopulating(true); try { - ReadOnlyOverride override = this.selectedOverrideHolder.getValue(); + ReadOnlyOverride override = this.selectedOverrideModel.getValue(); ReadOnlyOverride newOverride = convertToSpecified ? ((VirtualOverride) override).convertToSpecified() : ((Override_) override).convertToVirtual(); - this.selectedOverrideHolder.setValue(newOverride); + this.selectedOverrideModel.setValue(newOverride); } finally { setPopulating(false); diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/AbstractPrimaryKeyJoinColumnsComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/AbstractPrimaryKeyJoinColumnsComposite.java index eded583800..73493bc1b2 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/AbstractPrimaryKeyJoinColumnsComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/AbstractPrimaryKeyJoinColumnsComposite.java @@ -13,21 +13,22 @@ import java.util.ArrayList; import java.util.List; import org.eclipse.jface.viewers.ILabelProvider; import org.eclipse.jface.viewers.LabelProvider; -import org.eclipse.jpt.common.ui.internal.util.PaneEnabler; import org.eclipse.jpt.common.ui.internal.widgets.AddRemoveListPane; -import org.eclipse.jpt.common.ui.internal.widgets.Pane; import org.eclipse.jpt.common.ui.internal.widgets.AddRemovePane.AbstractAdapter; import org.eclipse.jpt.common.ui.internal.widgets.AddRemovePane.Adapter; +import org.eclipse.jpt.common.ui.internal.widgets.Pane; import org.eclipse.jpt.common.utility.internal.iterables.ListIterable; import org.eclipse.jpt.common.utility.internal.iterables.SuperListIterableWrapper; import org.eclipse.jpt.common.utility.internal.model.value.CompositeListValueModel; import org.eclipse.jpt.common.utility.internal.model.value.ItemPropertyListValueModelAdapter; import org.eclipse.jpt.common.utility.internal.model.value.ListAspectAdapter; import org.eclipse.jpt.common.utility.internal.model.value.ListPropertyValueModelAdapter; -import org.eclipse.jpt.common.utility.internal.model.value.SimplePropertyValueModel; -import org.eclipse.jpt.common.utility.internal.model.value.swing.ObjectListSelectionModel; +import org.eclipse.jpt.common.utility.internal.model.value.SimpleCollectionValueModel; +import org.eclipse.jpt.common.utility.model.value.CollectionValueModel; import org.eclipse.jpt.common.utility.model.value.ListValueModel; +import org.eclipse.jpt.common.utility.model.value.ModifiableCollectionValueModel; import org.eclipse.jpt.common.utility.model.value.ModifiablePropertyValueModel; +import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; import org.eclipse.jpt.jpa.core.context.Entity; import org.eclipse.jpt.jpa.core.context.PrimaryKeyJoinColumn; import org.eclipse.jpt.jpa.core.context.ReadOnlyBaseJoinColumn; @@ -36,7 +37,6 @@ import org.eclipse.jpt.jpa.core.context.ReadOnlyPrimaryKeyJoinColumn; import org.eclipse.jpt.jpa.ui.internal.JpaHelpContextIds; import org.eclipse.osgi.util.NLS; import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Group; /** * Here the layout of this pane: @@ -61,20 +61,21 @@ import org.eclipse.swt.widgets.Group; */ public abstract class AbstractPrimaryKeyJoinColumnsComposite<T extends Entity> extends Pane<T> { - protected ModifiablePropertyValueModel<PrimaryKeyJoinColumn> joinColumnHolder; + protected ModifiableCollectionValueModel<PrimaryKeyJoinColumn> selectedPkJoinColumnsModel; public AbstractPrimaryKeyJoinColumnsComposite(Pane<? extends T> subjectHolder, Composite parent) { - super(subjectHolder, parent, false); + super(subjectHolder, parent); } - void addJoinColumn(PrimaryKeyJoinColumnStateObject stateObject) { + PrimaryKeyJoinColumn addJoinColumn(PrimaryKeyJoinColumnStateObject stateObject) { PrimaryKeyJoinColumn joinColumn = getSubject().addSpecifiedPrimaryKeyJoinColumn(); stateObject.updateJoinColumn(joinColumn); + return joinColumn; } - void addPrimaryKeyJoinColumn() { + PrimaryKeyJoinColumn addPrimaryKeyJoinColumn() { PrimaryKeyJoinColumnDialog dialog = new PrimaryKeyJoinColumnDialog( getShell(), @@ -85,14 +86,15 @@ public abstract class AbstractPrimaryKeyJoinColumnsComposite<T extends Entity> e dialog.setBlockOnOpen(true); dialog.open(); if (dialog.wasConfirmed()) { - addJoinColumn(dialog.getSubject()); + return addJoinColumn(dialog.getSubject()); } + return null; } protected abstract ListValueModel<? extends ReadOnlyPrimaryKeyJoinColumn> buildDefaultJoinColumnsListHolder(); - private ModifiablePropertyValueModel<PrimaryKeyJoinColumn> buildJoinColumnHolder() { - return new SimplePropertyValueModel<PrimaryKeyJoinColumn>(); + private ModifiableCollectionValueModel<PrimaryKeyJoinColumn> buildSelectedJoinColumnsModel() { + return new SimpleCollectionValueModel<PrimaryKeyJoinColumn>(); } String buildJoinColumnLabel(ReadOnlyPrimaryKeyJoinColumn joinColumn) { @@ -135,10 +137,10 @@ public abstract class AbstractPrimaryKeyJoinColumnsComposite<T extends Entity> e ); } - private Adapter buildJoinColumnsAdapter() { - return new AbstractAdapter() { - public void addNewItem(ObjectListSelectionModel listSelectionModel) { - addPrimaryKeyJoinColumn(); + private Adapter<PrimaryKeyJoinColumn> buildJoinColumnsAdapter() { + return new AbstractAdapter<PrimaryKeyJoinColumn>() { + public PrimaryKeyJoinColumn addNewItem() { + return addPrimaryKeyJoinColumn(); } @Override @@ -152,18 +154,19 @@ public abstract class AbstractPrimaryKeyJoinColumnsComposite<T extends Entity> e } @Override - public void optionOnSelection(ObjectListSelectionModel listSelectionModel) { - editPrimaryKeyJoinColumn(listSelectionModel); + public void optionOnSelection(CollectionValueModel<PrimaryKeyJoinColumn> selectedItemsModel) { + editPrimaryKeyJoinColumn(selectedItemsModel.iterator().next()); } - public void removeSelectedItems(ObjectListSelectionModel listSelectionModel) { - - int[] selectedIndices = listSelectionModel.selectedIndices(); - Entity entity = getSubject(); + @Override + public PropertyValueModel<Boolean> buildRemoveButtonEnabledModel(CollectionValueModel<PrimaryKeyJoinColumn> selectedItemsModel) { + //enable the remove button only when 1 item is selected, same as the optional button + return this.buildSingleSelectedItemEnabledModel(selectedItemsModel); + } - for (int index = selectedIndices.length; --index >= 0; ) { - entity.removeSpecifiedPrimaryKeyJoinColumn(selectedIndices[index]); - } + public void removeSelectedItems(CollectionValueModel<PrimaryKeyJoinColumn> selectedItemsModel) { + PrimaryKeyJoinColumn joinColumn =selectedItemsModel.iterator().next(); + getSubject().removeSpecifiedPrimaryKeyJoinColumn(joinColumn); } }; } @@ -216,9 +219,7 @@ public abstract class AbstractPrimaryKeyJoinColumnsComposite<T extends Entity> e stateObject.updateJoinColumn(stateObject.getJoinColumn()); } - void editPrimaryKeyJoinColumn(ObjectListSelectionModel listSelectionModel) { - - PrimaryKeyJoinColumn joinColumn = (PrimaryKeyJoinColumn) listSelectionModel.selectedValue(); + void editPrimaryKeyJoinColumn(PrimaryKeyJoinColumn joinColumn) { PrimaryKeyJoinColumnDialog dialog = new PrimaryKeyJoinColumnDialog( getShell(), @@ -239,47 +240,36 @@ public abstract class AbstractPrimaryKeyJoinColumnsComposite<T extends Entity> e @Override protected void initialize() { super.initialize(); - joinColumnHolder = buildJoinColumnHolder(); + this.selectedPkJoinColumnsModel = buildSelectedJoinColumnsModel(); } - /* - * (non-Javadoc) - */ @Override - protected void initializeLayout(Composite container) { - - // Primary Key Join Columns group pane - Group groupPane = addTitledGroup( - container, + protected Composite addComposite(Composite parent) { + return addTitledGroup( + parent, JptUiDetailsMessages.PrimaryKeyJoinColumnsComposite_primaryKeyJoinColumn ); + } + @Override + protected void initializeLayout(Composite container) { // Override Default Join Columns check box addCheckBox( - addSubPane(groupPane, 8), + container, JptUiDetailsMessages.PrimaryKeyJoinColumnsComposite_overrideDefaultPrimaryKeyJoinColumns, buildOverrideDefaultJoinColumnHolder(), null ); - // Primary Key Join Columns list pane - AddRemoveListPane<Entity> joinColumnsListPane = new AddRemoveListPane<Entity>( + new AddRemoveListPane<Entity, PrimaryKeyJoinColumn>( this, - groupPane, + container, buildJoinColumnsAdapter(), buildPrimaryKeyJoinColumnsListModel(), - joinColumnHolder, + this.selectedPkJoinColumnsModel, buildJoinColumnsListLabelProvider(), - JpaHelpContextIds.MAPPING_JOIN_TABLE_COLUMNS - ); - - installJoinColumnsListPaneEnabler(joinColumnsListPane); - } - - private void installJoinColumnsListPaneEnabler(AddRemoveListPane<Entity> pane) { - new PaneEnabler( buildOverrideDefaultJoinColumnHolder(), - pane + JpaHelpContextIds.MAPPING_JOIN_TABLE_COLUMNS ); } @@ -293,7 +283,6 @@ public abstract class AbstractPrimaryKeyJoinColumnsComposite<T extends Entity> e try { if (selected) { getSubject().convertDefaultPrimaryKeyJoinColumnsToSpecified(); - this.joinColumnHolder.setValue(getSubject().getSpecifiedPrimaryKeyJoinColumn(0)); } else { getSubject().clearSpecifiedPrimaryKeyJoinColumns(); } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/AbstractSecondaryTablesComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/AbstractSecondaryTablesComposite.java index dc854abf0a..587fb971a7 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/AbstractSecondaryTablesComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/AbstractSecondaryTablesComposite.java @@ -12,16 +12,19 @@ package org.eclipse.jpt.jpa.ui.internal.details; import org.eclipse.jface.viewers.ILabelProvider; import org.eclipse.jface.viewers.LabelProvider; import org.eclipse.jface.window.Window; -import org.eclipse.jpt.common.ui.WidgetFactory; +import org.eclipse.jpt.common.ui.internal.widgets.AddRemovePane.AbstractAdapter; import org.eclipse.jpt.common.ui.internal.widgets.AddRemoveListPane; import org.eclipse.jpt.common.ui.internal.widgets.Pane; -import org.eclipse.jpt.common.utility.internal.model.value.SimplePropertyValueModel; -import org.eclipse.jpt.common.utility.internal.model.value.swing.ObjectListSelectionModel; +import org.eclipse.jpt.common.utility.internal.model.value.CollectionPropertyValueModelAdapter; +import org.eclipse.jpt.common.utility.internal.model.value.SimpleCollectionValueModel; +import org.eclipse.jpt.common.utility.model.value.CollectionValueModel; +import org.eclipse.jpt.common.utility.model.value.ModifiableCollectionValueModel; import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; -import org.eclipse.jpt.common.utility.model.value.ModifiablePropertyValueModel; import org.eclipse.jpt.jpa.core.context.Entity; import org.eclipse.jpt.jpa.core.context.ReadOnlySecondaryTable; import org.eclipse.jpt.jpa.core.context.SecondaryTable; +import org.eclipse.jpt.jpa.core.context.orm.OrmEntity; +import org.eclipse.jpt.jpa.ui.internal.details.orm.OrmEntityComposite; import org.eclipse.swt.widgets.Composite; /** @@ -59,26 +62,12 @@ public abstract class AbstractSecondaryTablesComposite<T extends Entity> extends public AbstractSecondaryTablesComposite(Pane<? extends T> parentPane, Composite parent) { - super(parentPane, parent, false); + super(parentPane, parent); } - /** - * Creates a new <code>SecondaryTablesComposite</code>. - * - * @param subjectHolder The holder of the subject <code>IEntity</code> - * @param parent The parent container - * @param widgetFactory The factory used to create various common widgets - */ - public AbstractSecondaryTablesComposite(PropertyValueModel<? extends T> subjectHolder, - Composite parent, - WidgetFactory widgetFactory) { - - super(subjectHolder, parent, widgetFactory); - } - - protected void addSecondaryTableFromDialog(SecondaryTableDialog dialog, ObjectListSelectionModel listSelectionModel) { + protected SecondaryTable addSecondaryTableFromDialog(SecondaryTableDialog dialog) { if (dialog.open() != Window.OK) { - return; + return null; } SecondaryTable secondaryTable = this.getSubject().addSpecifiedSecondaryTable(); @@ -86,11 +75,23 @@ public abstract class AbstractSecondaryTablesComposite<T extends Entity> extends secondaryTable.setSpecifiedCatalog(dialog.getSelectedCatalog()); secondaryTable.setSpecifiedSchema(dialog.getSelectedSchema()); - listSelectionModel.setSelectedValue(secondaryTable); + return secondaryTable; } - protected ModifiablePropertyValueModel<SecondaryTable> buildSecondaryTableHolder() { - return new SimplePropertyValueModel<SecondaryTable>(); + protected ModifiableCollectionValueModel<SecondaryTable> buildSelectedSecondaryTablesModel() { + return new SimpleCollectionValueModel<SecondaryTable>(); + } + + protected PropertyValueModel<SecondaryTable> buildSelectedSecondaryTableModel(CollectionValueModel<SecondaryTable> selectedSecondaryTablesModel) { + return new CollectionPropertyValueModelAdapter<SecondaryTable, SecondaryTable>(selectedSecondaryTablesModel) { + @Override + protected SecondaryTable buildValue() { + if (this.collectionModel.size() == 1) { + return this.collectionModel.iterator().next(); + } + return null; + } + }; } protected ILabelProvider buildSecondaryTableLabelProvider() { @@ -111,12 +112,12 @@ public abstract class AbstractSecondaryTablesComposite<T extends Entity> extends return new SecondaryTableDialog(getShell(), getSubject().getJpaProject(), getSubject().getTable().getDefaultCatalog(), getSubject().getTable().getDefaultSchema()); } - protected AddRemoveListPane.Adapter buildSecondaryTablesAdapter() { - return new AddRemoveListPane.AbstractAdapter() { + protected AddRemoveListPane.Adapter<SecondaryTable> buildSecondaryTablesAdapter() { + return new AbstractAdapter<SecondaryTable>() { - public void addNewItem(ObjectListSelectionModel listSelectionModel) { + public SecondaryTable addNewItem() { SecondaryTableDialog dialog = buildSecondaryTableDialogForAdd(); - addSecondaryTableFromDialog(dialog, listSelectionModel); + return addSecondaryTableFromDialog(dialog); } @Override @@ -130,37 +131,39 @@ public abstract class AbstractSecondaryTablesComposite<T extends Entity> extends } @Override - public void optionOnSelection(ObjectListSelectionModel listSelectionModel) { - SecondaryTable secondaryTable = (SecondaryTable) listSelectionModel.selectedValue(); + public void optionOnSelection(CollectionValueModel<SecondaryTable> selectedItemsModel) { + //assume only 1 item in the list based on the optionalButtonEnabledModel + SecondaryTable secondaryTable = selectedItemsModel.iterator().next(); SecondaryTableDialog dialog = new SecondaryTableDialog(getShell(), getSubject().getJpaProject(), secondaryTable); editSecondaryTableFromDialog(dialog, secondaryTable); } - public void removeSelectedItems(ObjectListSelectionModel listSelectionModel) { - Entity entity = getSubject(); - int[] selectedIndices = listSelectionModel.selectedIndices(); - - for (int index = selectedIndices.length; --index >= 0; ) { - entity.removeSpecifiedSecondaryTable(selectedIndices[index]); - } + public void removeSelectedItems(CollectionValueModel<SecondaryTable> selectedItemsModel) { + //assume only 1 item since remove button is disabled otherwise + SecondaryTable secondaryTable = selectedItemsModel.iterator().next(); + getSubject().removeSpecifiedSecondaryTable(secondaryTable); } - + + /** + * If any of the selected secondary tables are virtual, the Remove button is disabled + */ @Override - public boolean enableOptionOnSelectionChange(ObjectListSelectionModel listSelectionModel) { - if (listSelectionModel.selectedValuesSize() != 1) { - return false; - } - SecondaryTable secondaryTable = (SecondaryTable) listSelectionModel.selectedValue(); - return !secondaryTable.isVirtual(); + public PropertyValueModel<Boolean> buildRemoveButtonEnabledModel(CollectionValueModel<SecondaryTable> selectedItemsModel) { + return buildOptionalButtonEnabledModel(selectedItemsModel); } - + @Override - public boolean enableRemoveOnSelectionChange(ObjectListSelectionModel listSelectionModel) { - if (listSelectionModel.selectedValue() == null) { - return false; - } - SecondaryTable secondaryTable = (SecondaryTable) listSelectionModel.selectedValue(); - return !secondaryTable.isVirtual(); + public PropertyValueModel<Boolean> buildOptionalButtonEnabledModel(CollectionValueModel<SecondaryTable> selectedItemsModel) { + return new CollectionPropertyValueModelAdapter<Boolean, SecondaryTable>(selectedItemsModel) { + @Override + protected Boolean buildValue() { + if (this.collectionModel.size() == 1) { + SecondaryTable secondaryTable = this.collectionModel.iterator().next(); + return Boolean.valueOf(!secondaryTable.isVirtual()); + } + return Boolean.FALSE; + } + }; } }; } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/AbstractVersionMappingComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/AbstractVersionMappingComposite.java index 87c879c7c8..62ecf0af7a 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/AbstractVersionMappingComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/AbstractVersionMappingComposite.java @@ -12,7 +12,6 @@ package org.eclipse.jpt.jpa.ui.internal.details; import org.eclipse.jpt.common.ui.WidgetFactory; import org.eclipse.jpt.common.ui.internal.widgets.Pane; import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter; -import org.eclipse.jpt.common.utility.internal.model.value.SimplePropertyValueModel; import org.eclipse.jpt.common.utility.internal.model.value.TransformationPropertyValueModel; import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; import org.eclipse.jpt.common.utility.model.value.ModifiablePropertyValueModel; @@ -23,9 +22,13 @@ import org.eclipse.jpt.jpa.core.context.BaseTemporalConverter; import org.eclipse.jpt.jpa.core.context.VersionMapping; import org.eclipse.jpt.jpa.ui.details.JpaComposite; import org.eclipse.swt.layout.GridData; -import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.ui.forms.events.ExpansionAdapter; +import org.eclipse.ui.forms.events.ExpansionEvent; +import org.eclipse.ui.forms.widgets.ExpandableComposite; +import org.eclipse.ui.forms.widgets.Section; /** * Here the layout of this pane: @@ -45,7 +48,7 @@ import org.eclipse.swt.widgets.Composite; * * @see VersionMapping * @see ColumnComposite - * @see TemporalTypeComposite + * @see TemporalTypeCombo * * @version 2.3 * @since 1.0 @@ -62,10 +65,11 @@ public abstract class AbstractVersionMappingComposite<T extends VersionMapping> * @param widgetFactory The factory used to create various common widgets */ protected AbstractVersionMappingComposite(PropertyValueModel<? extends T> subjectHolder, - Composite parent, - WidgetFactory widgetFactory) { + PropertyValueModel<Boolean> enabledModel, + Composite parent, + WidgetFactory widgetFactory) { - super(subjectHolder, parent, widgetFactory); + super(subjectHolder, enabledModel, parent, widgetFactory); } @Override @@ -75,27 +79,31 @@ public abstract class AbstractVersionMappingComposite<T extends VersionMapping> } protected void initializeVersionCollapsibleSection(Composite container) { - container = addCollapsibleSection( - container, - JptUiDetailsMessages.VersionSection_title, - new SimplePropertyValueModel<Boolean>(Boolean.TRUE) - ); - - this.initializeVersionSection(container); + final Section section = this.getWidgetFactory().createSection(container, ExpandableComposite.TITLE_BAR | ExpandableComposite.TWISTIE); + section.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + section.setText(JptUiDetailsMessages.VersionSection_title); + section.setExpanded(true); + section.setClient(initializeVersionSection(section)); } - protected abstract void initializeVersionSection(Composite container); + protected abstract Control initializeVersionSection(Composite container); protected void initializeTypeCollapsibleSection(Composite container) { - container = addCollapsibleSection( - container, - JptUiDetailsMessages.TypeSection_type - ); - this.initializeTypeSection(container); + final Section section = this.getWidgetFactory().createSection(container, ExpandableComposite.TITLE_BAR | ExpandableComposite.TWISTIE); + section.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + section.setText(JptUiDetailsMessages.TypeSection_type); + section.addExpansionListener(new ExpansionAdapter() { + @Override + public void expansionStateChanging(ExpansionEvent e) { + if (e.getState() && section.getClient() == null) { + section.setClient(AbstractVersionMappingComposite.this.initializeTypeSection(section)); + } + } + }); } - protected void initializeTypeSection(Composite container) { - ((GridLayout) container.getLayout()).numColumns = 2; + protected Control initializeTypeSection(Composite container) { + container = this.addSubPane(container, 2, 0, 0, 0, 0); // No converter Button noConverterButton = addRadioButton( @@ -112,7 +120,9 @@ public abstract class AbstractVersionMappingComposite<T extends VersionMapping> JptUiDetailsMessages.TypeSection_temporal, buildConverterBooleanHolder(BaseTemporalConverter.class), null); - registerSubPane(new TemporalTypeComposite(buildTemporalConverterHolder(converterHolder), container, getWidgetFactory())); + registerSubPane(new TemporalTypeCombo(buildTemporalConverterHolder(converterHolder), getEnabledModel(), container, getWidgetFactory())); + + return container; } protected PropertyValueModel<Column> buildColumnHolder() { diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/AccessTypeComboViewer.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/AccessTypeComboViewer.java new file mode 100644 index 0000000000..270d7d5bc9 --- /dev/null +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/AccessTypeComboViewer.java @@ -0,0 +1,66 @@ +/******************************************************************************* + * Copyright (c) 2006, 2012 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.jpa.ui.internal.details; + +import java.util.Collection; +import org.eclipse.jpt.common.ui.internal.widgets.EnumFormComboViewer; +import org.eclipse.jpt.common.ui.internal.widgets.Pane; +import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; +import org.eclipse.jpt.jpa.core.JpaPlatformVariation; +import org.eclipse.jpt.jpa.core.context.AccessHolder; +import org.eclipse.jpt.jpa.core.context.AccessType; +import org.eclipse.swt.widgets.Composite; + +public final class AccessTypeComboViewer + extends EnumFormComboViewer<AccessHolder, AccessType> +{ + public AccessTypeComboViewer(Pane<?> parentPane, PropertyValueModel<? extends AccessHolder> subjectHolder, Composite parent) { + super(parentPane, subjectHolder, parent); + } + + @Override + protected void addPropertyNames(Collection<String> propertyNames) { + super.addPropertyNames(propertyNames); + propertyNames.add(AccessHolder.DEFAULT_ACCESS_PROPERTY); + propertyNames.add(AccessHolder.SPECIFIED_ACCESS_PROPERTY); + } + + @Override + protected AccessType[] getChoices() { + if (getSubject() == null) { + return new AccessType[]{}; + } + return getJpaPlatformVariation().getSupportedAccessTypes(getSubject().getResourceType()); + } + + JpaPlatformVariation getJpaPlatformVariation() { + return getSubject().getJpaProject().getJpaPlatform().getJpaVariation(); + } + + @Override + protected AccessType getDefaultValue() { + return getSubject().getDefaultAccess(); + } + + @Override + protected String displayString(AccessType value) { + return value.getDisplayString(); + } + + @Override + protected AccessType getValue() { + return getSubject().getSpecifiedAccess(); + } + + @Override + protected void setValue(AccessType value) { + getSubject().setSpecifiedAccess(value); + } +}
\ No newline at end of file diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/AccessTypeComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/AccessTypeComposite.java deleted file mode 100644 index 4807fc03d4..0000000000 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/AccessTypeComposite.java +++ /dev/null @@ -1,121 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006, 2010 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.jpa.ui.internal.details; - -import java.util.Collection; - -import org.eclipse.jpt.common.ui.internal.widgets.EnumFormComboViewer; -import org.eclipse.jpt.common.ui.internal.widgets.Pane; -import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; -import org.eclipse.jpt.jpa.core.JpaPlatformVariation; -import org.eclipse.jpt.jpa.core.context.AccessHolder; -import org.eclipse.jpt.jpa.core.context.AccessType; -import org.eclipse.jpt.jpa.ui.internal.JptUiMessages; -import org.eclipse.swt.widgets.Composite; - -/** - * Here the layout of this pane: - * <pre> - * ----------------------------------------------------------------------------- - * | ------------------------------------------------------------ | - * | Access Type: | |v| | - * | ------------------------------------------------------------ | - * -----------------------------------------------------------------------------</pre> - * - * @see AccessHolder - * @see OrmEntityComposite - A container of this pane - * @see OrmEmbeddableComposite - A container of this pane - * @see OrmMappedSuperclassComposite - A container of this pane - * - * @version 2.2 - * @since 1.0 - */ -public class AccessTypeComposite extends Pane<AccessHolder> { - - /** - * Creates a new <code>AccessTypeComposite</code>. - * - * @param parentPane The parent container of this one - * @param subjectHolder The holder of this pane's subject - * @param parent The parent container - */ - public AccessTypeComposite(Pane<?> parentPane, - PropertyValueModel<? extends AccessHolder> subjectHolder, - Composite parent) { - - super(parentPane, subjectHolder, parent); - } - - public AccessTypeComposite(Pane<?> parentPane, - PropertyValueModel<? extends AccessHolder> subjectHolder, - Composite parent, - boolean automaticallyAlignWidgets) { - - super(parentPane, subjectHolder, parent, automaticallyAlignWidgets); - } - - @Override - protected void initializeLayout(Composite container) { - - EnumFormComboViewer<AccessHolder, AccessType> comboViewer = - addAccessTypeComboViewer(container); - - addLabeledComposite( - container, - JptUiMessages.AccessTypeComposite_access, - comboViewer.getControl() - ); - } - - private EnumFormComboViewer<AccessHolder, AccessType> addAccessTypeComboViewer(Composite container) { - - return new EnumFormComboViewer<AccessHolder, AccessType>(this, container) { - - @Override - protected void addPropertyNames(Collection<String> propertyNames) { - super.addPropertyNames(propertyNames); - propertyNames.add(AccessHolder.DEFAULT_ACCESS_PROPERTY); - propertyNames.add(AccessHolder.SPECIFIED_ACCESS_PROPERTY); - } - - @Override - protected AccessType[] getChoices() { - if (getSubject() == null) { - return new AccessType[]{}; - } - return getJpaPlatformVariation().getSupportedAccessTypes(getSubject().getResourceType()); - } - - JpaPlatformVariation getJpaPlatformVariation() { - return getSubject().getJpaProject().getJpaPlatform().getJpaVariation(); - } - - @Override - protected AccessType getDefaultValue() { - return getSubject().getDefaultAccess(); - } - - @Override - protected String displayString(AccessType value) { - return value.getDisplayString(); - } - - @Override - protected AccessType getValue() { - return getSubject().getSpecifiedAccess(); - } - - @Override - protected void setValue(AccessType value) { - getSubject().setSpecifiedAccess(value); - } - }; - } -}
\ No newline at end of file diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/AddQueryDialog.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/AddQueryDialog.java index f4a193483f..e68bed1267 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/AddQueryDialog.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/AddQueryDialog.java @@ -122,20 +122,25 @@ public class AddQueryDialog extends ValidatingDialog<AddQueryStateObject> { } @Override + protected Composite addComposite(Composite container) { + return this.addSubPane(container, 2, 0, 0, 0, 0); + } + + @Override protected void initializeLayout(Composite container) { - this.nameText = addLabeledText( + this.addLabel(container, JptUiDetailsMessages.AddQueryDialog_name); + this.nameText = addText( container, - JptUiDetailsMessages.AddQueryDialog_name, buildNameHolder() ); - addLabeledCombo( + this.addLabel(container, JptUiDetailsMessages.AddQueryDialog_queryType); + this.addCombo( container, - JptUiDetailsMessages.AddQueryDialog_queryType, buildQueryTypeListHolder(), buildQueryTypeHolder(), buildStringConverter(), - null); + (String) null); } protected ListValueModel<String> buildQueryTypeListHolder() { diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/AssociationOverrideComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/AssociationOverrideComposite.java index 664a6e29e3..86fcb5afdc 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/AssociationOverrideComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/AssociationOverrideComposite.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2007, 2011 Oracle. All rights reserved. + * Copyright (c) 2007, 2012 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. @@ -50,17 +50,25 @@ public class AssociationOverrideComposite super(parentPane, subjectHolder, parent); } + + public AssociationOverrideComposite(Pane<?> parentPane, + PropertyValueModel<? extends ReadOnlyAssociationOverride> subjectHolder, + PropertyValueModel<Boolean> enabledModel, + Composite parent) { + super(parentPane, subjectHolder, enabledModel, parent); +} @Override + protected Composite addComposite(Composite parent) { + return addTitledGroup( + parent, + JptUiDetailsMessages.Joining_title); + } + + @Override protected void initializeLayout(Composite container) { - Composite composite = addTitledGroup( - container, - JptUiDetailsMessages.Joining_title); - - addJoinColumnJoiningStrategyPane(composite); - - addSubPane(composite, 5); + addJoinColumnJoiningStrategyPane(container); } protected void addJoinColumnJoiningStrategyPane(Composite container) { diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/AttributeOverrideComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/AttributeOverrideComposite.java index e7a24c5c58..1ca126c891 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/AttributeOverrideComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/AttributeOverrideComposite.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2007, 2011 Oracle. All rights reserved. + * Copyright (c) 2007, 2012 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. @@ -45,18 +45,24 @@ public class AttributeOverrideComposite extends Pane<ReadOnlyAttributeOverride> */ public AttributeOverrideComposite(Pane<?> parentPane, PropertyValueModel<? extends ReadOnlyAttributeOverride> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent) { - super(parentPane, subjectHolder, parent); + super(parentPane, subjectHolder, enabledModel, parent); } @Override - protected void initializeLayout(Composite container) { - new ColumnComposite( + protected Composite addComposite(Composite container) { + return (Composite) new ColumnComposite( this, buildColumnHolder(), container - ); + ).getControl(); + } + + @Override + protected void initializeLayout(Composite container) { + //see addContainer(Composite) - reducing USER handles } private PropertyValueModel<ReadOnlyColumn> buildColumnHolder() { diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/BaseJoinColumnDialogPane.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/BaseJoinColumnDialogPane.java index ab0493a55e..d3e08721f4 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/BaseJoinColumnDialogPane.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/BaseJoinColumnDialogPane.java @@ -96,14 +96,6 @@ public class BaseJoinColumnDialogPane<T extends BaseJoinColumnStateObject> exten }; } - /* - * (non-Javadoc) - */ - @Override - protected Composite addContainer(Composite parent) { - return addSubPane(parent, 0, 7, 0, 5); - } - private PropertyValueModel<String> buildDefaultNameHolder() { return new TransformationPropertyValueModel<BaseJoinColumnStateObject, String>(getSubjectHolder()) { @Override @@ -360,16 +352,18 @@ public class BaseJoinColumnDialogPane<T extends BaseJoinColumnStateObject> exten }); } - /* - * (non-Javadoc) - */ + @Override - protected void initializeLayout(Composite container) { + protected Composite addComposite(Composite container) { + return this.addSubPane(container, 2, 0, 7, 0, 5); + } + @Override + protected void initializeLayout(Composite container) { // Name widgets - Combo nameCombo = addLabeledEditableCombo( + this.addLabel(container, JptUiDetailsMessages.JoinColumnDialog_name); + Combo nameCombo = this.addEditableCombo( container, - JptUiDetailsMessages.JoinColumnDialog_name, buildNamesListHolder(), buildNameHolder(), buildNameStringConverter(), @@ -379,9 +373,9 @@ public class BaseJoinColumnDialogPane<T extends BaseJoinColumnStateObject> exten SWTUtil.attachDefaultValueHandler(nameCombo); // Referenced Column Name widgets - Combo referencedColumnNameCombo = addLabeledEditableCombo( + this.addLabel(container, JptUiDetailsMessages.JoinColumnDialog_referencedColumnName); + Combo referencedColumnNameCombo = this.addEditableCombo( container, - JptUiDetailsMessages.JoinColumnDialog_referencedColumnName, buildReferencedColumnNamesListHolder(), buildReferencedColumnNameHolder(), buildReferencedColumnNameStringConverter(), @@ -392,10 +386,10 @@ public class BaseJoinColumnDialogPane<T extends BaseJoinColumnStateObject> exten // Table widgets if (isTableEditable()) { + this.addLabel(container, JptUiDetailsMessages.JoinColumnDialogPane_table); - Combo tableCombo = addLabeledEditableCombo( + Combo tableCombo = this.addEditableCombo( container, - JptUiDetailsMessages.JoinColumnDialogPane_table, buildTablesListHolder(), buildTableHolder(), buildTableStringConverter(), @@ -405,9 +399,9 @@ public class BaseJoinColumnDialogPane<T extends BaseJoinColumnStateObject> exten SWTUtil.attachDefaultValueHandler(tableCombo); } else { - Combo tableCombo = addLabeledCombo( + this.addLabel(container, JptUiDetailsMessages.JoinColumnDialogPane_table); + Combo tableCombo = addCombo( container, - JptUiDetailsMessages.JoinColumnDialogPane_table, buildTablesListHolder(), buildTableHolder(), buildTableStringConverter(), @@ -418,9 +412,9 @@ public class BaseJoinColumnDialogPane<T extends BaseJoinColumnStateObject> exten } // Column Definition widgets - addLabeledText( + this.addLabel(container, JptUiDetailsMessages.JoinColumnDialogPane_columnDefinition); + this.addText( container, - JptUiDetailsMessages.JoinColumnDialogPane_columnDefinition, buildColumnDefinitionHolder() ); } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/BasicMappingComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/BasicMappingComposite.java index 0070d5a8ab..f867a7ca80 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/BasicMappingComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/BasicMappingComposite.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2006, 2009 Oracle. All rights reserved. + * Copyright (c) 2006, 2012 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. @@ -52,11 +52,11 @@ import org.eclipse.swt.widgets.Composite; * * @see BasicMapping * @see ColumnComposite - * @see EnumTypeComposite - * @see FetchTypeComposite + * @see EnumTypeComboViewer + * @see FetchTypeComboViewer * @see LobComposite - * @see OptionalComposite - * @see TemporalTypeComposite + * @see OptionalTriStateCheckBox + * @see TemporalTypeCombo * * @version 2.0 * @since 1.0 @@ -71,10 +71,11 @@ public class BasicMappingComposite extends AbstractBasicMappingComposite<BasicMa * @param widgetFactory The factory used to create various common widgets */ public BasicMappingComposite(PropertyValueModel<? extends BasicMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory) { - super(subjectHolder, parent, widgetFactory); + super(subjectHolder, enabledModel, parent, widgetFactory); } }
\ No newline at end of file diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/CascadeComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/CascadeComposite.java index 41cbb44d5b..e23e2deae3 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/CascadeComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/CascadeComposite.java @@ -17,7 +17,6 @@ import org.eclipse.jpt.common.utility.model.value.ModifiablePropertyValueModel; import org.eclipse.jpt.jpa.core.context.Cascade; import org.eclipse.jpt.jpa.core.context.RelationshipMapping; import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Group; /** * Here the layout of this pane: @@ -40,7 +39,7 @@ import org.eclipse.swt.widgets.Group; * @version 2.0 * @since 1.0 */ -public class CascadeComposite<T extends Cascade> extends Pane<T> +public class CascadeComposite extends Pane<Cascade> { /** * Creates a new <code>CascadeComposite</code>. @@ -51,10 +50,10 @@ public class CascadeComposite<T extends Cascade> extends Pane<T> */ public CascadeComposite( Pane<? extends RelationshipMapping> parentPane, - PropertyValueModel<T> subjectHolder, + PropertyValueModel<? extends Cascade> subjectHolder, Composite parent) { - super(parentPane, subjectHolder, parent, false); + super(parentPane, subjectHolder, parent); } /** @@ -65,22 +64,24 @@ public class CascadeComposite<T extends Cascade> extends Pane<T> * @param widgetFactory The factory used to create various common widgets */ public CascadeComposite( - PropertyValueModel<T> subjectHolder, + PropertyValueModel<? extends Cascade> subjectHolder, Composite parent, WidgetFactory widgetFactory) { super(subjectHolder, parent, widgetFactory); } - + + @Override + protected Composite addComposite(Composite container) { + return addTitledGroup( + container, + JptUiDetailsMessages.CascadeComposite_cascadeTitle, + 5, + null); + } @Override - protected void initializeLayout(Composite container) { - // Cascade group - Group cascadeGroup = addCascadeGroup(container); - - // Container of the check boxes - container = addSubPane(cascadeGroup, 5, 8, 0, 0, 0); - + protected void initializeLayout(Composite container) { addAllCheckBox(container); addPersistCheckBox(container); addMergeCheckBox(container); @@ -132,13 +133,7 @@ public class CascadeComposite<T extends Cascade> extends Pane<T> buildCascadeTypeRefreshHolder(), null); } - - protected Group addCascadeGroup(Composite container) { - return addTitledGroup( - container, - JptUiDetailsMessages.CascadeComposite_cascadeTitle); - } - + protected ModifiablePropertyValueModel<Boolean> buildCascadeTypeAllHolder() { return new PropertyAspectAdapter<Cascade, Boolean>(getSubjectHolder(), Cascade.ALL_PROPERTY) { @Override diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/ColumnComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/ColumnComposite.java index ce7b3a5eee..1c06cfbf56 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/ColumnComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/ColumnComposite.java @@ -13,9 +13,9 @@ import java.util.Collection; import org.eclipse.jpt.common.ui.internal.JptCommonUiMessages; import org.eclipse.jpt.common.ui.internal.widgets.IntegerCombo; import org.eclipse.jpt.common.ui.internal.widgets.Pane; +import org.eclipse.jpt.common.ui.internal.widgets.TriStateCheckBox; import org.eclipse.jpt.common.utility.internal.iterables.EmptyIterable; import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter; -import org.eclipse.jpt.common.utility.internal.model.value.SimplePropertyValueModel; import org.eclipse.jpt.common.utility.internal.model.value.TransformationPropertyValueModel; import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; import org.eclipse.jpt.common.utility.model.value.ModifiablePropertyValueModel; @@ -28,7 +28,12 @@ import org.eclipse.jpt.jpa.ui.internal.JpaHelpContextIds; import org.eclipse.jpt.jpa.ui.internal.details.db.ColumnCombo; import org.eclipse.jpt.jpa.ui.internal.details.db.DatabaseObjectCombo; import org.eclipse.osgi.util.NLS; +import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; +import org.eclipse.ui.forms.events.ExpansionAdapter; +import org.eclipse.ui.forms.events.ExpansionEvent; +import org.eclipse.ui.forms.widgets.ExpandableComposite; +import org.eclipse.ui.forms.widgets.Section; public class ColumnComposite extends Pane<ReadOnlyColumn> @@ -38,7 +43,7 @@ public class ColumnComposite PropertyValueModel<? extends ReadOnlyColumn> subjectHolder, Composite parent) { - super(parentPane, subjectHolder, parent, false); + super(parentPane, subjectHolder, parent); } @@ -91,7 +96,12 @@ public class ColumnComposite JptCommonUiMessages.DefaultWithOneParam, JptCommonUiMessages.NoneSelected); } - + + @Override + protected String getHelpId() { + return JpaHelpContextIds.MAPPING_COLUMN; + } + @Override public String toString() { return "ColumnComposite.columnCombo"; //$NON-NLS-1$ @@ -244,7 +254,12 @@ public class ColumnComposite JptCommonUiMessages.DefaultWithOneParam, JptCommonUiMessages.NoneSelected); } - + + @Override + protected String getHelpId() { + return JpaHelpContextIds.MAPPING_COLUMN_TABLE; + } + @Override public String toString() { return "ColumnComposite.tableCombo"; //$NON-NLS-1$ @@ -348,207 +363,207 @@ public class ColumnComposite } }; } - + + @Override + protected Composite addComposite(Composite parent) { + return addTitledGroup( + parent, + JptUiDetailsMessages.ColumnComposite_columnSection, + 2, + null); + } + @Override protected void initializeLayout(Composite container) { - // Column group pane - container = addTitledGroup( - container, - JptUiDetailsMessages.ColumnComposite_columnSection); - // Column widgets - addLabeledComposite( - container, - JptUiDetailsMessages.ColumnComposite_name, - addColumnCombo(container), - JpaHelpContextIds.MAPPING_COLUMN); - + this.addLabel(container, JptUiDetailsMessages.ColumnComposite_name); + this.addColumnCombo(container); + // Table widgets - addLabeledComposite( - container, - JptUiDetailsMessages.ColumnComposite_table, - addTableCombo(container), - JpaHelpContextIds.MAPPING_COLUMN_TABLE); - + this.addLabel(container, JptUiDetailsMessages.ColumnComposite_table); + this.addTableCombo(container); + + // Details sub-pane - container = addCollapsibleSubSection( - container, - JptUiDetailsMessages.ColumnComposite_details, - new SimplePropertyValueModel<Boolean>(Boolean.FALSE)); - - new DetailsComposite(this, getSubjectHolder(), addSubPane(container, 0, 16)); + final Section detailsSection = this.getWidgetFactory().createSection(container, ExpandableComposite.TWISTIE); + detailsSection.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + detailsSection.setText(JptUiDetailsMessages.ColumnComposite_details); + GridData gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.horizontalSpan = 2; + detailsSection.setLayoutData(gridData); + + detailsSection.addExpansionListener(new ExpansionAdapter() { + @Override + public void expansionStateChanging(ExpansionEvent e) { + if (e.getState() && detailsSection.getClient() == null) { + detailsSection.setClient(ColumnComposite.this.initializeDetailsSection(detailsSection)); + } + } + }); + } + + protected Composite initializeDetailsSection(Composite container) { + Composite detailsClient = this.addSubPane(container, 2, 0, 16, 0, 0); + + // Insertable tri-state check box + TriStateCheckBox insertableCheckBox = addTriStateCheckBoxWithDefault( + detailsClient, + JptUiDetailsMessages.ColumnComposite_insertable, + buildInsertableHolder(), + buildInsertableStringHolder(), + JpaHelpContextIds.MAPPING_COLUMN_INSERTABLE); + GridData gridData = new GridData(); + gridData.horizontalSpan = 2; + insertableCheckBox.getCheckBox().setLayoutData(gridData); + + // Updatable tri-state check box + TriStateCheckBox updatableCheckBox = addTriStateCheckBoxWithDefault( + detailsClient, + JptUiDetailsMessages.ColumnComposite_updatable, + buildUpdatableHolder(), + buildUpdatableStringHolder(), + JpaHelpContextIds.MAPPING_COLUMN_UPDATABLE); + gridData = new GridData(); + gridData.horizontalSpan = 2; + updatableCheckBox.getCheckBox().setLayoutData(gridData); + + // Unique tri-state check box + TriStateCheckBox uniqueCheckBox = addTriStateCheckBoxWithDefault( + detailsClient, + JptUiDetailsMessages.ColumnComposite_unique, + buildUniqueHolder(), + buildUniqueStringHolder(), + JpaHelpContextIds.MAPPING_COLUMN_UNIQUE); + gridData = new GridData(); + gridData.horizontalSpan = 2; + uniqueCheckBox.getCheckBox().setLayoutData(gridData); + + // Nullable tri-state check box + TriStateCheckBox nullableCheckBox = addTriStateCheckBoxWithDefault( + detailsClient, + JptUiDetailsMessages.ColumnComposite_nullable, + buildNullableHolder(), + buildNullableStringHolder(), + JpaHelpContextIds.MAPPING_COLUMN_NULLABLE); + gridData = new GridData(); + gridData.horizontalSpan = 2; + nullableCheckBox.getCheckBox().setLayoutData(gridData); + + this.addLabel(detailsClient, JptUiDetailsMessages.ColumnComposite_length); + this.addLengthCombo(detailsClient); + + this.addLabel(detailsClient, JptUiDetailsMessages.ColumnComposite_precision); + this.addPrecisionCombo(detailsClient); + + this.addLabel(detailsClient, JptUiDetailsMessages.ColumnComposite_scale); + this.addScaleCombo(detailsClient); + + // Column Definition widgets + this.addLabel(detailsClient, JptUiDetailsMessages.ColumnComposite_columnDefinition); + this.addText(detailsClient, buildColumnDefinitionHolder()); + + return detailsClient; } - protected class DetailsComposite extends Pane<ReadOnlyColumn> { - - public DetailsComposite( - Pane<?> parentPane, - PropertyValueModel<? extends ReadOnlyColumn> subjectHolder, - Composite parent) { + private void addLengthCombo(Composite container) { + new IntegerCombo<ReadOnlyColumn>(this, container) { + @Override + protected String getHelpId() { + return JpaHelpContextIds.MAPPING_COLUMN_LENGTH; + } - super(parentPane, subjectHolder, parent, false); - } - - @Override - protected void initializeLayout(Composite container) { - // Insertable tri-state check box - addTriStateCheckBoxWithDefault( - addSubPane(container, 4), - JptUiDetailsMessages.ColumnComposite_insertable, - buildInsertableHolder(), - buildInsertableStringHolder(), - JpaHelpContextIds.MAPPING_COLUMN_INSERTABLE); + @Override + protected PropertyValueModel<Integer> buildDefaultHolder() { + return new PropertyAspectAdapter<ReadOnlyColumn, Integer>(getSubjectHolder(), ReadOnlyColumn.DEFAULT_LENGTH_PROPERTY) { + @Override + protected Integer buildValue_() { + return Integer.valueOf(this.subject.getDefaultLength()); + } + }; + } - // Updatable tri-state check box - addTriStateCheckBoxWithDefault( - container, - JptUiDetailsMessages.ColumnComposite_updatable, - buildUpdatableHolder(), - buildUpdatableStringHolder(), - JpaHelpContextIds.MAPPING_COLUMN_UPDATABLE); + @Override + protected ModifiablePropertyValueModel<Integer> buildSelectedItemHolder() { + return new PropertyAspectAdapter<ReadOnlyColumn, Integer>(getSubjectHolder(), ReadOnlyColumn.SPECIFIED_LENGTH_PROPERTY) { + @Override + protected Integer buildValue_() { + return this.subject.getSpecifiedLength(); + } + + @Override + protected void setValue_(Integer value) { + ((Column) this.subject).setSpecifiedLength(value); + } + }; + } + }; + } + + private void addPrecisionCombo(Composite container) { + new IntegerCombo<ReadOnlyColumn>(this, container) { + @Override + protected String getHelpId() { + return JpaHelpContextIds.MAPPING_COLUMN_PRECISION; + } - // Unique tri-state check box - addTriStateCheckBoxWithDefault( - container, - JptUiDetailsMessages.ColumnComposite_unique, - buildUniqueHolder(), - buildUniqueStringHolder(), - JpaHelpContextIds.MAPPING_COLUMN_UNIQUE); + @Override + protected PropertyValueModel<Integer> buildDefaultHolder() { + return new PropertyAspectAdapter<ReadOnlyColumn, Integer>(getSubjectHolder(), ReadOnlyColumn.DEFAULT_PRECISION_PROPERTY) { + @Override + protected Integer buildValue_() { + return Integer.valueOf(this.subject.getDefaultPrecision()); + } + }; + } - // Nullable tri-state check box - addTriStateCheckBoxWithDefault( - container, - JptUiDetailsMessages.ColumnComposite_nullable, - buildNullableHolder(), - buildNullableStringHolder(), - JpaHelpContextIds.MAPPING_COLUMN_NULLABLE); + @Override + protected ModifiablePropertyValueModel<Integer> buildSelectedItemHolder() { + return new PropertyAspectAdapter<ReadOnlyColumn, Integer>(getSubjectHolder(), ReadOnlyColumn.SPECIFIED_PRECISION_PROPERTY) { + @Override + protected Integer buildValue_() { + return this.subject.getSpecifiedPrecision(); + } + + @Override + protected void setValue_(Integer value) { + ((Column) this.subject).setSpecifiedPrecision(value); + } + }; + } + }; + } + + private void addScaleCombo(Composite container) { + new IntegerCombo<ReadOnlyColumn>(this, container) { + @Override + protected String getHelpId() { + return JpaHelpContextIds.MAPPING_COLUMN_SCALE; + } - addLengthCombo(container); - addPrecisionCombo(container); - addScaleCombo(container); + @Override + protected PropertyValueModel<Integer> buildDefaultHolder() { + return new PropertyAspectAdapter<ReadOnlyColumn, Integer>(getSubjectHolder(), ReadOnlyColumn.DEFAULT_SCALE_PROPERTY) { + @Override + protected Integer buildValue_() { + return Integer.valueOf(this.subject.getDefaultScale()); + } + }; + } - // Column Definition widgets - addLabeledText( - container, - JptUiDetailsMessages.ColumnComposite_columnDefinition, - buildColumnDefinitionHolder()); - } - - private void addLengthCombo(Composite container) { - new IntegerCombo<ReadOnlyColumn>(this, container) { - @Override - protected String getLabelText() { - return JptUiDetailsMessages.ColumnComposite_length; - } - - @Override - protected String getHelpId() { - return JpaHelpContextIds.MAPPING_COLUMN_LENGTH; - } - - @Override - protected PropertyValueModel<Integer> buildDefaultHolder() { - return new PropertyAspectAdapter<ReadOnlyColumn, Integer>(getSubjectHolder(), ReadOnlyColumn.DEFAULT_LENGTH_PROPERTY) { - @Override - protected Integer buildValue_() { - return Integer.valueOf(this.subject.getDefaultLength()); - } - }; - } - - @Override - protected ModifiablePropertyValueModel<Integer> buildSelectedItemHolder() { - return new PropertyAspectAdapter<ReadOnlyColumn, Integer>(getSubjectHolder(), ReadOnlyColumn.SPECIFIED_LENGTH_PROPERTY) { - @Override - protected Integer buildValue_() { - return this.subject.getSpecifiedLength(); - } - - @Override - protected void setValue_(Integer value) { - ((Column) this.subject).setSpecifiedLength(value); - } - }; - } - }; - } - - private void addPrecisionCombo(Composite container) { - new IntegerCombo<ReadOnlyColumn>(this, container) { - @Override - protected String getLabelText() { - return JptUiDetailsMessages.ColumnComposite_precision; - } - - @Override - protected String getHelpId() { - return JpaHelpContextIds.MAPPING_COLUMN_PRECISION; - } - - @Override - protected PropertyValueModel<Integer> buildDefaultHolder() { - return new PropertyAspectAdapter<ReadOnlyColumn, Integer>(getSubjectHolder(), ReadOnlyColumn.DEFAULT_PRECISION_PROPERTY) { - @Override - protected Integer buildValue_() { - return Integer.valueOf(this.subject.getDefaultPrecision()); - } - }; - } - - @Override - protected ModifiablePropertyValueModel<Integer> buildSelectedItemHolder() { - return new PropertyAspectAdapter<ReadOnlyColumn, Integer>(getSubjectHolder(), ReadOnlyColumn.SPECIFIED_PRECISION_PROPERTY) { - @Override - protected Integer buildValue_() { - return this.subject.getSpecifiedPrecision(); - } - - @Override - protected void setValue_(Integer value) { - ((Column) this.subject).setSpecifiedPrecision(value); - } - }; - } - }; - } - - private void addScaleCombo(Composite container) { - new IntegerCombo<ReadOnlyColumn>(this, container) { - @Override - protected String getLabelText() { - return JptUiDetailsMessages.ColumnComposite_scale; - } - - @Override - protected String getHelpId() { - return JpaHelpContextIds.MAPPING_COLUMN_SCALE; - } - - @Override - protected PropertyValueModel<Integer> buildDefaultHolder() { - return new PropertyAspectAdapter<ReadOnlyColumn, Integer>(getSubjectHolder(), ReadOnlyColumn.DEFAULT_SCALE_PROPERTY) { - @Override - protected Integer buildValue_() { - return Integer.valueOf(this.subject.getDefaultScale()); - } - }; - } - - @Override - protected ModifiablePropertyValueModel<Integer> buildSelectedItemHolder() { - return new PropertyAspectAdapter<ReadOnlyColumn, Integer>(getSubjectHolder(), ReadOnlyColumn.SPECIFIED_SCALE_PROPERTY) { - @Override - protected Integer buildValue_() { - return this.subject.getSpecifiedScale(); - } - - @Override - protected void setValue_(Integer value) { - ((Column) this.subject).setSpecifiedScale(value); - } - }; - } - }; - } + @Override + protected ModifiablePropertyValueModel<Integer> buildSelectedItemHolder() { + return new PropertyAspectAdapter<ReadOnlyColumn, Integer>(getSubjectHolder(), ReadOnlyColumn.SPECIFIED_SCALE_PROPERTY) { + @Override + protected Integer buildValue_() { + return this.subject.getSpecifiedScale(); + } + + @Override + protected void setValue_(Integer value) { + ((Column) this.subject).setSpecifiedScale(value); + } + }; + } + }; } } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/DiscriminatorColumnComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/DiscriminatorColumnComposite.java index d9fbcec63d..fd831c70ce 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/DiscriminatorColumnComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/DiscriminatorColumnComposite.java @@ -11,12 +11,10 @@ package org.eclipse.jpt.jpa.ui.internal.details; import java.util.Collection; import org.eclipse.jpt.common.ui.internal.JptCommonUiMessages; -import org.eclipse.jpt.common.ui.internal.util.PaneEnabler; import org.eclipse.jpt.common.ui.internal.widgets.EnumFormComboViewer; import org.eclipse.jpt.common.ui.internal.widgets.IntegerCombo; import org.eclipse.jpt.common.ui.internal.widgets.Pane; import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter; -import org.eclipse.jpt.common.utility.internal.model.value.SimplePropertyValueModel; import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; import org.eclipse.jpt.common.utility.model.value.ModifiablePropertyValueModel; import org.eclipse.jpt.jpa.core.context.DiscriminatorColumn; @@ -27,7 +25,12 @@ import org.eclipse.jpt.jpa.core.context.ReadOnlyNamedColumn; import org.eclipse.jpt.jpa.db.Table; import org.eclipse.jpt.jpa.ui.internal.JpaHelpContextIds; import org.eclipse.jpt.jpa.ui.internal.details.db.ColumnCombo; +import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.swt.widgets.Label; +import org.eclipse.ui.forms.widgets.ExpandableComposite; +import org.eclipse.ui.forms.widgets.Section; /** * Here the layout of this pane: @@ -72,54 +75,73 @@ public class DiscriminatorColumnComposite<T extends Entity> extends Pane<T> { public DiscriminatorColumnComposite(Pane<? extends T> parentPane, Composite parent) { - super(parentPane, parent, false); + super(parentPane, parent); } @Override - protected void initializeLayout(Composite container) { - // Discriminator Column sub-pane - Composite discriminatorColumnContainer = addTitledGroup( - addSubPane(container, 10), - JptUiDetailsMessages.InheritanceComposite_discriminatorColumnGroupBox + protected Composite addComposite(Composite parent) { + return addTitledGroup( + parent, + JptUiDetailsMessages.InheritanceComposite_discriminatorColumnGroupBox, + 2, + null ); + } + @Override + protected void initializeLayout(Composite container) { PropertyValueModel<DiscriminatorColumn> discriminatorColumnHolder = buildDiscriminatorColumnHolder(); + PropertyValueModel<Boolean> enabledModel = buildDiscriminatorColumnEnabledHolder(); // Name widgets - addLabeledComposite( - discriminatorColumnContainer, - JptUiDetailsMessages.DiscriminatorColumnComposite_name, - addDiscriminatorColumnCombo(container, discriminatorColumnHolder), - JpaHelpContextIds.ENTITY_INHERITANCE_DISCRIMINATOR_COLUMN - ); + this.addLabel(container, JptUiDetailsMessages.DiscriminatorColumnComposite_name, enabledModel); + this.addDiscriminatorColumnCombo(container, discriminatorColumnHolder, enabledModel); // Discriminator Type widgets - addLabeledComposite( - discriminatorColumnContainer, - JptUiDetailsMessages.DiscriminatorColumnComposite_discriminatorType, - addDiscriminatorTypeCombo(container, discriminatorColumnHolder), - JpaHelpContextIds.ENTITY_INHERITANCE_DISCRIMINATOR_TYPE - ); + this.addLabel(container,JptUiDetailsMessages.DiscriminatorColumnComposite_discriminatorType, enabledModel); + this.addDiscriminatorTypeCombo(container, discriminatorColumnHolder, enabledModel); - container = addCollapsibleSubSection( - discriminatorColumnContainer, - JptUiDetailsMessages.InheritanceComposite_detailsGroupBox, - new SimplePropertyValueModel<Boolean>(Boolean.FALSE) - ); - - new DetailsComposite(this, discriminatorColumnHolder, addSubPane(container, 0, 16)); - - new PaneEnabler(buildDiscriminatorColumnEnabledHolder(), this); + + Section detailsSection = this.getWidgetFactory().createSection(container, ExpandableComposite.TWISTIE); + detailsSection.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + detailsSection.setText(JptUiDetailsMessages.InheritanceComposite_detailsGroupBox); + detailsSection.setClient(this.initializeDetailsClient(detailsSection, discriminatorColumnHolder, enabledModel)); + } + + protected Control initializeDetailsClient(Section detailsSection, PropertyValueModel<DiscriminatorColumn> discriminatorColumnHolder, PropertyValueModel<Boolean> enabledModel) { + Composite detailsClient = this.addSubPane(detailsSection, 2, 0, 0, 0, 0); + detailsSection.setClient(detailsClient); + GridData gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.horizontalSpan = 2; + detailsSection.setLayoutData(gridData); + + // Length widgets + Label lengthLabel = this.addLabel(detailsClient, JptUiDetailsMessages.ColumnComposite_length, enabledModel); + gridData = new GridData(); + gridData.horizontalIndent = 16; + lengthLabel.setLayoutData(gridData); + this.addLengthCombo(detailsClient, discriminatorColumnHolder, enabledModel); + + // Column Definition widgets + Label columnDefinitionLabel = this.addLabel(detailsClient, JptUiDetailsMessages.ColumnComposite_columnDefinition, enabledModel); + gridData = new GridData(); + gridData.horizontalIndent = 16; + columnDefinitionLabel.setLayoutData(gridData); + this.addText(detailsClient, this.buildColumnDefinitionHolder(discriminatorColumnHolder), null, enabledModel); + + return detailsClient; } private ColumnCombo<DiscriminatorColumn> addDiscriminatorColumnCombo( Composite container, - PropertyValueModel<DiscriminatorColumn> discriminatorColumnHolder) { + PropertyValueModel<DiscriminatorColumn> discriminatorColumnHolder, + PropertyValueModel<Boolean> enabledModel) { return new ColumnCombo<DiscriminatorColumn>( this, discriminatorColumnHolder, + enabledModel, container) { @@ -154,6 +176,16 @@ public class DiscriminatorColumnComposite<T extends Entity> extends Pane<T> { protected String buildNullDefaultValueEntry() { return JptCommonUiMessages.NoneSelected; } + + @Override + protected String getHelpId() { + return JpaHelpContextIds.ENTITY_INHERITANCE_DISCRIMINATOR_COLUMN; + } + + @Override + public String toString() { + return "DiscriminatorColumnComposite.columnCombo"; //$NON-NLS-1$ + } }; } @@ -168,11 +200,13 @@ public class DiscriminatorColumnComposite<T extends Entity> extends Pane<T> { private EnumFormComboViewer<DiscriminatorColumn, DiscriminatorType> addDiscriminatorTypeCombo( Composite container, - PropertyValueModel<DiscriminatorColumn> discriminatorColumnHolder) { + PropertyValueModel<DiscriminatorColumn> discriminatorColumnHolder, + PropertyValueModel<Boolean> enabledModel) { return new EnumFormComboViewer<DiscriminatorColumn, DiscriminatorType>( this, discriminatorColumnHolder, + enabledModel, container) { @Override @@ -220,6 +254,11 @@ public class DiscriminatorColumnComposite<T extends Entity> extends Pane<T> { protected void setValue(DiscriminatorType value) { getSubject().setSpecifiedDiscriminatorType(value); } + + @Override + protected String getHelpId() { + return JpaHelpContextIds.ENTITY_INHERITANCE_DISCRIMINATOR_TYPE; + } }; } @@ -227,88 +266,60 @@ public class DiscriminatorColumnComposite<T extends Entity> extends Pane<T> { return new PropertyAspectAdapter<Entity, Boolean>(getSubjectHolder(), Entity.SPECIFIED_DISCRIMINATOR_COLUMN_IS_ALLOWED_PROPERTY) { @Override protected Boolean buildValue_() { - return Boolean.valueOf(this.subject.specifiedDiscriminatorColumnIsAllowed()); + return Boolean.valueOf( this.subject != null && this.subject.specifiedDiscriminatorColumnIsAllowed()); } }; } - - protected class DetailsComposite extends Pane<DiscriminatorColumn> { - public DetailsComposite(Pane<?> parentPane, - PropertyValueModel<? extends DiscriminatorColumn> subjectHolder, - Composite parent) { - - super(parentPane, subjectHolder, parent, false); - } - - @Override - protected void initializeLayout(Composite container) { - // Length widgets - addLengthCombo(container); - - // Column Definition widgets - addLabeledText( - container, - JptUiDetailsMessages.ColumnComposite_columnDefinition, - buildColumnDefinitionHolder(getSubjectHolder()) - ); - } - - private void addLengthCombo(Composite container) { - new IntegerCombo<DiscriminatorColumn>(this, container) { - - @Override - protected String getLabelText() { - return JptUiDetailsMessages.ColumnComposite_length; - } - - @Override - protected String getHelpId() { - return JpaHelpContextIds.MAPPING_COLUMN_LENGTH; - } - @Override - protected PropertyValueModel<Integer> buildDefaultHolder() { - return new PropertyAspectAdapter<DiscriminatorColumn, Integer>(getSubjectHolder(), DiscriminatorColumn.DEFAULT_LENGTH_PROPERTY) { - @Override - protected Integer buildValue_() { - return Integer.valueOf(this.subject.getDefaultLength()); - } - }; - } - - @Override - protected ModifiablePropertyValueModel<Integer> buildSelectedItemHolder() { - return new PropertyAspectAdapter<DiscriminatorColumn, Integer>(getSubjectHolder(), DiscriminatorColumn.SPECIFIED_LENGTH_PROPERTY) { - @Override - protected Integer buildValue_() { - return this.subject.getSpecifiedLength(); - } - - @Override - protected void setValue_(Integer value) { - this.subject.setSpecifiedLength(value); - } - }; - } - }; - } - - private ModifiablePropertyValueModel<String> buildColumnDefinitionHolder(PropertyValueModel<DiscriminatorColumn> discriminatorColumnHolder) { - - return new PropertyAspectAdapter<DiscriminatorColumn, String>(discriminatorColumnHolder, NamedColumn.COLUMN_DEFINITION_PROPERTY) { - @Override - protected String buildValue_() { - return this.subject.getColumnDefinition(); - } + private void addLengthCombo(Composite container, PropertyValueModel<DiscriminatorColumn> subjectHolder, PropertyValueModel<Boolean> enabledModel) { + new IntegerCombo<DiscriminatorColumn>(this, subjectHolder, enabledModel, container) { + @Override + protected String getHelpId() { + return JpaHelpContextIds.MAPPING_COLUMN_LENGTH; + } + + @Override + protected PropertyValueModel<Integer> buildDefaultHolder() { + return new PropertyAspectAdapter<DiscriminatorColumn, Integer>(getSubjectHolder(), DiscriminatorColumn.DEFAULT_LENGTH_PROPERTY) { + @Override + protected Integer buildValue_() { + return Integer.valueOf(this.subject.getDefaultLength()); + } + }; + } + + @Override + protected ModifiablePropertyValueModel<Integer> buildSelectedItemHolder() { + return new PropertyAspectAdapter<DiscriminatorColumn, Integer>(getSubjectHolder(), DiscriminatorColumn.SPECIFIED_LENGTH_PROPERTY) { + @Override + protected Integer buildValue_() { + return this.subject.getSpecifiedLength(); + } - @Override - protected void setValue_(String value) { - if (value.length() == 0) { - value = null; + @Override + protected void setValue_(Integer value) { + this.subject.setSpecifiedLength(value); } - this.subject.setColumnDefinition(value); + }; + } + }; + } + + private ModifiablePropertyValueModel<String> buildColumnDefinitionHolder(PropertyValueModel<DiscriminatorColumn> discriminatorColumnHolder) { + + return new PropertyAspectAdapter<DiscriminatorColumn, String>(discriminatorColumnHolder, NamedColumn.COLUMN_DEFINITION_PROPERTY) { + @Override + protected String buildValue_() { + return this.subject.getColumnDefinition(); + } + + @Override + protected void setValue_(String value) { + if (value.length() == 0) { + value = null; } - }; - } + this.subject.setColumnDefinition(value); + } + }; } }
\ No newline at end of file diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/EmbeddedIdMappingComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/EmbeddedIdMappingComposite.java index 6a118d24ba..823e7dc9b8 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/EmbeddedIdMappingComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/EmbeddedIdMappingComposite.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2007, 2010 Oracle. All rights reserved. + * Copyright (c) 2007, 2012 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. @@ -13,23 +13,25 @@ import org.eclipse.jpt.common.ui.WidgetFactory; import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; import org.eclipse.jpt.jpa.core.context.EmbeddedIdMapping; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; public class EmbeddedIdMappingComposite extends AbstractEmbeddedIdMappingComposite<EmbeddedIdMapping> { public EmbeddedIdMappingComposite( PropertyValueModel<? extends EmbeddedIdMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory) { - super(subjectHolder, parent, widgetFactory); + super(subjectHolder, enabledModel, parent, widgetFactory); } @Override - protected void initializeEmbeddedIdSection(Composite container) { - new EmbeddedMappingOverridesComposite( + protected Control initializeEmbeddedIdSection(Composite container) { + return new EmbeddedMappingOverridesComposite( this, - container); + container).getControl(); } } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/EmbeddedMappingComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/EmbeddedMappingComposite.java index 8b6b16e292..28233b6e6f 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/EmbeddedMappingComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/EmbeddedMappingComposite.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2007, 2010 Oracle. All rights reserved. + * Copyright (c) 2007, 2012 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. @@ -42,9 +42,10 @@ public class EmbeddedMappingComposite extends AbstractEmbeddedMappingComposite<E * @param widgetFactory The factory used to create various common widgets */ public EmbeddedMappingComposite(PropertyValueModel<? extends EmbeddedMapping> subjectHolder, - Composite parent, + PropertyValueModel<Boolean> enabledModel, + Composite parent, WidgetFactory widgetFactory) { - super(subjectHolder, parent, widgetFactory); + super(subjectHolder, enabledModel, parent, widgetFactory); } }
\ No newline at end of file diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/EntityNameComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/EntityNameCombo.java index cc3cfff9e7..a9514eacf0 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/EntityNameComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/EntityNameCombo.java @@ -12,6 +12,7 @@ package org.eclipse.jpt.jpa.ui.internal.details; import org.eclipse.jpt.common.ui.internal.JptCommonUiMessages; import org.eclipse.jpt.common.ui.internal.util.SWTUtil; import org.eclipse.jpt.common.ui.internal.widgets.Pane; +import org.eclipse.jpt.common.utility.internal.StringConverter; import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter; import org.eclipse.jpt.common.utility.internal.model.value.PropertyListValueModelAdapter; import org.eclipse.jpt.common.utility.model.value.ListValueModel; @@ -22,6 +23,7 @@ import org.eclipse.jpt.jpa.ui.internal.JpaHelpContextIds; import org.eclipse.osgi.util.NLS; import org.eclipse.swt.widgets.Combo; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; /** * Here the layout of this pane: @@ -38,35 +40,46 @@ import org.eclipse.swt.widgets.Composite; * @version 2.3 * @since 1.0 */ -public class EntityNameComposite +public class EntityNameCombo extends Pane<Entity> { + private Combo combo; + /** * Creates a new <code>EntityNameComposite</code>. * * @param parentPane The parent container of this one * @param parent The parent container */ - public EntityNameComposite( + public EntityNameCombo( Pane<? extends Entity> parentPane, Composite parent) { super(parentPane, parent); } - - + + @Override + protected boolean addsComposite() { + return false; + } + + @Override + public Control getControl() { + return this.combo; + } + @Override protected void initializeLayout(Composite container) { - Combo combo = addLabeledEditableCombo( + this.combo = addEditableCombo( container, - JptUiDetailsMessages.EntityNameComposite_name, buildDefaultEntityNameListHolder(), buildEntityNameHolder(), + StringConverter.Default.<String>instance(), JpaHelpContextIds.ENTITY_NAME); - SWTUtil.attachDefaultValueHandler(combo); + SWTUtil.attachDefaultValueHandler(this.combo); } - + private ListValueModel<String> buildDefaultEntityNameListHolder() { return new PropertyListValueModelAdapter<String>( buildDefaultEntityNameHolder() diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/EnumTypeComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/EnumTypeComboViewer.java index cd10382ada..bab276b737 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/EnumTypeComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/EnumTypeComboViewer.java @@ -12,14 +12,16 @@ package org.eclipse.jpt.jpa.ui.internal.details; import java.util.Collection; import org.eclipse.jpt.common.ui.WidgetFactory; -import org.eclipse.jpt.common.ui.internal.util.PaneEnabler; import org.eclipse.jpt.common.ui.internal.widgets.EnumFormComboViewer; import org.eclipse.jpt.common.ui.internal.widgets.Pane; import org.eclipse.jpt.common.utility.internal.model.value.TransformationPropertyValueModel; import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; import org.eclipse.jpt.jpa.core.context.EnumType; import org.eclipse.jpt.jpa.core.context.BaseEnumeratedConverter; +import org.eclipse.jpt.jpa.ui.internal.JpaHelpContextIds; +import org.eclipse.swt.widgets.Combo; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; /** * Here the layout of this pane: @@ -36,24 +38,36 @@ import org.eclipse.swt.widgets.Composite; * @version 2.0 * @since 1.0 */ -public class EnumTypeComposite extends Pane<BaseEnumeratedConverter> +public class EnumTypeComboViewer extends Pane<BaseEnumeratedConverter> { - /** - * Creates a new <code>EnumTypeComposite</code>. - * - * @param parentPane The parent container of this one - * @param parent The parent container - */ - public EnumTypeComposite(PropertyValueModel<? extends BaseEnumeratedConverter> subjectHolder, - Composite parent, - WidgetFactory widgetFactory) { - - super(subjectHolder, parent, widgetFactory); + private Combo combo; + + public EnumTypeComboViewer(PropertyValueModel<? extends BaseEnumeratedConverter> subjectHolder, + PropertyValueModel<Boolean> enabledModel, + Composite parent, + WidgetFactory widgetFactory) { + + super(subjectHolder, enabledModel, parent, widgetFactory); +} + + @Override + protected boolean addsComposite() { + return false; + } + + @Override + public Control getControl() { + return this.combo; + } + + @Override + protected void initializeLayout(Composite container) { + this.combo = this.addEnumTypeCombo(container).getControl(); } private EnumFormComboViewer<BaseEnumeratedConverter, EnumType> addEnumTypeCombo(Composite container) { - return new EnumFormComboViewer<BaseEnumeratedConverter, EnumType>(this, container) { + return new EnumFormComboViewer<BaseEnumeratedConverter, EnumType>(this, container, buildBooleanHolder()) { @Override protected void addPropertyNames(Collection<String> propertyNames) { @@ -92,25 +106,18 @@ public class EnumTypeComposite extends Pane<BaseEnumeratedConverter> protected void setValue(EnumType value) { getSubject().setSpecifiedEnumType(value); } + + @Override + protected String getHelpId() { + return JpaHelpContextIds.MAPPING_ENUMERATED; + } }; } - @Override - protected void initializeLayout(Composite container) { - //JpaHelpContextIds.MAPPING_ENUMERATED - addEnumTypeCombo(container); - - new PaneEnabler(buildBooleanHolder(), this); - } - - protected PropertyValueModel<Boolean> buildBooleanHolder() { return new TransformationPropertyValueModel<BaseEnumeratedConverter, Boolean>(getSubjectHolder()) { @Override protected Boolean transform(BaseEnumeratedConverter value) { - if (getSubject() != null && getSubject().getParent().getPersistentAttribute().isVirtual()) { - return Boolean.FALSE; - } return Boolean.valueOf(value != null); } }; diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/FetchTypeComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/FetchTypeComboViewer.java index 3428e5a4ee..b61b3322d0 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/FetchTypeComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/FetchTypeComboViewer.java @@ -37,76 +37,56 @@ import org.eclipse.swt.widgets.Composite; * @version 2.0 * @since 1.0 */ -public class FetchTypeComposite extends Pane<FetchableMapping> { +public class FetchTypeComboViewer extends EnumFormComboViewer<FetchableMapping, FetchType> { - /** - * Creates a new <code>FetchTypeComposite</code>. - * - * @param parentPane The parent container of this one - * @param parent The parent container - */ - public FetchTypeComposite(Pane<? extends FetchableMapping> parentPane, + public FetchTypeComboViewer(Pane<? extends FetchableMapping> parentPane, Composite parent) { super(parentPane, parent); } - private EnumFormComboViewer<FetchableMapping, FetchType> addFetchTypeCombo(Composite container) { - - return new EnumFormComboViewer<FetchableMapping, FetchType>(this, container) { - - @Override - protected void addPropertyNames(Collection<String> propertyNames) { - super.addPropertyNames(propertyNames); - propertyNames.add(FetchableMapping.DEFAULT_FETCH_PROPERTY); - propertyNames.add(FetchableMapping.SPECIFIED_FETCH_PROPERTY); - } - - @Override - protected FetchType[] getChoices() { - return FetchType.values(); - } + @Override + protected void addPropertyNames(Collection<String> propertyNames) { + super.addPropertyNames(propertyNames); + propertyNames.add(FetchableMapping.DEFAULT_FETCH_PROPERTY); + propertyNames.add(FetchableMapping.SPECIFIED_FETCH_PROPERTY); + } - @Override - protected FetchType getDefaultValue() { - return getSubject().getDefaultFetch(); - } + @Override + protected FetchType[] getChoices() { + return FetchType.values(); + } - @Override - protected String displayString(FetchType value) { - switch (value) { - case EAGER : - return JptUiDetailsMessages.FetchTypeComposite_eager; - case LAZY : - return JptUiDetailsMessages.FetchTypeComposite_lazy; - default : - throw new IllegalStateException(); - } - } + @Override + protected FetchType getDefaultValue() { + return getSubject().getDefaultFetch(); + } - @Override - protected FetchType getValue() { - return getSubject().getSpecifiedFetch(); - } + @Override + protected String displayString(FetchType value) { + switch (value) { + case EAGER : + return JptUiDetailsMessages.FetchTypeComposite_eager; + case LAZY : + return JptUiDetailsMessages.FetchTypeComposite_lazy; + default : + throw new IllegalStateException(); + } + } - @Override - protected void setValue(FetchType value) { - getSubject().setSpecifiedFetch(value); - } - }; + @Override + protected FetchType getValue() { + return getSubject().getSpecifiedFetch(); } - /* - * (non-Javadoc) - */ @Override - protected void initializeLayout(Composite container) { + protected void setValue(FetchType value) { + getSubject().setSpecifiedFetch(value); + } - addLabeledComposite( - container, - JptUiDetailsMessages.BasicGeneralSection_fetchLabel, - addFetchTypeCombo(container), - JpaHelpContextIds.MAPPING_FETCH_TYPE - ); + @Override + protected String getHelpId() { + return JpaHelpContextIds.MAPPING_FETCH_TYPE; } + } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/GeneratedValueComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/GeneratedValueComposite.java deleted file mode 100644 index 499e8cda22..0000000000 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/GeneratedValueComposite.java +++ /dev/null @@ -1,232 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2007, 2012 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.jpa.ui.internal.details; - -import java.util.Collection; -import org.eclipse.jpt.common.ui.internal.widgets.EnumFormComboViewer; -import org.eclipse.jpt.common.ui.internal.widgets.Pane; -import org.eclipse.jpt.common.utility.internal.NonEmptyStringFilter; -import org.eclipse.jpt.common.utility.internal.model.value.CollectionAspectAdapter; -import org.eclipse.jpt.common.utility.internal.model.value.FilteringCollectionValueModel; -import org.eclipse.jpt.common.utility.internal.model.value.ItemPropertyListValueModelAdapter; -import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter; -import org.eclipse.jpt.common.utility.internal.model.value.SetCollectionValueModel; -import org.eclipse.jpt.common.utility.internal.model.value.SortedListValueModelAdapter; -import org.eclipse.jpt.common.utility.internal.model.value.TransformationListValueModel; -import org.eclipse.jpt.common.utility.model.value.CollectionValueModel; -import org.eclipse.jpt.common.utility.model.value.ListValueModel; -import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; -import org.eclipse.jpt.common.utility.model.value.ModifiablePropertyValueModel; -import org.eclipse.jpt.jpa.core.context.GeneratedValue; -import org.eclipse.jpt.jpa.core.context.GenerationType; -import org.eclipse.jpt.jpa.core.context.Generator; -import org.eclipse.jpt.jpa.core.context.IdMapping; -import org.eclipse.jpt.jpa.core.context.JpaNamedContextNode; -import org.eclipse.jpt.jpa.core.context.persistence.PersistenceUnit; -import org.eclipse.jpt.jpa.ui.internal.JpaHelpContextIds; -import org.eclipse.swt.widgets.Composite; - -/** - * Here the layout of this pane: - * <pre> - * ----------------------------------------------------------------------------- - * | --------------------------------------------------------- | - * | Strategy: | I |v| | - * | --------------------------------------------------------- | - * | --------------------------------------------------------- | - * | Generator Name: | I |v| | - * | --------------------------------------------------------- | - * -----------------------------------------------------------------------------</pre> - * - * @see IdMapping - * @see GeneratedValue - * @see IdMappingGenerationComposite - The parent container - * - * @version 2.3 - * @since 1.0 - */ -public class GeneratedValueComposite extends Pane<IdMapping> -{ - - /** - * Creates a new <code>GeneratedValueComposite</code>. - * - * @param parentPane The parent container of this one - * @param parent The parent container - */ - public GeneratedValueComposite(Pane<? extends IdMapping> parentPane, - Composite parent) { - - super(parentPane, parent); - } - - @Override - protected void initializeLayout(Composite container) { - - // Strategy widgets - addLabeledComposite( - container, - JptUiDetailsMessages.GeneratedValueComposite_strategy, - addStrategyComboViewer(container), - JpaHelpContextIds.MAPPING_GENERATED_VALUE_STRATEGY - ); - - addLabeledEditableCombo( - container, - JptUiDetailsMessages.GeneratedValueComposite_generatorName, - buildSortedGeneraterNamesModel(), - buildGeneratorNameHolder(), - JpaHelpContextIds.MAPPING_GENERATED_VALUE_GENERATOR_NAME - ); - } - - private EnumFormComboViewer<GeneratedValue, GenerationType> addStrategyComboViewer(Composite parent) { - - return new EnumFormComboViewer<GeneratedValue, GenerationType>(this, buildGeneratedValueHolder(), parent) { - - @Override - protected void addPropertyNames(Collection<String> propertyNames) { - super.addPropertyNames(propertyNames); - propertyNames.add(GeneratedValue.DEFAULT_STRATEGY_PROPERTY); - propertyNames.add(GeneratedValue.SPECIFIED_STRATEGY_PROPERTY); - } - - @Override - protected GenerationType[] getChoices() { - return GenerationType.values(); - } - - @Override - protected GenerationType getDefaultValue() { - return getSubject().getDefaultStrategy(); - } - - @Override - protected String displayString(GenerationType value) { - switch (value) { - case AUTO : - return JptUiDetailsMessages.GeneratedValueComposite_auto; - case IDENTITY : - return JptUiDetailsMessages.GeneratedValueComposite_identity; - case SEQUENCE : - return JptUiDetailsMessages.GeneratedValueComposite_sequence; - case TABLE : - return JptUiDetailsMessages.GeneratedValueComposite_table; - default : - throw new IllegalStateException(); - } - } - - @Override - protected GenerationType getValue() { - return getSubject().getSpecifiedStrategy(); - } - - @Override - protected void setValue(GenerationType value) { - getGeneratedValueForUpdate().setSpecifiedStrategy(value); - } - }; - } - - private PropertyValueModel<GeneratedValue> buildGeneratedValueHolder() { - return new PropertyAspectAdapter<IdMapping, GeneratedValue>(getSubjectHolder(), IdMapping.GENERATED_VALUE_PROPERTY) { - @Override - protected GeneratedValue buildValue_() { - return getSubject().getGeneratedValue(); - } - }; - } - - protected final ModifiablePropertyValueModel<String> buildGeneratorNameHolder() { - return new PropertyAspectAdapter<GeneratedValue, String>(buildGeneratedValueHolder(), GeneratedValue.SPECIFIED_GENERATOR_PROPERTY) { - @Override - protected String buildValue_() { - return this.subject.getSpecifiedGenerator(); - } - - @Override - public void setValue(String value) { - if (this.subject != null) { - setValue_(value); - return; - } - if (value.length() == 0) { - return; - } - getGeneratedValueForUpdate().setSpecifiedGenerator(value); - } - - @Override - protected void setValue_(String value) { - if (value !=null && value.length() == 0) { - value = null; - } - this.subject.setSpecifiedGenerator(value); - } - }; - } - - protected ListValueModel<String> buildSortedGeneraterNamesModel() { - return new SortedListValueModelAdapter<String>(this.buildUniqueGeneratorNamesModel()); - } - - protected CollectionValueModel<String> buildUniqueGeneratorNamesModel() { - return new SetCollectionValueModel<String>(this.buildGeneratorNamesModel()); - } - - protected CollectionValueModel<String> buildGeneratorNamesModel() { - return new FilteringCollectionValueModel<String>(this.buildGeneratorNamesModel_(), NonEmptyStringFilter.instance()); - } - - protected ListValueModel<String> buildGeneratorNamesModel_() { - return new TransformationListValueModel<Generator, String>(this.buildGeneratorsModel()) { - @Override - protected String transformItem_(Generator generator) { - return generator.getName(); - } - }; - } - - protected ListValueModel<Generator> buildGeneratorsModel() { - return new ItemPropertyListValueModelAdapter<Generator>(this.buildGeneratorsModel_(), JpaNamedContextNode.NAME_PROPERTY); - } - - protected CollectionValueModel<Generator> buildGeneratorsModel_() { - return new CollectionAspectAdapter<PersistenceUnit, Generator>(this.buildPersistenceUnitModel(), PersistenceUnit.GENERATORS_COLLECTION) { - @Override - protected Iterable<Generator> getIterable() { - return this.subject.getGenerators(); - } - @Override - protected int size_() { - return this.subject.getGeneratorsSize(); - } - }; - } - - protected PropertyValueModel<PersistenceUnit> buildPersistenceUnitModel() { - return new PropertyAspectAdapter<IdMapping, PersistenceUnit>(getSubjectHolder()) { - @Override - protected PersistenceUnit buildValue_() { - return this.subject.getPersistenceUnit(); - } - }; - } - - /* CU private */ GeneratedValue getGeneratedValueForUpdate() { - GeneratedValue generatedValue = getSubject().getGeneratedValue(); - - if (generatedValue == null) { - generatedValue = getSubject().addGeneratedValue(); - } - return generatedValue; - } -} diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/GenerationComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/GenerationComposite.java index eff424d0fa..243832e1a9 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/GenerationComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/GenerationComposite.java @@ -19,8 +19,10 @@ import org.eclipse.jpt.jpa.core.context.SequenceGenerator; import org.eclipse.jpt.jpa.core.context.TableGenerator; import org.eclipse.jpt.jpa.ui.internal.JpaHelpContextIds; import org.eclipse.jpt.jpa.ui.internal.details.GeneratorComposite.GeneratorBuilder; +import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; /** * Here the layout of this pane: @@ -68,7 +70,7 @@ public class GenerationComposite extends Pane<GeneratorContainer> PropertyValueModel<? extends GeneratorContainer> subjectHolder, Composite parent) { - super(parentPane, subjectHolder, parent, false); + super(parentPane, subjectHolder, parent); } @Override @@ -96,30 +98,36 @@ public class GenerationComposite extends Pane<GeneratorContainer> // Sequence Generator sub-section container = this.addCollapsibleSubSection( - this.addSubPane(container, 10), + container, JptUiDetailsMessages.GeneratorsComposite_sequenceGeneratorSection, this.sequenceGeneratorExpansionStateHolder ); // Sequence Generator check box Button sequenceGeneratorCheckBox = addCheckBox( - this.addSubPane(container, 5), + container, JptUiDetailsMessages.GeneratorsComposite_sequenceGeneratorCheckBox, this.buildSequenceGeneratorBooleanHolder(), JpaHelpContextIds.MAPPING_SEQUENCE_GENERATOR ); + GridData gridData = new GridData(); + gridData.verticalIndent = 5; + sequenceGeneratorCheckBox.setLayoutData(gridData); // Sequence Generator pane - this.addSequenceGeneratorComposite(container, 0, sequenceGeneratorCheckBox.getBorderWidth() + 16); + Control sequenceGeneratorComposite = this.addSequenceGeneratorComposite(container); + gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.horizontalIndent = sequenceGeneratorCheckBox.getBorderWidth() + 16; + sequenceGeneratorComposite.setLayoutData(gridData); } - protected void addSequenceGeneratorComposite(Composite container, int topMargin, int leftMargin) { - new SequenceGeneratorComposite( + protected Control addSequenceGeneratorComposite(Composite container) { + return new SequenceGeneratorComposite( this, this.buildSequenceGeneratorHolder(), - this.addSubPane(container, topMargin, leftMargin), + container, this.buildSequenceGeneratorBuilder() - ); + ).getControl(); } protected PropertyValueModel<SequenceGenerator> buildSequenceGeneratorHolder() { @@ -169,20 +177,26 @@ public class GenerationComposite extends Pane<GeneratorContainer> ); Button tableGeneratorCheckBox = addCheckBox( - this.addSubPane(container, 5), + container, JptUiDetailsMessages.GeneratorsComposite_tableGeneratorCheckBox, this.buildTableGeneratorBooleanHolder(), JpaHelpContextIds.MAPPING_TABLE_GENERATOR ); + GridData gridData = new GridData(); + gridData.verticalIndent = 5; + tableGeneratorCheckBox.setLayoutData(gridData); // Table Generator pane - new TableGeneratorComposite( + Control tableGeneratorComposite = new TableGeneratorComposite( this, this.buildTableGeneratorHolder(), - this.addSubPane(container, 0, tableGeneratorCheckBox.getBorderWidth() + 16), + container, this.buildTableGeneratorBuilder() - ); + ).getControl(); + gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.horizontalIndent = tableGeneratorCheckBox.getBorderWidth() + 16; + tableGeneratorComposite.setLayoutData(gridData); } private PropertyValueModel<TableGenerator> buildTableGeneratorHolder() { diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/GeneratorComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/GeneratorComposite.java index e1110134f8..17d36daa91 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/GeneratorComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/GeneratorComposite.java @@ -40,7 +40,7 @@ public abstract class GeneratorComposite<T extends Generator> extends Pane<T> Composite parent, GeneratorBuilder<T> generatorBuilder) { - super(parentPane, subjectHolder, parent, false); + super(parentPane, subjectHolder, parent); this.generatorBuilder = generatorBuilder; } @@ -101,12 +101,7 @@ public abstract class GeneratorComposite<T extends Generator> extends Pane<T> protected void addAllocationSizeCombo(Composite container) { new IntegerCombo<Generator>(this, getSubjectHolder(), container) { - - @Override - protected String getLabelText() { - return JptUiDetailsMessages.GeneratorComposite_allocationSize; - } - + @Override protected String getHelpId() { return null;//JpaHelpContextIds.MAPPING_COLUMN_LENGTH; @@ -141,12 +136,6 @@ public abstract class GeneratorComposite<T extends Generator> extends Pane<T> protected void addInitialValueCombo(Composite container) { new IntegerCombo<Generator>(this, getSubjectHolder(), container) { - - @Override - protected String getLabelText() { - return JptUiDetailsMessages.GeneratorComposite_initialValue; - } - @Override protected String getHelpId() { return null;//JpaHelpContextIds.MAPPING_COLUMN_LENGTH; diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/IdClassChooser.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/IdClassChooser.java new file mode 100644 index 0000000000..ba63708a7f --- /dev/null +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/IdClassChooser.java @@ -0,0 +1,101 @@ +/******************************************************************************* + * Copyright (c) 2008, 2012 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.jpa.ui.internal.details; + +import org.eclipse.jdt.core.IJavaProject; +import org.eclipse.jpt.common.ui.internal.JptCommonUiMessages; +import org.eclipse.jpt.common.ui.internal.widgets.ClassChooserComboPane; +import org.eclipse.jpt.common.ui.internal.widgets.Pane; +import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter; +import org.eclipse.jpt.common.utility.internal.model.value.PropertyListValueModelAdapter; +import org.eclipse.jpt.common.utility.model.value.ListValueModel; +import org.eclipse.jpt.common.utility.model.value.ModifiablePropertyValueModel; +import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; +import org.eclipse.jpt.jpa.core.context.IdClassReference; +import org.eclipse.osgi.util.NLS; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.ui.forms.widgets.Hyperlink; + +public class IdClassChooser + extends ClassChooserComboPane<IdClassReference> +{ + public IdClassChooser(Pane<?> parentPane, PropertyValueModel<IdClassReference> subjectHolder, Composite parent, Hyperlink hyperlink) { + super(parentPane, subjectHolder, parent, hyperlink); + } + + @Override + protected String getClassName() { + return getSubject().getIdClassName(); + } + + @Override + protected void setClassName(String className) { + getSubject().setSpecifiedIdClassName(className); + } + + @Override + protected IJavaProject getJavaProject() { + return getSubject().getJpaProject().getJavaProject(); + } + + @Override + protected char getEnclosingTypeSeparator() { + return getSubject().getIdClassEnclosingTypeSeparator(); + } + + @Override + protected String getFullyQualifiedClassName() { + return getSubject().getFullyQualifiedIdClassName(); + } + + @Override + protected ModifiablePropertyValueModel<String> buildTextHolder() { + return new PropertyAspectAdapter<IdClassReference, String>( + getSubjectHolder(), + IdClassReference.SPECIFIED_ID_CLASS_NAME_PROPERTY, + IdClassReference.DEFAULT_ID_CLASS_NAME_PROPERTY) { + + @Override + protected String buildValue_() { + String value = this.subject.getSpecifiedIdClassName(); + return (value == null) ? defaultText(this.subject) : value; + } + + @Override + protected void setValue_(String value) { + if (value == null + || value.length() == 0 + || value.equals(defaultText(this.subject))) { + value = null; + } + this.subject.setSpecifiedIdClassName(value); + } + }; + } + + protected String defaultText(IdClassReference idClassReference) { + String defaultClassName = idClassReference.getDefaultIdClassName(); + return (defaultClassName == null) ? + JptCommonUiMessages.NoneSelected + : NLS.bind(JptCommonUiMessages.DefaultWithOneParam, defaultClassName); + } + + @Override + protected ListValueModel<String> buildClassListHolder() { + return new PropertyListValueModelAdapter<String>( + new PropertyAspectAdapter<IdClassReference, String>( + getSubjectHolder(), IdClassReference.DEFAULT_ID_CLASS_NAME_PROPERTY) { + @Override + protected String buildValue_() { + return defaultText(this.subject); + } + }); + } +}
\ No newline at end of file diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/IdClassComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/IdClassComposite.java deleted file mode 100644 index 5ceecb123b..0000000000 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/IdClassComposite.java +++ /dev/null @@ -1,144 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2008, 2012 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.jpa.ui.internal.details; - -import org.eclipse.jdt.core.IJavaProject; -import org.eclipse.jpt.common.ui.internal.JptCommonUiMessages; -import org.eclipse.jpt.common.ui.internal.widgets.ClassChooserComboPane; -import org.eclipse.jpt.common.ui.internal.widgets.Pane; -import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter; -import org.eclipse.jpt.common.utility.internal.model.value.PropertyListValueModelAdapter; -import org.eclipse.jpt.common.utility.model.value.ListValueModel; -import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; -import org.eclipse.jpt.common.utility.model.value.ModifiablePropertyValueModel; -import org.eclipse.jpt.jpa.core.context.IdClassReference; -import org.eclipse.osgi.util.NLS; -import org.eclipse.swt.widgets.Composite; - -/** - * Id class hyperlink label, combo, and browse button - * - */ -public class IdClassComposite - extends Pane<IdClassReference> -{ - /** - * Creates a new <code>IdClassComposite</code>. - * - * @param parentPane The parent pane of this one - * @param parent The parent container - */ - public IdClassComposite( - Pane<?> parentPane, - PropertyValueModel<? extends IdClassReference> subjectHolder, - Composite parent) { - - super(parentPane, subjectHolder, parent); - } - - public IdClassComposite( - Pane<?> parentPane, - PropertyValueModel<? extends IdClassReference> subjectHolder, - Composite parent, - boolean automaticallyAlignWidgets) { - - super(parentPane, subjectHolder, parent, automaticallyAlignWidgets); - } - - - @Override - protected void initializeLayout(Composite container) { - new IdClassChooserComboPane(this, container); - } - - - private class IdClassChooserComboPane - extends ClassChooserComboPane<IdClassReference> - { - public IdClassChooserComboPane(Pane<IdClassReference> parentPane, Composite parent) { - super(parentPane, parent); - } - - - @Override - protected String getClassName() { - return getSubject().getIdClassName(); - } - - @Override - protected void setClassName(String className) { - getSubject().setSpecifiedIdClassName(className); - } - - @Override - protected String getLabelText() { - return JptUiDetailsMessages.IdClassComposite_label; - } - - @Override - protected IJavaProject getJavaProject() { - return getSubject().getJpaProject().getJavaProject(); - } - - @Override - protected char getEnclosingTypeSeparator() { - return getSubject().getIdClassEnclosingTypeSeparator(); - } - - @Override - protected String getFullyQualifiedClassName() { - return getSubject().getFullyQualifiedIdClassName(); - } - - @Override - protected ModifiablePropertyValueModel<String> buildTextHolder() { - return new PropertyAspectAdapter<IdClassReference, String>( - getSubjectHolder(), - IdClassReference.SPECIFIED_ID_CLASS_NAME_PROPERTY, - IdClassReference.DEFAULT_ID_CLASS_NAME_PROPERTY) { - - @Override - protected String buildValue_() { - String value = this.subject.getSpecifiedIdClassName(); - return (value == null) ? defaultText(this.subject) : value; - } - - @Override - protected void setValue_(String value) { - if (value == null - || value.length() == 0 - || value.equals(defaultText(this.subject))) { - value = null; - } - this.subject.setSpecifiedIdClassName(value); - } - }; - } - - protected String defaultText(IdClassReference idClassReference) { - String defaultClassName = idClassReference.getDefaultIdClassName(); - return (defaultClassName == null) ? - JptCommonUiMessages.NoneSelected - : NLS.bind(JptCommonUiMessages.DefaultWithOneParam, defaultClassName); - } - - @Override - protected ListValueModel<String> buildClassListHolder() { - return new PropertyListValueModelAdapter<String>( - new PropertyAspectAdapter<IdClassReference, String>( - getSubjectHolder(), IdClassReference.DEFAULT_ID_CLASS_NAME_PROPERTY) { - @Override - protected String buildValue_() { - return defaultText(this.subject); - } - }); - } - } -} diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/IdMappingComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/IdMappingComposite.java index 617adaadf1..eb82efecc5 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/IdMappingComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/IdMappingComposite.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2006, 2010 Oracle. All rights reserved. + * Copyright (c) 2006, 2012 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. @@ -13,21 +13,27 @@ import org.eclipse.jpt.common.ui.WidgetFactory; import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; import org.eclipse.jpt.jpa.core.context.IdMapping; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; public class IdMappingComposite extends AbstractIdMappingComposite<IdMapping> { public IdMappingComposite( PropertyValueModel<? extends IdMapping> subjectHolder, - Composite parent, + PropertyValueModel<Boolean> enabledModel, + Composite parent, WidgetFactory widgetFactory) { - super(subjectHolder, parent, widgetFactory); + super(subjectHolder, enabledModel, parent, widgetFactory); } @Override - protected void initializeIdSection(Composite container) { + protected Control initializeIdSection(Composite container) { + container = this.addSubPane(container); + new ColumnComposite(this, buildColumnHolder(), container); + + return container; } } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/IdMappingGenerationComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/IdMappingGenerationComposite.java index 886c5a5d51..afdfd74b27 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/IdMappingGenerationComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/IdMappingGenerationComposite.java @@ -9,21 +9,40 @@ ******************************************************************************/ package org.eclipse.jpt.jpa.ui.internal.details; +import java.util.Collection; +import org.eclipse.jpt.common.ui.internal.widgets.EnumFormComboViewer; import org.eclipse.jpt.common.ui.internal.widgets.Pane; +import org.eclipse.jpt.common.utility.internal.NonEmptyStringFilter; +import org.eclipse.jpt.common.utility.internal.StringConverter; +import org.eclipse.jpt.common.utility.internal.model.value.CollectionAspectAdapter; +import org.eclipse.jpt.common.utility.internal.model.value.FilteringCollectionValueModel; +import org.eclipse.jpt.common.utility.internal.model.value.ItemPropertyListValueModelAdapter; import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter; +import org.eclipse.jpt.common.utility.internal.model.value.SetCollectionValueModel; import org.eclipse.jpt.common.utility.internal.model.value.SimplePropertyValueModel; +import org.eclipse.jpt.common.utility.internal.model.value.SortedListValueModelAdapter; +import org.eclipse.jpt.common.utility.internal.model.value.TransformationListValueModel; +import org.eclipse.jpt.common.utility.model.value.CollectionValueModel; +import org.eclipse.jpt.common.utility.model.value.ListValueModel; import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; import org.eclipse.jpt.common.utility.model.value.ModifiablePropertyValueModel; import org.eclipse.jpt.jpa.core.context.GeneratedValue; +import org.eclipse.jpt.jpa.core.context.GenerationType; +import org.eclipse.jpt.jpa.core.context.Generator; import org.eclipse.jpt.jpa.core.context.GeneratorContainer; import org.eclipse.jpt.jpa.core.context.IdMapping; +import org.eclipse.jpt.jpa.core.context.JpaNamedContextNode; import org.eclipse.jpt.jpa.core.context.SequenceGenerator; import org.eclipse.jpt.jpa.core.context.TableGenerator; +import org.eclipse.jpt.jpa.core.context.persistence.PersistenceUnit; import org.eclipse.jpt.jpa.ui.internal.JpaHelpContextIds; import org.eclipse.jpt.jpa.ui.internal.details.GeneratorComposite.GeneratorBuilder; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Label; +import org.eclipse.ui.forms.widgets.ExpandableComposite; +import org.eclipse.ui.forms.widgets.Section; /** * This panel is partially a copy of the GenerationComposite panel. The difference @@ -90,7 +109,7 @@ public class IdMappingGenerationComposite extends Pane<IdMapping> public IdMappingGenerationComposite(Pane<? extends IdMapping> parentPane, Composite parent) { - super(parentPane, parent, false); + super(parentPane, parent); } @Override @@ -108,14 +127,19 @@ public class IdMappingGenerationComposite extends Pane<IdMapping> } @Override - protected void initializeLayout(Composite container) { + protected Composite addComposite(Composite container) { + Section section = this.getWidgetFactory().createSection(container, ExpandableComposite.TITLE_BAR | ExpandableComposite.TWISTIE); + section.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + section.setText(JptUiDetailsMessages.IdMappingComposite_primaryKeyGenerationSection); + section.setExpanded(true); + + Composite subPane = this.addSubPane(section, 2, 0, 0, 0, 0); + section.setClient(subPane); + return subPane; + } - // Primary Key Generation section - container = addCollapsibleSection( - container, - JptUiDetailsMessages.IdMappingComposite_primaryKeyGenerationSection, - new SimplePropertyValueModel<Boolean>(Boolean.TRUE) - ); + @Override + protected void initializeLayout(Composite container) { // Primary Key Generation check box Button primaryKeyGenerationCheckBox = addCheckBox( @@ -124,26 +148,41 @@ public class IdMappingGenerationComposite extends Pane<IdMapping> buildPrimaryKeyGenerationHolder(), JpaHelpContextIds.MAPPING_PRIMARY_KEY_GENERATION ); - - // Generated Value widgets - GeneratedValueComposite generatedValueComposite = new GeneratedValueComposite( - this, - container - ); - GridData gridData = new GridData(); - gridData.horizontalAlignment = GridData.FILL; - gridData.grabExcessHorizontalSpace = true; - gridData.horizontalIndent = primaryKeyGenerationCheckBox.getBorderWidth() + 16; - - generatedValueComposite.getControl().setLayoutData(gridData); + gridData.horizontalSpan = 2; + primaryKeyGenerationCheckBox.setLayoutData(gridData); + + // Strategy widgets + Label strategyLabel = addLabel(container, JptUiDetailsMessages.GeneratedValueComposite_strategy); + gridData = new GridData(); + gridData.horizontalIndent = primaryKeyGenerationCheckBox.getBorderWidth() + 16; + strategyLabel.setLayoutData(gridData); + this.addStrategyComboViewer(container); + + Label nameLabel = this.addLabel(container, JptUiDetailsMessages.GeneratedValueComposite_generatorName); + gridData = new GridData(); + gridData.horizontalIndent = primaryKeyGenerationCheckBox.getBorderWidth() + 16; + nameLabel.setLayoutData(gridData); + this.addEditableCombo( + container, + buildSortedGeneraterNamesModel(), + buildGeneratorNameHolder(), + StringConverter.Default.<String>instance(), + JpaHelpContextIds.MAPPING_GENERATED_VALUE_GENERATOR_NAME + ); PropertyValueModel<GeneratorContainer> generatorHolder = buildGeneratorContainer(); // Table Generator pane - initializeTableGeneratorPane(addSubPane(container, 10), generatorHolder); + Composite tableGeneratorComposite = initializeTableGeneratorPane(container, generatorHolder); + gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.horizontalSpan = 2; + tableGeneratorComposite.setLayoutData(gridData); // Sequence Generator pane - initializeSequenceGeneratorPane(addSubPane(container, 10), generatorHolder); + Composite sequenceGeneratorComposite = initializeSequenceGeneratorPane(container, generatorHolder); + gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.horizontalSpan = 2; + sequenceGeneratorComposite.setLayoutData(gridData); } private ModifiablePropertyValueModel<Boolean> buildPrimaryKeyGenerationHolder() { @@ -175,7 +214,7 @@ public class IdMappingGenerationComposite extends Pane<IdMapping> }; } - private void initializeSequenceGeneratorPane(Composite container, PropertyValueModel<GeneratorContainer> generatorHolder) { + private Composite initializeSequenceGeneratorPane(Composite container, PropertyValueModel<GeneratorContainer> generatorHolder) { // Sequence Generator sub-section container = addCollapsibleSubSection( @@ -193,12 +232,16 @@ public class IdMappingGenerationComposite extends Pane<IdMapping> ); // Sequence Generator pane - this.buildSequenceGeneratorComposite( + SequenceGeneratorComposite sequenceGeneratorComposite = this.buildSequenceGeneratorComposite( container, buildSequenceGeneratorHolder(generatorHolder), - buildSequenceGeneratorBuilder(generatorHolder), - 0, - sequenceGeneratorCheckBox.getBorderWidth() + 16); + buildSequenceGeneratorBuilder(generatorHolder)); + + GridData gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.horizontalIndent = sequenceGeneratorCheckBox.getBorderWidth() + 16; + sequenceGeneratorComposite.getControl().setLayoutData(gridData); + + return container.getParent();//return the Section } private ModifiablePropertyValueModel<Boolean> buildSequenceGeneratorBooleanHolder(PropertyValueModel<GeneratorContainer> generatorHolder) { @@ -232,14 +275,12 @@ public class IdMappingGenerationComposite extends Pane<IdMapping> protected SequenceGeneratorComposite buildSequenceGeneratorComposite( Composite container, PropertyValueModel<SequenceGenerator> sequenceGeneratorHolder, - GeneratorBuilder<SequenceGenerator> generatorBuilder, - int topMargin, - int leftMargin) { + GeneratorBuilder<SequenceGenerator> generatorBuilder) { return new SequenceGeneratorComposite( this, sequenceGeneratorHolder, - this.addSubPane(container, topMargin, leftMargin), + container, generatorBuilder ); } @@ -260,7 +301,7 @@ public class IdMappingGenerationComposite extends Pane<IdMapping> }; } - private void initializeTableGeneratorPane(Composite container, PropertyValueModel<GeneratorContainer> generatorHolder) { + private Composite initializeTableGeneratorPane(Composite container, PropertyValueModel<GeneratorContainer> generatorHolder) { // Table Generator sub-section container = addCollapsibleSubSection( @@ -276,26 +317,28 @@ public class IdMappingGenerationComposite extends Pane<IdMapping> JpaHelpContextIds.MAPPING_TABLE_GENERATOR ); - // Sequence Generator pane - this.buildTableGeneratorComposite( + // Table Generator pane + TableGeneratorComposite tableGeneratorComposite = this.buildTableGeneratorComposite( container, buildTableGeneratorHolder(generatorHolder), - buildTableGeneratorBuilder(generatorHolder), - 0, - tableGeneratorCheckBox.getBorderWidth() + 16); + buildTableGeneratorBuilder(generatorHolder)); + + GridData gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.horizontalIndent = tableGeneratorCheckBox.getBorderWidth() + 16; + tableGeneratorComposite.getControl().setLayoutData(gridData); + + return container.getParent();//return the Section } protected TableGeneratorComposite buildTableGeneratorComposite( Composite container, PropertyValueModel<TableGenerator> tableGeneratorHolder, - GeneratorBuilder<TableGenerator> generatorBuilder, - int topMargin, - int leftMargin) { + GeneratorBuilder<TableGenerator> generatorBuilder) { return new TableGeneratorComposite( this, tableGeneratorHolder, - this.addSubPane(container, topMargin, leftMargin), + container, generatorBuilder ); } @@ -344,5 +387,151 @@ public class IdMappingGenerationComposite extends Pane<IdMapping> } }; } + + private EnumFormComboViewer<GeneratedValue, GenerationType> addStrategyComboViewer(Composite parent) { + return new EnumFormComboViewer<GeneratedValue, GenerationType>(this, buildGeneratedValueHolder(), parent) { + @Override + protected void addPropertyNames(Collection<String> propertyNames) { + super.addPropertyNames(propertyNames); + propertyNames.add(GeneratedValue.DEFAULT_STRATEGY_PROPERTY); + propertyNames.add(GeneratedValue.SPECIFIED_STRATEGY_PROPERTY); + } + + @Override + protected GenerationType[] getChoices() { + return GenerationType.values(); + } + + @Override + protected GenerationType getDefaultValue() { + return getSubject().getDefaultStrategy(); + } + + @Override + protected String displayString(GenerationType value) { + switch (value) { + case AUTO : + return JptUiDetailsMessages.GeneratedValueComposite_auto; + case IDENTITY : + return JptUiDetailsMessages.GeneratedValueComposite_identity; + case SEQUENCE : + return JptUiDetailsMessages.GeneratedValueComposite_sequence; + case TABLE : + return JptUiDetailsMessages.GeneratedValueComposite_table; + default : + throw new IllegalStateException(); + } + } + + @Override + protected GenerationType getValue() { + return getSubject().getSpecifiedStrategy(); + } + + @Override + protected void setValue(GenerationType value) { + getGeneratedValueForUpdate().setSpecifiedStrategy(value); + } + + @Override + protected String getHelpId() { + return JpaHelpContextIds.MAPPING_GENERATED_VALUE_STRATEGY; + } + }; + } + + private PropertyValueModel<GeneratedValue> buildGeneratedValueHolder() { + return new PropertyAspectAdapter<IdMapping, GeneratedValue>(getSubjectHolder(), IdMapping.GENERATED_VALUE_PROPERTY) { + @Override + protected GeneratedValue buildValue_() { + return getSubject().getGeneratedValue(); + } + }; + } + + protected final ModifiablePropertyValueModel<String> buildGeneratorNameHolder() { + return new PropertyAspectAdapter<GeneratedValue, String>(buildGeneratedValueHolder(), GeneratedValue.SPECIFIED_GENERATOR_PROPERTY) { + @Override + protected String buildValue_() { + return this.subject.getSpecifiedGenerator(); + } + + @Override + public void setValue(String value) { + if (this.subject != null) { + setValue_(value); + return; + } + if (value.length() == 0) { + return; + } + getGeneratedValueForUpdate().setSpecifiedGenerator(value); + } + + @Override + protected void setValue_(String value) { + if (value !=null && value.length() == 0) { + value = null; + } + this.subject.setSpecifiedGenerator(value); + } + }; + } + + protected ListValueModel<String> buildSortedGeneraterNamesModel() { + return new SortedListValueModelAdapter<String>(this.buildUniqueGeneratorNamesModel()); + } + + protected CollectionValueModel<String> buildUniqueGeneratorNamesModel() { + return new SetCollectionValueModel<String>(this.buildGeneratorNamesModel()); + } + + protected CollectionValueModel<String> buildGeneratorNamesModel() { + return new FilteringCollectionValueModel<String>(this.buildGeneratorNamesModel_(), NonEmptyStringFilter.instance()); + } + + protected ListValueModel<String> buildGeneratorNamesModel_() { + return new TransformationListValueModel<Generator, String>(this.buildGeneratorsModel()) { + @Override + protected String transformItem_(Generator generator) { + return generator.getName(); + } + }; + } + + protected ListValueModel<Generator> buildGeneratorsModel() { + return new ItemPropertyListValueModelAdapter<Generator>(this.buildGeneratorsModel_(), JpaNamedContextNode.NAME_PROPERTY); + } + + protected CollectionValueModel<Generator> buildGeneratorsModel_() { + return new CollectionAspectAdapter<PersistenceUnit, Generator>(this.buildPersistenceUnitModel(), PersistenceUnit.GENERATORS_COLLECTION) { + @Override + protected Iterable<Generator> getIterable() { + return this.subject.getGenerators(); + } + @Override + protected int size_() { + return this.subject.getGeneratorsSize(); + } + }; + } + + protected PropertyValueModel<PersistenceUnit> buildPersistenceUnitModel() { + return new PropertyAspectAdapter<IdMapping, PersistenceUnit>(getSubjectHolder()) { + @Override + protected PersistenceUnit buildValue_() { + return this.subject.getPersistenceUnit(); + } + }; + } + + /* CU private */ GeneratedValue getGeneratedValueForUpdate() { + GeneratedValue generatedValue = getSubject().getGeneratedValue(); + + if (generatedValue == null) { + generatedValue = getSubject().addGeneratedValue(); + } + return generatedValue; + } }
\ No newline at end of file diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/JoinColumnDialogPane.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/JoinColumnDialogPane.java index cc3f5a3432..ca3f3c904d 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/JoinColumnDialogPane.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/JoinColumnDialogPane.java @@ -241,7 +241,7 @@ public class JoinColumnDialogPane<T extends JoinColumnStateObject> extends BaseJ // Insertable tri-state check box addTriStateCheckBoxWithDefault( - addSubPane(container, 4), + container, JptUiDetailsMessages.JoinColumnDialogPane_insertable, buildInsertableHolder(), buildInsertableStringHolder(), diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/JoinColumnJoiningStrategyPane.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/JoinColumnJoiningStrategyPane.java index 31a731c03a..77dd5161ff 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/JoinColumnJoiningStrategyPane.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/JoinColumnJoiningStrategyPane.java @@ -18,6 +18,7 @@ import org.eclipse.jpt.jpa.core.context.ReadOnlyJoinColumnRelationship; import org.eclipse.jpt.jpa.core.context.ReadOnlyJoinColumnRelationshipStrategy; import org.eclipse.jpt.jpa.core.context.ReadOnlyRelationship; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; /** * Here is the layout of this pane: @@ -104,7 +105,7 @@ public class JoinColumnJoiningStrategyPane } @Override - protected Composite buildStrategyDetailsComposite(Composite parent) { + protected Control buildStrategyDetailsComposite(Composite parent) { PropertyValueModel<ReadOnlyJoinColumnRelationshipStrategy> joiningStrategyHolder = this.buildJoinColumnJoiningStrategyHolder(); return this.includeOverrideCheckBox ? diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/JoinColumnsComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/JoinColumnsComposite.java index 5ea2b43d35..05eb5a9125 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/JoinColumnsComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/JoinColumnsComposite.java @@ -13,22 +13,22 @@ import java.util.ArrayList; import org.eclipse.jface.viewers.ILabelProvider; import org.eclipse.jface.viewers.LabelProvider; import org.eclipse.jpt.common.ui.WidgetFactory; -import org.eclipse.jpt.common.ui.internal.util.PaneEnabler; import org.eclipse.jpt.common.ui.internal.widgets.AddRemoveListPane; import org.eclipse.jpt.common.ui.internal.widgets.AddRemovePane.AbstractAdapter; import org.eclipse.jpt.common.ui.internal.widgets.AddRemovePane.Adapter; import org.eclipse.jpt.common.ui.internal.widgets.Pane; import org.eclipse.jpt.common.utility.internal.iterables.ListIterable; +import org.eclipse.jpt.common.utility.internal.iterables.SingleElementIterable; import org.eclipse.jpt.common.utility.internal.model.value.CompositeListValueModel; import org.eclipse.jpt.common.utility.internal.model.value.ItemPropertyListValueModelAdapter; import org.eclipse.jpt.common.utility.internal.model.value.ListAspectAdapter; import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter; import org.eclipse.jpt.common.utility.internal.model.value.PropertyListValueModelAdapter; -import org.eclipse.jpt.common.utility.internal.model.value.SimplePropertyValueModel; -import org.eclipse.jpt.common.utility.internal.model.value.swing.ObjectListSelectionModel; +import org.eclipse.jpt.common.utility.internal.model.value.SimpleCollectionValueModel; +import org.eclipse.jpt.common.utility.model.value.CollectionValueModel; import org.eclipse.jpt.common.utility.model.value.ListValueModel; +import org.eclipse.jpt.common.utility.model.value.ModifiableCollectionValueModel; import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; -import org.eclipse.jpt.common.utility.model.value.ModifiablePropertyValueModel; import org.eclipse.jpt.jpa.core.JpaNode; import org.eclipse.jpt.jpa.core.context.JoinColumn; import org.eclipse.jpt.jpa.core.context.ReadOnlyBaseJoinColumn; @@ -63,7 +63,7 @@ public class JoinColumnsComposite<T extends JpaNode> extends Pane<T> */ JoinColumnsEditor<T> joinColumnsEditor; - private AddRemoveListPane<T> listPane; + ModifiableCollectionValueModel<JoinColumn> selectedJoinColumnsModel; /** * Creates a new <code>JoinColumnsComposite</code>. @@ -75,29 +75,10 @@ public class JoinColumnsComposite<T extends JpaNode> extends Pane<T> */ public JoinColumnsComposite(Pane<? extends T> parentPane, Composite parent, - JoinColumnsEditor<T> joinColumnsEditor) { - - super(parentPane, parent); - this.joinColumnsEditor = joinColumnsEditor; - initializeLayout2(); - } - - /** - * Creates a new <code>JoinColumnsComposite</code>. - * - * @param parentPane The parent controller of this one - * @param subjectHolder The holder of this pane's subject - * @param parent The parent container - * @param joinColumnsEditor The editor used to perform the common behaviors - * defined in the list pane - */ - public JoinColumnsComposite(Pane<?> parentPane, - PropertyValueModel<? extends T> subjectHolder, - Composite parent, JoinColumnsEditor<T> joinColumnsEditor, - boolean automaticallyAlignWidgets) { + PropertyValueModel<Boolean> enabledModel) { - super(parentPane, subjectHolder, parent, automaticallyAlignWidgets); + super(parentPane, parent, enabledModel); this.joinColumnsEditor = joinColumnsEditor; initializeLayout2(); } @@ -120,25 +101,35 @@ public class JoinColumnsComposite<T extends JpaNode> extends Pane<T> } @Override + public Composite getControl() { + return (Composite) super.getControl(); + } + + @Override + protected void initialize() { + super.initialize(); + this.selectedJoinColumnsModel = this.buildSelectedJoinColumnsModel(); + } + + @Override protected void initializeLayout(Composite container) { //see intiailizeLayout2() } private void initializeLayout2() { - this.listPane = new AddRemoveListPane<T>( + new AddRemoveListPane<T, JoinColumn>( this, getControl(), buildJoinColumnsAdapter(), buildJoinColumnsListModel(), - buildSelectedJoinColumnHolder(), + this.selectedJoinColumnsModel, buildJoinColumnsListLabelProvider(), - JpaHelpContextIds.MAPPING_JOIN_TABLE_COLUMNS, - false + JpaHelpContextIds.MAPPING_JOIN_TABLE_COLUMNS ); } - private ModifiablePropertyValueModel<JoinColumn> buildSelectedJoinColumnHolder() { - return new SimplePropertyValueModel<JoinColumn>(); + private ModifiableCollectionValueModel<JoinColumn> buildSelectedJoinColumnsModel() { + return new SimpleCollectionValueModel<JoinColumn>(); } String buildJoinColumnLabel(ReadOnlyJoinColumn joinColumn) { @@ -182,11 +173,23 @@ public class JoinColumnsComposite<T extends JpaNode> extends Pane<T> ); } - private Adapter buildJoinColumnsAdapter() { - return new AbstractAdapter() { + private Adapter<JoinColumn> buildJoinColumnsAdapter() { + return new AbstractAdapter<JoinColumn>() { - public void addNewItem(ObjectListSelectionModel listSelectionModel) { - JoinColumnsComposite.this.joinColumnsEditor.addJoinColumn(getSubject()); + public JoinColumn addNewItem() { + return JoinColumnsComposite.this.joinColumnsEditor.addJoinColumn(getSubject()); + } + + @Override + public PropertyValueModel<Boolean> buildRemoveButtonEnabledModel(CollectionValueModel<JoinColumn> selectedItemsModel) { + //enable the remove button only when 1 item is selected, same as the optional button + return this.buildSingleSelectedItemEnabledModel(selectedItemsModel); + } + + public void removeSelectedItems(CollectionValueModel<JoinColumn> selectedItemsModel) { + //assume only 1 item since remove button is disabled otherwise + JoinColumn joinColumn = selectedItemsModel.iterator().next(); + JoinColumnsComposite.this.joinColumnsEditor.removeJoinColumn(getSubject(), joinColumn); } @Override @@ -200,14 +203,10 @@ public class JoinColumnsComposite<T extends JpaNode> extends Pane<T> } @Override - public void optionOnSelection(ObjectListSelectionModel listSelectionModel) { - JoinColumn joinColumn = (JoinColumn) listSelectionModel.selectedValue(); + public void optionOnSelection(CollectionValueModel<JoinColumn> selectedItemsModel) { + JoinColumn joinColumn = selectedItemsModel.iterator().next(); JoinColumnsComposite.this.joinColumnsEditor.editJoinColumn(getSubject(), joinColumn); } - - public void removeSelectedItems(ObjectListSelectionModel listSelectionModel) { - JoinColumnsComposite.this.joinColumnsEditor.removeJoinColumns(getSubject(), listSelectionModel.selectedIndices()); - } }; } @@ -267,12 +266,8 @@ public class JoinColumnsComposite<T extends JpaNode> extends Pane<T> }; } - public void installJoinColumnsPaneEnabler(PropertyValueModel<Boolean> joinColumnsPaneEnablerHolder) { - new PaneEnabler(joinColumnsPaneEnablerHolder, this.listPane); - } - public void setSelectedJoinColumn(JoinColumn joinColumn) { - this.listPane.setSelectedItem(joinColumn); + this.selectedJoinColumnsModel.setValues(new SingleElementIterable<JoinColumn>(joinColumn)); } /** @@ -283,7 +278,7 @@ public class JoinColumnsComposite<T extends JpaNode> extends Pane<T> /** * Add a join column to the given subject and return it */ - void addJoinColumn(T subject); + JoinColumn addJoinColumn(T subject); /** * Edit the given join column, the Edit button was pressed @@ -324,6 +319,6 @@ public class JoinColumnsComposite<T extends JpaNode> extends Pane<T> /** * Remove the join columns at the specified indices from the subject */ - void removeJoinColumns(T subject, int[] selectedIndices); + void removeJoinColumn(T subject, JoinColumn joinColumn); } }
\ No newline at end of file diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/JoinTableComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/JoinTableComposite.java index 2ac4975d16..89e6cc956f 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/JoinTableComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/JoinTableComposite.java @@ -30,9 +30,7 @@ import org.eclipse.jpt.jpa.core.context.ReadOnlyJoinColumn; import org.eclipse.jpt.jpa.core.context.ReadOnlyJoinTable; import org.eclipse.jpt.jpa.ui.internal.JpaHelpContextIds; import org.eclipse.jpt.jpa.ui.internal.details.JoinColumnsComposite.JoinColumnsEditor; -import org.eclipse.jpt.jpa.ui.internal.details.db.CatalogCombo; -import org.eclipse.jpt.jpa.ui.internal.details.db.SchemaCombo; -import org.eclipse.jpt.jpa.ui.internal.details.db.TableCombo; +import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Group; @@ -91,9 +89,10 @@ public class JoinTableComposite public JoinTableComposite( Pane<?> parentPane, PropertyValueModel<? extends ReadOnlyJoinTable> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent) { - super(parentPane, subjectHolder, parent); + super(parentPane, subjectHolder, enabledModel, parent); } /** @@ -114,50 +113,38 @@ public class JoinTableComposite protected boolean tableIsVirtual(ReadOnlyJoinTable joinTable) { return joinTable.getParent().getRelationship().isVirtual(); } - @Override - protected void initializeLayout(Composite container) { - int groupBoxMargin = getGroupBoxMargin(); + @Override + protected Composite addComposite(Composite container) { + return this.addSubPane(container, 2, 0, 0, 0, 0); + } + @Override + protected void initializeLayout(Composite container) { // Name widgets - TableCombo<ReadOnlyJoinTable> tableCombo = addTableCombo(container); - Composite tablePane = addPane(container, groupBoxMargin); - addLabeledComposite( - tablePane, - JptUiDetailsMessages.JoinTableComposite_name, - tableCombo.getControl(), - JpaHelpContextIds.MAPPING_JOIN_TABLE_NAME - ); + this.addLabel(container, JptUiDetailsMessages.JoinTableComposite_name); + this.addTableCombo(container, JpaHelpContextIds.MAPPING_JOIN_TABLE_NAME); // schema widgets - SchemaCombo<ReadOnlyJoinTable> schemaCombo = addSchemaCombo(container); + this.addLabel(container, JptUiDetailsMessages.JoinTableComposite_schema); + this.addSchemaCombo(container, JpaHelpContextIds.MAPPING_JOIN_TABLE_SCHEMA); - addLabeledComposite( - tablePane, - JptUiDetailsMessages.JoinTableComposite_schema, - schemaCombo.getControl(), - JpaHelpContextIds.MAPPING_JOIN_TABLE_SCHEMA - ); - // catalog widgets - CatalogCombo<ReadOnlyJoinTable> catalogCombo = addCatalogCombo(container); - - addLabeledComposite( - tablePane, - JptUiDetailsMessages.JoinTableComposite_catalog, - catalogCombo.getControl(), - JpaHelpContextIds.MAPPING_JOIN_TABLE_CATALOG - ); + this.addLabel(container, JptUiDetailsMessages.JoinTableComposite_catalog); + this.addCatalogCombo(container, JpaHelpContextIds.MAPPING_JOIN_TABLE_CATALOG); // Join Columns group pane Group joinColumnGroupPane = addTitledGroup( container, JptUiDetailsMessages.JoinTableComposite_joinColumn ); + GridData gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.horizontalSpan = 2; + joinColumnGroupPane.setLayoutData(gridData); // Override Default Join Columns check box this.overrideDefaultJoinColumnsCheckBox = addCheckBox( - addSubPane(joinColumnGroupPane, 8), + joinColumnGroupPane, JptUiDetailsMessages.JoinTableComposite_overrideDefaultJoinColumns, buildOverrideDefaultJoinColumnHolder(), null @@ -166,20 +153,22 @@ public class JoinTableComposite this.joinColumnsComposite = new JoinColumnsComposite<ReadOnlyJoinTable>( this, joinColumnGroupPane, - buildJoinColumnsEditor() + buildJoinColumnsEditor(), + buildJoinColumnsEnabledModel() ); - installJoinColumnsPaneEnabler(this.joinColumnsComposite); - // Inverse Join Columns group pane Group inverseJoinColumnGroupPane = addTitledGroup( container, JptUiDetailsMessages.JoinTableComposite_inverseJoinColumn ); + gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.horizontalSpan = 2; + inverseJoinColumnGroupPane.setLayoutData(gridData); // Override Default Inverse Join Columns check box this.overrideDefaultInverseJoinColumnsCheckBox = addCheckBox( - addSubPane(inverseJoinColumnGroupPane, 8), + inverseJoinColumnGroupPane, JptUiDetailsMessages.JoinTableComposite_overrideDefaultInverseJoinColumns, buildOverrideDefaultInverseJoinColumnHolder(), null @@ -188,17 +177,12 @@ public class JoinTableComposite this.inverseJoinColumnsComposite = new JoinColumnsComposite<ReadOnlyJoinTable>( this, inverseJoinColumnGroupPane, - buildInverseJoinColumnsEditor() + buildInverseJoinColumnsEditor(), + new InverseJoinColumnPaneEnablerHolder() ); - - installInverseJoinColumnsPaneEnabler(this.inverseJoinColumnsComposite); - } - - private void installInverseJoinColumnsPaneEnabler(JoinColumnsComposite<ReadOnlyJoinTable> pane) { - pane.installJoinColumnsPaneEnabler(new InverseJoinColumnPaneEnablerHolder()); } - void addInverseJoinColumn(ReadOnlyJoinTable joinTable) { + JoinColumn addInverseJoinColumn(ReadOnlyJoinTable joinTable) { InverseJoinColumnInJoinTableDialog dialog = new InverseJoinColumnInJoinTableDialog(getShell(), joinTable, null); @@ -206,18 +190,19 @@ public class JoinTableComposite dialog.setBlockOnOpen(true); dialog.open(); if (dialog.wasConfirmed()) { - addInverseJoinColumnFromDialog(dialog.getSubject()); + return addInverseJoinColumnFromDialog(dialog.getSubject()); } + return null; } - void addInverseJoinColumnFromDialog(InverseJoinColumnInJoinTableStateObject stateObject) { + JoinColumn addInverseJoinColumnFromDialog(InverseJoinColumnInJoinTableStateObject stateObject) { JoinTable subject = (JoinTable) getSubject(); int index = subject.getSpecifiedInverseJoinColumnsSize(); JoinColumn joinColumn = subject.addSpecifiedInverseJoinColumn(index); stateObject.updateJoinColumn(joinColumn); - this.setSelectedInverseJoinColumn(joinColumn); + return joinColumn; } private void setSelectedInverseJoinColumn(JoinColumn joinColumn) { @@ -293,8 +278,8 @@ public class JoinTableComposite class InverseJoinColumnsProvider implements JoinColumnsEditor<ReadOnlyJoinTable> { - public void addJoinColumn(ReadOnlyJoinTable subject) { - JoinTableComposite.this.addInverseJoinColumn(subject); + public JoinColumn addJoinColumn(ReadOnlyJoinTable subject) { + return JoinTableComposite.this.addInverseJoinColumn(subject); } public ReadOnlyJoinColumn getDefaultJoinColumn(ReadOnlyJoinTable subject) { @@ -313,10 +298,8 @@ public class JoinTableComposite return subject.hasSpecifiedInverseJoinColumns(); } - public void removeJoinColumns(ReadOnlyJoinTable subject, int[] selectedIndices) { - for (int index = selectedIndices.length; index-- > 0; ) { - ((JoinTable) subject).removeSpecifiedInverseJoinColumn(selectedIndices[index]); - } + public void removeJoinColumn(ReadOnlyJoinTable subject, JoinColumn joinColumn) { + ((JoinTable) subject).removeSpecifiedInverseJoinColumn(joinColumn); } public ListIterable<ReadOnlyJoinColumn> getSpecifiedJoinColumns(ReadOnlyJoinTable subject) { diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/JoinTableJoiningStrategyPane.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/JoinTableJoiningStrategyPane.java index 0a2b98332c..19e91f7789 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/JoinTableJoiningStrategyPane.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/JoinTableJoiningStrategyPane.java @@ -11,6 +11,7 @@ package org.eclipse.jpt.jpa.ui.internal.details; import org.eclipse.jpt.common.ui.internal.widgets.Pane; import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter; +import org.eclipse.jpt.common.utility.internal.model.value.TransformationPropertyValueModel; import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; import org.eclipse.jpt.common.utility.model.value.ModifiablePropertyValueModel; import org.eclipse.jpt.jpa.core.context.JoinTableRelationship; @@ -20,6 +21,7 @@ import org.eclipse.jpt.jpa.core.context.ReadOnlyJoinTableRelationship; import org.eclipse.jpt.jpa.core.context.ReadOnlyJoinTableRelationshipStrategy; import org.eclipse.jpt.jpa.core.context.ReadOnlyRelationship; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; /** * Here is the layout of this pane: @@ -60,8 +62,9 @@ public class JoinTableJoiningStrategyPane } @Override - protected Composite buildStrategyDetailsComposite(Composite parent) { - return new JoinTableComposite(this, buildJoinTableHolder(), parent).getControl(); + protected Control buildStrategyDetailsComposite(Composite parent) { + JoinTableComposite joinTableComposite = new JoinTableComposite(this, buildJoinTableHolder(), buildJoinTablePaneEnablerHolder(), parent); + return joinTableComposite.getControl(); } @Override @@ -111,4 +114,13 @@ public class JoinTableJoiningStrategyPane } }; } + + private TransformationPropertyValueModel<ReadOnlyJoinTableRelationship, Boolean> buildJoinTablePaneEnablerHolder() { + return new TransformationPropertyValueModel<ReadOnlyJoinTableRelationship, Boolean>(getSubjectHolder()) { + @Override + protected Boolean transform_(ReadOnlyJoinTableRelationship v) { + return Boolean.valueOf(!v.isVirtual()); + } + }; + } } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/JoiningStrategyJoinColumnsComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/JoiningStrategyJoinColumnsComposite.java index d1a758dc6b..779f1c3207 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/JoiningStrategyJoinColumnsComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/JoiningStrategyJoinColumnsComposite.java @@ -57,18 +57,21 @@ public class JoiningStrategyJoinColumnsComposite super(parentPane, subjectHolder, parent); } + @Override + protected Composite addComposite(Composite container) { + this.joinColumnsComposite = new JoinColumnsComposite<ReadOnlyJoinColumnRelationshipStrategy>(this, container, buildJoinColumnsProvider(), new JoinColumnPaneEnablerHolder()); + return this.joinColumnsComposite.getControl(); + } @Override protected void initializeLayout(Composite container) { - this.joinColumnsComposite = new JoinColumnsComposite<ReadOnlyJoinColumnRelationshipStrategy>(this, container, buildJoinColumnsProvider()); - this.joinColumnsComposite.installJoinColumnsPaneEnabler(new JoinColumnPaneEnablerHolder()); } private JoinColumnsEditor<ReadOnlyJoinColumnRelationshipStrategy> buildJoinColumnsProvider() { return new JoinColumnsEditor<ReadOnlyJoinColumnRelationshipStrategy>() { - public void addJoinColumn(ReadOnlyJoinColumnRelationshipStrategy subject) { - JoiningStrategyJoinColumnsComposite.this.addJoinColumn(subject); + public JoinColumn addJoinColumn(ReadOnlyJoinColumnRelationshipStrategy subject) { + return JoiningStrategyJoinColumnsComposite.this.addJoinColumn(subject); } public boolean hasSpecifiedJoinColumns(ReadOnlyJoinColumnRelationshipStrategy subject) { @@ -91,10 +94,8 @@ public class JoiningStrategyJoinColumnsComposite return ReadOnlyJoinColumnRelationshipStrategy.SPECIFIED_JOIN_COLUMNS_LIST; } - public void removeJoinColumns(ReadOnlyJoinColumnRelationshipStrategy subject, int[] selectedIndices) { - for (int index = selectedIndices.length; --index >= 0; ) { - ((JoinColumnRelationshipStrategy) subject).removeSpecifiedJoinColumn(selectedIndices[index]); - } + public void removeJoinColumn(ReadOnlyJoinColumnRelationshipStrategy subject, JoinColumn joinColumn) { + ((JoinColumnRelationshipStrategy) subject).removeSpecifiedJoinColumn(joinColumn); } public ListIterable<ReadOnlyJoinColumn> getSpecifiedJoinColumns(ReadOnlyJoinColumnRelationshipStrategy subject) { @@ -107,22 +108,23 @@ public class JoiningStrategyJoinColumnsComposite }; } - void addJoinColumn(ReadOnlyJoinColumnRelationshipStrategy joiningStrategy) { + JoinColumn addJoinColumn(ReadOnlyJoinColumnRelationshipStrategy joiningStrategy) { JoinColumnInJoiningStrategyDialog dialog = new JoinColumnInJoiningStrategyDialog(getShell(), joiningStrategy, null); dialog.setBlockOnOpen(true); dialog.open(); if (dialog.wasConfirmed()) { - addJoinColumn(dialog.getSubject()); + return addJoinColumn(dialog.getSubject()); } + return null; } - void addJoinColumn(JoinColumnInJoiningStrategyStateObject stateObject) { + JoinColumn addJoinColumn(JoinColumnInJoiningStrategyStateObject stateObject) { JoinColumnRelationshipStrategy subject = (JoinColumnRelationshipStrategy) getSubject(); JoinColumn joinColumn = subject.addSpecifiedJoinColumn(); stateObject.updateJoinColumn(joinColumn); - this.setSelectedJoinColumn(joinColumn); + return joinColumn; } public void setSelectedJoinColumn(JoinColumn joinColumn) { diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/JoiningStrategyJoinColumnsWithOverrideOptionComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/JoiningStrategyJoinColumnsWithOverrideOptionComposite.java index 8c56beeea9..2b1d431984 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/JoiningStrategyJoinColumnsWithOverrideOptionComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/JoiningStrategyJoinColumnsWithOverrideOptionComposite.java @@ -62,7 +62,7 @@ public class JoiningStrategyJoinColumnsWithOverrideOptionComposite protected void initializeLayout(Composite container) { // Override Default Join Columns check box addCheckBox( - addSubPane(container, 8), + container, JptUiDetailsMessages.JoiningStrategyJoinColumnsComposite_overrideDefaultJoinColumns, buildOverrideDefaultJoinColumnHolder(), null diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/ManyToManyJoiningStrategyPane.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/ManyToManyJoiningStrategyPane.java index 2375cd2a32..903669694b 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/ManyToManyJoiningStrategyPane.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/ManyToManyJoiningStrategyPane.java @@ -57,32 +57,32 @@ public class ManyToManyJoiningStrategyPane super(parentPane, subjectHolder, parent); } - - + + @Override + protected Composite addComposite(Composite container) { + return addCollapsibleSection( + container, + JptUiDetailsMessages.Joining_title, + new SimplePropertyValueModel<Boolean>(Boolean.TRUE)); + } + @Override protected void initializeLayout(Composite container) { - Composite composite = addCollapsibleSection( - container, - JptUiDetailsMessages.Joining_title, - new SimplePropertyValueModel<Boolean>(Boolean.TRUE)); - addRadioButton( - composite, + container, JptUiDetailsMessages.Joining_mappedByLabel, MappedByJoiningStrategyPane.buildUsesMappedByJoiningStrategyHolder(getSubjectHolder()), null); - new MappedByJoiningStrategyPane(this, composite); + new MappedByJoiningStrategyPane(this, container); addRadioButton( - composite, + container, JptUiDetailsMessages.Joining_joinTableJoiningLabel, JoinTableJoiningStrategyPane.buildUsesJoinTableJoiningStrategyHolder(getSubjectHolder()), null); - new JoinTableJoiningStrategyPane(this, composite); - - addSubPane(composite, 5); + new JoinTableJoiningStrategyPane(this, container); } protected ModifiablePropertyValueModel<Boolean> buildUsesMappedByStrategyHolder() { diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/ManyToManyMappingComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/ManyToManyMappingComposite.java index a2ffd3aa2f..4c0f5f9747 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/ManyToManyMappingComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/ManyToManyMappingComposite.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2006, 2011 Oracle. All rights reserved. + * Copyright (c) 2006, 2012 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. @@ -13,7 +13,10 @@ import org.eclipse.jpt.common.ui.WidgetFactory; import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; import org.eclipse.jpt.jpa.core.context.ManyToManyMapping; import org.eclipse.jpt.jpa.core.context.ManyToManyRelationship; +import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.ui.forms.widgets.Hyperlink; /** * Here the layout of this pane: @@ -47,9 +50,9 @@ import org.eclipse.swt.widgets.Composite; * -----------------------------------------------------------------------------</pre> * * @see {@link ManyToManyMapping} - * @see {@link TargetEntityComposite} + * @see {@link TargetEntityClassChooser} * @see {@link ManyToManyJoiningStrategyPane} - * @see {@link FetchTypeComposite} + * @see {@link FetchTypeComboViewer} * @see {@link CascadeComposite} * @see {@link OrderingComposite} * @@ -67,17 +70,32 @@ public class ManyToManyMappingComposite * @param widgetFactory The factory used to create various common widgets */ public ManyToManyMappingComposite(PropertyValueModel<? extends ManyToManyMapping> subjectHolder, - Composite parent, - WidgetFactory widgetFactory) { + PropertyValueModel<Boolean> enabledModel, + Composite parent, + WidgetFactory widgetFactory) { - super(subjectHolder, parent, widgetFactory); + super(subjectHolder, enabledModel, parent, widgetFactory); } @Override - protected void initializeManyToManySection(Composite container) { - new TargetEntityComposite(this, container); - new FetchTypeComposite(this, container); - new CascadeComposite(this, buildCascadeHolder(), addSubPane(container, 5)); + protected Control initializeManyToManySection(Composite container) { + container = this.addSubPane(container, 2, 0, 0, 0, 0); + + // Target entity widgets + Hyperlink targetEntityHyperlink = this.addHyperlink(container, JptUiDetailsMessages.TargetEntityChooser_label); + new TargetEntityClassChooser(this, container, targetEntityHyperlink); + + // Fetch type widgets + this.addLabel(container, JptUiDetailsMessages.BasicGeneralSection_fetchLabel); + new FetchTypeComboViewer(this, container); + + // Cascade widgets + CascadeComposite cascadeComposite = new CascadeComposite(this, buildCascadeHolder(), container); + GridData gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.horizontalSpan = 2; + cascadeComposite.getControl().setLayoutData(gridData); + + return container; } } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/ManyToOneJoiningStrategyPane.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/ManyToOneJoiningStrategyPane.java index dfc728863f..55c30b0f42 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/ManyToOneJoiningStrategyPane.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/ManyToOneJoiningStrategyPane.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2009, 2011 Oracle. All rights reserved. + * Copyright (c) 2009, 2012 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. @@ -45,24 +45,24 @@ public class ManyToOneJoiningStrategyPane extends Pane<ManyToOneRelationship> super(parentPane, subjectHolder, parent); } - - + + @Override + protected Composite addComposite(Composite container) { + return addCollapsibleSection( + container, + JptUiDetailsMessages.Joining_title, + new SimplePropertyValueModel<Boolean>(Boolean.TRUE)); + } + @Override protected void initializeLayout(Composite container) { - Composite composite = addCollapsibleSection( - container, - JptUiDetailsMessages.Joining_title, - new SimplePropertyValueModel<Boolean>(Boolean.TRUE)); - addRadioButton( - composite, + container, JptUiDetailsMessages.Joining_joinColumnJoiningLabel, JoinColumnJoiningStrategyPane.buildUsesJoinColumnJoiningStrategyHolder(getSubjectHolder()), null); JoinColumnJoiningStrategyPane. - buildJoinColumnJoiningStrategyPaneWithIncludeOverrideCheckBox(this, composite); - - addSubPane(composite, 5); + buildJoinColumnJoiningStrategyPaneWithIncludeOverrideCheckBox(this, container); } } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/ManyToOneMappingComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/ManyToOneMappingComposite.java index 903149fe3d..792de79616 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/ManyToOneMappingComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/ManyToOneMappingComposite.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2006, 2011 Oracle. All rights reserved. + * Copyright (c) 2006, 2012 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. @@ -13,7 +13,10 @@ import org.eclipse.jpt.common.ui.WidgetFactory; import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; import org.eclipse.jpt.jpa.core.context.ManyToOneMapping; import org.eclipse.jpt.jpa.core.context.ManyToOneRelationship; +import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.ui.forms.widgets.Hyperlink; /** * Here the layout of this pane: @@ -47,10 +50,10 @@ import org.eclipse.swt.widgets.Composite; * -----------------------------------------------------------------------------</pre> * * @see {@link ManyToOneMapping} - * @see {@link TargetEntityComposite} + * @see {@link TargetEntityClassChooser} * @see {@link ManyToOneJoiningStrategyPane} - * @see {@link FetchTypeComposite} - * @see {@link OptionalComposite} + * @see {@link FetchTypeComboViewer} + * @see {@link OptionalTriStateCheckBox} * @see {@link CascadeComposite} * * @version 2.3 @@ -67,18 +70,38 @@ public class ManyToOneMappingComposite * @param widgetFactory The factory used to create various common widgets */ public ManyToOneMappingComposite(PropertyValueModel<? extends ManyToOneMapping> subjectHolder, - Composite parent, - WidgetFactory widgetFactory) { + PropertyValueModel<Boolean> enabledModel, + Composite parent, + WidgetFactory widgetFactory) { - super(subjectHolder, parent, widgetFactory); + super(subjectHolder, enabledModel, parent, widgetFactory); } @Override - protected void initializeManyToOneSection(Composite container) { - new TargetEntityComposite(this, container); - new FetchTypeComposite(this, container); - new OptionalComposite(this, container); - new CascadeComposite(this, buildCascadeHolder(), addSubPane(container, 5)); + protected Control initializeManyToOneSection(Composite container) { + container = this.addSubPane(container, 2, 0, 0, 0, 0); + + // Target entity widgets + Hyperlink targetEntityHyperlink = this.addHyperlink(container, JptUiDetailsMessages.TargetEntityChooser_label); + new TargetEntityClassChooser(this, container, targetEntityHyperlink); + + // Fetch type widgets + this.addLabel(container, JptUiDetailsMessages.BasicGeneralSection_fetchLabel); + new FetchTypeComboViewer(this, container); + + // Optional widgets + OptionalTriStateCheckBox optionalCheckBox = new OptionalTriStateCheckBox(this, container); + GridData gridData = new GridData(); + gridData.horizontalSpan = 2; + optionalCheckBox.getControl().setLayoutData(gridData); + + // Cascade widgets + CascadeComposite cascadePane = new CascadeComposite(this, buildCascadeHolder(), container); + gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.horizontalSpan = 2; + cascadePane.getControl().setLayoutData(gridData); + + return container; } } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/MapAsComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/MapAsComposite.java index 86fc2fad6d..37d46ff81f 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/MapAsComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/MapAsComposite.java @@ -20,15 +20,18 @@ import org.eclipse.jface.dialogs.IDialogSettings; import org.eclipse.jface.resource.JFaceColors; import org.eclipse.jface.viewers.ILabelProvider; import org.eclipse.jface.viewers.LabelProvider; +import org.eclipse.jpt.common.ui.internal.utility.swt.SWTTools; import org.eclipse.jpt.common.ui.internal.widgets.Pane; import org.eclipse.jpt.common.utility.internal.CollectionTools; import org.eclipse.jpt.common.utility.internal.StringTools; +import org.eclipse.jpt.common.utility.model.event.PropertyChangeEvent; +import org.eclipse.jpt.common.utility.model.listener.PropertyChangeListener; +import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; import org.eclipse.jpt.jpa.core.JpaNode; import org.eclipse.jpt.jpa.ui.JpaPlatformUi; import org.eclipse.jpt.jpa.ui.JptJpaUiPlugin; import org.eclipse.jpt.jpa.ui.details.DefaultMappingUiDefinition; import org.eclipse.jpt.jpa.ui.details.MappingUiDefinition; -import org.eclipse.jpt.jpa.ui.internal.platform.JpaPlatformUiRegistry; import org.eclipse.osgi.util.NLS; import org.eclipse.swt.SWT; import org.eclipse.swt.custom.StyleRange; @@ -43,6 +46,7 @@ import org.eclipse.swt.graphics.Point; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; +import org.eclipse.swt.widgets.Display; import org.eclipse.ui.dialogs.FilteredItemsSelectionDialog; import com.ibm.icu.text.Collator; @@ -66,8 +70,6 @@ import com.ibm.icu.text.Collator; public abstract class MapAsComposite<T extends JpaNode> extends Pane<T> { protected boolean dragEvent; - protected boolean enabled; - protected Cursor handCursor; protected MappingChangeHandler<T> mappingChangeHandler; protected int mappingTypeLength; protected int mappingTypeStart; @@ -75,6 +77,7 @@ public abstract class MapAsComposite<T extends JpaNode> extends Pane<T> { protected int nameLength; protected int nameStart; protected StyledText styledText; + protected PropertyChangeListener enabledModelListener; /** * The constant ID used to retrieve the dialog settings. @@ -92,6 +95,13 @@ public abstract class MapAsComposite<T extends JpaNode> extends Pane<T> { super(parentPane, parent); } + + public MapAsComposite(Pane<? extends T> parentPane, + Composite parent, + PropertyValueModel<Boolean> enabledModel) { + + super(parentPane, parent, enabledModel); + } /** * Returns the JPT platform responsble to manage the user interface part of @@ -127,7 +137,7 @@ public abstract class MapAsComposite<T extends JpaNode> extends Pane<T> { * * @return A new <code>MappingChangeHandler</code> */ - protected abstract MappingChangeHandler buildMappingChangeHandler(); + protected abstract MappingChangeHandler<T> buildMappingChangeHandler(); private MouseListener buildMouseListener() { return new MouseListener() { @@ -149,11 +159,11 @@ public abstract class MapAsComposite<T extends JpaNode> extends Pane<T> { dragEvent = false; if (isOverLink(offset)) { - text.setCursor(handCursor); + text.setCursor(getHandCursor()); } } else if (isOverLink(offset)) { - text.setCursor(handCursor); + text.setCursor(getHandCursor()); openMappingSelectionDialog(); text.setCursor(null); } @@ -184,7 +194,7 @@ public abstract class MapAsComposite<T extends JpaNode> extends Pane<T> { } if (isOverLink(offset)) { - text.setCursor(handCursor); + text.setCursor(getHandCursor()); } else { text.setCursor(null); @@ -194,6 +204,14 @@ public abstract class MapAsComposite<T extends JpaNode> extends Pane<T> { } /** + * no need to store this since we are not supposed to dispose of it. + * @see Display#getSystemCursor(int) + */ + private Cursor getHandCursor() { + return getShell().getDisplay().getSystemCursor(SWT.CURSOR_HAND); + } + + /** * Creates the full localized string by formatting the label text returned * by the <code>MappingChangeHandler</code> with the mapping name and the * mapping type. @@ -230,46 +248,46 @@ public abstract class MapAsComposite<T extends JpaNode> extends Pane<T> { * (non-Javadoc) */ @Override - public void enableWidgets(boolean enabled) { - this.enabled = enabled; - super.enableWidgets(enabled); - - if (!styledText.isDisposed()) { - styledText.setEnabled(enabled); - - if (enabled) { - updateLinkRange(); - } - else { - clearStyleRange(); - } - } - } - - /* - * (non-Javadoc) - */ - @Override protected void initialize() { super.initialize(); - - this.enabled = true; this.mappingChangeHandler = buildMappingChangeHandler(); + this.enabledModelListener = this.buildEnabledModelListener(); + this.getEnabledModel().addPropertyChangeListener(PropertyValueModel.VALUE, this.enabledModelListener); } - /* - * (non-Javadoc) - */ + protected PropertyChangeListener buildEnabledModelListener() { + return new PropertyChangeListener() { + public void propertyChanged(PropertyChangeEvent event) { + if (!styledText.isDisposed()) { + if (((Boolean)event.getNewValue()).booleanValue()) { + updateLinkRange(); + } + else { + clearStyleRange(); + } + } + } + }; + } @Override - protected void initializeLayout(Composite container) { - - handCursor = getShell().getDisplay().getSystemCursor(SWT.CURSOR_HAND); - - styledText = new StyledText(container, SWT.WRAP | SWT.READ_ONLY); + protected Composite addComposite(Composite parent) { + styledText = new StyledText(parent, SWT.WRAP | SWT.READ_ONLY); + SWTTools.controlEnabledState(getEnabledModel(), styledText); styledText.addMouseListener(buildMouseListener()); styledText.addMouseMoveListener(buildMouseMoveListener()); styledText.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + return styledText; + } + + @Override + public Composite getControl() { + return (Composite) super.getControl(); + } + + @Override + protected void initializeLayout(Composite container) { + // see addComposite(Composite) } /** @@ -350,7 +368,7 @@ public abstract class MapAsComposite<T extends JpaNode> extends Pane<T> { clearStyleRange(); updateText(); - if (enabled) { + if (getEnabledModel().getValue().booleanValue()) { updateLinkRange(); } } @@ -411,6 +429,7 @@ public abstract class MapAsComposite<T extends JpaNode> extends Pane<T> { @Override public void dispose() { this.styledText.dispose(); + this.getEnabledModel().removePropertyChangeListener(PropertyValueModel.VALUE, this.enabledModelListener); super.dispose(); } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/MappedByJoiningStrategyPane.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/MappedByJoiningStrategyPane.java index f7eafb7020..b1ea48de79 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/MappedByJoiningStrategyPane.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/MappedByJoiningStrategyPane.java @@ -11,12 +11,14 @@ package org.eclipse.jpt.jpa.ui.internal.details; import org.eclipse.jpt.common.ui.internal.widgets.Pane; import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter; +import org.eclipse.jpt.common.utility.internal.model.value.TransformationPropertyValueModel; import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; import org.eclipse.jpt.common.utility.model.value.ModifiablePropertyValueModel; import org.eclipse.jpt.jpa.core.context.MappedByRelationship; import org.eclipse.jpt.jpa.core.context.MappedByRelationshipStrategy; import org.eclipse.jpt.jpa.core.context.ReadOnlyRelationship; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; /** * Here is the layout of this pane: @@ -54,8 +56,9 @@ public class MappedByJoiningStrategyPane } @Override - protected Composite buildStrategyDetailsComposite(Composite parent) { - return new MappedByPane(this, this.buildMappedByJoiningStrategyHolder(), parent).getControl(); + protected Control buildStrategyDetailsComposite(Composite parent) { + MappedByPane mappedByPane = new MappedByPane(this, this.buildMappedByJoiningStrategyHolder(), buildMappedByRelationshipPaneEnablerHolder(), parent); + return mappedByPane.getControl(); } @Override @@ -91,4 +94,14 @@ public class MappedByJoiningStrategyPane } }; } + + + private TransformationPropertyValueModel<MappedByRelationship, Boolean> buildMappedByRelationshipPaneEnablerHolder() { + return new TransformationPropertyValueModel<MappedByRelationship, Boolean>(getSubjectHolder()) { + @Override + protected Boolean transform_(MappedByRelationship v) { + return Boolean.valueOf(!v.isVirtual()); + } + }; + } } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/MappedByPane.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/MappedByPane.java index 0ca99971ea..85b9929183 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/MappedByPane.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/MappedByPane.java @@ -11,6 +11,7 @@ package org.eclipse.jpt.jpa.ui.internal.details; import org.eclipse.jpt.common.core.internal.utility.ICUStringCollator; import org.eclipse.jpt.common.ui.internal.widgets.Pane; +import org.eclipse.jpt.common.utility.internal.StringConverter; import org.eclipse.jpt.common.utility.internal.model.value.CollectionAspectAdapter; import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter; import org.eclipse.jpt.common.utility.internal.model.value.SortedListValueModelAdapter; @@ -50,18 +51,24 @@ public class MappedByPane public MappedByPane( Pane<?> parentPane, PropertyValueModel<MappedByRelationshipStrategy> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent) { - super(parentPane, subjectHolder, parent); + super(parentPane, subjectHolder, enabledModel, parent); } - + @Override + protected Composite addComposite(Composite container) { + return this.addSubPane(container, 2, 0, 0, 0, 0); + } + @Override protected void initializeLayout(Composite container) { - addLabeledEditableCombo( + this.addLabel(container, JptUiDetailsMessages.Joining_mappedByAttributeLabel); + this.addEditableCombo( container, - JptUiDetailsMessages.Joining_mappedByAttributeLabel, buildCandidateAttributesListValueModel(), buildAttributePropertyValueModel(), + StringConverter.Default.<String>instance(), JpaHelpContextIds.MAPPING_MAPPED_BY); } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/NamedNativeQueryPropertyComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/NamedNativeQueryPropertyComposite.java index 6730b90537..d025568ce5 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/NamedNativeQueryPropertyComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/NamedNativeQueryPropertyComposite.java @@ -17,7 +17,11 @@ import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; import org.eclipse.jpt.common.utility.model.value.ModifiablePropertyValueModel; import org.eclipse.jpt.jpa.core.context.NamedNativeQuery; import org.eclipse.jpt.jpa.core.context.Query; +import org.eclipse.swt.SWT; +import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Label; +import org.eclipse.ui.forms.widgets.Hyperlink; /** * Here the layout of this pane: @@ -67,9 +71,9 @@ public class NamedNativeQueryPropertyComposite extends Pane<NamedNativeQuery> super(parentPane, subjectHolder, parent); } - private ClassChooserPane<NamedNativeQuery> addClassChooser(Composite container) { + private ClassChooserPane<NamedNativeQuery> addResultClassChooser(Composite container, Hyperlink hyperlink) { - return new ClassChooserPane<NamedNativeQuery>(this, container) { + return new ClassChooserPane<NamedNativeQuery>(this, container, hyperlink) { @Override protected ModifiablePropertyValueModel<String> buildTextHolder() { @@ -95,11 +99,6 @@ public class NamedNativeQueryPropertyComposite extends Pane<NamedNativeQuery> } @Override - protected String getLabelText() { - return JptUiDetailsMessages.NamedNativeQueryPropertyComposite_resultClass; - } - - @Override protected IJavaProject getJavaProject() { return getSubject().getJpaProject().getJavaProject(); } @@ -136,38 +135,31 @@ public class NamedNativeQueryPropertyComposite extends Pane<NamedNativeQuery> } @Override - public void enableWidgets(boolean enabled) { - super.enableWidgets(enabled); - this.resultClassChooserPane.enableWidgets(enabled); + protected Composite addComposite(Composite container) { + return this.addSubPane(container, 2, 0, 0, 0, 0); } @Override protected void initializeLayout(Composite container) { - - addLabeledText( - container, - JptUiDetailsMessages.NamedQueryComposite_nameTextLabel, - buildNameTextHolder()); + // Name widgets + this.addLabel(container, JptUiDetailsMessages.NamedQueryComposite_nameTextLabel); + this.addText(container, buildNameTextHolder()); // Result class chooser - this.resultClassChooserPane = addClassChooser(container); + Hyperlink resultClassHyperlink = this.addHyperlink(container, JptUiDetailsMessages.NamedNativeQueryPropertyComposite_resultClass); + this.resultClassChooserPane = this.addResultClassChooser(container, resultClassHyperlink); // Query text area - addLabeledMultiLineText( - container, - JptUiDetailsMessages.NamedNativeQueryPropertyComposite_query, - buildQueryHolder(), - 4, - null - ); - - // Query Hints pane - container = addTitledGroup( - addSubPane(container, 5), - JptUiDetailsMessages.NamedNativeQueryPropertyComposite_queryHintsGroupBox - ); - - new QueryHintsComposite(this, container); + Label queryLabel = this.addLabel(container, JptUiDetailsMessages.NamedNativeQueryPropertyComposite_query); + GridData gridData = new GridData(); + gridData.verticalAlignment = SWT.TOP; + queryLabel.setLayoutData(gridData); + this.addMultiLineText(container, buildQueryHolder(), 4, null); + + QueryHintsComposite hintsComposite = new QueryHintsComposite(this, container); + gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.horizontalSpan = 2; + hintsComposite.getControl().setLayoutData(gridData); } protected ModifiablePropertyValueModel<String> buildNameTextHolder() { diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/NamedQueryPropertyComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/NamedQueryPropertyComposite.java index e4ce0e52e0..bf14374c78 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/NamedQueryPropertyComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/NamedQueryPropertyComposite.java @@ -16,7 +16,10 @@ import org.eclipse.jpt.common.utility.model.value.ModifiablePropertyValueModel; import org.eclipse.jpt.jpa.core.context.NamedQuery; import org.eclipse.jpt.jpa.core.context.Query; import org.eclipse.jpt.jpa.ui.internal.jpql.JpaJpqlContentProposalProvider; +import org.eclipse.swt.SWT; +import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Label; /** * Here's the layout of this pane: @@ -92,17 +95,21 @@ public class NamedQueryPropertyComposite<T extends NamedQuery> extends Pane<T> { }; } - /** - * {@inheritDoc} - */ @Override - protected void initializeLayout(Composite container) { + protected Composite addComposite(Composite container) { + return this.addSubPane(container, 2, 0, 0, 0, 0); + } + @Override + protected void initializeLayout(Composite container) { // Name widgets - addLabeledText( - container, - JptUiDetailsMessages.NamedQueryComposite_nameTextLabel, - buildNameTextHolder()); + this.addLabel(container, JptUiDetailsMessages.NamedQueryComposite_nameTextLabel); + this.addText(container, buildNameTextHolder()); + + Label queryLabel = this.addLabel(container, JptUiDetailsMessages.NamedQueryPropertyComposite_query); + GridData gridData = new GridData(); + gridData.verticalAlignment = SWT.TOP; + queryLabel.setLayoutData(gridData); JpaJpqlContentProposalProvider provider = new JpaJpqlContentProposalProvider( container, @@ -110,31 +117,20 @@ public class NamedQueryPropertyComposite<T extends NamedQuery> extends Pane<T> { buildQueryHolder() ); - // Query text area - Composite queryWidgets = this.addLabeledComposite( - container, - JptUiDetailsMessages.NamedQueryPropertyComposite_query, - provider.getStyledText() - ); - // Install the content assist icon at the top left of the StyledText. // Note: For some reason, this needs to be done after the StyledText // is added to the labeled composite provider.installControlDecoration(); adjustMultiLineTextLayout( - queryWidgets, 4, provider.getStyledText(), provider.getStyledText().getLineHeight() ); - // Query Hints pane - container = this.addTitledGroup( - addSubPane(container, 5), - JptUiDetailsMessages.NamedQueryPropertyComposite_queryHintsGroupBox - ); - - new QueryHintsComposite(this, container); + QueryHintsComposite hintsComposite = new QueryHintsComposite(this, container); + gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.horizontalSpan = 2; + hintsComposite.getControl().setLayoutData(gridData); } }
\ No newline at end of file diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/OneToManyJoiningStrategyPane.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/OneToManyJoiningStrategyPane.java index c5b3641989..e0f8784272 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/OneToManyJoiningStrategyPane.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/OneToManyJoiningStrategyPane.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2009, 2011 Oracle. All rights reserved. + * Copyright (c) 2009, 2012 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. @@ -51,32 +51,32 @@ public class OneToManyJoiningStrategyPane super(parentPane, subjectHolder, parent); } - - + + @Override + protected Composite addComposite(Composite container) { + return addCollapsibleSection( + container, + JptUiDetailsMessages.Joining_title, + new SimplePropertyValueModel<Boolean>(Boolean.TRUE)); + } + @Override protected void initializeLayout(Composite container) { - Composite composite = addCollapsibleSection( - container, - JptUiDetailsMessages.Joining_title, - new SimplePropertyValueModel<Boolean>(Boolean.TRUE)); - addRadioButton( - composite, + container, JptUiDetailsMessages.Joining_mappedByLabel, MappedByJoiningStrategyPane.buildUsesMappedByJoiningStrategyHolder(getSubjectHolder()), null); - new MappedByJoiningStrategyPane(this, composite); + new MappedByJoiningStrategyPane(this, container); addRadioButton( - composite, + container, JptUiDetailsMessages.Joining_joinTableJoiningLabel, JoinTableJoiningStrategyPane.buildUsesJoinTableJoiningStrategyHolder(getSubjectHolder()), null); - new JoinTableJoiningStrategyPane(this, composite); - - addSubPane(composite, 5); + new JoinTableJoiningStrategyPane(this, container); } } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/OneToManyMappingComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/OneToManyMappingComposite.java index de42ebc0b2..4e5dba0dd3 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/OneToManyMappingComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/OneToManyMappingComposite.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2006, 2011 Oracle. All rights reserved. + * Copyright (c) 2006, 2012 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. @@ -13,7 +13,10 @@ import org.eclipse.jpt.common.ui.WidgetFactory; import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; import org.eclipse.jpt.jpa.core.context.OneToManyMapping; import org.eclipse.jpt.jpa.core.context.OneToManyRelationship; +import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.ui.forms.widgets.Hyperlink; /** * Here the layout of this pane: @@ -48,10 +51,10 @@ import org.eclipse.swt.widgets.Composite; * * @see OneToManyMapping * @see CascadeComposite - * @see FetchTypeComposite + * @see FetchTypeComboViewer * @see JoinTableComposite * @see OrderingComposite - * @see TargetEntityComposite + * @see TargetEntityClassChooser * * @version 2.3 * @since 1.0 @@ -67,16 +70,31 @@ public class OneToManyMappingComposite * @param widgetFactory The factory used to create various common widgets */ public OneToManyMappingComposite(PropertyValueModel<? extends OneToManyMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory) { - super(subjectHolder, parent, widgetFactory); + super(subjectHolder, enabledModel, parent, widgetFactory); } @Override - protected void initializeOneToManySection(Composite container) { - new TargetEntityComposite(this, container); - new FetchTypeComposite(this, container); - new CascadeComposite(this, buildCascadeHolder(), addSubPane(container, 5)); + protected Control initializeOneToManySection(Composite container) { + container = this.addSubPane(container, 2, 0, 0, 0, 0); + + // Target entity widgets + Hyperlink targetEntityHyperlink = this.addHyperlink(container, JptUiDetailsMessages.TargetEntityChooser_label); + new TargetEntityClassChooser(this, container, targetEntityHyperlink); + + // Fetch type widgets + this.addLabel(container, JptUiDetailsMessages.BasicGeneralSection_fetchLabel); + new FetchTypeComboViewer(this, container); + + // Cascade widgets + CascadeComposite cascadeComposite = new CascadeComposite(this, buildCascadeHolder(), container); + GridData gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.horizontalSpan = 2; + cascadeComposite.getControl().setLayoutData(gridData); + + return container; } }
\ No newline at end of file diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/OneToOneJoiningStrategyPane.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/OneToOneJoiningStrategyPane.java index f18f0971cb..70295f3642 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/OneToOneJoiningStrategyPane.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/OneToOneJoiningStrategyPane.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2009, 2011 Oracle. All rights reserved. + * Copyright (c) 2009, 2012 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. @@ -57,40 +57,39 @@ public class OneToOneJoiningStrategyPane super(parentPane, subjectHolder, parent); } - @Override - protected void initializeLayout(Composite container) { - Composite composite = addCollapsibleSection( - container, - JptUiDetailsMessages.Joining_title, - new SimplePropertyValueModel<Boolean>(Boolean.TRUE)); - - + protected Composite addComposite(Composite container) { + return addCollapsibleSection( + container, + JptUiDetailsMessages.Joining_title, + new SimplePropertyValueModel<Boolean>(Boolean.TRUE)); + } + + @Override + protected void initializeLayout(Composite container) { addRadioButton( - composite, + container, JptUiDetailsMessages.Joining_mappedByLabel, MappedByJoiningStrategyPane.buildUsesMappedByJoiningStrategyHolder(getSubjectHolder()), null); - new MappedByJoiningStrategyPane(this, composite); + new MappedByJoiningStrategyPane(this, container); addRadioButton( - composite, + container, JptUiDetailsMessages.Joining_primaryKeyJoinColumnJoiningLabel, PrimaryKeyJoinColumnJoiningStrategyPane.buildUsesPrimaryKeyJoinColumnJoiningStrategyHolder(getSubjectHolder()), null); - new PrimaryKeyJoinColumnJoiningStrategyPane(this, composite); + new PrimaryKeyJoinColumnJoiningStrategyPane(this, container); addRadioButton( - composite, + container, JptUiDetailsMessages.Joining_joinColumnJoiningLabel, JoinColumnJoiningStrategyPane.buildUsesJoinColumnJoiningStrategyHolder(getSubjectHolder()), null); JoinColumnJoiningStrategyPane. - buildJoinColumnJoiningStrategyPaneWithIncludeOverrideCheckBox(this, composite); - - addSubPane(composite, 5); + buildJoinColumnJoiningStrategyPaneWithIncludeOverrideCheckBox(this, container); } } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/OneToOneMappingComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/OneToOneMappingComposite.java index 128da9596e..d99f29afaa 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/OneToOneMappingComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/OneToOneMappingComposite.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2007, 2011 Oracle. All rights reserved. + * Copyright (c) 2007, 2012 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. @@ -13,7 +13,10 @@ import org.eclipse.jpt.common.ui.WidgetFactory; import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; import org.eclipse.jpt.jpa.core.context.OneToOneMapping; import org.eclipse.jpt.jpa.core.context.OneToOneRelationship; +import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.ui.forms.widgets.Hyperlink; /** * Here the layout of this pane: @@ -47,10 +50,10 @@ import org.eclipse.swt.widgets.Composite; * -----------------------------------------------------------------------------</pre> * * @see OneToOneMapping - * @see TargetEntityComposite + * @see TargetEntityClassChooser * @see JoiningStrategyComposite - * @see FetchTypeComposite - * @see OptionalComposite + * @see FetchTypeComboViewer + * @see OptionalTriStateCheckBox * @see CascadeComposite * * @version 2.3 @@ -67,19 +70,37 @@ public class OneToOneMappingComposite * @param widgetFactory The factory used to create various common widgets */ public OneToOneMappingComposite(PropertyValueModel<? extends OneToOneMapping> subjectHolder, - Composite parent, + PropertyValueModel<Boolean> enabledModel, + Composite parent, WidgetFactory widgetFactory) { - super(subjectHolder, parent, widgetFactory); + super(subjectHolder, enabledModel, parent, widgetFactory); } @Override - protected void initializeOneToOneSection(Composite container) { - new TargetEntityComposite(this, container); - new FetchTypeComposite(this, container); - new OptionalComposite(this, container); - new CascadeComposite(this, buildCascadeHolder(), addSubPane(container, 5)); - } + protected Control initializeOneToOneSection(Composite container) { + container = this.addSubPane(container, 2, 0, 0, 0, 0); + + // Target entity widgets + Hyperlink targetEntityHyperlink = this.addHyperlink(container, JptUiDetailsMessages.TargetEntityChooser_label); + new TargetEntityClassChooser(this, container, targetEntityHyperlink); + + // Fetch type widgets + this.addLabel(container, JptUiDetailsMessages.BasicGeneralSection_fetchLabel); + new FetchTypeComboViewer(this, container); + // Optional widgets + OptionalTriStateCheckBox optionalCheckBox = new OptionalTriStateCheckBox(this, container); + GridData gridData = new GridData(); + gridData.horizontalSpan = 2; + optionalCheckBox.getControl().setLayoutData(gridData); + // Cascade widgets + CascadeComposite cascadeComposite = new CascadeComposite(this, buildCascadeHolder(), container); + gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.horizontalSpan = 2; + cascadeComposite.getControl().setLayoutData(gridData); + + return container; + } }
\ No newline at end of file diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/OptionalComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/OptionalTriStateCheckBox.java index ad0d276e37..558ac2b0fa 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/OptionalComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/OptionalTriStateCheckBox.java @@ -11,6 +11,7 @@ package org.eclipse.jpt.jpa.ui.internal.details; import org.eclipse.jpt.common.ui.internal.JptCommonUiMessages; import org.eclipse.jpt.common.ui.internal.widgets.Pane; +import org.eclipse.jpt.common.ui.internal.widgets.TriStateCheckBox; import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter; import org.eclipse.jpt.common.utility.internal.model.value.TransformationPropertyValueModel; import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; @@ -19,6 +20,7 @@ import org.eclipse.jpt.jpa.core.context.OptionalMapping; import org.eclipse.jpt.jpa.ui.internal.JpaHelpContextIds; import org.eclipse.osgi.util.NLS; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; /** * This composite simply shows a tri-state check box for the Optional option. @@ -31,32 +33,45 @@ import org.eclipse.swt.widgets.Composite; * @version 1.0 * @since 2.0 */ -public class OptionalComposite extends Pane<OptionalMapping> +public class OptionalTriStateCheckBox extends Pane<OptionalMapping> { + private TriStateCheckBox checkBox; + /** * Creates a new <code>OptionalComposite</code>. * * @param parentPane The parent container of this one * @param parent The parent container */ - public OptionalComposite(Pane<? extends OptionalMapping> parentPane, + public OptionalTriStateCheckBox(Pane<? extends OptionalMapping> parentPane, Composite parent) { super(parentPane, parent); } @Override + protected boolean addsComposite() { + return false; + } + + @Override + public Control getControl() { + return this.checkBox.getCheckBox(); + } + + @Override protected void initializeLayout(Composite container) { - addTriStateCheckBoxWithDefault( - addSubPane(container, 4), + this.checkBox = this.addTriStateCheckBoxWithDefault( + container, JptUiDetailsMessages.BasicGeneralSection_optionalLabel, - buildOptionalHolder(), + buildSpecifiedOptionalHolder(), buildOptionalStringHolder(), JpaHelpContextIds.MAPPING_OPTIONAL ); } - private ModifiablePropertyValueModel<Boolean> buildOptionalHolder() { + + private ModifiablePropertyValueModel<Boolean> buildSpecifiedOptionalHolder() { return new PropertyAspectAdapter<OptionalMapping, Boolean>(getSubjectHolder(), OptionalMapping.SPECIFIED_OPTIONAL_PROPERTY) { @Override protected Boolean buildValue_() { @@ -83,7 +98,6 @@ public class OptionalComposite extends Pane<OptionalMapping> }; } - private PropertyValueModel<Boolean> buildDefaultOptionalHolder() { return new PropertyAspectAdapter<OptionalMapping, Boolean>( getSubjectHolder(), diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/OrderingComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/OrderingComposite.java index 661e8c2ce0..f98c745132 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/OrderingComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/OrderingComposite.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2007, 2010 Oracle. All rights reserved. + * Copyright (c) 2007, 2012 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. @@ -15,7 +15,9 @@ import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; import org.eclipse.jpt.jpa.core.context.CollectionMapping; import org.eclipse.jpt.jpa.core.context.Orderable; import org.eclipse.jpt.jpa.ui.internal.JpaHelpContextIds; +import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Text; /** * Here the layout of this pane: @@ -68,15 +70,10 @@ public class OrderingComposite extends AbstractOrderingComposite super(subjectHolder, parent, widgetFactory); } - + @Override protected void initializeLayout(Composite container) { PropertyValueModel<Orderable> orderableHolder = buildOrderableHolder(); - - container = addCollapsibleSection( - container, - JptUiDetailsMessages.OrderingComposite_orderingGroup - ); // No Ordering radio button addRadioButton( @@ -103,13 +100,14 @@ public class OrderingComposite extends AbstractOrderingComposite ); // Custom Ordering text field - addText( - addSubPane(container, 0, 16), + Text orderingText = addText( + container, buildSpecifiedOrderByHolder(orderableHolder), JpaHelpContextIds.MAPPING_ORDER_BY, buildCustomOrderingHolder(orderableHolder) ); + GridData gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.horizontalIndent = 16; + orderingText.setLayoutData(gridData); } - - }
\ No newline at end of file diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/PersistentAttributeDetailsPage.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/PersistentAttributeDetailsPage.java index d85bde008b..5fe95fa133 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/PersistentAttributeDetailsPage.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/PersistentAttributeDetailsPage.java @@ -59,8 +59,7 @@ public abstract class PersistentAttributeDetailsPage<A extends ReadOnlyPersisten super(parent, widgetFactory); } - - + @Override protected void initialize() { super.initialize(); @@ -69,11 +68,11 @@ public abstract class PersistentAttributeDetailsPage<A extends ReadOnlyPersisten protected PageBook buildMappingPageBook(Composite parent) { this.mappingPageBook = new PageBook(parent, SWT.NONE); - this.mappingPageBook.showPage(this.addLabel(this.mappingPageBook, "")); //$NON-NLS-1$ GridData gridData = new GridData(); gridData.horizontalAlignment = SWT.FILL; gridData.verticalAlignment = SWT.TOP; + gridData.verticalIndent = 5; gridData.grabExcessHorizontalSpace = true; gridData.grabExcessVerticalSpace = true; @@ -84,7 +83,7 @@ public abstract class PersistentAttributeDetailsPage<A extends ReadOnlyPersisten return this.mappingPageBook; } - + private Transformer<AttributeMapping, Control> buildPaneTransformer() { return new Transformer<AttributeMapping, Control>() { public Control transform(AttributeMapping attributeMapping) { @@ -110,16 +109,19 @@ public abstract class PersistentAttributeDetailsPage<A extends ReadOnlyPersisten return composite; } - + protected JpaComposite buildMappingComposite(PageBook pageBook, String key) { return getJpaPlatformUi().buildAttributeMappingComposite( getSubject().getResourceType(), key, pageBook, buildMappingHolder(key), + getMappingCompositeEnabledModel(), getWidgetFactory()); } - + + protected abstract PropertyValueModel<Boolean> getMappingCompositeEnabledModel(); + private PropertyValueModel<AttributeMapping> buildMappingHolder(final String key) { return new FilteringPropertyValueModel<AttributeMapping>( this.mappingHolder, diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/PersistentAttributeMapAsComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/PersistentAttributeMapAsComposite.java index 67ae271ad7..ba0868c5f5 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/PersistentAttributeMapAsComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/PersistentAttributeMapAsComposite.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2008, 2009 Oracle. All rights reserved. + * Copyright (c) 2008, 2012 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. @@ -12,6 +12,7 @@ package org.eclipse.jpt.jpa.ui.internal.details; import java.util.Collection; import java.util.Iterator; import org.eclipse.jpt.common.ui.internal.widgets.Pane; +import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; import org.eclipse.jpt.jpa.core.MappingKeys; import org.eclipse.jpt.jpa.core.context.AttributeMapping; import org.eclipse.jpt.jpa.core.context.PersistentAttribute; @@ -43,6 +44,14 @@ public class PersistentAttributeMapAsComposite super(parentPane, parent); } + + public PersistentAttributeMapAsComposite( + Pane<? extends ReadOnlyPersistentAttribute> parentPane, + Composite parent, + PropertyValueModel<Boolean> enabledModel) { + + super(parentPane, parent, enabledModel); + } @Override diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/PersistentTypeDetailsPage.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/PersistentTypeDetailsPage.java index e9402d8a6a..11fc61aaaf 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/PersistentTypeDetailsPage.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/PersistentTypeDetailsPage.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2005, 2009 Oracle. All rights reserved. + * Copyright (c) 2005, 2012 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. @@ -64,25 +64,20 @@ public class PersistentTypeDetailsPage extends AbstractJpaDetailsPage<Persistent @Override protected void initializeLayout(Composite container) { - - // Map As composite - new PersistentTypeMapAsComposite( - this, - addSubPane(container, 0, 0, 5, 0) - ); + new PersistentTypeMapAsComposite(this, container); // Type properties page - buildMappingPageBook(container); + this.buildMappingPageBook(container); } protected PageBook buildMappingPageBook(Composite parent) { this.mappingPageBook = new PageBook(parent, SWT.NONE); - this.mappingPageBook.showPage(this.addLabel(this.mappingPageBook, "")); GridData gridData = new GridData(); gridData.horizontalAlignment = SWT.FILL; gridData.verticalAlignment = SWT.TOP; + gridData.verticalIndent = 5; gridData.grabExcessHorizontalSpace = true; gridData.grabExcessVerticalSpace = true; diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/PrimaryKeyJoinColumnsInSecondaryTableComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/PrimaryKeyJoinColumnsInSecondaryTableComposite.java index 3f598db3c0..256a59b58a 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/PrimaryKeyJoinColumnsInSecondaryTableComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/PrimaryKeyJoinColumnsInSecondaryTableComposite.java @@ -14,7 +14,6 @@ import java.util.List; import org.eclipse.jface.viewers.ILabelProvider; import org.eclipse.jface.viewers.LabelProvider; import org.eclipse.jpt.common.ui.WidgetFactory; -import org.eclipse.jpt.common.ui.internal.util.PaneEnabler; import org.eclipse.jpt.common.ui.internal.widgets.AddRemoveListPane; import org.eclipse.jpt.common.ui.internal.widgets.AddRemovePane; import org.eclipse.jpt.common.ui.internal.widgets.Pane; @@ -26,12 +25,13 @@ import org.eclipse.jpt.common.utility.internal.model.value.ListAspectAdapter; import org.eclipse.jpt.common.utility.internal.model.value.ListPropertyValueModelAdapter; import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter; import org.eclipse.jpt.common.utility.internal.model.value.PropertyListValueModelAdapter; -import org.eclipse.jpt.common.utility.internal.model.value.SimplePropertyValueModel; +import org.eclipse.jpt.common.utility.internal.model.value.SimpleCollectionValueModel; import org.eclipse.jpt.common.utility.internal.model.value.TransformationPropertyValueModel; -import org.eclipse.jpt.common.utility.internal.model.value.swing.ObjectListSelectionModel; +import org.eclipse.jpt.common.utility.model.value.CollectionValueModel; import org.eclipse.jpt.common.utility.model.value.ListValueModel; -import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; +import org.eclipse.jpt.common.utility.model.value.ModifiableCollectionValueModel; import org.eclipse.jpt.common.utility.model.value.ModifiablePropertyValueModel; +import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; import org.eclipse.jpt.jpa.core.context.PrimaryKeyJoinColumn; import org.eclipse.jpt.jpa.core.context.ReadOnlyBaseJoinColumn; import org.eclipse.jpt.jpa.core.context.ReadOnlyNamedColumn; @@ -40,8 +40,9 @@ import org.eclipse.jpt.jpa.core.context.ReadOnlySecondaryTable; import org.eclipse.jpt.jpa.core.context.SecondaryTable; import org.eclipse.jpt.jpa.ui.internal.JpaHelpContextIds; import org.eclipse.osgi.util.NLS; +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Group; /** * Here the layout of this pane: @@ -67,7 +68,7 @@ import org.eclipse.swt.widgets.Group; */ public class PrimaryKeyJoinColumnsInSecondaryTableComposite extends Pane<ReadOnlySecondaryTable> { - private ModifiablePropertyValueModel<ReadOnlyPrimaryKeyJoinColumn> joinColumnHolder; + private ModifiableCollectionValueModel<PrimaryKeyJoinColumn> selectedPkJoinColumnsModel; /** * Creates a new <code>PrimaryKeyJoinColumnsInSecondaryTableComposite</code>. @@ -97,16 +98,18 @@ public class PrimaryKeyJoinColumnsInSecondaryTableComposite extends Pane<ReadOnl super(subjectHolder, parent, widgetFactory); } - void addJoinColumn(PrimaryKeyJoinColumnInSecondaryTableStateObject stateObject) { + PrimaryKeyJoinColumn addJoinColumn(PrimaryKeyJoinColumnInSecondaryTableStateObject stateObject) { SecondaryTable secondaryTable = stateObject.getOwner(); int index = secondaryTable.getSpecifiedPrimaryKeyJoinColumnsSize(); PrimaryKeyJoinColumn joinColumn = secondaryTable.addSpecifiedPrimaryKeyJoinColumn(index); stateObject.updateJoinColumn(joinColumn); + + return joinColumn; } - void addPrimaryKeyJoinColumn() { + PrimaryKeyJoinColumn addPrimaryKeyJoinColumn() { PrimaryKeyJoinColumnInSecondaryTableDialog dialog = new PrimaryKeyJoinColumnInSecondaryTableDialog(getShell(), (SecondaryTable) getSubject(), null); @@ -114,8 +117,9 @@ public class PrimaryKeyJoinColumnsInSecondaryTableComposite extends Pane<ReadOnl dialog.setBlockOnOpen(true); dialog.open(); if (dialog.wasConfirmed()) { - addJoinColumn(dialog.getSubject()); + return addJoinColumn(dialog.getSubject()); } + return null; } private PropertyValueModel<Boolean> buildControlBooleanHolder() { @@ -200,10 +204,22 @@ public class PrimaryKeyJoinColumnsInSecondaryTableComposite extends Pane<ReadOnl return new OverrideDefaultJoinColumnHolder(); } - private AddRemovePane.Adapter buildPrimaryKeyJoinColumnAdapter() { - return new AddRemovePane.AbstractAdapter() { - public void addNewItem(ObjectListSelectionModel listSelectionModel) { - addPrimaryKeyJoinColumn(); + private AddRemovePane.Adapter<PrimaryKeyJoinColumn> buildPrimaryKeyJoinColumnAdapter() { + return new AddRemovePane.AbstractAdapter<PrimaryKeyJoinColumn>() { + + public PrimaryKeyJoinColumn addNewItem() { + return addPrimaryKeyJoinColumn(); + } + + @Override + public PropertyValueModel<Boolean> buildRemoveButtonEnabledModel(CollectionValueModel<PrimaryKeyJoinColumn> selectedItemsModel) { + //enable the remove button only when 1 item is selected, same as the optional button + return this.buildSingleSelectedItemEnabledModel(selectedItemsModel); + } + + public void removeSelectedItems(CollectionValueModel<PrimaryKeyJoinColumn> selectedItemsModel) { + PrimaryKeyJoinColumn pkJoinColumn = selectedItemsModel.iterator().next(); + ((SecondaryTable) getSubject()).removeSpecifiedPrimaryKeyJoinColumn(pkJoinColumn); } @Override @@ -217,18 +233,14 @@ public class PrimaryKeyJoinColumnsInSecondaryTableComposite extends Pane<ReadOnl } @Override - public void optionOnSelection(ObjectListSelectionModel listSelectionModel) { - editPrimaryKeyJoinColumn(listSelectionModel); - } - - public void removeSelectedItems(ObjectListSelectionModel listSelectionModel) { - removePrimaryKeyJoinColumn(listSelectionModel); + public void optionOnSelection(CollectionValueModel<PrimaryKeyJoinColumn> selectedItemsModel) { + editPrimaryKeyJoinColumn(selectedItemsModel.iterator().next()); } }; } - private ModifiablePropertyValueModel<ReadOnlyPrimaryKeyJoinColumn> buildPrimaryKeyJoinColumnHolder() { - return new SimplePropertyValueModel<ReadOnlyPrimaryKeyJoinColumn>(); + private ModifiableCollectionValueModel<PrimaryKeyJoinColumn> buildSelectedPkJoinColumnsModel() { + return new SimpleCollectionValueModel<PrimaryKeyJoinColumn>(); } private ListValueModel<ReadOnlyPrimaryKeyJoinColumn> buildPrimaryKeyJoinColumnsListHolder() { @@ -262,9 +274,7 @@ public class PrimaryKeyJoinColumnsInSecondaryTableComposite extends Pane<ReadOnl }; } - void editPrimaryKeyJoinColumn(ObjectListSelectionModel listSelectionModel) { - - PrimaryKeyJoinColumn joinColumn = (PrimaryKeyJoinColumn) listSelectionModel.selectedValue(); + void editPrimaryKeyJoinColumn(PrimaryKeyJoinColumn joinColumn) { PrimaryKeyJoinColumnInSecondaryTableDialog dialog = new PrimaryKeyJoinColumnInSecondaryTableDialog( @@ -287,57 +297,44 @@ public class PrimaryKeyJoinColumnsInSecondaryTableComposite extends Pane<ReadOnl @Override protected void initialize() { super.initialize(); - joinColumnHolder = buildPrimaryKeyJoinColumnHolder(); + this.selectedPkJoinColumnsModel = buildSelectedPkJoinColumnsModel(); } @Override - protected void initializeLayout(Composite container) { - - // Primary Key Join Columns group pane - Group groupPane = addTitledGroup( - container, + protected Composite addComposite(Composite parent) { + return addTitledGroup( + parent, JptUiDetailsMessages.PrimaryKeyJoinColumnsComposite_primaryKeyJoinColumn ); + } + @Override + protected void initializeLayout(Composite container) { // Override Default check box - addCheckBox( - addSubPane(groupPane, 8), + Button overrideDefaultCheckBox = addCheckBox( + container, JptUiDetailsMessages.PrimaryKeyJoinColumnsComposite_overrideDefaultPrimaryKeyJoinColumns, buildOverrideDefaultJoinColumnHolder(), null, buildControlBooleanHolder() ); + GridData gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.verticalIndent = 8; + overrideDefaultCheckBox.setLayoutData(gridData); // Primary Key Join Columns list pane - AddRemoveListPane<ReadOnlySecondaryTable> joinColumnsPane = new AddRemoveListPane<ReadOnlySecondaryTable>( + new AddRemoveListPane<ReadOnlySecondaryTable, PrimaryKeyJoinColumn>( this, - groupPane, + container, buildPrimaryKeyJoinColumnAdapter(), buildPrimaryKeyJoinColumnsListModel(), - joinColumnHolder, + this.selectedPkJoinColumnsModel, buildJoinColumnsListLabelProvider(), - JpaHelpContextIds.MAPPING_JOIN_TABLE_COLUMNS - ); - - installPrimaryKeyJoinColumnListPaneEnabler(joinColumnsPane); - } - - private void installPrimaryKeyJoinColumnListPaneEnabler(AddRemoveListPane<ReadOnlySecondaryTable> pkJoinColumnListPane) { - - new PaneEnabler( buildOverrideDefaultJoinColumnHolder(), - pkJoinColumnListPane + JpaHelpContextIds.MAPPING_JOIN_TABLE_COLUMNS ); } - void removePrimaryKeyJoinColumn(ObjectListSelectionModel listSelectionModel) { - int[] selectedIndices = listSelectionModel.selectedIndices(); - - for (int index = selectedIndices.length; --index >= 0; ) { - ((SecondaryTable) getSubject()).removeSpecifiedPrimaryKeyJoinColumn(selectedIndices[index]); - } - } - void updatePrimaryKeyJoinColumns(boolean selected) { if (this.isPopulating()) { return; @@ -351,7 +348,6 @@ public class PrimaryKeyJoinColumnsInSecondaryTableComposite extends Pane<ReadOnl if (selected) { if (secondaryTable.getDefaultPrimaryKeyJoinColumn() != null) { //TODO can this be null? secondaryTable.convertDefaultPrimaryKeyJoinColumnsToSpecified(); - this.joinColumnHolder.setValue(secondaryTable.getSpecifiedPrimaryKeyJoinColumn(0)); } } else { secondaryTable.clearSpecifiedPrimaryKeyJoinColumns(); diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/QueriesComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/QueriesComposite.java index aff96222b2..203ffb99c8 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/QueriesComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/QueriesComposite.java @@ -11,6 +11,7 @@ package org.eclipse.jpt.jpa.ui.internal.details; import java.util.ArrayList; import java.util.List; +import javax.swing.text.html.parser.Entity; import org.eclipse.jface.viewers.ILabelProvider; import org.eclipse.jface.viewers.LabelProvider; import org.eclipse.jface.window.Window; @@ -22,15 +23,16 @@ import org.eclipse.jpt.common.utility.internal.CollectionTools; import org.eclipse.jpt.common.utility.internal.Transformer; import org.eclipse.jpt.common.utility.internal.iterables.ListIterable; import org.eclipse.jpt.common.utility.internal.iterables.SuperListIterableWrapper; +import org.eclipse.jpt.common.utility.internal.model.value.CollectionPropertyValueModelAdapter; import org.eclipse.jpt.common.utility.internal.model.value.CompositeListValueModel; import org.eclipse.jpt.common.utility.internal.model.value.ItemPropertyListValueModelAdapter; import org.eclipse.jpt.common.utility.internal.model.value.ListAspectAdapter; -import org.eclipse.jpt.common.utility.internal.model.value.SimplePropertyValueModel; +import org.eclipse.jpt.common.utility.internal.model.value.SimpleCollectionValueModel; import org.eclipse.jpt.common.utility.internal.model.value.TransformationPropertyValueModel; -import org.eclipse.jpt.common.utility.internal.model.value.swing.ObjectListSelectionModel; +import org.eclipse.jpt.common.utility.model.value.CollectionValueModel; import org.eclipse.jpt.common.utility.model.value.ListValueModel; +import org.eclipse.jpt.common.utility.model.value.ModifiableCollectionValueModel; import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; -import org.eclipse.jpt.common.utility.model.value.ModifiablePropertyValueModel; import org.eclipse.jpt.jpa.core.context.NamedNativeQuery; import org.eclipse.jpt.jpa.core.context.NamedQuery; import org.eclipse.jpt.jpa.core.context.Query; @@ -74,10 +76,11 @@ import org.eclipse.ui.part.PageBook; */ public class QueriesComposite extends Pane<QueryContainer> { - private AddRemoveListPane<QueryContainer> listPane; - NamedNativeQueryPropertyComposite namedNativeQueryPane; - Pane<? extends NamedQuery> namedQueryPane; - private ModifiablePropertyValueModel<Query> queryHolder; + Pane<? extends NamedNativeQuery> namedNativeQueryPane; //lazy initialized to avoid unnecessary handles + Pane<? extends NamedQuery> namedQueryPane; //lazy initialized to avoid unnecessary handles + + private ModifiableCollectionValueModel<Query> selectedQueriesModel; + private PropertyValueModel<Query> selectedQueryModel; public QueriesComposite( @@ -85,20 +88,78 @@ public class QueriesComposite extends Pane<QueryContainer> PropertyValueModel<? extends QueryContainer> subjectHolder, Composite parent) { - super(parentPane, subjectHolder, parent, false); + super(parentPane, subjectHolder, parent); + } + + @Override + protected void initialize() { + super.initialize(); + this.selectedQueriesModel = this.buildSelectedQueriesModel(); + this.selectedQueryModel = this.buildSelectedQueryModel(this.selectedQueriesModel); + } + + private ModifiableCollectionValueModel<Query> buildSelectedQueriesModel() { + return new SimpleCollectionValueModel<Query>(); + } + + private PropertyValueModel<Query> buildSelectedQueryModel(CollectionValueModel<Query> selectedQueriesModel) { + return new CollectionPropertyValueModelAdapter<Query, Query>(selectedQueriesModel) { + @Override + protected Query buildValue() { + if (this.collectionModel.size() == 1) { + return this.collectionModel.iterator().next(); + } + return null; + } + }; + } + + protected PropertyValueModel<Query> getSelectedQueryModel() { + return this.selectedQueryModel; + } + + @Override + protected void initializeLayout(Composite container) { + + // List pane + this.addListPane(container); + + // Property pane + PageBook pageBook = new PageBook(container, SWT.NULL); + pageBook.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + + installPaneSwitcher(pageBook); } + + private AddRemoveListPane<QueryContainer, Query> addListPane(Composite container) { - void addQuery() { - addQueryFromDialog(buildAddQueryDialog()); + return new AddRemoveListPane<QueryContainer, Query>( + this, + container, + buildQueriesAdapter(), + buildDisplayableQueriesListHolder(), + this.selectedQueriesModel, + buildQueriesListLabelProvider(), + JpaHelpContextIds.MAPPING_NAMED_QUERIES + ); + } + + + private void installPaneSwitcher(PageBook pageBook) { + new ControlSwitcher(this.getSelectedQueryModel(), this.buildPaneTransformer(pageBook), pageBook); + } + + Query addQuery() { + return addQueryFromDialog(buildAddQueryDialog()); } protected AddQueryDialog buildAddQueryDialog() { return new AddQueryDialog(getShell(), this.getSubject().getPersistenceUnit()); } - protected void addQueryFromDialog(AddQueryDialog dialog) { + protected Query addQueryFromDialog(AddQueryDialog dialog) { if (dialog.open() != Window.OK) { - return; + return null; } String queryType = dialog.getQueryType(); Query query; @@ -112,7 +173,7 @@ public class QueriesComposite extends Pane<QueryContainer> throw new IllegalArgumentException(); } query.setName(dialog.getName()); - this.getQueryHolder().setValue(query);//so that it gets selected in the List for the user to edit + return query; } private ListValueModel<Query> buildDisplayableQueriesListHolder() { @@ -121,19 +182,6 @@ public class QueriesComposite extends Pane<QueryContainer> Query.NAME_PROPERTY ); } - - private AddRemoveListPane<QueryContainer> addListPane(Composite container) { - - return new AddRemoveListPane<QueryContainer>( - this, - container, - buildQueriesAdapter(), - buildDisplayableQueriesListHolder(), - this.getQueryHolder(), - buildQueriesListLabelProvider(), - JpaHelpContextIds.MAPPING_NAMED_QUERIES - ); - } private ListValueModel<NamedNativeQuery> buildNamedNativeQueriesListHolder() { return new ListAspectAdapter<QueryContainer, NamedNativeQuery>( @@ -152,8 +200,8 @@ public class QueriesComposite extends Pane<QueryContainer> }; } - private PropertyValueModel<NamedNativeQuery> buildNamedNativeQueryHolder() { - return new TransformationPropertyValueModel<Query, NamedNativeQuery>(this.getQueryHolder()) { + private PropertyValueModel<NamedNativeQuery> buildSelectedNamedNativeQueryModel() { + return new TransformationPropertyValueModel<Query, NamedNativeQuery>(this.getSelectedQueryModel()) { @Override protected NamedNativeQuery transform_(Query value) { return (value instanceof NamedNativeQuery) ? (NamedNativeQuery) value : null; @@ -178,8 +226,8 @@ public class QueriesComposite extends Pane<QueryContainer> }; } - private PropertyValueModel<NamedQuery> buildNamedQueryHolder() { - return new TransformationPropertyValueModel<Query, NamedQuery>(this.getQueryHolder()) { + private PropertyValueModel<NamedQuery> buildSelectedNamedQueryModel() { + return new TransformationPropertyValueModel<Query, NamedQuery>(this.getSelectedQueryModel()) { @Override protected NamedQuery transform_(Query value) { return (value instanceof NamedQuery) ? (NamedQuery) value : null; @@ -187,7 +235,7 @@ public class QueriesComposite extends Pane<QueryContainer> }; } - private Transformer<Query, Control> buildPaneTransformer() { + private Transformer<Query, Control> buildPaneTransformer(final PageBook pageBook) { return new Transformer<Query, Control>() { public Control transform(Query query) { @@ -196,30 +244,36 @@ public class QueriesComposite extends Pane<QueryContainer> } if (query instanceof NamedNativeQuery) { - return QueriesComposite.this.namedNativeQueryPane.getControl(); + return QueriesComposite.this.getNamedNativeQueryPropertyComposite(pageBook).getControl(); } - return QueriesComposite.this.namedQueryPane.getControl(); + return QueriesComposite.this.getNamedQueryPropertyComposite(pageBook).getControl(); } }; } - private Adapter buildQueriesAdapter() { + private Adapter<Query> buildQueriesAdapter() { - return new AddRemoveListPane.AbstractAdapter() { + return new AddRemoveListPane.AbstractAdapter<Query>() { - public void addNewItem(ObjectListSelectionModel listSelectionModel) { - addQuery(); + public Query addNewItem() { + return addQuery(); } - public void removeSelectedItems(ObjectListSelectionModel listSelectionModel) { - for (Object item : listSelectionModel.selectedValues()) { - if (item instanceof NamedQuery) { - getSubject().removeNamedQuery((NamedQuery) item); - } - else { - getSubject().removeNamedNativeQuery((NamedNativeQuery) item); - } + @Override + public PropertyValueModel<Boolean> buildRemoveButtonEnabledModel(CollectionValueModel<Query> selectedItemsModel) { + //enable the remove button only when 1 item is selected, same as the optional button + return this.buildSingleSelectedItemEnabledModel(selectedItemsModel); + } + + public void removeSelectedItems(CollectionValueModel<Query> selectedItemsModel) { + //assume only 1 item since remove button is disabled otherwise + Query item = selectedItemsModel.iterator().next(); + if (item instanceof NamedQuery) { + getSubject().removeNamedQuery((NamedQuery) item); + } + else { + getSubject().removeNamedNativeQuery((NamedNativeQuery) item); } } }; @@ -257,58 +311,33 @@ public class QueriesComposite extends Pane<QueryContainer> }; } - private ModifiablePropertyValueModel<Query> buildQueryHolder() { - return new SimplePropertyValueModel<Query>(); - } - - @Override - public void enableWidgets(boolean enabled) { - super.enableWidgets(enabled); - this.listPane.enableWidgets(enabled); - } - - @Override - protected void initialize() { - super.initialize(); - this.queryHolder = buildQueryHolder(); + protected Pane<? extends NamedQuery> getNamedQueryPropertyComposite(PageBook pageBook) { + if (this.namedQueryPane == null) { + this.namedQueryPane = this.buildNamedQueryPropertyComposite(pageBook); + } + return this.namedQueryPane; } - @Override - protected void initializeLayout(Composite container) { - - // List pane - this.listPane = this.addListPane(container); - - // Property pane - PageBook pageBook = new PageBook(container, SWT.NULL); - pageBook.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); - - // Named Query property pane - this.namedQueryPane = this.buildNamedQueryPropertyComposite(pageBook); - - // Named Native Query property pane - this.namedNativeQueryPane = new NamedNativeQueryPropertyComposite( + protected Pane<? extends NamedQuery> buildNamedQueryPropertyComposite(PageBook pageBook) { + return new NamedQueryPropertyComposite<NamedQuery>( this, - this.buildNamedNativeQueryHolder(), + this.buildSelectedNamedQueryModel(), pageBook ); - - installPaneSwitcher(pageBook); } - protected Pane<? extends NamedQuery> buildNamedQueryPropertyComposite(PageBook pageBook) { - return new NamedQueryPropertyComposite<NamedQuery>( + protected Pane<? extends NamedNativeQuery> getNamedNativeQueryPropertyComposite(PageBook pageBook) { + if (this.namedNativeQueryPane == null) { + this.namedNativeQueryPane = this.buildNamedNativeQueryPropertyComposite(pageBook); + } + return this.namedNativeQueryPane; + } + + protected Pane<? extends NamedNativeQuery> buildNamedNativeQueryPropertyComposite(PageBook pageBook) { + return new NamedNativeQueryPropertyComposite( this, - this.buildNamedQueryHolder(), + this.buildSelectedNamedNativeQueryModel(), pageBook ); } - - private void installPaneSwitcher(PageBook pageBook) { - new ControlSwitcher(this.getQueryHolder(), this.buildPaneTransformer(), pageBook); - } - - protected ModifiablePropertyValueModel<Query> getQueryHolder() { - return queryHolder; - } }
\ No newline at end of file diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/QueryHintsComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/QueryHintsComposite.java index b3bf9a35ee..d19a0fd244 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/QueryHintsComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/QueryHintsComposite.java @@ -17,20 +17,19 @@ import org.eclipse.jface.viewers.LabelProvider; import org.eclipse.jface.viewers.TableViewer; import org.eclipse.jface.viewers.TextCellEditor; import org.eclipse.jpt.common.ui.internal.swt.ColumnAdapter; -import org.eclipse.jpt.common.ui.internal.util.PaneEnabler; +import org.eclipse.jpt.common.ui.internal.widgets.AddRemovePane.Adapter; import org.eclipse.jpt.common.ui.internal.widgets.AddRemoveTablePane; import org.eclipse.jpt.common.ui.internal.widgets.Pane; -import org.eclipse.jpt.common.ui.internal.widgets.AddRemovePane.Adapter; import org.eclipse.jpt.common.utility.internal.iterables.ListIterable; import org.eclipse.jpt.common.utility.internal.iterables.SuperListIterableWrapper; import org.eclipse.jpt.common.utility.internal.model.value.ListAspectAdapter; import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter; -import org.eclipse.jpt.common.utility.internal.model.value.SimplePropertyValueModel; -import org.eclipse.jpt.common.utility.internal.model.value.TransformationPropertyValueModel; -import org.eclipse.jpt.common.utility.internal.model.value.swing.ObjectListSelectionModel; +import org.eclipse.jpt.common.utility.internal.model.value.SimpleCollectionValueModel; +import org.eclipse.jpt.common.utility.model.value.CollectionValueModel; import org.eclipse.jpt.common.utility.model.value.ListValueModel; -import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; +import org.eclipse.jpt.common.utility.model.value.ModifiableCollectionValueModel; import org.eclipse.jpt.common.utility.model.value.ModifiablePropertyValueModel; +import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; import org.eclipse.jpt.jpa.core.context.NamedQuery; import org.eclipse.jpt.jpa.core.context.Query; import org.eclipse.jpt.jpa.core.context.QueryHint; @@ -58,7 +57,7 @@ import org.eclipse.swt.widgets.TableItem; @SuppressWarnings("nls") public class QueryHintsComposite extends Pane<Query> { - private ModifiablePropertyValueModel<QueryHint> queryHintHolder; + private ModifiableCollectionValueModel<QueryHint> selectedQueryHintsModel; /** * Creates a new <code>QueryHintsComposite</code>. @@ -72,33 +71,30 @@ public class QueryHintsComposite extends Pane<Query> super(parentPane, container); } - private PropertyValueModel<Boolean> buildPaneEnableHolder() { - return new TransformationPropertyValueModel<Query, Boolean>(getSubjectHolder()) { - @Override - protected Boolean transform(Query query) { - return (query != null); + private Adapter<QueryHint> buildQueryHintAdapter() { + return new AddRemoveTablePane.AbstractAdapter<QueryHint>() { + + public QueryHint addNewItem() { + return getSubject().addHint(getSubject().getHintsSize()); } - }; - } - private Adapter buildQueryHintAdapter() { - return new AddRemoveTablePane.AbstractAdapter() { - public void addNewItem(ObjectListSelectionModel listSelectionModel) { - QueryHint queryHint = getSubject().addHint(getSubject().getHintsSize()); - queryHintHolder.setValue(queryHint); + @Override + public PropertyValueModel<Boolean> buildRemoveButtonEnabledModel(CollectionValueModel<QueryHint> selectedItemsModel) { + //enable the remove button only when 1 item is selected, same as the optional button + return this.buildSingleSelectedItemEnabledModel(selectedItemsModel); } - public void removeSelectedItems(ObjectListSelectionModel listSelectionModel) { - for (Object item : listSelectionModel.selectedValues()) { - getSubject().removeHint((QueryHint) item); - } + public void removeSelectedItems(CollectionValueModel<QueryHint> selectedItemsModel) { + //assume only 1 item since remove button is disabled otherwise + QueryHint hint = selectedItemsModel.iterator().next(); + getSubject().removeHint(hint); } }; } - private ModifiablePropertyValueModel<QueryHint> buildQueryHintHolder() { - return new SimplePropertyValueModel<QueryHint>(); - }; + private ModifiableCollectionValueModel<QueryHint> buildSelectedQueryHintsModel() { + return new SimpleCollectionValueModel<QueryHint>(); + } private ITableLabelProvider buildQueryHintLabelProvider() { return new TableLabelProvider(); @@ -118,27 +114,23 @@ public class QueryHintsComposite extends Pane<Query> }; } - /* - * (non-Javadoc) - */ @Override protected void initialize() { super.initialize(); - queryHintHolder = buildQueryHintHolder(); + this.selectedQueryHintsModel = buildSelectedQueryHintsModel(); } - /* - * (non-Javadoc) - */ @Override - protected void initializeLayout(Composite container) { - - TablePane tablePane = new TablePane(container); - installPaneEnabler(tablePane); + protected Composite addComposite(Composite parent) { + return this.addTitledGroup( + parent, + JptUiDetailsMessages.NamedQueryPropertyComposite_queryHintsGroupBox + ); } - private PaneEnabler installPaneEnabler(TablePane tablePane) { - return new PaneEnabler(buildPaneEnableHolder(), tablePane); + @Override + protected void initializeLayout(Composite container) { + new TablePane(container); } private static class QueryHintColumnAdapter implements ColumnAdapter<QueryHint> { @@ -236,14 +228,14 @@ public class QueryHintsComposite extends Pane<Query> } } - private class TablePane extends AddRemoveTablePane<Query> { + private class TablePane extends AddRemoveTablePane<Query, QueryHint> { private TablePane(Composite parent) { super(QueryHintsComposite.this, parent, buildQueryHintAdapter(), buildQueryHintListHolder(), - queryHintHolder, + QueryHintsComposite.this.selectedQueryHintsModel, buildQueryHintLabelProvider()); } @@ -301,7 +293,7 @@ public class QueryHintsComposite extends Pane<Query> } @Override - protected ColumnAdapter<?> buildColumnAdapter() { + protected ColumnAdapter<QueryHint> buildColumnAdapter() { return new QueryHintColumnAdapter(); } @@ -314,9 +306,9 @@ public class QueryHintsComposite extends Pane<Query> @Override protected void initializeMainComposite(Composite container, - Adapter adapter, + Adapter<QueryHint> adapter, ListValueModel<?> listHolder, - ModifiablePropertyValueModel<?> selectedItemHolder, + ModifiableCollectionValueModel<QueryHint> selectedItemsModel, IBaseLabelProvider labelProvider, String helpId) { @@ -324,7 +316,7 @@ public class QueryHintsComposite extends Pane<Query> container, adapter, listHolder, - selectedItemHolder, + selectedItemsModel, labelProvider, helpId ); diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/ReferenceTableComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/ReferenceTableComposite.java index 54eb77426d..396c296539 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/ReferenceTableComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/ReferenceTableComposite.java @@ -58,9 +58,18 @@ public abstract class ReferenceTableComposite<T extends ReadOnlyReferenceTable> PropertyValueModel<? extends T> subjectHolder, Composite parent) { - super(parentPane, subjectHolder, parent, false); + super(parentPane, subjectHolder, parent); } + protected ReferenceTableComposite( + Pane<?> parentPane, + PropertyValueModel<? extends T> subjectHolder, + PropertyValueModel<Boolean> enabledModel, + Composite parent) { + + super(parentPane, subjectHolder, enabledModel, parent); +} + /** * Creates a new <code>ReferenceTableComposite</code>. * @@ -76,11 +85,11 @@ public abstract class ReferenceTableComposite<T extends ReadOnlyReferenceTable> } - protected void installJoinColumnsPaneEnabler(JoinColumnsComposite<T> pane) { - pane.installJoinColumnsPaneEnabler(new JoinColumnPaneEnablerHolder()); + protected PropertyValueModel<Boolean> buildJoinColumnsEnabledModel() { + return new JoinColumnsEnabledModel(); } - void addJoinColumn(T referenceTable) { + JoinColumn addJoinColumn(T referenceTable) { JoinColumnInReferenceTableDialog dialog = new JoinColumnInReferenceTableDialog(getShell(), referenceTable, null); @@ -88,18 +97,15 @@ public abstract class ReferenceTableComposite<T extends ReadOnlyReferenceTable> dialog.setBlockOnOpen(true); dialog.open(); if (dialog.wasConfirmed()) { - addJoinColumnFromDialog(dialog.getSubject()); + return addJoinColumnFromDialog(dialog.getSubject()); } + return null; } - void addJoinColumnFromDialog(JoinColumnInReferenceTableStateObject stateObject) { + JoinColumn addJoinColumnFromDialog(JoinColumnInReferenceTableStateObject stateObject) { JoinColumn joinColumn = ((ReferenceTable) getSubject()).addSpecifiedJoinColumn(); stateObject.updateJoinColumn(joinColumn); - this.setSelectedJoinColumn(joinColumn); - } - - private void setSelectedJoinColumn(JoinColumn joinColumn) { - this.joinColumnsComposite.setSelectedJoinColumn(joinColumn); + return joinColumn; } protected JoinColumnsProvider buildJoinColumnsEditor() { @@ -124,11 +130,7 @@ public abstract class ReferenceTableComposite<T extends ReadOnlyReferenceTable> }; } - protected Composite addPane(Composite container, int groupBoxMargin) { - return addSubPane(container, 0, groupBoxMargin, 10, groupBoxMargin); - } - - protected TableCombo<T> addTableCombo(Composite container) { + protected TableCombo<T> addTableCombo(Composite container, final String helpId) { return new TableCombo<T>(this, container) { @@ -179,10 +181,20 @@ public abstract class ReferenceTableComposite<T extends ReadOnlyReferenceTable> ReadOnlyReferenceTable table = this.getSubject(); return (table instanceof ReferenceTable) ? (ReferenceTable) table : null; } + + @Override + protected String getHelpId() { + return helpId; + } + + @Override + public String toString() { + return "ReferenceTableComposite.tableCombo"; //$NON-NLS-1$ + } }; } - protected SchemaCombo<T> addSchemaCombo(Composite container) { + protected SchemaCombo<T> addSchemaCombo(Composite container, final String helpId) { return new SchemaCombo<T>(this, container) { @@ -229,10 +241,20 @@ public abstract class ReferenceTableComposite<T extends ReadOnlyReferenceTable> ReadOnlyReferenceTable table = this.getSubject(); return (table instanceof ReferenceTable) ? (ReferenceTable) table : null; } + + @Override + protected String getHelpId() { + return helpId; + } + + @Override + public String toString() { + return "ReferenceTableComposite.schemaCombo"; //$NON-NLS-1$ + } }; } - protected CatalogCombo<T> addCatalogCombo(Composite container) { + protected CatalogCombo<T> addCatalogCombo(Composite container, final String helpId) { return new CatalogCombo<T>(this, container) { @@ -257,6 +279,16 @@ public abstract class ReferenceTableComposite<T extends ReadOnlyReferenceTable> protected String getValue() { return this.getSubject().getSpecifiedCatalog(); } + + @Override + protected String getHelpId() { + return helpId; + } + + @Override + public String toString() { + return "ReferenceTableComposite.catalogCombo"; //$NON-NLS-1$ + } }; } @@ -301,10 +333,14 @@ public abstract class ReferenceTableComposite<T extends ReadOnlyReferenceTable> } } + private void setSelectedJoinColumn(JoinColumn joinColumn) { + this.joinColumnsComposite.setSelectedJoinColumn(joinColumn); + } + class JoinColumnsProvider implements JoinColumnsEditor<T> { - public void addJoinColumn(T subject) { - ReferenceTableComposite.this.addJoinColumn(subject); + public JoinColumn addJoinColumn(T subject) { + return ReferenceTableComposite.this.addJoinColumn(subject); } public ReadOnlyJoinColumn getDefaultJoinColumn(T subject) { @@ -323,10 +359,8 @@ public abstract class ReferenceTableComposite<T extends ReadOnlyReferenceTable> return subject.hasSpecifiedJoinColumns(); } - public void removeJoinColumns(T subject, int[] selectedIndices) { - for (int index = selectedIndices.length; index-- > 0; ) { - ((ReferenceTable) subject).removeSpecifiedJoinColumn(selectedIndices[index]); - } + public void removeJoinColumn(T subject, JoinColumn joinColumn) { + ((ReferenceTable) subject).removeSpecifiedJoinColumn(joinColumn); } public ListIterable<ReadOnlyJoinColumn> getSpecifiedJoinColumns(T subject) { @@ -361,13 +395,13 @@ public abstract class ReferenceTableComposite<T extends ReadOnlyReferenceTable> } - /* CU private */ class JoinColumnPaneEnablerHolder + /* CU private */ class JoinColumnsEnabledModel extends TransformationPropertyValueModel<T, Boolean> { private StateChangeListener stateChangeListener; - JoinColumnPaneEnablerHolder() { + JoinColumnsEnabledModel() { super( new ValueListAdapter<T>( new ReadOnlyWritablePropertyValueModelWrapper<T>(getSubjectHolder()), @@ -381,7 +415,7 @@ public abstract class ReferenceTableComposite<T extends ReadOnlyReferenceTable> private StateChangeListener buildStateChangeListener() { return new StateChangeListener() { public void stateChanged(StateChangeEvent event) { - JoinColumnPaneEnablerHolder.this.valueStateChanged(); + JoinColumnsEnabledModel.this.valueStateChanged(); } }; } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/SequenceGeneratorComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/SequenceGeneratorComposite.java index 585a418f98..9f4d7519f6 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/SequenceGeneratorComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/SequenceGeneratorComposite.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2007, 2009 Oracle. All rights reserved. + * Copyright (c) 2007, 2012 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. @@ -64,26 +64,25 @@ public class SequenceGeneratorComposite extends GeneratorComposite<SequenceGener } @Override - protected void initializeLayout(Composite container) { + protected Composite addComposite(Composite container) { + return this.addSubPane(container, 2, 0, 0, 0, 0); + } + @Override + protected void initializeLayout(Composite container) { // Name widgets - addLabeledText( - container, - JptUiDetailsMessages.SequenceGeneratorComposite_name, - buildGeneratorNameHolder(), - JpaHelpContextIds.MAPPING_SEQUENCE_GENERATOR_NAME - ); + this.addLabel(container, JptUiDetailsMessages.SequenceGeneratorComposite_name); + this.addText(container, this.buildGeneratorNameHolder(), JpaHelpContextIds.MAPPING_SEQUENCE_GENERATOR_NAME); // Sequence Generator widgets - addLabeledComposite( - container, - JptUiDetailsMessages.SequenceGeneratorComposite_sequence, - buildSequenceNameCombo(container), - JpaHelpContextIds.MAPPING_SEQUENCE_GENERATOR_SEQUENCE - ); - - addAllocationSizeCombo(container); - addInitialValueCombo(container); + this.addLabel(container, JptUiDetailsMessages.SequenceGeneratorComposite_sequence); + this.buildSequenceNameCombo(container); + + this.addLabel(container, JptUiDetailsMessages.GeneratorComposite_allocationSize); + this.addAllocationSizeCombo(container); + + this.addLabel(container, JptUiDetailsMessages.GeneratorComposite_initialValue); + this.addInitialValueCombo(container); } protected SequenceCombo<SequenceGenerator> buildSequenceNameCombo(Composite parent) { @@ -130,6 +129,15 @@ public class SequenceGeneratorComposite extends GeneratorComposite<SequenceGener return this.getSubject().getDbSchema(); } + @Override + protected String getHelpId() { + return JpaHelpContextIds.MAPPING_SEQUENCE_GENERATOR_SEQUENCE; + } + + @Override + public String toString() { + return "SequenceGeneratorComposite.sequenceNameCombo"; //$NON-NLS-1$ + } }; } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/TableComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/TableComposite.java index e9d50f1c02..2aea4fcbcc 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/TableComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/TableComposite.java @@ -11,7 +11,6 @@ package org.eclipse.jpt.jpa.ui.internal.details; import java.util.Collection; -import org.eclipse.jpt.common.ui.internal.util.PaneEnabler; import org.eclipse.jpt.common.ui.internal.widgets.Pane; import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter; import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; @@ -68,44 +67,36 @@ public class TableComposite extends Pane<Entity> public TableComposite(Pane<? extends Entity> parentPane, Composite parent) { - super(parentPane, parent, false); + super(parentPane, parent); } @Override - protected void initializeLayout(Composite container) { - - // Table group pane - Group tableGroupPane = addTitledGroup( - container, - JptUiDetailsMessages.TableComposite_tableSection + protected Composite addComposite(Composite parent) { + Group tableGroupPane = this.addTitledGroup( + parent, + JptUiDetailsMessages.TableComposite_tableSection, + 2, + null ); + return tableGroupPane; + } + @Override + protected void initializeLayout(Composite container) { PropertyValueModel<Table> subjectHolder = buildTableHolder(); + PropertyValueModel<Boolean> enabledModel = buildTableEnabledModel(); + // Table widgets - addLabeledComposite( - tableGroupPane, - JptUiDetailsMessages.TableChooser_label, - addTableCombo(subjectHolder, tableGroupPane), - JpaHelpContextIds.ENTITY_TABLE - ); + this.addLabel(container, JptUiDetailsMessages.TableChooser_label, enabledModel); + this.addTableCombo(subjectHolder, enabledModel, container); // Catalog widgets - addLabeledComposite( - tableGroupPane, - JptUiDetailsMessages.CatalogChooser_label, - addCatalogCombo(subjectHolder, tableGroupPane), - JpaHelpContextIds.ENTITY_CATALOG - ); + this.addLabel(container, JptUiDetailsMessages.CatalogChooser_label, enabledModel); + this.addCatalogCombo(subjectHolder, enabledModel, container); // Schema widgets - addLabeledComposite( - tableGroupPane, - JptUiDetailsMessages.SchemaChooser_label, - addSchemaCombo(subjectHolder, tableGroupPane), - JpaHelpContextIds.ENTITY_SCHEMA - ); - - new PaneEnabler(buildTableEnabledHolder(), this); + this.addLabel(container, JptUiDetailsMessages.SchemaChooser_label, enabledModel); + this.addSchemaCombo(subjectHolder, enabledModel, container); } protected ModifiablePropertyValueModel<Table> buildTableHolder() { @@ -118,7 +109,7 @@ public class TableComposite extends Pane<Entity> }; } - protected ModifiablePropertyValueModel<Boolean> buildTableEnabledHolder() { + protected PropertyValueModel<Boolean> buildTableEnabledModel() { return new PropertyAspectAdapter<Entity, Boolean>(getSubjectHolder(), Entity.SPECIFIED_TABLE_IS_ALLOWED_PROPERTY) { @Override protected Boolean buildValue_() { @@ -127,9 +118,8 @@ public class TableComposite extends Pane<Entity> }; } - private CatalogCombo<Table> addCatalogCombo(PropertyValueModel<Table> tableHolder, Composite container) { - - return new CatalogCombo<Table>(this, tableHolder, container) { + private CatalogCombo<Table> addCatalogCombo(PropertyValueModel<Table> tableHolder, PropertyValueModel<Boolean> enabledModel, Composite container) { + return new CatalogCombo<Table>(this, tableHolder, enabledModel, container) { @Override protected void addPropertyNames(Collection<String> propertyNames) { @@ -152,12 +142,21 @@ public class TableComposite extends Pane<Entity> protected String getValue() { return getSubject().getSpecifiedCatalog(); } + + @Override + protected String getHelpId() { + return JpaHelpContextIds.ENTITY_CATALOG; + } + + @Override + public String toString() { + return "TableComposite.catalogCombo"; //$NON-NLS-1$ + } }; } - private SchemaCombo<Table> addSchemaCombo(PropertyValueModel<Table> subjectHolder, Composite container) { - - return new SchemaCombo<Table>(this, subjectHolder, container) { + private SchemaCombo<Table> addSchemaCombo(PropertyValueModel<Table> subjectHolder, PropertyValueModel<Boolean> enabledModel, Composite container) { + return new SchemaCombo<Table>(this, subjectHolder, enabledModel, container) { @Override protected void addPropertyNames(Collection<String> propertyNames) { @@ -185,12 +184,21 @@ public class TableComposite extends Pane<Entity> protected SchemaContainer getDbSchemaContainer_() { return this.getSubject().getDbSchemaContainer(); } + + @Override + protected String getHelpId() { + return JpaHelpContextIds.ENTITY_SCHEMA; + } + + @Override + public String toString() { + return "TableComposite.schemaCombo"; //$NON-NLS-1$ + } }; } - private TableCombo<Table> addTableCombo(PropertyValueModel<Table> subjectHolder, Composite container) { - - return new TableCombo<Table>(this, subjectHolder, container) { + private TableCombo<Table> addTableCombo(PropertyValueModel<Table> subjectHolder, PropertyValueModel<Boolean> enabledModel, Composite container) { + return new TableCombo<Table>(this, subjectHolder, enabledModel, container) { @Override protected void addPropertyNames(Collection<String> propertyNames) { @@ -233,6 +241,16 @@ public class TableComposite extends Pane<Entity> protected Schema getDbSchema_() { return this.getSubject().getDbSchema(); } + + @Override + protected String getHelpId() { + return JpaHelpContextIds.ENTITY_TABLE; + } + + @Override + public String toString() { + return "TableComposite.tableCombo"; //$NON-NLS-1$ + } }; } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/TableGeneratorComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/TableGeneratorComposite.java index 3cc2853ef4..7b0d1849c0 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/TableGeneratorComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/TableGeneratorComposite.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2007, 2009 Oracle. All rights reserved. + * Copyright (c) 2007, 2012 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. @@ -87,68 +87,46 @@ public class TableGeneratorComposite extends GeneratorComposite<TableGenerator> return GeneratorContainer.TABLE_GENERATOR_PROPERTY; } + @Override + protected Composite addComposite(Composite container) { + return this.addSubPane(container, 2, 0, 0, 0, 0); + } @Override protected void initializeLayout(Composite container) { - // Name widgets - addLabeledText( - container, - JptUiDetailsMessages.TableGeneratorComposite_name, - buildGeneratorNameHolder(), - JpaHelpContextIds.MAPPING_TABLE_GENERATOR_NAME - ); + this.addLabel(container, JptUiDetailsMessages.TableGeneratorComposite_name); + this.addText(container, this.buildGeneratorNameHolder(), JpaHelpContextIds.MAPPING_TABLE_GENERATOR_NAME); // Table widgets - addLabeledComposite( - container, - JptUiDetailsMessages.TableGeneratorComposite_table, - addTableNameCombo(container), - JpaHelpContextIds.MAPPING_TABLE_GENERATOR_TABLE - ); + this.addLabel(container, JptUiDetailsMessages.TableGeneratorComposite_table); + this.addTableNameCombo(container); // Schema widgets - addLabeledComposite( - container, - JptUiDetailsMessages.TableGeneratorComposite_schema, - addSchemaCombo(container), - JpaHelpContextIds.MAPPING_TABLE_GENERATOR_SCHEMA - ); + this.addLabel(container, JptUiDetailsMessages.TableGeneratorComposite_schema); + this.addSchemaCombo(container); // Catalog widgets - addLabeledComposite( - container, - JptUiDetailsMessages.TableGeneratorComposite_catalog, - addCatalogCombo(container), - JpaHelpContextIds.MAPPING_TABLE_GENERATOR_CATALOG - ); + this.addLabel(container, JptUiDetailsMessages.TableGeneratorComposite_catalog); + this.addCatalogCombo(container); // Primary Key Column widgets - addLabeledComposite( - container, - JptUiDetailsMessages.TableGeneratorComposite_pkColumn, - addPkColumnNameCombo(container), - JpaHelpContextIds.MAPPING_TABLE_GENERATOR_PRIMARY_KEY_COLUMN - ); + this.addLabel(container, JptUiDetailsMessages.TableGeneratorComposite_pkColumn); + this.addPkColumnNameCombo(container); // Value Column widgets - addLabeledComposite( - container, - JptUiDetailsMessages.TableGeneratorComposite_valueColumn, - addValueColumnCombo(container), - JpaHelpContextIds.MAPPING_TABLE_GENERATOR_VALUE_COLUMN - ); + this.addLabel(container, JptUiDetailsMessages.TableGeneratorComposite_valueColumn); + this.addValueColumnCombo(container); // Primary Key Column Value widgets - addLabeledComposite( - container, - JptUiDetailsMessages.TableGeneratorComposite_pkColumnValue, - addPkColumnValueCombo(container), - JpaHelpContextIds.MAPPING_TABLE_GENERATOR_PRIMARY_KEY_COLUMN_VALUE - ); - - addAllocationSizeCombo(container); - addInitialValueCombo(container); + this.addLabel(container, JptUiDetailsMessages.TableGeneratorComposite_pkColumnValue); + this.addPkColumnValueCombo(container); + + this.addLabel(container, JptUiDetailsMessages.GeneratorComposite_allocationSize); + this.addAllocationSizeCombo(container); + + this.addLabel(container, JptUiDetailsMessages.GeneratorComposite_initialValue); + this.addInitialValueCombo(container); } private CatalogCombo<TableGenerator> addCatalogCombo(Composite container) { @@ -189,6 +167,16 @@ public class TableGeneratorComposite extends GeneratorComposite<TableGenerator> protected String getValue() { return getSubject().getSpecifiedCatalog(); } + + @Override + protected String getHelpId() { + return JpaHelpContextIds.MAPPING_TABLE_GENERATOR_CATALOG; + } + + @Override + public String toString() { + return "TableGeneratorComposite.catalogCombo"; //$NON-NLS-1$ + } }; } @@ -247,6 +235,16 @@ public class TableGeneratorComposite extends GeneratorComposite<TableGenerator> protected String getValue() { return getSubject().getSpecifiedPkColumnName(); } + + @Override + protected String getHelpId() { + return JpaHelpContextIds.MAPPING_TABLE_GENERATOR_PRIMARY_KEY_COLUMN; + } + + @Override + public String toString() { + return "TableGeneratorComposite.pkColumnNameCombo"; //$NON-NLS-1$ + } }; } @@ -293,6 +291,16 @@ public class TableGeneratorComposite extends GeneratorComposite<TableGenerator> protected String getValue() { return getSubject().getSpecifiedPkColumnValue(); } + + @Override + protected String getHelpId() { + return JpaHelpContextIds.MAPPING_TABLE_GENERATOR_PRIMARY_KEY_COLUMN_VALUE; + } + + @Override + public String toString() { + return "TableGeneratorComposite.pkColumnValueCombo"; //$NON-NLS-1$ + } }; } @@ -362,6 +370,16 @@ public class TableGeneratorComposite extends GeneratorComposite<TableGenerator> // we overrode #getDbSchemaContainer() instead throw new UnsupportedOperationException(); } + + @Override + protected String getHelpId() { + return JpaHelpContextIds.MAPPING_TABLE_GENERATOR_SCHEMA; + } + + @Override + public String toString() { + return "TableGeneratorComposite.schemaCombo"; //$NON-NLS-1$ + } }; } @@ -436,6 +454,15 @@ public class TableGeneratorComposite extends GeneratorComposite<TableGenerator> throw new UnsupportedOperationException(); } + @Override + protected String getHelpId() { + return JpaHelpContextIds.MAPPING_TABLE_GENERATOR_TABLE; + } + + @Override + public String toString() { + return "TableGeneratorComposite.tableNameCombo"; //$NON-NLS-1$ + } }; } @@ -494,6 +521,16 @@ public class TableGeneratorComposite extends GeneratorComposite<TableGenerator> protected String getValue() { return getSubject().getSpecifiedValueColumnName(); } + + @Override + protected String getHelpId() { + return JpaHelpContextIds.MAPPING_TABLE_GENERATOR_VALUE_COLUMN; + } + + @Override + public String toString() { + return "TableGeneratorComposite.valueColumnCombo"; //$NON-NLS-1$ + } }; } }
\ No newline at end of file diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/TargetEntityComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/TargetEntityClassChooser.java index ca0924c49a..b48362105a 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/TargetEntityComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/TargetEntityClassChooser.java @@ -16,17 +16,18 @@ import org.eclipse.jpt.common.ui.internal.widgets.Pane; import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter; import org.eclipse.jpt.common.utility.internal.model.value.PropertyListValueModelAdapter; import org.eclipse.jpt.common.utility.model.value.ListValueModel; -import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; import org.eclipse.jpt.common.utility.model.value.ModifiablePropertyValueModel; +import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; import org.eclipse.jpt.jpa.core.context.RelationshipMapping; import org.eclipse.jpt.jpa.ui.internal.JpaHelpContextIds; import org.eclipse.osgi.util.NLS; import org.eclipse.swt.widgets.Composite; +import org.eclipse.ui.forms.widgets.Hyperlink; /** * target entity hyperlink label, combo and browse button */ -public class TargetEntityComposite +public class TargetEntityClassChooser extends ClassChooserComboPane<RelationshipMapping> { /** @@ -35,14 +36,14 @@ public class TargetEntityComposite * @param parentPane The parent container of this one * @param parent The parent container */ - public TargetEntityComposite( + public TargetEntityClassChooser( Pane<? extends RelationshipMapping> parentPane, - Composite parent) { + Composite parent, + Hyperlink hyperlink) { - super(parentPane, parent); + super(parentPane, parent, hyperlink); } - - + @Override protected String getClassName() { return getSubject().getTargetEntity(); @@ -54,15 +55,10 @@ public class TargetEntityComposite } @Override - protected String getLabelText() { - return JptUiDetailsMessages.TargetEntityChooser_label; - } - - @Override protected String getHelpId() { return JpaHelpContextIds.MAPPING_TARGET_ENTITY; } - + @Override protected IJavaProject getJavaProject() { return getSubject().getJpaProject().getJavaProject(); @@ -89,7 +85,7 @@ public class TargetEntityComposite String name = this.subject.getSpecifiedTargetEntity(); if (name == null) { - name = TargetEntityComposite.this.getDefaultValue(this.subject); + name = TargetEntityClassChooser.this.getDefaultValue(this.subject); } return name; } @@ -120,7 +116,7 @@ public class TargetEntityComposite return new PropertyAspectAdapter<RelationshipMapping, String>(this.getSubjectHolder(), RelationshipMapping.DEFAULT_TARGET_ENTITY_PROPERTY) { @Override protected String buildValue_() { - return TargetEntityComposite.this.getDefaultValue(this.subject); + return TargetEntityClassChooser.this.getDefaultValue(this.subject); } }; } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/TemporalTypeComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/TemporalTypeCombo.java index b0efc9abd4..84832b3928 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/TemporalTypeComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/TemporalTypeCombo.java @@ -25,6 +25,7 @@ import org.eclipse.jpt.common.utility.model.value.ModifiablePropertyValueModel; import org.eclipse.jpt.jpa.core.context.BaseTemporalConverter; import org.eclipse.jpt.jpa.core.context.TemporalType; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; import com.ibm.icu.text.Collator; @@ -46,25 +47,32 @@ import com.ibm.icu.text.Collator; * @version 2.0 * @since 1.0 */ -public class TemporalTypeComposite extends Pane<BaseTemporalConverter> { - - /** - * Creates a new <code>TemporalTypeComposite</code>. - * - * @param parentPane The parent container of this one - * @param parent The parent container - */ - public TemporalTypeComposite(PropertyValueModel<? extends BaseTemporalConverter> subjectHolder, - Composite parent, - WidgetFactory widgetFactory) { - - super(subjectHolder, parent, widgetFactory); +public class TemporalTypeCombo extends Pane<BaseTemporalConverter> { + + private Control combo; + + + public TemporalTypeCombo(PropertyValueModel<? extends BaseTemporalConverter> subjectHolder, + PropertyValueModel<Boolean> enabledModel, + Composite parent, + WidgetFactory widgetFactory) { + + super(subjectHolder, enabledModel, parent, widgetFactory); } @Override - protected void initializeLayout(Composite container) { + protected boolean addsComposite() { + return false; + } + + @Override + public Control getControl() { + return this.combo; + } - this.addCombo( + @Override + protected void initializeLayout(Composite container) { + this.combo = this.addCombo( container, buildTemporalTypeListHolder(), buildTemporalTypeHolder(), @@ -92,7 +100,7 @@ public class TemporalTypeComposite extends Pane<BaseTemporalConverter> { buildSortedTemporalTypeList() ); } - + private List<TemporalType> buildSortedTemporalTypeList() { return CollectionTools.sort(CollectionTools.list(TemporalType.values()), this.buildTemporalTypeComparator()); } @@ -127,17 +135,13 @@ public class TemporalTypeComposite extends Pane<BaseTemporalConverter> { throw new IllegalStateException(); } } - + protected PropertyValueModel<Boolean> buildBooleanHolder() { return new TransformationPropertyValueModel<BaseTemporalConverter, Boolean>(getSubjectHolder()) { @Override protected Boolean transform(BaseTemporalConverter value) { - if (getSubject() != null && getSubject().getParent().getPersistentAttribute().isVirtual()) { - return Boolean.FALSE; - } return Boolean.valueOf(value != null); } }; } - }
\ No newline at end of file diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/TransientMappingComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/TransientMappingComposite.java index f6768f3d1f..066da8eead 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/TransientMappingComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/TransientMappingComposite.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2007, 2010 Oracle. All rights reserved. + * Copyright (c) 2007, 2012 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. @@ -35,10 +35,11 @@ public class TransientMappingComposite extends Pane<TransientMapping> * @param widgetFactory The factory used to create various common widgets */ public TransientMappingComposite(PropertyValueModel<? extends TransientMapping> subjectHolder, - Composite parent, - WidgetFactory widgetFactory) { + PropertyValueModel<Boolean> enabledModel, + Composite parent, + WidgetFactory widgetFactory) { - super(subjectHolder, parent, widgetFactory); + super(subjectHolder, enabledModel, parent, widgetFactory); } /* diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/VersionMappingComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/VersionMappingComposite.java index 1d5c4a60b4..b8c8601b6b 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/VersionMappingComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/VersionMappingComposite.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2007, 2010 Oracle. All rights reserved. + * Copyright (c) 2007, 2012 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. @@ -13,6 +13,7 @@ import org.eclipse.jpt.common.ui.WidgetFactory; import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; import org.eclipse.jpt.jpa.core.context.VersionMapping; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; /** * Here the layout of this pane: @@ -32,7 +33,7 @@ import org.eclipse.swt.widgets.Composite; * * @see VersionMapping * @see ColumnComposite - * @see TemporalTypeComposite + * @see TemporalTypeCombo * * @version 2.3 * @since 1.0 @@ -48,14 +49,19 @@ public class VersionMappingComposite * @param widgetFactory The factory used to create various common widgets */ public VersionMappingComposite(PropertyValueModel<? extends VersionMapping> subjectHolder, - Composite parent, - WidgetFactory widgetFactory) { + PropertyValueModel<Boolean> enabledModel, + Composite parent, + WidgetFactory widgetFactory) { - super(subjectHolder, parent, widgetFactory); + super(subjectHolder, enabledModel, parent, widgetFactory); } @Override - protected void initializeVersionSection(Composite container) { + protected Control initializeVersionSection(Composite container) { + container = this.addSubPane(container); //A Section with a Group(ColumnComposite) as its direct direct child throws exceptions + new ColumnComposite(this, buildColumnHolder(), container); + + return container; } }
\ No newline at end of file diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/db/CatalogCombo.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/db/CatalogCombo.java index dff170cb8f..e901f4ccf6 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/db/CatalogCombo.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/db/CatalogCombo.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2008, 2009 Oracle. All rights reserved. + * Copyright (c) 2008, 2012 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. @@ -20,14 +20,14 @@ import org.eclipse.swt.widgets.Composite; public abstract class CatalogCombo<T extends JpaNode> extends DatabaseObjectCombo<T> { - public CatalogCombo( + protected CatalogCombo( Pane<? extends T> parentPane, Composite parent) { super(parentPane, parent); } - public CatalogCombo( + protected CatalogCombo( Pane<?> parentPane, PropertyValueModel<? extends T> subjectHolder, Composite parent) { @@ -35,6 +35,15 @@ public abstract class CatalogCombo<T extends JpaNode> super(parentPane, subjectHolder, parent); } + protected CatalogCombo( + Pane<?> parentPane, + PropertyValueModel<? extends T> subjectHolder, + PropertyValueModel<Boolean> enabledModel, + Composite parent) { + + super(parentPane, subjectHolder, enabledModel, parent); + } + @Override protected Iterable<String> getValues_() { diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/db/ColumnCombo.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/db/ColumnCombo.java index 99243ac41a..6b7eb82cb2 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/db/ColumnCombo.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/db/ColumnCombo.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2008, 2009 Oracle. All rights reserved. + * Copyright (c) 2008, 2012 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. @@ -22,14 +22,14 @@ import org.eclipse.swt.widgets.Composite; public abstract class ColumnCombo<T extends JpaNode> extends DatabaseObjectCombo<T> { - public ColumnCombo( + protected ColumnCombo( Pane<? extends T> parentPane, Composite parent) { super(parentPane, parent); } - public ColumnCombo( + protected ColumnCombo( Pane<?> parentPane, PropertyValueModel<? extends T> subjectHolder, Composite parent) { @@ -37,6 +37,15 @@ public abstract class ColumnCombo<T extends JpaNode> super(parentPane, subjectHolder, parent); } + protected ColumnCombo( + Pane<?> parentPane, + PropertyValueModel<? extends T> subjectHolder, + PropertyValueModel<Boolean> enabledModel, + Composite parent) { + + super(parentPane, subjectHolder, enabledModel, parent); + } + @Override protected Iterable<String> getValues_() { diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/db/DatabaseObjectCombo.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/db/DatabaseObjectCombo.java index 1a670e1ee3..582c9da344 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/db/DatabaseObjectCombo.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/db/DatabaseObjectCombo.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2008, 2010 Oracle. All rights reserved. + * Copyright (c) 2008, 2012 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. @@ -72,6 +72,15 @@ public abstract class DatabaseObjectCombo<T extends JpaNode> super(parentPane, subjectHolder, parent); } + protected DatabaseObjectCombo( + Pane<?> parentPane, + PropertyValueModel<? extends T> subjectHolder, + PropertyValueModel<Boolean> enabledModel, + Composite parent) { + + super(parentPane, subjectHolder, enabledModel, parent); + } + // ********** initialization ********** diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/db/SchemaCombo.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/db/SchemaCombo.java index cf3605efe6..f63beba3d0 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/db/SchemaCombo.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/db/SchemaCombo.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2008, 2009 Oracle. All rights reserved. + * Copyright (c) 2008, 2012 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. @@ -22,14 +22,14 @@ import org.eclipse.swt.widgets.Composite; public abstract class SchemaCombo<T extends JpaNode> extends DatabaseObjectCombo<T> { - public SchemaCombo( + protected SchemaCombo( Pane<? extends T> parentPane, Composite parent) { super(parentPane, parent); } - public SchemaCombo( + protected SchemaCombo( Pane<?> parentPane, PropertyValueModel<? extends T> subjectHolder, Composite parent) { @@ -37,6 +37,15 @@ public abstract class SchemaCombo<T extends JpaNode> super(parentPane, subjectHolder, parent); } + protected SchemaCombo( + Pane<?> parentPane, + PropertyValueModel<? extends T> subjectHolder, + PropertyValueModel<Boolean> enabledModel, + Composite parent) { + + super(parentPane, subjectHolder, enabledModel, parent); + } + @Override protected Iterable<String> getValues_() { diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/db/TableCombo.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/db/TableCombo.java index c347b77c82..3e04d7465b 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/db/TableCombo.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/db/TableCombo.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2008, 2009 Oracle. All rights reserved. + * Copyright (c) 2008, 2012 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. @@ -22,20 +22,29 @@ import org.eclipse.swt.widgets.Composite; public abstract class TableCombo<T extends JpaNode> extends DatabaseObjectCombo<T> { - public TableCombo( + protected TableCombo( Pane<? extends T> parentPane, Composite parent) { super(parentPane, parent); } - public TableCombo( + protected TableCombo( Pane<?> parentPane, PropertyValueModel<? extends T> subjectHolder, Composite parent) { super(parentPane, subjectHolder, parent); } + + protected TableCombo( + Pane<?> parentPane, + PropertyValueModel<? extends T> subjectHolder, + PropertyValueModel<Boolean> enabledModel, + Composite parent) { + + super(parentPane, subjectHolder, enabledModel, parent); +} @Override diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/java/AbstractJavaResourceUiDefinition.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/java/AbstractJavaResourceUiDefinition.java index 7fc8e2dc81..8b05eeea5f 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/java/AbstractJavaResourceUiDefinition.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/java/AbstractJavaResourceUiDefinition.java @@ -156,7 +156,8 @@ public abstract class AbstractJavaResourceUiDefinition public JpaComposite buildAttributeMappingComposite( String key, PropertyValueModel<AttributeMapping> mappingHolder, - Composite parent, + PropertyValueModel<Boolean> enabledModel, + Composite parent, WidgetFactory widgetFactory) { JavaAttributeMappingUiDefinition<AttributeMapping> mappingUiDefinition = @@ -164,6 +165,7 @@ public abstract class AbstractJavaResourceUiDefinition return mappingUiDefinition.buildAttributeMappingComposite( getFactory(), mappingHolder, + enabledModel, parent, widgetFactory); } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/java/BaseJavaUiFactory.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/java/BaseJavaUiFactory.java index df7051717d..f1b5780b3c 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/java/BaseJavaUiFactory.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/java/BaseJavaUiFactory.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2007, 2010 Oracle. All rights reserved. + * Copyright (c) 2007, 2012 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. @@ -103,71 +103,81 @@ public abstract class BaseJavaUiFactory implements JavaUiFactory public JpaComposite createJavaIdMappingComposite( PropertyValueModel<JavaIdMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory) { - return new IdMappingComposite(subjectHolder, parent, widgetFactory); + return new IdMappingComposite(subjectHolder, enabledModel, parent, widgetFactory); } public JpaComposite createJavaEmbeddedIdMappingComposite( PropertyValueModel<JavaEmbeddedIdMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory) { - return new EmbeddedIdMappingComposite(subjectHolder, parent, widgetFactory); + return new EmbeddedIdMappingComposite(subjectHolder, enabledModel, parent, widgetFactory); } public JpaComposite createJavaBasicMappingComposite( PropertyValueModel<JavaBasicMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory) { - return new BasicMappingComposite(subjectHolder, parent, widgetFactory); + return new BasicMappingComposite(subjectHolder, enabledModel, parent, widgetFactory); } public JpaComposite createJavaVersionMappingComposite( PropertyValueModel<JavaVersionMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory) { - return new VersionMappingComposite(subjectHolder, parent, widgetFactory); + return new VersionMappingComposite(subjectHolder, enabledModel, parent, widgetFactory); } public JpaComposite createJavaManyToOneMappingComposite( PropertyValueModel<JavaManyToOneMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory) { - return new ManyToOneMappingComposite(subjectHolder, parent, widgetFactory); + return new ManyToOneMappingComposite(subjectHolder, enabledModel, parent, widgetFactory); } public JpaComposite createJavaOneToManyMappingComposite( PropertyValueModel<JavaOneToManyMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory) { - return new OneToManyMappingComposite(subjectHolder, parent, widgetFactory); + return new OneToManyMappingComposite(subjectHolder, enabledModel, parent, widgetFactory); } public JpaComposite createJavaOneToOneMappingComposite( PropertyValueModel<JavaOneToOneMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory) { - return new OneToOneMappingComposite(subjectHolder, parent, widgetFactory); + return new OneToOneMappingComposite(subjectHolder, enabledModel, parent, widgetFactory); } public JpaComposite createJavaManyToManyMappingComposite( PropertyValueModel<JavaManyToManyMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory) { - return new ManyToManyMappingComposite(subjectHolder, parent, widgetFactory); + return new ManyToManyMappingComposite(subjectHolder, enabledModel, parent, widgetFactory); } public JpaComposite createJavaEmbeddedMappingComposite( PropertyValueModel<JavaEmbeddedMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory) { - return new JavaEmbeddedMapping2_0Composite(subjectHolder, parent, widgetFactory); + return new JavaEmbeddedMapping2_0Composite(subjectHolder, enabledModel, parent, widgetFactory); } public JpaComposite createJavaTransientMappingComposite( PropertyValueModel<JavaTransientMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory) { - return new TransientMappingComposite(subjectHolder, parent, widgetFactory); + return new TransientMappingComposite(subjectHolder, enabledModel, parent, widgetFactory); } } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/java/DefaultBasicMappingUiDefinition.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/java/DefaultBasicMappingUiDefinition.java index fbed33d2a0..04fe0bff40 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/java/DefaultBasicMappingUiDefinition.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/java/DefaultBasicMappingUiDefinition.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2006, 2009 Oracle. All rights reserved. + * Copyright (c) 2006, 2012 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. @@ -75,9 +75,10 @@ public class DefaultBasicMappingUiDefinition public JpaComposite buildAttributeMappingComposite( JavaUiFactory factory, PropertyValueModel<JavaBasicMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory) { - return factory.createJavaBasicMappingComposite(subjectHolder, parent, widgetFactory); + return factory.createJavaBasicMappingComposite(subjectHolder, enabledModel, parent, widgetFactory); } } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/java/DefaultEmbeddedMappingUiDefinition.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/java/DefaultEmbeddedMappingUiDefinition.java index 6fed137b00..19fc95b2d4 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/java/DefaultEmbeddedMappingUiDefinition.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/java/DefaultEmbeddedMappingUiDefinition.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2006, 2009 Oracle. All rights reserved. + * Copyright (c) 2006, 2012 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. @@ -75,9 +75,10 @@ public class DefaultEmbeddedMappingUiDefinition public JpaComposite buildAttributeMappingComposite( JavaUiFactory factory, PropertyValueModel<JavaEmbeddedMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory) { - return factory.createJavaEmbeddedMappingComposite(subjectHolder, parent, widgetFactory); + return factory.createJavaEmbeddedMappingComposite(subjectHolder, enabledModel, parent, widgetFactory); } } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/java/JavaBasicMappingUiDefinition.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/java/JavaBasicMappingUiDefinition.java index 466f197087..1c4366b2e3 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/java/JavaBasicMappingUiDefinition.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/java/JavaBasicMappingUiDefinition.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2006, 2009 Oracle. All rights reserved. + * Copyright (c) 2006, 2012 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. @@ -47,9 +47,10 @@ public class JavaBasicMappingUiDefinition public JpaComposite buildAttributeMappingComposite( JavaUiFactory factory, PropertyValueModel<JavaBasicMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory) { - return factory.createJavaBasicMappingComposite(subjectHolder, parent, widgetFactory); + return factory.createJavaBasicMappingComposite(subjectHolder, enabledModel, parent, widgetFactory); } } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/java/JavaEmbeddableComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/java/JavaEmbeddableComposite.java index 18e1e4e806..072d742600 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/java/JavaEmbeddableComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/java/JavaEmbeddableComposite.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2007, 2010 Oracle. All rights reserved. + * Copyright (c) 2007, 2012 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. @@ -42,4 +42,8 @@ public class JavaEmbeddableComposite extends AbstractEmbeddableComposite<Embedda super(subjectHolder, parent, widgetFactory); } + @Override + protected void initializeLayout(Composite container) { + //nothing + } }
\ No newline at end of file diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/java/JavaEmbeddedIdMappingUDefinition.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/java/JavaEmbeddedIdMappingUDefinition.java index 4dc119c813..70f2a4426a 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/java/JavaEmbeddedIdMappingUDefinition.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/java/JavaEmbeddedIdMappingUDefinition.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2007, 2009 Oracle. All rights reserved. + * Copyright (c) 2007, 2012 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. @@ -47,9 +47,10 @@ public class JavaEmbeddedIdMappingUDefinition public JpaComposite buildAttributeMappingComposite( JavaUiFactory factory, PropertyValueModel<JavaEmbeddedIdMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory) { - return factory.createJavaEmbeddedIdMappingComposite(subjectHolder, parent, widgetFactory); + return factory.createJavaEmbeddedIdMappingComposite(subjectHolder, enabledModel, parent, widgetFactory); } } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/java/JavaEmbeddedMappingUiDefinition.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/java/JavaEmbeddedMappingUiDefinition.java index ca1c784d1a..abcab5dd97 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/java/JavaEmbeddedMappingUiDefinition.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/java/JavaEmbeddedMappingUiDefinition.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2007, 2009 Oracle. All rights reserved. + * Copyright (c) 2007, 2012 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. @@ -47,9 +47,10 @@ public class JavaEmbeddedMappingUiDefinition public JpaComposite buildAttributeMappingComposite( JavaUiFactory factory, PropertyValueModel<JavaEmbeddedMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory) { - return factory.createJavaEmbeddedMappingComposite(subjectHolder, parent, widgetFactory); + return factory.createJavaEmbeddedMappingComposite(subjectHolder, enabledModel, parent, widgetFactory); } } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/java/JavaEntityComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/java/JavaEntityComposite.java index 92c7659fc3..fc83dd415f 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/java/JavaEntityComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/java/JavaEntityComposite.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2006, 2010 Oracle. All rights reserved. + * Copyright (c) 2006, 2012 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. @@ -14,6 +14,7 @@ import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; import org.eclipse.jpt.jpa.core.context.java.JavaEntity; import org.eclipse.jpt.jpa.ui.internal.details.AbstractEntityComposite; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; /** * The pane used for a Java entity. @@ -42,12 +43,12 @@ public class JavaEntityComposite extends AbstractEntityComposite<JavaEntity> } @Override - protected void initializeSecondaryTablesSection(Composite container) { - new JavaSecondaryTablesComposite(this, container); + protected Control initializeSecondaryTablesSection(Composite container) { + return new JavaSecondaryTablesComposite(this, container).getControl(); } @Override - protected void initializeInheritanceSection(Composite container) { - new JavaInheritanceComposite(this, container); + protected Control initializeInheritanceSection(Composite container) { + return new JavaInheritanceComposite(this, container).getControl(); } }
\ No newline at end of file diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/java/JavaIdMappingUiDefinition.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/java/JavaIdMappingUiDefinition.java index 929c049a43..9175e4dd94 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/java/JavaIdMappingUiDefinition.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/java/JavaIdMappingUiDefinition.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2006, 2009 Oracle. All rights reserved. + * Copyright (c) 2006, 2012 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. @@ -47,9 +47,10 @@ public class JavaIdMappingUiDefinition public JpaComposite buildAttributeMappingComposite( JavaUiFactory factory, PropertyValueModel<JavaIdMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory) { - return factory.createJavaIdMappingComposite(subjectHolder, parent, widgetFactory); + return factory.createJavaIdMappingComposite(subjectHolder, enabledModel, parent, widgetFactory); } } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/java/JavaInheritanceComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/java/JavaInheritanceComposite.java index d029097866..507cda526a 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/java/JavaInheritanceComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/java/JavaInheritanceComposite.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2008, 2010 Oracle. All rights reserved. + * Copyright (c) 2008, 2012 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. @@ -13,6 +13,7 @@ import org.eclipse.jpt.common.ui.internal.widgets.Pane; import org.eclipse.jpt.jpa.core.context.java.JavaEntity; import org.eclipse.jpt.jpa.ui.internal.details.AbstractInheritanceComposite; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; /** * The pane used for java inheritance. @@ -38,7 +39,7 @@ public class JavaInheritanceComposite extends AbstractInheritanceComposite<JavaE } @Override - protected void addPrimaryKeyJoinColumnsComposite(Composite container) { - new JavaPrimaryKeyJoinColumnsComposite(this, container); + protected Control addPrimaryKeyJoinColumnsComposite(Composite container) { + return new JavaPrimaryKeyJoinColumnsComposite(this, container).getControl(); } }
\ No newline at end of file diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/java/JavaManyToManyMappingUiDefinition.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/java/JavaManyToManyMappingUiDefinition.java index 900ce26972..e23a9ddc43 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/java/JavaManyToManyMappingUiDefinition.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/java/JavaManyToManyMappingUiDefinition.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2006, 2009 Oracle. All rights reserved. + * Copyright (c) 2006, 2012 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. @@ -47,9 +47,10 @@ public class JavaManyToManyMappingUiDefinition public JpaComposite buildAttributeMappingComposite( JavaUiFactory factory, PropertyValueModel<JavaManyToManyMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory) { - return factory.createJavaManyToManyMappingComposite(subjectHolder, parent, widgetFactory); + return factory.createJavaManyToManyMappingComposite(subjectHolder, enabledModel, parent, widgetFactory); } } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/java/JavaManyToOneMappingUiDefinition.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/java/JavaManyToOneMappingUiDefinition.java index 23e70b258b..bba0eacfa5 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/java/JavaManyToOneMappingUiDefinition.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/java/JavaManyToOneMappingUiDefinition.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2006, 2009 Oracle. All rights reserved. + * Copyright (c) 2006, 2012 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. @@ -47,9 +47,10 @@ public class JavaManyToOneMappingUiDefinition public JpaComposite buildAttributeMappingComposite( JavaUiFactory factory, PropertyValueModel<JavaManyToOneMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory) { - return factory.createJavaManyToOneMappingComposite(subjectHolder, parent, widgetFactory); + return factory.createJavaManyToOneMappingComposite(subjectHolder, enabledModel, parent, widgetFactory); } } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/java/JavaOneToManyMappingUiDefinition.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/java/JavaOneToManyMappingUiDefinition.java index ca30448137..10a1664b10 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/java/JavaOneToManyMappingUiDefinition.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/java/JavaOneToManyMappingUiDefinition.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2006, 2009 Oracle. All rights reserved. + * Copyright (c) 2006, 2012 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. @@ -47,9 +47,10 @@ public class JavaOneToManyMappingUiDefinition public JpaComposite buildAttributeMappingComposite( JavaUiFactory factory, PropertyValueModel<JavaOneToManyMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory) { - return factory.createJavaOneToManyMappingComposite(subjectHolder, parent, widgetFactory); + return factory.createJavaOneToManyMappingComposite(subjectHolder, enabledModel, parent, widgetFactory); } } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/java/JavaOneToOneMappingUiDefinition.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/java/JavaOneToOneMappingUiDefinition.java index d96ee6166f..d2bf660b3f 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/java/JavaOneToOneMappingUiDefinition.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/java/JavaOneToOneMappingUiDefinition.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2007, 2009 Oracle. All rights reserved. + * Copyright (c) 2007, 2012 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. @@ -47,9 +47,10 @@ public class JavaOneToOneMappingUiDefinition public JpaComposite buildAttributeMappingComposite( JavaUiFactory factory, PropertyValueModel<JavaOneToOneMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory) { - return factory.createJavaOneToOneMappingComposite(subjectHolder, parent, widgetFactory); + return factory.createJavaOneToOneMappingComposite(subjectHolder, enabledModel, parent, widgetFactory); } } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/java/JavaPersistentAttributeDetailsPage.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/java/JavaPersistentAttributeDetailsPage.java index 80046d9cbc..8d95725865 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/java/JavaPersistentAttributeDetailsPage.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/java/JavaPersistentAttributeDetailsPage.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2006, 2009 Oracle. All rights reserved. + * Copyright (c) 2006, 2012 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. @@ -10,6 +10,8 @@ package org.eclipse.jpt.jpa.ui.internal.details.java; import org.eclipse.jpt.common.ui.WidgetFactory; +import org.eclipse.jpt.common.utility.internal.model.value.StaticPropertyValueModel; +import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; import org.eclipse.jpt.jpa.core.context.java.JavaPersistentAttribute; import org.eclipse.jpt.jpa.ui.internal.details.PersistentAttributeDetailsPage; import org.eclipse.jpt.jpa.ui.internal.details.PersistentAttributeMapAsComposite; @@ -57,13 +59,16 @@ public class JavaPersistentAttributeDetailsPage @Override protected void initializeLayout(Composite container) { + new PersistentAttributeMapAsComposite(this, container); - // Map as composite - new PersistentAttributeMapAsComposite( - this, - addSubPane(container, 0, 0, 5, 0) - ); + this.buildMappingPageBook(container); + } + + private static final PropertyValueModel<Boolean> TRUE_ENABLED_MODEL = new StaticPropertyValueModel<Boolean>(Boolean.TRUE); - buildMappingPageBook(container); + @Override + protected PropertyValueModel<Boolean> getMappingCompositeEnabledModel() { + return TRUE_ENABLED_MODEL; } + }
\ No newline at end of file diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/java/JavaSecondaryTablesComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/java/JavaSecondaryTablesComposite.java index adc35aa679..190f80606c 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/java/JavaSecondaryTablesComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/java/JavaSecondaryTablesComposite.java @@ -9,15 +9,13 @@ ******************************************************************************/ package org.eclipse.jpt.jpa.ui.internal.details.java; -import org.eclipse.jpt.common.ui.WidgetFactory; import org.eclipse.jpt.common.ui.internal.widgets.AddRemoveListPane; import org.eclipse.jpt.common.ui.internal.widgets.Pane; import org.eclipse.jpt.common.utility.internal.iterables.ListIterable; import org.eclipse.jpt.common.utility.internal.model.value.ItemPropertyListValueModelAdapter; import org.eclipse.jpt.common.utility.internal.model.value.ListAspectAdapter; import org.eclipse.jpt.common.utility.model.value.ListValueModel; -import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; -import org.eclipse.jpt.common.utility.model.value.ModifiablePropertyValueModel; +import org.eclipse.jpt.common.utility.model.value.ModifiableCollectionValueModel; import org.eclipse.jpt.jpa.core.context.Entity; import org.eclipse.jpt.jpa.core.context.ReadOnlyTable; import org.eclipse.jpt.jpa.core.context.SecondaryTable; @@ -65,20 +63,6 @@ public class JavaSecondaryTablesComposite extends AbstractSecondaryTablesComposi super(parentPane, parent); } - /** - * Creates a new <code>SecondaryTablesComposite</code>. - * - * @param subjectHolder The holder of the subject <code>IEntity</code> - * @param parent The parent container - * @param widgetFactory The factory used to create various common widgets - */ - public JavaSecondaryTablesComposite(PropertyValueModel<? extends JavaEntity> subjectHolder, - Composite parent, - WidgetFactory widgetFactory) { - - super(subjectHolder, parent, widgetFactory); - } - private ListValueModel<JavaSecondaryTable> buildSecondaryTablesListModel() { return new ItemPropertyListValueModelAdapter<JavaSecondaryTable>(buildSecondaryTablesListHolder(), ReadOnlyTable.SPECIFIED_NAME_PROPERTY); @@ -97,24 +81,18 @@ public class JavaSecondaryTablesComposite extends AbstractSecondaryTablesComposi }; } - /* - * (non-Javadoc) - */ @Override protected void initializeLayout(Composite container) { - - int groupBoxMargin = getGroupBoxMargin(); - - ModifiablePropertyValueModel<SecondaryTable> secondaryTableHolder = - buildSecondaryTableHolder(); + ModifiableCollectionValueModel<SecondaryTable> selectedSecondaryTablesModel = + buildSelectedSecondaryTablesModel(); // Secondary Tables add/remove list pane - new AddRemoveListPane<Entity>( + new AddRemoveListPane<Entity, SecondaryTable>( this, - addSubPane(container, 0, groupBoxMargin, 0, groupBoxMargin), + container, buildSecondaryTablesAdapter(), buildSecondaryTablesListModel(), - secondaryTableHolder, + selectedSecondaryTablesModel, buildSecondaryTableLabelProvider(), JpaHelpContextIds.MAPPING_JOIN_TABLE_COLUMNS//TODO need a help context id for this ); @@ -122,7 +100,7 @@ public class JavaSecondaryTablesComposite extends AbstractSecondaryTablesComposi // Primary Key Join Columns pane new PrimaryKeyJoinColumnsInSecondaryTableComposite( this, - secondaryTableHolder, + buildSelectedSecondaryTableModel(selectedSecondaryTablesModel), container ); } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/java/JavaTransientMappingUiDefinition.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/java/JavaTransientMappingUiDefinition.java index 657e43234f..2d1fedd03b 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/java/JavaTransientMappingUiDefinition.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/java/JavaTransientMappingUiDefinition.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2007, 2009 Oracle. All rights reserved. + * Copyright (c) 2007, 2012 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. @@ -47,9 +47,10 @@ public class JavaTransientMappingUiDefinition public JpaComposite buildAttributeMappingComposite( JavaUiFactory factory, PropertyValueModel<JavaTransientMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory) { - return factory.createJavaTransientMappingComposite(subjectHolder, parent, widgetFactory); + return factory.createJavaTransientMappingComposite(subjectHolder, enabledModel, parent, widgetFactory); } } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/java/JavaVersionMappingUiDefinition.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/java/JavaVersionMappingUiDefinition.java index d4f9bd94bc..6fefe6f56a 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/java/JavaVersionMappingUiDefinition.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/java/JavaVersionMappingUiDefinition.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2007, 2009 Oracle. All rights reserved. + * Copyright (c) 2007, 2012 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. @@ -47,9 +47,10 @@ public class JavaVersionMappingUiDefinition public JpaComposite buildAttributeMappingComposite( JavaUiFactory factory, PropertyValueModel<JavaVersionMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory) { - return factory.createJavaVersionMappingComposite(subjectHolder, parent, widgetFactory); + return factory.createJavaVersionMappingComposite(subjectHolder, enabledModel, parent, widgetFactory); } } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/java/NullJavaAttributeMappingUiDefinition.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/java/NullJavaAttributeMappingUiDefinition.java index 8e2e64812b..6088fb286a 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/java/NullJavaAttributeMappingUiDefinition.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/java/NullJavaAttributeMappingUiDefinition.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2006, 2010 Oracle. All rights reserved. + * Copyright (c) 2006, 2012 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. @@ -70,6 +70,7 @@ public class NullJavaAttributeMappingUiDefinition public JpaComposite buildAttributeMappingComposite( JavaUiFactory factory, PropertyValueModel<JavaAttributeMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory) { return new NullComposite(subjectHolder, parent, widgetFactory); diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/orm/AbstractEntityMappingsDetailsPage.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/orm/AbstractEntityMappingsDetailsPage.java index 60258a1239..a927a6cabe 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/orm/AbstractEntityMappingsDetailsPage.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/orm/AbstractEntityMappingsDetailsPage.java @@ -10,21 +10,30 @@ package org.eclipse.jpt.jpa.ui.internal.details.orm; import java.util.Collection; - import org.eclipse.jpt.common.ui.WidgetFactory; import org.eclipse.jpt.common.ui.internal.widgets.EnumFormComboViewer; -import org.eclipse.jpt.common.utility.internal.model.value.SimplePropertyValueModel; +import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter; import org.eclipse.jpt.common.utility.internal.model.value.TransformationPropertyValueModel; import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; +import org.eclipse.jpt.jpa.core.context.QueryContainer; import org.eclipse.jpt.jpa.core.context.orm.EntityMappings; import org.eclipse.jpt.jpa.core.context.orm.OrmPersistenceUnitMetadata; import org.eclipse.jpt.jpa.db.SchemaContainer; import org.eclipse.jpt.jpa.ui.internal.JpaHelpContextIds; +import org.eclipse.jpt.jpa.ui.internal.JptUiMessages; import org.eclipse.jpt.jpa.ui.internal.details.AbstractJpaDetailsPage; -import org.eclipse.jpt.jpa.ui.internal.details.AccessTypeComposite; +import org.eclipse.jpt.jpa.ui.internal.details.AccessTypeComboViewer; +import org.eclipse.jpt.jpa.ui.internal.details.JptUiDetailsMessages; +import org.eclipse.jpt.jpa.ui.internal.details.QueriesComposite; import org.eclipse.jpt.jpa.ui.internal.details.db.CatalogCombo; import org.eclipse.jpt.jpa.ui.internal.details.db.SchemaCombo; +import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.ui.forms.events.ExpansionAdapter; +import org.eclipse.ui.forms.events.ExpansionEvent; +import org.eclipse.ui.forms.widgets.ExpandableComposite; +import org.eclipse.ui.forms.widgets.Section; /** * Here the layout of this pane: @@ -98,44 +107,56 @@ public abstract class AbstractEntityMappingsDetailsPage extends AbstractJpaDetai } protected void initializeEntityMappingsCollapsibleSection(Composite container) { - container = addCollapsibleSection( - container, - JptUiDetailsOrmMessages.EntityMappingsSection_title, - new SimplePropertyValueModel<Boolean>(Boolean.TRUE) - ); - - this.initializeEntityMappingsSection(container); + final Section section = this.getWidgetFactory().createSection(container, ExpandableComposite.TITLE_BAR | ExpandableComposite.TWISTIE); + section.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + section.setText(JptUiDetailsOrmMessages.EntityMappingsSection_title); + section.setExpanded(true); + section.setClient(this.initializeEntityMappingsSection(section)); } - protected void initializeEntityMappingsSection(Composite container) { + protected Control initializeEntityMappingsSection(Composite container) { + container = this.addSubPane(container, 2, 0, 0, 0, 0); + // Package widgets + this.addLabel(container, JptUiDetailsOrmMessages.EntityMappingsDetailsPage_package); new OrmPackageChooser(this, container); // Schema widgets - addLabeledComposite( - container, - JptUiDetailsOrmMessages.EntityMappingsDetailsPage_schema, - addSchemaCombo(container), - JpaHelpContextIds.ENTITY_ORM_SCHEMA - ); + this.addLabel(container, JptUiDetailsOrmMessages.EntityMappingsDetailsPage_schema); + this.addSchemaCombo(container); // Catalog widgets - addLabeledComposite( - container, - JptUiDetailsOrmMessages.EntityMappingsDetailsPage_catalog, - addCatalogCombo(container), - JpaHelpContextIds.ENTITY_ORM_CATALOG - ); - - new AccessTypeComposite(this, getSubjectHolder(), container); + this.addLabel(container, JptUiDetailsOrmMessages.EntityMappingsDetailsPage_catalog); + this.addCatalogCombo(container); + + // Access type widgets + this.addLabel(container, JptUiMessages.AccessTypeComposite_access); + new AccessTypeComboViewer(this, getSubjectHolder(), container); + + return container; } protected void initializePersistenceUnitMetadataCollapsibleSection(Composite container) { - new PersistenceUnitMetadataComposite( + final Section section = this.getWidgetFactory().createSection(container, ExpandableComposite.TITLE_BAR | ExpandableComposite.TWISTIE); + section.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + section.setText(JptUiDetailsOrmMessages.PersistenceUnitMetadataComposite_persistenceUnitSection); + + section.addExpansionListener(new ExpansionAdapter() { + @Override + public void expansionStateChanging(ExpansionEvent e) { + if (e.getState() && section.getClient() == null) { + section.setClient(initializePersistenceUnitMetadataSection(section)); + } + } + }); + } + + protected Control initializePersistenceUnitMetadataSection(Composite container) { + return new PersistenceUnitMetadataComposite( this, buildPersistentUnitMetadataHolder(), - addSubPane(container, 5) - ); + container + ).getControl(); } protected CatalogCombo<EntityMappings> addCatalogCombo(Composite container) { @@ -163,6 +184,15 @@ public abstract class AbstractEntityMappingsDetailsPage extends AbstractJpaDetai protected String getValue() { return getSubject().getSpecifiedCatalog(); } + + @Override + protected String getHelpId() { + return JpaHelpContextIds.ENTITY_ORM_CATALOG; + } + @Override + public String toString() { + return "AbstractEntityMappingsDetailsPage.catalogCombo"; //$NON-NLS-1$ + } }; } @@ -206,17 +236,62 @@ public abstract class AbstractEntityMappingsDetailsPage extends AbstractJpaDetai return this.getSubject().getDbSchemaContainer(); } + @Override + protected String getHelpId() { + return JpaHelpContextIds.ENTITY_ORM_SCHEMA; + } + + @Override + public String toString() { + return "AbstractEntityMappingsDetailsPage.schemaCombo"; //$NON-NLS-1$ + } }; } protected void initializeGeneratorsCollapsibleSection(Composite container) { - new EntityMappingsGeneratorsComposite( - this, - container - ); + final Section section = this.getWidgetFactory().createSection(container, ExpandableComposite.TITLE_BAR | ExpandableComposite.TWISTIE); + section.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + section.setText(JptUiDetailsOrmMessages.OrmGeneratorsComposite_groupBox); + + section.addExpansionListener(new ExpansionAdapter() { + @Override + public void expansionStateChanging(ExpansionEvent e) { + if (e.getState() && section.getClient() == null) { + section.setClient(initializeGeneratorsSection(section)); + } + } + }); } + protected Control initializeGeneratorsSection(Composite container) { + return new EntityMappingsGeneratorsComposite(this, container).getControl(); + } + protected void initializeQueriesCollapsibleSection(Composite container) { - new OrmQueriesComposite(this, container); + final Section section = this.getWidgetFactory().createSection(container, ExpandableComposite.TITLE_BAR | ExpandableComposite.TWISTIE); + section.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + section.setText(JptUiDetailsMessages.EntityComposite_queries); + + section.addExpansionListener(new ExpansionAdapter() { + @Override + public void expansionStateChanging(ExpansionEvent e) { + if (e.getState() && section.getClient() == null) { + section.setClient(initializeQueriesSection(section)); + } + } + }); + } + + protected Control initializeQueriesSection(Composite container) { + return new QueriesComposite(this, this.buildQueryContainerHolder(), container).getControl(); + } + + protected PropertyValueModel<QueryContainer> buildQueryContainerHolder() { + return new PropertyAspectAdapter<EntityMappings, QueryContainer>(getSubjectHolder()) { + @Override + protected QueryContainer buildValue_() { + return this.subject.getQueryContainer(); + } + }; } }
\ No newline at end of file diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/orm/AbstractOrmEntityComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/orm/AbstractOrmEntityComposite.java index 97d8424fe4..ebf4181bf7 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/orm/AbstractOrmEntityComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/orm/AbstractOrmEntityComposite.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2008, 2010 Oracle. All rights reserved. + * Copyright (c) 2008, 2012 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. @@ -14,13 +14,18 @@ import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; import org.eclipse.jpt.jpa.core.context.AccessHolder; import org.eclipse.jpt.jpa.core.context.orm.OrmEntity; +import org.eclipse.jpt.jpa.ui.internal.JptUiMessages; import org.eclipse.jpt.jpa.ui.internal.details.AbstractEntityComposite; -import org.eclipse.jpt.jpa.ui.internal.details.AccessTypeComposite; -import org.eclipse.jpt.jpa.ui.internal.details.EntityNameComposite; -import org.eclipse.jpt.jpa.ui.internal.details.IdClassComposite; +import org.eclipse.jpt.jpa.ui.internal.details.AccessTypeComboViewer; +import org.eclipse.jpt.jpa.ui.internal.details.EntityNameCombo; +import org.eclipse.jpt.jpa.ui.internal.details.IdClassChooser; +import org.eclipse.jpt.jpa.ui.internal.details.JptUiDetailsMessages; import org.eclipse.jpt.jpa.ui.internal.details.TableComposite; import org.eclipse.jpt.jpa.ui.internal.details.java.BaseJavaUiFactory; +import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.ui.forms.widgets.Hyperlink; /** * The pane used for an ORM entity. @@ -60,13 +65,38 @@ public abstract class AbstractOrmEntityComposite extends AbstractEntityComposite } @Override - protected void initializeEntitySection(Composite container) { - new OrmJavaClassChooser(this, getSubjectHolder(), container, false); - new TableComposite(this, container); - new EntityNameComposite(this, container); - new AccessTypeComposite(this, buildAccessHolder(), container); - new IdClassComposite(this, buildIdClassReferenceHolder(), container); - new MetadataCompleteComposite(this, getSubjectHolder(), container); + protected Control initializeEntitySection(Composite container) { + container = this.addSubPane(container, 2, 0, 0, 0, 0); + + // Java class widgets + Hyperlink javaClassHyperlink = this.addHyperlink(container, JptUiDetailsOrmMessages.OrmJavaClassChooser_javaClass); + new OrmJavaClassChooser(this, getSubjectHolder(), container, javaClassHyperlink); + + // Table widgets + TableComposite tableComposite = new TableComposite(this, container); + GridData gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.horizontalSpan = 2; + tableComposite.getControl().setLayoutData(gridData); + + // Entity name widgets + this.addLabel(container, JptUiDetailsMessages.EntityNameComposite_name); + new EntityNameCombo(this, container); + + // Access type widgets + this.addLabel(container, JptUiMessages.AccessTypeComposite_access); + new AccessTypeComboViewer(this, buildAccessHolder(), container); + + // Id class widgets + Hyperlink hyperlink = this.addHyperlink(container,JptUiDetailsMessages.IdClassComposite_label); + new IdClassChooser(this, this.buildIdClassReferenceHolder(), container, hyperlink); + + // Metadata complete widgets + MetadataCompleteTriStateCheckBox metadataCompleteCheckBox = new MetadataCompleteTriStateCheckBox(this, getSubjectHolder(), container); + gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.horizontalSpan = 2; + metadataCompleteCheckBox.getControl().setLayoutData(gridData); + + return container; } protected PropertyValueModel<AccessHolder> buildAccessHolder() { @@ -79,12 +109,12 @@ public abstract class AbstractOrmEntityComposite extends AbstractEntityComposite } @Override - protected void initializeSecondaryTablesSection(Composite container) { - new OrmSecondaryTablesComposite(this, container); + protected Control initializeSecondaryTablesSection(Composite container) { + return new OrmSecondaryTablesComposite(this, container).getControl(); } @Override - protected void initializeInheritanceSection(Composite container) { - new OrmInheritanceComposite(this, container); + protected Control initializeInheritanceSection(Composite container) { + return new OrmInheritanceComposite(this, container).getControl(); } }
\ No newline at end of file diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/orm/AbstractOrmXmlResourceUiDefinition.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/orm/AbstractOrmXmlResourceUiDefinition.java index db11562274..7939454d60 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/orm/AbstractOrmXmlResourceUiDefinition.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/orm/AbstractOrmXmlResourceUiDefinition.java @@ -120,13 +120,19 @@ public abstract class AbstractOrmXmlResourceUiDefinition // ********** ORM attribute mappings ********** - public JpaComposite buildAttributeMappingComposite(String key, PropertyValueModel<AttributeMapping> mappingHolder, Composite parent, WidgetFactory widgetFactory) { + public JpaComposite buildAttributeMappingComposite( + String key, + PropertyValueModel<AttributeMapping> mappingHolder, + PropertyValueModel<Boolean> enabledModel, + Composite parent, + WidgetFactory widgetFactory) { OrmAttributeMappingUiDefinition<AttributeMapping> mappingUiDefinition = (OrmAttributeMappingUiDefinition<AttributeMapping>) getOrmAttributeMappingUiDefinition(key); return mappingUiDefinition.buildAttributeMappingComposite( getFactory(), mappingHolder, + enabledModel, parent, widgetFactory ); diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/orm/AddGeneratorDialog.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/orm/AddGeneratorDialog.java index ac31236854..2caf9695b2 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/orm/AddGeneratorDialog.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/orm/AddGeneratorDialog.java @@ -121,20 +121,25 @@ public class AddGeneratorDialog extends ValidatingDialog<AddGeneratorStateObject } @Override + protected Composite addComposite(Composite container) { + return this.addSubPane(container, 2, 0, 0, 0, 0); + } + + @Override protected void initializeLayout(Composite container) { - this.nameText = addLabeledText( + this.addLabel(container, JptUiDetailsOrmMessages.AddGeneratorDialog_name); + this.nameText = this.addText( container, - JptUiDetailsOrmMessages.AddGeneratorDialog_name, buildNameHolder() ); - addLabeledCombo( - container, - JptUiDetailsOrmMessages.AddGeneratorDialog_generatorType, + this.addLabel(container, JptUiDetailsOrmMessages.AddGeneratorDialog_generatorType); + this.addCombo( + container, buildGeneratorTypeListHolder(), buildGeneratorTypeHolder(), buildStringConverter(), - null); + (String) null); } protected ListValueModel<String> buildGeneratorTypeListHolder() { diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/orm/BaseOrmXmlUiFactory.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/orm/BaseOrmXmlUiFactory.java index d44d8d6e49..3fde7f558c 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/orm/BaseOrmXmlUiFactory.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/orm/BaseOrmXmlUiFactory.java @@ -64,71 +64,81 @@ public abstract class BaseOrmXmlUiFactory implements OrmXmlUiFactory public JpaComposite createOrmIdMappingComposite( PropertyValueModel<OrmIdMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory) { - return new OrmIdMappingComposite(subjectHolder, parent, widgetFactory); + return new OrmIdMappingComposite(subjectHolder, enabledModel, parent, widgetFactory); } public JpaComposite createOrmEmbeddedIdMappingComposite( PropertyValueModel<OrmEmbeddedIdMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory) { - return new OrmEmbeddedIdMappingComposite(subjectHolder, parent, widgetFactory); + return new OrmEmbeddedIdMappingComposite(subjectHolder, enabledModel, parent, widgetFactory); } public JpaComposite createOrmBasicMappingComposite( PropertyValueModel<OrmBasicMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory) { - return new OrmBasicMappingComposite(subjectHolder, parent, widgetFactory); + return new OrmBasicMappingComposite(subjectHolder, enabledModel, parent, widgetFactory); } public JpaComposite createOrmVersionMappingComposite( PropertyValueModel<OrmVersionMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory) { - return new OrmVersionMappingComposite(subjectHolder, parent, widgetFactory); + return new OrmVersionMappingComposite(subjectHolder, enabledModel, parent, widgetFactory); } public JpaComposite createOrmManyToOneMappingComposite( PropertyValueModel<OrmManyToOneMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory) { - return new OrmManyToOneMappingComposite(subjectHolder, parent, widgetFactory); + return new OrmManyToOneMappingComposite(subjectHolder, enabledModel, parent, widgetFactory); } public JpaComposite createOrmOneToManyMappingComposite( PropertyValueModel<OrmOneToManyMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory) { - return new OrmOneToManyMappingComposite(subjectHolder, parent, widgetFactory); + return new OrmOneToManyMappingComposite(subjectHolder, enabledModel, parent, widgetFactory); } public JpaComposite createOrmOneToOneMappingComposite( PropertyValueModel<OrmOneToOneMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory) { - return new OrmOneToOneMappingComposite(subjectHolder, parent, widgetFactory); + return new OrmOneToOneMappingComposite(subjectHolder, enabledModel, parent, widgetFactory); } public JpaComposite createOrmManyToManyMappingComposite( PropertyValueModel<OrmManyToManyMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory) { - return new OrmManyToManyMappingComposite(subjectHolder, parent, widgetFactory); + return new OrmManyToManyMappingComposite(subjectHolder, enabledModel, parent, widgetFactory); } public JpaComposite createOrmEmbeddedMappingComposite( PropertyValueModel<OrmEmbeddedMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory) { - return new OrmEmbeddedMappingComposite(subjectHolder, parent, widgetFactory); + return new OrmEmbeddedMappingComposite(subjectHolder, enabledModel, parent, widgetFactory); } public JpaComposite createOrmTransientMappingComposite( PropertyValueModel<OrmTransientMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory) { - return new TransientMappingComposite(subjectHolder, parent, widgetFactory); + return new TransientMappingComposite(subjectHolder, enabledModel, parent, widgetFactory); } } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/orm/EntityMappingsGeneratorsComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/orm/EntityMappingsGeneratorsComposite.java index 2593068bf2..80e09da1d0 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/orm/EntityMappingsGeneratorsComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/orm/EntityMappingsGeneratorsComposite.java @@ -11,27 +11,26 @@ package org.eclipse.jpt.jpa.ui.internal.details.orm; import java.util.ArrayList; import java.util.List; - import org.eclipse.jface.viewers.ILabelProvider; import org.eclipse.jface.viewers.LabelProvider; import org.eclipse.jface.window.Window; import org.eclipse.jpt.common.ui.internal.util.ControlSwitcher; -import org.eclipse.jpt.common.ui.internal.util.PaneEnabler; import org.eclipse.jpt.common.ui.internal.widgets.AddRemoveListPane; -import org.eclipse.jpt.common.ui.internal.widgets.Pane; import org.eclipse.jpt.common.ui.internal.widgets.AddRemovePane.Adapter; +import org.eclipse.jpt.common.ui.internal.widgets.Pane; import org.eclipse.jpt.common.utility.internal.CollectionTools; import org.eclipse.jpt.common.utility.internal.Transformer; import org.eclipse.jpt.common.utility.internal.iterables.ListIterable; +import org.eclipse.jpt.common.utility.internal.model.value.CollectionPropertyValueModelAdapter; import org.eclipse.jpt.common.utility.internal.model.value.CompositeListValueModel; import org.eclipse.jpt.common.utility.internal.model.value.ItemPropertyListValueModelAdapter; import org.eclipse.jpt.common.utility.internal.model.value.ListAspectAdapter; -import org.eclipse.jpt.common.utility.internal.model.value.SimplePropertyValueModel; +import org.eclipse.jpt.common.utility.internal.model.value.SimpleCollectionValueModel; import org.eclipse.jpt.common.utility.internal.model.value.TransformationPropertyValueModel; -import org.eclipse.jpt.common.utility.internal.model.value.swing.ObjectListSelectionModel; +import org.eclipse.jpt.common.utility.model.value.CollectionValueModel; import org.eclipse.jpt.common.utility.model.value.ListValueModel; +import org.eclipse.jpt.common.utility.model.value.ModifiableCollectionValueModel; import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; -import org.eclipse.jpt.common.utility.model.value.ModifiablePropertyValueModel; import org.eclipse.jpt.jpa.core.context.JpaNamedContextNode; import org.eclipse.jpt.jpa.core.context.SequenceGenerator; import org.eclipse.jpt.jpa.core.context.TableGenerator; @@ -40,9 +39,9 @@ import org.eclipse.jpt.jpa.core.context.orm.OrmGenerator; import org.eclipse.jpt.jpa.core.context.orm.OrmSequenceGenerator; import org.eclipse.jpt.jpa.core.context.orm.OrmTableGenerator; import org.eclipse.jpt.jpa.ui.internal.details.GeneratorComposite; +import org.eclipse.jpt.jpa.ui.internal.details.GeneratorComposite.GeneratorBuilder; import org.eclipse.jpt.jpa.ui.internal.details.SequenceGeneratorComposite; import org.eclipse.jpt.jpa.ui.internal.details.TableGeneratorComposite; -import org.eclipse.jpt.jpa.ui.internal.details.GeneratorComposite.GeneratorBuilder; import org.eclipse.osgi.util.NLS; import org.eclipse.swt.SWT; import org.eclipse.swt.layout.GridData; @@ -81,10 +80,10 @@ import org.eclipse.ui.part.PageBook; */ public class EntityMappingsGeneratorsComposite extends Pane<EntityMappings> { - private ModifiablePropertyValueModel<OrmGenerator> generatorHolder; GeneratorComposite<SequenceGenerator> sequenceGeneratorPane; TableGeneratorComposite tableGeneratorPane; - private AddRemoveListPane<EntityMappings> listPane; + ModifiableCollectionValueModel<OrmGenerator> selectedGeneratorsModel; + PropertyValueModel<OrmGenerator> selectedGeneratorModel; /** * Creates a new <code>EntityMappingsGeneratorsComposite</code>. @@ -96,20 +95,43 @@ public class EntityMappingsGeneratorsComposite extends Pane<EntityMappings> Pane<? extends EntityMappings> parentPane, Composite parent) { - super(parentPane, parent, false); + super(parentPane, parent); + } + + @Override + protected void initialize() { + super.initialize(); + this.selectedGeneratorsModel = this.buildSelectedGeneratorsModel(); + this.selectedGeneratorModel = this.buildSelectedGeneratorModel(this.selectedGeneratorsModel); + } + + private ModifiableCollectionValueModel<OrmGenerator> buildSelectedGeneratorsModel() { + return new SimpleCollectionValueModel<OrmGenerator>(); + } + + protected PropertyValueModel<OrmGenerator> buildSelectedGeneratorModel(ModifiableCollectionValueModel<OrmGenerator> selectedGeneratorsModel) { + return new CollectionPropertyValueModelAdapter<OrmGenerator, OrmGenerator>(selectedGeneratorsModel) { + @Override + protected OrmGenerator buildValue() { + if (this.collectionModel.size() == 1) { + return this.collectionModel.iterator().next(); + } + return null; + } + }; } - void addGenerator(ObjectListSelectionModel listSelectionModel) { - addGeneratorFromDialog(listSelectionModel, buildAddGeneratorDialog()); + OrmGenerator addGenerator() { + return addGeneratorFromDialog(buildAddGeneratorDialog()); } protected AddGeneratorDialog buildAddGeneratorDialog() { return new AddGeneratorDialog(getShell(), this.getSubject().getPersistenceUnit()); } - protected void addGeneratorFromDialog(ObjectListSelectionModel listSelectionModel, AddGeneratorDialog dialog) { + protected OrmGenerator addGeneratorFromDialog(AddGeneratorDialog dialog) { if (dialog.open() != Window.OK) { - return; + return null; } String generatorType = dialog.getGeneratorType(); OrmGenerator generator; @@ -123,8 +145,7 @@ public class EntityMappingsGeneratorsComposite extends Pane<EntityMappings> throw new IllegalArgumentException(); } generator.setName(dialog.getName()); - this.generatorHolder.setValue(generator);//so that it gets selected in the List for the user to edit - listSelectionModel.setSelectedValue(generator); + return generator; } private ListValueModel<OrmGenerator> buildDisplayableGeneratorListHolder() { @@ -134,32 +155,31 @@ public class EntityMappingsGeneratorsComposite extends Pane<EntityMappings> ); } - private Adapter buildGeneratorAdapter() { - - return new AddRemoveListPane.AbstractAdapter() { + private Adapter<OrmGenerator> buildGeneratorAdapter() { - public void addNewItem(ObjectListSelectionModel listSelectionModel) { - addGenerator(listSelectionModel); + return new AddRemoveListPane.AbstractAdapter<OrmGenerator>() { + public OrmGenerator addNewItem() { + return addGenerator(); } + @Override + public PropertyValueModel<Boolean> buildRemoveButtonEnabledModel(CollectionValueModel<OrmGenerator> selectedItemsModel) { + return buildSingleSelectedItemEnabledModel(selectedItemsModel); + } - public void removeSelectedItems(ObjectListSelectionModel listSelectionModel) { - for (Object item : listSelectionModel.selectedValues()) { - if (item instanceof OrmSequenceGenerator) { - getSubject().removeSequenceGenerator((OrmSequenceGenerator) item); - } - else { - getSubject().removeTableGenerator((OrmTableGenerator) item); - } + public void removeSelectedItems(CollectionValueModel<OrmGenerator> selectedItemsModel) { + //assume only 1 item since remove button is disabled otherwise + OrmGenerator item = selectedItemsModel.iterator().next(); + if (item instanceof OrmSequenceGenerator) { + getSubject().removeSequenceGenerator((OrmSequenceGenerator) item); + } + else { + getSubject().removeTableGenerator((OrmTableGenerator) item); } } }; } - private ModifiablePropertyValueModel<OrmGenerator> buildGeneratorHolder() { - return new SimplePropertyValueModel<OrmGenerator>(); - } - private ILabelProvider buildGeneratorLabelProvider() { return new LabelProvider() { @Override @@ -192,16 +212,7 @@ public class EntityMappingsGeneratorsComposite extends Pane<EntityMappings> return new CompositeListValueModel<ListValueModel<? extends OrmGenerator>, OrmGenerator>(list); } - private PropertyValueModel<Boolean> buildPaneEnablerHolder() { - return new TransformationPropertyValueModel<EntityMappings, Boolean>(getSubjectHolder()) { - @Override - protected Boolean transform(EntityMappings value) { - return Boolean.valueOf(value != null); - } - }; - } - - private Transformer<OrmGenerator, Control> buildPaneTransformer() { + private Transformer<OrmGenerator, Control> buildPaneTransformer(final Composite container) { return new Transformer<OrmGenerator, Control>() { public Control transform(OrmGenerator generator) { @@ -210,16 +221,16 @@ public class EntityMappingsGeneratorsComposite extends Pane<EntityMappings> } if (generator instanceof OrmSequenceGenerator) { - return EntityMappingsGeneratorsComposite.this.sequenceGeneratorPane.getControl(); + return EntityMappingsGeneratorsComposite.this.getSequenceGeneratorComposite(container).getControl(); } - return EntityMappingsGeneratorsComposite.this.tableGeneratorPane.getControl(); + return EntityMappingsGeneratorsComposite.this.getTableGeneratorComposite(container).getControl(); } }; } private PropertyValueModel<SequenceGenerator> buildSequenceGeneratorHolder() { - return new TransformationPropertyValueModel<OrmGenerator, SequenceGenerator>(this.generatorHolder) { + return new TransformationPropertyValueModel<OrmGenerator, SequenceGenerator>(this.selectedGeneratorModel) { @Override protected SequenceGenerator transform_(OrmGenerator value) { return (value instanceof SequenceGenerator) ? (SequenceGenerator) value : null; @@ -244,7 +255,7 @@ public class EntityMappingsGeneratorsComposite extends Pane<EntityMappings> } private PropertyValueModel<TableGenerator> buildTableGeneratorHolder() { - return new TransformationPropertyValueModel<OrmGenerator, TableGenerator>(this.generatorHolder) { + return new TransformationPropertyValueModel<OrmGenerator, TableGenerator>(this.selectedGeneratorModel) { @Override protected TableGenerator transform_(OrmGenerator value) { return (value instanceof TableGenerator) ? (TableGenerator) value : null; @@ -268,54 +279,29 @@ public class EntityMappingsGeneratorsComposite extends Pane<EntityMappings> }; } - - @Override - protected void initialize() { - super.initialize(); - this.generatorHolder = buildGeneratorHolder(); - } - @Override protected void initializeLayout(Composite container) { - - container = addCollapsibleSection( - container, - JptUiDetailsOrmMessages.OrmGeneratorsComposite_groupBox - ); - // List pane - this.listPane = addListPane(container); - this.installPaneEnabler(); + addListPane(container); // Property pane - PropertyValueModel<SequenceGenerator> sequenceGeneratorHolder = - this.buildSequenceGeneratorHolder(); - PropertyValueModel<TableGenerator> tableGeneratorHolder = - this.buildTableGeneratorHolder(); PageBook pageBook = new PageBook(container, SWT.NULL); pageBook.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); - // Sequence Generator property pane - this.sequenceGeneratorPane = this.buildSequenceGeneratorComposite( - pageBook, - sequenceGeneratorHolder, - this.buildSequenceGeneratorBuilder() - ); - - // Table Generator property pane - this.tableGeneratorPane = new TableGeneratorComposite( - this, - tableGeneratorHolder, - pageBook, - this.buildTableGeneratorBuilder() - ); - - this.addAlignRight(this.sequenceGeneratorPane); - this.addAlignRight(this.tableGeneratorPane); this.installPaneSwitcher(pageBook); } + protected GeneratorComposite<SequenceGenerator> getSequenceGeneratorComposite(Composite container) { + if (this.sequenceGeneratorPane == null) { + this.sequenceGeneratorPane = + this.buildSequenceGeneratorComposite(container, + this.buildSequenceGeneratorHolder(), + this.buildSequenceGeneratorBuilder()); + } + return this.sequenceGeneratorPane; + } + protected GeneratorComposite<SequenceGenerator> buildSequenceGeneratorComposite( Composite parent, PropertyValueModel<SequenceGenerator> sequenceGeneratorHolder, @@ -329,27 +315,31 @@ public class EntityMappingsGeneratorsComposite extends Pane<EntityMappings> ); } - private AddRemoveListPane<EntityMappings> addListPane(Composite container) { + protected TableGeneratorComposite getTableGeneratorComposite(Composite container) { + if (this.tableGeneratorPane == null) { + this.tableGeneratorPane = + new TableGeneratorComposite(this, + this.buildTableGeneratorHolder(), + container, + this.buildTableGeneratorBuilder()); + } + return this.tableGeneratorPane; + } + + private AddRemoveListPane<EntityMappings, OrmGenerator> addListPane(Composite container) { - return new AddRemoveListPane<EntityMappings>( + return new AddRemoveListPane<EntityMappings, OrmGenerator>( this, container, this.buildGeneratorAdapter(), this.buildDisplayableGeneratorListHolder(), - this.generatorHolder, + this.selectedGeneratorsModel, this.buildGeneratorLabelProvider() ); } - private void installPaneEnabler() { - new PaneEnabler( - this.buildPaneEnablerHolder(), - this.listPane - ); - } - private void installPaneSwitcher(PageBook pageBook) { - new ControlSwitcher(this.generatorHolder, this.buildPaneTransformer(), pageBook); + new ControlSwitcher(this.selectedGeneratorModel, this.buildPaneTransformer(pageBook), pageBook); } private GeneratorBuilder<SequenceGenerator> buildSequenceGeneratorBuilder() { diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/orm/MetadataCompleteComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/orm/MetadataCompleteTriStateCheckBox.java index 5b05a7b27d..d56d20c1c3 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/orm/MetadataCompleteComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/orm/MetadataCompleteTriStateCheckBox.java @@ -11,6 +11,7 @@ package org.eclipse.jpt.jpa.ui.internal.details.orm; import org.eclipse.jpt.common.ui.internal.JptCommonUiMessages; import org.eclipse.jpt.common.ui.internal.widgets.Pane; +import org.eclipse.jpt.common.ui.internal.widgets.TriStateCheckBox; import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter; import org.eclipse.jpt.common.utility.internal.model.value.TransformationPropertyValueModel; import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; @@ -18,10 +19,13 @@ import org.eclipse.jpt.common.utility.model.value.ModifiablePropertyValueModel; import org.eclipse.jpt.jpa.core.context.orm.OrmTypeMapping; import org.eclipse.osgi.util.NLS; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; -public class MetadataCompleteComposite extends Pane<OrmTypeMapping> { +public class MetadataCompleteTriStateCheckBox extends Pane<OrmTypeMapping> { - public MetadataCompleteComposite(Pane<?> parentPane, + private TriStateCheckBox checkBox; + + public MetadataCompleteTriStateCheckBox(Pane<?> parentPane, PropertyValueModel<? extends OrmTypeMapping> subjectHolder, Composite parent) { @@ -29,20 +33,30 @@ public class MetadataCompleteComposite extends Pane<OrmTypeMapping> { } @Override + protected boolean addsComposite() { + return false; + } + + @Override + public Control getControl() { + return this.checkBox.getCheckBox(); + } + + @Override protected void initializeLayout(Composite container) { // TODO not sure the is the right thing to do; since metadata complete // has an "override" (from the persistence unit), not a default... - addTriStateCheckBoxWithDefault( + this.checkBox = addTriStateCheckBoxWithDefault( container, JptUiDetailsOrmMessages.MetadataCompleteComposite_metadataComplete, - buildMetadataCompleteHolder(), + buildSpecifiedMetadataCompleteHolder(), buildMetadataCompleteStringHolder(), null ); } - - private ModifiablePropertyValueModel<Boolean> buildMetadataCompleteHolder() { + + private ModifiablePropertyValueModel<Boolean> buildSpecifiedMetadataCompleteHolder() { return new PropertyAspectAdapter<OrmTypeMapping, Boolean>( getSubjectHolder(), OrmTypeMapping.SPECIFIED_METADATA_COMPLETE_PROPERTY) @@ -71,6 +85,7 @@ public class MetadataCompleteComposite extends Pane<OrmTypeMapping> { } }; } + private PropertyValueModel<Boolean> buildOverrideMetadataCompleteHolder() { return new PropertyAspectAdapter<OrmTypeMapping, Boolean>( getSubjectHolder(), diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/orm/OrmBasicMappingComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/orm/OrmBasicMappingComposite.java index 60f453b983..e3a3bfeffe 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/orm/OrmBasicMappingComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/orm/OrmBasicMappingComposite.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2009, 2010 Oracle. All rights reserved. + * Copyright (c) 2009, 2012 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. @@ -14,9 +14,12 @@ import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; import org.eclipse.jpt.jpa.core.context.BasicMapping; import org.eclipse.jpt.jpa.ui.internal.details.AbstractBasicMappingComposite; import org.eclipse.jpt.jpa.ui.internal.details.ColumnComposite; -import org.eclipse.jpt.jpa.ui.internal.details.FetchTypeComposite; -import org.eclipse.jpt.jpa.ui.internal.details.OptionalComposite; +import org.eclipse.jpt.jpa.ui.internal.details.FetchTypeComboViewer; +import org.eclipse.jpt.jpa.ui.internal.details.JptUiDetailsMessages; +import org.eclipse.jpt.jpa.ui.internal.details.OptionalTriStateCheckBox; +import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; public class OrmBasicMappingComposite extends AbstractBasicMappingComposite<BasicMapping> { @@ -28,18 +31,37 @@ public class OrmBasicMappingComposite extends AbstractBasicMappingComposite<Basi * @param widgetFactory The factory used to create various common widgets */ public OrmBasicMappingComposite(PropertyValueModel<? extends BasicMapping> subjectHolder, - Composite parent, - WidgetFactory widgetFactory) { + PropertyValueModel<Boolean> enabledModel, + Composite parent, + WidgetFactory widgetFactory) { - super(subjectHolder, parent, widgetFactory); + super(subjectHolder, enabledModel, parent, widgetFactory); } @Override - protected void initializeBasicSection(Composite container) { - new ColumnComposite(this, buildColumnHolder(), container); - new OrmMappingNameChooser(this, getSubjectHolder(), container); - new FetchTypeComposite(this, container); - new OptionalComposite(this, addSubPane(container, 4)); - } + protected Control initializeBasicSection(Composite container) { + container = this.addSubPane(container, 2, 0, 0, 0, 0); + + // Column widgets + ColumnComposite columnComposite = new ColumnComposite(this, buildColumnHolder(), container); + GridData gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.horizontalSpan = 2; + columnComposite.getControl().setLayoutData(gridData); + + // Name widgets + this.addLabel(container, JptUiDetailsOrmMessages.OrmMappingNameChooser_name); + new OrmMappingNameText(this, getSubjectHolder(), container); + // Fetch type widgets + this.addLabel(container, JptUiDetailsMessages.BasicGeneralSection_fetchLabel); + new FetchTypeComboViewer(this, container); + + // Optional widgets + OptionalTriStateCheckBox optionalCheckBox = new OptionalTriStateCheckBox(this, container); + gridData = new GridData(); + gridData.horizontalSpan = 2; + optionalCheckBox.getControl().setLayoutData(gridData); + + return container; + } }
\ No newline at end of file diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/orm/OrmBasicMappingUiDefinition.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/orm/OrmBasicMappingUiDefinition.java index febf82f355..21e925b595 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/orm/OrmBasicMappingUiDefinition.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/orm/OrmBasicMappingUiDefinition.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2008, 2009 Oracle. + * Copyright (c) 2008, 2012 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 @@ -46,9 +46,10 @@ public class OrmBasicMappingUiDefinition public JpaComposite buildAttributeMappingComposite( OrmXmlUiFactory factory, PropertyValueModel<OrmBasicMapping> subjectHolder, - Composite parent, + PropertyValueModel<Boolean> enabledModel, + Composite parent, WidgetFactory widgetFactory) { - return factory.createOrmBasicMappingComposite(subjectHolder, parent, widgetFactory); + return factory.createOrmBasicMappingComposite(subjectHolder, enabledModel, parent, widgetFactory); } } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/orm/OrmEmbeddableComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/orm/OrmEmbeddableComposite.java index 6717dbe577..3f2b0c0c10 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/orm/OrmEmbeddableComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/orm/OrmEmbeddableComposite.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2009, 2010 Oracle. All rights reserved. + * Copyright (c) 2009, 2012 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. @@ -15,9 +15,13 @@ import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; import org.eclipse.jpt.jpa.core.context.AccessHolder; import org.eclipse.jpt.jpa.core.context.orm.OrmEmbeddable; import org.eclipse.jpt.jpa.ui.details.JpaComposite; +import org.eclipse.jpt.jpa.ui.internal.JptUiMessages; import org.eclipse.jpt.jpa.ui.internal.details.AbstractEmbeddableComposite; -import org.eclipse.jpt.jpa.ui.internal.details.AccessTypeComposite; +import org.eclipse.jpt.jpa.ui.internal.details.AccessTypeComboViewer; +import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.ui.forms.widgets.Hyperlink; public class OrmEmbeddableComposite extends AbstractEmbeddableComposite<OrmEmbeddable> implements JpaComposite { @@ -34,10 +38,24 @@ public class OrmEmbeddableComposite extends AbstractEmbeddableComposite<OrmEmbed } @Override - protected void initializeEmbeddableSection(Composite container) { - new OrmJavaClassChooser(this, getSubjectHolder(), container); - new AccessTypeComposite(this, buildAccessHolder(), container); - new MetadataCompleteComposite(this, getSubjectHolder(), container); + protected Control initializeEmbeddableSection(Composite container) { + container = this.addSubPane(container, 2, 0, 0, 0, 0); + + // Java class widgets + Hyperlink javaClassHyperlink = this.addHyperlink(container, JptUiDetailsOrmMessages.OrmJavaClassChooser_javaClass); + new OrmJavaClassChooser(this, getSubjectHolder(), container, javaClassHyperlink); + + // Access type widgets + this.addLabel(container, JptUiMessages.AccessTypeComposite_access); + new AccessTypeComboViewer(this, buildAccessHolder(), container); + + // Metadata complete widgets + MetadataCompleteTriStateCheckBox metadataCompleteCheckBox = new MetadataCompleteTriStateCheckBox(this, getSubjectHolder(), container); + GridData gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.horizontalSpan = 2; + metadataCompleteCheckBox.getControl().setLayoutData(gridData); + + return container; } protected PropertyValueModel<AccessHolder> buildAccessHolder() { diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/orm/OrmEmbeddedIdMappingComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/orm/OrmEmbeddedIdMappingComposite.java index 939321c5d3..d59eb45db8 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/orm/OrmEmbeddedIdMappingComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/orm/OrmEmbeddedIdMappingComposite.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2009, 2010 Oracle. All rights reserved. + * Copyright (c) 2009, 2012 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. @@ -14,26 +14,39 @@ import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; import org.eclipse.jpt.jpa.core.context.EmbeddedIdMapping; import org.eclipse.jpt.jpa.ui.internal.details.AbstractEmbeddedIdMappingComposite; import org.eclipse.jpt.jpa.ui.internal.details.EmbeddedMappingOverridesComposite; +import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; public class OrmEmbeddedIdMappingComposite extends AbstractEmbeddedIdMappingComposite<EmbeddedIdMapping> { public OrmEmbeddedIdMappingComposite( PropertyValueModel<? extends EmbeddedIdMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory) { - super(subjectHolder, parent, widgetFactory); + super(subjectHolder, enabledModel, parent, widgetFactory); } @Override - protected void initializeEmbeddedIdSection(Composite container) { - new OrmMappingNameChooser(this, getSubjectHolder(), container); + protected Control initializeEmbeddedIdSection(Composite container) { + container = this.addSubPane(container, 2, 0, 0, 0, 0); - new EmbeddedMappingOverridesComposite( + // Name widgets + this.addLabel(container, JptUiDetailsOrmMessages.OrmMappingNameChooser_name); + new OrmMappingNameText(this, getSubjectHolder(), container); + + // Overrides widgets + EmbeddedMappingOverridesComposite overridesComposite = new EmbeddedMappingOverridesComposite( this, container); + GridData gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.horizontalSpan = 2; + overridesComposite.getControl().setLayoutData(gridData); + + return container; } } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/orm/OrmEmbeddedIdMappingUiDefinition.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/orm/OrmEmbeddedIdMappingUiDefinition.java index 9d8a08c1ff..3f35a515c3 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/orm/OrmEmbeddedIdMappingUiDefinition.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/orm/OrmEmbeddedIdMappingUiDefinition.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2008, 2009 Oracle. + * Copyright (c) 2008, 2012 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 @@ -48,9 +48,10 @@ public class OrmEmbeddedIdMappingUiDefinition public JpaComposite buildAttributeMappingComposite( OrmXmlUiFactory factory, PropertyValueModel<OrmEmbeddedIdMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory) { - return factory.createOrmEmbeddedIdMappingComposite(subjectHolder, parent, widgetFactory); + return factory.createOrmEmbeddedIdMappingComposite(subjectHolder, enabledModel, parent, widgetFactory); } } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/orm/OrmEmbeddedMappingComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/orm/OrmEmbeddedMappingComposite.java index 44a45c4e49..e5f25852cf 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/orm/OrmEmbeddedMappingComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/orm/OrmEmbeddedMappingComposite.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2009, 2010 Oracle. All rights reserved. + * Copyright (c) 2009, 2012 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. @@ -15,7 +15,9 @@ import org.eclipse.jpt.jpa.core.context.EmbeddedMapping; import org.eclipse.jpt.jpa.ui.internal.details.AbstractEmbeddedMappingComposite; import org.eclipse.jpt.jpa.ui.internal.details.EmbeddedMappingOverridesComposite; import org.eclipse.jpt.jpa.ui.internal.details.java.BaseJavaUiFactory; +import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; /** * Here the layout of this pane: @@ -45,20 +47,30 @@ public class OrmEmbeddedMappingComposite * @param widgetFactory The factory used to create various common widgets */ public OrmEmbeddedMappingComposite(PropertyValueModel<? extends EmbeddedMapping> subjectHolder, - Composite parent, + PropertyValueModel<Boolean> enabledModel, + Composite parent, WidgetFactory widgetFactory) { - super(subjectHolder, parent, widgetFactory); + super(subjectHolder, enabledModel, parent, widgetFactory); } @Override - protected void initializeEmbeddedSection(Composite container) { - new OrmMappingNameChooser(this, getSubjectHolder(), container); + protected Control initializeEmbeddedSection(Composite container) { + container = this.addSubPane(container, 2, 0, 0, 0, 0); - new EmbeddedMappingOverridesComposite( - this, - container - ); + // Name widgets + this.addLabel(container, JptUiDetailsOrmMessages.OrmMappingNameChooser_name); + new OrmMappingNameText(this, getSubjectHolder(), container); + + // Overrides widgets + EmbeddedMappingOverridesComposite overridesComposite = new EmbeddedMappingOverridesComposite( + this, + container); + GridData gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.horizontalSpan = 2; + overridesComposite.getControl().setLayoutData(gridData); + + return container; } }
\ No newline at end of file diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/orm/OrmEmbeddedMappingUiDefinition.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/orm/OrmEmbeddedMappingUiDefinition.java index 532f197eb0..1e4d7e008f 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/orm/OrmEmbeddedMappingUiDefinition.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/orm/OrmEmbeddedMappingUiDefinition.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2008, 2009 Oracle. + * Copyright (c) 2008, 2012 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 @@ -48,9 +48,10 @@ public class OrmEmbeddedMappingUiDefinition public JpaComposite buildAttributeMappingComposite( OrmXmlUiFactory factory, PropertyValueModel<OrmEmbeddedMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory) { - return factory.createOrmEmbeddedMappingComposite(subjectHolder, parent, widgetFactory); + return factory.createOrmEmbeddedMappingComposite(subjectHolder, enabledModel, parent, widgetFactory); } } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/orm/OrmIdMappingComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/orm/OrmIdMappingComposite.java index 83fb1c9850..4a5c5309e6 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/orm/OrmIdMappingComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/orm/OrmIdMappingComposite.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2009, 2011 Oracle. All rights reserved. + * Copyright (c) 2009, 2012 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. @@ -14,23 +14,36 @@ import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; import org.eclipse.jpt.jpa.core.context.IdMapping; import org.eclipse.jpt.jpa.ui.internal.details.AbstractIdMappingComposite; import org.eclipse.jpt.jpa.ui.internal.details.ColumnComposite; +import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; public class OrmIdMappingComposite extends AbstractIdMappingComposite<IdMapping> { public OrmIdMappingComposite( PropertyValueModel<? extends IdMapping> subjectHolder, - Composite parent, + PropertyValueModel<Boolean> enabledModel, + Composite parent, WidgetFactory widgetFactory) { - super(subjectHolder, parent, widgetFactory); + super(subjectHolder, enabledModel, parent, widgetFactory); } @Override - protected void initializeIdSection(Composite container) { - new ColumnComposite(this, buildColumnHolder(), container); - new OrmMappingNameChooser(this, getSubjectHolder(), container); + protected Control initializeIdSection(Composite container) { + container = this.addSubPane(container, 2, 0, 0, 0, 0); + + ColumnComposite columnComposite = new ColumnComposite(this, buildColumnHolder(), container); + GridData gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.horizontalSpan = 2; + columnComposite.getControl().setLayoutData(gridData); + + // Name widgets + this.addLabel(container, JptUiDetailsOrmMessages.OrmMappingNameChooser_name); + new OrmMappingNameText(this, getSubjectHolder(), container); + + return container; } } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/orm/OrmIdMappingUiDefinition.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/orm/OrmIdMappingUiDefinition.java index a66e67eba2..bfc26d38c0 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/orm/OrmIdMappingUiDefinition.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/orm/OrmIdMappingUiDefinition.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2008, 2009 Oracle. + * Copyright (c) 2008, 2012 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 @@ -48,9 +48,10 @@ public class OrmIdMappingUiDefinition public JpaComposite buildAttributeMappingComposite( OrmXmlUiFactory factory, PropertyValueModel<OrmIdMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory) { - return factory.createOrmIdMappingComposite(subjectHolder, parent, widgetFactory); + return factory.createOrmIdMappingComposite(subjectHolder, enabledModel, parent, widgetFactory); } } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/orm/OrmInheritanceComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/orm/OrmInheritanceComposite.java index cbeadd2cd5..be01b8eebc 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/orm/OrmInheritanceComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/orm/OrmInheritanceComposite.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2008, 2010 Oracle. All rights reserved. + * Copyright (c) 2008, 2012 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. @@ -13,6 +13,7 @@ import org.eclipse.jpt.common.ui.internal.widgets.Pane; import org.eclipse.jpt.jpa.core.context.orm.OrmEntity; import org.eclipse.jpt.jpa.ui.internal.details.AbstractInheritanceComposite; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; /** * The pane used for java inheritance. @@ -38,7 +39,7 @@ public class OrmInheritanceComposite extends AbstractInheritanceComposite<OrmEnt } @Override - protected void addPrimaryKeyJoinColumnsComposite(Composite container) { - new OrmPrimaryKeyJoinColumnsComposite(this, container); + protected Control addPrimaryKeyJoinColumnsComposite(Composite container) { + return new OrmPrimaryKeyJoinColumnsComposite(this, container).getControl(); } }
\ No newline at end of file diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/orm/OrmJavaClassChooser.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/orm/OrmJavaClassChooser.java index 84bdc29914..4a44f3c7d6 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/orm/OrmJavaClassChooser.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/orm/OrmJavaClassChooser.java @@ -17,6 +17,7 @@ import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; import org.eclipse.jpt.common.utility.model.value.ModifiablePropertyValueModel; import org.eclipse.jpt.jpa.core.context.orm.OrmTypeMapping; import org.eclipse.swt.widgets.Composite; +import org.eclipse.ui.forms.widgets.Hyperlink; /** * Here the layout of this pane: @@ -39,7 +40,7 @@ import org.eclipse.swt.widgets.Composite; * @version 2.0 * @since 1.0 */ -public class OrmJavaClassChooser extends Pane<OrmTypeMapping> { +public class OrmJavaClassChooser extends ClassChooserPane<OrmTypeMapping> { /** * Creates a new <code>XmlJavaClassChooser</code>. @@ -50,68 +51,44 @@ public class OrmJavaClassChooser extends Pane<OrmTypeMapping> { */ public OrmJavaClassChooser(Pane<?> parentPane, PropertyValueModel<? extends OrmTypeMapping> subjectHolder, - Composite parent) { + Composite parent, + Hyperlink hyperlink) { - super(parentPane, subjectHolder, parent); + super(parentPane, subjectHolder, parent, hyperlink); } - public OrmJavaClassChooser(Pane<?> parentPane, - PropertyValueModel<? extends OrmTypeMapping> subjectHolder, - Composite parent, - boolean automaticallyAlignWidgets) { - - super(parentPane, subjectHolder, parent, automaticallyAlignWidgets); - } - - - private ClassChooserPane<OrmTypeMapping> addClassChooser(Composite container) { - - return new ClassChooserPane<OrmTypeMapping>(this, container) { - + @Override + protected ModifiablePropertyValueModel<String> buildTextHolder() { + return new PropertyAspectAdapter<OrmTypeMapping, String>(getSubjectHolder(), OrmTypeMapping.CLASS_PROPERTY) { @Override - protected ModifiablePropertyValueModel<String> buildTextHolder() { - return new PropertyAspectAdapter<OrmTypeMapping, String>(getSubjectHolder(), OrmTypeMapping.CLASS_PROPERTY) { - @Override - protected String buildValue_() { - return this.subject.getClass_(); - } - - @Override - protected void setValue_(String value) { - this.subject.setClass(value); - } - }; + protected String buildValue_() { + return this.subject.getClass_(); } @Override - protected String getClassName() { - return getSubject().getClass_(); + protected void setValue_(String value) { + this.subject.setClass(value); } + }; + } - @Override - protected String getLabelText() { - return JptUiDetailsOrmMessages.OrmJavaClassChooser_javaClass; - } - - @Override - protected IJavaProject getJavaProject() { - return getSubject().getJpaProject().getJavaProject(); - } - - @Override - protected void setClassName(String className) { - getSubject().setClass(className); - } + @Override + protected String getClassName() { + return getSubject().getClass_(); + } - @Override - protected String getFullyQualifiedClassName() { - return getSubject().getPersistentType().getName(); - } - }; + @Override + protected IJavaProject getJavaProject() { + return getSubject().getJpaProject().getJavaProject(); + } + + @Override + protected void setClassName(String className) { + getSubject().setClass(className); } @Override - protected void initializeLayout(Composite container) { - addClassChooser(container); + protected String getFullyQualifiedClassName() { + return getSubject().getPersistentType().getName(); } }
\ No newline at end of file diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/orm/OrmManyToManyMappingComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/orm/OrmManyToManyMappingComposite.java index 21a0743a69..9420412445 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/orm/OrmManyToManyMappingComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/orm/OrmManyToManyMappingComposite.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2006, 2011 Oracle. All rights reserved. + * Copyright (c) 2006, 2012 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. @@ -15,11 +15,15 @@ import org.eclipse.jpt.jpa.core.context.ManyToManyMapping; import org.eclipse.jpt.jpa.core.context.ManyToManyRelationship; import org.eclipse.jpt.jpa.ui.internal.details.AbstractManyToManyMappingComposite; import org.eclipse.jpt.jpa.ui.internal.details.CascadeComposite; -import org.eclipse.jpt.jpa.ui.internal.details.FetchTypeComposite; +import org.eclipse.jpt.jpa.ui.internal.details.FetchTypeComboViewer; +import org.eclipse.jpt.jpa.ui.internal.details.JptUiDetailsMessages; import org.eclipse.jpt.jpa.ui.internal.details.ManyToManyJoiningStrategyPane; import org.eclipse.jpt.jpa.ui.internal.details.OrderingComposite; -import org.eclipse.jpt.jpa.ui.internal.details.TargetEntityComposite; +import org.eclipse.jpt.jpa.ui.internal.details.TargetEntityClassChooser; +import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.ui.forms.widgets.Hyperlink; /** * Here the layout of this pane: @@ -53,9 +57,9 @@ import org.eclipse.swt.widgets.Composite; * -----------------------------------------------------------------------------</pre> * * @see {@link ManyToManyMapping} - * @see {@link TargetEntityComposite} + * @see {@link TargetEntityClassChooser} * @see {@link ManyToManyJoiningStrategyPane} - * @see {@link FetchTypeComposite} + * @see {@link FetchTypeComboViewer} * @see {@link CascadeComposite} * @see {@link OrderingComposite} * @@ -73,18 +77,36 @@ public class OrmManyToManyMappingComposite * @param widgetFactory The factory used to create various common widgets */ public OrmManyToManyMappingComposite(PropertyValueModel<? extends ManyToManyMapping> subjectHolder, - Composite parent, - WidgetFactory widgetFactory) { + PropertyValueModel<Boolean> enabledModel, + Composite parent, + WidgetFactory widgetFactory) { - super(subjectHolder, parent, widgetFactory); + super(subjectHolder, enabledModel, parent, widgetFactory); } @Override - protected void initializeManyToManySection(Composite container) { - new TargetEntityComposite(this, container); - new OrmMappingNameChooser(this, getSubjectHolder(), container); - new FetchTypeComposite(this, container); - new CascadeComposite(this, buildCascadeHolder(), addSubPane(container, 5)); + protected Control initializeManyToManySection(Composite container) { + container = this.addSubPane(container, 2, 0, 0, 0, 0); + + // Target entity widgets + Hyperlink targetEntityHyperlink = this.addHyperlink(container, JptUiDetailsMessages.TargetEntityChooser_label); + new TargetEntityClassChooser(this, container, targetEntityHyperlink); + + // Name widgets + this.addLabel(container, JptUiDetailsOrmMessages.OrmMappingNameChooser_name); + new OrmMappingNameText(this, getSubjectHolder(), container); + + // Fetch type widgets + this.addLabel(container, JptUiDetailsMessages.BasicGeneralSection_fetchLabel); + new FetchTypeComboViewer(this, container); + + // Cascade widgets + CascadeComposite cascadeComposite = new CascadeComposite(this, buildCascadeHolder(), container); + GridData gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.horizontalSpan = 2; + cascadeComposite.getControl().setLayoutData(gridData); + + return container; } } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/orm/OrmManyToManyMappingUiDefinition.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/orm/OrmManyToManyMappingUiDefinition.java index ee2e44615a..db65fae6e6 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/orm/OrmManyToManyMappingUiDefinition.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/orm/OrmManyToManyMappingUiDefinition.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2008, 2009 Oracle. + * Copyright (c) 2008, 2012 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 @@ -48,9 +48,10 @@ public class OrmManyToManyMappingUiDefinition public JpaComposite buildAttributeMappingComposite( OrmXmlUiFactory factory, PropertyValueModel<OrmManyToManyMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory) { - return factory.createOrmManyToManyMappingComposite(subjectHolder, parent, widgetFactory); + return factory.createOrmManyToManyMappingComposite(subjectHolder, enabledModel, parent, widgetFactory); } } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/orm/OrmManyToOneMappingComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/orm/OrmManyToOneMappingComposite.java index 8cb0a652c8..9b1b1be7a1 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/orm/OrmManyToOneMappingComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/orm/OrmManyToOneMappingComposite.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2006, 2011 Oracle. All rights reserved. + * Copyright (c) 2006, 2012 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. @@ -16,11 +16,15 @@ import org.eclipse.jpt.jpa.core.context.orm.OrmManyToOneMapping; import org.eclipse.jpt.jpa.core.context.orm.OrmManyToOneRelationship; import org.eclipse.jpt.jpa.ui.internal.details.AbstractManyToOneMappingComposite; import org.eclipse.jpt.jpa.ui.internal.details.CascadeComposite; -import org.eclipse.jpt.jpa.ui.internal.details.FetchTypeComposite; +import org.eclipse.jpt.jpa.ui.internal.details.FetchTypeComboViewer; +import org.eclipse.jpt.jpa.ui.internal.details.JptUiDetailsMessages; import org.eclipse.jpt.jpa.ui.internal.details.ManyToOneJoiningStrategyPane; -import org.eclipse.jpt.jpa.ui.internal.details.OptionalComposite; -import org.eclipse.jpt.jpa.ui.internal.details.TargetEntityComposite; +import org.eclipse.jpt.jpa.ui.internal.details.OptionalTriStateCheckBox; +import org.eclipse.jpt.jpa.ui.internal.details.TargetEntityClassChooser; +import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.ui.forms.widgets.Hyperlink; /** * Here the layout of this pane: @@ -54,10 +58,10 @@ import org.eclipse.swt.widgets.Composite; * -----------------------------------------------------------------------------</pre> * * @see {@link ManyToOneMapping} - * @see {@link TargetEntityComposite} + * @see {@link TargetEntityClassChooser} * @see {@link ManyToOneJoiningStrategyPane} - * @see {@link FetchTypeComposite} - * @see {@link OptionalComposite} + * @see {@link FetchTypeComboViewer} + * @see {@link OptionalTriStateCheckBox} * @see {@link CascadeComposite} * * @version 2.3 @@ -74,19 +78,42 @@ public class OrmManyToOneMappingComposite * @param widgetFactory The factory used to create various common widgets */ public OrmManyToOneMappingComposite(PropertyValueModel<? extends OrmManyToOneMapping> subjectHolder, - Composite parent, - WidgetFactory widgetFactory) { + PropertyValueModel<Boolean> enabledModel, + Composite parent, + WidgetFactory widgetFactory) { - super(subjectHolder, parent, widgetFactory); + super(subjectHolder, enabledModel, parent, widgetFactory); } @Override - protected void initializeManyToOneSection(Composite container) { - new TargetEntityComposite(this, container); - new OrmMappingNameChooser(this, getSubjectHolder(), container); - new FetchTypeComposite(this, container); - new OptionalComposite(this, container); - new CascadeComposite(this, buildCascadeHolder(), addSubPane(container, 5)); + protected Control initializeManyToOneSection(Composite container) { + container = this.addSubPane(container, 2, 0, 0, 0, 0); + + // Target entity widgets + Hyperlink targetEntityHyperlink = this.addHyperlink(container, JptUiDetailsMessages.TargetEntityChooser_label); + new TargetEntityClassChooser(this, container, targetEntityHyperlink); + + // Name widgets + this.addLabel(container, JptUiDetailsOrmMessages.OrmMappingNameChooser_name); + new OrmMappingNameText(this, getSubjectHolder(), container); + + // Fetch type widgets + this.addLabel(container, JptUiDetailsMessages.BasicGeneralSection_fetchLabel); + new FetchTypeComboViewer(this, container); + + // Optional widgets + OptionalTriStateCheckBox optionalCheckBox = new OptionalTriStateCheckBox(this, container); + GridData gridData = new GridData(); + gridData.horizontalSpan = 2; + optionalCheckBox.getControl().setLayoutData(gridData); + + // Cascade widgets + CascadeComposite cascadeComposite = new CascadeComposite(this, buildCascadeHolder(), container); + gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.horizontalSpan = 2; + cascadeComposite.getControl().setLayoutData(gridData); + + return container; } } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/orm/OrmManyToOneMappingUiDefinition.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/orm/OrmManyToOneMappingUiDefinition.java index 2738762508..d54ff6310f 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/orm/OrmManyToOneMappingUiDefinition.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/orm/OrmManyToOneMappingUiDefinition.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2008, 2009 Oracle. + * Copyright (c) 2008, 2012 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 @@ -48,9 +48,10 @@ public class OrmManyToOneMappingUiDefinition public JpaComposite buildAttributeMappingComposite( OrmXmlUiFactory factory, PropertyValueModel<OrmManyToOneMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory) { - return factory.createOrmManyToOneMappingComposite(subjectHolder, parent, widgetFactory); + return factory.createOrmManyToOneMappingComposite(subjectHolder, enabledModel, parent, widgetFactory); } } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/orm/OrmMappedSuperclassComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/orm/OrmMappedSuperclassComposite.java index b26ea5dd75..b16ecc441d 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/orm/OrmMappedSuperclassComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/orm/OrmMappedSuperclassComposite.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2009, 2010 Oracle. All rights reserved. + * Copyright (c) 2009, 2012 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. @@ -15,10 +15,15 @@ import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; import org.eclipse.jpt.jpa.core.context.AccessHolder; import org.eclipse.jpt.jpa.core.context.orm.OrmMappedSuperclass; import org.eclipse.jpt.jpa.ui.details.JpaComposite; +import org.eclipse.jpt.jpa.ui.internal.JptUiMessages; import org.eclipse.jpt.jpa.ui.internal.details.AbstractMappedSuperclassComposite; -import org.eclipse.jpt.jpa.ui.internal.details.AccessTypeComposite; -import org.eclipse.jpt.jpa.ui.internal.details.IdClassComposite; +import org.eclipse.jpt.jpa.ui.internal.details.AccessTypeComboViewer; +import org.eclipse.jpt.jpa.ui.internal.details.IdClassChooser; +import org.eclipse.jpt.jpa.ui.internal.details.JptUiDetailsMessages; +import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.ui.forms.widgets.Hyperlink; public class OrmMappedSuperclassComposite extends AbstractMappedSuperclassComposite<OrmMappedSuperclass> @@ -33,11 +38,28 @@ public class OrmMappedSuperclassComposite } @Override - protected void initializeMappedSuperclassSection(Composite container) { - new OrmJavaClassChooser(this, getSubjectHolder(), container); - new AccessTypeComposite(this, buildAccessHolder(), container); - new IdClassComposite(this, buildIdClassReferenceHolder(), container); - new MetadataCompleteComposite(this, getSubjectHolder(), container); + protected Control initializeMappedSuperclassSection(Composite container) { + container = this.addSubPane(container, 2, 0, 0, 0, 0); + + // Java class widgets + Hyperlink javaClassHyperlink = this.addHyperlink(container, JptUiDetailsOrmMessages.OrmJavaClassChooser_javaClass); + new OrmJavaClassChooser(this, getSubjectHolder(), container, javaClassHyperlink); + + // Access type widgets + this.addLabel(container, JptUiMessages.AccessTypeComposite_access); + new AccessTypeComboViewer(this, this.buildAccessHolder(), container); + + // Id class widgets + Hyperlink hyperlink = this.addHyperlink(container,JptUiDetailsMessages.IdClassComposite_label); + new IdClassChooser(this, this.buildIdClassReferenceHolder(), container, hyperlink); + + // Metadata complete widgets + MetadataCompleteTriStateCheckBox metadataCompleteCheckBox = new MetadataCompleteTriStateCheckBox(this, getSubjectHolder(), container); + GridData gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.horizontalSpan = 2; + metadataCompleteCheckBox.getControl().setLayoutData(gridData); + + return container; } protected PropertyValueModel<AccessHolder> buildAccessHolder() { diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/orm/OrmMappingNameChooser.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/orm/OrmMappingNameText.java index 1bd995b4c5..83672c7013 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/orm/OrmMappingNameChooser.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/orm/OrmMappingNameText.java @@ -16,6 +16,8 @@ import org.eclipse.jpt.common.utility.model.value.ModifiablePropertyValueModel; import org.eclipse.jpt.jpa.core.context.AttributeMapping; import org.eclipse.jpt.jpa.core.context.orm.OrmAttributeMapping; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.swt.widgets.Text; /** * @see OrmPersistentAttributeDetailsPage - The parent container @@ -23,17 +25,20 @@ import org.eclipse.swt.widgets.Composite; * @version 2.3 * @since 1.0 */ -public class OrmMappingNameChooser +public class OrmMappingNameText extends Pane<AttributeMapping> { + + private Text text; + /** - * Creates a new <code>XmlJavaAttributeChooser</code>. + * Creates a new <code>OrmMappingNameText</code>. * * @param parentPane The parent container of this one * @param subjectHolder The holder of this pane's subject * @param parent The parent container */ - public OrmMappingNameChooser(Pane<?> parentPane, + public OrmMappingNameText(Pane<?> parentPane, PropertyValueModel<? extends AttributeMapping> subjectHolder, Composite parent) { @@ -41,13 +46,23 @@ public class OrmMappingNameChooser } @Override + protected boolean addsComposite() { + return false; + } + + @Override + public Control getControl() { + return this.text; + } + + @Override protected void initializeLayout(Composite container) { - this.addLabeledText( + this.text = this.addText( container, - JptUiDetailsOrmMessages.OrmMappingNameChooser_name, buildNameHolder() ); } + private ModifiablePropertyValueModel<String> buildNameHolder() { return new PropertyAspectAdapter<AttributeMapping, String>(getSubjectHolder(), OrmAttributeMapping.NAME_PROPERTY) { @Override diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/orm/OrmOneToManyMappingComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/orm/OrmOneToManyMappingComposite.java index da0df67b48..2811f1c55b 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/orm/OrmOneToManyMappingComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/orm/OrmOneToManyMappingComposite.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2006, 2011 Oracle. All rights reserved. + * Copyright (c) 2006, 2012 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. @@ -15,11 +15,15 @@ import org.eclipse.jpt.jpa.core.context.OneToManyMapping; import org.eclipse.jpt.jpa.core.context.OneToManyRelationship; import org.eclipse.jpt.jpa.ui.internal.details.AbstractOneToManyMappingComposite; import org.eclipse.jpt.jpa.ui.internal.details.CascadeComposite; -import org.eclipse.jpt.jpa.ui.internal.details.FetchTypeComposite; +import org.eclipse.jpt.jpa.ui.internal.details.FetchTypeComboViewer; import org.eclipse.jpt.jpa.ui.internal.details.JoinTableComposite; +import org.eclipse.jpt.jpa.ui.internal.details.JptUiDetailsMessages; import org.eclipse.jpt.jpa.ui.internal.details.OrderingComposite; -import org.eclipse.jpt.jpa.ui.internal.details.TargetEntityComposite; +import org.eclipse.jpt.jpa.ui.internal.details.TargetEntityClassChooser; +import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.ui.forms.widgets.Hyperlink; /** * Here the layout of this pane: @@ -54,10 +58,10 @@ import org.eclipse.swt.widgets.Composite; * * @see OneToManyMapping * @see CascadeComposite - * @see FetchTypeComposite + * @see FetchTypeComboViewer * @see JoinTableComposite * @see OrderingComposite - * @see TargetEntityComposite + * @see TargetEntityClassChooser * * @version 2.3 * @since 1.0 @@ -73,17 +77,35 @@ public class OrmOneToManyMappingComposite * @param widgetFactory The factory used to create various common widgets */ public OrmOneToManyMappingComposite(PropertyValueModel<? extends OneToManyMapping> subjectHolder, - Composite parent, - WidgetFactory widgetFactory) { + PropertyValueModel<Boolean> enabledModel, + Composite parent, + WidgetFactory widgetFactory) { - super(subjectHolder, parent, widgetFactory); + super(subjectHolder, enabledModel, parent, widgetFactory); } @Override - protected void initializeOneToManySection(Composite container) { - new TargetEntityComposite(this, container); - new OrmMappingNameChooser(this, getSubjectHolder(), container); - new FetchTypeComposite(this, container); - new CascadeComposite(this, buildCascadeHolder(), addSubPane(container, 5)); + protected Control initializeOneToManySection(Composite container) { + container = this.addSubPane(container, 2, 0, 0, 0, 0); + + // Target entity widgets + Hyperlink targetEntityHyperlink = this.addHyperlink(container, JptUiDetailsMessages.TargetEntityChooser_label); + new TargetEntityClassChooser(this, container, targetEntityHyperlink); + + // Name widgets + this.addLabel(container, JptUiDetailsOrmMessages.OrmMappingNameChooser_name); + new OrmMappingNameText(this, getSubjectHolder(), container); + + // Fetch type widgets + this.addLabel(container, JptUiDetailsMessages.BasicGeneralSection_fetchLabel); + new FetchTypeComboViewer(this, container); + + // Cascade widgets + CascadeComposite cascadeComposite = new CascadeComposite(this, buildCascadeHolder(), container); + GridData gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.horizontalSpan = 2; + cascadeComposite.getControl().setLayoutData(gridData); + + return container; } }
\ No newline at end of file diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/orm/OrmOneToManyMappingUiDefinition.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/orm/OrmOneToManyMappingUiDefinition.java index f899ac6b7c..2d1ed9c681 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/orm/OrmOneToManyMappingUiDefinition.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/orm/OrmOneToManyMappingUiDefinition.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2008, 2009 Oracle. + * Copyright (c) 2008, 2012 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 @@ -48,9 +48,10 @@ public class OrmOneToManyMappingUiDefinition public JpaComposite buildAttributeMappingComposite( OrmXmlUiFactory factory, PropertyValueModel<OrmOneToManyMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory) { - return factory.createOrmOneToManyMappingComposite(subjectHolder, parent, widgetFactory); + return factory.createOrmOneToManyMappingComposite(subjectHolder, enabledModel, parent, widgetFactory); } } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/orm/OrmOneToOneMappingComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/orm/OrmOneToOneMappingComposite.java index e072ae3c81..27b2e0fd3c 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/orm/OrmOneToOneMappingComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/orm/OrmOneToOneMappingComposite.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2007, 2011 Oracle. All rights reserved. + * Copyright (c) 2007, 2012 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. @@ -15,10 +15,14 @@ import org.eclipse.jpt.jpa.core.context.OneToOneMapping; import org.eclipse.jpt.jpa.core.context.OneToOneRelationship; import org.eclipse.jpt.jpa.ui.internal.details.AbstractOneToOneMappingComposite; import org.eclipse.jpt.jpa.ui.internal.details.CascadeComposite; -import org.eclipse.jpt.jpa.ui.internal.details.FetchTypeComposite; -import org.eclipse.jpt.jpa.ui.internal.details.OptionalComposite; -import org.eclipse.jpt.jpa.ui.internal.details.TargetEntityComposite; +import org.eclipse.jpt.jpa.ui.internal.details.FetchTypeComboViewer; +import org.eclipse.jpt.jpa.ui.internal.details.JptUiDetailsMessages; +import org.eclipse.jpt.jpa.ui.internal.details.OptionalTriStateCheckBox; +import org.eclipse.jpt.jpa.ui.internal.details.TargetEntityClassChooser; +import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.ui.forms.widgets.Hyperlink; /** * Here the layout of this pane: @@ -52,10 +56,10 @@ import org.eclipse.swt.widgets.Composite; * -----------------------------------------------------------------------------</pre> * * @see OneToOneMapping - * @see TargetEntityComposite + * @see TargetEntityClassChooser * @see JoiningStrategyComposite - * @see FetchTypeComposite - * @see OptionalComposite + * @see FetchTypeComboViewer + * @see OptionalTriStateCheckBox * @see CascadeComposite * * @version 2.3 @@ -72,20 +76,41 @@ public class OrmOneToOneMappingComposite * @param widgetFactory The factory used to create various common widgets */ public OrmOneToOneMappingComposite(PropertyValueModel<? extends OneToOneMapping> subjectHolder, - Composite parent, + PropertyValueModel<Boolean> enabledModel, + Composite parent, WidgetFactory widgetFactory) { - super(subjectHolder, parent, widgetFactory); + super(subjectHolder, enabledModel, parent, widgetFactory); } @Override - protected void initializeOneToOneSection(Composite container) { - new TargetEntityComposite(this, container); - new OrmMappingNameChooser(this, getSubjectHolder(), container); - new FetchTypeComposite(this, container); - new OptionalComposite(this, container); - new CascadeComposite(this, buildCascadeHolder(), addSubPane(container, 5)); - } + protected Control initializeOneToOneSection(Composite container) { + container = this.addSubPane(container, 2, 0, 0, 0, 0); + + // Target entity widgets + Hyperlink targetEntityHyperlink = this.addHyperlink(container, JptUiDetailsMessages.TargetEntityChooser_label); + new TargetEntityClassChooser(this, container, targetEntityHyperlink); + + // Name widgets + this.addLabel(container, JptUiDetailsOrmMessages.OrmMappingNameChooser_name); + new OrmMappingNameText(this, getSubjectHolder(), container); + // Fetch type widgets + this.addLabel(container, JptUiDetailsMessages.BasicGeneralSection_fetchLabel); + new FetchTypeComboViewer(this, container); + // Optional widgets + OptionalTriStateCheckBox optionalCheckBox = new OptionalTriStateCheckBox(this, container); + GridData gridData = new GridData(); + gridData.horizontalSpan = 2; + optionalCheckBox.getControl().setLayoutData(gridData); + + // Cascade widgets + CascadeComposite cascadeComposite = new CascadeComposite(this, buildCascadeHolder(), container); + gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.horizontalSpan = 2; + cascadeComposite.getControl().setLayoutData(gridData); + + return container; + } }
\ No newline at end of file diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/orm/OrmOneToOneMappingUiDefinition.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/orm/OrmOneToOneMappingUiDefinition.java index c37fa42c50..03c5626dc3 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/orm/OrmOneToOneMappingUiDefinition.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/orm/OrmOneToOneMappingUiDefinition.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2008, 2009 Oracle. + * Copyright (c) 2008, 2012 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 @@ -48,9 +48,10 @@ public class OrmOneToOneMappingUiDefinition public JpaComposite buildAttributeMappingComposite( OrmXmlUiFactory factory, PropertyValueModel<OrmOneToOneMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory) { - return factory.createOrmOneToOneMappingComposite(subjectHolder, parent, widgetFactory); + return factory.createOrmOneToOneMappingComposite(subjectHolder, enabledModel, parent, widgetFactory); } } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/orm/OrmPackageChooser.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/orm/OrmPackageChooser.java index c58e9f031a..702f0b266f 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/orm/OrmPackageChooser.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/orm/OrmPackageChooser.java @@ -33,7 +33,7 @@ import org.eclipse.swt.widgets.Composite; * @version 2.0 * @since 2.0 */ -public class OrmPackageChooser extends Pane<EntityMappings> +public class OrmPackageChooser extends PackageChooserPane<EntityMappings> { /** * Creates a new <code>XmlPackageChooser</code>. @@ -47,52 +47,33 @@ public class OrmPackageChooser extends Pane<EntityMappings> super(parentPane, parent); } - /* - * (non-Javadoc) - */ @Override - protected void initializeLayout(Composite container) { - - addPackageChooserPane(container); - } - - private void addPackageChooserPane(Composite container) { - - new PackageChooserPane<EntityMappings>(this, container) { + protected ModifiablePropertyValueModel<String> buildTextHolder() { + return new PropertyAspectAdapter<EntityMappings, String>(getSubjectHolder(), EntityMappings.PACKAGE_PROPERTY) { @Override - protected ModifiablePropertyValueModel<String> buildTextHolder() { - return new PropertyAspectAdapter<EntityMappings, String>(getSubjectHolder(), EntityMappings.PACKAGE_PROPERTY) { - @Override - protected String buildValue_() { - return subject.getPackage(); - } - - @Override - protected void setValue_(String value) { - subject.setPackage(value == "" ? null : value); //$NON-NLS-1$ - } - }; + protected String buildValue_() { + return subject.getPackage(); } @Override - protected String getLabelText() { - return JptUiDetailsOrmMessages.EntityMappingsDetailsPage_package; + protected void setValue_(String value) { + subject.setPackage(value == "" ? null : value); //$NON-NLS-1$ } + }; + } - @Override - protected IJavaProject getJavaProject() { - return getSubject().getJpaProject().getJavaProject(); - } + @Override + protected IJavaProject getJavaProject() { + return getSubject().getJpaProject().getJavaProject(); + } - @Override - protected String getPackageName() { - return getSubject().getPackage(); - } + @Override + protected String getPackageName() { + return getSubject().getPackage(); + } - @Override - protected void setPackageName(String packageName) { - getSubject().setPackage(packageName); - } - }; + @Override + protected void setPackageName(String packageName) { + getSubject().setPackage(packageName); } }
\ No newline at end of file diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/orm/OrmPersistentAttributeDetailsPage.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/orm/OrmPersistentAttributeDetailsPage.java index 144e10cde1..3f335f1c23 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/orm/OrmPersistentAttributeDetailsPage.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/orm/OrmPersistentAttributeDetailsPage.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2006, 2010 Oracle. All rights reserved. + * Copyright (c) 2006, 2012 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. @@ -9,16 +9,13 @@ ******************************************************************************/ package org.eclipse.jpt.jpa.ui.internal.details.orm; -import java.util.ArrayList; import org.eclipse.jpt.common.ui.WidgetFactory; -import org.eclipse.jpt.common.ui.internal.util.PaneEnabler; import org.eclipse.jpt.common.ui.internal.widgets.Pane; import org.eclipse.jpt.common.utility.internal.model.value.TransformationPropertyValueModel; import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; import org.eclipse.jpt.jpa.core.context.ReadOnlyPersistentAttribute; import org.eclipse.jpt.jpa.core.context.orm.OrmPersistentAttribute; import org.eclipse.jpt.jpa.core.context.orm.OrmReadOnlyPersistentAttribute; -import org.eclipse.jpt.jpa.ui.details.JpaComposite; import org.eclipse.jpt.jpa.ui.internal.details.PersistentAttributeDetailsPage; import org.eclipse.jpt.jpa.ui.internal.details.PersistentAttributeMapAsComposite; import org.eclipse.swt.widgets.Composite; @@ -51,6 +48,9 @@ import org.eclipse.swt.widgets.Composite; public class OrmPersistentAttributeDetailsPage extends PersistentAttributeDetailsPage<OrmReadOnlyPersistentAttribute> { + + private PropertyValueModel<Boolean> virtualAttributeEnabledModel; + /** * Creates a new <code>OrmPersistentAttributeDetailsPage</code>. * @@ -62,30 +62,26 @@ public class OrmPersistentAttributeDetailsPage super(parent, widgetFactory); } - - @Override - protected void initializeLayout(Composite container) { - ArrayList<Pane<?>> panes = new ArrayList<Pane<?>>(2); + @Override + protected void initialize() { + super.initialize(); + this.virtualAttributeEnabledModel = this.buildVirtualAttributeEnabledModel(); + } + @Override + protected void initializeLayout(Composite container) { // Map As composite - Pane<?> mapAsPane = buildMapAsPane(addSubPane(container, 0, 0, 5, 0)); - panes.add(mapAsPane); + this.buildMapAsPane(container); - buildMappingPageBook(container); - - installPaneEnabler(panes); + this.buildMappingPageBook(container); } - + protected Pane<ReadOnlyPersistentAttribute> buildMapAsPane(Composite parent) { - return new PersistentAttributeMapAsComposite(this, parent); - } - - private void installPaneEnabler(ArrayList<Pane<?>> panes) { - new PaneEnabler(buildPaneEnablerHolder(), panes); + return new PersistentAttributeMapAsComposite(this, parent, this.getMappingCompositeEnabledModel()); } - private PropertyValueModel<Boolean> buildPaneEnablerHolder() { + private PropertyValueModel<Boolean> buildVirtualAttributeEnabledModel() { return new TransformationPropertyValueModel<OrmReadOnlyPersistentAttribute, Boolean>(getSubjectHolder()) { @Override protected Boolean transform_(OrmReadOnlyPersistentAttribute value) { @@ -94,21 +90,8 @@ public class OrmPersistentAttributeDetailsPage }; } - - //TODO this probably needs to change and use a PaneEnabler instead. @Override - protected JpaComposite getMappingComposite(String key) { - JpaComposite mappingComposite = super.getMappingComposite(key); - if (mappingComposite == null) { - return null; - } - boolean enabled = false; - - if (getSubject() != null && getSubject().getParent() != null) { - enabled = !getSubject().isVirtual(); - } - - mappingComposite.enableWidgets(enabled); - return mappingComposite; + protected PropertyValueModel<Boolean> getMappingCompositeEnabledModel() { + return this.virtualAttributeEnabledModel; } }
\ No newline at end of file diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/orm/OrmQueriesComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/orm/OrmQueriesComposite.java deleted file mode 100644 index 98d6dbb72a..0000000000 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/orm/OrmQueriesComposite.java +++ /dev/null @@ -1,94 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2008, 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.jpa.ui.internal.details.orm; - -import org.eclipse.jpt.common.ui.internal.util.PaneEnabler; -import org.eclipse.jpt.common.ui.internal.widgets.Pane; -import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter; -import org.eclipse.jpt.common.utility.internal.model.value.TransformationPropertyValueModel; -import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; -import org.eclipse.jpt.jpa.core.context.QueryContainer; -import org.eclipse.jpt.jpa.core.context.orm.EntityMappings; -import org.eclipse.jpt.jpa.ui.internal.details.QueriesComposite; -import org.eclipse.swt.widgets.Composite; - -/** - * Here the layout of this pane: - * <pre> - * ----------------------------------------------------------------------------- - * | ------------------------------------------------------------------------- | - * | | | | - * | | QueriesComposite | | - * | | | | - * | ------------------------------------------------------------------------- | - * -----------------------------------------------------------------------------</pre> - * - * @see EntityMappings - * @see EntityMappingsDetailsPage - The parent container - * @see QueriesComposite - * - * @version 2.0 - * @since 2.0 - */ -public class OrmQueriesComposite extends Pane<EntityMappings> { - - /** - * Creates a new <code>OrmQueriesComposite</code>. - * - * @param parentPane The parent container of this one - * @param parent The parent container - */ - public OrmQueriesComposite(Pane<? extends EntityMappings> parentPane, - Composite parent) { - - super(parentPane, parent, false); - } - - private PropertyValueModel<Boolean> buildPaneEnablerHolder() { - return new TransformationPropertyValueModel<EntityMappings, Boolean>(getSubjectHolder()) { - @Override - protected Boolean transform(EntityMappings value) { - return (value != null); - } - }; - } - - @Override - protected void initializeLayout(Composite container) { - - container = this.addCollapsibleSection( - container, - JptUiDetailsOrmMessages.OrmQueriesComposite_groupBox - ); - - QueriesComposite queriesComposite = this.buildQueriesComposite(container, this.buildQueryContainerHolder()); - - this.installPaneEnabler(queriesComposite); - } - - protected QueriesComposite buildQueriesComposite(Composite container, PropertyValueModel<QueryContainer> queryContainerHolder) { - return new QueriesComposite(this, queryContainerHolder, container); - } - - private PropertyValueModel<QueryContainer> buildQueryContainerHolder() { - return new PropertyAspectAdapter<EntityMappings, QueryContainer>(getSubjectHolder()) { - @Override - protected QueryContainer buildValue_() { - return this.subject.getQueryContainer(); - } - }; - } - private void installPaneEnabler(QueriesComposite queriesComposite) { - new PaneEnabler( - buildPaneEnablerHolder(), - queriesComposite - ); - } -} diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/orm/OrmSecondaryTablesComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/orm/OrmSecondaryTablesComposite.java index 513705fe13..16be818774 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/orm/OrmSecondaryTablesComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/orm/OrmSecondaryTablesComposite.java @@ -11,8 +11,6 @@ package org.eclipse.jpt.jpa.ui.internal.details.orm; import java.util.ArrayList; import java.util.List; -import org.eclipse.jpt.common.ui.WidgetFactory; -import org.eclipse.jpt.common.ui.internal.util.PaneEnabler; import org.eclipse.jpt.common.ui.internal.widgets.AddRemoveListPane; import org.eclipse.jpt.common.ui.internal.widgets.Pane; import org.eclipse.jpt.common.utility.internal.iterables.ListIterable; @@ -21,7 +19,7 @@ import org.eclipse.jpt.common.utility.internal.model.value.ItemPropertyListValue import org.eclipse.jpt.common.utility.internal.model.value.ListAspectAdapter; import org.eclipse.jpt.common.utility.internal.model.value.ListPropertyValueModelAdapter; import org.eclipse.jpt.common.utility.model.value.ListValueModel; -import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; +import org.eclipse.jpt.common.utility.model.value.ModifiableCollectionValueModel; import org.eclipse.jpt.common.utility.model.value.ModifiablePropertyValueModel; import org.eclipse.jpt.jpa.core.context.Entity; import org.eclipse.jpt.jpa.core.context.ReadOnlySecondaryTable; @@ -75,22 +73,8 @@ public class OrmSecondaryTablesComposite extends AbstractSecondaryTablesComposit super(parentPane, parent); } - /** - * Creates a new <code>SecondaryTablesComposite</code>. - * - * @param subjectHolder The holder of the subject <code>IEntity</code> - * @param parent The parent container - * @param widgetFactory The factory used to create various common widgets - */ - public OrmSecondaryTablesComposite(PropertyValueModel<? extends OrmEntity> subjectHolder, - Composite parent, - WidgetFactory widgetFactory) { - - super(subjectHolder, parent, widgetFactory); - } - - private ModifiablePropertyValueModel<Boolean> buildDefineInXmlHolder() { - return new DefineInXmlHolder(); + private ModifiablePropertyValueModel<Boolean> buildDefineInXmlModel() { + return new DefineInXmlModel(); } private ListValueModel<ReadOnlySecondaryTable> buildSecondaryTablesListHolder() { @@ -135,50 +119,40 @@ public class OrmSecondaryTablesComposite extends AbstractSecondaryTablesComposit @Override protected void initializeLayout(Composite container) { + ModifiableCollectionValueModel<SecondaryTable> selectedSecondaryTablesModel = + buildSelectedSecondaryTablesModel(); - int groupBoxMargin = getGroupBoxMargin(); - - ModifiablePropertyValueModel<SecondaryTable> secondaryTableHolder = - buildSecondaryTableHolder(); - - ModifiablePropertyValueModel<Boolean> defineInXmlHolder = - buildDefineInXmlHolder(); + ModifiablePropertyValueModel<Boolean> defineInXmlModel = + buildDefineInXmlModel(); // Override Define In XML check box addCheckBox( - addSubPane(container, 0, groupBoxMargin), + container, JptUiDetailsMessages.OrmSecondaryTablesComposite_defineInXml, - defineInXmlHolder, + defineInXmlModel, null ); // Secondary Tables add/remove list pane - AddRemoveListPane<Entity> listPane = new AddRemoveListPane<Entity>( + new AddRemoveListPane<Entity, SecondaryTable>( this, - addSubPane(container, 0, groupBoxMargin, 0, groupBoxMargin), + container, buildSecondaryTablesAdapter(), buildSecondaryTablesListModel(), - secondaryTableHolder, + selectedSecondaryTablesModel, buildSecondaryTableLabelProvider(), + defineInXmlModel, JpaHelpContextIds.MAPPING_JOIN_TABLE_COLUMNS//TODO need a help context id for this ); - installListPaneEnabler(defineInXmlHolder, listPane); - // Primary Key Join Columns pane new PrimaryKeyJoinColumnsInSecondaryTableComposite( this, - secondaryTableHolder, + buildSelectedSecondaryTableModel(selectedSecondaryTablesModel), container ); } - private void installListPaneEnabler(ModifiablePropertyValueModel<Boolean> defineInXmlHolder, - AddRemoveListPane<Entity> listPane) { - - new PaneEnabler(defineInXmlHolder, listPane); - } - @Override protected SecondaryTableDialog buildSecondaryTableDialogForAdd() { // defaultSchema and defaultCatalog should not be taken from the Table in this case. @@ -189,10 +163,10 @@ public class OrmSecondaryTablesComposite extends AbstractSecondaryTablesComposit getSubject().getMappingFileRoot().getSchema()); } - private class DefineInXmlHolder extends ListPropertyValueModelAdapter<Boolean> + private class DefineInXmlModel extends ListPropertyValueModelAdapter<Boolean> implements ModifiablePropertyValueModel<Boolean> { - public DefineInXmlHolder() { + public DefineInXmlModel() { super(buildVirtualSecondaryTablesListHolder()); } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/orm/OrmTransientMappingUiDefinition.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/orm/OrmTransientMappingUiDefinition.java index de38367117..921fc4e903 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/orm/OrmTransientMappingUiDefinition.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/orm/OrmTransientMappingUiDefinition.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2008, 2009 Oracle. + * Copyright (c) 2008, 2012 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 @@ -48,9 +48,10 @@ public class OrmTransientMappingUiDefinition public JpaComposite buildAttributeMappingComposite( OrmXmlUiFactory factory, PropertyValueModel<OrmTransientMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory) { - return factory.createOrmTransientMappingComposite(subjectHolder, parent, widgetFactory); + return factory.createOrmTransientMappingComposite(subjectHolder, enabledModel, parent, widgetFactory); } } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/orm/OrmVersionMappingComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/orm/OrmVersionMappingComposite.java index af5bb381d1..c84437fcfd 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/orm/OrmVersionMappingComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/orm/OrmVersionMappingComposite.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2009, 2010 Oracle. All rights reserved. + * Copyright (c) 2009, 2012 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. @@ -14,7 +14,9 @@ import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; import org.eclipse.jpt.jpa.core.context.VersionMapping; import org.eclipse.jpt.jpa.ui.internal.details.AbstractVersionMappingComposite; import org.eclipse.jpt.jpa.ui.internal.details.ColumnComposite; +import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; public class OrmVersionMappingComposite extends AbstractVersionMappingComposite<VersionMapping> @@ -27,15 +29,27 @@ public class OrmVersionMappingComposite * @param widgetFactory The factory used to create various common widgets */ public OrmVersionMappingComposite(PropertyValueModel<? extends VersionMapping> subjectHolder, - Composite parent, - WidgetFactory widgetFactory) { + PropertyValueModel<Boolean> enabledModel, + Composite parent, + WidgetFactory widgetFactory) { - super(subjectHolder, parent, widgetFactory); + super(subjectHolder, enabledModel, parent, widgetFactory); } @Override - protected void initializeVersionSection(Composite container) { - new ColumnComposite(this, buildColumnHolder(), container); - new OrmMappingNameChooser(this, getSubjectHolder(), container); + protected Control initializeVersionSection(Composite container) { + container = this.addSubPane(container, 2, 0, 0, 0, 0); + + // Column widgets + ColumnComposite columnComposite = new ColumnComposite(this, buildColumnHolder(), container); + GridData gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.horizontalSpan = 2; + columnComposite.getControl().setLayoutData(gridData); + + // Name widgets + this.addLabel(container, JptUiDetailsOrmMessages.OrmMappingNameChooser_name); + new OrmMappingNameText(this, getSubjectHolder(), container); + + return container; } }
\ No newline at end of file diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/orm/OrmVersionMappingUiDefinition.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/orm/OrmVersionMappingUiDefinition.java index de8d9b3207..0c787c9d39 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/orm/OrmVersionMappingUiDefinition.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/orm/OrmVersionMappingUiDefinition.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2008, 2009 Oracle. + * Copyright (c) 2008, 2012 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 @@ -48,9 +48,10 @@ public class OrmVersionMappingUiDefinition public JpaComposite buildAttributeMappingComposite( OrmXmlUiFactory factory, PropertyValueModel<OrmVersionMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory) { - return factory.createOrmVersionMappingComposite(subjectHolder, parent, widgetFactory); + return factory.createOrmVersionMappingComposite(subjectHolder, enabledModel, parent, widgetFactory); } } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/orm/PersistenceUnitMetadataComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/orm/PersistenceUnitMetadataComposite.java index 775d37f073..ff2e77ea02 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/orm/PersistenceUnitMetadataComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/orm/PersistenceUnitMetadataComposite.java @@ -24,10 +24,12 @@ import org.eclipse.jpt.jpa.core.context.orm.OrmPersistenceUnitMetadata; import org.eclipse.jpt.jpa.core.jpa2.context.orm.OrmPersistenceUnitDefaults2_0; import org.eclipse.jpt.jpa.db.SchemaContainer; import org.eclipse.jpt.jpa.ui.internal.JpaHelpContextIds; -import org.eclipse.jpt.jpa.ui.internal.details.AccessTypeComposite; +import org.eclipse.jpt.jpa.ui.internal.JptUiMessages; +import org.eclipse.jpt.jpa.ui.internal.details.AccessTypeComboViewer; import org.eclipse.jpt.jpa.ui.internal.details.db.CatalogCombo; import org.eclipse.jpt.jpa.ui.internal.details.db.SchemaCombo; import org.eclipse.jpt.jpa.ui.internal.jpa2.Jpa2_0XmlFlagModel; +import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; @@ -78,7 +80,7 @@ public class PersistenceUnitMetadataComposite extends Pane<OrmPersistenceUnitMet PropertyValueModel<? extends OrmPersistenceUnitMetadata> subjectHolder, Composite parent) { - super(parentPane, subjectHolder, parent, false); + super(parentPane, subjectHolder, parent); } @Override @@ -130,6 +132,16 @@ public class PersistenceUnitMetadataComposite extends Pane<OrmPersistenceUnitMet protected String getValue() { return getSubject().getSpecifiedCatalog(); } + + @Override + protected String getHelpId() { + return JpaHelpContextIds.ENTITY_ORM_CATALOG; + } + + @Override + public String toString() { + return "PersistenceUnitMetadataComposite.catalogCombo"; //$NON-NLS-1$ + } }; } @@ -173,6 +185,15 @@ public class PersistenceUnitMetadataComposite extends Pane<OrmPersistenceUnitMet return this.getSubject().getDbSchemaContainer(); } + @Override + protected String getHelpId() { + return JpaHelpContextIds.ENTITY_ORM_SCHEMA; + } + + @Override + public String toString() { + return "PersistenceUnitMetadataComposite.schemaCombo"; //$NON-NLS-1$ + } }; } @@ -212,47 +233,46 @@ public class PersistenceUnitMetadataComposite extends Pane<OrmPersistenceUnitMet } @Override - protected void initializeLayout(Composite container) { - - // Section - container = addCollapsibleSection( - container, - JptUiDetailsOrmMessages.PersistenceUnitMetadataComposite_persistenceUnitSection - ); + protected Composite addComposite(Composite container) { + return this.addSubPane(container, 2, 0, 0, 0, 0); + } + @Override + protected void initializeLayout(Composite container) { // XML mapping metadata complete check box - addCheckBox( + Button metadataCompleteCheckBox = addCheckBox( container, JptUiDetailsOrmMessages.PersistenceUnitMetadataComposite_xmlMappingMetadataCompleteCheckBox, buildXmlMappingMetadataCompleteHolder(), JpaHelpContextIds.ENTITY_ORM_XML ); + GridData gridData = new GridData(); + gridData.horizontalSpan = 2; + metadataCompleteCheckBox.setLayoutData(gridData); // Cascade Persist check-box - addCheckBox( + Button cascadePersistCheckBox = addCheckBox( container, JptUiDetailsOrmMessages.PersistenceUnitMetadataComposite_cascadePersistCheckBox, buildCascadePersistHolder(), JpaHelpContextIds.ENTITY_ORM_CASCADE ); + gridData = new GridData(); + gridData.horizontalSpan = 2; + cascadePersistCheckBox.setLayoutData(gridData); + // Schema widgets - addLabeledComposite( - container, - JptUiDetailsOrmMessages.PersistenceUnitMetadataComposite_schema, - addSchemaCombo(container), - JpaHelpContextIds.ENTITY_ORM_SCHEMA - ); + this.addLabel(container, JptUiDetailsOrmMessages.PersistenceUnitMetadataComposite_schema); + this.addSchemaCombo(container); // Catalog widgets - addLabeledComposite( - container, - JptUiDetailsOrmMessages.PersistenceUnitMetadataComposite_catalog, - addCatalogCombo(container), - JpaHelpContextIds.ENTITY_ORM_CATALOG - ); + this.addLabel(container, JptUiDetailsOrmMessages.PersistenceUnitMetadataComposite_catalog); + this.addCatalogCombo(container); - new AccessTypeComposite(this, this.getPersistenceUnitDefaultsHolder(), container); + // Access type widgets + this.addLabel(container, JptUiMessages.AccessTypeComposite_access); + new AccessTypeComboViewer(this, getPersistenceUnitDefaultsHolder(), container); // Delimited Identifiers check-box Button diCheckBox = this.addCheckBox( @@ -261,6 +281,9 @@ public class PersistenceUnitMetadataComposite extends Pane<OrmPersistenceUnitMet this.buildDelimitedIdentifiersHolder(), JpaHelpContextIds.ENTITY_ORM_DELIMITED_IDENTIFIERS ); + gridData = new GridData(); + gridData.horizontalSpan = 2; + diCheckBox.setLayoutData(gridData); SWTTools.controlVisibleState(new Jpa2_0XmlFlagModel<OrmPersistenceUnitMetadata>(this.getSubjectHolder()), diCheckBox); } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/orm/UnsupportedOrmMappingUiDefinition.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/orm/UnsupportedOrmMappingUiDefinition.java index d4a0f788e0..d58cab8283 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/orm/UnsupportedOrmMappingUiDefinition.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/details/orm/UnsupportedOrmMappingUiDefinition.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2009, 2010 Oracle. All rights reserved. + * Copyright (c) 2009, 2012 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. @@ -60,13 +60,13 @@ public class UnsupportedOrmMappingUiDefinition public String getKey() { return null; - } - + } public JpaComposite buildAttributeMappingComposite( - OrmXmlUiFactory factory, - PropertyValueModel subjectHolder, - Composite parent, - WidgetFactory widgetFactory) { + OrmXmlUiFactory factory, + PropertyValueModel subjectHolder, + PropertyValueModel enabledModel, + Composite parent, + WidgetFactory widgetFactory) { return new NullComposite(subjectHolder, parent, widgetFactory); } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/editors/PersistenceEditor.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/editors/PersistenceEditor.java index b84da02f30..93d91766b5 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/editors/PersistenceEditor.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/editors/PersistenceEditor.java @@ -39,7 +39,7 @@ import org.eclipse.jpt.jpa.core.context.persistence.PersistenceUnit; import org.eclipse.jpt.jpa.core.context.persistence.PersistenceXml; import org.eclipse.jpt.jpa.ui.JpaPlatformUi; import org.eclipse.jpt.jpa.ui.PersistenceXmlResourceUiDefinition; -import org.eclipse.jpt.jpa.ui.details.JpaPageComposite; +import org.eclipse.jpt.jpa.ui.editors.JpaPageComposite; import org.eclipse.jpt.jpa.ui.internal.persistence.JptUiPersistenceMessages; import org.eclipse.swt.custom.BusyIndicator; import org.eclipse.swt.widgets.Composite; diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/Generic2_0JpaPlatformUiProvider.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/Generic2_0JpaPlatformUiProvider.java index 49c0736364..fb9c4e288d 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/Generic2_0JpaPlatformUiProvider.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/Generic2_0JpaPlatformUiProvider.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2009 Oracle. All rights reserved. + * Copyright (c) 2009, 2012 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. @@ -24,7 +24,7 @@ import org.eclipse.jpt.jpa.ui.internal.jpa2.details.java.Generic2_0JavaResourceU import org.eclipse.jpt.jpa.ui.internal.jpa2.details.orm.EntityMappings2_0DetailsProvider; import org.eclipse.jpt.jpa.ui.internal.jpa2.details.orm.OrmXml2_0UiDefinition; import org.eclipse.jpt.jpa.ui.internal.jpa2.persistence.PersistenceXml2_0UiDefinition; -import org.eclipse.jpt.jpa.ui.internal.persistence.details.PersistenceXmlUiDefinition; +import org.eclipse.jpt.jpa.ui.internal.persistence.PersistenceXmlUiDefinition; /** * All the state in the JPA platform should be "static" (i.e. unchanging once diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/GenericOrmXml2_0UiFactory.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/GenericOrmXml2_0UiFactory.java index 91409a7de4..5f5815dbf9 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/GenericOrmXml2_0UiFactory.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/GenericOrmXml2_0UiFactory.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2007, 2010 Oracle. All rights reserved. + * Copyright (c) 2007, 2012 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. @@ -60,88 +60,99 @@ public class GenericOrmXml2_0UiFactory @Override public JpaComposite createOrmIdMappingComposite( PropertyValueModel<OrmIdMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory) { - return new OrmIdMapping2_0Composite(subjectHolder, parent, widgetFactory); + return new OrmIdMapping2_0Composite(subjectHolder, enabledModel, parent, widgetFactory); } @Override public JpaComposite createOrmEmbeddedIdMappingComposite( PropertyValueModel<OrmEmbeddedIdMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory) { - return new OrmEmbeddedIdMapping2_0Composite(subjectHolder, parent, widgetFactory); + return new OrmEmbeddedIdMapping2_0Composite(subjectHolder, enabledModel, parent, widgetFactory); } @Override public JpaComposite createOrmBasicMappingComposite( PropertyValueModel<OrmBasicMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory) { - return new OrmBasicMapping2_0Composite(subjectHolder, parent, widgetFactory); + return new OrmBasicMapping2_0Composite(subjectHolder, enabledModel, parent, widgetFactory); } @Override public JpaComposite createOrmVersionMappingComposite( PropertyValueModel<OrmVersionMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory) { - return new OrmVersionMapping2_0Composite(subjectHolder, parent, widgetFactory); + return new OrmVersionMapping2_0Composite(subjectHolder, enabledModel, parent, widgetFactory); } @Override public JpaComposite createOrmManyToOneMappingComposite( PropertyValueModel<OrmManyToOneMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory) { - return new OrmManyToOneMapping2_0Composite(subjectHolder, parent, widgetFactory); + return new OrmManyToOneMapping2_0Composite(subjectHolder, enabledModel, parent, widgetFactory); } @Override public JpaComposite createOrmOneToManyMappingComposite( PropertyValueModel<OrmOneToManyMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory) { - return new OrmOneToManyMapping2_0Composite(subjectHolder, parent, widgetFactory); + return new OrmOneToManyMapping2_0Composite(subjectHolder, enabledModel, parent, widgetFactory); } @Override public JpaComposite createOrmOneToOneMappingComposite( PropertyValueModel<OrmOneToOneMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory) { - return new OrmOneToOneMapping2_0Composite(subjectHolder, parent, widgetFactory); + return new OrmOneToOneMapping2_0Composite(subjectHolder, enabledModel, parent, widgetFactory); } @Override public JpaComposite createOrmManyToManyMappingComposite( PropertyValueModel<OrmManyToManyMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory) { - return new OrmManyToManyMapping2_0Composite(subjectHolder, parent, widgetFactory); + return new OrmManyToManyMapping2_0Composite(subjectHolder, enabledModel, parent, widgetFactory); } @Override public JpaComposite createOrmEmbeddedMappingComposite( PropertyValueModel<OrmEmbeddedMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory) { - return new OrmEmbeddedMapping2_0Composite(subjectHolder, parent, widgetFactory); + return new OrmEmbeddedMapping2_0Composite(subjectHolder, enabledModel, parent, widgetFactory); } @Override public JpaComposite createOrmTransientMappingComposite( PropertyValueModel<OrmTransientMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory) { - return new TransientMappingComposite(subjectHolder, parent, widgetFactory); + return new TransientMappingComposite(subjectHolder, enabledModel, parent, widgetFactory); } public JpaComposite createOrmElementCollectionMapping2_0Composite( PropertyValueModel<OrmElementCollectionMapping2_0> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory) { - return new OrmElementCollectionMapping2_0Composite(subjectHolder, parent, widgetFactory); + return new OrmElementCollectionMapping2_0Composite(subjectHolder, enabledModel, parent, widgetFactory); } } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/AbstractElementCollectionMapping2_0Composite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/AbstractElementCollectionMapping2_0Composite.java index 0d9d228d3b..b5e30bdc6f 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/AbstractElementCollectionMapping2_0Composite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/AbstractElementCollectionMapping2_0Composite.java @@ -19,6 +19,7 @@ import org.eclipse.jpt.common.utility.internal.model.value.TransformationPropert import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; import org.eclipse.jpt.common.utility.model.value.ModifiablePropertyValueModel; import org.eclipse.jpt.jpa.core.context.BasicMapping; +import org.eclipse.jpt.jpa.core.context.CollectionMapping; import org.eclipse.jpt.jpa.core.context.Column; import org.eclipse.jpt.jpa.core.context.Converter; import org.eclipse.jpt.jpa.core.context.ConvertibleMapping; @@ -29,17 +30,21 @@ import org.eclipse.jpt.jpa.core.jpa2.context.CollectionTable2_0; import org.eclipse.jpt.jpa.core.jpa2.context.ElementCollectionMapping2_0; import org.eclipse.jpt.jpa.ui.details.JpaComposite; import org.eclipse.jpt.jpa.ui.internal.details.ColumnComposite; -import org.eclipse.jpt.jpa.ui.internal.details.EnumTypeComposite; -import org.eclipse.jpt.jpa.ui.internal.details.FetchTypeComposite; +import org.eclipse.jpt.jpa.ui.internal.details.EnumTypeComboViewer; +import org.eclipse.jpt.jpa.ui.internal.details.FetchTypeComboViewer; import org.eclipse.jpt.jpa.ui.internal.details.JptUiDetailsMessages; -import org.eclipse.jpt.jpa.ui.internal.details.OptionalComposite; -import org.eclipse.jpt.jpa.ui.internal.details.TemporalTypeComposite; +import org.eclipse.jpt.jpa.ui.internal.details.TemporalTypeCombo; import org.eclipse.swt.SWT; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; +import org.eclipse.ui.forms.events.ExpansionAdapter; +import org.eclipse.ui.forms.events.ExpansionEvent; +import org.eclipse.ui.forms.widgets.ExpandableComposite; +import org.eclipse.ui.forms.widgets.Hyperlink; +import org.eclipse.ui.forms.widgets.Section; import org.eclipse.ui.part.PageBook; /** @@ -80,11 +85,11 @@ import org.eclipse.ui.part.PageBook; * * @see BasicMapping * @see OrderColumnComposite - * @see EnumTypeComposite - * @see FetchTypeComposite + * @see EnumTypeComboViewer + * @see FetchTypeComboViewer * @see LobComposite - * @see OptionalComposite - * @see TemporalTypeComposite + * @see OptionalTriStateCheckBox + * @see TemporalTypeCombo * * @version 2.3 * @since 2.3 @@ -94,9 +99,9 @@ public abstract class AbstractElementCollectionMapping2_0Composite<T extends Ele implements JpaComposite { - private Composite basicValueComposite; + private Control basicValueComposite; - private Composite embeddableValueComposite; + private Control embeddableValueComposite; /** * Creates a new <code>BasicMappingComposite</code>. @@ -106,11 +111,13 @@ public abstract class AbstractElementCollectionMapping2_0Composite<T extends Ele * @param widgetFactory The factory used to create various common widgets */ protected AbstractElementCollectionMapping2_0Composite(PropertyValueModel<? extends T> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory) { - super(subjectHolder, parent, widgetFactory); + super(subjectHolder, enabledModel, parent, widgetFactory); } + @Override protected void initializeLayout(Composite container) { initializeElementCollectionCollapsibleSection(container); @@ -120,68 +127,101 @@ public abstract class AbstractElementCollectionMapping2_0Composite<T extends Ele } protected void initializeElementCollectionCollapsibleSection(Composite container) { - container = addCollapsibleSection( - container, - JptUiDetailsMessages2_0.ElementCollectionSection_title, - new SimplePropertyValueModel<Boolean>(Boolean.TRUE) - ); - - this.initializeElementCollectionSection(container); + final Section section = this.getWidgetFactory().createSection(container, ExpandableComposite.TITLE_BAR | ExpandableComposite.TWISTIE); + section.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + section.setText(JptUiDetailsMessages2_0.ElementCollectionSection_title); + section.setExpanded(true); + section.setClient(this.initializeElementCollectionSection(section)); } - protected void initializeElementCollectionSection(Composite container) { - new TargetClassComposite(this, container); - new FetchTypeComposite(this, container); - new CollectionTable2_0Composite(this, buildCollectionTableHolder(), container); - } + protected Control initializeElementCollectionSection(Composite container) { + container = this.addSubPane(container, 2, 0, 0, 0, 0); + + // Target class widgets + Hyperlink hyperlink = this.addHyperlink(container, JptUiDetailsMessages2_0.TargetClassComposite_label); + new TargetClassChooser(this, container, hyperlink); + + // Fetch type widgets + this.addLabel(container, JptUiDetailsMessages.BasicGeneralSection_fetchLabel); + new FetchTypeComboViewer(this, container); + // Collection table widgets + CollectionTable2_0Composite collectionTableComposite = new CollectionTable2_0Composite(this, buildCollectionTableHolder(), container); + GridData gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.horizontalSpan = 2; + collectionTableComposite.getControl().setLayoutData(gridData); + + return container; + } + protected void initializeOrderingCollapsibleSection(Composite container) { - new Ordering2_0Composite(this, container); + final Section section = this.getWidgetFactory().createSection(container, ExpandableComposite.TITLE_BAR | ExpandableComposite.TWISTIE); + section.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + section.setText(JptUiDetailsMessages.OrderingComposite_orderingGroup); + section.setClient(initializeOrderingSection(section)); + section.addExpansionListener(new ExpansionAdapter() { + @Override + public void expansionStateChanging(ExpansionEvent e) { + if (e.getState() && section.getClient() == null) { + section.setClient(AbstractElementCollectionMapping2_0Composite.this.initializeOrderingSection(section)); + } + } + }); + } + + protected Control initializeOrderingSection(Composite container) { + return new Ordering2_0Composite(this, container).getControl(); } protected void initializeValueCollapsibleSection(Composite container) { - Composite valueSection = addCollapsibleSection( - container, - JptUiDetailsMessages2_0.AbstractElementCollectionMapping2_0_Composite_valueSectionTitle - ); - initializeValueSection(valueSection); + final Section section = this.getWidgetFactory().createSection(container, ExpandableComposite.TITLE_BAR | ExpandableComposite.TWISTIE); + section.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + section.setText(JptUiDetailsMessages2_0.AbstractElementCollectionMapping2_0_Composite_valueSectionTitle); + section.setClient(initializeValueSection(section)); } protected void initializeKeyCollapsibleSection(Composite container) { - + //nothing yet } - protected void initializeValueSection(Composite container) { + protected Control initializeValueSection(Composite container) { PageBook pageBook = new PageBook(container, SWT.NULL); GridData gd = new GridData(GridData.FILL_HORIZONTAL); gd.horizontalIndent = 5; pageBook.setLayoutData(gd); - - this.initializeBasicValueSection(pageBook); - this.initializeEmbeddableValueSection(pageBook); installValueControlSwitcher(pageBook); + return pageBook; + } + + protected Control getBasicValueComposite(Composite container) { + if (this.basicValueComposite == null) { + this.basicValueComposite = buildBasicValueSection(container); + } + return this.basicValueComposite; } - protected void initializeBasicValueSection(Composite container) { - this.basicValueComposite = addSubPane(container); + protected Control buildBasicValueSection(Composite container) { + Composite basicComposite = addSubPane(container); - new ColumnComposite(this, buildValueColumnHolder(), this.basicValueComposite); + new ColumnComposite(this, buildValueColumnHolder(), basicComposite); // type section Composite converterSection = addCollapsibleSubSection( - this.basicValueComposite, + basicComposite, JptUiDetailsMessages.TypeSection_type, new SimplePropertyValueModel<Boolean>(Boolean.FALSE) ); - ((GridLayout) converterSection.getLayout()).numColumns = 2; this.initializeBasicValueTypeSection(converterSection); + + return basicComposite; } - protected void initializeBasicValueTypeSection(Composite typeSection) { + protected void initializeBasicValueTypeSection(Composite container) { + ((GridLayout) container.getLayout()).numColumns = 2; // No converter Button noConverterButton = addRadioButton( - typeSection, + container, JptUiDetailsMessages.TypeSection_default, buildNoConverterHolder(), null); @@ -189,7 +229,7 @@ public abstract class AbstractElementCollectionMapping2_0Composite<T extends Ele // Lob Button lobButton = addRadioButton( - typeSection, + container, JptUiDetailsMessages.TypeSection_lob, buildLobConverterHolder(), null); @@ -199,38 +239,45 @@ public abstract class AbstractElementCollectionMapping2_0Composite<T extends Ele PropertyValueModel<Converter> converterHolder = buildConverterHolder(); // Temporal addRadioButton( - typeSection, + container, JptUiDetailsMessages.TypeSection_temporal, buildTemporalBooleanHolder(), null); - registerSubPane(new TemporalTypeComposite(buildTemporalConverterHolder(converterHolder), typeSection, getWidgetFactory())); + registerSubPane(new TemporalTypeCombo(buildTemporalConverterHolder(converterHolder), getEnabledModel(), container, getWidgetFactory())); // Enumerated addRadioButton( - typeSection, + container, JptUiDetailsMessages.TypeSection_enumerated, buildEnumeratedBooleanHolder(), null); - registerSubPane(new EnumTypeComposite(buildEnumeratedConverterHolder(converterHolder), typeSection, getWidgetFactory())); + registerSubPane(new EnumTypeComboViewer(buildEnumeratedConverterHolder(converterHolder), getEnabledModel(), container, getWidgetFactory())); + } + + protected Control getEmbeddableValueComposite(Composite container) { + if (this.embeddableValueComposite == null) { + this.embeddableValueComposite = buildEmbeddableValueSection(container); + } + return this.embeddableValueComposite; } - protected void initializeEmbeddableValueSection(Composite container) { - this.embeddableValueComposite = new ElementCollectionValueOverridesComposite(this, container).getControl(); + protected Control buildEmbeddableValueSection(Composite container) { + return new ElementCollectionValueOverridesComposite(this, container).getControl(); } private void installValueControlSwitcher(PageBook pageBook) { new ControlSwitcher( buildValueHolder(), - buildPaneTransformer(), + buildPaneTransformer(pageBook), pageBook ); } protected PropertyValueModel<ElementCollectionMapping2_0.Type> buildValueHolder() { return new PropertyAspectAdapter<T, ElementCollectionMapping2_0.Type>( - this.getSubjectHolder(), ElementCollectionMapping2_0.VALUE_TYPE_PROPERTY) { + this.getSubjectHolder(), CollectionMapping.VALUE_TYPE_PROPERTY) { @Override protected ElementCollectionMapping2_0.Type buildValue_() { return this.subject.getValueType(); @@ -238,10 +285,10 @@ public abstract class AbstractElementCollectionMapping2_0Composite<T extends Ele }; } - private Transformer<ElementCollectionMapping2_0.Type, Control> buildPaneTransformer() { + private Transformer<ElementCollectionMapping2_0.Type, Control> buildPaneTransformer(final Composite container) { return new Transformer<ElementCollectionMapping2_0.Type, Control>() { public Control transform(ElementCollectionMapping2_0.Type type) { - return AbstractElementCollectionMapping2_0Composite.this.transformValueType(type); + return AbstractElementCollectionMapping2_0Composite.this.transformValueType(type, container); } }; } @@ -249,15 +296,15 @@ public abstract class AbstractElementCollectionMapping2_0Composite<T extends Ele /** * Given the selected override, return the control that will be displayed */ - protected Control transformValueType(ElementCollectionMapping2_0.Type type) { + protected Control transformValueType(ElementCollectionMapping2_0.Type type, Composite container) { if (type == null) { return null; } switch (type) { case BASIC_TYPE : - return this.basicValueComposite; + return this.getBasicValueComposite(container); case EMBEDDABLE_TYPE : - return this.embeddableValueComposite; + return this.getEmbeddableValueComposite(container); default : return null; } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/AbstractManyToOneMapping2_0Composite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/AbstractManyToOneMapping2_0Composite.java index c20c27a8e6..479809119b 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/AbstractManyToOneMapping2_0Composite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/AbstractManyToOneMapping2_0Composite.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2009, 2011 Oracle. All rights reserved. + * Copyright (c) 2009, 2012 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. @@ -24,10 +24,11 @@ public abstract class AbstractManyToOneMapping2_0Composite<T extends ManyToOneMa { protected AbstractManyToOneMapping2_0Composite( PropertyValueModel<? extends T> subjectHolder, - Composite parent, + PropertyValueModel<Boolean> enabledModel, + Composite parent, WidgetFactory widgetFactory) { - super(subjectHolder, parent, widgetFactory); + super(subjectHolder, enabledModel, parent, widgetFactory); } @Override diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/AbstractOneToOneMapping2_0Composite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/AbstractOneToOneMapping2_0Composite.java index 3b158caadb..bf230d0031 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/AbstractOneToOneMapping2_0Composite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/AbstractOneToOneMapping2_0Composite.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2009, 2011 Oracle. All rights reserved. + * Copyright (c) 2009, 2012 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. @@ -24,10 +24,11 @@ public abstract class AbstractOneToOneMapping2_0Composite<T extends OneToOneMapp { protected AbstractOneToOneMapping2_0Composite( PropertyValueModel<? extends T> subjectHolder, - Composite parent, + PropertyValueModel<Boolean> enabledModel, + Composite parent, WidgetFactory widgetFactory) { - super(subjectHolder, parent, widgetFactory); + super(subjectHolder, enabledModel, parent, widgetFactory); } @Override @@ -41,7 +42,6 @@ public abstract class AbstractOneToOneMapping2_0Composite<T extends OneToOneMapp new DerivedIdentity2_0Pane(this, buildDerivedIdentityHolder(), container); } - protected PropertyValueModel<DerivedIdentity2_0> buildDerivedIdentityHolder() { return new PropertyAspectAdapter<T, DerivedIdentity2_0>(getSubjectHolder()) { @Override diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/AssociationOverride2_0Composite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/AssociationOverride2_0Composite.java index e21bd86741..8046ab29c8 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/AssociationOverride2_0Composite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/AssociationOverride2_0Composite.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2007, 2011 Oracle. All rights reserved. + * Copyright (c) 2007, 2012 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. @@ -19,7 +19,6 @@ import org.eclipse.jpt.jpa.ui.internal.details.AssociationOverrideComposite; import org.eclipse.jpt.jpa.ui.internal.details.EntityOverridesComposite; import org.eclipse.jpt.jpa.ui.internal.details.JoinColumnsComposite; import org.eclipse.jpt.jpa.ui.internal.details.JoinTableJoiningStrategyPane; -import org.eclipse.jpt.jpa.ui.internal.details.JptUiDetailsMessages; import org.eclipse.swt.widgets.Composite; /** @@ -55,19 +54,12 @@ public class AssociationOverride2_0Composite super(parentPane, subjectHolder, parent); } - - + @Override protected void initializeLayout(Composite container) { - Composite composite = addTitledGroup( - container, - JptUiDetailsMessages.Joining_title); - - addJoinColumnJoiningStrategyPane(composite); - - addJoinTableJoiningStrategyPane(composite); + addJoinColumnJoiningStrategyPane(container); - addSubPane(composite, 5); + addJoinTableJoiningStrategyPane(container); } protected void addJoinTableJoiningStrategyPane(Composite container) { diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/Cacheable2_0Pane.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/Cacheable2_0TriStateCheckBox.java index 307e026709..8c3b7be562 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/Cacheable2_0Pane.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/Cacheable2_0TriStateCheckBox.java @@ -11,6 +11,7 @@ package org.eclipse.jpt.jpa.ui.internal.jpa2.details; import org.eclipse.jpt.common.ui.internal.JptCommonUiMessages; import org.eclipse.jpt.common.ui.internal.widgets.Pane; +import org.eclipse.jpt.common.ui.internal.widgets.TriStateCheckBox; import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter; import org.eclipse.jpt.common.utility.internal.model.value.TransformationPropertyValueModel; import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; @@ -19,6 +20,7 @@ import org.eclipse.jpt.jpa.core.jpa2.context.Cacheable2_0; import org.eclipse.jpt.jpa.ui.internal.JpaHelpContextIds; import org.eclipse.osgi.util.NLS; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; /** * Here the layout of this pane: @@ -31,21 +33,32 @@ import org.eclipse.swt.widgets.Composite; * @see JavaEntity2_0Composite - A container of this widget * @see OrmEntity2_0Composite - A container of this widget */ -public class Cacheable2_0Pane +public class Cacheable2_0TriStateCheckBox extends Pane<Cacheable2_0> { - public Cacheable2_0Pane( + private TriStateCheckBox checkBox; + + public Cacheable2_0TriStateCheckBox( Pane<?> parentPane, PropertyValueModel<? extends Cacheable2_0> subjectHolder, Composite parent) { - + super(parentPane, subjectHolder, parent); } - - + + @Override + protected boolean addsComposite() { + return false; + } + + @Override + public Control getControl() { + return this.checkBox.getCheckBox(); + } + @Override protected void initializeLayout(Composite container) { - addTriStateCheckBoxWithDefault( + this.checkBox = addTriStateCheckBoxWithDefault( container, JptUiDetailsMessages2_0.Entity_cacheableLabel, buildCacheableBooleanHolder(), @@ -87,7 +100,7 @@ public class Cacheable2_0Pane } }; } - + private PropertyValueModel<Boolean> buildDefaultCacheableHolder() { return new PropertyAspectAdapter<Cacheable2_0, Boolean>( getSubjectHolder(), diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/CascadePane2_0.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/CascadePane2_0.java index fc82a6f681..f79276acda 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/CascadePane2_0.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/CascadePane2_0.java @@ -14,40 +14,43 @@ import org.eclipse.jpt.common.ui.internal.widgets.Pane; import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter; import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; import org.eclipse.jpt.common.utility.model.value.ModifiablePropertyValueModel; +import org.eclipse.jpt.jpa.core.context.Cascade; import org.eclipse.jpt.jpa.core.context.RelationshipMapping; import org.eclipse.jpt.jpa.core.jpa2.context.Cascade2_0; import org.eclipse.jpt.jpa.ui.internal.details.CascadeComposite; +import org.eclipse.jpt.jpa.ui.internal.details.JptUiDetailsMessages; import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Group; -public class CascadePane2_0<T extends Cascade2_0> - extends CascadeComposite<T> +public class CascadePane2_0 + extends CascadeComposite { public CascadePane2_0( Pane<? extends RelationshipMapping> parentPane, - PropertyValueModel<T> subjectHolder, + PropertyValueModel<? extends Cascade> subjectHolder, Composite parent) { super(parentPane, subjectHolder, parent); } public CascadePane2_0( - PropertyValueModel<T> subjectHolder, + PropertyValueModel<? extends Cascade> subjectHolder, Composite parent, WidgetFactory widgetFactory) { super(subjectHolder, parent, widgetFactory); } - @Override - protected void initializeLayout(Composite container) { - // Cascade group - Group cascadeGroup = addCascadeGroup(container); - - // Container of the check boxes - container = addSubPane(cascadeGroup, 6, 8, 0, 0, 0); - + protected Composite addComposite(Composite container) { + return addTitledGroup( + container, + JptUiDetailsMessages.CascadeComposite_cascadeTitle, + 6, + null); + } + + @Override + protected void initializeLayout(Composite container) { addAllCheckBox(container); addPersistCheckBox(container); addMergeCheckBox(container); @@ -65,15 +68,15 @@ public class CascadePane2_0<T extends Cascade2_0> } protected ModifiablePropertyValueModel<Boolean> buildCascadeTypeDetachHolder() { - return new PropertyAspectAdapter<Cascade2_0, Boolean>(getSubjectHolder(), Cascade2_0.DETACH_PROPERTY) { + return new PropertyAspectAdapter<Cascade, Boolean>(getSubjectHolder(), Cascade2_0.DETACH_PROPERTY) { @Override protected Boolean buildValue_() { - return subject.isDetach(); + return Boolean.valueOf(((Cascade2_0) this.subject).isDetach()); } @Override protected void setValue_(Boolean value) { - subject.setDetach(value); + ((Cascade2_0) this.subject).setDetach(value.booleanValue()); } }; } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/CollectionTable2_0Composite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/CollectionTable2_0Composite.java index c2b7dfb0c3..63be9a1ee1 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/CollectionTable2_0Composite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/CollectionTable2_0Composite.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2009, 2010 Oracle. All rights reserved. + * Copyright (c) 2009, 2012 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. @@ -17,9 +17,7 @@ import org.eclipse.jpt.jpa.core.jpa2.context.CollectionTable2_0; import org.eclipse.jpt.jpa.ui.internal.JpaHelpContextIds; import org.eclipse.jpt.jpa.ui.internal.details.JoinColumnsComposite; import org.eclipse.jpt.jpa.ui.internal.details.ReferenceTableComposite; -import org.eclipse.jpt.jpa.ui.internal.details.db.CatalogCombo; -import org.eclipse.jpt.jpa.ui.internal.details.db.SchemaCombo; -import org.eclipse.jpt.jpa.ui.internal.details.db.TableCombo; +import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Group; @@ -88,54 +86,41 @@ public class CollectionTable2_0Composite } @Override - protected void initializeLayout(Composite container) { - // collection table group pane - container = addTitledGroup( - container, - JptUiDetailsMessages2_0.CollectionTable2_0Composite_title + protected Composite addComposite(Composite parent) { + return addTitledGroup( + parent, + JptUiDetailsMessages2_0.CollectionTable2_0Composite_title, + 2, + null ); + } - int groupBoxMargin = getGroupBoxMargin(); - + @Override + protected void initializeLayout(Composite container) { // Name widgets - TableCombo<ReadOnlyReferenceTable> tableCombo = addTableCombo(container); - Composite tablePane = addPane(container, groupBoxMargin); - addLabeledComposite( - tablePane, - JptUiDetailsMessages2_0.CollectionTable2_0Composite_name, - tableCombo.getControl(), - JpaHelpContextIds.MAPPING_COLLECTION_TABLE_NAME - ); + this.addLabel(container, JptUiDetailsMessages2_0.CollectionTable2_0Composite_name); + this.addTableCombo(container, JpaHelpContextIds.MAPPING_COLLECTION_TABLE_NAME); // schema widgets - SchemaCombo<ReadOnlyReferenceTable> schemaCombo = addSchemaCombo(container); - - addLabeledComposite( - tablePane, - JptUiDetailsMessages2_0.CollectionTable2_0Composite_schema, - schemaCombo.getControl(), - JpaHelpContextIds.MAPPING_COLLECTION_TABLE_SCHEMA - ); + this.addLabel(container, JptUiDetailsMessages2_0.CollectionTable2_0Composite_schema); + addSchemaCombo(container, JpaHelpContextIds.MAPPING_COLLECTION_TABLE_SCHEMA); // catalog widgets - CatalogCombo<ReadOnlyReferenceTable> catalogCombo = addCatalogCombo(container); - - addLabeledComposite( - tablePane, - JptUiDetailsMessages2_0.CollectionTable2_0Composite_catalog, - catalogCombo.getControl(), - JpaHelpContextIds.MAPPING_COLLECTION_TABLE_CATALOG - ); + this.addLabel(container, JptUiDetailsMessages2_0.CollectionTable2_0Composite_catalog); + addCatalogCombo(container, JpaHelpContextIds.MAPPING_COLLECTION_TABLE_CATALOG); // Join Columns group pane Group joinColumnGroupPane = addTitledGroup( container, JptUiDetailsMessages2_0.CollectionTable2_0Composite_joinColumn ); + GridData gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.horizontalSpan = 2; + joinColumnGroupPane.setLayoutData(gridData); // Override Default Join Columns check box this.overrideDefaultJoinColumnsCheckBox = addCheckBox( - addSubPane(joinColumnGroupPane, 8), + joinColumnGroupPane, JptUiDetailsMessages2_0.CollectionTable2_0Composite_overrideDefaultJoinColumns, buildOverrideDefaultJoinColumnHolder(), null @@ -144,10 +129,9 @@ public class CollectionTable2_0Composite this.joinColumnsComposite = new JoinColumnsComposite<ReadOnlyReferenceTable>( this, joinColumnGroupPane, - buildJoinColumnsEditor() + buildJoinColumnsEditor(), + buildJoinColumnsEnabledModel() ); - - installJoinColumnsPaneEnabler(this.joinColumnsComposite); } @Override diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/DerivedIdentity2_0Pane.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/DerivedIdentity2_0Pane.java index b18b418d8b..5022e81714 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/DerivedIdentity2_0Pane.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/DerivedIdentity2_0Pane.java @@ -34,26 +34,43 @@ public class DerivedIdentity2_0Pane super(parentPane, subjectHolder, parent); } - @Override - protected void initializeLayout(Composite container) { + protected Composite addComposite(Composite container) { Composite composite = addCollapsibleSection( - container, - JptUiDetailsMessages2_0.DerivedIdentity_title); - ((GridLayout) composite.getLayout()).numColumns = 2; - - addNullDerivedIdentityPane(composite); - addIdDerivedIdentityPane(composite); - addMapsIdDerivedIdentityPane(composite); + container, + JptUiDetailsMessages2_0.DerivedIdentity_title); + return composite; } - - protected void addNullDerivedIdentityPane(Composite parent) { - Button button = addRadioButton( - parent, - JptUiDetailsMessages2_0.DerivedIdentity_nullDerivedIdentity, - buildUsesNullDerivedIdentityStrategyHolder(), - null); + + @Override + protected void initializeLayout(Composite container) { + ((GridLayout) container.getLayout()).numColumns = 2; + + //null derived identity + Button nullDerivedIdentityButton = this.addRadioButton( + container, + JptUiDetailsMessages2_0.DerivedIdentity_nullDerivedIdentity, + buildUsesNullDerivedIdentityStrategyHolder(), + null); + ((GridData) nullDerivedIdentityButton.getLayoutData()).horizontalSpan = 2; + + //id derived identity + Button button = this.addRadioButton( + container, + JptUiDetailsMessages2_0.DerivedIdentity_idDerivedIdentity, + buildUsesIdDerivedIdentityStrategyHolder(), + null); ((GridData) button.getLayoutData()).horizontalSpan = 2; + + //maps id derived identity + ModifiablePropertyValueModel<Boolean> usesMapsIdModel = buildUsesMapsIdDerivedIdentityStrategyHolder(); + this.addRadioButton( + container, + JptUiDetailsMessages2_0.DerivedIdentity_mapsIdDerivedIdentity, + usesMapsIdModel, + null); + + this.buildMapsIdValueComboPane(container, usesMapsIdModel); } protected ModifiablePropertyValueModel<Boolean> buildUsesNullDerivedIdentityStrategyHolder() { @@ -74,16 +91,7 @@ public class DerivedIdentity2_0Pane } }; } - - protected void addIdDerivedIdentityPane(Composite parent) { - Button button = addRadioButton( - parent, - JptUiDetailsMessages2_0.DerivedIdentity_idDerivedIdentity, - buildUsesIdDerivedIdentityStrategyHolder(), - null); - ((GridData) button.getLayoutData()).horizontalSpan = 2; - } - + protected ModifiablePropertyValueModel<Boolean> buildUsesIdDerivedIdentityStrategyHolder() { return new PropertyAspectAdapter<DerivedIdentity2_0, Boolean>( getSubjectHolder(), DerivedIdentity2_0.PREDOMINANT_DERIVED_IDENTITY_STRATEGY_PROPERTY) { @@ -103,17 +111,6 @@ public class DerivedIdentity2_0Pane }; } - protected void addMapsIdDerivedIdentityPane(Composite parent) { - ModifiablePropertyValueModel<Boolean> usesMapsIdModel = buildUsesMapsIdDerivedIdentityStrategyHolder(); - addRadioButton( - parent, - JptUiDetailsMessages2_0.DerivedIdentity_mapsIdDerivedIdentity, - usesMapsIdModel, - null); - - buildMapsIdValueComboPane(parent, usesMapsIdModel); - } - protected ModifiablePropertyValueModel<Boolean> buildUsesMapsIdDerivedIdentityStrategyHolder() { return new PropertyAspectAdapter<DerivedIdentity2_0, Boolean>( getSubjectHolder(), DerivedIdentity2_0.PREDOMINANT_DERIVED_IDENTITY_STRATEGY_PROPERTY) { @@ -134,7 +131,7 @@ public class DerivedIdentity2_0Pane } protected ComboPane buildMapsIdValueComboPane(Composite parent, PropertyValueModel<Boolean> usesMapsIdModel) { - return new MapsIdValueComboPane(this, buildMapsIdStrategyHolder(), parent, usesMapsIdModel); + return new MapsIdValueCombo(this, buildMapsIdStrategyHolder(), usesMapsIdModel, parent); } protected PropertyValueModel<MapsIdDerivedIdentityStrategy2_0> buildMapsIdStrategyHolder() { @@ -147,16 +144,16 @@ public class DerivedIdentity2_0Pane } - private class MapsIdValueComboPane + private class MapsIdValueCombo extends ComboPane<MapsIdDerivedIdentityStrategy2_0> { - public MapsIdValueComboPane( + public MapsIdValueCombo( Pane<?> parentPane, PropertyValueModel<? extends MapsIdDerivedIdentityStrategy2_0> subjectHolder, - Composite parent, - PropertyValueModel<Boolean> enabledModel) { + PropertyValueModel<Boolean> enabledModel, + Composite parent) { - super(parentPane, subjectHolder, parent, enabledModel); + super(parentPane, subjectHolder, enabledModel, parent); } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/ElementCollectionMapping2_0Composite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/ElementCollectionMapping2_0Composite.java index a6af316ea0..0851e6ec44 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/ElementCollectionMapping2_0Composite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/ElementCollectionMapping2_0Composite.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2009, 2010 Oracle. All rights reserved. + * Copyright (c) 2009, 2012 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. @@ -53,11 +53,11 @@ import org.eclipse.swt.widgets.Composite; * * @see BasicMapping * @see OrderColumnComposite - * @see EnumTypeComposite - * @see FetchTypeComposite + * @see EnumTypeComboViewer + * @see FetchTypeComboViewer * @see LobComposite - * @see OptionalComposite - * @see TemporalTypeComposite + * @see OptionalTriStateCheckBox + * @see TemporalTypeCombo * * @version 2.3 * @since 2.3 @@ -72,10 +72,11 @@ public class ElementCollectionMapping2_0Composite extends AbstractElementCollect * @param widgetFactory The factory used to create various common widgets */ public ElementCollectionMapping2_0Composite(PropertyValueModel<? extends ElementCollectionMapping2_0> subjectHolder, - Composite parent, - WidgetFactory widgetFactory) { + PropertyValueModel<Boolean> enabledModel, + Composite parent, + WidgetFactory widgetFactory) { - super(subjectHolder, parent, widgetFactory); + super(subjectHolder, enabledModel, parent, widgetFactory); } }
\ No newline at end of file diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/ElementCollectionValueOverridesComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/ElementCollectionValueOverridesComposite.java index d956e31ec9..9ced658fe3 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/ElementCollectionValueOverridesComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/ElementCollectionValueOverridesComposite.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2010 Oracle. All rights reserved. + * Copyright (c) 2010, 2012 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. @@ -18,6 +18,7 @@ import org.eclipse.jpt.jpa.core.context.ReadOnlyAssociationOverride; import org.eclipse.jpt.jpa.core.jpa2.context.ElementCollectionMapping2_0; import org.eclipse.jpt.jpa.ui.internal.details.AbstractOverridesComposite; import org.eclipse.jpt.jpa.ui.internal.details.AssociationOverrideComposite; +import org.eclipse.jpt.jpa.ui.internal.details.JptUiDetailsMessages; import org.eclipse.swt.widgets.Composite; import org.eclipse.ui.part.PageBook; @@ -31,6 +32,12 @@ public final class ElementCollectionValueOverridesComposite super(parentPane, parent); } + @Override + protected Composite addComposite(Composite container) { + return addTitledGroup( + container, + JptUiDetailsMessages.OverridesComposite_attributeOverridesGroup); + } @Override protected boolean supportsAssociationOverrides() { diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/EmbeddedIdMapping2_0Composite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/EmbeddedIdMapping2_0Composite.java index 9af3e40be9..e4579aad2f 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/EmbeddedIdMapping2_0Composite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/EmbeddedIdMapping2_0Composite.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2010 Oracle. + * Copyright (c) 2010, 2012 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 @@ -16,22 +16,28 @@ import org.eclipse.jpt.jpa.core.context.EmbeddedIdMapping; import org.eclipse.jpt.jpa.ui.internal.details.AbstractEmbeddedIdMappingComposite; import org.eclipse.jpt.jpa.ui.internal.details.EmbeddedMappingOverridesComposite; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; public class EmbeddedIdMapping2_0Composite extends AbstractEmbeddedIdMappingComposite<EmbeddedIdMapping> { public EmbeddedIdMapping2_0Composite( PropertyValueModel<? extends EmbeddedIdMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory) { - super(subjectHolder, parent, widgetFactory); + super(subjectHolder, enabledModel, parent, widgetFactory); } @Override - protected void initializeEmbeddedIdSection(Composite container) { + protected Control initializeEmbeddedIdSection(Composite container) { + container = this.addSubPane(container); + new EmbeddedIdMapping2_0MappedByRelationshipPane(this, getSubjectHolder(), container); new EmbeddedMappingOverridesComposite(this, container); + + return container; } } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/EmbeddedIdMapping2_0MappedByRelationshipPane.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/EmbeddedIdMapping2_0MappedByRelationshipPane.java index af5798b73e..edbae86ae5 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/EmbeddedIdMapping2_0MappedByRelationshipPane.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/EmbeddedIdMapping2_0MappedByRelationshipPane.java @@ -42,9 +42,14 @@ public class EmbeddedIdMapping2_0MappedByRelationshipPane<T extends EmbeddedIdMa PageBook pageBook = new PageBook(container, SWT.NULL); pageBook.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); - this.mappedByRelationshipLabel = addLabel(pageBook, JptUiDetailsMessages2_0.EmbeddedIdMapping2_0MappedByRelationshipPane_label); + new ControlSwitcher(buildDerivedModel(), this.buildPaneTransformer(pageBook), pageBook); + } - new ControlSwitcher(buildDerivedModel(), buildPaneTransformer(), pageBook); + protected Label getMappedByRelationshipLabel(Composite container) { + if (this.mappedByRelationshipLabel == null) { + this.mappedByRelationshipLabel = this.addLabel(container, JptUiDetailsMessages2_0.EmbeddedIdMapping2_0MappedByRelationshipPane_label); + } + return this.mappedByRelationshipLabel; } protected ModifiablePropertyValueModel<Boolean> buildDerivedModel() { @@ -56,13 +61,13 @@ public class EmbeddedIdMapping2_0MappedByRelationshipPane<T extends EmbeddedIdMa }; } - private Transformer<Boolean, Control> buildPaneTransformer() { + private Transformer<Boolean, Control> buildPaneTransformer(final Composite container) { return new Transformer<Boolean, Control>() { public Control transform(Boolean converter) { if (converter == null || converter == Boolean.FALSE) { return null; } - return EmbeddedIdMapping2_0MappedByRelationshipPane.this.mappedByRelationshipLabel; + return EmbeddedIdMapping2_0MappedByRelationshipPane.this.getMappedByRelationshipLabel(container); } }; } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/Generation2_0Composite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/Generation2_0Composite.java index 94d06795ab..bde28cdf71 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/Generation2_0Composite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/Generation2_0Composite.java @@ -1,5 +1,5 @@ /******************************************************************************* -* Copyright (c) 2009 Oracle. All rights reserved. +* Copyright (c) 2009, 2012 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. @@ -14,6 +14,7 @@ import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; import org.eclipse.jpt.jpa.core.context.GeneratorContainer; import org.eclipse.jpt.jpa.ui.internal.details.GenerationComposite; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; /** * Generation2_0Composite @@ -30,13 +31,13 @@ public class Generation2_0Composite extends GenerationComposite } @Override - protected void addSequenceGeneratorComposite(Composite container, int topMargin, int leftMargin) { - new SequenceGenerator2_0Composite( + protected Control addSequenceGeneratorComposite(Composite container) { + return new SequenceGenerator2_0Composite( this, this.buildSequenceGeneratorHolder(), - this.addSubPane(container, topMargin, leftMargin), + container, this.buildSequenceGeneratorBuilder() - ); + ).getControl(); } } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/IdMapping2_0MappedByRelationshipPane.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/IdMapping2_0MappedByRelationshipPane.java index b15aa0c4e9..bbc11297ad 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/IdMapping2_0MappedByRelationshipPane.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/IdMapping2_0MappedByRelationshipPane.java @@ -44,9 +44,14 @@ public class IdMapping2_0MappedByRelationshipPane<T extends IdMapping2_0> PageBook pageBook = new PageBook(container, SWT.NULL); pageBook.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); - this.mappedByRelationshipLabel = addLabel(pageBook, JptUiDetailsMessages2_0.IdMapping2_0MappedByRelationshipPane_label); + new ControlSwitcher(buildDerivedModel(), buildPaneTransformer(pageBook), pageBook); + } - new ControlSwitcher(buildDerivedModel(), buildPaneTransformer(), pageBook); + protected Label getMappedByRelationshipLabel(Composite container) { + if (this.mappedByRelationshipLabel == null) { + this.mappedByRelationshipLabel = this.addLabel(container, JptUiDetailsMessages2_0.IdMapping2_0MappedByRelationshipPane_label); + } + return this.mappedByRelationshipLabel; } protected ModifiablePropertyValueModel<Boolean> buildDerivedModel() { @@ -58,13 +63,13 @@ public class IdMapping2_0MappedByRelationshipPane<T extends IdMapping2_0> }; } - private Transformer<Boolean, Control> buildPaneTransformer() { + private Transformer<Boolean, Control> buildPaneTransformer(final Composite container) { return new Transformer<Boolean, Control>() { public Control transform(Boolean converter) { if (converter == null || converter == Boolean.FALSE) { return null; } - return IdMapping2_0MappedByRelationshipPane.this.mappedByRelationshipLabel; + return IdMapping2_0MappedByRelationshipPane.this.getMappedByRelationshipLabel(container); } }; } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/IdMappingGeneration2_0Composite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/IdMappingGeneration2_0Composite.java index c850727e35..0e39504d59 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/IdMappingGeneration2_0Composite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/IdMappingGeneration2_0Composite.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2009, 2010 Oracle. All rights reserved. + * Copyright (c) 2009, 2012 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. @@ -32,14 +32,12 @@ public class IdMappingGeneration2_0Composite extends IdMappingGenerationComposit protected SequenceGeneratorComposite buildSequenceGeneratorComposite( Composite container, PropertyValueModel<SequenceGenerator> sequenceGeneratorHolder, - GeneratorBuilder<SequenceGenerator> sequenceGeneratorBuilder, - int topMargin, - int leftMargin) { + GeneratorBuilder<SequenceGenerator> sequenceGeneratorBuilder) { return new SequenceGenerator2_0Composite( this, sequenceGeneratorHolder, - this.addSubPane(container, topMargin, leftMargin), + container, sequenceGeneratorBuilder ); } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/LockModeComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/LockModeComposite.java deleted file mode 100644 index 77112d089d..0000000000 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/LockModeComposite.java +++ /dev/null @@ -1,104 +0,0 @@ -/******************************************************************************* -* Copyright (c) 2009, 2012 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.jpa.ui.internal.jpa2.details; - -import java.util.Collection; - -import org.eclipse.jpt.common.ui.internal.widgets.EnumFormComboViewer; -import org.eclipse.jpt.common.ui.internal.widgets.Pane; -import org.eclipse.jpt.jpa.core.jpa2.context.LockModeType2_0; -import org.eclipse.jpt.jpa.core.jpa2.context.NamedQuery2_0; -import org.eclipse.swt.widgets.Composite; - -/** - * LockModeComposite - */ -public class LockModeComposite extends Pane<NamedQuery2_0> -{ - /** - * Creates a new <code>LockModeComposite</code>. - * - * @param parentPane The parent container of this one - * @param parent The parent container - */ - public LockModeComposite(Pane<? extends NamedQuery2_0> parentPane, - Composite parent) { - - super(parentPane, parent); - } - - @Override - protected void initializeLayout(Composite container) { - - this.addLabeledComposite( - container, - JptUiDetailsMessages2_0.LockModeComposite_lockModeLabel, - this.addLockModeTypeCombo(container), - null // TODO - ); - } - - private EnumFormComboViewer<NamedQuery2_0, LockModeType2_0> addLockModeTypeCombo(Composite container) { - - return new EnumFormComboViewer<NamedQuery2_0, LockModeType2_0>(this, container) { - - @Override - protected void addPropertyNames(Collection<String> propertyNames) { - super.addPropertyNames(propertyNames); - propertyNames.add(NamedQuery2_0.DEFAULT_LOCK_MODE_PROPERTY); - propertyNames.add(NamedQuery2_0.SPECIFIED_LOCK_MODE_PROPERTY); - } - - @Override - protected LockModeType2_0[] getChoices() { - return LockModeType2_0.values(); - } - - @Override - protected LockModeType2_0 getDefaultValue() { - return this.getSubject().getDefaultLockMode(); - } - - @Override - protected String displayString(LockModeType2_0 value) { - switch (value) { - case NONE : - return JptUiDetailsMessages2_0.LockModeComposite_none; - case OPTIMISTIC : - return JptUiDetailsMessages2_0.LockModeComposite_optimistic; - case OPTIMISTIC_FORCE_INCREMENT : - return JptUiDetailsMessages2_0.LockModeComposite_optimistic_force_increment; - case PESSIMISTIC_FORCE_INCREMENT : - return JptUiDetailsMessages2_0.LockModeComposite_pessimistic_force_increment; - case PESSIMISTIC_READ : - return JptUiDetailsMessages2_0.LockModeComposite_pessimistic_read; - case PESSIMISTIC_WRITE : - return JptUiDetailsMessages2_0.LockModeComposite_pessimistic_write; - case READ : - return JptUiDetailsMessages2_0.LockModeComposite_read; - case WRITE : - return JptUiDetailsMessages2_0.LockModeComposite_write; - default : - throw new IllegalStateException(); - } - } - - @Override - protected LockModeType2_0 getValue() { - return this.getSubject().getSpecifiedLockMode(); - } - - @Override - protected void setValue(LockModeType2_0 value) { - this.getSubject().setSpecifiedLockMode(value); - } - }; - } -} diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/ManyToOneJoiningStrategy2_0Pane.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/ManyToOneJoiningStrategy2_0Pane.java index 8e01f1ef5b..913a4838b8 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/ManyToOneJoiningStrategy2_0Pane.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/ManyToOneJoiningStrategy2_0Pane.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2010, 2011 Oracle. All rights reserved. + * Copyright (c) 2010, 2012 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. @@ -54,31 +54,31 @@ public class ManyToOneJoiningStrategy2_0Pane extends Pane<ManyToOneRelationship2 super(parentPane, subjectHolder, parent); } - + @Override + protected Composite addComposite(Composite container) { + return addCollapsibleSection( + container, + JptUiDetailsMessages.Joining_title, + new SimplePropertyValueModel<Boolean>(Boolean.TRUE)); + } + @Override protected void initializeLayout(Composite container) { - Composite composite = addCollapsibleSection( - container, - JptUiDetailsMessages.Joining_title, - new SimplePropertyValueModel<Boolean>(Boolean.TRUE)); - addRadioButton( - composite, + container, JptUiDetailsMessages.Joining_joinColumnJoiningLabel, JoinColumnJoiningStrategyPane.buildUsesJoinColumnJoiningStrategyHolder(getSubjectHolder()), null); JoinColumnJoiningStrategyPane. - buildJoinColumnJoiningStrategyPaneWithIncludeOverrideCheckBox(this, composite); + buildJoinColumnJoiningStrategyPaneWithIncludeOverrideCheckBox(this, container); addRadioButton( - composite, + container, JptUiDetailsMessages.Joining_joinTableJoiningLabel, JoinTableJoiningStrategyPane.buildUsesJoinTableJoiningStrategyHolder(getSubjectHolder()), null); - new JoinTableJoiningStrategyPane(this, composite); - - addSubPane(composite, 5); + new JoinTableJoiningStrategyPane(this, container); } } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/NamedQueryProperty2_0Composite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/NamedQueryProperty2_0Composite.java index c4ac5d589b..c63a7e7c1a 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/NamedQueryProperty2_0Composite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/NamedQueryProperty2_0Composite.java @@ -9,16 +9,22 @@ *******************************************************************************/ package org.eclipse.jpt.jpa.ui.internal.jpa2.details; +import java.util.Collection; +import org.eclipse.jpt.common.ui.internal.widgets.EnumFormComboViewer; import org.eclipse.jpt.common.ui.internal.widgets.Pane; import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter; import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; import org.eclipse.jpt.common.utility.model.value.ModifiablePropertyValueModel; import org.eclipse.jpt.jpa.core.context.Query; +import org.eclipse.jpt.jpa.core.jpa2.context.LockModeType2_0; import org.eclipse.jpt.jpa.core.jpa2.context.NamedQuery2_0; import org.eclipse.jpt.jpa.ui.internal.details.JptUiDetailsMessages; import org.eclipse.jpt.jpa.ui.internal.details.QueryHintsComposite; import org.eclipse.jpt.jpa.ui.internal.jpql.JpaJpqlContentProposalProvider; +import org.eclipse.swt.SWT; +import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Label; /** * Here's the layout of this pane: @@ -97,17 +103,22 @@ public class NamedQueryProperty2_0Composite extends Pane<NamedQuery2_0> { }; } - /** - * {@inheritDoc} - */ @Override - protected void initializeLayout(Composite container) { + protected Composite addComposite(Composite container) { + return this.addSubPane(container, 2, 0, 0, 0, 0); + } + @Override + protected void initializeLayout(Composite container) { // Name widgets - this.addLabeledText( - container, - JptUiDetailsMessages.NamedQueryComposite_nameTextLabel, - this.buildNameTextHolder()); + this.addLabel(container, JptUiDetailsMessages.NamedQueryComposite_nameTextLabel); + this.addText(container, buildNameTextHolder()); + + // Query text area + Label queryLabel = this.addLabel(container, JptUiDetailsMessages.NamedQueryPropertyComposite_query); + GridData gridData = new GridData(); + gridData.verticalAlignment = SWT.TOP; + queryLabel.setLayoutData(gridData); JpaJpqlContentProposalProvider provider = new JpaJpqlContentProposalProvider( container, @@ -115,34 +126,81 @@ public class NamedQueryProperty2_0Composite extends Pane<NamedQuery2_0> { buildQueryHolder() ); - // Query text area - Composite queryWidgets = this.addLabeledComposite( - container, - JptUiDetailsMessages.NamedQueryPropertyComposite_query, - provider.getStyledText() - ); - // Install the content assist icon at the top left of the StyledText. // Note: For some reason, this needs to be done after the StyledText // is added to the labeled composite provider.installControlDecoration(); adjustMultiLineTextLayout( - queryWidgets, 4, provider.getStyledText(), provider.getStyledText().getLineHeight() ); // Lock Mode type - new LockModeComposite(this, container); + this.addLabel(container, JptUiDetailsMessages2_0.LockModeComposite_lockModeLabel); + this.addLockModeTypeCombo(container); - // Query Hints pane - container = this.addTitledGroup( - this.addSubPane(container, 5), - JptUiDetailsMessages.NamedQueryPropertyComposite_queryHintsGroupBox - ); + QueryHintsComposite queryHintsComposite = new QueryHintsComposite(this, container); + gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.horizontalSpan = 2; + queryHintsComposite.getControl().setLayoutData(gridData); + } + + private EnumFormComboViewer<NamedQuery2_0, LockModeType2_0> addLockModeTypeCombo(Composite container) { + + return new EnumFormComboViewer<NamedQuery2_0, LockModeType2_0>(this, container) { + + @Override + protected void addPropertyNames(Collection<String> propertyNames) { + super.addPropertyNames(propertyNames); + propertyNames.add(NamedQuery2_0.DEFAULT_LOCK_MODE_PROPERTY); + propertyNames.add(NamedQuery2_0.SPECIFIED_LOCK_MODE_PROPERTY); + } + + @Override + protected LockModeType2_0[] getChoices() { + return LockModeType2_0.values(); + } + + @Override + protected LockModeType2_0 getDefaultValue() { + return this.getSubject().getDefaultLockMode(); + } + + @Override + protected String displayString(LockModeType2_0 value) { + switch (value) { + case NONE : + return JptUiDetailsMessages2_0.LockModeComposite_none; + case OPTIMISTIC : + return JptUiDetailsMessages2_0.LockModeComposite_optimistic; + case OPTIMISTIC_FORCE_INCREMENT : + return JptUiDetailsMessages2_0.LockModeComposite_optimistic_force_increment; + case PESSIMISTIC_FORCE_INCREMENT : + return JptUiDetailsMessages2_0.LockModeComposite_pessimistic_force_increment; + case PESSIMISTIC_READ : + return JptUiDetailsMessages2_0.LockModeComposite_pessimistic_read; + case PESSIMISTIC_WRITE : + return JptUiDetailsMessages2_0.LockModeComposite_pessimistic_write; + case READ : + return JptUiDetailsMessages2_0.LockModeComposite_read; + case WRITE : + return JptUiDetailsMessages2_0.LockModeComposite_write; + default : + throw new IllegalStateException(); + } + } - new QueryHintsComposite(this, container); + @Override + protected LockModeType2_0 getValue() { + return this.getSubject().getSpecifiedLockMode(); + } + + @Override + protected void setValue(LockModeType2_0 value) { + this.getSubject().setSpecifiedLockMode(value); + } + }; } }
\ No newline at end of file diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/OneToManyJoiningStrategy2_0Pane.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/OneToManyJoiningStrategy2_0Pane.java index 6ce3c6ce17..47452065bc 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/OneToManyJoiningStrategy2_0Pane.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/OneToManyJoiningStrategy2_0Pane.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2009, 2011 Oracle. All rights reserved. + * Copyright (c) 2009, 2012 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. @@ -56,40 +56,40 @@ public class OneToManyJoiningStrategy2_0Pane super(parentPane, subjectHolder, parent); } - - + @Override - protected void initializeLayout(Composite container) { - Composite composite = addCollapsibleSection( + protected Composite addComposite(Composite container) { + return addCollapsibleSection( container, JptUiDetailsMessages.Joining_title, new SimplePropertyValueModel<Boolean>(Boolean.TRUE)); - + } + + @Override + protected void initializeLayout(Composite container) { addRadioButton( - composite, + container, JptUiDetailsMessages.Joining_mappedByLabel, MappedByJoiningStrategyPane.buildUsesMappedByJoiningStrategyHolder(getSubjectHolder()), null); - new MappedByJoiningStrategyPane(this, composite); + new MappedByJoiningStrategyPane(this, container); addRadioButton( - composite, + container, JptUiDetailsMessages.Joining_joinColumnJoiningLabel, JoinColumnJoiningStrategyPane.buildUsesJoinColumnJoiningStrategyHolder(getSubjectHolder()), null); JoinColumnJoiningStrategyPane. - buildJoinColumnJoiningStrategyPaneWithIncludeOverrideCheckBox(this, composite); + buildJoinColumnJoiningStrategyPaneWithIncludeOverrideCheckBox(this, container); addRadioButton( - composite, + container, JptUiDetailsMessages.Joining_joinTableJoiningLabel, JoinTableJoiningStrategyPane.buildUsesJoinTableJoiningStrategyHolder(getSubjectHolder()), null); - new JoinTableJoiningStrategyPane(this, composite); - - addSubPane(composite, 5); + new JoinTableJoiningStrategyPane(this, container); } } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/OneToOneJoiningStrategy2_0Pane.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/OneToOneJoiningStrategy2_0Pane.java index 79f70503af..6df868f747 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/OneToOneJoiningStrategy2_0Pane.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/OneToOneJoiningStrategy2_0Pane.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2010, 2011 Oracle. All rights reserved. + * Copyright (c) 2010, 2012 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. @@ -68,48 +68,48 @@ public class OneToOneJoiningStrategy2_0Pane super(parentPane, subjectHolder, parent); } - - + + @Override + protected Composite addComposite(Composite container) { + return addCollapsibleSection( + container, + JptUiDetailsMessages.Joining_title, + new SimplePropertyValueModel<Boolean>(Boolean.TRUE)); + } + @Override protected void initializeLayout(Composite container) { - Composite composite = addCollapsibleSection( - container, - JptUiDetailsMessages.Joining_title, - new SimplePropertyValueModel<Boolean>(Boolean.TRUE)); - addRadioButton( - composite, + container, JptUiDetailsMessages.Joining_mappedByLabel, MappedByJoiningStrategyPane.buildUsesMappedByJoiningStrategyHolder(getSubjectHolder()), null); - new MappedByJoiningStrategyPane(this, composite); + new MappedByJoiningStrategyPane(this, container); addRadioButton( - composite, + container, JptUiDetailsMessages.Joining_primaryKeyJoinColumnJoiningLabel, PrimaryKeyJoinColumnJoiningStrategyPane.buildUsesPrimaryKeyJoinColumnJoiningStrategyHolder(getSubjectHolder()), null); - new PrimaryKeyJoinColumnJoiningStrategyPane(this, composite); + new PrimaryKeyJoinColumnJoiningStrategyPane(this, container); addRadioButton( - composite, + container, JptUiDetailsMessages.Joining_joinColumnJoiningLabel, JoinColumnJoiningStrategyPane.buildUsesJoinColumnJoiningStrategyHolder(getSubjectHolder()), null); JoinColumnJoiningStrategyPane. - buildJoinColumnJoiningStrategyPaneWithIncludeOverrideCheckBox(this, composite); + buildJoinColumnJoiningStrategyPaneWithIncludeOverrideCheckBox(this, container); addRadioButton( - composite, + container, JptUiDetailsMessages.Joining_joinTableJoiningLabel, JoinTableJoiningStrategyPane.buildUsesJoinTableJoiningStrategyHolder(getSubjectHolder()), null); - new JoinTableJoiningStrategyPane(this, composite); - - addSubPane(composite, 5); + new JoinTableJoiningStrategyPane(this, container); } } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/OrderColumnComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/OrderColumnComposite.java index fb69cf8bab..c8f5124242 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/OrderColumnComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/OrderColumnComposite.java @@ -13,8 +13,8 @@ import java.util.Collection; import org.eclipse.jpt.common.ui.internal.JptCommonUiMessages; import org.eclipse.jpt.common.ui.internal.widgets.Pane; +import org.eclipse.jpt.common.ui.internal.widgets.TriStateCheckBox; import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter; -import org.eclipse.jpt.common.utility.internal.model.value.SimplePropertyValueModel; import org.eclipse.jpt.common.utility.internal.model.value.TransformationPropertyValueModel; import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; import org.eclipse.jpt.common.utility.model.value.ModifiablePropertyValueModel; @@ -26,7 +26,10 @@ import org.eclipse.jpt.jpa.ui.internal.JpaHelpContextIds; import org.eclipse.jpt.jpa.ui.internal.details.JptUiDetailsMessages; import org.eclipse.jpt.jpa.ui.internal.details.db.ColumnCombo; import org.eclipse.osgi.util.NLS; +import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; +import org.eclipse.ui.forms.widgets.ExpandableComposite; +import org.eclipse.ui.forms.widgets.Section; /** * Here the layout of this pane: @@ -65,9 +68,10 @@ public class OrderColumnComposite extends Pane<OrderColumn2_0> { */ public OrderColumnComposite(Pane<?> parentPane, PropertyValueModel<? extends OrderColumn2_0> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent) { - super(parentPane, subjectHolder, parent, false); + super(parentPane, subjectHolder, enabledModel, parent); } @@ -101,6 +105,12 @@ public class OrderColumnComposite extends Pane<OrderColumn2_0> { protected String getValue() { return getSubject().getSpecifiedName(); } + + @Override + protected String getHelpId() { + return JpaHelpContextIds.MAPPING_ORDER_COLUMN_ORDERING_COLUMN; + } + @Override public String toString() { return "OrderColumnComposite.columnCombo"; //$NON-NLS-1$ @@ -265,70 +275,66 @@ public class OrderColumnComposite extends Pane<OrderColumn2_0> { } @Override + protected Composite addComposite(Composite container) { + return this.addSubPane(container, 2, 0, 0, 0, 0); //2 columns + } + + @Override protected void initializeLayout(Composite container) { // Column widgets - addLabeledComposite( - container, - JptUiDetailsMessages.ColumnComposite_name, - addColumnCombo(container), - JpaHelpContextIds.MAPPING_ORDER_COLUMN_ORDERING_COLUMN - ); + this.addLabel(container, JptUiDetailsMessages.ColumnComposite_name); + this.addColumnCombo(container); // Details sub-pane - container = addCollapsibleSubSection( - container, - JptUiDetailsMessages.ColumnComposite_details, - new SimplePropertyValueModel<Boolean>(Boolean.FALSE) + Section section = this.getWidgetFactory().createSection(container, ExpandableComposite.TWISTIE); + GridData gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.horizontalSpan = 2; + gridData.horizontalIndent = 16; + section.setLayoutData(gridData); + section.setText(JptUiDetailsMessages.ColumnComposite_details); + + Composite detailsClient = this.addSubPane(section, 2, 0, 0, 0, 0); + section.setClient(detailsClient); + + // Insertable tri-state check box + TriStateCheckBox insertableCheckBox = addTriStateCheckBoxWithDefault( + detailsClient, + JptUiDetailsMessages.ColumnComposite_insertable, + buildInsertableHolder(), + buildInsertableStringHolder(), + JpaHelpContextIds.MAPPING_COLUMN_INSERTABLE + ); + gridData = new GridData(); + gridData.horizontalSpan = 2; + insertableCheckBox.getCheckBox().setLayoutData(gridData); + + // Updatable tri-state check box + TriStateCheckBox updatableCheckBox = addTriStateCheckBoxWithDefault( + detailsClient, + JptUiDetailsMessages.ColumnComposite_updatable, + buildUpdatableHolder(), + buildUpdatableStringHolder(), + JpaHelpContextIds.MAPPING_COLUMN_UPDATABLE ); + gridData = new GridData(); + gridData.horizontalSpan = 2; + updatableCheckBox.getCheckBox().setLayoutData(gridData); + + // Nullable tri-state check box + TriStateCheckBox nullableCheckBox = addTriStateCheckBoxWithDefault( + detailsClient, + JptUiDetailsMessages.ColumnComposite_nullable, + buildNullableHolder(), + buildNullableStringHolder(), + JpaHelpContextIds.MAPPING_COLUMN_NULLABLE + ); + gridData = new GridData(); + gridData.horizontalSpan = 2; + nullableCheckBox.getCheckBox().setLayoutData(gridData); - new DetailsComposite(this, getSubjectHolder(), addSubPane(container, 0, 16)); + // Column Definition widgets + this.addLabel(detailsClient, JptUiDetailsMessages.ColumnComposite_columnDefinition); + this.addText(detailsClient, buildColumnDefinitionHolder()); } - protected class DetailsComposite extends Pane<OrderColumn2_0> { - - public DetailsComposite(Pane<?> parentPane, - PropertyValueModel<? extends OrderColumn2_0> subjectHolder, - Composite parent) { - - super(parentPane, subjectHolder, parent, false); - } - - @Override - protected void initializeLayout(Composite container) { - - // Insertable tri-state check box - addTriStateCheckBoxWithDefault( - addSubPane(container, 4), - JptUiDetailsMessages.ColumnComposite_insertable, - buildInsertableHolder(), - buildInsertableStringHolder(), - JpaHelpContextIds.MAPPING_COLUMN_INSERTABLE - ); - - // Updatable tri-state check box - addTriStateCheckBoxWithDefault( - container, - JptUiDetailsMessages.ColumnComposite_updatable, - buildUpdatableHolder(), - buildUpdatableStringHolder(), - JpaHelpContextIds.MAPPING_COLUMN_UPDATABLE - ); - - // Nullable tri-state check box - addTriStateCheckBoxWithDefault( - container, - JptUiDetailsMessages.ColumnComposite_nullable, - buildNullableHolder(), - buildNullableStringHolder(), - JpaHelpContextIds.MAPPING_COLUMN_NULLABLE - ); - - // Column Definition widgets - addLabeledText( - container, - JptUiDetailsMessages.ColumnComposite_columnDefinition, - buildColumnDefinitionHolder() - ); - } - } }
\ No newline at end of file diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/Ordering2_0Composite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/Ordering2_0Composite.java index 79f04d6a3c..a8e214cfc9 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/Ordering2_0Composite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/Ordering2_0Composite.java @@ -9,11 +9,10 @@ ******************************************************************************/ package org.eclipse.jpt.jpa.ui.internal.jpa2.details; -import org.eclipse.jpt.common.ui.internal.util.PaneEnabler; import org.eclipse.jpt.common.ui.internal.widgets.Pane; import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter; -import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; import org.eclipse.jpt.common.utility.model.value.ModifiablePropertyValueModel; +import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; import org.eclipse.jpt.jpa.core.context.CollectionMapping; import org.eclipse.jpt.jpa.core.context.Orderable; import org.eclipse.jpt.jpa.core.jpa2.context.OrderColumn2_0; @@ -23,7 +22,9 @@ import org.eclipse.jpt.jpa.ui.internal.details.AbstractOrderingComposite; import org.eclipse.jpt.jpa.ui.internal.details.JptUiDetailsMessages; import org.eclipse.jpt.jpa.ui.internal.details.orm.OrmManyToManyMappingComposite; import org.eclipse.jpt.jpa.ui.internal.details.orm.OrmOneToManyMappingComposite; +import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Text; /** * Here the layout of this pane: @@ -62,17 +63,11 @@ public class Ordering2_0Composite extends AbstractOrderingComposite super(parentPane, parent); } - @Override protected void initializeLayout(Composite container) { PropertyValueModel<Orderable> orderableHolder = buildOrderableHolder(); - container = addCollapsibleSection( - container, - JptUiDetailsMessages.OrderingComposite_orderingGroup - ); - // No Ordering radio button addRadioButton( container, @@ -98,12 +93,15 @@ public class Ordering2_0Composite extends AbstractOrderingComposite ); // Custom Ordering text field - addText( - addSubPane(container, 0, 16), + Text orderingText = addText( + container, buildSpecifiedOrderByHolder(orderableHolder), JpaHelpContextIds.MAPPING_ORDER_BY, buildCustomOrderingHolder(orderableHolder) ); + GridData gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.horizontalIndent = 16; + orderingText.setLayoutData(gridData); // Order Column Ordering radio button @@ -116,21 +114,19 @@ public class Ordering2_0Composite extends AbstractOrderingComposite OrderColumnComposite orderColumnComposite = new OrderColumnComposite( this, - buildOrderColumnHolder(orderableHolder), - addSubPane(container, 0, 16)); + buildOrderColumnHolder(orderableHolder), + buildPaneEnablerHolder(orderableHolder), + container); + gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.horizontalIndent = 16; + orderColumnComposite.getControl().setLayoutData(gridData); - installOrderColumnCompositeEnabler(orderableHolder, orderColumnComposite); - } - - protected void installOrderColumnCompositeEnabler(PropertyValueModel<Orderable> orderableHolder, OrderColumnComposite pane) { - new PaneEnabler(buildPaneEnablerHolder(orderableHolder), pane); } private PropertyValueModel<Boolean> buildPaneEnablerHolder(PropertyValueModel<Orderable> orderableHolder) { return buildOrderColumnOrderingHolder(orderableHolder); } - protected ModifiablePropertyValueModel<Boolean> buildOrderColumnOrderingHolder(PropertyValueModel<Orderable> orderableHolder) { return new PropertyAspectAdapter<Orderable, Boolean>(orderableHolder, Orderable2_0.ORDER_COLUMN_ORDERING_PROPERTY) { @Override diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/OrphanRemoval2_0Composite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/OrphanRemoval2_0TriStateCheckBox.java index f280300f4c..ed2097be0f 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/OrphanRemoval2_0Composite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/OrphanRemoval2_0TriStateCheckBox.java @@ -11,6 +11,7 @@ package org.eclipse.jpt.jpa.ui.internal.jpa2.details; import org.eclipse.jpt.common.ui.internal.JptCommonUiMessages; import org.eclipse.jpt.common.ui.internal.widgets.Pane; +import org.eclipse.jpt.common.ui.internal.widgets.TriStateCheckBox; import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter; import org.eclipse.jpt.common.utility.internal.model.value.TransformationPropertyValueModel; import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; @@ -19,6 +20,7 @@ import org.eclipse.jpt.jpa.core.context.RelationshipMapping; import org.eclipse.jpt.jpa.core.jpa2.context.OrphanRemovable2_0; import org.eclipse.osgi.util.NLS; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; /** * Here the layout of this pane: @@ -35,15 +37,17 @@ import org.eclipse.swt.widgets.Composite; * @see {@link JavaOneToOneMapping2_0Composite} - A container of this widget * @see {@link OrmOneToOneMapping2_0Composite} - A container of this widget */ -public class OrphanRemoval2_0Composite extends Pane<OrphanRemovable2_0> +public class OrphanRemoval2_0TriStateCheckBox extends Pane<OrphanRemovable2_0> { + private TriStateCheckBox checkBox; + /** * Creates a new <code>OrphanRemoval2_0Composite</code>. * * @param parentPane The parent container of this one * @param parent The parent container */ - public OrphanRemoval2_0Composite( + public OrphanRemoval2_0TriStateCheckBox( Pane<? extends RelationshipMapping> parentPane, PropertyValueModel<? extends OrphanRemovable2_0> subjectHolder, Composite parent) { @@ -51,17 +55,27 @@ public class OrphanRemoval2_0Composite extends Pane<OrphanRemovable2_0> } @Override - protected void initializeLayout(Composite container) { + protected boolean addsComposite() { + return false; + } + + @Override + public Control getControl() { + return this.checkBox.getCheckBox(); + } - this.addTriStateCheckBoxWithDefault( + @Override + protected void initializeLayout(Composite container) { + this.checkBox = this.addTriStateCheckBoxWithDefault( container, JptUiDetailsMessages2_0.OrphanRemoval2_0Composite_orphanRemovalLabel, - this.buildOrphanRemovalHolder(), + this.buildSpecifiedOrphanRemovalHolder(), this.buildOrphanRemovalStringHolder(), null // TODO ); } - private ModifiablePropertyValueModel<Boolean> buildOrphanRemovalHolder() { + + private ModifiablePropertyValueModel<Boolean> buildSpecifiedOrphanRemovalHolder() { return new PropertyAspectAdapter<OrphanRemovable2_0, Boolean>( this.getSubjectHolder(), OrphanRemovable2_0.DEFAULT_ORPHAN_REMOVAL_PROPERTY, @@ -91,7 +105,7 @@ public class OrphanRemoval2_0Composite extends Pane<OrphanRemovable2_0> } }; } - + private PropertyValueModel<Boolean> buildDefaultOrphanRemovalHolder() { return new PropertyAspectAdapter<OrphanRemovable2_0, Boolean>( this.getSubjectHolder(), @@ -107,5 +121,4 @@ public class OrphanRemoval2_0Composite extends Pane<OrphanRemovable2_0> } }; } - }
\ No newline at end of file diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/Queries2_0Composite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/Queries2_0Composite.java index 17ead05d7d..729fabbb00 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/Queries2_0Composite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/Queries2_0Composite.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2009, 2011 Oracle. All rights reserved. + * Copyright (c) 2009, 2012 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. @@ -37,12 +37,12 @@ public class Queries2_0Composite protected Pane<NamedQuery2_0> buildNamedQueryPropertyComposite(PageBook pageBook) { return new NamedQueryProperty2_0Composite( this, - this.buildNamedQuery2_0Holder(), + this.buildSelectedNamedQuery2_0Model(), pageBook); } - protected PropertyValueModel<NamedQuery2_0> buildNamedQuery2_0Holder() { - return new TransformationPropertyValueModel<Query, NamedQuery2_0>(this.getQueryHolder()) { + protected PropertyValueModel<NamedQuery2_0> buildSelectedNamedQuery2_0Model() { + return new TransformationPropertyValueModel<Query, NamedQuery2_0>(this.getSelectedQueryModel()) { @Override protected NamedQuery2_0 transform_(Query value) { return (value instanceof NamedQuery2_0) ? (NamedQuery2_0) value : null; diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/SequenceGenerator2_0Composite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/SequenceGenerator2_0Composite.java index 22a92db8fb..86ce28a15f 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/SequenceGenerator2_0Composite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/SequenceGenerator2_0Composite.java @@ -1,5 +1,5 @@ /******************************************************************************* -* Copyright (c) 2009 Oracle. All rights reserved. +* Copyright (c) 2009, 2012 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. @@ -42,38 +42,27 @@ public class SequenceGenerator2_0Composite extends SequenceGeneratorComposite protected void initializeLayout(Composite container) { // Name widgets - this.addLabeledText( - container, - JptUiDetailsMessages.SequenceGeneratorComposite_name, - this.buildGeneratorNameHolder(), - JpaHelpContextIds.MAPPING_SEQUENCE_GENERATOR_NAME - ); + this.addLabel(container, JptUiDetailsMessages.SequenceGeneratorComposite_name); + this.addText(container, this.buildGeneratorNameHolder(), JpaHelpContextIds.MAPPING_SEQUENCE_GENERATOR_NAME); // Sequence Generator widgets - this.addLabeledComposite( - container, - JptUiDetailsMessages.SequenceGeneratorComposite_sequence, - this.buildSequenceNameCombo(container), - JpaHelpContextIds.MAPPING_SEQUENCE_GENERATOR_SEQUENCE - ); + this.addLabel(container, JptUiDetailsMessages.SequenceGeneratorComposite_sequence); + this.buildSequenceNameCombo(container); // Schema widgets - this.addLabeledComposite( - container, - JptUiDetailsMessages.SequenceGeneratorComposite_schema, - this.addSchemaCombo(container), - null // JpaHelpContextIds.MAPPING_SEQUENCE_GENERATOR_SCHEMA - ); + this.addLabel(container, JptUiDetailsMessages.SequenceGeneratorComposite_schema); + this.addSchemaCombo(container); // Catalog widgets - this.addLabeledComposite( - container, - JptUiDetailsMessages.SequenceGeneratorComposite_catalog, - this.addCatalogCombo(container), - null // JpaHelpContextIds.MAPPING_SEQUENCE_GENERATOR_CATALOG - ); + this.addLabel(container, JptUiDetailsMessages.SequenceGeneratorComposite_catalog); + this.addCatalogCombo(container); + // Allocation size widgets + this.addLabel(container, JptUiDetailsMessages.GeneratorComposite_allocationSize); this.addAllocationSizeCombo(container); + + // Initial value widgets + this.addLabel(container, JptUiDetailsMessages.GeneratorComposite_initialValue); this.addInitialValueCombo(container); } @@ -143,6 +132,11 @@ public class SequenceGenerator2_0Composite extends SequenceGeneratorComposite // we overrode #getDbSchemaContainer() instead throw new UnsupportedOperationException(); } + + @Override + public String toString() { + return "SecquenceGenerator2_0Composite.schemaCombo"; //$NON-NLS-1$ + } }; } @@ -184,6 +178,11 @@ public class SequenceGenerator2_0Composite extends SequenceGeneratorComposite protected String getValue() { return ((SequenceGenerator2_0) getSubject()).getSpecifiedCatalog(); } + + @Override + public String toString() { + return "SecquenceGenerator2_0Composite.catalogCombo"; //$NON-NLS-1$ + } }; } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/TargetClassComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/TargetClassChooser.java index 1819d2d7ce..4c502acccb 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/TargetClassComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/TargetClassChooser.java @@ -22,11 +22,12 @@ import org.eclipse.jpt.jpa.core.jpa2.context.ElementCollectionMapping2_0; import org.eclipse.jpt.jpa.ui.internal.JpaHelpContextIds; import org.eclipse.osgi.util.NLS; import org.eclipse.swt.widgets.Composite; +import org.eclipse.ui.forms.widgets.Hyperlink; /** * target entity hyperlink label, combo and browse button */ -public class TargetClassComposite extends ClassChooserComboPane<ElementCollectionMapping2_0> +public class TargetClassChooser extends ClassChooserComboPane<ElementCollectionMapping2_0> { /** @@ -35,11 +36,11 @@ public class TargetClassComposite extends ClassChooserComboPane<ElementCollectio * @param parentPane The parent container of this one * @param parent The parent container */ - public TargetClassComposite( - Pane<? extends ElementCollectionMapping2_0> parentPane, - Composite parent) { + public TargetClassChooser(Pane<? extends ElementCollectionMapping2_0> parentPane, + Composite parent, + Hyperlink hyperlink) { - super(parentPane, parent); + super(parentPane, parent, hyperlink); } @Override @@ -56,17 +57,12 @@ public class TargetClassComposite extends ClassChooserComboPane<ElementCollectio protected char getEnclosingTypeSeparator() { return getSubject().getTargetClassEnclosingTypeSeparator(); } - - @Override - protected String getLabelText() { - return JptUiDetailsMessages2_0.TargetClassComposite_label; - } - + @Override protected String getHelpId() { return JpaHelpContextIds.MAPPING_ELEMENT_COLLECTION_TARGET_CLASS; } - + @Override protected IJavaProject getJavaProject() { return getSubject().getJpaProject().getJavaProject(); @@ -88,7 +84,7 @@ public class TargetClassComposite extends ClassChooserComboPane<ElementCollectio String name = this.subject.getSpecifiedTargetClass(); if (name == null) { - name = TargetClassComposite.this.getDefaultValue(this.subject); + name = TargetClassChooser.this.getDefaultValue(this.subject); } return name; } @@ -119,7 +115,7 @@ public class TargetClassComposite extends ClassChooserComboPane<ElementCollectio return new PropertyAspectAdapter<ElementCollectionMapping2_0, String>(this.getSubjectHolder(), ElementCollectionMapping2_0.DEFAULT_TARGET_CLASS_PROPERTY) { @Override protected String buildValue_() { - return TargetClassComposite.this.getDefaultValue(this.subject); + return TargetClassChooser.this.getDefaultValue(this.subject); } }; } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/java/Generic2_0JavaUiFactory.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/java/Generic2_0JavaUiFactory.java index 451c37f8e2..4379759d8b 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/java/Generic2_0JavaUiFactory.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/java/Generic2_0JavaUiFactory.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2009 Oracle. All rights reserved. + * Copyright (c) 2009, 2012 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. @@ -26,7 +26,7 @@ import org.eclipse.jpt.jpa.ui.details.JpaComposite; import org.eclipse.jpt.jpa.ui.internal.details.java.BaseJavaUiFactory; import org.eclipse.jpt.jpa.ui.internal.jpa2.details.ElementCollectionMapping2_0Composite; import org.eclipse.jpt.jpa.ui.internal.jpa2.details.EmbeddedIdMapping2_0Composite; -import org.eclipse.jpt.jpa.ui.internal.persistence.details.GenericPersistenceXmlUiFactory; +import org.eclipse.jpt.jpa.ui.internal.persistence.GenericPersistenceXmlUiFactory; import org.eclipse.jpt.jpa.ui.jpa2.details.java.JavaUiFactory2_0; import org.eclipse.swt.widgets.Composite; @@ -72,63 +72,71 @@ public class Generic2_0JavaUiFactory @Override public JpaComposite createJavaIdMappingComposite( PropertyValueModel<JavaIdMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory) { - return new JavaIdMapping2_0Composite(subjectHolder, parent, widgetFactory); + return new JavaIdMapping2_0Composite(subjectHolder, enabledModel, parent, widgetFactory); } @Override public JpaComposite createJavaEmbeddedIdMappingComposite( PropertyValueModel<JavaEmbeddedIdMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory) { - return new EmbeddedIdMapping2_0Composite(subjectHolder, parent, widgetFactory); + return new EmbeddedIdMapping2_0Composite(subjectHolder, enabledModel, parent, widgetFactory); } @Override public JpaComposite createJavaEmbeddedMappingComposite( PropertyValueModel<JavaEmbeddedMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory) { - return new JavaEmbeddedMapping2_0Composite(subjectHolder, parent, widgetFactory); + return new JavaEmbeddedMapping2_0Composite(subjectHolder, enabledModel, parent, widgetFactory); } @Override public JpaComposite createJavaManyToManyMappingComposite( PropertyValueModel<JavaManyToManyMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory) { - return new JavaManyToManyMapping2_0Composite(subjectHolder, parent, widgetFactory); + return new JavaManyToManyMapping2_0Composite(subjectHolder, enabledModel, parent, widgetFactory); } @Override public JpaComposite createJavaManyToOneMappingComposite( PropertyValueModel<JavaManyToOneMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory) { - return new JavaManyToOneMapping2_0Composite(subjectHolder, parent, widgetFactory); + return new JavaManyToOneMapping2_0Composite(subjectHolder, enabledModel, parent, widgetFactory); } @Override public JpaComposite createJavaOneToManyMappingComposite( PropertyValueModel<JavaOneToManyMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory) { - return new JavaOneToManyMapping2_0Composite(subjectHolder, parent, widgetFactory); + return new JavaOneToManyMapping2_0Composite(subjectHolder, enabledModel, parent, widgetFactory); } @Override public JpaComposite createJavaOneToOneMappingComposite( PropertyValueModel<JavaOneToOneMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory) { - return new JavaOneToOneMapping2_0Composite(subjectHolder, parent, widgetFactory); + return new JavaOneToOneMapping2_0Composite(subjectHolder, enabledModel, parent, widgetFactory); } public JpaComposite createJavaElementCollectionMapping2_0Composite( PropertyValueModel<JavaElementCollectionMapping2_0> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory) { - return new ElementCollectionMapping2_0Composite(subjectHolder, parent, widgetFactory); + return new ElementCollectionMapping2_0Composite(subjectHolder, enabledModel, parent, widgetFactory); } } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/java/JavaElementCollectionMapping2_0UiDefinition.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/java/JavaElementCollectionMapping2_0UiDefinition.java index 42f5a7e56a..11ef945fa1 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/java/JavaElementCollectionMapping2_0UiDefinition.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/java/JavaElementCollectionMapping2_0UiDefinition.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2009 Oracle. All rights reserved. + * Copyright (c) 2009, 2012 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. @@ -48,9 +48,10 @@ public class JavaElementCollectionMapping2_0UiDefinition public JpaComposite buildAttributeMappingComposite( JavaUiFactory factory, PropertyValueModel<JavaElementCollectionMapping2_0> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory) { - return ((JavaUiFactory2_0) factory).createJavaElementCollectionMapping2_0Composite(subjectHolder, parent, widgetFactory); + return ((JavaUiFactory2_0) factory).createJavaElementCollectionMapping2_0Composite(subjectHolder, enabledModel, parent, widgetFactory); } } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/java/JavaEmbeddable2_0Composite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/java/JavaEmbeddable2_0Composite.java index a1fae294dd..a921dbae36 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/java/JavaEmbeddable2_0Composite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/java/JavaEmbeddable2_0Composite.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2007, 2010 Oracle. All rights reserved. + * Copyright (c) 2007, 2012 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. @@ -15,9 +15,11 @@ import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; import org.eclipse.jpt.jpa.core.context.AccessHolder; import org.eclipse.jpt.jpa.core.context.java.JavaEmbeddable; import org.eclipse.jpt.jpa.ui.details.JpaComposite; +import org.eclipse.jpt.jpa.ui.internal.JptUiMessages; import org.eclipse.jpt.jpa.ui.internal.details.AbstractEmbeddableComposite; -import org.eclipse.jpt.jpa.ui.internal.details.AccessTypeComposite; +import org.eclipse.jpt.jpa.ui.internal.details.AccessTypeComboViewer; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; /** * This pane does not have any widgets. @@ -51,8 +53,14 @@ public class JavaEmbeddable2_0Composite extends AbstractEmbeddableComposite<Java } @Override - protected void initializeEmbeddableSection(Composite container) { - new AccessTypeComposite(this, buildAccessHolder(), container); + protected Control initializeEmbeddableSection(Composite container) { + container = this.addSubPane(container, 2, 0, 0, 0, 0); + + // Access type widgets + this.addLabel(container, JptUiMessages.AccessTypeComposite_access); + new AccessTypeComboViewer(this, buildAccessHolder(), container); + + return container; } protected PropertyValueModel<AccessHolder> buildAccessHolder() { diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/java/JavaEmbeddedMapping2_0Composite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/java/JavaEmbeddedMapping2_0Composite.java index 8713cc0415..3885e6e6c2 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/java/JavaEmbeddedMapping2_0Composite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/java/JavaEmbeddedMapping2_0Composite.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2007, 2010 Oracle. All rights reserved. + * Copyright (c) 2007, 2012 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. @@ -16,6 +16,7 @@ import org.eclipse.jpt.jpa.ui.details.JpaComposite; import org.eclipse.jpt.jpa.ui.internal.details.AbstractEmbeddedMappingComposite; import org.eclipse.jpt.jpa.ui.internal.jpa2.details.EmbeddedMapping2_0OverridesComposite; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; /** * Here the layout of this pane: @@ -44,17 +45,19 @@ public class JavaEmbeddedMapping2_0Composite extends AbstractEmbeddedMappingComp * @param widgetFactory The factory used to create various common widgets */ public JavaEmbeddedMapping2_0Composite(PropertyValueModel<? extends JavaEmbeddedMapping> subjectHolder, - Composite parent, + PropertyValueModel<Boolean> enabledModel, + Composite parent, WidgetFactory widgetFactory) { - super(subjectHolder, parent, widgetFactory); + super(subjectHolder, enabledModel, parent, widgetFactory); } @Override - protected void initializeEmbeddedSection(Composite container) { - new EmbeddedMapping2_0OverridesComposite( - this, - container - ); + protected Control initializeEmbeddedSection(Composite container) { + //a Section appears to not like having a Group as its client. EmbeddedMappingOverridesComposite + //uses a Group as its 'control' so I am adding an extra composite here. + container = this.addSubPane(container); + new EmbeddedMapping2_0OverridesComposite(this, container); + return container; } }
\ No newline at end of file diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/java/JavaEntity2_0Composite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/java/JavaEntity2_0Composite.java index cc12ebd7f1..d15023442c 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/java/JavaEntity2_0Composite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/java/JavaEntity2_0Composite.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2006, 2010 Oracle. All rights reserved. + * Copyright (c) 2006, 2012 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. @@ -13,21 +13,25 @@ import org.eclipse.jpt.common.ui.WidgetFactory; import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter; import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; import org.eclipse.jpt.jpa.core.context.AccessHolder; -import org.eclipse.jpt.jpa.core.context.QueryContainer; import org.eclipse.jpt.jpa.core.context.java.JavaEntity; import org.eclipse.jpt.jpa.core.jpa2.context.Cacheable2_0; import org.eclipse.jpt.jpa.core.jpa2.context.CacheableHolder2_0; +import org.eclipse.jpt.jpa.ui.internal.JptUiMessages; import org.eclipse.jpt.jpa.ui.internal.details.AbstractEntityComposite; -import org.eclipse.jpt.jpa.ui.internal.details.AccessTypeComposite; -import org.eclipse.jpt.jpa.ui.internal.details.EntityNameComposite; -import org.eclipse.jpt.jpa.ui.internal.details.IdClassComposite; +import org.eclipse.jpt.jpa.ui.internal.details.AccessTypeComboViewer; +import org.eclipse.jpt.jpa.ui.internal.details.EntityNameCombo; +import org.eclipse.jpt.jpa.ui.internal.details.IdClassChooser; +import org.eclipse.jpt.jpa.ui.internal.details.JptUiDetailsMessages; import org.eclipse.jpt.jpa.ui.internal.details.TableComposite; import org.eclipse.jpt.jpa.ui.internal.details.java.JavaInheritanceComposite; import org.eclipse.jpt.jpa.ui.internal.details.java.JavaSecondaryTablesComposite; -import org.eclipse.jpt.jpa.ui.internal.jpa2.details.Cacheable2_0Pane; +import org.eclipse.jpt.jpa.ui.internal.jpa2.details.Cacheable2_0TriStateCheckBox; import org.eclipse.jpt.jpa.ui.internal.jpa2.details.Entity2_0OverridesComposite; import org.eclipse.jpt.jpa.ui.internal.jpa2.details.Queries2_0Composite; +import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.ui.forms.widgets.Hyperlink; /** * The pane used for a Java entity. @@ -57,12 +61,34 @@ public class JavaEntity2_0Composite } @Override - protected void initializeEntitySection(Composite container) { - new TableComposite(this, container); - new EntityNameComposite(this, container); - new AccessTypeComposite(this, buildAccessHolder(), container); - new IdClassComposite(this, buildIdClassReferenceHolder(), container); - new Cacheable2_0Pane(this, buildCacheableHolder(), container); + protected Control initializeEntitySection(Composite container) { + container = this.addSubPane(container, 2, 0, 0, 0, 0); + + // Table widgets + TableComposite tableComposite = new TableComposite(this, container); + GridData gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.horizontalSpan = 2; + tableComposite.getControl().setLayoutData(gridData); + + // Entity name widgets + this.addLabel(container, JptUiDetailsMessages.EntityNameComposite_name); + new EntityNameCombo(this, container); + + // Access type widgets + this.addLabel(container, JptUiMessages.AccessTypeComposite_access); + new AccessTypeComboViewer(this, buildAccessHolder(), container); + + // Id class widgets + Hyperlink hyperlink = this.addHyperlink(container,JptUiDetailsMessages.IdClassComposite_label); + new IdClassChooser(this, this.buildIdClassReferenceHolder(), container, hyperlink); + + // Cacheable widgets + Cacheable2_0TriStateCheckBox cacheableCheckBox = new Cacheable2_0TriStateCheckBox(this, buildCacheableHolder(), container); + gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.horizontalSpan = 2; + cacheableCheckBox.getControl().setLayoutData(gridData); + + return container; } protected PropertyValueModel<AccessHolder> buildAccessHolder() { @@ -84,22 +110,22 @@ public class JavaEntity2_0Composite } @Override - protected void initializeSecondaryTablesSection(Composite container) { - new JavaSecondaryTablesComposite(this, container); + protected Control initializeSecondaryTablesSection(Composite container) { + return new JavaSecondaryTablesComposite(this, container).getControl(); } @Override - protected void initializeInheritanceSection(Composite container) { - new JavaInheritanceComposite(this, container); + protected Control initializeInheritanceSection(Composite container) { + return new JavaInheritanceComposite(this, container).getControl(); } @Override - protected void initializeAttributeOverridesSection(Composite container) { - new Entity2_0OverridesComposite(this, container); + protected Control initializeAttributeOverridesSection(Composite container) { + return new Entity2_0OverridesComposite(this, container).getControl(); } @Override - protected void initializeQueriesSection(Composite container, PropertyValueModel<QueryContainer> queryContainerHolder) { - new Queries2_0Composite(this, queryContainerHolder, container); + protected Control initializeQueriesSection(Composite container) { + return new Queries2_0Composite(this, this.buildQueryContainerHolder(), container).getControl(); } } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/java/JavaIdMapping2_0Composite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/java/JavaIdMapping2_0Composite.java index 6ab367fabe..b3b10d3aa0 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/java/JavaIdMapping2_0Composite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/java/JavaIdMapping2_0Composite.java @@ -1,5 +1,5 @@ /******************************************************************************* -* Copyright (c) 2009, 2010 Oracle. All rights reserved. +* Copyright (c) 2009, 2012 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. @@ -17,23 +17,29 @@ import org.eclipse.jpt.jpa.ui.internal.details.ColumnComposite; import org.eclipse.jpt.jpa.ui.internal.jpa2.details.IdMapping2_0MappedByRelationshipPane; import org.eclipse.jpt.jpa.ui.internal.jpa2.details.IdMappingGeneration2_0Composite; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; public class JavaIdMapping2_0Composite extends AbstractIdMappingComposite<IdMapping> { public JavaIdMapping2_0Composite( PropertyValueModel<? extends IdMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory) { - super(subjectHolder, parent, widgetFactory); + super(subjectHolder, enabledModel, parent, widgetFactory); } @Override - protected void initializeIdSection(Composite container) { + protected Control initializeIdSection(Composite container) { + container = this.addSubPane(container); + new IdMapping2_0MappedByRelationshipPane(this, getSubjectHolder(), container); new ColumnComposite(this, buildColumnHolder(), container); + + return container; } @Override diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/java/JavaManyToManyMapping2_0Composite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/java/JavaManyToManyMapping2_0Composite.java index 55822090d6..9953c4281c 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/java/JavaManyToManyMapping2_0Composite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/java/JavaManyToManyMapping2_0Composite.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2006, 2011 Oracle. All rights reserved. + * Copyright (c) 2006, 2012 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. @@ -14,33 +14,52 @@ import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; import org.eclipse.jpt.jpa.core.context.java.JavaManyToManyMapping; import org.eclipse.jpt.jpa.core.context.java.JavaManyToManyRelationship; import org.eclipse.jpt.jpa.ui.internal.details.AbstractManyToManyMappingComposite; -import org.eclipse.jpt.jpa.ui.internal.details.FetchTypeComposite; -import org.eclipse.jpt.jpa.ui.internal.details.TargetEntityComposite; +import org.eclipse.jpt.jpa.ui.internal.details.FetchTypeComboViewer; +import org.eclipse.jpt.jpa.ui.internal.details.JptUiDetailsMessages; +import org.eclipse.jpt.jpa.ui.internal.details.TargetEntityClassChooser; import org.eclipse.jpt.jpa.ui.internal.jpa2.details.CascadePane2_0; import org.eclipse.jpt.jpa.ui.internal.jpa2.details.Ordering2_0Composite; +import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.ui.forms.widgets.Hyperlink; public class JavaManyToManyMapping2_0Composite extends AbstractManyToManyMappingComposite<JavaManyToManyMapping, JavaManyToManyRelationship> { public JavaManyToManyMapping2_0Composite( PropertyValueModel<? extends JavaManyToManyMapping> subjectHolder, - Composite parent, + PropertyValueModel<Boolean> enabledModel, + Composite parent, WidgetFactory widgetFactory) { - super(subjectHolder, parent, widgetFactory); + super(subjectHolder, enabledModel, parent, widgetFactory); } @Override - protected void initializeManyToManySection(Composite container) { - new TargetEntityComposite(this, container); - new FetchTypeComposite(this, container); - new CascadePane2_0(this, buildCascadeHolder(), addSubPane(container, 5)); + protected Control initializeManyToManySection(Composite container) { + container = this.addSubPane(container, 2, 0, 0, 0, 0); + + // Target entity widgets + Hyperlink targetEntityHyperlink = this.addHyperlink(container, JptUiDetailsMessages.TargetEntityChooser_label); + new TargetEntityClassChooser(this, container, targetEntityHyperlink); + + // Fetch type widgets + this.addLabel(container, JptUiDetailsMessages.BasicGeneralSection_fetchLabel); + new FetchTypeComboViewer(this, container); + + // Cascade widgets + CascadePane2_0 cascadePane = new CascadePane2_0(this, buildCascadeHolder(), container); + GridData gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.horizontalSpan = 2; + cascadePane.getControl().setLayoutData(gridData); + + return container; } - + @Override - protected void initializeOrderingCollapsibleSection(Composite container) { - new Ordering2_0Composite(this, container); + protected Control initializeOrderingSection(Composite container) { + return new Ordering2_0Composite(this, container).getControl(); } } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/java/JavaManyToOneMapping2_0Composite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/java/JavaManyToOneMapping2_0Composite.java index dba1e697f4..fbd5433503 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/java/JavaManyToOneMapping2_0Composite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/java/JavaManyToOneMapping2_0Composite.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2009, 2011 Oracle. All rights reserved. + * Copyright (c) 2009, 2012 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. @@ -13,30 +13,54 @@ import org.eclipse.jpt.common.ui.WidgetFactory; import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; import org.eclipse.jpt.jpa.core.context.java.JavaManyToOneMapping; import org.eclipse.jpt.jpa.core.jpa2.context.java.JavaManyToOneRelationship2_0; -import org.eclipse.jpt.jpa.ui.internal.details.FetchTypeComposite; -import org.eclipse.jpt.jpa.ui.internal.details.OptionalComposite; -import org.eclipse.jpt.jpa.ui.internal.details.TargetEntityComposite; +import org.eclipse.jpt.jpa.ui.internal.details.FetchTypeComboViewer; +import org.eclipse.jpt.jpa.ui.internal.details.JptUiDetailsMessages; +import org.eclipse.jpt.jpa.ui.internal.details.OptionalTriStateCheckBox; +import org.eclipse.jpt.jpa.ui.internal.details.TargetEntityClassChooser; import org.eclipse.jpt.jpa.ui.internal.jpa2.details.AbstractManyToOneMapping2_0Composite; import org.eclipse.jpt.jpa.ui.internal.jpa2.details.CascadePane2_0; +import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.ui.forms.widgets.Hyperlink; public class JavaManyToOneMapping2_0Composite extends AbstractManyToOneMapping2_0Composite<JavaManyToOneMapping, JavaManyToOneRelationship2_0> { public JavaManyToOneMapping2_0Composite( PropertyValueModel<? extends JavaManyToOneMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory) { - super(subjectHolder, parent, widgetFactory); + super(subjectHolder, enabledModel, parent, widgetFactory); } @Override - protected void initializeManyToOneSection(Composite container) { - new TargetEntityComposite(this, container); - new FetchTypeComposite(this, container); - new OptionalComposite(this, container); - new CascadePane2_0(this, buildCascadeHolder(), addSubPane(container, 5)); + protected Control initializeManyToOneSection(Composite container) { + container = this.addSubPane(container, 2, 0, 0, 0, 0); + + // Target entity widgets + Hyperlink targetEntityHyperlink = this.addHyperlink(container, JptUiDetailsMessages.TargetEntityChooser_label); + new TargetEntityClassChooser(this, container, targetEntityHyperlink); + + // Fetch type widgets + this.addLabel(container, JptUiDetailsMessages.BasicGeneralSection_fetchLabel); + new FetchTypeComboViewer(this, container); + + // Optional widgets + OptionalTriStateCheckBox optionalCheckBox = new OptionalTriStateCheckBox(this, container); + GridData gridData = new GridData(); + gridData.horizontalSpan = 2; + optionalCheckBox.getControl().setLayoutData(gridData); + + // Cascade widgets + CascadePane2_0 cascadePane = new CascadePane2_0(this, buildCascadeHolder(), container); + gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.horizontalSpan = 2; + cascadePane.getControl().setLayoutData(gridData); + + return container; } } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/java/JavaMappedSuperclass2_0Composite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/java/JavaMappedSuperclass2_0Composite.java index 836202ac08..832a89cb47 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/java/JavaMappedSuperclass2_0Composite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/java/JavaMappedSuperclass2_0Composite.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2005, 2010 Oracle. All rights reserved. + * Copyright (c) 2005, 2012 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. @@ -16,10 +16,14 @@ import org.eclipse.jpt.jpa.core.context.AccessHolder; import org.eclipse.jpt.jpa.core.context.MappedSuperclass; import org.eclipse.jpt.jpa.core.context.java.JavaMappedSuperclass; import org.eclipse.jpt.jpa.ui.details.JpaComposite; -import org.eclipse.jpt.jpa.ui.internal.details.AccessTypeComposite; +import org.eclipse.jpt.jpa.ui.internal.JptUiMessages; import org.eclipse.jpt.jpa.ui.internal.details.AbstractJavaMappedSuperclassComposite; -import org.eclipse.jpt.jpa.ui.internal.details.IdClassComposite; +import org.eclipse.jpt.jpa.ui.internal.details.AccessTypeComboViewer; +import org.eclipse.jpt.jpa.ui.internal.details.IdClassChooser; +import org.eclipse.jpt.jpa.ui.internal.details.JptUiDetailsMessages; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.ui.forms.widgets.Hyperlink; /** * Here the layout of this pane: @@ -74,9 +78,17 @@ public class JavaMappedSuperclass2_0Composite } @Override - protected void initializeMappedSuperclassSection(Composite container) { - new AccessTypeComposite(this, buildAccessHolder(), container); - new IdClassComposite(this, buildIdClassReferenceHolder(), container); + protected Control initializeMappedSuperclassSection(Composite container) { + container = this.addSubPane(container, 2, 0, 0, 0, 0); + + this.addLabel(container, JptUiMessages.AccessTypeComposite_access); + new AccessTypeComboViewer(this, buildAccessHolder(), container); + + // Id class widgets + Hyperlink hyperlink = this.addHyperlink(container,JptUiDetailsMessages.IdClassComposite_label); + new IdClassChooser(this, this.buildIdClassReferenceHolder(), container, hyperlink); + + return container; } protected PropertyValueModel<AccessHolder> buildAccessHolder() { diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/java/JavaOneToManyMapping2_0Composite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/java/JavaOneToManyMapping2_0Composite.java index 1c946851a7..f9fd2aea22 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/java/JavaOneToManyMapping2_0Composite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/java/JavaOneToManyMapping2_0Composite.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2009, 2011 Oracle. All rights reserved. + * Copyright (c) 2009, 2012 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. @@ -17,32 +17,54 @@ import org.eclipse.jpt.jpa.core.jpa2.context.OrphanRemovable2_0; import org.eclipse.jpt.jpa.core.jpa2.context.OrphanRemovalHolder2_0; import org.eclipse.jpt.jpa.core.jpa2.context.java.JavaOneToManyRelationship2_0; import org.eclipse.jpt.jpa.ui.internal.details.AbstractOneToManyMappingComposite; -import org.eclipse.jpt.jpa.ui.internal.details.FetchTypeComposite; -import org.eclipse.jpt.jpa.ui.internal.details.TargetEntityComposite; +import org.eclipse.jpt.jpa.ui.internal.details.FetchTypeComboViewer; +import org.eclipse.jpt.jpa.ui.internal.details.JptUiDetailsMessages; +import org.eclipse.jpt.jpa.ui.internal.details.TargetEntityClassChooser; import org.eclipse.jpt.jpa.ui.internal.jpa2.details.CascadePane2_0; import org.eclipse.jpt.jpa.ui.internal.jpa2.details.OneToManyJoiningStrategy2_0Pane; import org.eclipse.jpt.jpa.ui.internal.jpa2.details.Ordering2_0Composite; -import org.eclipse.jpt.jpa.ui.internal.jpa2.details.OrphanRemoval2_0Composite; +import org.eclipse.jpt.jpa.ui.internal.jpa2.details.OrphanRemoval2_0TriStateCheckBox; +import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.ui.forms.widgets.Hyperlink; public class JavaOneToManyMapping2_0Composite extends AbstractOneToManyMappingComposite<JavaOneToManyMapping, JavaOneToManyRelationship2_0> { public JavaOneToManyMapping2_0Composite( PropertyValueModel<? extends JavaOneToManyMapping> subjectHolder, - Composite parent, + PropertyValueModel<Boolean> enabledModel, + Composite parent, WidgetFactory widgetFactory) { - super(subjectHolder, parent, widgetFactory); + super(subjectHolder, enabledModel, parent, widgetFactory); } @Override - protected void initializeOneToManySection(Composite container) { - new TargetEntityComposite(this, container); - new FetchTypeComposite(this, container); - new OrphanRemoval2_0Composite(this, this.buildOrphanRemovableHolder(), container); - new CascadePane2_0(this, this.buildCascadeHolder(), this.addSubPane(container, 5)); + protected Control initializeOneToManySection(Composite container) { + container = this.addSubPane(container, 2, 0, 0, 0, 0); + + // Target entity widgets + Hyperlink targetEntityHyperlink = this.addHyperlink(container, JptUiDetailsMessages.TargetEntityChooser_label); + new TargetEntityClassChooser(this, container, targetEntityHyperlink); + + // Fetch type widgets + this.addLabel(container, JptUiDetailsMessages.BasicGeneralSection_fetchLabel); + new FetchTypeComboViewer(this, container); + + // Orphan removal widgets + PropertyValueModel<OrphanRemovable2_0> orphanRemovableHolder = buildOrphanRemovableHolder(); + new OrphanRemoval2_0TriStateCheckBox(this, orphanRemovableHolder, container); + + // Cascade widgets + CascadePane2_0 cascadePane = new CascadePane2_0(this, this.buildCascadeHolder(), container); + GridData gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.horizontalSpan = 2; + cascadePane.getControl().setLayoutData(gridData); + + return container; } @Override @@ -51,8 +73,8 @@ public class JavaOneToManyMapping2_0Composite } @Override - protected void initializeOrderingCollapsibleSection(Composite container) { - new Ordering2_0Composite(this, container); + protected Control initializeOrderingSection(Composite container) { + return new Ordering2_0Composite(this, container).getControl(); } protected PropertyValueModel<OrphanRemovable2_0> buildOrphanRemovableHolder() { diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/java/JavaOneToOneMapping2_0Composite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/java/JavaOneToOneMapping2_0Composite.java index 9cc8974a57..950e26366c 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/java/JavaOneToOneMapping2_0Composite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/java/JavaOneToOneMapping2_0Composite.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2009, 2011 Oracle. All rights reserved. + * Copyright (c) 2009, 2012 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. @@ -16,34 +16,61 @@ import org.eclipse.jpt.jpa.core.context.java.JavaOneToOneMapping; import org.eclipse.jpt.jpa.core.jpa2.context.OrphanRemovable2_0; import org.eclipse.jpt.jpa.core.jpa2.context.OrphanRemovalHolder2_0; import org.eclipse.jpt.jpa.core.jpa2.context.java.JavaOneToOneRelationship2_0; -import org.eclipse.jpt.jpa.ui.internal.details.FetchTypeComposite; -import org.eclipse.jpt.jpa.ui.internal.details.OptionalComposite; -import org.eclipse.jpt.jpa.ui.internal.details.TargetEntityComposite; +import org.eclipse.jpt.jpa.ui.internal.details.FetchTypeComboViewer; +import org.eclipse.jpt.jpa.ui.internal.details.JptUiDetailsMessages; +import org.eclipse.jpt.jpa.ui.internal.details.OptionalTriStateCheckBox; +import org.eclipse.jpt.jpa.ui.internal.details.TargetEntityClassChooser; import org.eclipse.jpt.jpa.ui.internal.jpa2.details.AbstractOneToOneMapping2_0Composite; import org.eclipse.jpt.jpa.ui.internal.jpa2.details.CascadePane2_0; import org.eclipse.jpt.jpa.ui.internal.jpa2.details.OneToOneJoiningStrategy2_0Pane; -import org.eclipse.jpt.jpa.ui.internal.jpa2.details.OrphanRemoval2_0Composite; +import org.eclipse.jpt.jpa.ui.internal.jpa2.details.OrphanRemoval2_0TriStateCheckBox; +import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.ui.forms.widgets.Hyperlink; public class JavaOneToOneMapping2_0Composite extends AbstractOneToOneMapping2_0Composite<JavaOneToOneMapping, JavaOneToOneRelationship2_0> { public JavaOneToOneMapping2_0Composite( PropertyValueModel<? extends JavaOneToOneMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory) { - super(subjectHolder, parent, widgetFactory); + super(subjectHolder, enabledModel, parent, widgetFactory); } @Override - protected void initializeOneToOneSection(Composite container) { - new TargetEntityComposite(this, container); - new FetchTypeComposite(this, container); - new OptionalComposite(this, container); - new OrphanRemoval2_0Composite(this, buildOrphanRemovableHolder(), container); - new CascadePane2_0(this, buildCascadeHolder(), addSubPane(container, 5)); + protected Control initializeOneToOneSection(Composite container) { + container = this.addSubPane(container, 2, 0, 0, 0, 0); + + // Target entity widgets + Hyperlink targetEntityHyperlink = this.addHyperlink(container, JptUiDetailsMessages.TargetEntityChooser_label); + new TargetEntityClassChooser(this, container, targetEntityHyperlink); + + // Fetch type widgets + this.addLabel(container, JptUiDetailsMessages.BasicGeneralSection_fetchLabel); + new FetchTypeComboViewer(this, container); + + // Optional widgets + OptionalTriStateCheckBox optionalCheckBox = new OptionalTriStateCheckBox(this, container); + GridData gridData = new GridData(); + gridData.horizontalSpan = 2; + optionalCheckBox.getControl().setLayoutData(gridData); + + // Orphan removal widgets + PropertyValueModel<OrphanRemovable2_0> orphanRemovableHolder = buildOrphanRemovableHolder(); + new OrphanRemoval2_0TriStateCheckBox(this, orphanRemovableHolder, container); + + // Cascade widgets + CascadePane2_0 cascadePane = new CascadePane2_0(this, buildCascadeHolder(), container); + gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.horizontalSpan = 2; + cascadePane.getControl().setLayoutData(gridData); + + return container; } @Override diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/orm/EntityMappings2_0DetailsPage.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/orm/EntityMappings2_0DetailsPage.java index 57bec22097..0b45dd4e24 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/orm/EntityMappings2_0DetailsPage.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/orm/EntityMappings2_0DetailsPage.java @@ -1,5 +1,5 @@ /******************************************************************************* -* Copyright (c) 2009, 2010 Oracle. All rights reserved. +* Copyright (c) 2009, 2012 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. @@ -11,7 +11,9 @@ package org.eclipse.jpt.jpa.ui.internal.jpa2.details.orm; import org.eclipse.jpt.common.ui.WidgetFactory; import org.eclipse.jpt.jpa.ui.internal.details.orm.AbstractEntityMappingsDetailsPage; +import org.eclipse.jpt.jpa.ui.internal.jpa2.details.Queries2_0Composite; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; /** * EntityMappings2_0DetailsPage @@ -31,13 +33,12 @@ public class EntityMappings2_0DetailsPage extends AbstractEntityMappingsDetailsP } @Override - protected void initializeGeneratorsCollapsibleSection(Composite container) { - new EntityMappingsGenerators2_0Composite(this, container); + protected Control initializeGeneratorsSection(Composite container) { + return new EntityMappingsGenerators2_0Composite(this, container).getControl(); } @Override - protected void initializeQueriesCollapsibleSection(Composite container) { - new OrmQueries2_0Composite(this, container); + protected Control initializeQueriesSection(Composite container) { + return new Queries2_0Composite(this, this.buildQueryContainerHolder(), container).getControl(); } - } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/orm/OrmBasicMapping2_0Composite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/orm/OrmBasicMapping2_0Composite.java index 46a70b9cdc..a57d801e8f 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/orm/OrmBasicMapping2_0Composite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/orm/OrmBasicMapping2_0Composite.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2009, 2010 Oracle. All rights reserved. + * Copyright (c) 2009, 2012 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. @@ -14,13 +14,18 @@ import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; import org.eclipse.jpt.jpa.core.context.AccessHolder; import org.eclipse.jpt.jpa.core.context.BasicMapping; +import org.eclipse.jpt.jpa.ui.internal.JptUiMessages; import org.eclipse.jpt.jpa.ui.internal.details.AbstractBasicMappingComposite; -import org.eclipse.jpt.jpa.ui.internal.details.AccessTypeComposite; +import org.eclipse.jpt.jpa.ui.internal.details.AccessTypeComboViewer; import org.eclipse.jpt.jpa.ui.internal.details.ColumnComposite; -import org.eclipse.jpt.jpa.ui.internal.details.FetchTypeComposite; -import org.eclipse.jpt.jpa.ui.internal.details.OptionalComposite; -import org.eclipse.jpt.jpa.ui.internal.details.orm.OrmMappingNameChooser; +import org.eclipse.jpt.jpa.ui.internal.details.FetchTypeComboViewer; +import org.eclipse.jpt.jpa.ui.internal.details.JptUiDetailsMessages; +import org.eclipse.jpt.jpa.ui.internal.details.OptionalTriStateCheckBox; +import org.eclipse.jpt.jpa.ui.internal.details.orm.JptUiDetailsOrmMessages; +import org.eclipse.jpt.jpa.ui.internal.details.orm.OrmMappingNameText; +import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; public class OrmBasicMapping2_0Composite extends AbstractBasicMappingComposite<BasicMapping> { @@ -32,19 +37,42 @@ public class OrmBasicMapping2_0Composite extends AbstractBasicMappingComposite<B * @param widgetFactory The factory used to create various common widgets */ public OrmBasicMapping2_0Composite(PropertyValueModel<? extends BasicMapping> subjectHolder, - Composite parent, - WidgetFactory widgetFactory) { + PropertyValueModel<Boolean> enabledModel, + Composite parent, + WidgetFactory widgetFactory) { - super(subjectHolder, parent, widgetFactory); + super(subjectHolder, enabledModel, parent, widgetFactory); } @Override - protected void initializeBasicSection(Composite container) { - new ColumnComposite(this, buildColumnHolder(), container); - new OrmMappingNameChooser(this, getSubjectHolder(), container); - new AccessTypeComposite(this, buildAccessHolderHolder(), container); - new FetchTypeComposite(this, container); - new OptionalComposite(this, addSubPane(container, 4)); + protected Control initializeBasicSection(Composite container) { + container = this.addSubPane(container, 2, 0, 0, 0, 0); + + // Column widgets + ColumnComposite columnComposite = new ColumnComposite(this, buildColumnHolder(), container); + GridData gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.horizontalSpan = 2; + columnComposite.getControl().setLayoutData(gridData); + + // Name widgets + this.addLabel(container, JptUiDetailsOrmMessages.OrmMappingNameChooser_name); + new OrmMappingNameText(this, getSubjectHolder(), container); + + // Access type widgets + this.addLabel(container, JptUiMessages.AccessTypeComposite_access); + new AccessTypeComboViewer(this, this.buildAccessHolderHolder(), container); + + // Fetch type widgets + this.addLabel(container, JptUiDetailsMessages.BasicGeneralSection_fetchLabel); + new FetchTypeComboViewer(this, container); + + // Optional widgets + OptionalTriStateCheckBox optionalCheckBox = new OptionalTriStateCheckBox(this, container); + gridData = new GridData(); + gridData.horizontalSpan = 2; + optionalCheckBox.getControl().setLayoutData(gridData); + + return container; } protected PropertyValueModel<AccessHolder> buildAccessHolderHolder() { diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/orm/OrmElementCollectionMapping2_0Composite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/orm/OrmElementCollectionMapping2_0Composite.java index fcba7bd016..0f18a75d06 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/orm/OrmElementCollectionMapping2_0Composite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/orm/OrmElementCollectionMapping2_0Composite.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2009, 2010 Oracle. All rights reserved. + * Copyright (c) 2009, 2012 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. @@ -14,13 +14,20 @@ import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; import org.eclipse.jpt.jpa.core.context.AccessHolder; import org.eclipse.jpt.jpa.core.jpa2.context.ElementCollectionMapping2_0; -import org.eclipse.jpt.jpa.ui.internal.details.AccessTypeComposite; -import org.eclipse.jpt.jpa.ui.internal.details.FetchTypeComposite; -import org.eclipse.jpt.jpa.ui.internal.details.orm.OrmMappingNameChooser; +import org.eclipse.jpt.jpa.ui.internal.JptUiMessages; +import org.eclipse.jpt.jpa.ui.internal.details.AccessTypeComboViewer; +import org.eclipse.jpt.jpa.ui.internal.details.FetchTypeComboViewer; +import org.eclipse.jpt.jpa.ui.internal.details.JptUiDetailsMessages; +import org.eclipse.jpt.jpa.ui.internal.details.orm.JptUiDetailsOrmMessages; +import org.eclipse.jpt.jpa.ui.internal.details.orm.OrmMappingNameText; import org.eclipse.jpt.jpa.ui.internal.jpa2.details.AbstractElementCollectionMapping2_0Composite; import org.eclipse.jpt.jpa.ui.internal.jpa2.details.CollectionTable2_0Composite; -import org.eclipse.jpt.jpa.ui.internal.jpa2.details.TargetClassComposite; +import org.eclipse.jpt.jpa.ui.internal.jpa2.details.JptUiDetailsMessages2_0; +import org.eclipse.jpt.jpa.ui.internal.jpa2.details.TargetClassChooser; +import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.ui.forms.widgets.Hyperlink; public class OrmElementCollectionMapping2_0Composite extends AbstractElementCollectionMapping2_0Composite<ElementCollectionMapping2_0> @@ -33,19 +40,40 @@ public class OrmElementCollectionMapping2_0Composite * @param widgetFactory The factory used to create various common widgets */ public OrmElementCollectionMapping2_0Composite(PropertyValueModel<? extends ElementCollectionMapping2_0> subjectHolder, - Composite parent, - WidgetFactory widgetFactory) { + PropertyValueModel<Boolean> enabledModel, + Composite parent, + WidgetFactory widgetFactory) { - super(subjectHolder, parent, widgetFactory); + super(subjectHolder, enabledModel, parent, widgetFactory); } @Override - protected void initializeElementCollectionSection(Composite container) { - new TargetClassComposite(this, container); - new OrmMappingNameChooser(this, getSubjectHolder(), container); - new AccessTypeComposite(this, buildAccessHolderHolder(), container); - new FetchTypeComposite(this, container); - new CollectionTable2_0Composite(this, buildCollectionTableHolder(), container); + protected Control initializeElementCollectionSection(Composite container) { + container = this.addSubPane(container, 2, 0, 0, 0, 0); + + // Target class widgets + Hyperlink hyperlink = this.addHyperlink(container, JptUiDetailsMessages2_0.TargetClassComposite_label); + new TargetClassChooser(this, container, hyperlink); + + // Name widgets + this.addLabel(container, JptUiDetailsOrmMessages.OrmMappingNameChooser_name); + new OrmMappingNameText(this, getSubjectHolder(), container); + + // Access type widgets + this.addLabel(container, JptUiMessages.AccessTypeComposite_access); + new AccessTypeComboViewer(this, this.buildAccessHolderHolder(), container); + + // Fetch type widgets + this.addLabel(container, JptUiDetailsMessages.BasicGeneralSection_fetchLabel); + new FetchTypeComboViewer(this, container); + + // Collection table widgets + CollectionTable2_0Composite collectionTableComposite = new CollectionTable2_0Composite(this, buildCollectionTableHolder(), container); + GridData gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.horizontalSpan = 2; + collectionTableComposite.getControl().setLayoutData(gridData); + + return container; } protected PropertyValueModel<AccessHolder> buildAccessHolderHolder() { diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/orm/OrmElementCollectionMapping2_0UiDefinition.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/orm/OrmElementCollectionMapping2_0UiDefinition.java index 7f7722056e..af39779a89 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/orm/OrmElementCollectionMapping2_0UiDefinition.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/orm/OrmElementCollectionMapping2_0UiDefinition.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2009 Oracle. + * Copyright (c) 2009, 2012 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 @@ -48,9 +48,10 @@ public class OrmElementCollectionMapping2_0UiDefinition public JpaComposite buildAttributeMappingComposite( OrmXmlUiFactory factory, PropertyValueModel<OrmElementCollectionMapping2_0> subjectHolder, - Composite parent, + PropertyValueModel<Boolean> enabledModel, + Composite parent, WidgetFactory widgetFactory) { - return ((OrmXmlUiFactory2_0) factory).createOrmElementCollectionMapping2_0Composite(subjectHolder, parent, widgetFactory); + return ((OrmXmlUiFactory2_0) factory).createOrmElementCollectionMapping2_0Composite(subjectHolder, enabledModel, parent, widgetFactory); } } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/orm/OrmEmbeddedIdMapping2_0Composite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/orm/OrmEmbeddedIdMapping2_0Composite.java index d1ae124f01..b53870f075 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/orm/OrmEmbeddedIdMapping2_0Composite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/orm/OrmEmbeddedIdMapping2_0Composite.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2009, 2010 Oracle. All rights reserved. + * Copyright (c) 2009, 2012 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. @@ -14,32 +14,57 @@ import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; import org.eclipse.jpt.jpa.core.context.AccessHolder; import org.eclipse.jpt.jpa.core.context.EmbeddedIdMapping; +import org.eclipse.jpt.jpa.ui.internal.JptUiMessages; import org.eclipse.jpt.jpa.ui.internal.details.AbstractEmbeddedIdMappingComposite; -import org.eclipse.jpt.jpa.ui.internal.details.AccessTypeComposite; +import org.eclipse.jpt.jpa.ui.internal.details.AccessTypeComboViewer; import org.eclipse.jpt.jpa.ui.internal.details.EmbeddedMappingOverridesComposite; -import org.eclipse.jpt.jpa.ui.internal.details.orm.OrmMappingNameChooser; +import org.eclipse.jpt.jpa.ui.internal.details.orm.JptUiDetailsOrmMessages; +import org.eclipse.jpt.jpa.ui.internal.details.orm.OrmMappingNameText; import org.eclipse.jpt.jpa.ui.internal.jpa2.details.EmbeddedIdMapping2_0MappedByRelationshipPane; +import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; public class OrmEmbeddedIdMapping2_0Composite extends AbstractEmbeddedIdMappingComposite<EmbeddedIdMapping> { public OrmEmbeddedIdMapping2_0Composite( PropertyValueModel<? extends EmbeddedIdMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory) { - super(subjectHolder, parent, widgetFactory); + super(subjectHolder, enabledModel, parent, widgetFactory); } @Override - protected void initializeEmbeddedIdSection(Composite container) { - new OrmMappingNameChooser(this, getSubjectHolder(), container); - new AccessTypeComposite(this, buildAccessHolderHolder(), container); + protected Control initializeEmbeddedIdSection(Composite container) { + container = this.addSubPane(container, 2, 0, 0, 0, 0); + + // Name widgets + this.addLabel(container, JptUiDetailsOrmMessages.OrmMappingNameChooser_name); + new OrmMappingNameText(this, getSubjectHolder(), container); + + // Access type widgets + this.addLabel(container, JptUiMessages.AccessTypeComposite_access); + new AccessTypeComboViewer(this, this.buildAccessHolderHolder(), container); - new EmbeddedIdMapping2_0MappedByRelationshipPane(this, getSubjectHolder(), container); - new EmbeddedMappingOverridesComposite(this, container); + // Mapped by relationship widgets + EmbeddedIdMapping2_0MappedByRelationshipPane mappedByRelationshipPane = new EmbeddedIdMapping2_0MappedByRelationshipPane(this, getSubjectHolder(), container); + GridData gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.horizontalSpan = 2; + mappedByRelationshipPane.getControl().setLayoutData(gridData); + + // Overrides widgets + EmbeddedMappingOverridesComposite overridesComposite = new EmbeddedMappingOverridesComposite( + this, + container); + gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.horizontalSpan = 2; + overridesComposite.getControl().setLayoutData(gridData); + + return container; } protected PropertyValueModel<AccessHolder> buildAccessHolderHolder() { diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/orm/OrmEmbeddedMapping2_0Composite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/orm/OrmEmbeddedMapping2_0Composite.java index 0913d9ec2b..ee4fb8a059 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/orm/OrmEmbeddedMapping2_0Composite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/orm/OrmEmbeddedMapping2_0Composite.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2009, 2010 Oracle. All rights reserved. + * Copyright (c) 2009, 2012 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. @@ -14,12 +14,16 @@ import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; import org.eclipse.jpt.jpa.core.context.AccessHolder; import org.eclipse.jpt.jpa.core.context.EmbeddedMapping; +import org.eclipse.jpt.jpa.ui.internal.JptUiMessages; import org.eclipse.jpt.jpa.ui.internal.details.AbstractEmbeddedMappingComposite; -import org.eclipse.jpt.jpa.ui.internal.details.AccessTypeComposite; +import org.eclipse.jpt.jpa.ui.internal.details.AccessTypeComboViewer; import org.eclipse.jpt.jpa.ui.internal.details.java.BaseJavaUiFactory; -import org.eclipse.jpt.jpa.ui.internal.details.orm.OrmMappingNameChooser; +import org.eclipse.jpt.jpa.ui.internal.details.orm.JptUiDetailsOrmMessages; +import org.eclipse.jpt.jpa.ui.internal.details.orm.OrmMappingNameText; import org.eclipse.jpt.jpa.ui.internal.jpa2.details.EmbeddedMapping2_0OverridesComposite; +import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; /** * Here the layout of this pane: @@ -49,21 +53,35 @@ public class OrmEmbeddedMapping2_0Composite * @param widgetFactory The factory used to create various common widgets */ public OrmEmbeddedMapping2_0Composite(PropertyValueModel<? extends EmbeddedMapping> subjectHolder, - Composite parent, + PropertyValueModel<Boolean> enabledModel, + Composite parent, WidgetFactory widgetFactory) { - super(subjectHolder, parent, widgetFactory); + super(subjectHolder, enabledModel, parent, widgetFactory); } @Override - protected void initializeEmbeddedSection(Composite container) { - new OrmMappingNameChooser(this, getSubjectHolder(), container); - new AccessTypeComposite(this, buildAccessHolderHolder(), container); + protected Control initializeEmbeddedSection(Composite container) { + container = this.addSubPane(container, 2, 0, 0, 0, 0); - new EmbeddedMapping2_0OverridesComposite( + // Name widgets + this.addLabel(container, JptUiDetailsOrmMessages.OrmMappingNameChooser_name); + new OrmMappingNameText(this, getSubjectHolder(), container); + + // Access type widgets + this.addLabel(container, JptUiMessages.AccessTypeComposite_access); + new AccessTypeComboViewer(this, this.buildAccessHolderHolder(), container); + + // Overrides widgets + EmbeddedMapping2_0OverridesComposite overridesComposite = new EmbeddedMapping2_0OverridesComposite( this, container ); + GridData gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.horizontalSpan = 2; + overridesComposite.getControl().setLayoutData(gridData); + + return container; } protected PropertyValueModel<AccessHolder> buildAccessHolderHolder() { diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/orm/OrmEntity2_0Composite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/orm/OrmEntity2_0Composite.java index a018170014..56d755f0d7 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/orm/OrmEntity2_0Composite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/orm/OrmEntity2_0Composite.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2009, 2010 Oracle. All rights reserved. + * Copyright (c) 2009, 2012 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. @@ -12,23 +12,27 @@ package org.eclipse.jpt.jpa.ui.internal.jpa2.details.orm; import org.eclipse.jpt.common.ui.WidgetFactory; import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter; import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; -import org.eclipse.jpt.jpa.core.context.GeneratorContainer; -import org.eclipse.jpt.jpa.core.context.QueryContainer; import org.eclipse.jpt.jpa.core.context.orm.OrmEntity; import org.eclipse.jpt.jpa.core.jpa2.context.Cacheable2_0; import org.eclipse.jpt.jpa.core.jpa2.context.CacheableHolder2_0; -import org.eclipse.jpt.jpa.ui.internal.details.AccessTypeComposite; -import org.eclipse.jpt.jpa.ui.internal.details.EntityNameComposite; -import org.eclipse.jpt.jpa.ui.internal.details.IdClassComposite; +import org.eclipse.jpt.jpa.ui.internal.JptUiMessages; +import org.eclipse.jpt.jpa.ui.internal.details.AccessTypeComboViewer; +import org.eclipse.jpt.jpa.ui.internal.details.EntityNameCombo; +import org.eclipse.jpt.jpa.ui.internal.details.IdClassChooser; +import org.eclipse.jpt.jpa.ui.internal.details.JptUiDetailsMessages; import org.eclipse.jpt.jpa.ui.internal.details.TableComposite; import org.eclipse.jpt.jpa.ui.internal.details.orm.AbstractOrmEntityComposite; -import org.eclipse.jpt.jpa.ui.internal.details.orm.MetadataCompleteComposite; +import org.eclipse.jpt.jpa.ui.internal.details.orm.JptUiDetailsOrmMessages; +import org.eclipse.jpt.jpa.ui.internal.details.orm.MetadataCompleteTriStateCheckBox; import org.eclipse.jpt.jpa.ui.internal.details.orm.OrmJavaClassChooser; -import org.eclipse.jpt.jpa.ui.internal.jpa2.details.Cacheable2_0Pane; +import org.eclipse.jpt.jpa.ui.internal.jpa2.details.Cacheable2_0TriStateCheckBox; import org.eclipse.jpt.jpa.ui.internal.jpa2.details.Entity2_0OverridesComposite; import org.eclipse.jpt.jpa.ui.internal.jpa2.details.Generation2_0Composite; import org.eclipse.jpt.jpa.ui.internal.jpa2.details.Queries2_0Composite; +import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.ui.forms.widgets.Hyperlink; /** * The pane used for an ORM entity 2.0. @@ -55,14 +59,44 @@ public class OrmEntity2_0Composite } @Override - protected void initializeEntitySection(Composite container) { - new OrmJavaClassChooser(this, getSubjectHolder(), container, false); - new TableComposite(this, container); - new EntityNameComposite(this, container); - new AccessTypeComposite(this, buildAccessHolder(), container); - new IdClassComposite(this, buildIdClassReferenceHolder(), container); - new Cacheable2_0Pane(this, buildCacheableHolder(), container); - new MetadataCompleteComposite(this, getSubjectHolder(), container); + protected Control initializeEntitySection(Composite container) { + container = this.addSubPane(container, 2, 0, 0, 0, 0); + + // Java class widgets + Hyperlink javaClassHyperlink = this.addHyperlink(container, JptUiDetailsOrmMessages.OrmJavaClassChooser_javaClass); + new OrmJavaClassChooser(this, getSubjectHolder(), container, javaClassHyperlink); + + // Table widgets + TableComposite tableComposite = new TableComposite(this, container); + GridData gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.horizontalSpan = 2; + tableComposite.getControl().setLayoutData(gridData); + + // Entity name widgets + this.addLabel(container, JptUiDetailsMessages.EntityNameComposite_name); + new EntityNameCombo(this, container); + + // Access type widgets + this.addLabel(container, JptUiMessages.AccessTypeComposite_access); + new AccessTypeComboViewer(this, this.buildAccessHolder(), container); + + // Id class widgets + Hyperlink hyperlink = this.addHyperlink(container,JptUiDetailsMessages.IdClassComposite_label); + new IdClassChooser(this, this.buildIdClassReferenceHolder(), container, hyperlink); + + // Cacheable widgets + Cacheable2_0TriStateCheckBox cacheableCheckBox = new Cacheable2_0TriStateCheckBox(this, buildCacheableHolder(), container); + gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.horizontalSpan = 2; + cacheableCheckBox.getControl().setLayoutData(gridData); + + // Metadata complete widgets + MetadataCompleteTriStateCheckBox metadataCompleteCheckBox = new MetadataCompleteTriStateCheckBox(this, getSubjectHolder(), container); + gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.horizontalSpan = 2; + metadataCompleteCheckBox.getControl().setLayoutData(gridData); + + return container; } protected PropertyValueModel<Cacheable2_0> buildCacheableHolder() { @@ -75,17 +109,17 @@ public class OrmEntity2_0Composite } @Override - protected void initializeAttributeOverridesSection(Composite container) { - new Entity2_0OverridesComposite(this, container); + protected Control initializeAttributeOverridesSection(Composite container) { + return new Entity2_0OverridesComposite(this, container).getControl(); } @Override - protected void initializeGeneratorsSection(Composite container, PropertyValueModel<GeneratorContainer> generatorContainerHolder) { - new Generation2_0Composite(this, generatorContainerHolder, container); + protected Control initializeGeneratorsSection(Composite container) { + return new Generation2_0Composite(this, this.buildGeneratorContainerHolder(), container).getControl(); } @Override - protected void initializeQueriesSection(Composite container, PropertyValueModel<QueryContainer> queryContainerHolder) { - new Queries2_0Composite(this, queryContainerHolder, container); + protected Control initializeQueriesSection(Composite container) { + return new Queries2_0Composite(this, this.buildQueryContainerHolder(), container).getControl(); } } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/orm/OrmIdMapping2_0Composite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/orm/OrmIdMapping2_0Composite.java index 3717d093e0..15bb79896c 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/orm/OrmIdMapping2_0Composite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/orm/OrmIdMapping2_0Composite.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2009, 2010 Oracle. All rights reserved. + * Copyright (c) 2009, 2012 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. @@ -14,32 +14,55 @@ import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; import org.eclipse.jpt.jpa.core.context.AccessHolder; import org.eclipse.jpt.jpa.core.context.IdMapping; +import org.eclipse.jpt.jpa.ui.internal.JptUiMessages; import org.eclipse.jpt.jpa.ui.internal.details.AbstractIdMappingComposite; -import org.eclipse.jpt.jpa.ui.internal.details.AccessTypeComposite; +import org.eclipse.jpt.jpa.ui.internal.details.AccessTypeComboViewer; import org.eclipse.jpt.jpa.ui.internal.details.ColumnComposite; -import org.eclipse.jpt.jpa.ui.internal.details.orm.OrmMappingNameChooser; +import org.eclipse.jpt.jpa.ui.internal.details.orm.JptUiDetailsOrmMessages; +import org.eclipse.jpt.jpa.ui.internal.details.orm.OrmMappingNameText; import org.eclipse.jpt.jpa.ui.internal.jpa2.details.IdMapping2_0MappedByRelationshipPane; import org.eclipse.jpt.jpa.ui.internal.jpa2.details.IdMappingGeneration2_0Composite; +import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; public class OrmIdMapping2_0Composite extends AbstractIdMappingComposite<IdMapping> { public OrmIdMapping2_0Composite( PropertyValueModel<? extends IdMapping> subjectHolder, - Composite parent, + PropertyValueModel<Boolean> enabledModel, + Composite parent, WidgetFactory widgetFactory) { - super(subjectHolder, parent, widgetFactory); + super(subjectHolder, enabledModel, parent, widgetFactory); } @Override - protected void initializeIdSection(Composite container) { - new IdMapping2_0MappedByRelationshipPane(this, getSubjectHolder(), container); - new ColumnComposite(this, buildColumnHolder(), container); - new OrmMappingNameChooser(this, getSubjectHolder(), container); - new AccessTypeComposite(this, buildAccessHolderHolder(), container); + protected Control initializeIdSection(Composite container) { + container = this.addSubPane(container, 2, 0, 0, 0, 0); + + IdMapping2_0MappedByRelationshipPane mappedByRelationshipPane = new IdMapping2_0MappedByRelationshipPane(this, getSubjectHolder(), container); + GridData gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.horizontalSpan = 2; + mappedByRelationshipPane.getControl().setLayoutData(gridData); + + // Column widgets + ColumnComposite columnComposite = new ColumnComposite(this, buildColumnHolder(), container); + gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.horizontalSpan = 2; + columnComposite.getControl().setLayoutData(gridData); + + // Name widgets + this.addLabel(container, JptUiDetailsOrmMessages.OrmMappingNameChooser_name); + new OrmMappingNameText(this, getSubjectHolder(), container); + + // Access type widgets + this.addLabel(container, JptUiMessages.AccessTypeComposite_access); + new AccessTypeComboViewer(this, this.buildAccessHolderHolder(), container); + + return container; } @Override diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/orm/OrmManyToManyMapping2_0Composite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/orm/OrmManyToManyMapping2_0Composite.java index 136fbb7fd4..fa5f543c77 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/orm/OrmManyToManyMapping2_0Composite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/orm/OrmManyToManyMapping2_0Composite.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2009, 2011 Oracle. All rights reserved. + * Copyright (c) 2009, 2012 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. @@ -13,14 +13,20 @@ import org.eclipse.jpt.common.ui.WidgetFactory; import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; import org.eclipse.jpt.jpa.core.context.ManyToManyMapping; import org.eclipse.jpt.jpa.core.context.ManyToManyRelationship; +import org.eclipse.jpt.jpa.ui.internal.JptUiMessages; import org.eclipse.jpt.jpa.ui.internal.details.AbstractManyToManyMappingComposite; -import org.eclipse.jpt.jpa.ui.internal.details.AccessTypeComposite; -import org.eclipse.jpt.jpa.ui.internal.details.FetchTypeComposite; -import org.eclipse.jpt.jpa.ui.internal.details.TargetEntityComposite; -import org.eclipse.jpt.jpa.ui.internal.details.orm.OrmMappingNameChooser; +import org.eclipse.jpt.jpa.ui.internal.details.AccessTypeComboViewer; +import org.eclipse.jpt.jpa.ui.internal.details.FetchTypeComboViewer; +import org.eclipse.jpt.jpa.ui.internal.details.JptUiDetailsMessages; +import org.eclipse.jpt.jpa.ui.internal.details.TargetEntityClassChooser; +import org.eclipse.jpt.jpa.ui.internal.details.orm.JptUiDetailsOrmMessages; +import org.eclipse.jpt.jpa.ui.internal.details.orm.OrmMappingNameText; import org.eclipse.jpt.jpa.ui.internal.jpa2.details.CascadePane2_0; import org.eclipse.jpt.jpa.ui.internal.jpa2.details.Ordering2_0Composite; +import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.ui.forms.widgets.Hyperlink; public class OrmManyToManyMapping2_0Composite extends AbstractManyToManyMappingComposite<ManyToManyMapping, ManyToManyRelationship> @@ -34,24 +40,45 @@ public class OrmManyToManyMapping2_0Composite */ public OrmManyToManyMapping2_0Composite( PropertyValueModel<? extends ManyToManyMapping> subjectHolder, - Composite parent, + PropertyValueModel<Boolean> enabledModel, + Composite parent, WidgetFactory widgetFactory) { - super(subjectHolder, parent, widgetFactory); + super(subjectHolder, enabledModel, parent, widgetFactory); } @Override - protected void initializeManyToManySection(Composite container) { - new TargetEntityComposite(this, container); - new OrmMappingNameChooser(this, getSubjectHolder(), container); - new AccessTypeComposite(this, buildAccessHolderHolder(), container); - new FetchTypeComposite(this, container); - new CascadePane2_0(this, buildCascadeHolder(), addSubPane(container, 5)); + protected Control initializeManyToManySection(Composite container) { + container = this.addSubPane(container, 2, 0, 0, 0, 0); + + // Target entity widgets + Hyperlink targetEntityHyperlink = this.addHyperlink(container, JptUiDetailsMessages.TargetEntityChooser_label); + new TargetEntityClassChooser(this, container, targetEntityHyperlink); + + // Name widgets + this.addLabel(container, JptUiDetailsOrmMessages.OrmMappingNameChooser_name); + new OrmMappingNameText(this, getSubjectHolder(), container); + + // Access type widgets + this.addLabel(container, JptUiMessages.AccessTypeComposite_access); + new AccessTypeComboViewer(this, this.buildAccessHolderHolder(), container); + + // Fetch type widgets + this.addLabel(container, JptUiDetailsMessages.BasicGeneralSection_fetchLabel); + new FetchTypeComboViewer(this, container); + + // Cascade widgets + CascadePane2_0 cascadePane = new CascadePane2_0(this, buildCascadeHolder(), container); + GridData gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.horizontalSpan = 2; + cascadePane.getControl().setLayoutData(gridData); + + return container; } - + @Override - protected void initializeOrderingCollapsibleSection(Composite container) { - new Ordering2_0Composite(this, container); + protected Control initializeOrderingSection(Composite container) { + return new Ordering2_0Composite(this, container).getControl(); } }
\ No newline at end of file diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/orm/OrmManyToOneMapping2_0Composite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/orm/OrmManyToOneMapping2_0Composite.java index 15ca95d75c..3b6321c283 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/orm/OrmManyToOneMapping2_0Composite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/orm/OrmManyToOneMapping2_0Composite.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2009, 2011 Oracle. All rights reserved. + * Copyright (c) 2009, 2012 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. @@ -15,35 +15,67 @@ import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; import org.eclipse.jpt.jpa.core.context.AccessHolder; import org.eclipse.jpt.jpa.core.context.ManyToOneMapping; import org.eclipse.jpt.jpa.core.jpa2.context.ManyToOneRelationship2_0; -import org.eclipse.jpt.jpa.ui.internal.details.AccessTypeComposite; -import org.eclipse.jpt.jpa.ui.internal.details.FetchTypeComposite; -import org.eclipse.jpt.jpa.ui.internal.details.OptionalComposite; -import org.eclipse.jpt.jpa.ui.internal.details.TargetEntityComposite; -import org.eclipse.jpt.jpa.ui.internal.details.orm.OrmMappingNameChooser; +import org.eclipse.jpt.jpa.ui.internal.JptUiMessages; +import org.eclipse.jpt.jpa.ui.internal.details.AccessTypeComboViewer; +import org.eclipse.jpt.jpa.ui.internal.details.FetchTypeComboViewer; +import org.eclipse.jpt.jpa.ui.internal.details.JptUiDetailsMessages; +import org.eclipse.jpt.jpa.ui.internal.details.OptionalTriStateCheckBox; +import org.eclipse.jpt.jpa.ui.internal.details.TargetEntityClassChooser; +import org.eclipse.jpt.jpa.ui.internal.details.orm.JptUiDetailsOrmMessages; +import org.eclipse.jpt.jpa.ui.internal.details.orm.OrmMappingNameText; import org.eclipse.jpt.jpa.ui.internal.jpa2.details.AbstractManyToOneMapping2_0Composite; import org.eclipse.jpt.jpa.ui.internal.jpa2.details.CascadePane2_0; +import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.ui.forms.widgets.Hyperlink; public class OrmManyToOneMapping2_0Composite extends AbstractManyToOneMapping2_0Composite<ManyToOneMapping, ManyToOneRelationship2_0> { public OrmManyToOneMapping2_0Composite( PropertyValueModel<? extends ManyToOneMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory) { - super(subjectHolder, parent, widgetFactory); + super(subjectHolder, enabledModel, parent, widgetFactory); } @Override - protected void initializeManyToOneSection(Composite container) { - new TargetEntityComposite(this, container); - new OrmMappingNameChooser(this, getSubjectHolder(), container); - new AccessTypeComposite(this, buildAccessHolderHolder(), container); - new FetchTypeComposite(this, container); - new OptionalComposite(this, container); - new CascadePane2_0(this, buildCascadeHolder(), addSubPane(container, 5)); + protected Control initializeManyToOneSection(Composite container) { + container = this.addSubPane(container, 2, 0, 0, 0, 0); + + // Target entity widgets + Hyperlink targetEntityHyperlink = this.addHyperlink(container, JptUiDetailsMessages.TargetEntityChooser_label); + new TargetEntityClassChooser(this, container, targetEntityHyperlink); + + // Name widgets + this.addLabel(container, JptUiDetailsOrmMessages.OrmMappingNameChooser_name); + new OrmMappingNameText(this, getSubjectHolder(), container); + + // Access type widgets + this.addLabel(container, JptUiMessages.AccessTypeComposite_access); + new AccessTypeComboViewer(this, this.buildAccessHolderHolder(), container); + + // Fetch type widgets + this.addLabel(container, JptUiDetailsMessages.BasicGeneralSection_fetchLabel); + new FetchTypeComboViewer(this, container); + + // Optional widgets + OptionalTriStateCheckBox optionalCheckBox = new OptionalTriStateCheckBox(this, container); + GridData gridData = new GridData(); + gridData.horizontalSpan = 2; + optionalCheckBox.getControl().setLayoutData(gridData); + + // Cascade widgets + CascadePane2_0 cascadePane = new CascadePane2_0(this, buildCascadeHolder(), container); + gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.horizontalSpan = 2; + cascadePane.getControl().setLayoutData(gridData); + + return container; } protected PropertyValueModel<AccessHolder> buildAccessHolderHolder() { diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/orm/OrmOneToManyMapping2_0Composite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/orm/OrmOneToManyMapping2_0Composite.java index 352f358926..c0125984fb 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/orm/OrmOneToManyMapping2_0Composite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/orm/OrmOneToManyMapping2_0Composite.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2009, 2011 Oracle. All rights reserved. + * Copyright (c) 2009, 2012 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. @@ -17,37 +17,67 @@ import org.eclipse.jpt.jpa.core.context.OneToManyMapping; import org.eclipse.jpt.jpa.core.jpa2.context.OneToManyRelationship2_0; import org.eclipse.jpt.jpa.core.jpa2.context.OrphanRemovable2_0; import org.eclipse.jpt.jpa.core.jpa2.context.OrphanRemovalHolder2_0; +import org.eclipse.jpt.jpa.ui.internal.JptUiMessages; import org.eclipse.jpt.jpa.ui.internal.details.AbstractOneToManyMappingComposite; -import org.eclipse.jpt.jpa.ui.internal.details.AccessTypeComposite; -import org.eclipse.jpt.jpa.ui.internal.details.FetchTypeComposite; -import org.eclipse.jpt.jpa.ui.internal.details.TargetEntityComposite; -import org.eclipse.jpt.jpa.ui.internal.details.orm.OrmMappingNameChooser; +import org.eclipse.jpt.jpa.ui.internal.details.AccessTypeComboViewer; +import org.eclipse.jpt.jpa.ui.internal.details.FetchTypeComboViewer; +import org.eclipse.jpt.jpa.ui.internal.details.JptUiDetailsMessages; +import org.eclipse.jpt.jpa.ui.internal.details.TargetEntityClassChooser; +import org.eclipse.jpt.jpa.ui.internal.details.orm.JptUiDetailsOrmMessages; +import org.eclipse.jpt.jpa.ui.internal.details.orm.OrmMappingNameText; import org.eclipse.jpt.jpa.ui.internal.jpa2.details.CascadePane2_0; import org.eclipse.jpt.jpa.ui.internal.jpa2.details.OneToManyJoiningStrategy2_0Pane; import org.eclipse.jpt.jpa.ui.internal.jpa2.details.Ordering2_0Composite; -import org.eclipse.jpt.jpa.ui.internal.jpa2.details.OrphanRemoval2_0Composite; +import org.eclipse.jpt.jpa.ui.internal.jpa2.details.OrphanRemoval2_0TriStateCheckBox; +import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.ui.forms.widgets.Hyperlink; public class OrmOneToManyMapping2_0Composite extends AbstractOneToManyMappingComposite<OneToManyMapping, OneToManyRelationship2_0> { public OrmOneToManyMapping2_0Composite( PropertyValueModel<? extends OneToManyMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory) { - super(subjectHolder, parent, widgetFactory); + super(subjectHolder, enabledModel, parent, widgetFactory); } @Override - protected void initializeOneToManySection(Composite container) { - new TargetEntityComposite(this, container); - new OrmMappingNameChooser(this, getSubjectHolder(), container); - new AccessTypeComposite(this, this.buildAccessHolderHolder(), container); - new FetchTypeComposite(this, container); - new OrphanRemoval2_0Composite(this, this.buildOrphanRemovableHolder(), container); - new CascadePane2_0(this, this.buildCascadeHolder(), this.addSubPane(container, 5)); + protected Control initializeOneToManySection(Composite container) { + container = this.addSubPane(container, 2, 0, 0, 0, 0); + + // Target entity widgets + Hyperlink targetEntityHyperlink = this.addHyperlink(container, JptUiDetailsMessages.TargetEntityChooser_label); + new TargetEntityClassChooser(this, container, targetEntityHyperlink); + + // Name widgets + this.addLabel(container, JptUiDetailsOrmMessages.OrmMappingNameChooser_name); + new OrmMappingNameText(this, getSubjectHolder(), container); + + // Access type widgets + this.addLabel(container, JptUiMessages.AccessTypeComposite_access); + new AccessTypeComboViewer(this, this.buildAccessHolderHolder(), container); + + // Fetch type widgets + this.addLabel(container, JptUiDetailsMessages.BasicGeneralSection_fetchLabel); + new FetchTypeComboViewer(this, container); + + // Orphan removal widgets + PropertyValueModel<OrphanRemovable2_0> orphanRemovableHolder = buildOrphanRemovableHolder(); + new OrphanRemoval2_0TriStateCheckBox(this, orphanRemovableHolder, container); + + // Cascade widgets + CascadePane2_0 cascadePane = new CascadePane2_0(this, this.buildCascadeHolder(), container); + GridData gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.horizontalSpan = 2; + cascadePane.getControl().setLayoutData(gridData); + + return container; } @Override @@ -56,8 +86,8 @@ public class OrmOneToManyMapping2_0Composite } @Override - protected void initializeOrderingCollapsibleSection(Composite container) { - new Ordering2_0Composite(this, container); + protected Control initializeOrderingSection(Composite container) { + return new Ordering2_0Composite(this, container).getControl(); } protected PropertyValueModel<AccessHolder> buildAccessHolderHolder() { diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/orm/OrmOneToOneMapping2_0Composite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/orm/OrmOneToOneMapping2_0Composite.java index a9cd556c85..db1626a004 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/orm/OrmOneToOneMapping2_0Composite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/orm/OrmOneToOneMapping2_0Composite.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2009, 2011 Oracle. All rights reserved. + * Copyright (c) 2009, 2012 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. @@ -17,38 +17,73 @@ import org.eclipse.jpt.jpa.core.context.OneToOneMapping; import org.eclipse.jpt.jpa.core.jpa2.context.OneToOneRelationship2_0; import org.eclipse.jpt.jpa.core.jpa2.context.OrphanRemovable2_0; import org.eclipse.jpt.jpa.core.jpa2.context.OrphanRemovalHolder2_0; -import org.eclipse.jpt.jpa.ui.internal.details.AccessTypeComposite; -import org.eclipse.jpt.jpa.ui.internal.details.FetchTypeComposite; -import org.eclipse.jpt.jpa.ui.internal.details.OptionalComposite; -import org.eclipse.jpt.jpa.ui.internal.details.TargetEntityComposite; -import org.eclipse.jpt.jpa.ui.internal.details.orm.OrmMappingNameChooser; +import org.eclipse.jpt.jpa.ui.internal.JptUiMessages; +import org.eclipse.jpt.jpa.ui.internal.details.AccessTypeComboViewer; +import org.eclipse.jpt.jpa.ui.internal.details.FetchTypeComboViewer; +import org.eclipse.jpt.jpa.ui.internal.details.JptUiDetailsMessages; +import org.eclipse.jpt.jpa.ui.internal.details.OptionalTriStateCheckBox; +import org.eclipse.jpt.jpa.ui.internal.details.TargetEntityClassChooser; +import org.eclipse.jpt.jpa.ui.internal.details.orm.JptUiDetailsOrmMessages; +import org.eclipse.jpt.jpa.ui.internal.details.orm.OrmMappingNameText; import org.eclipse.jpt.jpa.ui.internal.jpa2.details.AbstractOneToOneMapping2_0Composite; import org.eclipse.jpt.jpa.ui.internal.jpa2.details.CascadePane2_0; import org.eclipse.jpt.jpa.ui.internal.jpa2.details.OneToOneJoiningStrategy2_0Pane; -import org.eclipse.jpt.jpa.ui.internal.jpa2.details.OrphanRemoval2_0Composite; +import org.eclipse.jpt.jpa.ui.internal.jpa2.details.OrphanRemoval2_0TriStateCheckBox; +import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.ui.forms.widgets.Hyperlink; public class OrmOneToOneMapping2_0Composite extends AbstractOneToOneMapping2_0Composite<OneToOneMapping, OneToOneRelationship2_0> { public OrmOneToOneMapping2_0Composite( PropertyValueModel<? extends OneToOneMapping> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory) { - super(subjectHolder, parent, widgetFactory); + super(subjectHolder, enabledModel, parent, widgetFactory); } @Override - protected void initializeOneToOneSection(Composite container) { - new TargetEntityComposite(this, container); - new OrmMappingNameChooser(this, getSubjectHolder(), container); - new AccessTypeComposite(this, buildAccessHolderHolder(), container); - new FetchTypeComposite(this, container); - new OptionalComposite(this, container); - new OrphanRemoval2_0Composite(this, buildOrphanRemovableHolder(), container); - new CascadePane2_0(this, buildCascadeHolder(), addSubPane(container, 5)); + protected Control initializeOneToOneSection(Composite container) { + container = this.addSubPane(container, 2, 0, 0, 0, 0); + + // Target entity widgets + Hyperlink targetEntityHyperlink = this.addHyperlink(container, JptUiDetailsMessages.TargetEntityChooser_label); + new TargetEntityClassChooser(this, container, targetEntityHyperlink); + + // Name widgets + this.addLabel(container, JptUiDetailsOrmMessages.OrmMappingNameChooser_name); + new OrmMappingNameText(this, getSubjectHolder(), container); + + // Access type widgets + this.addLabel(container, JptUiMessages.AccessTypeComposite_access); + new AccessTypeComboViewer(this, this.buildAccessHolderHolder(), container); + + // Fetch type widgets + this.addLabel(container, JptUiDetailsMessages.BasicGeneralSection_fetchLabel); + new FetchTypeComboViewer(this, container); + + // Optional widgets + OptionalTriStateCheckBox optionalCheckBox = new OptionalTriStateCheckBox(this, container); + GridData gridData = new GridData(); + gridData.horizontalSpan = 2; + optionalCheckBox.getControl().setLayoutData(gridData); + + // Orphan removal widgets + PropertyValueModel<OrphanRemovable2_0> orphanRemovableHolder = buildOrphanRemovableHolder(); + new OrphanRemoval2_0TriStateCheckBox(this, orphanRemovableHolder, container); + + // Cascade widgets + CascadePane2_0 cascadePane = new CascadePane2_0(this, buildCascadeHolder(), container); + gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.horizontalSpan = 2; + cascadePane.getControl().setLayoutData(gridData); + + return container; } @Override diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/orm/OrmQueries2_0Composite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/orm/OrmQueries2_0Composite.java deleted file mode 100644 index e60271eb8d..0000000000 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/orm/OrmQueries2_0Composite.java +++ /dev/null @@ -1,43 +0,0 @@ -/******************************************************************************* -* Copyright (c) 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.jpa.ui.internal.jpa2.details.orm; - -import org.eclipse.jpt.common.ui.internal.widgets.Pane; -import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; -import org.eclipse.jpt.jpa.core.context.QueryContainer; -import org.eclipse.jpt.jpa.core.context.orm.EntityMappings; -import org.eclipse.jpt.jpa.ui.internal.details.QueriesComposite; -import org.eclipse.jpt.jpa.ui.internal.details.orm.OrmQueriesComposite; -import org.eclipse.jpt.jpa.ui.internal.jpa2.details.Queries2_0Composite; -import org.eclipse.swt.widgets.Composite; - -/** - * OrmQueries2_0Composite - */ -public class OrmQueries2_0Composite extends OrmQueriesComposite { - - /** - * Creates a new <code>OrmQueries2_0Composite</code>. - * - * @param parentPane The parent container of this one - * @param parent The parent container - */ - public OrmQueries2_0Composite(Pane<? extends EntityMappings> parentPane, - Composite parent) { - - super(parentPane, parent); - } - - @Override - protected QueriesComposite buildQueriesComposite(Composite container, PropertyValueModel<QueryContainer> queryContainerHolder) { - return new Queries2_0Composite(this, queryContainerHolder, container); - } - -} diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/orm/OrmVersionMapping2_0Composite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/orm/OrmVersionMapping2_0Composite.java index 416aadd306..5b59374ed2 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/orm/OrmVersionMapping2_0Composite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/details/orm/OrmVersionMapping2_0Composite.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2009, 2010 Oracle. All rights reserved. + * Copyright (c) 2009, 2012 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. @@ -14,11 +14,15 @@ import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; import org.eclipse.jpt.jpa.core.context.AccessHolder; import org.eclipse.jpt.jpa.core.context.VersionMapping; +import org.eclipse.jpt.jpa.ui.internal.JptUiMessages; import org.eclipse.jpt.jpa.ui.internal.details.AbstractVersionMappingComposite; -import org.eclipse.jpt.jpa.ui.internal.details.AccessTypeComposite; +import org.eclipse.jpt.jpa.ui.internal.details.AccessTypeComboViewer; import org.eclipse.jpt.jpa.ui.internal.details.ColumnComposite; -import org.eclipse.jpt.jpa.ui.internal.details.orm.OrmMappingNameChooser; +import org.eclipse.jpt.jpa.ui.internal.details.orm.JptUiDetailsOrmMessages; +import org.eclipse.jpt.jpa.ui.internal.details.orm.OrmMappingNameText; +import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; public class OrmVersionMapping2_0Composite extends AbstractVersionMappingComposite<VersionMapping> @@ -31,17 +35,32 @@ public class OrmVersionMapping2_0Composite * @param widgetFactory The factory used to create various common widgets */ public OrmVersionMapping2_0Composite(PropertyValueModel<? extends VersionMapping> subjectHolder, - Composite parent, - WidgetFactory widgetFactory) { + PropertyValueModel<Boolean> enabledModel, + Composite parent, + WidgetFactory widgetFactory) { - super(subjectHolder, parent, widgetFactory); + super(subjectHolder, enabledModel, parent, widgetFactory); } @Override - protected void initializeVersionSection(Composite container) { - new ColumnComposite(this, buildColumnHolder(), container); - new OrmMappingNameChooser(this, getSubjectHolder(), container); - new AccessTypeComposite(this, buildAccessHolderHolder(), container); + protected Control initializeVersionSection(Composite container) { + container = this.addSubPane(container, 2, 0, 0, 0, 0); + + // Column widgets + ColumnComposite columnComposite = new ColumnComposite(this, buildColumnHolder(), container); + GridData gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.horizontalSpan = 2; + columnComposite.getControl().setLayoutData(gridData); + + // Name widgets + this.addLabel(container, JptUiDetailsOrmMessages.OrmMappingNameChooser_name); + new OrmMappingNameText(this, getSubjectHolder(), container); + + // Access type widgets + this.addLabel(container, JptUiMessages.AccessTypeComposite_access); + new AccessTypeComboViewer(this, this.buildAccessHolderHolder(), container); + + return container; } protected PropertyValueModel<AccessHolder> buildAccessHolderHolder() { diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/persistence/Generic2_0PersistenceXmlUiFactory.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/persistence/Generic2_0PersistenceXmlUiFactory.java index a25815dedb..8fd80ef90c 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/persistence/Generic2_0PersistenceXmlUiFactory.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/persistence/Generic2_0PersistenceXmlUiFactory.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2009 Oracle. All rights reserved. + * Copyright (c) 2009, 2012 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. @@ -18,12 +18,11 @@ import org.eclipse.jpt.jpa.core.context.persistence.PersistenceUnit; import org.eclipse.jpt.jpa.core.jpa2.context.persistence.PersistenceUnit2_0; import org.eclipse.jpt.jpa.core.jpa2.context.persistence.connection.JpaConnection2_0; import org.eclipse.jpt.jpa.core.jpa2.context.persistence.options.JpaOptions2_0; -import org.eclipse.jpt.jpa.ui.details.JpaPageComposite; -import org.eclipse.jpt.jpa.ui.internal.jpa2.persistence.connection.GenericPersistenceUnit2_0ConnectionTab; -import org.eclipse.jpt.jpa.ui.internal.jpa2.persistence.options.GenericPersistenceUnit2_0OptionsTab; -import org.eclipse.jpt.jpa.ui.internal.persistence.details.GenericPersistenceUnitGeneralComposite; -import org.eclipse.jpt.jpa.ui.internal.persistence.details.PersistenceUnitPropertiesComposite; -import org.eclipse.jpt.jpa.ui.internal.persistence.details.PersistenceXmlUiFactory; +import org.eclipse.jpt.jpa.ui.editors.JpaPageComposite; +import org.eclipse.jpt.jpa.ui.internal.persistence.GenericPersistenceUnitGeneralTab; +import org.eclipse.jpt.jpa.ui.internal.persistence.GenericPersistenceXmlUiFactory; +import org.eclipse.jpt.jpa.ui.internal.persistence.PersistenceUnitPropertiesTab; +import org.eclipse.jpt.jpa.ui.internal.persistence.PersistenceXmlUiFactory; import org.eclipse.swt.widgets.Composite; /** @@ -51,10 +50,10 @@ public class Generic2_0PersistenceXmlUiFactory implements PersistenceXmlUiFactor PropertyValueModel<JpaOptions2_0> options2_0Holder = this.buildJpaOptions2_0Holder(subjectHolder); - pages.add(new GenericPersistenceUnitGeneralComposite(subjectHolder, parent, widgetFactory)); + pages.add(new GenericPersistenceUnitGeneralTab(subjectHolder, parent, widgetFactory)); pages.add(new GenericPersistenceUnit2_0ConnectionTab(connection2_0Holder, parent, widgetFactory)); pages.add(new GenericPersistenceUnit2_0OptionsTab(options2_0Holder, parent, widgetFactory)); - pages.add(new PersistenceUnitPropertiesComposite(subjectHolder, parent, widgetFactory)); + pages.add(new PersistenceUnitPropertiesTab(subjectHolder, parent, widgetFactory)); return pages.listIterator(); } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/persistence/GenericPersistenceUnit2_0ConnectionTab.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/persistence/GenericPersistenceUnit2_0ConnectionTab.java new file mode 100644 index 0000000000..99412dd532 --- /dev/null +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/persistence/GenericPersistenceUnit2_0ConnectionTab.java @@ -0,0 +1,271 @@ +/******************************************************************************* + * Copyright (c) 2009, 2012 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.jpa.ui.internal.jpa2.persistence; + +import java.util.Collection; +import org.eclipse.jface.resource.ImageDescriptor; +import org.eclipse.jpt.common.ui.WidgetFactory; +import org.eclipse.jpt.common.ui.internal.widgets.EnumFormComboViewer; +import org.eclipse.jpt.common.ui.internal.widgets.Pane; +import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter; +import org.eclipse.jpt.common.utility.internal.model.value.TransformationPropertyValueModel; +import org.eclipse.jpt.common.utility.model.value.ModifiablePropertyValueModel; +import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; +import org.eclipse.jpt.jpa.core.context.persistence.PersistenceUnit; +import org.eclipse.jpt.jpa.core.context.persistence.PersistenceUnitTransactionType; +import org.eclipse.jpt.jpa.core.jpa2.context.persistence.connection.JpaConnection2_0; +import org.eclipse.jpt.jpa.ui.editors.JpaPageComposite; +import org.eclipse.jpt.jpa.ui.internal.JpaHelpContextIds; +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.layout.GridLayout; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Group; + +/** + * GenericPersistenceUnit2_0ConnectionTab + */ +public class GenericPersistenceUnit2_0ConnectionTab extends Pane<JpaConnection2_0> + implements JpaPageComposite +{ + // ********** constructors/initialization ********** + /** + * Creates a new <code>GenericPersistenceUnit2_0ConnectionTab</code>. + * + * @param subjectHolder The holder of this pane's subject + * @param parent The parent container + * @param widgetFactory The factory used to create various common widgets + */ + public GenericPersistenceUnit2_0ConnectionTab( + PropertyValueModel<JpaConnection2_0> subjectHolder, + Composite parent, + WidgetFactory widgetFactory) { + + super(subjectHolder, parent, widgetFactory); + } + + @Override + protected void initializeLayout(Composite container) { + container = this.addSection( + container, + JptUiPersistence2_0Messages.GenericPersistenceUnit2_0ConnectionComposite_sectionTitle, + JptUiPersistence2_0Messages.GenericPersistenceUnit2_0ConnectionComposite_sectionDescription + ); + container.setLayout(new GridLayout(2, false)); + + this.addLabel(container, JptUiPersistence2_0Messages.TransactionTypeComposite_transactionTypeLabel); + this.buildTransactionTypeCombo(container); + + //Connection properties + Group group = this.addTitledGroup( + container, + JptUiPersistence2_0Messages.ConnectionPropertiesComposite_Database_GroupBox + ); + group.setLayout(new GridLayout(2, false)); + + GridData gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.horizontalSpan = 2; + group.setLayoutData(gridData); + + // JTA Data Source + PropertyValueModel<Boolean> jtaEnabled = this.buildJTADataSourceHolder(); + this.addLabel(group, JptUiPersistence2_0Messages.DataSourcePropertiesComposite_jtaDataSourceLabel, jtaEnabled); + this.addText(group, this.buildJtaDataSourceHolder(), JpaHelpContextIds.PERSISTENCE_XML_CONNECTION, jtaEnabled); + + // Non-JTA Data Source + PropertyValueModel<Boolean> nonJTAEnabled = this.buildNonJTADataSourceHolder(); + this.addLabel(group, JptUiPersistence2_0Messages.DataSourcePropertiesComposite_nonJtaDataSourceLabel, nonJTAEnabled); + this.addText(group, this.buildNonJtaDataSourceHolder(), JpaHelpContextIds.PERSISTENCE_XML_CONNECTION, nonJTAEnabled); + + + Group jdbcConnectionPropertiesGroup = this.addTitledGroup( + group, + JptUiPersistence2_0Messages.JdbcPropertiesComposite_JdbcConnectionProperties_GroupBox + ); + gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.horizontalSpan = 2; + jdbcConnectionPropertiesGroup.setLayoutData(gridData); + + new JdbcConnectionPropertiesComposite(this, jdbcConnectionPropertiesGroup, buildJdbcConnectionPropertiesPaneEnbaledModel()); + } + + private PropertyValueModel<Boolean> buildJdbcConnectionPropertiesPaneEnbaledModel() { + return new TransformationPropertyValueModel<PersistenceUnitTransactionType, Boolean>(buildTransactionTypeHolder()) { + @Override + protected Boolean transform(PersistenceUnitTransactionType value) { + return value == PersistenceUnitTransactionType.RESOURCE_LOCAL; + } + }; + } + + + // ********** JpaPageComposite implementation ********** + + public String getHelpID() { + return JpaHelpContextIds.PERSISTENCE_XML_CONNECTION; // TODO - Review for JPA 2.0 + } + + public ImageDescriptor getPageImageDescriptor() { + return null; + } + + public String getPageText() { + return JptUiPersistence2_0Messages.GenericPersistenceUnit2_0ConnectionTab_title; + } + + + // ********** transaction type ********** + private EnumFormComboViewer<PersistenceUnit, PersistenceUnitTransactionType> buildTransactionTypeCombo(Composite container) { + + return new EnumFormComboViewer<PersistenceUnit, PersistenceUnitTransactionType>(this, + this.buildPersistenceUnitHolder(), + container) { + @Override + protected void addPropertyNames(Collection<String> propertyNames) { + super.addPropertyNames(propertyNames); + propertyNames.add(PersistenceUnit.SPECIFIED_TRANSACTION_TYPE_PROPERTY); + propertyNames.add(PersistenceUnit.DEFAULT_TRANSACTION_TYPE_PROPERTY); + } + + @Override + protected PersistenceUnitTransactionType[] getChoices() { + return PersistenceUnitTransactionType.values(); + } + + @Override + protected PersistenceUnitTransactionType getDefaultValue() { + return this.getSubject().getDefaultTransactionType(); + } + + @Override + protected String displayString(PersistenceUnitTransactionType value) { + switch (value) { + case JTA : + return JptUiPersistence2_0Messages.TransactionTypeComposite_jta; + case RESOURCE_LOCAL : + return JptUiPersistence2_0Messages.TransactionTypeComposite_resource_local; + default : + throw new IllegalStateException(); + } + } + + @Override + protected PersistenceUnitTransactionType getValue() { + return this.getSubject().getSpecifiedTransactionType(); + } + + @Override + protected void setValue(PersistenceUnitTransactionType value) { + this.getSubject().setSpecifiedTransactionType(value); + + if (value == PersistenceUnitTransactionType.RESOURCE_LOCAL) { + clearJTAProperties(); + } + else { + clearResourceLocalProperties(); + } + } + + @Override + protected String getHelpId() { + return JpaHelpContextIds.PERSISTENCE_XML_CONNECTION; // TODO - Review for JPA 2.0 + } + }; + } + + private PropertyValueModel<PersistenceUnit> buildPersistenceUnitHolder() { + return new PropertyAspectAdapter<JpaConnection2_0, PersistenceUnit>(this.getSubjectHolder()) { + @Override + protected PersistenceUnit buildValue_() { + return this.subject.getPersistenceUnit(); + } + }; + } + + private void clearJTAProperties() { + this.getSubject().getPersistenceUnit().setJtaDataSource(null); + } + + private void clearResourceLocalProperties() { + JpaConnection2_0 connection = this.getSubject(); + connection.getPersistenceUnit().setNonJtaDataSource(null); + connection.setDriver(null); + connection.setUrl(null); + connection.setUser(null); + connection.setPassword(null); + } + + + private ModifiablePropertyValueModel<String> buildJtaDataSourceHolder() { + return new PropertyAspectAdapter<PersistenceUnit, String>(this.buildPersistenceUnitHolder(), PersistenceUnit.JTA_DATA_SOURCE_PROPERTY) { + @Override + protected String buildValue_() { + return this.subject.getJtaDataSource(); + } + + @Override + protected void setValue_(String value) { + if (value.length() == 0) { + value = null; + } + this.subject.setJtaDataSource(value); + } + }; + } + + private PropertyValueModel<Boolean> buildJTADataSourceHolder() { + return new TransformationPropertyValueModel<PersistenceUnitTransactionType, Boolean>(buildTransactionTypeHolder()) { + @Override + protected Boolean transform(PersistenceUnitTransactionType value) { + return Boolean.valueOf(this.transform2(value)); + } + private boolean transform2(PersistenceUnitTransactionType value) { + return value == null || value == PersistenceUnitTransactionType.JTA; + } + }; + } + + private ModifiablePropertyValueModel<String> buildNonJtaDataSourceHolder() { + return new PropertyAspectAdapter<PersistenceUnit, String>(buildPersistenceUnitHolder(), PersistenceUnit.NON_JTA_DATA_SOURCE_PROPERTY) { + @Override + protected String buildValue_() { + return this.subject.getNonJtaDataSource(); + } + + @Override + protected void setValue_(String value) { + if (value.length() == 0) { + value = null; + } + this.subject.setNonJtaDataSource(value); + } + }; + } + + private PropertyValueModel<Boolean> buildNonJTADataSourceHolder() { + return new TransformationPropertyValueModel<PersistenceUnitTransactionType, Boolean>(buildTransactionTypeHolder()) { + @Override + protected Boolean transform(PersistenceUnitTransactionType value) { + return Boolean.valueOf(value == PersistenceUnitTransactionType.RESOURCE_LOCAL); + } + }; + } + + private PropertyValueModel<PersistenceUnitTransactionType> buildTransactionTypeHolder() { + return new PropertyAspectAdapter<PersistenceUnit, PersistenceUnitTransactionType>( + buildPersistenceUnitHolder(), + PersistenceUnit.SPECIFIED_TRANSACTION_TYPE_PROPERTY, + PersistenceUnit.DEFAULT_TRANSACTION_TYPE_PROPERTY) { + @Override + protected PersistenceUnitTransactionType buildValue_() { + return this.subject.getTransactionType(); + } + }; + } +} diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/persistence/GenericPersistenceUnit2_0OptionsTab.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/persistence/GenericPersistenceUnit2_0OptionsTab.java new file mode 100644 index 0000000000..855e5071ea --- /dev/null +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/persistence/GenericPersistenceUnit2_0OptionsTab.java @@ -0,0 +1,549 @@ +/******************************************************************************* + * Copyright (c) 2009, 2012 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.jpa.ui.internal.jpa2.persistence; + +import java.util.Collection; +import org.eclipse.jdt.core.IJavaElement; +import org.eclipse.jdt.core.IJavaProject; +import org.eclipse.jdt.core.IType; +import org.eclipse.jdt.core.JavaModelException; +import org.eclipse.jdt.core.search.IJavaSearchScope; +import org.eclipse.jdt.core.search.SearchEngine; +import org.eclipse.jdt.ui.IJavaElementSearchConstants; +import org.eclipse.jdt.ui.JavaUI; +import org.eclipse.jface.resource.ImageDescriptor; +import org.eclipse.jface.viewers.ILabelProvider; +import org.eclipse.jface.viewers.LabelProvider; +import org.eclipse.jface.window.Window; +import org.eclipse.jpt.common.ui.WidgetFactory; +import org.eclipse.jpt.common.ui.internal.JptCommonUiMessages; +import org.eclipse.jpt.common.ui.internal.widgets.AddRemoveListPane; +import org.eclipse.jpt.common.ui.internal.widgets.EnumFormComboViewer; +import org.eclipse.jpt.common.ui.internal.widgets.IntegerCombo; +import org.eclipse.jpt.common.ui.internal.widgets.Pane; +import org.eclipse.jpt.common.ui.internal.widgets.AddRemovePane.Adapter; +import org.eclipse.jpt.common.utility.internal.iterables.ListIterable; +import org.eclipse.jpt.common.utility.internal.model.value.ListAspectAdapter; +import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter; +import org.eclipse.jpt.common.utility.internal.model.value.SimpleCollectionValueModel; +import org.eclipse.jpt.common.utility.model.value.CollectionValueModel; +import org.eclipse.jpt.common.utility.model.value.ListValueModel; +import org.eclipse.jpt.common.utility.model.value.ModifiableCollectionValueModel; +import org.eclipse.jpt.common.utility.model.value.ModifiablePropertyValueModel; +import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; +import org.eclipse.jpt.jpa.core.jpa2.context.persistence.PersistenceUnit2_0; +import org.eclipse.jpt.jpa.core.jpa2.context.persistence.options.JpaOptions2_0; +import org.eclipse.jpt.jpa.core.jpa2.context.persistence.options.SharedCacheMode; +import org.eclipse.jpt.jpa.core.jpa2.context.persistence.options.ValidationMode; +import org.eclipse.jpt.jpa.ui.JptJpaUiPlugin; +import org.eclipse.jpt.jpa.ui.editors.JpaPageComposite; +import org.eclipse.swt.layout.GridLayout; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.ui.PlatformUI; +import org.eclipse.ui.dialogs.SelectionDialog; +import org.eclipse.ui.progress.IProgressService; + +/** + * GenericPersistenceUnit2_0OptionsTab + */ +public class GenericPersistenceUnit2_0OptionsTab extends Pane<JpaOptions2_0> + implements JpaPageComposite +{ + // ********** constructors/initialization ********** + /** + * Creates a new <code>GenericPersistenceUnit2_0OptionsTab</code>. + * + * @param subjectHolder The holder of this pane's subject + * @param parent The parent container + * @param widgetFactory The factory used to create various common widgets + */ + public GenericPersistenceUnit2_0OptionsTab( + PropertyValueModel<JpaOptions2_0> subjectHolder, + Composite parent, + WidgetFactory widgetFactory) { + + super(subjectHolder, parent, widgetFactory); + } + + @Override + protected void initializeLayout(Composite parent) { + Composite composite = this.addSection(parent, + JptUiPersistence2_0Messages.GenericPersistenceUnit2_0OptionsComposite_miscellaneousSectionTitle, + JptUiPersistence2_0Messages.GenericPersistenceUnit2_0OptionsComposite_miscellaneousSectionDescription); + composite.setLayout(new GridLayout(2, false)); + + this.addLabel(composite, JptUiPersistence2_0Messages.LockingConfigurationComposite_lockTimeoutLabel); + this.addLockTimeoutCombo(composite); + + this.addLabel(composite, JptUiPersistence2_0Messages.QueryConfigurationComposite_queryTimeoutLabel); + this.addQueryTimeoutCombo(composite); + + // SharedCacheMode + this.addLabel(composite, JptUiPersistence2_0Messages.SharedCacheModeComposite_sharedCacheModeLabel); + this.addSharedCacheModeCombo(composite, this.buildPersistenceUnit2_0Holder()); + + // ValidationMode + this.addLabel(composite, JptUiPersistence2_0Messages.ValidationModeComposite_validationModeLabel); + this.addValidationModeCombo(composite, this.buildPersistenceUnit2_0Holder()); + + // ValidationGroupPrePersist + this.addLabel(composite, JptUiPersistence2_0Messages.ValidationConfigurationComposite_groupPrePersistLabel); + this.addPrePersistListPane(composite); + + // ValidationGroupPreUpdate + this.addLabel(composite, JptUiPersistence2_0Messages.ValidationConfigurationComposite_groupPreUpdateLabel); + this.addPreUpdateListPane(composite); + + // ValidationGroupPreRemove + this.addLabel(composite, JptUiPersistence2_0Messages.ValidationConfigurationComposite_groupPreRemoveLabel); + this.addPreRemoveListPane(composite); + } + + // ********** JpaPageComposite implementation ********** + + public String getHelpID() { + return null; // TODO - Review for JPA 2.0 + } + + public ImageDescriptor getPageImageDescriptor() { + return null; + } + + public String getPageText() { + return JptUiPersistence2_0Messages.GenericPersistenceUnit2_0OptionsTab_title; + } + + + //************ lock timeout ********** + + private void addLockTimeoutCombo(Composite parent) { + new IntegerCombo<JpaOptions2_0>(this, parent) { + @Override + protected String getHelpId() { + return null; // TODO + } + @Override + protected PropertyValueModel<Integer> buildDefaultHolder() { + return new PropertyAspectAdapter<JpaOptions2_0, Integer>(getSubjectHolder()) { + @Override + protected Integer buildValue_() { + return this.subject.getDefaultLockTimeout(); + } + }; + } + + @Override + protected ModifiablePropertyValueModel<Integer> buildSelectedItemHolder() { + return new PropertyAspectAdapter<JpaOptions2_0, Integer>(getSubjectHolder(), JpaOptions2_0.LOCK_TIMEOUT_PROPERTY) { + @Override + protected Integer buildValue_() { + return this.subject.getLockTimeout(); + } + + @Override + protected void setValue_(Integer value) { + this.subject.setLockTimeout(value); + } + }; + } + }; + } + + + //************ query timeout ********** + + private void addQueryTimeoutCombo(Composite parent) { + new IntegerCombo<JpaOptions2_0>(this, parent) { + @Override + protected String getHelpId() { + return null; // TODO + } + @Override + protected PropertyValueModel<Integer> buildDefaultHolder() { + return new PropertyAspectAdapter<JpaOptions2_0, Integer>(getSubjectHolder()) { + @Override + protected Integer buildValue_() { + return this.subject.getDefaultQueryTimeout(); + } + }; + } + + @Override + protected ModifiablePropertyValueModel<Integer> buildSelectedItemHolder() { + return new PropertyAspectAdapter<JpaOptions2_0, Integer>(getSubjectHolder(), JpaOptions2_0.QUERY_TIMEOUT_PROPERTY) { + @Override + protected Integer buildValue_() { + return this.subject.getQueryTimeout(); + } + + @Override + protected void setValue_(Integer value) { + this.subject.setQueryTimeout(value); + } + }; + } + }; + } + + //************ validation configuration ********** + // ********** ValidationGroupPrePersists ********** + + private void addPrePersistListPane(Composite parent) { + new AddRemoveListPane<JpaOptions2_0, String>( + this, + parent, + this.buildPrePersistAdapter(), + this.buildPrePersistListHolder(), + this.buildSelectedItemsModel(), + this.buildLabelProvider() + ); + } + + private Adapter<String> buildPrePersistAdapter() { + return new AddRemoveListPane.AbstractAdapter<String>() { + public String addNewItem() { + return addPrePersistClass(); + } + + @Override + public PropertyValueModel<Boolean> buildRemoveButtonEnabledModel(CollectionValueModel<String> selectedItemsModel) { + //enable the remove button only when 1 item is selected, same as the optional button + return this.buildSingleSelectedItemEnabledModel(selectedItemsModel); + } + + public void removeSelectedItems(CollectionValueModel<String> selectedItemsModel) { + String item = selectedItemsModel.iterator().next(); + getSubject().removeValidationGroupPrePersist(item); + } + }; + } + + private ListValueModel<String> buildPrePersistListHolder() { + return new ListAspectAdapter<JpaOptions2_0, String>(getSubjectHolder(), JpaOptions2_0.VALIDATION_GROUP_PRE_PERSIST_LIST) { + @Override + protected ListIterable<String> getListIterable() { + return subject.getValidationGroupPrePersists(); + } + + @Override + protected int size_() { + return subject.getValidationGroupPrePersistsSize(); + } + }; + } + + private String addPrePersistClass() { + + IType type = this.chooseType(); + + if (type != null) { + String className = type.getFullyQualifiedName('$'); + if( ! this.getSubject().validationGroupPrePersistExists(className)) { + + return this.getSubject().addValidationGroupPrePersist(className); + } + } + return null; + } + + // ********** ValidationGroupPreUpdates ********** + + private void addPreUpdateListPane(Composite parent) { + new AddRemoveListPane<JpaOptions2_0, String>( + this, + parent, + this.buildPreUpdateAdapter(), + this.buildPreUpdateListHolder(), + this.buildSelectedItemsModel(), + this.buildLabelProvider() + ); + } + + private Adapter<String> buildPreUpdateAdapter() { + return new AddRemoveListPane.AbstractAdapter<String>() { + public String addNewItem() { + return addPreUpdateClass(); + } + + @Override + public PropertyValueModel<Boolean> buildRemoveButtonEnabledModel(CollectionValueModel<String> selectedItemsModel) { + //enable the remove button only when 1 item is selected, same as the optional button + return this.buildSingleSelectedItemEnabledModel(selectedItemsModel); + } + + public void removeSelectedItems(CollectionValueModel<String> selectedItemsModel) { + String item = selectedItemsModel.iterator().next(); + getSubject().removeValidationGroupPreUpdate(item); + } + }; + } + + private ListValueModel<String> buildPreUpdateListHolder() { + return new ListAspectAdapter<JpaOptions2_0, String>(getSubjectHolder(), JpaOptions2_0.VALIDATION_GROUP_PRE_UPDATE_LIST) { + @Override + protected ListIterable<String> getListIterable() { + return subject.getValidationGroupPreUpdates(); + } + + @Override + protected int size_() { + return subject.getValidationGroupPreUpdatesSize(); + } + }; + } + + private String addPreUpdateClass() { + + IType type = this.chooseType(); + + if (type != null) { + String className = type.getFullyQualifiedName('$'); + if( ! this.getSubject().validationGroupPreUpdateExists(className)) { + + return this.getSubject().addValidationGroupPreUpdate(className); + } + } + return null; + } + + // ********** ValidationGroupPreRemoves ********** + + private void addPreRemoveListPane(Composite parent) { + new AddRemoveListPane<JpaOptions2_0, String>( + this, + parent, + this.buildPreRemoveAdapter(), + this.buildPreRemoveListHolder(), + this.buildSelectedItemsModel(), + this.buildLabelProvider() + ); + } + + private Adapter<String> buildPreRemoveAdapter() { + return new AddRemoveListPane.AbstractAdapter<String>() { + public String addNewItem() { + return addPreRemoveClass(); + } + + @Override + public PropertyValueModel<Boolean> buildRemoveButtonEnabledModel(CollectionValueModel<String> selectedItemsModel) { + //enable the remove button only when 1 item is selected, same as the optional button + return this.buildSingleSelectedItemEnabledModel(selectedItemsModel); + } + + public void removeSelectedItems(CollectionValueModel<String> selectedItemsModel) { + String item = selectedItemsModel.iterator().next(); + getSubject().removeValidationGroupPreRemove(item); + } + }; + } + + private ListValueModel<String> buildPreRemoveListHolder() { + return new ListAspectAdapter<JpaOptions2_0, String>(getSubjectHolder(), JpaOptions2_0.VALIDATION_GROUP_PRE_REMOVE_LIST) { + @Override + protected ListIterable<String> getListIterable() { + return subject.getValidationGroupPreRemoves(); + } + + @Override + protected int size_() { + return subject.getValidationGroupPreRemovesSize(); + } + }; + } + + private String addPreRemoveClass() { + IType type = this.chooseType(); + + if (type != null) { + String className = type.getFullyQualifiedName('$'); + if( ! this.getSubject().validationGroupPreRemoveExists(className)) { + + return this.getSubject().addValidationGroupPreRemove(className); + } + } + return null; + } + + + // ********** Private methods ********** + + private PropertyValueModel<PersistenceUnit2_0> buildPersistenceUnit2_0Holder() { + return new PropertyAspectAdapter<JpaOptions2_0, PersistenceUnit2_0>(this.getSubjectHolder()) { + @Override + protected PersistenceUnit2_0 buildValue_() { + return (PersistenceUnit2_0) this.subject.getPersistenceUnit(); + } + }; + } + + private ILabelProvider buildLabelProvider() { + return new LabelProvider() { + + @Override + public String getText(Object element) { + String name = (String) element; + + if (name == null) { + name = JptUiPersistence2_0Messages.GenericPersistenceUnit2_0OptionsTab_noName; + } + return name; + } + }; + } + + /** + * Prompts the user the Open Type dialog. + * + * @return Either the selected type or <code>null</code> if the user + * canceled the dialog + */ + private IType chooseType() { + IJavaProject javaProject = this.getSubject().getJpaProject().getJavaProject(); + IJavaElement[] elements = new IJavaElement[] { javaProject }; + IJavaSearchScope scope = SearchEngine.createJavaSearchScope(elements); + IProgressService service = PlatformUI.getWorkbench().getProgressService(); + SelectionDialog typeSelectionDialog; + + try { + typeSelectionDialog = JavaUI.createTypeDialog( + getShell(), + service, + scope, + IJavaElementSearchConstants.CONSIDER_CLASSES, + false, + "" + ); + } + catch (JavaModelException e) { + JptJpaUiPlugin.log(e); + return null; + } + + typeSelectionDialog.setTitle(JptCommonUiMessages.ClassChooserPane_dialogTitle); + typeSelectionDialog.setMessage(JptCommonUiMessages.ClassChooserPane_dialogMessage); + + if (typeSelectionDialog.open() == Window.OK) { + return (IType) typeSelectionDialog.getResult()[0]; + } + + return null; + } + + private ModifiableCollectionValueModel<String> buildSelectedItemsModel() { + return new SimpleCollectionValueModel<String>(); + } + + //********* shared cache mode *********** + + private EnumFormComboViewer<PersistenceUnit2_0, SharedCacheMode> addSharedCacheModeCombo(Composite parent, PropertyValueModel<? extends PersistenceUnit2_0> subjectHolder) { + return new EnumFormComboViewer<PersistenceUnit2_0, SharedCacheMode>(this, subjectHolder, parent) { + @Override + protected void addPropertyNames(Collection<String> propertyNames) { + super.addPropertyNames(propertyNames); + propertyNames.add(PersistenceUnit2_0.SPECIFIED_SHARED_CACHE_MODE_PROPERTY); + } + + @Override + protected SharedCacheMode[] getChoices() { + return SharedCacheMode.values(); + } + + @Override + protected boolean sortChoices() { + return false; + } + + @Override + protected SharedCacheMode getDefaultValue() { + return this.getSubject().getDefaultSharedCacheMode(); + } + + @Override + protected String displayString(SharedCacheMode value) { + switch (value) { + case ALL : + return JptUiPersistence2_0Messages.SharedCacheModeComposite_all; + case DISABLE_SELECTIVE : + return JptUiPersistence2_0Messages.SharedCacheModeComposite_disable_selective; + case ENABLE_SELECTIVE : + return JptUiPersistence2_0Messages.SharedCacheModeComposite_enable_selective; + case NONE : + return JptUiPersistence2_0Messages.SharedCacheModeComposite_none; + case UNSPECIFIED : + return JptUiPersistence2_0Messages.SharedCacheModeComposite_unspecified; + default : + throw new IllegalStateException(); + } + } + + @Override + protected SharedCacheMode getValue() { + return this.getSubject().getSpecifiedSharedCacheMode(); + } + + @Override + protected void setValue(SharedCacheMode value) { + this.getSubject().setSpecifiedSharedCacheMode(value); + } + }; + } + + //********* validation mode *********** + + private EnumFormComboViewer<PersistenceUnit2_0, ValidationMode> addValidationModeCombo(Composite parent, PropertyValueModel<? extends PersistenceUnit2_0> subjectHolder) { + return new EnumFormComboViewer<PersistenceUnit2_0, ValidationMode>(this, subjectHolder, parent) { + @Override + protected void addPropertyNames(Collection<String> propertyNames) { + super.addPropertyNames(propertyNames); + propertyNames.add(PersistenceUnit2_0.SPECIFIED_VALIDATION_MODE_PROPERTY); + } + + @Override + protected ValidationMode[] getChoices() { + return ValidationMode.values(); + } + + @Override + protected boolean sortChoices() { + return false; + } + + @Override + protected ValidationMode getDefaultValue() { + return this.getSubject().getDefaultValidationMode(); + } + + @Override + protected String displayString(ValidationMode value) { + switch (value) { + case AUTO : + return JptUiPersistence2_0Messages.ValidationModeComposite_auto; + case CALLBACK : + return JptUiPersistence2_0Messages.ValidationModeComposite_callback; + case NONE : + return JptUiPersistence2_0Messages.ValidationModeComposite_none; + default : + throw new IllegalStateException(); + } + } + + @Override + protected ValidationMode getValue() { + return this.getSubject().getSpecifiedValidationMode(); + } + + @Override + protected void setValue(ValidationMode value) { + this.getSubject().setSpecifiedValidationMode(value); + } + }; + } +} diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/persistence/connection/JdbcConnectionPropertiesComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/persistence/JdbcConnectionPropertiesComposite.java index eadafc75d0..b8d0c4a7fa 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/persistence/connection/JdbcConnectionPropertiesComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/persistence/JdbcConnectionPropertiesComposite.java @@ -7,7 +7,7 @@ * Contributors: * Oracle - initial API and implementation *******************************************************************************/ -package org.eclipse.jpt.jpa.ui.internal.jpa2.persistence.connection; +package org.eclipse.jpt.jpa.ui.internal.jpa2.persistence; import java.util.Comparator; @@ -15,25 +15,29 @@ 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.jdt.core.IJavaProject; import org.eclipse.jface.dialogs.IDialogConstants; import org.eclipse.jface.dialogs.IDialogSettings; import org.eclipse.jface.viewers.ILabelProvider; import org.eclipse.jface.viewers.LabelProvider; +import org.eclipse.jpt.common.ui.internal.widgets.ClassChooserPane; import org.eclipse.jpt.common.ui.internal.widgets.Pane; import org.eclipse.jpt.common.utility.internal.StringTools; import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter; import org.eclipse.jpt.common.utility.model.value.ModifiablePropertyValueModel; +import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; import org.eclipse.jpt.jpa.core.jpa2.context.persistence.connection.JpaConnection2_0; import org.eclipse.jpt.jpa.db.ConnectionProfile; import org.eclipse.jpt.jpa.db.ConnectionProfileFactory; import org.eclipse.jpt.jpa.db.JptJpaDbPlugin; import org.eclipse.jpt.jpa.ui.JptJpaUiPlugin; -import org.eclipse.jpt.jpa.ui.internal.jpa2.persistence.JptUiPersistence2_0Messages; import org.eclipse.swt.graphics.Image; +import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Shell; import org.eclipse.ui.dialogs.FilteredItemsSelectionDialog; +import org.eclipse.ui.forms.widgets.Hyperlink; /** * JdbcConnectionPropertiesComposite @@ -46,9 +50,9 @@ public class JdbcConnectionPropertiesComposite extends Pane<JpaConnection2_0> */ private static final String DIALOG_SETTINGS = "org.eclipse.jpt.jpa.ui.internal.jpa2.dialogs.ConnectionDialog"; - public JdbcConnectionPropertiesComposite(Pane<JpaConnection2_0> parentComposite, Composite parent) { + public JdbcConnectionPropertiesComposite(Pane<JpaConnection2_0> parentComposite, Composite parent, PropertyValueModel<Boolean> enabledModel) { - super(parentComposite, parent); + super(parentComposite, parent, enabledModel); } private ModifiablePropertyValueModel<String> buildPasswordHolder() { @@ -111,38 +115,38 @@ public class JdbcConnectionPropertiesComposite extends Pane<JpaConnection2_0> } @Override - protected void initializeLayout(Composite container) { + protected Composite addComposite(Composite parent) { + return this.addSubPane(parent, 2, 0, 0, 0, 0); //2 columns + } + @Override + protected void initializeLayout(Composite container) { // Populate from Connection hyperlink - this.addHyperlink( + Hyperlink hyperLink = this.addHyperlink( container, JptUiPersistence2_0Messages.JdbcConnectionPropertiesComposite_populateFromConnectionHyperLink, this.buildPopulateFromConnectionAction() ); + GridData gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.horizontalSpan = 2; + hyperLink.setLayoutData(gridData); + // Driver - new JdbcDriverComposite(this, container); + this.addLabel(container, JptUiPersistence2_0Messages.JdbcConnectionPropertiesComposite_driverLabel); + this.initializeJdbcDriverClassChooser(container); // Url - this.addLabeledText( - container, - JptUiPersistence2_0Messages.JdbcConnectionPropertiesComposite_urlLabel, - this.buildUrlHolder() - ); + this.addLabel(container, JptUiPersistence2_0Messages.JdbcConnectionPropertiesComposite_urlLabel); + this.addText(container, this.buildUrlHolder()); // User - this.addLabeledText( - container, - JptUiPersistence2_0Messages.JdbcConnectionPropertiesComposite_userLabel, - this.buildUserHolder() - ); + this.addLabel(container, JptUiPersistence2_0Messages.JdbcConnectionPropertiesComposite_userLabel); + this.addText(container, this.buildUserHolder()); // Password - this.addLabeledPasswordText( - container, - JptUiPersistence2_0Messages.JdbcConnectionPropertiesComposite_passwordLabel, - this.buildPasswordHolder() - ); + this.addLabel(container, JptUiPersistence2_0Messages.JdbcConnectionPropertiesComposite_passwordLabel); + this.addPasswordText(container, this.buildPasswordHolder()); } void promptConnection() { @@ -176,6 +180,46 @@ public class JdbcConnectionPropertiesComposite extends Pane<JpaConnection2_0> return this.getShell(); } + private ClassChooserPane<JpaConnection2_0> initializeJdbcDriverClassChooser(Composite container) { + + return new ClassChooserPane<JpaConnection2_0>(this, container) { + + @Override + protected ModifiablePropertyValueModel<String> buildTextHolder() { + return new PropertyAspectAdapter<JpaConnection2_0, String>( + this.getSubjectHolder(), JpaConnection2_0.DRIVER_PROPERTY) { + @Override + protected String buildValue_() { + return this.subject.getDriver(); + } + + @Override + protected void setValue_(String value) { + + if (value.length() == 0) { + value = null; + } + this.subject.setDriver(value); + } + }; + } + + @Override + protected String getClassName() { + return this.getSubject().getDriver(); + } + + @Override + protected IJavaProject getJavaProject() { + return getSubject().getJpaProject().getJavaProject(); + } + + @Override + protected void setClassName(String className) { + this.getSubject().setDriver(className); + } + }; + } /** * This dialog shows the list of possible connection names and lets the user * the option to filter them using a search field. diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/persistence/PersistenceXml2_0UiDefinition.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/persistence/PersistenceXml2_0UiDefinition.java index d40763d589..e51da28c41 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/persistence/PersistenceXml2_0UiDefinition.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/persistence/PersistenceXml2_0UiDefinition.java @@ -13,9 +13,9 @@ import org.eclipse.jpt.common.core.JptResourceType; import org.eclipse.jpt.common.ui.jface.ItemTreeStateProviderFactoryProvider; import org.eclipse.jpt.jpa.core.JptJpaCorePlugin; import org.eclipse.jpt.jpa.ui.ResourceUiDefinition; -import org.eclipse.jpt.jpa.ui.internal.persistence.details.AbstractPersistenceXmlResourceUiDefinition; -import org.eclipse.jpt.jpa.ui.internal.persistence.details.PersistenceXmlUiDefinition; -import org.eclipse.jpt.jpa.ui.internal.persistence.details.PersistenceXmlUiFactory; +import org.eclipse.jpt.jpa.ui.internal.persistence.AbstractPersistenceXmlResourceUiDefinition; +import org.eclipse.jpt.jpa.ui.internal.persistence.PersistenceXmlUiDefinition; +import org.eclipse.jpt.jpa.ui.internal.persistence.PersistenceXmlUiFactory; public class PersistenceXml2_0UiDefinition extends AbstractPersistenceXmlResourceUiDefinition diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/persistence/connection/ConnectionPropertiesComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/persistence/connection/ConnectionPropertiesComposite.java deleted file mode 100644 index 4e37630532..0000000000 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/persistence/connection/ConnectionPropertiesComposite.java +++ /dev/null @@ -1,38 +0,0 @@ -/******************************************************************************* -* Copyright (c) 2009, 2010 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.jpa.ui.internal.jpa2.persistence.connection; - -import org.eclipse.jpt.common.ui.internal.widgets.Pane; -import org.eclipse.jpt.jpa.core.jpa2.context.persistence.connection.JpaConnection2_0; -import org.eclipse.jpt.jpa.ui.internal.jpa2.persistence.JptUiPersistence2_0Messages; -import org.eclipse.swt.widgets.Composite; - -/** - * ConnectionPropertiesComposite - */ -public class ConnectionPropertiesComposite extends Pane<JpaConnection2_0> -{ - public ConnectionPropertiesComposite(Pane<JpaConnection2_0> parentComposite, Composite parent) { - - super(parentComposite, parent); - } - - @Override - protected void initializeLayout(Composite container) { - - container = addTitledGroup( - container, - JptUiPersistence2_0Messages.ConnectionPropertiesComposite_Database_GroupBox - ); - - new DataSourcePropertiesComposite(this, container); - new JdbcPropertiesComposite(this, container); - } -} diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/persistence/connection/DataSourcePropertiesComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/persistence/connection/DataSourcePropertiesComposite.java deleted file mode 100644 index 7f1e38433a..0000000000 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/persistence/connection/DataSourcePropertiesComposite.java +++ /dev/null @@ -1,142 +0,0 @@ -/******************************************************************************* -* Copyright (c) 2009, 2012 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.jpa.ui.internal.jpa2.persistence.connection; - -import org.eclipse.jpt.common.ui.internal.widgets.Pane; -import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter; -import org.eclipse.jpt.common.utility.internal.model.value.TransformationPropertyValueModel; -import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; -import org.eclipse.jpt.common.utility.model.value.ModifiablePropertyValueModel; -import org.eclipse.jpt.jpa.core.context.persistence.PersistenceUnit; -import org.eclipse.jpt.jpa.core.context.persistence.PersistenceUnitTransactionType; -import org.eclipse.jpt.jpa.core.jpa2.context.persistence.connection.JpaConnection2_0; -import org.eclipse.jpt.jpa.ui.internal.JpaHelpContextIds; -import org.eclipse.jpt.jpa.ui.internal.jpa2.persistence.JptUiPersistence2_0Messages; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Label; -import org.eclipse.swt.widgets.Text; - -/** - * DataSourcePropertiesComposite - */ -public class DataSourcePropertiesComposite extends Pane<JpaConnection2_0> -{ - /** - * Creates a new <code>DataSourcePropertiesComposite</code>. - * - * @param parentPane The parent container of this one - * @param parent The parent container - */ - public DataSourcePropertiesComposite(Pane<JpaConnection2_0> parentComposite, - Composite parent) { - - super(parentComposite, parent); - } - - private ModifiablePropertyValueModel<String> buildJtaDataSourceHolder() { - return new PropertyAspectAdapter<PersistenceUnit, String>(this.buildPersistenceUnitHolder(), PersistenceUnit.JTA_DATA_SOURCE_PROPERTY) { - @Override - protected String buildValue_() { - return this.subject.getJtaDataSource(); - } - - @Override - protected void setValue_(String value) { - if (value.length() == 0) { - value = null; - } - this.subject.setJtaDataSource(value); - } - }; - } - - private PropertyValueModel<Boolean> buildJTADataSourceHolder() { - return new TransformationPropertyValueModel<PersistenceUnitTransactionType, Boolean>(buildTransactionTypeHolder()) { - @Override - protected Boolean transform(PersistenceUnitTransactionType value) { - return Boolean.valueOf(this.transform2(value)); - } - private boolean transform2(PersistenceUnitTransactionType value) { - return value == null || value == PersistenceUnitTransactionType.JTA; - } - }; - } - - private ModifiablePropertyValueModel<String> buildNonJtaDataSourceHolder() { - return new PropertyAspectAdapter<PersistenceUnit, String>(buildPersistenceUnitHolder(), PersistenceUnit.NON_JTA_DATA_SOURCE_PROPERTY) { - @Override - protected String buildValue_() { - return this.subject.getNonJtaDataSource(); - } - - @Override - protected void setValue_(String value) { - if (value.length() == 0) { - value = null; - } - this.subject.setNonJtaDataSource(value); - } - }; - } - - private PropertyValueModel<Boolean> buildNonJTADataSourceHolder() { - return new TransformationPropertyValueModel<PersistenceUnitTransactionType, Boolean>(buildTransactionTypeHolder()) { - @Override - protected Boolean transform(PersistenceUnitTransactionType value) { - return Boolean.valueOf(value == PersistenceUnitTransactionType.RESOURCE_LOCAL); - } - }; - } - - private PropertyValueModel<PersistenceUnitTransactionType> buildTransactionTypeHolder() { - return new PropertyAspectAdapter<PersistenceUnit, PersistenceUnitTransactionType>( - buildPersistenceUnitHolder(), - PersistenceUnit.SPECIFIED_TRANSACTION_TYPE_PROPERTY, - PersistenceUnit.DEFAULT_TRANSACTION_TYPE_PROPERTY) { - @Override - protected PersistenceUnitTransactionType buildValue_() { - return this.subject.getTransactionType(); - } - }; - } - - private PropertyValueModel<PersistenceUnit> buildPersistenceUnitHolder() { - return new PropertyAspectAdapter<JpaConnection2_0, PersistenceUnit>(getSubjectHolder()) { - @Override - protected PersistenceUnit buildValue_() { - return this.subject.getPersistenceUnit(); - } - }; - } - - @Override - protected void initializeLayout(Composite container) { - - int groupBoxMargin = this.getGroupBoxMargin(); - - container = this.addSubPane(container, 0, groupBoxMargin, 0, groupBoxMargin); - - // JTA Data Source - PropertyValueModel<Boolean> jtaEnabled = this.buildJTADataSourceHolder(); - Label jtaLabel = this.addLabel(container, JptUiPersistence2_0Messages.DataSourcePropertiesComposite_jtaDataSourceLabel, jtaEnabled); - Text jtaText = this.addText(container, this.buildJtaDataSourceHolder(), this.getHelpID(), jtaEnabled); - this.addLabeledComposite(container, jtaLabel, jtaText, this.getHelpID()); - - // Non-JTA Data Source - PropertyValueModel<Boolean> nonJTAEnabled = this.buildNonJTADataSourceHolder(); - Label nonJtaLabel = this.addLabel(container, JptUiPersistence2_0Messages.DataSourcePropertiesComposite_nonJtaDataSourceLabel, nonJTAEnabled); - Text nonJtaText = this.addText(container, this.buildNonJtaDataSourceHolder(), this.getHelpID(), nonJTAEnabled); - this.addLabeledComposite(container, nonJtaLabel, nonJtaText, this.getHelpID()); - } - - public String getHelpID() { - return JpaHelpContextIds.PERSISTENCE_XML_CONNECTION; // TODO - Review for JPA 2.0 - } -} diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/persistence/connection/GenericPersistenceUnit2_0ConnectionComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/persistence/connection/GenericPersistenceUnit2_0ConnectionComposite.java deleted file mode 100644 index 52ee14de9d..0000000000 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/persistence/connection/GenericPersistenceUnit2_0ConnectionComposite.java +++ /dev/null @@ -1,49 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2009, 2010 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.jpa.ui.internal.jpa2.persistence.connection; - -import org.eclipse.jpt.common.ui.internal.widgets.Pane; -import org.eclipse.jpt.jpa.core.jpa2.context.persistence.connection.JpaConnection2_0; -import org.eclipse.jpt.jpa.ui.internal.jpa2.persistence.JptUiPersistence2_0Messages; -import org.eclipse.swt.widgets.Composite; - -/** - * GenericPersistenceUnit2_0ConnectionComposite - */ -public class GenericPersistenceUnit2_0ConnectionComposite extends Pane<JpaConnection2_0> -{ - public GenericPersistenceUnit2_0ConnectionComposite( - Pane<JpaConnection2_0> subjectHolder, - Composite container) { - super(subjectHolder, container, false); - } - - @Override - protected void initializeLayout(Composite container) { - - int groupBoxMargin = this.getGroupBoxMargin() * 2; - - container = this.addSection( - container, - JptUiPersistence2_0Messages.GenericPersistenceUnit2_0ConnectionComposite_sectionTitle, - JptUiPersistence2_0Messages.GenericPersistenceUnit2_0ConnectionComposite_sectionDescription - ); - - Composite subPane = this.addSubPane( - container, - 0, groupBoxMargin, 10, groupBoxMargin - ); - - new TransactionTypeComposite(this, subPane); - - new ConnectionPropertiesComposite(this, container); - } - -} diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/persistence/connection/GenericPersistenceUnit2_0ConnectionTab.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/persistence/connection/GenericPersistenceUnit2_0ConnectionTab.java deleted file mode 100644 index a90d91c496..0000000000 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/persistence/connection/GenericPersistenceUnit2_0ConnectionTab.java +++ /dev/null @@ -1,90 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2009, 2010 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.jpa.ui.internal.jpa2.persistence.connection; - -import org.eclipse.jface.resource.ImageDescriptor; -import org.eclipse.jpt.common.ui.WidgetFactory; -import org.eclipse.jpt.common.ui.internal.widgets.Pane; -import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; -import org.eclipse.jpt.jpa.core.jpa2.context.persistence.connection.JpaConnection2_0; -import org.eclipse.jpt.jpa.ui.details.JpaPageComposite; -import org.eclipse.jpt.jpa.ui.internal.JpaHelpContextIds; -import org.eclipse.jpt.jpa.ui.internal.jpa2.persistence.JptUiPersistence2_0Messages; -import org.eclipse.swt.SWT; -import org.eclipse.swt.layout.GridData; -import org.eclipse.swt.layout.GridLayout; -import org.eclipse.swt.widgets.Composite; - -/** - * GenericPersistenceUnit2_0ConnectionTab - */ -public class GenericPersistenceUnit2_0ConnectionTab extends Pane<JpaConnection2_0> - implements JpaPageComposite -{ - // ********** constructors/initialization ********** - /** - * Creates a new <code>GenericPersistenceUnit2_0ConnectionTab</code>. - * - * @param subjectHolder The holder of this pane's subject - * @param parent The parent container - * @param widgetFactory The factory used to create various common widgets - */ - public GenericPersistenceUnit2_0ConnectionTab( - PropertyValueModel<JpaConnection2_0> subjectHolder, - Composite parent, - WidgetFactory widgetFactory) { - - super(subjectHolder, parent, widgetFactory); - } - - @Override - protected void initializeLayout(Composite container) { - new GenericPersistenceUnit2_0ConnectionComposite(this, container); - } - - // ********** Layout ********** - @Override - protected Composite addContainer(Composite parent) { - GridLayout layout = new GridLayout(1, true); - layout.marginHeight = 0; - layout.marginWidth = 0; - layout.marginTop = 0; - layout.marginLeft = 0; - layout.marginBottom = 0; - layout.marginRight = 0; - layout.verticalSpacing = 15; - Composite container = this.addPane(parent, layout); - updateGridData(container); - return container; - } - - private void updateGridData(Composite container) { - GridData gridData = new GridData(); - gridData.grabExcessHorizontalSpace = true; - gridData.grabExcessVerticalSpace = true; - gridData.horizontalAlignment = SWT.FILL; - gridData.verticalAlignment = SWT.FILL; - container.setLayoutData(gridData); - } - - // ********** JpaPageComposite implementation ********** - - public String getHelpID() { - return JpaHelpContextIds.PERSISTENCE_XML_CONNECTION; // TODO - Review for JPA 2.0 - } - - public ImageDescriptor getPageImageDescriptor() { - return null; - } - - public String getPageText() { - return JptUiPersistence2_0Messages.GenericPersistenceUnit2_0ConnectionTab_title; - } -} diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/persistence/connection/JdbcDriverComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/persistence/connection/JdbcDriverComposite.java deleted file mode 100644 index 6297c73ed0..0000000000 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/persistence/connection/JdbcDriverComposite.java +++ /dev/null @@ -1,94 +0,0 @@ -/******************************************************************************* -* Copyright (c) 2009, 2012 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.jpa.ui.internal.jpa2.persistence.connection; - -import org.eclipse.jdt.core.IJavaProject; -import org.eclipse.jpt.common.ui.internal.widgets.ClassChooserPane; -import org.eclipse.jpt.common.ui.internal.widgets.Pane; -import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter; -import org.eclipse.jpt.common.utility.model.value.ModifiablePropertyValueModel; -import org.eclipse.jpt.jpa.core.jpa2.context.persistence.connection.JpaConnection2_0; -import org.eclipse.jpt.jpa.ui.internal.jpa2.persistence.JptUiPersistence2_0Messages; -import org.eclipse.swt.widgets.Composite; - -/** - * JdbcDriverComposite - */ -public class JdbcDriverComposite extends Pane<JpaConnection2_0> -{ - /** - * Creates a new <code>JdbcDriverComposite</code>. - * - * @param parentPane The parent pane of this one - * @param parent The parent container - */ - public JdbcDriverComposite(Pane<? extends JpaConnection2_0> parentPane, - Composite parent) { - - super(parentPane, parent); - } - - private ClassChooserPane<JpaConnection2_0> initializeClassChooser(Composite container) { - - return new ClassChooserPane<JpaConnection2_0>(this, container) { - - @Override - protected ModifiablePropertyValueModel<String> buildTextHolder() { - return new PropertyAspectAdapter<JpaConnection2_0, String>( - this.getSubjectHolder(), JpaConnection2_0.DRIVER_PROPERTY) { - @Override - protected String buildValue_() { - return this.subject.getDriver(); - } - - @Override - protected void setValue_(String value) { - - if (value.length() == 0) { - value = null; - } - this.subject.setDriver(value); - } - }; - } - - @Override - protected String getClassName() { - return this.getSubject().getDriver(); - } - - @Override - protected String getLabelText() { - return JptUiPersistence2_0Messages.JdbcConnectionPropertiesComposite_driverLabel; - } - - @Override - protected IJavaProject getJavaProject() { - return getSubject().getJpaProject().getJavaProject(); - } - - @Override - protected void setClassName(String className) { - this.getSubject().setDriver(className); - } - - @Override - protected boolean allowTypeCreation() { - //Does not make sense to allow the user to create a new Driver class - return false; - } - }; - } - - @Override - protected void initializeLayout(Composite container) { - this.initializeClassChooser(container); - } -} diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/persistence/connection/JdbcPropertiesComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/persistence/connection/JdbcPropertiesComposite.java deleted file mode 100644 index 2ab54d50b5..0000000000 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/persistence/connection/JdbcPropertiesComposite.java +++ /dev/null @@ -1,79 +0,0 @@ -/******************************************************************************* -* Copyright (c) 2009, 2010 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.jpa.ui.internal.jpa2.persistence.connection; - -import org.eclipse.jpt.common.ui.internal.util.PaneEnabler; -import org.eclipse.jpt.common.ui.internal.widgets.Pane; -import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter; -import org.eclipse.jpt.common.utility.internal.model.value.TransformationPropertyValueModel; -import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; -import org.eclipse.jpt.jpa.core.context.persistence.PersistenceUnit; -import org.eclipse.jpt.jpa.core.context.persistence.PersistenceUnitTransactionType; -import org.eclipse.jpt.jpa.core.jpa2.context.persistence.connection.JpaConnection2_0; -import org.eclipse.jpt.jpa.ui.internal.jpa2.persistence.JptUiPersistence2_0Messages; -import org.eclipse.swt.widgets.Composite; - -/** - * JdbcPropertiesComposite - */ -public class JdbcPropertiesComposite extends Pane<JpaConnection2_0> -{ - public JdbcPropertiesComposite(Pane<JpaConnection2_0> parentComposite, Composite parent) { - - super(parentComposite, parent); - } - - private PropertyValueModel<Boolean> buildPaneEnablerHolder() { - return new TransformationPropertyValueModel<PersistenceUnitTransactionType, Boolean>(buildTransactionTypeHolder()) { - @Override - protected Boolean transform(PersistenceUnitTransactionType value) { - return value == PersistenceUnitTransactionType.RESOURCE_LOCAL; - } - }; - } - - private PropertyValueModel<PersistenceUnitTransactionType> buildTransactionTypeHolder() { - return new PropertyAspectAdapter<PersistenceUnit, PersistenceUnitTransactionType>( - buildPersistenceUnitHolder(), - PersistenceUnit.SPECIFIED_TRANSACTION_TYPE_PROPERTY, - PersistenceUnit.DEFAULT_TRANSACTION_TYPE_PROPERTY) { - @Override - protected PersistenceUnitTransactionType buildValue_() { - return this.subject.getTransactionType(); - } - }; - } - - private PropertyValueModel<PersistenceUnit> buildPersistenceUnitHolder() { - return new PropertyAspectAdapter<JpaConnection2_0, PersistenceUnit>(getSubjectHolder()) { - @Override - protected PersistenceUnit buildValue_() { - return this.subject.getPersistenceUnit(); - } - }; - } - - @Override - protected void initializeLayout(Composite container) { - - container = addTitledGroup( - addSubPane(container, 10), - JptUiPersistence2_0Messages.JdbcPropertiesComposite_JdbcConnectionProperties_GroupBox - ); - - new JdbcConnectionPropertiesComposite(this, container); - - this.installPaneEnabler(); - } - - private void installPaneEnabler() { - new PaneEnabler(buildPaneEnablerHolder(), this); - } -}
\ No newline at end of file diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/persistence/connection/TransactionTypeComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/persistence/connection/TransactionTypeComposite.java deleted file mode 100644 index 0a9b15b267..0000000000 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/persistence/connection/TransactionTypeComposite.java +++ /dev/null @@ -1,130 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2009, 2012 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.jpa.ui.internal.jpa2.persistence.connection; - -import java.util.Collection; - -import org.eclipse.jpt.common.ui.internal.widgets.EnumFormComboViewer; -import org.eclipse.jpt.common.ui.internal.widgets.Pane; -import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter; -import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; -import org.eclipse.jpt.jpa.core.context.persistence.PersistenceUnit; -import org.eclipse.jpt.jpa.core.context.persistence.PersistenceUnitTransactionType; -import org.eclipse.jpt.jpa.core.jpa2.context.persistence.connection.JpaConnection2_0; -import org.eclipse.jpt.jpa.ui.internal.JpaHelpContextIds; -import org.eclipse.jpt.jpa.ui.internal.jpa2.persistence.JptUiPersistence2_0Messages; -import org.eclipse.swt.widgets.Composite; - -/** - * TransactionTypeComposite - */ -public class TransactionTypeComposite extends Pane<JpaConnection2_0> -{ - /** - * Creates a new <code>TransactionTypeComposite</code>. - * - * @param parentController - * The parent container of this one - * @param parent - * The parent container - */ - public TransactionTypeComposite( - Pane<? extends JpaConnection2_0> parentComposite, - Composite parent) { - - super( parentComposite, parent); - } - - private EnumFormComboViewer<PersistenceUnit, PersistenceUnitTransactionType> buildTransactionTypeCombo(Composite container) { - - return new EnumFormComboViewer<PersistenceUnit, PersistenceUnitTransactionType>(this, - this.buildPersistenceUnitHolder(), - container) { - @Override - protected void addPropertyNames(Collection<String> propertyNames) { - super.addPropertyNames(propertyNames); - propertyNames.add(PersistenceUnit.SPECIFIED_TRANSACTION_TYPE_PROPERTY); - propertyNames.add(PersistenceUnit.DEFAULT_TRANSACTION_TYPE_PROPERTY); - } - - @Override - protected PersistenceUnitTransactionType[] getChoices() { - return PersistenceUnitTransactionType.values(); - } - - @Override - protected PersistenceUnitTransactionType getDefaultValue() { - return this.getSubject().getDefaultTransactionType(); - } - - @Override - protected String displayString(PersistenceUnitTransactionType value) { - switch (value) { - case JTA : - return JptUiPersistence2_0Messages.TransactionTypeComposite_jta; - case RESOURCE_LOCAL : - return JptUiPersistence2_0Messages.TransactionTypeComposite_resource_local; - default : - throw new IllegalStateException(); - } - } - - @Override - protected PersistenceUnitTransactionType getValue() { - return this.getSubject().getSpecifiedTransactionType(); - } - - @Override - protected void setValue(PersistenceUnitTransactionType value) { - this.getSubject().setSpecifiedTransactionType(value); - - if (value == PersistenceUnitTransactionType.RESOURCE_LOCAL) { - clearJTAProperties(); - } - else { - clearResourceLocalProperties(); - } - } - }; - } - - private PropertyValueModel<PersistenceUnit> buildPersistenceUnitHolder() { - return new PropertyAspectAdapter<JpaConnection2_0, PersistenceUnit>(this.getSubjectHolder()) { - @Override - protected PersistenceUnit buildValue_() { - return this.subject.getPersistenceUnit(); - } - }; - } - - private void clearJTAProperties() { - this.getSubject().getPersistenceUnit().setJtaDataSource(null); - } - - private void clearResourceLocalProperties() { - JpaConnection2_0 connection = this.getSubject(); - connection.getPersistenceUnit().setNonJtaDataSource(null); - connection.setDriver(null); - connection.setUrl(null); - connection.setUser(null); - connection.setPassword(null); - } - - @Override - protected void initializeLayout( Composite container) { - - this.addLabeledComposite( - container, - JptUiPersistence2_0Messages.TransactionTypeComposite_transactionTypeLabel, - this.buildTransactionTypeCombo( container), - JpaHelpContextIds.PERSISTENCE_XML_CONNECTION // TODO - Review for JPA 2.0 - ); - } -} diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/persistence/options/GenericPersistenceUnit2_0OptionsComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/persistence/options/GenericPersistenceUnit2_0OptionsComposite.java deleted file mode 100644 index dc2b64a91d..0000000000 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/persistence/options/GenericPersistenceUnit2_0OptionsComposite.java +++ /dev/null @@ -1,63 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2009, 2010 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.jpa.ui.internal.jpa2.persistence.options; - -import org.eclipse.jpt.common.ui.internal.widgets.Pane; -import org.eclipse.jpt.jpa.core.jpa2.context.persistence.options.JpaOptions2_0; -import org.eclipse.jpt.jpa.ui.internal.jpa2.persistence.JptUiPersistence2_0Messages; -import org.eclipse.swt.SWT; -import org.eclipse.swt.layout.GridData; -import org.eclipse.swt.widgets.Composite; - -/** - * GenericPersistenceUnit2_0OptionsComposite - */ -public class GenericPersistenceUnit2_0OptionsComposite extends Pane<JpaOptions2_0> -{ - public GenericPersistenceUnit2_0OptionsComposite( - Pane<JpaOptions2_0> subjectHolder, - Composite parent) { - - super(subjectHolder, parent, false); - } - - @Override - protected void initializeLayout(Composite parent) { - this.initializeMiscellaneousPane(parent); - } - - private void initializeMiscellaneousPane(Composite container) { - - this.updateGridData(container); - this.updateGridData(container.getParent()); - - Composite composite = this.addSection(container, - JptUiPersistence2_0Messages.GenericPersistenceUnit2_0OptionsComposite_miscellaneousSectionTitle, - JptUiPersistence2_0Messages.GenericPersistenceUnit2_0OptionsComposite_miscellaneousSectionDescription); - - this.updateGridData(composite); - this.updateGridData(composite.getParent()); - - new LockingConfigurationComposite(this, composite); - new QueryConfigurationComposite(this, composite); - new ValidationConfigurationComposite(this, composite); - - } - - private void updateGridData(Composite container) { - GridData gridData = new GridData(); - gridData.grabExcessHorizontalSpace = true; - gridData.grabExcessVerticalSpace = true; - gridData.horizontalAlignment = SWT.FILL; - gridData.verticalAlignment = SWT.FILL; - container.setLayoutData(gridData); - } - -} diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/persistence/options/GenericPersistenceUnit2_0OptionsTab.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/persistence/options/GenericPersistenceUnit2_0OptionsTab.java deleted file mode 100644 index 955837017c..0000000000 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/persistence/options/GenericPersistenceUnit2_0OptionsTab.java +++ /dev/null @@ -1,90 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2009, 2010 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.jpa.ui.internal.jpa2.persistence.options; - -import org.eclipse.jface.resource.ImageDescriptor; -import org.eclipse.jpt.common.ui.WidgetFactory; -import org.eclipse.jpt.common.ui.internal.widgets.Pane; -import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; -import org.eclipse.jpt.jpa.core.jpa2.context.persistence.options.JpaOptions2_0; -import org.eclipse.jpt.jpa.ui.details.JpaPageComposite; -import org.eclipse.jpt.jpa.ui.internal.jpa2.persistence.JptUiPersistence2_0Messages; -import org.eclipse.swt.SWT; -import org.eclipse.swt.layout.GridData; -import org.eclipse.swt.layout.GridLayout; -import org.eclipse.swt.widgets.Composite; - -/** - * GenericPersistenceUnit2_0OptionsTab - */ -public class GenericPersistenceUnit2_0OptionsTab extends Pane<JpaOptions2_0> - implements JpaPageComposite -{ - // ********** constructors/initialization ********** - /** - * Creates a new <code>GenericPersistenceUnit2_0OptionsTab</code>. - * - * @param subjectHolder The holder of this pane's subject - * @param parent The parent container - * @param widgetFactory The factory used to create various common widgets - */ - public GenericPersistenceUnit2_0OptionsTab( - PropertyValueModel<JpaOptions2_0> subjectHolder, - Composite parent, - WidgetFactory widgetFactory) { - - super(subjectHolder, parent, widgetFactory); - } - - @Override - protected void initializeLayout(Composite parent) { - new GenericPersistenceUnit2_0OptionsComposite(this, parent); - - } - - // ********** Layout ********** - @Override - protected Composite addContainer(Composite parent) { - GridLayout layout = new GridLayout(1, true); - layout.marginHeight = 0; - layout.marginWidth = 0; - layout.marginTop = 0; - layout.marginLeft = 0; - layout.marginBottom = 0; - layout.marginRight = 0; - layout.verticalSpacing = 15; - Composite container = this.addPane(parent, layout); - updateGridData(container); - return container; - } - - private void updateGridData(Composite container) { - GridData gridData = new GridData(); - gridData.grabExcessHorizontalSpace = true; - gridData.grabExcessVerticalSpace = true; - gridData.horizontalAlignment = SWT.FILL; - gridData.verticalAlignment = SWT.FILL; - container.setLayoutData(gridData); - } - - // ********** JpaPageComposite implementation ********** - - public String getHelpID() { - return null; // TODO - Review for JPA 2.0 - } - - public ImageDescriptor getPageImageDescriptor() { - return null; - } - - public String getPageText() { - return JptUiPersistence2_0Messages.GenericPersistenceUnit2_0OptionsTab_title; - } -} diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/persistence/options/LockingConfigurationComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/persistence/options/LockingConfigurationComposite.java deleted file mode 100644 index 80007d4cf7..0000000000 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/persistence/options/LockingConfigurationComposite.java +++ /dev/null @@ -1,85 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2009, 2012 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.jpa.ui.internal.jpa2.persistence.options; - -import org.eclipse.jpt.common.ui.internal.widgets.IntegerCombo; -import org.eclipse.jpt.common.ui.internal.widgets.Pane; -import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter; -import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; -import org.eclipse.jpt.common.utility.model.value.ModifiablePropertyValueModel; -import org.eclipse.jpt.jpa.core.jpa2.context.persistence.options.JpaOptions2_0; -import org.eclipse.jpt.jpa.ui.internal.jpa2.persistence.JptUiPersistence2_0Messages; -import org.eclipse.swt.widgets.Composite; - -/** - * LockingConfigurationComposite - */ -public class LockingConfigurationComposite extends Pane<JpaOptions2_0> -{ - /** - * Creates a new <code>LockingConfigurationComposite</code>. - * - * @param parentController - * The parent container of this one - * @param parent - * The parent container - */ - public LockingConfigurationComposite( - Pane<? extends JpaOptions2_0> parentComposite, - Composite parent) { - - super(parentComposite, parent); - } - - @Override - protected void initializeLayout(Composite parent) { - this.addLockTimeoutCombo(parent); - } - - private void addLockTimeoutCombo(Composite parent) { - new IntegerCombo<JpaOptions2_0>(this, parent) { - - @Override - protected String getLabelText() { - return JptUiPersistence2_0Messages.LockingConfigurationComposite_lockTimeoutLabel; - } - - @Override - protected String getHelpId() { - return null; // TODO - } - - @Override - protected PropertyValueModel<Integer> buildDefaultHolder() { - return new PropertyAspectAdapter<JpaOptions2_0, Integer>(this.getSubjectHolder()) { - @Override - protected Integer buildValue_() { - return this.subject.getDefaultLockTimeout(); - } - }; - } - - @Override - protected ModifiablePropertyValueModel<Integer> buildSelectedItemHolder() { - return new PropertyAspectAdapter<JpaOptions2_0, Integer>(this.getSubjectHolder(), JpaOptions2_0.LOCK_TIMEOUT_PROPERTY) { - @Override - protected Integer buildValue_() { - return this.subject.getLockTimeout(); - } - - @Override - protected void setValue_(Integer value) { - this.subject.setLockTimeout(value); - } - }; - } - }; - } -}
\ No newline at end of file diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/persistence/options/QueryConfigurationComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/persistence/options/QueryConfigurationComposite.java deleted file mode 100644 index 35cbe35395..0000000000 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/persistence/options/QueryConfigurationComposite.java +++ /dev/null @@ -1,85 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2009, 2012 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.jpa.ui.internal.jpa2.persistence.options; - -import org.eclipse.jpt.common.ui.internal.widgets.IntegerCombo; -import org.eclipse.jpt.common.ui.internal.widgets.Pane; -import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter; -import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; -import org.eclipse.jpt.common.utility.model.value.ModifiablePropertyValueModel; -import org.eclipse.jpt.jpa.core.jpa2.context.persistence.options.JpaOptions2_0; -import org.eclipse.jpt.jpa.ui.internal.jpa2.persistence.JptUiPersistence2_0Messages; -import org.eclipse.swt.widgets.Composite; - -/** - * QueryConfigurationComposite - */ -public class QueryConfigurationComposite extends Pane<JpaOptions2_0> -{ - /** - * Creates a new <code>QueryConfigurationComposite</code>. - * - * @param parentController - * The parent container of this one - * @param parent - * The parent container - */ - public QueryConfigurationComposite( - Pane<? extends JpaOptions2_0> parentComposite, - Composite parent) { - - super(parentComposite, parent); - } - - @Override - protected void initializeLayout(Composite parent) { - this.addQueryTimeoutCombo(parent); - } - - private void addQueryTimeoutCombo(Composite parent) { - new IntegerCombo<JpaOptions2_0>(this, parent) { - - @Override - protected String getLabelText() { - return JptUiPersistence2_0Messages.QueryConfigurationComposite_queryTimeoutLabel; - } - - @Override - protected String getHelpId() { - return null; // TODO - } - - @Override - protected PropertyValueModel<Integer> buildDefaultHolder() { - return new PropertyAspectAdapter<JpaOptions2_0, Integer>(this.getSubjectHolder()) { - @Override - protected Integer buildValue_() { - return this.subject.getDefaultQueryTimeout(); - } - }; - } - - @Override - protected ModifiablePropertyValueModel<Integer> buildSelectedItemHolder() { - return new PropertyAspectAdapter<JpaOptions2_0, Integer>(this.getSubjectHolder(), JpaOptions2_0.QUERY_TIMEOUT_PROPERTY) { - @Override - protected Integer buildValue_() { - return this.subject.getQueryTimeout(); - } - - @Override - protected void setValue_(Integer value) { - this.subject.setQueryTimeout(value); - } - }; - } - }; - } -}
\ No newline at end of file diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/persistence/options/SharedCacheModeComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/persistence/options/SharedCacheModeComposite.java deleted file mode 100644 index 23a2314cf8..0000000000 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/persistence/options/SharedCacheModeComposite.java +++ /dev/null @@ -1,107 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2009, 2012 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.jpa.ui.internal.jpa2.persistence.options; - -import java.util.Collection; - -import org.eclipse.jpt.common.ui.internal.widgets.EnumFormComboViewer; -import org.eclipse.jpt.common.ui.internal.widgets.Pane; -import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; -import org.eclipse.jpt.jpa.core.jpa2.context.persistence.PersistenceUnit2_0; -import org.eclipse.jpt.jpa.core.jpa2.context.persistence.options.SharedCacheMode; -import org.eclipse.jpt.jpa.ui.internal.jpa2.persistence.JptUiPersistence2_0Messages; -import org.eclipse.swt.widgets.Composite; - -/** - * SharedCacheModeComposite - */ -public class SharedCacheModeComposite extends Pane<PersistenceUnit2_0> -{ - /** - * Creates a new <code>SharedCacheModeComposite</code>. - * - * @param parentController - * The parent container of this one - * @param parent - * The parent container - */ - public SharedCacheModeComposite( - Pane<?> parentPane, - PropertyValueModel<? extends PersistenceUnit2_0> subjectHolder, - Composite parent) { - - super(parentPane, subjectHolder, parent); - } - - @Override - protected void initializeLayout(Composite parent) { - - this.addLabeledComposite( - parent, - JptUiPersistence2_0Messages.SharedCacheModeComposite_sharedCacheModeLabel, - this.addSharedCacheModeCombo(parent), - null // TODO - ); - } - - private EnumFormComboViewer<PersistenceUnit2_0, SharedCacheMode> addSharedCacheModeCombo(Composite parent) { - - return new EnumFormComboViewer<PersistenceUnit2_0, SharedCacheMode>(this, this.getSubjectHolder(), parent) { - @Override - protected void addPropertyNames(Collection<String> propertyNames) { - super.addPropertyNames(propertyNames); - propertyNames.add(PersistenceUnit2_0.SPECIFIED_SHARED_CACHE_MODE_PROPERTY); - } - - @Override - protected SharedCacheMode[] getChoices() { - return SharedCacheMode.values(); - } - - @Override - protected boolean sortChoices() { - return false; - } - - @Override - protected SharedCacheMode getDefaultValue() { - return this.getSubject().getDefaultSharedCacheMode(); - } - - @Override - protected String displayString(SharedCacheMode value) { - switch (value) { - case ALL : - return JptUiPersistence2_0Messages.SharedCacheModeComposite_all; - case DISABLE_SELECTIVE : - return JptUiPersistence2_0Messages.SharedCacheModeComposite_disable_selective; - case ENABLE_SELECTIVE : - return JptUiPersistence2_0Messages.SharedCacheModeComposite_enable_selective; - case NONE : - return JptUiPersistence2_0Messages.SharedCacheModeComposite_none; - case UNSPECIFIED : - return JptUiPersistence2_0Messages.SharedCacheModeComposite_unspecified; - default : - throw new IllegalStateException(); - } - } - - @Override - protected SharedCacheMode getValue() { - return this.getSubject().getSpecifiedSharedCacheMode(); - } - - @Override - protected void setValue(SharedCacheMode value) { - this.getSubject().setSpecifiedSharedCacheMode(value); - } - }; - } -} diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/persistence/options/ValidationConfigurationComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/persistence/options/ValidationConfigurationComposite.java deleted file mode 100644 index 34f198a778..0000000000 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/persistence/options/ValidationConfigurationComposite.java +++ /dev/null @@ -1,384 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2009, 2012 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.jpa.ui.internal.jpa2.persistence.options; - -import org.eclipse.jdt.core.IJavaElement; -import org.eclipse.jdt.core.IJavaProject; -import org.eclipse.jdt.core.IType; -import org.eclipse.jdt.core.JavaModelException; -import org.eclipse.jdt.core.search.IJavaSearchScope; -import org.eclipse.jdt.core.search.SearchEngine; -import org.eclipse.jdt.ui.IJavaElementSearchConstants; -import org.eclipse.jdt.ui.JavaUI; -import org.eclipse.jface.viewers.ILabelProvider; -import org.eclipse.jface.viewers.LabelProvider; -import org.eclipse.jface.window.Window; -import org.eclipse.jpt.common.ui.internal.JptCommonUiMessages; -import org.eclipse.jpt.common.ui.internal.widgets.AddRemoveListPane; -import org.eclipse.jpt.common.ui.internal.widgets.Pane; -import org.eclipse.jpt.common.ui.internal.widgets.AddRemovePane.Adapter; -import org.eclipse.jpt.common.utility.internal.iterables.ListIterable; -import org.eclipse.jpt.common.utility.internal.model.value.ListAspectAdapter; -import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter; -import org.eclipse.jpt.common.utility.internal.model.value.SimplePropertyValueModel; -import org.eclipse.jpt.common.utility.internal.model.value.swing.ObjectListSelectionModel; -import org.eclipse.jpt.common.utility.model.value.ListValueModel; -import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; -import org.eclipse.jpt.common.utility.model.value.ModifiablePropertyValueModel; -import org.eclipse.jpt.jpa.core.jpa2.context.persistence.PersistenceUnit2_0; -import org.eclipse.jpt.jpa.core.jpa2.context.persistence.options.JpaOptions2_0; -import org.eclipse.jpt.jpa.ui.JptJpaUiPlugin; -import org.eclipse.jpt.jpa.ui.internal.jpa2.persistence.JptUiPersistence2_0Messages; -import org.eclipse.swt.layout.GridData; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Table; -import org.eclipse.ui.PlatformUI; -import org.eclipse.ui.dialogs.SelectionDialog; -import org.eclipse.ui.progress.IProgressService; - -/** - * ValidationConfigurationComposite - */ -public class ValidationConfigurationComposite extends Pane<JpaOptions2_0> -{ - /** - * Creates a new <code>ValidationGroupComposite</code>. - * - * @param parentController - * The parent container of this one - * @param parent - * The parent container - */ - public ValidationConfigurationComposite( - Pane<? extends JpaOptions2_0> parentComposite, - Composite parent) { - - super(parentComposite, parent); - } - - @Override - protected void initializeLayout(Composite parent) { - - // SharedCacheMode - new SharedCacheModeComposite(this, this.buildPersistenceUnit2_0Holder(), parent); - - // ValidationMode - new ValidationModeComposite(this, this.buildPersistenceUnit2_0Holder(), parent); - - // ValidationGroupPrePersist - this.addGroupPrePersistListPane(parent); - - // ValidationGroupPreUpdate - this.addGroupPreUpdateListPane(parent); - - // ValidationGroupPreRemove - this.addGroupPreRemoveListPane(parent); - } - - // ********** ValidationGroupPrePersists ********** - - private void addGroupPrePersistListPane(Composite parent) { - - this.addLabeledComposite(parent, - JptUiPersistence2_0Messages.ValidationConfigurationComposite_groupPrePersistLabel, - this.addPrePersistListPane(parent), - null // TODO Help - ); - } - - private AddRemoveListPane<JpaOptions2_0> addPrePersistListPane(Composite parent) { - - // List pane - AddRemoveListPane<JpaOptions2_0> listPane = new AddRemoveListPane<JpaOptions2_0>( - this, - parent, - this.buildPrePersistAdapter(), - this.buildPrePersistListHolder(), - this.buildSelectedItemHolder(), - this.buildLabelProvider() - ) - { - @Override - protected void initializeTable(Table table) { - super.initializeTable(table); - - Composite container = table.getParent(); - GridData gridData = (GridData) container.getLayoutData(); - gridData.heightHint = 75; - } - }; - return listPane; - } - - private Adapter buildPrePersistAdapter() { - return new AddRemoveListPane.AbstractAdapter() { - public void addNewItem(ObjectListSelectionModel listSelectionModel) { - addPrePersistClass(listSelectionModel); - } - - public void removeSelectedItems(ObjectListSelectionModel listSelectionModel) { - for (Object item : listSelectionModel.selectedValues()) { - getSubject().removeValidationGroupPrePersist((String) item); - } - } - }; - } - - private ListValueModel<String> buildPrePersistListHolder() { - return new ListAspectAdapter<JpaOptions2_0, String>(getSubjectHolder(), JpaOptions2_0.VALIDATION_GROUP_PRE_PERSIST_LIST) { - @Override - protected ListIterable<String> getListIterable() { - return subject.getValidationGroupPrePersists(); - } - - @Override - protected int size_() { - return subject.getValidationGroupPrePersistsSize(); - } - }; - } - - private void addPrePersistClass(ObjectListSelectionModel listSelectionModel) { - - IType type = this.chooseType(); - - if (type != null) { - String className = type.getFullyQualifiedName('$'); - if( ! this.getSubject().validationGroupPrePersistExists(className)) { - - String classRef = this.getSubject().addValidationGroupPrePersist(className); - listSelectionModel.setSelectedValue(classRef); - } - } - } - - // ********** ValidationGroupPreUpdates ********** - - private void addGroupPreUpdateListPane(Composite parent) { - - this.addLabeledComposite(parent, - JptUiPersistence2_0Messages.ValidationConfigurationComposite_groupPreUpdateLabel, - this.addPreUpdateListPane(parent), - null // TODO Help - ); - } - - private AddRemoveListPane<JpaOptions2_0> addPreUpdateListPane(Composite parent) { - - // List pane - AddRemoveListPane<JpaOptions2_0> listPane = new AddRemoveListPane<JpaOptions2_0>( - this, - parent, - this.buildPreUpdateAdapter(), - this.buildPreUpdateListHolder(), - this.buildSelectedItemHolder(), - this.buildLabelProvider() - ) - { - @Override - protected void initializeTable(Table table) { - super.initializeTable(table); - - Composite container = table.getParent(); - GridData gridData = (GridData) container.getLayoutData(); - gridData.heightHint = 75; - } - }; - return listPane; - } - - private Adapter buildPreUpdateAdapter() { - return new AddRemoveListPane.AbstractAdapter() { - public void addNewItem(ObjectListSelectionModel listSelectionModel) { - addPreUpdateClass(listSelectionModel); - } - - public void removeSelectedItems(ObjectListSelectionModel listSelectionModel) { - for (Object item : listSelectionModel.selectedValues()) { - getSubject().removeValidationGroupPreUpdate((String) item); - } - } - }; - } - - private ListValueModel<String> buildPreUpdateListHolder() { - return new ListAspectAdapter<JpaOptions2_0, String>(getSubjectHolder(), JpaOptions2_0.VALIDATION_GROUP_PRE_UPDATE_LIST) { - @Override - protected ListIterable<String> getListIterable() { - return subject.getValidationGroupPreUpdates(); - } - - @Override - protected int size_() { - return subject.getValidationGroupPreUpdatesSize(); - } - }; - } - - private void addPreUpdateClass(ObjectListSelectionModel listSelectionModel) { - - IType type = this.chooseType(); - - if (type != null) { - String className = type.getFullyQualifiedName('$'); - if( ! this.getSubject().validationGroupPreUpdateExists(className)) { - - String classRef = this.getSubject().addValidationGroupPreUpdate(className); - listSelectionModel.setSelectedValue(classRef); - } - } - } - - // ********** ValidationGroupPreRemoves ********** - - private void addGroupPreRemoveListPane(Composite parent) { - - this.addLabeledComposite(parent, - JptUiPersistence2_0Messages.ValidationConfigurationComposite_groupPreRemoveLabel, - this.addPreRemoveListPane(parent), - null // TODO Help - ); - } - - private AddRemoveListPane<JpaOptions2_0> addPreRemoveListPane(Composite parent) { - - // List pane - AddRemoveListPane<JpaOptions2_0> listPane = new AddRemoveListPane<JpaOptions2_0>( - this, - parent, - this.buildPreRemoveAdapter(), - this.buildPreRemoveListHolder(), - this.buildSelectedItemHolder(), - this.buildLabelProvider() - ) - { - @Override - protected void initializeTable(Table table) { - super.initializeTable(table); - - Composite container = table.getParent(); - GridData gridData = (GridData) container.getLayoutData(); - gridData.heightHint = 75; - } - }; - return listPane; - } - - private Adapter buildPreRemoveAdapter() { - return new AddRemoveListPane.AbstractAdapter() { - public void addNewItem(ObjectListSelectionModel listSelectionModel) { - addPreRemoveClass(listSelectionModel); - } - - public void removeSelectedItems(ObjectListSelectionModel listSelectionModel) { - for (Object item : listSelectionModel.selectedValues()) { - getSubject().removeValidationGroupPreRemove((String) item); - } - } - }; - } - - private ListValueModel<String> buildPreRemoveListHolder() { - return new ListAspectAdapter<JpaOptions2_0, String>(getSubjectHolder(), JpaOptions2_0.VALIDATION_GROUP_PRE_REMOVE_LIST) { - @Override - protected ListIterable<String> getListIterable() { - return subject.getValidationGroupPreRemoves(); - } - - @Override - protected int size_() { - return subject.getValidationGroupPreRemovesSize(); - } - }; - } - - private void addPreRemoveClass(ObjectListSelectionModel listSelectionModel) { - - IType type = this.chooseType(); - - if (type != null) { - String className = type.getFullyQualifiedName('$'); - if( ! this.getSubject().validationGroupPreRemoveExists(className)) { - - String classRef = this.getSubject().addValidationGroupPreRemove(className); - listSelectionModel.setSelectedValue(classRef); - } - } - } - - - // ********** Private methods ********** - - private PropertyValueModel<PersistenceUnit2_0> buildPersistenceUnit2_0Holder() { - return new PropertyAspectAdapter<JpaOptions2_0, PersistenceUnit2_0>(this.getSubjectHolder()) { - @Override - protected PersistenceUnit2_0 buildValue_() { - return (PersistenceUnit2_0) this.subject.getPersistenceUnit(); - } - }; - } - - private ILabelProvider buildLabelProvider() { - return new LabelProvider() { - - @Override - public String getText(Object element) { - String name = (String) element; - - if (name == null) { - name = JptUiPersistence2_0Messages.GenericPersistenceUnit2_0OptionsTab_noName; - } - return name; - } - }; - } - - /** - * Prompts the user the Open Type dialog. - * - * @return Either the selected type or <code>null</code> if the user - * canceled the dialog - */ - private IType chooseType() { - IJavaProject javaProject = this.getSubject().getJpaProject().getJavaProject(); - IJavaElement[] elements = new IJavaElement[] { javaProject }; - IJavaSearchScope scope = SearchEngine.createJavaSearchScope(elements); - IProgressService service = PlatformUI.getWorkbench().getProgressService(); - SelectionDialog typeSelectionDialog; - - try { - typeSelectionDialog = JavaUI.createTypeDialog( - getShell(), - service, - scope, - IJavaElementSearchConstants.CONSIDER_CLASSES, - false, - "" - ); - } - catch (JavaModelException e) { - JptJpaUiPlugin.log(e); - return null; - } - - typeSelectionDialog.setTitle(JptCommonUiMessages.ClassChooserPane_dialogTitle); - typeSelectionDialog.setMessage(JptCommonUiMessages.ClassChooserPane_dialogMessage); - - if (typeSelectionDialog.open() == Window.OK) { - return (IType) typeSelectionDialog.getResult()[0]; - } - - return null; - } - - private ModifiablePropertyValueModel<String> buildSelectedItemHolder() { - return new SimplePropertyValueModel<String>(); - } -}
\ No newline at end of file diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/persistence/options/ValidationModeComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/persistence/options/ValidationModeComposite.java deleted file mode 100644 index 3215d4448e..0000000000 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/jpa2/persistence/options/ValidationModeComposite.java +++ /dev/null @@ -1,103 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2009, 2012 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.jpa.ui.internal.jpa2.persistence.options; - -import java.util.Collection; - -import org.eclipse.jpt.common.ui.internal.widgets.EnumFormComboViewer; -import org.eclipse.jpt.common.ui.internal.widgets.Pane; -import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; -import org.eclipse.jpt.jpa.core.jpa2.context.persistence.PersistenceUnit2_0; -import org.eclipse.jpt.jpa.core.jpa2.context.persistence.options.ValidationMode; -import org.eclipse.jpt.jpa.ui.internal.jpa2.persistence.JptUiPersistence2_0Messages; -import org.eclipse.swt.widgets.Composite; - -/** - * ValidationModeComposite - */ -public class ValidationModeComposite extends Pane<PersistenceUnit2_0> -{ - /** - * Creates a new <code>ValidationModeComposite</code>. - * - * @param parentController - * The parent container of this one - * @param parent - * The parent container - */ - public ValidationModeComposite( - Pane<?> parentPane, - PropertyValueModel<? extends PersistenceUnit2_0> subjectHolder, - Composite parent) { - - super(parentPane, subjectHolder, parent); - } - - @Override - protected void initializeLayout(Composite parent) { - - this.addLabeledComposite( - parent, - JptUiPersistence2_0Messages.ValidationModeComposite_validationModeLabel, - this.addValidationModeCombo(parent), - null // TODO - ); - } - - private EnumFormComboViewer<PersistenceUnit2_0, ValidationMode> addValidationModeCombo(Composite parent) { - - return new EnumFormComboViewer<PersistenceUnit2_0, ValidationMode>(this, this.getSubjectHolder(), parent) { - @Override - protected void addPropertyNames(Collection<String> propertyNames) { - super.addPropertyNames(propertyNames); - propertyNames.add(PersistenceUnit2_0.SPECIFIED_VALIDATION_MODE_PROPERTY); - } - - @Override - protected ValidationMode[] getChoices() { - return ValidationMode.values(); - } - - @Override - protected boolean sortChoices() { - return false; - } - - @Override - protected ValidationMode getDefaultValue() { - return this.getSubject().getDefaultValidationMode(); - } - - @Override - protected String displayString(ValidationMode value) { - switch (value) { - case AUTO : - return JptUiPersistence2_0Messages.ValidationModeComposite_auto; - case CALLBACK : - return JptUiPersistence2_0Messages.ValidationModeComposite_callback; - case NONE : - return JptUiPersistence2_0Messages.ValidationModeComposite_none; - default : - throw new IllegalStateException(); - } - } - - @Override - protected ValidationMode getValue() { - return this.getSubject().getSpecifiedValidationMode(); - } - - @Override - protected void setValue(ValidationMode value) { - this.getSubject().setSpecifiedValidationMode(value); - } - }; - } -} diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/persistence/details/AbstractPersistenceXmlResourceUiDefinition.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/persistence/AbstractPersistenceXmlResourceUiDefinition.java index 19ff3fffbc..16fe4c06e2 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/persistence/details/AbstractPersistenceXmlResourceUiDefinition.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/persistence/AbstractPersistenceXmlResourceUiDefinition.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2009 Oracle. All rights reserved. + * Copyright (c) 2009, 2012 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. @@ -7,7 +7,7 @@ * Contributors: * Oracle - initial API and implementation ******************************************************************************/ -package org.eclipse.jpt.jpa.ui.internal.persistence.details; +package org.eclipse.jpt.jpa.ui.internal.persistence; import java.util.ListIterator; import org.eclipse.jpt.common.ui.WidgetFactory; @@ -15,7 +15,7 @@ import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; import org.eclipse.jpt.jpa.core.context.persistence.PersistenceUnit; import org.eclipse.jpt.jpa.ui.PersistenceXmlResourceUiDefinition; import org.eclipse.jpt.jpa.ui.ResourceUiDefinition; -import org.eclipse.jpt.jpa.ui.details.JpaPageComposite; +import org.eclipse.jpt.jpa.ui.editors.JpaPageComposite; import org.eclipse.swt.widgets.Composite; /** diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/persistence/details/ArchiveFileSelectionDialog.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/persistence/ArchiveFileSelectionDialog.java index c24be8ae51..ab2170d652 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/persistence/details/ArchiveFileSelectionDialog.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/persistence/ArchiveFileSelectionDialog.java @@ -7,7 +7,7 @@ * Contributors: * Oracle - initial API and implementation ******************************************************************************/ -package org.eclipse.jpt.jpa.ui.internal.persistence.details; +package org.eclipse.jpt.jpa.ui.internal.persistence; import java.util.Collections; @@ -28,7 +28,6 @@ import org.eclipse.jpt.common.utility.internal.model.value.SimplePropertyValueMo import org.eclipse.jpt.common.utility.model.value.ModifiablePropertyValueModel; import org.eclipse.jpt.jpa.core.JptJpaCorePlugin; import org.eclipse.jpt.jpa.ui.JptJpaUiPlugin; -import org.eclipse.jpt.jpa.ui.internal.persistence.JptUiPersistenceMessages; import org.eclipse.swt.SWT; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/persistence/details/GenericPersistenceUnitGeneralComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/persistence/GenericPersistenceUnitGeneralTab.java index 5c25dab4de..40aa6b4eb3 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/persistence/details/GenericPersistenceUnitGeneralComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/persistence/GenericPersistenceUnitGeneralTab.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2008, 2009 Oracle. All rights reserved. + * Copyright (c) 2008, 2012 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. @@ -7,13 +7,12 @@ * Contributors: * Oracle - initial API and implementation ******************************************************************************/ -package org.eclipse.jpt.jpa.ui.internal.persistence.details; +package org.eclipse.jpt.jpa.ui.internal.persistence; import org.eclipse.jpt.common.ui.WidgetFactory; import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; import org.eclipse.jpt.jpa.core.context.persistence.PersistenceUnit; -import org.eclipse.jpt.jpa.ui.details.JpaPageComposite; -import org.eclipse.jpt.jpa.ui.internal.persistence.JptUiPersistenceMessages; +import org.eclipse.jpt.jpa.ui.editors.JpaPageComposite; import org.eclipse.swt.widgets.Composite; /** @@ -53,6 +52,7 @@ import org.eclipse.swt.widgets.Composite; * -----------------------------------------------------------------------------</pre> * * @see PersistenceUnit + * @see PersistenceUnitGeneralComposite * @see PersistenceUnitJarFilesComposite * @see PersistenceUnitMappedClassesComposite * @see PersistenceUnitMappingFilesComposite @@ -60,7 +60,7 @@ import org.eclipse.swt.widgets.Composite; * @version 2.0 * @since 2.0 */ -public class GenericPersistenceUnitGeneralComposite extends PersistenceUnitGeneralComposite +public class GenericPersistenceUnitGeneralTab extends PersistenceUnitGeneralTab implements JpaPageComposite { /** @@ -70,47 +70,10 @@ public class GenericPersistenceUnitGeneralComposite extends PersistenceUnitGener * @param parent The parent container * @param widgetFactory The factory used to create various common widgets */ - public GenericPersistenceUnitGeneralComposite(PropertyValueModel<PersistenceUnit> subjectHolder, + public GenericPersistenceUnitGeneralTab(PropertyValueModel<PersistenceUnit> subjectHolder, Composite container, WidgetFactory widgetFactory) { super(subjectHolder, container, widgetFactory); } - - @Override - protected void initializeLayout(Composite container) { - - initializeGeneralPane(container); - initializeMappedClassesPane(container); - initializeJPAMappingDescriptorsPane(container); - initializeJarFilesPane(container); - } - - - protected void initializeJPAMappingDescriptorsPane(Composite container) { - - container = addCollapsibleSection( - container, - JptUiPersistenceMessages.PersistenceUnitGeneralComposite_jpaMappingDescriptors, - JptUiPersistenceMessages.PersistenceUnitGeneralComposite_jpaMappingDescriptors_description - ); - - updateGridData(container); - updateGridData(container.getParent()); - - new GenericPersistenceUnitMappingFilesComposite(this, container); - } - - protected void initializeJarFilesPane(Composite container) { - - container = addCollapsibleSection( - container, - JptUiPersistenceMessages.PersistenceUnitGeneralComposite_jarFiles - ); - - updateGridData(container); - updateGridData(container.getParent()); - - new GenericPersistenceUnitJarFilesComposite(this, container); - } } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/persistence/details/GenericPersistenceUnitJarFilesComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/persistence/GenericPersistenceUnitJarFilesComposite.java index 7fde0e2c0f..a678ff97f2 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/persistence/details/GenericPersistenceUnitJarFilesComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/persistence/GenericPersistenceUnitJarFilesComposite.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2009 Oracle. + * Copyright (c) 2009, 2012 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 @@ -8,7 +8,7 @@ * Contributors: * Oracle - initial API and implementation *******************************************************************************/ -package org.eclipse.jpt.jpa.ui.internal.persistence.details; +package org.eclipse.jpt.jpa.ui.internal.persistence; import org.eclipse.jpt.common.ui.internal.widgets.Pane; import org.eclipse.jpt.jpa.core.context.persistence.PersistenceUnit; diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/persistence/details/GenericPersistenceUnitMappingFilesComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/persistence/GenericPersistenceUnitMappingFilesComposite.java index c99cbb4d4b..3a07ffc783 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/persistence/details/GenericPersistenceUnitMappingFilesComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/persistence/GenericPersistenceUnitMappingFilesComposite.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2008 Oracle. All rights reserved. + * Copyright (c) 2008, 2012 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. @@ -7,7 +7,7 @@ * Contributors: * Oracle - initial API and implementation ******************************************************************************/ -package org.eclipse.jpt.jpa.ui.internal.persistence.details; +package org.eclipse.jpt.jpa.ui.internal.persistence; import org.eclipse.jpt.common.ui.internal.widgets.Pane; import org.eclipse.jpt.jpa.core.context.persistence.PersistenceUnit; @@ -25,7 +25,7 @@ import org.eclipse.swt.widgets.Composite; * -----------------------------------------------------------------------------</pre> * * @see PersistenceUnit - * @see PersistenceUnitGeneralComposite - The parent container + * @see PersistenceUnitGeneralTab - The parent container * @see AddRemoveListPane * * @version 2.0 diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/persistence/details/GenericPersistenceXmlUiFactory.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/persistence/GenericPersistenceXmlUiFactory.java index 5a98afe62e..c57fc8c6b0 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/persistence/details/GenericPersistenceXmlUiFactory.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/persistence/GenericPersistenceXmlUiFactory.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2007, 2009 Oracle. All rights reserved. + * Copyright (c) 2007, 2012 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. @@ -7,14 +7,14 @@ * Contributors: * Oracle - initial API and implementation ******************************************************************************/ -package org.eclipse.jpt.jpa.ui.internal.persistence.details; +package org.eclipse.jpt.jpa.ui.internal.persistence; import java.util.ArrayList; import java.util.ListIterator; import org.eclipse.jpt.common.ui.WidgetFactory; import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; import org.eclipse.jpt.jpa.core.context.persistence.PersistenceUnit; -import org.eclipse.jpt.jpa.ui.details.JpaPageComposite; +import org.eclipse.jpt.jpa.ui.editors.JpaPageComposite; import org.eclipse.swt.widgets.Composite; public class GenericPersistenceXmlUiFactory implements PersistenceXmlUiFactory @@ -28,9 +28,9 @@ public class GenericPersistenceXmlUiFactory implements PersistenceXmlUiFactory ArrayList<JpaPageComposite> pages = new ArrayList<JpaPageComposite>(3); - pages.add(new GenericPersistenceUnitGeneralComposite(subjectHolder, parent, widgetFactory)); - pages.add(new PersistenceUnitConnectionComposite(subjectHolder, parent, widgetFactory)); - pages.add(new PersistenceUnitPropertiesComposite(subjectHolder, parent, widgetFactory)); + pages.add(new GenericPersistenceUnitGeneralTab(subjectHolder, parent, widgetFactory)); + pages.add(new PersistenceUnitConnectionTab(subjectHolder, parent, widgetFactory)); + pages.add(new PersistenceUnitPropertiesTab(subjectHolder, parent, widgetFactory)); return pages.listIterator(); } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/persistence/details/PersistenceUnitClassesComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/persistence/PersistenceUnitClassesComposite.java index d695344662..ae0f616427 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/persistence/details/PersistenceUnitClassesComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/persistence/PersistenceUnitClassesComposite.java @@ -7,7 +7,7 @@ * Contributors: * Oracle - initial API and implementation ******************************************************************************/ -package org.eclipse.jpt.jpa.ui.internal.persistence.details; +package org.eclipse.jpt.jpa.ui.internal.persistence; import org.eclipse.jdt.core.IJavaElement; import org.eclipse.jdt.core.IJavaProject; @@ -22,18 +22,21 @@ import org.eclipse.jface.viewers.LabelProvider; import org.eclipse.jface.window.Window; import org.eclipse.jpt.common.ui.internal.JptCommonUiMessages; import org.eclipse.jpt.common.ui.internal.widgets.AddRemoveListPane; +import org.eclipse.jpt.common.ui.internal.widgets.AddRemovePane; import org.eclipse.jpt.common.ui.internal.widgets.AddRemovePane.Adapter; import org.eclipse.jpt.common.ui.internal.widgets.Pane; import org.eclipse.jpt.common.utility.internal.iterables.ListIterable; +import org.eclipse.jpt.common.utility.internal.model.value.CollectionPropertyValueModelAdapter; import org.eclipse.jpt.common.utility.internal.model.value.ItemPropertyListValueModelAdapter; import org.eclipse.jpt.common.utility.internal.model.value.ListAspectAdapter; import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter; -import org.eclipse.jpt.common.utility.internal.model.value.SimplePropertyValueModel; +import org.eclipse.jpt.common.utility.internal.model.value.SimpleCollectionValueModel; import org.eclipse.jpt.common.utility.internal.model.value.TransformationPropertyValueModel; -import org.eclipse.jpt.common.utility.internal.model.value.swing.ObjectListSelectionModel; +import org.eclipse.jpt.common.utility.model.value.CollectionValueModel; import org.eclipse.jpt.common.utility.model.value.ListValueModel; -import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; +import org.eclipse.jpt.common.utility.model.value.ModifiableCollectionValueModel; import org.eclipse.jpt.common.utility.model.value.ModifiablePropertyValueModel; +import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; import org.eclipse.jpt.jpa.core.context.java.JavaPersistentType; import org.eclipse.jpt.jpa.core.context.persistence.ClassRef; import org.eclipse.jpt.jpa.core.context.persistence.PersistenceUnit; @@ -41,12 +44,9 @@ import org.eclipse.jpt.jpa.ui.JptJpaUiPlugin; import org.eclipse.jpt.jpa.ui.internal.JpaHelpContextIds; import org.eclipse.jpt.jpa.ui.internal.JpaMappingImageHelper; import org.eclipse.jpt.jpa.ui.internal.JptUiIcons; -import org.eclipse.jpt.jpa.ui.internal.persistence.JptUiPersistenceMessages; import org.eclipse.osgi.util.NLS; import org.eclipse.swt.graphics.Image; -import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Table; import org.eclipse.ui.PartInitException; import org.eclipse.ui.PlatformUI; import org.eclipse.ui.dialogs.SelectionDialog; @@ -70,7 +70,7 @@ import org.eclipse.ui.progress.IProgressService; * -----------------------------------------------------------------------------</pre> * * @see PersistenceUnit - * @see PersistenceUnitGeneralComposite - The parent container + * @see PersistenceUnitGeneralTab - The parent container * @see AddRemoveListPane * * @version 2.3 @@ -91,18 +91,41 @@ public class PersistenceUnitClassesComposite extends Pane<PersistenceUnit> super(parentPane, parent); } - private void addMappedClass(ObjectListSelectionModel listSelectionModel) { + @Override + protected void initializeLayout(Composite container) { + // List pane + new AddRemoveListPane<PersistenceUnit, ClassRef>( + this, + container, + this.buildAdapter(), + this.buildItemListHolder(), + this.buildSelectedItemsModel(), + this.buildLabelProvider(), + JpaHelpContextIds.PERSISTENCE_XML_GENERAL + ); + + this.addTriStateCheckBoxWithDefault( + container, + JptUiPersistenceMessages.PersistenceUnitClassesComposite_excludeUnlistedMappedClasses, + buildExcludeUnlistedMappedClassesHolder(), + buildExcludeUnlistedMappedClassesStringHolder(), + JpaHelpContextIds.PERSISTENCE_XML_GENERAL + ); + } + + + private ClassRef addMappedClass() { IType type = chooseType(); if (type != null) { String className = type.getFullyQualifiedName('$'); if(classRefExists(className)) { - return; + return null; } - ClassRef classRef = getSubject().addSpecifiedClassRef(className); - listSelectionModel.setSelectedValue(classRef); + return getSubject().addSpecifiedClassRef(className); } + return null; } private boolean classRefExists(String className) { @@ -114,19 +137,24 @@ public class PersistenceUnitClassesComposite extends Pane<PersistenceUnit> return false; } - private Adapter buildAdapter() { - return new AddRemoveListPane.AbstractAdapter() { - public void addNewItem(ObjectListSelectionModel listSelectionModel) { - addMappedClass(listSelectionModel); + private Adapter<ClassRef> buildAdapter() { + return new AddRemovePane.AbstractAdapter<ClassRef>() { + public ClassRef addNewItem() { + return addMappedClass(); } @Override - public boolean enableOptionOnSelectionChange(ObjectListSelectionModel listSelectionModel) { - if (!super.enableOptionOnSelectionChange(listSelectionModel)) { - return false; - } - - return findType((ClassRef) listSelectionModel.selectedValue()) != null; + public PropertyValueModel<Boolean> buildOptionalButtonEnabledModel(CollectionValueModel<ClassRef> selectedItemsModel) { + return new CollectionPropertyValueModelAdapter<Boolean, ClassRef>(selectedItemsModel) { + @Override + protected Boolean buildValue() { + if (this.collectionModel.size() == 1) { + ClassRef classRef = this.collectionModel.iterator().next(); + return Boolean.valueOf(findType(classRef) != null); + } + return Boolean.FALSE; + } + }; } @Override @@ -140,14 +168,12 @@ public class PersistenceUnitClassesComposite extends Pane<PersistenceUnit> } @Override - public void optionOnSelection(ObjectListSelectionModel listSelectionModel) { - openMappedClass((ClassRef) listSelectionModel.selectedValue()); + public void optionOnSelection(CollectionValueModel<ClassRef> selectedItemsModel) { + openMappedClass(selectedItemsModel.iterator().next()); } - public void removeSelectedItems(ObjectListSelectionModel listSelectionModel) { - for (Object item : listSelectionModel.selectedValues()) { - getSubject().removeSpecifiedClassRef((ClassRef) item); - } + public void removeSelectedItems(CollectionValueModel<ClassRef> selectedItemsModel) { + getSubject().removeSpecifiedClassRefs(selectedItemsModel); } }; } @@ -252,8 +278,8 @@ public class PersistenceUnitClassesComposite extends Pane<PersistenceUnit> }; } - private ModifiablePropertyValueModel<ClassRef> buildSelectedItemHolder() { - return new SimplePropertyValueModel<ClassRef>(); + private ModifiableCollectionValueModel<ClassRef> buildSelectedItemsModel() { + return new SimpleCollectionValueModel<ClassRef>(); } /** @@ -309,48 +335,6 @@ public class PersistenceUnitClassesComposite extends Pane<PersistenceUnit> return null; } - /* - * (non-Javadoc) - */ - @Override - protected void initializeLayout(Composite container) { - - // Description - addMultiLineLabel( - container, - JptUiPersistenceMessages.PersistenceUnitClassesComposite_description - ); - - // List pane - new AddRemoveListPane<PersistenceUnit>( - this, - container, - this.buildAdapter(), - this.buildItemListHolder(), - this.buildSelectedItemHolder(), - this.buildLabelProvider(), - JpaHelpContextIds.PERSISTENCE_XML_GENERAL - ) - { - @Override - protected void initializeTable(Table table) { - super.initializeTable(table); - - Composite container = table.getParent(); - GridData gridData = (GridData) container.getLayoutData(); - gridData.heightHint = 75; - } - }; - - this.addTriStateCheckBoxWithDefault( - container, - JptUiPersistenceMessages.PersistenceUnitClassesComposite_excludeUnlistedMappedClasses, - buildExcludeUnlistedMappedClassesHolder(), - buildExcludeUnlistedMappedClassesStringHolder(), - JpaHelpContextIds.PERSISTENCE_XML_GENERAL - ); - } - private void openMappedClass(ClassRef classRef) { IType type = findType(classRef); diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/persistence/PersistenceUnitConnectionTab.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/persistence/PersistenceUnitConnectionTab.java new file mode 100644 index 0000000000..0d43765bcf --- /dev/null +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/persistence/PersistenceUnitConnectionTab.java @@ -0,0 +1,250 @@ +/******************************************************************************* + * Copyright (c) 2008, 2012 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.jpa.ui.internal.persistence; + +import java.util.Collection; +import org.eclipse.jface.resource.ImageDescriptor; +import org.eclipse.jpt.common.ui.WidgetFactory; +import org.eclipse.jpt.common.ui.internal.widgets.EnumFormComboViewer; +import org.eclipse.jpt.common.ui.internal.widgets.Pane; +import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter; +import org.eclipse.jpt.common.utility.internal.model.value.TransformationPropertyValueModel; +import org.eclipse.jpt.common.utility.model.value.ModifiablePropertyValueModel; +import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; +import org.eclipse.jpt.jpa.core.context.persistence.PersistenceUnit; +import org.eclipse.jpt.jpa.core.context.persistence.PersistenceUnitTransactionType; +import org.eclipse.jpt.jpa.ui.editors.JpaPageComposite; +import org.eclipse.jpt.jpa.ui.internal.JpaHelpContextIds; +import org.eclipse.jpt.jpa.ui.internal.jpa2.persistence.JptUiPersistence2_0Messages; +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.layout.GridLayout; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Group; + +/** + * Here the layout of this pane: + * <pre> + * ----------------------------------------------------------------------------- + * | | + * | - General --------------------------------------------------------------- | + * | ------------------------------------------------------------------------- | + * | | | | + * | | PersistenceUnitConnectionGeneralComposite | | + * | | | | + * | ------------------------------------------------------------------------- | + * | | + * | - Database -------------------------------------------------------------- | + * | ------------------------------------------------------------------------- | + * | | | | + * | | PersistenceUnitConnectionDatabaseComposite | | + * | | | | + * | ------------------------------------------------------------------------- | + * -----------------------------------------------------------------------------</pre> + * + * @see PersistenceUnit + * @see PersistenceUnitConnectionGeneralComposite + * @see PersistenceUnitConnectionDatabaseComposite + * + * @version 2.0 + * @since 2.0 + */ +public class PersistenceUnitConnectionTab extends Pane<PersistenceUnit> + implements JpaPageComposite +{ + /** + * Creates a new <code>PersistenceUnitConnectionComposite</code>. + * + * @param subjectHolder The holder of this pane's subject + * @param parent The parent container + * @param widgetFactory The factory used to create various common widgets + */ + public PersistenceUnitConnectionTab(PropertyValueModel<PersistenceUnit> subjectHolder, + Composite container, + WidgetFactory widgetFactory) { + + super(subjectHolder, container, widgetFactory); + } + + public String getHelpID() { + return JpaHelpContextIds.PERSISTENCE_XML_CONNECTION; + } + + + public ImageDescriptor getPageImageDescriptor() { + return null; + } + + public String getPageText() { + return JptUiPersistenceMessages.PersistenceUnitConnectionComposite_connection; + } + + @Override + protected void initializeLayout(Composite container) { + container = this.addSection( + container, + JptUiPersistence2_0Messages.GenericPersistenceUnit2_0ConnectionComposite_sectionTitle, + JptUiPersistence2_0Messages.GenericPersistenceUnit2_0ConnectionComposite_sectionDescription + ); + container.setLayout(new GridLayout(2, false)); + + // Transaction Type widgets + this.addLabel(container, JptUiPersistenceMessages.PersistenceUnitConnectionGeneralComposite_transactionType); + this.buildTransactionTypeCombo(container).getControl(); + + Group databaseGroup = this.addTitledGroup(container, JptUiPersistenceMessages.PersistenceUnitConnectionComposite_database, 2, JpaHelpContextIds.PERSISTENCE_XML_CONNECTION); + GridData gridData = new GridData(GridData.FILL_BOTH); + gridData.horizontalSpan = 2; + databaseGroup.setLayoutData(gridData); + + // JTA Datasource Name widgets + PropertyValueModel<Boolean> enabled = this.buildJTADatasourceNameBooleanHolder(); + this.addLabel( + databaseGroup, + JptUiPersistenceMessages.PersistenceUnitConnectionDatabaseComposite_jtaDatasourceName, + enabled + ); + this.addText( + databaseGroup, + buildJTADatasourceNameHolder(), + JpaHelpContextIds.PERSISTENCE_XML_CONNECTION, + enabled + ); + + + // Non-JTA Datasource Name widgets + enabled = this.buildNonJTADatasourceNameBooleanHolder(); + this.addLabel( + databaseGroup, + JptUiPersistenceMessages.PersistenceUnitConnectionDatabaseComposite_nonJtaDatasourceName, + enabled + ); + this.addText( + databaseGroup, + buildNonJTADatasourceNameHolder(), + JpaHelpContextIds.PERSISTENCE_XML_CONNECTION, + enabled + ); + } + + private EnumFormComboViewer<PersistenceUnit, PersistenceUnitTransactionType> buildTransactionTypeCombo(Composite container) { + + return new EnumFormComboViewer<PersistenceUnit, PersistenceUnitTransactionType>(this, container) { + + @Override + protected void addPropertyNames(Collection<String> propertyNames) { + super.addPropertyNames(propertyNames); + propertyNames.add(PersistenceUnit.SPECIFIED_TRANSACTION_TYPE_PROPERTY); + propertyNames.add(PersistenceUnit.DEFAULT_TRANSACTION_TYPE_PROPERTY); + } + + @Override + protected PersistenceUnitTransactionType[] getChoices() { + return PersistenceUnitTransactionType.values(); + } + + @Override + protected PersistenceUnitTransactionType getDefaultValue() { + return getSubject().getDefaultTransactionType(); + } + + @Override + protected String displayString(PersistenceUnitTransactionType value) { + switch (value) { + case JTA : + return JptUiPersistenceMessages.PersistenceUnitConnectionGeneralComposite_jta; + case RESOURCE_LOCAL : + return JptUiPersistenceMessages.PersistenceUnitConnectionGeneralComposite_resource_local; + default : + throw new IllegalStateException(); + } + } + + @Override + protected PersistenceUnitTransactionType getValue() { + return getSubject().getSpecifiedTransactionType(); + } + + @Override + protected void setValue(PersistenceUnitTransactionType value) { + getSubject().setSpecifiedTransactionType(value); + } + + @Override + protected String getHelpId() { + return JpaHelpContextIds.PERSISTENCE_XML_CONNECTION; + } + }; + } + + private PropertyValueModel<Boolean> buildJTADatasourceNameBooleanHolder() { + return new TransformationPropertyValueModel<PersistenceUnitTransactionType, Boolean>(buildTransactionTypeHolder()) { + @Override + protected Boolean transform_(PersistenceUnitTransactionType value) { + return Boolean.valueOf(value == PersistenceUnitTransactionType.JTA); + } + }; + } + + private ModifiablePropertyValueModel<String> buildJTADatasourceNameHolder() { + return new PropertyAspectAdapter<PersistenceUnit, String>(getSubjectHolder(), PersistenceUnit.JTA_DATA_SOURCE_PROPERTY) { + @Override + protected String buildValue_() { + return subject.getJtaDataSource(); + } + + @Override + protected void setValue_(String value) { + if (value.length() == 0) { + value = null; + } + subject.setJtaDataSource(value); + } + }; + } + + private PropertyValueModel<Boolean> buildNonJTADatasourceNameBooleanHolder() { + return new TransformationPropertyValueModel<PersistenceUnitTransactionType, Boolean>(buildTransactionTypeHolder()) { + @Override + protected Boolean transform_(PersistenceUnitTransactionType value) { + return Boolean.valueOf(value == PersistenceUnitTransactionType.RESOURCE_LOCAL); + } + }; + } + + private ModifiablePropertyValueModel<String> buildNonJTADatasourceNameHolder() { + return new PropertyAspectAdapter<PersistenceUnit, String>(getSubjectHolder(), PersistenceUnit.NON_JTA_DATA_SOURCE_PROPERTY) { + @Override + protected String buildValue_() { + return subject.getNonJtaDataSource(); + } + + @Override + protected void setValue_(String value) { + if (value.length() == 0) { + value = null; + } + subject.setNonJtaDataSource(value); + } + }; + } + + private PropertyValueModel<PersistenceUnitTransactionType> buildTransactionTypeHolder() { + return new PropertyAspectAdapter<PersistenceUnit, PersistenceUnitTransactionType>( + getSubjectHolder(), + PersistenceUnit.DEFAULT_TRANSACTION_TYPE_PROPERTY, + PersistenceUnit.SPECIFIED_TRANSACTION_TYPE_PROPERTY) + { + @Override + protected PersistenceUnitTransactionType buildValue_() { + return subject.getTransactionType(); + } + }; + } +} diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/persistence/PersistenceUnitGeneralComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/persistence/PersistenceUnitGeneralComposite.java new file mode 100644 index 0000000000..ce37948d06 --- /dev/null +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/persistence/PersistenceUnitGeneralComposite.java @@ -0,0 +1,104 @@ +/******************************************************************************* + * Copyright (c) 2008, 2012 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.jpa.ui.internal.persistence; + +import org.eclipse.jpt.common.ui.internal.widgets.Pane; +import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter; +import org.eclipse.jpt.common.utility.model.value.ModifiablePropertyValueModel; +import org.eclipse.jpt.jpa.core.context.persistence.PersistenceUnit; +import org.eclipse.jpt.jpa.ui.internal.JpaHelpContextIds; +import org.eclipse.swt.widgets.Composite; + +public class PersistenceUnitGeneralComposite extends Pane<PersistenceUnit> +{ + /** + * Creates a new <code>PersistenceUnitMappedClassesComposite</code>. + * + * @param parentPane The parent pane of this one + * @param parent The parent container + */ + public PersistenceUnitGeneralComposite(Pane<? extends PersistenceUnit> parentPane, + Composite parent) { + + super(parentPane, parent); + } + + @Override + protected Composite addComposite(Composite parent) { + return this.addSubPane(parent, 2, 0, 0, 0, 0);//2 columns + } + + @Override + protected void initializeLayout(Composite container) { + // Name widgets + this.addLabel(container, JptUiPersistenceMessages.PersistenceUnitGeneralComposite_name); + this.addText(container, this.buildPersistenceUnitNameHolder(), this.getHelpID()); + + // Persistence Provider widgets + this.addLabel(container, JptUiPersistenceMessages.PersistenceUnitGeneralComposite_persistenceProvider); + this.addText(container, this.buildPersistenceProviderHolder(), this.getHelpID()); + + // Description widgets + this.addLabel(container, JptUiPersistenceMessages.PersistenceUnitGeneralComposite_description); + this.addText(container, this.buildPersistenceUnitDescriptionHolder(), this.getHelpID()); + } + + protected String getHelpID() { + return JpaHelpContextIds.PERSISTENCE_XML_GENERAL; + } + + private ModifiablePropertyValueModel<String> buildPersistenceProviderHolder() { + return new PropertyAspectAdapter<PersistenceUnit, String>(getSubjectHolder(), PersistenceUnit.PROVIDER_PROPERTY) { + @Override + protected String buildValue_() { + return subject.getProvider(); + } + + @Override + protected void setValue_(String value) { + if (value.length() == 0) { + value = null; + } + subject.setProvider(value); + } + }; + } + + private ModifiablePropertyValueModel<String> buildPersistenceUnitNameHolder() { + return new PropertyAspectAdapter<PersistenceUnit, String>(getSubjectHolder(), PersistenceUnit.NAME_PROPERTY) { + @Override + protected String buildValue_() { + return subject.getName(); + } + + @Override + protected void setValue_(String value) { + subject.setName(value); + } + }; + } + + private ModifiablePropertyValueModel<String> buildPersistenceUnitDescriptionHolder() { + return new PropertyAspectAdapter<PersistenceUnit, String>(getSubjectHolder(), PersistenceUnit.DESCRIPTION_PROPERTY) { + @Override + protected String buildValue_() { + return subject.getDescription(); + } + + @Override + protected void setValue_(String value) { + if (value.length() == 0) { + value = null; + } + subject.setDescription(value); + } + }; + } +}
\ No newline at end of file diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/persistence/details/PersistenceUnitGeneralComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/persistence/PersistenceUnitGeneralTab.java index ef345cbd55..a530917dd1 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/persistence/details/PersistenceUnitGeneralComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/persistence/PersistenceUnitGeneralTab.java @@ -7,21 +7,22 @@ * Contributors: * Oracle - initial API and implementation ******************************************************************************/ -package org.eclipse.jpt.jpa.ui.internal.persistence.details; +package org.eclipse.jpt.jpa.ui.internal.persistence; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.jpt.common.ui.WidgetFactory; import org.eclipse.jpt.common.ui.internal.widgets.Pane; -import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter; import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; -import org.eclipse.jpt.common.utility.model.value.ModifiablePropertyValueModel; import org.eclipse.jpt.jpa.core.context.persistence.PersistenceUnit; -import org.eclipse.jpt.jpa.ui.details.JpaPageComposite; +import org.eclipse.jpt.jpa.ui.editors.JpaPageComposite; import org.eclipse.jpt.jpa.ui.internal.JpaHelpContextIds; -import org.eclipse.jpt.jpa.ui.internal.persistence.JptUiPersistenceMessages; import org.eclipse.swt.SWT; 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.ui.forms.widgets.ExpandableComposite; +import org.eclipse.ui.forms.widgets.Section; /** * Here the layout of this pane: @@ -78,7 +79,7 @@ import org.eclipse.swt.widgets.Composite; * @version 2.0 * @since 2.0 */ -public abstract class PersistenceUnitGeneralComposite extends Pane<PersistenceUnit> +public abstract class PersistenceUnitGeneralTab extends Pane<PersistenceUnit> implements JpaPageComposite { /** @@ -88,76 +89,13 @@ public abstract class PersistenceUnitGeneralComposite extends Pane<PersistenceUn * @param parent The parent container * @param widgetFactory The factory used to create various common widgets */ - public PersistenceUnitGeneralComposite(PropertyValueModel<? extends PersistenceUnit> subjectHolder, + public PersistenceUnitGeneralTab(PropertyValueModel<? extends PersistenceUnit> subjectHolder, Composite container, WidgetFactory widgetFactory) { super(subjectHolder, container, widgetFactory); } - - /* - * (non-Javadoc) - */ - @Override - protected Composite addContainer(Composite parent) { - Composite container = addSubPane(parent); - updateGridData(container); - - return container; - } - - private ModifiablePropertyValueModel<String> buildPersistenceProviderHolder() { - return new PropertyAspectAdapter<PersistenceUnit, String>(getSubjectHolder(), PersistenceUnit.PROVIDER_PROPERTY) { - @Override - protected String buildValue_() { - return subject.getProvider(); - } - - @Override - protected void setValue_(String value) { - if (value.length() == 0) { - value = null; - } - subject.setProvider(value); - } - }; - } - - private ModifiablePropertyValueModel<String> buildPersistenceUnitNameHolder() { - return new PropertyAspectAdapter<PersistenceUnit, String>(getSubjectHolder(), PersistenceUnit.NAME_PROPERTY) { - @Override - protected String buildValue_() { - return subject.getName(); - } - - @Override - protected void setValue_(String value) { - subject.setName(value); - } - }; - } - - private ModifiablePropertyValueModel<String> buildPersistenceUnitDescriptionHolder() { - return new PropertyAspectAdapter<PersistenceUnit, String>(getSubjectHolder(), PersistenceUnit.DESCRIPTION_PROPERTY) { - @Override - protected String buildValue_() { - return subject.getDescription(); - } - - @Override - protected void setValue_(String value) { - if (value.length() == 0) { - value = null; - } - subject.setDescription(value); - } - }; - } - - /* - * (non-Javadoc) - */ public String getHelpID() { return JpaHelpContextIds.PERSISTENCE_XML_GENERAL; } @@ -166,65 +104,69 @@ public abstract class PersistenceUnitGeneralComposite extends Pane<PersistenceUn return null; } - /* - * (non-Javadoc) - */ public String getPageText() { return JptUiPersistenceMessages.PersistenceUnitGeneralComposite_general; } - protected void initializeGeneralPane(Composite container) { - - container = this.addSection( - container, - JptUiPersistenceMessages.PersistenceUnitGeneralComposite_general - ); - - // Name widgets - this.addLabeledText( - container, - JptUiPersistenceMessages.PersistenceUnitGeneralComposite_name, - this.buildPersistenceUnitNameHolder(), - this.getHelpID() - ); - - // Persistence Provider widgets - this.addLabeledText( - container, - JptUiPersistenceMessages.PersistenceUnitGeneralComposite_persistenceProvider, - this.buildPersistenceProviderHolder(), - this.getHelpID() - ); + @Override + protected Composite addComposite(Composite parent) { + GridLayout layout = new GridLayout(2, true);//2 columns + layout.marginHeight = 0; + layout.marginWidth = 0; - // Description widgets - this.addLabeledText( - container, - JptUiPersistenceMessages.PersistenceUnitGeneralComposite_description, - this.buildPersistenceUnitDescriptionHolder(), - this.getHelpID() - ); + return this.addPane(parent, layout); } - protected void initializeMappedClassesPane(Composite container) { + @Override + protected void initializeLayout(Composite container) { + Section generalSection = this.getWidgetFactory().createSection(container, ExpandableComposite.TITLE_BAR); + generalSection.setText(JptUiPersistenceMessages.PersistenceUnitGeneralComposite_general); + Control generalComposite = this.buildGeneralComposite(generalSection); + GridData gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.verticalAlignment = SWT.TOP; + generalSection.setLayoutData(gridData); + generalSection.setClient(generalComposite); + + Section mappingFilesSection = this.getWidgetFactory().createSection(container, ExpandableComposite.TITLE_BAR | Section.DESCRIPTION); + mappingFilesSection.setText(JptUiPersistenceMessages.PersistenceUnitGeneralComposite_jpaMappingDescriptors); + mappingFilesSection.setDescription(JptUiPersistenceMessages.PersistenceUnitGeneralComposite_jpaMappingDescriptors_description); + Control mappingFilesComposite = this.buildMappingFilesComposite(mappingFilesSection); + gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.verticalAlignment = SWT.TOP; + mappingFilesSection.setLayoutData(gridData); + mappingFilesSection.setClient(mappingFilesComposite); + + Section classesSection = this.getWidgetFactory().createSection(container, ExpandableComposite.TITLE_BAR | Section.DESCRIPTION); + classesSection.setText(JptUiPersistenceMessages.PersistenceUnitGeneralComposite_mappedClasses); + classesSection.setDescription(JptUiPersistenceMessages.PersistenceUnitClassesComposite_description); + gridData = new GridData(GridData.FILL_BOTH); + gridData.verticalAlignment = SWT.TOP; + classesSection.setLayoutData(gridData); + Control classesComposite = this.buildClassesComposite(classesSection); + classesSection.setClient(classesComposite); + + Section jarFilesSection = this.getWidgetFactory().createSection(container, ExpandableComposite.TITLE_BAR); + jarFilesSection.setText(JptUiPersistenceMessages.PersistenceUnitGeneralComposite_jarFiles); + Control jarFilesComposite = this.buildJarFilesComposite(jarFilesSection); + gridData = new GridData(GridData.FILL_BOTH); + gridData.verticalAlignment = SWT.TOP; + jarFilesSection.setLayoutData(gridData); + jarFilesSection.setClient(jarFilesComposite); + } - container = addCollapsibleSection( - container, - JptUiPersistenceMessages.PersistenceUnitGeneralComposite_mappedClasses - ); + protected Control buildGeneralComposite(Composite parent) { + return new PersistenceUnitGeneralComposite(this, parent).getControl(); + } - updateGridData(container); - updateGridData(container.getParent()); + protected Control buildClassesComposite(Composite parent) { + return new PersistenceUnitClassesComposite(this, parent).getControl(); + } - new PersistenceUnitClassesComposite(this, container); + protected Control buildMappingFilesComposite(Composite parent) { + return new GenericPersistenceUnitMappingFilesComposite(this, parent).getControl(); } - - protected void updateGridData(Composite container) { - GridData gridData = new GridData(); - gridData.grabExcessHorizontalSpace = true; - gridData.grabExcessVerticalSpace = true; - gridData.horizontalAlignment = SWT.FILL; - gridData.verticalAlignment = SWT.FILL; - container.setLayoutData(gridData); + protected Control buildJarFilesComposite(Composite parent) { + return new GenericPersistenceUnitJarFilesComposite(this, parent).getControl(); } } diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/persistence/details/PersistenceUnitJarFilesComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/persistence/PersistenceUnitJarFilesComposite.java index 2bd7a40ee1..73de8285cc 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/persistence/details/PersistenceUnitJarFilesComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/persistence/PersistenceUnitJarFilesComposite.java @@ -7,7 +7,7 @@ * Contributors: * Oracle - initial API and implementation ******************************************************************************/ -package org.eclipse.jpt.jpa.ui.internal.persistence.details; +package org.eclipse.jpt.jpa.ui.internal.persistence; import org.eclipse.core.resources.IProject; import org.eclipse.jface.viewers.ILabelProvider; @@ -19,19 +19,17 @@ import org.eclipse.jpt.common.ui.internal.widgets.AddRemovePane.Adapter; import org.eclipse.jpt.common.utility.internal.iterables.ListIterable; import org.eclipse.jpt.common.utility.internal.model.value.ItemPropertyListValueModelAdapter; import org.eclipse.jpt.common.utility.internal.model.value.ListAspectAdapter; -import org.eclipse.jpt.common.utility.internal.model.value.SimplePropertyValueModel; -import org.eclipse.jpt.common.utility.internal.model.value.swing.ObjectListSelectionModel; +import org.eclipse.jpt.common.utility.internal.model.value.SimpleCollectionValueModel; +import org.eclipse.jpt.common.utility.model.value.CollectionValueModel; import org.eclipse.jpt.common.utility.model.value.ListValueModel; -import org.eclipse.jpt.common.utility.model.value.ModifiablePropertyValueModel; +import org.eclipse.jpt.common.utility.model.value.ModifiableCollectionValueModel; +import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; import org.eclipse.jpt.jpa.core.context.persistence.JarFileRef; import org.eclipse.jpt.jpa.core.context.persistence.PersistenceUnit; import org.eclipse.jpt.jpa.ui.JptJpaUiPlugin; import org.eclipse.jpt.jpa.ui.internal.JpaHelpContextIds; import org.eclipse.jpt.jpa.ui.internal.JptUiIcons; -import org.eclipse.jpt.jpa.ui.internal.persistence.JptUiPersistenceMessages; -import org.eclipse.swt.SWT; import org.eclipse.swt.graphics.Image; -import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; import org.eclipse.ui.dialogs.ElementTreeSelectionDialog; @@ -50,7 +48,7 @@ import org.eclipse.ui.dialogs.ElementTreeSelectionDialog; * -----------------------------------------------------------------------------</pre> * * @see PersistenceUnit - * @see PersistenceUnitGeneralComposite - The parent container + * @see PersistenceUnitGeneralTab - The parent container * @see AddRemoveListPane * * @version 2.0 @@ -59,7 +57,6 @@ import org.eclipse.ui.dialogs.ElementTreeSelectionDialog; public abstract class PersistenceUnitJarFilesComposite extends Pane<PersistenceUnit> { - private ModifiablePropertyValueModel<JarFileRef> selectedItemHolder; /** * Creates a new <code>PersistenceUnitJPAMappingDescriptorsComposite</code>. @@ -71,67 +68,41 @@ public abstract class PersistenceUnitJarFilesComposite Pane<? extends PersistenceUnit> parentPane, Composite parent) { - super(parentPane, parent, false); + super(parentPane, parent); } @Override - protected void initialize() { - super.initialize(); - this.selectedItemHolder = buildSelectedItemHolder(); - } - - - - @Override protected void initializeLayout(Composite container) { addJarFilesList(container); } protected void addJarFilesList(Composite container) { // List pane - new AddRemoveListPane<PersistenceUnit>( + new AddRemoveListPane<PersistenceUnit, JarFileRef>( this, container, this.buildAdapter(), this.buildItemListHolder(), - this.selectedItemHolder, + this.buildSelectedJarFileRefsModel(), this.buildLabelProvider(), - JpaHelpContextIds.PERSISTENCE_XML_GENERAL - ) { - @Override - protected Composite addContainer(Composite parent) { - parent = super.addContainer(parent); - updateGridData(parent); - return parent; + JpaHelpContextIds.PERSISTENCE_XML_GENERAL); + } + + private Adapter<JarFileRef> buildAdapter() { + return new AddRemoveListPane.AbstractAdapter<JarFileRef>() { + public JarFileRef addNewItem() { + return addJarFileRef(); } - + @Override - protected void initializeLayout(Composite container) { - super.initializeLayout(container); - updateGridData(getContainer()); + public PropertyValueModel<Boolean> buildRemoveButtonEnabledModel(CollectionValueModel<JarFileRef> selectedItemsModel) { + return buildSingleSelectedItemEnabledModel(selectedItemsModel); } - }; - } - - private void updateGridData(Composite container) { - GridData gridData = new GridData(); - gridData.grabExcessHorizontalSpace = true; - gridData.grabExcessVerticalSpace = true; - gridData.horizontalAlignment = SWT.FILL; - gridData.verticalAlignment = SWT.FILL; - container.setLayoutData(gridData); - } - - private Adapter buildAdapter() { - return new AddRemoveListPane.AbstractAdapter() { - public void addNewItem(ObjectListSelectionModel listSelectionModel) { - addJarFileRef(); - } - - public void removeSelectedItems(ObjectListSelectionModel listSelectionModel) { - for (Object item : listSelectionModel.selectedValues()) { - getSubject().removeJarFileRef((JarFileRef) item); - } + + public void removeSelectedItems(CollectionValueModel<JarFileRef> selectedItemsModel) { + //assume only 1 item since remove button is disabled otherwise + JarFileRef jarFileRef = selectedItemsModel.iterator().next(); + getSubject().removeJarFileRef(jarFileRef); } }; } @@ -156,9 +127,9 @@ public abstract class PersistenceUnitJarFilesComposite } }; } - - private ModifiablePropertyValueModel<JarFileRef> buildSelectedItemHolder() { - return new SimplePropertyValueModel<JarFileRef>(); + + protected ModifiableCollectionValueModel<JarFileRef> buildSelectedJarFileRefsModel() { + return new SimpleCollectionValueModel<JarFileRef>(); } private ILabelProvider buildLabelProvider() { @@ -182,7 +153,7 @@ public abstract class PersistenceUnitJarFilesComposite }; } - private void addJarFileRef() { + private JarFileRef addJarFileRef() { IProject project = getSubject().getJpaProject().getProject(); ElementTreeSelectionDialog dialog = new ArchiveFileSelectionDialog( @@ -202,11 +173,11 @@ public abstract class PersistenceUnitJarFilesComposite if (jarFileRefExists(filePath)) { continue; } - JarFileRef jarFileRef = getSubject().addJarFileRef(filePath); - - this.selectedItemHolder.setValue(jarFileRef); + return getSubject().addJarFileRef(filePath); } } + + return null; } protected ArchiveFileSelectionDialog.DeploymentPathCalculator buildJarFileDeploymentPathCalculator() { diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/persistence/details/PersistenceUnitMappingFilesComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/persistence/PersistenceUnitMappingFilesComposite.java index d9e11eb985..6a14546b4f 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/persistence/details/PersistenceUnitMappingFilesComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/persistence/PersistenceUnitMappingFilesComposite.java @@ -7,7 +7,7 @@ * Contributors: * Oracle - initial API and implementation ******************************************************************************/ -package org.eclipse.jpt.jpa.ui.internal.persistence.details; +package org.eclipse.jpt.jpa.ui.internal.persistence; import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IFolder; @@ -25,10 +25,11 @@ import org.eclipse.jpt.common.ui.internal.widgets.Pane; import org.eclipse.jpt.common.utility.internal.iterables.ListIterable; import org.eclipse.jpt.common.utility.internal.model.value.ItemPropertyListValueModelAdapter; import org.eclipse.jpt.common.utility.internal.model.value.ListAspectAdapter; -import org.eclipse.jpt.common.utility.internal.model.value.SimplePropertyValueModel; -import org.eclipse.jpt.common.utility.internal.model.value.swing.ObjectListSelectionModel; +import org.eclipse.jpt.common.utility.internal.model.value.SimpleCollectionValueModel; +import org.eclipse.jpt.common.utility.model.value.CollectionValueModel; import org.eclipse.jpt.common.utility.model.value.ListValueModel; -import org.eclipse.jpt.common.utility.model.value.ModifiablePropertyValueModel; +import org.eclipse.jpt.common.utility.model.value.ModifiableCollectionValueModel; +import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; import org.eclipse.jpt.jpa.core.JptJpaCorePlugin; import org.eclipse.jpt.jpa.core.context.persistence.MappingFileRef; import org.eclipse.jpt.jpa.core.context.persistence.PersistenceUnit; @@ -36,11 +37,7 @@ import org.eclipse.jpt.jpa.ui.JptJpaUiPlugin; import org.eclipse.jpt.jpa.ui.internal.JpaHelpContextIds; import org.eclipse.jpt.jpa.ui.internal.JptUiIcons; import org.eclipse.jpt.jpa.ui.internal.jface.XmlMappingFileViewerFilter; -import org.eclipse.jpt.jpa.ui.internal.persistence.JptUiPersistenceMessages; -import org.eclipse.swt.SWT; import org.eclipse.swt.graphics.Image; -import org.eclipse.swt.layout.GridData; -import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Composite; import org.eclipse.ui.dialogs.ElementTreeSelectionDialog; import org.eclipse.ui.dialogs.ISelectionStatusValidator; @@ -52,45 +49,23 @@ import org.eclipse.ui.views.navigator.ResourceComparator; public abstract class PersistenceUnitMappingFilesComposite extends Pane<PersistenceUnit> { - private ModifiablePropertyValueModel<MappingFileRef> selectedItemHolder; public PersistenceUnitMappingFilesComposite( Pane<? extends PersistenceUnit> parentPane, Composite parent) { - + super(parentPane, parent); } - @Override - protected void initialize() { - super.initialize(); - this.selectedItemHolder = buildSelectedItemHolder(); - } - - protected void addMappingFilesList(Composite container) { // List pane - new AddRemoveListPane<PersistenceUnit>( + new AddRemoveListPane<PersistenceUnit, MappingFileRef>( this, container, buildAdapter(), buildItemListHolder(), - this.selectedItemHolder, + buildSelectedMappingFileRefsModel(), buildLabelProvider(), - JpaHelpContextIds.PERSISTENCE_XML_GENERAL) { - - @Override - protected Composite addContainer(Composite parent) { - parent = super.addContainer(parent); - updateGridData(parent); - return parent; - } - - @Override - protected void initializeLayout(Composite container) { - super.initializeLayout(container); - updateGridData(getContainer()); - } - }; + JpaHelpContextIds.PERSISTENCE_XML_GENERAL); } /** @@ -100,7 +75,7 @@ public abstract class PersistenceUnitMappingFilesComposite * * @param listSelectionModel The selection model used to select the new files */ - private void addJPAMappingDescriptor() { + private MappingFileRef addJPAMappingDescriptor() { ElementTreeSelectionDialog dialog = new ElementTreeSelectionDialog( getShell(), @@ -126,41 +101,29 @@ public abstract class PersistenceUnitMappingFilesComposite if (mappingFileRefExists(fileName)) { continue; } - MappingFileRef mappingFileRef = getSubject().addSpecifiedMappingFileRef(fileName); - this.selectedItemHolder.setValue(mappingFileRef); + return getSubject().addSpecifiedMappingFileRef(fileName); } } + return null; } - private Adapter buildAdapter() { - return new AddRemoveListPane.AbstractAdapter() { - public void addNewItem(ObjectListSelectionModel listSelectionModel) { - addJPAMappingDescriptor(); - } - - public void removeSelectedItems(ObjectListSelectionModel listSelectionModel) { - for (Object item : listSelectionModel.selectedValues()) { - getSubject().removeSpecifiedMappingFileRef((MappingFileRef) item); - } + private Adapter<MappingFileRef> buildAdapter() { + return new AddRemoveListPane.AbstractAdapter<MappingFileRef>() { + public MappingFileRef addNewItem() { + return addJPAMappingDescriptor(); } - }; - } - - @Override - protected Composite addContainer(Composite parent) { - - GridLayout layout = new GridLayout(1, true); - layout.marginHeight = 0; - layout.marginWidth = 0; - layout.marginTop = 0; - layout.marginLeft = 0; - layout.marginBottom = 0; - layout.marginRight = 0; - Composite container = addPane(parent, layout); - updateGridData(container); + @Override + public PropertyValueModel<Boolean> buildRemoveButtonEnabledModel(CollectionValueModel<MappingFileRef> selectedItemsModel) { + return buildSingleSelectedItemEnabledModel(selectedItemsModel); + } - return container; + public void removeSelectedItems(CollectionValueModel<MappingFileRef> selectedItemsModel) { + //assume only 1 item since remove button is disabled otherwise + MappingFileRef mappingFileRef = selectedItemsModel.iterator().next(); + getSubject().removeSpecifiedMappingFileRef(mappingFileRef); + } + }; } private ListValueModel<MappingFileRef> buildItemListHolder() { @@ -205,9 +168,9 @@ public abstract class PersistenceUnitMappingFilesComposite } }; } - - private ModifiablePropertyValueModel<MappingFileRef> buildSelectedItemHolder() { - return new SimplePropertyValueModel<MappingFileRef>(); + + protected ModifiableCollectionValueModel<MappingFileRef> buildSelectedMappingFileRefsModel() { + return new SimpleCollectionValueModel<MappingFileRef>(); } private boolean mappingFileRefExists(String fileName) { @@ -237,14 +200,4 @@ public abstract class PersistenceUnitMappingFilesComposite } }; } - - private void updateGridData(Composite container) { - - GridData gridData = new GridData(); - gridData.grabExcessHorizontalSpace = true; - gridData.grabExcessVerticalSpace = true; - gridData.horizontalAlignment = SWT.FILL; - gridData.verticalAlignment = SWT.FILL; - container.setLayoutData(gridData); - } }
\ No newline at end of file diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/persistence/details/PersistenceUnitPropertiesComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/persistence/PersistenceUnitPropertiesTab.java index b67aa09d65..02ddf26e19 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/persistence/details/PersistenceUnitPropertiesComposite.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/persistence/PersistenceUnitPropertiesTab.java @@ -7,7 +7,7 @@ * Contributors: * Oracle - initial API and implementation ******************************************************************************/ -package org.eclipse.jpt.jpa.ui.internal.persistence.details; +package org.eclipse.jpt.jpa.ui.internal.persistence; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.jface.viewers.CellEditor; @@ -25,19 +25,20 @@ import org.eclipse.jpt.common.ui.internal.widgets.Pane; import org.eclipse.jpt.common.utility.internal.iterables.ListIterable; import org.eclipse.jpt.common.utility.internal.model.value.ListAspectAdapter; import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter; +import org.eclipse.jpt.common.utility.internal.model.value.SimpleCollectionValueModel; import org.eclipse.jpt.common.utility.internal.model.value.SimplePropertyValueModel; -import org.eclipse.jpt.common.utility.internal.model.value.swing.ObjectListSelectionModel; import org.eclipse.jpt.common.utility.model.event.ListAddEvent; import org.eclipse.jpt.common.utility.model.event.ListChangeEvent; import org.eclipse.jpt.common.utility.model.event.ListRemoveEvent; +import org.eclipse.jpt.common.utility.model.value.CollectionValueModel; import org.eclipse.jpt.common.utility.model.value.ListValueModel; +import org.eclipse.jpt.common.utility.model.value.ModifiableCollectionValueModel; import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; import org.eclipse.jpt.common.utility.model.value.ModifiablePropertyValueModel; import org.eclipse.jpt.jpa.core.context.persistence.PersistenceUnit; -import org.eclipse.jpt.jpa.ui.details.JpaPageComposite; +import org.eclipse.jpt.jpa.ui.editors.JpaPageComposite; import org.eclipse.jpt.jpa.ui.internal.JpaHelpContextIds; import org.eclipse.jpt.jpa.ui.internal.details.java.BaseJavaUiFactory; -import org.eclipse.jpt.jpa.ui.internal.persistence.JptUiPersistenceMessages; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; @@ -68,10 +69,10 @@ import org.eclipse.swt.widgets.TableItem; * @since 2.0 */ @SuppressWarnings("nls") -public class PersistenceUnitPropertiesComposite extends Pane<PersistenceUnit> +public class PersistenceUnitPropertiesTab extends Pane<PersistenceUnit> implements JpaPageComposite { - private ModifiablePropertyValueModel<PersistenceUnit.Property> propertyHolder; + private ModifiableCollectionValueModel<PersistenceUnit.Property> selectedPropertiesModel; private TablePane tablePane; /** @@ -81,13 +82,41 @@ public class PersistenceUnitPropertiesComposite extends Pane<PersistenceUnit> * @param parent The parent container * @param widgetFactory The factory used to create various common widgets */ - public PersistenceUnitPropertiesComposite(PropertyValueModel<PersistenceUnit> subjectHolder, + public PersistenceUnitPropertiesTab(PropertyValueModel<PersistenceUnit> subjectHolder, Composite container, WidgetFactory widgetFactory) { super(subjectHolder, container, widgetFactory); } + public String getHelpID() { + return JpaHelpContextIds.PERSISTENCE_XML_PROPERTIES; + } + + public ImageDescriptor getPageImageDescriptor() { + return null; + } + + public String getPageText() { + return JptUiPersistenceMessages.PersistenceUnitPropertiesComposite_properties; + } + + @Override + protected void initialize() { + super.initialize(); + this.selectedPropertiesModel = new SimpleCollectionValueModel<PersistenceUnit.Property>(); + } + + @Override + protected void initializeLayout(Composite container) { + this.addLabel( + container, + JptUiPersistenceMessages.PersistenceUnitPropertiesComposite_properties_description + ); + + this.tablePane = new TablePane(container); + } + private ListValueModel<PersistenceUnit.Property> buildPropertiesListHolder() { return new ListAspectAdapter<PersistenceUnit, PersistenceUnit.Property>(getSubjectHolder(), PersistenceUnit.PROPERTIES_LIST) { @Override @@ -106,56 +135,31 @@ public class PersistenceUnitPropertiesComposite extends Pane<PersistenceUnit> return new TableLabelProvider(); } - private AddRemoveTablePane.Adapter buildTableAdapter() { - return new AddRemoveTablePane.AbstractAdapter() { - - public void addNewItem(ObjectListSelectionModel listSelectionModel) { + private AddRemoveTablePane.Adapter<PersistenceUnit.Property> buildTableAdapter() { + return new AddRemoveTablePane.AbstractAdapter<PersistenceUnit.Property>() { + public PersistenceUnit.Property addNewItem() { PersistenceUnit.Property property = getSubject().addProperty(); - propertyHolder.setValue(property); tablePane.getTableViewer().editElement( property, PropertyColumnAdapter.NAME_COLUMN ); + return property; } - public void removeSelectedItems(ObjectListSelectionModel listSelectionModel) { - for (Object item : listSelectionModel.selectedValues()) { - getSubject().removeProperty((PersistenceUnit.Property) item); - } + @Override + public PropertyValueModel<Boolean> buildRemoveButtonEnabledModel(CollectionValueModel<PersistenceUnit.Property> selectedItemsModel) { + //enable the remove button only when 1 item is selected, same as the optional button + return buildSingleSelectedItemEnabledModel(selectedItemsModel); } - }; - } - public String getHelpID() { - return JpaHelpContextIds.PERSISTENCE_XML_PROPERTIES; - } - - public ImageDescriptor getPageImageDescriptor() { - return null; - } - - public String getPageText() { - return JptUiPersistenceMessages.PersistenceUnitPropertiesComposite_properties; - } - - @Override - protected void initialize() { - super.initialize(); - propertyHolder = new SimplePropertyValueModel<PersistenceUnit.Property>(); - } - - @Override - protected void initializeLayout(Composite container) { - - addLabel( - container, - JptUiPersistenceMessages.PersistenceUnitPropertiesComposite_properties_description - ); - - tablePane = new TablePane(container); - container.setLayoutData(new GridData(GridData.FILL_BOTH)); + public void removeSelectedItems(CollectionValueModel<PersistenceUnit.Property> selectedItemsModel) { + //assume only 1 item since remove button is disabled otherwise + PersistenceUnit.Property property = selectedItemsModel.iterator().next(); + getSubject().removeProperty(property); + } + }; } private static class PropertyColumnAdapter implements ColumnAdapter<PersistenceUnit.Property> { @@ -255,28 +259,21 @@ public class PersistenceUnitPropertiesComposite extends Pane<PersistenceUnit> } } - private class TablePane extends AddRemoveTablePane<PersistenceUnit> { + private class TablePane extends AddRemoveTablePane<PersistenceUnit, PersistenceUnit.Property> { private final String SELECTION_COLUMN = "selection"; private TableViewer tableViewer; private TablePane(Composite parent) { - super(PersistenceUnitPropertiesComposite.this, + super(PersistenceUnitPropertiesTab.this, parent, buildTableAdapter(), buildPropertiesListHolder(), - propertyHolder, + selectedPropertiesModel, buildPropertyLabelProvider()); } - @Override - protected Composite addContainer(Composite parent) { - Composite container = super.addContainer(parent); - container.setLayoutData(new GridData(GridData.FILL_BOTH)); - return container; - } - private CellEditor[] buildCellEditors(Table table) { return new CellEditor[] { null, @@ -332,7 +329,7 @@ public class PersistenceUnitPropertiesComposite extends Pane<PersistenceUnit> } @Override - protected ColumnAdapter<?> buildColumnAdapter() { + protected ColumnAdapter<PersistenceUnit.Property> buildColumnAdapter() { return new PropertyColumnAdapter(); } @@ -350,9 +347,9 @@ public class PersistenceUnitPropertiesComposite extends Pane<PersistenceUnit> @Override protected void initializeMainComposite(Composite container, - Adapter adapter, + Adapter<PersistenceUnit.Property> adapter, ListValueModel<?> listHolder, - ModifiablePropertyValueModel<?> selectedItemHolder, + ModifiableCollectionValueModel<PersistenceUnit.Property> selectedItemsHolder, IBaseLabelProvider labelProvider, String helpId) { @@ -360,7 +357,7 @@ public class PersistenceUnitPropertiesComposite extends Pane<PersistenceUnit> container, adapter, listHolder, - selectedItemHolder, + selectedItemsHolder, labelProvider, helpId ); diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/persistence/details/PersistenceXmlUiDefinition.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/persistence/PersistenceXmlUiDefinition.java index 7b69456b2e..26ce655779 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/persistence/details/PersistenceXmlUiDefinition.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/persistence/PersistenceXmlUiDefinition.java @@ -7,7 +7,7 @@ * Contributors: * Oracle - initial API and implementation ******************************************************************************/ -package org.eclipse.jpt.jpa.ui.internal.persistence.details; +package org.eclipse.jpt.jpa.ui.internal.persistence; import org.eclipse.jpt.common.core.JptResourceType; import org.eclipse.jpt.common.ui.internal.jface.SimpleItemTreeStateProviderFactoryProvider; diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/persistence/details/PersistenceXmlUiFactory.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/persistence/PersistenceXmlUiFactory.java index 6f546cd681..a8142d9da8 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/persistence/details/PersistenceXmlUiFactory.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/persistence/PersistenceXmlUiFactory.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2009 Oracle. All rights reserved. + * Copyright (c) 2009, 2012 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. @@ -7,13 +7,13 @@ * Contributors: * Oracle - initial API and implementation ******************************************************************************/ -package org.eclipse.jpt.jpa.ui.internal.persistence.details; +package org.eclipse.jpt.jpa.ui.internal.persistence; import java.util.ListIterator; import org.eclipse.jpt.common.ui.WidgetFactory; import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; import org.eclipse.jpt.jpa.core.context.persistence.PersistenceUnit; -import org.eclipse.jpt.jpa.ui.details.JpaPageComposite; +import org.eclipse.jpt.jpa.ui.editors.JpaPageComposite; import org.eclipse.swt.widgets.Composite; public interface PersistenceXmlUiFactory diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/persistence/details/PersistenceUnitConnectionComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/persistence/details/PersistenceUnitConnectionComposite.java deleted file mode 100644 index 6214cb00ed..0000000000 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/persistence/details/PersistenceUnitConnectionComposite.java +++ /dev/null @@ -1,144 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2008, 2010 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.jpa.ui.internal.persistence.details; - -import org.eclipse.jface.resource.ImageDescriptor; -import org.eclipse.jpt.common.ui.WidgetFactory; -import org.eclipse.jpt.common.ui.internal.widgets.Pane; -import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; -import org.eclipse.jpt.jpa.core.context.persistence.PersistenceUnit; -import org.eclipse.jpt.jpa.ui.details.JpaPageComposite; -import org.eclipse.jpt.jpa.ui.internal.JpaHelpContextIds; -import org.eclipse.jpt.jpa.ui.internal.persistence.JptUiPersistenceMessages; -import org.eclipse.swt.SWT; -import org.eclipse.swt.layout.GridData; -import org.eclipse.swt.layout.GridLayout; -import org.eclipse.swt.widgets.Composite; - -/** - * Here the layout of this pane: - * <pre> - * ----------------------------------------------------------------------------- - * | | - * | - General --------------------------------------------------------------- | - * | ------------------------------------------------------------------------- | - * | | | | - * | | PersistenceUnitConnectionGeneralComposite | | - * | | | | - * | ------------------------------------------------------------------------- | - * | | - * | - Database -------------------------------------------------------------- | - * | ------------------------------------------------------------------------- | - * | | | | - * | | PersistenceUnitConnectionDatabaseComposite | | - * | | | | - * | ------------------------------------------------------------------------- | - * -----------------------------------------------------------------------------</pre> - * - * @see PersistenceUnit - * @see PersistenceUnitConnectionGeneralComposite - * @see PersistenceUnitConnectionDatabaseComposite - * - * @version 2.0 - * @since 2.0 - */ -public class PersistenceUnitConnectionComposite extends Pane<PersistenceUnit> - implements JpaPageComposite -{ - /** - * Creates a new <code>PersistenceUnitConnectionComposite</code>. - * - * @param subjectHolder The holder of this pane's subject - * @param parent The parent container - * @param widgetFactory The factory used to create various common widgets - */ - public PersistenceUnitConnectionComposite(PropertyValueModel<PersistenceUnit> subjectHolder, - Composite container, - WidgetFactory widgetFactory) { - - super(subjectHolder, container, widgetFactory); - } - - /* - * (non-Javadoc) - */ - @Override - protected Composite addContainer(Composite parent) { - - GridLayout layout = new GridLayout(1, true); - layout.marginHeight = 0; - layout.marginWidth = 0; - layout.marginTop = 0; - layout.marginLeft = 0; - layout.marginBottom = 0; - layout.marginRight = 0; - layout.verticalSpacing = 15; - - Composite container = addPane(parent, layout); - updateGridData(container); - - return container; - } - - /* - * (non-Javadoc) - */ - public String getHelpID() { - return JpaHelpContextIds.PERSISTENCE_XML_CONNECTION; - } - - private void initializeDatabasePane(Composite container) { - - container = addSection( - container, - JptUiPersistenceMessages.PersistenceUnitConnectionComposite_database - ); - - new PersistenceUnitConnectionDatabaseComposite(this, container); - } - - private void initializeGeneralPane(Composite container) { - - container = addSection( - container, - JptUiPersistenceMessages.PersistenceUnitConnectionComposite_general - ); - - new PersistenceUnitConnectionGeneralComposite(this, container); - } - - /* - * (non-Javadoc) - */ - @Override - protected void initializeLayout(Composite container) { - - initializeGeneralPane(container); - initializeDatabasePane(container); - } - - public ImageDescriptor getPageImageDescriptor() { - return null; - } - - public String getPageText() { - return JptUiPersistenceMessages.PersistenceUnitConnectionComposite_connection; - } - - private void updateGridData(Composite container) { - - GridData gridData = new GridData(); - gridData.grabExcessHorizontalSpace = true; - gridData.grabExcessVerticalSpace = true; - gridData.horizontalAlignment = SWT.FILL; - gridData.verticalAlignment = SWT.FILL; - container.setLayoutData(gridData); - } -} diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/persistence/details/PersistenceUnitConnectionDatabaseComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/persistence/details/PersistenceUnitConnectionDatabaseComposite.java deleted file mode 100644 index 6ea81cfaed..0000000000 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/persistence/details/PersistenceUnitConnectionDatabaseComposite.java +++ /dev/null @@ -1,159 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2008, 2012 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.jpa.ui.internal.persistence.details; - -import org.eclipse.jpt.common.ui.internal.widgets.Pane; -import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter; -import org.eclipse.jpt.common.utility.internal.model.value.TransformationPropertyValueModel; -import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; -import org.eclipse.jpt.common.utility.model.value.ModifiablePropertyValueModel; -import org.eclipse.jpt.jpa.core.context.persistence.PersistenceUnit; -import org.eclipse.jpt.jpa.core.context.persistence.PersistenceUnitTransactionType; -import org.eclipse.jpt.jpa.ui.internal.JpaHelpContextIds; -import org.eclipse.jpt.jpa.ui.internal.persistence.JptUiPersistenceMessages; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Label; -import org.eclipse.swt.widgets.Text; - -/** - * Here the layout of this pane: - * <pre> - * ----------------------------------------------------------------------------- - * | ------------------------------------------------ | - * | JTA Datasource Name: | I | | - * | ------------------------------------------------ | - * | ------------------------------------------------ | - * | Non-JTA Datasource Name: | I | | - * | ------------------------------------------------ | - * -----------------------------------------------------------------------------</pre> - * - * @see PersistenceUnit - * @see PersistenceUnitConnectionComposite - The parent container - * - * @version 2.0 - * @since 2.0 - */ -public class PersistenceUnitConnectionDatabaseComposite extends Pane<PersistenceUnit> -{ - /** - * Creates a new <code>PersistenceUnitConnectionDatabaseComposite</code>. - * - * @param parentPane The parent pane of this one - * @param parent The parent container - */ - public PersistenceUnitConnectionDatabaseComposite(Pane<PersistenceUnit> subjectHolder, - Composite container) { - - super(subjectHolder, container); - } - - private PropertyValueModel<Boolean> buildJTADatasourceNameBooleanHolder() { - return new TransformationPropertyValueModel<PersistenceUnitTransactionType, Boolean>(buildTransactionTypeHolder()) { - @Override - protected Boolean transform_(PersistenceUnitTransactionType value) { - return Boolean.valueOf(value == PersistenceUnitTransactionType.JTA); - } - }; - } - - private ModifiablePropertyValueModel<String> buildJTADatasourceNameHolder() { - return new PropertyAspectAdapter<PersistenceUnit, String>(getSubjectHolder(), PersistenceUnit.JTA_DATA_SOURCE_PROPERTY) { - @Override - protected String buildValue_() { - return subject.getJtaDataSource(); - } - - @Override - protected void setValue_(String value) { - if (value.length() == 0) { - value = null; - } - subject.setJtaDataSource(value); - } - }; - } - - private PropertyValueModel<Boolean> buildNonJTADatasourceNameBooleanHolder() { - return new TransformationPropertyValueModel<PersistenceUnitTransactionType, Boolean>(buildTransactionTypeHolder()) { - @Override - protected Boolean transform_(PersistenceUnitTransactionType value) { - return Boolean.valueOf(value == PersistenceUnitTransactionType.RESOURCE_LOCAL); - } - }; - } - - private ModifiablePropertyValueModel<String> buildNonJTADatasourceNameHolder() { - return new PropertyAspectAdapter<PersistenceUnit, String>(getSubjectHolder(), PersistenceUnit.NON_JTA_DATA_SOURCE_PROPERTY) { - @Override - protected String buildValue_() { - return subject.getNonJtaDataSource(); - } - - @Override - protected void setValue_(String value) { - if (value.length() == 0) { - value = null; - } - subject.setNonJtaDataSource(value); - } - }; - } - - private PropertyValueModel<PersistenceUnitTransactionType> buildTransactionTypeHolder() { - return new PropertyAspectAdapter<PersistenceUnit, PersistenceUnitTransactionType>( - getSubjectHolder(), - PersistenceUnit.DEFAULT_TRANSACTION_TYPE_PROPERTY, - PersistenceUnit.SPECIFIED_TRANSACTION_TYPE_PROPERTY) - { - @Override - protected PersistenceUnitTransactionType buildValue_() { - return subject.getTransactionType(); - } - }; - } - - /* - * (non-Javadoc) - */ - @Override - protected void initializeLayout(Composite container) { - - // JTA Datasource Name widgets - PropertyValueModel<Boolean> enabled = this.buildJTADatasourceNameBooleanHolder(); - Label label = addLabel( - container, - JptUiPersistenceMessages.PersistenceUnitConnectionDatabaseComposite_jtaDatasourceName, - enabled - ); - Text text = addText( - container, - buildJTADatasourceNameHolder(), - JpaHelpContextIds.PERSISTENCE_XML_CONNECTION, - enabled - ); - addLabeledComposite(container, label, text, JpaHelpContextIds.PERSISTENCE_XML_CONNECTION); - - - // Non-JTA Datasource Name widgets - enabled = this.buildNonJTADatasourceNameBooleanHolder(); - label = addLabel( - container, - JptUiPersistenceMessages.PersistenceUnitConnectionDatabaseComposite_nonJtaDatasourceName, - enabled - ); - text = addText( - container, - buildNonJTADatasourceNameHolder(), - JpaHelpContextIds.PERSISTENCE_XML_CONNECTION, - enabled - ); - addLabeledComposite(container, label, text, JpaHelpContextIds.PERSISTENCE_XML_CONNECTION); - } -}
\ No newline at end of file diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/persistence/details/PersistenceUnitConnectionGeneralComposite.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/persistence/details/PersistenceUnitConnectionGeneralComposite.java deleted file mode 100644 index 7f22bd8e13..0000000000 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/persistence/details/PersistenceUnitConnectionGeneralComposite.java +++ /dev/null @@ -1,109 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2008, 2012 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.jpa.ui.internal.persistence.details; - -import java.util.Collection; -import org.eclipse.jpt.common.ui.internal.widgets.EnumFormComboViewer; -import org.eclipse.jpt.common.ui.internal.widgets.Pane; -import org.eclipse.jpt.jpa.core.context.persistence.PersistenceUnit; -import org.eclipse.jpt.jpa.core.context.persistence.PersistenceUnitTransactionType; -import org.eclipse.jpt.jpa.ui.internal.JpaHelpContextIds; -import org.eclipse.jpt.jpa.ui.internal.persistence.JptUiPersistenceMessages; -import org.eclipse.swt.widgets.Composite; - -/** - * Here the layout of this pane: - * <pre> - * ----------------------------------------------------------------------------- - * | ------------------------------------------------------ | - * | Transaction Type: | |v| | - * | ------------------------------------------------------ | - * -----------------------------------------------------------------------------</pre> - * - * @see PersistenceUnit - * @see PersistenceUnitConnectionComposite - The parent container - * - * @version 2.0 - * @since 2.0 - */ -public class PersistenceUnitConnectionGeneralComposite extends Pane<PersistenceUnit> -{ - /** - * Creates a new <code>PersistenceUnitConnectionGeneralComposite</code>. - * - * @param parentPane The parent pane of this one - * @param parent The parent container - */ - public PersistenceUnitConnectionGeneralComposite(Pane<PersistenceUnit> subjectHolder, - Composite container) { - - super(subjectHolder, container); - } - - private EnumFormComboViewer<PersistenceUnit, PersistenceUnitTransactionType> buildTransactionTypeCombo(Composite container) { - - return new EnumFormComboViewer<PersistenceUnit, PersistenceUnitTransactionType>(this, container) { - - @Override - protected void addPropertyNames(Collection<String> propertyNames) { - super.addPropertyNames(propertyNames); - propertyNames.add(PersistenceUnit.SPECIFIED_TRANSACTION_TYPE_PROPERTY); - propertyNames.add(PersistenceUnit.DEFAULT_TRANSACTION_TYPE_PROPERTY); - } - - @Override - protected PersistenceUnitTransactionType[] getChoices() { - return PersistenceUnitTransactionType.values(); - } - - @Override - protected PersistenceUnitTransactionType getDefaultValue() { - return getSubject().getDefaultTransactionType(); - } - - @Override - protected String displayString(PersistenceUnitTransactionType value) { - switch (value) { - case JTA : - return JptUiPersistenceMessages.PersistenceUnitConnectionGeneralComposite_jta; - case RESOURCE_LOCAL : - return JptUiPersistenceMessages.PersistenceUnitConnectionGeneralComposite_resource_local; - default : - throw new IllegalStateException(); - } - } - - @Override - protected PersistenceUnitTransactionType getValue() { - return getSubject().getSpecifiedTransactionType(); - } - - @Override - protected void setValue(PersistenceUnitTransactionType value) { - getSubject().setSpecifiedTransactionType(value); - } - }; - } - - /* - * (non-Javadoc) - */ - @Override - protected void initializeLayout(Composite container) { - - // Transaction Type widgets - addLabeledComposite( - container, - JptUiPersistenceMessages.PersistenceUnitConnectionGeneralComposite_transactionType, - buildTransactionTypeCombo(container).getControl(), - JpaHelpContextIds.PERSISTENCE_XML_CONNECTION - ); - } -} diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/platform/base/AbstractJpaPlatformUi.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/platform/base/AbstractJpaPlatformUi.java index 7942c16b0c..8617a8ee85 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/platform/base/AbstractJpaPlatformUi.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/platform/base/AbstractJpaPlatformUi.java @@ -129,10 +129,11 @@ public abstract class AbstractJpaPlatformUi String mappingKey, Composite parent, PropertyValueModel<AttributeMapping> mappingHolder, + PropertyValueModel<Boolean> enabledModel, WidgetFactory widgetFactory) { return getMappingResourceUiDefinition(resourceType).buildAttributeMappingComposite( - mappingKey, mappingHolder, parent, widgetFactory); + mappingKey, mappingHolder, enabledModel, parent, widgetFactory); } public DefaultMappingUiDefinition<ReadOnlyPersistentAttribute, ? extends AttributeMapping> getDefaultAttributeMappingUiDefinition(JptResourceType resourceType, String mappingKey) { diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/views/JpaDetailsView.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/views/JpaDetailsView.java index 4a08523268..5db8bca38a 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/views/JpaDetailsView.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/internal/views/JpaDetailsView.java @@ -23,7 +23,6 @@ import org.eclipse.jpt.jpa.ui.details.JpaDetailsPageManager; import org.eclipse.jpt.jpa.ui.internal.JptUiMessages; import org.eclipse.jpt.jpa.ui.selection.JpaViewManager; import org.eclipse.swt.SWT; -import org.eclipse.swt.layout.FillLayout; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Composite; @@ -122,10 +121,7 @@ public class JpaDetailsView } private Control buildDefaultPage() { - Composite composite = this.widgetFactory.createComposite(this.pageBook); - composite.setLayout(new FillLayout(SWT.VERTICAL)); - this.widgetFactory.createLabel(composite, JptUiMessages.JpaDetailsView_viewNotAvailable); - return composite; + return this.widgetFactory.createLabel(this.pageBook, JptUiMessages.JpaDetailsView_viewNotAvailable); } private Manager buildManager() { diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/jpa2/details/java/JavaUiFactory2_0.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/jpa2/details/java/JavaUiFactory2_0.java index 32616e75f2..344199aea0 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/jpa2/details/java/JavaUiFactory2_0.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/jpa2/details/java/JavaUiFactory2_0.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2009 Oracle. All rights reserved. + * Copyright (c) 2009, 2012 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. @@ -35,6 +35,7 @@ public interface JavaUiFactory2_0 JpaComposite createJavaElementCollectionMapping2_0Composite( PropertyValueModel<JavaElementCollectionMapping2_0> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory); diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/jpa2/details/orm/OrmXmlUiFactory2_0.java b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/jpa2/details/orm/OrmXmlUiFactory2_0.java index 159a12dab1..529bca1974 100644 --- a/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/jpa2/details/orm/OrmXmlUiFactory2_0.java +++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/src/org/eclipse/jpt/jpa/ui/jpa2/details/orm/OrmXmlUiFactory2_0.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2009 Oracle. All rights reserved. + * Copyright (c) 2009, 2012 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. @@ -35,6 +35,7 @@ public interface OrmXmlUiFactory2_0 extends OrmXmlUiFactory JpaComposite createOrmElementCollectionMapping2_0Composite( PropertyValueModel<OrmElementCollectionMapping2_0> subjectHolder, + PropertyValueModel<Boolean> enabledModel, Composite parent, WidgetFactory widgetFactory); |