package com.github.czyzby.lml.vis.parser.impl.nongwt.attribute.file; import com.github.czyzby.lml.parser.LmlParser; import com.github.czyzby.lml.parser.action.ActorConsumer; import com.github.czyzby.lml.parser.tag.LmlAttribute; import com.github.czyzby.lml.parser.tag.LmlTag; import com.kotcrab.vis.ui.widget.file.FileChooser; import com.kotcrab.vis.ui.widget.file.FileChooser.FileIconProvider; /** See {@link FileChooser#setIconProvider(FileIconProvider)}. Expects ID of an action that references a method * consuming {@link FileChooser} and returning a {@link FileIconProvider}. Mapped to "iconProvider". * * @author MJ */ public class IconProviderLmlAttribute implements LmlAttribute<FileChooser> { @Override public Class<FileChooser> getHandledType() { return FileChooser.class; } @Override public void process(final LmlParser parser, final LmlTag tag, final FileChooser actor, final String rawAttributeData) { @SuppressWarnings("unchecked") final ActorConsumer<FileIconProvider, FileChooser> provider = (ActorConsumer<FileIconProvider, FileChooser>) parser .parseAction(rawAttributeData, actor); if (provider == null) { parser.throwError( "Icon provider requires an action ID of method returning FileIconProvider. No action found for data: " + rawAttributeData); } actor.setIconProvider(provider.consume(actor)); } }