public ElementStyleRule derive( final boolean preserveId ) { final ElementStyleRule clone = (ElementStyleRule) super.derive( preserveId ); clone.selectorList = (ArrayList<CSSSelector>) selectorList.clone(); return clone; }
public ElementStyleDefinition derive( final boolean preserveIds ) { try { final ElementStyleDefinition clone = (ElementStyleDefinition) super.clone(); clone.styles = (ArrayList<ElementStyleDefinition>) styles.clone(); for ( int i = 0; i < styles.size(); i++ ) { final ElementStyleDefinition styleDefinition = styles.get( i ); clone.styles.set( i, styleDefinition.derive( preserveIds ) ); } clone.rules = (ArrayList<ElementStyleSheet>) rules.clone(); for ( int i = 0; i < rules.size(); i++ ) { final ElementStyleSheet styleDefinition = rules.get( i ); clone.rules.set( i, styleDefinition.derive( preserveIds ) ); } return clone; } catch ( CloneNotSupportedException e ) { throw new IllegalStateException(); } }
@Test public void derive_PreservingId() { List<StyleKey> keys = StyleKey.getDefinedStyleKeysList(); ElementStyleSheet sheet = new ElementStyleSheet(); setEverySecondKey( sheet, keys ); ElementStyleSheet clone = sheet.derive( true ); assertEquals( sheet.getId(), clone.getId() ); assertEverySecondKey( clone, keys ); }
@Test public void derive_DiscardingId() { List<StyleKey> keys = StyleKey.getDefinedStyleKeysList(); ElementStyleSheet sheet = new ElementStyleSheet(); setEverySecondKey( sheet, keys ); ElementStyleSheet clone = sheet.derive( false ); assertNotSame( sheet.getId(), clone.getId() ); assertEverySecondKey( clone, keys ); }