Package m.szajowski.schedule

Source Code of m.szajowski.schedule.UserDataSettings

package m.szajowski.schedule;

import java.util.Calendar;
import java.util.Collection;
import java.util.Date;
import java.util.LinkedHashMap;
import java.util.Map;

import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.invient.vaadin.charts.InvientCharts.DecimalPoint;
import com.invient.vaadin.charts.InvientCharts.XYSeries;
import com.vaadin.data.util.BeanItem;
import com.vaadin.data.validator.DoubleValidator;
import com.vaadin.terminal.Sizeable;
import com.vaadin.terminal.ThemeResource;
import com.vaadin.ui.Alignment;
import com.vaadin.ui.Button;
import com.vaadin.ui.Button.ClickEvent;
import com.vaadin.ui.Button.ClickListener;
import com.vaadin.ui.DateField;
import com.vaadin.ui.Form;
import com.vaadin.ui.InlineDateField;
import com.vaadin.ui.TextField;
import com.vaadin.ui.VerticalLayout;
import com.vaadin.ui.Window;

public class UserDataSettings {

  private final Window mainWindow;
  private final HttpServletRequest request;
  private final HttpServletResponse response;
  private final Main main;
  private final BeanItem<UserData> userData;

  public UserDataSettings(final Main main, final HttpServletRequest request,
      final HttpServletResponse response) {
    this.main = main;
    this.mainWindow = main.getMainWindow();
    this.request = request;
    this.response = response;
    this.userData = main.userData;
  }

  public void checkData() {
    boolean show = true;
    Cookie[] cookies = request.getCookies();
    if (cookies != null) {
      for (Cookie cookie : cookies) {
        if (cookie.getName().equals("schedule")) {
          UserData userData = new UserData(cookie.getValue());

          mainWindow.showNotification("Witaj " + userData.getName(),
              Window.Notification.TYPE_TRAY_NOTIFICATION);
          show = false;
          UserData bean = main.userData.getBean();
          bean.setName(cookie.getValue().split("-")[0]);
          bean.setDefaultWork(cookie.getValue().split("-")[1]);
          bean.setLogin(cookie.getValue().split("-")[2]);
          refreshTable();
          show = false;
        }
      }
    }
    if (show) {
      showSettingsWindow();
    }
  }

  public void showSettingsWindow() {
    final Window window = new Window("Dane użytkownika");
    window.setModal(true);
    window.setWidth(400, Sizeable.UNITS_PIXELS);
    window.center();
    final Form form = new Form();
    form.setFooter(new VerticalLayout());
    form.setItemDataSource(userData, userData.getBean().FIELDS_ORDER);
    userData.getBean().addCaptions(form);
    for (String id : UserData.FIELDS_ORDER) {
      form.getField(id).setRequired(true);
      form.getField(id).setRequiredError("Wartosc wymagana");

    }
    window.addComponent(form);
    Button button = new Button("Zapisz", form, "commit");
    button.setIcon(new ThemeResource("../runo/icons/16/ok.png"));
    button.addListener(new ClickListener() {

      public void buttonClick(final ClickEvent event) {
        String value = form.getField("name") + "-" + form.getField("defaultWork") + "-"
            + form.getField("login");
        Cookie cookie = new Cookie("schedule", value);
        cookie.setPath("/schedule");
        cookie.setMaxAge(-1);
        response.addCookie(cookie);
        mainWindow.showNotification("Witaj " + form.getField("name"),
            Window.Notification.TYPE_TRAY_NOTIFICATION);
        mainWindow.removeWindow(window);

        refreshTable();
      }

    });
    VerticalLayout formFooterLayout = new VerticalLayout();
    form.setFooter(formFooterLayout);
    form.getFooter().addComponent(button);
    formFooterLayout.setComponentAlignment(button, Alignment.MIDDLE_RIGHT);
    mainWindow.addWindow(window);

  }

  public void showUValue() {
    final Window window = new Window("Wartość U");
    window.setModal(true);
    window.setWidth(400, Sizeable.UNITS_PIXELS);
    window.center();
    final Form form = new Form();
    form.setFooter(new VerticalLayout());
    final InlineDateField dateField = new InlineDateField("Miesiąc");
    dateField.setResolution(DateField.RESOLUTION_MONTH);
    form.addField("month", dateField);
    final TextField textField = new TextField("Wartość");
    textField.setRequired(true);
    textField.setValue("100.99");
    textField.addValidator(new DoubleValidator("Tylko wartości liczbowe"));
    form.addField("value", textField);
    window.addComponent(form);
    Button button = new Button("Zapisz", form, "commit");
    button.setIcon(new ThemeResource("../runo/icons/16/ok.png"));
    button.addListener(new ClickListener() {

      public void buttonClick(final ClickEvent event) {
        double parseDouble = Double.parseDouble(textField.getValue().toString());
        Date date = (Date) dateField.getValue();
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        DecimalPoint p = new DecimalPoint(new XYSeries("2008"), Double.parseDouble(date
            .getMonth() + ""), parseDouble);
        int year = calendar.get(Calendar.YEAR);
        Map<Integer, DecimalPoint> map = main.points.get(year);
        if (map == null) {
          main.points.put(year, new LinkedHashMap<Integer, DecimalPoint>());
          map = main.points.get(year);
        }
        map.put(date.getMonth(), p);

        main.refreshGraph();
        mainWindow.removeWindow(window);
      }

    });
    VerticalLayout formFooterLayout = new VerticalLayout();
    form.setFooter(formFooterLayout);
    form.getFooter().addComponent(button);
    formFooterLayout.setComponentAlignment(button, Alignment.MIDDLE_RIGHT);
    mainWindow.addWindow(window);

  }

  private void refreshTable() {
    Collection<Day> itemIds = main.days.getItemIds();
    for (Day day : itemIds) {
      if (!day.isWeekend()) {
        day.setProgram(userData.getBean().getDefaultWork());
      }
    }
    if (main.daysTable != null) {
      main.daysTable.requestRepaintAll();
    }
  }
}
TOP

Related Classes of m.szajowski.schedule.UserDataSettings

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.