package org.ovirt.engine.ui.webadmin.widget.tags; import org.ovirt.engine.ui.uicommonweb.UICommand; import org.ovirt.engine.ui.uicommonweb.models.tags.TagListModel; import org.ovirt.engine.ui.webadmin.idhandler.ElementIdHandler; import org.ovirt.engine.ui.webadmin.idhandler.WithElementId; import org.ovirt.engine.ui.webadmin.uicommon.model.TagModelProvider; import org.ovirt.engine.ui.webadmin.widget.action.AbstractActionStackPanelItem; import org.ovirt.engine.ui.webadmin.widget.action.SimpleActionPanel; import org.ovirt.engine.ui.webadmin.widget.action.UiCommandButtonDefinition; import com.google.gwt.core.client.GWT; import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.user.cellview.client.CellTree; import com.google.gwt.user.cellview.client.HasKeyboardSelectionPolicy.KeyboardSelectionPolicy; import com.google.gwt.user.client.ui.Widget; public class TagList extends AbstractActionStackPanelItem<TagModelProvider, TagListModel, CellTree> { interface WidgetUiBinder extends UiBinder<Widget, TagList> { WidgetUiBinder uiBinder = GWT.create(WidgetUiBinder.class); } interface ViewIdHandler extends ElementIdHandler<TagList> { ViewIdHandler idHandler = GWT.create(ViewIdHandler.class); } @WithElementId SimpleActionPanel<TagListModel> simpleActionPanel; public TagList(TagModelProvider modelProvider) { super(modelProvider); initWidget(WidgetUiBinder.uiBinder.createAndBindUi(this)); ViewIdHandler.idHandler.generateAndSetIds(this); addActionButtons(modelProvider); } @Override protected CellTree createDataDisplayWidget(TagModelProvider modelProvider) { TagTreeResources res = GWT.create(TagTreeResources.class); CellTree display = new CellTree(modelProvider, null, res); display.setAnimationEnabled(true); display.setKeyboardSelectionPolicy(KeyboardSelectionPolicy.BOUND_TO_SELECTION); modelProvider.setDisplay(display); return display; } @SuppressWarnings({ "unchecked", "rawtypes" }) @Override protected SimpleActionPanel<TagListModel> createActionPanel(final TagModelProvider modelProvider) { simpleActionPanel = new SimpleActionPanel(modelProvider, modelProvider.getSelectionModel()); return simpleActionPanel; } private void addActionButtons(final TagModelProvider modelProvider) { simpleActionPanel.addActionButton(new UiCommandButtonDefinition<TagListModel>("New") { @Override protected UICommand resolveCommand() { return modelProvider.getModel().getNewCommand(); } }); simpleActionPanel.addActionButton(new UiCommandButtonDefinition<TagListModel>("Edit") { @Override protected UICommand resolveCommand() { return modelProvider.getModel().getEditCommand(); } }); simpleActionPanel.addActionButton(new UiCommandButtonDefinition<TagListModel>("Remove") { @Override protected UICommand resolveCommand() { return modelProvider.getModel().getRemoveCommand(); } }); } interface TagTreeResources extends CellTree.Resources { interface TableStyle extends CellTree.Style { } @Override @Source({ CellTree.Style.DEFAULT_CSS, "org/ovirt/engine/ui/webadmin/css/TagTree.css" }) TableStyle cellTreeStyle(); } }