package com.proyecto.miniplan.client;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import com.proyecto.miniplan.client.LoginInfo;
import com.proyecto.miniplan.client.LoginService;
import com.proyecto.miniplan.client.LoginServiceAsync;
import com.proyecto.miniplan.shared.ProyectoDTO;
import com.proyecto.miniplan.shared.TareaDTO;
import com.google.gwt.cell.client.DatePickerCell;
import com.google.gwt.cell.client.EditTextCell;
import com.google.gwt.cell.client.FieldUpdater;
import com.google.gwt.core.client.EntryPoint;
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.logical.shared.ResizeEvent;
import com.google.gwt.event.logical.shared.ResizeHandler;
import com.google.gwt.event.logical.shared.SelectionEvent;
import com.google.gwt.event.logical.shared.SelectionHandler;
import com.google.gwt.i18n.client.DateTimeFormat;
import com.google.gwt.user.cellview.client.CellTable;
import com.google.gwt.user.cellview.client.Column;
import com.google.gwt.user.cellview.client.ColumnSortEvent.ListHandler;
import com.google.gwt.user.cellview.client.HasKeyboardSelectionPolicy.KeyboardSelectionPolicy;
import com.google.gwt.user.cellview.client.SimplePager;
import com.google.gwt.user.cellview.client.TextColumn;
import com.google.gwt.user.client.DOM;
import com.google.gwt.user.client.Timer;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.Anchor;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.DialogBox;
import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.HasHorizontalAlignment;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.ListBox;
import com.google.gwt.user.client.ui.ResizeLayoutPanel;
import com.google.gwt.user.client.ui.RootPanel;
import com.google.gwt.user.client.ui.MenuBar;
import com.google.gwt.user.client.ui.ScrollPanel;
import com.google.gwt.user.client.ui.TabLayoutPanel;
import com.google.gwt.user.client.ui.TextBox;
import com.google.gwt.user.client.ui.VerticalPanel;
import com.google.gwt.user.client.ui.Widget;
import com.google.gwt.view.client.AsyncDataProvider;
import com.google.gwt.view.client.HasData;
import com.google.gwt.view.client.ProvidesKey;
import com.google.gwt.view.client.SelectionChangeEvent;
import com.google.gwt.view.client.SingleSelectionModel;
/**
* Entry point classes define <code>onModuleLoad()</code>.
*/
public class MiniPlan implements EntryPoint {
//internacionalizaci�n
private MiniPlanConstants constants = GWT.create(MiniPlanConstants.class);
private final ProyectoServiceAsync ProyService = GWT.create(ProyectoService.class);
//Objetos PanelLogin
private LoginInfo loginInfo = null;
private HorizontalPanel panelLogin = new HorizontalPanel();
private HTML labelLogin = new HTML("", true);
private Anchor linkAcceder = new Anchor(constants.acceder());
private Anchor linkSalir = new Anchor(constants.salir());
private ListBox lb = new ListBox();
private HTML img1 = new HTML("<img src=\"/images/world.png\"/> ", true);
//Objetos Proyecto
MenuBar panelOpcionesP;
private final String ffecha = "dd/MM/yyyy";
//public CellTable<TareaDTO> table;
public TabLayoutPanel tabPanel;
public CellTable tablaP;
public List<ProyectoDTO> proyectos;
public ProyectoDTO ProySeleccionado;
public ResizeLayoutPanel resizePanel;
public List<ProyectoCliente> proyAbiertos;
public ProyectoCliente PSeleccion;
public boolean saved = false;
public final SingleSelectionModel<TareaDTO> selectionModel = new SingleSelectionModel<TareaDTO>();
public final SingleSelectionModel<ProyectoDTO> selectionModelP = new SingleSelectionModel<ProyectoDTO>();
//pdf error de conexi�n del servidor
private String SERVER_ERROR = constants.de1(); //"Un error ha ocurrido mientras se establecia una conexi�n al servidor de Google Docs, por favor revise su conexi�n y pruebe otra vez."
//pdf
private final GreetingServiceAsync greetingService = GWT.create(GreetingService.class);
public DialogBox dialogBox = new DialogBox();
public Button closeButton = new Button("Close");
public Label textToServerLabel = new Label();
public HTML serverResponseLabel = new HTML();
public Button btpdf = new Button("PDF");
//informaci�n trabajando
private HTML workmsg = new HTML("",true);
private HTML workmsg2 = new HTML("",true);
private String value = com.google.gwt.user.client.Window.Location.getPath();
private String valueen = value+"?locale=en_US";
//timer
private Timer t;
private int TIME=3000;
public final long MS_POR_DIA = 1000 * 60 * 60 * 24;
DialogBox dialogBox2 = createDialogBox();
//dialogBox2.setGlassEnabled(true);
//dialogBox2.setAnimationEnabled(true);
public void onModuleLoad() {
dialogBox2.setGlassEnabled(true);
dialogBox2.setAnimationEnabled(true);
//pdf
// Creando el cuadro de dialogo
dialogBox.setText(constants.de2());//Llama al servidor de Google Docs
dialogBox.setAnimationEnabled(true);
closeButton.getElement().setId("closeButton");
VerticalPanel dialogVPanel = new VerticalPanel();
dialogVPanel.addStyleName("dialogVPanel");
dialogVPanel.add(new HTML("<b>"+constants.de3()+"</b>")); //Envíando información al servidor de Google Docs:
dialogVPanel.add(textToServerLabel);
dialogVPanel.add(new HTML("<br><b>"+constants.de4()+"</b>"));//El servidor de Google Docs dice:
dialogVPanel.add(serverResponseLabel);
dialogVPanel.setHorizontalAlignment(VerticalPanel.ALIGN_RIGHT);
dialogVPanel.add(closeButton);
dialogBox.setWidget(dialogVPanel);
closeButton.addClickHandler(new ClickHandler() {
public void onClick(ClickEvent event) {
dialogBox.hide();
//enable pdf buton
btpdf.setEnabled(true);
}
});
//pdf
//internacionalizaci�n
lb.addItem("Default");
lb.addItem(constants.espanol());
lb.addItem(constants.ingles());
lb.addClickHandler(new ClickHandler() {
public void onClick(ClickEvent event) {
if (lb.getSelectedIndex()==1){
espanol();
}
else if (lb.getSelectedIndex()==2){
ingles();
}
}
private void ingles() {
Window.open(valueen, "_self", "menubar=no," +
"location=false," +
"resizable=no," +
"scrollbars=no," +
"status=no," +
"dependent=true");
}
private void espanol() {
Window.open(value, "_self", "menubar=no," +
"location=false," +
"resizable=no," +
"scrollbars=no," +
"status=no," +
"dependent=true");
}
});
//internacionalizaci�n
panelLogin.addStyleName("login");
panelLogin.add(labelLogin);
panelLogin.add(linkAcceder);
RootPanel.get("PanelLogin").add(panelLogin);
LoginServiceAsync loginService = GWT.create(LoginService.class);
loginService.login(GWT.getHostPageBaseURL(), new AsyncCallback<LoginInfo>() {
public void onFailure(Throwable error) {
}
public void onSuccess(LoginInfo result) {
loginInfo = result;
if(loginInfo.isLoggedIn()) {
CargarAplicacion();
} else {
CargarPanelLogin();
}
}
});
DOM.removeChild(RootPanel.getBodyElement(), DOM.getElementById("loading"));
}
public void CargarPanelLogin(){
//panelLogin.clear();
panelLogin.add(img1);
panelLogin.add(lb);
labelLogin.setHTML(" | "+constants.bienvenida()+" | ");
linkAcceder.setHref(loginInfo.getLoginUrl());
panelLogin.add(labelLogin);
panelLogin.add(linkAcceder);
RootPanel.get("PanelLogin").add(panelLogin);
}
public void CargarAplicacion(){
//PanelLogin
panelLogin.clear();
panelLogin.add(img1);
panelLogin.add(lb);
labelLogin.setHTML(" | "+ loginInfo.getNickname()+ " | ");
panelLogin.add(labelLogin);
panelLogin.add(linkSalir);
linkSalir.setHref(loginInfo.getLogoutUrl());
//Cargar lista de los proyectos
CargarProyectos();
}
public void CargarProyectos(){
//panel de cargar
workmsg.setHTML(" "+constants.ocupado()+"...");
workmsg.setStyleName("workmsg");
workmsg2.setStyleName("workmsg2");
workmsg.setVisible(false);
workmsg2.setVisible(false);
RootPanel.get("PanelProyecto").add(workmsg);
RootPanel.get("PanelProyecto").add(workmsg2);
tabPanel = new TabLayoutPanel(2.5, Unit.EM);
tabPanel.setAnimationDuration(1000);
proyAbiertos = new ArrayList<ProyectoCliente>();
proyAbiertos.add(new ProyectoCliente(new ProyectoDTO()));
tabPanel.addSelectionHandler(new SelectionHandler<Integer>(){
public void onSelection(SelectionEvent<Integer> event) {
if(proyAbiertos.size()>0){
//Window.alert("Proyecto " + proyAbiertos.get(event.getSelectedItem()).proyecto.nombre);
PSeleccion = proyAbiertos.get(event.getSelectedItem());
}
}});
proyectos = new ArrayList<ProyectoDTO>();
//Cargar proyecos del usuario, buscado por su email
ProyService.abrirProyectos(loginInfo.getEmailAddress(), new AsyncCallback<ArrayList<ProyectoDTO>>(){
@Override
public void onFailure(Throwable caught) {
// TODO Auto-generated method stub
Window.alert(constants.error1()); //error abriendo proyectos
}
@Override
public void onSuccess(ArrayList<ProyectoDTO> result) {
// TODO Auto-generated method stub
proyectos = result;
tabPanel.add(CargarPanelProyectos(), constants.inicio());
resizePanel = new ResizeLayoutPanel();
resizePanel.setWidth("100%");
resizePanel.setHeight(Window.getClientHeight() + "px");
Window.addResizeHandler(new ResizeHandler() {
public void onResize(ResizeEvent event) {
int height = event.getHeight();
resizePanel.setHeight(height + "px");
}
});
resizePanel.setWidget(tabPanel);
RootPanel.get("PanelProyecto").add(resizePanel);
}
});
}
TextBox txNuevoN = new TextBox();
TextBox txNuevoD = new TextBox();
private SimplePager pager;
public List<ProyectoDTO> proy;
public Widget CargarPanelProyectos(){
//Crear CellTable
//tablaP = new CellTable<ProyectoDTO>(KEY_PROVIDER);
tablaP = new CellTable<ProyectoDTO>();
tablaP.setKeyboardSelectionPolicy(KeyboardSelectionPolicy.ENABLED);
tablaP.setWidth("100%", true);
//tablaP.setPageSize(15);
tablaP.setSelectionModel(selectionModelP);
selectionModelP.addSelectionChangeHandler(new SelectionChangeEvent.Handler() {
public void onSelectionChange(SelectionChangeEvent event) {
ProyectoDTO selected = selectionModelP.getSelectedObject();
if (selected != null) {
//Window.alert("You selected: " + selected);
ProySeleccionado = selected;
}
}
});
//Columna nombre
EditTextCell txnombre2 = new EditTextCell();
Column<ProyectoDTO, String> col_nombre = new Column<ProyectoDTO, String>(txnombre2){
@Override
public String getValue(ProyectoDTO object) {
return object.nombre;
}
};
col_nombre.setFieldUpdater(new FieldUpdater<ProyectoDTO, String>(){
@Override
public void update(int index, ProyectoDTO object, String value) {
// TODO Auto-generated method stub
object.nombre = value;
actualizarNombreProyecto(value);
}
});
tablaP.addColumn(col_nombre, constants.nombre());
tablaP.setColumnWidth(col_nombre, Window.getClientWidth()*.25, Unit.PX);
//columna id
EditTextCell txid2 = new EditTextCell();
Column<ProyectoDTO, String> col_des = new Column<ProyectoDTO, String>(txid2){
@Override
public String getValue(ProyectoDTO object) {
return object.descripcion;
}
};
col_des.setFieldUpdater(new FieldUpdater<ProyectoDTO, String>(){
@Override
public void update(int index, ProyectoDTO object, String value) {
// TODO Auto-generated method stub
object.descripcion = value;
actualizarDescripcionProyecto(value);
}
});
tablaP.addColumn(col_des, constants.descripcion());
tablaP.setColumnWidth(col_des, Window.getClientWidth()*.70, Unit.PX);
AsyncDataProvider<ProyectoDTO> provider = new AsyncDataProvider<ProyectoDTO>() {
@Override
protected void onRangeChanged(HasData<ProyectoDTO> display) {
int start = display.getVisibleRange().getStart();
int end = start + display.getVisibleRange().getLength();
end = end >= proyectos.size() ? proyectos.size() : end;
List<ProyectoDTO> sub = proyectos.subList(start, end);
updateRowData(start, sub);
}
};
provider.addDataDisplay(tablaP);
provider.updateRowCount(proyectos.size(), true);
/*panel horizonal de controles */
HorizontalPanel hP = new HorizontalPanel();
hP.setSpacing(5);
Label lbNuevoN = new Label(constants.nombre()+":");
Label lbNuevoD = new Label(constants.descripcion()+":");
Button btNuevo = new Button( constants.crear());
btNuevo.addClickHandler(new ClickHandler() {
public void onClick(ClickEvent event) {
CrearProyecto();
}
});
btNuevo.ensureDebugId("cwBasicButton-normal");
Button btEliminar = new Button(constants.eliminar());
btEliminar.addClickHandler(new ClickHandler() {
public void onClick(ClickEvent event) {
//Window.alert("Eliminar proyecto " + ProySeleccionado.nombre + " de " + ProySeleccionado.usuario);
EliminarProyecto();
}
});
btEliminar.ensureDebugId("cwBasicButton-normal");
Button btAbrir = new Button(constants.abrir());
btAbrir.addClickHandler(new ClickHandler() {
public void onClick(ClickEvent event) {
PSeleccion = new ProyectoCliente(ProySeleccionado);
proyAbiertos.add(PSeleccion);
AbrirProyecto();
}
});
btAbrir.ensureDebugId("cwBasicButton-normal");
lbNuevoN.setVisible(true);
txNuevoN.setVisible(true);
lbNuevoD.setVisible(true);
txNuevoD.setVisible(true);
btNuevo.setVisible(true);
btEliminar.setVisible(true);
btAbrir.setVisible(true);
hP.add(lbNuevoN);
hP.add(txNuevoN);
hP.add(lbNuevoD);
hP.add(txNuevoD);
hP.add(btNuevo);
hP.add(btEliminar);
hP.add(btAbrir);
/*fin de panel horizontal*/
VerticalPanel vP = new VerticalPanel();
vP.setWidth("100%");
vP.setSpacing(5);
vP.add(hP);
//SimplePager.Resources pagerResources = GWT.create(SimplePager.Resources.class);
//pager = new SimplePager(TextLocation.CENTER, pagerResources, false, 0, true);
pager = new SimplePager();
pager.setDisplay(tablaP);
pager.getElement().getStyle().setProperty("marginLeft", "auto");
pager.getElement().getStyle().setProperty("marginRight", "auto");
vP.add(tablaP);
vP.add(pager);
vP.setStyleName(".centrar");
resizePanel = new ResizeLayoutPanel();
resizePanel.setWidth("99%");
resizePanel.setHeight(Window.getClientHeight() + "px");
Window.addResizeHandler(new ResizeHandler() {
public void onResize(ResizeEvent event) {
int height = event.getHeight();
resizePanel.setHeight(height + "px");
}
});
resizePanel.setWidget(vP);
return resizePanel;
}
public Long id_nuevo;
public void CrearProyecto(){
if (txNuevoN.getText().compareTo("")!=0){
ProyService.nuevoProyecto(loginInfo.getEmailAddress(), txNuevoN.getText(), txNuevoD.getText(), new AsyncCallback<Long>(){
@Override
public void onFailure(Throwable caught) {
// TODO Auto-generated method stub
//Window.alert(constants.error1()); //error abriendo proyectos
workmsg2.setHTML(" "+constants.error1()+"...");
workmsg2.setVisible(true);
t = new Timer() {
public void run() {
workmsg2.setVisible(false);
}
};
t.schedule(TIME);
}
@Override
public void onSuccess(Long result) {
// TODO Auto-generated method stub
id_nuevo=result;
//int num = tablaP.getRowCount();
proyectos.add(new ProyectoDTO(id_nuevo, loginInfo.getEmailAddress(),txNuevoN.getText(), txNuevoD.getText(), false));
tablaP.setRowCount(proyectos.size(), true);
tablaP.setRowData(0, proyectos);
//tablaP.redraw();
}
});
}
else{
workmsg2.setHTML(" "+constants.m4()+"..."); //ingrese el nombre
workmsg2.setVisible(true);
t = new Timer() {
public void run() {
workmsg2.setVisible(false);
}
};
t.schedule(TIME);
}
}
public void AbrirProyecto(){
workmsg.setVisible(true);
//LLamar tareas
ProyService.abrirTarea(ProySeleccionado.id, new AsyncCallback<ArrayList<TareaDTO>>(){
@Override
public void onFailure(Throwable caught) {
// TODO Auto-generated method stub
}
@Override
public void onSuccess(ArrayList<TareaDTO> result) {
// TODO Auto-generated method stub
ProySeleccionado.tareas = result;
PSeleccion.proyecto.tareas = result;
tabPanel.add(CargarPanelProyecto(),ProySeleccionado.nombre);
//tabPanel.selectTab(proyAbiertos.size() - 1);
tabPanel.selectTab(tabPanel.getWidgetCount()-1);
int x = tabPanel.getOffsetWidth();
PSeleccion.scrollPanel.setPixelSize(x-570, 450);
PSeleccion.cargarTareas();
}
});
}
public void EliminarProyecto(){
ProyService.eliminarProyecto(ProySeleccionado.id, ProySeleccionado.usuario, new AsyncCallback<Void>(){
@Override
public void onFailure(Throwable caught) {
// TODO Auto-generated method stub
}
@Override
public void onSuccess(Void result) {
// TODO Auto-generated method stub
ProyectoDTO selected = selectionModelP.getSelectedObject();
proyectos.remove(selected);
/*Iterator iter = proyectos.iterator();
int i=0;
while (iter.hasNext()){
((ProyectoDTO)iter.next()).numero = i;
i++;
}*/
tablaP.setRowCount(proyectos.size(), true);
tablaP.setRowData(0, proyectos);
//tablaP.redraw();
//Window.alert(constants.m1());//"Proyecto eliminado exitosamente"
workmsg2.setHTML(" "+constants.m1()+"...");
workmsg2.setVisible(true);
t = new Timer() {
public void run() {
workmsg2.setVisible(false);
}
};
t.schedule(3000);
}
});
}
public Widget CargarPanelProyecto(){
//Crear Tablas
// Agregar columna numero
TextColumn<TareaDTO> txnumero = new TextColumn<TareaDTO>() {
@Override
public String getValue(TareaDTO object) {
return String.valueOf(object.numero);
}
};
PSeleccion.tabla.addColumn(txnumero, constants.numero());
PSeleccion.tabla.setColumnWidth(txnumero, 10, Unit.PX);
//Columna nombre
EditTextCell txnombre = new EditTextCell();
Column<TareaDTO, String> col_nombre = new Column<TareaDTO, String>(txnombre){
@Override
public String getValue(TareaDTO object) {
return object.nombre;
}
};
PSeleccion.tabla.addColumn(col_nombre, constants.nombre());
PSeleccion.tabla.setColumnWidth(col_nombre, 300, Unit.PX);
col_nombre.setFieldUpdater(new FieldUpdater<TareaDTO, String>(){
@Override
public void update(int index, TareaDTO object, String value) {
// TODO Auto-generated method stub
object.nombre = value;
}
});
//Columna inicio
DatePickerCell tx_inicio = new DatePickerCell(DateTimeFormat.getFormat(ffecha));
Column<TareaDTO, Date> col_inicio = new Column<TareaDTO, Date>(tx_inicio) {
@Override
public Date getValue(TareaDTO object) {
return object.inicio;
}
};
PSeleccion.tabla.addColumn(col_inicio, constants.inicio());
col_inicio.setFieldUpdater(new FieldUpdater<TareaDTO, Date>(){
@Override
public void update(int index, TareaDTO object, Date value) {
// TODO Auto-generated method stub
object.inicio = value;
if(object.inicio.before(PSeleccion.fecha_ini)){
PSeleccion.canvas.clear();
PSeleccion.crea_gantt();
PSeleccion.cargarTareas();
}
PSeleccion.actualizarDibujo(PSeleccion.proyecto.tareas.indexOf(object), object.inicio, object.fin);
}
});
//Columna fin
DatePickerCell tx_fin = new DatePickerCell(DateTimeFormat.getFormat(ffecha));
Column<TareaDTO, Date> col_fin = new Column<TareaDTO, Date>(tx_fin) {
@Override
public Date getValue(TareaDTO object) {
return object.fin;
}
};
PSeleccion.tabla.addColumn(col_fin, constants.fin());
col_fin.setFieldUpdater(new FieldUpdater<TareaDTO, Date>(){
@Override
public void update(int index, TareaDTO object, Date value) {
// TODO Auto-generated method stub
object.fin = value;
if(object.fin.after(PSeleccion.fecha_fin)){
PSeleccion.canvas.clear();
PSeleccion.crea_gantt();
PSeleccion.cargarTareas();
}
PSeleccion.actualizarDibujo(PSeleccion.proyecto.tareas.indexOf(object), object.inicio, object.fin);
}
});
// Add a selection model to handle user selection.
PSeleccion.tabla.setSelectionModel(selectionModel);
selectionModel.addSelectionChangeHandler(new SelectionChangeEvent.Handler() {
public void onSelectionChange(SelectionChangeEvent event) {
TareaDTO selected = selectionModel.getSelectedObject();
if (selected != null) {
//Window.alert("You selected: " + String.valueOf(selected.nombre));
}
}
});
PSeleccion.tabla.setRowCount(PSeleccion.proyecto.tareas.size(), true);
PSeleccion.tabla.setRowData(0, PSeleccion.proyecto.tareas);
HorizontalPanel hP = new HorizontalPanel();
hP.setStyleName(".cosa");
//hP.setWidth("100%");
hP.setSpacing(5);
Button btNuevo = new Button(constants.nueva());
btNuevo.addClickHandler(new ClickHandler() {
public void onClick(ClickEvent event) {
NuevaTarea();
}
});
btNuevo.ensureDebugId("cwBasicButton-normal");
Button btEliminar = new Button(constants.eliminar());
btEliminar.addClickHandler(new ClickHandler() {
public void onClick(ClickEvent event) {
workmsg2.setHTML(" "+constants.m2());
workmsg2.setVisible(true);
t = new Timer() {
public void run() {
workmsg2.setVisible(false);
}
};
EliminarTarea();
t.schedule(TIME);
}
});
btEliminar.ensureDebugId("cwBasicButton-normal");
Button btGuardar = new Button(constants.guardarp());
btGuardar.addClickHandler(new ClickHandler() {
public void onClick(ClickEvent event) {
//Window.alert("Tiene tareas: " + String.valueOf(PSeleccion.proyecto.tareas.size()));
GuardarProyectoP();
/*if (PSeleccion.proyecto.tareas.iterator().hasNext()) {
for (TareaDTO tar : PSeleccion.proyecto.tareas) {
Window.alert(tar.nombre + " " + String.valueOf(tar.duracion) + " " + String.valueOf(tar.inicio) + " " + String.valueOf(tar.fin));
}
} else {
// ... no results ...
}*/
}
});
btGuardar.ensureDebugId("cwBasicButton-normal");
Button btCerrar = new Button(constants.cerrarp());
btCerrar.addClickHandler(new ClickHandler() {
public void onClick(ClickEvent event) {
CerrarProyecto();
}
});
btCerrar.ensureDebugId("cwBasicButton-normal");
//pdf
// Button btpdf = new Button("PDF");
btpdf.addClickHandler(new ClickHandler() {
public void onClick(ClickEvent event) {
btpdf.setEnabled(false);
workmsg.setVisible(true);
datos();
}
});
btNuevo.setVisible(true);
btEliminar.setVisible(true);
btGuardar.setVisible(true);
btCerrar.setVisible(true);
btpdf.setVisible(true);
btpdf.getElement().setId("bpdf");
hP.add(btNuevo);
hP.add(btEliminar);
hP.add(btGuardar);
hP.add(btCerrar);
hP.add(btpdf);
VerticalPanel vP = new VerticalPanel();
vP.setStyleName(".cosa");
vP.setWidth("100%");
vP.setSpacing(5);
vP.add(hP);
//if(proyectos.size()>0){
ScrollPanel SP = new ScrollPanel(PSeleccion.tabla);
vP.add(SP);
//}
HorizontalPanel tabProy = new HorizontalPanel();
tabProy.add(vP);
PSeleccion.crea_gantt();
PSeleccion.iniciarDiagrama();
tabProy.add(PSeleccion.scrollPanel);
resizePanel = new ResizeLayoutPanel();
resizePanel.setWidth("99%");
resizePanel.setHeight(Window.getClientHeight() + "px");
Window.addResizeHandler(new ResizeHandler() {
public void onResize(ResizeEvent event) {
int height = event.getHeight();
resizePanel.setHeight(height + "px");
}
});
resizePanel.setWidget(tabProy);
workmsg.setVisible(false);
return resizePanel;
//return tabProy;
}
//carga de datos del pdf
public void datos(){
String filas="";
int numeroDT=0;
Date hoy = new Date();
String dato="";
int inicio, fin;
int mayor=0;
int mes1,mes2, dia1, dia2, year1, year2;
Date fmenor = new Date();
Date fmayor = new Date();
fmenor.setDate(1);
fmenor.setMonth(0);
fmenor.setYear(200);
fmayor.setDate(31);
fmayor.setMonth(11);
fmayor.setYear(0);
Date faux,faux2;
//Window.alert("menor " + fmenor + "\n mayor " +fmayor);
dato = "<img src=\"http://aboutplanningt.appspot.com/images/planning.jpg\"><br><br>"+
"<p> <b>"+constants.nombre()+": </b> "+
ProySeleccionado.nombre+"</p> <br>"+
"<p> <b>"+constants.descripcion()+": </b>"+
ProySeleccionado.descripcion+"</p> <br><br>";
if (PSeleccion.proyecto.tareas.iterator().hasNext()) {
for (TareaDTO tar : PSeleccion.proyecto.tareas) {
numeroDT++;
inicio = tar.inicio.getYear()-100;
fin = tar.fin.getYear()-100;
mes1 = tar.inicio.getMonth()+1;
mes2= tar.fin.getMonth()+1;
//fila +=
filas+= "<TR><TD WIDTH=10%>"+String.valueOf(numeroDT) +"</TD><TD WIDTH=40%>"+String.valueOf(tar.nombre)+"</TD><TD WIDTH=25%>"+String.valueOf(tar.inicio.getDate()+"/"+mes1+"/"+inicio)+"</TD><TD WIDTH=25%>"+String.valueOf(tar.fin.getDate()+"/"+mes2+"/"+fin)+"</TR>";
faux = new Date();
faux.setDate(tar.inicio.getDate());
faux.setMonth(tar.inicio.getMonth());
faux.setYear(tar.inicio.getYear());
faux2 = new Date();
faux2.setDate(tar.fin.getDate());
faux2.setMonth(tar.fin.getMonth());
faux2.setYear(tar.fin.getYear());
if (faux.compareTo(fmenor)<0){
fmenor = faux;
}
if(faux2.compareTo(fmayor)>0 ){
fmayor = faux2;
}
//if (tar.duracion>mayor){
//mayor = tar.duracion; //tarea de mayor duraci�n
//}
}
}
int totaldias = contarDias(fmayor, fmenor);
//Window.alert("menor " + fmenor + "\n mayor " +fmayor);
//Window.alert("dias "+dias);
dato += "<TABLE > <TR > <TH WIDTH=10%>"+constants.numero()+"</TH> <TH WIDTH=40%>"+constants.nombre()+"</TH> <TH WIDTH=25%>"+constants.inicio()+"</TH> <TH WIDTH=25%>"+constants.fin()+"</TH> </TR> " +
filas +" </TABLE> ";
//crear gantt
dato+="<br/><br/>"+
"<TABLE cellspacing=0 cellpadding=2 WIDTH=100% > " +
"<TR><TH WIDTH=20%> Tarea</TH><TH WIDTH=80%> </TD></TH>";
String cuerpog = "";
double p1=0,p2=0,p3=0;
numeroDT=0;
if (PSeleccion.proyecto.tareas.iterator().hasNext()) {
for (TareaDTO tar : PSeleccion.proyecto.tareas) {
numeroDT++;
faux = new Date();
faux.setDate(tar.inicio.getDate());
faux.setMonth(tar.inicio.getMonth());
faux.setYear(tar.inicio.getYear());
faux2 = new Date();
faux2.setDate(tar.fin.getDate());
faux2.setMonth(tar.fin.getMonth());
faux2.setYear(tar.fin.getYear());
p1 = contarDias(faux, fmenor);
p1 = p1/totaldias*100;
p2 = contarDias(faux,faux2);
p2 = p2/totaldias*100;
p3 = contarDias(faux2, fmayor);
p3 = p3/totaldias*100;
mes1 = faux.getMonth()+1;
mes2 = faux2.getMonth()+1;
cuerpog +="<TR>" +
"<TD WIDTH=20%>"+tar.nombre+"</TD>"+
"<TD WIDTH=80%>"+
"<TABLE BORDER=0 WIDTH=100% BORDERCOLOR=\"#ffffff\">"+
"<TD WIDTH="+p1+"% align=\"right\">"+ tar.inicio.getDate()+"/"+mes1 +"</TD>"+
"<TD WIDTH="+p2+"% BGCOLOR=\"#667de1\" Height=\"12px\"></TD>"+
"<TD WIDTH="+p3+"%>"+ tar.fin.getDate()+"/"+mes2 +"</TD>"+
"</TABLE>"+
"</TD>"+
"</TR>";
}
}
//Window.alert("p1 "+p1+" p2 "+p2+" p3 "+p3 +" total "+totaldias );
dato+= cuerpog+ "</TD></TABLE>";
fin = hoy.getYear()-100;
dato += "<br><br><p> "+constants.creado()+": "+ hoy.toGMTString()+" "+constants.por()+" "+loginInfo.getNickname();
CrearPdf(dato);
}
public int cdia=0;
public int contarDias(Date _ini, Date _fin)
{
cdia = (int)Math.ceil(((double)_fin.getTime() - _ini.getTime()) / MS_POR_DIA);
if (cdia<0){
cdia = cdia *-1;
}
return cdia;
}
//metodo para la creaci�n de pdf
public void CrearPdf(String input){
final String input2=input;
textToServerLabel.setText(constants.de5()+"...");//documento...
serverResponseLabel.setText("");
greetingService.greetServer(input2,
new AsyncCallback<String>() {
public void onFailure(Throwable caught) {
dialogBox.setText(constants.de6()); //error en la creaci�n del PDF
serverResponseLabel.addStyleName("serverResponseLabelError");
serverResponseLabel.setHTML(SERVER_ERROR);
dialogBox.center();
closeButton.setFocus(true);
workmsg.setVisible(false);
//CrearPdf(input2);
}
public void onSuccess(String result) {
dialogBox.setText(constants.de7()); //creado pdf
serverResponseLabel.removeStyleName("serverResponseLabelError");
if (result.compareTo("error interfacing with Google Docs, see your logs")==0){
CrearPdf(input2);
}
else{
serverResponseLabel.setHTML(result);
dialogBox.center();
closeButton.setFocus(true);
workmsg.setVisible(false);
}
}
});
}
public void NuevaTarea(){
int num = PSeleccion.tabla.getRowCount();
PSeleccion.proyecto.tareas.add(new TareaDTO(num,constants.tareanueva() +" " + num));
PSeleccion.tabla.setRowCount(PSeleccion.proyecto.tareas.size(), true);
PSeleccion.tabla.setRowData(0, PSeleccion.proyecto.tareas);
PSeleccion.tabla.redraw();
//Window.alert("creada tarea " + PSeleccion.proyecto.nombre + " tareas " + String.valueOf(num));
PSeleccion.dibujarTarea(num, new Date(), new Date(), "blue");
}
public void EliminarTarea(){
TareaDTO selected = selectionModel.getSelectedObject();
PSeleccion.proyecto.tareas.remove(selected);
PSeleccion.canvas.clear();
PSeleccion.crea_gantt();
Iterator iter = PSeleccion.proyecto.tareas.iterator();
int i=0;
while (iter.hasNext()){
((TareaDTO)iter.next()).numero = i;
i++;
}
PSeleccion.tabla.setRowCount(PSeleccion.proyecto.tareas.size(), true);
PSeleccion.tabla.setRowData(0, PSeleccion.proyecto.tareas);
PSeleccion.tabla.redraw();
PSeleccion.cargarTareas();
/**/
}
public void GuardarProyectoP(){
ProyService.guardarProyecto(PSeleccion.proyecto.id, PSeleccion.proyecto.tareas, new AsyncCallback<Void>(){
@Override
public void onFailure(Throwable caught) {
// TODO Auto-generated method stub
workmsg2.setHTML(" Error...");
workmsg2.setVisible(true);
t = new Timer() {
public void run() {
workmsg2.setVisible(false);
}
};
t.schedule(TIME);
}
@Override
public void onSuccess(Void result) {
// TODO Auto-generated method stub
//Window.alert(constants.m3());//proyecto guardado exitosamente
workmsg2.setHTML(" "+constants.m3()+"...");
workmsg2.setVisible(true);
t = new Timer() {
public void run() {
workmsg2.setVisible(false);
}
};
t.schedule(TIME);
}
});
}
public void CerrarProyecto(){
//RootPanel.get("PanelProyecto").clear();
/* dialogBox2.center();*/
/* dialogBox2.show();*/
GuardarProyectoP();
tabPanel.remove(tabPanel.getSelectedIndex());
proyAbiertos.remove(PSeleccion);
}
public void actualizarNombreProyecto(String nombre){
ProyService.actualizarNombreProyecto(ProySeleccionado.id, nombre , new AsyncCallback<Void> (){
@Override
public void onFailure(Throwable caught) {
// TODO Auto-generated method stub
}
@Override
public void onSuccess(Void result) {
// TODO Auto-generated method stub
}
});
}
public void actualizarDescripcionProyecto(String descripcion){
ProyService.actualizarDescripcionProyecto(ProySeleccionado.id, descripcion , new AsyncCallback<Void> (){
@Override
public void onFailure(Throwable caught) {
// TODO Auto-generated method stub
}
@Override
public void onSuccess(Void result) {
// TODO Auto-generated method stub
}
});
}
private DialogBox createDialogBox() {
final DialogBox dialogBox = new DialogBox();
dialogBox.ensureDebugId("cwDialogBox");
dialogBox.setText("PlanninGt");
VerticalPanel verp = new VerticalPanel();
verp.setSpacing(4);
dialogBox.setWidget(verp);
HTML details = new HTML(constants.pregunta()+"<br/>");
verp.add(details);
HorizontalPanel dialogContents = new HorizontalPanel();
HorizontalPanel dialogContents2 = new HorizontalPanel();
dialogContents.setWidth("100%");
//dialogContents.setBorderWidth(2);
dialogContents.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_CENTER);
//dialogContents2.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_CENTER);
Button okButton = new Button(
constants.aceptar(), new ClickHandler() {
public void onClick(ClickEvent event) {
GuardarProyectoP();
tabPanel.remove(tabPanel.getSelectedIndex());
proyAbiertos.remove(PSeleccion);
dialogBox.hide();
}
});
Button cancelButton = new Button(
constants.cancelar(), new ClickHandler() {
public void onClick(ClickEvent event) {
tabPanel.remove(tabPanel.getSelectedIndex());
proyAbiertos.remove(PSeleccion);
dialogBox.hide();
}
});
// dialogContents.setCellHorizontalAlignment(okButton, HasHorizontalAlignment.ALIGN_RIGHT);
// dialogContents.setCellHorizontalAlignment(cancelButton, HasHorizontalAlignment.ALIGN_RIGHT);
dialogContents.add(okButton);
dialogContents.add(cancelButton);
verp.add(dialogContents);
// verp.add(dialogContents2);
return dialogBox;
}
}