package org.nb.hostcompare;
import com.sun.tools.visualvm.application.Application;
import com.sun.tools.visualvm.application.type.ApplicationType;
import com.sun.tools.visualvm.application.type.ApplicationTypeFactory;
import com.sun.tools.visualvm.core.ui.DataSourceView;
import com.sun.tools.visualvm.core.ui.components.DataViewComponent;
import com.sun.tools.visualvm.host.Host;
import java.util.Iterator;
import java.util.Properties;
import java.util.Set;
import javax.swing.BorderFactory;
import javax.swing.ImageIcon;
import javax.swing.JEditorPane;
import org.openide.util.Utilities;
import com.sun.tools.visualvm.application.jvm.Jvm;
import com.sun.tools.visualvm.application.jvm.JvmFactory;
public class HostView extends DataSourceView {
private DataViewComponent dvc;
private static final String IMAGE_PATH = "com/sun/tools/visualvm/coredump/resources/coredump.png"; // NOI18N
private Host host;
private Jvm jvm;
public HostView(Host host) {
super(host, "Host", new ImageIcon(Utilities.loadImage(IMAGE_PATH, true)).getImage(), 60, false);
this.host = host;
}
@Override
protected DataViewComponent createComponent() {
//Data area for master view:
JEditorPane generalDataArea = new JEditorPane();
generalDataArea.setText("Below you see the system properties of" +
" all running apps!");
generalDataArea.setBorder(BorderFactory.createEmptyBorder(14, 8, 14, 8));
//Master view:
DataViewComponent.MasterView masterView =
new DataViewComponent.MasterView("All System Properties",
null, generalDataArea);
//Configuration of master view:
DataViewComponent.MasterViewConfiguration masterConfiguration =
new DataViewComponent.MasterViewConfiguration(false);
//Add the master view and configuration view to the component:
dvc = new DataViewComponent(masterView, masterConfiguration);
//Get all the applications deployed to the host:
Set apps = host.getRepository().getDataSources(Application.class);
//Get the iterator:
Iterator it = apps.iterator();
//Set count to zero:
int count = 0;
//Iterate through our applications:
while (it.hasNext()) {
//Increase the count:
count = count + 1;
//Now we have our application:
Application app = (Application) it.next();
//Get the process id:
String pid = count + ": " + (String.valueOf(app.getPid()));
//Get the system properties:
Properties jvmProperties = null;
jvm = JvmFactory.getJVMFor(app);
if (jvm.isGetSystemPropertiesSupported()) {
jvmProperties = jvm.getSystemProperties();
}
//Extrapolate the name from the type:
ApplicationType appType = ApplicationTypeFactory.getApplicationTypeFor(app);
String appName = appType.getName();
//Put the first application top left:
if (count == 1) {
dvc.addDetailsView(new SystemPropertiesViewSupport(jvmProperties).getDetailsView(app, appName), DataViewComponent.TOP_LEFT);
// //Put the second application top right:
} else if (count == 2) {
dvc.addDetailsView(new SystemPropertiesViewSupport(jvmProperties).getDetailsView(app, appName), DataViewComponent.TOP_RIGHT);
//
// //Put the third application bottom left:
} else if (count == 3) {
dvc.addDetailsView(new SystemPropertiesViewSupport(jvmProperties).getDetailsView(app, appName), DataViewComponent.BOTTOM_LEFT);
//Put the fourth application bottom right:
} else if (count == 4) {
dvc.addDetailsView(new SystemPropertiesViewSupport(jvmProperties).getDetailsView(app, appName), DataViewComponent.BOTTOM_RIGHT);
//Put all other applications bottom right,
//which creates tabs within the bottom right tab
} else {
dvc.addDetailsView(new SystemPropertiesViewSupport(jvmProperties).getDetailsView(app, appName), DataViewComponent.BOTTOM_RIGHT);
}
}
return dvc;
}
}