From 155b158395389ea7096e6f31e5a04b0bad608ffd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miguel=20Guimar=C3=A3es?= Date: Mon, 24 May 2021 14:20:26 +0100 Subject: [PATCH] WIP #19 --- .../client/common/lists/TableRowList.java | 10 ++- .../lists/cells/EditableNumberCell.java | 73 +++++++++++++++++++ .../common/lists/utils/AsyncTableCell.java | 2 +- .../columns/ColumnsManagementPanel.java | 13 +++- .../status/collection/ColumnStatus.java | 1 + .../client/tools/FontAwesomeIconManager.java | 2 + .../config/i18n/client/ClientMessages.java | 2 + .../i18n/client/ClientMessages.properties | 2 +- 8 files changed, 99 insertions(+), 6 deletions(-) create mode 100644 src/main/java/com/databasepreservation/common/client/common/lists/cells/EditableNumberCell.java diff --git a/src/main/java/com/databasepreservation/common/client/common/lists/TableRowList.java b/src/main/java/com/databasepreservation/common/client/common/lists/TableRowList.java index a5f10e33..6d2589e2 100644 --- a/src/main/java/com/databasepreservation/common/client/common/lists/TableRowList.java +++ b/src/main/java/com/databasepreservation/common/client/common/lists/TableRowList.java @@ -20,6 +20,7 @@ import java.util.List; import java.util.Map; +import com.google.gwt.dom.client.Style; import org.fusesource.restygwt.client.MethodCallback; import org.roda.core.data.v2.index.sublist.Sublist; @@ -471,8 +472,13 @@ private void addColumn(ColumnStatus viewerColumn, Column displayCo viewerColumn.getCustomDescription(), "column-description-block"); SafeHtmlBuilder spanDescription = CommonClientUtils.constructSpan(viewerColumn.getCustomDescription(), viewerColumn.getCustomDescription(), "column-description-block column-description"); - addColumn(displayColumn, CommonClientUtils.wrapOnDiv(Arrays.asList(spanTitle, spanDescription)), true, - TextAlign.LEFT, 10); + if (viewerColumn.getCustomName().equals("actor_id")) { + addColumn(displayColumn, CommonClientUtils.wrapOnDiv(Arrays.asList(spanTitle, spanDescription)), true, + TextAlign.LEFT, 20); + } else { + addColumn(displayColumn, CommonClientUtils.wrapOnDiv(Arrays.asList(spanTitle, spanDescription)), true, + TextAlign.LEFT, 10); + } } else { SafeHtmlBuilder spanTitle = CommonClientUtils.constructSpan(viewerColumn.getCustomName(), viewerColumn.getCustomDescription(), "column-description-block"); diff --git a/src/main/java/com/databasepreservation/common/client/common/lists/cells/EditableNumberCell.java b/src/main/java/com/databasepreservation/common/client/common/lists/cells/EditableNumberCell.java new file mode 100644 index 00000000..28023b87 --- /dev/null +++ b/src/main/java/com/databasepreservation/common/client/common/lists/cells/EditableNumberCell.java @@ -0,0 +1,73 @@ +/** + * The contents of this file are subject to the license and copyright + * detailed in the LICENSE file at the root of the source + * tree and available online at + * + * https://github.com/keeps/dbptk-ui + */ +package com.databasepreservation.common.client.common.lists.cells; + +import com.google.gwt.cell.client.TextInputCell; +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.InputElement; +import com.google.gwt.dom.client.NativeEvent; +import com.google.gwt.safehtml.client.SafeHtmlTemplates; +import com.google.gwt.safehtml.shared.SafeHtml; +import com.google.gwt.safehtml.shared.SafeHtmlBuilder; + +/** + * @author Miguel GuimarĂ£es + */ +public class EditableNumberCell extends TextInputCell { + private static Template template; + private String placeholder; + + interface Template extends SafeHtmlTemplates { + // {0}, {1} relate to value, placeholder + @Template("") + SafeHtml input(String value, String placeholder); + } + + public EditableNumberCell() { + EditableNumberCell.template = GWT.create(Template.class); + this.placeholder = ""; + } + + public EditableNumberCell(String placeholder) { + EditableNumberCell.template = GWT.create(Template.class); + this.placeholder = placeholder; + } + + @Override + public void render(Context context, String value, SafeHtmlBuilder sb) { + if (value == null || value.isEmpty()) { + sb.append(template.input("", placeholder)); + } else { + sb.append(template.input(value, placeholder)); + } + } + + @Override + public void onBrowserEvent(Context context, Element parent, String value, NativeEvent event, + ValueUpdater valueUpdater) { + if (value == null) { + value = ""; + } + + InputElement input = getInputElement(parent); + Element target = event.getEventTarget().cast(); + if (!input.isOrHasChild(target)) { + return; + } + + String eventType = event.getType(); + if (BrowserEvents.FOCUS.equals(eventType)) { + input.select(); + } + + super.onBrowserEvent(context, parent, value, event, valueUpdater); + } +} diff --git a/src/main/java/com/databasepreservation/common/client/common/lists/utils/AsyncTableCell.java b/src/main/java/com/databasepreservation/common/client/common/lists/utils/AsyncTableCell.java index 6a5d33e3..a45a676d 100644 --- a/src/main/java/com/databasepreservation/common/client/common/lists/utils/AsyncTableCell.java +++ b/src/main/java/com/databasepreservation/common/client/common/lists/utils/AsyncTableCell.java @@ -780,8 +780,8 @@ protected void addColumn(Column column, SafeHtml headerHTML, boolean nowra protected void addColumn(Column column, SafeHtml headerHTML, boolean nowrap, TextAlign textAlign, double fixedSize) { - addColumn(column, headerHTML, nowrap, textAlign); display.setColumnWidth(column, fixedSize, Style.Unit.EM); + addColumn(column, headerHTML, nowrap, textAlign); } protected void addColumn(Column column, String headerText, boolean nowrap, TextAlign textAlign) { diff --git a/src/main/java/com/databasepreservation/common/client/common/visualization/browse/configuration/columns/ColumnsManagementPanel.java b/src/main/java/com/databasepreservation/common/client/common/visualization/browse/configuration/columns/ColumnsManagementPanel.java index 59058d63..bc2a6603 100644 --- a/src/main/java/com/databasepreservation/common/client/common/visualization/browse/configuration/columns/ColumnsManagementPanel.java +++ b/src/main/java/com/databasepreservation/common/client/common/visualization/browse/configuration/columns/ColumnsManagementPanel.java @@ -25,6 +25,7 @@ import com.databasepreservation.common.client.common.fields.MetadataField; import com.databasepreservation.common.client.common.lists.cells.ActionsCell; import com.databasepreservation.common.client.common.lists.cells.DisableableCheckboxCell; +import com.databasepreservation.common.client.common.lists.cells.EditableNumberCell; import com.databasepreservation.common.client.common.lists.cells.RequiredEditableCell; import com.databasepreservation.common.client.common.lists.cells.TextAreaInputCell; import com.databasepreservation.common.client.common.lists.cells.helper.CheckboxData; @@ -55,6 +56,7 @@ import com.google.gwt.cell.client.CheckboxCell; import com.google.gwt.cell.client.CompositeCell; import com.google.gwt.cell.client.HasCell; +import com.google.gwt.cell.client.NumberCell; import com.google.gwt.cell.client.SafeHtmlCell; import com.google.gwt.cell.client.ValueUpdater; import com.google.gwt.core.client.GWT; @@ -62,6 +64,7 @@ import com.google.gwt.dom.client.Element; import com.google.gwt.dom.client.InputElement; import com.google.gwt.dom.client.NativeEvent; +import com.google.gwt.i18n.client.NumberFormat; import com.google.gwt.safehtml.shared.SafeHtml; import com.google.gwt.safehtml.shared.SafeHtmlBuilder; import com.google.gwt.safehtml.shared.SafeHtmlUtils; @@ -254,6 +257,12 @@ public SafeHtml getValue(ColumnStatus column) { }), new BasicTablePanel.ColumnInfo<>(messages.basicTableHeaderLabel(), 15, getLabelColumn()), new BasicTablePanel.ColumnInfo<>(messages.basicTableHeaderDescription(), 0, getDescriptionColumn()), + new BasicTablePanel.ColumnInfo<>("Set width (EM)", 10, new Column(new EditableNumberCell()) { + @Override + public String getValue(ColumnStatus object) { + return ""; + } + }), new BasicTablePanel.ColumnInfo<>(SafeHtmlUtils.fromSafeConstant(FontAwesomeIconManager .getTagWithStyleName(FontAwesomeIconManager.COG, messages.basicTableHeaderOptions(), FA_FW)), false, 3, getOptionsColumn()), @@ -570,8 +579,8 @@ public void onSuccess(Boolean value) { .updateDetailsTemplate(clobColumnOptionPanel.getDetailsTemplate()); collectionStatus.getTableStatusByTableId(tableId).getColumnById(columnStatus.getId()) .updateDetailsShowContent(((ClobColumnOptionsPanel) clobColumnOptionPanel).showContentInDetails()); - collectionStatus.getTableStatusByTableId(tableId).getColumnById(columnStatus.getId()) - .getSearchStatus().getList().setShowContent(((ClobColumnOptionsPanel) clobColumnOptionPanel).showContentInList()); + collectionStatus.getTableStatusByTableId(tableId).getColumnById(columnStatus.getId()).getSearchStatus() + .getList().setShowContent(((ClobColumnOptionsPanel) clobColumnOptionPanel).showContentInList()); collectionStatus.getTableStatusByTableId(tableId).getColumnById(columnStatus.getId()) .setApplicationType(((ClobColumnOptionsPanel) clobColumnOptionPanel).getApplicationType()); saveChanges(true); diff --git a/src/main/java/com/databasepreservation/common/client/models/status/collection/ColumnStatus.java b/src/main/java/com/databasepreservation/common/client/models/status/collection/ColumnStatus.java index d6bc0a30..039ee7b9 100644 --- a/src/main/java/com/databasepreservation/common/client/models/status/collection/ColumnStatus.java +++ b/src/main/java/com/databasepreservation/common/client/models/status/collection/ColumnStatus.java @@ -32,6 +32,7 @@ public class ColumnStatus implements Serializable, Comparable { private String nullable; private ViewerType.dbTypes type; private int columnIndex; + private int width; @JsonInclude(JsonInclude.Include.NON_DEFAULT) private boolean externalLob; private String applicationType; diff --git a/src/main/java/com/databasepreservation/common/client/tools/FontAwesomeIconManager.java b/src/main/java/com/databasepreservation/common/client/tools/FontAwesomeIconManager.java index ceb7ce8c..e80074a0 100644 --- a/src/main/java/com/databasepreservation/common/client/tools/FontAwesomeIconManager.java +++ b/src/main/java/com/databasepreservation/common/client/tools/FontAwesomeIconManager.java @@ -81,6 +81,8 @@ public class FontAwesomeIconManager { public static final String DATA_TRANSFORMATION = "project-diagram"; public static final String SLIDERS = "sliders-h"; public static final String HANDS_HELP = "hand-holding-heart"; + public static final String PAINT_BRUSH = "paint-brush"; + public static final String WIDTH = "arrows-alt-h"; public static String getTag(String icon) { return ""; diff --git a/src/main/java/config/i18n/client/ClientMessages.java b/src/main/java/config/i18n/client/ClientMessages.java index 0d19f6b6..63a2bc02 100644 --- a/src/main/java/config/i18n/client/ClientMessages.java +++ b/src/main/java/config/i18n/client/ClientMessages.java @@ -1474,6 +1474,8 @@ public interface ClientMessages extends Messages { String columnManagementPageDescription(); + String columnManagementPageTableHeader(); + String columnManagementPageCancelEventDialog(); String columnManagementPageToastDescription(); diff --git a/src/main/resources/config/i18n/client/ClientMessages.properties b/src/main/resources/config/i18n/client/ClientMessages.properties index b251054e..272d0a8d 100644 --- a/src/main/resources/config/i18n/client/ClientMessages.properties +++ b/src/main/resources/config/i18n/client/ClientMessages.properties @@ -1120,6 +1120,7 @@ columnManagementLabelForSeparatorHint=html markup can be used as a separator (e. columnManagementLabelForTemplateDetail=Template that will be rendered in the record panel. columnManagementLabelForTemplateExport=Template that will be used when table or row are exported columnManagementLabelForQuantityList=Quantity of records that will show in the table panel. +columnManagementPageTableHeader=Edit column width ############################################################################# # Column Management Panel - Binary # ############################################################################# @@ -1139,4 +1140,3 @@ resourceNotAvailableTableHiddenDescription=Please contact the administrator abou # Configuration Errors # ############################################################################# configErrorTextForMissingProperty=Missing property {0} in configuration property files. -configErrorTextForMissingProperty=Missing property {0} in configuration property files.