blob: 56554886f30f2aff5f39e5ca186d70c9cbd0de6e [file] [log] [blame]
package autotest.common.ui;
import autotest.common.ui.TableSelectionPanel.SelectionPanelListener;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.event.logical.shared.CloseEvent;
import com.google.gwt.event.logical.shared.CloseHandler;
import com.google.gwt.user.client.ui.Anchor;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.Panel;
import com.google.gwt.user.client.ui.PopupPanel;
import com.google.gwt.user.client.ui.ToggleButton;
public class TableActionsPanel extends Composite implements ClickHandler, CloseHandler<PopupPanel>{
public static interface TableActionsListener {
public ContextMenu getActionMenu();
}
public static interface TableActionsWithExportCsvListener extends TableActionsListener {
public void onExportCsv();
}
private TableActionsListener listener;
private TableActionsWithExportCsvListener csvListener;
private ToggleButton actionsButton = new ToggleButton("Actions ▾");
private TableSelectionPanel selectionPanel;
private Anchor exportCsvLink = new Anchor("Export to CSV");
public TableActionsPanel(boolean wantSelectVisible) {
selectionPanel = new TableSelectionPanel(wantSelectVisible);
actionsButton.addClickHandler(this);
exportCsvLink.addClickHandler(this);
exportCsvLink.setVisible(false);
exportCsvLink.getElement().getStyle().setProperty("marginLeft", "1em");
Panel mainPanel = new HorizontalPanel();
mainPanel.add(selectionPanel);
mainPanel.add(actionsButton);
mainPanel.add(exportCsvLink);
initWidget(mainPanel);
}
public void setActionsListener(TableActionsListener listener) {
this.listener = listener;
}
/**
* This automatically enables the Export CSV link, which is disabled by default.
*/
public void setActionsWithCsvListener(TableActionsWithExportCsvListener listener) {
csvListener = listener;
this.listener = listener;
exportCsvLink.setVisible(true);
}
public void setSelectionListener(SelectionPanelListener listener) {
selectionPanel.setListener(listener);
}
public void onClick(ClickEvent event) {
if (event.getSource() == exportCsvLink) {
assert csvListener != null;
csvListener.onExportCsv();
} else {
assert event.getSource() == actionsButton;
ContextMenu menu = listener.getActionMenu();
menu.addCloseHandler(this);
menu.showAt(actionsButton.getAbsoluteLeft(),
actionsButton.getAbsoluteTop() + actionsButton.getOffsetHeight());
}
}
@Override
public void onClose(CloseEvent<PopupPanel> event) {
actionsButton.setDown(false);
}
}