diff options
Diffstat (limited to 'jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/mappings/details/EclipseLinkStructConverterComposite.java')
-rw-r--r-- | jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/mappings/details/EclipseLinkStructConverterComposite.java | 152 |
1 files changed, 152 insertions, 0 deletions
diff --git a/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/mappings/details/EclipseLinkStructConverterComposite.java b/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/mappings/details/EclipseLinkStructConverterComposite.java new file mode 100644 index 0000000000..d695d16ccf --- /dev/null +++ b/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/mappings/details/EclipseLinkStructConverterComposite.java @@ -0,0 +1,152 @@ +/******************************************************************************* + * Copyright (c) 2006, 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.eclipselink.ui.internal.mappings.details; + +import org.eclipse.jpt.core.JpaProject; +import org.eclipse.jpt.eclipselink.core.context.EclipseLinkConverter; +import org.eclipse.jpt.eclipselink.core.context.EclipseLinkStructConverter; +import org.eclipse.jpt.eclipselink.ui.internal.mappings.EclipseLinkUiMappingsMessages; +import org.eclipse.jpt.ui.WidgetFactory; +import org.eclipse.jpt.ui.internal.util.PaneEnabler; +import org.eclipse.jpt.ui.internal.widgets.ClassChooserPane; +import org.eclipse.jpt.ui.internal.widgets.FormPane; +import org.eclipse.jpt.utility.internal.model.value.PropertyAspectAdapter; +import org.eclipse.jpt.utility.internal.model.value.TransformationPropertyValueModel; +import org.eclipse.jpt.utility.model.value.PropertyValueModel; +import org.eclipse.jpt.utility.model.value.WritablePropertyValueModel; +import org.eclipse.swt.widgets.Composite; + +/** + * Here the layout of this pane: + * <pre> + * ----------------------------------------------------------------------------- + * | -------------------------------------------------------------- | + * | Name: | || + * | -------------------------------------------------------------- | + * -----------------------------------------------------------------------------</pre> + * + * @see EclipseLinkConverter + * @see EclipseLinkConvertComposite - A container of this widget + * + * @version 2.1 + * @since 2.1 + */ +public class EclipseLinkStructConverterComposite extends FormPane<EclipseLinkStructConverter> +{ + + /** + * Creates a new <code>StructConverterComposite</code>. + * + * @param parentPane The parent container of this one + * @param parent The parent container + */ + public EclipseLinkStructConverterComposite(PropertyValueModel<? extends EclipseLinkStructConverter> subjectHolder, + Composite parent, + WidgetFactory widgetFactory) { + + super(subjectHolder, parent, widgetFactory); + } + + @Override + protected void initializeLayout(Composite container) { + + addLabeledText( + container, + EclipseLinkUiMappingsMessages.EclipseLinkConverterComposite_nameTextLabel, + buildNameTextHolder()); + + addClassChooser(container); + + new PaneEnabler(buildBooleanHolder(), this); + } + + protected WritablePropertyValueModel<String> buildNameTextHolder() { + return new PropertyAspectAdapter<EclipseLinkStructConverter, String>( + getSubjectHolder(), EclipseLinkConverter.NAME_PROPERTY) { + @Override + protected String buildValue_() { + return this.subject.getName(); + } + + @Override + protected void setValue_(String value) { + if (value.length() == 0) { + value = null; + } + this.subject.setName(value); + } + }; + } + + + private ClassChooserPane<EclipseLinkStructConverter> addClassChooser(Composite container) { + + return new ClassChooserPane<EclipseLinkStructConverter>(this, container) { + + @Override + protected WritablePropertyValueModel<String> buildTextHolder() { + return new PropertyAspectAdapter<EclipseLinkStructConverter, String>(getSubjectHolder(), EclipseLinkStructConverter.CONVERTER_CLASS_PROPERTY) { + @Override + protected String buildValue_() { + return this.subject.getConverterClass(); + } + + @Override + protected void setValue_(String value) { + + if (value.length() == 0) { + value = null; + } + + this.subject.setConverterClass(value); + } + }; + } + + @Override + protected String getClassName() { + return getSubject().getConverterClass(); + } + + @Override + protected String getLabelText() { + return EclipseLinkUiMappingsMessages.EclipseLinkConverterComposite_classLabel; + } + + @Override + protected JpaProject getJpaProject() { + return getSubject().getJpaProject(); + } + + @Override + protected void setClassName(String className) { + getSubject().setConverterClass(className); + } + + @Override + protected String getSuperInterfaceName() { + return EclipseLinkStructConverter.ECLIPSELINK_STRUCT_CONVERTER_CLASS_NAME; + } + + @Override + protected char getEnclosingTypeSeparator() { + return getSubject().getEnclosingTypeSeparator(); + } + }; + } + + protected PropertyValueModel<Boolean> buildBooleanHolder() { + return new TransformationPropertyValueModel<EclipseLinkStructConverter, Boolean>(getSubjectHolder()) { + @Override + protected Boolean transform(EclipseLinkStructConverter value) { + return Boolean.valueOf(value != null); + } + }; + } +} |