/** * Select the object <code>next</code> as a subnode of the <code>currentNode</code>. * * @param currentNode the currentNode * @param next the subnode to select * @return the selected node */ private SWTBotTreeItem selectSubNode(SWTBotTreeItem currentNode, Object next) { final AdapterFactory adapterFactory = EEFRuntimePlugin.getDefault().getAdapterFactory(); final IItemLabelProvider labelProvider = (IItemLabelProvider) adapterFactory.adapt(next, IItemLabelProvider.class); final String text = labelProvider.getText(next); final SWTBotTreeItem node2 = currentNode.getNode(text); node2.select(); return node2; }
/** * {@inheritDoc} * * @see * org.eclipse.emf.eef.runtime.api.notify.IPropertiesEditionListener#firePropertiesChanged(org.eclipse.emf.eef.runtime.api.notify.IPropertiesEditionEvent) */ public void firePropertiesChanged(IPropertiesEditionEvent event) { if (!isInitializing()) { Diagnostic valueDiagnostic = validateValue(event); if (PropertiesEditionEvent.COMMIT == event.getState() && IPropertiesEditionComponent.LIVE_MODE.equals(editing_mode) && valueDiagnostic.getSeverity() == Diagnostic.OK) { CompoundCommand command = new CompoundCommand(); if (TarotViewsRepository.GamePlayers.players == event.getAffectedEditor()) { if (PropertiesEditionEvent.SET == event.getKind()) { Player oldValue = (Player) event.getOldValue(); Player newValue = (Player) event.getNewValue(); // TODO: Complete the game update command for (EStructuralFeature feature : newValue.eClass().getEAllStructuralFeatures()) { if (feature.isChangeable() && !(feature instanceof EReference && ((EReference) feature).isContainer())) { command.append( SetCommand.create( liveEditingDomain, oldValue, feature, newValue.eGet(feature))); } } } else if (PropertiesEditionEvent.ADD == event.getKind()) command.append( AddCommand.create( liveEditingDomain, game, TarotPackage.eINSTANCE.getGame_Players(), event.getNewValue())); else if (PropertiesEditionEvent.REMOVE == event.getKind()) command.append(DeleteCommand.create(liveEditingDomain, event.getNewValue())); else if (PropertiesEditionEvent.MOVE == event.getKind()) command.append( MoveCommand.create( liveEditingDomain, game, TarotPackage.eINSTANCE.getPlayer(), event.getNewValue(), event.getNewIndex())); } if (!command.isEmpty() && !command.canExecute()) { EEFRuntimePlugin.getDefault().logError("Cannot perform model change command.", null); } else { liveEditingDomain.getCommandStack().execute(command); } } if (valueDiagnostic.getSeverity() != Diagnostic.OK && valueDiagnostic instanceof BasicDiagnostic) super.firePropertiesChanged(new PropertiesValidationEditionEvent(event, valueDiagnostic)); else { Diagnostic validate = validate(); super.firePropertiesChanged(new PropertiesValidationEditionEvent(event, validate)); } super.firePropertiesChanged(event); } }
protected Composite createResultEMFComboViewer(FormToolkit widgetFactory, Composite parent) { createDescription( parent, ChecklistViewsRepository.Item.Properties.result, ChecklistMessages.ItemPropertiesEditionPart_ResultLabel); result = new EMFComboViewer(parent); result.setContentProvider(new ArrayContentProvider()); result.setLabelProvider( new AdapterFactoryLabelProvider(EEFRuntimePlugin.getDefault().getAdapterFactory())); GridData resultData = new GridData(GridData.FILL_HORIZONTAL); result.getCombo().setLayoutData(resultData); result.addSelectionChangedListener( new ISelectionChangedListener() { /** * {@inheritDoc} * * @see * org.eclipse.jface.viewers.ISelectionChangedListener#selectionChanged(org.eclipse.jface.viewers.SelectionChangedEvent) */ public void selectionChanged(SelectionChangedEvent event) { if (propertiesEditionComponent != null) propertiesEditionComponent.firePropertiesChanged( new PropertiesEditionEvent( ItemPropertiesEditionPartForm.this, ChecklistViewsRepository.Item.Properties.result, PropertiesEditionEvent.COMMIT, PropertiesEditionEvent.SET, null, getResult())); } }); result.setID(ChecklistViewsRepository.Item.Properties.result); FormUtils.createHelpButton( widgetFactory, parent, propertiesEditionComponent.getHelpContent( ChecklistViewsRepository.Item.Properties.result, ChecklistViewsRepository.FORM_KIND), null); //$NON-NLS-1$ // Start of user code for createResultEMFComboViewer // End of user code return parent; }
protected Composite createTypeEMFComboViewer(Composite parent) { createDescription( parent, EipViewsRepository.Router.Properties.type, EipMessages.RouterPropertiesEditionPart_TypeLabel); type = new EMFComboViewer(parent); type.setContentProvider(new ArrayContentProvider()); type.setLabelProvider( new AdapterFactoryLabelProvider(EEFRuntimePlugin.getDefault().getAdapterFactory())); GridData typeData = new GridData(GridData.FILL_HORIZONTAL); type.getCombo().setLayoutData(typeData); type.addSelectionChangedListener( new ISelectionChangedListener() { /** * {@inheritDoc} * * @see * org.eclipse.jface.viewers.ISelectionChangedListener#selectionChanged(org.eclipse.jface.viewers.SelectionChangedEvent) */ public void selectionChanged(SelectionChangedEvent event) { if (propertiesEditionComponent != null) propertiesEditionComponent.firePropertiesChanged( new PropertiesEditionEvent( RouterPropertiesEditionPartImpl.this, EipViewsRepository.Router.Properties.type, PropertiesEditionEvent.COMMIT, PropertiesEditionEvent.SET, null, getType())); } }); type.setID(EipViewsRepository.Router.Properties.type); SWTUtils.createHelpButton( parent, propertiesEditionComponent.getHelpContent( EipViewsRepository.Router.Properties.type, EipViewsRepository.SWT_KIND), null); //$NON-NLS-1$ // Start of user code for createTypeEMFComboViewer // End of user code return parent; }
/** * {@inheritDoc} * * @see * org.eclipse.emf.eef.runtime.api.notify.IPropertiesEditionListener#firePropertiesChanged(org.eclipse.emf.eef.runtime.api.notify.IPropertiesEditionEvent) */ public void firePropertiesChanged(IPropertiesEditionEvent event) { if (!isInitializing()) { Diagnostic valueDiagnostic = validateValue(event); if (PropertiesEditionEvent.COMMIT == event.getState() && IPropertiesEditionComponent.LIVE_MODE.equals(editing_mode) && valueDiagnostic.getSeverity() == Diagnostic.OK) { CompoundCommand command = new CompoundCommand(); if (NonregViewsRepository.Combo.combo == event.getAffectedEditor()) command.append( SetCommand.create( liveEditingDomain, talk, NonregPackage.eINSTANCE.getTalk_Presenter(), event.getNewValue())); if (NonregViewsRepository.Combo.comboRO == event.getAffectedEditor()) command.append( SetCommand.create( liveEditingDomain, talk, NonregPackage.eINSTANCE.getTalk_Presenter(), event.getNewValue())); if (!command.isEmpty() && !command.canExecute()) { EEFRuntimePlugin.getDefault().logError("Cannot perform model change command.", null); } else { liveEditingDomain.getCommandStack().execute(command); } } if (valueDiagnostic.getSeverity() != Diagnostic.OK && valueDiagnostic instanceof BasicDiagnostic) super.firePropertiesChanged(new PropertiesValidationEditionEvent(event, valueDiagnostic)); else { Diagnostic validate = validate(); super.firePropertiesChanged(new PropertiesValidationEditionEvent(event, validate)); } super.firePropertiesChanged(event); } }
/** * SWTBot bor for EEF editor. * * @author <a href="mailto:[email protected]">Nathalie Lepine</a> */ public class SWTEEFBot extends SWTWorkbenchBot implements IModelingBot { /** The ResourceSet where to operate. */ protected EditingDomain editingDomain = new AdapterFactoryEditingDomain( EEFRuntimePlugin.getDefault().getAdapterFactory(), new BasicCommandStack()); /** EEF Interpreter. */ private EEFInterpreter interpreter; /** The swtbot editor. */ private SWTBotEditor editor; /** The test model resource. */ private Resource testModelResource; /** Helper to edit feature. */ private PropertiesEditionHelper propertiesEdition; /** Sequence type : wizard, detail page, properties view... */ private SequenceType sequenceType; /** Bot Helper. */ private SWTEEFBotHelper helper; /** Create a SWTEEFBot. */ public SWTEEFBot() { super(); editingDomain.getResourceSet().setURIConverter(new EEFURIConverter()); interpreter = new EEFInterpreter(this, editingDomain); propertiesEdition = new PropertiesEditionHelper(this); helper = new SWTEEFBotHelper(this); } /** Open the properties view. */ public void openPropertiesView() { menu(UIConstants.WINDOW_MENU) .menu(UIConstants.SHOW_VIEW_MENU) .menu(UIConstants.OTHER_MENU) .click(); final SWTBotShell shell = shell(UIConstants.SHOW_VIEW_MENU); activateShell(shell); final SWTBotTree viewSelectionTree = tree(); viewSelectionTree.expandNode(UIConstants.GENERAL_MENU).select(UIConstants.PROPERTIES_VIEW_NAME); button(UIConstants.OK_BUTTON).click(); waitUntil(Conditions.shellCloses(shell)); } /** Open Java Perspective. */ public void openJavaPerspective() { menu(UIConstants.WINDOW_MENU) .menu(UIConstants.OPEN_PERSPECTIVE_MENU) .menu(UIConstants.OTHER_MENU) .click(); final SWTBotShell openPerspectiveShell = shell(UIConstants.OPEN_PERSPECTIVE_MENU); activateShell(openPerspectiveShell); try { table().select(UIConstants.JAVA_LABEL); } catch (IllegalArgumentException e) { table().select(UIConstants.JAVA_DEFAULT_LABEL); } button(UIConstants.OK_BUTTON).click(); } /** * Activate the shell. * * @param shell SWTBotShell */ public void activateShell(SWTBotShell shell) { shell.activate(); } /** This method close the welcome page if we use the workspace of test for the first time. */ public void closeWelcomePage() { closeAllEditors(); assertNotNull(activeView()); if (UIConstants.WELCOME_LABEL.equals(activeView().getTitle())) viewByTitle(UIConstants.WELCOME_LABEL).close(); } /** * {@inheritDoc} * * @see org.eclipse.emf.eef.modelingBot.IModelingBot#createProject(java.lang.String) */ public void createProject(String projectName) { activateShell(shells()[0]); menu(UIConstants.FILE_MENU).menu(UIConstants.PROJECT_MENU).click(); final SWTBotShell openProjectShell = shell(UIConstants.NEW_PROJECT_MENU); activateShell(openProjectShell); tree().expandNode(UIConstants.GENERAL_MENU).select(UIConstants.PROJECT_CREATION_MENU); button(UIConstants.NEXT_BUTTON).click(); text().setText(projectName); button(UIConstants.FINISH_BUTTON).click(); } /** * {@inheritDoc} * * @see org.eclipse.emf.eef.modelingBot.IModelingBot#openProject(java.lang.String) */ public void openProject(String projectName) { final SWTBotTreeItem treeItem = selectInProjectExplorer(projectName); SWTBotHelper.clickContextMenu(treeItem, UIConstants.OPEN_PROJECT_MENU); } /** * {@inheritDoc} * * @see org.eclipse.emf.eef.modelingBot.IModelingBot#closeProject(java.lang.String) */ public void closeProject(String projectName) { final SWTBotTreeItem treeItem = selectInProjectExplorer(projectName); SWTBotHelper.clickContextMenu(treeItem, UIConstants.CLOSE_PROJECT_MENU); } /** * {@inheritDoc} * * @see org.eclipse.emf.eef.modelingBot.IModelingBot#removeProject(java.lang.String) */ public void removeProject(String projectName) { final SWTBotTreeItem treeItem = selectInProjectExplorer(projectName); SWTBotHelper.clickContextMenu(treeItem, UIConstants.DELETE_MENU); checkBox().select(); button(UIConstants.OK_BUTTON).click(); SWTBotHelper.waitAllUiEvents(); sleep(3000); } /** * {@inheritDoc} * * @see org.eclipse.emf.eef.modelingBot.IModelingBot#openPerspective(java.lang.String) */ public void openPerspective(String name) { menu(UIConstants.WINDOW_MENU) .menu(UIConstants.OPEN_PERSPECTIVE_MENU) .menu(UIConstants.OTHER_MENU) .click(); final SWTBotShell openPerspectiveShell = shell(UIConstants.OPEN_PERSPECTIVE_MENU); activateShell(openPerspectiveShell); try { table().select(name); } catch (IllegalArgumentException e) { table().select(UIConstants.JAVA_DEFAULT_LABEL); } button(UIConstants.OK_BUTTON).click(); } /** * {@inheritDoc} * * @see org.eclipse.emf.eef.modelingBot.IModelingBot#openEEFEditor(java.lang.String) */ public void openEEFEditor(String path) { final SWTBotTreeItem treeItem = selectInProjectExplorer(path); SWTBotHelper.clickContextMenu(treeItem, UIConstants.INTERACTIVE_EEF_EDITOR_MENU); } private SWTBotTreeItem selectInProjectExplorer(String path) { final SWTBotTree wizardTree = viewByTitle(UIConstants.PACKAGE_EXPLORER_VIEW_NAME).bot().tree(); final String[] split = path.split("/"); SWTBotTreeItem treeItem = wizardTree.expandNode(split[0]).select(); for (int i = 1; i < split.length; i++) { treeItem = treeItem.expandNode(split[i]).select(); } return treeItem; } /** * {@inheritDoc} * * @see org.eclipse.emf.eef.modelingBot.IModelingBot#closeEditor(java.lang.String) */ public void closeEditor(String path) { selectInProjectExplorer(path); menu(UIConstants.FILE_MENU).menu(UIConstants.CLOSE_MENU).click(); } /** * {@inheritDoc} * * @see org.eclipse.emf.eef.modelingBot.IModelingBot#save() */ public void save() { SWTBotHelper.waitAllUiEvents(); sleep(1000); menu(UIConstants.FILE_MENU).menu(UIConstants.SAVE_MENU).click(); } /** * {@inheritDoc} * * @see * org.eclipse.emf.eef.modelingBot.IModelingBot#add(org.eclipse.emf.eef.components.PropertiesEditionElement, * org.eclipse.emf.eef.extended.editor.ReferenceableObject, * org.eclipse.emf.ecore.EStructuralFeature, org.eclipse.emf.ecore.EClass) */ public EObject add( PropertiesEditionElement propertiesEditionElement, ReferenceableObject referenceableObject, final EStructuralFeature eContainingFeature, EClass type) { if (propertiesEditionElement != null) { // work on table composition return add(propertiesEditionElement, referenceableObject); } else { // work on context menu return add(referenceableObject, eContainingFeature); } } /** * Add PropertiesEditionElement. * * @param propertiesEditionElement * @param referenceableObject * @return */ private EObject add( PropertiesEditionElement propertiesEditionElement, ReferenceableObject referenceableObject) { SWTBotHelper.waitAllUiEvents(); assertNotNull("The editeur is not opened.", editor); final EObject container = getEObjectFromReferenceableEObject(referenceableObject); assertNotNull("No container is found to launch wizard.", container); SWTBotHelper.waitAllUiEvents(); final SWTBotTreeItem selectNode = selectNode(editor, container); assertNotNull("No element is selected in the editor", selectNode); initTab(propertiesEditionElement); assertFalse("The set action must be define in a sequence.", sequenceType == null); propertiesEdition.addFeature(selectNode, propertiesEditionElement, sequenceType); SWTBotHelper.waitAllUiEvents(); return (EObject) EEFModelHelper.eGet(container, propertiesEditionElement.getModel()); } /** * Add ReferenceableObject. * * @param referenceableObject * @param eContainingFeature * @return */ private EObject add( ReferenceableObject referenceableObject, final EStructuralFeature eContainingFeature) { assertNotNull("The editeur is not opened.", editor); final EObject container = getEObjectFromReferenceableEObject(referenceableObject); assertNotNull("No container is found to launch add action.", container); final SWTBotTreeItem selectNode = selectNode(editor, container); assertNotNull("No element is selected in the editor", selectNode); SWTBotHelper.clickContextMenu(selectNode, eContainingFeature.getEType().getName()); SWTBotHelper.waitAllUiEvents(); return (EObject) EEFModelHelper.eGet(container, eContainingFeature); } /** * {@inheritDoc} * * @see * org.eclipse.emf.eef.modelingBot.IModelingBot#remove(org.eclipse.emf.eef.components.PropertiesEditionElement, * org.eclipse.emf.eef.extended.editor.ReferenceableObject) */ public void remove( PropertiesEditionElement propertiesEditionElement, ReferenceableObject referenceableObject) { if (propertiesEditionElement != null) { // work on table composition removePropertiesEditionElement(propertiesEditionElement, referenceableObject); } else { // work on context menu remove(referenceableObject); } } /** * Remove propertiesEditionElement. * * @param propertiesEditionElement * @param referenceableObject */ private void removePropertiesEditionElement( PropertiesEditionElement propertiesEditionElement, ReferenceableObject referenceableObject) { SWTBotHelper.waitAllUiEvents(); assertNotNull("The editeur is not opened.", editor); final EObject remove = getEObjectFromReferenceableEObject(referenceableObject); assertNotNull("Element to remove does not exist.", remove); final EObject container = remove.eContainer(); assertNotNull("The container of the element to remove does not exist.", container); SWTBotHelper.waitAllUiEvents(); final SWTBotTreeItem selectNode = selectNode(editor, container); assertNotNull("No element is selected in the editor", selectNode); initTab(propertiesEditionElement); assertFalse("The set action must be define in a sequence.", sequenceType == null); propertiesEdition.removeFeature(remove, propertiesEditionElement, sequenceType); SWTBotHelper.waitAllUiEvents(); } /** * Remove referenceableObject. * * @param referenceableObject */ private void remove(ReferenceableObject referenceableObject) { assertNotNull("The editeur is not opened.", editor); final EObject container = getEObjectFromReferenceableEObject(referenceableObject); assertNotNull("No container is found to launch add action.", container); final SWTBotTreeItem selectNode = selectNode(editor, container); assertNotNull("No element is selected in the editor", selectNode); SWTBotHelper.clickContextMenu(selectNode, UIConstants.DELETE_MENU); SWTBotHelper.waitAllUiEvents(); } /** * {@inheritDoc} * * @see * org.eclipse.emf.eef.modelingBot.IModelingBot#set(org.eclipse.emf.eef.components.PropertiesEditionElement, * org.eclipse.emf.eef.extended.editor.ReferenceableObject, * org.eclipse.emf.ecore.EStructuralFeature, java.lang.String) */ public void set( PropertiesEditionElement propertiesEditionElement, ReferenceableObject referenceableObject, EStructuralFeature eContainingFeature, String value) { SWTBotHelper.waitAllUiEvents(); assertNotNull("The properties edition element is not set.", propertiesEditionElement); assertNotNull("The editeur is not opened.", editor); final EObject container = getEObjectFromReferenceableEObject(referenceableObject); assertNotNull("No container is found to launch add action.", container); SWTBotHelper.waitAllUiEvents(); assertFalse("The set action must be define in a sequence.", sequenceType == null); if (sequenceType.equals(SequenceType.DETAILS_PAGE)) { final SWTBotTreeItem selectNode = selectNode(editor, container); assertNotNull("No element is selected in the editor", selectNode); initTab(propertiesEditionElement); propertiesEdition.updateFeature(selectNode, propertiesEditionElement, value, sequenceType); } else if (sequenceType.equals(SequenceType.WIZARD)) { propertiesEdition.updateFeature(null, propertiesEditionElement, value, sequenceType); } } /** * Select the tab defined in the PEE. * * @param propertiesEditionElement PropertiesEditionElement */ protected void initTab(PropertiesEditionElement propertiesEditionElement) { assertFalse(propertiesEditionElement.getViews().isEmpty()); if (EEFModelHelper.getComponent(propertiesEditionElement).getViews().size() > 1) { final ElementEditor elementEditor = propertiesEditionElement.getViews().get(0); final View view = EEFModelHelper.getView(elementEditor); if (view.getName() != null) { cTabItem(view.getName()).activate(); cTabItem(view.getName()).setFocus(); } } } /** * {@inheritDoc} * * @see * org.eclipse.emf.eef.modelingBot.IModelingBot#set(org.eclipse.emf.eef.components.PropertiesEditionElement, * org.eclipse.emf.eef.extended.editor.ReferenceableObject, * org.eclipse.emf.ecore.EStructuralFeature, * org.eclipse.emf.eef.extended.editor.ReferenceableObject) */ public void set( PropertiesEditionElement propertiesEditionElement, ReferenceableObject referenceableObject, EStructuralFeature eContainingFeature, ReferenceableObject value) { // TODO Auto-generated method stub } /** * {@inheritDoc} * * @see * org.eclipse.emf.eef.modelingBot.IModelingBot#unset(org.eclipse.emf.eef.components.PropertiesEditionElement, * org.eclipse.emf.eef.extended.editor.ReferenceableObject, * org.eclipse.emf.ecore.EStructuralFeature) */ public void unset( PropertiesEditionElement propertiesEditionElement, ReferenceableObject referenceableObject, EStructuralFeature eContainingFeature) { set(propertiesEditionElement, referenceableObject, eContainingFeature, ""); } /** * {@inheritDoc} * * @see org.eclipse.emf.eef.modelingBot.IModelingBot#runModelingBot(java.lang.String) */ public void runModelingBot(String path) throws CoreException, IOException { interpreter.runModelingBot(path); } /** * {@inheritDoc} * * @see org.eclipse.emf.eef.modelingBot.IModelingBot#createModel(java.lang.String, * java.lang.String, org.eclipse.emf.ecore.EClass) */ public EObject createModel(String path, String modelName, EClass root) { final String[] split = modelName.split("\\."); final String extension = split[split.length - 1]; selectInProjectExplorer(path); menu(UIConstants.FILE_MENU).menu(UIConstants.OTHER_MENU).click(); final SWTBotShell newFileShell = shell(UIConstants.NEW); activateShell(newFileShell); createModel(modelName, root, extension); // close the default editor menu(UIConstants.FILE_MENU).menu(UIConstants.CLOSE_MENU).click(); // open with EEF Editor openWithEEFEditor(path, modelName); editor = editorByTitle(modelName); return getRoot(path, modelName); } /** * @param path * @param modelName * @return the root of the new resource */ private EObject getRoot(String path, String modelName) { final URI fileURI = URI.createPlatformResourceURI(path + "/" + modelName, true); Resource resource = editingDomain.getResourceSet().getResource(fileURI, true); setTestModelResource(resource); final SWTBotTreeItem modelTreeItem = editor.bot().tree().getTreeItem(testModelResource.getURI().toString()); resource = (Resource) syncExec( new Result<Object>() { public Object run() { return modelTreeItem.widget.getData(); } }); setTestModelResource(resource); assertFalse("The model is empty.", resource.getContents().isEmpty()); return resource.getContents().get(0); } /** * Open eef editor. * * @param path * @param modelName */ private void openWithEEFEditor(String path, String modelName) { final SWTBotTree wizardTree = viewByTitle(UIConstants.PACKAGE_EXPLORER_VIEW_NAME).bot().tree(); final SWTBotTreeItem treeItem = wizardTree.expandNode(path).expandNode(modelName).select(); SWTBotHelper.clickContextMenu(treeItem, UIConstants.OPEN_WITH_INTERACTIVE_EEF_EDITOR_MENU); } /** * Create the new model. * * @param modelName * @param root * @param extension */ private void createModel(String modelName, EClass root, final String extension) { final String modelType = StringHelper.toU1Case(extension) + " Model"; final SWTBotTreeItem item = tree().expandNode("EMF Editing Framework").expandNode("EMF Model").select(); assertNotNull("The model " + modelType + " can not be created.", item); button(UIConstants.NEXT_BUTTON).click(); button("Browse Registered Packages...").click(); final String nsURI = interpreter.getPropertiesEditionContext().getModel().getEcorePackage().getNsURI(); table().getTableItem(nsURI).select(); button(UIConstants.OK_BUTTON).click(); button(UIConstants.NEXT_BUTTON).click(); textWithLabel(IDEWorkbenchMessages.WizardNewFileCreationPage_fileLabel).setText(modelName); button(UIConstants.NEXT_BUTTON).click(); assertNotNull("The class " + root.toString() + " can not be loaded", root.getName()); comboBox().setSelection(root.getName()); button(UIConstants.FINISH_BUTTON).click(); } /** * @param ref ReferenceableObject * @return the object corresponding to the ReferenceableObject */ public EObject getEObjectFromReferenceableEObject(ReferenceableObject ref) { return interpreter.getEObjectFromReferenceableEObject(ref); } /** * Select the given element in the given editor. * * @param editor the editor where the bot must process * @param element the element to select * @return the selected node */ public SWTBotTreeItem selectNode(SWTBotEditor editor, EObject element) { assertNotNull("The model has not been initialized.", testModelResource); final List<Object> expansionPath = EEFModelHelper.getExpansionPath(element); final Iterator<Object> iterator = expansionPath.iterator(); Object next = null; SWTBotTreeItem node2 = editor.bot().tree().getTreeItem(testModelResource.getURI().toString()); while (iterator.hasNext()) { sleep(1000); node2.expand(); next = iterator.next(); node2 = selectSubNode(node2, next); } return node2; } /** * Select the given element in the given editor. * * @param editor the editor where the bot must process * @param element the element to select * @return the selected node */ public SWTBotTreeItem selectNode(SWTBotTree tree, EObject element) { assertNotNull("The model has not been initialized.", testModelResource); final List<Object> expansionPath = EEFModelHelper.getExpansionPath(element); final Iterator<Object> iterator = expansionPath.iterator(); Object next = null; SWTBotTreeItem node2 = tree.getTreeItem(testModelResource.getURI().toString()); while (iterator.hasNext()) { node2.expand(); next = iterator.next(); node2 = selectSubNode(node2, next); } return node2; } /** * Select the object <code>next</code> as a subnode of the <code>currentNode</code>. * * @param currentNode the currentNode * @param next the subnode to select * @return the selected node */ private SWTBotTreeItem selectSubNode(SWTBotTreeItem currentNode, Object next) { final AdapterFactory adapterFactory = EEFRuntimePlugin.getDefault().getAdapterFactory(); final IItemLabelProvider labelProvider = (IItemLabelProvider) adapterFactory.adapt(next, IItemLabelProvider.class); final String text = labelProvider.getText(next); final SWTBotTreeItem node2 = currentNode.getNode(text); node2.select(); return node2; } /** * Set the test model resource. * * @param resource Resource */ public void setTestModelResource(Resource resource) { this.testModelResource = resource; } /** * {@inheritDoc} * * @see org.eclipse.emf.eef.modelingBot.IModelingBot#getActiveResource() */ public Resource getActiveResource() { return testModelResource; } /** * @param viewID the edited advEOFCV * @return the browse button of the given advEOFCV */ public SWTBotButton addButtonAdvancedTableComposition(String viewID) { return helper.addButtonAdvancedTableComposition(viewID); } /** * {@inheritDoc} * * @see org.eclipse.emf.eef.modelingBot.IModelingBot#cancel() */ public void cancel() { button(UIConstants.CANCEL_BUTTON).click(); } /** Dispose the interpreter. */ public void dispose() { interpreter.dispose(); } /** * {@inheritDoc} * * @see org.eclipse.emf.eef.modelingBot.IModelingBot#validateBatchEditing() */ public void validateBatchEditing() { button(UIConstants.FINISH_BUTTON).click(); } /** * {@inheritDoc} * * @see * org.eclipse.emf.eef.modelingBot.IModelingBot#setSequenceType(org.eclipse.emf.eef.modelingBot.SequenceType) */ public void setSequenceType(SequenceType sequenceType) { this.sequenceType = sequenceType; } /** * @param viewID the edited advEOFCV * @return the remove button of the given advEOFCV */ public SWTBotButton removeButtonAdvancedTableComposition(String viewID) { return helper.removeButtonAdvancedTableComposition(viewID); } /** * Select the object in the advanced table composition. * * @param eefWidgetIdKey widget key * @param qualifiedIdentifier identifier of the PEE * @param selected object to select */ public void selectInTableWithId( String eefWidgetIdKey, String qualifiedIdentifier, EObject selected) { final SWTBotTable table = tableWithId(eefWidgetIdKey, qualifiedIdentifier); final SWTBotTableItem tableItem = getTableItem(table, selected); assertNotNull("No table item is found.", tableItem); tableItem.select(); } /** * @param table * @param object * @return the table item corresponding to the object */ private SWTBotTableItem getTableItem(SWTBotTable table, EObject object) { for (int i = 0; i < table.rowCount(); i++) { final SWTBotTableItem tableItem = table.getTableItem(i); final Object data = syncExec( new Result<Object>() { public Object run() { return tableItem.widget.getData(); } }); if (data.equals(object)) { return table.getTableItem(i); } } return null; } /** * {@inheritDoc} * * @see org.eclipse.emf.eef.modelingBot.IModelingBot#check() */ public void check() {} /** * {@inheritDoc} * * @see org.eclipse.emf.eef.modelingBot.IModelingBot#getModelingBotInterpreter() */ public IModelingBotInterpreter getModelingBotInterpreter() { return interpreter; } }