/* * 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 java.io.*; import java.net.*; 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.*; /** * @author Yana Stamcheva */ public class NewBundleDialog extends SIPCommDialog implements ActionListener { /** * The object used for logging. */ private Logger logger = Logger.getLogger(NewBundleDialog.class); private static final long serialVersionUID = 7638976584338100969L; /** * The install button. */ private JButton installButton = new JButton(Resources.getString("plugin.pluginmanager.INSTALL")); /** * The cancel button. */ private JButton cancelButton = new JButton(Resources.getString("service.gui.CANCEL")); /** * The bundle path field. */ private JTextField bundlePathField = new JTextField(); /** * The bundle path label. */ private JLabel bundlePathLabel = new JLabel(Resources.getString("plugin.pluginmanager.URL") + ": "); /** * The panel, containing all buttons. */ private JPanel buttonsPanel = new TransparentPanel(new FlowLayout(FlowLayout.CENTER)); /** * The panel containing new bundle information. */ private JPanel dataPanel = new TransparentPanel(new BorderLayout(5, 5)); /** * The main panel, where all other panels are added. */ private JPanel mainPanel = new TransparentPanel(new BorderLayout()); /** * The button, from which to choose a file from the file system. */ private JButton fileChooserButton = new JButton( Resources.getString("plugin.pluginmanager.CHOOSE_FILE")); /** * Creates an instance of <tt>NewBundleDialog</tt>. */ public NewBundleDialog () { this.mainPanel.setPreferredSize(new Dimension(450, 150)); this.getContentPane().add(mainPanel); this.mainPanel.setBorder(BorderFactory.createEmptyBorder(8, 8, 8, 8)); this.mainPanel.add(dataPanel, BorderLayout.NORTH); this.mainPanel.add(buttonsPanel, BorderLayout.SOUTH); this.buttonsPanel.add(installButton); this.buttonsPanel.add(cancelButton); this.installButton.addActionListener(this); this.cancelButton.addActionListener(this); this.fileChooserButton.addActionListener(this); this.fileChooserButton.setOpaque(false); this.dataPanel.add(bundlePathLabel, BorderLayout.WEST); this.dataPanel.add(bundlePathField, BorderLayout.CENTER); this.dataPanel.add(fileChooserButton, BorderLayout.EAST); } /** * Performs corresponding actions, when a buttons is pressed. * @param e the <tt>ActionEvent</tt> that notified us */ public void actionPerformed (ActionEvent e) { JButton sourceButton = (JButton) e.getSource(); if (sourceButton.equals(installButton)) { if (bundlePathField.getText().length() > 0) { try { PluginManagerActivator.bundleContext .installBundle(bundlePathField.getText()); } catch (BundleException ex) { logger.info("Failed to install bundle.", ex); PluginManagerActivator.getUIService().getPopupDialog() .showMessagePopupDialog(ex.getMessage(), "Error", PopupDialog.ERROR_MESSAGE); } catch (Throwable ex) { logger.info("Failed to install bundle.", ex); } finally { dispose(); } } } else if (sourceButton.equals(fileChooserButton)) { SipCommFileChooser chooser = GenericFileDialog.create( null, "New bundle...", SipCommFileChooser.LOAD_FILE_OPERATION); File newBundleFile = chooser.getFileFromDialog(); if (newBundleFile != null) { try { bundlePathField.setText(newBundleFile.toURI() .toURL().toString()); } catch (MalformedURLException ex) { logger.info("Failed parse URL.", ex); } } } else dispose(); } /** * Presses programatically the cancel button, when Esc key is pressed. * @param isEscaped indicates if the Esc button was pressed on close */ @Override protected void close(boolean isEscaped) { cancelButton.doClick(); } }