Newer
Older
CosmosClient / app / src / main / java / com / example / cosmosclient / views / CreateGroupActivity.java
package com.example.cosmosclient.views;

import android.content.Intent;
import android.os.Handler;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

import com.example.cosmosclient.R;
import com.example.cosmosclient.app.Cosmos;
import com.example.cosmosclient.entities.CreateGroupResponse;
import com.example.cosmosclient.entities.Group;
import com.example.cosmosclient.resources.GroupsRest;

import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
import retrofit2.Retrofit;
import retrofit2.converter.jackson.JacksonConverterFactory;

public class CreateGroupActivity extends AppCompatActivity {
    private Button createGroupButton;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_make_group);

        //各種IDを取得
        final EditText groupNameText = findViewById(R.id.groupNameText);
        createGroupButton = findViewById(R.id.createGroupButton);
        final String uId,token;

        //ボタン有効化&監視
        createGroupButton.setEnabled(false);
        createGroupButton.setBackgroundColor(0xaa808080);
        groupNameText.addTextChangedListener(new CreateGroupActivity.GenericTextWatcher(groupNameText));

        //グループ作成に必要な情報の取得
        Cosmos app = (Cosmos) getApplication();
        uId = app.getuId();
        token = app.getToken();

        //retrofitの処理
        final Retrofit retrofit = new Retrofit.Builder()
                .baseUrl("http://nitta-lab-www.is.konan-u.ac.jp/cosmos/")
                .addConverterFactory(JacksonConverterFactory.create())
                .build();
        //interfaceから実装を取得
        final GroupsRest createGroupService = retrofit.create(GroupsRest.class);

        //グループ作成ボタン処理
        createGroupButton.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View view){
                //ボタン連打防止
                createGroupButton.setEnabled(false);
                createGroupButton.setBackgroundColor(0xaa808080);
                new Handler().postDelayed(new Runnable() {
                    public void run() {
                        createGroupButton.setEnabled(true);
                        createGroupButton.setBackgroundColor(0xaa009688);
                    }
                }, 1000L);

                Call<CreateGroupResponse> createGroup = createGroupService.createGroup(groupNameText.getText().toString(), uId, token);

                createGroup.enqueue(new Callback<CreateGroupResponse>() {
                    @Override
                    public void onResponse(Call<CreateGroupResponse> call, Response<CreateGroupResponse> response) {
                        if (response.isSuccessful()) {
                            //成功時
                            CreateGroupResponse result = response.body();
                            Group g = new Group(result.gId,result.uri,groupNameText.getText().toString(),uId);

                            //app/CosmosにgIdを保存
                            Cosmos app = (Cosmos)getApplication();
                            app.setCurrentGroup(g);

                            Intent intent = new Intent(getApplication(), RequestListActivity.class);
                            startActivity(intent);
                            Toast.makeText(CreateGroupActivity.this,
                                    "グループを作成しました", Toast.LENGTH_SHORT).show();
                            finish();
                        } else {
                            //onFailureでキャッチできない用のエラー
                            System.out.println("");
                            Toast.makeText(CreateGroupActivity.this,
                                    "通信エラー",Toast.LENGTH_SHORT).show();
                        }
                    }

                    @Override
                    public void onFailure(Call<CreateGroupResponse> call, Throwable t) {
                        //失敗時
                        t.printStackTrace();
                        Toast.makeText(CreateGroupActivity.this,
                                "グループ作成失敗",Toast.LENGTH_SHORT).show();
                    }
                });
            }
        });
    }
    //テキスト欄監視
    private class GenericTextWatcher implements TextWatcher {
        private View view;

        private GenericTextWatcher(View view){
            this.view = view;
        }

        @Override
        public  void beforeTextChanged(CharSequence s, int start, int count,int after){/*記述不要*/};
        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count){/*記述不要*/};

        @Override
        public void afterTextChanged(Editable s){
            //ボタン有効&無効
            if(s.length()>0){
                createGroupButton.setEnabled(true);
                createGroupButton.setBackgroundColor(0xaa009688);
            }else{
                createGroupButton.setEnabled(false);
                createGroupButton.setBackgroundColor(0xaa808080);
            }
        }
    }
}