litesoft
@ 193
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 108 109 |
// This Source Code is in the Public Domain per: http://litesoft.org/License.txt 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 implements HasValidOptions { 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; } @Override public void commitChange() { setValidOptions( mNewValidOptions ); } } } |