package org.eclipse.persistence.tools.workbench.mappingsplugin.ui.mapping.xml; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.Insets; import java.util.ArrayList; import java.util.Collection; import javax.swing.JCheckBox; import org.eclipse.persistence.tools.workbench.framework.context.WorkbenchContextHolder; import org.eclipse.persistence.tools.workbench.framework.ui.view.AbstractSubjectPanel; import org.eclipse.persistence.tools.workbench.framework.uitools.GroupBox; import org.eclipse.persistence.tools.workbench.framework.uitools.Pane; import org.eclipse.persistence.tools.workbench.mappingsmodel.mapping.xml.MWAbstractCompositeMapping; import org.eclipse.persistence.tools.workbench.uitools.ComponentEnabler; import org.eclipse.persistence.tools.workbench.uitools.app.PropertyAspectAdapter; import org.eclipse.persistence.tools.workbench.uitools.app.PropertyValueModel; import org.eclipse.persistence.tools.workbench.uitools.app.ValueModel; import org.eclipse.persistence.tools.workbench.uitools.app.swing.CheckBoxModelAdapter; public final class UseContainerAccessorPanel extends AbstractSubjectPanel { private PropertyValueModel usesContainerAccessorHolder; public UseContainerAccessorPanel(ValueModel subjectHolder, WorkbenchContextHolder contextHolder) { super(subjectHolder, contextHolder); } @Override protected void initialize(ValueModel subjectHolder) { super.initialize(subjectHolder); this.usesContainerAccessorHolder = buildUsesContainerAccessorHolder(); } @Override protected void initializeLayout() { GridBagConstraints constraints = new GridBagConstraints(); Collection components = new ArrayList(); // Add container accessor JCheckBox containerAccessorCheckBox = buildUsesContainerAccessorCheckbox(); Pane containerAccessorPanel = new Pane(new GridBagLayout()); GroupBox groupBox = new GroupBox(containerAccessorCheckBox, containerAccessorPanel); constraints.gridx = 0; constraints.gridy = 0; constraints.gridwidth = 1; constraints.gridheight = 1; constraints.weightx = 1; constraints.weighty = 0; constraints.fill = GridBagConstraints.HORIZONTAL; constraints.anchor = GridBagConstraints.CENTER; constraints.insets = new Insets(0, 0, 0, 0); add(groupBox, constraints); // container accessor ContainerAccessorPanel containerAccessorSubpanelPanel = this.buildContainerAccessorSubPanel(); components.add(containerAccessorSubpanelPanel); constraints.gridx = 0; constraints.gridy = 0; constraints.gridwidth = 1; constraints.gridheight = 1; constraints.weightx = 1; constraints.weighty = 0; constraints.fill = GridBagConstraints.HORIZONTAL; constraints.anchor = GridBagConstraints.CENTER; constraints.insets = new Insets(0, 5, 0, 5); containerAccessorPanel.add(containerAccessorSubpanelPanel, constraints); addPaneForAlignment(containerAccessorSubpanelPanel); addHelpTopicId(this, "mapping.containerAccessor"); new ComponentEnabler(this.usesContainerAccessorHolder, components); } // **************** Container Accessor sub panel *************************** private ContainerAccessorPanel buildContainerAccessorSubPanel() { return new ContainerAccessorPanel(this.getSubjectHolder(), this.getWorkbenchContextHolder()); } // ************* use container accessor ************ private JCheckBox buildUsesContainerAccessorCheckbox() { JCheckBox checkBox = buildCheckBox("USE_CONTAINER_ACCESSOR_CHECK_BOX", new CheckBoxModelAdapter(this.usesContainerAccessorHolder)); return checkBox; } private PropertyValueModel buildUsesContainerAccessorHolder() { return new PropertyAspectAdapter(getSubjectHolder(), MWAbstractCompositeMapping.USES_CONTAINER_ACCESSOR_PROPERTY) { protected Object getValueFromSubject() { return ((MWAbstractCompositeMapping) this.subject).usesContainerAccessor(); } protected void setValueOnSubject(Object value) { ((MWAbstractCompositeMapping) this.subject).setUsesContainerAccessor((Boolean)value); } }; } }