/* * Jitsi, the OpenSource Java VoIP and Instant Messaging client. * * Copyright @ 2015 Atlassian Pty Ltd * * Licensed 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 net.java.sip.communicator.plugin.pluginmanager; import java.awt.*; import java.awt.event.*; import javax.swing.*; import net.java.sip.communicator.service.gui.*; import net.java.sip.communicator.util.*; import net.java.sip.communicator.plugin.desktoputil.*; import org.osgi.framework.*; /** * The panel containing all buttons for the PluginManagerConfigForm. * * @author Yana Stamcheva */ public class ManageButtonsPanel extends TransparentPanel implements ActionListener { /** * Serial version UID. */ private static final long serialVersionUID = 0L; private Logger logger = Logger.getLogger(ManageButtonsPanel.class); /** * The deactivate skin button. */ private JButton deactivateButton = new JButton( Resources.getString("service.gui.DEACTIVATE")); /** * The activate skin button. */ private JButton activateButton = new JButton( Resources.getString("service.gui.ACTIVATE")); /** * The uninstall button. */ private JButton uninstallButton = new JButton( Resources.getString("plugin.pluginmanager.UNINSTALL")); /** * The update button. */ private JButton updateButton = new JButton( Resources.getString("plugin.pluginmanager.UPDATE")); /** * The new button. */ private JButton newButton = new JButton(Resources.getString("plugin.pluginmanager.NEW")); /** * The panel, containing all buttons. */ private JPanel buttonsPanel = new TransparentPanel(new GridLayout(0, 1, 8, 8)); /** * The plugins table. */ private JTable pluginTable; /** * Creates an instance of ManageButtonsPanel. * @param pluginTable the table of bundles */ public ManageButtonsPanel(JTable pluginTable) { this.pluginTable = pluginTable; this.setLayout(new BorderLayout()); this.setBorder(BorderFactory.createEmptyBorder(8, 8, 8, 8)); this.newButton.setOpaque(false); this.activateButton.setOpaque(false); this.deactivateButton.setOpaque(false); this.uninstallButton.setOpaque(false); this.updateButton.setOpaque(false); this.buttonsPanel.add(newButton); this.buttonsPanel.add(activateButton); this.buttonsPanel.add(deactivateButton); this.buttonsPanel.add(uninstallButton); this.buttonsPanel.add(updateButton); this.add(buttonsPanel, BorderLayout.NORTH); this.newButton.addActionListener(this); this.activateButton.addActionListener(this); this.deactivateButton.addActionListener(this); this.uninstallButton.addActionListener(this); this.updateButton.addActionListener(this); //default as nothing is selected defaultButtonState(); } /** * Performs corresponding operations when a button is pressed. * @param e the ActionEvent that notified us */ public void actionPerformed(ActionEvent e) { JButton sourceButton = (JButton) e.getSource(); if(sourceButton.equals(newButton)) { NewBundleDialog dialog = new NewBundleDialog(); dialog.pack(); dialog.setLocation( Toolkit.getDefaultToolkit().getScreenSize().width/2 - dialog.getWidth()/2, Toolkit.getDefaultToolkit().getScreenSize().height/2 - dialog.getHeight()/2 ); dialog.setVisible(true); } else if(sourceButton.equals(activateButton)) { int[] selectedRows = pluginTable.getSelectedRows(); for (int i = 0; i < selectedRows.length; i++) { try { ((Bundle)pluginTable.getModel() .getValueAt(selectedRows[i], 0)).start(); } catch (BundleException ex) { logger.error("Failed to activate bundle.", ex); PluginManagerActivator.getUIService().getPopupDialog() .showMessagePopupDialog(ex.getMessage(), "Error", PopupDialog.ERROR_MESSAGE); } } defaultButtonState(); } else if(sourceButton.equals(deactivateButton)) { int[] selectedRows = pluginTable.getSelectedRows(); for (int i = 0; i < selectedRows.length; i++) { try { ((Bundle)pluginTable.getModel() .getValueAt(selectedRows[i], 0)).stop(); } catch (BundleException ex) { logger.error("Failed to desactivate bundle.", ex); PluginManagerActivator.getUIService().getPopupDialog() .showMessagePopupDialog(ex.getMessage(), "Error", PopupDialog.ERROR_MESSAGE); } } defaultButtonState(); } else if(sourceButton.equals(uninstallButton)) { int[] selectedRows = pluginTable.getSelectedRows(); for (int i = selectedRows.length - 1; i >= 0; i--) { try { ((Bundle)pluginTable.getModel() .getValueAt(selectedRows[i], 0)).uninstall(); } catch (BundleException ex) { logger.error("Failed to uninstall bundle.", ex); PluginManagerActivator.getUIService().getPopupDialog() .showMessagePopupDialog(ex.getMessage(), "Error", PopupDialog.ERROR_MESSAGE); } } defaultButtonState(); } else if(sourceButton.equals(updateButton)) { int[] selectedRows = pluginTable.getSelectedRows(); for (int i = 0; i < selectedRows.length; i++) { try { ((Bundle)pluginTable.getModel() .getValueAt(selectedRows[i], 0)).update(); } catch (BundleException ex) { logger.error("Failed to update bundle.", ex); PluginManagerActivator.getUIService().getPopupDialog() .showMessagePopupDialog(ex.getMessage(), "Error", PopupDialog.ERROR_MESSAGE); } } // update button deselects bundles, revert buttons to defautl state defaultButtonState(); } } /** * Default state of buttons, as nothing is selected */ public void defaultButtonState() { enableActivateButton(false); enableDeactivateButton(false); enableUninstallButton(false); enableUpdateButton(false); } /** * Enable or disable the activate button. * * @param enable TRUE - to enable the activate button, FALSE - to disable it */ public void enableActivateButton(boolean enable) { this.activateButton.setEnabled(enable); } /** * Enable or disable the deactivate button. * * @param enable TRUE - to enable the deactivate button, FALSE - to * disable it */ public void enableDeactivateButton(boolean enable) { this.deactivateButton.setEnabled(enable); } /** * Enable or disable the uninstall button. * * @param enable TRUE - to enable the uninstall button, FALSE - to * disable it */ public void enableUninstallButton(boolean enable) { this.uninstallButton.setEnabled(enable); } /** * Enable or disable the update button. * * @param enable TRUE - to enable the update button, FALSE - to disable it */ public void enableUpdateButton(boolean enable) { this.updateButton.setEnabled(enable); } }