1 package jimm.datavision.gui.parameter; 2 import jimm.datavision.Parameter; 3 import jimm.util.I18N; 4 import javax.swing.*; 5 6 13 abstract class Inquisitor { 14 15 protected static final int TEXT_FIELD_COLS = 24; 16 17 protected static int instanceCount; 18 protected Parameter parameter; 19 protected JPanel panel; 20 protected String panelName; 21 22 28 public static Inquisitor create(Parameter param) { 29 if (!param.isLegal(param.getType(), param.getArity())) { 30 String str = I18N.get("Inquisitor.param_cap") + ' ' + param.getName() 32 + ' ' + I18N.get("Inquisitor.illegal"); 33 throw new IllegalArgumentException (str); 34 } 35 36 switch (param.getType()) { 37 case Parameter.TYPE_BOOLEAN: 38 return new BoolInq(param); 39 case Parameter.TYPE_STRING: 40 switch (param.getArity()) { 41 case Parameter.ARITY_ONE: return new SingleStringInq(param); 42 case Parameter.ARITY_RANGE: return new RangeStringInq(param); 43 case Parameter.ARITY_LIST_SINGLE: 44 return new ListStringInq(param, false); 45 case Parameter.ARITY_LIST_MULTIPLE: 46 return new ListStringInq(param, true); 47 } 48 break; 49 case Parameter.TYPE_NUMERIC: 50 switch (param.getArity()) { 51 case Parameter.ARITY_ONE: return new SingleNumericInq(param); 52 case Parameter.ARITY_RANGE: return new RangeNumericInq(param); 53 case Parameter.ARITY_LIST_SINGLE: 54 return new ListNumericInq(param, false); 55 case Parameter.ARITY_LIST_MULTIPLE: 56 return new ListNumericInq(param, true); 57 } 58 break; 59 case Parameter.TYPE_DATE: 60 switch (param.getArity()) { 61 case Parameter.ARITY_ONE: return new SingleDateInq(param); 62 case Parameter.ARITY_RANGE: return new RangeDateInq(param); 63 } 64 break; 65 } 66 return null; } 68 69 74 Inquisitor(Parameter param) { 75 parameter = param; 76 panel = new JPanel(); 77 panel.setBorder(BorderFactory.createEmptyBorder(20, 20, 20, 20)); 78 panelName = "" + instanceCount++; 79 } 80 81 JPanel getPanel() { return panel; } 82 83 String getPanelName() { return panelName; } 84 85 88 abstract void copyGUIIntoParam(); 89 90 93 abstract void copyParamIntoGUI(); 94 95 } 96 | Popular Tags |