diff options
15 files changed, 996 insertions, 19 deletions
diff --git a/jpa/plugins/org.eclipse.jpt.eclipselink.ui/META-INF/MANIFEST.MF b/jpa/plugins/org.eclipse.jpt.eclipselink.ui/META-INF/MANIFEST.MF index 3c8ff54103..51ed9b425a 100644 --- a/jpa/plugins/org.eclipse.jpt.eclipselink.ui/META-INF/MANIFEST.MF +++ b/jpa/plugins/org.eclipse.jpt.eclipselink.ui/META-INF/MANIFEST.MF @@ -10,6 +10,7 @@ Bundle-ClassPath: . Bundle-Localization: plugin Require-Bundle: org.eclipse.core.resources;bundle-version="[3.4.0,4.0.0)", org.eclipse.core.runtime;bundle-version="[3.4.0,4.0.0)", + org.eclipse.emf.ecore.xmi;bundle-version="2.4.1", org.eclipse.emf.edit.ui;bundle-version="[2.4.0,3.0.0)", org.eclipse.jdt.core;bundle-version="[3.4.0,4.0.0)", org.eclipse.jdt.ui;bundle-version="[3.4.0,4.0.0)", @@ -22,6 +23,7 @@ Require-Bundle: org.eclipse.core.resources;bundle-version="[3.4.0,4.0.0)", org.eclipse.ui.ide;bundle-version="[3.4.0,4.0.0)", org.eclipse.ui.navigator;bundle-version="[3.3.100,4.0.0)", org.eclipse.ui.views.properties.tabbed;bundle-version="[3.4.0,4.0.0)", + org.eclipse.wst.common.emf;bundle-version="1.1.202", org.eclipse.wst.common.frameworks;bundle-version="[1.1.200,2.0.0)", org.eclipse.wst.common.frameworks.ui;bundle-version="[1.1.200,2.0.0)" Export-Package: org.eclipse.jpt.eclipselink.ui, diff --git a/jpa/plugins/org.eclipse.jpt.eclipselink.ui/property_files/eclipselink_ui_mappings.properties b/jpa/plugins/org.eclipse.jpt.eclipselink.ui/property_files/eclipselink_ui_mappings.properties index f79d291d64..761b352cfe 100644 --- a/jpa/plugins/org.eclipse.jpt.eclipselink.ui/property_files/eclipselink_ui_mappings.properties +++ b/jpa/plugins/org.eclipse.jpt.eclipselink.ui/property_files/eclipselink_ui_mappings.properties @@ -126,4 +126,13 @@ TypeConverterComposite_objectTypeLabel = Object type: DefaultOneToOneMappingUiProvider_label=Default (One to One) DefaultOneToManyMappingUiProvider_label=Default (One to Many) DefaultOneToOneMappingUiProvider_linkLabel=default (one to one) -DefaultOneToManyMappingUiProvider_linkLabel=default (one to many)
\ No newline at end of file +DefaultOneToManyMappingUiProvider_linkLabel=default (one to many) + +ConvertersComposite_Label=Converters + +EclipseLinkConverterDialog_name=Name: +EclipseLinkConverterDialog_converterType=Type: +EclipseLinkConverterDialog_addConverter=Add Converter +EclipseLinkConverterDialog_addConverterDescriptionTitle=Create new converter +EclipseLinkConverterDialog_addConverterDescription=Create a new converter setting both the 'name' and the 'type' + diff --git a/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/mappings/EclipseLinkUiMappingsMessages.java b/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/mappings/EclipseLinkUiMappingsMessages.java index 730784a5c9..089bfadb7d 100644 --- a/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/mappings/EclipseLinkUiMappingsMessages.java +++ b/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/mappings/EclipseLinkUiMappingsMessages.java @@ -137,6 +137,13 @@ public class EclipseLinkUiMappingsMessages extends NLS { public static String DefaultOneToOneMappingUiProvider_linkLabel; public static String DefaultOneToManyMappingUiProvider_linkLabel; + public static String ConvertersComposite_Label; + public static String EclipseLinkConverterDialog_name; + public static String EclipseLinkConverterDialog_converterType; + public static String EclipseLinkConverterDialog_addConverter; + public static String EclipseLinkConverterDialog_addConverterDescriptionTitle; + public static String EclipseLinkConverterDialog_addConverterDescription; + static { NLS.initializeMessages("eclipselink_ui_mappings", EclipseLinkUiMappingsMessages.class); } diff --git a/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/orm/details/ConvertersComposite.java b/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/orm/details/ConvertersComposite.java new file mode 100644 index 0000000000..808733507b --- /dev/null +++ b/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/orm/details/ConvertersComposite.java @@ -0,0 +1,405 @@ +/******************************************************************************* + * Copyright (c) 2008 Oracle. All rights reserved. + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0, which accompanies this distribution + * and is available at http://www.eclipse.org/legal/epl-v10.html. + * + * Contributors: + * Oracle - initial API and implementation + ******************************************************************************/ +package org.eclipse.jpt.eclipselink.ui.internal.orm.details; + +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; +import java.util.ListIterator; +import org.eclipse.jface.viewers.ILabelProvider; +import org.eclipse.jface.viewers.LabelProvider; +import org.eclipse.jface.window.Window; +import org.eclipse.jpt.eclipselink.core.context.CustomConverter; +import org.eclipse.jpt.eclipselink.core.context.EclipseLinkConverter; +import org.eclipse.jpt.eclipselink.core.context.ObjectTypeConverter; +import org.eclipse.jpt.eclipselink.core.context.StructConverter; +import org.eclipse.jpt.eclipselink.core.context.TypeConverter; +import org.eclipse.jpt.eclipselink.core.internal.context.orm.ConverterHolder; +import org.eclipse.jpt.eclipselink.ui.internal.mappings.details.CustomConverterComposite; +import org.eclipse.jpt.eclipselink.ui.internal.mappings.details.ObjectTypeConverterComposite; +import org.eclipse.jpt.eclipselink.ui.internal.mappings.details.StructConverterComposite; +import org.eclipse.jpt.eclipselink.ui.internal.mappings.details.TypeConverterComposite; +import org.eclipse.jpt.ui.internal.util.ControlSwitcher; +import org.eclipse.jpt.ui.internal.widgets.AddRemoveListPane; +import org.eclipse.jpt.ui.internal.widgets.FormPane; +import org.eclipse.jpt.ui.internal.widgets.Pane; +import org.eclipse.jpt.ui.internal.widgets.AddRemovePane.Adapter; +import org.eclipse.jpt.utility.internal.Transformer; +import org.eclipse.jpt.utility.internal.iterators.TransformationIterator; +import org.eclipse.jpt.utility.internal.model.value.CompositeListValueModel; +import org.eclipse.jpt.utility.internal.model.value.ItemPropertyListValueModelAdapter; +import org.eclipse.jpt.utility.internal.model.value.ListAspectAdapter; +import org.eclipse.jpt.utility.internal.model.value.SimplePropertyValueModel; +import org.eclipse.jpt.utility.internal.model.value.TransformationPropertyValueModel; +import org.eclipse.jpt.utility.internal.model.value.swing.ObjectListSelectionModel; +import org.eclipse.jpt.utility.model.value.ListValueModel; +import org.eclipse.jpt.utility.model.value.PropertyValueModel; +import org.eclipse.jpt.utility.model.value.WritablePropertyValueModel; +import org.eclipse.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; + +/** + * This pane shows the list of named queries and named native queries. + * <p> + * Here the layout of this pane: + * <pre> + * ----------------------------------------------------------------------------- + * | ------------------------------------------------------------------------- | + * | | | | + * | | AddRemoveListPane | | + * | | | | + * | ------------------------------------------------------------------------- | + * | ------------------------------------------------------------------------- | + * | | | | + * | | ConverterComposite or ObjectTypeConverterComposite | | + * | | or StructConverterComposite or TypeConverterComposite | | + * | | | | + * | ------------------------------------------------------------------------- | + * -----------------------------------------------------------------------------</pre> + * + * @see Entity + * @see Query + * @see NamedNativeQuery + * @see NamedQuery + * @see AbstractEntityComposite - The parent container + * @see NamedNativeQueryPropertyComposite + * @see NamedQueryPropertyComposite + * + * @version 2.1 + * @since 2.1 + */ +public class ConvertersComposite extends Pane<ConverterHolder> +{ + private AddRemoveListPane<ConverterHolder> listPane; + private CustomConverterComposite converterComposite; + private ObjectTypeConverterComposite objectTypeConverterComposite; + private StructConverterComposite structConverterComposite; + private TypeConverterComposite typeConverterComposite; + private WritablePropertyValueModel<EclipseLinkConverter> selectedConverterHolder; + + public ConvertersComposite( + FormPane<?> parentPane, + PropertyValueModel<? extends ConverterHolder> subjectHolder, + Composite parent) { + + super(parentPane, subjectHolder, parent); + } + + @Override + protected void initialize() { + super.initialize(); + this.selectedConverterHolder = buildSelectedConverterHolder(); + } + + private WritablePropertyValueModel<EclipseLinkConverter> buildSelectedConverterHolder() { + return new SimplePropertyValueModel<EclipseLinkConverter>(); + } + + @Override + protected void initializeLayout(Composite container) { + + // List pane + this.listPane = addListPane(container); + + // Property pane + PageBook pageBook = new PageBook(container, SWT.NULL); + pageBook.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + + this.converterComposite = new CustomConverterComposite( + buildCustomConverterHolder(), + pageBook, + getWidgetFactory() + ); + + this.objectTypeConverterComposite = new ObjectTypeConverterComposite( + buildObjectTypeConverterHolder(), + pageBook, + getWidgetFactory() + ); + + this.structConverterComposite = new StructConverterComposite( + buildStructConverterHolder(), + pageBook, + getWidgetFactory() + ); + + this.typeConverterComposite = new TypeConverterComposite( + buildTypeConverterHolder(), + pageBook, + getWidgetFactory() + ); + + installPaneSwitcher(pageBook); + } + + private AddRemoveListPane<ConverterHolder> addListPane(Composite container) { + + return new AddRemoveListPane<ConverterHolder>( + this, + container, + buildConvertersAdapter(), + buildDisplayableConvertersListHolder(), + this.selectedConverterHolder, + buildConvertersListLabelProvider(), + null//JpaHelpContextIds.MAPPING_NAMED_QUERIES + ) { + //TODO yeah, this is weird, but i don't want this to be disabled just + //because the subject is null. i have no need for that and that is + //currently how AddRemovePane works. See OrmQueriesComposite where + //the work around there is yet another pane enabler. I want to change + //how this works in 2.2 + @Override + public void enableWidgets(boolean enabled) { + super.enableWidgets(true); + } + }; + } + + private void installPaneSwitcher(PageBook pageBook) { + new ControlSwitcher(this.selectedConverterHolder, buildPaneTransformer(), pageBook); + } + + private Adapter buildConvertersAdapter() { + + return new AddRemoveListPane.AbstractAdapter() { + + public void addNewItem(ObjectListSelectionModel listSelectionModel) { + addConverter(listSelectionModel); + } + + public void removeSelectedItems(ObjectListSelectionModel listSelectionModel) { + for (Object item : listSelectionModel.selectedValues()) { + if (((EclipseLinkConverter) item).getType() == EclipseLinkConverter.CUSTOM_CONVERTER) { + getSubject().removeCustomConverter((CustomConverter) item); + } + else if (((EclipseLinkConverter) item).getType() == EclipseLinkConverter.OBJECT_TYPE_CONVERTER) { + getSubject().removeObjectTypeConverter((ObjectTypeConverter) item); + } + else if (((EclipseLinkConverter) item).getType() == EclipseLinkConverter.STRUCT_CONVERTER) { + getSubject().removeStructConverter((StructConverter) item); + } + else if (((EclipseLinkConverter) item).getType() == EclipseLinkConverter.TYPE_CONVERTER) { + getSubject().removeTypeConverter((TypeConverter) item); + } + } + } + }; + } + + private void addConverter(ObjectListSelectionModel listSelectionModel) { + EclipseLinkConverterDialog dialog = buildEclipseLinkConverterDialog(); + addEclipseLinkConverterFromDialog(dialog, listSelectionModel); + } + + protected EclipseLinkConverterDialog buildEclipseLinkConverterDialog() { + return new EclipseLinkConverterDialog(getControl().getShell()); + } + + protected void addEclipseLinkConverterFromDialog(EclipseLinkConverterDialog dialog, ObjectListSelectionModel listSelectionModel) { + if (dialog.open() != Window.OK) { + return; + } + String converterType = dialog.getConverterType(); + EclipseLinkConverter converter; + if (converterType == EclipseLinkConverter.CUSTOM_CONVERTER) { + converter = this.getSubject().addCustomConverter(getSubject().customConvertersSize()); + } + else if (converterType == EclipseLinkConverter.OBJECT_TYPE_CONVERTER) { + converter = this.getSubject().addObjectTypeConverter(getSubject().objectTypeConvertersSize()); + } + else if (converterType == EclipseLinkConverter.STRUCT_CONVERTER) { + converter = this.getSubject().addStructConverter(getSubject().structConvertersSize()); + } + else if (converterType == EclipseLinkConverter.TYPE_CONVERTER) { + converter = this.getSubject().addTypeConverter(getSubject().typeConvertersSize()); + } + else { + throw new IllegalArgumentException(); + } + converter.setName(dialog.getName()); + + listSelectionModel.setSelectedValue(converter); + } + + private Transformer<EclipseLinkConverter, Control> buildPaneTransformer() { + return new Transformer<EclipseLinkConverter, Control>() { + public Control transform(EclipseLinkConverter converter) { + if (converter == null) { + return null; + } + + if (converter.getType() == EclipseLinkConverter.CUSTOM_CONVERTER) { + return ConvertersComposite.this.converterComposite.getControl(); + } + if (converter.getType() == EclipseLinkConverter.OBJECT_TYPE_CONVERTER) { + return ConvertersComposite.this.objectTypeConverterComposite.getControl(); + } + if (converter.getType() == EclipseLinkConverter.STRUCT_CONVERTER) { + return ConvertersComposite.this.structConverterComposite.getControl(); + } + if (converter.getType() == EclipseLinkConverter.TYPE_CONVERTER) { + return ConvertersComposite.this.typeConverterComposite.getControl(); + } + + return null; + } + }; + } + + private ListValueModel<EclipseLinkConverter> buildDisplayableConvertersListHolder() { + return new ItemPropertyListValueModelAdapter<EclipseLinkConverter>( + buildEclipseLinkConvertersHolder(), + EclipseLinkConverter.NAME_PROPERTY + ); + } + + private ListValueModel<EclipseLinkConverter> buildEclipseLinkConvertersHolder() { + List<ListValueModel<? extends EclipseLinkConverter>> list = new ArrayList<ListValueModel<? extends EclipseLinkConverter>>(); + list.add(buildCustomConvertersListHolder()); + list.add(buildObjectTypeConvertersListHolder()); + list.add(buildStructConvertersListHolder()); + list.add(buildTypeConvertersListHolder()); + return new CompositeListValueModel<ListValueModel<? extends EclipseLinkConverter>, EclipseLinkConverter>(list); + } + + private ListValueModel<CustomConverter> buildCustomConvertersListHolder() { + return new ListAspectAdapter<ConverterHolder, CustomConverter>( + getSubjectHolder(), + ConverterHolder.CUSTOM_CONVERTERS_LIST) + { + @Override + protected ListIterator<CustomConverter> listIterator_() { + return this.subject.customConverters(); + } + + @Override + protected int size_() { + return this.subject.customConvertersSize(); + } + }; + } + + private ListValueModel<ObjectTypeConverter> buildObjectTypeConvertersListHolder() { + return new ListAspectAdapter<ConverterHolder, ObjectTypeConverter>( + getSubjectHolder(), + ConverterHolder.OBJECT_TYPE_CONVERTERS_LIST) + { + @Override + protected ListIterator<ObjectTypeConverter> listIterator_() { + return this.subject.objectTypeConverters(); + } + + @Override + protected int size_() { + return this.subject.objectTypeConvertersSize(); + } + }; + } + + private ListValueModel<StructConverter> buildStructConvertersListHolder() { + return new ListAspectAdapter<ConverterHolder, StructConverter>( + getSubjectHolder(), + ConverterHolder.STRUCT_CONVERTERS_LIST) + { + @Override + protected ListIterator<StructConverter> listIterator_() { + return this.subject.structConverters(); + } + + @Override + protected int size_() { + return this.subject.structConvertersSize(); + } + }; + } + + private ListValueModel<TypeConverter> buildTypeConvertersListHolder() { + return new ListAspectAdapter<ConverterHolder, TypeConverter>( + getSubjectHolder(), + ConverterHolder.TYPE_CONVERTERS_LIST) + { + @Override + protected ListIterator<TypeConverter> listIterator_() { + return this.subject.typeConverters(); + } + + @Override + protected int size_() { + return this.subject.typeConvertersSize(); + } + }; + } + + private PropertyValueModel<CustomConverter> buildCustomConverterHolder() { + return new TransformationPropertyValueModel<EclipseLinkConverter, CustomConverter>(this.selectedConverterHolder) { + @Override + protected CustomConverter transform_(EclipseLinkConverter value) { + return value.getType() == EclipseLinkConverter.CUSTOM_CONVERTER ? (CustomConverter) value : null; + } + }; + } + + private PropertyValueModel<ObjectTypeConverter> buildObjectTypeConverterHolder() { + return new TransformationPropertyValueModel<EclipseLinkConverter, ObjectTypeConverter>(this.selectedConverterHolder) { + @Override + protected ObjectTypeConverter transform_(EclipseLinkConverter value) { + return value.getType() == EclipseLinkConverter.OBJECT_TYPE_CONVERTER ? (ObjectTypeConverter) value : null; + } + }; + } + + private PropertyValueModel<StructConverter> buildStructConverterHolder() { + return new TransformationPropertyValueModel<EclipseLinkConverter, StructConverter>(this.selectedConverterHolder) { + @Override + protected StructConverter transform_(EclipseLinkConverter value) { + return value.getType() == EclipseLinkConverter.STRUCT_CONVERTER ? (StructConverter) value : null; + } + }; + } + + private PropertyValueModel<TypeConverter> buildTypeConverterHolder() { + return new TransformationPropertyValueModel<EclipseLinkConverter, TypeConverter>(this.selectedConverterHolder) { + @Override + protected TypeConverter transform_(EclipseLinkConverter value) { + return value.getType() == EclipseLinkConverter.TYPE_CONVERTER ? (TypeConverter) value : null; + } + }; + } + + private ILabelProvider buildConvertersListLabelProvider() { + return new LabelProvider() { + @Override + public String getText(Object element) { + return ((EclipseLinkConverter) element).getName(); + } + }; + } + + @Override + public void enableWidgets(boolean enabled) { + super.enableWidgets(enabled); + this.listPane.enableWidgets(enabled); + } + + //TODO need to check the converter repository for this, should check all converters, except for the override case, hmm + //we at least need to check typeconverters, converters, structconverters, and objectypeconverters, on this particular + //object. or we need to give a warning about the case where you are overriding or an error if it's not an override? + private Iterator<String> converterNames() { + return new TransformationIterator<CustomConverter, String>(getSubject().customConverters()) { + @Override + protected String transform(CustomConverter next) { + return next.getName(); + } + }; + } +}
\ No newline at end of file diff --git a/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/orm/details/EclipseLinkConverterDialog.java b/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/orm/details/EclipseLinkConverterDialog.java new file mode 100644 index 0000000000..00a1933f44 --- /dev/null +++ b/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/orm/details/EclipseLinkConverterDialog.java @@ -0,0 +1,195 @@ +/******************************************************************************* + * Copyright (c) 2008 Oracle. All rights reserved. + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0, which accompanies this distribution + * and is available at http://www.eclipse.org/legal/epl-v10.html. + * + * Contributors: + * Oracle - initial API and implementation + ******************************************************************************/ +package org.eclipse.jpt.eclipselink.ui.internal.orm.details; + +import java.util.ArrayList; +import java.util.List; +import org.eclipse.jpt.eclipselink.core.context.EclipseLinkConverter; +import org.eclipse.jpt.eclipselink.ui.internal.mappings.EclipseLinkUiMappingsMessages; +import org.eclipse.jpt.ui.internal.widgets.DialogPane; +import org.eclipse.jpt.ui.internal.widgets.ValidatingDialog; +import org.eclipse.jpt.utility.internal.StringConverter; +import org.eclipse.jpt.utility.internal.model.value.PropertyAspectAdapter; +import org.eclipse.jpt.utility.internal.model.value.StaticListValueModel; +import org.eclipse.jpt.utility.model.value.ListValueModel; +import org.eclipse.jpt.utility.model.value.WritablePropertyValueModel; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Shell; +import org.eclipse.swt.widgets.Text; + +/** + * Clients can use this dialog to prompt the user for SecondaryTable settings. + * Use the following once the dialog is closed: + * @see #getSelectedTable() + * @see #getSelectedCatalog() + * @see #getSelectedSchema() + * @version 2.1 + * @since 2.1 + */ +public class EclipseLinkConverterDialog extends ValidatingDialog<EclipseLinkStateObject> { + + + // ********** constructors ********** + + /** + * Use this constructor to edit an existing conversion value + */ + public EclipseLinkConverterDialog(Shell parent) { + super(parent); + } + + @Override + protected EclipseLinkStateObject buildStateObject() { + return new EclipseLinkStateObject(); + } + + // ********** open ********** + + @Override + protected void configureShell(Shell shell) { + super.configureShell(shell); + shell.setText(this.getTitle()); + } + + @Override + protected String getTitle() { + return EclipseLinkUiMappingsMessages.EclipseLinkConverterDialog_addConverter; + } + + @Override + protected String getDescriptionTitle() { + return EclipseLinkUiMappingsMessages.EclipseLinkConverterDialog_addConverterDescriptionTitle; + } + + @Override + protected String getDescription() { + return EclipseLinkUiMappingsMessages.EclipseLinkConverterDialog_addConverterDescription; + } + + @Override + protected DialogPane<EclipseLinkStateObject> buildLayout(Composite container) { + return new ConversionValueDialogPane(container); + } + + @Override + public void create() { + super.create(); + + ConversionValueDialogPane pane = (ConversionValueDialogPane) getPane(); + pane.selectAll(); + + getButton(OK).setEnabled(false); + } + + + // ********** public API ********** + + /** + * Return the data value set in the text widget. + */ + public String getName() { + return getSubject().getName(); + } + + /** + * Return the object value set in the text widget. + */ + public String getConverterType() { + return getSubject().getConverterType(); + } + + private class ConversionValueDialogPane extends DialogPane<EclipseLinkStateObject> { + + private Text nameText; + + ConversionValueDialogPane(Composite parent) { + super(EclipseLinkConverterDialog.this.getSubjectHolder(), parent); + } + + @Override + protected void initializeLayout(Composite container) { + this.nameText = addLabeledText( + container, + EclipseLinkUiMappingsMessages.EclipseLinkConverterDialog_name, + buildNameHolder() + ); + + addLabeledCombo( + container, + EclipseLinkUiMappingsMessages.EclipseLinkConverterDialog_converterType, + buildConverterTypeListHolder(), + buildConverterTypeHolder(), + buildStringConverter(), + null); + } + + protected ListValueModel<String> buildConverterTypeListHolder() { + List<String> converterTypes = new ArrayList<String>(); + converterTypes.add(EclipseLinkConverter.CUSTOM_CONVERTER); + converterTypes.add(EclipseLinkConverter.OBJECT_TYPE_CONVERTER); + converterTypes.add(EclipseLinkConverter.STRUCT_CONVERTER); + converterTypes.add(EclipseLinkConverter.TYPE_CONVERTER); + + return new StaticListValueModel<String>(converterTypes); + } + + private StringConverter<String> buildStringConverter() { + return new StringConverter<String>() { + public String convertToString(String value) { + if (value == EclipseLinkConverter.CUSTOM_CONVERTER) { + return EclipseLinkUiMappingsMessages.ConvertersComposite_converter; + } + if (value == EclipseLinkConverter.OBJECT_TYPE_CONVERTER) { + return EclipseLinkUiMappingsMessages.ConvertersComposite_objectTypeConverter; + } + if (value == EclipseLinkConverter.STRUCT_CONVERTER) { + return EclipseLinkUiMappingsMessages.ConvertersComposite_structConverter; + } + if (value == EclipseLinkConverter.TYPE_CONVERTER) { + return EclipseLinkUiMappingsMessages.ConvertersComposite_typeConverter; + } + return value; + } + }; + } + + private WritablePropertyValueModel<String> buildNameHolder() { + return new PropertyAspectAdapter<EclipseLinkStateObject, String>(getSubjectHolder(), EclipseLinkStateObject.NAME_PROPERTY) { + @Override + protected String buildValue_() { + return this.subject.getName(); + } + + @Override + protected void setValue_(String value) { + this.subject.setName(value); + } + }; + } + + private WritablePropertyValueModel<String> buildConverterTypeHolder() { + return new PropertyAspectAdapter<EclipseLinkStateObject, String>(getSubjectHolder(), EclipseLinkStateObject.CONVERTER_TYPE_PROPERTY) { + @Override + protected String buildValue_() { + return this.subject.getConverterType(); + } + + @Override + protected void setValue_(String value) { + this.subject.setConverterType(value); + } + }; + } + + void selectAll() { + this.nameText.selectAll(); + } + } +} diff --git a/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/orm/details/EclipseLinkStateObject.java b/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/orm/details/EclipseLinkStateObject.java new file mode 100644 index 0000000000..6a8dc15987 --- /dev/null +++ b/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/orm/details/EclipseLinkStateObject.java @@ -0,0 +1,125 @@ +/******************************************************************************* + * Copyright (c) 2008 Oracle. All rights reserved. + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0, which accompanies this distribution + * and is available at http://www.eclipse.org/legal/epl-v10.html. + * + * Contributors: + * Oracle - initial API and implementation + ******************************************************************************/ +package org.eclipse.jpt.eclipselink.ui.internal.orm.details; + +import java.util.List; +import org.eclipse.jpt.eclipselink.ui.internal.mappings.EclipseLinkUiMappingsMessages; +import org.eclipse.jpt.utility.internal.StringTools; +import org.eclipse.jpt.utility.internal.node.AbstractNode; +import org.eclipse.jpt.utility.internal.node.Node; +import org.eclipse.jpt.utility.internal.node.Problem; + +/** + * This is the state object used by the <code>NewNameDialog</code>, which stores + * the current name and validates it when it is modified. + * + * @see NewNameDialog + * + * @version 2.1 + * @since 2.1 + */ +final class EclipseLinkStateObject extends AbstractNode +{ + /** + * The initial name or <code>null</code> + */ + private String name; + + /** + * The initial converterType or <code>null</code> + */ + private String converterType; + + /** + * The <code>Validator</code> used to validate this state object. + */ + private Validator validator; + + /** + * Notifies a change in the data value property. + */ + static final String NAME_PROPERTY = "nameProperty"; //$NON-NLS-1$ + + /** + * Notifies a change in the object value property. + */ + static final String CONVERTER_TYPE_PROPERTY = "converterTypeProperty"; //$NON-NLS-1$ + + /** + * Creates a new <code>NewNameStateObject</code>. + * + * @param name The initial input or <code>null</code> if no initial value can + * be specified + * @param names The collection of names that can't be used or an empty + * collection if none are available + */ + EclipseLinkStateObject() { + super(null); + + } + + private void addNameProblemsTo(List<Problem> currentProblems) { + if (StringTools.stringIsEmpty(this.name)) { + currentProblems.add(buildProblem(EclipseLinkUiMappingsMessages.ConversionValueStateObject_dataValueMustBeSpecified)); + } + } + + private void addConverterTypeProblemsTo(List<Problem> currentProblems) { + if (StringTools.stringIsEmpty(this.converterType)) { + currentProblems.add(buildProblem(EclipseLinkUiMappingsMessages.ConversionValueStateObject_objectValueMustBeSpecified)); + } + } + + @Override + protected void addProblemsTo(List<Problem> currentProblems) { + super.addProblemsTo(currentProblems); + addNameProblemsTo(currentProblems); + addConverterTypeProblemsTo(currentProblems); + } + + @Override + protected void checkParent(@SuppressWarnings("unused") Node parentNode) { + //no parent + } + + public String displayString() { + return null; + } + + String getName() { + return this.name; + } + + String getConverterType() { + return this.converterType; + } + + public void setName(String newName) { + String oldName = this.name; + this.name = newName; + firePropertyChanged(NAME_PROPERTY, oldName, newName); + } + + public void setConverterType(String newConverterType) { + String oldConverterType = this.converterType; + this.converterType = newConverterType; + firePropertyChanged(CONVERTER_TYPE_PROPERTY, oldConverterType, newConverterType); + } + + @Override + public void setValidator(Validator validator) { + this.validator = validator; + } + + @Override + public Validator getValidator() { + return this.validator; + } +} diff --git a/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/orm/details/EntityMappingsDetailsPage.java b/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/orm/details/EntityMappingsDetailsPage.java new file mode 100644 index 0000000000..bf5aaa89ca --- /dev/null +++ b/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/orm/details/EntityMappingsDetailsPage.java @@ -0,0 +1,167 @@ +/******************************************************************************* + * Copyright (c) 2006, 2008 Oracle. All rights reserved. + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0, which accompanies this distribution + * and is available at http://www.eclipse.org/legal/epl-v10.html. + * + * Contributors: + * Oracle - initial API and implementation + ******************************************************************************/ +package org.eclipse.jpt.eclipselink.ui.internal.orm.details; + +import org.eclipse.jpt.core.context.orm.EntityMappings; +import org.eclipse.jpt.eclipselink.core.internal.context.orm.ConverterHolder; +import org.eclipse.jpt.eclipselink.core.internal.context.orm.EclipseLinkEntityMappings; +import org.eclipse.jpt.eclipselink.ui.internal.mappings.EclipseLinkUiMappingsMessages; +import org.eclipse.jpt.ui.WidgetFactory; +import org.eclipse.jpt.ui.internal.JpaHelpContextIds; +import org.eclipse.jpt.ui.internal.orm.JptUiOrmMessages; +import org.eclipse.jpt.ui.internal.orm.details.OrmGeneratorsComposite; +import org.eclipse.jpt.ui.internal.orm.details.OrmPackageChooser; +import org.eclipse.jpt.ui.internal.orm.details.OrmQueriesComposite; +import org.eclipse.jpt.ui.internal.orm.details.PersistenceUnitMetadataComposite; +import org.eclipse.jpt.utility.internal.model.value.PropertyAspectAdapter; +import org.eclipse.jpt.utility.model.value.PropertyValueModel; +import org.eclipse.swt.widgets.Composite; + +/** + * Here the layout of this pane: + * <pre> + * ----------------------------------------------------------------------------- + * | ------------------------------------------------------------------------- | + * | | | | + * | | XmlPackageChooser | | + * | | | | + * | ------------------------------------------------------------------------- | + * | ------------------------------------------------------------ | + * | Schema: | SchemaCombo | | + * | ------------------------------------------------------------ | + * | ------------------------------------------------------------ | + * | Catalog: | CatalogCombo | | + * | ------------------------------------------------------------ | + * | ------------------------------------------------------------ | + * | Access Type: | |v| | + * | ------------------------------------------------------------ | + * | | + * | ------------------------------------------------------------------------- | + * | | | | + * | | PersistenceUnitMetadataComposite | | + * | | | | + * | ------------------------------------------------------------------------- | + * | ------------------------------------------------------------------------- | + * | | | | + * | | OrmGeneratorsComposite | | + * | | | | + * | ------------------------------------------------------------------------- | + * | ------------------------------------------------------------------------- | + * | | | | + * | | OrmQueriesComposite | | + * | | | | + * | ------------------------------------------------------------------------- | + * | ------------------------------------------------------------------------- | + * | | | | + * | | ConvertersComposite | | + * | | | | + * | ------------------------------------------------------------------------- | + * -----------------------------------------------------------------------------</pre> + * + * @see EntityMappings + * @see EntityMappingsDetailsPage - The parent container + * @see CatalogCombo + * @see EnumFormComboViewer + * @see OrmGeneratorsComposite + * @see OrmPackageChooser + * @see OrmQueriesComposite + * @see PersistenceUnitMetadataComposite + * @see SchemaCombo + * + * @version 2.1 + * @since 2.1 + */ +public class EntityMappingsDetailsPage extends org.eclipse.jpt.ui.internal.orm.details.EntityMappingsDetailsPage +{ + /** + * Creates a new <code>XmlEntityMappingsDetailsPage</code>. + * + * @param parent The parent container + * @param widgetFactory The factory used to create various common widgets + */ + public EntityMappingsDetailsPage(Composite parent, + WidgetFactory widgetFactory) { + + super(parent, widgetFactory); + } + + + @Override + protected void initializeLayout(Composite container) { + + // Package widgets + new OrmPackageChooser(this, container); + + // Schema widgets + addLabeledComposite( + container, + JptUiOrmMessages.EntityMappingsDetailsPage_schema, + addSchemaCombo(container), + JpaHelpContextIds.ENTITY_ORM_SCHEMA + ); + + // Catalog widgets + addLabeledComposite( + container, + JptUiOrmMessages.EntityMappingsDetailsPage_catalog, + addCatalogCombo(container), + JpaHelpContextIds.ENTITY_ORM_CATALOG + ); + + // Access Type widgets + addLabeledComposite( + container, + JptUiOrmMessages.EntityMappingsDetailsPage_access, + addAccessTypeCombo(container), + JpaHelpContextIds.ENTITY_ORM_ACCESS + ); + + // Persistence Unit Metadata widgets + new PersistenceUnitMetadataComposite( + this, + buildPersistentUnitMetadataHolder(), + addSubPane(container, 5) + ); + + // Generators pane + new OrmGeneratorsComposite( + this, + container + ); + + // Queries pane + new OrmQueriesComposite( + this, + container + ); + + // Converters section + container = addCollapsableSection( + container, + EclipseLinkUiMappingsMessages.ConvertersComposite_Label + ); + + new ConvertersComposite( + this, + buildConverterHolder(), + container + ); + } + + private PropertyValueModel<ConverterHolder> buildConverterHolder() { + return new PropertyAspectAdapter<EntityMappings, ConverterHolder>(getSubjectHolder()) { + @Override + protected ConverterHolder buildValue_() { + return ((EclipseLinkEntityMappings) this.subject).getConverterHolder(); + } + }; + } + +}
\ No newline at end of file diff --git a/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/orm/details/OrmDetailsProvider.java b/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/orm/details/OrmDetailsProvider.java new file mode 100644 index 0000000000..4c106c7128 --- /dev/null +++ b/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/orm/details/OrmDetailsProvider.java @@ -0,0 +1,61 @@ +/******************************************************************************* + * Copyright (c) 2008 Oracle. All rights reserved. + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0, which accompanies this distribution + * and is available at http://www.eclipse.org/legal/epl-v10.html. + * + * Contributors: + * Oracle - initial API and implementation + ******************************************************************************/ +package org.eclipse.jpt.eclipselink.ui.internal.orm.details; + +import org.eclipse.jpt.core.JpaStructureNode; +import org.eclipse.jpt.core.context.XmlContextNode; +import org.eclipse.jpt.core.context.orm.OrmStructureNodes; +import org.eclipse.jpt.eclipselink.core.EclipseLinkJpaFile; +import org.eclipse.jpt.ui.WidgetFactory; +import org.eclipse.jpt.ui.details.JpaDetailsPage; +import org.eclipse.jpt.ui.details.JpaDetailsProvider; +import org.eclipse.jpt.ui.internal.orm.details.OrmPersistentAttributeDetailsPage; +import org.eclipse.jpt.ui.internal.orm.details.OrmPersistentTypeDetailsPage; +import org.eclipse.swt.widgets.Composite; + +/** + * This provider is responsible for creating the {@link JpaDetailsPage} + * when the information comes from the XML file (either from the persistence + * configuration or from the Mappings Descriptor). + * + * @version 2.1 + * @since 2.1 + */ +public class OrmDetailsProvider + implements JpaDetailsProvider +{ + public OrmDetailsProvider() { + super(); + } + + public JpaDetailsPage<? extends JpaStructureNode> buildDetailsPage( + Composite parent, + JpaStructureNode structureNode, + WidgetFactory widgetFactory) { + + if (structureNode.getId() == OrmStructureNodes.ENTITY_MAPPINGS_ID) { + //TODO JpaPlatformUi really needs a complete overhaul, this is not a good solution + if ((((XmlContextNode) structureNode).getEResource()).getType() == EclipseLinkJpaFile.ECLIPSELINK_ORM_RESOURCE_TYPE) { + return new EntityMappingsDetailsPage(parent, widgetFactory); + } + return new org.eclipse.jpt.ui.internal.orm.details.EntityMappingsDetailsPage(parent, widgetFactory); + } + + if (structureNode.getId() == OrmStructureNodes.PERSISTENT_TYPE_ID) { + return new OrmPersistentTypeDetailsPage(parent, widgetFactory); + } + + if (structureNode.getId() == OrmStructureNodes.PERSISTENT_ATTRIBUTE_ID) { + return new OrmPersistentAttributeDetailsPage(parent, widgetFactory); + } + + return null; + } +}
\ No newline at end of file diff --git a/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/persistencexml/details/PersistenceDetailsProvider.java b/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/persistencexml/details/PersistenceDetailsProvider.java index 78c0b862ba..f8d90be378 100644 --- a/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/persistencexml/details/PersistenceDetailsProvider.java +++ b/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/persistencexml/details/PersistenceDetailsProvider.java @@ -27,13 +27,13 @@ public class PersistenceDetailsProvider implements JpaDetailsProvider public JpaDetailsPage<? extends JpaStructureNode> buildDetailsPage( Composite parent, - Object contentNodeId, + JpaStructureNode structureNode, WidgetFactory widgetFactory) { - if (contentNodeId == PersistenceStructureNodes.PERSISTENCE_ID) { + if (structureNode.getId() == PersistenceStructureNodes.PERSISTENCE_ID) { return new PersistenceXmlDetailsPage(parent, widgetFactory); } - else if (contentNodeId == PersistenceStructureNodes.PERSISTENCE_UNIT_ID) { + else if (structureNode.getId() == PersistenceStructureNodes.PERSISTENCE_UNIT_ID) { return new PersistenceXmlDetailsPage(parent, widgetFactory); } return null; diff --git a/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/platform/EclipseLinkJpaPlatformUI.java b/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/platform/EclipseLinkJpaPlatformUI.java index f34cbd2541..f2ed1b5fe8 100644 --- a/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/platform/EclipseLinkJpaPlatformUI.java +++ b/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/platform/EclipseLinkJpaPlatformUI.java @@ -23,10 +23,12 @@ import org.eclipse.jpt.eclipselink.ui.internal.EclipseLinkJpaUiFactory; import org.eclipse.jpt.eclipselink.ui.internal.ddlgen.EclipseLinkDDLGeneratorUi; import org.eclipse.jpt.eclipselink.ui.internal.java.details.DefaultOneToManyMappingUiProvider; import org.eclipse.jpt.eclipselink.ui.internal.java.details.DefaultOneToOneMappingUiProvider; +import org.eclipse.jpt.eclipselink.ui.internal.orm.details.OrmDetailsProvider; import org.eclipse.jpt.eclipselink.ui.internal.persistencexml.details.PersistenceDetailsProvider; import org.eclipse.jpt.ui.details.AttributeMappingUiProvider; import org.eclipse.jpt.ui.details.JpaDetailsProvider; import org.eclipse.jpt.ui.details.TypeMappingUiProvider; +import org.eclipse.jpt.ui.internal.java.details.JavaDetailsProvider; import org.eclipse.jpt.ui.internal.platform.base.BaseJpaPlatformUi; import org.eclipse.jpt.ui.internal.structure.OrmResourceModelStructureProvider; import org.eclipse.jpt.ui.navigator.JpaNavigatorProvider; @@ -72,7 +74,11 @@ public class EclipseLinkJpaPlatformUI extends BaseJpaPlatformUi @Override protected void addDetailsProvidersTo(Collection<JpaDetailsProvider> providers) { - super.addDetailsProvidersTo(providers); + //using a different OrmDetailsProvider and the one in BaseJpaPlatformUi. + //This is not the best solution here, just trying to make it work for M3. + //TODO JpaPlatformUi really needs a complete overhaul + providers.add(new JavaDetailsProvider()); + providers.add(new OrmDetailsProvider()); providers.add(new PersistenceDetailsProvider()); } diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/details/JpaDetailsProvider.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/details/JpaDetailsProvider.java index b5bdfa7a09..3591aad024 100644 --- a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/details/JpaDetailsProvider.java +++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/details/JpaDetailsProvider.java @@ -40,6 +40,6 @@ public interface JpaDetailsProvider */ JpaDetailsPage<? extends JpaStructureNode> buildDetailsPage( Composite parent, - Object contentNodeId, + JpaStructureNode structureNode, WidgetFactory widgetFactory); }
\ No newline at end of file diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/java/details/JavaDetailsProvider.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/java/details/JavaDetailsProvider.java index 1f7f36fde4..255885597d 100644 --- a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/java/details/JavaDetailsProvider.java +++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/java/details/JavaDetailsProvider.java @@ -38,14 +38,14 @@ public class JavaDetailsProvider */ public JpaDetailsPage<? extends JpaStructureNode> buildDetailsPage( Composite parent, - Object contentNodeId, + JpaStructureNode structureNode, WidgetFactory widgetFactory) { - if (contentNodeId == JavaStructureNodes.PERSISTENT_TYPE_ID) { + if (structureNode.getId() == JavaStructureNodes.PERSISTENT_TYPE_ID) { return new JavaPersistentTypeDetailsPage(parent, widgetFactory); } - if (contentNodeId == JavaStructureNodes.PERSISTENT_ATTRIBUTE_ID) { + if (structureNode.getId() == JavaStructureNodes.PERSISTENT_ATTRIBUTE_ID) { return new JavaPersistentAttributeDetailsPage(parent, widgetFactory); } diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/orm/details/EntityMappingsDetailsPage.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/orm/details/EntityMappingsDetailsPage.java index 4b0a70204e..e1a2e4831c 100644 --- a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/orm/details/EntityMappingsDetailsPage.java +++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/orm/details/EntityMappingsDetailsPage.java @@ -89,7 +89,7 @@ public class EntityMappingsDetailsPage extends AbstractJpaDetailsPage<EntityMapp super(parent, widgetFactory); } - private EnumFormComboViewer<EntityMappings, AccessType> addAccessTypeCombo(Composite container) { + protected EnumFormComboViewer<EntityMappings, AccessType> addAccessTypeCombo(Composite container) { return new EnumFormComboViewer<EntityMappings, AccessType>(this, container) { @@ -131,7 +131,7 @@ public class EntityMappingsDetailsPage extends AbstractJpaDetailsPage<EntityMapp }; } - private CatalogCombo<EntityMappings> addCatalogCombo(Composite container) { + protected CatalogCombo<EntityMappings> addCatalogCombo(Composite container) { return new CatalogCombo<EntityMappings>(this, container) { @@ -159,7 +159,7 @@ public class EntityMappingsDetailsPage extends AbstractJpaDetailsPage<EntityMapp }; } - private PropertyValueModel<PersistenceUnitMetadata> buildPersistentUnitMetadaHolder() { + protected PropertyValueModel<PersistenceUnitMetadata> buildPersistentUnitMetadataHolder() { return new TransformationPropertyValueModel<EntityMappings, PersistenceUnitMetadata>(getSubjectHolder()) { @Override protected PersistenceUnitMetadata transform_(EntityMappings value) { @@ -168,7 +168,7 @@ public class EntityMappingsDetailsPage extends AbstractJpaDetailsPage<EntityMapp }; } - private SchemaCombo<EntityMappings> addSchemaCombo(Composite container) { + protected SchemaCombo<EntityMappings> addSchemaCombo(Composite container) { return new SchemaCombo<EntityMappings>(this, container) { @@ -238,7 +238,7 @@ public class EntityMappingsDetailsPage extends AbstractJpaDetailsPage<EntityMapp // Persistence Unit Metadata widgets new PersistenceUnitMetadataComposite( this, - buildPersistentUnitMetadaHolder(), + buildPersistentUnitMetadataHolder(), addSubPane(container, 5) ); diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/orm/details/OrmDetailsProvider.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/orm/details/OrmDetailsProvider.java index 3556e7c717..37918da2bc 100644 --- a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/orm/details/OrmDetailsProvider.java +++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/orm/details/OrmDetailsProvider.java @@ -33,18 +33,18 @@ public class OrmDetailsProvider public JpaDetailsPage<? extends JpaStructureNode> buildDetailsPage( Composite parent, - Object contentNodeId, + JpaStructureNode structureNode, WidgetFactory widgetFactory) { - if (contentNodeId == OrmStructureNodes.ENTITY_MAPPINGS_ID) { + if (structureNode.getId() == OrmStructureNodes.ENTITY_MAPPINGS_ID) { return new EntityMappingsDetailsPage(parent, widgetFactory); } - if (contentNodeId == OrmStructureNodes.PERSISTENT_TYPE_ID) { + if (structureNode.getId() == OrmStructureNodes.PERSISTENT_TYPE_ID) { return new OrmPersistentTypeDetailsPage(parent, widgetFactory); } - if (contentNodeId == OrmStructureNodes.PERSISTENT_ATTRIBUTE_ID) { + if (structureNode.getId() == OrmStructureNodes.PERSISTENT_ATTRIBUTE_ID) { return new OrmPersistentAttributeDetailsPage(parent, widgetFactory); } diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/views/JpaDetailsView.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/views/JpaDetailsView.java index ba77e9501c..df8b202e31 100644 --- a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/views/JpaDetailsView.java +++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/views/JpaDetailsView.java @@ -69,7 +69,7 @@ public class JpaDetailsView extends AbstractJpaView JpaDetailsPage<? extends JpaStructureNode> page = detailsProvider.buildDetailsPage( container, - id, + structureNode, getWidgetFactory() ); |