View Javadoc
1   /*
2    * Tethys: GUI Utilities
3    * Copyright 2012-2026. Tony Washer
4    *
5    * Licensed under the Apache License, Version 2.0 (the "License"); you may not
6    * use this file except in compliance with the License.  You may obtain a copy
7    * of the License at
8    *
9    *   http://www.apache.org/licenses/LICENSE-2.0
10   *
11   * Unless required by applicable law or agreed to in writing, software
12   * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
13   * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
14   * License for the specific language governing permissions and limitations under
15   * the License.
16   */
17  package io.github.tonywasher.joceanus.tethys.api.field;
18  
19  import io.github.tonywasher.joceanus.tethys.api.field.TethysUIDataEditField.TethysUICharArrayEditField;
20  import io.github.tonywasher.joceanus.tethys.api.field.TethysUIDataEditField.TethysUICharArrayTextAreaField;
21  import io.github.tonywasher.joceanus.tethys.api.field.TethysUIDataEditField.TethysUIColorButtonField;
22  import io.github.tonywasher.joceanus.tethys.api.field.TethysUIDataEditField.TethysUIDateButtonField;
23  import io.github.tonywasher.joceanus.tethys.api.field.TethysUIDataEditField.TethysUIIconButtonField;
24  import io.github.tonywasher.joceanus.tethys.api.field.TethysUIDataEditField.TethysUIIntegerEditField;
25  import io.github.tonywasher.joceanus.tethys.api.field.TethysUIDataEditField.TethysUIListButtonField;
26  import io.github.tonywasher.joceanus.tethys.api.field.TethysUIDataEditField.TethysUILongEditField;
27  import io.github.tonywasher.joceanus.tethys.api.field.TethysUIDataEditField.TethysUIMoneyEditField;
28  import io.github.tonywasher.joceanus.tethys.api.field.TethysUIDataEditField.TethysUIPriceEditField;
29  import io.github.tonywasher.joceanus.tethys.api.field.TethysUIDataEditField.TethysUIRateEditField;
30  import io.github.tonywasher.joceanus.tethys.api.field.TethysUIDataEditField.TethysUIRatioEditField;
31  import io.github.tonywasher.joceanus.tethys.api.field.TethysUIDataEditField.TethysUIRawDecimalEditField;
32  import io.github.tonywasher.joceanus.tethys.api.field.TethysUIDataEditField.TethysUIScrollButtonField;
33  import io.github.tonywasher.joceanus.tethys.api.field.TethysUIDataEditField.TethysUIShortEditField;
34  import io.github.tonywasher.joceanus.tethys.api.field.TethysUIDataEditField.TethysUIStringEditField;
35  import io.github.tonywasher.joceanus.tethys.api.field.TethysUIDataEditField.TethysUIStringTextAreaField;
36  import io.github.tonywasher.joceanus.tethys.api.field.TethysUIDataEditField.TethysUIUnitsEditField;
37  
38  /**
39   * Field Factory.
40   */
41  public interface TethysUIFieldFactory {
42      /**
43       * Obtain a new string data field.
44       *
45       * @return the new field
46       */
47      TethysUIStringEditField newStringField();
48  
49      /**
50       * Obtain a new string textArea field.
51       *
52       * @return the new field
53       */
54      TethysUIStringTextAreaField newStringAreaField();
55  
56      /**
57       * Obtain a new charArray data field.
58       *
59       * @return the new field
60       */
61      TethysUICharArrayEditField newCharArrayField();
62  
63      /**
64       * Obtain a new charArray textArea field.
65       *
66       * @return the new field
67       */
68      TethysUICharArrayTextAreaField newCharArrayAreaField();
69  
70      /**
71       * Obtain a new short data field.
72       *
73       * @return the new field
74       */
75      TethysUIShortEditField newShortField();
76  
77      /**
78       * Obtain a new integer data field.
79       *
80       * @return the new field
81       */
82      TethysUIIntegerEditField newIntegerField();
83  
84      /**
85       * Obtain a new long data field.
86       *
87       * @return the new field
88       */
89      TethysUILongEditField newLongField();
90  
91      /**
92       * Obtain a new raw decimal data field.
93       *
94       * @return the new field
95       */
96      TethysUIRawDecimalEditField newRawDecimalField();
97  
98      /**
99       * Obtain a new money data field.
100      *
101      * @return the new field
102      */
103     TethysUIMoneyEditField newMoneyField();
104 
105     /**
106      * Obtain a new price data field.
107      *
108      * @return the new field
109      */
110     TethysUIPriceEditField newPriceField();
111 
112     /**
113      * Obtain a new rate data field.
114      *
115      * @return the new field
116      */
117     TethysUIRateEditField newRateField();
118 
119     /**
120      * Obtain a new units data field.
121      *
122      * @return the new field
123      */
124     TethysUIUnitsEditField newUnitsField();
125 
126     /**
127      * Obtain a new ratio data field.
128      *
129      * @return the new field
130      */
131     TethysUIRatioEditField newRatioField();
132 
133     /**
134      * Obtain a new date data field.
135      *
136      * @return the new field
137      */
138     TethysUIDateButtonField newDateField();
139 
140     /**
141      * Obtain a new scroll data field.
142      *
143      * @param <T>    the item type
144      * @param pClazz the value class
145      * @return the new field
146      */
147     <T> TethysUIScrollButtonField<T> newScrollField(Class<T> pClazz);
148 
149     /**
150      * Obtain a new list data field.
151      *
152      * @param <T> the item type
153      * @return the new field
154      */
155     <T extends Comparable<? super T>> TethysUIListButtonField<T> newListField();
156 
157     /**
158      * Obtain a new simple icon data field.
159      *
160      * @param <T>    the item type
161      * @param pClazz the value class
162      * @return the new field
163      */
164     <T> TethysUIIconButtonField<T> newIconField(Class<T> pClazz);
165 
166     /**
167      * Obtain a new colour data field.
168      *
169      * @return the new field
170      */
171     TethysUIColorButtonField newColorField();
172 }