blob: abba08a8097c002fb0b7d85b71e3d4301b51e9f6 [file] [log] [blame]
/*******************************************************************************
* 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.jface.viewers.ComboViewer;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.jpt.core.internal.mappings.DefaultTrueBoolean;
import org.eclipse.jpt.core.internal.mappings.IEntity;
import org.eclipse.jpt.core.internal.mappings.IJoinColumn;
import org.eclipse.jpt.core.internal.mappings.ISingleRelationshipMapping;
import org.eclipse.jpt.db.internal.Table;
import org.eclipse.jpt.ui.internal.IJpaHelpContextIds;
import org.eclipse.jpt.ui.internal.mappings.JpaUiMappingsMessages;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.help.IWorkbenchHelpSystem;
public class JoinColumnDialog extends AbstractJoinColumnDialog<IJoinColumn> {
private DefaultTrueBoolean insertable;
private ComboViewer insertableComboViewer;
private DefaultTrueBoolean updatable;
private ComboViewer updatableComboViewer;
private ISingleRelationshipMapping singleRelationshipMapping;
JoinColumnDialog(Shell parent, ISingleRelationshipMapping singleRelationshipMapping) {
super(parent);
this.singleRelationshipMapping = singleRelationshipMapping;
}
JoinColumnDialog(Shell parent, IJoinColumn joinColumn) {
super(parent, joinColumn);
this.singleRelationshipMapping = (ISingleRelationshipMapping) joinColumn.eContainer();
}
protected Control createDialogArea(Composite parent) {
IWorkbenchHelpSystem helpSystem = PlatformUI.getWorkbench().getHelpSystem();
Composite composite = (Composite) super.createDialogArea(parent);
Label insertableLabel = new Label(composite, SWT.LEFT);
insertableLabel.setText(JpaUiMappingsMessages.JoinColumnDialog_insertable);
insertableLabel.setLayoutData(new GridData());
this.insertableComboViewer = this.buildInsertableComboViewer(composite);
this.insertableComboViewer.getCombo().setLayoutData(new GridData(GridData.FILL_HORIZONTAL | GridData.GRAB_HORIZONTAL));
helpSystem.setHelp(this.insertableComboViewer.getCombo(), IJpaHelpContextIds.MAPPING_COLUMN_INSERTABLE);
Label updatableLabel = new Label(composite, SWT.LEFT);
updatableLabel.setText(JpaUiMappingsMessages.JoinColumnDialog_updatable);
updatableLabel.setLayoutData(new GridData());
this.updatableComboViewer = this.buildUpdatableComboViewer(composite);
this.updatableComboViewer.getCombo().setLayoutData(new GridData(GridData.FILL_HORIZONTAL | GridData.GRAB_HORIZONTAL));
helpSystem.setHelp(this.updatableComboViewer.getCombo(), IJpaHelpContextIds.MAPPING_COLUMN_UPDATABLE);
return composite;
}
private ComboViewer buildInsertableComboViewer(Composite parent) {
ComboViewer viewer = new ComboViewer(parent, SWT.READ_ONLY);
viewer.add(DefaultTrueBoolean.VALUES.toArray());
DefaultTrueBoolean sel = (this.joinColumn() == null) ? DefaultTrueBoolean.DEFAULT : this.joinColumn().getInsertable();
viewer.setSelection(new StructuredSelection(sel));
return viewer;
}
private ComboViewer buildUpdatableComboViewer(Composite parent) {
ComboViewer viewer = new ComboViewer(parent, SWT.READ_ONLY);
viewer.add(DefaultTrueBoolean.VALUES.toArray());
DefaultTrueBoolean sel = (this.joinColumn() == null) ? DefaultTrueBoolean.DEFAULT : this.joinColumn().getUpdatable();
viewer.setSelection(new StructuredSelection(sel));
return viewer;
}
protected Table getNameTable() {
return this.singleRelationshipMapping.typeMapping().primaryDbTable();
}
protected Table getReferencedNameTable() {
IEntity targetEntity = this.singleRelationshipMapping.getResolvedTargetEntity();
if (targetEntity != null) {
return targetEntity.primaryDbTable();
}
return null;
}
private IJoinColumn joinColumn() {
return this.getJoinColumn();
}
public DefaultTrueBoolean getInsertable() {
return this.insertable;
}
public DefaultTrueBoolean getUpdatable() {
return this.updatable;
}
public boolean close() {
ISelection selection = this.insertableComboViewer.getSelection();
if (selection instanceof IStructuredSelection) {
this.insertable = (DefaultTrueBoolean) ((IStructuredSelection) selection).getFirstElement();
}
selection = this.updatableComboViewer.getSelection();
if (selection instanceof IStructuredSelection) {
this.updatable = (DefaultTrueBoolean) ((IStructuredSelection) selection).getFirstElement();
}
return super.close();
}
}