Révision 2464

tmp/org.txm.ca.rcp/src/org/txm/ca/rcp/editors/CAFactorialMapChartEditor.java (revision 2464)
34 34

  
35 35
/**
36 36
 * Correspondence analysis factorial map chart editor.
37
 * 
37 38
 * @author sjacquot
38 39
 *
39 40
 */
40 41
public class CAFactorialMapChartEditor extends ChartEditor<CA> {
41

  
42

  
42
	
43
	
43 44
	// FIXME: try to automate that
44 45
	// a solution is to stop using two int in CA but a members int[] dimensions, then use a ComboViewer in this editor
45
	//	/**
46
	//	 * First dimension.
47
	//	 */
48
	//	@Parameter(key=CAPreferences.FIRST_DIMENSION)
49
	//	protected int firstDimension = 1;
46
	// /**
47
	// * First dimension.
48
	// */
49
	// @Parameter(key=CAPreferences.FIRST_DIMENSION)
50
	// protected int firstDimension = 1;
50 51
	//
51
	//	/**
52
	//	 * Second dimension.
53
	//	 */
54
	//	@Parameter(key=CAPreferences.SECOND_DIMENSION)
55
	//	protected int secondDimension = 2;
56

  
57

  
52
	// /**
53
	// * Second dimension.
54
	// */
55
	// @Parameter(key=CAPreferences.SECOND_DIMENSION)
56
	// protected int secondDimension = 2;
57
	
58
	
58 59
	/**
59 60
	 * To show/hide individuals.
60 61
	 */
61
	@Parameter(key=CAPreferences.SHOW_INDIVIDUALS)
62
	@Parameter(key = CAPreferences.SHOW_INDIVIDUALS)
62 63
	protected ToolItem showIndividuals;
63

  
64
	
64 65
	/**
65 66
	 * To show/hide variables.
66 67
	 */
67
	@Parameter(key=CAPreferences.SHOW_VARIABLES)
68
	@Parameter(key = CAPreferences.SHOW_VARIABLES)
68 69
	protected ToolItem showVariables;
69

  
70
	
70 71
	/**
71 72
	 * To show/hide the point shapes or only the labels.
72 73
	 */
73
	@Parameter(key=CAPreferences.SHOW_POINT_SHAPES)
74
	@Parameter(key = CAPreferences.SHOW_POINT_SHAPES)
74 75
	protected ToolItem showPointShapes;
75

  
76

  
76
	
77
	
77 78
	/**
78 79
	 * Unit property.
79 80
	 */
80
	@Parameter(key=TXMPreferences.UNIT_PROPERTY)
81
	@Parameter(key = TXMPreferences.UNIT_PROPERTY)
81 82
	protected PropertiesComboViewer unitPropertyComboViewer;
82

  
83

  
83
	
84
	
84 85
	/**
85 86
	 * Minimum frequency filtering spinner.
86 87
	 */
87
	@Parameter(key=TXMPreferences.F_MIN)
88
	@Parameter(key = TXMPreferences.F_MIN)
88 89
	protected Spinner fMinSpinner;
89

  
90
	
90 91
	/**
91 92
	 * Maximum number of lines filtering.
92 93
	 */
93
	@Parameter(key=TXMPreferences.V_MAX)
94
	@Parameter(key = TXMPreferences.V_MAX)
94 95
	protected Spinner vMaxSpinner;
95

  
96

  
96
	
97
	
97 98
	/**
98 99
	 *
99 100
	 * @param chartEditorInput
......
101 102
	public CAFactorialMapChartEditor(ChartEditorInput chartEditorInput) {
102 103
		super(chartEditorInput);
103 104
	}
104

  
105 105
	
106
	
106 107
	@Override
107 108
	public void setFocus() {
108 109
		this.parentMultiPagesEditor.setFocus();
109 110
	}
110 111
	
111

  
112
	
112 113
	@Override
113 114
	public void __createPartControl() {
114

  
115
		
115 116
		// Main parameters
116 117
		GLComposite mainParametersArea = this.getMainParametersComposite();
117

  
118
		
118 119
		try {
119 120
			// display lexical table parameters if it is not visible
120 121
			if (!this.getResult().getParent().isVisible()  // the LT parent is not visible
121
					&& !(this.getResult().getParent().getParent() instanceof PartitionIndex))	{ // and its parent is not a PartitionIndex
122
					&& !(this.getResult().getParent().getParent() instanceof PartitionIndex)) { // and its parent is not a PartitionIndex
122 123
				mainParametersArea.getLayout().numColumns = 2;
123

  
124
				
124 125
				// unit property
125 126
				new Label(mainParametersArea, SWT.NONE).setText(TXMCoreMessages.common_property);
126 127
				this.unitPropertyComboViewer = new PropertiesComboViewer(
......
131 132
						this.getResult().getUnitProperty(),
132 133
						false);
133 134
			}
134

  
135
			
135 136
		}
136 137
		catch (CqiClientException e) {
137 138
			// TODO Auto-generated catch block
138 139
			e.printStackTrace();
139 140
		}
140

  
141

  
141
		
142
		
142 143
		// Extend the chart editor tool bar
143 144
		new ToolItem(this.chartToolBar, SWT.SEPARATOR);
144

  
145
		ComputeSelectionListener computeSelectionListener = new ComputeSelectionListener(this, true); 
146

  
145
		
146
		ComputeSelectionListener computeSelectionListener = new ComputeSelectionListener(this, true);
147
		
147 148
		// Show/hide columns
148 149
		showIndividuals = new ToolItem(this.chartToolBar, SWT.CHECK);
149 150
		// FIXME: keep this for offering an option "large icons" with text in buttons ?
150
		//showColumns.setText(SWTComponentsProviderMessages.SWTChartsComponentProvider_CA_TOOLBAR_BUTTON_SHOW_COLUMS_LABEL);
151
		// showColumns.setText(SWTComponentsProviderMessages.SWTChartsComponentProvider_CA_TOOLBAR_BUTTON_SHOW_COLUMS_LABEL);
151 152
		showIndividuals.setToolTipText(CAUIMessages.showhideTheColumnPoints);
152 153
		showIndividuals.setImage(IImageKeys.getImage(CAFactorialMapChartEditor.class, "icons/show_columns.png")); //$NON-NLS-1$
153 154
		showIndividuals.addSelectionListener(computeSelectionListener);
154

  
155
		
155 156
		// Show/hide rows
156 157
		showVariables = new ToolItem(this.chartToolBar, SWT.CHECK);
157 158
		// FIXME: keep this for offering an option "large icons" with text in buttons ?
158
		//this.showRows.setText(SWTComponentsProviderMessages.SWTChartsComponentProvider_CA_TOOLBAR_BUTTON_SHOW_ROWS_LABEL);
159
		// this.showRows.setText(SWTComponentsProviderMessages.SWTChartsComponentProvider_CA_TOOLBAR_BUTTON_SHOW_ROWS_LABEL);
159 160
		showVariables.setToolTipText(CAUIMessages.showhideTheRowPoints);
160 161
		showVariables.setImage(IImageKeys.getImage(CAFactorialMapChartEditor.class, "icons/show_rows.png")); //$NON-NLS-1$
161 162
		showVariables.addSelectionListener(computeSelectionListener);
162

  
163

  
163
		
164
		
164 165
		// Show/hide point shapes
165 166
		showPointShapes = new ToolItem(this.chartToolBar, SWT.CHECK);
166 167
		// FIXME: keep this for offering an option "large icons" with text in buttons ?
167
		//showPointShapes.setText(CAUIMessages.SHOW_HIDE_POINT_SHAPES);
168
		// showPointShapes.setText(CAUIMessages.SHOW_HIDE_POINT_SHAPES);
168 169
		showPointShapes.setToolTipText(CAUIMessages.showhidePointShapes);
169 170
		showPointShapes.setImage(IImageKeys.getImage(CAFactorialMapChartEditor.class, "icons/show_point_shapes.png")); //$NON-NLS-1$
170 171
		showPointShapes.addSelectionListener(computeSelectionListener);
171

  
172

  
172
		
173
		
173 174
		// Factors plane selection
174 175
		CLabel factorsLabel = new CLabel(this.chartToolBar, SWT.CENTER);
175 176
		factorsLabel.setText(CAUIMessages.axesColon);
176 177
		this.chartToolBar.addControl(factorsLabel);
177

  
178
		
178 179
		final Combo plansCombo = new Combo(this.chartToolBar, SWT.READ_ONLY);
179

  
180
		
180 181
		// FIXME: commented because the infos panel is not ready to manage more axes
181
		//		ArrayList<String> planes = null;
182
		//		try {
183
		//			int nbsv = ((CA) editorPart.getResultData()).getSingularValues().length;
184
		//			planes = new ArrayList<String>();
185
		//			for(int i = 1 ; i < nbsv ; i ++)	{
186
		//				for(int j = i ; j < nbsv ; j++)	{
187
		//					if(i != j)	{
188
		//						planes.add("("+i+","+j+")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
189
		//					}
190
		//				}
191
		//			}
192
		//		}
193
		//		catch (StatException e1) {
194
		//			// TODO Auto-generated catch block
195
		//			org.txm.utils.logger.Log.printStackTrace(e1);
196
		//		}
197
		//		String [] items = planes.toArray(new String[planes.size()]);
198

  
182
		// ArrayList<String> planes = null;
183
		// try {
184
		// int nbsv = ((CA) editorPart.getResultData()).getSingularValues().length;
185
		// planes = new ArrayList<String>();
186
		// for(int i = 1 ; i < nbsv ; i ++) {
187
		// for(int j = i ; j < nbsv ; j++) {
188
		// if(i != j) {
189
		// planes.add("("+i+","+j+")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
190
		// }
191
		// }
192
		// }
193
		// }
194
		// catch (StatException e1) {
195
		// // TODO Auto-generated catch block
196
		// org.txm.utils.logger.Log.printStackTrace(e1);
197
		// }
198
		// String [] items = planes.toArray(new String[planes.size()]);
199
		
199 200
		String items[] = { "(1,2)", "(1,3)", "(2,3)" }; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
200

  
201
		
201 202
		// TODO : commented because the infos panel is not ready to manage more axes
202
		//		if(couples != null && couples.size() > 3)	{
203
		//			items = couples.toArray(new String[couples.size()]);
204
		//}
205

  
206

  
203
		// if(couples != null && couples.size() > 3) {
204
		// items = couples.toArray(new String[couples.size()]);
205
		// }
206
		
207 207
		plansCombo.setItems(items);
208

  
208
		
209 209
		// Preselect the plan from the CA data
210
		if(this.getIntParameterValue(CAPreferences.FIRST_DIMENSION) == 2)	{
210
		if (this.getIntParameterValue(CAPreferences.FIRST_DIMENSION) == 2) {
211 211
			plansCombo.select(2);
212 212
		}
213
		else if(this.getIntParameterValue(CAPreferences.SECOND_DIMENSION) == 3)	{
213
		else if (this.getIntParameterValue(CAPreferences.SECOND_DIMENSION) == 3) {
214 214
			plansCombo.select(1);
215 215
		}
216
		else	{
216
		else {
217 217
			plansCombo.select(0);
218 218
		}
219

  
219
		
220 220
		this.chartToolBar.addControl(plansCombo);
221

  
221
		
222 222
		// Listeners
223 223
		SelectionListener listener = new SelectionListener() {
224

  
224
			
225 225
			@Override
226 226
			public void widgetSelected(SelectionEvent e) {
227

  
227
				
228 228
				boolean resetView = false;
229

  
229
				
230 230
				// Change factors
231
				if(e.getSource() == plansCombo)	{
232

  
231
				if (e.getSource() == plansCombo) {
232
					
233 233
					Combo plans = (Combo) e.getSource();
234

  
234
					
235 235
					int dimension1 = 1;
236 236
					int dimension2 = 2;
237

  
237
					
238 238
					String str = plans.getItem(plans.getSelectionIndex());
239
					str = str.substring(1, str.length() -1); // remove ( and )
239
					str = str.substring(1, str.length() - 1); // remove ( and )
240 240
					String[] split = str.split(","); // 2 items //$NON-NLS-1$
241 241
					dimension1 = Integer.parseInt(split[0]);
242 242
					dimension2 = Integer.parseInt(split[1]);
243

  
243
					
244 244
					getResult().setFirstDimension(dimension1);
245 245
					getResult().setSecondDimension(dimension2);
246

  
246
					
247 247
					resetView = true;
248 248
				}
249 249
				getResult().setChartDirty();
250 250
				getResult().setNeedsToResetView(resetView);
251 251
				compute(true);
252
				//forceFocus();
252
				// forceFocus();
253 253
			}
254

  
254
			
255 255
			@Override
256 256
			public void widgetDefaultSelected(SelectionEvent e) {
257 257
				// TODO Auto-generated method stub
258 258
			}
259 259
		};
260 260
		plansCombo.addSelectionListener(listener);
261

  
261
		
262 262
		// parent parameters
263 263
		// thresholds
264 264
		if (!this.getResult().getParent().isVisible()  // the LT parent is not visible
265
				&& !(this.getResult().getParent().getParent() instanceof PartitionIndex))	{ // and its parent is not a PartitionIndex
265
				&& !(this.getResult().getParent().getParent() instanceof PartitionIndex)) { // and its parent is not a PartitionIndex
266 266
			ThresholdsGroup thresholdsGroup = new ThresholdsGroup(this.getExtendedParametersGroup(), SWT.NONE, this, false, false);
267 267
			this.fMinSpinner = thresholdsGroup.getFMinSpinner();
268 268
			this.vMaxSpinner = thresholdsGroup.getVMaxSpinner();
......
272 272
		this.chartToolBar.pack();
273 273
		
274 274
	}
275

  
275
	
276 276
	@Override
277 277
	public void updateEditorFromChart(boolean update) {
278 278
		
......
282 282
		// Updating complementary editors
283 283
		try {
284 284
			// cols and rows tables
285
			((ColsRowsInfosEditor)this.parentMultiPagesEditor.getEditors().get(1)).refresh(update);
286
			((ColsRowsInfosEditor)this.parentMultiPagesEditor.getEditors().get(2)).refresh(update);
285
			((ColsRowsInfosEditor) this.parentMultiPagesEditor.getEditors().get(1)).refresh(update);
286
			((ColsRowsInfosEditor) this.parentMultiPagesEditor.getEditors().get(2)).refresh(update);
287 287
			// eigenvalues chart
288
			//((EigenvaluesChartEditor)this.parentMultiPagesEditor.getEditors().get(4)).refresh(update);
288
			// ((EigenvaluesChartEditor)this.parentMultiPagesEditor.getEditors().get(4)).refresh(update);
289 289
			// eigenvalues table
290
			((TXMEditor)this.parentMultiPagesEditor.getEditors().get(4)).refresh(update);
290
			((TXMEditor) this.parentMultiPagesEditor.getEditors().get(4)).refresh(update);
291 291
		}
292 292
		catch (Exception e) {
293 293
			// TODO Auto-generated catch block
294 294
			e.printStackTrace();
295 295
		}
296 296
	}
297

  
298 297
	
298
	
299 299
	@Override
300 300
	protected void onInit() {
301 301
		
302 302
		IChartComponent chartComponent = this.getComposite().getChartComponent();
303

  
303
		
304 304
		// Axis unit square ratio constraint
305
		//chartComponent.setSquareOffEnabled(true);
305
		// chartComponent.setSquareOffEnabled(true);
306 306
		chartComponent.squareOff();
307

  
307
		
308 308
		// FIXME: this code is too much AWT related
309 309
		// Axis unit square ratio constraint on resize
310
		((Component)chartComponent).addComponentListener(new ComponentListener() {
311

  
310
		((Component) chartComponent).addComponentListener(new ComponentListener() {
311
			
312 312
			@Override
313 313
			public void componentShown(ComponentEvent arg0) {
314 314
				// TODO Auto-generated method stub
315 315
			}
316

  
316
			
317 317
			@Override
318 318
			public void componentResized(ComponentEvent e) {
319 319
				getComposite().getChartComponent().squareOff();
320 320
			}
321

  
321
			
322 322
			@Override
323 323
			public void componentMoved(ComponentEvent arg0) {
324 324
				// TODO Auto-generated method stub
325 325
			}
326

  
326
			
327 327
			@Override
328 328
			public void componentHidden(ComponentEvent arg0) {
329 329
				// TODO Auto-generated method stub
330 330
			}
331 331
		});
332

  
332
		
333 333
	}
334 334
	
335
}
335
}

Formats disponibles : Unified diff