Revision 21304 trunk/libraries/libUIComponent/src/org/gvsig/gui/beans/graphic/GraphicChartPanel.java

View differences:

GraphicChartPanel.java
23 23
import java.awt.Color;
24 24
import java.awt.Image;
25 25

  
26
import javax.swing.BorderFactory;
26 27
import javax.swing.ImageIcon;
27 28
import javax.swing.JPanel;
28 29

  
......
36 37
import org.jfree.data.xy.XYSeriesCollection;
37 38
/**
38 39
 * Componente gr?fico de JFree
39
 *
40
 * 
40 41
 * @version 05/04/2007
41 42
 * @author Nacho Brodin (brodin_ign@gva.es)
42 43
 * @author BorSanZa - Borja S?nchez Zamorano (borja.sanchez@iver.es)
43
 *
44
 */public class GraphicChartPanel extends JPanel {
44
 */
45
public class GraphicChartPanel extends JPanel {
45 46
	private static final long serialVersionUID = 7328137487119964665L;
46
	private JFreeChart 			chart;
47
	private ChartPanel 			jPanelChart = null;
48
	private XYSeries 			series[] = null;
49
	private XYSeriesCollection 	dataset = null;
47
	private JFreeChart         chart       = null;
48
	private ChartPanel         jPanelChart = null;
49
	private XYSeries           series[]    = new XYSeries[0];
50
	private XYSeriesCollection dataset     = null;
50 51

  
52
	private int                viewType    = 0;
53

  
51 54
	public GraphicChartPanel() {
52 55
		dataset = new XYSeriesCollection();
53 56

  
......
65 68

  
66 69
	/**
67 70
	 * This method initializes this
68
	 *
69 71
	 */
70 72
	private void initialize() {
71 73
		this.setLayout(new BorderLayout());
......
73 75
	}
74 76

  
75 77
	/**
76
	 *
77 78
	 * @return
78 79
	 */
79
	public ChartPanel getChart(){
80
		if(jPanelChart == null){
80
	public ChartPanel getChart() {
81
		if (jPanelChart == null) {
81 82
			jPanelChart = new ChartPanel(chart);
82
			jPanelChart.setBorder(javax.swing.BorderFactory.createLineBorder(java.awt.Color.gray,1));
83
			jPanelChart.setBorder(BorderFactory.createLineBorder(Color.gray, 1));
83 84
		}
84
		return 	jPanelChart;
85
		return jPanelChart;
85 86
	}
86 87

  
87
		 /**
88
		 * Creates a chart.
89
		 *
90
		 * @param dataset  the dataset.
91
		 *
92
		 * @return A chart.
93
		 */
94
		private void createChart() {
88
	/**
89
	 * Creates a chart.
90
	 * @param dataset the dataset.
91
	 * @return A chart.
92
	 */
93
	private void createChart() {
94
		chart = ChartFactory.createXYLineChart(null, null, null, dataset,
95
							PlotOrientation.VERTICAL, false, true, true);
95 96

  
96
			chart =
97
				 ChartFactory.createXYLineChart(null, null, null,
98
					dataset,
99
					PlotOrientation.VERTICAL,
100
						false,
101
						true,
102
						true);
97
		// Definir la lista de colores
98
		XYPlot plot = chart.getXYPlot();
99
		plot.getRenderer().setSeriesPaint(0, Color.red);
100
		plot.getRenderer().setSeriesPaint(1, Color.green);
101
		plot.getRenderer().setSeriesPaint(2, Color.blue);
102
		plot.getRenderer().setSeriesPaint(3, Color.cyan);
103
		plot.getRenderer().setSeriesPaint(4, Color.black);
104
		plot.getRenderer().setSeriesPaint(5, Color.darkGray);
105
		plot.getRenderer().setSeriesPaint(6, Color.gray);
106
		plot.getRenderer().setSeriesPaint(7, Color.magenta);
107
		plot.getRenderer().setSeriesPaint(8, Color.yellow);
108
		plot.getRenderer().setSeriesPaint(9, Color.orange);
103 109

  
104
				// color
105
				XYPlot plot = chart.getXYPlot();
106
				plot.getRenderer().setSeriesPaint(0, Color.red);
107
				plot.getRenderer().setSeriesPaint(1, Color.green);
108
				plot.getRenderer().setSeriesPaint(2, Color.blue);
109
				plot.getRenderer().setSeriesPaint(3, Color.cyan);
110
				plot.getRenderer().setSeriesPaint(4, Color.black);
111
				plot.getRenderer().setSeriesPaint(5, Color.darkGray);
112
				plot.getRenderer().setSeriesPaint(6, Color.gray);
113
				plot.getRenderer().setSeriesPaint(7, Color.magenta);
114
				plot.getRenderer().setSeriesPaint(8, Color.yellow);
115
				plot.getRenderer().setSeriesPaint(9, Color.orange);
116
				
117
				Image img = new ImageIcon(getClass().getResource("images/splash.png")).getImage();
118
				plot.setBackgroundPaint(null);
119
				plot.setBackgroundImageAlpha(0.18f);
120
				plot.setBackgroundImage(img);
121
		}
110
		Image img = new ImageIcon(getClass().getResource("images/splash.png")).getImage();
111
		plot.setBackgroundPaint(null);
112
		plot.setBackgroundImageAlpha(0.18f);
113
		plot.setBackgroundImage(img);
114
	}
122 115

  
123
		/**
124
		 * Asigna nuevos valores para la gr?fica
125
		 * @param values Matriz de [n?mero de gr?ficas][Valores por gr?fica]
126
		 */
127
		public void setNewChart(int[][] values, String names[]){
128
			dataset.removeAllSeries();
129
			series = new XYSeries[values.length];
130
			for (int iGraf = 0; iGraf < values.length; iGraf++) {
131
				series[iGraf] = new XYSeries(names[iGraf]);
132
				for (int i = 0; i < values[iGraf].length; i++) {
133
					series[iGraf].add(new Integer(i),  new Integer(values[iGraf][i]));
134
				}
135
				dataset.addSeries(series[iGraf]);
116
	/**
117
	 * Asigna nuevos valores para la gr?fica
118
	 * @param values Matriz de [n?mero de gr?ficas][Valores por gr?fica]
119
	 */
120
	public void setNewChart(int[][] values, String names[]) {
121
		series = new XYSeries[values.length];
122
		for (int iGraf = 0; iGraf < values.length; iGraf++) {
123
			series[iGraf] = new XYSeries(names[iGraf]);
124
			for (int i = 0; i < values[iGraf].length; i++) {
125
				series[iGraf].add(new Integer(i), new Integer(values[iGraf][i]));
136 126
			}
137
			jPanelChart.repaint();
138 127
		}
128
		reloadGraphic();
129
	}
139 130

  
140
		/**
141
		 * Asigna nuevos valores para la gr?fica
142
		 * @param values Matriz de [n?mero de gr?ficas][Valores por gr?fica]
143
		 */
144
		public void setNewChart(double[][][] values, String names[]){
145
			dataset.removeAllSeries();
146
			series = new XYSeries[values.length];
147
			for (int iGraf = 0; iGraf < values.length; iGraf++) {
148
				series[iGraf] = new XYSeries(names[iGraf]);
149
				for (int i = 0; i < values[iGraf].length; i++) {
150
					series[iGraf].add(values[iGraf][i][0],  values[iGraf][i][1]);
151
				}
152
				dataset.addSeries(series[iGraf]);
131
	/**
132
	 * Asigna nuevos valores para la gr?fica
133
	 * @param values Matriz de [n?mero de gr?ficas][Valores por gr?fica]
134
	 */
135
	public void setNewChart(double[][][] values, String names[]) {
136
		series = new XYSeries[values.length];
137
		for (int iGraf = 0; iGraf < values.length; iGraf++) {
138
			series[iGraf] = new XYSeries(names[iGraf]);
139
			for (int i = 0; i < values[iGraf].length; i++) {
140
				series[iGraf].add(values[iGraf][i][0], values[iGraf][i][1]);
153 141
			}
154
			jPanelChart.repaint();
155 142
		}
143
		reloadGraphic();
144
	}
156 145

  
157
		/**
158
		 * Reemplaza los valores de la gr?fica
159
		 * @param values Matriz de [n?mero de gr?ficas][Valores por gr?fica]
160
		 */
161
		public void replaceValuesChart(int[][] values){
162
			for (int iGraf = 0; iGraf < values.length; iGraf++) {
163
				for (int i = 0; i < values[iGraf].length; i++) {
164
					series[iGraf].getDataItem(i).setY(values[iGraf][i]);
146
	/**
147
	 * Define el tipo de visualizacion para la grafica.
148
	 * Valores: 0 - Normal, 1 - Acumulado, 2 - Logaritmico
149
	 * @param type
150
	 */
151
	public void setViewType(int type) {
152
		this.viewType = type;
153
		reloadGraphic();
154
	}
155

  
156
	/**
157
	 * Recarga los datos de la grafica dependiendo del tipo de visualizacion
158
	 */
159
	private void reloadGraphic() {
160
		dataset.removeAllSeries();
161
		switch (viewType) {
162
			case 0: // Normal
163
				for (int i = 0; i < series.length; i++)
164
					dataset.addSeries(series[i]);
165
				break;
166
			case 1: // Acumulado
167
				XYSeries[] seriesAcum = new XYSeries[series.length];
168
				for (int i = 0; i < series.length; i++) {
169
					seriesAcum[i] = new XYSeries(series[i].getKey());
170
					double total = 0;
171
					for (int j = 0; j < series[i].getItemCount(); j++) {
172
						total += series[i].getY(j).doubleValue();
173
						seriesAcum[i].add(series[i].getX(j), total);
174
					}
175
					dataset.addSeries(seriesAcum[i]);
165 176
				}
166
			}
167
			jPanelChart.repaint();
177
				break;
178
			case 2: // Logaritmico
179
				XYSeries[] seriesLog = new XYSeries[series.length];
180

  
181
				double minim = Double.MAX_VALUE;
182
				for (int i = 0; i < series.length; i++)
183
					for (int j = 0; j < series[i].getItemCount(); j++)
184
						if (minim > series[i].getY(j).doubleValue())
185
							minim = series[i].getY(j).doubleValue();
186
				
187
				for (int i = 0; i < series.length; i++) {
188
					seriesLog[i] = new XYSeries(series[i].getKey());
189
					for (int j = 0; j < series[i].getItemCount(); j++)
190
						seriesLog[i].add(series[i].getX(j), java.lang.Math.log(series[i].getY(j).doubleValue() - minim + 1.0));
191
					dataset.addSeries(seriesLog[i]);
192
				}
193
				break;
168 194
		}
195
		jPanelChart.repaint();
196
	}
169 197

  
170
		/**
171
		 * Limpia la gr?fica
172
		 */
173
		public void cleanChart(){
174
			dataset.removeAllSeries();
175
			jPanelChart.repaint();
176
		}
198
	/**
199
	 * Limpia la gr?fica
200
	 */
201
	public void cleanChart() {
202
		series = new XYSeries[0];
203
		reloadGraphic();
204
	}
177 205
}

Also available in: Unified diff