package com.turhanoz.android.reactivedirectorychooser.controller;
import android.content.Context;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import com.turhanoz.android.reactivedirectorychooser.event.DataSetChangedEvent;
import com.turhanoz.android.reactivedirectorychooser.event.MakeDirectoryEvent;
import com.turhanoz.android.reactivedirectorychooser.event.UpdateDirectoryTreeEvent;
import com.turhanoz.android.reactivedirectorychooser.model.DirectoryTree;
import com.turhanoz.android.reactivedirectorychooser.operation.ListDirectoryOperation;
import com.turhanoz.android.reactivedirectorychooser.operation.MakeDirectoryOperation;
import com.turhanoz.android.reactivedirectorychooser.ui.DirectoryAdapter;
import de.greenrobot.event.EventBus;
public class DirectoryController {
EventBus bus;
DirectoryTree dataSet;
RecyclerView.Adapter adapter;
ListDirectoryOperation listDirectoryOperation;
MakeDirectoryOperation makeDirectoryOperation;
public DirectoryController(Context context, EventBus bus, RecyclerView recyclerView) {
this.bus = bus;
this.dataSet = new DirectoryTree(bus);
initOperations();
configureRecyclerView(context, recyclerView);
}
private void initOperations() {
listDirectoryOperation = new ListDirectoryOperation(dataSet, bus);
makeDirectoryOperation = new MakeDirectoryOperation(dataSet, bus);
}
private void configureRecyclerView(Context context, RecyclerView recyclerView) {
adapter = new DirectoryAdapter(dataSet.directoryList, bus);
recyclerView.setLayoutManager(new LinearLayoutManager(context));
recyclerView.setAdapter(adapter);
}
public void onEvent(UpdateDirectoryTreeEvent event) {
listDirectoryOperation.compute(event.rootDirectory);
}
public void onEvent(MakeDirectoryEvent event) {
makeDirectoryOperation.compute(event.root, event.name);
}
public void onEvent(DataSetChangedEvent event) {
adapter.notifyDataSetChanged();
}
}