package org.ovirt.engine.ui.common.presenter;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.ovirt.engine.ui.common.widget.action.ActionButtonDefinition;
import com.google.gwt.event.shared.EventBus;
import com.google.inject.Inject;
public class PluginActionButtonHandler {
private final Map<String, List<ActionButtonDefinition<?>>> definitionMap = new HashMap<>();
@Inject
public PluginActionButtonHandler(EventBus eventBus) {
eventBus.addHandler(AddTabActionButtonEvent.getType(),
event -> {
List<ActionButtonDefinition<?>> buttonDefinitionList = definitionMap.get(event.getHistoryToken());
if (buttonDefinitionList == null) {
buttonDefinitionList = new ArrayList<>();
definitionMap.put(event.getHistoryToken(), buttonDefinitionList);
}
buttonDefinitionList.add(event.getButtonDefinition());
});
}
/**
* Returns a list of {@code ActionButtonDefinition}s provided by UI plugins.
* @param historyToken The token used to look up the button definitions.
* @return A list of {@code ActionButtonDefinition}s, or an empty list if not found.
*/
public List<ActionButtonDefinition<?>> getButtons(String historyToken) {
List<ActionButtonDefinition<?>> result = definitionMap.get(historyToken);
if (result == null) {
result = Collections.emptyList();
}
return result;
}
}