blob: 28b17d21d5c1d6b2a9ba005cb116e1d238ccf6a8 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2010, 2013 Oracle. All rights reserved.
* This program and the accompanying materials are made available under the
* 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.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.EclipseLinkCustomization;
import org.eclipse.jpt.jpa.eclipselink.core.context.persistence.EclipseLinkWeaving;
import org.eclipse.jpt.jpa.eclipselink.ui.JptJpaEclipseLinkUiMessages;
import org.eclipse.jpt.jpa.eclipselink.ui.internal.EclipseLinkHelpContextIds;
import org.eclipse.osgi.util.NLS;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.widgets.Composite;
/**
* WeavingPropertiesComposite
*/
public class EclipseLinkWeavingPropertiesComposite
extends Pane<EclipseLinkCustomization>
{
public EclipseLinkWeavingPropertiesComposite(Pane<? extends EclipseLinkCustomization> subjectHolder,
Composite container) {
super(subjectHolder, container);
}
@Override
protected Composite addComposite(Composite parent) {
return this.addSubPane(parent, 2, 0, 0, 0, 0);
}
@Override
protected void initializeLayout(Composite container) {
// Weaving
this.addLabel(container, JptJpaEclipseLinkUiMessages.PERSISTENCE_XML_CUSTOMIZATION_TAB_WEAVING_LABEL);
this.addWeavingCombo(container);
// Weaving Lazy
TriStateCheckBox weavingLazyCheckBox = this.addTriStateCheckBoxWithDefault(
container,
JptJpaEclipseLinkUiMessages.PERSISTENCE_XML_CUSTOMIZATION_TAB_WEAVING_LAZY_LABEL,
this.buildWeavingLazyHolder(),
this.buildWeavingLazyStringHolder(),
EclipseLinkHelpContextIds.PERSISTENCE_CUSTOMIZATION
);
GridData gridData = new GridData();
gridData.horizontalSpan = 2;
weavingLazyCheckBox.getCheckBox().setLayoutData(gridData);
// Weaving Fetch Groups
TriStateCheckBox weavingFetchGroupsCheckBox = this.addTriStateCheckBoxWithDefault(
container,
JptJpaEclipseLinkUiMessages.PERSISTENCE_XML_CUSTOMIZATION_TAB_WEAVING_FETCH_GROUPS_LABEL,
this.buildWeavingFetchGroupsHolder(),
this.buildWeavingFetchGroupsStringHolder(),
EclipseLinkHelpContextIds.PERSISTENCE_CUSTOMIZATION
);
gridData = new GridData();
gridData.horizontalSpan = 2;
weavingFetchGroupsCheckBox.getCheckBox().setLayoutData(gridData);
// Weaving Internal
TriStateCheckBox weavingInternalCheckBox = this.addTriStateCheckBoxWithDefault(
container,
JptJpaEclipseLinkUiMessages.PERSISTENCE_XML_CUSTOMIZATION_TAB_WEAVING_INTERNAL_LABEL,
this.buildWeavingInternalHolder(),
this.buildWeavingInternalStringHolder(),
EclipseLinkHelpContextIds.PERSISTENCE_CUSTOMIZATION
);
gridData = new GridData();
gridData.horizontalSpan = 2;
weavingInternalCheckBox.getCheckBox().setLayoutData(gridData);
// Weaving Eager
TriStateCheckBox weavingEagerCheckBox = this.addTriStateCheckBoxWithDefault(
container,
JptJpaEclipseLinkUiMessages.PERSISTENCE_XML_CUSTOMIZATION_TAB_WEAVING_EAGER_LABEL,
this.buildWeavingEagerHolder(),
this.buildWeavingEagerStringHolder(),
EclipseLinkHelpContextIds.PERSISTENCE_CUSTOMIZATION
);
gridData = new GridData();
gridData.horizontalSpan = 2;
weavingEagerCheckBox.getCheckBox().setLayoutData(gridData);
// Weaving Change Tracking
TriStateCheckBox weavingChangeTrackingCheckBox = this.addTriStateCheckBoxWithDefault(
container,
JptJpaEclipseLinkUiMessages.PERSISTENCE_XML_CUSTOMIZATION_TAB_WEAVING_CHANGE_TRACKING_LABEL,
this.buildWeavingChangeTrackingHolder(),
this.buildWeavingChangeTrackingStringHolder(),
EclipseLinkHelpContextIds.PERSISTENCE_CUSTOMIZATION
);
gridData = new GridData();
gridData.horizontalSpan = 2;
weavingChangeTrackingCheckBox.getCheckBox().setLayoutData(gridData);
}
// ********* weaving **********
private EnumFormComboViewer<EclipseLinkCustomization, EclipseLinkWeaving> addWeavingCombo(Composite container) {
return new EnumFormComboViewer<EclipseLinkCustomization, EclipseLinkWeaving>(this, container) {
@Override
protected void addPropertyNames(Collection<String> propertyNames) {
super.addPropertyNames(propertyNames);
propertyNames.add(EclipseLinkCustomization.WEAVING_PROPERTY);
}
@Override
protected EclipseLinkWeaving[] getChoices() {
return EclipseLinkWeaving.values();
}
@Override
protected EclipseLinkWeaving getDefaultValue() {
return getSubject().getDefaultWeaving();
}
@Override
protected String displayString(EclipseLinkWeaving value) {
switch (value) {
case true_ :
return JptJpaEclipseLinkUiMessages.WEAVING_COMPOSITE_TRUE_;
case false_ :
return JptJpaEclipseLinkUiMessages.WEAVING_COMPOSITE_FALSE_;
case static_ :
return JptJpaEclipseLinkUiMessages.WEAVING_COMPOSITE_STATIC_;
default :
throw new IllegalStateException();
}
}
@Override
protected EclipseLinkWeaving getValue() {
return getSubject().getWeaving();
}
@Override
protected void setValue(EclipseLinkWeaving value) {
getSubject().setWeaving(value);
}
@Override
protected String getHelpId() {
return EclipseLinkHelpContextIds.PERSISTENCE_CUSTOMIZATION;
}
};
}
// ********* weaving lazy **********
private ModifiablePropertyValueModel<Boolean> buildWeavingLazyHolder() {
return new PropertyAspectAdapter<EclipseLinkCustomization, Boolean>(getSubjectHolder(), EclipseLinkCustomization.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(JptJpaEclipseLinkUiMessages.PERSISTENCE_XML_CUSTOMIZATION_TAB_WEAVING_LAZY_LABEL_DEFAULT, defaultStringValue);
}
return JptJpaEclipseLinkUiMessages.PERSISTENCE_XML_CUSTOMIZATION_TAB_WEAVING_LAZY_LABEL;
}
};
}
private PropertyValueModel<Boolean> buildDefaultWeavingLazyHolder() {
return new PropertyAspectAdapter<EclipseLinkCustomization, Boolean>(
getSubjectHolder(),
EclipseLinkCustomization.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<EclipseLinkCustomization, Boolean>(getSubjectHolder(), EclipseLinkCustomization.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(JptJpaEclipseLinkUiMessages.PERSISTENCE_XML_CUSTOMIZATION_TAB_WEAVING_FETCH_GROUPS_LABEL_DEFAULT, defaultStringValue);
}
return JptJpaEclipseLinkUiMessages.PERSISTENCE_XML_CUSTOMIZATION_TAB_WEAVING_FETCH_GROUPS_LABEL;
}
};
}
private PropertyValueModel<Boolean> buildDefaultWeavingFetchGroupsHolder() {
return new PropertyAspectAdapter<EclipseLinkCustomization, Boolean>(
getSubjectHolder(),
EclipseLinkCustomization.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<EclipseLinkCustomization, Boolean>(getSubjectHolder(), EclipseLinkCustomization.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(JptJpaEclipseLinkUiMessages.PERSISTENCE_XML_CUSTOMIZATION_TAB_WEAVING_INTERNAL_LABEL_DEFAULT, defaultStringValue);
}
return JptJpaEclipseLinkUiMessages.PERSISTENCE_XML_CUSTOMIZATION_TAB_WEAVING_INTERNAL_LABEL;
}
};
}
private PropertyValueModel<Boolean> buildDefaultWeavingInternalHolder() {
return new PropertyAspectAdapter<EclipseLinkCustomization, Boolean>(
getSubjectHolder(),
EclipseLinkCustomization.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<EclipseLinkCustomization, Boolean>(getSubjectHolder(), EclipseLinkCustomization.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(JptJpaEclipseLinkUiMessages.PERSISTENCE_XML_CUSTOMIZATION_TAB_WEAVING_EAGER_LABEL_DEFAULT, defaultStringValue);
}
return JptJpaEclipseLinkUiMessages.PERSISTENCE_XML_CUSTOMIZATION_TAB_WEAVING_EAGER_LABEL;
}
};
}
private PropertyValueModel<Boolean> buildDefaultWeavingEagerHolder() {
return new PropertyAspectAdapter<EclipseLinkCustomization, Boolean>(
getSubjectHolder(),
EclipseLinkCustomization.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<EclipseLinkCustomization, Boolean>(getSubjectHolder(), EclipseLinkCustomization.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(JptJpaEclipseLinkUiMessages.PERSISTENCE_XML_CUSTOMIZATION_TAB_WEAVING_CHANGE_TRACKING_LABEL_DEFAULT, defaultStringValue);
}
return JptJpaEclipseLinkUiMessages.PERSISTENCE_XML_CUSTOMIZATION_TAB_WEAVING_CHANGE_TRACKING_LABEL;
}
};
}
private PropertyValueModel<Boolean> buildDefaultWeavingChangeTrackingHolder() {
return new PropertyAspectAdapter<EclipseLinkCustomization, Boolean>(
getSubjectHolder(),
EclipseLinkCustomization.WEAVING_CHANGE_TRACKING_PROPERTY)
{
@Override
protected Boolean buildValue_() {
if (this.subject.getWeavingChangeTracking() != null) {
return null;
}
return this.subject.getDefaultWeavingChangeTracking();
}
};
}
}