Revision 44338

View differences:

trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.lib/org.gvsig.expressionevaluator.lib.api/src/main/java/org/gvsig/expressionevaluator/Interpreter.java
38 38
    
39 39
    public boolean isSQLCompatible();
40 40
    
41
    public Object call(String function, Object... args) throws Exception;
42
    
43
    public boolean hasFunction(String function);
44
    
41 45
}
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.lib/org.gvsig.expressionevaluator.lib.api/src/main/java/org/gvsig/expressionevaluator/spi/AbstractSymbolTable.java
24 24

  
25 25
    private final String name;
26 26

  
27
    private class ScriptFunction extends AbstractFunction {
27
    public class ScriptFunction extends AbstractFunction {
28 28

  
29 29
        public ScriptFunction(String funcName) {
30 30
            super("Script", funcName, Range.between(1, Integer.MAX_VALUE));
......
228 228
    }
229 229

  
230 230
    @Override
231
    public Collection<Function> localfunctions() {
232
        if( this.functions == null ) {
233
            return Collections.EMPTY_LIST;
234
        }
235
        return Collections.unmodifiableCollection(this.functions.values());
236
    }
237

  
238
    @Override
231 239
    public Collection<Script> scripts() {
232 240
        Set<Script> theScripts = new HashSet<>();
233 241
        for (SymbolTable symbolTable : this.symbolTables) {
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.lib/org.gvsig.expressionevaluator.lib.api/src/main/java/org/gvsig/expressionevaluator/SymbolTable.java
26 26
    public Collection<String> variables();
27 27

  
28 28
    public Collection<Function> functions();
29
    
30
    public Collection<Function> localfunctions();
29 31

  
30 32
    public Collection<Script> scripts();
31 33

  
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.lib/org.gvsig.expressionevaluator.lib.impl/src/main/java/org/gvsig/expressionevaluator/impl/symboltable/ProgrammingSymbolTable.java
21 21
import org.gvsig.expressionevaluator.impl.function.programming.ReturnFunction;
22 22
import org.gvsig.expressionevaluator.impl.function.programming.TryFunction;
23 23
import org.gvsig.expressionevaluator.impl.function.programming.URLFunction;
24
import org.gvsig.expressionevaluator.impl.function.programming.UserFunction;
24 25
import org.gvsig.expressionevaluator.impl.function.programming.WhileFunction;
25 26
import org.gvsig.expressionevaluator.spi.AbstractSymbolTable;
26 27

  
......
57 58
        this.addFunction(new URLFunction());
58 59
        this.addFunction(new LabelValueFunction());
59 60
//        this.addFunction(new EvalFunction());
61
        this.addFunction(new UserFunction());
60 62
    }
61 63

  
62 64
    private void addOperator(Function operator) {
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.lib/org.gvsig.expressionevaluator.lib.impl/src/main/java/org/gvsig/expressionevaluator/impl/function/date/DateFunction.java
29 29
    
30 30
    @Override
31 31
    public Object call(Interpreter interpreter, Object[] args) {
32
        Object date_obj = getObject(args, 0);
33
        if( date_obj instanceof Date ) {
34
            Date x = new Date(((Date) date_obj).getTime());
35
            x.setHours(0);
36
            x.setMinutes(0);
37
            x.setSeconds(0);
38
            return x;
39
        }
32 40
        String date = getStr(args, 0);
33 41
        String format = null;
34 42
        if( args.length==2 ) {
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.lib/org.gvsig.expressionevaluator.lib.impl/src/main/java/org/gvsig/expressionevaluator/impl/function/date/TimeFunction.java
29 29
    
30 30
    @Override
31 31
    public Object call(Interpreter interpreter, Object[] args) {
32
        Object date_obj = getObject(args, 0);
33
        if( date_obj instanceof Date ) {
34
            Date x = new Date(((Date) date_obj).getTime());
35
            x.setDate(0);
36
            x.setMonth(0);
37
            x.setYear(0);
38
            return x;
39
        }
32 40
        String date = getStr(args, 0);
33 41
        String format = null;
34 42
        if( args.length==2 ) {
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.lib/org.gvsig.expressionevaluator.lib.impl/src/main/java/org/gvsig/expressionevaluator/impl/function/date/TimestampFunction.java
29 29
    
30 30
    @Override
31 31
    public Object call(Interpreter interpreter, Object[] args) {
32
        Object date_obj = getObject(args, 0);
33
        if( date_obj instanceof Date ) {
34
            return date_obj;
35
        }
32 36
        String date = getStr(args, 0);
33 37
        String format = null;
34 38
        if( args.length==2 ) {
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.lib/org.gvsig.expressionevaluator.lib.impl/src/main/java/org/gvsig/expressionevaluator/impl/function/programming/GetitemFunction.java
10 10
import org.gvsig.tools.util.GetItem;
11 11
import org.gvsig.tools.util.GetItem64;
12 12
import org.gvsig.tools.util.GetItemByKey;
13
import org.gvsig.tools.util.PropertiesSupport;
13 14

  
14 15
public class GetitemFunction extends AbstractFunction {
15 16

  
......
76 77
            Object key = getObject(args,1);
77 78
            value = l.get(key);
78 79
            
80
        } else if( obj instanceof PropertiesSupport ) {
81
            PropertiesSupport l = (PropertiesSupport)obj;
82
            String propName = getStr(args,1);
83
            value = l.getProperty(propName);
84
            
79 85
        } else {
80 86
            throw new ExpressionRuntimeException("The "+NAME+" function require a String, List or Map and a received a '"+obj.getClass().getSimpleName()+"'.");
81 87
        }
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.lib/org.gvsig.expressionevaluator.lib.impl/src/main/java/org/gvsig/expressionevaluator/impl/function/programming/UserFunction.java
1
package org.gvsig.expressionevaluator.impl.function.programming;
2

  
3
import org.apache.commons.lang3.Range;
4
import org.gvsig.expressionevaluator.Function;
5
import org.gvsig.expressionevaluator.Interpreter;
6
import org.gvsig.expressionevaluator.spi.AbstractFunction;
7
import org.gvsig.tools.ToolsLocator;
8

  
9
public class UserFunction extends AbstractFunction {
10

  
11
    public static final String NAME = "USER";
12
    
13
    public UserFunction() {
14
        super(Function.GROUP_PROGRAMMING, 
15
            NAME, 
16
            Range.is(0),
17
            "Get the current user logged.",
18
            NAME+"()",
19
            null,
20
            "SimpleIdentity",
21
            false
22
        );
23
        this.addAlias("CURRENTUSER");
24
    }
25
    
26
    @Override
27
    public boolean allowConstantFolding() {
28
        return false;
29
    }
30
    
31
    @Override
32
    public Object call(Interpreter interpreter, Object[] args) throws Exception {
33
        return ToolsLocator.getIdentityManager().getCurrentIdentity();
34
    }
35
    
36
}
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.lib/org.gvsig.expressionevaluator.lib.impl/src/main/java/org/gvsig/expressionevaluator/impl/DefaultInterpreter.java
22 22
import org.gvsig.expressionevaluator.impl.function.operator.BinaryOperator;
23 23
import org.gvsig.expressionevaluator.impl.function.operator.UnaryOperator;
24 24
import org.gvsig.expressionevaluator.impl.function.programming.ReturnFunction.ReturnException;
25
import org.gvsig.expressionevaluator.spi.AbstractSymbolTable;
25 26

  
26 27
public class DefaultInterpreter implements Interpreter {
27 28

  
......
104 105
        return other;
105 106
    }
106 107
    
108
    @Override
109
    public Object call(String function, Object... args) throws Exception {
110
        Function fn = this.symbolTable.function(function);
111
        Object value = fn.call(this, args);
112
        return value;
113
    }
114

  
115
    @Override
116
    public boolean hasFunction(String function) {
117
        Function fn = this.symbolTable.function(function);
118
        if( fn == null ) {
119
            return false;
120
        }
121
        if( fn instanceof AbstractSymbolTable.ScriptFunction ) {
122
            return false;
123
        }
124
        return true;
125
    }
126
    
107 127
    public int getMaxRecursionLimit() {
108 128
        return this.maxRecursionLimit;
109 129
    }
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.lib/org.gvsig.expressionevaluator.lib.impl/src/main/java/org/gvsig/expressionevaluator/impl/DefaultOptimizer.java
86 86
        }
87 87

  
88 88
        @Override
89
        public Collection<Function> localfunctions() {
90
            return this.symbolTable.functions();
91
        }
92
        
93
        @Override
89 94
        public Collection<Script> scripts() {
90 95
            return this.symbolTable.scripts();
91 96
        }
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.swing/org.gvsig.expressionevaluator.swing.impl/src/main/java/org/gvsig/expressionevaluator/swing/impl/DefaultJExpressionBuilder.java
411 411
                }
412 412
                return component;
413 413
            }
414

  
415
            private JLabel JPanel() {
416
                throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
417
            }
418 414
        });
419 415
        
420 416
        this.treeElements.addTreeSelectionListener(new TreeSelectionListener() {
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.swing/org.gvsig.expressionevaluator.swing.api/src/main/java/org/gvsig/expressionevaluator/swing/Element.java
3 3
import java.util.Collection;
4 4
import java.util.Iterator;
5 5
import java.util.List;
6
import javax.swing.ImageIcon;
6
import javax.swing.Icon;
7 7
import org.gvsig.expressionevaluator.Function;
8 8
import org.gvsig.tools.swing.api.Component;
9 9
import org.gvsig.tools.util.LabeledValue;
......
56 56

  
57 57
    public String getIconName();
58 58

  
59
    public ImageIcon getIcon();
59
    public Icon getIcon();
60 60
    
61 61
    public Collection<Element> getValues();
62 62

  
trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.swing/org.gvsig.expressionevaluator.swing.api/src/main/java/org/gvsig/expressionevaluator/swing/spi/AbstractElement.java
3 3
import java.util.Collection;
4 4
import java.util.Collections;
5 5
import java.util.Objects;
6
import javax.swing.Icon;
6 7
import javax.swing.ImageIcon;
7 8
import org.gvsig.expressionevaluator.swing.Element;
8 9
import org.gvsig.expressionevaluator.swing.ExpressionBuilderConfig;
......
21 22

  
22 23
    protected static final Logger LOGGER = LoggerFactory.getLogger(AbstractElement.class);
23 24
    
24
    final Object value;
25
    final String iconName;
26
    final ImageIcon icon;
25
    private final Object value;
26
    private final String iconName;
27
    protected Icon icon;
27 28
    private String name;
28 29
    private ExpressionBuilderConfig config;
29 30

  
......
131 132
    }
132 133
    
133 134
    @Override
134
    public ImageIcon getIcon() {
135
    public Icon getIcon() {
135 136
        return this.icon;
136 137
    }
137 138

  
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.i18n/src/main/java/org/gvsig/i18n/tools/impl/DefaultI18Manager.java
25 25

  
26 26
import java.io.File;
27 27
import java.net.MalformedURLException;
28
import java.util.List;
28 29
import java.util.Locale;
29
import java.util.logging.Level;
30
import java.util.logging.Logger;
31 30

  
32 31
import org.gvsig.i18n.Messages;
33 32
import org.gvsig.tools.i18n.I18nManager;
......
35 34
/**
36 35
 * This manager is in charge of providing with a richer text translation than
37 36
 * the one used by default.
38
 * 
39
 * 
37
 *
38
 *
40 39
 * @author gvSIG Team
41
 * 
40
 *
42 41
 */
43 42
public class DefaultI18Manager implements I18nManager {
44 43

  
45
	public String getTranslation(String message) {
46
		return Messages.getText(message);
47
	}
44
    @Override
45
    public String getTranslation(String message) {
46
        return Messages.getText(message);
47
    }
48 48

  
49
        public String getTranslation(String message, String[] args) {
50
		return Messages.getText(message,args);
49
    @Override
50
    public String getTranslation(String message, String[] args) {
51
        return Messages.getText(message, args);
52
    }
53

  
54
    @Override
55
    public void addResourceFamily(String family, ClassLoader loader,
56
            String callerName) {
57
        if (!Messages.hasLocales()) {
58
            Messages.addLocale(Locale.getDefault());
51 59
        }
60
        Messages.addResourceFamily(family, loader, callerName);
61
    }
52 62

  
53
	public void addResourceFamily(String family, ClassLoader loader,
54
			String callerName) {
55
		if (!Messages.hasLocales()) {
56
			Messages.addLocale(Locale.getDefault());
57
		}
58
		Messages.addResourceFamily(family, loader, callerName);
59
	}
63
    @Override
64
    public void addResourceFamily(String family, File folder) {
65
        if (!Messages.hasLocales()) {
66
            Messages.addLocale(Locale.getDefault());
67
        }
68
        try {
69
            Messages.addResourceFamily(family, folder);
70
        } catch (MalformedURLException ex) {
71
            throw new RuntimeException(ex);
72
        }
73
    }
60 74

  
61
        public void addResourceFamily(String family, File folder) {
62
            if (!Messages.hasLocales()) {
63
                Messages.addLocale(Locale.getDefault());
64
            }
65
            try {
66
                Messages.addResourceFamily(family, folder);
67
            } catch (MalformedURLException ex) {
68
                throw new RuntimeException(ex);
69
            }
70
        }
75
    @Override
76
    public List<Locale> getPreferredLocales() {
77
        return Messages.getPreferredLocales();
78
    }
79

  
80
    @Override
81
    public Locale getCurrentLocale() {
82
        return Messages.getCurrentLocale();
83
    }
71 84
}
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.impl/src/main/java/org/gvsig/fmap/dal/feature/impl/DefaultForeingKey.java
130 130
    }
131 131

  
132 132
    private boolean foreingKey;
133
    private boolean selectable;
133
    private boolean closedList;
134 134
    private String labelFormula;
135 135
    private String tableName;
136 136
    private String codeName;
137
    private DynObjectValueItem[] availableValues;
137 138

  
138 139
    private FeatureAttributeDescriptor descriptor;
139 140

  
......
146 147
    }
147 148

  
148 149
    @Override
149
    public boolean isSelectable() {
150
        return this.selectable;
150
    public boolean isClosedList() {
151
        return this.closedList;
151 152
    }
152 153

  
153 154
    @Override
154
    public void setSelectable(boolean selectable) {
155
        this.selectable = selectable;
155
    public void setClosedList(boolean selectable) {
156
        this.closedList = selectable;
156 157
    }
157 158

  
158 159
    @Override
......
198 199
    @Override
199 200
    public boolean isEmpty() {
200 201
        if (!this.foreingKey
201
                && !this.selectable
202
                && !this.closedList
202 203
                && StringUtils.isBlank(this.tableName)
203 204
                && StringUtils.isBlank(this.codeName)
204 205
                && StringUtils.isBlank(this.labelFormula)) {
......
210 211
    @Override
211 212
    public void clean() {
212 213
        this.foreingKey = false;
213
        this.selectable = false;
214
        this.closedList = false;
214 215
        this.tableName = null;
215 216
        this.codeName = null;
216 217
        this.labelFormula = null;
......
383 384

  
384 385
    @Override
385 386
    public DynObjectValueItem[] getAvailableValues(ContextForeingKey context) {
386
        if (!this.isSelectable()) {
387
        if (!this.isClosedList()) {
387 388
            return null;
388 389
        }
389
        context = createLocalContextIfNull(context);
390
        try {
391
            Expression labelExpression = context.getLabelExpression();
392
            FeatureStore store = context.getFeatureStore();
393
            if (store == null) {
394
                return null;
395
            }
396

  
397
            int count = (int) store.getFeatureCount();
398
            DynObjectValueItem[] values = new DynObjectValueItem[Math.min(count, MAX_AVAILABLE_VALUES)];
399
            int n = 0;
400
            for (Feature feature : store.getFeatureSet()) {
401
                Object code = feature.get(codeName);
402
                Object value;
403
                if (labelExpression == null) {
404
                    value = code;
405
                } else {
406
                    context.getFeatureSymbolTable().setFeature(feature);
407
                    value = labelExpression.execute(context.getSymbolTable());
390
        if( this.availableValues == null ) {
391
            context = createLocalContextIfNull(context);
392
            try {
393
                Expression labelExpression = context.getLabelExpression();
394
                FeatureStore store = context.getFeatureStore();
395
                if (store == null) {
396
                    return null;
408 397
                }
409
                values[n++] = new DynObjectValueItem(code, Objects.toString(value, Objects.toString(code, "##ERROR##")));
410
                if( n>=MAX_AVAILABLE_VALUES ) {
411
                    break;
398
                int count = (int) store.getFeatureCount();
399
                DynObjectValueItem[] values = new DynObjectValueItem[Math.min(count, MAX_AVAILABLE_VALUES)];
400
                int n = 0;
401
                for (Feature feature : store.getFeatureSet()) {
402
                    Object code = feature.get(codeName);
403
                    Object value;
404
                    if (labelExpression == null) {
405
                        value = code;
406
                    } else {
407
                        context.getFeatureSymbolTable().setFeature(feature);
408
                        value = labelExpression.execute(context.getSymbolTable());
409
                    }
410
                    values[n++] = new DynObjectValueItem(code, Objects.toString(value, Objects.toString(code, "##ERROR##")));
411
                    if( n>=MAX_AVAILABLE_VALUES ) {
412
                        break;
413
                    }
412 414
                }
415
                this.availableValues = values;
416
            } catch (Exception ex) {
417
                LOGGER.warn("Can't get values from table '" + tableName + "' of field.", ex);
418
            } finally {
419
                disposeIfLocalContext(context);
413 420
            }
414
            return values;
415
        } catch (Exception ex) {
416
            LOGGER.warn("Can't get values from table '" + tableName + "' of field.", ex);
417
        } finally {
418
            disposeIfLocalContext(context);
419 421
        }
420
        return null;
422
        return this.availableValues;
421 423
    }
424
    
425
    public String getLabelForValue(Object value) {
426
        DynObjectValueItem[] values = this.getAvailableValues(null);
427
        if( values != null ) {
428
            for (DynObjectValueItem value1 : values) {
429
                if( Objects.equals(value, value1.getValue()) ) {
430
                    return value1.getLabel();
431
                }
432
            }
433
        }
434
        return Objects.toString(value, "##ERROR##");
435
    }
422 436

  
423 437
    @Override
424 438
    public void loadFromState(PersistentState state)
425 439
            throws PersistenceException {
426 440
        foreingKey = state.getBoolean("foreingKey");
427
        selectable = state.getBoolean("selectable");
441
        closedList = state.getBoolean("selectable");
428 442
        labelFormula = state.getString("labelFormula");
429 443
        codeName = state.getString("codeName");
430 444
        tableName = state.getString("tableName");
......
433 447
    @Override
434 448
    public void saveToState(PersistentState state) throws PersistenceException {
435 449
        state.set("foreingKey", foreingKey);
436
        state.set("selectable", selectable);
450
        state.set("selectable", closedList);
437 451
        state.set("labelFormula", labelFormula);
438 452
        state.set("codeName", codeName);
439 453
        state.set("tableName", tableName);
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.impl/src/main/java/org/gvsig/fmap/dal/feature/impl/DefaultEditableFeatureAttributeDescriptor.java
428 428
            throw new IllegalArgumentException("Name can't be empty");
429 429
        }
430 430
        switch(name.toLowerCase()) {
431
            case "isreadoly":
432
            case "readoly":
431
            case "isreadonly":
432
            case "readonly":
433 433
                this.setIsReadOnly(DataTypeUtils.toBoolean(value, false));
434 434
                break;
435 435
            case "hidden":
......
488 488
            case "foreingkey.label":
489 489
                this.getForeingKey().setLabelFormula(DataTypeUtils.toString(value, ""));
490 490
                break;
491
            case "foreingkey.selectable":
492
                this.getForeingKey().setSelectable(DataTypeUtils.toBoolean(value, false));
491
            case "foreingkey.closedlist":
492
                this.getForeingKey().setClosedList(DataTypeUtils.toBoolean(value, false));
493 493
                break;
494 494
            case "foreingkey.table":
495 495
                this.getForeingKey().setTableName(DataTypeUtils.toString(value, null));
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.impl/src/main/java/org/gvsig/fmap/dal/feature/impl/DefaultFeatureAttributeDescriptor.java
52 52
import org.gvsig.tools.ToolsLocator;
53 53
import org.gvsig.tools.dataTypes.CoercionException;
54 54
import org.gvsig.tools.dataTypes.DataType;
55
import org.gvsig.tools.dataTypes.DataTypeUtils;
56 55
import org.gvsig.tools.dynobject.DynField;
57 56
import org.gvsig.tools.dynobject.DynField_LabelAttribute;
58 57
import org.gvsig.tools.dynobject.DynField_v2;
......
69 68
import org.gvsig.tools.evaluator.Evaluator;
70 69
import org.gvsig.tools.evaluator.EvaluatorData;
71 70
import org.gvsig.tools.evaluator.EvaluatorException;
71
import org.gvsig.tools.i18n.I18nManager;
72 72
import org.gvsig.tools.persistence.PersistenceManager;
73 73
import org.gvsig.tools.persistence.Persistent;
74 74
import org.gvsig.tools.persistence.PersistentState;
......
112 112
    protected boolean allowIndexDuplicateds = true;
113 113

  
114 114
    protected DynObjectValueItem[] availableValues;
115
    protected DynObjectValueItem[] availableValuesFromForeingKey;
116 115
    protected String description;
117 116
    protected Object minValue;
118 117
    protected Object maxValue;
......
778 777
    @Override
779 778
    public DynObjectValueItem[] getAvailableValues() {
780 779
        if( this.availableValues == null ) {
781
            if( this.availableValuesFromForeingKey==null ) {
782
                if( this.isForeingKey() && this.foreingKey.isSelectable() ) {
783
                    this.availableValuesFromForeingKey = this.foreingKey.getAvailableValues(null);
784
                }
785
                return this.availableValuesFromForeingKey;
780
            if( this.isForeingKey() && this.foreingKey.isClosedList() ) {
781
                return this.foreingKey.getAvailableValues(null);
786 782
            }
787 783
        }
788 784
        return this.availableValues;
......
995 991
        }
996 992
        return this.label;
997 993
    }
994
    
995
    @Override
996
    public String getLocalizedLabel() {
997
        if( StringUtils.isBlank(this.label) ) {
998
            return this.getName();
999
        }
1000
        I18nManager i18n = ToolsLocator.getI18nManager();
1001
        return i18n.getTranslation(this.label);
1002
    }
998 1003

  
999 1004
    @Override
1000 1005
    public DynField setLabel(String label) {
......
1014 1019
    }
1015 1020

  
1016 1021
    @Override
1022
    public String getLocalizedShortLabel() {
1023
        if( StringUtils.isBlank(shortLabel) ) {
1024
            return this.getLocalizedLabel();
1025
        }
1026
        I18nManager i18n = ToolsLocator.getI18nManager();
1027
        return i18n.getTranslation(shortLabel);
1028
    }
1029

  
1030
    @Override
1017 1031
    public DynField setGroup(String groupName) {
1018 1032
        this.groupName = groupName;
1019 1033
        return this;
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.swing/org.gvsig.fmap.dal.swing.impl/src/main/java/org/gvsig/featureform/swing/impl/DefaultJFeaturesForm.java
107 107
            
108 108
        }
109 109

  
110
        @Override
110 111
        public FeatureStore getFeatureStore() {
111 112
            return store;
112 113
        }
......
122 123
        
123 124
        @Override
124 125
        public ResourcesStorage getResourcesStorage() {
126
            if( store == null ) {
127
                return null;
128
            }
125 129
            return store.getResourcesStorage();
126 130
        }
127 131

  
128 132
        @Override
129 133
        public StoresRepository getStoresRepository() {
134
            if( store == null ) {
135
                return null;
136
            }
130 137
            return store.getStoresRepository();
131 138
        }
132 139
        
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.swing/org.gvsig.fmap.dal.swing.impl/src/main/java/org/gvsig/featureform/swing/impl/dynformfield/selectableforeingkey/JDynFormFieldSelectableForeingKeyFactory.java
76 76
        if( foreingKey==null ) {
77 77
            return false;
78 78
        }
79
        return foreingKey.isForeingKey() && foreingKey.isSelectable();
79
        return foreingKey.isForeingKey() && foreingKey.isClosedList();
80 80
    }
81 81

  
82 82
    public static void selfRegister() {
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.swing/org.gvsig.fmap.dal.swing.impl/src/main/java/org/gvsig/featureform/swing/impl/dynformfield/selectableforeingkey/JDynFormFieldSelectableForeingKey.java
70 70
    @Override
71 71
    protected DynObjectValueItem[] getAvailableValues() {
72 72
        final ForeingKey foreingKey = this.getForeingKey();
73
        if( foreingKey==null || !foreingKey.isSelectable() ) {
73
        if( foreingKey==null || !foreingKey.isClosedList() ) {
74 74
            return null;
75 75
        }
76 76
        DynObjectValueItem[] values = foreingKey.getAvailableValues(null);
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.swing/org.gvsig.fmap.dal.swing.impl/src/main/java/org/gvsig/featureform/swing/impl/dynformfield/features/JDynFormFieldRelatedFeatures.java
107 107
            if (attrdesc == null) {
108 108
                return "C" + columnIndex;
109 109
            }
110
            return attrdesc.getLabel();
110
            return attrdesc.getLocalizedShortLabel();
111 111
        }
112 112

  
113 113
        @Override
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.swing/org.gvsig.fmap.dal.swing.impl/src/main/java/org/gvsig/featureform/swing/impl/dynformfield/linkforeingkey/JDynFormFieldForeingKeyFactory.java
71 71
        if( foreingKey==null ) {
72 72
            return false;
73 73
        }
74
        return foreingKey.isForeingKey() && !foreingKey.isSelectable();
74
        return foreingKey.isForeingKey() && !foreingKey.isClosedList();
75 75
    }
76 76
    
77 77
    public static void selfRegister() {
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.swing/org.gvsig.fmap.dal.swing.impl/src/main/java/org/gvsig/featureform/swing/impl/dynformfield/linkedentity/JDynFormFieldFeatureLink.java
33 33
import javax.swing.Icon;
34 34
import javax.swing.ImageIcon;
35 35
import javax.swing.JButton;
36
import javax.swing.JComponent;
36 37
import javax.swing.JPanel;
37 38
import javax.swing.JTextField;
38 39
import org.apache.commons.lang3.StringUtils;
......
252 253
    @Override
253 254
    public void setReadOnly(boolean readonly) {
254 255
        boolean enabled = !readonly;
255
//        this.txtCode.setEnabled(enabled);
256
        JComponent theJlabel = this.getJLabel();
257
        if( theJlabel !=null ) {
258
            theJlabel.setEnabled(enabled);
259
        }
260
        //        this.txtCode.setEnabled(enabled);
256 261
        if( this.txtDescription == null ) {
257 262
            return;
258 263
        }
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.swing/org.gvsig.fmap.dal.swing.impl/src/main/java/org/gvsig/fmap/dal/swing/impl/searchpanel/SearchFieldController.java
80 80
                int type
81 81
            ) {
82 82
            super(
83
                    ObjectUtils.defaultIfNull(label, attrdesc.getLabel()),
83
                    ObjectUtils.defaultIfNull(label, attrdesc.getLocalizedLabel()),
84 84
                    ObjectUtils.defaultIfNull(value, attrdesc.getName())
85 85
            );
86 86
            this.store = store;
......
95 95
                case Search.OrderedAttribute.TYPE_REGURAL:
96 96
                    break;
97 97
                case Search.OrderedAttribute.TYPE_FAVORITE:
98
                    theLabel = "<b>"+theLabel+"</b>";
98
                    theLabel = "<html><b>"+theLabel+"</b></html>";
99 99
                    break;
100 100
                case Search.OrderedAttribute.TYPE_RECENT:
101
                    theLabel = "<i><b>"+theLabel+"</b></i>";
101
                    theLabel = "<html><i><b>"+theLabel+"</b></i></html>";
102 102
                    break;
103 103
            }
104 104
            return theLabel;
......
181 181
            this.lblExtraFields.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
182 182

  
183 183
            this.ddnFields = toolsSwingManager.createDropDown(lblFields);
184
            this.ddnFields.setVisibleDropdownArrow(false);
184 185
            this.ddnRelationalOperators = toolsSwingManager.createDropDown(lblRelationalOperators);
186
            this.ddnRelationalOperators.setVisibleDropdownArrow(false);
185 187
            if (lblLogicalOperators != null) {
186 188
                this.ddnLogicalOperators = toolsSwingManager.createDropDown(lblLogicalOperators);
189
                this.ddnLogicalOperators.setVisibleDropdownArrow(false);
187 190
            }
188 191

  
189 192
            DefaultComboBoxModel modelRelationalOperators = new DefaultComboBoxModel();
......
209 212
                    20
210 213
            );
211 214
            List<ImageIcon>icons = new ArrayList<>();
212
            DataTypesManager dataTypeManager = ToolsLocator.getDataTypesManager();
215
//            DataTypesManager dataTypeManager = ToolsLocator.getDataTypesManager();
213 216
            IconTheme iconTheme = ToolsSwingLocator.getIconThemeManager().getCurrent();
214 217
            DefaultComboBoxModel model = new DefaultComboBoxModel();
215 218
            for (Search.OrderedAttribute attr : orderedAttributes) {
......
263 266
        final JTree tree = new JTree();
264 267
        tree.setCellRenderer(new AdvancedAttributeSelectionTreeCellRenderer());
265 268
        tree.setModel(treeModel);
269
        try {
270
            tree.setSelectionRow(1);
271
        } catch(Throwable th) {
272
        }
266 273
        JScrollPane scrollpane = new JScrollPane(tree);
267 274
        scrollpane.setPreferredSize(new Dimension(400, 300));
268 275
        scrollpane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
......
313 320
        String formula = builder.function(DataManager.FUNCTION_FOREING_VALUE, list).toString();
314 321
        String label = attrdesc.getLabel() + " [" + theStore.getName() + "]";
315 322
        if (StringUtils.equalsIgnoreCase(storeFullName, this.store.getFullName())) {
316
            label = attrdesc.getLabel();
323
            label = attrdesc.getLocalizedLabel();
317 324
            formula = attrdesc.getName();
318 325
        }
319 326
        FeatureAttribute attribute = new FeatureAttribute(theStore, attrdesc, label, formula, Search.OrderedAttribute.TYPE_REGURAL);
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.swing/org.gvsig.fmap.dal.swing.impl/src/main/java/org/gvsig/fmap/dal/swing/impl/searchpanel/AdvancedAttributeSelectionTreeModel.java
51 51
            this.type = OrderedAttribute.TYPE_REGURAL;
52 52
            this.childs = new ArrayList<>();
53 53
            for (OrderedAttribute attribute : attributes) {
54
                this.childs.add(new DefaultNode(store, attribute.getDescriptor(), this.type));
54
                this.childs.add(new DefaultNode(store, attribute.getDescriptor(), attribute.getType()));
55 55
            }
56 56
        }
57 57

  
58 58
        private DefaultNode(FeatureStore store, FeatureAttributeDescriptor attribute, int type) {
59
            super(attribute.getLabel(), attribute);
59
            super(attribute.getLocalizedLabel(), attribute);
60 60
            this.store = store;
61 61
            this.type = type;
62 62
            this.childs = null;
......
76 76
                case Search.OrderedAttribute.TYPE_REGURAL:
77 77
                    break;
78 78
                case Search.OrderedAttribute.TYPE_FAVORITE:
79
                    theLabel = "<b>"+theLabel+"</b>";
79
                    theLabel = "<html><b>"+theLabel+"</b></html>";
80 80
                    break;
81 81
                case Search.OrderedAttribute.TYPE_RECENT:
82
                    theLabel = "<i><b>"+theLabel+"</b></i>";
82
                    theLabel = "<html><i><b>"+theLabel+"</b></i></html>";
83 83
                    break;
84 84
            }
85 85
            return theLabel;
......
103 103
                    ContextForeingKey context = foreingKey.createContext();
104 104
                    // Ojo, no liberamos el contexto para que no se destruya el store.
105 105
                    FeatureStore theStore = foreingKey.getFeatureStore(context);
106
                    FeatureType featureType = foreingKey.getFeatureType(context);
107
                    String fullName = theStore.getFullName();
108
                    if (stores.contains(fullName)) {
109
                        // Si ya hemos a?adido el store al arbol no lo volvemos a a?adir.
106
                    if( theStore==null ) {
110 107
                        this.childs = Collections.EMPTY_LIST;
111 108
                    } else {
112
                        Search featureTypeSearch = (Search) ToolsLocator.getComplementsManager().get(
113
                                Search.COMPLEMENT_MANE, featureType
114
                        );
115
                        List<Search.OrderedAttribute> attributes = featureTypeSearch.getOrderedAttributes(
116
                                filterByDataType,
117
                                Search.LABEL_ORDER,
118
                                -1
119
                        );
120
                        this.childs = new ArrayList<>();
121
                        for (Search.OrderedAttribute attribute : attributes) {
122
                            this.childs.add(new DefaultNode(theStore, attribute.getDescriptor(), attribute.getType()));
109
                        FeatureType featureType = foreingKey.getFeatureType(context);
110
                        String fullName = theStore.getFullName();
111
                        if (stores.contains(fullName)) {
112
                            // Si ya hemos a?adido el store al arbol no lo volvemos a a?adir.
113
                            this.childs = Collections.EMPTY_LIST;
114
                        } else {
115
                            Search featureTypeSearch = (Search) ToolsLocator.getComplementsManager().get(
116
                                    Search.COMPLEMENT_MANE, featureType
117
                            );
118
                            List<Search.OrderedAttribute> attributes = featureTypeSearch.getOrderedAttributes(
119
                                    filterByDataType,
120
                                    Search.LABEL_ORDER,
121
                                    -1
122
                            );
123
                            this.childs = new ArrayList<>();
124
                            for (Search.OrderedAttribute attribute : attributes) {
125
                                this.childs.add(new DefaultNode(theStore, attribute.getDescriptor(), attribute.getType()));
126
                            }
123 127
                        }
124 128
                    }
125 129
                } else {
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.swing/org.gvsig.fmap.dal.swing.impl/src/main/java/org/gvsig/fmap/dal/swing/impl/searchpanel/DefaultSearchPanel.java
120 120
            if (attrdesc == null) {
121 121
                return "C" + columnIndex;
122 122
            }
123
            return attrdesc.getLabel();
123
            return attrdesc.getLocalizedShortLabel();
124 124
        }
125 125

  
126 126
        @Override
......
133 133
            if (attrdesc == null) {
134 134
                return String.class;
135 135
            }
136
            if( attrdesc.isForeingKey() && attrdesc.getForeingKey().isClosedList() ) {
137
                return String.class;
138
            }
136 139
            Class theClass = attrdesc.getDataType().getDefaultClass();
137 140
            if( theClass==null ) {
138 141
                return String.class;
......
150 153
            if (this.features == null) {
151 154
                return null;
152 155
            }
153
            Feature feature = this.features.get(rowIndex);
154
            String attrName = this.columnNames.get(columnIndex);
155 156
            try {
156
                return feature.get(attrName);
157
                Feature feature = this.features.get(rowIndex);
158
                String attrName = this.columnNames.get(columnIndex);
159
                Object value = feature.get(attrName);
160
                FeatureAttributeDescriptor attrdesc = this.featureType.getAttributeDescriptor(attrName);
161
                if (attrdesc != null) {
162
                    if( attrdesc.isForeingKey() && attrdesc.getForeingKey().isClosedList() ) {
163
                        value = attrdesc.getForeingKey().getLabelForValue(value);
164
                    }
165
                }
166
                return value;
157 167
            } catch (Throwable th) {
158 168
                return null;
159 169
            }
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.swing/org.gvsig.fmap.dal.swing.impl/src/main/java/org/gvsig/fmap/dal/swing/impl/featuretype/DefaultFeatureTypeAttributePanel.java
82 82
    private static class ForeingKeyController {
83 83

  
84 84
        private final JCheckBox chkIsForeingKey;
85
        private final JCheckBox chkIsSelectable;
85
        private final JCheckBox chkIsClosedList;
86 86
        private final JComboBox cboTable;
87 87
        private final JComboBox cboCode;
88 88
        private final JTextField txtFormula;
......
93 93
        
94 94
        public ForeingKeyController(
95 95
                JCheckBox chkIsForeingKey,
96
                JCheckBox chkIsSelectable,
96
                JCheckBox chkIsClosedList,
97 97
                JComboBox cboTable,
98 98
                JComboBox cboCode,
99 99
                JTextField txtFormula,
100 100
                JButton btnFormula
101 101
        ) {
102 102
            this.chkIsForeingKey = chkIsForeingKey;
103
            this.chkIsSelectable = chkIsSelectable;
103
            this.chkIsClosedList = chkIsClosedList;
104 104
            this.cboTable = cboTable;
105 105
            this.cboCode = cboCode;
106 106
            this.txtFormula = txtFormula;
......
191 191

  
192 192
        public void setEditable(boolean editable) {
193 193
            this.chkIsForeingKey.setEnabled(editable);
194
            this.chkIsSelectable.setEnabled(editable);
194
            this.chkIsClosedList.setEnabled(editable);
195 195
            this.cboTable.setEnabled(editable);
196 196
            this.cboCode.setEnabled(editable);
197 197
            this.btnFormula.setEnabled(editable);
......
204 204
                enabled =  false;
205 205
            }
206 206
            this.chkIsForeingKey.setEnabled(enabled);
207
            this.chkIsSelectable.setEnabled(enabled);
207
            this.chkIsClosedList.setEnabled(enabled);
208 208
            this.cboTable.setEnabled(enabled);
209 209
            this.cboCode.setEnabled(enabled);
210 210
            this.btnFormula.setEnabled(enabled);
......
213 213
        
214 214
        public void clean() {
215 215
            this.chkIsForeingKey.setSelected(false);
216
            this.chkIsSelectable.setSelected(false);
216
            this.chkIsClosedList.setSelected(false);
217 217
            this.cboTable.setSelectedItem("");
218 218
            this.cboCode.setSelectedItem("");
219 219
            this.pickerFormula.set(null);
......
225 225
                return;
226 226
            }
227 227
            this.chkIsForeingKey.setSelected(foreingKey.isForeingKey());
228
            this.chkIsSelectable.setSelected(foreingKey.isSelectable());
228
            this.chkIsClosedList.setSelected(foreingKey.isClosedList());
229 229
            this.cboTable.setSelectedItem(foreingKey.getTableName());
230 230
            this.cboCode.setSelectedItem(foreingKey.getCodeName());
231 231
            this.pickerFormula.set(foreingKey.getLabelExpression(null));
......
236 236
                return;
237 237
            }
238 238
            foreingKey.setForeingKey(this.chkIsForeingKey.isSelected());
239
            foreingKey.setSelectable(this.chkIsSelectable.isSelected());
239
            foreingKey.setClosedList(this.chkIsClosedList.isSelected());
240 240
            foreingKey.setTableName((String) this.cboTable.getSelectedItem());
241 241
            foreingKey.setCodeName((String) this.cboCode.getSelectedItem());
242 242
            Expression exp = this.pickerFormula.get();
......
522 522
        swingManager.translate(this.lblForeingKeyCodeName);
523 523
        swingManager.translate(this.lblForeingKeyLabelFormula);
524 524
        swingManager.translate(this.lblForeingKeyTableName);
525
        swingManager.translate(this.lblIsSelectable);
525
        swingManager.translate(this.lblIsClosedList);
526 526
        swingManager.translate(this.chkIsForeingKey);
527 527

  
528 528
        swingManager.addClearButton(this.txtDefaultValue);
......
565 565

  
566 566
        this.foreingKeyController = new ForeingKeyController(
567 567
                chkIsForeingKey, 
568
                chkIsSelectable, 
568
                chkIsClosedList, 
569 569
                cboForeingKeyTableName, 
570 570
                cboForeingKeyCodeName, 
571 571
                txtForeingKeyFormula, 
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.swing/org.gvsig.fmap.dal.swing.impl/src/main/java/org/gvsig/fmap/dal/swing/impl/featuretype/FeatureTypeAttributePanelView.xml
25 25
    <at name="componentclass">com.jeta.forms.gui.form.FormComponent</at>
26 26
   </super>
27 27
   <at name="id">/home/jjdelcerro/datos/devel/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.swing/org.gvsig.fmap.dal.swing.impl/src/main/java/org/gvsig/fmap/dal/swing/impl/featuretype/FeatureTypeAttributePanelView.xml</at>
28
   <at name="path">datos/devel/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.swing/org.gvsig.fmap.dal.swing.impl/src/main/java/org/gvsig/fmap/dal/swing/impl/featuretype/FeatureTypeAttributePanelView.xml</at>
29 28
   <at name="rowspecs">CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE,FILL:DEFAULT:NONE,CENTER:2DLU:NONE</at>
30 29
   <at name="colspecs">FILL:4DLU:NONE,FILL:DEFAULT:NONE,FILL:4DLU:NONE,FILL:DEFAULT:GROW(1.0),FILL:4DLU:NONE</at>
31 30
   <at name="components">
......
135 134
             </object>
136 135
            </at>
137 136
            <at name="name">txtFieldName</at>
138
            <at name="width">848</at>
137
            <at name="width">872</at>
139 138
            <at name="height">20</at>
140 139
           </object>
141 140
          </at>
......
249 248
             </object>
250 249
            </at>
251 250
            <at name="name">cboFieldType</at>
252
            <at name="width">848</at>
251
            <at name="width">872</at>
253 252
            <at name="items">
254 253
             <object classname="com.jeta.forms.store.properties.ItemsProperty">
255 254
              <at name="name">items</at>
......
342 341
                      </at>
343 342
                      <at name="componentclass">com.jeta.forms.gui.form.FormComponent</at>
344 343
                     </super>
345
                     <at name="id">embedded.402481116</at>
344
                     <at name="id">embedded.1128307385</at>
346 345
                     <at name="rowspecs">CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE,CENTER:DEFAULT:NONE</at>
347 346
                     <at name="colspecs">FILL:4DLU:NONE,FILL:DEFAULT:NONE,FILL:4DLU:NONE,FILL:DEFAULT:GROW(1.0),FILL:4DLU:NONE</at>
348 347
                     <at name="components">
......
452 451
                               </object>
453 452
                              </at>
454 453
                              <at name="name">txtSize</at>
455
                              <at name="width">782</at>
454
                              <at name="width">806</at>
456 455
                              <at name="height">20</at>
457 456
                             </object>
458 457
                            </at>
......
626 625
                               </object>
627 626
                              </at>
628 627
                              <at name="name">txtPrecision</at>
629
                              <at name="width">782</at>
628
                              <at name="width">806</at>
630 629
                              <at name="height">20</at>
631 630
                             </object>
632 631
                            </at>
......
680 679
                               </object>
681 680
                              </at>
682 681
                              <at name="name">txtDefaultValue</at>
683
                              <at name="width">782</at>
682
                              <at name="width">806</at>
684 683
                              <at name="height">20</at>
685 684
                             </object>
686 685
                            </at>
......
794 793
                               </object>
795 794
                              </at>
796 795
                              <at name="name">cboDataProfile</at>
797
                              <at name="width">782</at>
796
                              <at name="width">806</at>
798 797
                              <at name="items">
799 798
                               <object classname="com.jeta.forms.store.properties.ItemsProperty">
800 799
                                <at name="name">items</at>
......
881 880
                           </at>
882 881
                           <at name="componentclass">com.jeta.forms.gui.form.FormComponent</at>
883 882
                          </super>
884
                          <at name="id">embedded.1031419293</at>
883
                          <at name="id">embedded.547041794</at>
885 884
                          <at name="rowspecs">CENTER:DEFAULT:NONE</at>
886 885
                          <at name="colspecs">FILL:DEFAULT:GROW(1.0),FILL:4DLU:NONE,FILL:DEFAULT:NONE</at>
887 886
                          <at name="components">
......
991 990
                                    </object>
992 991
                                   </at>
993 992
                                   <at name="name">txtVirtualField</at>
994
                                   <at name="width">750</at>
993
                                   <at name="width">774</at>
995 994
                                   <at name="height">20</at>
996 995
                                  </object>
997 996
                                 </at>
......
1221 1220
                      </at>
1222 1221
                      <at name="componentclass">com.jeta.forms.gui.form.FormComponent</at>
1223 1222
                     </super>
1224
                     <at name="id">embedded.377352116</at>
1223
                     <at name="id">embedded.1682990620</at>
1225 1224
                     <at name="rowspecs">CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE</at>
1226 1225
                     <at name="colspecs">FILL:4DLU:NONE,FILL:DEFAULT:NONE,FILL:4DLU:NONE,FILL:DEFAULT:GROW(1.0),FILL:4DLU:NONE</at>
1227 1226
                     <at name="components">
......
1451 1450
                               </object>
1452 1451
                              </at>
1453 1452
                              <at name="name">cboGeometryType</at>
1454
                              <at name="width">760</at>
1453
                              <at name="width">784</at>
1455 1454
                              <at name="items">
1456 1455
                               <object classname="com.jeta.forms.store.properties.ItemsProperty">
1457 1456
                                <at name="name">items</at>
......
1510 1509
                               </object>
1511 1510
                              </at>
1512 1511
                              <at name="name">cboGeometrySubtype</at>
1513
                              <at name="width">760</at>
1512
                              <at name="width">784</at>
1514 1513
                              <at name="items">
1515 1514
                               <object classname="com.jeta.forms.store.properties.ItemsProperty">
1516 1515
                                <at name="name">items</at>
......
1541 1540
                           </at>
1542 1541
                           <at name="componentclass">com.jeta.forms.gui.form.FormComponent</at>
1543 1542
                          </super>
1544
                          <at name="id">embedded.1677462193</at>
1543
                          <at name="id">embedded.1289436125</at>
1545 1544
                          <at name="rowspecs">CENTER:DEFAULT:NONE</at>
1546 1545
                          <at name="colspecs">FILL:DEFAULT:GROW(1.0),FILL:4DLU:NONE,FILL:DEFAULT:NONE</at>
1547 1546
                          <at name="components">
......
1651 1650
                                    </object>
1652 1651
                                   </at>
1653 1652
                                   <at name="name">txtCRS</at>
1654
                                   <at name="width">728</at>
1653
                                   <at name="width">752</at>
1655 1654
                                   <at name="height">20</at>
1656 1655
                                  </object>
1657 1656
                                 </at>
......
1872 1871
                      </at>
1873 1872
                      <at name="componentclass">com.jeta.forms.gui.form.FormComponent</at>
1874 1873
                     </super>
1875
                     <at name="id">embedded.1264804891</at>
1874
                     <at name="id">embedded.8208044</at>
1876 1875
                     <at name="rowspecs">CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE,CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:DEFAULT:NONE</at>
1877 1876
                     <at name="colspecs">FILL:4DLU:NONE,FILL:DEFAULT:NONE,FILL:4DLU:NONE,FILL:DEFAULT:GROW(1.0),FILL:4DLU:NONE</at>
1878 1877
                     <at name="components">
......
1985 1984
                              <at name="editable">true</at>
1986 1985
                              <at name="requestFocusEnabled">false</at>
1987 1986
                              <at name="name">cboDateFormat</at>
1988
                              <at name="width">797</at>
1987
                              <at name="width">821</at>
1989 1988
                              <at name="items">
1990 1989
                               <object classname="com.jeta.forms.store.properties.ItemsProperty">
1991 1990
                                <at name="name">items</at>
......
2076 2075
                           </at>
2077 2076
                           <at name="componentclass">com.jeta.forms.gui.form.FormComponent</at>
2078 2077
                          </super>
2079
                          <at name="id">embedded.286427158</at>
2078
                          <at name="id">embedded.1310372468</at>
2080 2079
                          <at name="rowspecs">CENTER:DEFAULT:NONE,CENTER:2DLU:NONE,CENTER:DEFAULT:NONE</at>
2081 2080
                          <at name="colspecs">FILL:DEFAULT:NONE,FILL:4DLU:NONE,FILL:DEFAULT:GROW(1.0),FILL:4DLU:NONE,FILL:DEFAULT:NONE</at>
2082 2081
                          <at name="components">
......
2246 2245
                                    </object>
2247 2246
                                   </at>
2248 2247
                                   <at name="name">txtIntervalStart</at>
2249
                                   <at name="width">720</at>
2248
                                   <at name="width">744</at>
2250 2249
                                   <at name="height">20</at>
2251 2250
                                  </object>
2252 2251
                                 </at>
......
2420 2419
                                    </object>
2421 2420
                                   </at>
2422 2421
                                   <at name="name">txtIntervalEnd</at>
2423
                                   <at name="width">720</at>
2422
                                   <at name="width">744</at>
2424 2423
                                   <at name="height">20</at>
2425 2424
                                  </object>
2426 2425
                                 </at>
......
2624 2623
                   <at name="icon">
2625 2624
                    <object classname="com.jeta.forms.store.properties.IconProperty">
2626 2625
                     <at name="embedded">false</at>
2627
                     <at name="description"></at>
2628 2626
                     <at name="width">0</at>
2629 2627
                     <at name="height">0</at>
2630 2628
                    </object>
......
2645 2643
                      </at>
2646 2644
                      <at name="componentclass">com.jeta.forms.gui.form.FormComponent</at>
2647 2645
                     </super>
2648
                     <at name="id">embedded.Cb987a91Z16acb9ffe5cQL7ff4</at>
2646
                     <at name="id">embedded.916288048</at>
2649 2647
                     <at name="rowspecs">FILL:DEFAULT:GROW(1.0)</at>
2650 2648
                     <at name="colspecs">FILL:DEFAULT:GROW(1.0)</at>
2651 2649
                     <at name="components">
......
2667 2665
                           </at>
2668 2666
                           <at name="componentclass">com.jeta.forms.gui.form.FormComponent</at>
2669 2667
                          </super>
2670
                          <at name="id">embedded.1015049037</at>
2668
                          <at name="id">embedded.1987863629</at>
2671 2669
                          <at name="rowspecs">FILL:DEFAULT:GROW(1.0),CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:DEFAULT:NONE</at>
2672 2670
                          <at name="colspecs">FILL:4DLU:NONE,FILL:DEFAULT:NONE,FILL:4DLU:NONE,FILL:DEFAULT:GROW(1.0),FILL:4DLU:NONE,FILL:DEFAULT:NONE,FILL:4DLU:NONE</at>
2673 2671
                          <at name="components">
......
2840 2838
                                   <at name="editable">true</at>
2841 2839
                                   <at name="requestFocusEnabled">false</at>
2842 2840
                                   <at name="name">cboTagsName</at>
2843
                                   <at name="width">730</at>
2841
                                   <at name="width">754</at>
2844 2842
                                   <at name="items">
2845 2843
                                    <object classname="com.jeta.forms.store.properties.ItemsProperty">
2846 2844
                                     <at name="name">items</at>
......
2899 2897
                                    </object>
2900 2898
                                   </at>
2901 2899
                                   <at name="name">txtTagsValue</at>
2902
                                   <at name="width">730</at>
2900
                                   <at name="width">754</at>
2903 2901
                                   <at name="height">20</at>
2904 2902
                                  </object>
2905 2903
                                 </at>
......
2953 2951
                                    </object>
2954 2952
                                   </at>
2955 2953
                                   <at name="name">tblTags</at>
2956
                                   <at name="width">778</at>
2954
                                   <at name="width">802</at>
2957 2955
                                   <at name="scollBars">
2958 2956
                                    <object classname="com.jeta.forms.store.properties.ScrollBarsProperty">
2959 2957
                                     <at name="name">scollBars</at>
......
3034 3032
                                    </object>
3035 3033
                                   </at>
3036 3034
                                   <at name="name">lblTagsDescription</at>
3037
                                   <at name="width">730</at>
3035
                                   <at name="width">754</at>
3038 3036
                                   <at name="fill">
3039 3037
                                    <object classname="com.jeta.forms.store.properties.effects.PaintProperty">
3040 3038
                                     <at name="name">fill</at>
......
3065 3063
                                </at>
3066 3064
                                <at name="componentclass">com.jeta.forms.gui.form.FormComponent</at>
3067 3065
                               </super>
3068
                               <at name="id">embedded.1904489293</at>
3066
                               <at name="id">embedded.429175123</at>
3069 3067
                               <at name="rowspecs">CENTER:DEFAULT:NONE,CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE,CENTER:DEFAULT:NONE</at>
3070 3068
                               <at name="colspecs">FILL:DEFAULT:NONE</at>
3071 3069
                               <at name="components">
......
3349 3347
                                </at>
3350 3348
                               </object>
3351 3349
                              </at>
3352
                              <at name="name"></at>
3350
                              <at name="name"/>
3353 3351
                              <at name="fill">
3354 3352
                               <object classname="com.jeta.forms.store.properties.effects.PaintProperty">
3355 3353
                                <at name="name">fill</at>
......
3446 3444
                           </at>
3447 3445
                          </object>
3448 3446
                         </at>
3449
                         <at name="name"></at>
3447
                         <at name="name"/>
3450 3448
                         <at name="fill">
3451 3449
                          <object classname="com.jeta.forms.store.properties.effects.PaintProperty">
3452 3450
                           <at name="name">fill</at>
......
3457 3455
                           <at name="name">scollBars</at>
3458 3456
                           <at name="verticalpolicy">21</at>
3459 3457
                           <at name="horizontalpolicy">31</at>
3458
                           <at name="border">
3459
                            <object classname="com.jeta.forms.store.properties.CompoundBorderProperty">
3460
                             <super classname="com.jeta.forms.store.properties.BorderProperty">
3461
                              <at name="name">border</at>
3462
                             </super>
3463
                             <at name="borders">
3464
                              <object classname="java.util.LinkedList">
3465
                               <item >
3466
                                <at name="value">
3467
                                 <object classname="com.jeta.forms.store.properties.DefaultBorderProperty">
3468
                                  <super classname="com.jeta.forms.store.properties.BorderProperty">
3469
                                   <at name="name">border</at>
3470
                                  </super>
3471
                                 </object>
3472
                                </at>
3473
                               </item>
3474
                              </object>
3475
                             </at>
3476
                            </object>
3477
                           </at>
3460 3478
                          </object>
3461 3479
                         </at>
3462 3480
                        </object>
......
3521 3539
                      </at>
3522 3540
                      <at name="componentclass">com.jeta.forms.gui.form.FormComponent</at>
3523 3541
                     </super>
3524
                     <at name="id">embedded.234699514</at>
3542
                     <at name="id">embedded.2112083385</at>
3525 3543
                     <at name="rowspecs">CENTER:DEFAULT:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE</at>
3526 3544
                     <at name="colspecs">FILL:4DLU:NONE,FILL:DEFAULT:NONE,FILL:4DLU:NONE,FILL:DEFAULT:GROW(1.0),FILL:4DLU:NONE,FILL:DEFAULT:NONE,FILL:4DLU:NONE</at>
3527 3545
                     <at name="components">
......
3572 3590
                              </at>
3573 3591
                              <at name="actionCommand">_is_foreing_key</at>
3574 3592
                              <at name="name">chkIsForeingKey</at>
3575
                              <at name="width">829</at>
3593
                              <at name="width">853</at>
3576 3594
                              <at name="text">_is_foreing_key</at>
3577 3595
                              <at name="height">16</at>
3578 3596
                             </object>
......
3810 3828
                              <at name="editable">true</at>
3811 3829
                              <at name="requestFocusEnabled">false</at>
3812 3830
                              <at name="name">cboForeingKeyTableName</at>
3813
                              <at name="width">787</at>
3831
                              <at name="width">811</at>
3814 3832
                              <at name="items">
3815 3833
                               <object classname="com.jeta.forms.store.properties.ItemsProperty">
3816 3834
                                <at name="name">items</at>
......
3872 3890
                              <at name="editable">true</at>
3873 3891
                              <at name="requestFocusEnabled">false</at>
3874 3892
                              <at name="name">cboForeingKeyCodeName</at>
3875
                              <at name="width">787</at>
3893
                              <at name="width">811</at>
3876 3894
                              <at name="items">
3877 3895
                               <object classname="com.jeta.forms.store.properties.ItemsProperty">
3878 3896
                                <at name="name">items</at>
......
3931 3949
                               </object>
3932 3950
                              </at>
3933 3951
                              <at name="name">txtForeingKeyFormula</at>
3934
                              <at name="width">732</at>
3952
                              <at name="width">756</at>
3935 3953
                              <at name="height">20</at>
3936 3954
                             </object>
3937 3955
                            </at>
......
4040 4058
                                </at>
4041 4059
                               </object>
4042 4060
                              </at>
4043
                              <at name="name">lblIsSelectable</at>
4061
                              <at name="name">lblIsClosedList</at>
4044 4062
                              <at name="width">86</at>
4045
                              <at name="text">_is_seletable</at>
4063
                              <at name="text">_is_closed_list</at>
4046 4064
                              <at name="fill">
4047 4065
                               <object classname="com.jeta.forms.store.properties.effects.PaintProperty">
4048 4066
                                <at name="name">fill</at>
......
4100 4118
                                </at>
4101 4119
                               </object>
4102 4120
                              </at>
4103
                              <at name="name">chkIsSelectable</at>
4104
                              <at name="width">732</at>
4121
                              <at name="name">chkIsClosedList</at>
4122
                              <at name="width">756</at>
4105 4123
                              <at name="height">15</at>
4106 4124
                             </object>
4107 4125
                            </at>
......
4252 4270
                      </at>
4253 4271
                      <at name="componentclass">com.jeta.forms.gui.form.FormComponent</at>
4254 4272
                     </super>
4255
                     <at name="id">embedded.873481752</at>
4273
                     <at name="id">embedded.1306975728</at>
4256 4274
                     <at name="rowspecs">FILL:DEFAULT:GROW(1.0)</at>
4257 4275
                     <at name="colspecs">FILL:DEFAULT:GROW(1.0)</at>
4258 4276
                     <at name="components">
......
4337 4355
                                        </at>
4338 4356
                                        <at name="componentclass">com.jeta.forms.gui.form.FormComponent</at>
4339 4357
                                       </super>
4340
                                       <at name="id">embedded.1757209369</at>
4358
                                       <at name="id">embedded.1111542043</at>
4341 4359
                                       <at name="rowspecs">CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE,FILL:DEFAULT:GROW(0.2)</at>
4342 4360
                                       <at name="colspecs">FILL:4DLU:NONE,FILL:DEFAULT:NONE,FILL:4DLU:NONE,FILL:DEFAULT:GROW(1.0),FILL:4DLU:NONE</at>
4343 4361
                                       <at name="components">
......
4510 4528
                                                <at name="editable">true</at>
4511 4529
                                                <at name="requestFocusEnabled">false</at>
4512 4530
                                                <at name="name">cboGroup</at>
4513
                                                <at name="width">710</at>
4531
                                                <at name="width">734</at>
4514 4532
                                                <at name="items">
4515 4533
                                                 <object classname="com.jeta.forms.store.properties.ItemsProperty">
4516 4534
                                                  <at name="name">items</at>
......
4569 4587
                                                 </object>
4570 4588
                                                </at>
4571 4589
                                                <at name="name">txtOrder</at>
4572
                                                <at name="width">710</at>
4590
                                                <at name="width">734</at>
4573 4591
                                                <at name="height">20</at>
4574 4592
                                               </object>
4575 4593
                                              </at>
......
4683 4701
                                                 </object>
4684 4702
                                                </at>
4685 4703
                                                <at name="name">chkHidden</at>
4686
                                                <at name="width">710</at>
4704
                                                <at name="width">734</at>
4687 4705
                                                <at name="height">15</at>
4688 4706
                                               </object>
4689 4707
                                              </at>
......
4797 4815
                                                 </object>
4798 4816
                                                </at>
4799 4817
                                                <at name="name">txtLabel</at>
4800
                                                <at name="width">710</at>
4818
                                                <at name="width">734</at>
4801 4819
                                                <at name="height">20</at>
4802 4820
                                               </object>
4803 4821
                                              </at>
......
4914 4932
                                                <at name="scrollableTracksViewportHeight">true</at>
4915 4933
                                                <at name="scrollableTracksViewportWidth">true</at>
4916 4934
                                                <at name="name">txtDescription</at>
4917
                                                <at name="width">708</at>
4935
                                                <at name="width">732</at>
4918 4936
                                                <at name="scollBars">
4919 4937
                                                 <object classname="com.jeta.forms.store.properties.ScrollBarsProperty">
4920 4938
                                                  <at name="name">scollBars</at>
......
5089 5107
                                        </at>
5090 5108
                                        <at name="componentclass">com.jeta.forms.gui.form.FormComponent</at>
5091 5109
                                       </super>
5092
                                       <at name="id">embedded.1557366099</at>
5110
                                       <at name="id">embedded.547348991</at>
5093 5111
                                       <at name="rowspecs">CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:4DLU:NONE,CENTER:DEFAULT:NONE,CENTER:DEFAULT:NONE</at>
5094 5112
                                       <at name="colspecs">FILL:4DLU:NONE,FILL:DEFAULT:NONE,FILL:4DLU:NONE,FILL:DEFAULT:GROW(1.0),FILL:4DLU:NONE</at>
5095 5113
                                       <at name="components">
......
5199 5217
                                                 </object>
5200 5218
                                                </at>
5201 5219
                                                <at name="name">txtMinValue</at>
5202
                                                <at name="width">684</at>
5220
                                                <at name="width">708</at>
5203 5221
                                                <at name="height">20</at>
5204 5222
                                               </object>
5205 5223
                                              </at>
......
5313 5331
                                                 </object>
5314 5332
                                                </at>
... This diff was truncated because it exceeds the maximum size that can be displayed.

Also available in: Unified diff