You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
workspace-tree-widget/src/main/java/org/gcube/portlets/user/workspace/client/view/windows/DialogEditProperties.java

167 lines
4.2 KiB
Java

/**
*
*/
package org.gcube.portlets.user.workspace.client.view.windows;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.gcube.portlets.user.workspace.client.AppControllerExplorer;
import org.gcube.portlets.user.workspace.client.model.FileModel;
import com.extjs.gxt.ui.client.Style.HorizontalAlignment;
import com.extjs.gxt.ui.client.Style.Scroll;
import com.extjs.gxt.ui.client.event.BaseEvent;
import com.extjs.gxt.ui.client.event.Events;
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;
/**
* The Class DialogEditProperties.
*
* @author Francesco Mangiacrapa francesco.mangiacrapa{@literal @}isti.cnr.it Jun 11, 2015
*/
public class DialogEditProperties extends Dialog {
private FileModel item;
private int widthDialog = 800;
private int heigthDialog = 400;
private Command commad;
private List<TextField<String>> fields;
private FormLayout layout;
/**
* Instantiates a new dialog edit properties.
*
* @param item
* FileModel
* @param command
* Command
*/
public DialogEditProperties(FileModel item, Command command) {
this.item = item;
this.commad = command;
layout = new FormLayout();
layout.setLabelWidth(200);
layout.setDefaultWidth(550);
setLayout(layout);
setHeading("Edit Properties: " + item.getName());
setButtonAlign(HorizontalAlignment.RIGHT);
setModal(true);
// setBodyBorder(true);
setBodyStyle("padding: 9px; background: none");
setWidth(widthDialog);
setHeight(heigthDialog);
setScrollMode(Scroll.AUTOY);
setResizable(false);
setButtons(Dialog.OK);
getButtonById(Dialog.OK).setText("Save");
getButtonById(Dialog.OK).addListener(Events.Select, new Listener<BaseEvent>() {
@Override
public void handleEvent(BaseEvent be) {
saveProperties(true);
}
});
//SET TOGGLE BUTTON GRID VIEW
/*Scheduler.get().scheduleDeferred(new ScheduledCommand() {
@Override
public void execute() {
setZIndex(99999);
}
});*/
}
/*
* (non-Javadoc)
*
* @see com.extjs.gxt.ui.client.widget.Window#show()
*/
@Override
public void show() {
resetForm();
//loadGcubeItemProperties();
super.show();
}
/**
*
*/
private void resetForm() {
if (fields != null)
fields.clear();
fields = null;
removeAll();
}
private void saveProperties(final boolean closeOnSuccess) {
Map<String, String> prp = new HashMap<String, String>(fields.size());
for (TextField<String> field : fields) {
String value = field.getValue() != null ? field.getValue() : "";
prp.put(field.getFieldLabel(), value);
}
AppControllerExplorer.rpcWorkspaceService.setGcubeItemProperties(item.getIdentifier(), prp,
new AsyncCallback<Void>() {
@Override
public void onFailure(Throwable caught) {
new MessageBoxAlert("Error", caught.getMessage(), null);
}
@Override
public void onSuccess(Void result) {
commad.execute();
if (closeOnSuccess)
DialogEditProperties.this.hide();
}
});
}
// private void loadGcubeItemProperties() {
// // mask("Loading properties...");
// AppControllerExplorer.rpcWorkspaceService.loadGcubeItemProperties(item.getIdentifier(),
// new AsyncCallback<Map<String, String>>() {
//
// @Override
// public void onSuccess(Map<String, String> result) {
// // unmask();
// setProperties(result);
// }
//
// @Override
// public void onFailure(Throwable caught) {
// // unmask();
// GWT.log("an error occured in loadGcubeItemProperties " + item + " " + caught.getMessage());
// }
// });
// }
public void setProperties(Map<String, String> result) {
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);
}
layout(true);
}
}