| /******************************************************************************* |
| * Copyright (c) 2006, 2007 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.ui.internal.mappings.details; |
| |
| import org.eclipse.emf.common.command.CommandStack; |
| import org.eclipse.emf.ecore.EObject; |
| import org.eclipse.jpt.core.internal.mappings.IEntity; |
| import org.eclipse.jpt.ui.internal.IJpaHelpContextIds; |
| import org.eclipse.jpt.ui.internal.details.BaseJpaComposite; |
| import org.eclipse.jpt.ui.internal.mappings.JptUiMappingsMessages; |
| import org.eclipse.swt.SWT; |
| import org.eclipse.swt.layout.GridData; |
| import org.eclipse.swt.layout.GridLayout; |
| import org.eclipse.swt.widgets.Composite; |
| import org.eclipse.swt.widgets.Control; |
| import org.eclipse.ui.PlatformUI; |
| import org.eclipse.ui.forms.widgets.ExpandableComposite; |
| import org.eclipse.ui.forms.widgets.Section; |
| import org.eclipse.ui.help.IWorkbenchHelpSystem; |
| import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetWidgetFactory; |
| |
| public class EntityComposite extends BaseJpaComposite |
| { |
| private IEntity entity; |
| |
| private EntityNameCombo entityNameCombo; |
| |
| private TableComposite tableComposite; |
| private InheritanceComposite inheritanceComposite; |
| private SecondaryTablesComposite secondaryTablesComposite; |
| private OverridesComposite attributeOverridesComposite; |
| |
| public EntityComposite(Composite parent, CommandStack commandStack, TabbedPropertySheetWidgetFactory widgetFactory) { |
| super(parent, SWT.NULL, commandStack, widgetFactory); |
| } |
| |
| @Override |
| protected void initializeLayout(Composite composite) { |
| GridLayout layout = new GridLayout(); |
| layout.marginWidth = 0; |
| composite.setLayout(layout); |
| |
| Control generalControl = buildGeneralComposite(composite); |
| GridData gridData = new GridData(); |
| gridData.horizontalAlignment = GridData.FILL; |
| gridData.grabExcessHorizontalSpace = true; |
| generalControl.setLayoutData(gridData); |
| |
| Control attributeOverridesControl = buildAttributeOverridesComposite(composite); |
| gridData = new GridData(); |
| gridData.horizontalAlignment = GridData.FILL; |
| gridData.grabExcessHorizontalSpace = true; |
| attributeOverridesControl.setLayoutData(gridData); |
| |
| Control secondaryTablesControl = buildSecondaryTablesComposite(composite); |
| gridData = new GridData(); |
| gridData.horizontalAlignment = GridData.FILL; |
| gridData.grabExcessHorizontalSpace = true; |
| secondaryTablesControl.setLayoutData(gridData); |
| |
| Control inheritanceControl = buildInheritanceComposite(composite); |
| gridData = new GridData(); |
| gridData.horizontalAlignment = GridData.FILL; |
| gridData.grabExcessHorizontalSpace = true; |
| inheritanceControl.setLayoutData(gridData); |
| } |
| |
| private Control buildGeneralComposite(Composite composite) { |
| IWorkbenchHelpSystem helpSystem = PlatformUI.getWorkbench().getHelpSystem(); |
| |
| Composite generalComposite = getWidgetFactory().createComposite(composite); |
| GridLayout layout = new GridLayout(2, false); |
| layout.marginWidth = 0; |
| generalComposite.setLayout(layout); |
| |
| CommonWidgets.buildEntityNameLabel(generalComposite, getWidgetFactory()); |
| |
| this.entityNameCombo = |
| CommonWidgets.buildEntityNameCombo(generalComposite, this.commandStack, getWidgetFactory()); |
| GridData gridData = new GridData(); |
| gridData.horizontalAlignment = GridData.FILL; |
| gridData.grabExcessHorizontalSpace = true; |
| this.entityNameCombo.getCombo().setLayoutData(gridData); |
| helpSystem.setHelp(this.entityNameCombo.getCombo(), IJpaHelpContextIds.ENTITY_NAME); |
| |
| |
| this.tableComposite = new TableComposite(generalComposite, this.commandStack, getWidgetFactory()); |
| gridData = new GridData(); |
| gridData.horizontalAlignment = GridData.FILL; |
| gridData.grabExcessHorizontalSpace = true; |
| gridData.horizontalSpan = 2; |
| this.tableComposite.getControl().setLayoutData(gridData); |
| |
| return generalComposite; |
| } |
| |
| private Control buildSecondaryTablesComposite(Composite composite) { |
| Section section = getWidgetFactory().createSection(composite, SWT.FLAT | ExpandableComposite.TWISTIE | ExpandableComposite.TITLE_BAR); |
| section.setText(JptUiMappingsMessages.SecondaryTablesComposite_secondaryTables); |
| |
| Composite client = getWidgetFactory().createComposite(section); |
| section.setClient(client); |
| |
| GridLayout layout = new GridLayout(); |
| layout.marginWidth = 0; |
| client.setLayout(layout); |
| |
| this.secondaryTablesComposite = new SecondaryTablesComposite(client, this.commandStack, getWidgetFactory()); |
| GridData gridData = new GridData(); |
| gridData.horizontalAlignment = GridData.FILL; |
| gridData.verticalAlignment = GridData.FILL; |
| gridData.grabExcessHorizontalSpace = true; |
| gridData.grabExcessVerticalSpace = true; |
| this.secondaryTablesComposite.getControl().setLayoutData(gridData); |
| |
| return section; |
| } |
| |
| private Control buildInheritanceComposite(Composite composite) { |
| Section section = getWidgetFactory().createSection(composite, SWT.FLAT | ExpandableComposite.TWISTIE | ExpandableComposite.TITLE_BAR); |
| section.setText(JptUiMappingsMessages.EntityComposite_inheritance); |
| |
| Composite inheritanceClient = getWidgetFactory().createComposite(section); |
| section.setClient(inheritanceClient); |
| |
| GridLayout layout = new GridLayout(); |
| layout.marginWidth = 0; |
| inheritanceClient.setLayout(layout); |
| |
| this.inheritanceComposite = new InheritanceComposite(inheritanceClient, this.commandStack, getWidgetFactory()); |
| GridData gridData = new GridData(); |
| gridData.horizontalAlignment = GridData.FILL; |
| gridData.verticalAlignment = GridData.FILL; |
| gridData.grabExcessHorizontalSpace = true; |
| gridData.grabExcessVerticalSpace = true; |
| this.inheritanceComposite.getControl().setLayoutData(gridData); |
| |
| return section; |
| } |
| |
| private Control buildAttributeOverridesComposite(Composite composite) { |
| Section section = getWidgetFactory().createSection(composite, SWT.FLAT | ExpandableComposite.TWISTIE | ExpandableComposite.TITLE_BAR); |
| section.setText(JptUiMappingsMessages.AttributeOverridesComposite_attributeOverrides); |
| //section.setExpanded(true); //not going to expand this for now, it causes the scroll bar not to appear |
| Composite client = getWidgetFactory().createComposite(section); |
| section.setClient(client); |
| |
| GridLayout layout = new GridLayout(); |
| layout.marginWidth = 0; |
| client.setLayout(layout); |
| |
| this.attributeOverridesComposite = new OverridesComposite(client, this.commandStack, getWidgetFactory()); |
| GridData gridData = new GridData(); |
| gridData.horizontalAlignment = GridData.FILL; |
| gridData.verticalAlignment = GridData.FILL; |
| gridData.grabExcessHorizontalSpace = true; |
| gridData.grabExcessVerticalSpace = true; |
| this.attributeOverridesComposite.getControl().setLayoutData(gridData); |
| |
| return section; |
| } |
| |
| //TODO talk to JavaEditor people about what we can do to hook in TabbedProperties for the JavaEditor |
| |
| public void doPopulate(EObject obj) { |
| this.entity = (IEntity) obj; |
| this.entityNameCombo.populate(obj); |
| this.attributeOverridesComposite.populate(obj); |
| this.secondaryTablesComposite.populate(obj); |
| this.inheritanceComposite.populate(obj); |
| if (this.entity != null) { |
| this.tableComposite.populate(this.entity.getTable()); |
| } |
| else { |
| this.tableComposite.populate(null); |
| } |
| } |
| |
| public void doPopulate() { |
| this.entityNameCombo.populate(); |
| this.tableComposite.populate(); |
| this.attributeOverridesComposite.populate(); |
| this.secondaryTablesComposite.populate(); |
| this.inheritanceComposite.populate(); |
| } |
| |
| protected void engageListeners() { |
| } |
| |
| protected void disengageListeners() { |
| } |
| |
| @Override |
| public void dispose() { |
| this.entityNameCombo.dispose(); |
| this.tableComposite.dispose(); |
| this.attributeOverridesComposite.dispose(); |
| this.secondaryTablesComposite.dispose(); |
| this.inheritanceComposite.dispose(); |
| super.dispose(); |
| } |
| |
| protected IEntity getEntity() { |
| return this.entity; |
| } |
| |
| } |