diff --git a/src/main/java/com/databasepreservation/common/client/common/visualization/activity/log/ActivityLogPanel.java b/src/main/java/com/databasepreservation/common/client/common/visualization/activity/log/ActivityLogPanel.java new file mode 100644 index 000000000..316cca61c --- /dev/null +++ b/src/main/java/com/databasepreservation/common/client/common/visualization/activity/log/ActivityLogPanel.java @@ -0,0 +1,89 @@ +package com.databasepreservation.common.client.common.visualization.activity.log; + +import org.roda.core.data.v2.index.filter.BasicSearchFilterParameter; +import org.roda.core.data.v2.index.filter.Filter; + +import com.databasepreservation.common.client.ViewerConstants; +import com.databasepreservation.common.client.common.ContentPanel; +import com.databasepreservation.common.client.common.breadcrumb.BreadcrumbPanel; +import com.databasepreservation.common.client.common.lists.ActivityLogList; +import com.databasepreservation.common.client.models.activity.logs.ActivityLogEntry; +import com.databasepreservation.common.client.tools.BreadcrumbManager; +import com.databasepreservation.common.client.tools.ViewerStringUtils; +import com.databasepreservation.common.client.widgets.wcag.AccessibleFocusPanel; +import com.google.gwt.core.client.GWT; +import com.google.gwt.event.dom.client.KeyCodes; +import com.google.gwt.uibinder.client.UiBinder; +import com.google.gwt.uibinder.client.UiField; +import com.google.gwt.user.client.ui.TextBox; +import com.google.gwt.user.client.ui.Widget; + +import config.i18n.client.ClientMessages; + +/** + * @author Miguel GuimarĂ£es + */ +public class ActivityLogPanel extends ContentPanel { + private static final ClientMessages messages = GWT.create(ClientMessages.class); + + public static ActivityLogPanel createInstance() { + return new ActivityLogPanel(); + } + + interface RowPanelUiBinder extends UiBinder { + } + + private static RowPanelUiBinder uiBinder = GWT.create(RowPanelUiBinder.class); + + @UiField + TextBox searchInputBox; + + @UiField + AccessibleFocusPanel searchInputButton; + + @UiField(provided = true) + ActivityLogList activityLogList; + + private ActivityLogPanel() { + activityLogList = new ActivityLogList(); + + initWidget(uiBinder.createAndBindUi(this)); + + searchInputBox.getElement().setPropertyString("placeholder", messages.searchPlaceholder()); + + searchInputBox.addKeyDownHandler(event -> { + if (event.getNativeKeyCode() == KeyCodes.KEY_ENTER) { + doSearch(); + } + }); + + searchInputButton.addClickHandler(event -> doSearch()); + + activityLogList.getSelectionModel().addSelectionChangeHandler(event -> { + ActivityLogEntry selected = activityLogList.getSelectionModel().getSelectedObject(); + if (selected != null) { + GWT.log("CLICK"); + activityLogList.getSelectionModel().clear(); + } + + }); + } + + @Override + public void handleBreadcrumb(BreadcrumbPanel breadcrumb) { + BreadcrumbManager.updateBreadcrumb(breadcrumb, BreadcrumbManager.forActivityLog()); + } + + private void doSearch() { + // start searching + Filter filter; + String searchText = searchInputBox.getText(); + if (ViewerStringUtils.isBlank(searchText)) { + filter = ViewerConstants.DEFAULT_FILTER; + } else { + filter = new Filter(new BasicSearchFilterParameter(ViewerConstants.INDEX_SEARCH, searchText)); + } + + activityLogList.setFilter(filter); + } +} diff --git a/src/main/java/com/databasepreservation/common/client/common/visualization/activity/log/ActivityLogPanel.ui.xml b/src/main/java/com/databasepreservation/common/client/common/visualization/activity/log/ActivityLogPanel.ui.xml new file mode 100644 index 000000000..1bfa132bb --- /dev/null +++ b/src/main/java/com/databasepreservation/common/client/common/visualization/activity/log/ActivityLogPanel.ui.xml @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + +