package application.fragment;

import java.util.Map;

import application.annotation.AnnotationHandler;
import application.annotation.Mode;
import application.annotation.ThreadMode;
import application.dialog.DialogHelper;
import application.util.Gits;
import application.util.Gits.Callback;
import application.util.L;
import javafx.scene.Parent;
import javafx.scene.control.Button;
import javafx.scene.control.ProgressIndicator;

public class DeployFragment extends Fragment {
	private Button btn_deploy;
	private ProgressIndicator progressbar;

	@Override
	public void onCreate(Map<String, String> bundle) {

	}

	@Override
	public void onDestroy() {

	}

	@Override
	public String getLayout() {
		return "fragment_deploy";
	}

	@Override
	public void initData(Parent node, Map<String, String> bundle) {
		btn_deploy = (Button) node.lookup("#btn_deploy");
		progressbar = (ProgressIndicator) node.lookup("#progressbar");

		btn_deploy.setOnAction(e->{
			progressbar.isIndeterminate();// һ �������ʾ�����ڷ�ȷ��ģʽ,����progressbar����һ���ֵ�и�Сbug�����¡�
			progressbar.setVisible(true);
			progressbar.setProgress(-1f);
			progressbar.setProgress(0.5f);
			progressbar.setProgress(-1f);
			btn_deploy.setDisable(true);// �����ظ���

			AnnotationHandler.sendMessage("work",null);
		});

		AnnotationHandler.register(this);

	}

	@ThreadMode(mode = Mode.ASYNC,tag = "work")
	public void deploy(String param){
		// do work
		Gits.push(new Callback() {

			@Override
			public void success() {
				L.D("�����ɹ�!");
				AnnotationHandler.sendMessage("done",null);
			}

			@Override
			public void error(Exception e) {
				L.D("����ʧ��!");
				e.printStackTrace();
				AnnotationHandler.sendMessage("error",e.getMessage());
			}
		});

	}

	@ThreadMode(mode = Mode.MAIN,tag = "done")
	public void deploySuccess(String param){
		progressbar.setProgress(1f);// ���
		btn_deploy.setDisable(false);
	}

	@ThreadMode(mode = Mode.MAIN,tag = "error")
	public void deployError(String param){
		progressbar.setVisible(false);
		btn_deploy.setDisable(false);
		DialogHelper.alert("Error", "����ʧ�ܣ� " + param);
	}
}