Skip to content

Commit

Permalink
Navigator concept
Browse files Browse the repository at this point in the history
  • Loading branch information
mykola-dev committed Mar 15, 2016
1 parent 2da3153 commit 79e66df
Show file tree
Hide file tree
Showing 9 changed files with 73 additions and 60 deletions.
@@ -0,0 +1,53 @@
package cz.kinst.jakub.viewmodelbinding;

import android.os.Bundle;

public class Navigator<T extends ViewInterface> {

private Bundle params;
private Class<T> cls;
private int id;
private Object extraData;

public Navigator(Class<T> cls, Bundle params, int id, Object extraData) {
this.cls = cls;
this.params = params;
this.id = id;
this.extraData = extraData;
}

public Navigator(Class<T> cls, Bundle params) {
this(cls, params, 0, null);
}

public Navigator(Class<T> cls) {
this(cls, null, 0, null);
}


public Bundle getParams() {
return params;
}

public Class<T> getCls() {
return cls;
}

public int getId() {
return id;
}

public Object getExtraData() {
return extraData;
}

public Navigator<T> with(Bundle params) {
this.params = params;
return this;
}

public static <T extends ViewInterface> Navigator<T> to(Class<T> cls) {
return new Navigator<>(cls);
}

}
Expand Up @@ -19,5 +19,5 @@ public interface ViewInterface<T extends ViewDataBinding> {
Activity getActivity();
Bundle getBundle();
ViewModelBindingConfig getViewModelBindingConfig();
void navigate(int way, Bundle params);
void navigate(Navigator<? extends ViewInterface> n);
}
Expand Up @@ -51,8 +51,7 @@ public Bundle getBundle() {
}

@Override
public void navigate(int way, Bundle params) {

public void navigate(Navigator n) {
}

@Override
Expand Down
Expand Up @@ -65,7 +65,7 @@ public Bundle getBundle() {
}

@Override
public void navigate(int way, Bundle params) {
public void navigate(Navigator n) {
}

@Override
Expand Down
Expand Up @@ -65,7 +65,7 @@ public Bundle getBundle() {
}

@Override
public void navigate(int way, Bundle params) {
public void navigate(Navigator n) {
}

@Override
Expand Down
@@ -1,12 +1,11 @@
package cz.kinst.jakub.sample.viewmodelbinding;


import android.os.Bundle;
import android.widget.Toast;
import android.support.v4.app.DialogFragment;
import android.support.v4.app.Fragment;

import cz.kinst.jakub.sample.viewmodelbinding.databinding.ActivityMainBinding;
import cz.kinst.jakub.viewmodelbinding.ViewModelActivity;
import cz.kinst.jakub.viewmodelbinding.ViewModelBindingConfig;
import cz.kinst.jakub.viewmodelbinding.*;


/**
Expand All @@ -20,17 +19,11 @@ public ViewModelBindingConfig getViewModelBindingConfig() {
}

@Override
public void navigate(int way, Bundle params) {
super.navigate(way, params);
if (way == MainViewModel.WAY_DIALOG) {
SampleDialogFragment dialog = SampleDialogFragment.newInstance();
dialog.setListener(new SampleDialogViewModel.SampleDialogListener() {
@Override
public void onButtonClicked() {
Toast.makeText(getContext(), "Button in dialog clicked", Toast.LENGTH_SHORT).show();
}
});
dialog.show(getSupportFragmentManager(), "sample");
public void navigate(Navigator n) {
switch (n.getId()) { // decide where to go
default:
DialogFragment dialog = (DialogFragment) Fragment.instantiate(this, n.getCls().getName(), n.getParams());
dialog.show(getSupportFragmentManager(), "sample");
}
}
}
Expand Up @@ -4,6 +4,7 @@
import android.view.View;

import cz.kinst.jakub.sample.viewmodelbinding.databinding.ActivityMainBinding;
import cz.kinst.jakub.viewmodelbinding.Navigator;
import cz.kinst.jakub.viewmodelbinding.ViewModel;


Expand Down Expand Up @@ -36,7 +37,7 @@ public void onClickGreetButton(View v) {


public void onClickedShowDialogFragmentButton(View v) {
getView().navigate(WAY_DIALOG, null);
getView().navigate(Navigator.to(SampleDialogFragment.class));
}


Expand Down
@@ -1,41 +1,18 @@
package cz.kinst.jakub.sample.viewmodelbinding;

import android.os.Bundle;
import android.support.annotation.Nullable;
import android.view.View;

import cz.kinst.jakub.sample.viewmodelbinding.databinding.DialogSampleBinding;
import cz.kinst.jakub.viewmodelbinding.ViewModelBindingConfig;
import cz.kinst.jakub.viewmodelbinding.ViewModelDialogFragment;
import cz.kinst.jakub.viewmodelbinding.*;


public class SampleDialogFragment extends ViewModelDialogFragment<DialogSampleBinding, SampleDialogViewModel> {

private SampleDialogViewModel.SampleDialogListener mListener;


public static SampleDialogFragment newInstance() {
Bundle args = new Bundle();
SampleDialogFragment fragment = new SampleDialogFragment();
fragment.setArguments(args);
return fragment;
}


@Override
public ViewModelBindingConfig getViewModelBindingConfig() {
return new ViewModelBindingConfig(R.layout.dialog_sample, SampleDialogViewModel.class);
}


@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
getViewModel().setListener(mListener);
}


public void setListener(SampleDialogViewModel.SampleDialogListener listener) {
mListener = listener;
public void navigate(Navigator n) {
dismiss();
}
}
@@ -1,27 +1,17 @@
package cz.kinst.jakub.sample.viewmodelbinding;

import android.view.View;
import android.widget.Toast;

import cz.kinst.jakub.sample.viewmodelbinding.databinding.DialogSampleBinding;
import cz.kinst.jakub.viewmodelbinding.ViewModel;


public class SampleDialogViewModel extends ViewModel<DialogSampleBinding> {
SampleDialogListener mListener;


public interface SampleDialogListener {
void onButtonClicked();
}


public void onClickedButton(View v) {
if(mListener != null)
mListener.onButtonClicked();
Toast.makeText(getContext(), "Button in dialog clicked", Toast.LENGTH_SHORT).show();
getView().navigate(null);
}


public void setListener(SampleDialogListener listener) {
mListener = listener;
}
}

0 comments on commit 79e66df

Please sign in to comment.