| 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); |
| } |
| } |