Revision 29351

View differences:

branches/v2_0_0_prep/extensions/extNormalization/src/org/gvsig/normalization/gui/NormalizationPanelController.java
1
/* gvSIG. Geographic Information System of the Valencian Government
2
 *
3
 * Copyright (C) 2007-2008 Infrastructures and Transports Department
4
 * of the Valencian Government (CIT)
5
 * 
6
 * This program is free software; you can redistribute it and/or
7
 * modify it under the terms of the GNU General Public License
8
 * as published by the Free Software Foundation; either version 2
9
 * of the License, or (at your option) any later version.
10
 * 
11
 * This program is distributed in the hope that it will be useful,
12
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
 * GNU General Public License for more details.
15
 * 
16
 * You should have received a copy of the GNU General Public License
17
 * along with this program; if not, write to the Free Software
18
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, 
19
 * MA  02110-1301, USA.
20
 * 
21
 */
22

  
23
/*
24
 * AUTHORS (In addition to CIT):
25
 * 2008 Prodevelop S.L. main development
26
 */
27

  
28
package org.gvsig.normalization.gui;
29

  
30
import java.awt.Component;
31
import java.io.File;
32
import java.io.FileReader;
33
import java.io.FileWriter;
34
import java.io.IOException;
35
import java.io.Writer;
36
import java.text.DecimalFormatSymbols;
37
import java.util.ArrayList;
38
import java.util.Iterator;
39
import java.util.List;
40
import java.util.Locale;
41

  
42
import javax.swing.JFileChooser;
43
import javax.swing.JOptionPane;
44
import javax.swing.table.DefaultTableModel;
45

  
46
import org.gvsig.fmap.dal.exception.DataException;
47
import org.gvsig.fmap.dal.feature.Feature;
48
import org.gvsig.fmap.dal.feature.FeatureSet;
49
import org.gvsig.fmap.dal.feature.FeatureStore;
50
import org.gvsig.normalization.algorithm.NormalizationAlgorithm;
51
import org.gvsig.normalization.algorithm.impl.DefaultNormalizationAlgorithm;
52
import org.gvsig.normalization.pattern.Element;
53
import org.gvsig.normalization.pattern.Fieldseparator;
54
import org.gvsig.normalization.pattern.Fieldtype;
55
import org.gvsig.normalization.pattern.Infieldseparators;
56
import org.gvsig.normalization.pattern.Patternnormalization;
57
import org.gvsig.normalization.pattern.Stringvalue;
58
import org.gvsig.normalization.pattern.impl.DefaultElement;
59
import org.gvsig.normalization.pattern.impl.DefaultFieldseparator;
60
import org.gvsig.normalization.pattern.impl.DefaultFieldtype;
61
import org.gvsig.normalization.pattern.impl.DefaultInfieldseparators;
62
import org.gvsig.normalization.pattern.impl.DefaultPatternnormalization;
63
import org.gvsig.normalization.pattern.impl.DefaultStringvalue;
64
import org.gvsig.tools.ToolsLocator;
65
import org.gvsig.tools.persistence.PersistenceException;
66
import org.gvsig.tools.persistence.PersistenceManager;
67
import org.gvsig.tools.persistence.PersistentState;
68
import org.slf4j.Logger;
69
import org.slf4j.LoggerFactory;
70

  
71
import sun.text.Normalizer;
72

  
73
import com.iver.andami.PluginServices;
74
import com.iver.utiles.GenericFileFilter;
75
import com.iver.utiles.XMLEntity;
76

  
77
/**
78
 * Controller of the Normalization panel
79
 * 
80
 * @author <a href="mailto:jsanz@prodevelop.es"> Jorge Gaspar Sanz Salinas</a>
81
 * @author <a href="mailto:vsanjaime@prodevelop.es"> Vicente Sanjaime Calvet</a>
82
 */
83

  
84
public class NormalizationPanelController {
85

  
86
	private static final Logger log = LoggerFactory
87
			.getLogger(NormalizationPanelController.class);
88

  
89
	public static final int SAMPLES = 3;
90

  
91
	private int selectedField;
92
	private Patternnormalization pattern;
93
	private FeatureStore store = null;
94
	private int contador = 1;
95
	private String[] samples = new String[SAMPLES];
96

  
97
	/* SINGLETON DEFINITION */
98
	private volatile static NormalizationPanelController uniqueInstance;
99

  
100
	/**
101
	 * Get the instance of panel controller
102
	 * 
103
	 * @return panel model
104
	 */
105
	public static NormalizationPanelController getInstance() {
106
		if (uniqueInstance == null) {
107
			synchronized (NormalizationPanelController.class) {
108
				if (uniqueInstance == null) {
109
					uniqueInstance = new NormalizationPanelController();
110
				}
111
			}
112
		}
113
		return uniqueInstance;
114
	}
115

  
116
	/**
117
	 * Private constructor
118
	 */
119
	private NormalizationPanelController() {
120
		this.setPattern(initializeDefaultPattern());
121
	}
122

  
123
	/**
124
	 * This method fills the GUI sample table with the samples
125
	 * 
126
	 * @return Object[][]
127
	 */
128
	protected Object[][] normalizeOutSamples() {
129

  
130
		int numFields = pattern.getElements().size();
131
		Object[][] results = new Object[SAMPLES][numFields];
132

  
133
		NormalizationAlgorithm na = new DefaultNormalizationAlgorithm(
134
				this.pattern);
135
		List<String> chains = null;
136
		for (int i = 0; i < SAMPLES; i++) {
137
			chains = na.splitChain(samples[i]);
138
			numFields = chains.size();
139
			for (int j = 0; j < numFields; j++) {
140
				results[i][j] = chains.get(j);
141
			}
142
		}
143
		return results;
144
	}
145

  
146
	/**
147
	 * This method up the selected element one position in the list of Elements
148
	 * 
149
	 * @param pos
150
	 */
151
	protected void fieldUp(int pos) {
152

  
153
		int nu = pattern.getElements().size();
154

  
155
		if (pos > 0 && nu > 1) {
156
			int newpos = pos - 1;
157
			Element[] ad = pattern.getArrayElements();
158
			Element ele21 = ad[pos];
159
			Element ele12 = ad[newpos];
160

  
161
			ad[newpos] = ele21;
162
			ad[pos] = ele12;
163
			List<Element> elems = new ArrayList<Element>();
164
			for (int i = 0; i < ad.length; i++) {
165
				elems.add(ad[i]);
166
			}
167
			pattern.setElements(elems);
168
		}
169
	}
170

  
171
	/**
172
	 * This method down the selected element one position in the list of
173
	 * Elements
174
	 * 
175
	 * @param pos
176
	 */
177
	protected void fieldDown(int pos) {
178
		int nu = pattern.getElements().size();
179

  
180
		if (pos != (nu - 1) && nu > 1) {
181
			int newpos = pos + 1;
182
			Element[] ad = pattern.getArrayElements();
183
			Element ele21 = ad[pos];
184
			Element ele12 = ad[newpos];
185

  
186
			ad[newpos] = ele21;
187
			ad[pos] = ele12;
188
			List<Element> elems = new ArrayList<Element>();
189
			for (int i = 0; i < ad.length; i++) {
190
				elems.add(ad[i]);
191
			}
192
			pattern.setElements(elems);
193
		}
194
	}
195

  
196
	/**
197
	 * This method adds a new element to the pattern
198
	 */
199

  
200
	protected void addField() {
201

  
202
		contador++;
203
		int tam = pattern.getElements().size();
204
		Element eleme = new DefaultElement();
205

  
206
		Fieldseparator fsep = new DefaultFieldseparator();
207
		fsep.setSemicolonsep(true);
208
		fsep.setJoinsep(false);
209
		fsep.setColonsep(false);
210
		fsep.setSpacesep(false);
211
		fsep.setTabsep(false);
212

  
213
		String nam = "";
214
		boolean isOkName = true;
215
		do {
216
			isOkName = true;
217
			nam = "NewField" + contador;
218
			for (int i = 0; i < tam; i++) {
219
				String napat = ((Element) pattern.getElements().get(i))
220
						.getFieldname();
221
				if (napat.compareToIgnoreCase(nam) == 0) {
222
					isOkName = false;
223
					break;
224
				}
225
			}
226
			if (!isOkName) {
227
				contador++;
228
			}
229

  
230
		} while (!isOkName);
231

  
232
		// validate the new field name
233
		String vname = validateFieldName(nam);
234
		eleme.setFieldname(vname);
235
		eleme.setFieldseparator(fsep);
236
		eleme.setInfieldseparators(getDefaultInfieldseparators());
237
		eleme.setFieldtype(getDefaultNewFieldType());
238
		eleme.setFieldwidth(0);
239
		eleme.setImportfield(true);
240

  
241
		List<Element> elems = pattern.getElements();
242
		elems.add(tam, eleme);
243
	}
244

  
245
	/**
246
	 * This method erases a selected element to the list
247
	 * 
248
	 * @param pos
249
	 *            position
250
	 */
251
	protected void deleteField(int pos) {
252
		int conta = pattern.getElements().size();
253
		if (conta > 1) {
254
			pattern.getElements().remove(pos);
255
		}
256
	}
257

  
258
	/**
259
	 * This method saves a Normalization pattern to XML file *
260
	 */
261
	protected void savePatternXML() {
262

  
263
		JFileChooser jfc = new JFileChooser();
264
		jfc.setDialogTitle(PluginServices.getText(this, "save_norm_pattern"));
265
		String[] extensions = { "xml" };
266
		jfc.setCurrentDirectory(new File(getFolderPattern()));
267
		jfc.addChoosableFileFilter(new GenericFileFilter(extensions,
268
				PluginServices.getText(this, "pattern_norm_file")));
269
		int returnval = jfc.showSaveDialog((Component) PluginServices
270
				.getMainFrame());
271

  
272
		if (returnval == JFileChooser.APPROVE_OPTION) {
273
			File thefile = jfc.getSelectedFile();
274
			// Check if the file has extension .xml
275
			if (!(thefile.getPath().toLowerCase().endsWith(".xml"))) {
276
				thefile = new File(thefile.getPath() + ".xml");
277
			}
278
			try {
279
				// the file exists
280
				if (thefile.exists()) {
281

  
282
					int n = JOptionPane.showConfirmDialog(null, PluginServices
283
							.getText(null, "file_exists"), PluginServices
284
							.getText(null, "save_norm_pattern"),
285
							JOptionPane.YES_NO_OPTION);
286
					if (n == JOptionPane.YES_OPTION) {
287
						writeSaveFile(thefile);
288
					}
289
				}
290
				// the file not exists
291
				else {
292
					writeSaveFile(thefile);
293
				}
294
			} catch (Exception e) {
295
				log.error("Error saving the pattern", e);
296
			}
297
		}
298
	}
299

  
300
	/**
301
	 * This method loads a Normalization pattern from a XML file and return the
302
	 * pattern and the String info
303
	 * 
304
	 * @return pattern
305
	 */
306
	protected Patternnormalization loadPatternXML() {
307

  
308
		PersistenceManager manager = ToolsLocator.getPersistenceManager();
309

  
310
		Patternnormalization pat = new DefaultPatternnormalization();
311
		File thefile = null;
312

  
313
		// Show the FileChooser to select a pattern
314
		JFileChooser jfc = new JFileChooser();
315
		jfc.setCurrentDirectory(new File(getFolderPattern()));
316
		jfc.setDialogTitle(PluginServices.getText(this, "load_norm_pattern"));
317
		String[] extensions = { "xml" };
318
		jfc.addChoosableFileFilter(new GenericFileFilter(extensions,
319
				PluginServices.getText(this, "pattern_norm_file")));
320

  
321
		int returnval = jfc.showOpenDialog((Component) PluginServices
322
				.getMainFrame());
323

  
324
		if (returnval == JFileChooser.APPROVE_OPTION) {
325
			thefile = jfc.getSelectedFile();
326
		} else {
327
			return null;
328
		}
329

  
330
		FileReader reader = null;
331
		PersistentState state = null;
332
		try {
333
			reader = new FileReader(thefile);
334
			state = manager.loadState(reader);
335
			pat.loadFromState(state);
336
			reader.close();
337
		} catch (Exception e) {
338
			log.error("Error loading the pattern", e);
339
			return null;
340
		}
341

  
342
		return pat;
343
	}
344

  
345
	/**
346
	 * This method returns a Element of one position
347
	 * 
348
	 * @param index
349
	 * @return
350
	 */
351
	protected Element getElement(int index) {
352
		Element[] adrs = pattern.getArrayElements();
353
		return adrs[index];
354
	}
355

  
356
	/**
357
	 * This method generates and returns field separators
358
	 * 
359
	 * @return default separators between fields
360
	 */
361
	protected Fieldseparator getDefaultFieldseparators() {
362

  
363
		Fieldseparator filsep = new DefaultFieldseparator();
364
		filsep.setSemicolonsep(true);
365
		filsep.setJoinsep(false);
366
		filsep.setColonsep(false);
367
		filsep.setSpacesep(false);
368
		filsep.setTabsep(false);
369

  
370
		return filsep;
371
	}
372

  
373
	/**
374
	 * @return the pattern
375
	 */
376
	protected Patternnormalization getPattern() {
377
		return pattern;
378
	}
379

  
380
	/**
381
	 * This method sets the pattern
382
	 * 
383
	 * @pat pattern
384
	 */
385
	protected void setPattern(Patternnormalization pat) {
386
		pattern = pat;
387
	}
388

  
389
	/**
390
	 * 
391
	 * @return
392
	 */
393
	protected int getSelectedField() {
394
		return selectedField;
395
	}
396

  
397
	/**
398
	 * 
399
	 * @param selectedField
400
	 */
401
	protected void setSelectedField(int selectedField) {
402
		this.selectedField = selectedField;
403
	}
404

  
405
	/**
406
	 * 
407
	 * @return
408
	 */
409
	protected FeatureStore getStore() {
410
		return store;
411
	}
412

  
413
	/**
414
	 * 
415
	 * @param store
416
	 */
417
	protected void setStore(FeatureStore store) {
418
		this.store = store;
419
	}
420

  
421
	/**
422
	 * set the number of first rows that not normalize
423
	 * 
424
	 * @param first
425
	 *            select the first row
426
	 */
427
	protected void setFirstRows(int first) {
428
		pattern.setNofirstrows(first);
429

  
430
	}
431

  
432
	/**
433
	 * get Normalize the first row
434
	 * 
435
	 * @return normalize first row
436
	 */
437
	protected int getFirstRows() {
438
		return pattern.getNofirstrows();
439

  
440
	}
441

  
442
	/**
443
	 * This method creates the default Normalization pattern
444
	 */
445
	private Patternnormalization initializeDefaultPattern() {
446

  
447
		Patternnormalization pat = new DefaultPatternnormalization();
448

  
449
		pat.setPatternname("defaultPattern");
450
		pat.setNofirstrows(0);
451

  
452
		/* Create the first Address Element */
453
		Element elem = new DefaultElement();
454

  
455
		elem.setFieldname("NewField");
456
		elem.setFieldseparator(getDefaultFieldseparators());
457
		elem.setInfieldseparators(getDefaultInfieldseparators());
458
		elem.setFieldtype(getDefaultNewFieldType());
459
		elem.setFieldwidth(0);
460
		elem.setImportfield(true);
461

  
462
		List<Element> elems = new ArrayList<Element>();
463
		elems.add(elem);
464

  
465
		pat.setElements(elems);
466

  
467
		return pat;
468
	}
469

  
470
	/**
471
	 * This method validates the name of a new field
472
	 * 
473
	 * @param text
474
	 * @return field name formatted
475
	 */
476
	private String validateFieldName(String text) {
477

  
478
		String temp = Normalizer.normalize(text, Normalizer.DECOMP, 0);
479
		temp = temp.replaceAll("[^\\p{ASCII}]", "");
480
		temp = temp.replaceAll("[\\s]+", "_");
481
		temp = temp.toUpperCase();
482

  
483
		return temp;
484
	}
485

  
486
	/**
487
	 * This method generates and returns in field separators
488
	 * 
489
	 * @return special characters within one string
490
	 */
491

  
492
	private Infieldseparators getDefaultInfieldseparators() {
493
		/* create the default in-field separators */
494
		Locale loc = Locale.getDefault();
495
		DecimalFormatSymbols dfs = new DecimalFormatSymbols(loc);
496
		Infieldseparators infilsep = new DefaultInfieldseparators();
497
		infilsep.setThousandseparator(Character.toString(dfs
498
				.getGroupingSeparator()));
499
		infilsep.setDecimalseparator(Character.toString(dfs
500
				.getDecimalSeparator()));
501
		infilsep.setTextseparator("\"");
502
		return infilsep;
503
	}
504

  
505
	/**
506
	 * This method generates and returns a new field type of type Stringvalue
507
	 * 
508
	 * @return field type
509
	 */
510
	private Fieldtype getDefaultNewFieldType() {
511
		Fieldtype newtype = new DefaultFieldtype();
512
		Stringvalue strval = new DefaultStringvalue();
513
		strval.setStringvaluewidth(50);
514
		newtype.setStringvalue(strval);
515
		return newtype;
516
	}
517

  
518
	/**
519
	 * This method write the save xml file
520
	 * 
521
	 * @param file
522
	 * @throws IOException
523
	 * @throws PersistenceException
524
	 */
525
	private void writeSaveFile(File thefile) throws IOException,
526
			PersistenceException {
527

  
528
		PersistenceManager manager = ToolsLocator.getPersistenceManager();
529

  
530
		pattern.setPatternname(thefile.getName());
531

  
532
		Writer writer = new FileWriter(thefile);
533
		PersistentState state = manager.getState(pattern);
534
		state.save(writer);
535
		writer.close();
536
	}
537

  
538
	/**
539
	 * This method return the folder where gvSIG stores the patterns
540
	 * 
541
	 * @return
542
	 */
543
	private String getFolderPattern() {
544
		XMLEntity xml = PluginServices.getPluginServices(this)
545
				.getPersistentXML();
546
		String pathFolder = String.valueOf(xml
547
				.getStringProperty("Normalization_pattern_folder"));
548
		return pathFolder;
549
	}
550

  
551
	/**
552
	 * Gets the strings sample for the table of samples
553
	 * 
554
	 * @return table model
555
	 * @throws DataException 
556
	 */
557
	protected DefaultTableModel getSamplesDataStore(int noRows) throws DataException {
558

  
559
		FeatureSet features = (FeatureSet) store.getDataSet();
560
		Iterator<Feature> it = features.iterator(noRows);
561
		int contador = 0;
562
		while (it.hasNext()) {
563
			Feature feature = (Feature) it.next();
564
			if (contador < SAMPLES) {
565
				String sample = feature.get(selectedField).toString();
566
				samples[contador] = sample;
567
			}
568
		}
569
		// String samples
570
		Object[][] data = new Object[samples.length][1];
571
		for (int i = 0; i < samples.length; i++) {
572
			data[i][0] = samples[i];
573
		}
574
		// table field name
575
		String fieldname = store.getDefaultFeatureType().getAttributeDescriptor(selectedField).getName();
576
		String[] names = { fieldname };
577
		DefaultTableModel tablemodel = new DefaultTableModel(data, names) {
578

  
579
			private static final long serialVersionUID = -7429493540158414622L;
580

  
581
			public boolean isCellEditable(int rowIndex, int columnIndex) {
582
				return false;
583
			}
584
		};
585

  
586
		return tablemodel;
587

  
588
	}
589

  
590
	
591

  
592
}
branches/v2_0_0_prep/extensions/extNormalization/src/org/gvsig/normalization/gui/NormalizationPanel.java
30 30
import java.awt.Component;
31 31
import java.awt.event.ActionEvent;
32 32
import java.awt.event.ActionListener;
33
import java.awt.event.FocusEvent;
34
import java.awt.event.FocusListener;
35
import java.awt.event.ItemEvent;
36
import java.awt.event.ItemListener;
33 37
import java.awt.event.KeyEvent;
34 38
import java.awt.event.KeyListener;
35 39
import java.awt.event.MouseEvent;
36 40
import java.awt.event.MouseListener;
37 41
import java.io.File;
42
import java.io.FileReader;
43
import java.io.FileWriter;
44
import java.io.IOException;
45
import java.io.Writer;
46
import java.text.DecimalFormatSymbols;
47
import java.util.ArrayList;
48
import java.util.Iterator;
49
import java.util.List;
50
import java.util.Locale;
38 51

  
39 52
import javax.swing.BorderFactory;
40 53
import javax.swing.ButtonGroup;
......
46 59
import javax.swing.JCheckBox;
47 60
import javax.swing.JComboBox;
48 61
import javax.swing.JComponent;
62
import javax.swing.JFileChooser;
49 63
import javax.swing.JLabel;
50 64
import javax.swing.JList;
65
import javax.swing.JOptionPane;
51 66
import javax.swing.JPanel;
52 67
import javax.swing.JRadioButton;
53 68
import javax.swing.JScrollPane;
54 69
import javax.swing.JTable;
55
import javax.swing.JTextArea;
56 70
import javax.swing.JTextField;
71
import javax.swing.ListModel;
57 72
import javax.swing.event.ChangeEvent;
58 73
import javax.swing.event.ChangeListener;
74
import javax.swing.event.ListSelectionEvent;
75
import javax.swing.event.ListSelectionListener;
59 76
import javax.swing.table.DefaultTableModel;
77
import javax.swing.table.TableColumn;
78
import javax.swing.table.TableModel;
60 79

  
80
import org.gvsig.app.daltransform.gui.components.impl.FeatureTypeAttributesCombo;
81
import org.gvsig.app.daltransform.gui.components.impl.FeatureTypeCombo;
61 82
import org.gvsig.app.daltransform.gui.impl.AbstractDataTransformWizardPanel;
83
import org.gvsig.fmap.dal.exception.DataException;
84
import org.gvsig.fmap.dal.feature.Feature;
85
import org.gvsig.fmap.dal.feature.FeatureSet;
86
import org.gvsig.fmap.dal.feature.FeatureStore;
87
import org.gvsig.normalization.algorithm.NormalizationAlgorithm;
88
import org.gvsig.normalization.algorithm.impl.DefaultNormalizationAlgorithm;
62 89
import org.gvsig.normalization.pattern.Datevalue;
63 90
import org.gvsig.normalization.pattern.Decimalvalue;
64 91
import org.gvsig.normalization.pattern.Element;
......
70 97
import org.gvsig.normalization.pattern.Stringvalue;
71 98
import org.gvsig.normalization.pattern.impl.DefaultDatevalue;
72 99
import org.gvsig.normalization.pattern.impl.DefaultDecimalvalue;
100
import org.gvsig.normalization.pattern.impl.DefaultElement;
73 101
import org.gvsig.normalization.pattern.impl.DefaultFieldseparator;
74 102
import org.gvsig.normalization.pattern.impl.DefaultFieldtype;
75 103
import org.gvsig.normalization.pattern.impl.DefaultInfieldseparators;
76 104
import org.gvsig.normalization.pattern.impl.DefaultIntegervalue;
105
import org.gvsig.normalization.pattern.impl.DefaultPatternnormalization;
77 106
import org.gvsig.normalization.pattern.impl.DefaultStringvalue;
107
import org.gvsig.tools.ToolsLocator;
108
import org.gvsig.tools.persistence.PersistenceException;
109
import org.gvsig.tools.persistence.PersistenceManager;
110
import org.gvsig.tools.persistence.PersistentState;
78 111
import org.slf4j.Logger;
79 112
import org.slf4j.LoggerFactory;
80 113

  
114
import sun.text.Normalizer;
115

  
81 116
import com.iver.andami.PluginServices;
82
import com.iver.andami.ui.mdiManager.IWindow;
83
import com.iver.andami.ui.mdiManager.WindowInfo;
117
import com.iver.utiles.GenericFileFilter;
118
import com.iver.utiles.XMLEntity;
84 119

  
85 120
/**
86 121
 * Normalization main panel
......
89 124
 * @author <a href="mailto:vsanjaime@prodevelop.es"> Vicente Sanjaime Calvet</a>
90 125
 */
91 126
public class NormalizationPanel extends AbstractDataTransformWizardPanel
92
		implements ActionListener, ChangeListener {
127
		implements ActionListener, ChangeListener, KeyListener, MouseListener,
128
		ListSelectionListener, ItemListener, FocusListener {
93 129

  
130
	// ATTRIBUTES
94 131
	private static final long serialVersionUID = -2882235643001676017L;
95

  
96 132
	private static final Logger log = LoggerFactory
97 133
			.getLogger(NormalizationPanel.class);
134
	private static final int SAMPLES = 3;
135
	private static final int WIDHT = 620;
136
	private static final int HEIGHT = 600;
98 137

  
99
	private NormalizationPanelController controller;
100
	private PluginServices ps;
138
	private Patternnormalization pattern;
139
	private int contador = 1;
140
	private String[] samples = new String[SAMPLES];
101 141
	private boolean dirty = false;
102 142
	private int selectedField = 0;
143
	private String oldNumRows;
103 144

  
104
	/* GUI */
145
	/* ATTRIBUTES GUI */
105 146
	private ButtonGroup butGroupDelimiter;
106 147
	private ButtonGroup butGroupFieldType;
107
	private JButton jButCancel;
108 148
	private JButton jButAddField;
109 149
	private JButton jButDownField;
110 150
	private JButton jButRemoveField;
111 151
	private JButton jButUpField;
112 152
	private JButton jButLoad;
113
	private JButton jButRun;
114 153
	private JButton jButSave;
115 154
	private JButton jButTest;
116 155
	private JCheckBox jCheckFirstRow;
117
	private JCheckBox jChkColon;
156
	private JCheckBox jChkComma;
118 157
	private JCheckBox jChkDontImport;
119 158
	private JCheckBox jChkJoin;
120 159
	private JCheckBox jChkOther;
......
128 167
	private JLabel jLabThousand;
129 168
	private JLabel jLabelSelFields;
130 169
	private JList jListFieldList;
131
	private JList jListOriginalFields;
132 170
	private JPanel jPanApply;
133
	private JPanel jPanConsole;
134 171
	private JPanel jPanFieldList;
135 172
	private JPanel jPanFieldName;
136 173
	private JPanel jPanFieldSeparators;
......
155 192
	private JScrollPane jScrollPane2;
156 193
	private JScrollPane jScrollPaneFieldList;
157 194
	private JScrollPane jScrollPaneSource;
158
	private JTable jTableResult;
159
	private JTable jTableSource;
160
	private JTextArea jTextAreaConsole;
195
	private JTable jTableTest;
196
	private JTable jTableSamples;
161 197
	private JTextField jTextDecimal;
162 198
	private JTextField jTextNumberRows;
163 199
	private JLabel jLabelNumberRows;
......
166 202
	private JTextField jTextOther;
167 203
	private JTextField jTextTextDelimiter;
168 204
	private JTextField jTextThousand;
205
	private FeatureTypeAttributesCombo jComboField;
206
	private FeatureTypeCombo jComboFieldType;
207
	private JPanel jPanField;
208
	private JLabel jLabelFieldType;
209
	private JLabel jLabelField;
169 210

  
170 211
	/**
171
	 * Creates new form NormalizationPanel to normalize field of datastore
172
	 * 
173
	 * @param control
174
	 * @return panel
212
	 * Constructor
175 213
	 */
176
	public NormalizationPanel(NormalizationPanelController control) {
177
		this.controller = control;
178
		init();
179
	}
180

  
181
	/**
182
	 * This method sets the PluginServices and update the string and icons
183
	 * 
184
	 * @param ps
185
	 *            PluginServices
186
	 */
187
	public void setPs(PluginServices ps) {
188
		this.ps = ps;
189
		if (ps != null) {
190
			setMessages();
191
			setImages();
192
		}
193
	}
194

  
195
	/**
196
	 * This method inserts the sample split strings into the Sample Table
197
	 * 
198
	 * @param chains
199
	 *            array with strings
200
	 */
201
	public void insertChainsInRowsTableSample(String[] chains) {
202

  
203
		DefaultTableModel dtm = new DefaultTableModel();
204
		int nfil = dtm.getRowCount();
205
		for (int i = 0; i < nfil; i++) {
206
			dtm.setValueAt(chains[0], i, 0);
207
		}
208
		jTableSource.setModel(dtm);
209
	}
210

  
211
	/**
212
	 * Insert in the console the message
213
	 * 
214
	 * @param e
215
	 */
216
	public void stateChanged(ChangeEvent e) {
217
		String info = parseInfo(e.getSource().toString());
218
		this.jTextAreaConsole.append(info);
219
	}
220

  
221
	/**
222
	 * This method inserts the model in the list with the names of the fields of
223
	 * the original table
224
	 * 
225
	 * @param fieldsNames
226
	 */
227
	public void insertFieldsCurrentTable(String[] fieldsNames) {
228
		DefaultListModel dcb = new DefaultListModel();
229
		int cont = fieldsNames.length;
230
		for (int i = 0; i < cont; i++) {
231
			dcb.addElement(fieldsNames[i]);
232
		}
233
		this.jListOriginalFields.setModel(dcb);
234
		this.jListOriginalFields.setSelectedIndex(0);
235
	}
236

  
237
	/**
238
	 * getWindowInfo
239
	 * 
240
	 * @return windows properties
241
	 */
242
	public WindowInfo getWindowInfo() {
243
		WindowInfo info = new WindowInfo(WindowInfo.MODALDIALOG
244
				| WindowInfo.RESIZABLE);
245
		info.setWidth(780);
246
		info.setHeight(620);
247
		info.setTitle(PluginServices.getText(this, "normalize"));
248
		return info;
249
	}
250

  
251
	/**
252
	 * Initialize components and other custom code
253
	 */
254
	private void init() {
255

  
214
	public NormalizationPanel() {
256 215
		/* Initialize components GUI */
257 216
		initComponents();
258

  
259
		/* Final initialize methods to set up the GUI */
260
		updateGUI();
261

  
262
		jListOriginalFields.setEnabled(false);
217
		setMessages();
218
		setImages();
219
		// load default pattern
220
		pattern = initializeDefaultPattern();
221
		// update GUI
222
		refreshFieldsList();
263 223
	}
264 224

  
265 225
	/**
......
268 228
	private void initComponents() {
269 229
		java.awt.GridBagConstraints gridBagConstraints;
270 230

  
231
		jPanField = new JPanel();
232
		jLabelField = new JLabel();
233
		jComboField = new FeatureTypeAttributesCombo();
234
		jLabelFieldType = new JLabel();
235
		jComboFieldType = new FeatureTypeCombo();
271 236
		butGroupDelimiter = new javax.swing.ButtonGroup();
272 237
		butGroupFieldType = new javax.swing.ButtonGroup();
273 238
		jPanSampleOutput = new javax.swing.JPanel();
274 239
		jScrollPane2 = new javax.swing.JScrollPane();
275
		jTableResult = new javax.swing.JTable();
240
		jTableTest = new javax.swing.JTable();
276 241
		jPanSource = new javax.swing.JPanel();
277 242
		jScrollPaneSource = new javax.swing.JScrollPane();
278
		jTableSource = new javax.swing.JTable();
243
		jTableSamples = new javax.swing.JTable();
279 244
		jPanFirstRow = new javax.swing.JPanel();
280 245
		jCheckFirstRow = new javax.swing.JCheckBox();
281 246
		jTextNumberRows = new javax.swing.JTextField();
......
299 264
		jPanFieldSeparators = new javax.swing.JPanel();
300 265
		jChkTab = new javax.swing.JCheckBox();
301 266
		jChkSpace = new javax.swing.JCheckBox();
302
		jChkColon = new javax.swing.JCheckBox();
267
		jChkComma = new javax.swing.JCheckBox();
303 268
		jChkSemicolon = new javax.swing.JCheckBox();
304 269
		jChkOther = new javax.swing.JCheckBox();
305 270
		jTextOther = new javax.swing.JTextField();
......
325 290
		jRadioAlterTable = new javax.swing.JRadioButton();
326 291
		jRadioNewTable = new javax.swing.JRadioButton();
327 292
		jLabelSelFields = new javax.swing.JLabel();
328
		jListOriginalFields = new javax.swing.JList();
329
		jPanConsole = new javax.swing.JPanel();
330
		jTextAreaConsole = new javax.swing.JTextArea();
331 293
		jButLoad = new javax.swing.JButton();
332
		jButRun = new javax.swing.JButton();
333
		jButCancel = new javax.swing.JButton();
334 294
		jButSave = new javax.swing.JButton();
335 295

  
336
		setMinimumSize(new java.awt.Dimension(600, 620));
337
		setPreferredSize(new java.awt.Dimension(600, 620));
338
		addFocusListener(new java.awt.event.FocusAdapter() {
339
			public void focusGained(java.awt.event.FocusEvent evt) {
340
				mainPanelGetFocus(evt);
341
			}
342
		});
296
		setMinimumSize(new java.awt.Dimension(WIDHT, HEIGHT));
297
		setPreferredSize(new java.awt.Dimension(WIDHT, HEIGHT));
298
		addFocusListener(this);
343 299
		setLayout(new java.awt.GridBagLayout());
344 300

  
345 301
		jPanSampleOutput.setBorder(javax.swing.BorderFactory
......
352 308
		jScrollPane2.setMinimumSize(new java.awt.Dimension(100, 90));
353 309
		jScrollPane2.setPreferredSize(new java.awt.Dimension(100, 90));
354 310

  
355
		jTableResult.setFont(new java.awt.Font("Courier New", 0, 11));
356
		jTableResult.setModel(new javax.swing.table.DefaultTableModel(
311
		jTableTest.setFont(new java.awt.Font("Courier New", 0, 11));
312
		jTableTest.setModel(new javax.swing.table.DefaultTableModel(
357 313
				new Object[][] { {}, {}, {} }, new String[] {
358 314

  
359 315
				}));
360
		jTableResult.setAutoResizeMode(javax.swing.JTable.AUTO_RESIZE_OFF);
361
		jTableResult.setEnabled(false);
362
		jScrollPane2.setViewportView(jTableResult);
316
		jTableTest.setAutoResizeMode(javax.swing.JTable.AUTO_RESIZE_OFF);
317
		jTableTest.setEnabled(false);
318
		jTableTest.setRowSelectionAllowed(false);
319
		jScrollPane2.setViewportView(jTableTest);
363 320

  
364 321
		gridBagConstraints = new java.awt.GridBagConstraints();
365 322
		gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
366 323
		gridBagConstraints.weightx = 1.0;
324
		gridBagConstraints.weighty = 1.0;
367 325
		jPanSampleOutput.add(jScrollPane2, gridBagConstraints);
368 326

  
369 327
		gridBagConstraints = new java.awt.GridBagConstraints();
......
371 329
		gridBagConstraints.gridy = 2;
372 330
		gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
373 331
		gridBagConstraints.weightx = 1.0;
374
		gridBagConstraints.insets = new java.awt.Insets(0, 5, 5, 5);
332
		gridBagConstraints.insets = new java.awt.Insets(0, 3, 4, 3);
375 333
		add(jPanSampleOutput, gridBagConstraints);
376 334

  
377 335
		jPanSource.setBorder(javax.swing.BorderFactory
......
382 340
		jScrollPaneSource.setMinimumSize(new java.awt.Dimension(100, 90));
383 341
		jScrollPaneSource.setPreferredSize(new java.awt.Dimension(100, 90));
384 342

  
385
		jTableSource.setFont(new java.awt.Font("Courier New", 0, 11));
386
		jTableSource.setModel(new DefaultTableModel());
387
		jTableSource.getTableHeader().setReorderingAllowed(false);
388
		jScrollPaneSource.setViewportView(jTableSource);
343
		jPanField.setLayout(new java.awt.GridBagLayout());
389 344

  
345
		jLabelFieldType.setText("selectFieldType");
390 346
		gridBagConstraints = new java.awt.GridBagConstraints();
391 347
		gridBagConstraints.gridx = 0;
392 348
		gridBagConstraints.gridy = 0;
349
		gridBagConstraints.insets = new java.awt.Insets(0, 0, 0, 6);
350
		jPanField.add(jLabelFieldType, gridBagConstraints);
351

  
352
		jComboFieldType.setMinimumSize(new java.awt.Dimension(100, 20));
353
		gridBagConstraints = new java.awt.GridBagConstraints();
354
		gridBagConstraints.gridx = 1;
355
		gridBagConstraints.gridy = 0;
356
		gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
357
		gridBagConstraints.weightx = 1.0;
358
		gridBagConstraints.insets = new java.awt.Insets(0, 0, 0, 0);
359
		jPanField.add(jComboFieldType, gridBagConstraints);
360

  
361
		jLabelField.setText("selectField");
362
		gridBagConstraints = new java.awt.GridBagConstraints();
363
		gridBagConstraints.gridx = 0;
364
		gridBagConstraints.gridy = 1;
365
		gridBagConstraints.insets = new java.awt.Insets(5, 0, 0, 6);
366
		jPanField.add(jLabelField, gridBagConstraints);
367

  
368
		jComboField.setMinimumSize(new java.awt.Dimension(100, 20));
369
		jComboField.addActionListener(this);
370
		gridBagConstraints = new java.awt.GridBagConstraints();
371
		gridBagConstraints.gridx = 1;
372
		gridBagConstraints.gridy = 1;
373
		gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
374
		gridBagConstraints.weightx = 1.0;
375
		gridBagConstraints.insets = new java.awt.Insets(5, 0, 0, 0);
376
		jPanField.add(jComboField, gridBagConstraints);
377

  
378
		gridBagConstraints = new java.awt.GridBagConstraints();
379
		gridBagConstraints.gridx = 0;
380
		gridBagConstraints.gridy = 0;
381
		gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
382
		gridBagConstraints.weightx = 1.0;
383
		gridBagConstraints.insets = new java.awt.Insets(1, 15, 4, 25);
384
		jPanSource.add(jPanField, gridBagConstraints);
385

  
386
		jTableSamples.setFont(new java.awt.Font("Courier New", 0, 11));
387
		jTableSamples.setModel(new DefaultTableModel());
388
		jTableSamples.getTableHeader().setReorderingAllowed(false);
389
		jTableSamples.setRowSelectionAllowed(false);
390
		jScrollPaneSource.setViewportView(jTableSamples);
391

  
392
		gridBagConstraints = new java.awt.GridBagConstraints();
393
		gridBagConstraints.gridx = 0;
394
		gridBagConstraints.gridy = 1;
393 395
		gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
394 396
		gridBagConstraints.weightx = 1.0;
395 397
		gridBagConstraints.weighty = 1.0;
......
400 402
		jCheckFirstRow.setText("Don't normalize the first row");
401 403
		jCheckFirstRow.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
402 404
		jCheckFirstRow.setSelected(false);
403
		jCheckFirstRow.addActionListener(new java.awt.event.ActionListener() {
404
			public void actionPerformed(java.awt.event.ActionEvent evt) {
405
				EvCheckFirstRow(evt);
406
			}
407
		});
405
		jCheckFirstRow.addActionListener(this);
408 406
		gridBagConstraints = new java.awt.GridBagConstraints();
409 407
		gridBagConstraints.gridx = 0;
410 408
		gridBagConstraints.gridy = 0;
......
419 417
		jTextNumberRows.setMaximumSize(new java.awt.Dimension(30, 18));
420 418
		jTextNumberRows.setMinimumSize(new java.awt.Dimension(30, 18));
421 419
		jTextNumberRows.setPreferredSize(new java.awt.Dimension(30, 18));
422

  
423
		jTextNumberRows.addKeyListener(new java.awt.event.KeyAdapter() {
424
			public void keyReleased(java.awt.event.KeyEvent evt) {
425
				firstRowsvalueChange();
426
			}
427
		});
420
		jTextNumberRows.addKeyListener(this);
428 421
		gridBagConstraints = new java.awt.GridBagConstraints();
429 422
		gridBagConstraints.gridx = 1;
430 423
		gridBagConstraints.gridy = 0;
......
444 437

  
445 438
		gridBagConstraints = new java.awt.GridBagConstraints();
446 439
		gridBagConstraints.gridx = 0;
447
		gridBagConstraints.gridy = 1;
440
		gridBagConstraints.gridy = 2;
448 441
		gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
449 442
		gridBagConstraints.weightx = 1.0;
450 443
		jPanSource.add(jPanFirstRow, gridBagConstraints);
......
454 447
		gridBagConstraints.gridy = 0;
455 448
		gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
456 449
		gridBagConstraints.weightx = 1.0;
457
		gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
450
		gridBagConstraints.weighty = 1.0;
451
		gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
458 452
		add(jPanSource, gridBagConstraints);
459 453

  
460 454
		jPanFields.setLayout(new java.awt.GridBagLayout());
......
467 461

  
468 462
		jListFieldList
469 463
				.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);
470
		jListFieldList.addMouseListener(new MouseListener() {
471
			public void mouseClicked(MouseEvent e) {
472
			}
473

  
474
			public void mouseEntered(MouseEvent e) {
475
			}
476

  
477
			public void mouseExited(MouseEvent e) {
478
			}
479

  
480
			public void mousePressed(MouseEvent e) {
481
				selectedField = jListFieldList.getSelectedIndex();
482
			}
483

  
484
			public void mouseReleased(MouseEvent e) {
485
			}
486
		});
487
		jListFieldList
488
				.addListSelectionListener(new javax.swing.event.ListSelectionListener() {
489
					public void valueChanged(
490
							javax.swing.event.ListSelectionEvent evt) {
491
						jListFieldListValueChanged(evt);
492
					}
493
				});
464
		jListFieldList.addMouseListener(this);
465
		jListFieldList.addListSelectionListener(this);
494 466
		jScrollPaneFieldList.setViewportView(jListFieldList);
495

  
496 467
		gridBagConstraints = new java.awt.GridBagConstraints();
497 468
		gridBagConstraints.gridx = 0;
498 469
		gridBagConstraints.gridy = 0;
......
507 478
		jButAddField.setMargin(new java.awt.Insets(5, 5, 5, 5));
508 479
		jButAddField.setMaximumSize(new java.awt.Dimension(30, 30));
509 480
		jButAddField.setMinimumSize(new java.awt.Dimension(30, 30));
510
		jButAddField.addActionListener(new java.awt.event.ActionListener() {
511
			public void actionPerformed(java.awt.event.ActionEvent evt) {
512
				ActionButtonAddField(evt);
513
			}
514
		});
481
		jButAddField.addActionListener(this);
515 482
		gridBagConstraints = new java.awt.GridBagConstraints();
516 483
		gridBagConstraints.gridx = 1;
517 484
		gridBagConstraints.gridy = 2;
518 485
		gridBagConstraints.anchor = java.awt.GridBagConstraints.SOUTH;
519 486
		gridBagConstraints.weighty = 1.0;
520
		gridBagConstraints.insets = new java.awt.Insets(0, 5, 5, 5);
487
		gridBagConstraints.insets = new java.awt.Insets(0, 2, 5, 2);
521 488
		jPanFieldList.add(jButAddField, gridBagConstraints);
522 489

  
523 490
		jButRemoveField.setBorderPainted(false);
524 491
		jButRemoveField.setMargin(new java.awt.Insets(5, 5, 5, 5));
525 492
		jButRemoveField.setMaximumSize(new java.awt.Dimension(30, 30));
526
		jButRemoveField.addActionListener(new java.awt.event.ActionListener() {
527
			public void actionPerformed(java.awt.event.ActionEvent evt) {
528
				ActionButtonRemove(evt);
529
			}
530
		});
493
		jButRemoveField.addActionListener(this);
531 494
		gridBagConstraints = new java.awt.GridBagConstraints();
532 495
		gridBagConstraints.gridx = 1;
533 496
		gridBagConstraints.gridy = 3;
534 497
		gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTH;
535
		gridBagConstraints.insets = new java.awt.Insets(0, 5, 5, 5);
498
		gridBagConstraints.insets = new java.awt.Insets(0, 2, 0, 2);
536 499
		jPanFieldList.add(jButRemoveField, gridBagConstraints);
537 500

  
538 501
		jButUpField.setForeground(java.awt.SystemColor.activeCaptionBorder);
539

  
540 502
		jButUpField.setBorderPainted(false);
541 503
		jButUpField.setMargin(new java.awt.Insets(5, 5, 5, 5));
542 504
		jButUpField.setMaximumSize(new java.awt.Dimension(30, 30));
543
		jButUpField.addActionListener(new java.awt.event.ActionListener() {
544
			public void actionPerformed(java.awt.event.ActionEvent evt) {
545
				ActionButtonUp(evt);
546
			}
547
		});
505
		jButUpField.addActionListener(this);
548 506
		gridBagConstraints = new java.awt.GridBagConstraints();
549 507
		gridBagConstraints.gridx = 1;
550 508
		gridBagConstraints.gridy = 0;
551 509
		gridBagConstraints.anchor = java.awt.GridBagConstraints.SOUTH;
552
		gridBagConstraints.insets = new java.awt.Insets(0, 5, 0, 5);
510
		gridBagConstraints.insets = new java.awt.Insets(0, 2, 0, 2);
553 511
		jPanFieldList.add(jButUpField, gridBagConstraints);
554 512

  
555 513
		jButDownField.setBorderPainted(false);
556 514
		jButDownField.setMargin(new java.awt.Insets(5, 5, 5, 5));
557 515
		jButDownField.setMaximumSize(new java.awt.Dimension(30, 30));
558 516
		jButDownField.setMinimumSize(new java.awt.Dimension(30, 30));
559
		jButDownField.addActionListener(new java.awt.event.ActionListener() {
560
			public void actionPerformed(java.awt.event.ActionEvent evt) {
561
				ActionButtonDown(evt);
562
			}
563
		});
517
		jButDownField.addActionListener(this);
564 518
		gridBagConstraints = new java.awt.GridBagConstraints();
565 519
		gridBagConstraints.gridx = 1;
566 520
		gridBagConstraints.gridy = 1;
567 521
		gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTH;
568 522
		gridBagConstraints.weighty = 1.0;
569
		gridBagConstraints.insets = new java.awt.Insets(5, 5, 0, 5);
523
		gridBagConstraints.insets = new java.awt.Insets(5, 2, 0, 2);
570 524
		jPanFieldList.add(jButDownField, gridBagConstraints);
571 525

  
572 526
		gridBagConstraints = new java.awt.GridBagConstraints();
......
588 542
		jRadioString.setSelected(true);
589 543
		jRadioString.setText("String");
590 544
		jRadioString.setAlignmentY(1.0F);
591
		jRadioString.addActionListener(new java.awt.event.ActionListener() {
592
			public void actionPerformed(java.awt.event.ActionEvent evt) {
593
				updateStringType(evt);
594
			}
595
		});
545
		jRadioString.addActionListener(this);
596 546
		gridBagConstraints = new java.awt.GridBagConstraints();
597 547
		gridBagConstraints.gridx = 0;
598 548
		gridBagConstraints.gridy = 0;
599 549
		gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
600
		gridBagConstraints.insets = new java.awt.Insets(0, 5, 5, 5);
550
		gridBagConstraints.insets = new java.awt.Insets(0, 3, 5, 3);
601 551
		jPanFieldType.add(jRadioString, gridBagConstraints);
602 552

  
603 553
		butGroupFieldType.add(jRadioInteger);
604 554
		jRadioInteger.setText("Integer");
605
		jRadioInteger.addActionListener(new java.awt.event.ActionListener() {
606
			public void actionPerformed(java.awt.event.ActionEvent evt) {
607
				updateIntegerType(evt);
608
			}
609
		});
555
		jRadioInteger.addActionListener(this);
610 556
		gridBagConstraints = new java.awt.GridBagConstraints();
611 557
		gridBagConstraints.gridx = 0;
612 558
		gridBagConstraints.gridy = 1;
613 559
		gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
614 560
		gridBagConstraints.weighty = 1.0;
615
		gridBagConstraints.insets = new java.awt.Insets(0, 5, 5, 5);
561
		gridBagConstraints.insets = new java.awt.Insets(0, 3, 5, 3);
616 562
		jPanFieldType.add(jRadioInteger, gridBagConstraints);
617 563

  
618 564
		butGroupFieldType.add(jRadioDecimal);
619 565
		jRadioDecimal.setText("Decimal");
620
		jRadioDecimal.addActionListener(new java.awt.event.ActionListener() {
621
			public void actionPerformed(java.awt.event.ActionEvent evt) {
622
				updateDecimalType(evt);
623
			}
624
		});
566
		jRadioDecimal.addActionListener(this);
625 567
		gridBagConstraints = new java.awt.GridBagConstraints();
626 568
		gridBagConstraints.gridx = 0;
627 569
		gridBagConstraints.gridy = 2;
628 570
		gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
629
		gridBagConstraints.insets = new java.awt.Insets(0, 5, 5, 5);
571
		gridBagConstraints.insets = new java.awt.Insets(0, 3, 5, 3);
630 572
		jPanFieldType.add(jRadioDecimal, gridBagConstraints);
631 573

  
632 574
		butGroupFieldType.add(jRadioDate);
633 575
		jRadioDate.setText("Date");
634
		jRadioDate.addItemListener(new java.awt.event.ItemListener() {
635
			public void itemStateChanged(java.awt.event.ItemEvent evt) {
636
				dateStateChanged(evt);
637
			}
638
		});
576
		jRadioDate.addItemListener(this);
639 577
		gridBagConstraints = new java.awt.GridBagConstraints();
640 578
		gridBagConstraints.gridx = 0;
641 579
		gridBagConstraints.gridy = 3;
642 580
		gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
643 581
		gridBagConstraints.weighty = 1.0;
644
		gridBagConstraints.insets = new java.awt.Insets(0, 5, 5, 5);
582
		gridBagConstraints.insets = new java.awt.Insets(0, 3, 5, 3);
645 583
		jPanFieldType.add(jRadioDate, gridBagConstraints);
646 584

  
647 585
		jComboDate.setEditable(true);
......
649 587
				"dd/MM/yy", "dd/MM/yyyy", "MM/dd/yyyy", "yyyy/MM/dd",
650 588
				"yy/MM/dd" }));
651 589
		jComboDate.setEnabled(false);
652
		jComboDate.addActionListener(new java.awt.event.ActionListener() {
653
			public void actionPerformed(java.awt.event.ActionEvent evt) {
654
				ActionListDateFormat(evt);
655
			}
656
		});
590
		jComboDate.addActionListener(this);
657 591
		gridBagConstraints = new java.awt.GridBagConstraints();
658 592
		gridBagConstraints.gridx = 0;
659 593
		gridBagConstraints.gridy = 4;
660 594
		gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
661 595
		gridBagConstraints.weightx = 1.0;
662 596
		gridBagConstraints.weighty = 1.0;
663
		gridBagConstraints.insets = new java.awt.Insets(0, 5, 5, 5);
597
		gridBagConstraints.insets = new java.awt.Insets(0, 3, 5, 3);
664 598
		jPanFieldType.add(jComboDate, gridBagConstraints);
665 599

  
666 600
		gridBagConstraints = new java.awt.GridBagConstraints();
......
681 615
		jPanFieldSeparators.setLayout(new java.awt.GridBagLayout());
682 616

  
683 617
		jChkTab.setText("Tab");
684
		jChkTab.addActionListener(new java.awt.event.ActionListener() {
685
			public void actionPerformed(java.awt.event.ActionEvent evt) {
686
				ActionTab(evt);
687
			}
688
		});
618
		jChkTab.addActionListener(this);
689 619
		gridBagConstraints = new java.awt.GridBagConstraints();
690 620
		gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
691 621
		jPanFieldSeparators.add(jChkTab, gridBagConstraints);
692 622

  
693 623
		jChkSpace.setText("Space");
694
		jChkSpace.addActionListener(new java.awt.event.ActionListener() {
695
			public void actionPerformed(java.awt.event.ActionEvent evt) {
696
				ActionSpace(evt);
697
			}
698
		});
624
		jChkSpace.addActionListener(this);
699 625
		gridBagConstraints = new java.awt.GridBagConstraints();
700 626
		gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
701 627
		jPanFieldSeparators.add(jChkSpace, gridBagConstraints);
702 628

  
703
		jChkColon.setText("Colon");
704
		jChkColon.addActionListener(new java.awt.event.ActionListener() {
705
			public void actionPerformed(java.awt.event.ActionEvent evt) {
706
				ActionColon(evt);
707
			}
708
		});
629
		jChkComma.setText("Comma");
630
		jChkComma.addActionListener(this);
709 631
		gridBagConstraints = new java.awt.GridBagConstraints();
710 632
		gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
711
		jPanFieldSeparators.add(jChkColon, gridBagConstraints);
633
		jPanFieldSeparators.add(jChkComma, gridBagConstraints);
712 634

  
713 635
		jChkSemicolon.setText("Semicolon");
714
		jChkSemicolon.addActionListener(new java.awt.event.ActionListener() {
715
			public void actionPerformed(java.awt.event.ActionEvent evt) {
716
				ActionSemicolon(evt);
717
			}
718
		});
636
		jChkSemicolon.addActionListener(this);
719 637
		gridBagConstraints = new java.awt.GridBagConstraints();
720 638
		gridBagConstraints.gridy = 1;
721 639
		gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
722 640
		jPanFieldSeparators.add(jChkSemicolon, gridBagConstraints);
723 641

  
724 642
		jChkOther.setText("Other");
725
		jChkOther.addActionListener(new java.awt.event.ActionListener() {
726
			public void actionPerformed(java.awt.event.ActionEvent evt) {
727
				enableOtherText(evt);
728
			}
729
		});
643
		jChkOther.addActionListener(this);
730 644
		gridBagConstraints = new java.awt.GridBagConstraints();
731 645
		gridBagConstraints.gridy = 1;
732 646
		gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
......
735 649
		jTextOther.setEditable(false);
736 650
		jTextOther.setMinimumSize(new java.awt.Dimension(30, 20));
737 651
		jTextOther.setPreferredSize(new java.awt.Dimension(30, 20));
738
		jTextOther.addActionListener(new java.awt.event.ActionListener() {
739
			public void actionPerformed(java.awt.event.ActionEvent evt) {
740
				ActionTextOther(evt);
741
			}
742
		});
652
		jTextOther.addActionListener(this);
743 653
		gridBagConstraints = new java.awt.GridBagConstraints();
744 654
		gridBagConstraints.gridy = 1;
745 655
		gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
746 656
		jPanFieldSeparators.add(jTextOther, gridBagConstraints);
747 657

  
748 658
		jChkJoin.setText("Join consecutive delimiters ");
749
		jChkJoin.addActionListener(new java.awt.event.ActionListener() {
750
			public void actionPerformed(java.awt.event.ActionEvent evt) {
751
				ActionJoinSep(evt);
752
			}
753
		});
659
		jChkJoin.addActionListener(this);
754 660
		gridBagConstraints = new java.awt.GridBagConstraints();
755 661
		gridBagConstraints.gridx = 0;
756 662
		gridBagConstraints.gridy = 3;
......
770 676

  
771 677
		butGroupDelimiter.add(jRadioFixed);
772 678
		jRadioFixed.setText("Fixed width");
773
		jRadioFixed.addActionListener(new java.awt.event.ActionListener() {
774
			public void actionPerformed(java.awt.event.ActionEvent evt) {
775
				fixedWidthEnable(evt);
776
			}
777
		});
679
		jRadioFixed.addActionListener(this);
778 680
		gridBagConstraints = new java.awt.GridBagConstraints();
779 681
		gridBagConstraints.gridx = 1;
780 682
		gridBagConstraints.gridy = 0;
......
784 686
		butGroupDelimiter.add(jRadioCharacter);
785 687
		jRadioCharacter.setSelected(true);
786 688
		jRadioCharacter.setText("Character");
787
		jRadioCharacter.addActionListener(new java.awt.event.ActionListener() {
788
			public void actionPerformed(java.awt.event.ActionEvent evt) {
789
				charDelimitedEnable(evt);
790
			}
791
		});
689
		jRadioCharacter.addActionListener(this);
792 690
		gridBagConstraints = new java.awt.GridBagConstraints();
793 691
		gridBagConstraints.gridx = 0;
794 692
		gridBagConstraints.gridy = 0;
......
800 698
		jTextFieldWidth.setInputVerifier(new IntVerifier());
801 699
		jTextFieldWidth.setMinimumSize(new java.awt.Dimension(40, 20));
802 700
		jTextFieldWidth.setPreferredSize(new java.awt.Dimension(40, 20));
803
		jTextFieldWidth.addKeyListener(new KeyListener() {
804
			public void keyPressed(KeyEvent evt) {
805
			}
806

  
807
			public void keyTyped(KeyEvent evt) {
808
			}
809

  
810
			public void keyReleased(KeyEvent e) {
811
				ActionTextFixedWidth(e);
812
			}
813
		});
701
		jTextFieldWidth.addKeyListener(this);
814 702
		gridBagConstraints = new java.awt.GridBagConstraints();
815 703
		gridBagConstraints.gridx = 2;
816 704
		gridBagConstraints.gridy = 0;
......
827 715
		jPanFieldName.setLayout(new java.awt.GridBagLayout());
828 716

  
829 717
		jChkDontImport.setText("Don't import");
830
		jChkDontImport.addActionListener(new java.awt.event.ActionListener() {
831
			public void actionPerformed(java.awt.event.ActionEvent evt) {
832
				ActionDontImport(evt);
833
			}
834
		});
718
		jChkDontImport.addActionListener(this);
835 719
		gridBagConstraints = new java.awt.GridBagConstraints();
836 720
		gridBagConstraints.gridx = 3;
837 721
		gridBagConstraints.insets = new java.awt.Insets(5, 15, 5, 5);
......
847 731
		jTextFieldName.setText("Field1");
848 732
		jTextFieldName.setMinimumSize(new java.awt.Dimension(100, 20));
849 733
		jTextFieldName.setPreferredSize(new java.awt.Dimension(100, 20));
850
		jTextFieldName.addKeyListener(new KeyListener() {
851
			public void keyPressed(KeyEvent e) {
852
			}
853

  
854
			public void keyReleased(KeyEvent e) {
855
				KeyChangesFieldName(e);
856
			}
857

  
858
			public void keyTyped(KeyEvent e) {
859
			}
860
		});
734
		jTextFieldName.addKeyListener(this);
861 735
		gridBagConstraints = new java.awt.GridBagConstraints();
862 736
		gridBagConstraints.gridx = 1;
863 737
		gridBagConstraints.gridy = 0;
......
879 753
		jPanApply.setLayout(new java.awt.GridBagLayout());
880 754

  
881 755
		jButSave.setText("Save");
882
		jButSave.addActionListener(new java.awt.event.ActionListener() {
883
			public void actionPerformed(java.awt.event.ActionEvent evt) {
884
				jButSaveActionPerformed(evt);
885
			}
886
		});
756
		jButSave.setEnabled(false);
757
		jButSave.addActionListener(this);
887 758
		gridBagConstraints = new java.awt.GridBagConstraints();
888 759
		gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
889
		gridBagConstraints.insets = new java.awt.Insets(5, 5, 0, 5);
760
		gridBagConstraints.insets = new java.awt.Insets(3, 3, 0, 3);
890 761
		gridBagConstraints.gridx = 0;
891 762
		gridBagConstraints.gridy = 0;
892 763
		jPanApply.add(jButSave, gridBagConstraints);
893 764

  
894 765
		jButLoad.setText("Load");
895
		jButLoad.addActionListener(new java.awt.event.ActionListener() {
896
			public void actionPerformed(java.awt.event.ActionEvent evt) {
897
				jButLoadActionPerformed(evt);
898
			}
899
		});
766
		jButLoad.setEnabled(false);
767
		jButLoad.addActionListener(this);
900 768
		gridBagConstraints = new java.awt.GridBagConstraints();
901 769
		gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
902
		gridBagConstraints.insets = new java.awt.Insets(5, 5, 0, 5);
770
		gridBagConstraints.insets = new java.awt.Insets(3, 3, 0, 3);
903 771
		gridBagConstraints.gridx = 0;
904 772
		gridBagConstraints.gridy = 1;
905 773
		jPanApply.add(jButLoad, gridBagConstraints);
906 774

  
907 775
		jButTest.setText("Test");
908
		jButTest.addActionListener(new java.awt.event.ActionListener() {
909
			public void actionPerformed(java.awt.event.ActionEvent evt) {
910
				testNormalizer(evt);
911
			}
912
		});
776
		jButTest.addActionListener(this);
913 777
		gridBagConstraints = new java.awt.GridBagConstraints();
914 778
		gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
915
		gridBagConstraints.insets = new java.awt.Insets(5, 5, 0, 5);
779
		gridBagConstraints.insets = new java.awt.Insets(3, 3, 0, 3);
916 780
		gridBagConstraints.gridx = 0;
917 781
		gridBagConstraints.gridy = 2;
918 782
		jPanApply.add(jButTest, gridBagConstraints);
......
938 802
		gridBagConstraints = new java.awt.GridBagConstraints();
939 803
		gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
940 804
		gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
941
		gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 15);
805
		gridBagConstraints.insets = new java.awt.Insets(5, 3, 0, 10);
942 806
		jPanInField.add(jLabDecimal, gridBagConstraints);
943 807

  
944 808
		jTextDecimal.setText(".");
945 809
		jTextDecimal.setInputVerifier(new CharVerifier());
946 810
		jTextDecimal.setMinimumSize(new java.awt.Dimension(30, 20));
947 811
		jTextDecimal.setPreferredSize(new java.awt.Dimension(30, 20));
948
		jTextDecimal.addFocusListener(new java.awt.event.FocusAdapter() {
949
			public void focusLost(java.awt.event.FocusEvent evt) {
950
				ActionDecimal(evt);
951
			}
952
		});
812
		jTextDecimal.addFocusListener(this);
953 813
		gridBagConstraints = new java.awt.GridBagConstraints();
954 814
		gridBagConstraints.gridx = 1;
... This diff was truncated because it exceeds the maximum size that can be displayed.

Also available in: Unified diff