| /* |
| * Copyright (C) 2012 The Android Open Source Project |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| package com.motorolamobility.studio.android.db.core.ui.wizards; |
| |
| import org.eclipse.jface.dialogs.Dialog; |
| import org.eclipse.swt.SWT; |
| import org.eclipse.swt.events.ModifyEvent; |
| import org.eclipse.swt.events.ModifyListener; |
| import org.eclipse.swt.events.SelectionAdapter; |
| import org.eclipse.swt.events.SelectionEvent; |
| import org.eclipse.swt.layout.GridData; |
| import org.eclipse.swt.layout.GridLayout; |
| import org.eclipse.swt.widgets.Button; |
| import org.eclipse.swt.widgets.Combo; |
| 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.swt.widgets.Text; |
| |
| import com.motorolamobility.studio.android.db.core.i18n.DbCoreNLS; |
| import com.motorolamobility.studio.android.db.core.model.Field; |
| import com.motorolamobility.studio.android.db.core.model.Field.AutoIncrementType; |
| import com.motorolamobility.studio.android.db.core.model.Field.DataType; |
| |
| public class AddTableFieldDialog extends Dialog |
| { |
| |
| private Field field; |
| |
| private Text nameText; |
| |
| private Combo typeCombo; |
| |
| private Text defaultText; |
| |
| private Button isPrimaryButton; |
| |
| private Composite primaryKeyOptions; |
| |
| private Button noneButton; |
| |
| private Button incrementalButton; |
| |
| private Button decrementalButton; |
| |
| private Label primaryKeyBehavior; |
| |
| public AddTableFieldDialog(Shell parentShell) |
| { |
| super(parentShell); |
| } |
| |
| public AddTableFieldDialog(Shell parentShell, Field newField) |
| { |
| super(parentShell); |
| field = newField; |
| } |
| |
| /* |
| * (non-Javadoc) |
| * @see org.eclipse.jface.dialogs.Dialog#createDialogArea(org.eclipse.swt.widgets.Composite) |
| */ |
| @Override |
| public Control createDialogArea(Composite parent) |
| { |
| this.getShell().setText(DbCoreNLS.CreateTableWizardPage_AddEditField_DialogTitle); |
| Composite composite = new Composite(parent, SWT.FILL); |
| GridData layoutData = new GridData(SWT.FILL, SWT.FILL, true, true); |
| composite.setLayout(new GridLayout(2, false)); |
| composite.setLayoutData(layoutData); |
| layoutData = new GridData(SWT.LEFT, SWT.CENTER, false, false); |
| |
| Label nameLabel = new Label(composite, SWT.NONE); |
| nameLabel.setText(DbCoreNLS.AddTableFieldDialog_FieldNameLabel); |
| nameLabel.setLayoutData(layoutData); |
| |
| layoutData = new GridData(SWT.FILL, SWT.CENTER, true, false); |
| nameText = new Text(composite, SWT.BORDER); |
| nameText.setLayoutData(layoutData); |
| if (field != null) |
| { |
| nameText.setText(field.getName()); |
| } |
| |
| nameText.addModifyListener(new ModifyListener() |
| { |
| |
| public void modifyText(ModifyEvent e) |
| { |
| getButton(OK).setEnabled( |
| (nameText.getText().trim().length() > 0) |
| && !(nameText.getText().trim().contains(" "))); //$NON-NLS-1$ |
| |
| } |
| }); |
| |
| layoutData = new GridData(SWT.FILL, SWT.CENTER, true, false, 2, 1); |
| isPrimaryButton = new Button(composite, SWT.CHECK); |
| isPrimaryButton.setLayoutData(layoutData); |
| isPrimaryButton.setText(DbCoreNLS.AddTableFieldDialog_PrimaryKeyLabel); |
| if (field != null) |
| { |
| isPrimaryButton.setSelection(field.isPrimaryKey()); |
| |
| } |
| |
| isPrimaryButton.addSelectionListener(new SelectionAdapter() |
| { |
| @Override |
| public void widgetSelected(SelectionEvent e) |
| { |
| defaultText.setEnabled(!(isPrimaryButton.getSelection())); |
| primaryKeyOptions.setEnabled((isPrimaryButton.getSelection())); |
| } |
| }); |
| primaryKeyOptions = new Composite(composite, SWT.BORDER) |
| { |
| @Override |
| public void setEnabled(boolean enabled) |
| { |
| noneButton.setEnabled(enabled); |
| incrementalButton.setEnabled(enabled); |
| decrementalButton.setEnabled(enabled); |
| primaryKeyBehavior.setEnabled(enabled); |
| |
| super.setEnabled(enabled); |
| } |
| }; |
| layoutData = new GridData(SWT.FILL, SWT.FILL, true, true, 2, 1); |
| primaryKeyOptions.setLayout(new GridLayout(1, false)); |
| primaryKeyOptions.setLayoutData(layoutData); |
| |
| primaryKeyBehavior = new Label(primaryKeyOptions, SWT.NONE); |
| primaryKeyBehavior.setLayoutData(layoutData); |
| primaryKeyBehavior.setText(DbCoreNLS.AddTableFieldDialog_PrimaryKeyAutomaticBehaviourLabel); |
| |
| layoutData = new GridData(SWT.FILL, SWT.CENTER, true, false, 2, 1); |
| noneButton = new Button(primaryKeyOptions, SWT.RADIO); |
| noneButton.setLayoutData(layoutData); |
| noneButton.setText(DbCoreNLS.AddTableFieldDialog_PrimaryKeyAutomaticBehaviour_NoneLabel); |
| |
| incrementalButton = new Button(primaryKeyOptions, SWT.RADIO); |
| incrementalButton.setLayoutData(layoutData); |
| incrementalButton |
| .setText(DbCoreNLS.AddTableFieldDialog_PrimaryKeyAutomaticBehaviour_IncrementalLabel); |
| |
| decrementalButton = new Button(primaryKeyOptions, SWT.RADIO); |
| decrementalButton.setLayoutData(layoutData); |
| decrementalButton |
| .setText(DbCoreNLS.AddTableFieldDialog_PrimaryKeyAutomaticBehaviour_DecrementalLabel); |
| |
| Boolean isNew = (field != null) && (field.isPrimaryKey()); |
| if (isNew) |
| { |
| noneButton.setSelection((field.getAutoIncrementType() == AutoIncrementType.NONE)); |
| incrementalButton |
| .setSelection((field.getAutoIncrementType() == AutoIncrementType.ASCENDING)); |
| decrementalButton |
| .setSelection((field.getAutoIncrementType() == AutoIncrementType.DESCENDING)); |
| |
| } |
| else |
| { |
| noneButton.setSelection(true); |
| } |
| |
| primaryKeyOptions.setEnabled(isNew); |
| |
| layoutData = new GridData(SWT.LEFT, SWT.CENTER, false, false); |
| Label typeLabel = new Label(composite, SWT.NONE); |
| typeLabel.setText(DbCoreNLS.AddTableFieldDialog_FieldTypeLabel); |
| typeLabel.setLayoutData(layoutData); |
| |
| layoutData = new GridData(SWT.FILL, SWT.CENTER, true, false); |
| typeCombo = new Combo(composite, SWT.READ_ONLY); |
| typeCombo.setLayoutData(layoutData); |
| |
| int integerTypeIndex = 0; |
| |
| for (DataType type : DataType.values()) |
| { |
| typeCombo.add(type.toString()); |
| |
| if (type.equals(DataType.INTEGER)) |
| { |
| integerTypeIndex = typeCombo.getItemCount() - 1; |
| } |
| |
| } |
| |
| typeCombo.select(integerTypeIndex); |
| |
| if (field != null) |
| { |
| typeCombo.select(typeCombo.indexOf(field.getType().toString())); |
| } |
| |
| layoutData = new GridData(SWT.LEFT, SWT.CENTER, false, false); |
| Label defaultLabel = new Label(composite, SWT.NONE); |
| defaultLabel.setText(DbCoreNLS.AddTableFieldDialog_FieldDefaultValueLabel); |
| defaultLabel.setLayoutData(layoutData); |
| |
| layoutData = new GridData(SWT.FILL, SWT.CENTER, true, false); |
| defaultText = new Text(composite, SWT.BORDER); |
| defaultText.setLayoutData(layoutData); |
| if (field != null) |
| { |
| defaultText.setText(field.getDefaultValue()); |
| } |
| |
| if (field != null) |
| { |
| defaultText.setEnabled(!field.isPrimaryKey()); |
| |
| primaryKeyOptions.setEnabled(field.isPrimaryKey()); |
| |
| } |
| |
| composite.layout(); |
| |
| return composite; |
| } |
| |
| /* |
| * (non-Javadoc) |
| * @see org.eclipse.jface.dialogs.Dialog#okPressed() |
| */ |
| @Override |
| protected void okPressed() |
| { |
| if (field == null) |
| { |
| field = new Field(); |
| } |
| |
| field.setName(nameText.getText()); |
| field.setPrimaryKey(isPrimaryButton.getSelection()); |
| field.setDefaultValue(defaultText.getText().trim()); |
| field.setType(DataType.valueOf(typeCombo.getItem(typeCombo.getSelectionIndex()))); |
| |
| if (noneButton.getSelection()) |
| { |
| |
| field.setAutoIncrementType(Field.AutoIncrementType.NONE); |
| } |
| else if (incrementalButton.getSelection()) |
| { |
| field.setAutoIncrementType(Field.AutoIncrementType.ASCENDING); |
| } |
| else if (decrementalButton.getSelection()) |
| { |
| field.setAutoIncrementType(Field.AutoIncrementType.DESCENDING); |
| } |
| |
| super.okPressed(); |
| |
| } |
| |
| public Field getField() |
| { |
| return field; |
| } |
| |
| /* |
| * (non-Javadoc) |
| * @see org.eclipse.jface.dialogs.Dialog#createButton(org.eclipse.swt.widgets.Composite, int, java.lang.String, boolean) |
| */ |
| @Override |
| protected Button createButton(Composite parent, int id, String label, boolean defaultButton) |
| { |
| Button button = super.createButton(parent, id, label, defaultButton); |
| button.setEnabled((id != OK) || (field != null)); |
| return button; |
| |
| } |
| |
| } |