package org.nb.hostcompare; import com.sun.tools.visualvm.application.Application; import com.sun.tools.visualvm.core.datasource.descriptor.DataSourceDescriptorFactory; import com.sun.tools.visualvm.core.ui.components.DataViewComponent; import com.sun.tools.visualvm.core.ui.components.NotSupportedDisplayer; import com.sun.tools.visualvm.core.ui.components.ScrollableContainer; import java.awt.BorderLayout; import java.awt.Image; import java.util.ArrayList; import java.util.Collections; import java.util.Iterator; import java.util.List; import java.util.Properties; import javax.swing.BorderFactory; import javax.swing.ImageIcon; import javax.swing.JComponent; import javax.swing.JLabel; import javax.swing.JPanel; import org.netbeans.lib.profiler.ui.components.HTMLTextArea; public class SystemPropertiesViewSupport extends JPanel { public SystemPropertiesViewSupport(Properties properties) { initComponents(properties); } public DataViewComponent.DetailsView getDetailsView(Application app, String appName) { Image icon = DataSourceDescriptorFactory.getDescriptor(app).getIcon(); JLabel label = wrap(icon); JComponent[] options = {label}; String text = app.getPid() + ": " + appName; return new DataViewComponent.DetailsView(text, null, 20, this, options); // NOI18N } private JLabel wrap(Image image) { ImageIcon icon = new ImageIcon(image); JLabel label = new JLabel(icon, JLabel.CENTER); return label; } private void initComponents(Properties properties) { setLayout(new BorderLayout()); setOpaque(false); JComponent contents; if (properties != null) { HTMLTextArea area = new HTMLTextArea("<nobr>" + formatSystemProperties(properties) + "</nobr>"); // NOI18N area.setCaretPosition(0); area.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10)); contents = area; } else { contents = new NotSupportedDisplayer(NotSupportedDisplayer.JVM); } add(new ScrollableContainer(contents), BorderLayout.CENTER); } private String formatSystemProperties(Properties properties) { StringBuffer text = new StringBuffer(200); List keys = new ArrayList(properties.keySet()); Iterator keyIt; Collections.sort(keys); keyIt = keys.iterator(); while (keyIt.hasNext()) { String key = (String) keyIt.next(); String val = properties.getProperty(key); text.append("<b>"); // NOI18N text.append(key); text.append("</b>="); // NOI18N text.append(val); text.append("<br>"); // NOI18N } return text.toString(); } }