sparkplugui.java.svn-base
来自「开源项目openfire的完整源程序」· SVN-BASE 代码 · 共 214 行
SVN-BASE
214 行
/** * $Revision: $ * $Date: $ * * Copyright (C) 2006 Jive Software. All rights reserved. * * This software is published under the terms of the GNU Lesser Public License (LGPL), * a copy of which is included in this distribution. */package org.jivesoftware.sparkimpl.plugin.viewer;import org.jivesoftware.resource.Res;import org.jivesoftware.resource.SparkRes;import org.jivesoftware.spark.PluginManager;import org.jivesoftware.spark.component.RolloverButton;import org.jivesoftware.spark.plugin.PublicPlugin;import org.jivesoftware.spark.util.BrowserLauncher;import org.jivesoftware.spark.util.URLFileSystem;import org.jivesoftware.spark.util.log.Log;import javax.imageio.ImageIO;import javax.swing.BorderFactory;import javax.swing.Icon;import javax.swing.ImageIcon;import javax.swing.JButton;import javax.swing.JLabel;import javax.swing.JPanel;import java.awt.Color;import java.awt.FlowLayout;import java.awt.Font;import java.awt.GridBagConstraints;import java.awt.GridBagLayout;import java.awt.Image;import java.awt.Insets;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.io.File;import java.io.IOException;import java.net.MalformedURLException;import java.net.URL;public class SparkPlugUI extends JPanel { private PublicPlugin plugin; private final JButton installButton = new JButton(); private JLabel imageIcon = new JLabel(); public SparkPlugUI(PublicPlugin plugin) { this.plugin = plugin; setLayout(new GridBagLayout()); setBackground(Color.white); JLabel titleLabel = new JLabel(); JLabel versionLabel = new JLabel(); JLabel descriptionLabel = new JLabel(); if (getFilename() != null) { URL url = null; try { url = new URL("http://www.igniterealtime.org/updater/sparkplugs?filename=" + getFilename()); final Image pluginImage = ImageIO.read(url); // In some cases, people are not supplying icons. This case needs to be handled. if (pluginImage != null) { ImageIcon pluginIcon = new ImageIcon(pluginImage); imageIcon.setIcon(pluginIcon); if (pluginIcon.getIconWidth() == -1) { imageIcon.setIcon(SparkRes.getImageIcon(SparkRes.PLUGIN_IMAGE)); } } } catch (Exception e) { Log.debug("Unable to find image for " + url); } } else { imageIcon.setIcon(SparkRes.getImageIcon(SparkRes.PLUGIN_IMAGE)); } add(imageIcon, new GridBagConstraints(0, 0, 1, 1, 0.0, 0.0, GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(5, 5, 5, 5), 0, 0)); add(titleLabel, new GridBagConstraints(1, 0, 1, 1, 0.0, 0.0, GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(5, 5, 5, 0), 0, 0)); titleLabel.setFont(new Font("dialog", Font.BOLD, 11)); titleLabel.setForeground(new Color(80, 93, 198)); add(versionLabel, new GridBagConstraints(2, 0, 1, 1, 0.0, 0.0, GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, new Insets(5, 5, 5, 5), 0, 0)); titleLabel.setText(plugin.getName()); versionLabel.setText(plugin.getVersion() + " by " + plugin.getAuthor()); descriptionLabel.setText(plugin.getDescription()); add(installButton, new GridBagConstraints(4, 0, 1, 2, 1.0, 0.0, GridBagConstraints.EAST, GridBagConstraints.NONE, new Insets(0, 5, 5, 5), 0, 0)); if (plugin.isChangeLogAvailable() && plugin.isReadMeAvailable()) { RolloverButton changeLogButton = new RolloverButton(SparkRes.getImageIcon(SparkRes.CHANGELOG_IMAGE)); RolloverButton readMeButton = new RolloverButton(SparkRes.getImageIcon(SparkRes.README_IMAGE)); changeLogButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { try { BrowserLauncher.openURL("http://www.igniterealtime.org/updater/retrieve.jsp?filename=" + getFilename() + "&changeLog=true"); } catch (IOException e1) { Log.error(e1); } } }); readMeButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { try { BrowserLauncher.openURL("http://www.igniterealtime.org/updater/retrieve.jsp?filename=" + getFilename() + "&readme=true"); } catch (IOException e1) { Log.error(e1); } } }); final JPanel buttonPanel = new JPanel(new FlowLayout(FlowLayout.LEFT)); buttonPanel.setOpaque(false); buttonPanel.add(changeLogButton); buttonPanel.add(readMeButton); changeLogButton.setToolTipText(Res.getString("tooltip.view.changelog")); readMeButton.setToolTipText(Res.getString("tooltip.view.readme")); add(descriptionLabel, new GridBagConstraints(1, 1, 2, 1, 0.0, 0.0, GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, new Insets(0, 5, 5, 5), 0, 0)); add(buttonPanel, new GridBagConstraints(3, 1, 1, 1, 1.0, 0.0, GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, new Insets(0, 0, 0, 0), 0, 0)); } else { add(descriptionLabel, new GridBagConstraints(1, 1, 2, 1, 1.0, 0.0, GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, new Insets(0, 5, 5, 5), 0, 0)); } installButton.setVisible(false); } public void showOperationButton() { final PluginManager pluginManager = PluginManager.getInstance(); if (!pluginManager.isInstalled(plugin)) { installButton.setIcon(SparkRes.getImageIcon(SparkRes.SMALL_ADD_IMAGE)); } else { installButton.setIcon(SparkRes.getImageIcon(SparkRes.SMALL_DELETE)); } installButton.setVisible(true); } public void setSelected(boolean isSelected) { if (isSelected) { setBackground(new Color(234, 230, 212)); showOperationButton(); setBorder(BorderFactory.createEtchedBorder()); } else { setBackground(Color.white); installButton.setVisible(false); setBorder(null); } } public void updateState() { showOperationButton(); } public PublicPlugin getPlugin() { return plugin; } public JButton getInstallButton() { return installButton; } public void useLocalIcon() { File pluginDIR = plugin.getPluginDir(); try { File smallIcon = new File(pluginDIR, "logo_small.gif"); File largeIcon = new File(pluginDIR, "logo_large.gif"); if (largeIcon.exists()) { setIcon(new ImageIcon(largeIcon.toURL())); } else if (smallIcon.exists()) { setIcon(new ImageIcon(smallIcon.toURL())); } } catch (MalformedURLException e) { Log.error(e); } } public String getFilename() { String filename = null; try { URL downloadURL = new URL(plugin.getDownloadURL()); filename = URLFileSystem.getFileName(downloadURL); } catch (MalformedURLException e) { } return filename; } public void setIcon(Icon icon) { imageIcon.setIcon(icon); }}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?