| /* |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you 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 org.apache.directory.studio.test.integration.ui.bots; |
| |
| |
| import java.util.ArrayList; |
| import java.util.Arrays; |
| import java.util.List; |
| |
| import org.apache.directory.studio.ldapbrowser.core.BrowserCoreMessages; |
| import org.apache.directory.studio.test.integration.ui.ContextMenuHelper; |
| import org.apache.directory.studio.test.integration.ui.bots.utils.JobWatcher; |
| import org.eclipse.swtbot.swt.finder.SWTBot; |
| import org.eclipse.swtbot.swt.finder.exceptions.WidgetNotFoundException; |
| import org.eclipse.swtbot.swt.finder.keyboard.Keystrokes; |
| import org.eclipse.swtbot.swt.finder.widgets.SWTBotText; |
| import org.eclipse.swtbot.swt.finder.widgets.SWTBotTree; |
| import org.eclipse.swtbot.swt.finder.widgets.SWTBotTreeItem; |
| |
| |
| /** |
| * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a> |
| */ |
| class EntryEditorWidgetBot |
| { |
| private SWTBot bot; |
| |
| EntryEditorWidgetBot( SWTBot bot ) |
| { |
| this.bot = bot; |
| } |
| |
| |
| boolean isVisisble() |
| { |
| return bot.tree() != null; |
| } |
| |
| |
| List<String> getAttributeValues() |
| { |
| SWTBotTree tree = bot.tree(); |
| List<String> attributes = new ArrayList<String>(); |
| int rowCount = tree.rowCount(); |
| for ( int i = 0; i < rowCount; i++ ) |
| { |
| String attribute = tree.cell( i, 0 ); |
| String value = tree.cell( i, 1 ); |
| attributes.add( attribute + ": " + value ); |
| } |
| return attributes; |
| } |
| |
| |
| NewAttributeWizardBot openNewAttributeWizard() |
| { |
| ContextMenuHelper.clickContextMenu( bot.tree(), "New Attribute..." ); |
| return new NewAttributeWizardBot(); |
| } |
| |
| |
| void typeValueAndFinish( String value, boolean wait ) |
| { |
| SWTBotText text = bot.text( 1 ); |
| text.setText( value ); |
| |
| if ( wait ) |
| { |
| JobWatcher jobWatcher = new JobWatcher( BrowserCoreMessages.jobs__execute_ldif_name ); |
| bot.tree().pressShortcut( Keystrokes.LF ); |
| jobWatcher.waitUntilDone(); |
| } |
| else |
| { |
| bot.tree().pressShortcut( Keystrokes.LF ); |
| } |
| } |
| |
| |
| public ErrorDialogBot typeValueAndFinishAndExpectErrorDialog( String value ) |
| { |
| String shellText = BotUtils.shell( () -> typeValueAndFinish( value, false ), "Error" ).getText(); |
| return new ErrorDialogBot( shellText ); |
| } |
| |
| |
| void cancelEditValue() |
| { |
| SWTBotTree tree = bot.tree( 0 ); |
| // TODO: Workaround for DIRAPI-228/DIRAPI-229 |
| //tree.getTreeItem( "objectClass" ).click(); |
| SWTBotTreeItem[] allItems = tree.getAllItems(); |
| for ( SWTBotTreeItem item : allItems ) |
| { |
| if ( "objectclass".equalsIgnoreCase( item.getText() ) ) |
| { |
| item.click(); |
| return; |
| } |
| } |
| } |
| |
| |
| void addValue( String attributeType ) |
| { |
| SWTBotTree tree = bot.tree(); |
| tree.getTreeItem( attributeType ).click(); |
| ContextMenuHelper.clickContextMenu( bot.tree(), "New Value" ); |
| } |
| |
| |
| EditAttributeWizardBot editAttribute( String attributeType, String value ) |
| { |
| cancelEditValue(); |
| SWTBotTreeItem treeItem = getTreeItem( attributeType, value ); |
| treeItem.select(); |
| ContextMenuHelper.clickContextMenu( bot.tree(), "Edit Attribute Description" ); |
| return new EditAttributeWizardBot(); |
| } |
| |
| |
| void editValue( String attributeType, String value ) |
| { |
| cancelEditValue(); |
| SWTBotTreeItem treeItem = getTreeItem( attributeType, value ); |
| treeItem.doubleClick(); |
| } |
| |
| |
| void editValueWith( String attributeType, String value, String valueEditorLabel ) |
| { |
| cancelEditValue(); |
| SWTBotTreeItem treeItem = getTreeItem( attributeType, value ); |
| treeItem.select(); |
| ContextMenuHelper.clickContextMenu( bot.tree(), "Edit Value With", valueEditorLabel ); |
| } |
| |
| |
| DnEditorDialogBot editValueExpectingDnEditor( String attributeType, String value ) |
| { |
| editValue( attributeType, value ); |
| return new DnEditorDialogBot(); |
| } |
| |
| |
| PasswordEditorDialogBot editValueExpectingPasswordEditor( String attributeType, String value ) |
| { |
| editValue( attributeType, value ); |
| return new PasswordEditorDialogBot(); |
| } |
| |
| |
| AciItemEditorDialogBot editValueExpectingAciItemEditor( String attributeType, String value ) |
| { |
| editValue( attributeType, value ); |
| return new AciItemEditorDialogBot(); |
| } |
| |
| |
| SubtreeSpecificationEditorDialogBot editValueExpectingSubtreeSpecificationEditor( String attributeType, |
| String value ) |
| { |
| editValue( attributeType, value ); |
| return new SubtreeSpecificationEditorDialogBot(); |
| } |
| |
| |
| CertificateEditorDialogBot editValueExpectingCertificateEditor( String attributeType, String value ) |
| { |
| editValue( attributeType, value ); |
| return new CertificateEditorDialogBot(); |
| } |
| |
| |
| HexEditorDialogBot editValueExpectingHexEditor( String attributeType, String value ) |
| { |
| editValue( attributeType, value ); |
| return new HexEditorDialogBot(); |
| } |
| |
| |
| TextEditorDialogBot editValueWithTextEditor( String attributeType, String value ) |
| { |
| editValueWith( attributeType, value, "^Text Editor$" ); |
| return new TextEditorDialogBot(); |
| } |
| |
| |
| private SWTBotTreeItem getTreeItem( String attributeType, String value ) |
| { |
| SWTBotTree tree = bot.tree(); |
| SWTBotTreeItem[] allItems = tree.getAllItems(); |
| for ( SWTBotTreeItem item : allItems ) |
| { |
| if ( item.cell( 0 ).equalsIgnoreCase( attributeType ) |
| && ( value == null || item.cell( 1 ).equals( value ) ) ) |
| { |
| return item; |
| } |
| } |
| throw new WidgetNotFoundException( "Attribute " + attributeType + ":" + value + " not found." ); |
| } |
| |
| |
| private List<SWTBotTreeItem> getTreeItems( String... attributeTypes ) |
| { |
| List<String> attributeTypeList = Arrays.asList( attributeTypes ); |
| List<SWTBotTreeItem> items = new ArrayList<>(); |
| SWTBotTree tree = bot.tree(); |
| SWTBotTreeItem[] allItems = tree.getAllItems(); |
| for ( SWTBotTreeItem item : allItems ) |
| { |
| if ( attributeTypeList.contains( item.cell( 0 ) ) ) |
| { |
| items.add( item ); |
| } |
| } |
| return items; |
| } |
| |
| |
| void deleteValue( String attributeType, String value ) |
| { |
| SWTBotTreeItem treeItem = getTreeItem( attributeType, value ); |
| treeItem.select(); |
| ContextMenuHelper.clickContextMenu( bot.tree(), "Delete Value" ); |
| DeleteDialogBot deleteDialogBot = new DeleteDialogBot( DeleteDialogBot.DELETE_VALUE_TITLE ); |
| deleteDialogBot.clickOkButton(); |
| } |
| |
| |
| public ErrorDialogBot deleteValueExpectingErrorDialog( String attributeType, String value ) |
| { |
| SWTBotTreeItem treeItem = getTreeItem( attributeType, value ); |
| treeItem.select(); |
| ContextMenuHelper.clickContextMenu( bot.tree(), "Delete Value" ); |
| DeleteDialogBot deleteDialogBot = new DeleteDialogBot( DeleteDialogBot.DELETE_VALUE_TITLE ); |
| return deleteDialogBot.clickOkButtonExpectingErrorDialog(); |
| } |
| |
| |
| public void copyValue( String attributeType, String value ) |
| { |
| |
| SWTBotTreeItem treeItem = getTreeItem( attributeType, value ); |
| treeItem.select(); |
| ContextMenuHelper.clickContextMenu( bot.tree(), "Copy Value" ); |
| } |
| |
| |
| public void copyValues( String... attributeTypes ) |
| { |
| List<SWTBotTreeItem> items = getTreeItems( attributeTypes ); |
| bot.tree().select( items.toArray( new SWTBotTreeItem[0] ) ); |
| ContextMenuHelper.clickContextMenu( bot.tree(), "Copy Values" ); |
| } |
| |
| |
| public void pasteValue() |
| { |
| ContextMenuHelper.clickContextMenu( bot.tree(), "Paste Value" ); |
| } |
| |
| |
| public void pasteValues() |
| { |
| ContextMenuHelper.clickContextMenu( bot.tree(), "Paste Values" ); |
| } |
| |
| } |