Revision 1947 org.gvsig.tools/library/trunk/org.gvsig.tools/org.gvsig.tools.dynform/org.gvsig.tools.dynform.services/src/main/java/org/gvsig/tools/dynform/services/dynform/AbeilleJDynForm.java

View differences:

AbeilleJDynForm.java
20 20
import org.gvsig.tools.dynform.spi.DynFormSPIManager;
21 21

  
22 22
import com.jeta.forms.components.panel.FormPanel;
23
import java.awt.event.ActionEvent;
24
import java.awt.event.ActionListener;
23 25
import java.io.File;
24 26
import java.util.ArrayList;
25 27
import java.util.List;
......
33 35
import org.apache.commons.io.FilenameUtils;
34 36
import org.apache.commons.io.IOUtils;
35 37
import org.apache.commons.lang3.StringUtils;
38
import org.gvsig.expressionevaluator.Function;
36 39
import org.gvsig.tools.dataTypes.CoercionException;
37 40
import org.gvsig.tools.dynform.spi.DynFormSPIManager.ComponentsFactory;
38 41
import static org.gvsig.tools.dynform.spi.DynFormSPIManager.TAG_DYNFORM_ABEILLE_FORM;
42
import static org.gvsig.tools.dynform.spi.DynFormSPIManager.USERCODE_FORM_CLEAR;
43
import static org.gvsig.tools.dynform.spi.DynFormSPIManager.USERCODE_FORM_ISMODIFIED;
44
import static org.gvsig.tools.dynform.spi.DynFormSPIManager.USERCODE_FORM_ISREADONLY;
45
import static org.gvsig.tools.dynform.spi.DynFormSPIManager.USERCODE_FORM_ONFIELDCHANGED;
46
import static org.gvsig.tools.dynform.spi.DynFormSPIManager.USERCODE_FORM_ONFIELDENTER;
47
import static org.gvsig.tools.dynform.spi.DynFormSPIManager.USERCODE_FORM_ONFIELDEXIT;
48
import static org.gvsig.tools.dynform.spi.DynFormSPIManager.USERCODE_FORM_ONLOAD;
49
import static org.gvsig.tools.dynform.spi.DynFormSPIManager.USERCODE_FORM_ONSETVALUES;
50
import static org.gvsig.tools.dynform.spi.DynFormSPIManager.USERCODE_FORM_VALIDATE;
39 51
import org.gvsig.tools.dynform.spi.dynform.JDynFormFactory;
40 52
import org.gvsig.tools.dynform.spi.dynformfield.AbstractJDynFormField;
41 53
import org.gvsig.tools.dynform.spi.dynformfield.JDynFormFieldFactory;
......
79 91

  
80 92
        private static final String PREFIX_JCHECKBOX = "chk";
81 93
        private static final String PREFIX_JLABEL = "lbl";
94
        private static final String PREFIX_DROPDOWN = "lblDdn";
82 95
        private static final String PREFIX_JCOMBOBOX = "cbo";
83 96
        private static final String PREFIX_JSPINNER = "spn";
84 97
        private static final String PREFIX_JTEXTFIELD = "txt";
......
98 111
            String[] prefixes = new String[] {
99 112
                PREFIX_JCHECKBOX,
100 113
                PREFIX_JLABEL,
114
                PREFIX_DROPDOWN,
101 115
                PREFIX_JCOMBOBOX,
102 116
                PREFIX_JSPINNER,
103 117
                PREFIX_JTEXTFIELD,
......
326 340
                    LOGGER.warn("Can't load field '"+definition.getName()+"' for abeille form '"+resourceName+"'.", th1);
327 341
                }
328 342
            }
343
            this.bindUserCode(form);
344
            this.callUserEvent(USERCODE_FORM_ONLOAD, this);
329 345
        } catch (Throwable th) {
330 346
            LOGGER.warn("Can't load abeille form '"+resourceName+"'.", th);
331 347
        } finally {
......
335 351

  
336 352
        return form;
337 353
    }
354
    
355
    private void bindUserCode(FormPanel form) {
356
        for(Function fn : this.getUserFunctions()) {
357
            String name = fn.name();
358
            if( name.endsWith("_click") ) {
359
                Component c = form.getComponentByName(name.substring(0, name.length()-6));
360
                if( c instanceof JButton ) {
361
                    JButton button = (JButton) c;
362
                    final String fnName = fn.name();
363
                    button.addActionListener(new ActionListener() {
364
                        @Override
365
                        public void actionPerformed(ActionEvent e) {
366
                            callUserEvent(fnName, e);
367
                        }
368
                    });
369
                }
370
            }
371
        }
372
        
373
    }
338 374

  
339 375
    @Override
340 376
    public void setValues(DynObject values) {
......
351 387
                LOGGER.warn("Can't set value to field '"+name+"'.",ex);
352 388
            }
353 389
        }
390
        this.callUserEvent(USERCODE_FORM_ONSETVALUES, this, values);
391
        if( this.hasUserFunction(USERCODE_FORM_ISREADONLY) ) {
392
            boolean isReadOnly = false;
393
            try {
394
                isReadOnly = (boolean) this.callUserFunction(USERCODE_FORM_ISREADONLY, this, values);
395
            } catch (Exception ex) {
396
            }
397
            if( isReadOnly ) {
398
                this.setReadOnly(true);
399
            }
400
        }
401
        
354 402
    }
355 403

  
356 404
    public Iterable<JDynFormField> getFields() {
......
409 457
                return false;
410 458
            }
411 459
        }
412
        return true;
460
        boolean validate = true;
461
        if( this.hasUserFunction(USERCODE_FORM_VALIDATE) ) {
462
            try {
463
                validate = (boolean) this.callUserFunction(USERCODE_FORM_VALIDATE, this);
464
            } catch (Exception ex) {
465
            }
466
        }
467
        return validate;
413 468
    }
414 469

  
415 470
    @Override
......
427 482

  
428 483
    @Override
429 484
    public boolean isModified() {
485
        if( this.isReadOnly() ) {
486
            return false;
487
        }
488
        if( this.hasUserFunction(USERCODE_FORM_ISMODIFIED) ) {
489
            try {
490
                return (boolean) this.callUserFunction(USERCODE_FORM_ISMODIFIED, this);
491
            } catch (Exception ex) {
492
                LOGGER.warn("Error calling form_isModified user code",ex);
493
            }
494
        }
430 495
        for (JDynFormField jfield : this.getFields()) {
431 496
            if (jfield.isModified()) {
432 497
                return true;
......
440 505
        for (JDynFormField jfield : this.getFields()) {
441 506
            jfield.clear();
442 507
        }
508
        this.callUserEvent(USERCODE_FORM_CLEAR, this);
443 509
    }
444 510

  
445 511
    @Override
446 512
    public void fieldEnter(JDynFormField field) {
447 513
        message(field.getDefinition().getDescription());
514
        this.callUserEvent(USERCODE_FORM_ONFIELDENTER, this, field);
448 515
    }
449 516

  
450 517
    @Override
451 518
    public void fieldExit(JDynFormField field) {
452 519
        message();
520
        this.callUserEvent(USERCODE_FORM_ONFIELDEXIT, this, field);
453 521
    }
454 522

  
455 523
    @Override
456 524
    public void fieldChanged(JDynFormField field) {
457 525
        fireFieldChangeEvent(field);
526
        this.callUserEvent(USERCODE_FORM_ONFIELDCHANGED, this, field);
458 527
    }
459 528

  
460 529
    @Override

Also available in: Unified diff