1
1
package plotmas .graph ;
2
2
3
+ import java .awt .BorderLayout ;
3
4
import java .awt .event .ActionEvent ;
4
5
import java .awt .event .ActionListener ;
5
6
import java .util .Iterator ;
12
13
import org .jfree .chart .ChartFactory ;
13
14
import org .jfree .chart .ChartPanel ;
14
15
import org .jfree .chart .JFreeChart ;
16
+ import org .jfree .chart .plot .CategoryPlot ;
15
17
import org .jfree .chart .plot .PlotOrientation ;
16
18
import org .jfree .data .category .DefaultCategoryDataset ;
17
19
import org .jfree .ui .RefineryUtilities ;
@@ -35,6 +37,7 @@ public class MoodGraph extends JFrame {
35
37
36
38
private DefaultCategoryDataset moodData = null ;
37
39
private String selectedMoodDimension = null ;
40
+ private JFreeChart chart = null ;
38
41
39
42
public static MoodGraph getMoodListener () {
40
43
if (MoodGraph .moodListener ==null ) {
@@ -55,7 +58,7 @@ public MoodGraph(String title) {
55
58
this .selectedMoodDimension = MOOD_DIMS [0 ];
56
59
}
57
60
58
- public void createGraph () {
61
+ public void createData () {
59
62
this .deleteGraphData ();
60
63
61
64
Long startTime = PlotAwareAg .moodMapper .latestStartTime ();
@@ -74,6 +77,21 @@ public void createGraph() {
74
77
}
75
78
}
76
79
80
+ private void createChart (DefaultCategoryDataset data ) {
81
+ String title = "Mood Development Over Time" ;
82
+ if (data .getRowCount () == 0 )
83
+ title = "No mood points have been reported to MoodGraph" ;
84
+
85
+ JFreeChart lineChart = ChartFactory .createLineChart (
86
+ title ,
87
+ "plot time in ms" , this .selectedMoodDimension ,
88
+ data ,
89
+ PlotOrientation .VERTICAL ,
90
+ true ,true ,false );
91
+
92
+ this .chart = lineChart ;
93
+ }
94
+
77
95
public void deleteGraphData () {
78
96
this .moodData .clear ();
79
97
}
@@ -83,11 +101,10 @@ public JFrame visualizeGraph() {
83
101
}
84
102
85
103
public JFrame visualizeGraph (DefaultCategoryDataset data ) {
86
- JFreeChart lineChart = createChart ( data );
87
-
88
- ChartPanel chartPanel = new ChartPanel (lineChart );
104
+ // create line chart
105
+ this . createChart ( data );
106
+ ChartPanel chartPanel = new ChartPanel (this . chart );
89
107
chartPanel .setPreferredSize (new java .awt .Dimension ( 560 , 367 ));
90
- this .setContentPane (chartPanel );
91
108
92
109
// create dropdown to select modd dimension
93
110
JComboBox <String > moodDimensionList = new JComboBox <>(MOOD_DIMS );
@@ -99,12 +116,18 @@ public void actionPerformed(ActionEvent event) {
99
116
String selectedDimension = (String ) combo .getSelectedItem ();
100
117
101
118
MoodGraph .getMoodListener ().selectedMoodDimension = selectedDimension ;
102
- MoodGraph .getMoodListener ().setContentPane (new ChartPanel (MoodGraph .getMoodListener ().createChart (data )));
103
- MoodGraph .getMoodListener ().pack ();
119
+ MoodGraph .getMoodListener ().createData ();
120
+
121
+ ((CategoryPlot ) MoodGraph .getMoodListener ().chart .getPlot ()).getRangeAxis ().setLabel (
122
+ MoodGraph .getMoodListener ().selectedMoodDimension
123
+ );
124
+
125
+ MoodGraph .getMoodListener ().repaint ();
104
126
}
105
127
});
106
128
107
- this .add (moodDimensionList );
129
+ this .add (chartPanel , BorderLayout .CENTER );
130
+ this .add (moodDimensionList , BorderLayout .SOUTH );
108
131
109
132
this .addWindowListener (new java .awt .event .WindowAdapter () {
110
133
@ Override
@@ -121,20 +144,6 @@ public void windowClosing(java.awt.event.WindowEvent windowEvent) {
121
144
return this ;
122
145
}
123
146
124
- private JFreeChart createChart (DefaultCategoryDataset data ) {
125
- String title = this .selectedMoodDimension + " development over time" ;
126
- if (data .getRowCount () == 0 )
127
- title = "No mood points have been reported to MoodGraph" ;
128
-
129
- JFreeChart lineChart = ChartFactory .createLineChart (
130
- title ,
131
- "plot time in ms" , this .selectedMoodDimension ,
132
- data ,
133
- PlotOrientation .VERTICAL ,
134
- true ,true ,false );
135
-
136
- return lineChart ;
137
- }
138
147
139
148
private void addMoodPoint (Double value , Long time , String agName ) {
140
149
this .moodData .addValue (value , agName , time );
0 commit comments