1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
|
package org.litesoft.GWT.forms.client.components.factories.others;
import com.google.gwt.user.client.ui.*;
import org.litesoft.GWT.forms.client.components.factories.*;
import org.litesoft.GWT.forms.client.nonpublic.*;
import org.litesoft.core.util.*;
import org.litesoft.ui.def.*;
import org.litesoft.ui.def.nonpublic.*;
import org.litesoft.ui.def.nonpublic.support.*;
import java.util.*;
public class BaseFormComponentFactory implements FormComponentFactory
{
public static final BaseFormComponentFactory INSTANCE = new BaseFormComponentFactory();
private Map<UiD_Type, FormComponentFactory> mTypeToFactory = new HashMap<UiD_Type, FormComponentFactory>();
private BaseFormComponentFactory()
{
addMapping( UiActionDef.TYPE, /* */ new UiActionWidgetFactory() );
addMapping( UiHiddenAttributeDef.TYPE, /* */ new UiHiddenAttributeWidgetFactory() );
addMapping( UiImageDef.TYPE, /* */ new UiImageWidgetFactory() );
addMapping( UiInputActionDef.TYPE, /* */ new UiInputActionWidgetFactory() );
addMapping( UiInputImageDef.TYPE, /* */ new UiInputImageWidgetFactory() );
addMapping( UiInputDef.TYPE, /* */ new UiInputWidgetFactory() );
addMapping( UiLabelDef.TYPE, /* */ new UiLabelWidgetFactory() );
addMapping( UiSpacerDef.TYPE, /* */ new UiSpacerWidgetFactory() );
addMapping( UiTreeMenuDef.TYPE, /* */ new UiTreeMenuWidgetFactory() );
addMapping( UiViewDef.TYPE, /* */ UiViewWidgetFactory.INSTANCE );
}
public void addMapping( UiD_Type pUiDefType, FormComponentFactory pTypeFactory )
{
Object prev = assertMappingAdjustment( pUiDefType, pTypeFactory );
if ( prev != null )
{
throw new IllegalStateException(
"Duplicate FormComponentFactory for type (" + pUiDefType + "):" + //
"\n prev: " + prev + //
"\n new: " + pTypeFactory );
}
mTypeToFactory.put( pUiDefType, pTypeFactory );
}
public void replaceMapping( UiD_Type pUiDefType, FormComponentFactory pTypeFactory )
{
Object prev = assertMappingAdjustment( pUiDefType, pTypeFactory );
if ( prev == null )
{
throw new IllegalStateException(
"No Existing FormComponentFactory for type (" + pUiDefType + "):" + //
"\n new: " + pTypeFactory );
}
mTypeToFactory.put( pUiDefType, pTypeFactory );
}
private Object assertMappingAdjustment( UiD_Type pUiDefType, FormComponentFactory pTypeFactory )
{
UtilsCommon.assertNotNull( "UiDefType", pUiDefType );
UtilsCommon.assertNotNull( "TypeFactory", pTypeFactory );
return mTypeToFactory.get( pUiDefType );
}
private FormComponentFactory getMapping( UiD_Type pUiDefType )
{
return mTypeToFactory.get( pUiDefType );
}
public Widget create( FormInstanceComponentHandler pComponentHandler, UiDef pUiDef,
FormMetaData pFormMetaData, boolean pHasHorizontalPeer )
{
FormComponentFactory factory = getMapping( pUiDef.getType() );
if ( factory == null )
{
return new Label( "No FormComponentFactory for type: " + pUiDef.getType() );
}
return factory.create( pComponentHandler, pUiDef, pFormMetaData,
pHasHorizontalPeer );
}
}
|