package org.ovirt.engine.ui.common.widget.table.cell; import java.util.HashSet; import java.util.Set; import org.ovirt.engine.ui.common.CommonApplicationResources; import org.ovirt.engine.ui.common.gin.AssetProvider; import com.google.gwt.cell.client.ValueUpdater; import com.google.gwt.core.client.GWT; import com.google.gwt.dom.client.BrowserEvents; import com.google.gwt.dom.client.Element; import com.google.gwt.dom.client.NativeEvent; import com.google.gwt.safehtml.client.SafeHtmlTemplates; import com.google.gwt.safehtml.shared.SafeHtml; public abstract class AbstractToggleButtonCell<T> extends AbstractCell<T> { public interface ToggleButtonCellTemplate extends SafeHtmlTemplates { @Template("<span id=\"{0}\" style=\"padding-left: 1px;\">{1}</span>") public SafeHtml span(String id, SafeHtml html); @Template("<input id=\"{2}\" style=\"background: transparent; border: 0px; width: 95%; {1}\"" + "readonly=\"readonly\" type=\"text\" value=\"{0}\" tabindex=\"-1\"></input>") public SafeHtml disabled(String value, String customStyle, String id); @Template("<button id=\"{0}\" tabindex='-1' type=\"button\" style=\"border-radius:2px;color:black\" " + "class=\"gwt-ToggleButton gwt-ToggleButton-up\" tabindex=\"-1\" aria-pressed=\"true\">{1}</button>") public SafeHtml toggledUp(String id, String value); @Template("<button id=\"{0}\" tabindex='-1' type=\"button\" style=\"border-radius:2px\" " + "class=\"gwt-ToggleButton gwt-ToggleButton-down\" tabindex=\"-1\" aria-pressed=\"false\">{1}</button>") public SafeHtml toggledDown(String id, String value); } protected static final ToggleButtonCellTemplate templates = GWT.create(ToggleButtonCellTemplate.class); private static final CommonApplicationResources resources = AssetProvider.getResources(); public AbstractToggleButtonCell() { } @Override public Set<String> getConsumedEvents() { Set<String> set = new HashSet<>(super.getConsumedEvents()); set.add(BrowserEvents.CLICK); return set; } @Override public void onBrowserEvent(Context context, Element parent, T model, NativeEvent event, ValueUpdater<T> valueUpdater) { super.onBrowserEvent(context, parent, model, event, valueUpdater); if (!BrowserEvents.CLICK.equals(event.getType())) { return; } onClickEvent(model); } public abstract void onClickEvent(T model); }