001    package nl.cwi.sen1.visplugin.barchart;
002    
003    import javax.swing.JFrame;
004    import javax.swing.JPanel;
005    
006    import nl.cwi.sen1.relationstores.Factory;
007    import nl.cwi.sen1.relationstores.types.RTuple;
008    import nl.cwi.sen1.visplugin.VisualizationFactorySingleton;
009    
010    /**
011     * BarChart Demo/Example class
012     * Original code : PieChart plugin ( A. Belgraver, R. van Remortel )
013     * @author Srinivasan Tharmarajah
014    
015     */
016    
017    public class BarChartExample {
018    
019            /**
020             * @param args
021             */
022            public static void main(String[] args) {
023                    // create visualization
024                    RTuple fact = buildRTuple();
025                    
026                    Factory m_factory = VisualizationFactorySingleton.getFactoryInstance();
027    
028            BCVisualizationController controller = new BCVisualizationController();
029            BCVisualizationWindow visualization = (BCVisualizationWindow) controller.createWindow();
030    
031                    visualization.setFactory(m_factory);
032    
033                    JPanel barPanel = visualization.render(fact);
034                    showBarChart("Bar Chart Visualization", barPanel);
035            }
036    
037            private static RTuple buildRTuple() {
038                    RTuple rTuple = createRTuple();
039                    System.out.println(rTuple.toString());
040    
041            return rTuple;
042            }
043    
044            private static RTuple createRTuple() {
045            Factory factory = VisualizationFactorySingleton.getFactoryInstance();
046            RTuple rTuple = factory.RTupleFromString("rtuple(\"StatementHistogram\",relation([str,int]),set([tuple([str(\"Assignment\"),int(nat-con(7))]), tuple([str(\"Assignment2\"),int(nat-con(6))]), tuple([str(\"Assignment3\"),int(nat-con(5))]), tuple([str(\"Assignment4\"),int(nat-con(2))])]))");
047            
048                    return rTuple;
049                    
050            }
051            
052            /**
053             * Show a panel on screen.
054             * 
055             * @param panel
056             */
057            private static void showBarChart(String windowTitle, JPanel panel) {
058                    // create and set up the window.
059                    JFrame frame = new JFrame(windowTitle);
060                    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
061    
062                    // show chart
063                    frame.setContentPane(panel);
064                    frame.pack();
065                    frame.setVisible(true);
066            }
067    }