task/19600
Francesco Mangiacrapa 4 years ago
parent 2ff9cbaf35
commit b9370463b0

@ -6,9 +6,9 @@ This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.htm
## [v6.31.0] [r4.25.0] - 2020-07-08
#### Fixes
#### Enhancements
[Task #19544] update the unsharing messages in the accounting history
[#19600] revisit the "Get Info" Dialog in a modern view
## [v6.30.1] [r4.24.0] - 2020-06-25

@ -118,7 +118,6 @@ import org.gcube.portlets.user.workspace.client.view.tree.AsyncTreePanel;
import org.gcube.portlets.user.workspace.client.view.windows.DialogAddFolderAndSmart;
import org.gcube.portlets.user.workspace.client.view.windows.DialogAddFolderAndSmart.AddType;
import org.gcube.portlets.user.workspace.client.view.windows.DialogAddUrl;
import org.gcube.portlets.user.workspace.client.view.windows.DialogGetInfoBootstrap;
import org.gcube.portlets.user.workspace.client.view.windows.DialogGetLink;
import org.gcube.portlets.user.workspace.client.view.windows.DialogGetLink.Link_Type;
import org.gcube.portlets.user.workspace.client.view.windows.DialogShareLink;
@ -171,14 +170,10 @@ import com.extjs.gxt.ui.client.event.MessageBoxEvent;
import com.extjs.gxt.ui.client.widget.Dialog;
import com.extjs.gxt.ui.client.widget.Info;
import com.extjs.gxt.ui.client.widget.MessageBox;
import com.github.gwtbootstrap.client.ui.Button;
import com.github.gwtbootstrap.client.ui.Modal;
import com.github.gwtbootstrap.client.ui.ModalFooter;
import com.github.gwtbootstrap.client.ui.event.HideEvent;
import com.github.gwtbootstrap.client.ui.event.HideHandler;
import com.google.gwt.core.client.GWT;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.event.shared.EventHandler;
import com.google.gwt.event.shared.HandlerManager;
import com.google.gwt.http.client.RequestBuilder;
@ -696,10 +691,10 @@ public class AppControllerExplorer implements EventHandler, TreeAppControllerInt
public void onGetInfo(GetInfoEvent getInfoEvent) {
//new DialogGetInfo(getInfoEvent.getSourceFile());
FileModel fileItem = getInfoEvent.getSourceFile();
final FileModel fileItem = getInfoEvent.getSourceFile();
if(fileItem!=null) {
final Modal modal = new Modal(true);
/*final Modal modal = new Modal(true);
modal.setCloseVisible(true);
modal.setTitle(fileItem.getName() + " - Details");
modal.setMaxHeigth("800px");
@ -719,7 +714,9 @@ public class AppControllerExplorer implements EventHandler, TreeAppControllerInt
DialogGetInfoBootstrap dlg = new DialogGetInfoBootstrap(fileItem);
modal.add(dlg);
modal.add(modalFooter);
modal.show();
modal.show();*/
notifySubscriber(new GetInfoEvent(fileItem));
}
}
});
@ -2131,6 +2128,9 @@ public class AppControllerExplorer implements EventHandler, TreeAppControllerInt
} else if (event instanceof LoadFolderEvent) {
LoadFolderEvent loadFolderEvent = (LoadFolderEvent) event;
sub.loadFolder(loadFolderEvent.getTargetFolder());
} else if (event instanceof GetInfoEvent) {
GetInfoEvent getInfoEvent = (GetInfoEvent) event;
sub.showDetails(getInfoEvent.getSourceFile());
}
}

@ -1,5 +1,7 @@
package org.gcube.portlets.user.workspace.client.event;
import org.gcube.portlets.user.workspace.client.interfaces.EventsTypeEnum;
import org.gcube.portlets.user.workspace.client.interfaces.GuiEventInterface;
import org.gcube.portlets.user.workspace.client.model.FileModel;
import com.google.gwt.event.shared.GwtEvent;
@ -9,7 +11,7 @@ import com.google.gwt.event.shared.GwtEvent;
* @author Francesco Mangiacrapa francesco.mangiacrapa{@literal @}isti.cnr.it
*
*/
public class GetInfoEvent extends GwtEvent<GetInfoEventHandler> {
public class GetInfoEvent extends GwtEvent<GetInfoEventHandler> implements GuiEventInterface{
public static Type<GetInfoEventHandler> TYPE = new Type<GetInfoEventHandler>();
private FileModel targetFile = null;
@ -32,4 +34,9 @@ public class GetInfoEvent extends GwtEvent<GetInfoEventHandler> {
public FileModel getSourceFile() {
return targetFile;
}
@Override
public EventsTypeEnum getKey() {
return EventsTypeEnum.GET_DETAILS_FOR_ITEM;
}
}

@ -35,5 +35,6 @@ public enum EventsTypeEnum
UPDATE_WORKSPACE_SIZE,
ADD_ADMINISTRATOR_EVENT,
FILE_VERSIONING_HISTORY_EVENT,
GET_DETAILS_FOR_ITEM,
LOAD_FOLDER_EVENT;
}

@ -10,6 +10,7 @@ import org.gcube.portlets.user.workspace.client.model.FolderModel;
import org.gcube.portlets.user.workspace.shared.WorkspaceTrashOperation;
// TODO: Auto-generated Javadoc
// Implements this interface to receive events by tree async
/**
* The Interface SubscriberInterface.
@ -196,5 +197,15 @@ public interface SubscriberInterface {
* @param folderTarget the folder target
*/
void loadFolder(FileModel folderTarget);
/**
* Show details.
*
* @param fileModel the file model
*/
void showDetails(FileModel fileModel);
}

@ -19,6 +19,7 @@ import com.extjs.gxt.ui.client.event.Listener;
import com.extjs.gxt.ui.client.widget.Dialog;
import com.extjs.gxt.ui.client.widget.form.TextField;
import com.extjs.gxt.ui.client.widget.layout.FormLayout;
import com.google.gwt.core.client.GWT;
import com.google.gwt.user.client.Command;
import com.google.gwt.user.client.rpc.AsyncCallback;
@ -30,8 +31,8 @@ import com.google.gwt.user.client.rpc.AsyncCallback;
public class DialogEditProperties extends Dialog {
private FileModel item;
private int widthDialog = 450;
private int heigthDialog = 300;
private int widthDialog = 800;
private int heigthDialog = 400;
private Command commad;
private List<TextField<String>> fields;
private FormLayout layout;
@ -49,8 +50,8 @@ public class DialogEditProperties extends Dialog {
this.commad = command;
layout = new FormLayout();
layout.setLabelWidth(90);
layout.setDefaultWidth(300);
layout.setLabelWidth(200);
layout.setDefaultWidth(550);
setLayout(layout);
setHeading("Edit Properties: " + item.getName());
@ -71,6 +72,15 @@ public class DialogEditProperties extends Dialog {
saveProperties(true);
}
});
//SET TOGGLE BUTTON GRID VIEW
/*Scheduler.get().scheduleDeferred(new ScheduledCommand() {
@Override
public void execute() {
setZIndex(99999);
}
});*/
}
/*
@ -143,8 +153,10 @@ public class DialogEditProperties extends Dialog {
fields = new ArrayList<TextField<String>>(result.size());
for (String key : result.keySet()) {
TextField<String> field = new TextField<String>();
GWT.log("Adding field: "+key);
field.setFieldLabel(key);
field.setValue(result.get(key));
field.setReadOnly(false);
add(field);
fields.add(field);
}

@ -1,10 +1,13 @@
package org.gcube.portlets.user.workspace.client.view.windows;
import java.util.Date;
import java.util.List;
import java.util.Map;
import org.gcube.portlets.user.workspace.client.AppControllerExplorer;
import org.gcube.portlets.user.workspace.client.ConstantsExplorer;
import org.gcube.portlets.user.workspace.client.interfaces.GXTFolderItemTypeEnum;
import org.gcube.portlets.user.workspace.client.model.FileGridModel;
import org.gcube.portlets.user.workspace.client.model.FileModel;
import com.github.gwtbootstrap.client.ui.Button;
@ -12,12 +15,14 @@ import com.github.gwtbootstrap.client.ui.ControlGroup;
import com.github.gwtbootstrap.client.ui.Label;
import com.github.gwtbootstrap.client.ui.TextArea;
import com.github.gwtbootstrap.client.ui.constants.LabelType;
import com.github.gwtbootstrap.client.ui.constants.ResizeType;
import com.google.gwt.core.client.GWT;
import com.google.gwt.dom.client.Style.Unit;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.event.dom.client.KeyPressEvent;
import com.google.gwt.event.dom.client.KeyPressHandler;
import com.google.gwt.i18n.client.NumberFormat;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.user.client.Command;
@ -34,17 +39,24 @@ public class DialogGetInfoBootstrap extends Composite {
interface DialogGetInfoBootstrapUiBinder extends UiBinder<Widget, DialogGetInfoBootstrap> {
}
public static final String EMPTY = "empty";
private final NumberFormat number = ConstantsExplorer.numberFormatterKB;
public DialogGetInfoBootstrap() {
initWidget(uiBinder.createAndBindUi(this));
}
public static final String UNKNOWN = "unknown";
public static final String NOT_AVAILABLE = "n.a.";
private Map<String, String> gCubeProperties;
@UiField
HorizontalPanel hpItemType;
@UiField
HorizontalPanel hpHeaderDetails;
@UiField
HTML txtName;
@ -61,6 +73,9 @@ public class DialogGetInfoBootstrap extends Composite {
@UiField
HTML txtIsPublic;
@UiField
HTML txtMimeType;
@UiField
ControlGroup cgThreddsSynched;
@ -75,26 +90,31 @@ public class DialogGetInfoBootstrap extends Composite {
@UiField
TextArea txtAreaDescription;
@UiField
HTML txtOwner;
@UiField
HTML txtCreated;
@UiField
HTML txtLastMofication;
@UiField
HTML txtSize;
@UiField
HTML txtShared;
@UiField
Button buttonUpdateDescription;
@UiField
Button buttonUpdateGcubeProperties;
private FileModel fileModel;
/*
* TextField<String> txtType = new TextField<String>(); private
* TextField<String> txtCategory = new TextField<String>(); private
* TextField<String> txtOwner = new TextField<String>(); private
* TextField<String> txtLastMofication = new TextField<String>(); private
* TextField<String> txtCreated = new TextField<String>(); private
* TextField<String> txtSize = new TextField<String>(); private
* TextField<String> txtLocation = new TextField<String>(); private
* TextField<String> txtIsPublic = new TextField<String>(); private
* TextField<String> txtThreddsSynched = new TextField<String>(); private
* TextField<String> txtShared = new TextField<String>(); // private TextArea
* textAreaSharedWith = new TextArea(); private Html htmlUsersWidget = new
* Html(); private Html htmlPropertiesWidget = new Html(); private final
* NumberFormat number = ConstantsExplorer.numberFormatterKB; // private
@ -105,6 +125,8 @@ public class DialogGetInfoBootstrap extends Composite {
public DialogGetInfoBootstrap(final FileModel fileModel) {
initWidget(uiBinder.createAndBindUi(this));
this.fileModel = fileModel;
hpHeaderDetails.add(new HTML("Details"));
hpItemType.add(fileModel.getIcon());
Label labelItemType = new Label();
@ -116,9 +138,9 @@ public class DialogGetInfoBootstrap extends Composite {
if (typeEnum != null) {
label = typeEnum.getLabel();
label = label.replace("External ", "");
//loading gcube properties
if(typeEnum.equals(GXTFolderItemTypeEnum.GCUBE_ITEM))
// loading gcube properties
if (typeEnum.equals(GXTFolderItemTypeEnum.GCUBE_ITEM))
loadGcubeItemProperties();
} else {
@ -146,46 +168,68 @@ public class DialogGetInfoBootstrap extends Composite {
txtThreddsSynched.setVisible(true);
htmlSetValue(txtThreddsSynched, fileModel.getSynchedThreddsStatus() + "");
txtThreddsSynched.setHTML(fileModel.getSynchedThreddsStatus() + "");
}
}
//mimetype
htmlSetValue(txtMimeType, fileModel.getType());
txtAreaDescription.setResize(ResizeType.VERTICAL);
if (fileModel.isDirectory()) {
txtAreaDescription.setValue(fileModel.getDescription());
// add(txtAreaDescription);
} else
loadDescription(fileModel.getIdentifier());
//owner
htmlSetValue(txtOwner, fileModel.getOwnerFullName());
//creation date
loadCreationDate(fileModel.getIdentifier());
if(fileModel instanceof FileGridModel) {
FileGridModel fileGridModel = ((FileGridModel) fileModel);
//last update
htmlSetValue(txtLastMofication, fileGridModel.getLastModification().toString());
//size
htmlSetValue(txtSize, getFormattedSize(fileGridModel.getSize()));
}else {
loadLastModificationDate(fileModel.getIdentifier());
loadSize(fileModel.getIdentifier());
}
htmlSetValue(txtShared, fileModel.isShared()+"");
addHandlers();
}
private void addHandlers() {
txtAreaDescription.addKeyPressHandler(new KeyPressHandler() {
@Override
public void onKeyPress(KeyPressEvent event) {
GWT.log(event.getUnicodeCharCode()+"");
if(event.getUnicodeCharCode()==13) {
GWT.log(event.getUnicodeCharCode() + "");
if (event.getUnicodeCharCode() == 13) {
txtAreaDescription.setReadOnly(true);
Window.alert("Updating description");
}
}
});
buttonUpdateDescription.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
txtAreaDescription.setReadOnly(false);
txtAreaDescription.setFocus(true);
}
});
final Command cmdReloadProperties = new Command() {
@Override
@ -193,17 +237,15 @@ public class DialogGetInfoBootstrap extends Composite {
loadGcubeItemProperties();
}
};
buttonUpdateGcubeProperties.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
DialogEditProperties editProperties = new DialogEditProperties(fileModel, cmdReloadProperties);
editProperties.setProperties(gCubeProperties);
editProperties.setZIndex(99999);
final DialogEditProperties editProperties = new DialogEditProperties(fileModel, cmdReloadProperties);
editProperties.show();
editProperties.setProperties(gCubeProperties);
}
});
}
@ -211,10 +253,23 @@ public class DialogGetInfoBootstrap extends Composite {
private void htmlSetValue(HTML field, String value) {
if (value == null || value.isEmpty())
field.setHTML(UNKNOWN);
field.setHTML(NOT_AVAILABLE);
else
field.setHTML(value);
}
private String getFormattedSize(long value) {
if (value > 0) {
double kb = value / 1024;
if (kb < 1)
kb = 1;
return number.format(kb);
} else if (value == 0) {
return EMPTY;
} else
return "";
}
private void loadLocation(String itemId) {
@ -226,7 +281,7 @@ public class DialogGetInfoBootstrap extends Composite {
public void onFailure(Throwable caught) {
GWT.log("failure get list parents by item identifier " + caught);
removePlaceHolder(txtLocation);
txtLocation.setHTML(UNKNOWN);
txtLocation.setHTML(NOT_AVAILABLE);
// txtLocation.set(false);
}
@ -249,6 +304,77 @@ public class DialogGetInfoBootstrap extends Composite {
});
}
private void loadSize(final String itemId) {
GWT.log("Load size");
setPlaceholder(txtSize, "loading...");
AppControllerExplorer.rpcWorkspaceService.loadSizeByItemId(itemId, new AsyncCallback<Long>() {
@Override
public void onFailure(Throwable caught) {
GWT.log("an error occured in load creation date by Id " + itemId + " " + caught.getMessage());
removePlaceHolder(txtSize);
}
@Override
public void onSuccess(Long result) {
GWT.log("Loaded size=" + result);
removePlaceHolder(txtSize);
if(result!=null)
htmlSetValue(txtSize, getFormattedSize(result));
else
htmlSetValue(txtSize, null);
}
});
}
private void loadCreationDate(final String itemId) {
setPlaceholder(txtCreated, "loading...");
AppControllerExplorer.rpcWorkspaceService.getItemCreationDateById(itemId, new AsyncCallback<Date>() {
@Override
public void onFailure(Throwable caught) {
GWT.log("an error occured in load creation date by Id " + itemId + " " + caught.getMessage());
removePlaceHolder(txtCreated);
}
@Override
public void onSuccess(Date result) {
removePlaceHolder(txtCreated);
if (result != null)
htmlSetValue(txtCreated, result.toString());
else
htmlSetValue(txtCreated, null);
}
});
}
private void loadLastModificationDate(final String itemId) {
setPlaceholder(txtLastMofication, "loading...");
AppControllerExplorer.rpcWorkspaceService.loadLastModificationDateById(itemId, new AsyncCallback<Date>() {
@Override
public void onFailure(Throwable caught) {
GWT.log("an error occured in loadLastModificationDateById " + itemId + " " + caught.getMessage());
removePlaceHolder(txtLastMofication);
}
@Override
public void onSuccess(Date result) {
removePlaceHolder(txtLastMofication);
if (result != null)
htmlSetValue(txtLastMofication, result.toString());
else
htmlSetValue(txtLastMofication, null);
}
});
}
/**
* @param identifier
@ -286,13 +412,13 @@ public class DialogGetInfoBootstrap extends Composite {
@Override
public void onSuccess(Map<String, String> result) {
txtAreaGcubeProperties.setText("");
GWT.log("Gcube Item Properties: "+result);
GWT.log("Gcube Item Properties: " + result);
gCubeProperties = result;
// unmask();
if(result!=null && result.size()>0) {
if (result != null && result.size() > 0) {
for (String key : result.keySet()) {
String text = txtAreaGcubeProperties.getText();
text+=key+"="+result.get(key)+";\n";
text += key + "=" + result.get(key) + ";\n";
txtAreaGcubeProperties.setText(text);
}
cgGcubeProperties.setVisible(true);
@ -303,11 +429,11 @@ public class DialogGetInfoBootstrap extends Composite {
public void onFailure(Throwable caught) {
// unmask();
cgGcubeProperties.setVisible(false);
GWT.log("an error occured in loadGcubeItemProperties " + fileModel.getIdentifier() + " " + caught.getMessage());
GWT.log("an error occured in loadGcubeItemProperties " + fileModel.getIdentifier() + " "
+ caught.getMessage());
}
});
}
private void setPlaceholder(HTML html, String placeholder) {
html.setHTML(placeholder);

@ -13,6 +13,9 @@
}
</ui:style>
<g:HTMLPanel>
<g:HorizontalPanel ui:field="hpHeaderDetails"
addStyleNames="item-details-header">
</g:HorizontalPanel>
<g:HorizontalPanel ui:field="hpItemType"
addStyleNames="item-type-style">
</g:HorizontalPanel>
@ -56,6 +59,14 @@
</g:HTML>
</b:Controls>
</b:ControlGroup>
<b:ControlGroup
addStyleNames="my-control-group-get-info">
<b:ControlLabel>Type</b:ControlLabel>
<b:Controls>
<g:HTML ui:field="txtMimeType">
</g:HTML>
</b:Controls>
</b:ControlGroup>
<b:ControlGroup
addStyleNames="my-control-group-get-info"
ui:field="cgThreddsSynched" visible="false">
@ -93,6 +104,46 @@
</b:Tooltip>
</b:Controls>
</b:ControlGroup>
<b:ControlGroup
addStyleNames="my-control-group-get-info">
<b:ControlLabel>Owner</b:ControlLabel>
<b:Controls>
<g:HTML ui:field="txtOwner">
</g:HTML>
</b:Controls>
</b:ControlGroup>
<b:ControlGroup
addStyleNames="my-control-group-get-info">
<b:ControlLabel>Created</b:ControlLabel>
<b:Controls>
<g:HTML ui:field="txtCreated">
</g:HTML>
</b:Controls>
</b:ControlGroup>
<b:ControlGroup
addStyleNames="my-control-group-get-info">
<b:ControlLabel>Last Mofication</b:ControlLabel>
<b:Controls>
<g:HTML ui:field="txtLastMofication">
</g:HTML>
</b:Controls>
</b:ControlGroup>
<b:ControlGroup
addStyleNames="my-control-group-get-info">
<b:ControlLabel>Size</b:ControlLabel>
<b:Controls>
<g:HTML ui:field="txtSize">
</g:HTML>
</b:Controls>
</b:ControlGroup>
<b:ControlGroup
addStyleNames="my-control-group-get-info">
<b:ControlLabel>Shared</b:ControlLabel>
<b:Controls>
<g:HTML ui:field="txtShared">
</g:HTML>
</b:Controls>
</b:ControlGroup>
<b:Alert close="false" ui:field="errorAlert" type="ERROR"
visible="false"></b:Alert>

@ -316,7 +316,7 @@ table.userssuggest th {
width: 80px !important;
text-align: center !important;
padding-right: 10px !important;
color: #5f6368;
color: #959595;
}
.my-control-group-get-info .add-on {
@ -333,17 +333,35 @@ table.userssuggest th {
}
.my-control-group-get-info .gwt-TextArea {
width: 350px;
width: 250px;
height: 60px;
}
.item-type-style {
margin-top: 10px;
margin-left: 10px;
margin-bottom: 10px;
background-color: #fcfcfc !important;
padding-top: 5px;
padding-bottom: 5px;
}
.item-type-style td {
height: 30px;
}
.item-type-style td:first-child {
width: 30px;
padding-left: 5px;
}
.item-type-style td {
vertical-align: middle !important;
}
.item-details-header .gwt-HTML {
font-size: 20px;
font-family: Roboto, Arial, serif !important;
color: #777;
margin: 15px;
}
Loading…
Cancel
Save