// Path: realm-browser/src/main/java/de/jonasrottmann/realmbrowser/files/FilesContract.java
// @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
// public interface FilesContract {
// 
//     interface View extends BaseView<Presenter> {
//         void updateWithFiles(@NonNull ArrayList<FilesPojo> filesList);
// 
//         Context getViewContext();
// 
//         void showToast(String message);
//     }
// 
//     interface Presenter extends BasePresenter<View> {
//         void requestForContentUpdate(@NonNull Context context);
// 
//         void onFileSelected(FilesPojo item);
// 
//         void updateWithFiles(ArrayList<FilesPojo> filesList);
//     }
// 
// 
//     interface Interactor extends BaseInteractor {
//         void requestForContentUpdate(@NonNull Context context);
//     }
// }
// 
// Path: realm-browser/src/main/java/de/jonasrottmann/realmbrowser/files/FilesPresenter.java
// @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
// public class FilesPresenter extends BasePresenterImpl<FilesContract.View> implements FilesContract.Presenter {
// 
//     private final FilesInteractor interactor;
// 
//     public FilesPresenter() {
//         this.interactor = new FilesInteractor(this);
//     }
// 
//     @Override
//     public void attachView(@NonNull FilesContract.View view) {
//         super.attachView(view);
//     }
// 
//     @Override
//     public void requestForContentUpdate(@NonNull Context context) {
//         interactor.requestForContentUpdate(context);
//     }
// 
//     @Override
//     public void onFileSelected(FilesPojo item) {
//         try {
//             RealmConfiguration config = new RealmConfiguration.Builder().name(item.getName()).build();
//             DataHolder.getInstance().save(DataHolder.DATA_HOLDER_KEY_CONFIG, config);
//             Realm realm = Realm.getInstance(config);
//             realm.close();
//             if (isViewAttached()) {
//                 //noinspection ConstantConditions
//                 getView().getViewContext().startActivity(ModelsActivity.getIntent(getView().getViewContext()));
//             }
//         } catch (RealmMigrationNeededException e) {
//             if (isViewAttached()) {
//                 //noinspection ConstantConditions
//                 getView().showToast(String.format("%s %s", getView().getViewContext().getString(R.string.realm_browser_open_error), getView().getViewContext().getString(R.string.realm_browser_error_migration)));
//             }
//         } catch (RealmFileException e) {
//             if (isViewAttached()) {
//                 //noinspection ConstantConditions
//                 getView().showToast(String.format("%s %s", getView().getViewContext().getString(R.string.realm_browser_open_error), e.getMessage()));
//             }
//         } catch (Exception e) {
//             if (isViewAttached()) {
//                 //noinspection ConstantConditions
//                 getView().showToast(String.format("%s %s", getView().getViewContext().getString(R.string.realm_browser_open_error), getView().getViewContext().getString(R.string.realm_browser_error_openinstances)));
//             }
//         }
//     }
// 
//     @Override
//     public void updateWithFiles(ArrayList<FilesPojo> filesList) {
//         if (isViewAttached()) {
//             //noinspection ConstantConditions
//             getView().updateWithFiles(filesList);
//         }
//     }
// }
// 
// Path: realm-browser/src/main/java/de/jonasrottmann/realmbrowser/files/model/FilesPojo.java
// @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
// public class FilesPojo {
//     private final String name;
//     private final String size;
//     private final long sizeInByte;
// 
//     public FilesPojo(String name, String size, long sizeInByte) {
//         this.name = name;
//         this.size = size;
//         this.sizeInByte = sizeInByte;
//     }
// 
//     public String getName() {
//         return name;
//     }
// 
//     public String getSize() {
//         return size;
//     }
// 
//     public long getSizeInByte() {
//         return sizeInByte;
//     }
// }


import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.annotation.RestrictTo;
import android.support.v4.widget.SwipeRefreshLayout;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.Toolbar;
import android.widget.Toast;
import java.util.ArrayList;
import de.jonasrottmann.realmbrowser.R;
import de.jonasrottmann.realmbrowser.files.FilesContract;
import de.jonasrottmann.realmbrowser.files.FilesPresenter;
import de.jonasrottmann.realmbrowser.files.model.FilesPojo;
    }

    @Override
    public Object onRetainCustomNonConfigurationInstance() {
        return presenter;
    }

    @Override
    public void showToast(@Nullable String message) {
        Toast.makeText(this, message, Toast.LENGTH_SHORT).show();
    }

    @Override
    public void attachPresenter(@Nullable FilesContract.Presenter presenter) {
        this.presenter = presenter;
        if (this.presenter == null) {
            this.presenter = new FilesPresenter();
        }
        this.presenter.attachView(this);
    }

    @Override
    public void updateWithFiles(@NonNull ArrayList<FilesPojo> filesList) {
        adapter.swapList(filesList);
        if (filesList.size() == 0) {
            // TODO show empty list placeholder
        }
    }

    @Override
// Path: realm-browser/src/main/java/de/jonasrottmann/realmbrowser/files/FilesContract.java
// @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
// public interface FilesContract {
// 
//     interface View extends BaseView<Presenter> {
//         void updateWithFiles(@NonNull ArrayList<FilesPojo> filesList);
// 
//         Context getViewContext();
// 
//         void showToast(String message);
//     }
// 
//     interface Presenter extends BasePresenter<View> {
//         void requestForContentUpdate(@NonNull Context context);
// 
//         void onFileSelected(FilesPojo item);
// 
//         void updateWithFiles(ArrayList<FilesPojo> filesList);
//     }
// 
// 
//     interface Interactor extends BaseInteractor {
//         void requestForContentUpdate(@NonNull Context context);
//     }
// }
// 
// Path: realm-browser/src/main/java/de/jonasrottmann/realmbrowser/files/FilesPresenter.java
// @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
// public class FilesPresenter extends BasePresenterImpl<FilesContract.View> implements FilesContract.Presenter {
// 
//     private final FilesInteractor interactor;
// 
//     public FilesPresenter() {
//         this.interactor = new FilesInteractor(this);
//     }
// 
//     @Override
//     public void attachView(@NonNull FilesContract.View view) {
//         super.attachView(view);
//     }
// 
//     @Override
//     public void requestForContentUpdate(@NonNull Context context) {
//         interactor.requestForContentUpdate(context);
//     }
// 
//     @Override
//     public void onFileSelected(FilesPojo item) {
//         try {
//             RealmConfiguration config = new RealmConfiguration.Builder().name(item.getName()).build();
//             DataHolder.getInstance().save(DataHolder.DATA_HOLDER_KEY_CONFIG, config);
//             Realm realm = Realm.getInstance(config);
//             realm.close();
//             if (isViewAttached()) {
//                 //noinspection ConstantConditions
//                 getView().getViewContext().startActivity(ModelsActivity.getIntent(getView().getViewContext()));
//             }
//         } catch (RealmMigrationNeededException e) {
//             if (isViewAttached()) {
//                 //noinspection ConstantConditions
//                 getView().showToast(String.format("%s %s", getView().getViewContext().getString(R.string.realm_browser_open_error), getView().getViewContext().getString(R.string.realm_browser_error_migration)));
//             }
//         } catch (RealmFileException e) {
//             if (isViewAttached()) {
//                 //noinspection ConstantConditions
//                 getView().showToast(String.format("%s %s", getView().getViewContext().getString(R.string.realm_browser_open_error), e.getMessage()));
//             }
//         } catch (Exception e) {
//             if (isViewAttached()) {
//                 //noinspection ConstantConditions
//                 getView().showToast(String.format("%s %s", getView().getViewContext().getString(R.string.realm_browser_open_error), getView().getViewContext().getString(R.string.realm_browser_error_openinstances)));
//             }
//         }
//     }
// 
//     @Override
//     public void updateWithFiles(ArrayList<FilesPojo> filesList) {
//         if (isViewAttached()) {
//             //noinspection ConstantConditions
//             getView().updateWithFiles(filesList);
//         }
//     }
// }
// 
// Path: realm-browser/src/main/java/de/jonasrottmann/realmbrowser/files/model/FilesPojo.java
// @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
// public class FilesPojo {
//     private final String name;
//     private final String size;
//     private final long sizeInByte;
// 
//     public FilesPojo(String name, String size, long sizeInByte) {
//         this.name = name;
//         this.size = size;
//         this.sizeInByte = sizeInByte;
//     }
// 
//     public String getName() {
//         return name;
//     }
// 
//     public String getSize() {
//         return size;
//     }
// 
//     public long getSizeInByte() {
//         return sizeInByte;
//     }
// }


// Path: realm-browser/src/main/java/de/jonasrottmann/realmbrowser/files/view/FilesActivity.java
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.annotation.RestrictTo;
import android.support.v4.widget.SwipeRefreshLayout;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.Toolbar;
import android.widget.Toast;
import java.util.ArrayList;
import de.jonasrottmann.realmbrowser.R;
import de.jonasrottmann.realmbrowser.files.FilesContract;
import de.jonasrottmann.realmbrowser.files.FilesPresenter;
import de.jonasrottmann.realmbrowser.files.model.FilesPojo;

    }

    @Override
    public Object onRetainCustomNonConfigurationInstance() {
        return presenter;
    }

    @Override
    public void showToast(@Nullable String message) {
        Toast.makeText(this, message, Toast.LENGTH_SHORT).show();
    }

    @Override
    public void attachPresenter(@Nullable FilesContract.Presenter presenter) {
        this.presenter = presenter;
        if (this.presenter == null) {
            this.presenter = new FilesPresenter();
        }
        this.presenter.attachView(this);
    }

    @Override
    public void updateWithFiles(@NonNull ArrayList<FilesPojo> filesList) {
        adapter.swapList(filesList);
        if (filesList.size() == 0) {
            // TODO show empty list placeholder
        }
    }

    @Override
    public Context getViewContext() {