You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by se...@apache.org on 2009/11/15 13:38:59 UTC
svn commit: r836350 - in
/directory/studio/trunk/test-integration-ui/src/main/java/org/apache/directory/studio/test/integration/ui:
./ bots/
Author: seelmann
Date: Sun Nov 15 12:38:59 2009
New Revision: 836350
URL: http://svn.apache.org/viewvc?rev=836350&view=rev
Log:
Extracted SWTBot calls to reusable helper bots.
Added:
directory/studio/trunk/test-integration-ui/src/main/java/org/apache/directory/studio/test/integration/ui/bots/ExportWizardBot.java
directory/studio/trunk/test-integration-ui/src/main/java/org/apache/directory/studio/test/integration/ui/bots/ImportWizardBot.java
Modified:
directory/studio/trunk/test-integration-ui/src/main/java/org/apache/directory/studio/test/integration/ui/ImportExportTest.java
directory/studio/trunk/test-integration-ui/src/main/java/org/apache/directory/studio/test/integration/ui/bots/BrowserViewBot.java
directory/studio/trunk/test-integration-ui/src/main/java/org/apache/directory/studio/test/integration/ui/bots/DeleteDialogBot.java
directory/studio/trunk/test-integration-ui/src/main/java/org/apache/directory/studio/test/integration/ui/bots/EntryEditorWidgetBot.java
Modified: directory/studio/trunk/test-integration-ui/src/main/java/org/apache/directory/studio/test/integration/ui/ImportExportTest.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/test-integration-ui/src/main/java/org/apache/directory/studio/test/integration/ui/ImportExportTest.java?rev=836350&r1=836349&r2=836350&view=diff
==============================================================================
--- directory/studio/trunk/test-integration-ui/src/main/java/org/apache/directory/studio/test/integration/ui/ImportExportTest.java (original)
+++ directory/studio/trunk/test-integration-ui/src/main/java/org/apache/directory/studio/test/integration/ui/ImportExportTest.java Sun Nov 15 12:38:59 2009
@@ -22,8 +22,8 @@
import static junit.framework.Assert.assertEquals;
+import static junit.framework.Assert.assertFalse;
import static junit.framework.Assert.assertTrue;
-import static junit.framework.Assert.fail;
import java.io.File;
import java.io.InputStream;
@@ -40,13 +40,13 @@
import org.apache.directory.server.integ.SiRunner;
import org.apache.directory.server.ldap.LdapServer;
import org.apache.directory.studio.ldapbrowser.core.events.EventRegistry;
+import org.apache.directory.studio.test.integration.ui.bots.BrowserViewBot;
import org.apache.directory.studio.test.integration.ui.bots.ConnectionsViewBot;
+import org.apache.directory.studio.test.integration.ui.bots.DeleteDialogBot;
+import org.apache.directory.studio.test.integration.ui.bots.ExportWizardBot;
+import org.apache.directory.studio.test.integration.ui.bots.ImportWizardBot;
import org.apache.directory.studio.test.integration.ui.bots.StudioBot;
import org.eclipse.core.runtime.Platform;
-import org.eclipse.swtbot.eclipse.finder.SWTWorkbenchBot;
-import org.eclipse.swtbot.swt.finder.waits.DefaultCondition;
-import org.eclipse.swtbot.swt.finder.widgets.SWTBotTree;
-import org.eclipse.swtbot.swt.finder.widgets.SWTBotTreeItem;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
@@ -69,8 +69,7 @@
private StudioBot studioBot;
private ConnectionsViewBot connectionsViewBot;
-
- private SWTWorkbenchBot eBot;
+ private BrowserViewBot browserViewBot;
@Before
@@ -80,8 +79,7 @@
studioBot.resetLdapPerspective();
connectionsViewBot = studioBot.getConnectionView();
connectionsViewBot.createTestConnection( "ImportExportTest", ldapServer.getPort() );
-
- eBot = new SWTWorkbenchBot();
+ browserViewBot = studioBot.getBrowserView();
}
@@ -89,7 +87,6 @@
public void tearDown() throws Exception
{
connectionsViewBot.deleteTestConnections();
- eBot = null;
}
@@ -110,33 +107,15 @@
URL url = Platform.getInstanceLocation().getURL();
final String file = url.getFile() + "ImportExportTest.ldif";
- final SWTBotTree browserTree = SWTBotUtils.getLdapBrowserTree( eBot );
-
- SWTBotUtils.selectEntry( eBot, browserTree, false, "DIT", "Root DSE", "ou=system", "ou=users",
- "cn=Wolfgang K\u00f6lbel" );
+ browserViewBot.selectEntry( "DIT", "Root DSE", "ou=system", "ou=users", "cn=Wolfgang K\u00f6lbel" );
// export LDIF
- ContextMenuHelper.clickContextMenu( browserTree, "Export", "LDIF Export..." );
- eBot.shell( "LDIF Export" );
- eBot.button( "Next >" ).click();
- eBot.comboBoxWithLabel( "LDIF File:" ).setText( file );
- eBot.button( "Finish" ).click();
-
- // wait till LDIF file exists
- eBot.waitUntil( new DefaultCondition()
- {
- public boolean test() throws Exception
- {
- File f = new File( file );
- return f.exists() && f.length() > 200; // is actually 217 bytes
- }
-
-
- public String getFailureMessage()
- {
- return "LDIF File " + file + " not found.";
- }
- } );
+ ExportWizardBot wizardBot = browserViewBot.openExportLdifWizard();
+ assertTrue( wizardBot.isVisible() );
+ wizardBot.clickNextButton();
+ wizardBot.typeFile( file );
+ wizardBot.clickFinishButton();
+ wizardBot.waitTillExportFinished( file, 200 ); // is actually 217 bytes
List<String> lines = FileUtils.readLines( new File( file ) );
// verify that the first line of exported LDIF is "version: 1"
@@ -146,18 +125,19 @@
"dn:: Y249V29sZmdhbmcgS8O2bGJlbCxvdT11c2VycyxvdT1zeXN0ZW0=" );
// delete entry
- ContextMenuHelper.clickContextMenu( browserTree, "Delete Entry" );
- eBot.button( "OK" ).click();
+ DeleteDialogBot dialogBot = browserViewBot.openDeleteDialog();
+ assertTrue( dialogBot.isVisible() );
+ dialogBot.clickOkButton();
+ assertFalse( browserViewBot.existsEntry( "DIT", "Root DSE", "ou=system", "ou=users", "cn=Wolfgang K\u00f6lbel" ) );
// import LDIF
- ContextMenuHelper.clickContextMenu( browserTree, "Import", "LDIF Import..." );
- eBot.shell( "LDIF Import" );
- eBot.comboBoxWithLabel( "LDIF File:" ).setText( file );
- eBot.button( "Finish" ).click();
+ ImportWizardBot importWizardBot = browserViewBot.openImportLdifWizard();
+ importWizardBot.typeFile( file );
+ importWizardBot.clickFinishButton();
// verify that entry with umlaut exists
- SWTBotUtils.selectEntry( eBot, browserTree, false, "DIT", "Root DSE", "ou=system", "ou=users",
- "cn=Wolfgang K\u00f6lbel" );
+ assertTrue( browserViewBot.existsEntry( "DIT", "Root DSE", "ou=system", "ou=users", "cn=Wolfgang K\u00f6lbel" ) );
+ browserViewBot.selectEntry( "DIT", "Root DSE", "ou=system", "ou=users", "cn=Wolfgang K\u00f6lbel" );
}
@@ -178,34 +158,16 @@
URL url = Platform.getInstanceLocation().getURL();
final String file = url.getFile() + "ImportExportTest.dsml";
- final SWTBotTree browserTree = SWTBotUtils.getLdapBrowserTree( eBot );
+ browserViewBot.selectEntry( "DIT", "Root DSE", "ou=system", "ou=users", "cn=Wolfgang K\u00f6lbel" );
- SWTBotUtils.selectEntry( eBot, browserTree, false, "DIT", "Root DSE", "ou=system", "ou=users",
- "cn=Wolfgang K\u00f6lbel" );
-
- // export DSML
- ContextMenuHelper.clickContextMenu( browserTree, "Export", "DSML Export..." );
- eBot.shell( "DSML Export" );
- eBot.button( "Next >" ).click();
- eBot.comboBoxWithLabel( "DSML File:" ).setText( file );
- eBot.radio( "DSML Request" ).click();
- eBot.button( "Finish" ).click();
-
- // wait till DSML file exists
- eBot.waitUntil( new DefaultCondition()
- {
- public boolean test() throws Exception
- {
- File f = new File( file );
- return f.exists() && f.length() > 600; // is actually 651 bytes
- }
-
-
- public String getFailureMessage()
- {
- return "DSML File " + file + " not found.";
- }
- } );
+ // export LDIF
+ ExportWizardBot wizardBot = browserViewBot.openExportDsmlWizard();
+ assertTrue( wizardBot.isVisible() );
+ wizardBot.clickNextButton();
+ wizardBot.typeFile( file );
+ wizardBot.selectDsmlRequest();
+ wizardBot.clickFinishButton();
+ wizardBot.waitTillExportFinished( file, 600 ); // is actually 651 bytes
// verify that exported DSML contains the Base64 encoded DN
String content = FileUtils.readFileToString( new File( file ), "UTF-8" );
@@ -213,18 +175,19 @@
.contains( "dn=\"cn=Wolfgang K\u00f6lbel,ou=users,ou=system\"" ) );
// delete entry
- ContextMenuHelper.clickContextMenu( browserTree, "Delete Entry" );
- eBot.button( "OK" ).click();
+ DeleteDialogBot dialogBot = browserViewBot.openDeleteDialog();
+ assertTrue( dialogBot.isVisible() );
+ dialogBot.clickOkButton();
+ assertFalse( browserViewBot.existsEntry( "DIT", "Root DSE", "ou=system", "ou=users", "cn=Wolfgang K\u00f6lbel" ) );
// import DSML
- ContextMenuHelper.clickContextMenu( browserTree, "Import", "DSML Import..." );
- eBot.shell( "DSML Import" );
- eBot.comboBoxWithLabel( "DSML File:" ).setText( file );
- eBot.button( "Finish" ).click();
+ ImportWizardBot importWizardBot = browserViewBot.openImportDsmlWizard();
+ importWizardBot.typeFile( file );
+ importWizardBot.clickFinishButton();
// verify that entry with umlaut exists
- SWTBotUtils.selectEntry( eBot, browserTree, false, "DIT", "Root DSE", "ou=system", "ou=users",
- "cn=Wolfgang K\u00f6lbel" );
+ assertTrue( browserViewBot.existsEntry( "DIT", "Root DSE", "ou=system", "ou=users", "cn=Wolfgang K\u00f6lbel" ) );
+ browserViewBot.selectEntry( "DIT", "Root DSE", "ou=system", "ou=users", "cn=Wolfgang K\u00f6lbel" );
}
@@ -240,8 +203,6 @@
@Test
public void testImportContextEntryRefreshesRootDSE() throws Exception
{
- final SWTBotTree browserTree = SWTBotUtils.getLdapBrowserTree( eBot );
-
// add a new partition
Partition partition = new JdbmPartition();
partition.setId( "example" );
@@ -249,32 +210,24 @@
ldapServer.getDirectoryService().addPartition( partition );
// refresh root DSE and ensure that the partition is in root DSE
- SWTBotTreeItem rootDSE = SWTBotUtils.selectEntry( eBot, browserTree, false, "DIT", "Root DSE" );
- ContextMenuHelper.clickContextMenu( browserTree, "Reload Entry" );
+ browserViewBot.selectEntry( "DIT", "Root DSE" );
+ browserViewBot.refresh();
// ensure context entry is not there
- rootDSE = SWTBotUtils.selectEntry( eBot, browserTree, false, "DIT", "Root DSE" );
- List<String> nodes = rootDSE.getNodes();
- for ( String node : nodes )
- {
- if ( node.startsWith( "dc=example,dc=com" ) )
- {
- fail( "dc=example,dc=com should not exist yet" );
- }
- }
+ assertFalse( browserViewBot.existsEntry( "DIT", "Root DSE", "dc=example,dc=com" ) );
// import
URL url = Platform.getInstanceLocation().getURL();
String file = url.getFile() + "ImportContextEntry.ldif";
String data = "dn:dc=example,dc=com\nobjectClass:top\nobjectClass:domain\ndc:example\n\n";
FileUtils.writeStringToFile( new File( file ), data );
- ContextMenuHelper.clickContextMenu( browserTree, "Import", "LDIF Import..." );
- eBot.shell( "LDIF Import" );
- eBot.comboBoxWithLabel( "LDIF File:" ).setText( file );
- eBot.button( "Finish" ).click();
+ ImportWizardBot importWizardBot = browserViewBot.openImportLdifWizard();
+ importWizardBot.typeFile( file );
+ importWizardBot.clickFinishButton();
// ensure context entry is there now, without a manual refresh
- SWTBotUtils.selectEntry( eBot, browserTree, false, "DIT", "Root DSE", "dc=example,dc=com" );
+ assertTrue( browserViewBot.existsEntry( "DIT", "Root DSE", "dc=example,dc=com" ) );
+ browserViewBot.selectEntry( "DIT", "Root DSE", "dc=example,dc=com" );
}
@@ -294,20 +247,19 @@
String ldifContent = IOUtils.toString( is );
FileUtils.writeStringToFile( new File( destFile ), ldifContent );
- SWTBotTree browserTree = SWTBotUtils.getLdapBrowserTree( eBot );
- SWTBotUtils.selectEntry( eBot, browserTree, true, "DIT", "Root DSE", "ou=system", "ou=users" );
+ browserViewBot.selectEntry( "DIT", "Root DSE", "ou=system", "ou=users" );
+ browserViewBot.expandEntry( "DIT", "Root DSE", "ou=system", "ou=users" );
long fireCount0 = EventRegistry.getFireCount();
// import the LDIF
- ContextMenuHelper.clickContextMenu( browserTree, "Import", "LDIF Import..." );
- eBot.shell( "LDIF Import" );
- eBot.comboBoxWithLabel( "LDIF File:" ).setText( destFile );
- eBot.button( "Finish" ).click();
+ ImportWizardBot importWizardBot = browserViewBot.openImportLdifWizard();
+ importWizardBot.typeFile( destFile );
+ importWizardBot.clickFinishButton();
long fireCount1 = EventRegistry.getFireCount();
- SWTBotUtils.selectEntry( eBot, browserTree, false, "DIT", "Root DSE", "ou=system", "ou=users", "uid=User.1" );
+ browserViewBot.selectEntry( "DIT", "Root DSE", "ou=system", "ou=users", "uid=User.1" );
// verify that only three two events were fired between Import
long fireCount = fireCount1 - fireCount0;
Modified: directory/studio/trunk/test-integration-ui/src/main/java/org/apache/directory/studio/test/integration/ui/bots/BrowserViewBot.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/test-integration-ui/src/main/java/org/apache/directory/studio/test/integration/ui/bots/BrowserViewBot.java?rev=836350&r1=836349&r2=836350&view=diff
==============================================================================
--- directory/studio/trunk/test-integration-ui/src/main/java/org/apache/directory/studio/test/integration/ui/bots/BrowserViewBot.java (original)
+++ directory/studio/trunk/test-integration-ui/src/main/java/org/apache/directory/studio/test/integration/ui/bots/BrowserViewBot.java Sun Nov 15 12:38:59 2009
@@ -99,8 +99,44 @@
public DeleteDialogBot openDeleteDialog()
{
- ContextMenuHelper.clickContextMenu( browserBot.getTree(), "Delete Entries" );
- return new DeleteDialogBot();
+ if ( browserBot.getTree().selectionCount() == 1 )
+ {
+ ContextMenuHelper.clickContextMenu( browserBot.getTree(), "Delete Entry" );
+ return new DeleteDialogBot( DeleteDialogBot.DELETE_ENTRY_TITLE );
+ }
+ else
+ {
+ ContextMenuHelper.clickContextMenu( browserBot.getTree(), "Delete Entries" );
+ return new DeleteDialogBot( DeleteDialogBot.DELETE_ENTRIES_TITLE );
+ }
+ }
+
+
+ public ExportWizardBot openExportLdifWizard()
+ {
+ ContextMenuHelper.clickContextMenu( browserBot.getTree(), "Export", "LDIF Export..." );
+ return new ExportWizardBot( ExportWizardBot.EXPORT_LDIF_TITLE );
+ }
+
+
+ public ExportWizardBot openExportDsmlWizard()
+ {
+ ContextMenuHelper.clickContextMenu( browserBot.getTree(), "Export", "DSML Export..." );
+ return new ExportWizardBot( ExportWizardBot.EXPORT_DSML_TITLE );
+ }
+
+
+ public ImportWizardBot openImportLdifWizard()
+ {
+ ContextMenuHelper.clickContextMenu( browserBot.getTree(), "Import", "LDIF Import..." );
+ return new ImportWizardBot( ImportWizardBot.IMPORT_LDIF_TITLE );
+ }
+
+
+ public ImportWizardBot openImportDsmlWizard()
+ {
+ ContextMenuHelper.clickContextMenu( browserBot.getTree(), "Import", "DSML Import..." );
+ return new ImportWizardBot( ImportWizardBot.IMPORT_DSML_TITLE );
}
Modified: directory/studio/trunk/test-integration-ui/src/main/java/org/apache/directory/studio/test/integration/ui/bots/DeleteDialogBot.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/test-integration-ui/src/main/java/org/apache/directory/studio/test/integration/ui/bots/DeleteDialogBot.java?rev=836350&r1=836349&r2=836350&view=diff
==============================================================================
--- directory/studio/trunk/test-integration-ui/src/main/java/org/apache/directory/studio/test/integration/ui/bots/DeleteDialogBot.java (original)
+++ directory/studio/trunk/test-integration-ui/src/main/java/org/apache/directory/studio/test/integration/ui/bots/DeleteDialogBot.java Sun Nov 15 12:38:59 2009
@@ -22,10 +22,21 @@
public class DeleteDialogBot extends DialogBot
{
+ public static final String DELETE_ENTRY_TITLE = "Delete Entry";
+ public static final String DELETE_ENTRIES_TITLE = "Delete Entries";
+ public static final String DELETE_VALUE_TITLE = "Delete Value";
+ private String title;
+
+
+ public DeleteDialogBot( String title )
+ {
+ this.title = title;
+ }
+
public boolean isVisible()
{
- return super.isVisible( "Delete Entries" );
+ return super.isVisible( title );
}
Modified: directory/studio/trunk/test-integration-ui/src/main/java/org/apache/directory/studio/test/integration/ui/bots/EntryEditorWidgetBot.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/test-integration-ui/src/main/java/org/apache/directory/studio/test/integration/ui/bots/EntryEditorWidgetBot.java?rev=836350&r1=836349&r2=836350&view=diff
==============================================================================
--- directory/studio/trunk/test-integration-ui/src/main/java/org/apache/directory/studio/test/integration/ui/bots/EntryEditorWidgetBot.java (original)
+++ directory/studio/trunk/test-integration-ui/src/main/java/org/apache/directory/studio/test/integration/ui/bots/EntryEditorWidgetBot.java Sun Nov 15 12:38:59 2009
@@ -81,7 +81,6 @@
{
cancelEditValue();
SWTBotTreeItem treeItem = getTreeItem( attributeType, value );
- System.out.println( treeItem.cell( 0 ) + " - '" + treeItem.cell( 1 ) + "'" );
treeItem.doubleClick();
}
@@ -113,7 +112,7 @@
SWTBotTreeItem treeItem = getTreeItem( attributeType, value );
treeItem.click();
ContextMenuHelper.clickContextMenu( bot.tree(), "Delete Value" );
- DeleteDialogBot deleteDialogBot = new DeleteDialogBot();
+ DeleteDialogBot deleteDialogBot = new DeleteDialogBot( DeleteDialogBot.DELETE_VALUE_TITLE );
deleteDialogBot.clickOkButton();
}
Added: directory/studio/trunk/test-integration-ui/src/main/java/org/apache/directory/studio/test/integration/ui/bots/ExportWizardBot.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/test-integration-ui/src/main/java/org/apache/directory/studio/test/integration/ui/bots/ExportWizardBot.java?rev=836350&view=auto
==============================================================================
--- directory/studio/trunk/test-integration-ui/src/main/java/org/apache/directory/studio/test/integration/ui/bots/ExportWizardBot.java (added)
+++ directory/studio/trunk/test-integration-ui/src/main/java/org/apache/directory/studio/test/integration/ui/bots/ExportWizardBot.java Sun Nov 15 12:38:59 2009
@@ -0,0 +1,77 @@
+/*
+ * 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.io.File;
+
+import org.eclipse.swtbot.swt.finder.waits.DefaultCondition;
+
+
+public class ExportWizardBot extends WizardBot
+{
+ public static final String EXPORT_LDIF_TITLE = "LDIF Export";
+ public static final String EXPORT_DSML_TITLE = "DSML Export";
+ private String title;
+
+
+ public ExportWizardBot( String title )
+ {
+ this.title = title;
+ }
+
+
+ public boolean isVisible()
+ {
+ return isVisible( title );
+ }
+
+
+ public void typeFile( String file )
+ {
+ bot.comboBox().setText( file );
+ }
+
+
+ public void waitTillExportFinished( final String file, final int expectedFileSize )
+ {
+ bot.waitUntil( new DefaultCondition()
+ {
+ public boolean test() throws Exception
+ {
+ File f = new File( file );
+ return f.exists() && f.length() > expectedFileSize;
+ }
+
+
+ public String getFailureMessage()
+ {
+ return "LDIF File " + file + " not found.";
+ }
+ } );
+ }
+
+
+ public void selectDsmlRequest()
+ {
+ bot.radio( "DSML Request" ).click();
+ }
+
+}
Added: directory/studio/trunk/test-integration-ui/src/main/java/org/apache/directory/studio/test/integration/ui/bots/ImportWizardBot.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/test-integration-ui/src/main/java/org/apache/directory/studio/test/integration/ui/bots/ImportWizardBot.java?rev=836350&view=auto
==============================================================================
--- directory/studio/trunk/test-integration-ui/src/main/java/org/apache/directory/studio/test/integration/ui/bots/ImportWizardBot.java (added)
+++ directory/studio/trunk/test-integration-ui/src/main/java/org/apache/directory/studio/test/integration/ui/bots/ImportWizardBot.java Sun Nov 15 12:38:59 2009
@@ -0,0 +1,47 @@
+/*
+ * 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;
+
+
+public class ImportWizardBot extends WizardBot
+{
+ public static final String IMPORT_LDIF_TITLE = "LDIF Import";
+ public static final String IMPORT_DSML_TITLE = "DSML Import";
+ private String title;
+
+
+ public ImportWizardBot( String title )
+ {
+ this.title = title;
+ }
+
+
+ public boolean isVisible()
+ {
+ return isVisible( title );
+ }
+
+
+ public void typeFile( String file )
+ {
+ bot.comboBox().setText( file );
+ }
+
+}