MOA 12.03
Real Time Analytics for Data Streams
|
00001 /* 00002 * ClusteringVisualTab.java 00003 * Copyright (C) 2010 RWTH Aachen University, Germany 00004 * @author Jansen ([email protected]) 00005 * 00006 * This program is free software; you can redistribute it and/or modify 00007 * it under the terms of the GNU General Public License as published by 00008 * the Free Software Foundation; either version 3 of the License, or 00009 * (at your option) any later version. 00010 * 00011 * This program is distributed in the hope that it will be useful, 00012 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00013 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00014 * GNU General Public License for more details. 00015 * 00016 * You should have received a copy of the GNU General Public License 00017 * along with this program. If not, see <http://www.gnu.org/licenses/>. 00018 * 00019 */ 00020 00021 package moa.gui.clustertab; 00022 00023 import java.awt.Dimension; 00024 import java.awt.event.ActionEvent; 00025 import java.awt.event.ActionListener; 00026 import java.io.File; 00027 import javax.swing.JButton; 00028 import javax.swing.JComboBox; 00029 import javax.swing.JFileChooser; 00030 import javax.swing.ToolTipManager; 00031 import moa.gui.FileExtensionFilter; 00032 import moa.gui.visualization.GraphCanvas; 00033 import moa.gui.visualization.RunVisualizer; 00034 import moa.gui.visualization.StreamPanel; 00035 00036 public class ClusteringVisualTab extends javax.swing.JPanel implements ActionListener{ 00037 private RunVisualizer visualizer = null; 00038 private Thread visualizerThread = null; 00039 private Boolean running = false; 00040 private ClusteringSetupTab clusteringSetupTab = null; 00041 private String exportFile; 00042 private String screenshotFilebase; 00043 00045 public ClusteringVisualTab() { 00046 resetComponents(); 00047 } 00048 00049 private void resetComponents(){ 00050 initComponents(); 00051 comboY.setSelectedIndex(1); 00052 graphCanvas.setViewport(graphScrollPanel.getViewport()); 00053 00054 //TODO this needs to only affect the visual Panel 00055 ToolTipManager.sharedInstance().setDismissDelay(20000); 00056 ToolTipManager.sharedInstance().setInitialDelay(100); 00057 } 00058 00059 public void setClusteringSetupTab(ClusteringSetupTab clusteringSetupTab){ 00060 this.clusteringSetupTab = clusteringSetupTab; 00061 } 00062 00063 00064 private void createVisualiterThread(){ 00065 visualizer = new RunVisualizer(this, clusteringSetupTab); 00066 visualizerThread = new Thread(visualizer); 00067 } 00068 00069 public void setDimensionComobBoxes(int numDimensions){ 00070 String[] dimensions = new String[numDimensions]; 00071 for (int i = 0; i < dimensions.length; i++) { 00072 dimensions[i] = "Dim "+(i+1); 00073 00074 } 00075 comboX.setModel(new javax.swing.DefaultComboBoxModel(dimensions)); 00076 comboY.setModel(new javax.swing.DefaultComboBoxModel(dimensions)); 00077 comboY.setSelectedIndex(1); 00078 } 00079 00080 public StreamPanel getLeftStreamPanel(){ 00081 return streamPanel0; 00082 } 00083 00084 public StreamPanel getRightStreamPanel(){ 00085 return streamPanel1; 00086 } 00087 00088 public GraphCanvas getGraphCanvas(){ 00089 return graphCanvas; 00090 } 00091 00092 public ClusteringVisualEvalPanel getEvalPanel(){ 00093 return clusteringVisualEvalPanel1; 00094 } 00095 00096 public boolean isEnabledDrawPoints(){ 00097 return checkboxDrawPoints.isSelected(); 00098 } 00099 00100 public boolean isEnabledDrawGroundTruth(){ 00101 return checkboxDrawGT.isSelected(); 00102 } 00103 00104 public boolean isEnabledDrawMicroclustering(){ 00105 return checkboxDrawMicro.isSelected(); 00106 } 00107 public boolean isEnabledDrawClustering(){ 00108 return checkboxDrawClustering.isSelected(); 00109 } 00110 00111 public void setProcessedPointsCounter(int value){ 00112 label_processed_points_value.setText(Integer.toString(value)); 00113 } 00114 00115 public int getPauseInterval(){ 00116 return Integer.parseInt(numPauseAfterPoints.getText()); 00117 } 00118 00119 public void setPauseInterval(int pause){ 00120 numPauseAfterPoints.setText(Integer.toString(pause)); 00121 } 00122 00123 @Override 00124 public void repaint() { 00125 if(splitVisual!=null) 00126 splitVisual.setDividerLocation(splitVisual.getWidth()/2); 00127 super.repaint(); 00128 } 00129 00130 public void toggleVisualizer(boolean internal){ 00131 if(visualizer == null) 00132 createVisualiterThread(); 00133 00134 if(!visualizerThread.isAlive()){ 00135 visualizerThread.start(); 00136 00137 } 00138 //pause 00139 if(running){ 00140 running = false; 00141 visualizer.pause(); 00142 buttonRun.setText("Resume"); 00143 } 00144 else{ 00145 running = true; 00146 visualizer.resume(); 00147 buttonRun.setText("Pause"); 00148 } 00149 if(internal) 00150 clusteringSetupTab.toggleRunMode(); 00151 } 00152 00153 public void stopVisualizer(){ 00154 visualizer.stop(); 00155 running = false; 00156 visualizer = null; 00157 visualizerThread = null; 00158 removeAll(); 00159 resetComponents(); 00160 } 00161 00162 00168 @SuppressWarnings("unchecked") 00169 // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents 00170 private void initComponents() { 00171 java.awt.GridBagConstraints gridBagConstraints; 00172 00173 jSplitPane1 = new javax.swing.JSplitPane(); 00174 topWrapper = new javax.swing.JPanel(); 00175 panelVisualWrapper = new javax.swing.JPanel(); 00176 splitVisual = new javax.swing.JSplitPane(); 00177 scrollPane1 = new javax.swing.JScrollPane(); 00178 streamPanel1 = new moa.gui.visualization.StreamPanel(); 00179 scrollPane0 = new javax.swing.JScrollPane(); 00180 streamPanel0 = new moa.gui.visualization.StreamPanel(); 00181 panelControl = new javax.swing.JPanel(); 00182 buttonRun = new javax.swing.JButton(); 00183 buttonStop = new javax.swing.JButton(); 00184 buttonScreenshot = new javax.swing.JButton(); 00185 speedSlider = new javax.swing.JSlider(); 00186 jLabel1 = new javax.swing.JLabel(); 00187 comboX = new javax.swing.JComboBox(); 00188 labelX = new javax.swing.JLabel(); 00189 comboY = new javax.swing.JComboBox(); 00190 labelY = new javax.swing.JLabel(); 00191 checkboxDrawPoints = new javax.swing.JCheckBox(); 00192 checkboxDrawGT = new javax.swing.JCheckBox(); 00193 checkboxDrawMicro = new javax.swing.JCheckBox(); 00194 checkboxDrawClustering = new javax.swing.JCheckBox(); 00195 label_processed_points = new javax.swing.JLabel(); 00196 label_processed_points_value = new javax.swing.JLabel(); 00197 labelNumPause = new javax.swing.JLabel(); 00198 numPauseAfterPoints = new javax.swing.JTextField(); 00199 panelEvalOutput = new javax.swing.JPanel(); 00200 clusteringVisualEvalPanel1 = new moa.gui.clustertab.ClusteringVisualEvalPanel(); 00201 graphPanel = new javax.swing.JPanel(); 00202 graphPanelControlTop = new javax.swing.JPanel(); 00203 buttonZoomInY = new javax.swing.JButton(); 00204 buttonZoomOutY = new javax.swing.JButton(); 00205 labelEvents = new javax.swing.JLabel(); 00206 graphScrollPanel = new javax.swing.JScrollPane(); 00207 graphCanvas = new moa.gui.visualization.GraphCanvas(); 00208 graphPanelControlBottom = new javax.swing.JPanel(); 00209 buttonZoomInX = new javax.swing.JButton(); 00210 buttonZoomOutX = new javax.swing.JButton(); 00211 00212 setLayout(new java.awt.GridBagLayout()); 00213 00214 jSplitPane1.setDividerLocation(400); 00215 jSplitPane1.setOrientation(javax.swing.JSplitPane.VERTICAL_SPLIT); 00216 00217 topWrapper.setPreferredSize(new java.awt.Dimension(688, 500)); 00218 topWrapper.setLayout(new java.awt.GridBagLayout()); 00219 00220 panelVisualWrapper.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.RAISED)); 00221 panelVisualWrapper.setLayout(new java.awt.BorderLayout()); 00222 00223 splitVisual.setDividerLocation(403); 00224 splitVisual.setResizeWeight(1.0); 00225 00226 streamPanel1.setPreferredSize(new java.awt.Dimension(400, 250)); 00227 00228 javax.swing.GroupLayout streamPanel1Layout = new javax.swing.GroupLayout(streamPanel1); 00229 streamPanel1.setLayout(streamPanel1Layout); 00230 streamPanel1Layout.setHorizontalGroup( 00231 streamPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 00232 .addGap(0, 428, Short.MAX_VALUE) 00233 ); 00234 streamPanel1Layout.setVerticalGroup( 00235 streamPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 00236 .addGap(0, 339, Short.MAX_VALUE) 00237 ); 00238 00239 scrollPane1.setViewportView(streamPanel1); 00240 00241 splitVisual.setRightComponent(scrollPane1); 00242 00243 scrollPane0.addMouseWheelListener(new java.awt.event.MouseWheelListener() { 00244 public void mouseWheelMoved(java.awt.event.MouseWheelEvent evt) { 00245 scrollPane0MouseWheelMoved(evt); 00246 } 00247 }); 00248 00249 streamPanel0.setPreferredSize(new java.awt.Dimension(400, 250)); 00250 00251 javax.swing.GroupLayout streamPanel0Layout = new javax.swing.GroupLayout(streamPanel0); 00252 streamPanel0.setLayout(streamPanel0Layout); 00253 streamPanel0Layout.setHorizontalGroup( 00254 streamPanel0Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 00255 .addGap(0, 400, Short.MAX_VALUE) 00256 ); 00257 streamPanel0Layout.setVerticalGroup( 00258 streamPanel0Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 00259 .addGap(0, 339, Short.MAX_VALUE) 00260 ); 00261 00262 scrollPane0.setViewportView(streamPanel0); 00263 00264 splitVisual.setLeftComponent(scrollPane0); 00265 00266 panelVisualWrapper.add(splitVisual, java.awt.BorderLayout.CENTER); 00267 00268 gridBagConstraints = new java.awt.GridBagConstraints(); 00269 gridBagConstraints.gridx = 0; 00270 gridBagConstraints.gridy = 1; 00271 gridBagConstraints.gridheight = java.awt.GridBagConstraints.RELATIVE; 00272 gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; 00273 gridBagConstraints.ipadx = 400; 00274 gridBagConstraints.ipady = 200; 00275 gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; 00276 gridBagConstraints.weightx = 1.0; 00277 gridBagConstraints.weighty = 1.0; 00278 topWrapper.add(panelVisualWrapper, gridBagConstraints); 00279 00280 panelControl.setMinimumSize(new java.awt.Dimension(600, 52)); 00281 panelControl.setPreferredSize(new java.awt.Dimension(600, 52)); 00282 panelControl.setLayout(new java.awt.GridBagLayout()); 00283 00284 buttonRun.setText("Start"); 00285 buttonRun.setPreferredSize(new java.awt.Dimension(90, 23)); 00286 buttonRun.addMouseListener(new java.awt.event.MouseAdapter() { 00287 public void mouseClicked(java.awt.event.MouseEvent evt) { 00288 buttonRunMouseClicked(evt); 00289 } 00290 }); 00291 buttonRun.addActionListener(new java.awt.event.ActionListener() { 00292 public void actionPerformed(java.awt.event.ActionEvent evt) { 00293 buttonRunActionPerformed(evt); 00294 } 00295 }); 00296 gridBagConstraints = new java.awt.GridBagConstraints(); 00297 gridBagConstraints.gridx = 0; 00298 gridBagConstraints.gridy = 0; 00299 gridBagConstraints.insets = new java.awt.Insets(3, 5, 1, 5); 00300 panelControl.add(buttonRun, gridBagConstraints); 00301 00302 buttonStop.setText("Stop"); 00303 buttonStop.setPreferredSize(new java.awt.Dimension(90, 23)); 00304 buttonStop.addActionListener(new java.awt.event.ActionListener() { 00305 public void actionPerformed(java.awt.event.ActionEvent evt) { 00306 buttonStopActionPerformed(evt); 00307 } 00308 }); 00309 gridBagConstraints = new java.awt.GridBagConstraints(); 00310 gridBagConstraints.gridx = 0; 00311 gridBagConstraints.gridy = 1; 00312 gridBagConstraints.insets = new java.awt.Insets(1, 5, 1, 5); 00313 panelControl.add(buttonStop, gridBagConstraints); 00314 00315 buttonScreenshot.setText("Screenshot"); 00316 buttonScreenshot.setPreferredSize(new java.awt.Dimension(90, 23)); 00317 buttonScreenshot.addMouseListener(new java.awt.event.MouseAdapter() { 00318 public void mouseClicked(java.awt.event.MouseEvent evt) { 00319 buttonScreenshotMouseClicked(evt); 00320 } 00321 }); 00322 gridBagConstraints = new java.awt.GridBagConstraints(); 00323 gridBagConstraints.gridx = 1; 00324 gridBagConstraints.gridy = 0; 00325 gridBagConstraints.insets = new java.awt.Insets(3, 5, 1, 5); 00326 panelControl.add(buttonScreenshot, gridBagConstraints); 00327 00328 speedSlider.setValue(100); 00329 speedSlider.setBorder(javax.swing.BorderFactory.createTitledBorder("Visualisation Speed")); 00330 speedSlider.setPreferredSize(new java.awt.Dimension(120, 48)); 00331 speedSlider.addMouseMotionListener(new java.awt.event.MouseMotionAdapter() { 00332 public void mouseDragged(java.awt.event.MouseEvent evt) { 00333 speedSliderMouseDragged(evt); 00334 } 00335 }); 00336 gridBagConstraints = new java.awt.GridBagConstraints(); 00337 gridBagConstraints.gridx = 6; 00338 gridBagConstraints.gridy = 0; 00339 gridBagConstraints.gridheight = 2; 00340 gridBagConstraints.insets = new java.awt.Insets(0, 16, 1, 5); 00341 panelControl.add(speedSlider, gridBagConstraints); 00342 gridBagConstraints = new java.awt.GridBagConstraints(); 00343 gridBagConstraints.gridx = 9; 00344 gridBagConstraints.gridy = 0; 00345 gridBagConstraints.gridheight = 2; 00346 gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; 00347 gridBagConstraints.weightx = 1.0; 00348 panelControl.add(jLabel1, gridBagConstraints); 00349 00350 comboX.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Dim 1", "Dim 2", "Dim 3", "Dim 4" })); 00351 comboX.addActionListener(new java.awt.event.ActionListener() { 00352 public void actionPerformed(java.awt.event.ActionEvent evt) { 00353 comboXActionPerformed(evt); 00354 } 00355 }); 00356 gridBagConstraints = new java.awt.GridBagConstraints(); 00357 gridBagConstraints.gridx = 3; 00358 gridBagConstraints.gridy = 0; 00359 gridBagConstraints.insets = new java.awt.Insets(0, 4, 0, 4); 00360 panelControl.add(comboX, gridBagConstraints); 00361 00362 labelX.setText("X"); 00363 gridBagConstraints = new java.awt.GridBagConstraints(); 00364 gridBagConstraints.gridx = 2; 00365 gridBagConstraints.gridy = 0; 00366 gridBagConstraints.insets = new java.awt.Insets(0, 14, 0, 5); 00367 panelControl.add(labelX, gridBagConstraints); 00368 00369 comboY.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Dim 1", "Dim 2", "Dim 3", "Dim 4" })); 00370 comboY.addActionListener(new java.awt.event.ActionListener() { 00371 public void actionPerformed(java.awt.event.ActionEvent evt) { 00372 comboYActionPerformed(evt); 00373 } 00374 }); 00375 gridBagConstraints = new java.awt.GridBagConstraints(); 00376 gridBagConstraints.gridx = 3; 00377 gridBagConstraints.gridy = 1; 00378 gridBagConstraints.insets = new java.awt.Insets(0, 4, 0, 4); 00379 panelControl.add(comboY, gridBagConstraints); 00380 00381 labelY.setText("Y"); 00382 gridBagConstraints = new java.awt.GridBagConstraints(); 00383 gridBagConstraints.gridx = 2; 00384 gridBagConstraints.gridy = 1; 00385 gridBagConstraints.insets = new java.awt.Insets(0, 14, 0, 5); 00386 panelControl.add(labelY, gridBagConstraints); 00387 00388 checkboxDrawPoints.setSelected(true); 00389 checkboxDrawPoints.setText("Points"); 00390 checkboxDrawPoints.setMargin(new java.awt.Insets(0, 0, 0, 0)); 00391 checkboxDrawPoints.addActionListener(new java.awt.event.ActionListener() { 00392 public void actionPerformed(java.awt.event.ActionEvent evt) { 00393 checkboxDrawPointsActionPerformed(evt); 00394 } 00395 }); 00396 gridBagConstraints = new java.awt.GridBagConstraints(); 00397 gridBagConstraints.gridx = 4; 00398 gridBagConstraints.gridy = 0; 00399 gridBagConstraints.anchor = java.awt.GridBagConstraints.SOUTHWEST; 00400 gridBagConstraints.insets = new java.awt.Insets(0, 20, 0, 4); 00401 panelControl.add(checkboxDrawPoints, gridBagConstraints); 00402 00403 checkboxDrawGT.setSelected(true); 00404 checkboxDrawGT.setText("Ground truth"); 00405 checkboxDrawGT.setMargin(new java.awt.Insets(0, 0, 0, 0)); 00406 checkboxDrawGT.addActionListener(new java.awt.event.ActionListener() { 00407 public void actionPerformed(java.awt.event.ActionEvent evt) { 00408 checkboxDrawGTActionPerformed(evt); 00409 } 00410 }); 00411 gridBagConstraints = new java.awt.GridBagConstraints(); 00412 gridBagConstraints.gridx = 5; 00413 gridBagConstraints.gridy = 0; 00414 gridBagConstraints.anchor = java.awt.GridBagConstraints.SOUTHWEST; 00415 gridBagConstraints.insets = new java.awt.Insets(0, 4, 0, 4); 00416 panelControl.add(checkboxDrawGT, gridBagConstraints); 00417 00418 checkboxDrawMicro.setSelected(true); 00419 checkboxDrawMicro.setText("Microclustering"); 00420 checkboxDrawMicro.setMargin(new java.awt.Insets(0, 0, 0, 0)); 00421 checkboxDrawMicro.addActionListener(new java.awt.event.ActionListener() { 00422 public void actionPerformed(java.awt.event.ActionEvent evt) { 00423 checkboxDrawMicroActionPerformed(evt); 00424 } 00425 }); 00426 gridBagConstraints = new java.awt.GridBagConstraints(); 00427 gridBagConstraints.gridx = 4; 00428 gridBagConstraints.gridy = 1; 00429 gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; 00430 gridBagConstraints.insets = new java.awt.Insets(0, 20, 0, 4); 00431 panelControl.add(checkboxDrawMicro, gridBagConstraints); 00432 00433 checkboxDrawClustering.setSelected(true); 00434 checkboxDrawClustering.setText("Clustering"); 00435 checkboxDrawClustering.setMargin(new java.awt.Insets(0, 0, 0, 0)); 00436 checkboxDrawClustering.addActionListener(new java.awt.event.ActionListener() { 00437 public void actionPerformed(java.awt.event.ActionEvent evt) { 00438 checkboxDrawClusteringActionPerformed(evt); 00439 } 00440 }); 00441 gridBagConstraints = new java.awt.GridBagConstraints(); 00442 gridBagConstraints.gridx = 5; 00443 gridBagConstraints.gridy = 1; 00444 gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; 00445 gridBagConstraints.insets = new java.awt.Insets(0, 4, 0, 4); 00446 panelControl.add(checkboxDrawClustering, gridBagConstraints); 00447 00448 label_processed_points.setText("Processed:"); 00449 gridBagConstraints = new java.awt.GridBagConstraints(); 00450 gridBagConstraints.gridx = 7; 00451 gridBagConstraints.gridy = 0; 00452 gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; 00453 gridBagConstraints.insets = new java.awt.Insets(0, 6, 0, 0); 00454 panelControl.add(label_processed_points, gridBagConstraints); 00455 00456 label_processed_points_value.setText("0"); 00457 gridBagConstraints = new java.awt.GridBagConstraints(); 00458 gridBagConstraints.gridx = 8; 00459 gridBagConstraints.gridy = 0; 00460 gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; 00461 gridBagConstraints.weightx = 1.0; 00462 panelControl.add(label_processed_points_value, gridBagConstraints); 00463 00464 labelNumPause.setText("Pause in:"); 00465 gridBagConstraints = new java.awt.GridBagConstraints(); 00466 gridBagConstraints.gridx = 7; 00467 gridBagConstraints.gridy = 1; 00468 gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; 00469 gridBagConstraints.insets = new java.awt.Insets(0, 6, 0, 0); 00470 panelControl.add(labelNumPause, gridBagConstraints); 00471 00472 numPauseAfterPoints.setHorizontalAlignment(javax.swing.JTextField.RIGHT); 00473 numPauseAfterPoints.setText(Integer.toString(RunVisualizer.initialPauseInterval)); 00474 numPauseAfterPoints.setPreferredSize(new java.awt.Dimension(70, 20)); 00475 gridBagConstraints = new java.awt.GridBagConstraints(); 00476 gridBagConstraints.gridx = 8; 00477 gridBagConstraints.gridy = 1; 00478 gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; 00479 panelControl.add(numPauseAfterPoints, gridBagConstraints); 00480 00481 gridBagConstraints = new java.awt.GridBagConstraints(); 00482 gridBagConstraints.gridx = 0; 00483 gridBagConstraints.gridy = 0; 00484 gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; 00485 gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; 00486 gridBagConstraints.weightx = 1.0; 00487 topWrapper.add(panelControl, gridBagConstraints); 00488 00489 jSplitPane1.setLeftComponent(topWrapper); 00490 00491 panelEvalOutput.setBorder(javax.swing.BorderFactory.createTitledBorder("Evaluation")); 00492 panelEvalOutput.setLayout(new java.awt.GridBagLayout()); 00493 00494 clusteringVisualEvalPanel1.setMinimumSize(new java.awt.Dimension(280, 118)); 00495 clusteringVisualEvalPanel1.setPreferredSize(new java.awt.Dimension(290, 115)); 00496 gridBagConstraints = new java.awt.GridBagConstraints(); 00497 gridBagConstraints.gridx = 0; 00498 gridBagConstraints.gridy = 0; 00499 gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; 00500 gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; 00501 gridBagConstraints.weighty = 1.0; 00502 panelEvalOutput.add(clusteringVisualEvalPanel1, gridBagConstraints); 00503 00504 graphPanel.setBorder(javax.swing.BorderFactory.createTitledBorder("Plot")); 00505 graphPanel.setPreferredSize(new java.awt.Dimension(530, 115)); 00506 graphPanel.setLayout(new java.awt.GridBagLayout()); 00507 00508 graphPanelControlTop.setLayout(new java.awt.GridBagLayout()); 00509 00510 buttonZoomInY.setText("Zoom in Y"); 00511 buttonZoomInY.addActionListener(new java.awt.event.ActionListener() { 00512 public void actionPerformed(java.awt.event.ActionEvent evt) { 00513 buttonZoomInYActionPerformed(evt); 00514 } 00515 }); 00516 gridBagConstraints = new java.awt.GridBagConstraints(); 00517 gridBagConstraints.insets = new java.awt.Insets(0, 2, 0, 2); 00518 graphPanelControlTop.add(buttonZoomInY, gridBagConstraints); 00519 00520 buttonZoomOutY.setText("Zoom out Y"); 00521 buttonZoomOutY.addActionListener(new java.awt.event.ActionListener() { 00522 public void actionPerformed(java.awt.event.ActionEvent evt) { 00523 buttonZoomOutYActionPerformed(evt); 00524 } 00525 }); 00526 gridBagConstraints = new java.awt.GridBagConstraints(); 00527 gridBagConstraints.insets = new java.awt.Insets(0, 2, 0, 2); 00528 graphPanelControlTop.add(buttonZoomOutY, gridBagConstraints); 00529 00530 labelEvents.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); 00531 gridBagConstraints = new java.awt.GridBagConstraints(); 00532 gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; 00533 gridBagConstraints.weightx = 1.0; 00534 gridBagConstraints.insets = new java.awt.Insets(0, 2, 0, 2); 00535 graphPanelControlTop.add(labelEvents, gridBagConstraints); 00536 00537 gridBagConstraints = new java.awt.GridBagConstraints(); 00538 gridBagConstraints.gridx = 0; 00539 gridBagConstraints.gridy = 0; 00540 gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; 00541 gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; 00542 gridBagConstraints.weightx = 1.0; 00543 graphPanel.add(graphPanelControlTop, gridBagConstraints); 00544 00545 graphCanvas.setPreferredSize(new java.awt.Dimension(500, 111)); 00546 00547 javax.swing.GroupLayout graphCanvasLayout = new javax.swing.GroupLayout(graphCanvas); 00548 graphCanvas.setLayout(graphCanvasLayout); 00549 graphCanvasLayout.setHorizontalGroup( 00550 graphCanvasLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 00551 .addGap(0, 515, Short.MAX_VALUE) 00552 ); 00553 graphCanvasLayout.setVerticalGroup( 00554 graphCanvasLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 00555 .addGap(0, 128, Short.MAX_VALUE) 00556 ); 00557 00558 graphScrollPanel.setViewportView(graphCanvas); 00559 00560 gridBagConstraints = new java.awt.GridBagConstraints(); 00561 gridBagConstraints.gridx = 0; 00562 gridBagConstraints.gridy = 1; 00563 gridBagConstraints.gridwidth = 2; 00564 gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; 00565 gridBagConstraints.weightx = 1.0; 00566 gridBagConstraints.weighty = 1.0; 00567 gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); 00568 graphPanel.add(graphScrollPanel, gridBagConstraints); 00569 00570 buttonZoomInX.setText("Zoom in X"); 00571 buttonZoomInX.addActionListener(new java.awt.event.ActionListener() { 00572 public void actionPerformed(java.awt.event.ActionEvent evt) { 00573 buttonZoomInXActionPerformed(evt); 00574 } 00575 }); 00576 graphPanelControlBottom.add(buttonZoomInX); 00577 00578 buttonZoomOutX.setText("Zoom out X"); 00579 buttonZoomOutX.addActionListener(new java.awt.event.ActionListener() { 00580 public void actionPerformed(java.awt.event.ActionEvent evt) { 00581 buttonZoomOutXActionPerformed(evt); 00582 } 00583 }); 00584 graphPanelControlBottom.add(buttonZoomOutX); 00585 00586 gridBagConstraints = new java.awt.GridBagConstraints(); 00587 gridBagConstraints.gridx = 1; 00588 gridBagConstraints.gridy = 0; 00589 gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; 00590 graphPanel.add(graphPanelControlBottom, gridBagConstraints); 00591 00592 gridBagConstraints = new java.awt.GridBagConstraints(); 00593 gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; 00594 gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; 00595 gridBagConstraints.weightx = 2.0; 00596 gridBagConstraints.weighty = 1.0; 00597 panelEvalOutput.add(graphPanel, gridBagConstraints); 00598 00599 jSplitPane1.setRightComponent(panelEvalOutput); 00600 00601 gridBagConstraints = new java.awt.GridBagConstraints(); 00602 gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; 00603 gridBagConstraints.weightx = 1.0; 00604 gridBagConstraints.weighty = 1.0; 00605 add(jSplitPane1, gridBagConstraints); 00606 }// </editor-fold>//GEN-END:initComponents 00607 00608 private void buttonScreenshotMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_buttonScreenshotMouseClicked 00609 JFileChooser fileChooser = new JFileChooser(); 00610 fileChooser.setAcceptAllFileFilterUsed(true); 00611 if(screenshotFilebase!=null) 00612 fileChooser.setSelectedFile(new File(screenshotFilebase)); 00613 if (fileChooser.showSaveDialog(this) == JFileChooser.APPROVE_OPTION) { 00614 screenshotFilebase = fileChooser.getSelectedFile().getPath(); 00615 streamPanel0.screenshot(screenshotFilebase+"_"+label_processed_points_value.getText()+"_0", true, true); 00616 streamPanel1.screenshot(screenshotFilebase+"_"+label_processed_points_value.getText()+"_1", true, true); 00617 } 00618 00619 }//GEN-LAST:event_buttonScreenshotMouseClicked 00620 00621 private void buttonRunMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_buttonRunMouseClicked 00622 toggleVisualizer(true); 00623 }//GEN-LAST:event_buttonRunMouseClicked 00624 00625 private void speedSliderMouseDragged(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_speedSliderMouseDragged 00626 visualizer.setSpeed((int)(speedSlider.getValue()/(100.0/15.0))); 00627 00628 }//GEN-LAST:event_speedSliderMouseDragged 00629 00630 private void scrollPane0MouseWheelMoved(java.awt.event.MouseWheelEvent evt) {//GEN-FIRST:event_scrollPane0MouseWheelMoved 00631 streamPanel0.setZoom(evt.getX(),evt.getY(),(-1)*evt.getWheelRotation(),scrollPane0); 00632 }//GEN-LAST:event_scrollPane0MouseWheelMoved 00633 00634 private void buttonZoomInXActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonZoomInXActionPerformed 00635 graphCanvas.scaleXResolution(false); 00636 }//GEN-LAST:event_buttonZoomInXActionPerformed 00637 00638 private void buttonZoomOutYActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonZoomOutYActionPerformed 00639 graphCanvas.setSize(new Dimension(graphCanvas.getWidth(), (int)(graphCanvas.getHeight()*0.8))); 00640 graphCanvas.setPreferredSize(new Dimension(graphCanvas.getWidth(), (int)(graphCanvas.getHeight()*0.8))); 00641 }//GEN-LAST:event_buttonZoomOutYActionPerformed 00642 00643 private void buttonZoomOutXActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonZoomOutXActionPerformed 00644 graphCanvas.scaleXResolution(true); 00645 }//GEN-LAST:event_buttonZoomOutXActionPerformed 00646 00647 private void buttonZoomInYActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonZoomInYActionPerformed 00648 graphCanvas.setSize(new Dimension(graphCanvas.getWidth(), (int)(graphCanvas.getHeight()*1.2))); 00649 graphCanvas.setPreferredSize(new Dimension(graphCanvas.getWidth(), (int)(graphCanvas.getHeight()*1.2))); 00650 }//GEN-LAST:event_buttonZoomInYActionPerformed 00651 00652 private void checkboxDrawPointsActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_checkboxDrawPointsActionPerformed 00653 visualizer.setPointLayerVisibility(checkboxDrawPoints.isSelected()); 00654 }//GEN-LAST:event_checkboxDrawPointsActionPerformed 00655 00656 private void checkboxDrawMicroActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_checkboxDrawMicroActionPerformed 00657 //visualizer.redrawClusterings(); 00658 visualizer.setMicroLayerVisibility(checkboxDrawMicro.isSelected()); 00659 }//GEN-LAST:event_checkboxDrawMicroActionPerformed 00660 00661 private void checkboxDrawGTActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_checkboxDrawGTActionPerformed 00662 //visualizer.redrawClusterings(); 00663 visualizer.setGroundTruthVisibility(checkboxDrawGT.isSelected()); 00664 }//GEN-LAST:event_checkboxDrawGTActionPerformed 00665 00666 private void checkboxDrawClusteringActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_checkboxDrawClusteringActionPerformed 00667 //visualizer.redrawClusterings(); 00668 visualizer.setMacroVisibility(checkboxDrawClustering.isSelected()); 00669 }//GEN-LAST:event_checkboxDrawClusteringActionPerformed 00670 00671 private void comboXActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_comboXActionPerformed 00672 JComboBox cb = (JComboBox)evt.getSource(); 00673 int dim = cb.getSelectedIndex(); 00674 streamPanel0.setActiveXDim(dim); 00675 streamPanel1.setActiveXDim(dim); 00676 if(visualizer!=null) 00677 visualizer.redraw(); 00678 }//GEN-LAST:event_comboXActionPerformed 00679 00680 private void comboYActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_comboYActionPerformed 00681 JComboBox cb = (JComboBox)evt.getSource(); 00682 int dim = cb.getSelectedIndex(); 00683 streamPanel0.setActiveYDim(dim); 00684 streamPanel1.setActiveYDim(dim); 00685 if(visualizer!=null) 00686 visualizer.redraw(); 00687 }//GEN-LAST:event_comboYActionPerformed 00688 00689 private void buttonStopActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonStopActionPerformed 00690 stopVisualizer(); 00691 clusteringSetupTab.stopRun(); 00692 }//GEN-LAST:event_buttonStopActionPerformed 00693 00694 private void buttonRunActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonRunActionPerformed 00695 // TODO add your handling code here: 00696 }//GEN-LAST:event_buttonRunActionPerformed 00697 00698 00699 // Variables declaration - do not modify//GEN-BEGIN:variables 00700 private javax.swing.JButton buttonRun; 00701 private javax.swing.JButton buttonScreenshot; 00702 private javax.swing.JButton buttonStop; 00703 private javax.swing.JButton buttonZoomInX; 00704 private javax.swing.JButton buttonZoomInY; 00705 private javax.swing.JButton buttonZoomOutX; 00706 private javax.swing.JButton buttonZoomOutY; 00707 private javax.swing.JCheckBox checkboxDrawClustering; 00708 private javax.swing.JCheckBox checkboxDrawGT; 00709 private javax.swing.JCheckBox checkboxDrawMicro; 00710 private javax.swing.JCheckBox checkboxDrawPoints; 00711 private moa.gui.clustertab.ClusteringVisualEvalPanel clusteringVisualEvalPanel1; 00712 private javax.swing.JComboBox comboX; 00713 private javax.swing.JComboBox comboY; 00714 private moa.gui.visualization.GraphCanvas graphCanvas; 00715 private javax.swing.JPanel graphPanel; 00716 private javax.swing.JPanel graphPanelControlBottom; 00717 private javax.swing.JPanel graphPanelControlTop; 00718 private javax.swing.JScrollPane graphScrollPanel; 00719 private javax.swing.JLabel jLabel1; 00720 private javax.swing.JSplitPane jSplitPane1; 00721 private javax.swing.JLabel labelEvents; 00722 private javax.swing.JLabel labelNumPause; 00723 private javax.swing.JLabel labelX; 00724 private javax.swing.JLabel labelY; 00725 private javax.swing.JLabel label_processed_points; 00726 private javax.swing.JLabel label_processed_points_value; 00727 private javax.swing.JTextField numPauseAfterPoints; 00728 private javax.swing.JPanel panelControl; 00729 private javax.swing.JPanel panelEvalOutput; 00730 private javax.swing.JPanel panelVisualWrapper; 00731 private javax.swing.JScrollPane scrollPane0; 00732 private javax.swing.JScrollPane scrollPane1; 00733 private javax.swing.JSlider speedSlider; 00734 private javax.swing.JSplitPane splitVisual; 00735 private moa.gui.visualization.StreamPanel streamPanel0; 00736 private moa.gui.visualization.StreamPanel streamPanel1; 00737 private javax.swing.JPanel topWrapper; 00738 // End of variables declaration//GEN-END:variables 00739 00740 public void actionPerformed(ActionEvent e) { 00741 if(e.getSource() instanceof JButton){ 00742 if(e.getActionCommand().equals("csv export")){ 00743 JFileChooser fileChooser = new JFileChooser(); 00744 fileChooser.setAcceptAllFileFilterUsed(true); 00745 fileChooser.addChoosableFileFilter(new FileExtensionFilter("csv")); 00746 if(exportFile!=null) 00747 fileChooser.setSelectedFile(new File(exportFile)); 00748 if (fileChooser.showSaveDialog(this) == JFileChooser.APPROVE_OPTION) { 00749 exportFile = fileChooser.getSelectedFile().getPath(); 00750 visualizer.exportCSV(exportFile); 00751 } 00752 } 00753 if(e.getActionCommand().equals("weka export")){ 00754 visualizer.weka(); 00755 } 00756 } 00757 } 00758 00759 }