- 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/rest/")
- .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);
- }
- }
- }
- }