OpenConcerto

Dépôt officiel du code source de l'ERP OpenConcerto
sonarqube

svn://code.openconcerto.org/openconcerto

Rev

Rev 174 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 174 Rev 180
Line 54... Line 54...
54
import org.openconcerto.sql.model.graph.Step;
54
import org.openconcerto.sql.model.graph.Step;
55
import org.openconcerto.sql.request.ComboSQLRequest;
55
import org.openconcerto.sql.request.ComboSQLRequest;
56
import org.openconcerto.sql.request.ListSQLRequest;
56
import org.openconcerto.sql.request.ListSQLRequest;
57
import org.openconcerto.sql.request.SQLCache;
57
import org.openconcerto.sql.request.SQLCache;
58
import org.openconcerto.sql.request.SQLFieldTranslator;
58
import org.openconcerto.sql.request.SQLFieldTranslator;
-
 
59
import org.openconcerto.sql.sqlobject.SQLRequestComboBox;
59
import org.openconcerto.sql.sqlobject.SQLTextCombo;
60
import org.openconcerto.sql.sqlobject.SQLTextCombo;
60
import org.openconcerto.sql.ui.light.CustomRowEditor;
61
import org.openconcerto.sql.ui.light.CustomRowEditor;
61
import org.openconcerto.sql.ui.light.GroupToLightUIConvertor;
62
import org.openconcerto.sql.ui.light.GroupToLightUIConvertor;
62
import org.openconcerto.sql.ui.light.LightEditFrame;
63
import org.openconcerto.sql.ui.light.LightEditFrame;
63
import org.openconcerto.sql.ui.light.LightUIPanelFiller;
64
import org.openconcerto.sql.ui.light.LightUIPanelFiller;
Line 125... Line 126...
125
import java.util.Map.Entry;
126
import java.util.Map.Entry;
126
import java.util.Set;
127
import java.util.Set;
127
import java.util.SortedMap;
128
import java.util.SortedMap;
128
import java.util.concurrent.atomic.AtomicReference;
129
import java.util.concurrent.atomic.AtomicReference;
129
import java.util.logging.Level;
130
import java.util.logging.Level;
-
 
131
import java.util.function.Supplier;
130
 
132
 
131
import javax.swing.JComponent;
133
import javax.swing.JComponent;
132
import javax.swing.JOptionPane;
134
import javax.swing.JOptionPane;
133
import javax.swing.text.JTextComponent;
135
import javax.swing.text.JTextComponent;
134
 
136
 
Line 200... Line 202...
200
 
202
 
201
    // lazy creation
203
    // lazy creation
202
    @GuardedBy("this")
204
    @GuardedBy("this")
203
    private SQLCache<SQLRow, Object> modelCache;
205
    private SQLCache<SQLRow, Object> modelCache;
204
 
206
 
205
    private final Map<String, JComponent> additionalFields;
207
    private final Map<String, Supplier<? extends JComponent>> additionalFields;
206
    private final List<SQLTableModelColumn> additionalListCols;
208
    private final List<SQLTableModelColumn> additionalListCols;
207
    @GuardedBy("this")
209
    @GuardedBy("this")
208
    private List<String> mdPath;
210
    private List<String> mdPath;
209
 
211
 
210
    private Group defaultGroup;
212
    private Group defaultGroup;
Line 240... Line 242...
240
        this.components = new LinkedListMap<String, ITransformer<Tuple2<SQLElement, String>, SQLComponent>>();
242
        this.components = new LinkedListMap<String, ITransformer<Tuple2<SQLElement, String>, SQLComponent>>();
241
 
243
 
242
        this.modelCache = null;
244
        this.modelCache = null;
243
 
245
 
244
        // the components should always be in the same order
246
        // the components should always be in the same order
245
        this.additionalFields = new LinkedHashMap<String, JComponent>();
247
        this.additionalFields = new LinkedHashMap<>();
246
        this.additionalListCols = new ArrayList<SQLTableModelColumn>();
248
        this.additionalListCols = new ArrayList<SQLTableModelColumn>();
247
        this.mdPath = Collections.emptyList();
249
        this.mdPath = Collections.emptyList();
248
    }
250
    }
249
 
251
 
250
    public void destroy() {
252
    public void destroy() {
Line 3012... Line 3014...
3012
     * 
3014
     * 
3013
     * @param field the field of the component.
3015
     * @param field the field of the component.
3014
     * @return <code>true</code> if no view existed.
3016
     * @return <code>true</code> if no view existed.
3015
     */
3017
     */
3016
    public final boolean putAdditionalField(final String field) {
3018
    public final boolean putAdditionalField(final String field) {
3017
        return this.putAdditionalField(field, (JComponent) null);
3019
        return this.putAdditionalField(field, null);
3018
    }
3020
    }
3019
 
3021
 
3020
    public final boolean putAdditionalField(final String field, final JTextComponent comp) {
3022
    public final boolean putAdditionalTextField(final String field, final Supplier<? extends JTextComponent> comp) {
3021
        return this.putAdditionalField(field, (JComponent) comp);
3023
        return this.putAdditionalField(field, comp);
3022
    }
3024
    }
3023
 
3025
 
3024
    public final boolean putAdditionalField(final String field, final SQLTextCombo comp) {
3026
    public final boolean putAdditionalTextCombo(final String field, final Supplier<? extends SQLTextCombo> comp) {
-
 
3027
        return this.putAdditionalField(field, comp);
-
 
3028
    }
-
 
3029
 
-
 
3030
    public final boolean putAdditionalCombo(final String field, final Supplier<? extends SQLRequestComboBox> comp) {
3025
        return this.putAdditionalField(field, (JComponent) comp);
3031
        return this.putAdditionalField(field, comp);
3026
    }
3032
    }
3027
 
3033
 
3028
    // private as only a few JComponent are OK
3034
    // private as only a few JComponent are OK
3029
    private final boolean putAdditionalField(final String field, final JComponent comp) {
3035
    private final boolean putAdditionalField(final String field, final Supplier<? extends JComponent> comp) {
3030
        if (this.additionalFields.containsKey(field)) {
3036
        if (this.additionalFields.containsKey(field)) {
3031
            return false;
3037
            return false;
3032
        } else {
3038
        } else {
3033
            this.additionalFields.put(field, comp);
3039
            this.additionalFields.put(field, comp);
3034
            return true;
3040
            return true;
3035
        }
3041
        }
3036
    }
3042
    }
3037
 
3043
 
3038
    public final Map<String, JComponent> getAdditionalFields() {
3044
    public final Map<String, Supplier<? extends JComponent>> getAdditionalFields() {
3039
        return Collections.unmodifiableMap(this.additionalFields);
3045
        return Collections.unmodifiableMap(this.additionalFields);
3040
    }
3046
    }
3041
 
3047
 
3042
    public final void removeAdditionalField(final String field) {
3048
    public final void removeAdditionalField(final String field) {
3043
        this.additionalFields.remove(field);
3049
        this.additionalFields.remove(field);