Coverage Report - kg.apc.jmeter.vizualizers.JPerfmonParamsPanel
 
Classes in this File Line Coverage Branch Coverage Complexity
JPerfmonParamsPanel
79%
656/829
26%
59/219
3.971
JPerfmonParamsPanel$1
25%
1/4
0%
0/2
3.971
JPerfmonParamsPanel$2
33%
1/3
N/A
3.971
JPerfmonParamsPanel$3
33%
1/3
N/A
3.971
JPerfmonParamsPanel$4
33%
1/3
N/A
3.971
JPerfmonParamsPanel$5
33%
1/3
N/A
3.971
JPerfmonParamsPanel$MetricActionListener
33%
1/3
N/A
3.971
 
 1  
 package kg.apc.jmeter.vizualizers;
 2  
 
 3  
 import java.awt.Color;
 4  
 import java.awt.Cursor;
 5  
 import java.awt.Font;
 6  
 import java.awt.event.ActionEvent;
 7  
 import java.awt.event.InputEvent;
 8  
 import java.awt.event.MouseAdapter;
 9  
 import java.awt.event.MouseEvent;
 10  
 import java.util.ArrayList;
 11  
 import java.util.Enumeration;
 12  
 import java.util.HashMap;
 13  
 import javax.swing.AbstractButton;
 14  
 import javax.swing.BorderFactory;
 15  
 import javax.swing.JLabel;
 16  
 import javax.swing.JPanel;
 17  
 import javax.swing.JRadioButton;
 18  
 import javax.swing.JTextField;
 19  
 import javax.swing.border.Border;
 20  
 
 21  
 import kg.apc.jmeter.JMeterPluginsUtils;
 22  
 import kg.apc.jmeter.gui.JAbsrtactDialogPanel;
 23  
 
 24  0
 public class JPerfmonParamsPanel extends JAbsrtactDialogPanel {
 25  
 
 26  
     private final static int OPTION_PRIMARY_METRIC = 1;
 27  
     private final static int OPTION_ADDITIONAL_METRIC = 1 << 1;
 28  
     private final static int OPTION_PROCESS_SCOPE = 1 << 2;
 29  
     private final static int OPTION_CPU_CORE_SCOPE = 1 << 3;
 30  
     private final static int OPTION_FILESYSTEM_SCOPE = 1 << 4;
 31  
     private final static int OPTION_NET_INTERFACE_SCOPE = 1 << 5;
 32  
     private final static int OPTION_EXEC = 1 << 6;
 33  
     private final static int OPTION_TAIL = 1 << 7;
 34  
     private final static int OPTION_JMX = 1 << 8;
 35  
     private final static int OPTION_UNIT = 1 << 9;
 36  1
     private JTextField parent = null;
 37  1
     private String type = null;
 38  
 
 39  
     private final static String defaultMarker = " (default)";
 40  
     private final static String separator = ":";
 41  
     private final static String METRIC_CPU = "CPU";
 42  
     private final static String METRIC_MEM = "Memory";
 43  
     private final static String METRIC_SWAP = "Swap";
 44  
     private final static String METRIC_DISKIO = "Disks I/O";
 45  
     private final static String METRIC_NETIO = "Network I/O";
 46  
     private final static String METRIC_TCP = "TCP";
 47  
     private final static String METRIC_EXEC = "EXEC";
 48  
     private final static String METRIC_TAIL = "TAIL";
 49  
     private final static String METRIC_JMX = "JMX";
 50  
 
 51  1
     private HashMap<String, Integer> rules = new HashMap<String, Integer>();
 52  
 
 53  1
     private ArrayList<String> unitRules = new ArrayList<String>();
 54  
 
 55  
     //CPU metrics
 56  1
     private static String[] cpuMetricsPrimary = {
 57  
             "combined" + defaultMarker, "Get the combined CPU usage, in percent (%)",
 58  
             "idle", "Get the idle CPU usage, in percent (%)",
 59  
             "system", "Get the system CPU usage, in percent (%)",
 60  
             "user", "Get the user CPU usage, in percent (%)",
 61  
             "iowait", "Get the iowait CPU usage, in percent (%)"
 62  
     };
 63  1
     private static String[] cpuProcessMetricsPrimary = {
 64  
             "percent" + defaultMarker, "Get the process combined CPU usage, in percent (%)",
 65  
             "total", "Get the process cpu time (sum of User and System) per second, in ms",
 66  
             "system", "Get the process cpu kernel time per second, in ms",
 67  
             "user", "Get the process cpu user time per second, in ms"
 68  
     };
 69  1
     private static String[] cpuMetricsAdditional = {
 70  
             "irq", "Get the irq CPU usage, in percent (%)",
 71  
             "nice", "Get the nice CPU usage, in percent (%)",
 72  
             "softirq", "Get the softirq CPU usage, in percent (%)",
 73  
             "stolen", "Get the stolen CPU usage, in percent (%)",};
 74  
     //Memory Metrics
 75  1
     private static String[] memMetricsPrimary = {
 76  
             "usedperc" + defaultMarker, "Relative memory usage, in percent (%)",
 77  
             "freeperc", "Relative free memory, in percent (%)",
 78  
             "used", "Size of Memory used",
 79  
             "free", "Size of Free memory"};
 80  1
     private static String[] memMetricsAdditional = {
 81  
             "actualused", "Size of Actual memory usage",
 82  
             "actualfree", "Size of Actual free memory",
 83  
             "ram", "Server physical memory in Mb",
 84  
             "total", "Size of Total memory"};
 85  1
     private static String[] memProcessMetricsPrimary = {
 86  
             "resident" + defaultMarker, "Size of Process resident memory usage",
 87  
             "virtual", "Size of Process virtual memory usage",
 88  
             "shared", "Size of Process shared memory usage"
 89  
     };
 90  1
     private static String[] memProcessMetricsAdditional = {
 91  
             "pagefaults", "Process page faults count",
 92  
             "majorfaults", "Process major faults count",
 93  
             "minorfaults", "Process minor faults count"
 94  
     };
 95  
     //Disk I/O
 96  1
     private static String[] diskIOMetricsPrimary = {
 97  
             "queue" + defaultMarker, "Description to update",
 98  
             "reads", "Number of read access",
 99  
             "writes", "Number of write access",
 100  
             "readbytes", "Number of bytes read",
 101  
             "writebytes", "Number of bytes written"
 102  
     };
 103  1
     private static String[] diskIOMetricsAdditional = {
 104  
             "available", "Description to update",
 105  
             "service", "Description to update",
 106  
             "files", "Description to update",
 107  
             "free", "Description to update",
 108  
             "freefiles", "Description to update",
 109  
             "total", "Description to update",
 110  
             "useperc", "Description to update",
 111  
             "used", "Description to update"
 112  
     };
 113  
     //Network I/O
 114  1
     private static String[] netIOMetricsPrimary = {
 115  
             "bytesrecv" + defaultMarker, "Number of bytes received",
 116  
             "bytessent", "Number of bytes sent",
 117  
             "rx", "Description to update",
 118  
             "tx", "Description to update"
 119  
     };
 120  1
     private static String[] netIOMetricsAdditional = {
 121  
             "used", "Description to update",
 122  
             "speed", "Description to update",
 123  
             "rxdrops", "Description to update",
 124  
             "rxerr", "Description to update",
 125  
             "rxframe", "Description to update",
 126  
             "rxoverruns", "Description to update",
 127  
             "txcarrier", "Description to update",
 128  
             "txcollisions", "Description to update",
 129  
             "txdrops", "Description to update",
 130  
             "txerr", "Description to update",
 131  
             "txoverruns", "Description to update"
 132  
     };
 133  
     //TCP
 134  1
     private static String[] tcpMetricsPrimary = {
 135  
             "estab" + defaultMarker, "Number of established connections",
 136  
             "time_wait", "Description to update",
 137  
             "close_wait", "Description to update"
 138  
     };
 139  1
     private static String[] tcpMetricsAdditional = {
 140  
             "bound", "Description to update",
 141  
             "close", "Description to update",
 142  
             "closing", "Description to update",
 143  
             "fin_wait1", "Description to update",
 144  
             "fin_wait2", "Description to update",
 145  
             "idle", "Description to update",
 146  
             "inbound", "Description to update",
 147  
             "last_ack", "Description to update",
 148  
             "listen", "Description to update",
 149  
             "outbound", "Description to update",
 150  
             "syn_recv", "Description to update"
 151  
     };
 152  
     //SWAP
 153  1
     private static String[] swapMetricsPrimary = {
 154  
             "used" + defaultMarker, "Size of used swap",
 155  
             "pagein", "Number of page in",
 156  
             "pageout", "Number of page out",
 157  
             "free", "Size of free swap",
 158  
             "total", "Size of total swap"
 159  
     };
 160  
 
 161  
     //JMX
 162  1
     private static String[] jmxMetricsPrimary = {
 163  
             "gc-time", "Time spent in garbage collection, milliseconds",
 164  
             "memory-usage", "Heap memory used by VM, bytes",
 165  
             "memory-committed", "Heap memory committed by VM, bytes",
 166  
             "memorypool-usage", "Heap memory pool usage, bytes",
 167  
             "memorypool-committed", "Heap memory pool committed size, bytes",
 168  
             "class-count", "Loaded class count in VM",
 169  
             "compile-time", "Time spent in compilation, milliseconds"
 170  
     };
 171  
 
 172  
     /**
 173  
      * Creates new form JPerfmonParamsDialog
 174  
      */
 175  1
     public JPerfmonParamsPanel(String type, JTextField parentField) {
 176  1
         this.parent = parentField;
 177  1
         this.type = type;
 178  1
         initRules();
 179  1
         initUnitRules();
 180  1
         initComponents();
 181  1
         initMetrics(type);
 182  1
         showProcessScopePanels();
 183  1
         makePtqlLink();
 184  1
         initFields();
 185  1
     }
 186  
 
 187  
     private void addUnitRule(String type, String metric) {
 188  25
         if (metric.endsWith(defaultMarker)) metric = metric.substring(0, metric.length() - defaultMarker.length());
 189  25
         unitRules.add(type + metric);
 190  25
     }
 191  
 
 192  
     private void initUnitRules() {
 193  
         //TODO: map all metrics...
 194  
         //memory
 195  1
         addUnitRule(METRIC_MEM, memMetricsPrimary[4]);
 196  1
         addUnitRule(METRIC_MEM, memMetricsPrimary[6]);
 197  1
         addUnitRule(METRIC_MEM, memMetricsAdditional[0]);
 198  1
         addUnitRule(METRIC_MEM, memMetricsAdditional[2]);
 199  1
         addUnitRule(METRIC_MEM, memMetricsAdditional[6]);
 200  
 
 201  1
         addUnitRule(METRIC_MEM, memProcessMetricsPrimary[0]);
 202  1
         addUnitRule(METRIC_MEM, memProcessMetricsPrimary[2]);
 203  1
         addUnitRule(METRIC_MEM, memProcessMetricsPrimary[4]);
 204  
 
 205  
         //swap
 206  1
         addUnitRule(METRIC_SWAP, swapMetricsPrimary[0]);
 207  1
         addUnitRule(METRIC_SWAP, swapMetricsPrimary[6]);
 208  1
         addUnitRule(METRIC_SWAP, swapMetricsPrimary[8]);
 209  
 
 210  
         //diskio
 211  1
         addUnitRule(METRIC_DISKIO, diskIOMetricsPrimary[6]);
 212  1
         addUnitRule(METRIC_DISKIO, diskIOMetricsPrimary[8]);
 213  
 
 214  1
         addUnitRule(METRIC_DISKIO, diskIOMetricsAdditional[0]);
 215  1
         addUnitRule(METRIC_DISKIO, diskIOMetricsAdditional[4]);
 216  1
         addUnitRule(METRIC_DISKIO, diskIOMetricsAdditional[6]);
 217  1
         addUnitRule(METRIC_DISKIO, diskIOMetricsAdditional[8]);
 218  1
         addUnitRule(METRIC_DISKIO, diskIOMetricsAdditional[10]);
 219  1
         addUnitRule(METRIC_DISKIO, diskIOMetricsAdditional[14]);
 220  
 
 221  
         //netio
 222  1
         addUnitRule(METRIC_NETIO, netIOMetricsPrimary[0]);
 223  1
         addUnitRule(METRIC_NETIO, netIOMetricsPrimary[2]);
 224  
 
 225  
         //jmx
 226  1
         addUnitRule(METRIC_JMX, jmxMetricsPrimary[2]);
 227  1
         addUnitRule(METRIC_JMX, jmxMetricsPrimary[4]);
 228  1
         addUnitRule(METRIC_JMX, jmxMetricsPrimary[6]);
 229  1
         addUnitRule(METRIC_JMX, jmxMetricsPrimary[8]);
 230  1
     }
 231  
 
 232  
     private boolean isUnitRelevent(String metric) {
 233  1
         return unitRules.contains(type + metric);
 234  
     }
 235  
 
 236  
     private void enableUnit(String metric) {
 237  1
         boolean show = isUnitRelevent(metric);
 238  1
         jLabelUnit.setEnabled(show);
 239  1
         jComboBoxUnit.setEnabled(show);
 240  1
     }
 241  
 
 242  
     private String getUnit() {
 243  0
         int unit = jComboBoxUnit.getSelectedIndex();
 244  0
         switch (unit) {
 245  
             case 1:
 246  0
                 return "kb";
 247  
             case 2:
 248  0
                 return "mb";
 249  
             default:
 250  0
                 return "b";
 251  
         }
 252  
     }
 253  
 
 254  
     private void setUnit(String unit) {
 255  0
         if ("kb".equalsIgnoreCase(unit)) jComboBoxUnit.setSelectedIndex(1);
 256  0
         else if ("mb".equalsIgnoreCase(unit)) jComboBoxUnit.setSelectedIndex(2);
 257  0
         else jComboBoxUnit.setSelectedIndex(0);
 258  0
     }
 259  
 
 260  
     //extract exec or tail command (handle label)
 261  
     private String extractExecTailCmd(String params) {
 262  
         String ret;
 263  0
         String[] tmp = params.split("(?<!\\\\)" + separator);
 264  0
         String labelString = null;
 265  0
         for (String aTmp : tmp) {
 266  0
             if (aTmp.startsWith("label=")) {
 267  0
                 labelString = aTmp;
 268  
             }
 269  
         }
 270  
 
 271  0
         if (labelString != null) {
 272  0
             if (params.startsWith(labelString)) {
 273  0
                 ret = params.substring(labelString.length() + separator.length());
 274  
             } else {
 275  0
                 ret = params.substring(0, params.indexOf(labelString) - separator.length());
 276  
             }
 277  
         } else {
 278  0
             ret = params;
 279  
         }
 280  
 
 281  0
         return ret;
 282  
     }
 283  
 
 284  
     private void initFields() {
 285  1
         String existing = parent.getText();
 286  
 
 287  
         //for split, avoid ':' preceeded with '\', ie do not process "\:"
 288  1
         String[] elements = existing.split("(?<!\\\\)" + separator);
 289  1
         checkProcessScope(existing, elements);
 290  1
         checkCPUCore(elements);
 291  1
         checkFilesystem(elements);
 292  1
         checkNetInterface(elements);
 293  1
         checkJMX(elements);
 294  
 
 295  
         //set metric selected, exec or tail command
 296  1
         if (METRIC_EXEC.equals(type)) {
 297  0
             jTextFieldExec.setText(extractExecTailCmd(existing));
 298  
 
 299  
             //hide stretch panel as stretch is done with text area
 300  0
             jPanelStretch.setVisible(false);
 301  1
         } else if (METRIC_TAIL.equals(type)) {
 302  0
             jTextFieldTail.setText(extractExecTailCmd(existing));
 303  
         } else {
 304  5
             for (String element : elements) {
 305  4
                 initMetricRadios(element);
 306  
             }
 307  
         }
 308  
 
 309  
         //set label
 310  1
         int i = 0;
 311  3
         while (i < elements.length) {
 312  3
             if (elements[i].startsWith("label=")) {
 313  1
                 jTextFieldMetricLabel.setText(elements[i].substring(6));
 314  1
                 break;
 315  
             }
 316  2
             i++;
 317  
         }
 318  
 
 319  
         //set unit
 320  1
         i = 0;
 321  5
         while (i < elements.length) {
 322  4
             if (elements[i].startsWith("unit=")) {
 323  0
                 setUnit(elements[i].substring(5));
 324  0
                 break;
 325  
             }
 326  4
             i++;
 327  
         }
 328  1
     }
 329  
 
 330  
     private void checkNetInterface(String[] elements) {
 331  
         //check network interface filter
 332  1
         if (METRIC_NETIO.equals(type)) {
 333  0
             int i = 0;
 334  0
             while (i < elements.length) {
 335  0
                 if (elements[i].startsWith("iface=")) {
 336  0
                     jTextFieldNetInterface.setText(elements[i].substring(6));
 337  0
                     break;
 338  
                 }
 339  0
                 i++;
 340  
             }
 341  
         }
 342  1
     }
 343  
 
 344  
     private void checkFilesystem(String[] elements) {
 345  
         //check filesystem filter
 346  1
         if (METRIC_DISKIO.equals(type)) {
 347  0
             int i = 0;
 348  0
             while (i < elements.length) {
 349  0
                 if (elements[i].startsWith("fs=")) {
 350  0
                     jTextFieldFileSystem.setText(elements[i].substring(3));
 351  0
                     break;
 352  
                 }
 353  0
                 i++;
 354  
             }
 355  
         }
 356  1
     }
 357  
 
 358  
     private void checkJMX(String[] elements) {
 359  
         //check jmx
 360  1
         if (METRIC_JMX.equals(type)) {
 361  0
             int i = 0;
 362  0
             while (i < elements.length) {
 363  0
                 if (elements[i].startsWith("url=")) {
 364  0
                     String[] tmp = elements[i].substring(4).split("\\\\:");
 365  0
                     jTextFieldJmxHost.setText(tmp[0]);
 366  0
                     if (tmp.length > 1) {
 367  0
                         jTextFieldJmxPort.setText(tmp[1]);
 368  
                     }
 369  
                 }
 370  0
                 if (elements[i].startsWith("user=")) {
 371  0
                     jTextFieldJmxUser.setText(elements[i].substring(5));
 372  
                 }
 373  0
                 if (elements[i].startsWith("password=")) {
 374  0
                     jTextFieldJmxPassword.setText(elements[i].substring(9));
 375  
                 }
 376  0
                 i++;
 377  
             }
 378  
         }
 379  1
     }
 380  
 
 381  
     private void checkCPUCore(String[] elements) {
 382  
         //check cpu core
 383  1
         if (METRIC_CPU.equals(type)) {
 384  1
             int i = 0;
 385  1
             while (i < elements.length) {
 386  1
                 if (elements[i].startsWith("core=")) {
 387  1
                     jRadioCustomCpuCore.setSelected(true);
 388  1
                     String[] tmp = elements[i].split("=");
 389  1
                     if (tmp.length > 1) {
 390  1
                         jTextFieldCoreIndex.setText(tmp[1]);
 391  
                     } else {
 392  0
                         jTextFieldCoreIndex.setText("0");
 393  
                     }
 394  0
                     break;
 395  
                 }
 396  0
                 i++;
 397  
             }
 398  
         }
 399  1
     }
 400  
 
 401  
     private void checkProcessScope(String existing, String[] elements) {
 402  
         //check process scope
 403  1
         if (METRIC_CPU.equals(type) || METRIC_MEM.equals(type)) {
 404  1
             if (existing.contains("pid=")
 405  0
                     || existing.contains("name=")
 406  0
                     || existing.contains("ptql=")) {
 407  1
                 jRadioScopePerProcess.setSelected(true);
 408  1
                 showProcessScopePanels();
 409  
             }
 410  1
             int i = 0;
 411  2
             while (i < elements.length) {
 412  2
                 if (elements[i].startsWith("pid=")) {
 413  1
                     jRadioPID.setSelected(true);
 414  1
                     jTextFieldPID.setText(elements[i].substring(4));
 415  1
                     break;
 416  1
                 } else if (elements[i].startsWith("name=")) {
 417  0
                     String[] tmp = elements[i].split("#");
 418  0
                     jRadioProcessName.setSelected(true);
 419  0
                     jTextFieldPorcessName.setText(tmp[0].substring(5));
 420  0
                     if (tmp.length == 2) jTextFieldOccurence.setText(tmp[1]);
 421  
                     break;
 422  1
                 } else if (elements[i].startsWith("ptql=")) {
 423  0
                     jRadioPtql.setSelected(true);
 424  0
                     jTextFieldPtql.setText(elements[i].substring(5));
 425  0
                     break;
 426  
                 }
 427  1
                 i++;
 428  
             }
 429  
         }
 430  1
     }
 431  
 
 432  
     private void initMetricRadios(String metricName) {
 433  4
         Enumeration<AbstractButton> enu = buttonGroupMetrics.getElements();
 434  44
         while (enu.hasMoreElements()) {
 435  40
             JRadioButton radio = (JRadioButton) enu.nextElement();
 436  40
             if (metricName.equals(radio.getActionCommand())) {
 437  1
                 radio.setSelected(true);
 438  1
                 enableUnit(metricName);
 439  
             }
 440  40
         }
 441  4
     }
 442  
 
 443  
     private void makePtqlLink() {
 444  1
         jLabelPtqlHelp.setForeground(Color.blue);
 445  1
         jLabelPtqlHelp.setFont(jLabelPtqlHelp.getFont().deriveFont(Font.PLAIN));
 446  1
         jLabelPtqlHelp.setCursor(new Cursor(Cursor.HAND_CURSOR));
 447  1
         jLabelPtqlHelp.addMouseListener(new MouseAdapter() {
 448  
 
 449  
             @Override
 450  
             public void mouseClicked(MouseEvent e) {
 451  0
                 if ((e.getModifiers() & InputEvent.BUTTON1_MASK) == InputEvent.BUTTON1_MASK) {
 452  0
                     JMeterPluginsUtils.openInBrowser("http://support.hyperic.com/display/SIGAR/PTQL");
 453  
                 }
 454  0
             }
 455  
         });
 456  1
         Border border = BorderFactory.createMatteBorder(0, 0, 1, 0, java.awt.Color.blue);
 457  1
         jLabelPtqlHelp.setBorder(border);
 458  1
     }
 459  
 
 460  
     private void initRules() {
 461  1
         rules.put(METRIC_CPU, OPTION_PRIMARY_METRIC | OPTION_ADDITIONAL_METRIC | OPTION_PROCESS_SCOPE | OPTION_CPU_CORE_SCOPE);
 462  1
         rules.put(METRIC_MEM, OPTION_PRIMARY_METRIC | OPTION_ADDITIONAL_METRIC | OPTION_PROCESS_SCOPE | OPTION_UNIT);
 463  1
         rules.put(METRIC_SWAP, OPTION_PRIMARY_METRIC | OPTION_UNIT);
 464  1
         rules.put(METRIC_DISKIO, OPTION_PRIMARY_METRIC | OPTION_ADDITIONAL_METRIC | OPTION_FILESYSTEM_SCOPE | OPTION_UNIT);
 465  1
         rules.put(METRIC_NETIO, OPTION_PRIMARY_METRIC | OPTION_ADDITIONAL_METRIC | OPTION_NET_INTERFACE_SCOPE | OPTION_UNIT);
 466  1
         rules.put(METRIC_TCP, OPTION_PRIMARY_METRIC | OPTION_ADDITIONAL_METRIC);
 467  1
         rules.put(METRIC_EXEC, OPTION_EXEC);
 468  1
         rules.put(METRIC_TAIL, OPTION_TAIL);
 469  1
         rules.put(METRIC_JMX, OPTION_PRIMARY_METRIC | OPTION_JMX | OPTION_UNIT);
 470  1
     }
 471  
 
 472  
     private void fillMetrics(String[] metrics, JPanel panel) {
 473  6
         if (metrics != null) {
 474  5
             MetricActionListener listener = new MetricActionListener();
 475  27
             for (int i = 0; i < metrics.length / 2; i++) {
 476  22
                 JRadioButton radio = new JRadioButton(metrics[2 * i]);
 477  22
                 String action = metrics[2 * i];
 478  22
                 if (action.endsWith(defaultMarker)) {
 479  3
                     action = action.substring(0, action.length() - defaultMarker.length());
 480  
                 }
 481  22
                 radio.setActionCommand(action);
 482  22
                 radio.setToolTipText(metrics[2 * i + 1]);
 483  22
                 radio.addActionListener(listener);
 484  22
                 buttonGroupMetrics.add(radio);
 485  22
                 panel.add(radio);
 486  
             }
 487  5
         } else {
 488  1
             panel.add(new JLabel(" None..."));
 489  
         }
 490  6
     }
 491  
 
 492  
     private void initMetrics(String metricType) {
 493  
         //init params
 494  1
         String[] primaryMetrics = null;
 495  1
         String[] additionalMetrics = null;
 496  1
         if (type.equals(METRIC_CPU)) {
 497  1
             primaryMetrics = cpuMetricsPrimary;
 498  1
             additionalMetrics = cpuMetricsAdditional;
 499  0
         } else if (type.equals(METRIC_MEM)) {
 500  0
             primaryMetrics = memMetricsPrimary;
 501  0
             additionalMetrics = memMetricsAdditional;
 502  0
         } else if (type.equals(METRIC_DISKIO)) {
 503  0
             primaryMetrics = diskIOMetricsPrimary;
 504  0
             additionalMetrics = diskIOMetricsAdditional;
 505  0
         } else if (type.equals(METRIC_NETIO)) {
 506  0
             primaryMetrics = netIOMetricsPrimary;
 507  0
             additionalMetrics = netIOMetricsAdditional;
 508  0
         } else if (type.equals(METRIC_TCP)) {
 509  0
             primaryMetrics = tcpMetricsPrimary;
 510  0
             additionalMetrics = tcpMetricsAdditional;
 511  0
         } else if (type.equals(METRIC_SWAP)) {
 512  0
             primaryMetrics = swapMetricsPrimary;
 513  0
             additionalMetrics = null;
 514  0
         } else if (type.equals(METRIC_JMX)) {
 515  0
             primaryMetrics = jmxMetricsPrimary;
 516  0
             additionalMetrics = null;
 517  
         }
 518  
 
 519  
         //show/hide relevent panels
 520  1
         if (rules.containsKey(metricType)) {
 521  
             //handle metric layouts, 2 collumn if one panel only
 522  1
             if ((rules.get(metricType) & OPTION_PRIMARY_METRIC) != 0
 523  1
                     && (rules.get(metricType) & OPTION_ADDITIONAL_METRIC) == 0) {
 524  0
                 jPanelPrimaryMetrics.setLayout(new java.awt.GridLayout(0, 2));
 525  
             } else {
 526  1
                 jPanelPrimaryMetrics.setLayout(new java.awt.GridLayout(0, 1));
 527  
             }
 528  
 
 529  1
             jPanelScope.setVisible((rules.get(metricType) & OPTION_PROCESS_SCOPE) != 0);
 530  1
             jPanelPID.setVisible((rules.get(metricType) & OPTION_PROCESS_SCOPE) != 0);
 531  1
             if ((rules.get(metricType) & OPTION_PRIMARY_METRIC) != 0) {
 532  1
                 fillMetrics(primaryMetrics, jPanelPrimaryMetrics);
 533  
             } else {
 534  0
                 jPanelPrimaryMetrics.setVisible(false);
 535  
             }
 536  1
             if ((rules.get(metricType) & OPTION_ADDITIONAL_METRIC) != 0) {
 537  1
                 fillMetrics(additionalMetrics, jPanelAdditionaMetrics);
 538  
             } else {
 539  0
                 jPanelAdditionaMetrics.setVisible(false);
 540  
             }
 541  1
             jPanelCustomCommand.setVisible((rules.get(metricType) & OPTION_EXEC) != 0);
 542  1
             jPanelCpuCore.setVisible((rules.get(metricType) & OPTION_CPU_CORE_SCOPE) != 0);
 543  1
             jPanelTailCommand.setVisible((rules.get(metricType) & OPTION_TAIL) != 0);
 544  1
             jPanelFileSystem.setVisible((rules.get(metricType) & OPTION_FILESYSTEM_SCOPE) != 0);
 545  1
             jPanelNetInterface.setVisible((rules.get(metricType) & OPTION_NET_INTERFACE_SCOPE) != 0);
 546  1
             jPanelJmxParams.setVisible((rules.get(metricType) & OPTION_JMX) != 0);
 547  1
             jPanelUnit.setVisible((rules.get(metricType) & OPTION_UNIT) != 0);
 548  
         }
 549  1
     }
 550  
 
 551  
     private String getProcessScopeString() {
 552  0
         String ret = "";
 553  0
         if (jRadioScopePerProcess.isSelected()) {
 554  0
             if (buttonGroupPID.getSelection() != null) {
 555  0
                 String tmp = buttonGroupPID.getSelection().getActionCommand();
 556  0
                 if ("pid".equals(tmp)) {
 557  0
                     ret += "pid=" + jTextFieldPID.getText().trim();
 558  0
                 } else if ("name".equals(tmp)) {
 559  0
                     String name = jTextFieldPorcessName.getText().trim();
 560  0
                     if (name.length() == 0) {
 561  0
                         name = "unknown";
 562  
                     }
 563  0
                     ret += "name=" + name + "#" + jTextFieldOccurence.getText().trim();
 564  0
                 } else if ("ptql".equals(tmp)) {
 565  0
                     String query = jTextFieldPtql.getText().trim();
 566  0
                     if (query.length() == 0) {
 567  0
                         query = "query";
 568  
                     }
 569  0
                     ret += "ptql=" + query;
 570  
                 }
 571  0
             } else {
 572  0
                 ret += "pid=0";
 573  
             }
 574  
         }
 575  0
         return ret;
 576  
     }
 577  
 
 578  
     private String getJmxParamsString() {
 579  0
         StringBuilder ret = new StringBuilder("");
 580  
 
 581  0
         String host = jTextFieldJmxHost.getText().trim();
 582  0
         String port = jTextFieldJmxPort.getText().trim();
 583  
 
 584  0
         if (!port.isEmpty() && host.isEmpty()) {
 585  0
             host = "localhost";
 586  
         }
 587  
 
 588  0
         String user = jTextFieldJmxUser.getText().trim();
 589  0
         String password = jTextFieldJmxPassword.getText().trim();
 590  
 
 591  0
         if (host.length() > 0) {
 592  0
             String url = "url=" + host;
 593  0
             if (!port.isEmpty()) {
 594  0
                 url = url + "\\:" + port;
 595  
             }
 596  0
             addStringItem(ret, url);
 597  
         }
 598  
 
 599  0
         if (user.length() != 0 && password.length() != 0) {
 600  0
             addStringItem(ret, "user=" + user);
 601  0
             addStringItem(ret, "password=" + password);
 602  
         }
 603  
 
 604  0
         return ret.toString();
 605  
     }
 606  
 
 607  
     private void addStringItem(StringBuilder buf, String item) {
 608  0
         if (item != null && item.length() > 0) {
 609  0
             if (buf.length() > 0) buf.append(separator);
 610  0
             buf.append(item);
 611  
         }
 612  0
     }
 613  
 
 614  
     private String getParamsString() {
 615  0
         StringBuilder ret = new StringBuilder("");
 616  
         String tmp;
 617  
 
 618  
         //special preprocessing
 619  0
         if (type.equals(METRIC_CPU)) {
 620  0
             if (buttonGroupCpuCores.getSelection() != null) {
 621  0
                 tmp = buttonGroupCpuCores.getSelection().getActionCommand();
 622  0
                 if ("index".equals(tmp)) {
 623  0
                     addStringItem(ret, "core=" + jTextFieldCoreIndex.getText().trim());
 624  
                 }
 625  
             }
 626  0
             addStringItem(ret, getProcessScopeString());
 627  0
         } else if (type.equals(METRIC_MEM)) {
 628  0
             addStringItem(ret, getProcessScopeString());
 629  0
         } else if (type.equals(METRIC_NETIO)) {
 630  0
             tmp = jTextFieldNetInterface.getText();
 631  0
             if (tmp.trim().length() > 0) {
 632  0
                 addStringItem(ret, "iface=" + tmp.trim());
 633  
             }
 634  0
         } else if (type.equals(METRIC_TCP)) {
 635  0
         } else if (type.equals(METRIC_SWAP)) {
 636  0
         } else if (type.equals(METRIC_JMX)) {
 637  0
             addStringItem(ret, getJmxParamsString());
 638  
         }
 639  
 
 640  
         //add the metric label
 641  0
         tmp = jTextFieldMetricLabel.getText();
 642  0
         if (tmp.trim().length() > 0) {
 643  0
             addStringItem(ret, "label=" + tmp.trim());
 644  
         }
 645  
 
 646  
         //add the metric unit
 647  0
         if (buttonGroupMetrics.getSelection() != null) {
 648  0
             if (isUnitRelevent(buttonGroupMetrics.getSelection().getActionCommand())) {
 649  0
                 String unit = getUnit();
 650  0
                 if (!"b".equalsIgnoreCase(unit)) {
 651  0
                     addStringItem(ret, "unit=" + getUnit());
 652  
                 }
 653  
             }
 654  
         }
 655  
 
 656  0
         if (type.equals(METRIC_EXEC)) {
 657  0
             addStringItem(ret, jTextFieldExec.getText().trim());
 658  0
         } else if (type.equals(METRIC_TAIL)) {
 659  0
             addStringItem(ret, jTextFieldTail.getText().trim());
 660  
         }
 661  
 
 662  
         //add the metric
 663  0
         if (buttonGroupMetrics.getSelection() != null) {
 664  0
             addStringItem(ret, buttonGroupMetrics.getSelection().getActionCommand());
 665  
         }
 666  
 
 667  
         //add filesystem at the end to avoid issue with win filesystem ending with \ which
 668  
         //would produce "\:" otherwise
 669  
 
 670  0
         if (type.equals(METRIC_DISKIO)) {
 671  0
             tmp = jTextFieldFileSystem.getText();
 672  0
             if (tmp.trim().length() > 0) {
 673  0
                 addStringItem(ret, "fs=" + tmp.trim());
 674  
             }
 675  
         }
 676  
 
 677  0
         return ret.toString();
 678  
     }
 679  
 
 680  
     /**
 681  
      * This method is called from within the constructor to
 682  
      * initialize the form.
 683  
      * WARNING: Do NOT modify this code. The content of this method is
 684  
      * always regenerated by the Form Editor.
 685  
      */
 686  
     @SuppressWarnings("unchecked")
 687  
     // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
 688  
     private void initComponents() {
 689  
         java.awt.GridBagConstraints gridBagConstraints;
 690  
 
 691  1
         buttonGroupPID = new javax.swing.ButtonGroup();
 692  1
         buttonGroupMetrics = new javax.swing.ButtonGroup();
 693  1
         buttonGroupCpuCores = new javax.swing.ButtonGroup();
 694  1
         buttonGroupScope = new javax.swing.ButtonGroup();
 695  1
         jPanelPID = new javax.swing.JPanel();
 696  1
         jRadioPID = new javax.swing.JRadioButton();
 697  1
         jTextFieldPID = new javax.swing.JTextField();
 698  1
         jRadioProcessName = new javax.swing.JRadioButton();
 699  1
         jTextFieldPorcessName = new javax.swing.JTextField();
 700  1
         jLabelOccurence = new javax.swing.JLabel();
 701  1
         jTextFieldOccurence = new javax.swing.JTextField();
 702  1
         jRadioPtql = new javax.swing.JRadioButton();
 703  1
         jTextFieldPtql = new javax.swing.JTextField();
 704  1
         jLabel2 = new javax.swing.JLabel();
 705  1
         jLabelPtqlHelp = new javax.swing.JLabel();
 706  1
         jPanelButtons = new javax.swing.JPanel();
 707  1
         jButtonApply = new javax.swing.JButton();
 708  1
         jButtonCancel = new javax.swing.JButton();
 709  1
         jPanelPrimaryMetrics = new javax.swing.JPanel();
 710  1
         jPanelAdditionaMetrics = new javax.swing.JPanel();
 711  1
         jPanelCustomCommand = new javax.swing.JPanel();
 712  1
         jLabelExec = new javax.swing.JLabel();
 713  1
         jTextFieldExec = new javax.swing.JTextField();
 714  1
         jLabel1 = new javax.swing.JLabel();
 715  1
         jScrollPane1 = new javax.swing.JScrollPane();
 716  1
         jTextAreaExecHelp = new javax.swing.JTextArea();
 717  1
         jPanelCpuCore = new javax.swing.JPanel();
 718  1
         jRadioCpuAllCores = new javax.swing.JRadioButton();
 719  1
         jRadioCustomCpuCore = new javax.swing.JRadioButton();
 720  1
         jTextFieldCoreIndex = new javax.swing.JTextField();
 721  1
         jPanelScope = new javax.swing.JPanel();
 722  1
         jRadioScopeAll = new javax.swing.JRadioButton();
 723  1
         jRadioScopePerProcess = new javax.swing.JRadioButton();
 724  1
         jPanelTailCommand = new javax.swing.JPanel();
 725  1
         jLabelTail = new javax.swing.JLabel();
 726  1
         jTextFieldTail = new javax.swing.JTextField();
 727  1
         jPanelFileSystem = new javax.swing.JPanel();
 728  1
         jLabelFileSystem = new javax.swing.JLabel();
 729  1
         jTextFieldFileSystem = new javax.swing.JTextField();
 730  1
         jPanelNetInterface = new javax.swing.JPanel();
 731  1
         jLabelNetInterface = new javax.swing.JLabel();
 732  1
         jTextFieldNetInterface = new javax.swing.JTextField();
 733  1
         jPanelMetricLabel = new javax.swing.JPanel();
 734  1
         jLabelMetricLabel = new javax.swing.JLabel();
 735  1
         jTextFieldMetricLabel = new javax.swing.JTextField();
 736  1
         jPanelStretch = new javax.swing.JPanel();
 737  1
         jPanelJmxParams = new javax.swing.JPanel();
 738  1
         jLabel3 = new javax.swing.JLabel();
 739  1
         jTextFieldJmxHost = new javax.swing.JTextField();
 740  1
         jLabel4 = new javax.swing.JLabel();
 741  1
         jTextFieldJmxPort = new javax.swing.JTextField();
 742  1
         jLabel5 = new javax.swing.JLabel();
 743  1
         jTextFieldJmxUser = new javax.swing.JTextField();
 744  1
         jLabel6 = new javax.swing.JLabel();
 745  1
         jTextFieldJmxPassword = new javax.swing.JTextField();
 746  1
         jLabel7 = new javax.swing.JLabel();
 747  1
         jPanelUnit = new javax.swing.JPanel();
 748  1
         jLabelUnit = new javax.swing.JLabel();
 749  1
         jComboBoxUnit = new javax.swing.JComboBox();
 750  
 
 751  1
         setLayout(new java.awt.GridBagLayout());
 752  
 
 753  1
         jPanelPID.setBorder(javax.swing.BorderFactory.createTitledBorder("Process Identification"));
 754  1
         jPanelPID.setLayout(new java.awt.GridBagLayout());
 755  
 
 756  1
         buttonGroupPID.add(jRadioPID);
 757  1
         jRadioPID.setText("Process ID");
 758  1
         jRadioPID.setActionCommand("pid");
 759  1
         gridBagConstraints = new java.awt.GridBagConstraints();
 760  1
         gridBagConstraints.gridx = 0;
 761  1
         gridBagConstraints.gridy = 1;
 762  1
         gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
 763  1
         jPanelPID.add(jRadioPID, gridBagConstraints);
 764  
 
 765  1
         jTextFieldPID.setMinimumSize(new java.awt.Dimension(60, 20));
 766  1
         jTextFieldPID.setPreferredSize(new java.awt.Dimension(60, 20));
 767  1
         gridBagConstraints = new java.awt.GridBagConstraints();
 768  1
         gridBagConstraints.gridx = 1;
 769  1
         gridBagConstraints.gridy = 1;
 770  1
         jPanelPID.add(jTextFieldPID, gridBagConstraints);
 771  
 
 772  1
         buttonGroupPID.add(jRadioProcessName);
 773  1
         jRadioProcessName.setText("Process Name");
 774  1
         jRadioProcessName.setActionCommand("name");
 775  1
         gridBagConstraints = new java.awt.GridBagConstraints();
 776  1
         gridBagConstraints.gridx = 0;
 777  1
         gridBagConstraints.gridy = 2;
 778  1
         gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
 779  1
         jPanelPID.add(jRadioProcessName, gridBagConstraints);
 780  
 
 781  1
         jTextFieldPorcessName.setMinimumSize(new java.awt.Dimension(60, 20));
 782  1
         jTextFieldPorcessName.setPreferredSize(new java.awt.Dimension(60, 20));
 783  1
         gridBagConstraints = new java.awt.GridBagConstraints();
 784  1
         gridBagConstraints.gridx = 1;
 785  1
         gridBagConstraints.gridy = 2;
 786  1
         jPanelPID.add(jTextFieldPorcessName, gridBagConstraints);
 787  
 
 788  1
         jLabelOccurence.setText(", occurence: ");
 789  1
         gridBagConstraints = new java.awt.GridBagConstraints();
 790  1
         gridBagConstraints.gridx = 2;
 791  1
         gridBagConstraints.gridy = 2;
 792  1
         jPanelPID.add(jLabelOccurence, gridBagConstraints);
 793  
 
 794  1
         jTextFieldOccurence.setMinimumSize(new java.awt.Dimension(60, 20));
 795  1
         jTextFieldOccurence.setPreferredSize(new java.awt.Dimension(60, 20));
 796  1
         gridBagConstraints = new java.awt.GridBagConstraints();
 797  1
         gridBagConstraints.gridx = 3;
 798  1
         gridBagConstraints.gridy = 2;
 799  1
         gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
 800  1
         gridBagConstraints.weightx = 1.0;
 801  1
         jPanelPID.add(jTextFieldOccurence, gridBagConstraints);
 802  
 
 803  1
         buttonGroupPID.add(jRadioPtql);
 804  1
         jRadioPtql.setText("PTQL Query");
 805  1
         jRadioPtql.setActionCommand("ptql");
 806  1
         gridBagConstraints = new java.awt.GridBagConstraints();
 807  1
         gridBagConstraints.gridx = 0;
 808  1
         gridBagConstraints.gridy = 3;
 809  1
         gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
 810  1
         jPanelPID.add(jRadioPtql, gridBagConstraints);
 811  1
         gridBagConstraints = new java.awt.GridBagConstraints();
 812  1
         gridBagConstraints.gridx = 1;
 813  1
         gridBagConstraints.gridy = 3;
 814  1
         gridBagConstraints.gridwidth = 4;
 815  1
         gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
 816  1
         jPanelPID.add(jTextFieldPtql, gridBagConstraints);
 817  
 
 818  1
         jLabel2.setIcon(new javax.swing.ImageIcon(getClass().getResource("/kg/apc/jmeter/vizualizers/information.png"))); // NOI18N
 819  1
         gridBagConstraints = new java.awt.GridBagConstraints();
 820  1
         gridBagConstraints.gridx = 5;
 821  1
         gridBagConstraints.gridy = 3;
 822  1
         gridBagConstraints.insets = new java.awt.Insets(0, 3, 0, 3);
 823  1
         jPanelPID.add(jLabel2, gridBagConstraints);
 824  
 
 825  1
         jLabelPtqlHelp.setText("Help");
 826  1
         gridBagConstraints = new java.awt.GridBagConstraints();
 827  1
         gridBagConstraints.gridx = 6;
 828  1
         gridBagConstraints.gridy = 3;
 829  1
         jPanelPID.add(jLabelPtqlHelp, gridBagConstraints);
 830  
 
 831  1
         gridBagConstraints = new java.awt.GridBagConstraints();
 832  1
         gridBagConstraints.gridx = 0;
 833  1
         gridBagConstraints.gridy = 3;
 834  1
         gridBagConstraints.gridwidth = 2;
 835  1
         gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
 836  1
         add(jPanelPID, gridBagConstraints);
 837  
 
 838  1
         jButtonApply.setIcon(new javax.swing.ImageIcon(getClass().getResource("/kg/apc/jmeter/vizualizers/tick.png"))); // NOI18N
 839  1
         jButtonApply.setText("Apply");
 840  1
         jButtonApply.addActionListener(new java.awt.event.ActionListener() {
 841  
             public void actionPerformed(java.awt.event.ActionEvent evt) {
 842  0
                 jButtonApplyActionPerformed(evt);
 843  0
             }
 844  
         });
 845  1
         jPanelButtons.add(jButtonApply);
 846  
 
 847  1
         jButtonCancel.setIcon(new javax.swing.ImageIcon(getClass().getResource("/kg/apc/jmeter/vizualizers/cross.png"))); // NOI18N
 848  1
         jButtonCancel.setText("Cancel");
 849  1
         jButtonCancel.addActionListener(new java.awt.event.ActionListener() {
 850  
             public void actionPerformed(java.awt.event.ActionEvent evt) {
 851  0
                 jButtonCancelActionPerformed(evt);
 852  0
             }
 853  
         });
 854  1
         jPanelButtons.add(jButtonCancel);
 855  
 
 856  1
         gridBagConstraints = new java.awt.GridBagConstraints();
 857  1
         gridBagConstraints.gridx = 0;
 858  1
         gridBagConstraints.gridy = 13;
 859  1
         gridBagConstraints.gridwidth = 2;
 860  1
         gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
 861  1
         gridBagConstraints.insets = new java.awt.Insets(15, 0, 0, 0);
 862  1
         add(jPanelButtons, gridBagConstraints);
 863  
 
 864  1
         jPanelPrimaryMetrics.setBorder(javax.swing.BorderFactory.createTitledBorder("Primary Metrics"));
 865  1
         jPanelPrimaryMetrics.setLayout(new java.awt.GridLayout(0, 1));
 866  1
         gridBagConstraints = new java.awt.GridBagConstraints();
 867  1
         gridBagConstraints.gridx = 0;
 868  1
         gridBagConstraints.gridy = 2;
 869  1
         gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
 870  1
         gridBagConstraints.weightx = 1.0;
 871  1
         add(jPanelPrimaryMetrics, gridBagConstraints);
 872  
 
 873  1
         jPanelAdditionaMetrics.setBorder(javax.swing.BorderFactory.createTitledBorder("Additional Metrics"));
 874  1
         jPanelAdditionaMetrics.setLayout(new java.awt.GridLayout(0, 2));
 875  1
         gridBagConstraints = new java.awt.GridBagConstraints();
 876  1
         gridBagConstraints.gridx = 1;
 877  1
         gridBagConstraints.gridy = 2;
 878  1
         gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
 879  1
         gridBagConstraints.weightx = 1.0;
 880  1
         add(jPanelAdditionaMetrics, gridBagConstraints);
 881  
 
 882  1
         jPanelCustomCommand.setBorder(javax.swing.BorderFactory.createTitledBorder("Custom Exec Command"));
 883  1
         jPanelCustomCommand.setLayout(new java.awt.GridBagLayout());
 884  
 
 885  1
         jLabelExec.setText("Command to run:");
 886  1
         gridBagConstraints = new java.awt.GridBagConstraints();
 887  1
         gridBagConstraints.gridx = 0;
 888  1
         gridBagConstraints.gridy = 0;
 889  1
         gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
 890  1
         jPanelCustomCommand.add(jLabelExec, gridBagConstraints);
 891  1
         gridBagConstraints = new java.awt.GridBagConstraints();
 892  1
         gridBagConstraints.gridx = 0;
 893  1
         gridBagConstraints.gridy = 1;
 894  1
         gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
 895  1
         gridBagConstraints.weightx = 1.0;
 896  1
         gridBagConstraints.insets = new java.awt.Insets(2, 0, 0, 0);
 897  1
         jPanelCustomCommand.add(jTextFieldExec, gridBagConstraints);
 898  
 
 899  1
         jLabel1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/kg/apc/jmeter/vizualizers/information.png"))); // NOI18N
 900  1
         jLabel1.setText("Quick help:");
 901  1
         gridBagConstraints = new java.awt.GridBagConstraints();
 902  1
         gridBagConstraints.gridx = 0;
 903  1
         gridBagConstraints.gridy = 2;
 904  1
         gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
 905  1
         gridBagConstraints.insets = new java.awt.Insets(5, 0, 5, 0);
 906  1
         jPanelCustomCommand.add(jLabel1, gridBagConstraints);
 907  
 
 908  1
         jTextAreaExecHelp.setColumns(20);
 909  1
         jTextAreaExecHelp.setEditable(false);
 910  1
         jTextAreaExecHelp.setLineWrap(true);
 911  1
         jTextAreaExecHelp.setRows(15);
 912  1
         jTextAreaExecHelp.setText("This metric type interprets parameter string as path to process to start and arguments to pass to the process. Parameters separated with colon.\nThe process must print out to standard output single line containing single numeric metric value.\n\nExample1: Monitoring Linux cached memory size, used free utility output:\n/bin/sh:-c:free | grep Mem | awk '{print $7}'\n\nExample2: Monitoring MySQL select query count:\n/bin/sh:-c:echo \"show global status like 'Com_select'\" | mysql -u root | awk '$1 ==\"Com_select\" {print $2}'");
 913  1
         jTextAreaExecHelp.setWrapStyleWord(true);
 914  1
         jTextAreaExecHelp.setOpaque(false);
 915  1
         jScrollPane1.setViewportView(jTextAreaExecHelp);
 916  
 
 917  1
         gridBagConstraints = new java.awt.GridBagConstraints();
 918  1
         gridBagConstraints.gridx = 0;
 919  1
         gridBagConstraints.gridy = 3;
 920  1
         gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
 921  1
         gridBagConstraints.weighty = 1.0;
 922  1
         jPanelCustomCommand.add(jScrollPane1, gridBagConstraints);
 923  
 
 924  1
         gridBagConstraints = new java.awt.GridBagConstraints();
 925  1
         gridBagConstraints.gridx = 0;
 926  1
         gridBagConstraints.gridy = 5;
 927  1
         gridBagConstraints.gridwidth = 2;
 928  1
         gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
 929  1
         gridBagConstraints.weightx = 1.0;
 930  1
         gridBagConstraints.weighty = 1.0;
 931  1
         add(jPanelCustomCommand, gridBagConstraints);
 932  
 
 933  1
         jPanelCpuCore.setBorder(javax.swing.BorderFactory.createTitledBorder("CPU Cores"));
 934  1
         jPanelCpuCore.setLayout(new java.awt.GridBagLayout());
 935  
 
 936  1
         buttonGroupCpuCores.add(jRadioCpuAllCores);
 937  1
         jRadioCpuAllCores.setSelected(true);
 938  1
         jRadioCpuAllCores.setText("All Cores (default)");
 939  1
         jRadioCpuAllCores.setActionCommand("all");
 940  1
         gridBagConstraints = new java.awt.GridBagConstraints();
 941  1
         gridBagConstraints.gridx = 0;
 942  1
         gridBagConstraints.gridy = 0;
 943  1
         gridBagConstraints.gridwidth = 2;
 944  1
         gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
 945  1
         gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
 946  1
         jPanelCpuCore.add(jRadioCpuAllCores, gridBagConstraints);
 947  
 
 948  1
         buttonGroupCpuCores.add(jRadioCustomCpuCore);
 949  1
         jRadioCustomCpuCore.setText("Custom CPU Index (0 based)");
 950  1
         jRadioCustomCpuCore.setActionCommand("index");
 951  1
         gridBagConstraints = new java.awt.GridBagConstraints();
 952  1
         gridBagConstraints.gridx = 0;
 953  1
         gridBagConstraints.gridy = 1;
 954  1
         gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
 955  1
         jPanelCpuCore.add(jRadioCustomCpuCore, gridBagConstraints);
 956  
 
 957  1
         jTextFieldCoreIndex.setMinimumSize(new java.awt.Dimension(60, 20));
 958  1
         jTextFieldCoreIndex.setPreferredSize(new java.awt.Dimension(60, 20));
 959  1
         gridBagConstraints = new java.awt.GridBagConstraints();
 960  1
         gridBagConstraints.gridx = 1;
 961  1
         gridBagConstraints.gridy = 1;
 962  1
         gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
 963  1
         gridBagConstraints.weightx = 1.0;
 964  1
         jPanelCpuCore.add(jTextFieldCoreIndex, gridBagConstraints);
 965  
 
 966  1
         gridBagConstraints = new java.awt.GridBagConstraints();
 967  1
         gridBagConstraints.gridx = 0;
 968  1
         gridBagConstraints.gridy = 4;
 969  1
         gridBagConstraints.gridwidth = 2;
 970  1
         gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
 971  1
         add(jPanelCpuCore, gridBagConstraints);
 972  
 
 973  1
         jPanelScope.setBorder(javax.swing.BorderFactory.createTitledBorder("Scope"));
 974  1
         jPanelScope.setLayout(new java.awt.GridLayout(0, 1));
 975  
 
 976  1
         buttonGroupScope.add(jRadioScopeAll);
 977  1
         jRadioScopeAll.setSelected(true);
 978  1
         jRadioScopeAll.setText("All");
 979  1
         jRadioScopeAll.setActionCommand("all");
 980  1
         jRadioScopeAll.addActionListener(new java.awt.event.ActionListener() {
 981  
             public void actionPerformed(java.awt.event.ActionEvent evt) {
 982  0
                 jRadioScopeAllActionPerformed(evt);
 983  0
             }
 984  
         });
 985  1
         jPanelScope.add(jRadioScopeAll);
 986  
 
 987  1
         buttonGroupScope.add(jRadioScopePerProcess);
 988  1
         jRadioScopePerProcess.setText("Per Process");
 989  1
         jRadioScopePerProcess.setActionCommand("process");
 990  1
         jRadioScopePerProcess.addActionListener(new java.awt.event.ActionListener() {
 991  
             public void actionPerformed(java.awt.event.ActionEvent evt) {
 992  0
                 jRadioScopePerProcessActionPerformed(evt);
 993  0
             }
 994  
         });
 995  1
         jPanelScope.add(jRadioScopePerProcess);
 996  
 
 997  1
         gridBagConstraints = new java.awt.GridBagConstraints();
 998  1
         gridBagConstraints.gridwidth = 2;
 999  1
         gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
 1000  1
         add(jPanelScope, gridBagConstraints);
 1001  
 
 1002  1
         jPanelTailCommand.setBorder(javax.swing.BorderFactory.createTitledBorder("Custom Tail Command"));
 1003  1
         jPanelTailCommand.setLayout(new java.awt.GridBagLayout());
 1004  
 
 1005  1
         jLabelTail.setText("Path of the file to tail:");
 1006  1
         gridBagConstraints = new java.awt.GridBagConstraints();
 1007  1
         gridBagConstraints.gridx = 0;
 1008  1
         gridBagConstraints.gridy = 0;
 1009  1
         gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
 1010  1
         jPanelTailCommand.add(jLabelTail, gridBagConstraints);
 1011  1
         gridBagConstraints = new java.awt.GridBagConstraints();
 1012  1
         gridBagConstraints.gridx = 0;
 1013  1
         gridBagConstraints.gridy = 1;
 1014  1
         gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
 1015  1
         gridBagConstraints.weightx = 1.0;
 1016  1
         gridBagConstraints.insets = new java.awt.Insets(2, 0, 0, 0);
 1017  1
         jPanelTailCommand.add(jTextFieldTail, gridBagConstraints);
 1018  
 
 1019  1
         gridBagConstraints = new java.awt.GridBagConstraints();
 1020  1
         gridBagConstraints.gridx = 0;
 1021  1
         gridBagConstraints.gridy = 6;
 1022  1
         gridBagConstraints.gridwidth = 2;
 1023  1
         gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
 1024  1
         gridBagConstraints.weightx = 1.0;
 1025  1
         add(jPanelTailCommand, gridBagConstraints);
 1026  
 
 1027  1
         jPanelFileSystem.setBorder(javax.swing.BorderFactory.createTitledBorder("Filesystem Filter"));
 1028  1
         jPanelFileSystem.setLayout(new java.awt.GridBagLayout());
 1029  
 
 1030  1
         jLabelFileSystem.setText("Filesystem to monitor (if empty: all), eg \"C\\:\\\" or \"/home\":");
 1031  1
         gridBagConstraints = new java.awt.GridBagConstraints();
 1032  1
         gridBagConstraints.gridx = 0;
 1033  1
         gridBagConstraints.gridy = 0;
 1034  1
         gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
 1035  1
         jPanelFileSystem.add(jLabelFileSystem, gridBagConstraints);
 1036  1
         gridBagConstraints = new java.awt.GridBagConstraints();
 1037  1
         gridBagConstraints.gridx = 0;
 1038  1
         gridBagConstraints.gridy = 1;
 1039  1
         gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
 1040  1
         gridBagConstraints.weightx = 1.0;
 1041  1
         gridBagConstraints.insets = new java.awt.Insets(2, 0, 0, 0);
 1042  1
         jPanelFileSystem.add(jTextFieldFileSystem, gridBagConstraints);
 1043  
 
 1044  1
         gridBagConstraints = new java.awt.GridBagConstraints();
 1045  1
         gridBagConstraints.gridx = 0;
 1046  1
         gridBagConstraints.gridy = 7;
 1047  1
         gridBagConstraints.gridwidth = 2;
 1048  1
         gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
 1049  1
         gridBagConstraints.weightx = 1.0;
 1050  1
         add(jPanelFileSystem, gridBagConstraints);
 1051  
 
 1052  1
         jPanelNetInterface.setBorder(javax.swing.BorderFactory.createTitledBorder("Network Interface Filter"));
 1053  1
         jPanelNetInterface.setLayout(new java.awt.GridBagLayout());
 1054  
 
 1055  1
         jLabelNetInterface.setText("Network interface to monitor (if empty: all), eg \"eth0\":");
 1056  1
         gridBagConstraints = new java.awt.GridBagConstraints();
 1057  1
         gridBagConstraints.gridx = 0;
 1058  1
         gridBagConstraints.gridy = 0;
 1059  1
         gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
 1060  1
         jPanelNetInterface.add(jLabelNetInterface, gridBagConstraints);
 1061  1
         gridBagConstraints = new java.awt.GridBagConstraints();
 1062  1
         gridBagConstraints.gridx = 0;
 1063  1
         gridBagConstraints.gridy = 1;
 1064  1
         gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
 1065  1
         gridBagConstraints.weightx = 1.0;
 1066  1
         gridBagConstraints.insets = new java.awt.Insets(2, 0, 0, 0);
 1067  1
         jPanelNetInterface.add(jTextFieldNetInterface, gridBagConstraints);
 1068  
 
 1069  1
         gridBagConstraints = new java.awt.GridBagConstraints();
 1070  1
         gridBagConstraints.gridx = 0;
 1071  1
         gridBagConstraints.gridy = 8;
 1072  1
         gridBagConstraints.gridwidth = 2;
 1073  1
         gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
 1074  1
         gridBagConstraints.weightx = 1.0;
 1075  1
         add(jPanelNetInterface, gridBagConstraints);
 1076  
 
 1077  1
         jPanelMetricLabel.setBorder(javax.swing.BorderFactory.createTitledBorder("Metric Label"));
 1078  1
         jPanelMetricLabel.setLayout(new java.awt.GridBagLayout());
 1079  
 
 1080  1
         jLabelMetricLabel.setText("Chart label name (if empty, will be 'Metric parameter' value):");
 1081  1
         gridBagConstraints = new java.awt.GridBagConstraints();
 1082  1
         gridBagConstraints.gridx = 0;
 1083  1
         gridBagConstraints.gridy = 0;
 1084  1
         gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
 1085  1
         jPanelMetricLabel.add(jLabelMetricLabel, gridBagConstraints);
 1086  1
         gridBagConstraints = new java.awt.GridBagConstraints();
 1087  1
         gridBagConstraints.gridx = 0;
 1088  1
         gridBagConstraints.gridy = 1;
 1089  1
         gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
 1090  1
         gridBagConstraints.weightx = 1.0;
 1091  1
         gridBagConstraints.insets = new java.awt.Insets(2, 0, 0, 0);
 1092  1
         jPanelMetricLabel.add(jTextFieldMetricLabel, gridBagConstraints);
 1093  
 
 1094  1
         gridBagConstraints = new java.awt.GridBagConstraints();
 1095  1
         gridBagConstraints.gridx = 0;
 1096  1
         gridBagConstraints.gridy = 11;
 1097  1
         gridBagConstraints.gridwidth = 2;
 1098  1
         gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
 1099  1
         add(jPanelMetricLabel, gridBagConstraints);
 1100  
 
 1101  1
         jPanelStretch.setMinimumSize(new java.awt.Dimension(0, 0));
 1102  1
         jPanelStretch.setPreferredSize(new java.awt.Dimension(0, 0));
 1103  1
         gridBagConstraints = new java.awt.GridBagConstraints();
 1104  1
         gridBagConstraints.gridx = 0;
 1105  1
         gridBagConstraints.gridy = 12;
 1106  1
         gridBagConstraints.gridwidth = 2;
 1107  1
         gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
 1108  1
         gridBagConstraints.weighty = 1.0;
 1109  1
         add(jPanelStretch, gridBagConstraints);
 1110  
 
 1111  1
         jPanelJmxParams.setBorder(javax.swing.BorderFactory.createTitledBorder("JMX Connection Parameters"));
 1112  1
         jPanelJmxParams.setLayout(new java.awt.GridBagLayout());
 1113  
 
 1114  1
         jLabel3.setText("Host:");
 1115  1
         gridBagConstraints = new java.awt.GridBagConstraints();
 1116  1
         gridBagConstraints.gridx = 0;
 1117  1
         gridBagConstraints.gridy = 1;
 1118  1
         gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
 1119  1
         jPanelJmxParams.add(jLabel3, gridBagConstraints);
 1120  
 
 1121  1
         jTextFieldJmxHost.setPreferredSize(new java.awt.Dimension(60, 20));
 1122  1
         gridBagConstraints = new java.awt.GridBagConstraints();
 1123  1
         gridBagConstraints.gridx = 1;
 1124  1
         gridBagConstraints.gridy = 1;
 1125  1
         gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
 1126  1
         gridBagConstraints.weightx = 1.0;
 1127  1
         gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2);
 1128  1
         jPanelJmxParams.add(jTextFieldJmxHost, gridBagConstraints);
 1129  
 
 1130  1
         jLabel4.setText("Port:");
 1131  1
         gridBagConstraints = new java.awt.GridBagConstraints();
 1132  1
         gridBagConstraints.gridx = 2;
 1133  1
         gridBagConstraints.gridy = 1;
 1134  1
         gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
 1135  1
         jPanelJmxParams.add(jLabel4, gridBagConstraints);
 1136  
 
 1137  1
         jTextFieldJmxPort.setPreferredSize(new java.awt.Dimension(60, 20));
 1138  1
         gridBagConstraints = new java.awt.GridBagConstraints();
 1139  1
         gridBagConstraints.gridx = 3;
 1140  1
         gridBagConstraints.gridy = 1;
 1141  1
         gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
 1142  1
         gridBagConstraints.weightx = 1.0;
 1143  1
         gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2);
 1144  1
         jPanelJmxParams.add(jTextFieldJmxPort, gridBagConstraints);
 1145  
 
 1146  1
         jLabel5.setText("User:");
 1147  1
         gridBagConstraints = new java.awt.GridBagConstraints();
 1148  1
         gridBagConstraints.gridx = 0;
 1149  1
         gridBagConstraints.gridy = 2;
 1150  1
         gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
 1151  1
         jPanelJmxParams.add(jLabel5, gridBagConstraints);
 1152  
 
 1153  1
         jTextFieldJmxUser.setPreferredSize(new java.awt.Dimension(60, 20));
 1154  1
         gridBagConstraints = new java.awt.GridBagConstraints();
 1155  1
         gridBagConstraints.gridx = 1;
 1156  1
         gridBagConstraints.gridy = 2;
 1157  1
         gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
 1158  1
         gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2);
 1159  1
         jPanelJmxParams.add(jTextFieldJmxUser, gridBagConstraints);
 1160  
 
 1161  1
         jLabel6.setText("Password:");
 1162  1
         gridBagConstraints = new java.awt.GridBagConstraints();
 1163  1
         gridBagConstraints.gridx = 2;
 1164  1
         gridBagConstraints.gridy = 2;
 1165  1
         gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
 1166  1
         jPanelJmxParams.add(jLabel6, gridBagConstraints);
 1167  
 
 1168  1
         jTextFieldJmxPassword.setPreferredSize(new java.awt.Dimension(60, 20));
 1169  1
         gridBagConstraints = new java.awt.GridBagConstraints();
 1170  1
         gridBagConstraints.gridx = 3;
 1171  1
         gridBagConstraints.gridy = 2;
 1172  1
         gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
 1173  1
         gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2);
 1174  1
         jPanelJmxParams.add(jTextFieldJmxPassword, gridBagConstraints);
 1175  
 
 1176  1
         jLabel7.setIcon(new javax.swing.ImageIcon(getClass().getResource("/kg/apc/jmeter/vizualizers/information.png"))); // NOI18N
 1177  1
         jLabel7.setText("If no host/port specified, local to agent on port 4711");
 1178  1
         gridBagConstraints = new java.awt.GridBagConstraints();
 1179  1
         gridBagConstraints.gridx = 0;
 1180  1
         gridBagConstraints.gridy = 3;
 1181  1
         gridBagConstraints.gridwidth = 4;
 1182  1
         gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
 1183  1
         gridBagConstraints.insets = new java.awt.Insets(4, 0, 2, 0);
 1184  1
         jPanelJmxParams.add(jLabel7, gridBagConstraints);
 1185  
 
 1186  1
         gridBagConstraints = new java.awt.GridBagConstraints();
 1187  1
         gridBagConstraints.gridx = 0;
 1188  1
         gridBagConstraints.gridy = 9;
 1189  1
         gridBagConstraints.gridwidth = 2;
 1190  1
         gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
 1191  1
         add(jPanelJmxParams, gridBagConstraints);
 1192  
 
 1193  1
         jPanelUnit.setBorder(javax.swing.BorderFactory.createTitledBorder("Metric Unit"));
 1194  1
         jPanelUnit.setLayout(new java.awt.GridBagLayout());
 1195  
 
 1196  1
         jLabelUnit.setText("Retrieve metric from agent in:");
 1197  1
         jLabelUnit.setEnabled(false);
 1198  1
         gridBagConstraints = new java.awt.GridBagConstraints();
 1199  1
         gridBagConstraints.gridx = 0;
 1200  1
         gridBagConstraints.gridy = 0;
 1201  1
         gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
 1202  1
         gridBagConstraints.insets = new java.awt.Insets(0, 2, 2, 2);
 1203  1
         jPanelUnit.add(jLabelUnit, gridBagConstraints);
 1204  
 
 1205  1
         jComboBoxUnit.setModel(new javax.swing.DefaultComboBoxModel(new String[]{"Bytes (b)", "Kilobytes (Kb)", "Megabytes (Mb)"}));
 1206  1
         jComboBoxUnit.setEnabled(false);
 1207  1
         jComboBoxUnit.setMaximumSize(new java.awt.Dimension(32767, 20));
 1208  1
         jComboBoxUnit.setPreferredSize(new java.awt.Dimension(130, 20));
 1209  1
         gridBagConstraints = new java.awt.GridBagConstraints();
 1210  1
         gridBagConstraints.gridx = 1;
 1211  1
         gridBagConstraints.gridy = 0;
 1212  1
         gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
 1213  1
         gridBagConstraints.weightx = 1.0;
 1214  1
         gridBagConstraints.insets = new java.awt.Insets(0, 2, 2, 2);
 1215  1
         jPanelUnit.add(jComboBoxUnit, gridBagConstraints);
 1216  
 
 1217  1
         gridBagConstraints = new java.awt.GridBagConstraints();
 1218  1
         gridBagConstraints.gridx = 0;
 1219  1
         gridBagConstraints.gridy = 10;
 1220  1
         gridBagConstraints.gridwidth = 2;
 1221  1
         gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
 1222  1
         add(jPanelUnit, gridBagConstraints);
 1223  1
     }// </editor-fold>//GEN-END:initComponents
 1224  
 
 1225  
     private void jButtonCancelActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonCancelActionPerformed
 1226  0
         getAssociatedDialog().dispose();
 1227  0
     }//GEN-LAST:event_jButtonCancelActionPerformed
 1228  
 
 1229  
     private void jButtonApplyActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonApplyActionPerformed
 1230  0
         parent.setText(getParamsString());
 1231  0
         getAssociatedDialog().dispose();
 1232  0
     }//GEN-LAST:event_jButtonApplyActionPerformed
 1233  
 
 1234  
     private void showProcessScopePanels() {
 1235  2
         if (rules.containsKey(type) && (rules.get(type) & OPTION_PROCESS_SCOPE) != 0) {
 1236  2
             jPanelPID.setVisible(jRadioScopePerProcess.isSelected());
 1237  2
             jPanelPrimaryMetrics.removeAll();
 1238  2
             jPanelAdditionaMetrics.removeAll();
 1239  2
             Enumeration<AbstractButton> enu = buttonGroupMetrics.getElements();
 1240  14
             while (enu.hasMoreElements()) {
 1241  12
                 buttonGroupMetrics.remove(enu.nextElement());
 1242  
             }
 1243  2
             String[] primaryMetrics = null;
 1244  2
             String[] additionalMetrics = null;
 1245  
 
 1246  2
             if (jRadioScopePerProcess.isSelected()) {
 1247  1
                 if (type.equals(METRIC_CPU)) {
 1248  1
                     primaryMetrics = cpuProcessMetricsPrimary;
 1249  0
                 } else if (type.equals(METRIC_MEM)) {
 1250  0
                     primaryMetrics = memProcessMetricsPrimary;
 1251  0
                     additionalMetrics = memProcessMetricsAdditional;
 1252  
                 }
 1253  
             } else {
 1254  1
                 if (type.equals(METRIC_CPU)) {
 1255  1
                     primaryMetrics = cpuMetricsPrimary;
 1256  1
                     additionalMetrics = cpuMetricsAdditional;
 1257  0
                 } else if (type.equals(METRIC_MEM)) {
 1258  0
                     primaryMetrics = memMetricsPrimary;
 1259  0
                     additionalMetrics = memMetricsAdditional;
 1260  
                 }
 1261  
             }
 1262  
 
 1263  2
             fillMetrics(primaryMetrics, jPanelPrimaryMetrics);
 1264  2
             fillMetrics(additionalMetrics, jPanelAdditionaMetrics);
 1265  
 
 1266  2
             jLabelUnit.setEnabled(false);
 1267  2
             jComboBoxUnit.setEnabled(false);
 1268  
         }
 1269  2
         repack();
 1270  2
     }
 1271  
 
 1272  
     private void jRadioScopeAllActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jRadioScopeAllActionPerformed
 1273  0
         showProcessScopePanels();
 1274  0
     }//GEN-LAST:event_jRadioScopeAllActionPerformed
 1275  
 
 1276  
     private void jRadioScopePerProcessActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jRadioScopePerProcessActionPerformed
 1277  0
         showProcessScopePanels();
 1278  0
     }//GEN-LAST:event_jRadioScopePerProcessActionPerformed
 1279  
 
 1280  10
     private class MetricActionListener implements java.awt.event.ActionListener {
 1281  
         @Override
 1282  
         public void actionPerformed(ActionEvent e) {
 1283  0
             JPerfmonParamsPanel.this.enableUnit(e.getActionCommand());
 1284  0
         }
 1285  
     }
 1286  
 
 1287  
     // Variables declaration - do not modify//GEN-BEGIN:variables
 1288  
     private javax.swing.ButtonGroup buttonGroupCpuCores;
 1289  
     private javax.swing.ButtonGroup buttonGroupMetrics;
 1290  
     private javax.swing.ButtonGroup buttonGroupPID;
 1291  
     private javax.swing.ButtonGroup buttonGroupScope;
 1292  
     private javax.swing.JButton jButtonApply;
 1293  
     private javax.swing.JButton jButtonCancel;
 1294  
     private javax.swing.JComboBox jComboBoxUnit;
 1295  
     private javax.swing.JLabel jLabel1;
 1296  
     private javax.swing.JLabel jLabel2;
 1297  
     private javax.swing.JLabel jLabel3;
 1298  
     private javax.swing.JLabel jLabel4;
 1299  
     private javax.swing.JLabel jLabel5;
 1300  
     private javax.swing.JLabel jLabel6;
 1301  
     private javax.swing.JLabel jLabel7;
 1302  
     private javax.swing.JLabel jLabelExec;
 1303  
     private javax.swing.JLabel jLabelFileSystem;
 1304  
     private javax.swing.JLabel jLabelMetricLabel;
 1305  
     private javax.swing.JLabel jLabelNetInterface;
 1306  
     private javax.swing.JLabel jLabelOccurence;
 1307  
     private javax.swing.JLabel jLabelPtqlHelp;
 1308  
     private javax.swing.JLabel jLabelTail;
 1309  
     private javax.swing.JLabel jLabelUnit;
 1310  
     private javax.swing.JPanel jPanelAdditionaMetrics;
 1311  
     private javax.swing.JPanel jPanelButtons;
 1312  
     private javax.swing.JPanel jPanelCpuCore;
 1313  
     private javax.swing.JPanel jPanelCustomCommand;
 1314  
     private javax.swing.JPanel jPanelFileSystem;
 1315  
     private javax.swing.JPanel jPanelJmxParams;
 1316  
     private javax.swing.JPanel jPanelMetricLabel;
 1317  
     private javax.swing.JPanel jPanelNetInterface;
 1318  
     private javax.swing.JPanel jPanelPID;
 1319  
     private javax.swing.JPanel jPanelPrimaryMetrics;
 1320  
     private javax.swing.JPanel jPanelScope;
 1321  
     private javax.swing.JPanel jPanelStretch;
 1322  
     private javax.swing.JPanel jPanelTailCommand;
 1323  
     private javax.swing.JPanel jPanelUnit;
 1324  
     private javax.swing.JRadioButton jRadioCpuAllCores;
 1325  
     private javax.swing.JRadioButton jRadioCustomCpuCore;
 1326  
     private javax.swing.JRadioButton jRadioPID;
 1327  
     private javax.swing.JRadioButton jRadioProcessName;
 1328  
     private javax.swing.JRadioButton jRadioPtql;
 1329  
     private javax.swing.JRadioButton jRadioScopeAll;
 1330  
     private javax.swing.JRadioButton jRadioScopePerProcess;
 1331  
     private javax.swing.JScrollPane jScrollPane1;
 1332  
     private javax.swing.JTextArea jTextAreaExecHelp;
 1333  
     private javax.swing.JTextField jTextFieldCoreIndex;
 1334  
     private javax.swing.JTextField jTextFieldExec;
 1335  
     private javax.swing.JTextField jTextFieldFileSystem;
 1336  
     private javax.swing.JTextField jTextFieldJmxHost;
 1337  
     private javax.swing.JTextField jTextFieldJmxPassword;
 1338  
     private javax.swing.JTextField jTextFieldJmxPort;
 1339  
     private javax.swing.JTextField jTextFieldJmxUser;
 1340  
     private javax.swing.JTextField jTextFieldMetricLabel;
 1341  
     private javax.swing.JTextField jTextFieldNetInterface;
 1342  
     private javax.swing.JTextField jTextFieldOccurence;
 1343  
     private javax.swing.JTextField jTextFieldPID;
 1344  
     private javax.swing.JTextField jTextFieldPorcessName;
 1345  
     private javax.swing.JTextField jTextFieldPtql;
 1346  
     private javax.swing.JTextField jTextFieldTail;
 1347  
     // End of variables declaration//GEN-END:variables
 1348  
 }