/******************************************************************************* * Copyright (c) 2011, 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.details.orm; import org.eclipse.jface.resource.ResourceManager; import org.eclipse.jpt.common.ui.WidgetFactory; import org.eclipse.jpt.common.utility.internal.model.value.PropertyAspectAdapter; import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; import org.eclipse.jpt.jpa.core.context.QueryContainer; import org.eclipse.jpt.jpa.eclipselink.core.context.orm.EclipseLinkOrmMappedSuperclass; import org.eclipse.jpt.jpa.eclipselink.core.context.orm.EclipseLinkOrmMultitenancy2_3; import org.eclipse.jpt.jpa.eclipselink.ui.details.JptJpaEclipseLinkUiDetailsMessages; import org.eclipse.jpt.jpa.eclipselink.ui.internal.details.EclipseLinkMultitenancyComposite; import org.eclipse.jpt.jpa.ui.details.JptJpaUiDetailsMessages; import org.eclipse.jpt.jpa.ui.internal.details.QueriesComposite; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.ui.forms.events.ExpansionAdapter; import org.eclipse.ui.forms.events.ExpansionEvent; import org.eclipse.ui.forms.widgets.ExpandableComposite; import org.eclipse.ui.forms.widgets.Section; public class EclipseLinkOrmMappedSuperclassComposite2_3 extends EclipseLinkAbstractOrmMappedSuperclassComposite { public EclipseLinkOrmMappedSuperclassComposite2_3( PropertyValueModel mappedSuperclassModel, Composite parentComposite, WidgetFactory widgetFactory, ResourceManager resourceManager) { super(mappedSuperclassModel, parentComposite, widgetFactory, resourceManager); } @Override protected void initializeLayout(Composite container) { this.initializeMappedSuperclassCollapsibleSection(container); this.initializeCachingCollapsibleSection(container); this.initializeQueriesCollapsibleSection(container); this.initializeMultitenancyCollapsibleSection(container); this.initializeGeneratorsCollapsibleSection(container); this.initializeConvertersCollapsibleSection(container); this.initializeAdvancedCollapsibleSection(container); } @Override protected Control initializeCachingSection(Composite container) { return new EclipseLinkOrmCachingComposite2_0(this, this.buildCachingModel(), container).getControl(); } protected void initializeQueriesCollapsibleSection(Composite container) { final Section section = this.getWidgetFactory().createSection(container, ExpandableComposite.TITLE_BAR | ExpandableComposite.TWISTIE); section.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); section.setText(JptJpaUiDetailsMessages.ENTITY_COMPOSITE_QUERIES); section.addExpansionListener(new ExpansionAdapter() { @Override public void expansionStateChanging(ExpansionEvent e) { if (e.getState() && section.getClient() == null) { section.setClient(initializeQueriesSection(section)); } } }); } protected Control initializeQueriesSection(Composite container) { return new QueriesComposite(this, this.buildQueryContainerModel(), container).getControl(); } private PropertyValueModel buildQueryContainerModel() { return new PropertyAspectAdapter( getSubjectHolder()) { @Override protected QueryContainer buildValue_() { return this.subject.getQueryContainer(); } }; } protected void initializeMultitenancyCollapsibleSection(Composite container) { final Section section = this.getWidgetFactory().createSection(container, ExpandableComposite.TITLE_BAR | ExpandableComposite.TWISTIE); section.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); section.setText(JptJpaEclipseLinkUiDetailsMessages.ECLIPSELINK_TYPE_MAPPING_COMPOSITE_MULTITENANCY); section.addExpansionListener(new ExpansionAdapter() { @Override public void expansionStateChanging(ExpansionEvent e) { if (e.getState() && section.getClient() == null) { section.setClient(initializeMultitenancySection(section)); } } }); } protected Control initializeMultitenancySection(Composite container) { return new EclipseLinkMultitenancyComposite(this, this.buildMultitenancyModel(), container).getControl(); } private PropertyAspectAdapter buildMultitenancyModel() { return new PropertyAspectAdapter(getSubjectHolder()) { @Override protected EclipseLinkOrmMultitenancy2_3 buildValue_() { return this.subject.getMultitenancy(); } }; } }