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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
|
package org.litesoft.aokeyhole.objects;
import org.litesoft.aokeyhole.objects.support.*;
import org.litesoft.aokeyhole.toolkit.*;
import org.litesoft.core.util.*;
public class AttributeMetaDataValidOptions extends AttributeMetaDataSimple
{
public AttributeMetaDataValidOptions( AttributeSet pAttributeSet, Mode pMode, boolean pEditable, boolean pVirtual, PropertyMetaData[] pPropertyMetaDatas, IdentifierValidator pNameValidator, String pName )
{
super( pAttributeSet, pMode, pEditable, pVirtual, pPropertyMetaDatas, pNameValidator, pName );
}
public AttributeMetaDataValidOptions( AttributeSet pAttributeSet, Mode pMode, boolean pEditable, boolean pVirtual, PropertyMetaData[] pPropertyMetaDatas, IdentifierValidator pNameValidator, String... pNameAndOptions )
{
this( pAttributeSet, pMode, pEditable, pVirtual, pPropertyMetaDatas, pNameValidator, pNameAndOptions[0] );
int zOptions = pNameAndOptions.length - 1;
mValidOptions = new String[zOptions];
if ( zOptions > 0 )
{
System.arraycopy( pNameAndOptions, 1, mValidOptions, 0, zOptions );
}
}
private String[] mValidOptions = UtilsCommon.EMPTY_STRING_ARRAY;
public String[] getValidOptions()
{
return mValidOptions;
}
public void setValidOptions( String[] pValidOptions )
{
if ( pValidOptions != null )
{
mValidOptions = pValidOptions;
}
}
@Override
protected void addLineExtra( StringBuilder pSB )
{
if ( anyValidOptions() )
{
pSB.append( '|' );
mergeValidOptions( pSB );
}
}
private boolean anyValidOptions()
{
return (mValidOptions.length != 0);
}
private StringBuilder mergeValidOptions( StringBuilder pSB )
{
if ( anyValidOptions() )
{
pSB.append( mValidOptions[0] );
for ( int i = 1; i < mValidOptions.length; i++ )
{
pSB.append( '|' );
pSB.append( mValidOptions[i] );
}
}
return pSB;
}
@Override
public void setUpView( NameValuesComponent pNameValuesComponent )
{
super.setUpView( pNameValuesComponent );
pNameValuesComponent.setValue( AttribNames.VALID_OPTIONS, mergeValidOptions( new StringBuilder() ).toString() );
}
@Override
protected void saveFromViewCollectChanges( ChangeHandler pChanges, NameValuesComponent pNameValuesComponent )
{
super.saveFromViewCollectChanges( pChanges, pNameValuesComponent );
pChanges.add( checkValidOptionsChange( pNameValuesComponent.getValue( AttribNames.VALID_OPTIONS ) ) );
}
protected ChangeFragment checkValidOptionsChange( String pNewValue )
{
String[] zCurValidOptions = getValidOptions();
String[] zNewValidOptions = StringArrayValueStringConverter.TRIM_DROP_EMPTY.split( pNewValue );
return !UtilsCommon.areArraysEqual( zCurValidOptions, zNewValidOptions ) ? new ChangeValidOptions( zNewValidOptions ) : null;
}
protected class ChangeValidOptions implements ChangeFragment
{
private String[] mNewValidOptions;
public ChangeValidOptions( String[] pNewValidOptions )
{
mNewValidOptions = pNewValidOptions;
}
public void commitChange()
{
setValidOptions( mNewValidOptions );
}
}
}
|