From 611693c306aaace886e7b5468388f16f6623e9aa Mon Sep 17 00:00:00 2001 From: Romain Bioteau Date: Wed, 13 Jan 2016 12:12:13 +0100 Subject: [PATCH] Minor fixes * Templating connector ui & wording * Improve code completion in REST API extension editor --- .../wizard/PageComponentSwitchBuilder.java | 10 +++++-- .../data/provider/JavaExpressionEditor.java | 30 +++++++++++++++---- .../editor/viewer/CellExpressionViewer.java | 2 ++ .../editor/viewer/EditExpressionDialog.java | 13 +++++--- .../viewer/ExpressionCollectionViewer.java | 24 +++++++++++---- .../editor/viewer/ExpressionViewer.java | 2 +- .../editor/viewer/IAddLineListener.java | 25 ++++++++++++++++ .../plugin.xml | 9 ++---- .../VariablesCompletionProposalProvider.java | 3 ++ .../VariablesTypeCompletionProposal.java | 3 ++ 10 files changed, 97 insertions(+), 24 deletions(-) create mode 100644 bundles/plugins/org.bonitasoft.studio.expression.editor/src/org/bonitasoft/studio/expression/editor/viewer/IAddLineListener.java diff --git a/bundles/plugins/org.bonitasoft.studio.connectors.model.edit/src/org/bonitasoft/studio/connector/model/definition/wizard/PageComponentSwitchBuilder.java b/bundles/plugins/org.bonitasoft.studio.connectors.model.edit/src/org/bonitasoft/studio/connector/model/definition/wizard/PageComponentSwitchBuilder.java index 73dbffa5ec..3198e72c35 100755 --- a/bundles/plugins/org.bonitasoft.studio.connectors.model.edit/src/org/bonitasoft/studio/connector/model/definition/wizard/PageComponentSwitchBuilder.java +++ b/bundles/plugins/org.bonitasoft.studio.connectors.model.edit/src/org/bonitasoft/studio/connector/model/definition/wizard/PageComponentSwitchBuilder.java @@ -425,9 +425,7 @@ public class PageComponentSwitchBuilder { } else { viewer.setLayoutData(GridDataFactory.fillDefaults().grab(true, true).create()); } - for (int i = 0; i < array.getCols().intValue(); i++) { - viewer.addFilter(connectorExpressionContentTypeFilter); - } + configureArrayColumnFilters(array, viewer); if (input.isMandatory()) { viewer.setMandatoryField(getLabel(array.getId()), context); } @@ -465,6 +463,12 @@ public class PageComponentSwitchBuilder { return null; } + protected void configureArrayColumnFilters(final Array array, final ExpressionCollectionViewer viewer) { + for (int i = 0; i < array.getCols().intValue(); i++) { + viewer.addFilter(connectorExpressionContentTypeFilter); + } + } + public Section createGroupControl(final Composite composite, final Group object) { final String desc = getDescription(object.getId()); int style = Section.NO_TITLE_FOCUS_BOX | Section.TWISTIE | Section.CLIENT_INDENT; diff --git a/bundles/plugins/org.bonitasoft.studio.data/src/org/bonitasoft/studio/data/provider/JavaExpressionEditor.java b/bundles/plugins/org.bonitasoft.studio.data/src/org/bonitasoft/studio/data/provider/JavaExpressionEditor.java index e21ea60b31..0e795bb2f3 100644 --- a/bundles/plugins/org.bonitasoft.studio.data/src/org/bonitasoft/studio/data/provider/JavaExpressionEditor.java +++ b/bundles/plugins/org.bonitasoft.studio.data/src/org/bonitasoft/studio/data/provider/JavaExpressionEditor.java @@ -21,6 +21,7 @@ import java.util.List; import java.util.Set; import org.bonitasoft.studio.common.ExpressionConstants; +import org.bonitasoft.studio.common.NamingUtils; import org.bonitasoft.studio.common.jface.DataStyledTreeLabelProvider; import org.bonitasoft.studio.common.jface.TableColumnSorter; import org.bonitasoft.studio.common.log.BonitaStudioLog; @@ -96,6 +97,10 @@ public class JavaExpressionEditor extends SelectionAwareExpressionEditor impleme private boolean isPageFlowContext = false; + private MultiValidator validationStatusProvider; + + private EMFDataBindingContext dataBindingContext; + @Override public Control createExpressionEditor(final Composite parent, final EMFDataBindingContext ctx) { mainComposite = new Composite(parent, SWT.NONE); @@ -245,7 +250,7 @@ public class JavaExpressionEditor extends SelectionAwareExpressionEditor impleme public void bindExpression(final EMFDataBindingContext dataBindingContext, final EObject context, final Expression inputExpression, final ViewerFilter[] filters, final ExpressionViewer expressionViewer) { - + this.dataBindingContext = dataBindingContext; editorInputExpression = inputExpression; setContentProvider(new PojoBrowserContentProvider()); javaTreeviewer.setContentProvider(getContentProvider()); @@ -273,10 +278,11 @@ public class JavaExpressionEditor extends SelectionAwareExpressionEditor impleme @Override public Object convert(final Object data) { if (data instanceof Data) { - return ((Data) data).getName() + " - " + ((JavaObjectData) data).getClassName() + "#" + editorInputExpression.getContent(); + return ((Data) data).getName() + " - " + NamingUtils.getSimpleName(((JavaObjectData) data).getClassName()) + "#" + + editorInputExpression.getContent(); } else if (data instanceof IMethod) { final JavaObjectData data2 = (JavaObjectData) editorInputExpression.getReferencedElements().get(0); - return data2.getName() + " - " + data2.getClassName() + "#" + ((IMethod) data).getElementName(); + return data2.getName() + " - " + NamingUtils.getSimpleName(data2.getClassName()) + "#" + ((IMethod) data).getElementName(); } return null; } @@ -396,13 +402,27 @@ public class JavaExpressionEditor extends SelectionAwareExpressionEditor impleme dataBindingContext.bindValue(javaViewerSingleSelection, returnTypeObservable, selectionToReturnType, new UpdateValueStrategy(UpdateValueStrategy.POLICY_NEVER)); dataBindingContext.bindValue(SWTObservables.observeText(typeText, SWT.Modify), returnTypeObservable); - dataBindingContext.addValidationStatusProvider(new MultiValidator() { + validationStatusProvider = new MultiValidator() { @Override protected IStatus validate() { return javaViewerSingleSelection.getValue() instanceof IMethod ? ValidationStatus.ok() : ValidationStatus.error(""); } - }); + }; + dataBindingContext.addValidationStatusProvider(validationStatusProvider); + } + + /* + * (non-Javadoc) + * @see org.bonitasoft.studio.expression.editor.provider.SelectionAwareExpressionEditor#dispose() + */ + @Override + public void dispose() { + if (validationStatusProvider != null) { + dataBindingContext.removeValidationStatusProvider(validationStatusProvider); + validationStatusProvider.dispose(); + } + super.dispose(); } private boolean acceptExpression(final ExpressionViewer viewer, final Expression e, final EObject context, final ViewerFilter[] filters) { diff --git a/bundles/plugins/org.bonitasoft.studio.expression.editor/src/org/bonitasoft/studio/expression/editor/viewer/CellExpressionViewer.java b/bundles/plugins/org.bonitasoft.studio.expression.editor/src/org/bonitasoft/studio/expression/editor/viewer/CellExpressionViewer.java index e06c9ec0ab..d3651d0b2e 100644 --- a/bundles/plugins/org.bonitasoft.studio.expression.editor/src/org/bonitasoft/studio/expression/editor/viewer/CellExpressionViewer.java +++ b/bundles/plugins/org.bonitasoft.studio.expression.editor/src/org/bonitasoft/studio/expression/editor/viewer/CellExpressionViewer.java @@ -28,6 +28,7 @@ import org.eclipse.swt.SWT; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.ToolBar; import org.eclipse.swt.widgets.ToolItem; @@ -53,6 +54,7 @@ public class CellExpressionViewer extends ExpressionViewer { protected void createToolbar(final int style, final TabbedPropertySheetWidgetFactory widgetFactory) { toolbar = new ToolBar(control, SWT.FLAT | SWT.NO_FOCUS); toolbar.setLayoutData(GridDataFactory.fillDefaults().align(SWT.FILL, SWT.CENTER).grab(false, false).create()); + toolbar.setBackground(Display.getDefault().getSystemColor(SWT.COLOR_WHITE)); final ToolItem editControl = new ToolItem(toolbar, SWT.FLAT); editControl.setImage(Pics.getImage(PicsConstants.edit)); editControl.setData(SWTBOT_WIDGET_ID_KEY, SWTBOT_ID_EDITBUTTON); diff --git a/bundles/plugins/org.bonitasoft.studio.expression.editor/src/org/bonitasoft/studio/expression/editor/viewer/EditExpressionDialog.java b/bundles/plugins/org.bonitasoft.studio.expression.editor/src/org/bonitasoft/studio/expression/editor/viewer/EditExpressionDialog.java index 7fa140b0f1..01cfcac976 100644 --- a/bundles/plugins/org.bonitasoft.studio.expression.editor/src/org/bonitasoft/studio/expression/editor/viewer/EditExpressionDialog.java +++ b/bundles/plugins/org.bonitasoft.studio.expression.editor/src/org/bonitasoft/studio/expression/editor/viewer/EditExpressionDialog.java @@ -325,13 +325,15 @@ public class EditExpressionDialog extends TrayDialog implements IBonitaVariableC if (currentExpressionEditor != null) { currentExpressionEditor.dispose(); } - + if (dataBindingContext != null) { + dataBindingContext.dispose(); + } currentExpressionEditor = provider.getExpressionEditor(inputExpression, context); currentExpressionEditor.setIsPageFlowContext(isPageFlowContext); if (currentExpressionEditor != null) { - if (dataBindingContext != null) { - dataBindingContext.dispose(); - } + // if (dataBindingContext != null) { + // dataBindingContext.dispose(); + // } dataBindingContext = new EMFDataBindingContext(); currentExpressionEditor.createExpressionEditor(contentComposite, dataBindingContext, isPassword); contentComposite.layout(true, true); @@ -389,6 +391,9 @@ public class EditExpressionDialog extends TrayDialog implements IBonitaVariableC if (getTray() != null) { closeTray(); } + if (dataBindingContext != null) { + dataBindingContext.dispose(); + } if (currentExpressionEditor != null) { currentExpressionEditor.dispose(); } diff --git a/bundles/plugins/org.bonitasoft.studio.expression.editor/src/org/bonitasoft/studio/expression/editor/viewer/ExpressionCollectionViewer.java b/bundles/plugins/org.bonitasoft.studio.expression.editor/src/org/bonitasoft/studio/expression/editor/viewer/ExpressionCollectionViewer.java index 5656ff38b9..fccc400318 100644 --- a/bundles/plugins/org.bonitasoft.studio.expression.editor/src/org/bonitasoft/studio/expression/editor/viewer/ExpressionCollectionViewer.java +++ b/bundles/plugins/org.bonitasoft.studio.expression.editor/src/org/bonitasoft/studio/expression/editor/viewer/ExpressionCollectionViewer.java @@ -15,6 +15,7 @@ package org.bonitasoft.studio.expression.editor.viewer; import java.util.ArrayList; +import java.util.Collections; import java.util.List; import org.bonitasoft.studio.common.IBonitaVariableContext; @@ -134,6 +135,7 @@ public class ExpressionCollectionViewer implements IBonitaVariableContext { private EMFDataBindingContext validationContext; private String mandatoryLabel; private Binding bindValue; + private final List addLineLineListeners = new ArrayList<>(); public void setEditingDomain(final EditingDomain editingDomain) { this.editingDomain = editingDomain; @@ -297,7 +299,8 @@ public class ExpressionCollectionViewer implements IBonitaVariableContext { } else { buttonComposite = new Composite(parent, SWT.NONE); } - buttonComposite.setLayoutData(GridDataFactory.fillDefaults().grab(false, false).align(SWT.FILL, SWT.TOP).create()); + final int topIndent = captions.isEmpty() ? 0 : 15; + buttonComposite.setLayoutData(GridDataFactory.fillDefaults().grab(false, false).align(SWT.FILL, SWT.TOP).indent(0, topIndent).create()); final RowLayout rl = new RowLayout(SWT.VERTICAL); rl.spacing = 3; @@ -533,14 +536,22 @@ public class ExpressionCollectionViewer implements IBonitaVariableContext { AbstractExpression newExpression = null; if (expressionInput instanceof ListExpression) { newExpression = addElementInListExpression(expressionInput); + fireLineAdded(Collections. singletonList((Expression) newExpression)); } else if (expressionInput instanceof TableExpression) { newExpression = addLineInTableExpression(expressionInput); + fireLineAdded(((ListExpression) newExpression).getExpressions()); } refresh(); putCursorOnNewElement(colIndexToEdit, newExpression); } + protected void fireLineAdded(List expressions) { + for (final IAddLineListener listener : addLineLineListeners) { + listener.newLinedAdded(expressions); + } + } + private AbstractExpression addElementInListExpression(final Object expressionInput) { AbstractExpression newExpression; newExpression = ExpressionFactory.eINSTANCE.createExpression(); @@ -548,8 +559,7 @@ public class ExpressionCollectionViewer implements IBonitaVariableContext { return newExpression; } - private AbstractExpression addLineInTableExpression(final Object expressionInput) { - AbstractExpression newExpression; + private ListExpression addLineInTableExpression(final Object expressionInput) { final ListExpression rowExp = createListExpressionForNewLineInTable(); if (editingDomain == null) { editingDomain = TransactionUtil.getEditingDomain(expressionInput); @@ -566,8 +576,8 @@ public class ExpressionCollectionViewer implements IBonitaVariableContext { } else { ((TableExpression) expressionInput).getExpressions().add(rowExp); } - newExpression = rowExp; - return newExpression; + + return rowExp; } private ListExpression createListExpressionForNewLineInTable() { @@ -1192,4 +1202,8 @@ public class ExpressionCollectionViewer implements IBonitaVariableContext { } + public void addLineListener(IAddLineListener listener) { + addLineLineListeners.add(listener); + } + } diff --git a/bundles/plugins/org.bonitasoft.studio.expression.editor/src/org/bonitasoft/studio/expression/editor/viewer/ExpressionViewer.java b/bundles/plugins/org.bonitasoft.studio.expression.editor/src/org/bonitasoft/studio/expression/editor/viewer/ExpressionViewer.java index 5383f62321..63e75e5f69 100644 --- a/bundles/plugins/org.bonitasoft.studio.expression.editor/src/org/bonitasoft/studio/expression/editor/viewer/ExpressionViewer.java +++ b/bundles/plugins/org.bonitasoft.studio.expression.editor/src/org/bonitasoft/studio/expression/editor/viewer/ExpressionViewer.java @@ -489,7 +489,7 @@ public class ExpressionViewer extends ContentViewer implements ExpressionConstan if ((style & SWT.BORDER) != 0) { indent = 16; } - contentAssistText.setLayoutData(GridDataFactory.swtDefaults().align(SWT.FILL, SWT.CENTER).indent(indent, 0) + contentAssistText.setLayoutData(GridDataFactory.swtDefaults().align(SWT.FILL, SWT.FILL).indent(indent, 0) .grab(true, false).create()); } diff --git a/bundles/plugins/org.bonitasoft.studio.expression.editor/src/org/bonitasoft/studio/expression/editor/viewer/IAddLineListener.java b/bundles/plugins/org.bonitasoft.studio.expression.editor/src/org/bonitasoft/studio/expression/editor/viewer/IAddLineListener.java new file mode 100644 index 0000000000..89a04fa7a0 --- /dev/null +++ b/bundles/plugins/org.bonitasoft.studio.expression.editor/src/org/bonitasoft/studio/expression/editor/viewer/IAddLineListener.java @@ -0,0 +1,25 @@ +/** + * Copyright (C) 2016 Bonitasoft S.A. + * Bonitasoft, 32 rue Gustave Eiffel - 38000 Grenoble + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2.0 of the License, or + * (at your option) any later version. + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.bonitasoft.studio.expression.editor.viewer; + +import java.util.List; + +import org.bonitasoft.studio.model.expression.Expression; + +public interface IAddLineListener { + + void newLinedAdded(List expressions); + +} diff --git a/bundles/plugins/org.bonitasoft.studio.groovy.ui/plugin.xml b/bundles/plugins/org.bonitasoft.studio.groovy.ui/plugin.xml index b7d41cc7d1..54cc224c60 100644 --- a/bundles/plugins/org.bonitasoft.studio.groovy.ui/plugin.xml +++ b/bundles/plugins/org.bonitasoft.studio.groovy.ui/plugin.xml @@ -7,7 +7,7 @@ point="org.codehaus.groovy.eclipse.ui.syntaxHighlightingExtension"> + natureID="org.bonitasoft.studio.common.repository.bonitaNature"> - - + projectNature="org.bonitasoft.studio.common.repository.bonitaNature"> @@ -123,7 +120,7 @@ - + diff --git a/bundles/plugins/org.bonitasoft.studio.groovy.ui/src/org/bonitasoft/studio/groovy/ui/contentassist/VariablesCompletionProposalProvider.java b/bundles/plugins/org.bonitasoft.studio.groovy.ui/src/org/bonitasoft/studio/groovy/ui/contentassist/VariablesCompletionProposalProvider.java index 991f4d08db..305217110b 100644 --- a/bundles/plugins/org.bonitasoft.studio.groovy.ui/src/org/bonitasoft/studio/groovy/ui/contentassist/VariablesCompletionProposalProvider.java +++ b/bundles/plugins/org.bonitasoft.studio.groovy.ui/src/org/bonitasoft/studio/groovy/ui/contentassist/VariablesCompletionProposalProvider.java @@ -59,6 +59,9 @@ public class VariablesCompletionProposalProvider implements IJavaCompletionPropo if (unit instanceof GroovyCompilationUnit) { final ITextViewer viewer = context.getViewer(); final List variables = getScriptVariables(viewer); + if (variables.isEmpty()) { + return list; + } if (((GroovyCompilationUnit) unit).getModuleNode() == null) { return Collections.emptyList(); } diff --git a/bundles/plugins/org.bonitasoft.studio.groovy.ui/src/org/bonitasoft/studio/groovy/ui/contentassist/VariablesTypeCompletionProposal.java b/bundles/plugins/org.bonitasoft.studio.groovy.ui/src/org/bonitasoft/studio/groovy/ui/contentassist/VariablesTypeCompletionProposal.java index 23797b8fef..86cfbdb8c1 100644 --- a/bundles/plugins/org.bonitasoft.studio.groovy.ui/src/org/bonitasoft/studio/groovy/ui/contentassist/VariablesTypeCompletionProposal.java +++ b/bundles/plugins/org.bonitasoft.studio.groovy.ui/src/org/bonitasoft/studio/groovy/ui/contentassist/VariablesTypeCompletionProposal.java @@ -79,6 +79,9 @@ public class VariablesTypeCompletionProposal implements IJavaCompletionProposalC if (unit instanceof GroovyCompilationUnit) { final ITextViewer viewer = context.getViewer(); final List scriptVariables = getScriptVariables(viewer); + if (scriptVariables.isEmpty()) { + return list; + } if (((GroovyCompilationUnit) unit).getModuleNode() == null) { return Collections.emptyList(); } -- GitLab