MOA 12.03
Real Time Analytics for Data Streams
ClusteringVisualTab.java
Go to the documentation of this file.
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 }
 All Classes Namespaces Files Functions Variables Enumerations