Author: dgeraskov
Date: 2011-07-20 08:27:40 -0400 (Wed, 20 Jul 2011)
New Revision: 33072
Added:
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/TypeConverter.java
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/JavaTypeConverter.java
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/JavaTypeConverterImpl.java
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/jpa2/HibernateJavaElementCollectionMapping2_0.java
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/jpa2/details/HibernateElementCollectionMapping2_0Composite.java
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/mapping/details/TypeComposite.java
Modified:
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/jpa2/HibernateJpaFactory2_0.java
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/resource/java/TypeAnnotationImpl.java
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/mapping/details/HibernateBasicMappingComposite.java
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/mapping/details/HibernateUIMappingMessages.java
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/mapping/details/java/Hibernate2_0JavaUiFactory.java
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/mapping/details/messages.properties
Log:
https://issues.jboss.org/browse/JBIDE-9283
Add hibernate @Type composite to JPA Details view
Added:
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/TypeConverter.java
===================================================================
---
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/TypeConverter.java
(rev 0)
+++
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/TypeConverter.java 2011-07-20
12:27:40 UTC (rev 33072)
@@ -0,0 +1,13 @@
+package org.jboss.tools.hibernate.jpt.core.internal.context;
+
+import org.eclipse.jpt.jpa.core.context.Converter;
+
+
+public interface TypeConverter extends Converter {
+
+ String getHibernateType();
+ void setHibernateType(String type);
+ String TYPE_PROPERTY = "type"; //$NON-NLS-1$
+
+
+}
Added:
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/JavaTypeConverter.java
===================================================================
---
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/JavaTypeConverter.java
(rev 0)
+++
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/JavaTypeConverter.java 2011-07-20
12:27:40 UTC (rev 33072)
@@ -0,0 +1,55 @@
+/*******************************************************************************
+ * Copyright (c) 2011 Red Hat, Inc.
+ * Distributed under license by Red Hat, Inc. All rights reserved.
+ * This program is made available under the terms of the
+ * Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at
http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributor:
+ * Red Hat, Inc. - initial API and implementation
+ ******************************************************************************/
+package org.jboss.tools.hibernate.jpt.core.internal.context.java;
+
+import org.eclipse.jpt.jpa.core.JpaFactory;
+import org.eclipse.jpt.jpa.core.context.Converter;
+import org.eclipse.jpt.jpa.core.context.java.JavaAttributeMapping;
+import org.eclipse.jpt.jpa.core.context.java.JavaConverter;
+import org.eclipse.jpt.jpa.core.resource.java.Annotation;
+import org.jboss.tools.hibernate.jpt.core.internal.HibernateAbstractJpaFactory;
+import org.jboss.tools.hibernate.jpt.core.internal.context.TypeConverter;
+import org.jboss.tools.hibernate.jpt.core.internal.resource.java.TypeAnnotation;
+
+/**
+ *
+ * @author Dmitry Geraskov
+ *
+ */
+public interface JavaTypeConverter extends TypeConverter, JavaConverter{
+ // ********** adapter **********
+
+ public static class Adapter
+ extends JavaConverter.AbstractAdapter
+ {
+ private static final Adapter INSTANCE = new Adapter();
+ public static Adapter instance() {
+ return INSTANCE;
+ }
+
+ private Adapter() {
+ super();
+ }
+
+ public Class<? extends Converter> getConverterType() {
+ return TypeConverter.class;
+ }
+
+ @Override
+ protected String getAnnotationName() {
+ return TypeAnnotation.ANNOTATION_NAME;
+ }
+
+ public JavaConverter buildConverter(Annotation converterAnnotation,
JavaAttributeMapping parent, JpaFactory factory) {
+ return ((HibernateAbstractJpaFactory)factory).buildJavaTypeConverter(parent,
(TypeAnnotation) converterAnnotation);
+ }
+ }
+}
Added:
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/JavaTypeConverterImpl.java
===================================================================
---
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/JavaTypeConverterImpl.java
(rev 0)
+++
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/JavaTypeConverterImpl.java 2011-07-20
12:27:40 UTC (rev 33072)
@@ -0,0 +1,83 @@
+/*******************************************************************************
+ * Copyright (c) 2011 Red Hat, Inc.
+ * Distributed under license by Red Hat, Inc. All rights reserved.
+ * This program is made available under the terms of the
+ * Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at
http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributor:
+ * Red Hat, Inc. - initial API and implementation
+ ******************************************************************************/
+package org.jboss.tools.hibernate.jpt.core.internal.context.java;
+
+import org.eclipse.jdt.core.dom.CompilationUnit;
+import org.eclipse.jpt.common.core.utility.TextRange;
+import org.eclipse.jpt.jpa.core.context.Converter;
+import org.eclipse.jpt.jpa.core.context.java.JavaAttributeMapping;
+import org.eclipse.jpt.jpa.core.internal.jpa1.context.java.AbstractJavaConverter;
+import org.jboss.tools.hibernate.jpt.core.internal.context.TypeConverter;
+import org.jboss.tools.hibernate.jpt.core.internal.resource.java.TypeAnnotation;
+
+/**
+ *
+ * @author Dmitry Geraskov
+ *
+ */
+public class JavaTypeConverterImpl extends AbstractJavaConverter implements
JavaTypeConverter {
+
+ protected final TypeAnnotation typeAnnotation;
+
+ protected String type;
+
+ public JavaTypeConverterImpl(JavaAttributeMapping parent, TypeAnnotation typeAnnotation)
{
+ super(parent);
+ this.typeAnnotation = typeAnnotation;
+ type = buildHibernateType();
+ }
+
+ @Override
+ public void synchronizeWithResourceModel() {
+ super.synchronizeWithResourceModel();
+ this.setHibernateType_(this.buildHibernateType());
+ }
+
+ protected String buildHibernateType() {
+ return typeAnnotation.getType();
+ }
+
+ // ********** misc **********
+
+ public Class<? extends Converter> getType() {
+ return TypeConverter.class;
+ }
+
+ @Override
+ protected String getAnnotationName() {
+ return TypeAnnotation.ANNOTATION_NAME;
+ }
+
+ // ********** type **********
+
+ @Override
+ protected TextRange getAnnotationTextRange(CompilationUnit astRoot) {
+ return this.typeAnnotation.getTextRange(astRoot);
+ }
+
+ @Override
+ public String getHibernateType() {
+ return type;
+ }
+
+ @Override
+ public void setHibernateType(String type) {
+ this.typeAnnotation.setType(type);
+ setHibernateType_(type);
+ }
+
+ public void setHibernateType_(String type) {
+ String old = this.type;
+ this.type = type;
+ this.firePropertyChanged(TYPE_PROPERTY, old, type);
+ }
+
+}
Added:
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/jpa2/HibernateJavaElementCollectionMapping2_0.java
===================================================================
---
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/jpa2/HibernateJavaElementCollectionMapping2_0.java
(rev 0)
+++
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/context/java/jpa2/HibernateJavaElementCollectionMapping2_0.java 2011-07-20
12:27:40 UTC (rev 33072)
@@ -0,0 +1,42 @@
+/*******************************************************************************
+ * Copyright (c) 2011 Red Hat, Inc.
+ * Distributed under license by Red Hat, Inc. All rights reserved.
+ * This program is made available under the terms of the
+ * Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at
http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributor:
+ * Red Hat, Inc. - initial API and implementation
+ ******************************************************************************/
+package org.jboss.tools.hibernate.jpt.core.internal.context.java.jpa2;
+
+import org.eclipse.jpt.common.utility.internal.iterables.ArrayIterable;
+import org.eclipse.jpt.common.utility.internal.iterables.CompositeIterable;
+import org.eclipse.jpt.jpa.core.context.java.JavaConverter;
+import org.eclipse.jpt.jpa.core.context.java.JavaPersistentAttribute;
+import org.eclipse.jpt.jpa.core.context.java.JavaConverter.Adapter;
+import
org.eclipse.jpt.jpa.core.internal.jpa2.context.java.AbstractJavaElementCollectionMapping2_0;
+import org.jboss.tools.hibernate.jpt.core.internal.context.java.JavaTypeConverter;
+
+/**
+ * @author Dmitry Geraskov
+ *
+ */
+public class HibernateJavaElementCollectionMapping2_0 extends
+ AbstractJavaElementCollectionMapping2_0 {
+
+ protected static final Iterable<JavaConverter.Adapter>
HIBERNATE_CONVERTER_ADAPTERS =
+ new
CompositeIterable<JavaConverter.Adapter>(JavaTypeConverter.Adapter.instance(),
+ new ArrayIterable<JavaConverter.Adapter>(CONVERTER_ADAPTER_ARRAY));
+
+ public HibernateJavaElementCollectionMapping2_0(
+ JavaPersistentAttribute parent) {
+ super(parent);
+ }
+
+ @Override
+ protected Iterable<Adapter> getConverterAdapters() {
+ return HIBERNATE_CONVERTER_ADAPTERS;
+ }
+
+}
Modified:
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/jpa2/HibernateJpaFactory2_0.java
===================================================================
---
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/jpa2/HibernateJpaFactory2_0.java 2011-07-20
11:37:25 UTC (rev 33071)
+++
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/jpa2/HibernateJpaFactory2_0.java 2011-07-20
12:27:40 UTC (rev 33072)
@@ -37,7 +37,6 @@
import org.eclipse.jpt.jpa.core.internal.jpa2.context.java.GenericJavaCacheable2_0;
import
org.eclipse.jpt.jpa.core.internal.jpa2.context.java.GenericJavaCollectionTable2_0;
import
org.eclipse.jpt.jpa.core.internal.jpa2.context.java.GenericJavaDerivedIdentity2_0;
-import
org.eclipse.jpt.jpa.core.internal.jpa2.context.java.GenericJavaElementCollectionMapping2_0;
import org.eclipse.jpt.jpa.core.internal.jpa2.context.java.GenericJavaEmbeddable2_0;
import org.eclipse.jpt.jpa.core.internal.jpa2.context.java.GenericJavaNamedQuery2_0;
import org.eclipse.jpt.jpa.core.internal.jpa2.context.java.GenericJavaOrderColumn2_0;
@@ -72,6 +71,7 @@
import
org.jboss.tools.hibernate.jpt.core.internal.context.java.HibernateJavaManyToOneMapping;
import
org.jboss.tools.hibernate.jpt.core.internal.context.java.HibernateJavaOneToManyMapping;
import
org.jboss.tools.hibernate.jpt.core.internal.context.java.HibernateJavaOneToOneMapping;
+import
org.jboss.tools.hibernate.jpt.core.internal.context.java.jpa2.HibernateJavaElementCollectionMapping2_0;
@@ -82,23 +82,10 @@
public class HibernateJpaFactory2_0 extends HibernateAbstractJpaFactory implements
JpaFactory2_0 {
// ********** Hibernate Specific **********
- @Override
- public JavaManyToOneMapping buildJavaManyToOneMapping(JavaPersistentAttribute parent) {
- return new HibernateJavaManyToOneMapping(parent);
+ public JavaElementCollectionMapping2_0
buildJavaElementCollectionMapping2_0(JavaPersistentAttribute parent) {
+ return new HibernateJavaElementCollectionMapping2_0(parent);
}
- @Override
- public JavaOneToOneMapping buildJavaOneToOneMapping(
- JavaPersistentAttribute parent) {
- return new HibernateJavaOneToOneMapping(parent);
- }
-
- @Override
- public JavaOneToManyMapping buildJavaOneToManyMapping(
- JavaPersistentAttribute parent) {
- return new HibernateJavaOneToManyMapping(parent);
- }
-
// ********** From GenericJpa2_0 Model **********
// ********** Core Model **********
@@ -150,10 +137,6 @@
return new GenericJavaDerivedIdentity2_0(parent);
}
- public JavaElementCollectionMapping2_0
buildJavaElementCollectionMapping2_0(JavaPersistentAttribute parent) {
- return new GenericJavaElementCollectionMapping2_0(parent);
- }
-
public JavaCacheable2_0 buildJavaCacheable(JavaCacheableHolder2_0 parent) {
return new GenericJavaCacheable2_0(parent);
}
Modified:
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/resource/java/TypeAnnotationImpl.java
===================================================================
---
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/resource/java/TypeAnnotationImpl.java 2011-07-20
11:37:25 UTC (rev 33071)
+++
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.core/src/org/jboss/tools/hibernate/jpt/core/internal/resource/java/TypeAnnotationImpl.java 2011-07-20
12:27:40 UTC (rev 33072)
@@ -83,6 +83,7 @@
return ANNOTATION_NAME;
}
+
AnnotationElementAdapter<String>
buildTypeAdapter(DeclarationAnnotationElementAdapter<String> daea) {
return new ShortCircuitAnnotationElementAdapter<String>(this.annotatedElement,
daea);
}
Added:
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/jpa2/details/HibernateElementCollectionMapping2_0Composite.java
===================================================================
---
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/jpa2/details/HibernateElementCollectionMapping2_0Composite.java
(rev 0)
+++
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/jpa2/details/HibernateElementCollectionMapping2_0Composite.java 2011-07-20
12:27:40 UTC (rev 33072)
@@ -0,0 +1,118 @@
+/*******************************************************************************
+ * Copyright (c) 2011 Red Hat, Inc.
+ * Distributed under license by Red Hat, Inc. All rights reserved.
+ * This program is made available under the terms of the
+ * Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at
http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributor:
+ * Red Hat, Inc. - initial API and implementation
+ ******************************************************************************/
+package org.jboss.tools.hibernate.jpt.ui.internal.jpa2.details;
+
+import java.util.Arrays;
+import java.util.List;
+
+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.common.utility.model.value.WritablePropertyValueModel;
+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.ui.internal.details.JptUiDetailsMessages;
+import
org.eclipse.jpt.jpa.ui.internal.jpa2.details.AbstractElementCollectionMapping2_0Composite;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.ui.forms.widgets.Section;
+import org.jboss.tools.hibernate.jpt.core.internal.context.TypeConverter;
+import
org.jboss.tools.hibernate.jpt.ui.internal.mapping.details.HibernateUIMappingMessages;
+import org.jboss.tools.hibernate.jpt.ui.internal.mapping.details.TypeComposite;
+
+/**
+ * @author Dmitry Geraskov
+ *
+ */
+public class HibernateElementCollectionMapping2_0Composite extends
+ AbstractElementCollectionMapping2_0Composite<ElementCollectionMapping2_0> {
+
+ /**
+ * @param subjectHolder
+ * @param parent
+ * @param widgetFactory
+ */
+ public HibernateElementCollectionMapping2_0Composite(
+ PropertyValueModel<? extends ElementCollectionMapping2_0> subjectHolder,
+ Composite parent,
+ WidgetFactory widgetFactory) {
+ super(subjectHolder, parent, widgetFactory);
+ }
+
+ @Override
+ protected void initializeBasicValueSection(Composite container) {
+ List<Control> oldChildren = Arrays.asList(container.getChildren());
+ super.initializeBasicValueSection(container);
+ List<Control> newChildren = Arrays.asList(container.getChildren());
+ newChildren.removeAll(oldChildren);
+
+ //FIXME due to closed method we need to do the search
+ Composite converterSection =
findTypeSection(((Composite)newChildren.get(0)).getChildren());
+
+ PropertyValueModel<Converter> converterHolder = buildConverterHolder();
+ // Temporal
+ addRadioButton(
+ converterSection,
+ HibernateUIMappingMessages.TypeComposite_type,
+ buildTypeBooleanHolder(),
+ null);
+ registerSubPane(new TypeComposite(buildTypeConverterHolder(converterHolder),
converterSection, getWidgetFactory()));
+
+ }
+
+ private WritablePropertyValueModel<Boolean> buildTypeBooleanHolder() {
+ return new PropertyAspectAdapter<ElementCollectionMapping2_0,
Boolean>(getSubjectHolder(), ConvertibleMapping.CONVERTER_PROPERTY) {
+ @Override
+ protected Boolean buildValue_() {
+ Converter converter = this.subject.getConverter();
+ return Boolean.valueOf(converter.getType() == TypeConverter.class);
+ }
+
+ @Override
+ protected void setValue_(Boolean value) {
+ if (value.booleanValue()) {
+ this.subject.setConverter(TypeConverter.class);
+ }
+ }
+ };
+ }
+
+ private PropertyValueModel<TypeConverter>
buildTypeConverterHolder(PropertyValueModel<Converter> converterHolder) {
+ return new TransformationPropertyValueModel<Converter,
TypeConverter>(converterHolder) {
+ @Override
+ protected TypeConverter transform_(Converter converter) {
+ return converter.getType() == TypeConverter.class ? (TypeConverter) converter :
null;
+ }
+ };
+ }
+
+ protected PropertyValueModel<Converter> buildConverterHolder() {
+ return new PropertyAspectAdapter<ElementCollectionMapping2_0,
Converter>(getSubjectHolder(), ConvertibleMapping.CONVERTER_PROPERTY) {
+ @Override
+ protected Converter buildValue_() {
+ return this.subject.getConverter();
+ }
+ };
+ }
+
+ protected Composite findTypeSection(Control[] controls){
+ for (int i = 0; i < controls.length; i++) {
+ if (controls[i] instanceof Section){
+ Section section = (Section) controls[i];
+ return (Composite) section.getClient();
+ }
+ }
+ return null;
+ }
+
+}
Modified:
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/mapping/details/HibernateBasicMappingComposite.java
===================================================================
---
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/mapping/details/HibernateBasicMappingComposite.java 2011-07-20
11:37:25 UTC (rev 33071)
+++
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/mapping/details/HibernateBasicMappingComposite.java 2011-07-20
12:27:40 UTC (rev 33072)
@@ -12,8 +12,10 @@
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.TransformationPropertyValueModel;
import org.eclipse.jpt.common.utility.model.value.PropertyValueModel;
import org.eclipse.jpt.jpa.core.context.BasicMapping;
+import org.eclipse.jpt.jpa.core.context.Converter;
import org.eclipse.jpt.jpa.ui.details.JpaComposite;
import org.eclipse.jpt.jpa.ui.internal.details.AbstractBasicMappingComposite;
import org.eclipse.jpt.jpa.ui.internal.details.ColumnComposite;
@@ -26,6 +28,7 @@
import org.jboss.tools.hibernate.jpt.core.internal.context.Generated;
import org.jboss.tools.hibernate.jpt.core.internal.context.HibernateColumn;
import org.jboss.tools.hibernate.jpt.core.internal.context.IndexHolder;
+import org.jboss.tools.hibernate.jpt.core.internal.context.TypeConverter;
/**
* Here the layout of this pane:
@@ -107,6 +110,50 @@
new OptionalComposite(this, addSubPane(container, 4));
}
+ @Override
+ protected void initializeTypeSection(Composite container) {
+ super.initializeTypeSection(container);
+
+ PropertyValueModel<Converter> converterHolder = buildConverterHolder();
+
+ addRadioButton(
+ container,
+ HibernateUIMappingMessages.TypeComposite_type,
+ buildConverterBooleanHolder(TypeConverter.class),
+ null);
+
+ registerSubPane(new TypeComposite(buildHibernateConverterHolder(converterHolder),
+ container, getWidgetFactory()));
+
+ }
+
+ protected PropertyValueModel<TypeConverter>
buildHibernateConverterHolder(PropertyValueModel<Converter> converterHolder) {
+ return new TransformationPropertyValueModel<Converter,
TypeConverter>(converterHolder) {
+ @Override
+ protected TypeConverter transform_(Converter converter) {
+ return converter.getType() == TypeConverter.class ? (TypeConverter) converter :
null;
+ }
+ };
+ }
+
+ /*protected WritablePropertyValueModel<Boolean> buildHibernateTypeBooleanHolder()
{
+ return new PropertyAspectAdapter<BasicMapping, Boolean>(getSubjectHolder(),
TypeHolder.TYPE_PROPERTY) {
+ @Override
+ protected Boolean buildValue_() {
+ return Boolean.valueOf(((TypeHolder)subject).getType() != null);
+ }
+
+ @Override
+ protected void setValue_(Boolean value) {
+ if (value.booleanValue() && (((TypeHolder)subject).getType() == null)) {
+ ((TypeHolder)subject).addType();
+ } else if (!value.booleanValue() && (((TypeHolder)subject).getType() !=
null)) {
+ ((TypeHolder)subject).removeType();
+ }
+ }
+ };
+ }*/
+
protected void initializeIndexCollapsibleSection(Composite container) {
if (getSubject() instanceof IndexHolder) {
container = addCollapsibleSection(
Modified:
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/mapping/details/HibernateUIMappingMessages.java
===================================================================
---
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/mapping/details/HibernateUIMappingMessages.java 2011-07-20
11:37:25 UTC (rev 33071)
+++
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/mapping/details/HibernateUIMappingMessages.java 2011-07-20
12:27:40 UTC (rev 33072)
@@ -49,6 +49,7 @@
public static String Index_section_index;
public static String ParametersComposite_nameColumn;
public static String ParametersComposite_valueColumn;
+ public static String TypeComposite_type;
private HibernateUIMappingMessages() {}
Added:
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/mapping/details/TypeComposite.java
===================================================================
---
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/mapping/details/TypeComposite.java
(rev 0)
+++
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/mapping/details/TypeComposite.java 2011-07-20
12:27:40 UTC (rev 33072)
@@ -0,0 +1,78 @@
+/*******************************************************************************
+ * Copyright (c) 2011 Red Hat, Inc.
+ * Distributed under license by Red Hat, Inc. All rights reserved.
+ * This program is made available under the terms of the
+ * Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at
http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributor:
+ * Red Hat, Inc. - initial API and implementation
+ ******************************************************************************/
+package org.jboss.tools.hibernate.jpt.ui.internal.mapping.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.TransformationPropertyValueModel;
+import org.eclipse.jpt.common.utility.model.value.PropertyValueModel;
+import org.eclipse.jpt.common.utility.model.value.WritablePropertyValueModel;
+import org.eclipse.swt.widgets.Composite;
+import org.jboss.tools.hibernate.jpt.core.internal.context.TypeConverter;
+
+/**
+ * @author Dmitry Geraskov
+ *
+ */
+public class TypeComposite extends Pane<TypeConverter> {
+
+ /**
+ * Creates a new <code>TypeComposite</code>.
+ *
+ * @param parentPane The parent container of this one
+ * @param parent The parent container
+ */
+ public TypeComposite(PropertyValueModel<? extends TypeConverter> subjectHolder,
+ Composite parent,
+ WidgetFactory widgetFactory) {
+
+ super(subjectHolder, parent, widgetFactory);
+ }
+
+ @Override
+ protected void initializeLayout(Composite container) {
+ // Name widgets
+ addText(
+ container,
+ buildTypeTypeHolder(),
+ null,
+ buildBooleanHolder()
+ );
+ }
+
+ private WritablePropertyValueModel<String> buildTypeTypeHolder() {
+ return new PropertyAspectAdapter<TypeConverter, String>(getSubjectHolder(),
TypeConverter.TYPE_PROPERTY) {
+ @Override
+ protected String buildValue_() {
+ return subject.getHibernateType();
+ }
+
+ @Override
+ protected void setValue_(String value) {
+ subject.setHibernateType(value);
+ }
+ };
+ }
+
+ protected PropertyValueModel<Boolean> buildBooleanHolder() {
+ return new TransformationPropertyValueModel<TypeConverter,
Boolean>(getSubjectHolder()) {
+ @Override
+ protected Boolean transform(TypeConverter value) {
+ if (getSubject() != null &&
getSubject().getParent().getPersistentAttribute().isVirtual()) {
+ return Boolean.FALSE;
+ }
+ return Boolean.valueOf(value != null);
+ }
+ };
+ }
+
+}
Modified:
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/mapping/details/java/Hibernate2_0JavaUiFactory.java
===================================================================
---
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/mapping/details/java/Hibernate2_0JavaUiFactory.java 2011-07-20
11:37:25 UTC (rev 33071)
+++
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/mapping/details/java/Hibernate2_0JavaUiFactory.java 2011-07-20
12:27:40 UTC (rev 33072)
@@ -16,13 +16,15 @@
import org.eclipse.jpt.jpa.core.context.java.JavaEntity;
import org.eclipse.jpt.jpa.core.context.java.JavaIdMapping;
import org.eclipse.jpt.jpa.core.context.orm.OrmEntity;
+import org.eclipse.jpt.jpa.core.jpa2.context.java.JavaElementCollectionMapping2_0;
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.java.Generic2_0JavaUiFactory;
import org.eclipse.swt.widgets.Composite;
import org.jboss.tools.hibernate.jpt.core.internal.context.java.HibernateJavaEntity;
import org.jboss.tools.hibernate.jpt.core.internal.context.java.HibernateJavaIdMapping;
import org.jboss.tools.hibernate.jpt.core.internal.context.orm.HibernateOrmEntity;
import
org.jboss.tools.hibernate.jpt.ui.internal.java.details.HibernateJavaEntityComposite;
+import
org.jboss.tools.hibernate.jpt.ui.internal.jpa2.details.HibernateElementCollectionMapping2_0Composite;
import
org.jboss.tools.hibernate.jpt.ui.internal.jpa2.details.orm.Hibernate2_0OrmEntityComposite;
import
org.jboss.tools.hibernate.jpt.ui.internal.mapping.details.HibernateBasicMappingComposite;
import
org.jboss.tools.hibernate.jpt.ui.internal.mapping.details.HibernateIdMappingComposite;
@@ -31,7 +33,7 @@
* @author Dmitry Geraskov
*
*/
-public class Hibernate2_0JavaUiFactory extends BaseJavaUiFactory {
+public class Hibernate2_0JavaUiFactory extends Generic2_0JavaUiFactory {
@SuppressWarnings("unchecked")
@@ -65,6 +67,11 @@
return new HibernateBasicMappingComposite(subjectHolder, parent, widgetFactory);
}
-
+ public JpaComposite createJavaElementCollectionMapping2_0Composite(
+ PropertyValueModel<JavaElementCollectionMapping2_0> subjectHolder,
+ Composite parent,
+ WidgetFactory widgetFactory) {
+ return new HibernateElementCollectionMapping2_0Composite(subjectHolder, parent,
widgetFactory);
+ }
}
Modified:
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/mapping/details/messages.properties
===================================================================
---
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/mapping/details/messages.properties 2011-07-20
11:37:25 UTC (rev 33071)
+++
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/mapping/details/messages.properties 2011-07-20
12:27:40 UTC (rev 33072)
@@ -26,4 +26,5 @@
IndexHolderComposite_name=Name:
Index_section_index=Index
ParametersComposite_nameColumn=Name
-ParametersComposite_valueColumn=Value
\ No newline at end of file
+ParametersComposite_valueColumn=Value
+TypeComposite_type=Type
\ No newline at end of file