/**
*
*/
package org.inbio.m3s.gwt.client;
import org.inbio.gwt.galleries.client.dto.DisplayInfo;
import org.inbio.gwt.galleries.client.dto.DisplayType;
import org.inbio.gwt.galleries.client.widget.ImageThumbnail;
import org.inbio.m3s.gwt.client.config.ClientProperties;
import org.inbio.m3s.gwt.client.widgets.login.LoginManager;
import org.inbio.m3s.gwt.client.widgets.metadata.MetadataContainer;
import org.inbio.m3s.gwt.client.widgets.metadata.listener.MetadataListener;
import com.google.gwt.core.client.GWT;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.ClickListener;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.HTMLPanel;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.TextBox;
import com.google.gwt.user.client.ui.Widget;
/**
* @author jgutierrez
*
*/
public class EditMediaInfo extends Composite implements ClickListener,
MetadataListener {
private HTMLPanel main;
// Title: label, string & Div
private String title = "Editar Infomación de un Multimedio";
private Label theTitle;
private String titleDiv = HTMLPanel.createUniqueId();
// preview media
private ImageThumbnail imagesThumbnail;
private String previewDiv = HTMLPanel.createUniqueId();
// upperPanel widget> con el mensaje de si conoce el id de la imagen y
// eso...
private String upperPanelDiv = HTMLPanel.createUniqueId();
private HorizontalPanel findMedia;
private Label findMediaText;
private TextBox textBox;
private Button find;
private HorizontalPanel editingMedia;
private Label mediaIdLabel;
private Button saveInfo;
private String upperInfoDiv = HTMLPanel.createUniqueId();
private Label infoText;
private Button editOther;
// Metadata Container
private MetadataContainer metadataPanel;
private String centralPanelDiv = HTMLPanel.createUniqueId();
private String username;
/**
* Constructor method
*
* Instancia la clases desde un comienzo
*
*/
public EditMediaInfo() {
// the MainPanel
main = new HTMLPanel(
"<table width=\"100%\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\">"
+ "<!--Upper side (row) of the window -->"
+ "<tr>"
+ "<!-- left side coponents -->"
+ "<td width=\"75%\" align=\"left\" valign=\"top\""
+ "<!-- Zona Superior de la Pagina...-->"
+ "<table width=\"100%\" border=\"0\" cellpadding=\"10\" cellspacing=\"0\">"
+ "<!-- Titulo de la Pagina-->"
+ "<tr valign=\"top\" align=\"left\">"
+ "<td width=\"100%\">"
+ "<div id=\""
+ titleDiv
+ "\"></div>"
+ "</td>"
+ "</tr>"
+ "<!-- panel donde se indica el medio que se esta editando-->"
+ "<tr>"
+ "<td align=\"left\" valign=\"top\">"
+ "<div id=\""
+ upperPanelDiv
+ "\"></div>"
+ "</td>"
+ "</tr>"
+ "<!-- panel donde se indica el medio que se esta editando-->"
+ "<tr>"
+ "<td align=\"left\" valign=\"top\">"
+ "<div id=\""
+ upperInfoDiv
+ "\"></div>"
+ "</td>"
+ "</tr>"
+ "</table>"
+ "</td>"
+ "<!-- Rigth side coponents -->"
+ "<!-- Preview del medio cuya info se esta editando-->"
+ "<td width=\"25%\" align=\"center\" valign=\"top\" cellpadding=\"10\" >"
+ "<div id=\""
+ previewDiv
+ "\"></div>"
+ "</td>"
+ "</tr> <!-- Upper Row-->"
+ "<tr>"
+ "<!--Bottom side (row) of the window -->"
+ "<!-- Zona del panel principal -->"
+ "<table width=\"100%\" border=\"0\" cellpadding=\"10\" cellspacing=\"0\" >"
+ "<tr>"
+ "<td>"
+ "<!-- instead of the following code should be a div that is a the end of this lines -->"
+ "<div id=\"" + centralPanelDiv + "\"></div>"
+ "</tr>"
+ "</table>" + "</td>" + "</tr>" + "</table>");
initWidget(main);
setUsername(LoginManager.getUserName());
// Sets the tittle of the page
theTitle = new Label(title);
theTitle.setStyleName("MainPanel-Title");
main.add(theTitle, titleDiv);
initContents();
}
/**
* Constructor que de una vez carga la informacion del medio a editar
*
* @param mediaId
*
*/
public EditMediaInfo(Integer mediaId) {
new EditMediaInfo();
InitSaveUI(mediaId);
initMediaPreview(mediaId);
initMetadataPanel(mediaId);
}
/**
* Inicializa la clase
*
*/
public void initContents() {
findMedia = new HorizontalPanel();
findMedia.setSpacing(10);
findMediaText = new Label("Número de Indentificación del Multimedio ");
findMedia.add(findMediaText);
textBox = new TextBox();
findMedia.add(textBox);
find = new Button("Buscar", new ClickListener() {
public void onClick(Widget sender) {
String textualValue = textBox.getText();
Integer value = new Integer(textualValue);
InitSaveUI(value);
initMediaPreview(value);
initMetadataPanel(value);
}
});
findMedia.add(find);
main.add(findMedia, upperPanelDiv);
infoText = new Label(
"Si no conoce el número de indentificación puede hacer"
+ " una búsqueda y en la vista de 'estampillas' dar click en el ícono"
+ " de editar medio");
infoText.setWidth("300px");
main.add(infoText, upperInfoDiv);
}
/**
* Inits the save information of the media widgets
*
* @param mediaId
*
*/
public void InitSaveUI(Integer mediaId) {
findMedia.removeFromParent();
infoText.removeFromParent();
editingMedia = new HorizontalPanel();
editingMedia.setSpacing(10);
mediaIdLabel = new Label(
"Editando el multimedio con Identificador Número: '"
+ mediaId.toString() + "'.");
editingMedia.add(mediaIdLabel);
saveInfo = new Button("Guardar Cambios", this);
editingMedia.add(saveInfo);
// main.add(editingMedia, upperPanelDiv);
editOther = new Button("Editar otro/a", this);
editingMedia.add(editOther);
main.add(editingMedia, upperPanelDiv);
}
/**
* Muestra el preview de arriba a la derecha en la pantalla
*
* @param mediaId
*/
public void initMediaPreview(Integer mediaId) {
// imagesThumbnail = new ImagesThumbnail(GWT.getModuleBaseURL()
// + "/images/12344567890_170.jpg", mediaId.toString(), "Dos",
// "Tres", "Cuatro");
DisplayInfo di= new DisplayInfo(mediaId.toString(), DisplayType.EDIT,
GWT.getModuleBaseURL()+"getImage?size=thumb&id=" + mediaId.toString(),
"en edicion", "en edicion","en edicion","en edicion","en edicion","en edicion",
"en edicion","en edicion","en edicion");
imagesThumbnail = new ImageThumbnail(di);
//TODO: eventually could be nice to add the information after being loaded using RPC
//imagesThumbnail = new ImagesThumbnailOld(mediaId);
main.add(imagesThumbnail, previewDiv);
}
/**
* Muestra e inicializa el MetadataContainer con sus respectivos paneles de
* metadatos
*
* @param mediaId
*/
public void initMetadataPanel(Integer mediaId) {
metadataPanel = new MetadataContainer(this);
metadataPanel.setWidth("100%");
metadataPanel.setHeight("500px");
main.add(metadataPanel, centralPanelDiv);
System.out.println("initMetadataPanel > antes de iniciar cada panel");
metadataPanel.initGeneralMetadata(ClientProperties.DEFAULT_LANGUAGE,true, mediaId);
metadataPanel.initUsesAndCopyrightsTab(ClientProperties.DEFAULT_LANGUAGE, false, mediaId);
metadataPanel.initTechMetadataTab(ClientProperties.DEFAULT_LANGUAGE, false, mediaId);
//metadataPanel.setMetadata(mediaId);
}
/**
* Clicklistener methods
*/
public void onClick(Widget sender) {
if (sender.equals(saveInfo)) {
metadataPanel.saveMetadata();
} else if (sender.equals(editOther)) {
reloadComposite();
}
}
public void errorSavingMetadata(Throwable caught) {
Window.alert("ocurrio un error guardarndo la "
+ "información del multimedio.");
reloadComposite();
}
public void metadataSaved(Integer mediaId) {
Window.alert("información del medio [" + mediaId
+ "] guardada con exito");
reloadComposite();
}
/**
* @param username
* the username to set
*/
public void setUsername(String username) {
this.username = username;
}
/**
* @return the username
*/
public String getUsername() {
return username;
}
/**
* Reload the compsite for a new edit
*/
private void reloadComposite() {
metadataPanel.removeFromParent();
imagesThumbnail.removeFromParent();
editingMedia.removeFromParent();
initContents();
// Window.alert("todo");
}
}