/* * PluginDetailPanel.java - Displays the details of a plugin * :tabSize=4:indentSize=4:noTabs=false: * :folding=explicit:collapseFolds=1: * * Copyright (C) 2008-2013 Matthieu Casanova, Dale Anson, Alan Ezust * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ package org.gjt.sp.jedit.pluginmgr; //{{{ Imports import java.awt.BorderLayout; import java.io.File; import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Set; import javax.swing.JEditorPane; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JScrollPane; import org.gjt.sp.jedit.jEdit; import org.gjt.sp.jedit.PluginJAR; import org.gjt.sp.jedit.pluginmgr.ManagePanel.Entry; //}}} /** * @author Matthieu Casanova * */ class PluginDetailPanel extends JPanel { private final JEditorPane pluginDetail; private final JLabel title; /** The current entry. */ private Entry entry; //{{{ PluginDetailPanel constructor PluginDetailPanel() { setLayout(new BorderLayout()); pluginDetail = new JEditorPane(); pluginDetail.setEditable(false); pluginDetail.setContentType("text/html"); pluginDetail.setBackground(jEdit.getColorProperty("view.bgColor")); pluginDetail.setForeground(jEdit.getColorProperty("view.fgColor")); pluginDetail.putClientProperty(JEditorPane.HONOR_DISPLAY_PROPERTIES, true); title = new JLabel(); add(title, BorderLayout.NORTH); JScrollPane scroll = new JScrollPane(pluginDetail); scroll.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER); add(scroll); } //}}} //{{{ setPlugin() method void setPlugin(Entry entry) { if (entry != this.entry) { if (entry.status.equals(Entry.LOADED)) { if (entry.name == null) title.setText("<html><b>"+entry.jar+"</b></html>"); else title.setText("<html><b>"+entry.name+"</b></html>"); StringBuilder builder = new StringBuilder(); // <br> instead of <br/> because Sun's Java 5 HTML parser can't digest them. // No problem on Sun's Java 6 JVM. if (entry.version != null) builder.append("<b>").append(jEdit.getProperty("install-plugins.info.version", "Version")).append("</b>: ").append(entry.version).append("<br>"); if (entry.author != null) builder.append("<b>").append(jEdit.getProperty("install-plugins.info.author", "Author")).append("</b>: ").append(entry.author).append("<br>"); if (entry.description != null) { builder.append("<br>").append(entry.description); } builder.append(getDepends(entry)); pluginDetail.setText(builder.toString()); } else { title.setText("<html><b>"+entry.jar+"</b></html>"); PluginJAR pluginJar = new PluginJAR(new File(entry.jar)); pluginJar.init(); entry.plugin = pluginJar.getPlugin(); String clazz = pluginJar.getPlugin().getClassName(); StringBuilder sb = new StringBuilder(256); sb.append("<b>").append(jEdit.getProperty("install-plugin.info.version", "Version")).append("</b>: ").append(jEdit.getProperty("plugin."+clazz+".version", "")); sb.append("<br><b>").append(jEdit.getProperty("install-plugin.info.author", "Author")).append("</b>: ").append( jEdit.getProperty("plugin."+clazz+".author", "")); sb.append("<br>").append(jEdit.getProperty("plugin."+clazz+".description", "")); sb.append(getDepends(entry)); pluginDetail.setText(sb.toString()); pluginJar.uninit(false); } this.entry = entry; } } //}}} //{{{ getDepends() method private String getDepends(Entry entry) { StringBuilder builder = new StringBuilder(); Set<String> dependencies = entry.getDependencies(); if (dependencies != null && !dependencies.isEmpty()) { builder.append("<br><br><b>").append(jEdit.getProperty("install-plugins.info.depends", "Depends on")).append("</b>:"); List<String> depends = new ArrayList(dependencies); Collections.sort(depends); int i = 0; for (String dep : depends) { if (i > 0) builder.append(","); builder.append(" ").append(dep); ++i; } } return builder.toString(); } //}}} }