/* package whatever; // don't place package name! */

import java.util.*;
import java.lang.*;
import java.io.*;

/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
	public interface MvpPresenter {
    	public void attachView(OfferDetailsView mvpView);
	}
	
	public interface OfferDetailsView {
		public void showProgress();
		public void hideProgress();
	}
	
	public interface OfferDetailsPresenter extends MvpPresenter {
		public void downloadToAppDir(boolean isDownloadToAppCacheDir);
		public void onClickScreen(boolean isVisibleTopContainer);
	}
	
	public interface OfferDetailsPdfMvp {
		interface View extends OfferDetailsView {
			public void openLocalPdfFile (File file, int pageNumber);
		}
		interface Presenter extends OfferDetailsPresenter {
			public void onPageScrolled(int page, int pageCount);
		}
	}
	
	public static abstract class BaseOfferDetailsPresenter<T extends OfferDetailsView> implements MvpPresenter {
		protected T view;
		public T getView() {
			return view;
		}
	}
	
	public static class OfferDetailsPdfPresenterImpl extends BaseOfferDetailsPresenter<OfferDetailsPdfMvp.View> {
		public OfferDetailsPdfPresenterImpl(OfferDetailsPdfMvp.View view) {this.view = view; }
		public void attachView(OfferDetailsView mvpView) { }
		public void viewIsReady() {
			getView().showProgress();
			// but here has cast
			getView().openLocalPdfFile(null, 1);
		}
		public void downloadToAppDir(boolean isDownloadToAppCacheDir) {}
		public void onClickScreen(boolean isVisibleTopContainer) {}
	}
	
	public static void main (String[] args) throws java.lang.Exception
	{
		new OfferDetailsPdfPresenterImpl(new OfferDetailsPdfMvp.View(){
			public void showProgress(){}
			public void hideProgress(){}
			public void openLocalPdfFile (File file, int pageNumber) {}
			}).viewIsReady();
	}
}