private Node createExportActions() {
    final Button button = new Button("Export", GlyphRegistry.get(AwesomeIcon.CARET_DOWN));
    button.getStyleClass().add("flat-button");

    // create menu
    final ContextMenu contextMenu = new ContextMenu();

    // csv chart
    MenuItem item = new MenuItem("Graph");
    item.setOnAction(
        new EventHandler<ActionEvent>() {
          @Override
          public void handle(ActionEvent event) {
            export();
          }
        });
    contextMenu.getItems().add(item);
    button.setOnMousePressed(
        new EventHandler<Event>() {
          @Override
          public void handle(Event event) {
            contextMenu.show(button, Side.BOTTOM, 0, 0);
          }
        });

    return button;
  }
  private Node createAxisOptions() {
    final Button btn = new Button("Axis", GlyphRegistry.get(AwesomeIcon.CARET_DOWN));
    btn.getStyleClass().add("flat-button");

    final ContextMenu menu = new ContextMenu();
    btn.setOnMousePressed(
        new EventHandler<Event>() {
          @Override
          public void handle(Event event) {
            menu.show(btn, Side.BOTTOM, 0, 0);
          }
        });

    MenuItem item = new MenuItem("Y linear", GlyphRegistry.get(AwesomeIcon.CHECK));
    item.setOnAction(
        new EventHandler<ActionEvent>() {
          @Override
          public void handle(ActionEvent event) {
            _chart.axisMode().set(CyclistAxis.Mode.LINEAR);
          }
        });
    item.getGraphic()
        .visibleProperty()
        .bind(Bindings.equal(_chart.axisMode(), CyclistAxis.Mode.LINEAR));
    menu.getItems().add(item);

    item = new MenuItem("Y log", GlyphRegistry.get(AwesomeIcon.CHECK));
    item.setOnAction(
        new EventHandler<ActionEvent>() {
          @Override
          public void handle(ActionEvent event) {
            _chart.axisMode().set(CyclistAxis.Mode.LOG);
          }
        });
    item.getGraphic()
        .visibleProperty()
        .bind(Bindings.equal(_chart.axisMode(), CyclistAxis.Mode.LOG));
    item.disableProperty().bind(Bindings.equal(_chart.getMode(), InventoryChart.ChartMode.STACKED));
    menu.getItems().add(item);

    item = new MenuItem("Y force zero", GlyphRegistry.get(AwesomeIcon.CHECK));
    item.getGraphic().visibleProperty().bind(_chart.forceZero());
    item.disableProperty().bind(Bindings.equal(_chart.getMode(), InventoryChart.ChartMode.STACKED));
    menu.getItems().add(item);
    item.setOnAction(
        new EventHandler<ActionEvent>() {
          @Override
          public void handle(ActionEvent e) {
            _chart.forceZero().set(!_chart.forceZero().get());
          }
        });

    return btn;
  }
  private Node createModeActions() {
    final Button button = new Button("Options", GlyphRegistry.get(AwesomeIcon.CARET_DOWN));
    button.getStyleClass().add("flat-button");

    // create menu
    final ContextMenu contextMenu = new ContextMenu();

    // line chart
    MenuItem item = new MenuItem("Line chart", GlyphRegistry.get(AwesomeIcon.CHECK));
    item.getGraphic()
        .visibleProperty()
        .bind(Bindings.equal(_chart.getMode(), InventoryChart.ChartMode.LINE));
    item.setOnAction(
        new EventHandler<ActionEvent>() {
          @Override
          public void handle(ActionEvent event) {
            _chart.setMode(InventoryChart.ChartMode.LINE);
            if (!_lastForceZero) _chart.forceZero().set(false);
            if (_saveAxisMode == CyclistAxis.Mode.LOG) _chart.axisMode().set(CyclistAxis.Mode.LOG);
          }
        });
    contextMenu.getItems().add(item);

    //		// area chart
    //		item = new MenuItem("Area chart");
    //		item.setOnAction(new EventHandler<ActionEvent>() {
    //			@Override
    //			public void handle(ActionEvent event) {
    //				_chart.setMode(InventoryChart.ChartMode.AREA);
    //			}
    //		});
    //		contextMenu.getItems().add(item);

    // stacked chart
    item = new MenuItem("Stacked chart", GlyphRegistry.get(AwesomeIcon.CHECK));
    item.getGraphic()
        .visibleProperty()
        .bind(Bindings.equal(_chart.getMode(), InventoryChart.ChartMode.STACKED));
    item.setOnAction(
        new EventHandler<ActionEvent>() {
          @Override
          public void handle(ActionEvent event) {
            _lastForceZero = _chart.forceZero().get();
            if (!_lastForceZero) _chart.forceZero().set(true);
            _saveAxisMode = _chart.axisMode().get();
            _chart.setMode(InventoryChart.ChartMode.STACKED);
          }
        });
    contextMenu.getItems().add(item);

    contextMenu.getItems().add(new SeparatorMenuItem());

    MenuItem checked = new MenuItem("Show total", GlyphRegistry.get(AwesomeIcon.CHECK));
    checked.getGraphic().visibleProperty().bind(_chart.getShowTotal());
    checked.setOnAction(
        new EventHandler<ActionEvent>() {
          @Override
          public void handle(ActionEvent event) {
            _chart.setShowTotal(!_chart.getShowTotal().getValue());
          }
        });
    contextMenu.getItems().add(checked);

    button.setOnMousePressed(
        new EventHandler<Event>() {
          @Override
          public void handle(Event event) {
            contextMenu.show(button, Side.BOTTOM, 0, 0);
          }
        });

    return button;
  }
  @Override
  public void initialize(URL location, ResourceBundle resources) {
    Circle cuser = new Circle(10, Color.DODGERBLUE);
    Circle cpass = new Circle(10, Color.DODGERBLUE);
    cuser.setOpacity(0);
    cpass.setOpacity(0);
    ButtonSkin users = new ButtonSkin(login);
    users.getChildren().add(0, cuser);
    login.setSkin(users);
    ButtonSkin passs = new ButtonSkin(hify);
    passs.getChildren().add(0, cpass);
    hify.setSkin(passs);
    login.setOnMousePressed(
        new EventHandler<MouseEvent>() {
          @Override
          public void handle(MouseEvent event) {
            // .println("pressed");
            cuser.setOpacity(0.5);
            cuser.setRadius(10);
            cuser.setCenterX(event.getX());
            cuser.setCenterY(event.getY());
            Rectangle r = new Rectangle();
            r.setArcHeight(
                login.getBackground().getFills().get(0).getRadii().getTopLeftVerticalRadius());
            r.setArcWidth(
                login.getBackground().getFills().get(0).getRadii().getTopLeftHorizontalRadius());
            // .println(login.getPrefWidth()+"  "+login.getPrefHeight());
            r.setWidth(login.getPrefWidth());
            r.setHeight(login.getPrefHeight());
            cuser.setClip(r);
            Timeline tl = new Timeline();
            KeyValue kv =
                new KeyValue(
                    cuser.radiusProperty(), 1.5 * login.getPrefWidth(), Interpolator.EASE_OUT);
            KeyFrame kf = new KeyFrame(Duration.millis(1500), kv);
            tl.getKeyFrames().clear();
            tl.getKeyFrames().add(kf);
            tl.play();
            await.countDown();
          }
        });
    login.setOnMouseReleased(
        new EventHandler<MouseEvent>() {
          @Override
          public void handle(MouseEvent event) {
            try {
              await.await();
            } catch (InterruptedException e) {
              // TODO Auto-generated catch block
              e.printStackTrace();
            }

            awaitu.countDown();
            FadeTransition fd = new FadeTransition(Duration.millis(1500), cuser);
            fd.setFromValue(0.5);
            fd.setToValue(0);
            fd.setInterpolator(Interpolator.EASE_OUT);
            fd.play();
          }
        });
    hify.setOnMousePressed(
        new EventHandler<MouseEvent>() {
          @Override
          public void handle(MouseEvent event) {
            // .println("pressed");
            cpass.setOpacity(0.5);
            cpass.setRadius(10);
            cpass.setCenterX(event.getX());
            cpass.setCenterY(event.getY());
            Rectangle r = new Rectangle();
            r.setArcHeight(
                hify.getBackground().getFills().get(0).getRadii().getTopLeftVerticalRadius());
            r.setArcWidth(
                hify.getBackground().getFills().get(0).getRadii().getTopLeftHorizontalRadius());
            r.setWidth(hify.getPrefWidth());
            r.setHeight(hify.getPrefHeight());
            cpass.setClip(r);
            Timeline tl = new Timeline();
            KeyValue kv =
                new KeyValue(
                    cpass.radiusProperty(), 1.5 * hify.getPrefWidth(), Interpolator.EASE_OUT);
            KeyFrame kf = new KeyFrame(Duration.millis(1500), kv);
            tl.getKeyFrames().clear();
            tl.getKeyFrames().add(kf);
            tl.play();
            awaitp.countDown();
          }
        });
    hify.setOnMouseReleased(
        new EventHandler<MouseEvent>() {
          @Override
          public void handle(MouseEvent event) {
            try {
              awaitp.await();
            } catch (InterruptedException e) {
              // TODO Auto-generated catch block
              e.printStackTrace();
            }
            awaitpa.countDown();
            FadeTransition fd = new FadeTransition(Duration.millis(1500), cpass);
            fd.setFromValue(0.5);
            fd.setToValue(0);
            fd.setInterpolator(Interpolator.EASE_OUT);
            fd.play();
          }
        });
    user.focusedProperty()
        .addListener(
            new ChangeListener<Boolean>() {
              @Override
              public void changed(
                  ObservableValue<? extends Boolean> observable,
                  Boolean oldValue,
                  Boolean newValue) {
                if (newValue) {
                  TranslateTransition fd = new TranslateTransition(Duration.millis(500), userlabel);
                  FadeTransition ff = new FadeTransition(Duration.millis(500), userlabel);
                  fd.setInterpolator(Interpolator.EASE_BOTH);
                  ff.setInterpolator(Interpolator.EASE_BOTH);
                  ff.setToValue(1.0);
                  ff.setFromValue(0.0);
                  fd.setByY(-3);
                  ParallelTransition pt = new ParallelTransition();
                  pt.getChildren().addAll(fd, ff);
                  pt.play();

                } else {
                  userlabel.setTranslateY(3);
                  userlabel.setOpacity(0);
                }
              }
            });
    pass.focusedProperty()
        .addListener(
            new ChangeListener<Boolean>() {

              @Override
              public void changed(
                  ObservableValue<? extends Boolean> observable,
                  Boolean oldValue,
                  Boolean newValue) {
                if (newValue) {
                  TranslateTransition fd = new TranslateTransition(Duration.millis(500), passlabel);
                  FadeTransition ff = new FadeTransition(Duration.millis(500), passlabel);
                  fd.setInterpolator(Interpolator.EASE_BOTH);
                  ff.setInterpolator(Interpolator.EASE_BOTH);
                  ff.setToValue(1.0);
                  ff.setFromValue(0.0);
                  fd.setByY(-3);
                  ParallelTransition pt = new ParallelTransition();
                  pt.getChildren().addAll(fd, ff);
                  pt.play();

                } else {
                  passlabel.setTranslateY(3);
                  passlabel.setOpacity(0);
                }
              }
            });
    p1.setEffect(new DropShadow());
  }