package org.solovyev.android.calculator.plot;
import android.os.Bundle;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.support.v4.content.ContextCompat;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Toast;
import org.solovyev.android.calculator.AppComponent;
import org.solovyev.android.calculator.BaseActivity;
import org.solovyev.android.calculator.BaseFragment;
import org.solovyev.android.calculator.R;
import org.solovyev.android.plotter.Dimensions;
import org.solovyev.android.plotter.PlotData;
import org.solovyev.android.plotter.PlotViewFrame;
import org.solovyev.android.plotter.Plotter;
import javax.annotation.Nonnull;
import javax.inject.Inject;
import butterknife.Bind;
import butterknife.ButterKnife;
public class PlotActivity extends BaseActivity {
public static final int POINTS_COUNT = 100;
public static class MyFragment extends BaseFragment implements PlotViewFrame.Listener {
@Inject
Plotter plotter;
@Bind(R.id.plot_view_frame)
PlotViewFrame plotView;
public MyFragment() {
super(R.layout.fragment_plot);
}
@Override
protected void inject(@Nonnull AppComponent component) {
super.inject(component);
component.inject(this);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
final View view = super.onCreateView(inflater, container, savedInstanceState);
ButterKnife.bind(this, view);
final PlotData pd = plotter.getPlotData();
pd.axisStyle.backgroundColor = ContextCompat.getColor(getActivity(), R.color.cpp_bg);
plotter.setAxisStyle(pd.axisStyle);
plotView.addControlView(R.id.plot_add_function);
plotView.addControlView(R.id.plot_functions);
plotView.addControlView(R.id.plot_dimensions);
plotView.setPlotter(plotter);
plotView.setListener(this);
return view;
}
@Override
public void onPause() {
plotView.onPause();
super.onPause();
}
@Override
public void onResume() {
super.onResume();
plotView.onResume();
}
@Override
public boolean onButtonPressed(int id) {
if (id == R.id.plot_dimensions) {
final Dimensions dimensions = plotter.getDimensions();
PlotDimensionsFragment.show(dimensions.graph.makeBounds(), plotter.is3d(),
getActivity().getSupportFragmentManager());
return true;
} else if (id == R.id.plot_functions) {
PlotFunctionsFragment.show(getActivity().getSupportFragmentManager());
return true;
} else if (id == R.id.plot_add_function) {
PlotEditFunctionFragment.show(null, getActivity().getSupportFragmentManager());
return true;
}
return false;
}
@Override
public void unableToZoom(boolean in) {
Toast.makeText(getActivity(), "Can't zoom anymore", Toast.LENGTH_SHORT).show();
}
}
public PlotActivity() {
super(R.layout.activity_empty, R.string.c_plot);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (savedInstanceState == null) {
final FragmentManager fm = getSupportFragmentManager();
final FragmentTransaction t = fm.beginTransaction();
t.add(R.id.main, new MyFragment(), "plotter");
t.commit();
}
}
}