package com.github.czyzby.lml.vis.parser.impl.attribute.menu; 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.PopupMenu; /** * See {@link PopupMenu#setListener(PopupMenu.PopupMenuListener)}. Expects ID of an action that returns * {@link com.kotcrab.vis.ui.widget.PopupMenu.PopupMenuListener} instance. Mapped to "menuListener". * @author MJ */ public class PopupMenuListenerLmlAttribute implements LmlAttribute<PopupMenu> { @Override public Class<PopupMenu> getHandledType() { return PopupMenu.class; } @Override public void process(LmlParser parser, LmlTag tag, PopupMenu popupMenu, String rawAttributeData) { @SuppressWarnings("unchecked") final ActorConsumer<PopupMenu.PopupMenuListener, PopupMenu> action = (ActorConsumer<PopupMenu.PopupMenuListener, PopupMenu>) parser .parseAction(rawAttributeData, popupMenu); if (action == null) { parser.throwErrorIfStrict( "Popup menu listener attribute expects an action that returns PopupMenuListener. Method not found for ID: " + rawAttributeData); return; } popupMenu.setListener(action.consume(popupMenu)); } }