All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.netbeans.jellytools.PluginsOperator Maven / Gradle / Ivy

The newest version!
/*
 * 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.netbeans.jellytools;

import java.awt.Component;
import java.awt.Container;
import java.io.File;
import javax.swing.JRadioButton;
import org.netbeans.jellytools.actions.ActionNoBlock;
import org.netbeans.jemmy.ComponentChooser;
import org.netbeans.jemmy.JemmyException;
import org.netbeans.jemmy.JemmyProperties;
import org.netbeans.jemmy.operators.JButtonOperator;
import org.netbeans.jemmy.operators.JCheckBoxOperator;
import org.netbeans.jemmy.operators.JFileChooserOperator;
import org.netbeans.jemmy.operators.JRadioButtonOperator;
import org.netbeans.jemmy.operators.JTabbedPaneOperator;
import org.netbeans.jemmy.operators.JTableOperator;
import org.netbeans.jemmy.operators.JTextAreaOperator;
import org.netbeans.jemmy.operators.JTextFieldOperator;

/**
 * Handle Plugins dialog which is opened from main menu "Tools|Plugins".
 * This dialog shows list of installed plugins and also list of available
 * plugins. Plugins can be installed, uninstalled, activated and deactivated.
 * 

* Usage:
*

 *      pluginsOper = PluginsOperator.invoke();
 *      pluginsOper.install("My Plugin");
 *      pluginsOper.close();
 * 
* * @author [email protected] */ public class PluginsOperator extends NbDialogOperator { // "Plugins" private static final String TITLE = Bundle.getString( "org.netbeans.modules.autoupdate.ui.actions.Bundle", "PluginManager_Panel_Name"); // "Tools" private static final String TOOLS_ITEM = Bundle.getStringTrimmed( "org.netbeans.core.ui.resources.Bundle", "Menu/Tools"); // "Plugins" private static final String PLUGINS_ITEM = Bundle.getStringTrimmed( "org.netbeans.modules.autoupdate.ui.actions.Bundle", "PluginManagerAction_Name"); // "Installed" private static final String INSTALLED_LABEL = Bundle.getStringTrimmed( "org.netbeans.modules.autoupdate.ui.Bundle", "PluginManagerUI_UnitTab_Installed_Title"); // "Available Plugins" private static final String AVAILABLE_PLUGINS_LABEL = Bundle.getStringTrimmed( "org.netbeans.modules.autoupdate.ui.Bundle", "PluginManagerUI_UnitTab_Available_Title"); private JTabbedPaneOperator _tabbedPane; /** Waits for Plugins dialog and waits until initial refresh is finished. */ public PluginsOperator() { super(TITLE); tabbedPane(); waitTabEnabled(INSTALLED_LABEL); // this works around when Available Plugins tab is not enabled by default if (!tabbedPane().isEnabledAt(tabbedPane().waitPage(AVAILABLE_PLUGINS_LABEL))) { selectInstalled(); reloadCatalog(); selectAvailablePlugins(); } } /** Invokes Plugins dialog from main menu "Tools|Plugins". * @return instance of PluginsOperator */ public static PluginsOperator invoke() { new ActionNoBlock(TOOLS_ITEM + "|" + PLUGINS_ITEM, null).perform(); // increase timeout to 120 seconds long oldTime = JemmyProperties.getCurrentTimeout("DialogWaiter.WaitDialogTimeout"); JemmyProperties.setCurrentTimeout("DialogWaiter.WaitDialogTimeout", 120000); try { return new PluginsOperator(); } finally { JemmyProperties.setCurrentTimeout("DialogWaiter.WaitDialogTimeout", oldTime); } } /** Wait for JTabbedPane. * @return JTabbedPaneOperator */ public JTabbedPaneOperator tabbedPane() { if (_tabbedPane == null) { _tabbedPane = new JTabbedPaneOperator(this); _tabbedPane.getTimeouts().setTimeout("ComponentOperator.WaitComponentEnabledTimeout", 120000); _tabbedPane.getTimeouts().setTimeout("ComponentOperator.WaitStateTimeout", 120000); } _tabbedPane.wtComponentEnabled(); return _tabbedPane; } /** Tries to find JTable in selected tab. * @return JTableOperator instance */ public JTableOperator table() { return new JTableOperator(this); } /** Switches to Updates tab and finds "Update" JButton. * @return JButtonOperator */ public JButtonOperator btUpdate() { selectUpdates(); return new JButtonOperator(this, Bundle.getStringTrimmed( "org.netbeans.modules.autoupdate.ui.Bundle", "UnitTab_bTabAction_Name_UPDATE")); } /** Tries to find "Install" JButton in this dialog. * @return JButtonOperator */ public JButtonOperator btInstall() { return new JButtonOperator(this, Bundle.getStringTrimmed( "org.netbeans.modules.autoupdate.ui.Bundle", "UnitTab_bTabAction_Name_AVAILABLE")); } /** Tries to find "Check for Updates" or "Check for Newest" JButton in this dialog. * @return JButtonOperator */ public JButtonOperator btReloadCatalog() { // do not cache it because it is on more tabs return new JButtonOperator(this, "Check for"); } /** Tries to find "Add Plugins..." JButton in this dialog. * @return JButtonOperator */ public JButtonOperator btAddPlugins() { selectDownloaded(); return new JButtonOperator(this, Bundle.getStringTrimmed("org.netbeans.modules.autoupdate.ui.Bundle", "UnitTab_bAddLocallyDownloads_Name")); } /** Switches to Installed tab and finds "Deactivate" JButton. * @return JButtonOperator */ public JButtonOperator btDeactivate() { selectInstalled(); return new JButtonOperator(this, Bundle.getStringTrimmed( "org.netbeans.modules.autoupdate.ui.Bundle", "UnitTab_DeactivateAction")); } /** Switches to Installed tab and finds "Uninstall" JButton. * @return JButtonOperator */ public JButtonOperator btUninstall() { selectInstalled(); return new JButtonOperator(this, Bundle.getStringTrimmed("org.netbeans.modules.autoupdate.ui.Bundle", "UnitTab_bTabAction_Name_INSTALLED")); } /** Switches to Installed tab and finds "Show details" JCheckBox. * @return JButtonOperator */ public JCheckBoxOperator cbShowDetails() { return new JCheckBoxOperator(selectInstalled(), Bundle.getStringTrimmed("org.netbeans.modules.autoupdate.ui.Bundle", "UnitTab.detailView.text")); } /** Finds search text field. */ public JTextFieldOperator txtSearch() { return new JTextFieldOperator(this); } /** Waits for "NetBeans IDE Installer" dialog. * @return WizardOperator instance */ public WizardOperator installer() { // "NetBeans IDE Installer" String installerTitle = Bundle.getString( "org.netbeans.modules.autoupdate.ui.wizards.Bundle", "UninstallUnitWizard_Title"); return new WizardOperator(installerTitle); } /** Changes current selected tab to "Updates" * @return JTabbedPaneOperator instance */ public JTabbedPaneOperator selectUpdates() { String updatesTitle = Bundle.getStringTrimmed( "org.netbeans.modules.autoupdate.ui.Bundle", "PluginManagerUI_UnitTab_Update_Title"); return selectTab(updatesTitle); } /** Changes current selected tab to "Available Plugins" * @return JTabbedPaneOperator instance */ public JTabbedPaneOperator selectAvailablePlugins() { return selectTab(AVAILABLE_PLUGINS_LABEL); } /** Changes current selected tab to "Downloaded" * @return JTabbedPaneOperator of parent tabbed pane */ public JTabbedPaneOperator selectDownloaded() { String downloadedTitle = Bundle.getString( "org.netbeans.modules.autoupdate.ui.Bundle", "PluginManagerUI_UnitTab_Local_Title"); return selectTab(downloadedTitle); } /** Changes current selected tab to "Installed" * @return JTabbedPaneOperator instance */ public JTabbedPaneOperator selectInstalled() { return selectTab(INSTALLED_LABEL); } /** Changes current selected tab to "Settings" * @return JTabbedPaneOperator instance */ public JTabbedPaneOperator selectSettings() { String settingsTitle = Bundle.getStringTrimmed( "org.netbeans.modules.autoupdate.ui.Bundle", "SettingsTab_displayName"); return selectTab(settingsTitle); } /** Changes current selected tab to one specified in argument. * @return JTabbedPaneOperator instance */ public JTabbedPaneOperator selectTab(String tabName) { waitTabEnabled(tabName); tabbedPane().selectPage(tabName); return tabbedPane(); } /** Waits until specified tab is enabled. * @param tabName name of tab */ public void waitTabEnabled(final String tabName) { final int installedIndex = tabbedPane().waitPage(tabName); tabbedPane().waitState(new ComponentChooser() { public boolean checkComponent(Component comp) { return tabbedPane().isEnabledAt(installedIndex); } public String getDescription() { return "page " + tabName + " enabled";// NOI18N } }); } /** Switches to Updates tab and clicks "Update" button. */ public void update() { btUpdate().pushNoBlock(); } /** Clicks "Install" button. */ public void install() { btInstall().pushNoBlock(); } /** Switches to Installed tab and clicks "Uninstall" button. */ public void uninstall() { btUninstall().pushNoBlock(); } /** Switches to Installed tab and clicks "Deactivate" button. */ public void deactivate() { btDeactivate().pushNoBlock(); } /** Type given text into search text field and waits until row count of * table is changed. * @param text text to be searched for */ public void search(String text) { final int rowCount = table().getRowCount(); txtSearch().setText(text); table().waitState(new ComponentChooser() { public boolean checkComponent(Component comp) { return table().getRowCount() != rowCount; } public String getDescription() { return "table changed row count";// NOI18N } }); } /** Clicks "Reload Catalog" button and wait until tabbed pane is again enabled. */ public void reloadCatalog() { btReloadCatalog().push(); tabbedPane(); } /** Switches to Downloaded tab and clicks "Add Plugins" button. */ public void addPlugins() { btAddPlugins().pushNoBlock(); } /** Selects plugin in the table. * @param pluginName name of plugin to be selected */ public void selectPlugin(String pluginName) { selectPlugins(new String[]{pluginName}); } /** Selects plugins in the table. * @param pluginNames array of plugin names to be selected */ public void selectPlugins(String[] pluginNames) { JTableOperator tableOper = table(); for (int i = 0; i < pluginNames.length; i++) { String name = pluginNames[i]; int row = tableOper.findCellRow(name, new DefaultStringComparator(true, true), 1, 0); if(row == -1) { throw new JemmyException("Plugin "+name+" not found."); } tableOper.selectCell(row, 1); tableOper.clickOnCell(row, 0); } } /** Adds plugin specified by its NBM path to the list at Downloaded tab. * @param nbmPath absolute path to nbm file */ public void addPlugin(String nbmPath) { addPlugins(); JFileChooserOperator fileChooserOp = new JFileChooserOperator(); fileChooserOp.setSelectedFile(new File(nbmPath)); fileChooserOp.approve(); tabbedPane(); } /** Installs given plugin. It switches to Available Plugins tab, selects * desired plugin, click Install button and finish installation. * @param pluginName */ public void install(String pluginName) { install(new String[]{pluginName}); } /** Installs given plugins. It switches to Available Plugins tab, selects * desired plugins, click Install button and finish installation. * @param pluginNames array of plugin names to be installed */ public void install(String[] pluginNames) { selectAvailablePlugins(); selectPlugins(pluginNames); install(); finishInstall(); } /** Finish installation of selected plugins. Do the following: *
    *
  • waits for "NetBeans IDE Installer" dialog
  • *
  • in "NetBeans IDE Installer" dialog click Next
  • *
  • click "I accept..." check box
  • *
  • click Install button
  • *
  • wait until message that plugins were successfully installed appears
  • *
  • if restart is not needed wait until the module is turned on (message in main window status bar)
  • *
  • click Finish button to dismiss the dialog
  • *
*/ public void finishInstall() { WizardOperator installerOper = installer(); installerOper.next(); // "I accept the terms..." String acceptLabel = Bundle.getStringTrimmed( "org.netbeans.modules.autoupdate.ui.wizards.Bundle", "LicenseApprovalPanel.cbAccept.text"); JCheckBoxOperator acceptCheckboxOper = new JCheckBoxOperator(installerOper, acceptLabel); if (!acceptCheckboxOper.isEnabled()) { // wait until licence is shown and dialog is re-created acceptCheckboxOper.waitComponentShowing(false); // find check box again acceptCheckboxOper = new JCheckBoxOperator(installerOper, acceptLabel); } acceptCheckboxOper.push(); // "Install" String installInDialogLabel = Bundle.getStringTrimmed("org.netbeans.modules.autoupdate.ui.wizards.Bundle", "InstallUnitWizardModel_Buttons_Install"); new JButtonOperator(installerOper, installInDialogLabel).push(); // "The NetBeans IDE Installer has successfully installed the following plugins:" String installedLabel = Bundle.getString("org.netbeans.modules.autoupdate.ui.wizards.Bundle", "InstallStep_InstallDone_Text"); JemmyProperties.setCurrentTimeout("ComponentOperator.WaitComponentTimeout", 120000); new JTextAreaOperator(installerOper, installedLabel); // "Restart IDE Now" String restartNowLabel = Bundle.getStringTrimmed("org.netbeans.modules.autoupdate.ui.wizards.Bundle", "InstallUnitWizardModel_Buttons_RestartNow"); JRadioButton restartButton = JRadioButtonOperator.findJRadioButton((Container)installerOper.getSource(), restartNowLabel, true, true); if(restartButton == null) { // check Status line // "Turning on modules...done." String turningOnLabel = Bundle.getString("org.netbeans.core.startup.Bundle", "MSG_finish_enable_modules"); // increase timeout to 120 seconds MainWindowOperator.getDefault().getTimeouts().setTimeout("Waiter.WaitingTime", 120000); MainWindowOperator.getDefault().waitStatusText(turningOnLabel); } installerOper.finish(); } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy