diff options
Diffstat (limited to 'jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/mappings/details/SecondaryTablesComposite.java')
-rw-r--r-- | jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/mappings/details/SecondaryTablesComposite.java | 388 |
1 files changed, 0 insertions, 388 deletions
diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/mappings/details/SecondaryTablesComposite.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/mappings/details/SecondaryTablesComposite.java deleted file mode 100644 index 052cd72f48..0000000000 --- a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/mappings/details/SecondaryTablesComposite.java +++ /dev/null @@ -1,388 +0,0 @@ -/******************************************************************************* - * 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 java.util.Iterator; -import org.eclipse.emf.common.command.CommandStack; -import org.eclipse.emf.common.notify.Adapter; -import org.eclipse.emf.common.notify.Notification; -import org.eclipse.emf.common.notify.impl.AdapterImpl; -import org.eclipse.emf.ecore.EObject; -import org.eclipse.jface.viewers.IContentProvider; -import org.eclipse.jface.viewers.ILabelProvider; -import org.eclipse.jface.viewers.ISelection; -import org.eclipse.jface.viewers.ISelectionChangedListener; -import org.eclipse.jface.viewers.IStructuredContentProvider; -import org.eclipse.jface.viewers.LabelProvider; -import org.eclipse.jface.viewers.ListViewer; -import org.eclipse.jface.viewers.SelectionChangedEvent; -import org.eclipse.jface.viewers.StructuredSelection; -import org.eclipse.jface.viewers.Viewer; -import org.eclipse.jface.window.Window; -import org.eclipse.jpt.core.internal.mappings.IEntity; -import org.eclipse.jpt.core.internal.mappings.ISecondaryTable; -import org.eclipse.jpt.core.internal.mappings.ITable; -import org.eclipse.jpt.core.internal.mappings.JpaCoreMappingsPackage; -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.events.SelectionEvent; -import org.eclipse.swt.events.SelectionListener; -import org.eclipse.swt.layout.GridData; -import org.eclipse.swt.layout.GridLayout; -import org.eclipse.swt.widgets.Button; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Display; -import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetWidgetFactory; - -//TODO handle xml, how to handle virtual secondaryTables, adding them to xml, are they overriden, etc?? -public class SecondaryTablesComposite extends BaseJpaComposite -{ - private IEntity entity; - private final Adapter entityListener; - private final Adapter secondaryTableListener; - - ListViewer secondaryTablesListViewer; - - private Button addButton; - private Button editButton; - private Button removeButton; - - private PrimaryKeyJoinColumnsInSecondaryTableComposite pkJoinColumnsComposite; - - public SecondaryTablesComposite(Composite parent, CommandStack commandStack, TabbedPropertySheetWidgetFactory widgetFactory) { - super(parent, SWT.NULL, commandStack, widgetFactory); - this.entityListener = buildEntityListener(); - this.secondaryTableListener = buildSecondaryTableListener(); - } - - private Adapter buildEntityListener() { - return new AdapterImpl() { - public void notifyChanged(Notification notification) { - entityChanged(notification); - } - }; - } - - private Adapter buildSecondaryTableListener() { - return new AdapterImpl() { - public void notifyChanged(Notification notification) { - seoncaryTableChanged(notification); - } - }; - } - - @Override - protected void initializeLayout(Composite composite) { - GridLayout layout = new GridLayout(2, false); - layout.marginWidth = 0; - composite.setLayout(layout); - - GridData gridData = new GridData(); - - Composite secondaryTablesComposite = new Composite(composite, SWT.NONE); - layout = new GridLayout(3, false); - layout.marginWidth = 0; - secondaryTablesComposite.setLayout(layout); - gridData = new GridData(); - gridData.horizontalAlignment = GridData.FILL; - gridData.verticalAlignment = GridData.FILL; - gridData.grabExcessHorizontalSpace = true; - gridData.grabExcessVerticalSpace = true; - secondaryTablesComposite.setLayoutData(gridData); - - this.secondaryTablesListViewer = buildSecondaryTablesListViewer(secondaryTablesComposite); - gridData = new GridData(); - gridData.horizontalAlignment = GridData.FILL; - gridData.verticalAlignment = GridData.FILL; - gridData.horizontalSpan = 3; - gridData.grabExcessHorizontalSpace = true; - gridData.grabExcessVerticalSpace = true; - this.secondaryTablesListViewer.getList().setLayoutData(gridData); - //PlatformUI.getWorkbench().getHelpSystem().setHelp(this.secondaryTablesListViewer.getList(), IJpaHelpContextIds.MAPPING_JOIN_TABLE_COLUMNS); - - Composite buttonsComposite = new Composite(secondaryTablesComposite, SWT.NONE); - layout = new GridLayout(3, false); - layout.marginWidth = 0; - buttonsComposite.setLayout(layout); - gridData = new GridData(); - gridData.horizontalAlignment = SWT.END; - buttonsComposite.setLayoutData(gridData); - - this.addButton = getWidgetFactory().createButton( - buttonsComposite, - JptUiMappingsMessages.SecondaryTablesComposite_add, - SWT.NONE); - gridData = new GridData(); - gridData.horizontalAlignment = GridData.FILL; - this.addButton.setLayoutData(gridData); - this.addButton.addSelectionListener(new SelectionListener() { - public void widgetDefaultSelected(SelectionEvent e) { - // do nothing - } - - public void widgetSelected(SelectionEvent e) { - addSecondaryTable(); - } - }); - - this.editButton = getWidgetFactory().createButton( - buttonsComposite, - JptUiMappingsMessages.SecondaryTablesComposite_edit, - SWT.NONE); - gridData = new GridData(); - gridData.horizontalAlignment = GridData.FILL; - this.editButton.setLayoutData(gridData); - this.editButton.addSelectionListener(new SelectionListener() { - public void widgetDefaultSelected(SelectionEvent e) { - // do nothing - } - - public void widgetSelected(SelectionEvent e) { - editSecondaryTable(); - } - }); - - this.removeButton = getWidgetFactory().createButton( - buttonsComposite, - JptUiMappingsMessages.SecondaryTablesComposite_remove, - SWT.NONE); - gridData = new GridData(); - gridData.horizontalAlignment = GridData.FILL; - gridData.verticalAlignment = GridData.BEGINNING; - this.removeButton.setLayoutData(gridData); - this.removeButton.addSelectionListener(new SelectionListener() { - public void widgetDefaultSelected(SelectionEvent e) { - // do nothing - } - - public void widgetSelected(SelectionEvent e) { - removeSecondaryTable(); - } - }); - - this.pkJoinColumnsComposite = new PrimaryKeyJoinColumnsInSecondaryTableComposite(composite, this.commandStack, getWidgetFactory()); - gridData = new GridData(); - gridData.horizontalAlignment = GridData.FILL; - gridData.verticalAlignment = GridData.FILL; - gridData.grabExcessHorizontalSpace = true; - gridData.grabExcessVerticalSpace = true; - this.pkJoinColumnsComposite.getControl().setLayoutData(gridData); - } - - private ListViewer buildSecondaryTablesListViewer(Composite parent) { - ListViewer listViewer = new ListViewer(parent, SWT.SINGLE | SWT.BORDER); - listViewer.setLabelProvider(buildSecondaryTablesListLabelProvider()); - listViewer.setContentProvider(buildSecondaryTablesListContentProvider()); - - listViewer.addSelectionChangedListener(new ISelectionChangedListener() { - public void selectionChanged(SelectionChangedEvent event) { - updateEnablement(); - secondaryTablesListSelectionChanged(event); - } - }); - - return listViewer; - } - - protected void secondaryTablesListSelectionChanged(SelectionChangedEvent event) { - if (((StructuredSelection) event.getSelection()).isEmpty()) { - this.pkJoinColumnsComposite.populate(null); - this.pkJoinColumnsComposite.enableWidgets(false); - } - else { - ISecondaryTable selectedSecondaryTable = getSelectedSecondaryTable(); - this.pkJoinColumnsComposite.populate(selectedSecondaryTable); - this.pkJoinColumnsComposite.enableWidgets(true); - } - } - - private IContentProvider buildSecondaryTablesListContentProvider() { - return new IStructuredContentProvider(){ - public void inputChanged(Viewer viewer, Object oldInput, Object newInput) { - // do nothing - } - - public void dispose() { - // do nothing - } - - public Object[] getElements(Object inputElement) { - return ((IEntity) inputElement).getSecondaryTables().toArray(); - } - }; - } - - private ILabelProvider buildSecondaryTablesListLabelProvider() { - return new LabelProvider() { - public String getText(Object element) { - //TODO display a qualified name instead - ISecondaryTable secondaryTable = (ISecondaryTable) element; - return secondaryTable.getName(); - } - }; - } - - void addSecondaryTable() { - SecondaryTableDialog dialog = new SecondaryTableDialog(this.getControl().getShell(), this.entity); - addSecondaryTableFromDialog(dialog); - } - - private void addSecondaryTableFromDialog(SecondaryTableDialog dialog) { - if (dialog.open() == Window.OK) { - int index = this.entity.getSpecifiedSecondaryTables().size(); - String name = dialog.getSelectedName(); - String catalog = dialog.getSelectedCatalog(); - String schema = dialog.getSelectedSchema(); - ISecondaryTable secondaryTable = this.entity.createSecondaryTable(index); - this.entity.getSpecifiedSecondaryTables().add(secondaryTable); - secondaryTable.setSpecifiedName(name); - secondaryTable.setSpecifiedCatalog(catalog); - secondaryTable.setSpecifiedSchema(schema); - - this.secondaryTablesListViewer.setSelection(new StructuredSelection(secondaryTable)); - } - } - - void editSecondaryTable() { - ISecondaryTable secondaryTable = getSelectedSecondaryTable(); - SecondaryTableDialog dialog = new SecondaryTableDialog(this.getControl().getShell(), secondaryTable, this.entity); - editSecondaryTableFromDialog(dialog, secondaryTable); - } - - private void editSecondaryTableFromDialog(SecondaryTableDialog dialog, ISecondaryTable secondaryTable) { - if (dialog.open() == Window.OK) { - editSecondaryTableDialogOkd(dialog, secondaryTable); - } - } - - private void editSecondaryTableDialogOkd(SecondaryTableDialog dialog, ISecondaryTable secondaryTable) { - String name = dialog.getSelectedName(); - String catalog = dialog.getSelectedCatalog(); - String schema = dialog.getSelectedSchema(); - - if (secondaryTable.getSpecifiedName() == null || !secondaryTable.getSpecifiedName().equals(name)){ - secondaryTable.setSpecifiedName(name); - } - - if (dialog.isDefaultCatalogSelected()) { - if (secondaryTable.getSpecifiedCatalog() != null) { - secondaryTable.setSpecifiedCatalog(null); - } - } - else if (secondaryTable.getSpecifiedCatalog() == null || !secondaryTable.getSpecifiedCatalog().equals(catalog)){ - secondaryTable.setSpecifiedCatalog(catalog); - } - - if (dialog.isDefaultSchemaSelected()) { - if (secondaryTable.getSpecifiedSchema() != null) { - secondaryTable.setSpecifiedSchema(null); - } - } - else if (secondaryTable.getSpecifiedSchema() == null || !secondaryTable.getSpecifiedSchema().equals(schema)){ - secondaryTable.setSpecifiedSchema(schema); - } - } - - private ISecondaryTable getSelectedSecondaryTable() { - return (ISecondaryTable) ((StructuredSelection) this.secondaryTablesListViewer.getSelection()).getFirstElement(); - } - - - void removeSecondaryTable() { - ISelection selection = this.secondaryTablesListViewer.getSelection(); - if (selection instanceof StructuredSelection) { - for (Iterator<ISecondaryTable> i = ((StructuredSelection) selection).iterator(); i.hasNext(); ) { - this.entity.getSpecifiedSecondaryTables().remove(i.next()); - } - } - } - - void updateEnablement() { - this.editButton.setEnabled(!((StructuredSelection) this.secondaryTablesListViewer.getSelection()).isEmpty()); - this.removeButton.setEnabled(!((StructuredSelection) this.secondaryTablesListViewer.getSelection()).isEmpty()); - } - - public void doPopulate(EObject obj) { - this.entity = (IEntity) obj; - if (this.entity == null) { - this.secondaryTablesListViewer.setInput(null); - return; - } - - this.secondaryTablesListViewer.setInput(this.entity); - if (!this.entity.getSecondaryTables().isEmpty()) { - this.secondaryTablesListViewer.setSelection(new StructuredSelection(this.entity.getSecondaryTables().get(0))); - } - else { - this.secondaryTablesListViewer.setSelection(null); - } - updateEnablement(); - } - - @Override - protected void doPopulate() { - } - - protected void engageListeners() { - if (this.entity != null) { - this.entity.eAdapters().add(this.entityListener); - for (ISecondaryTable secondaryTable : this.entity.getSecondaryTables()) { - secondaryTable.eAdapters().add(this.secondaryTableListener); - } - } - } - - protected void disengageListeners() { - if (this.entity != null) { - for (ISecondaryTable secondaryTable : this.entity.getSecondaryTables()) { - secondaryTable.eAdapters().remove(this.secondaryTableListener); - } - this.entity.eAdapters().remove(this.entityListener); - } - } - - protected void entityChanged(Notification notification) { - if (notification.getFeatureID(IEntity.class) == JpaCoreMappingsPackage.IENTITY__SPECIFIED_SECONDARY_TABLES) { - if (notification.getEventType() == Notification.ADD) { - ((ISecondaryTable) notification.getNewValue()).eAdapters().add(this.secondaryTableListener); - } - else if (notification.getEventType() == Notification.REMOVE) { - ((ISecondaryTable) notification.getOldValue()).eAdapters().remove(this.secondaryTableListener); - } - Display.getDefault().asyncExec(new Runnable() { - public void run() { - if (getControl().isDisposed()) { - return; - } - secondaryTablesListViewer.refresh(); - updateEnablement(); - } - }); - } - } - - protected void seoncaryTableChanged(Notification notification) { - if (notification.getFeatureID(ITable.class) == JpaCoreMappingsPackage.ITABLE__SPECIFIED_NAME - || notification.getFeatureID(ITable.class) == JpaCoreMappingsPackage.ITABLE__SPECIFIED_CATALOG - || notification.getFeatureID(ITable.class) == JpaCoreMappingsPackage.ITABLE__SPECIFIED_SCHEMA - || notification.getFeatureID(ITable.class) == JpaCoreMappingsPackage.ITABLE__DEFAULT_CATALOG - || notification.getFeatureID(ITable.class) == JpaCoreMappingsPackage.ITABLE__DEFAULT_SCHEMA) { - Display.getDefault().asyncExec(new Runnable() { - public void run() { - if (getControl().isDisposed()) { - return; - } - secondaryTablesListViewer.refresh(); - } - }); - } - } -} |