public void generatePushValue(final GeneratorAdapter generator, final Object value) { FontDescriptor descriptor = (FontDescriptor) value; if (descriptor.isFixedFont()) { if (!descriptor.isFullyDefinedFont()) throw new IllegalStateException("Unexpected font state"); generator.newInstance(ourFontType); generator.dup(); generator.push(descriptor.getFontName()); generator.push(descriptor.getFontStyle()); generator.push(descriptor.getFontSize()); generator.invokeConstructor(ourFontType, ourInitMethod); } else if (descriptor.getSwingFont() != null) { generator.push(descriptor.getSwingFont()); generator.invokeStatic(ourUIManagerType, ourUIManagerGetFontMethod); } else { throw new IllegalStateException("Unknown font type"); } }
public boolean generateCustomSetValue( final LwComponent lwComponent, final InstrumentationClassFinder.PseudoClass componentClass, final LwIntrospectedProperty property, final GeneratorAdapter generator, final int componentLocal, final String formClassName) { FontDescriptor descriptor = (FontDescriptor) property.getPropertyValue(lwComponent); if (descriptor.isFixedFont() && !descriptor.isFullyDefinedFont()) { generator.loadLocal(componentLocal); generatePushFont( generator, componentLocal, lwComponent, descriptor, property.getReadMethodName()); Method setFontMethod = new Method(property.getWriteMethodName(), Type.VOID_TYPE, new Type[] {ourFontType}); Type componentType = AsmCodeGenerator.typeFromClassName(lwComponent.getComponentClassName()); generator.invokeVirtual(componentType, setFontMethod); return true; } return false; }