From 6bff7e0690de9e240cc5663e2cadce89aff685dc Mon Sep 17 00:00:00 2001 From: Ted Jones Date: Mon, 27 Jul 2015 10:14:14 -0500 Subject: [PATCH] teiiddes-2557: Added Edit dialog for rows on the parameter and result set tab and made the rows/cells read-only in the tabs to avoid hanging. --- .../designer/transformation/ui/Messages.java | 2 + .../ui/editors/EditColumnDialog.java | 286 ++++++++++++++++ .../ui/editors/EditParameterDialog.java | 309 ++++++++++++++++++ .../ui/editors/ViewProcedureEditorPanel.java | 90 ++++- .../transformation/ui/messages.properties | 4 +- 5 files changed, 677 insertions(+), 14 deletions(-) create mode 100644 plugins/org.teiid.designer.transformation.ui/src/org/teiid/designer/transformation/ui/editors/EditColumnDialog.java create mode 100644 plugins/org.teiid.designer.transformation.ui/src/org/teiid/designer/transformation/ui/editors/EditParameterDialog.java diff --git a/plugins/org.teiid.designer.transformation.ui/src/org/teiid/designer/transformation/ui/Messages.java b/plugins/org.teiid.designer.transformation.ui/src/org/teiid/designer/transformation/ui/Messages.java index 5910afe018..8e9aa1d168 100644 --- a/plugins/org.teiid.designer.transformation.ui/src/org/teiid/designer/transformation/ui/Messages.java +++ b/plugins/org.teiid.designer.transformation.ui/src/org/teiid/designer/transformation/ui/Messages.java @@ -17,6 +17,8 @@ public class Messages extends NLS { public static String Browse; public static String Edit; public static String EditColumnTitle; + public static String EditParameterTitle; + public static String EditingParameterInformation; public static String EditingColumnInformation; public static String Name; public static String Path; diff --git a/plugins/org.teiid.designer.transformation.ui/src/org/teiid/designer/transformation/ui/editors/EditColumnDialog.java b/plugins/org.teiid.designer.transformation.ui/src/org/teiid/designer/transformation/ui/editors/EditColumnDialog.java new file mode 100644 index 0000000000..7605581d49 --- /dev/null +++ b/plugins/org.teiid.designer.transformation.ui/src/org/teiid/designer/transformation/ui/editors/EditColumnDialog.java @@ -0,0 +1,286 @@ +/* + * JBoss, Home of Professional Open Source. + * + * See the LEGAL.txt file distributed with this work for information regarding copyright ownership and licensing. + * + * See the AUTHORS.txt file distributed with this work for a full listing of individual contributors. + */ +package org.teiid.designer.transformation.ui.editors; + + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; +import java.util.Set; + +import org.eclipse.jface.dialogs.IDialogConstants; +import org.eclipse.jface.dialogs.IMessageProvider; +import org.eclipse.jface.dialogs.TitleAreaDialog; +import org.eclipse.jface.layout.GridDataFactory; +import org.eclipse.jface.viewers.ColumnLabelProvider; +import org.eclipse.osgi.util.NLS; +import org.eclipse.swt.SWT; +import org.eclipse.swt.events.ModifyEvent; +import org.eclipse.swt.events.ModifyListener; +import org.eclipse.swt.graphics.Image; +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.layout.GridLayout; +import org.eclipse.swt.widgets.Combo; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.swt.widgets.Display; +import org.eclipse.swt.widgets.Label; +import org.eclipse.swt.widgets.Shell; +import org.eclipse.swt.widgets.Text; +import org.teiid.designer.core.ModelerCore; +import org.teiid.designer.query.proc.ITeiidXmlColumnInfo; +import org.teiid.designer.relational.model.RelationalColumn; +import org.teiid.designer.transformation.ui.Messages; +import org.teiid.designer.transformation.ui.UiConstants; +import org.teiid.designer.transformation.ui.UiPlugin; +import org.teiid.designer.type.IDataTypeManagerService; +import org.teiid.designer.ui.common.util.WidgetFactory; + +/** + * + */ +public class EditColumnDialog extends TitleAreaDialog { + private static final String EMPTY_STRING = ""; //$NON-NLS-1$ + + // ============================================================= + // Instance variables + // ============================================================= + RelationalColumn column; + + // ============================================================= + // Constructors + // ============================================================= + + /** + * + * @param parent + * the parent shell + * @param resultSetLabel + * @param editingColumnInformation + * @param relationalViewProcedure + * the columnInfo table object + */ + public EditColumnDialog(Shell parent, RelationalColumn column) { + super(parent); + this.column = column; + } + + @Override + protected void configureShell(Shell shell) { + super.configureShell(shell); + shell.setText(Messages.EditColumnTitle); + } + + /* + * (non-Javadoc) + * + * @see org.eclipse.jface.window.Window#setShellStyle(int) + */ + @Override + protected void setShellStyle(int newShellStyle) { + super.setShellStyle(newShellStyle | SWT.RESIZE | SWT.MAX); + + } + + // ============================================================= + // Instance methods + // ============================================================= + + @Override + protected Control createDialogArea(Composite parent) { + setTitle(Messages.EditColumnTitle); + setMessage(NLS.bind(Messages.EditingColumnInformation, column.getName()), IMessageProvider.INFORMATION); + + Composite dialogComposite = (Composite) super.createDialogArea(parent); + + Composite composite = WidgetFactory.createPanel(dialogComposite); + // ------------------------------ + // Set layout for the Composite + // ------------------------------ + GridLayout gridLayout = new GridLayout(); + composite.setLayout(gridLayout); + gridLayout.numColumns = 2; + GridData gridData = new GridData(GridData.FILL_BOTH); + gridData.grabExcessHorizontalSpace = true; + gridData.widthHint = 500; + composite.setLayoutData(gridData); + + GridData gd = new GridData(); + gd.grabExcessHorizontalSpace = true; + gd.horizontalAlignment = GridData.FILL; + + // ------------------------------ + // Column Name + // ------------------------------ + Label label = new Label(composite, SWT.NONE | SWT.SINGLE); + label.setText(Messages.Name); + label.setLayoutData(new GridData()); + + final Text columnNameText = new Text(composite, SWT.BORDER | SWT.NONE); + columnNameText.setText(column.getName()); + columnNameText.setForeground(Display.getCurrent().getSystemColor( + SWT.COLOR_DARK_BLUE)); + columnNameText.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + columnNameText.addModifyListener(new ModifyListener() { + @Override + public void modifyText(final ModifyEvent event) { + String value = columnNameText.getText(); + if (value == null) { + value = EMPTY_STRING; + } + column.setName(value); + validate(); + } + }); + + // ------------------------------ + // Data type dropdown + // ------------------------------ + Label datatype = new Label(composite, SWT.BORDER | SWT.NONE); + datatype.setText(Messages.dataTypeLabel); + datatype.setLayoutData(new GridData()); + + final Combo datatypeCombo = new Combo(composite, + SWT.NONE); + datatypeCombo.setForeground(Display.getCurrent().getSystemColor( + SWT.COLOR_DARK_BLUE)); + datatypeCombo.setLayoutData(new GridData(SWT.LEFT, SWT.LEFT, true, true)); + + IDataTypeManagerService service = ModelerCore.getTeiidDataTypeManagerService(); + Set unsortedDatatypes = service.getAllDataTypeNames(); + Collection dTypes = new ArrayList(); + + String[] sortedStrings = unsortedDatatypes.toArray(new String[unsortedDatatypes.size()]); + Arrays.sort(sortedStrings); + for( String dType : sortedStrings ) { + dTypes.add(dType); + } + + String[] datatypes = dTypes.toArray(new String[dTypes.size()]); + datatypeCombo.setItems(datatypes); + GridDataFactory.fillDefaults().align(SWT.LEFT, SWT.CENTER).applyTo(datatypeCombo); + datatypeCombo.setText(column.getDatatype()); + datatypeCombo.redraw(); + datatypeCombo.addModifyListener(new ModifyListener() { + @Override + public void modifyText(final ModifyEvent event) { + column.setDatatype(datatypeCombo.getText()); + validate(); + } + }); + + // ------------------------------ + // Length value + // ------------------------------ + Label label1 = new Label(composite, SWT.NONE | SWT.SINGLE); + label1.setText(Messages.lengthLabel); + label1.setLayoutData(new GridData()); + + final Text lengthValueText = new Text(composite, SWT.BORDER | SWT.NONE); + lengthValueText.setText(String.valueOf(column.getLength())); + lengthValueText.setForeground(Display.getCurrent().getSystemColor( + SWT.COLOR_DARK_BLUE)); + lengthValueText.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + lengthValueText.addModifyListener(new ModifyListener() { + @Override + public void modifyText(final ModifyEvent event) { + String value = lengthValueText.getText(); + if (value == null) { + value = EMPTY_STRING; + } + column.setLength(Integer.parseInt(value)); + validate(); + } + }); + + return composite; + } + + private void validate() { + + boolean enable = true; + getButton(IDialogConstants.OK_ID).setEnabled(enable); + } + + @Override + public void create() { + super.create(); + getButton(IDialogConstants.OK_ID).setEnabled(true); + } + + @Override + protected void okPressed() { + + super.okPressed(); + } + + class ColumnDataLabelProvider extends ColumnLabelProvider { + + private final int columnNumber; + + public ColumnDataLabelProvider(int columnNumber) { + this.columnNumber = columnNumber; + } + + /** + * {@inheritDoc} + * + * @see org.eclipse.jface.viewers.ColumnLabelProvider#getText(java.lang.Object) + */ + @Override + public String getText(Object element) { + if (element instanceof ITeiidXmlColumnInfo) { + switch (this.columnNumber) { + case 0: { + return ((ITeiidXmlColumnInfo) element).getName(); + } + case 1: { + return Boolean.toString(((ITeiidXmlColumnInfo) element) + .getOrdinality()); + } + case 2: { + return ((ITeiidXmlColumnInfo) element).getDatatype(); + } + case 3: { + return (((ITeiidXmlColumnInfo) element).getRelativePath()); + } + } + } + return EMPTY_STRING; + } + + /** + * {@inheritDoc} + * + * @see org.eclipse.jface.viewers.CellLabelProvider#getToolTipText(java.lang.Object) + */ + @Override + public String getToolTipText(Object element) { + switch (this.columnNumber) { + case 0: { + return "Tooltip 1"; //getString("columnNameColumnTooltip"); //$NON-NLS-1$ + } + case 1: { + return "Tooltip 2"; //getString("datatypeColumnTooltip"); //$NON-NLS-1$ + } + } + return "unknown tooltip"; //$NON-NLS-1$ + } + + @Override + public Image getImage(Object element) { + if (this.columnNumber == 0) { + return UiPlugin.getDefault().getImage( + UiConstants.Images.COLUMN_ICON); + } + return null; + } + + } + +} \ No newline at end of file diff --git a/plugins/org.teiid.designer.transformation.ui/src/org/teiid/designer/transformation/ui/editors/EditParameterDialog.java b/plugins/org.teiid.designer.transformation.ui/src/org/teiid/designer/transformation/ui/editors/EditParameterDialog.java new file mode 100644 index 0000000000..5b8c3f2ebb --- /dev/null +++ b/plugins/org.teiid.designer.transformation.ui/src/org/teiid/designer/transformation/ui/editors/EditParameterDialog.java @@ -0,0 +1,309 @@ +/* + * JBoss, Home of Professional Open Source. + * + * See the LEGAL.txt file distributed with this work for information regarding copyright ownership and licensing. + * + * See the AUTHORS.txt file distributed with this work for a full listing of individual contributors. + */ +package org.teiid.designer.transformation.ui.editors; + + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; +import java.util.Set; + +import org.eclipse.jface.dialogs.IDialogConstants; +import org.eclipse.jface.dialogs.IMessageProvider; +import org.eclipse.jface.dialogs.TitleAreaDialog; +import org.eclipse.jface.layout.GridDataFactory; +import org.eclipse.jface.viewers.ColumnLabelProvider; +import org.eclipse.osgi.util.NLS; +import org.eclipse.swt.SWT; +import org.eclipse.swt.events.ModifyEvent; +import org.eclipse.swt.events.ModifyListener; +import org.eclipse.swt.graphics.Image; +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.layout.GridLayout; +import org.eclipse.swt.widgets.Combo; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.swt.widgets.Display; +import org.eclipse.swt.widgets.Label; +import org.eclipse.swt.widgets.Shell; +import org.eclipse.swt.widgets.Text; +import org.teiid.designer.core.ModelerCore; +import org.teiid.designer.query.proc.ITeiidXmlColumnInfo; +import org.teiid.designer.relational.RelationalConstants.DIRECTION; +import org.teiid.designer.relational.model.RelationalParameter; +import org.teiid.designer.transformation.ui.Messages; +import org.teiid.designer.transformation.ui.UiConstants; +import org.teiid.designer.transformation.ui.UiPlugin; +import org.teiid.designer.type.IDataTypeManagerService; +import org.teiid.designer.ui.common.util.WidgetFactory; + +/** + * + */ +public class EditParameterDialog extends TitleAreaDialog { + private static final String EMPTY_STRING = ""; //$NON-NLS-1$ + + // ============================================================= + // Instance variables + // ============================================================= + RelationalParameter parameter; + + // ============================================================= + // Constructors + // ============================================================= + + /** + * + * @param parent + * the parent shell + * @param resultSetLabel + * @param editingColumnInformation + * @param relationalViewProcedure + * the columnInfo table object + */ + public EditParameterDialog(Shell parent, RelationalParameter parameter) { + super(parent); + this.parameter = parameter; + } + + @Override + protected void configureShell(Shell shell) { + super.configureShell(shell); + shell.setText(Messages.EditParameterTitle); + } + + /* + * (non-Javadoc) + * + * @see org.eclipse.jface.window.Window#setShellStyle(int) + */ + @Override + protected void setShellStyle(int newShellStyle) { + super.setShellStyle(newShellStyle | SWT.RESIZE | SWT.MAX); + + } + + // ============================================================= + // Instance methods + // ============================================================= + + @Override + protected Control createDialogArea(Composite parent) { + setTitle(Messages.EditParameterTitle); + setMessage(NLS.bind(Messages.EditingParameterInformation, parameter.getName()), IMessageProvider.INFORMATION); + + Composite dialogComposite = (Composite) super.createDialogArea(parent); + + Composite composite = WidgetFactory.createPanel(dialogComposite); + // ------------------------------ + // Set layout for the Composite + // ------------------------------ + GridLayout gridLayout = new GridLayout(); + composite.setLayout(gridLayout); + gridLayout.numColumns = 2; + GridData gridData = new GridData(GridData.FILL_BOTH); + gridData.grabExcessHorizontalSpace = true; + gridData.widthHint = 500; + composite.setLayoutData(gridData); + + GridData gd = new GridData(); + gd.grabExcessHorizontalSpace = true; + gd.horizontalAlignment = GridData.FILL; + + // ------------------------------ + // Column Name + // ------------------------------ + Label label = new Label(composite, SWT.NONE | SWT.SINGLE); + label.setText(Messages.Name); + label.setLayoutData(new GridData()); + + final Text columnNameText = new Text(composite, SWT.BORDER | SWT.NONE); + columnNameText.setText(parameter.getName()); + columnNameText.setForeground(Display.getCurrent().getSystemColor( + SWT.COLOR_DARK_BLUE)); + columnNameText.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + columnNameText.addModifyListener(new ModifyListener() { + @Override + public void modifyText(final ModifyEvent event) { + String value = columnNameText.getText(); + if (value == null) { + value = EMPTY_STRING; + } + parameter.setName(value); + validate(); + } + }); + + // ------------------------------ + // Data type dropdown + // ------------------------------ + Label datatype = new Label(composite, SWT.BORDER | SWT.NONE); + datatype.setText(Messages.dataTypeLabel); + datatype.setLayoutData(new GridData()); + + final Combo datatypeCombo = new Combo(composite, + SWT.NONE); + datatypeCombo.setForeground(Display.getCurrent().getSystemColor( + SWT.COLOR_DARK_BLUE)); + datatypeCombo.setLayoutData(new GridData(SWT.LEFT, SWT.LEFT, true, true)); + + IDataTypeManagerService service = ModelerCore.getTeiidDataTypeManagerService(); + Set unsortedDatatypes = service.getAllDataTypeNames(); + Collection dTypes = new ArrayList(); + + String[] sortedStrings = unsortedDatatypes.toArray(new String[unsortedDatatypes.size()]); + Arrays.sort(sortedStrings); + for( String dType : sortedStrings ) { + dTypes.add(dType); + } + + String[] datatypes = dTypes.toArray(new String[dTypes.size()]); + datatypeCombo.setItems(datatypes); + GridDataFactory.fillDefaults().align(SWT.LEFT, SWT.CENTER).applyTo(datatypeCombo); + datatypeCombo.setText(parameter.getDatatype()); + datatypeCombo.redraw(); + datatypeCombo.addModifyListener(new ModifyListener() { + @Override + public void modifyText(final ModifyEvent event) { + parameter.setDatatype(datatypeCombo.getText()); + validate(); + } + }); + + // ------------------------------ + // Length value + // ------------------------------ + Label label1 = new Label(composite, SWT.NONE | SWT.SINGLE); + label1.setText(Messages.lengthLabel); + label1.setLayoutData(new GridData()); + + final Text lengthValueText = new Text(composite, SWT.BORDER | SWT.NONE); + lengthValueText.setText(String.valueOf(parameter.getLength())); + lengthValueText.setForeground(Display.getCurrent().getSystemColor( + SWT.COLOR_DARK_BLUE)); + lengthValueText.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + lengthValueText.addModifyListener(new ModifyListener() { + @Override + public void modifyText(final ModifyEvent event) { + String value = lengthValueText.getText(); + if (value == null) { + value = EMPTY_STRING; + } + parameter.setLength(Integer.parseInt(value)); + validate(); + } + }); + + // ------------------------------ + // Direction value + // ------------------------------ + Label label2 = new Label(composite, SWT.NONE | SWT.NONE); + label2.setText(Messages.directionLabel); + label2.setLayoutData(new GridData()); + + final Combo directionCombo = new Combo(composite, SWT.NONE); + directionCombo.setForeground(Display.getCurrent().getSystemColor( + SWT.COLOR_DARK_BLUE)); + directionCombo.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, true, true)); + directionCombo.setItems(DIRECTION.AS_ARRAY); + directionCombo.setText(parameter.getDirection()); + directionCombo.redraw(); + directionCombo.addModifyListener(new ModifyListener() { + @Override + public void modifyText(final ModifyEvent event) { + parameter.setDirection(directionCombo.getText()); + validate(); + } + }); + + return composite; + } + + private void validate() { + + boolean enable = true; + getButton(IDialogConstants.OK_ID).setEnabled(enable); + } + + @Override + public void create() { + super.create(); + getButton(IDialogConstants.OK_ID).setEnabled(true); + } + + @Override + protected void okPressed() { + + super.okPressed(); + } + + class ColumnDataLabelProvider extends ColumnLabelProvider { + + private final int columnNumber; + + public ColumnDataLabelProvider(int columnNumber) { + this.columnNumber = columnNumber; + } + + /** + * {@inheritDoc} + * + * @see org.eclipse.jface.viewers.ColumnLabelProvider#getText(java.lang.Object) + */ + @Override + public String getText(Object element) { + if (element instanceof ITeiidXmlColumnInfo) { + switch (this.columnNumber) { + case 0: { + return ((ITeiidXmlColumnInfo) element).getName(); + } + case 1: { + return Boolean.toString(((ITeiidXmlColumnInfo) element) + .getOrdinality()); + } + case 2: { + return ((ITeiidXmlColumnInfo) element).getDatatype(); + } + case 3: { + return (((ITeiidXmlColumnInfo) element).getRelativePath()); + } + } + } + return EMPTY_STRING; + } + + /** + * {@inheritDoc} + * + * @see org.eclipse.jface.viewers.CellLabelProvider#getToolTipText(java.lang.Object) + */ + @Override + public String getToolTipText(Object element) { + switch (this.columnNumber) { + case 0: { + return "Tooltip 1"; //getString("columnNameColumnTooltip"); //$NON-NLS-1$ + } + case 1: { + return "Tooltip 2"; //getString("datatypeColumnTooltip"); //$NON-NLS-1$ + } + } + return "unknown tooltip"; //$NON-NLS-1$ + } + + @Override + public Image getImage(Object element) { + if (this.columnNumber == 0) { + return UiPlugin.getDefault().getImage( + UiConstants.Images.COLUMN_ICON); + } + return null; + } + + } + +} \ No newline at end of file diff --git a/plugins/org.teiid.designer.transformation.ui/src/org/teiid/designer/transformation/ui/editors/ViewProcedureEditorPanel.java b/plugins/org.teiid.designer.transformation.ui/src/org/teiid/designer/transformation/ui/editors/ViewProcedureEditorPanel.java index 1b212798a9..1cb3eb2e06 100644 --- a/plugins/org.teiid.designer.transformation.ui/src/org/teiid/designer/transformation/ui/editors/ViewProcedureEditorPanel.java +++ b/plugins/org.teiid.designer.transformation.ui/src/org/teiid/designer/transformation/ui/editors/ViewProcedureEditorPanel.java @@ -92,8 +92,8 @@ public class ViewProcedureEditorPanel extends RelationalEditorPanel implements R private Text resultSetNameText; // parameter widgets - private Button addParameterButton, deleteParameterButton, upParameterButton, downParameterButton; - private Button addColumnButton, deleteColumnButton, upColumnButton, downColumnButton; + private Button addParameterButton, deleteParameterButton, editParameterButton, upParameterButton, downParameterButton; + private Button addColumnButton, deleteColumnButton, editColumnButton, upColumnButton, downColumnButton; private Combo updateCountCombo; private TableViewerBuilder parametersViewer; private TableViewerBuilder columnsViewer; @@ -315,8 +315,8 @@ public void modifyText( final ModifyEvent event ) { } }); - Composite buttonPanel = WidgetFactory.createPanel(thePanel, SWT.NONE, 1, 4); - GridLayoutFactory.fillDefaults().numColumns(4).applyTo(buttonPanel); + Composite buttonPanel = WidgetFactory.createPanel(thePanel, SWT.NONE, 1, 5); + GridLayoutFactory.fillDefaults().numColumns(5).applyTo(buttonPanel); GridDataFactory.fillDefaults().span(2, 1).applyTo(buttonPanel); addColumnButton = new Button(buttonPanel, SWT.PUSH); @@ -359,6 +359,32 @@ public void widgetSelected(SelectionEvent e) { }); + editColumnButton = new Button(buttonPanel, SWT.PUSH); + editColumnButton.setText(Messages.Edit); + GridDataFactory.fillDefaults().applyTo(editColumnButton); + editColumnButton.setEnabled(false); + editColumnButton.addSelectionListener(new SelectionAdapter() { + + @Override + public void widgetSelected(SelectionEvent e) { + RelationalColumn column = null; + + IStructuredSelection selection = (IStructuredSelection)columnsViewer.getSelection(); + for( Object obj : selection.toArray()) { + if( obj instanceof RelationalColumn ) { + column = (RelationalColumn) obj; + break; + } + } + if( column != null ) { + EditColumnDialog dialog = new EditColumnDialog(getShell(), column); + dialog.open(); + handleInfoChanged(); + } + } + + }); + upColumnButton = new Button(buttonPanel, SWT.PUSH); upColumnButton.setText(Messages.moveUpLabel); GridDataFactory.fillDefaults().applyTo(upColumnButton); @@ -455,6 +481,7 @@ public void selectionChanged(SelectionChangedEvent event) { if( sel.isEmpty()) { deleteColumnButton.setEnabled(false); + editColumnButton.setEnabled(false); upColumnButton.setEnabled(false); downColumnButton.setEnabled(false); } else { @@ -473,6 +500,7 @@ public void selectionChanged(SelectionChangedEvent event) { enable = false; } deleteColumnButton.setEnabled(enable); + editColumnButton.setEnabled(enable); if( enable ) { upColumnButton.setEnabled(getRelationalReference().getResultSet().canMoveColumnUp(columnInfo)); downColumnButton.setEnabled(getRelationalReference().getResultSet().canMoveColumnDown(columnInfo)); @@ -898,8 +926,8 @@ private Composite createParameterTableGroup(Composite parent) { GridLayoutFactory.fillDefaults().margins(10, 10).applyTo(thePanel); GridDataFactory.fillDefaults().grab(true, true).applyTo(thePanel); - Composite buttonPanel = WidgetFactory.createPanel(thePanel, SWT.NONE, 1, 4); - GridLayoutFactory.fillDefaults().numColumns(4).applyTo(buttonPanel); + Composite buttonPanel = WidgetFactory.createPanel(thePanel, SWT.NONE, 1, 5); + GridLayoutFactory.fillDefaults().numColumns(5).applyTo(buttonPanel); GridDataFactory.fillDefaults().grab(true, false).applyTo(buttonPanel); addParameterButton = new Button(buttonPanel, SWT.PUSH); @@ -941,6 +969,32 @@ public void widgetSelected(SelectionEvent e) { }); + editParameterButton = new Button(buttonPanel, SWT.PUSH); + editParameterButton.setText(Messages.Edit); + GridDataFactory.fillDefaults().applyTo(editParameterButton); + editParameterButton.setEnabled(false); + editParameterButton.addSelectionListener(new SelectionAdapter() { + + @Override + public void widgetSelected(SelectionEvent e) { + RelationalParameter parameter = null; + + IStructuredSelection selection = (IStructuredSelection)parametersViewer.getSelection(); + for( Object obj : selection.toArray()) { + if( obj instanceof RelationalParameter ) { + parameter = (RelationalParameter) obj; + break; + } + } + if( parameter != null ) { + EditParameterDialog dialog = new EditParameterDialog(getShell(), parameter); + dialog.open(); + handleInfoChanged(); + } + } + + }); + upParameterButton = new Button(buttonPanel, SWT.PUSH); upParameterButton.setText(Messages.moveUpLabel); GridDataFactory.fillDefaults().applyTo(upParameterButton); @@ -1018,7 +1072,7 @@ public void widgetSelected(SelectionEvent e) { column = parametersViewer.createColumn(SWT.LEFT, 20, 30, true); - column.getColumn().setText(Messages.lengthLabel); + column.getColumn().setText(Messages.lengthLabel + " "); column.setLabelProvider(new ParameterDataLabelProvider(2)); column.setEditingSupport(new ParameterWidthEditingSupport(this.parametersViewer.getTableViewer())); @@ -1038,7 +1092,6 @@ public void widgetSelected(SelectionEvent e) { // set the existing Direction combo boxes - this.parametersViewer.addSelectionChangedListener(new ISelectionChangedListener() { @Override @@ -1047,6 +1100,7 @@ public void selectionChanged(SelectionChangedEvent event) { if( sel.isEmpty()) { deleteParameterButton.setEnabled(false); + editParameterButton.setEnabled(false); upParameterButton.setEnabled(false); downParameterButton.setEnabled(false); } else { @@ -1064,6 +1118,7 @@ public void selectionChanged(SelectionChangedEvent event) { if( objs.length == 0 ) { enable = false; } + editParameterButton.setEnabled(enable); deleteParameterButton.setEnabled(enable); if( enable ) { upParameterButton.setEnabled(getRelationalReference().canMoveParameterUp(columnInfo)); @@ -1332,7 +1387,7 @@ public ParameterNameEditingSupport(ColumnViewer viewer) { super(viewer); this.editor = new TextCellEditor((Composite) viewer.getControl()); } - + /* * (non-Javadoc) * @@ -1340,7 +1395,7 @@ public ParameterNameEditingSupport(ColumnViewer viewer) { */ @Override protected boolean canEdit(Object element) { - return true; + return false; } /* @@ -1408,7 +1463,7 @@ public ParameterWidthEditingSupport(ColumnViewer viewer) { */ @Override protected boolean canEdit(Object element) { - return true; + return false; } /* @@ -1486,9 +1541,13 @@ public DatatypeEditingSupport( ColumnViewer viewer ) { datatypes = dTypes.toArray(new String[dTypes.size()]); } - - + @Override + protected boolean canEdit(Object element) { + return false; + } + + @Override protected String getElementValue( Object element ) { if( element instanceof RelationalParameter ) { return ((RelationalParameter)element).getDatatype(); @@ -1528,6 +1587,11 @@ public DirectionEditingSupport( ColumnViewer viewer ) { protected String getElementValue( Object element ) { return ((RelationalParameter)element).getDirection(); } + + @Override + protected boolean canEdit(Object element) { + return false; + } @Override protected String[] refreshItems( Object element ) { diff --git a/plugins/org.teiid.designer.transformation.ui/src/org/teiid/designer/transformation/ui/messages.properties b/plugins/org.teiid.designer.transformation.ui/src/org/teiid/designer/transformation/ui/messages.properties index 239665bc6e..a17c1e8bba 100644 --- a/plugins/org.teiid.designer.transformation.ui/src/org/teiid/designer/transformation/ui/messages.properties +++ b/plugins/org.teiid.designer.transformation.ui/src/org/teiid/designer/transformation/ui/messages.properties @@ -9,8 +9,10 @@ RootPath=Root Path Path=Path Browse=&Browse... Edit=Edit... -EditColumnTitle=Edit column +EditColumnTitle=Edit Column EditingColumnInformation=Editing column information for column: ''{0}'' +EditParameterTitle=Edit Parameter +EditingParameterInformation=Editing parameter: ''{0}'' ColumnInfo=Column Info ColumnName=Column Name DefaultValue=Default Value