geode-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From dschnei...@apache.org
Subject [6/7] incubator-geode git commit: GEODE-78: Imported jvsdfx-mm from geode-1.0.0-SNAPSHOT-2.src.tar
Date Mon, 06 Jul 2015 21:46:48 GMT
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/e299ea84/jvsdfx-mm/src/main/java/com/pivotal/jvsd/AboutJVSD.form
----------------------------------------------------------------------
diff --git a/jvsdfx-mm/src/main/java/com/pivotal/jvsd/AboutJVSD.form b/jvsdfx-mm/src/main/java/com/pivotal/jvsd/AboutJVSD.form
new file mode 100644
index 0000000..f71fcce
--- /dev/null
+++ b/jvsdfx-mm/src/main/java/com/pivotal/jvsd/AboutJVSD.form
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<Form version="1.3" maxVersion="1.7" type="org.netbeans.modules.form.forminfo.JDialogFormInfo">
+  <Properties>
+    <Property name="defaultCloseOperation" type="int" value="2"/>
+    <Property name="locationByPlatform" type="boolean" value="true"/>
+    <Property name="modal" type="boolean" value="true"/>
+    <Property name="undecorated" type="boolean" value="true"/>
+  </Properties>
+  <SyntheticProperties>
+    <SyntheticProperty name="formSizePolicy" type="int" value="1"/>
+    <SyntheticProperty name="generateCenter" type="boolean" value="false"/>
+  </SyntheticProperties>
+  <AuxValues>
+    <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="0"/>
+    <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
+    <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="1"/>
+    <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
+    <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
+  </AuxValues>
+
+  <Layout>
+    <DimensionLayout dim="0">
+      <Group type="103" groupAlignment="0" attributes="0">
+          <Group type="102" alignment="1" attributes="0">
+              <EmptySpace pref="313" max="32767" attributes="0"/>
+              <Component id="OKButton" min="-2" pref="75" max="-2" attributes="0"/>
+              <EmptySpace max="-2" attributes="0"/>
+          </Group>
+          <Group type="102" alignment="0" attributes="0">
+              <EmptySpace min="-2" pref="48" max="-2" attributes="0"/>
+              <Component id="AboutLabel" min="-2" pref="310" max="-2" attributes="0"/>
+              <EmptySpace pref="42" max="32767" attributes="0"/>
+          </Group>
+      </Group>
+    </DimensionLayout>
+    <DimensionLayout dim="1">
+      <Group type="103" groupAlignment="0" attributes="0">
+          <Group type="102" alignment="1" attributes="0">
+              <EmptySpace min="-2" pref="20" max="-2" attributes="0"/>
+              <Component id="AboutLabel" min="-2" pref="213" max="-2" attributes="0"/>
+              <EmptySpace pref="28" max="32767" attributes="0"/>
+              <Component id="OKButton" min="-2" max="-2" attributes="0"/>
+              <EmptySpace max="-2" attributes="0"/>
+          </Group>
+      </Group>
+    </DimensionLayout>
+  </Layout>
+  <SubComponents>
+    <Component class="javax.swing.JButton" name="OKButton">
+      <Properties>
+        <Property name="text" type="java.lang.String" value="OK"/>
+        <Property name="selected" type="boolean" value="true"/>
+      </Properties>
+      <Events>
+        <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="OKButtonActionPerformed"/>
+      </Events>
+    </Component>
+    <Component class="javax.swing.JLabel" name="AboutLabel">
+      <Properties>
+        <Property name="text" type="java.lang.String" value="&lt;html&gt; &lt;body&gt; &lt;b&gt;JVSD&lt;/b&gt;&lt;br&gt; Version 0.01&lt;br&gt;&lt;br&gt;  This tool is provided as-is with no support or warranty. Use at your own risk.&lt;br&gt;&lt;br&gt; If you encounter issues or want to request features - please send email to:&lt;br&gt;&lt;br&gt; vincef@vmware.com &lt;/body&gt; &lt;/html&gt;   "/>
+      </Properties>
+    </Component>
+  </SubComponents>
+</Form>

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/e299ea84/jvsdfx-mm/src/main/java/com/pivotal/jvsd/AboutJVSD.java
----------------------------------------------------------------------
diff --git a/jvsdfx-mm/src/main/java/com/pivotal/jvsd/AboutJVSD.java b/jvsdfx-mm/src/main/java/com/pivotal/jvsd/AboutJVSD.java
new file mode 100644
index 0000000..2e20d8a
--- /dev/null
+++ b/jvsdfx-mm/src/main/java/com/pivotal/jvsd/AboutJVSD.java
@@ -0,0 +1,104 @@
+/*
+ * AboutJVSD.java
+ *
+ * Created on Dec 16, 2010, 3:35:39 PM
+ */
+package com.pivotal.jvsd;
+
+/**
+ *
+ * @author Vince Ford
+ */
+public class AboutJVSD extends javax.swing.JDialog {
+
+	/**
+	 * Creates new form AboutJVSD
+	 */
+	public AboutJVSD(java.awt.Frame parent, boolean modal) {
+		super(parent, modal);
+		initComponents();
+	}
+
+	/**
+	 * This method is called from within the constructor to initialize the form.
+	 * WARNING: Do NOT modify this code. The content of this method is always
+	 * regenerated by the Form Editor.
+	 */
+	@SuppressWarnings("unchecked")
+  // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
+  private void initComponents() {
+
+    OKButton = new javax.swing.JButton();
+    AboutLabel = new javax.swing.JLabel();
+
+    setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
+    setLocationByPlatform(true);
+    setModal(true);
+    setUndecorated(true);
+
+    OKButton.setText("OK");
+    OKButton.setSelected(true);
+    OKButton.addActionListener(new java.awt.event.ActionListener() {
+      public void actionPerformed(java.awt.event.ActionEvent evt) {
+        OKButtonActionPerformed(evt);
+      }
+    });
+
+    AboutLabel.setText("<html> <body> <b>JVSD</b><br> Version 0.01<br><br>  This tool is provided as-is with no support or warranty. Use at your own risk.<br><br> If you encounter issues or want to request features - please send email to:<br><br> vincef@vmware.com </body> </html>   ");
+
+    javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
+    getContentPane().setLayout(layout);
+    layout.setHorizontalGroup(
+      layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+      .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
+        .addContainerGap(313, Short.MAX_VALUE)
+        .addComponent(OKButton, javax.swing.GroupLayout.PREFERRED_SIZE, 75, javax.swing.GroupLayout.PREFERRED_SIZE)
+        .addContainerGap())
+      .addGroup(layout.createSequentialGroup()
+        .addGap(48, 48, 48)
+        .addComponent(AboutLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 310, javax.swing.GroupLayout.PREFERRED_SIZE)
+        .addContainerGap(42, Short.MAX_VALUE))
+    );
+    layout.setVerticalGroup(
+      layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+      .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
+        .addGap(20, 20, 20)
+        .addComponent(AboutLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 213, javax.swing.GroupLayout.PREFERRED_SIZE)
+        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 28, Short.MAX_VALUE)
+        .addComponent(OKButton)
+        .addContainerGap())
+    );
+
+    pack();
+  }// </editor-fold>//GEN-END:initComponents
+
+    private void OKButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_OKButtonActionPerformed
+			if (evt.getSource() == OKButton) {
+				setVisible(false);
+				this.dispose();
+			}
+    }//GEN-LAST:event_OKButtonActionPerformed
+
+	/**
+	 * @param args the command line arguments
+	 */
+	public static void main(String args[]) {
+		java.awt.EventQueue.invokeLater(new Runnable() {
+			public void run() {
+				AboutJVSD dialog = new AboutJVSD(new javax.swing.JFrame(), true);
+				dialog.addWindowListener(new java.awt.event.WindowAdapter() {
+					public void windowClosing(java.awt.event.WindowEvent e) {
+						System.exit(0);
+					}
+				});
+				dialog.setVisible(true);
+			}
+		});
+	}
+
+  // Variables declaration - do not modify//GEN-BEGIN:variables
+  private javax.swing.JLabel AboutLabel;
+  private javax.swing.JButton OKButton;
+  // End of variables declaration//GEN-END:variables
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/e299ea84/jvsdfx-mm/src/main/java/com/pivotal/jvsd/ChartMenuActionListener.java
----------------------------------------------------------------------
diff --git a/jvsdfx-mm/src/main/java/com/pivotal/jvsd/ChartMenuActionListener.java b/jvsdfx-mm/src/main/java/com/pivotal/jvsd/ChartMenuActionListener.java
new file mode 100644
index 0000000..ba0f717
--- /dev/null
+++ b/jvsdfx-mm/src/main/java/com/pivotal/jvsd/ChartMenuActionListener.java
@@ -0,0 +1,39 @@
+package com.pivotal.jvsd;
+
+import com.pivotal.jvsd.fx.VSDChartWindow;
+
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.util.ArrayList;
+import javax.swing.JMenuItem;
+
+/**
+ *
+ * @author Vince Ford
+ */
+public class ChartMenuActionListener implements ActionListener {
+
+	ArrayList<VSDChartWindow> chartWindows = null;
+
+	ChartMenuActionListener(ArrayList<VSDChartWindow> chartWindows) {
+		this.chartWindows = chartWindows;
+	}
+
+	@Override
+	public void actionPerformed(ActionEvent e) {
+		JMenuItem menuitem = (JMenuItem) e.getSource();
+//		for (JFrame win : chartWindows) {
+//			if (win.getTitle().equals(menuitem.getText())) {
+//                //silly but works as for some reason the windows dont' get
+//				//pulled forward on on some platforms unless visibility changes
+//				win.setVisible(false);
+//				win.setVisible(true);
+//				//set focus
+//				win.isActive();
+//				win.toFront();
+//				break;
+//			}
+//		}
+	}
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/e299ea84/jvsdfx-mm/src/main/java/com/pivotal/jvsd/ChartSidePanel.form
----------------------------------------------------------------------
diff --git a/jvsdfx-mm/src/main/java/com/pivotal/jvsd/ChartSidePanel.form b/jvsdfx-mm/src/main/java/com/pivotal/jvsd/ChartSidePanel.form
new file mode 100644
index 0000000..3b3964c
--- /dev/null
+++ b/jvsdfx-mm/src/main/java/com/pivotal/jvsd/ChartSidePanel.form
@@ -0,0 +1,325 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<Form version="1.3" maxVersion="1.7" type="org.netbeans.modules.form.forminfo.JPanelFormInfo">
+  <AuxValues>
+    <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="0"/>
+    <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
+    <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="1"/>
+    <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
+    <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
+  </AuxValues>
+
+  <Layout>
+    <DimensionLayout dim="0">
+      <Group type="103" groupAlignment="0" attributes="0">
+          <Group type="102" alignment="0" attributes="0">
+              <EmptySpace max="-2" attributes="0"/>
+              <Group type="103" groupAlignment="0" attributes="0">
+                  <Group type="102" attributes="0">
+                      <Group type="103" groupAlignment="0" attributes="0">
+                          <Component id="graphLeftAxisCheckBox" alignment="0" max="32767" attributes="0"/>
+                          <Component id="jSeparator1" alignment="0" max="32767" attributes="0"/>
+                      </Group>
+                      <EmptySpace max="-2" attributes="0"/>
+                  </Group>
+                  <Group type="102" alignment="1" attributes="0">
+                      <EmptySpace min="0" pref="0" max="32767" attributes="0"/>
+                      <Group type="103" groupAlignment="0" attributes="0">
+                          <Component id="descriptionLabel" alignment="0" min="-2" max="-2" attributes="0"/>
+                          <Component id="unitsLabel" alignment="0" min="-2" max="-2" attributes="0"/>
+                          <Component id="stdDevLabel" alignment="0" min="-2" pref="56" max="-2" attributes="0"/>
+                          <Component id="meanLabel" alignment="0" min="-2" max="-2" attributes="0"/>
+                          <Component id="maxLabel" alignment="0" min="-2" max="-2" attributes="0"/>
+                          <Component id="minLabel" alignment="0" min="-2" max="-2" attributes="0"/>
+                          <Component id="samplesLabel" alignment="0" min="-2" max="-2" attributes="0"/>
+                          <Component id="scalarLabel" alignment="0" min="-2" max="-2" attributes="0"/>
+                          <Group type="103" alignment="0" groupAlignment="1" max="-2" attributes="0">
+                              <Component id="StatNameComboBox" alignment="0" max="32767" attributes="1"/>
+                              <Component id="filterComboBox" alignment="0" pref="192" max="32767" attributes="1"/>
+                          </Group>
+                          <Group type="103" alignment="0" groupAlignment="1" max="-2" attributes="0">
+                              <Component id="jScrollPane1" alignment="0" max="32767" attributes="1"/>
+                              <Component id="unitsField" alignment="0" max="32767" attributes="1"/>
+                              <Component id="stdDevField" alignment="0" max="32767" attributes="1"/>
+                              <Component id="meanField" alignment="0" max="32767" attributes="1"/>
+                              <Component id="maxField" alignment="0" max="32767" attributes="1"/>
+                              <Component id="minField" alignment="0" max="32767" attributes="1"/>
+                              <Component id="samplesField" alignment="0" max="32767" attributes="1"/>
+                              <Group type="102" alignment="0" attributes="0">
+                                  <Component id="scalarOperationComboBox" min="-2" pref="85" max="-2" attributes="0"/>
+                                  <EmptySpace max="-2" attributes="0"/>
+                                  <Component id="scalarSizeSpinner" min="-2" pref="99" max="-2" attributes="0"/>
+                              </Group>
+                          </Group>
+                          <Group type="102" alignment="0" attributes="0">
+                              <EmptySpace min="-2" pref="9" max="-2" attributes="0"/>
+                              <Group type="103" groupAlignment="1" attributes="0">
+                                  <Component id="jLabel1" min="-2" pref="24" max="-2" attributes="0"/>
+                                  <Component id="jLabel2" min="-2" pref="24" max="-2" attributes="0"/>
+                              </Group>
+                              <EmptySpace max="-2" attributes="0"/>
+                              <Group type="103" groupAlignment="0" attributes="0">
+                                  <Component id="xLabel" min="-2" pref="170" max="-2" attributes="0"/>
+                                  <Component id="yLabel" min="-2" max="-2" attributes="0"/>
+                              </Group>
+                          </Group>
+                      </Group>
+                      <EmptySpace min="0" pref="0" max="32767" attributes="0"/>
+                  </Group>
+              </Group>
+          </Group>
+      </Group>
+    </DimensionLayout>
+    <DimensionLayout dim="1">
+      <Group type="103" groupAlignment="0" attributes="0">
+          <Group type="102" alignment="0" attributes="0">
+              <EmptySpace max="-2" attributes="0"/>
+              <Component id="StatNameComboBox" min="-2" max="-2" attributes="0"/>
+              <EmptySpace max="-2" attributes="0"/>
+              <Component id="filterComboBox" min="-2" pref="24" max="-2" attributes="0"/>
+              <EmptySpace max="-2" attributes="0"/>
+              <Component id="graphLeftAxisCheckBox" min="-2" max="-2" attributes="0"/>
+              <EmptySpace max="-2" attributes="0"/>
+              <Group type="103" groupAlignment="3" attributes="0">
+                  <Component id="jLabel2" alignment="3" min="-2" max="-2" attributes="0"/>
+                  <Component id="xLabel" alignment="3" min="-2" max="-2" attributes="0"/>
+              </Group>
+              <EmptySpace max="-2" attributes="0"/>
+              <Group type="103" groupAlignment="3" attributes="0">
+                  <Component id="jLabel1" alignment="3" min="-2" max="-2" attributes="0"/>
+                  <Component id="yLabel" alignment="3" min="-2" max="-2" attributes="0"/>
+              </Group>
+              <EmptySpace min="-2" pref="86" max="-2" attributes="0"/>
+              <Component id="jSeparator1" min="-2" pref="10" max="-2" attributes="0"/>
+              <EmptySpace max="-2" attributes="0"/>
+              <Component id="scalarLabel" min="-2" max="-2" attributes="0"/>
+              <EmptySpace max="-2" attributes="0"/>
+              <Group type="103" groupAlignment="3" attributes="0">
+                  <Component id="scalarOperationComboBox" alignment="3" min="-2" max="-2" attributes="0"/>
+                  <Component id="scalarSizeSpinner" alignment="3" min="-2" max="-2" attributes="0"/>
+              </Group>
+              <EmptySpace max="-2" attributes="0"/>
+              <Component id="samplesLabel" min="-2" max="-2" attributes="0"/>
+              <EmptySpace max="-2" attributes="0"/>
+              <Component id="samplesField" min="-2" max="-2" attributes="0"/>
+              <EmptySpace max="-2" attributes="0"/>
+              <Component id="minLabel" min="-2" max="-2" attributes="0"/>
+              <EmptySpace max="-2" attributes="0"/>
+              <Component id="minField" min="-2" max="-2" attributes="0"/>
+              <EmptySpace max="-2" attributes="0"/>
+              <Component id="maxLabel" min="-2" max="-2" attributes="0"/>
+              <EmptySpace max="-2" attributes="0"/>
+              <Component id="maxField" min="-2" max="-2" attributes="0"/>
+              <EmptySpace max="-2" attributes="0"/>
+              <Component id="meanLabel" min="-2" max="-2" attributes="0"/>
+              <EmptySpace max="-2" attributes="0"/>
+              <Component id="meanField" min="-2" max="-2" attributes="0"/>
+              <EmptySpace max="-2" attributes="0"/>
+              <Component id="stdDevLabel" min="-2" max="-2" attributes="0"/>
+              <EmptySpace max="-2" attributes="0"/>
+              <Component id="stdDevField" min="-2" max="-2" attributes="0"/>
+              <EmptySpace max="-2" attributes="0"/>
+              <Component id="unitsLabel" min="-2" max="-2" attributes="0"/>
+              <EmptySpace max="-2" attributes="0"/>
+              <Component id="unitsField" min="-2" max="-2" attributes="0"/>
+              <EmptySpace max="-2" attributes="0"/>
+              <Component id="descriptionLabel" min="-2" max="-2" attributes="0"/>
+              <EmptySpace max="-2" attributes="0"/>
+              <Component id="jScrollPane1" min="-2" pref="172" max="-2" attributes="0"/>
+              <EmptySpace max="-2" attributes="0"/>
+          </Group>
+      </Group>
+    </DimensionLayout>
+  </Layout>
+  <SubComponents>
+    <Component class="javax.swing.JComboBox" name="StatNameComboBox">
+      <Properties>
+        <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor">
+          <Font name="Lucida Grande" size="12" style="0"/>
+        </Property>
+        <Property name="model" type="javax.swing.ComboBoxModel" editor="org.netbeans.modules.form.editors2.ComboBoxModelEditor">
+          <StringArray count="4">
+            <StringItem index="0" value="Item 1"/>
+            <StringItem index="1" value="Item 2"/>
+            <StringItem index="2" value="Item 3"/>
+            <StringItem index="3" value="Item 4"/>
+          </StringArray>
+        </Property>
+        <Property name="autoscrolls" type="boolean" value="true"/>
+        <Property name="name" type="java.lang.String" value="StatComboBox" noResource="true"/>
+      </Properties>
+    </Component>
+    <Component class="javax.swing.JLabel" name="minLabel">
+      <Properties>
+        <Property name="text" type="java.lang.String" value="Min"/>
+      </Properties>
+    </Component>
+    <Component class="javax.swing.JTextField" name="minField">
+      <Properties>
+        <Property name="editable" type="boolean" value="false"/>
+        <Property name="text" type="java.lang.String" value="Not Available"/>
+      </Properties>
+    </Component>
+    <Component class="javax.swing.JLabel" name="maxLabel">
+      <Properties>
+        <Property name="text" type="java.lang.String" value="Max"/>
+      </Properties>
+    </Component>
+    <Component class="javax.swing.JTextField" name="maxField">
+      <Properties>
+        <Property name="editable" type="boolean" value="false"/>
+        <Property name="text" type="java.lang.String" value="Not Available"/>
+      </Properties>
+    </Component>
+    <Component class="javax.swing.JLabel" name="meanLabel">
+      <Properties>
+        <Property name="text" type="java.lang.String" value="Mean"/>
+      </Properties>
+    </Component>
+    <Component class="javax.swing.JTextField" name="meanField">
+      <Properties>
+        <Property name="editable" type="boolean" value="false"/>
+        <Property name="text" type="java.lang.String" value="Not Available"/>
+      </Properties>
+    </Component>
+    <Component class="javax.swing.JLabel" name="stdDevLabel">
+      <Properties>
+        <Property name="text" type="java.lang.String" value="Std Dev"/>
+      </Properties>
+    </Component>
+    <Component class="javax.swing.JTextField" name="stdDevField">
+      <Properties>
+        <Property name="editable" type="boolean" value="false"/>
+        <Property name="text" type="java.lang.String" value="Not Available"/>
+      </Properties>
+    </Component>
+    <Component class="javax.swing.JLabel" name="unitsLabel">
+      <Properties>
+        <Property name="text" type="java.lang.String" value="Units"/>
+      </Properties>
+    </Component>
+    <Component class="javax.swing.JTextField" name="unitsField">
+      <Properties>
+        <Property name="editable" type="boolean" value="false"/>
+        <Property name="text" type="java.lang.String" value="No Units"/>
+      </Properties>
+    </Component>
+    <Component class="javax.swing.JLabel" name="descriptionLabel">
+      <Properties>
+        <Property name="text" type="java.lang.String" value="Description"/>
+      </Properties>
+    </Component>
+    <Container class="javax.swing.JScrollPane" name="jScrollPane1">
+      <AuxValues>
+        <AuxValue name="autoScrollPane" type="java.lang.Boolean" value="true"/>
+      </AuxValues>
+
+      <Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/>
+      <SubComponents>
+        <Component class="javax.swing.JEditorPane" name="descriptionField">
+          <Properties>
+            <Property name="editable" type="boolean" value="false"/>
+          </Properties>
+        </Component>
+      </SubComponents>
+    </Container>
+    <Component class="javax.swing.JComboBox" name="filterComboBox">
+      <Properties>
+        <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor">
+          <Font name="Lucida Grande" size="12" style="0"/>
+        </Property>
+        <Property name="model" type="javax.swing.ComboBoxModel" editor="org.netbeans.modules.form.editors2.ComboBoxModelEditor">
+          <StringArray count="4">
+            <StringItem index="0" value="Item 1"/>
+            <StringItem index="1" value="Item 2"/>
+            <StringItem index="2" value="Item 3"/>
+            <StringItem index="3" value="Item 4"/>
+          </StringArray>
+        </Property>
+      </Properties>
+    </Component>
+    <Component class="javax.swing.JLabel" name="jLabel1">
+      <Properties>
+        <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor">
+          <Font name="Lucida Grande" size="12" style="0"/>
+        </Property>
+        <Property name="text" type="java.lang.String" value="Y"/>
+      </Properties>
+    </Component>
+    <Component class="javax.swing.JLabel" name="jLabel2">
+      <Properties>
+        <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor">
+          <Font name="Lucida Grande" size="12" style="0"/>
+        </Property>
+        <Property name="text" type="java.lang.String" value="X"/>
+      </Properties>
+    </Component>
+    <Component class="javax.swing.JCheckBox" name="graphLeftAxisCheckBox">
+      <Properties>
+        <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor">
+          <Font name="Lucida Grande" size="12" style="0"/>
+        </Property>
+        <Property name="text" type="java.lang.String" value="Left Axis"/>
+        <Property name="toolTipText" type="java.lang.String" value="Unset to put axis on right side of graph"/>
+      </Properties>
+    </Component>
+    <Component class="javax.swing.JTextField" name="samplesField">
+      <Properties>
+        <Property name="editable" type="boolean" value="false"/>
+        <Property name="text" type="java.lang.String" value="Not Available"/>
+      </Properties>
+    </Component>
+    <Component class="javax.swing.JLabel" name="samplesLabel">
+      <Properties>
+        <Property name="labelFor" type="java.awt.Component" editor="org.netbeans.modules.form.ComponentChooserEditor">
+          <ComponentRef name="samplesField"/>
+        </Property>
+        <Property name="text" type="java.lang.String" value="Samples"/>
+      </Properties>
+    </Component>
+    <Component class="javax.swing.JLabel" name="scalarLabel">
+      <Properties>
+        <Property name="labelFor" type="java.awt.Component" editor="org.netbeans.modules.form.ComponentChooserEditor">
+          <ComponentRef name="scalarOperationComboBox"/>
+        </Property>
+        <Property name="text" type="java.lang.String" value="Scalar"/>
+      </Properties>
+    </Component>
+    <Component class="javax.swing.JSpinner" name="scalarSizeSpinner">
+    </Component>
+    <Component class="javax.swing.JComboBox" name="scalarOperationComboBox">
+      <Properties>
+        <Property name="model" type="javax.swing.ComboBoxModel" editor="org.netbeans.modules.form.editors2.ComboBoxModelEditor">
+          <StringArray count="4">
+            <StringItem index="0" value="Item 1"/>
+            <StringItem index="1" value="Item 2"/>
+            <StringItem index="2" value="Item 3"/>
+            <StringItem index="3" value="Item 4"/>
+          </StringArray>
+        </Property>
+      </Properties>
+    </Component>
+    <Component class="javax.swing.JSeparator" name="jSeparator1">
+    </Component>
+    <Component class="javax.swing.JLabel" name="xLabel">
+      <Properties>
+        <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor">
+          <Font name="Lucida Grande" size="12" style="0"/>
+        </Property>
+        <Property name="text" type="java.lang.String" value="xLabel"/>
+      </Properties>
+    </Component>
+    <Component class="javax.swing.JLabel" name="yLabel">
+      <Properties>
+        <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor">
+          <Font name="Lucida Grande" size="12" style="0"/>
+        </Property>
+        <Property name="text" type="java.lang.String" value="yLabel"/>
+      </Properties>
+    </Component>
+  </SubComponents>
+</Form>

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/e299ea84/jvsdfx-mm/src/main/java/com/pivotal/jvsd/HUD.form
----------------------------------------------------------------------
diff --git a/jvsdfx-mm/src/main/java/com/pivotal/jvsd/HUD.form b/jvsdfx-mm/src/main/java/com/pivotal/jvsd/HUD.form
new file mode 100644
index 0000000..59ebfc0
--- /dev/null
+++ b/jvsdfx-mm/src/main/java/com/pivotal/jvsd/HUD.form
@@ -0,0 +1,113 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<Form version="1.5" maxVersion="1.9" type="org.netbeans.modules.form.forminfo.JPanelFormInfo">
+  <Properties>
+    <Property name="background" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
+      <Color blue="c2" green="e1" red="86" type="rgb"/>
+    </Property>
+    <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
+      <Border info="org.netbeans.modules.form.compat2.border.LineBorderInfo">
+        <LineBorder roundedCorners="true" thickness="2">
+          <Color PropertyName="color" blue="99" green="99" red="99" type="rgb"/>
+        </LineBorder>
+      </Border>
+    </Property>
+    <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor">
+      <Font name="Lucida Grande" size="10" style="0"/>
+    </Property>
+    <Property name="requestFocusEnabled" type="boolean" value="false"/>
+  </Properties>
+  <AuxValues>
+    <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="0"/>
+    <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
+    <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="1"/>
+    <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
+    <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
+  </AuxValues>
+
+  <Layout>
+    <DimensionLayout dim="0">
+      <Group type="103" groupAlignment="0" attributes="0">
+          <Group type="102" attributes="0">
+              <EmptySpace max="-2" attributes="0"/>
+              <Group type="103" groupAlignment="0" max="-2" attributes="0">
+                  <Group type="102" alignment="0" attributes="0">
+                      <Component id="jLabel1" min="-2" max="-2" attributes="0"/>
+                      <EmptySpace type="unrelated" max="-2" attributes="0"/>
+                      <Component id="xLabel" min="-2" pref="100" max="-2" attributes="0"/>
+                  </Group>
+                  <Group type="102" alignment="0" attributes="0">
+                      <Component id="jLabel2" min="-2" max="-2" attributes="0"/>
+                      <EmptySpace type="unrelated" max="-2" attributes="0"/>
+                      <Component id="yLabel" max="32767" attributes="0"/>
+                  </Group>
+              </Group>
+              <EmptySpace pref="69" max="32767" attributes="0"/>
+          </Group>
+      </Group>
+    </DimensionLayout>
+    <DimensionLayout dim="1">
+      <Group type="103" groupAlignment="0" attributes="0">
+          <Group type="102" alignment="0" attributes="0">
+              <EmptySpace max="-2" attributes="0"/>
+              <Group type="103" groupAlignment="3" attributes="0">
+                  <Component id="jLabel1" alignment="3" min="-2" max="-2" attributes="0"/>
+                  <Component id="xLabel" alignment="3" min="-2" max="-2" attributes="0"/>
+              </Group>
+              <EmptySpace max="-2" attributes="0"/>
+              <Group type="103" groupAlignment="3" attributes="0">
+                  <Component id="jLabel2" alignment="3" min="-2" max="-2" attributes="0"/>
+                  <Component id="yLabel" alignment="3" min="-2" max="-2" attributes="0"/>
+              </Group>
+              <EmptySpace pref="58" max="32767" attributes="0"/>
+          </Group>
+      </Group>
+    </DimensionLayout>
+  </Layout>
+  <SubComponents>
+    <Component class="javax.swing.JLabel" name="jLabel1">
+      <Properties>
+        <Property name="font" type="java.awt.Font" editor="org.netbeans.modules.form.editors2.FontEditor">
+          <FontInfo relative="true">
+            <Font component="jLabel1" property="font" relativeSize="true" size="-3"/>
+          </FontInfo>
+        </Property>
+        <Property name="text" type="java.lang.String" value="X:"/>
+      </Properties>
+    </Component>
+    <Component class="javax.swing.JLabel" name="jLabel2">
+      <Properties>
+        <Property name="font" type="java.awt.Font" editor="org.netbeans.modules.form.editors2.FontEditor">
+          <FontInfo relative="true">
+            <Font component="jLabel2" property="font" relativeSize="true" size="-3"/>
+          </FontInfo>
+        </Property>
+        <Property name="text" type="java.lang.String" value="Y:"/>
+      </Properties>
+    </Component>
+    <Component class="javax.swing.JLabel" name="xLabel">
+      <Properties>
+        <Property name="font" type="java.awt.Font" editor="org.netbeans.modules.form.editors2.FontEditor">
+          <FontInfo relative="true">
+            <Font component="xLabel" property="font" relativeSize="true" size="-3"/>
+          </FontInfo>
+        </Property>
+        <Property name="text" type="java.lang.String" value="0"/>
+      </Properties>
+    </Component>
+    <Component class="javax.swing.JLabel" name="yLabel">
+      <Properties>
+        <Property name="font" type="java.awt.Font" editor="org.netbeans.modules.form.editors2.FontEditor">
+          <FontInfo relative="true">
+            <Font component="yLabel" property="font" relativeSize="true" size="-3"/>
+          </FontInfo>
+        </Property>
+        <Property name="text" type="java.lang.String" value="0"/>
+      </Properties>
+    </Component>
+  </SubComponents>
+</Form>

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/e299ea84/jvsdfx-mm/src/main/java/com/pivotal/jvsd/HUD.java
----------------------------------------------------------------------
diff --git a/jvsdfx-mm/src/main/java/com/pivotal/jvsd/HUD.java b/jvsdfx-mm/src/main/java/com/pivotal/jvsd/HUD.java
new file mode 100644
index 0000000..1d8dff3
--- /dev/null
+++ b/jvsdfx-mm/src/main/java/com/pivotal/jvsd/HUD.java
@@ -0,0 +1,99 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+
+package com.pivotal.jvsd;
+
+/**
+ *
+ * @author jdeppe
+ */
+public class HUD extends javax.swing.JPanel {
+
+	/**
+	 * Creates new form HUD
+	 */
+	public HUD() {
+		initComponents();
+	}
+
+	/**
+	 * This method is called from within the constructor to initialize the form.
+	 * WARNING: Do NOT modify this code. The content of this method is always
+	 * regenerated by the Form Editor.
+	 */
+	@SuppressWarnings("unchecked")
+  // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
+  private void initComponents() {
+
+    jLabel1 = new javax.swing.JLabel();
+    jLabel2 = new javax.swing.JLabel();
+    xLabel = new javax.swing.JLabel();
+    yLabel = new javax.swing.JLabel();
+
+    setBackground(new java.awt.Color(134, 225, 194));
+    setBorder(new javax.swing.border.LineBorder(new java.awt.Color(153, 153, 153), 2, true));
+    setFont(new java.awt.Font("Lucida Grande", 0, 10)); // NOI18N
+    setRequestFocusEnabled(false);
+
+    jLabel1.setFont(jLabel1.getFont().deriveFont(jLabel1.getFont().getSize()-3f));
+    jLabel1.setText("X:");
+
+    jLabel2.setFont(jLabel2.getFont().deriveFont(jLabel2.getFont().getSize()-3f));
+    jLabel2.setText("Y:");
+
+    xLabel.setFont(xLabel.getFont().deriveFont(xLabel.getFont().getSize()-3f));
+    xLabel.setText("0");
+
+    yLabel.setFont(yLabel.getFont().deriveFont(yLabel.getFont().getSize()-3f));
+    yLabel.setText("0");
+
+    javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
+    this.setLayout(layout);
+    layout.setHorizontalGroup(
+      layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+      .addGroup(layout.createSequentialGroup()
+        .addContainerGap()
+        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
+          .addGroup(layout.createSequentialGroup()
+            .addComponent(jLabel1)
+            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
+            .addComponent(xLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 100, javax.swing.GroupLayout.PREFERRED_SIZE))
+          .addGroup(layout.createSequentialGroup()
+            .addComponent(jLabel2)
+            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
+            .addComponent(yLabel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))
+        .addContainerGap(69, Short.MAX_VALUE))
+    );
+    layout.setVerticalGroup(
+      layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+      .addGroup(layout.createSequentialGroup()
+        .addContainerGap()
+        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+          .addComponent(jLabel1)
+          .addComponent(xLabel))
+        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+          .addComponent(jLabel2)
+          .addComponent(yLabel))
+        .addContainerGap(58, Short.MAX_VALUE))
+    );
+  }// </editor-fold>//GEN-END:initComponents
+
+  public void setXLabel(String label) {
+    xLabel.setText(label);
+  }
+
+  public void setYLabel(String label) {
+    yLabel.setText(label);
+  }
+
+  // Variables declaration - do not modify//GEN-BEGIN:variables
+  private javax.swing.JLabel jLabel1;
+  private javax.swing.JLabel jLabel2;
+  private javax.swing.JLabel xLabel;
+  private javax.swing.JLabel yLabel;
+  // End of variables declaration//GEN-END:variables
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/e299ea84/jvsdfx-mm/src/main/java/com/pivotal/jvsd/StatValueWrapper.java
----------------------------------------------------------------------
diff --git a/jvsdfx-mm/src/main/java/com/pivotal/jvsd/StatValueWrapper.java b/jvsdfx-mm/src/main/java/com/pivotal/jvsd/StatValueWrapper.java
new file mode 100644
index 0000000..b64fc20
--- /dev/null
+++ b/jvsdfx-mm/src/main/java/com/pivotal/jvsd/StatValueWrapper.java
@@ -0,0 +1,45 @@
+package com.pivotal.jvsd;
+
+import com.pivotal.jvsd.stats.StatFileParser.StatValue;
+
+/**
+ *
+ * @author Vince Ford
+ */
+public class StatValueWrapper {
+
+	StatValue sv;
+	int axisLocation;
+	int plotIndex;
+
+	public StatValueWrapper(StatValue sv, int axisLocation, int plotIndex) {
+		this.sv = sv;
+		this.axisLocation = axisLocation;
+		this.plotIndex = plotIndex;
+	}
+
+	public int getAxisLocation() {
+		return axisLocation;
+	}
+
+	public void setAxisLocation(int axisLocation) {
+		this.axisLocation = axisLocation;
+	}
+
+	public int getPlotIndex() {
+		return plotIndex;
+	}
+
+	public void setPlotIndex(int plotIndex) {
+		this.plotIndex = plotIndex;
+	}
+
+	public StatValue getSv() {
+		return sv;
+	}
+
+	public void setSv(StatValue sv) {
+		this.sv = sv;
+	}
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/e299ea84/jvsdfx-mm/src/main/java/com/pivotal/jvsd/StatsTableColumnModel.java
----------------------------------------------------------------------
diff --git a/jvsdfx-mm/src/main/java/com/pivotal/jvsd/StatsTableColumnModel.java b/jvsdfx-mm/src/main/java/com/pivotal/jvsd/StatsTableColumnModel.java
new file mode 100644
index 0000000..94adbba
--- /dev/null
+++ b/jvsdfx-mm/src/main/java/com/pivotal/jvsd/StatsTableColumnModel.java
@@ -0,0 +1,95 @@
+package com.pivotal.jvsd;
+
+import java.util.ArrayList;
+import java.util.Enumeration;
+import javax.swing.ListSelectionModel;
+import javax.swing.event.TableColumnModelListener;
+import javax.swing.table.TableColumn;
+import javax.swing.table.TableColumnModel;
+import org.apache.commons.collections.IteratorUtils;
+
+/**
+ *
+ * @author Vince Ford
+ */
+public class StatsTableColumnModel implements TableColumnModel {
+
+	ArrayList<TableColumn> tca;
+
+	public void addColumn(TableColumn tc) {
+		tca.add(tc);
+	}
+
+	public void removeColumn(TableColumn tc) {
+		tca.remove(tc);
+	}
+
+	public void moveColumn(int i, int i1) {
+		throw new UnsupportedOperationException("Not supported yet.");
+	}
+
+	public void setColumnMargin(int i) {
+		throw new UnsupportedOperationException("Not supported yet.");
+	}
+
+	public int getColumnCount() {
+		return tca.size();
+	}
+
+	public Enumeration<TableColumn> getColumns() {
+		return IteratorUtils.asEnumeration(tca.iterator());
+	}
+
+	public int getColumnIndex(Object o) {
+		throw new UnsupportedOperationException("Not supported yet.");
+	}
+
+	public TableColumn getColumn(int i) {
+		throw new UnsupportedOperationException("Not supported yet.");
+	}
+
+	public int getColumnMargin() {
+		throw new UnsupportedOperationException("Not supported yet.");
+	}
+
+	public int getColumnIndexAtX(int i) {
+		throw new UnsupportedOperationException("Not supported yet.");
+	}
+
+	public int getTotalColumnWidth() {
+		throw new UnsupportedOperationException("Not supported yet.");
+	}
+
+	public void setColumnSelectionAllowed(boolean bln) {
+		throw new UnsupportedOperationException("Not supported yet.");
+	}
+
+	public boolean getColumnSelectionAllowed() {
+		throw new UnsupportedOperationException("Not supported yet.");
+	}
+
+	public int[] getSelectedColumns() {
+		throw new UnsupportedOperationException("Not supported yet.");
+	}
+
+	public int getSelectedColumnCount() {
+		throw new UnsupportedOperationException("Not supported yet.");
+	}
+
+	public void setSelectionModel(ListSelectionModel lsm) {
+		throw new UnsupportedOperationException("Not supported yet.");
+	}
+
+	public ListSelectionModel getSelectionModel() {
+		throw new UnsupportedOperationException("Not supported yet.");
+	}
+
+	public void addColumnModelListener(TableColumnModelListener tl) {
+		throw new UnsupportedOperationException("Not supported yet.");
+	}
+
+	public void removeColumnModelListener(TableColumnModelListener tl) {
+		throw new UnsupportedOperationException("Not supported yet.");
+	}
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/e299ea84/jvsdfx-mm/src/main/java/com/pivotal/jvsd/StatsTableModel.java
----------------------------------------------------------------------
diff --git a/jvsdfx-mm/src/main/java/com/pivotal/jvsd/StatsTableModel.java b/jvsdfx-mm/src/main/java/com/pivotal/jvsd/StatsTableModel.java
new file mode 100644
index 0000000..b1e1bf6
--- /dev/null
+++ b/jvsdfx-mm/src/main/java/com/pivotal/jvsd/StatsTableModel.java
@@ -0,0 +1,61 @@
+package com.pivotal.jvsd;
+
+import java.util.ArrayList;
+import javax.swing.event.TableModelListener;
+import javax.swing.table.TableModel;
+
+/**
+ *
+ * @author Vince Ford
+ */
+public class StatsTableModel implements TableModel {
+
+	String[] columnNames = {"Row", "Start Time", "File", "Samples", "PID", "Type", "Name"};
+
+	ArrayList tableData;
+
+	public StatsTableModel() {
+		tableData = new ArrayList();
+	}
+
+	public int getRowCount() {
+		return tableData.size();
+	}
+
+	public int getColumnCount() {
+		return columnNames.length;
+	}
+
+	public String getColumnName(int i) {
+		return columnNames[i];
+	}
+
+	public Class<?> getColumnClass(int i) {
+		return String.class;
+	}
+
+	public boolean isCellEditable(int i, int i1) {
+		return false;
+	}
+
+	public Object getValueAt(int i, int i1) {
+		throw new UnsupportedOperationException("Not supported yet.");
+	}
+
+	public void setValueAt(Object o, int i, int i1) {
+		throw new UnsupportedOperationException("Not supported yet.");
+	}
+
+	public void addTableModelListener(TableModelListener tl) {
+		throw new UnsupportedOperationException("Not supported yet.");
+	}
+
+	public void removeTableModelListener(TableModelListener tl) {
+		//null op right now
+	}
+
+	public void addRow(Object[] rowdata) {
+		tableData.add(rowdata);
+	}
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/e299ea84/jvsdfx-mm/src/main/java/com/pivotal/jvsd/VSDConnectionsDialog.form
----------------------------------------------------------------------
diff --git a/jvsdfx-mm/src/main/java/com/pivotal/jvsd/VSDConnectionsDialog.form b/jvsdfx-mm/src/main/java/com/pivotal/jvsd/VSDConnectionsDialog.form
new file mode 100644
index 0000000..753cf18
--- /dev/null
+++ b/jvsdfx-mm/src/main/java/com/pivotal/jvsd/VSDConnectionsDialog.form
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<Form version="1.3" maxVersion="1.7" type="org.netbeans.modules.form.forminfo.JDialogFormInfo">
+  <Properties>
+    <Property name="defaultCloseOperation" type="int" value="2"/>
+  </Properties>
+  <SyntheticProperties>
+    <SyntheticProperty name="formSizePolicy" type="int" value="1"/>
+    <SyntheticProperty name="generateCenter" type="boolean" value="false"/>
+  </SyntheticProperties>
+  <AuxValues>
+    <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="0"/>
+    <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
+    <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="1"/>
+    <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
+    <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
+  </AuxValues>
+
+  <Layout>
+    <DimensionLayout dim="0">
+      <Group type="103" groupAlignment="0" attributes="0">
+          <EmptySpace min="0" pref="400" max="32767" attributes="0"/>
+      </Group>
+    </DimensionLayout>
+    <DimensionLayout dim="1">
+      <Group type="103" groupAlignment="0" attributes="0">
+          <EmptySpace min="0" pref="300" max="32767" attributes="0"/>
+      </Group>
+    </DimensionLayout>
+  </Layout>
+</Form>

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/e299ea84/jvsdfx-mm/src/main/java/com/pivotal/jvsd/VSDConnectionsDialog.java
----------------------------------------------------------------------
diff --git a/jvsdfx-mm/src/main/java/com/pivotal/jvsd/VSDConnectionsDialog.java b/jvsdfx-mm/src/main/java/com/pivotal/jvsd/VSDConnectionsDialog.java
new file mode 100644
index 0000000..432c892
--- /dev/null
+++ b/jvsdfx-mm/src/main/java/com/pivotal/jvsd/VSDConnectionsDialog.java
@@ -0,0 +1,66 @@
+/*
+ * VSDConnectionsDialog.java
+ *
+ * Created on Dec 28, 2010, 10:48:54 AM
+ */
+package com.pivotal.jvsd;
+
+/**
+ *
+ * @author Vince Ford
+ */
+public class VSDConnectionsDialog extends javax.swing.JDialog {
+
+	/**
+	 * Creates new form VSDConnectionsDialog
+	 */
+	public VSDConnectionsDialog(java.awt.Frame parent, boolean modal) {
+		super(parent, modal);
+		initComponents();
+	}
+
+	/**
+	 * This method is called from within the constructor to initialize the form.
+	 * WARNING: Do NOT modify this code. The content of this method is always
+	 * regenerated by the Form Editor.
+	 */
+	@SuppressWarnings("unchecked")
+  // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
+  private void initComponents() {
+
+    setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
+
+    javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
+    getContentPane().setLayout(layout);
+    layout.setHorizontalGroup(
+      layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+      .addGap(0, 400, Short.MAX_VALUE)
+    );
+    layout.setVerticalGroup(
+      layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+      .addGap(0, 300, Short.MAX_VALUE)
+    );
+
+    pack();
+  }// </editor-fold>//GEN-END:initComponents
+
+	/**
+	 * @param args the command line arguments
+	 */
+	public static void main(String args[]) {
+		java.awt.EventQueue.invokeLater(new Runnable() {
+			public void run() {
+				VSDConnectionsDialog dialog = new VSDConnectionsDialog(new javax.swing.JFrame(), true);
+				dialog.addWindowListener(new java.awt.event.WindowAdapter() {
+					public void windowClosing(java.awt.event.WindowEvent e) {
+						System.exit(0);
+					}
+				});
+				dialog.setVisible(true);
+			}
+		});
+	}
+
+  // Variables declaration - do not modify//GEN-BEGIN:variables
+  // End of variables declaration//GEN-END:variables
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/e299ea84/jvsdfx-mm/src/main/java/com/pivotal/jvsd/VSDDataWindow.java
----------------------------------------------------------------------
diff --git a/jvsdfx-mm/src/main/java/com/pivotal/jvsd/VSDDataWindow.java b/jvsdfx-mm/src/main/java/com/pivotal/jvsd/VSDDataWindow.java
new file mode 100644
index 0000000..359fc8c
--- /dev/null
+++ b/jvsdfx-mm/src/main/java/com/pivotal/jvsd/VSDDataWindow.java
@@ -0,0 +1,9 @@
+package com.pivotal.jvsd;
+
+/**
+ *
+ * @author Vince Ford
+ */
+public class VSDDataWindow {
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/e299ea84/jvsdfx-mm/src/main/java/com/pivotal/jvsd/VSDHelpWindow.form
----------------------------------------------------------------------
diff --git a/jvsdfx-mm/src/main/java/com/pivotal/jvsd/VSDHelpWindow.form b/jvsdfx-mm/src/main/java/com/pivotal/jvsd/VSDHelpWindow.form
new file mode 100644
index 0000000..b5e5316
--- /dev/null
+++ b/jvsdfx-mm/src/main/java/com/pivotal/jvsd/VSDHelpWindow.form
@@ -0,0 +1,77 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<Form version="1.3" maxVersion="1.7" type="org.netbeans.modules.form.forminfo.JFrameFormInfo">
+  <NonVisualComponents>
+    <Menu class="javax.swing.JMenuBar" name="jMenuBar1">
+      <SubComponents>
+        <Menu class="javax.swing.JMenu" name="jMenu1">
+          <Properties>
+            <Property name="text" type="java.lang.String" value="File"/>
+          </Properties>
+        </Menu>
+        <Menu class="javax.swing.JMenu" name="jMenu2">
+          <Properties>
+            <Property name="text" type="java.lang.String" value="Edit"/>
+          </Properties>
+        </Menu>
+      </SubComponents>
+    </Menu>
+  </NonVisualComponents>
+  <Properties>
+    <Property name="defaultCloseOperation" type="int" value="3"/>
+  </Properties>
+  <SyntheticProperties>
+    <SyntheticProperty name="menuBar" type="java.lang.String" value="jMenuBar1"/>
+    <SyntheticProperty name="formSizePolicy" type="int" value="1"/>
+    <SyntheticProperty name="generateCenter" type="boolean" value="false"/>
+  </SyntheticProperties>
+  <AuxValues>
+    <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="0"/>
+    <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
+    <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="1"/>
+    <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
+    <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
+  </AuxValues>
+
+  <Layout>
+    <DimensionLayout dim="0">
+      <Group type="103" groupAlignment="0" attributes="0">
+          <Component id="jToolBar1" alignment="0" pref="400" max="32767" attributes="0"/>
+          <Component id="jScrollPane1" alignment="0" pref="400" max="32767" attributes="0"/>
+      </Group>
+    </DimensionLayout>
+    <DimensionLayout dim="1">
+      <Group type="103" groupAlignment="0" attributes="0">
+          <Group type="102" alignment="0" attributes="0">
+              <Component id="jToolBar1" min="-2" pref="25" max="-2" attributes="0"/>
+              <EmptySpace max="-2" attributes="0"/>
+              <Component id="jScrollPane1" pref="244" max="32767" attributes="0"/>
+          </Group>
+      </Group>
+    </DimensionLayout>
+  </Layout>
+  <SubComponents>
+    <Container class="javax.swing.JToolBar" name="jToolBar1">
+      <Properties>
+        <Property name="rollover" type="boolean" value="true"/>
+      </Properties>
+
+      <Layout class="org.netbeans.modules.form.compat2.layouts.DesignBoxLayout"/>
+    </Container>
+    <Container class="javax.swing.JScrollPane" name="jScrollPane1">
+
+      <Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/>
+      <SubComponents>
+        <Component class="javax.swing.JEditorPane" name="jEditorPane1">
+          <Properties>
+            <Property name="editable" type="boolean" value="false"/>
+          </Properties>
+        </Component>
+      </SubComponents>
+    </Container>
+  </SubComponents>
+</Form>

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/e299ea84/jvsdfx-mm/src/main/java/com/pivotal/jvsd/VSDHelpWindow.java
----------------------------------------------------------------------
diff --git a/jvsdfx-mm/src/main/java/com/pivotal/jvsd/VSDHelpWindow.java b/jvsdfx-mm/src/main/java/com/pivotal/jvsd/VSDHelpWindow.java
new file mode 100644
index 0000000..cbe40e8
--- /dev/null
+++ b/jvsdfx-mm/src/main/java/com/pivotal/jvsd/VSDHelpWindow.java
@@ -0,0 +1,90 @@
+/*
+ * VSDHelpWindow.java
+ *
+ * Created on Dec 28, 2010, 10:52:44 AM
+ */
+package com.pivotal.jvsd;
+
+/**
+ *
+ * @author Vince Ford
+ */
+public class VSDHelpWindow extends javax.swing.JFrame {
+
+	/**
+	 * Creates new form VSDHelpWindow
+	 */
+	public VSDHelpWindow() {
+		initComponents();
+	}
+
+	/**
+	 * This method is called from within the constructor to initialize the form.
+	 * WARNING: Do NOT modify this code. The content of this method is always
+	 * regenerated by the Form Editor.
+	 */
+	@SuppressWarnings("unchecked")
+  // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
+  private void initComponents() {
+
+    jToolBar1 = new javax.swing.JToolBar();
+    jScrollPane1 = new javax.swing.JScrollPane();
+    jEditorPane1 = new javax.swing.JEditorPane();
+    jMenuBar1 = new javax.swing.JMenuBar();
+    jMenu1 = new javax.swing.JMenu();
+    jMenu2 = new javax.swing.JMenu();
+
+    setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
+
+    jToolBar1.setRollover(true);
+
+    jEditorPane1.setEditable(false);
+    jScrollPane1.setViewportView(jEditorPane1);
+
+    jMenu1.setText("File");
+    jMenuBar1.add(jMenu1);
+
+    jMenu2.setText("Edit");
+    jMenuBar1.add(jMenu2);
+
+    setJMenuBar(jMenuBar1);
+
+    javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
+    getContentPane().setLayout(layout);
+    layout.setHorizontalGroup(
+      layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+      .addComponent(jToolBar1, javax.swing.GroupLayout.DEFAULT_SIZE, 400, Short.MAX_VALUE)
+      .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 400, Short.MAX_VALUE)
+    );
+    layout.setVerticalGroup(
+      layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+      .addGroup(layout.createSequentialGroup()
+        .addComponent(jToolBar1, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE)
+        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+        .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 244, Short.MAX_VALUE))
+    );
+
+    pack();
+  }// </editor-fold>//GEN-END:initComponents
+
+	/**
+	 * @param args the command line arguments
+	 */
+	public static void main(String args[]) {
+		java.awt.EventQueue.invokeLater(new Runnable() {
+			public void run() {
+				new VSDHelpWindow().setVisible(true);
+			}
+		});
+	}
+
+  // Variables declaration - do not modify//GEN-BEGIN:variables
+  private javax.swing.JEditorPane jEditorPane1;
+  private javax.swing.JMenu jMenu1;
+  private javax.swing.JMenu jMenu2;
+  private javax.swing.JMenuBar jMenuBar1;
+  private javax.swing.JScrollPane jScrollPane1;
+  private javax.swing.JToolBar jToolBar1;
+  // End of variables declaration//GEN-END:variables
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/e299ea84/jvsdfx-mm/src/main/java/com/pivotal/jvsd/VSDMainWindow.java
----------------------------------------------------------------------
diff --git a/jvsdfx-mm/src/main/java/com/pivotal/jvsd/VSDMainWindow.java b/jvsdfx-mm/src/main/java/com/pivotal/jvsd/VSDMainWindow.java
new file mode 100644
index 0000000..164187e
--- /dev/null
+++ b/jvsdfx-mm/src/main/java/com/pivotal/jvsd/VSDMainWindow.java
@@ -0,0 +1,417 @@
+package com.pivotal.jvsd;
+
+import com.pivotal.jvsd.fx.VSDChartWindow;
+import com.pivotal.jvsd.stats.StatFileManager;
+import com.pivotal.jvsd.stats.StatFileParser;
+import com.pivotal.jvsd.stats.StatFileParser.StatValue;
+import com.pivotal.jvsd.stats.StatFileWrapper;
+import com.pivotal.jvsd.stats.Utility;
+
+import java.awt.BorderLayout;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.ItemEvent;
+import java.awt.event.ItemListener;
+import java.io.File;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import javafx.embed.swing.JFXPanel;
+
+import javax.swing.*;
+import javax.swing.event.ListSelectionEvent;
+import javax.swing.event.ListSelectionListener;
+import javax.swing.table.DefaultTableModel;
+import javax.swing.table.TableColumn;
+
+/**
+ *
+ * @author Vince Ford
+ */
+public class VSDMainWindow extends JFrame
+    implements ActionListener, ListSelectionListener {
+
+	private JMenuBar menubar;
+	private final int CHARTMENU_POSITION = 3;
+	private ChartMenuActionListener chartMenuListener = null;
+	private JTable table;
+	private DefaultTableModel tableModel;
+	private StatFileManager statFiles;
+	private VSDStatsPane statsPane;
+	private ArrayList<VSDChartWindow> chartWindows = null;
+	private JMenuItem exportMenuItem = null;
+
+  private JButton buttonNewChart = null;
+  private JButton buttonAddToChart = null;
+  private JComboBox chartList = null;
+
+  private boolean hideZeroStats = true;
+
+  private static final Object[] ROW_HEADERS =
+      {"Row", "Start Time", "File", "Samples", "PID", "Type", "Name"};
+
+  public VSDMainWindow(StatFileManager sfm) {
+    super();
+    
+    // HACK - init JFX
+    new JFXPanel();
+    
+    Utility.initScreenSize();
+    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
+    statFiles = sfm;
+    chartWindows = new ArrayList<VSDChartWindow>();
+    createMenus();
+    createStatsList();
+    createBottomPane();
+    createChartButtons();
+    this.setSize(640,  800);
+//    this.setSize((int) (Utility.getHorizontalScreenSize() * 0.75),
+//        ((int) (Utility.getVerticalScreenSize() * 0.75)));
+    this.setTitle("jVSD");
+    if (statFiles.length() > 0) {
+      statFiles.updateTableView(table);
+      exportMenuItem.setEnabled(true);
+    }
+  }
+
+  /**
+   * Returns a list of StatValues depending on the stats and stat names
+   * selected.
+   */
+  private List<StatValue> getSelectedStatValues() {
+    List<StatValue> results = new ArrayList<StatValue>();
+    String type = null;
+    String name = null;
+    int filenum = 0;
+    int[] indexes = table.getSelectedRows();
+
+    for (int rowIdx : indexes) {
+      int index = table.convertRowIndexToModel(rowIdx);
+      for (int x = 0; x < tableModel.getColumnCount(); x++) {
+        if (tableModel.getColumnName(x).equals("Type")) {
+          type = (String) tableModel.getValueAt(index, x);
+        } else if (tableModel.getColumnName(x).equals("File")) {
+          filenum = ((Integer) tableModel.getValueAt(index, x)).intValue();
+        } else if (tableModel.getColumnName(x).equals("Name")) {
+          name = (String) tableModel.getValueAt(index, x);
+        }
+      }
+
+      StatFileWrapper stw = statFiles.getFile(filenum - 1);
+      StatFileParser.ResourceInst ri = stw.getResource(type, name);
+
+      for (String statName : statsPane.getSelectedValues()) {
+        results.add(ri.getStatValue(statName));
+      }
+    }
+
+    return results;
+  }
+
+	private void createMenus() {
+		menubar = new JMenuBar();
+		JMenuItem item;
+		JMenu menu;
+		//***********
+		//File Menu
+		menu = Utility.createMenu("File", menubar);
+		Utility.createMenuItem("Open", menu, this);
+		exportMenuItem = Utility.createMenuItem("Export to CSV", menu, this);
+		exportMenuItem.setEnabled(false);
+		item = Utility.createMenuItem("Connect", menu, this);
+		item.setEnabled(false);
+		Utility.createMenuItem("Quit", menu, this);
+		//***********
+		//Edit Menu
+		menu = Utility.createMenu("Edit", menubar);
+		Utility.createMenuItem("Undo", menu, this);
+		Utility.createMenuItem("Cut", menu, this);
+		Utility.createMenuItem("Copy", menu, this);
+		Utility.createMenuItem("Paste", menu, this);
+		Utility.createMenuItem("Select All", menu, this);
+		menu.addSeparator();
+		Utility.createMenuItem("Search", menu, this);
+		menu.addSeparator();
+		Utility.createMenuItem("Preferences", menu, this);
+		menu.setEnabled(false);
+		//***********
+		//View Menu
+		menu = Utility.createMenu("View", menubar);
+		JCheckBoxMenuItem cbMenuItem = new JCheckBoxMenuItem("Hide zero stats");
+		cbMenuItem.addItemListener(new ItemListener() {
+      @Override
+      public void itemStateChanged(ItemEvent e) {
+//        if (e.getStateChange() == ItemEvent.SELECTED) {
+//          hideZeroStats = true;
+//        } else {
+//          hideZeroStats = false;
+//        }
+//        updateStatList();
+      }});
+
+		menu.add(cbMenuItem);
+		
+
+//		menu.setEnabled(false);
+		//***********
+		//Charts Menu
+		menu = Utility.createMenu("Charts", menubar);
+		menu.setEnabled(false);
+		//***********
+		//Templates Menu
+		menu = Utility.createMenu("Template", menubar);
+		Utility.createMenuItem("New Template", menu, this);
+		menu.addSeparator();
+		menu.setEnabled(false);
+    //predefined templates will be added below this separator
+
+		//***********
+		//About Menu
+		menu = Utility.createMenu("About", menubar);
+		Utility.createMenuItem("About jVSD", menu, this);
+		item = Utility.createMenuItem("Help", menu, this);
+		item.setEnabled(false);
+		this.setJMenuBar(menubar);
+	}
+
+	@Override
+	public void actionPerformed(ActionEvent e) {
+    VSDChartWindow vcw = null;
+		Object o = e.getSource();
+
+		if (o instanceof JMenuItem) {
+			JMenuItem mi = (JMenuItem) o;
+			String menuItem = mi.getActionCommand();
+			if ("Quit".equals(menuItem)) {
+					System.exit(0);
+      } else if ("Open".equals(menuItem)) {
+			  openFile();
+      } else if ("Export to CSV".equals(menuItem)) {
+			  saveFile();
+      } else if ("About JVSD".equals(menuItem)) {
+			  openAboutDialog();
+			}
+		} else if (o == buttonNewChart || o == buttonAddToChart) {
+      List<StatValue> mystats = getSelectedStatValues();
+      if (mystats.size() > 0 && o == buttonNewChart) {
+        StatValue stat = null; //mystats.remove(0);
+
+//        vcw = new VSDChartWindow(stat, this);
+//        vcw.start();
+        addChartWindow(vcw);
+        chartList.addItem(vcw.getTitle());
+        chartList.setSelectedItem(vcw.getTitle());
+        //vcw.setVisible(true);
+      } else if (o == buttonAddToChart) {
+        String chart = (String) chartList.getSelectedItem();
+        if (chart != null) {
+          vcw = getChartWindow(chart);
+        }
+      }
+
+//      vcw.addToChart(mystats);
+
+      if (chartList.getItemCount() > 0) {
+        buttonAddToChart.setEnabled(true);
+      } else {
+        buttonAddToChart.setEnabled(false);
+      }
+    }
+	}
+
+	private void createStatsList() {
+		this.getContentPane().setLayout(new BorderLayout());
+
+		table = new JTable() {
+			@Override
+			public boolean isCellEditable(int rowIndex, int ColIndex) {
+				return false;
+			}
+		};
+
+		table.setAutoCreateRowSorter(true);
+//		table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
+		JScrollPane scrollpane = new JScrollPane(table);
+
+		this.getContentPane().add(scrollpane, BorderLayout.NORTH);
+		tableModel = (DefaultTableModel) table.getModel();
+		int paneWidth = scrollpane.getWidth();
+		// TODO Fix this - paneWidth = 0
+
+		// Set some specific column widths
+		int[] widths = {(int)(paneWidth * 0.05),
+				(int)(paneWidth * 0.2),
+				(int)(paneWidth * 0.2),
+				(int)(paneWidth * 0.05),
+				(int)(paneWidth * 0.1),
+				(int)(paneWidth * 0.2),
+				(int)(paneWidth * 0.2)
+		};
+		for (int i = 0; i < widths.length; i++) {
+			TableColumn tc = new TableColumn(i);
+			tc.setPreferredWidth(widths[i]);
+			tableModel.addColumn(tc);
+		}
+
+		tableModel.setColumnIdentifiers(ROW_HEADERS);
+
+		table.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
+    table.getSelectionModel().addListSelectionListener(this);
+  }
+
+	private void openFile() {
+		final JFileChooser fc = new JFileChooser();
+		int returnVal = fc.showOpenDialog(this);
+		switch (returnVal) {
+			case JFileChooser.APPROVE_OPTION:
+				File file = fc.getSelectedFile();
+				statFiles.addFile(file);
+				statFiles.updateTableView(table);
+				exportMenuItem.setEnabled(true);
+				break;
+			case JFileChooser.CANCEL_OPTION:
+				break;
+			case JFileChooser.ERROR_OPTION:
+			default:
+				break;
+		}
+	}
+
+	private void createBottomPane() {
+		statsPane = new VSDStatsPane();
+		this.getContentPane().add(statsPane, BorderLayout.CENTER);
+	}
+
+  private void createChartButtons() {
+    JPanel panel = new JPanel();
+    buttonNewChart = new JButton("New Chart");
+    buttonAddToChart = new JButton("Add to Chart");
+    chartList = new JComboBox();
+    buttonNewChart.addActionListener(this);
+    buttonAddToChart.addActionListener(this);
+    buttonAddToChart.setEnabled(false);
+    panel.add(buttonNewChart);
+    panel.add(buttonAddToChart);
+    panel.add(chartList);
+    this.getContentPane().add(panel, BorderLayout.SOUTH);
+  }
+
+  /**
+   * This will update the stats pane with all the common stats of rows
+   * selected in the main window.
+   */
+	private void updateStatList() {
+		statsPane.clear();
+
+    int[] rows = table.getSelectedRows();
+    List<String> statNames = getStatNames(rows[0]);
+
+    for (int i = 1; i < rows.length; i++) {
+      List<String> tmpNames = getStatNames(rows[i]);
+      Iterator<String> it = statNames.iterator();
+      while (it.hasNext()) {
+        String s = it.next();
+        if (!tmpNames.contains(s)) {
+          it.remove();
+        }
+      }
+    }
+
+    statsPane.update(statNames);
+	}
+
+  private List<String> getStatNames(int tableRowIndex) {
+    List<String> statNames = null;
+    String type = null;
+    String name = null;
+    int filenum = -1;
+    int modelIndex = table.convertRowIndexToModel(tableRowIndex);
+
+    for (int x = 0; x < tableModel.getColumnCount(); x++) {
+      if (tableModel.getColumnName(x).equals("Type")) {
+        type = (String) tableModel.getValueAt(modelIndex, x);
+      } else if (tableModel.getColumnName(x).equals("File")) {
+        filenum = ((Integer) tableModel.getValueAt(modelIndex, x)).intValue();
+      } else if (tableModel.getColumnName(x).equals("Name")) {
+        name = (String) tableModel.getValueAt(modelIndex, x);
+      }
+    }
+    if (type != null && name != null && filenum != -1) {
+      statNames = statFiles.getStats(filenum, type, name, hideZeroStats);
+    }
+
+    return statNames;
+  }
+
+	void addChartWindow(VSDChartWindow vcw) {
+		chartWindows.add(vcw);
+		if (this.chartMenuListener == null) {
+			this.chartMenuListener = new ChartMenuActionListener(this.chartWindows);
+		}
+		Utility.
+						createMenuItem(vcw.getTitle(), menubar.getMenu(CHARTMENU_POSITION), this.chartMenuListener);
+	}
+
+	void removeChartWindow(VSDChartWindow vcw) {
+		chartWindows.remove(vcw);
+		for (int x = 0; x < menubar.getMenu(CHARTMENU_POSITION).getItemCount(); x++) {
+			if (menubar.getMenu(CHARTMENU_POSITION).getItem(x).getText().equals(vcw.
+							getTitle())) {
+				menubar.getMenu(CHARTMENU_POSITION).remove(x);
+				break;
+			}
+		}
+
+    chartList.removeItem(vcw.getTitle());
+    if (chartList.getItemCount() == 0) {
+      buttonAddToChart.setEnabled(false);
+    }
+
+		// TODO vcw.dispose();
+	}
+
+	VSDChartWindow getChartWindow(String chart) {
+		VSDChartWindow vcw = findChartWindow(chart);
+
+		return vcw;
+	}
+
+	private VSDChartWindow findChartWindow(String chart) {
+		for (VSDChartWindow vcw : this.chartWindows) {
+			if (vcw.getTitle().equals(chart)) {
+				return vcw;
+			}
+		}
+		return null;
+	}
+
+	private void saveFile() {
+		JFileChooser fc = new JFileChooser();
+		fc.setDialogType(JFileChooser.SAVE_DIALOG);
+		int returnVal = fc.showSaveDialog(this);
+		switch (returnVal) {
+			case JFileChooser.APPROVE_OPTION:
+				File file = fc.getSelectedFile();
+				Utility.dumpCSV(statFiles, file);
+				break;
+			case JFileChooser.CANCEL_OPTION:
+				break;
+			case JFileChooser.ERROR_OPTION:
+			default:
+				break;
+		}
+	}
+
+	private void openAboutDialog() {
+		AboutJVSD dialog = new AboutJVSD(this, true);
+		dialog.setVisible(true);
+	}
+
+  @Override
+  public void valueChanged(ListSelectionEvent e) {
+    if (!e.getValueIsAdjusting()) {
+      updateStatList();
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/e299ea84/jvsdfx-mm/src/main/java/com/pivotal/jvsd/VSDPreferencesDialog.form
----------------------------------------------------------------------
diff --git a/jvsdfx-mm/src/main/java/com/pivotal/jvsd/VSDPreferencesDialog.form b/jvsdfx-mm/src/main/java/com/pivotal/jvsd/VSDPreferencesDialog.form
new file mode 100644
index 0000000..753cf18
--- /dev/null
+++ b/jvsdfx-mm/src/main/java/com/pivotal/jvsd/VSDPreferencesDialog.form
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<Form version="1.3" maxVersion="1.7" type="org.netbeans.modules.form.forminfo.JDialogFormInfo">
+  <Properties>
+    <Property name="defaultCloseOperation" type="int" value="2"/>
+  </Properties>
+  <SyntheticProperties>
+    <SyntheticProperty name="formSizePolicy" type="int" value="1"/>
+    <SyntheticProperty name="generateCenter" type="boolean" value="false"/>
+  </SyntheticProperties>
+  <AuxValues>
+    <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="0"/>
+    <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
+    <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="1"/>
+    <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
+    <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
+  </AuxValues>
+
+  <Layout>
+    <DimensionLayout dim="0">
+      <Group type="103" groupAlignment="0" attributes="0">
+          <EmptySpace min="0" pref="400" max="32767" attributes="0"/>
+      </Group>
+    </DimensionLayout>
+    <DimensionLayout dim="1">
+      <Group type="103" groupAlignment="0" attributes="0">
+          <EmptySpace min="0" pref="300" max="32767" attributes="0"/>
+      </Group>
+    </DimensionLayout>
+  </Layout>
+</Form>

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/e299ea84/jvsdfx-mm/src/main/java/com/pivotal/jvsd/VSDPreferencesDialog.java
----------------------------------------------------------------------
diff --git a/jvsdfx-mm/src/main/java/com/pivotal/jvsd/VSDPreferencesDialog.java b/jvsdfx-mm/src/main/java/com/pivotal/jvsd/VSDPreferencesDialog.java
new file mode 100644
index 0000000..5ebcc6f
--- /dev/null
+++ b/jvsdfx-mm/src/main/java/com/pivotal/jvsd/VSDPreferencesDialog.java
@@ -0,0 +1,66 @@
+/*
+ * VSDPreferencesDialog.java
+ *
+ * Created on Dec 28, 2010, 10:48:13 AM
+ */
+package com.pivotal.jvsd;
+
+/**
+ *
+ * @author Vince Ford
+ */
+public class VSDPreferencesDialog extends javax.swing.JDialog {
+
+	/**
+	 * Creates new form VSDPreferencesDialog
+	 */
+	public VSDPreferencesDialog(java.awt.Frame parent, boolean modal) {
+		super(parent, modal);
+		initComponents();
+	}
+
+	/**
+	 * This method is called from within the constructor to initialize the form.
+	 * WARNING: Do NOT modify this code. The content of this method is always
+	 * regenerated by the Form Editor.
+	 */
+	@SuppressWarnings("unchecked")
+  // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
+  private void initComponents() {
+
+    setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
+
+    javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
+    getContentPane().setLayout(layout);
+    layout.setHorizontalGroup(
+      layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+      .addGap(0, 400, Short.MAX_VALUE)
+    );
+    layout.setVerticalGroup(
+      layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+      .addGap(0, 300, Short.MAX_VALUE)
+    );
+
+    pack();
+  }// </editor-fold>//GEN-END:initComponents
+
+	/**
+	 * @param args the command line arguments
+	 */
+	public static void main(String args[]) {
+		java.awt.EventQueue.invokeLater(new Runnable() {
+			public void run() {
+				VSDPreferencesDialog dialog = new VSDPreferencesDialog(new javax.swing.JFrame(), true);
+				dialog.addWindowListener(new java.awt.event.WindowAdapter() {
+					public void windowClosing(java.awt.event.WindowEvent e) {
+						System.exit(0);
+					}
+				});
+				dialog.setVisible(true);
+			}
+		});
+	}
+
+  // Variables declaration - do not modify//GEN-BEGIN:variables
+  // End of variables declaration//GEN-END:variables
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/e299ea84/jvsdfx-mm/src/main/java/com/pivotal/jvsd/VSDStatInfoWindow.java
----------------------------------------------------------------------
diff --git a/jvsdfx-mm/src/main/java/com/pivotal/jvsd/VSDStatInfoWindow.java b/jvsdfx-mm/src/main/java/com/pivotal/jvsd/VSDStatInfoWindow.java
new file mode 100644
index 0000000..23aa2c8
--- /dev/null
+++ b/jvsdfx-mm/src/main/java/com/pivotal/jvsd/VSDStatInfoWindow.java
@@ -0,0 +1,9 @@
+package com.pivotal.jvsd;
+
+/**
+ *
+ * @author Vince Ford
+ */
+public class VSDStatInfoWindow {
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/e299ea84/jvsdfx-mm/src/main/java/com/pivotal/jvsd/VSDStatsPane.java
----------------------------------------------------------------------
diff --git a/jvsdfx-mm/src/main/java/com/pivotal/jvsd/VSDStatsPane.java b/jvsdfx-mm/src/main/java/com/pivotal/jvsd/VSDStatsPane.java
new file mode 100644
index 0000000..f52de35
--- /dev/null
+++ b/jvsdfx-mm/src/main/java/com/pivotal/jvsd/VSDStatsPane.java
@@ -0,0 +1,53 @@
+package com.pivotal.jvsd;
+
+import java.awt.BorderLayout;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.util.List;
+import javax.swing.DefaultListModel;
+import javax.swing.JButton;
+import javax.swing.JComboBox;
+import javax.swing.JList;
+import javax.swing.JPanel;
+import javax.swing.JScrollPane;
+import javax.swing.ListSelectionModel;
+
+/**
+ *
+ * @author Vince Ford
+ */
+public class VSDStatsPane extends JPanel {
+
+	JList stats = null;
+
+	public VSDStatsPane() {
+		super();
+
+		this.setLayout(new BorderLayout());
+		stats = new JList();
+		stats.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
+		stats.setLayoutOrientation(JList.VERTICAL);
+		stats.setVisibleRowCount(8);
+		JScrollPane jsp = new JScrollPane(stats);
+		JPanel panel = new JPanel();
+		this.add(jsp, BorderLayout.CENTER);
+		this.add(panel, BorderLayout.SOUTH);
+		stats.setModel(new DefaultListModel());
+	}
+
+  public List<String> getSelectedValues() {
+    return stats.getSelectedValuesList();
+  }
+
+	void clear() {
+		((DefaultListModel) (stats.getModel())).clear();
+	}
+
+	void update(List<String> statsValue) {
+		clear();
+		DefaultListModel dlm = (DefaultListModel) stats.getModel();
+		for (String x : statsValue) {
+			dlm.addElement(x);
+		}
+	}
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/e299ea84/jvsdfx-mm/src/main/java/com/pivotal/jvsd/VisualDisplayApp.java
----------------------------------------------------------------------
diff --git a/jvsdfx-mm/src/main/java/com/pivotal/jvsd/VisualDisplayApp.java b/jvsdfx-mm/src/main/java/com/pivotal/jvsd/VisualDisplayApp.java
new file mode 100644
index 0000000..81b04d3
--- /dev/null
+++ b/jvsdfx-mm/src/main/java/com/pivotal/jvsd/VisualDisplayApp.java
@@ -0,0 +1,88 @@
+/*
+ * To change this template, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package com.pivotal.jvsd;
+
+import java.util.logging.ConsoleHandler;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import com.pivotal.jvsd.stats.StatFileManager;
+import org.apache.commons.cli.CommandLine;
+import org.apache.commons.cli.CommandLineParser;
+import org.apache.commons.cli.Option;
+import org.apache.commons.cli.OptionBuilder;
+import org.apache.commons.cli.Options;
+import org.apache.commons.cli.ParseException;
+import org.apache.commons.cli.PosixParser;
+
+/**
+ *
+ * @author Vince Ford
+ */
+public class VisualDisplayApp {
+
+	VSDMainWindow mainWindow = null;
+	StatFileManager statfiles = null;
+	static private Logger logger;
+
+	/**
+	 *
+	 */
+	public VisualDisplayApp() {
+		logger = Logger.getLogger("com.gemstone.gemfire.support");
+		ConsoleHandler ch = new ConsoleHandler();
+		ch.setLevel(Level.CONFIG);
+		logger.addHandler(ch);
+		logger.setLevel(Level.CONFIG);
+
+		System.out.println("JVSD - Version 0.01");
+		System.out.
+						println("This tool is provided as-is with no support or warranty. Use at your own risk.");
+		System.out.
+						println("If you encounter issues or want to request features - please send email to:");
+		System.out.println("vincef@vmware.com");
+	}
+
+	/**
+	 *
+	 * @param argv
+	 */
+	public static void main(String argv[]) {
+		VisualDisplayApp app = new VisualDisplayApp();
+		logger.config("Log level:" + logger.getLevel().toString());
+		app.init(argv);
+		app.createWindows();
+	}
+
+	private void init(String[] argv) {
+		statfiles = new StatFileManager();
+		try {
+			Option opt = (OptionBuilder.hasArgs()).create('f');
+			Options cliOptions = new Options();
+			cliOptions.addOption(opt);
+			CommandLineParser cliParser = new PosixParser();
+			CommandLine lin = cliParser.parse(cliOptions, argv);
+			if (lin.hasOption('f')) {
+
+				String[] opts = lin.getOptionValues('f');
+				System.out.println(opts.length);
+				for (String filename : opts) {
+					System.out.println("opening file:" + filename);
+					statfiles.addFile(filename);
+				}
+			}
+
+		} catch (ParseException ex) {
+			Logger.getLogger(VisualDisplayApp.class.getName()).
+							log(Level.SEVERE, null, ex);
+		}
+	}
+
+	private void createWindows() {
+		mainWindow = new VSDMainWindow(statfiles);
+		mainWindow.setVisible(true);
+	}
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/e299ea84/jvsdfx-mm/src/main/java/com/pivotal/jvsd/controller/RootController.java
----------------------------------------------------------------------
diff --git a/jvsdfx-mm/src/main/java/com/pivotal/jvsd/controller/RootController.java b/jvsdfx-mm/src/main/java/com/pivotal/jvsd/controller/RootController.java
new file mode 100644
index 0000000..667e9e0
--- /dev/null
+++ b/jvsdfx-mm/src/main/java/com/pivotal/jvsd/controller/RootController.java
@@ -0,0 +1,195 @@
+package com.pivotal.jvsd.controller;
+
+import com.pivotal.jvsd.fx.ChartManager;
+import com.pivotal.jvsd.fx.StatFileManager;
+import com.pivotal.jvsd.model.ResourceWrapper;
+import com.pivotal.jvsd.model.stats.StatArchiveFile;
+import com.pivotal.jvsd.model.stats.StatArchiveFile.StatValue;
+import javafx.collections.FXCollections;
+import javafx.collections.ObservableList;
+import javafx.fxml.FXML;
+import javafx.fxml.Initializable;
+import javafx.scene.control.Button;
+import javafx.scene.control.ComboBox;
+import javafx.scene.control.ListView;
+import javafx.scene.control.SelectionMode;
+import javafx.scene.control.TableColumn;
+import javafx.scene.control.TableView;
+import javafx.scene.control.cell.PropertyValueFactory;
+
+import java.io.IOException;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.List;
+import java.util.ResourceBundle;
+
+/**
+ * @author Jens Deppe
+ */
+public class RootController implements Initializable {
+
+  @FXML
+  private TableView<ResourceWrapper> tableView;
+
+  @FXML
+  private ListView listView;
+
+  @FXML
+  private Button newChartButton;
+
+  @FXML
+  private Button addToChartButton;
+
+  @FXML
+  private ComboBox chartCombo;
+
+  private ObservableList<Integer> chartList;
+
+  private ObservableList<ResourceWrapper> resources;
+
+  private ObservableList statNames;
+
+  private StatFileManager fileManager = StatFileManager.getInstance();
+
+  private ChartManager chartManager = ChartManager.getInstance();
+
+  @Override
+  public void initialize(URL url, ResourceBundle resourceBundle) {
+    double[] columnPercent = {
+        0.05,  // Row
+        0.25,  // Start Time
+        0.05,  // File
+        0.075, // Samples
+        0.075, // PID
+        0.2,   // Type
+        0.3    // Name
+    };
+
+    ObservableList<TableColumn<ResourceWrapper, ?>> cols = tableView.getColumns();
+    // Set column widths
+    for (int i = 0; i < 7; i++) {
+      cols.get(i).prefWidthProperty().
+          bind(tableView.widthProperty().multiply(columnPercent[i]));
+    }
+
+    cols.get(0).setCellValueFactory(new PropertyValueFactory<>("row"));
+    cols.get(1).setCellValueFactory(new PropertyValueFactory<>("startTime"));
+    cols.get(2).setCellValueFactory(new PropertyValueFactory<>("file"));
+    cols.get(3).setCellValueFactory(new PropertyValueFactory<>("samples"));
+    cols.get(4).setCellValueFactory(new PropertyValueFactory<>("pid"));
+    cols.get(5).setCellValueFactory(new PropertyValueFactory<>("type"));
+    cols.get(6).setCellValueFactory(new PropertyValueFactory<>("name"));
+
+    resources = FXCollections.observableArrayList();
+
+    int row = 0;
+    for (StatArchiveFile s : fileManager.getArchives()) {
+      for (StatArchiveFile.ResourceInst r : s.getResourceInstList()) {
+        resources.add(new ResourceWrapper(r, row++));
+      }
+    }
+
+    tableView.setItems(resources);
+    tableView.getSelectionModel().setSelectionMode(SelectionMode.MULTIPLE);
+    tableView.getSelectionModel().selectedItemProperty().addListener(
+        (observableValue, oldValue, newValue) -> {
+          updateStatList();
+        });
+
+    statNames = FXCollections.observableArrayList();
+    listView.setItems(statNames);
+    listView.getSelectionModel().setSelectionMode(SelectionMode.SINGLE);
+    listView.getSelectionModel().selectedItemProperty().addListener(
+        (observableValue, oldValue, newValue) -> {
+          System.out.println(newValue);
+        });
+
+    chartList = FXCollections.observableArrayList();
+    chartCombo.setItems(chartList);
+  }
+
+  private List<StatValue> getSelectedStatValues() {
+    List<StatValue> result = new ArrayList<>();
+
+    List<String> statNames = listView.getSelectionModel().getSelectedItems();
+    ObservableList<ResourceWrapper> rows =
+        tableView.getSelectionModel().getSelectedItems();
+    if (rows != null && rows.size() > 0) {
+      for (ResourceWrapper r : rows) {
+        for (String stat : statNames) {
+          StatValue sv = r.getStatValue(stat);
+          result.add(sv);
+        }
+      }
+    }
+
+    return result;
+  }
+
+  @FXML
+  private void newChartButtonClicked() {
+    List<StatValue> svs = getSelectedStatValues();
+    if (svs.size() > 0) {
+      try {
+        int id = chartManager.newChart(svs.get(0));
+        svs.remove(0);
+        for (StatValue s : svs) {
+          chartManager.addToChart(id, s);
+        }
+        chartCombo.getSelectionModel().select(id);
+      } catch (IOException iox) {
+        iox.printStackTrace();
+      }
+    }
+  }
+
+  @FXML
+  private void addToChartButtonClicked() {
+    Integer i = (Integer) chartCombo.getSelectionModel().getSelectedItem();
+    List<StatValue> svs = getSelectedStatValues();
+    try {
+      for (StatValue s : svs) {
+        chartManager.addToChart(i, s);
+      }
+    } catch (IOException iox) {
+      iox.printStackTrace();
+    }
+  }
+
+  public void setChartList(Collection<Integer> chartList) {
+    if (chartList.size() > 0) {
+      chartCombo.setDisable(false);
+      this.chartList.clear();
+      this.chartList.addAll(chartList);
+      this.chartCombo.getSelectionModel().select(0);
+      addToChartButton.setDisable(false);
+    } else {
+      this.chartList.clear();
+      chartCombo.setDisable(true);
+      addToChartButton.setDisable(true);
+    }
+
+  }
+
+  private void updateStatList() {
+    ObservableList<ResourceWrapper> rows =
+        tableView.getSelectionModel().getSelectedItems();
+    List<String> tmpStatNames = rows.get(0).getStatNames();
+
+    for (int i = 1; i < rows.size(); i++) {
+      List<String> tmpNames = rows.get(i).getStatNames();
+      Iterator<String> it = tmpStatNames.iterator();
+      while (it.hasNext()) {
+        String s = it.next();
+        if (!tmpNames.contains(s)) {
+          it.remove();
+        }
+      }
+    }
+
+    statNames.clear();
+    statNames.addAll(tmpStatNames);
+  }
+}

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/e299ea84/jvsdfx-mm/src/main/java/com/pivotal/jvsd/fx/ChartManager.java
----------------------------------------------------------------------
diff --git a/jvsdfx-mm/src/main/java/com/pivotal/jvsd/fx/ChartManager.java b/jvsdfx-mm/src/main/java/com/pivotal/jvsd/fx/ChartManager.java
new file mode 100644
index 0000000..700f9ea
--- /dev/null
+++ b/jvsdfx-mm/src/main/java/com/pivotal/jvsd/fx/ChartManager.java
@@ -0,0 +1,83 @@
+package com.pivotal.jvsd.fx;
+
+import com.pivotal.jvsd.controller.RootController;
+import com.pivotal.jvsd.model.stats.StatArchiveFile;
+import javafx.fxml.FXMLLoader;
+import javafx.scene.Scene;
+import javafx.scene.layout.Pane;
+import javafx.stage.Stage;
+
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * Basic container for all charts which are currently being displayed
+ *
+ * @author Jens Deppe
+ */
+public class ChartManager {
+
+  static final boolean MMTEST = true;
+
+  private Map<Integer, VSDChartWindow> charts = new HashMap<>();
+
+  private static ChartManager instance = new ChartManager();
+
+  private RootController root;
+
+  private int chartId = 0;
+
+  private ChartManager() {
+    // We are a singleton
+  }
+
+  public static ChartManager getInstance() {
+    return instance;
+  }
+
+  public VSDChartWindow add(VSDChartWindow chart) {
+    return chart;
+  }
+
+  public VSDChartWindow get(String chartName) {
+    return charts.get(chartName);
+  }
+
+  public void setRootController(RootController root) {
+    this.root = root;
+  }
+
+  public void removeChart(int id) {
+    charts.remove(id);
+    root.setChartList(charts.keySet());
+  }
+
+  public int newChart(StatArchiveFile.StatValue sv) throws IOException {
+    int id = chartId++;
+
+    FXMLLoader loader = new FXMLLoader(getClass().getResource("/chart.fxml"));
+    Pane chartPane = loader.load();
+    Stage stage = new Stage();
+    Scene scene = new Scene(chartPane);
+    scene.getStylesheets().add("META-INF/css/style.css");
+    stage.setScene(scene);
+    stage.show();
+
+    VSDChartWindow controller = loader.getController();
+    controller.setId(id);
+    charts.put(id, controller);
+    root.setChartList(charts.keySet());
+
+    controller.setStage(stage);
+//    if (!MMTEST) {
+      controller.addToChart(sv);
+//    }
+
+    return id;
+  }
+
+  public void addToChart(int id, StatArchiveFile.StatValue sv) throws IOException {
+    charts.get(id).addToChart(sv);
+  }
+}



Mime
View raw message