/* * Copyright 2009-2012 Amazon Technologies, Inc. * * 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://aws.amazon.com/apache2.0 * * This file 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.amazonaws.eclipse.datatools.enablement.simpledb.editor; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Status; import org.eclipse.datatools.sqltools.data.internal.core.editor.RowDataImpl; import org.eclipse.datatools.sqltools.data.internal.ui.editor.IExternalTableDataEditor; import org.eclipse.datatools.sqltools.data.internal.ui.editor.ITableDataEditor; import org.eclipse.datatools.sqltools.data.internal.ui.editor.TableDataCell; import org.eclipse.datatools.sqltools.data.internal.ui.editor.TableDataEditor; import org.eclipse.jface.dialogs.ErrorDialog; import org.eclipse.jface.viewers.StructuredSelection; import org.eclipse.jface.wizard.WizardDialog; import org.eclipse.swt.SWT; import com.amazonaws.eclipse.datatools.enablement.simpledb.driver.SimpleDBItemName; import com.amazonaws.eclipse.datatools.enablement.simpledb.editor.wizard.SDBTableDataWizard; import com.amazonaws.eclipse.datatools.enablement.simpledb.editor.wizard.SDBTableIdDataWizard; public class SDBTextEditor implements IExternalTableDataEditor { public SDBTextEditor() {} public void externalEdit(final ITableDataEditor editor) { Object obj = editor; if (obj instanceof TableDataEditor) { externalEdit((TableDataEditor)obj); } } /* (non-Javadoc) * @see org.eclipse.datatools.sqltools.data.internal.ui.editor.IExternalTableDataEditor#externalEdit(org.eclipse.datatools.sqltools.data.internal.ui.editor.TableDataEditor) */ public void externalEdit(final TableDataEditor editor) { if (editor.getCursor().getColumn() == 0) { Object value = getCellValue(editor); if ((value instanceof SimpleDBItemName && !((SimpleDBItemName) value).isPersisted()) || value instanceof String || value == null) { SDBTableIdDataWizard wizard = new SDBTableIdDataWizard(editor); WizardDialog dialog = new WizardDialog(editor.getSite().getShell(), wizard); dialog.setPageSize(400, 250); dialog.open(); } else { ErrorDialog ed = new ErrorDialog(editor.getEditorSite().getShell(), Messages.idErrorDialogTitle, Messages.idErrorDialogMessage, new Status(IStatus.INFO, Activator.PLUGIN_ID, Messages.idErrorStatusMessage), SWT.ERROR); ed.open(); } } else { SDBTableDataWizard wizard = new SDBTableDataWizard(editor); WizardDialog dialog = new WizardDialog(editor.getSite().getShell(), wizard); dialog.setPageSize(400, 250); dialog.open(); } } private Object getCellValue(final TableDataEditor editor) { int col = editor.getCursor().getColumn(); StructuredSelection selection = (StructuredSelection) editor.getSelectionProvider().getSelection(); TableDataCell firstElement = (TableDataCell) selection.getFirstElement(); Object row = firstElement.getRow(); if (row instanceof RowDataImpl) { RowDataImpl rowData = (RowDataImpl) row; Object value = rowData.getValue(col); return value; } else { //This usually means that the row was just created and no RowDataImpl have been created yet. return ""; //$NON-NLS-1$ } } }