/*************************************************************************************
* Product: SFAndroid (Sales Force Mobile) *
* This program is free software; you can redistribute it and/or modify it *
* under the terms version 2 of the GNU General Public License as published *
* by the Free Software Foundation. This program is distributed in the hope *
* that it will be useful, but WITHOUT ANY WARRANTY; without even the implied *
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *
* See the GNU General Public License for more details. *
* You should have received a copy of the GNU General Public License along *
* with this program; if not, write to the Free Software Foundation, Inc., *
* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. *
* For the text or an alternative of this public license, you may reach us *
* Copyright (C) 2012-2013 E.R.P. Consultores y Asociados, S.A. All Rights Reserved. *
* Contributor(s): Carlos Parada www.erpcya.com *
*************************************************************************************/
package org.spinsuite.util;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import org.spinsuite.base.R;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.Context;
import android.os.Bundle;
import android.support.v4.app.DialogFragment;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.ProgressBar;
public class SFAAsyncTask{
/**
* *** Constructor ***
* @author <a href="mailto:carlosaparadam@gmail.com">Carlos Parada</a> 05/03/2014, 23:53:03
*/
public SFAAsyncTask(Context p_ctx, int p_pbType) {
// TODO Auto-generated constructor stub
/*SFAAsyncTaskDF df = new SFAAsyncTaskDF(p_pbType, m_ProgressBar);
df.show(((FragmentActivity)p_ctx).getSupportFragmentManager(), "");*/
m_ctx = p_ctx;
}
/**
*
* *** Constructor ***
* @author <a href="mailto:carlosaparadam@gmail.com">Carlos Parada</a> 06/03/2014, 23:03:38
*/
public SFAAsyncTask() {
// TODO Auto-generated constructor stub
}
/**
* Run Method
* @author <a href="mailto:carlosaparadam@gmail.com">Carlos Parada</a> 05/03/2014, 22:39:48
* @param p_Class
* @param p_Method
* @param p_Params
* @return void
*/
public void run(Object p_Object,String p_Method,Object[] p_Params){
m_Call = new SFACallable<Object>(m_ctx,p_Object, p_Method, p_Params);
m_FutureTask = new SFAFutureTask<Object>(m_Call);
ExecutorService executor = Executors.newFixedThreadPool(1);
executor.execute(m_FutureTask);
}
/**
* get Result From Method invoked
* @author <a href="mailto:carlosaparadam@gmail.com">Carlos Parada</a> 05/03/2014, 22:50:20
* @return
* @throws InterruptedException
* @throws ExecutionException
* @return Object
*/
public Object getResult() throws InterruptedException, ExecutionException{
if (m_FutureTask != null)
return m_FutureTask.get();
return null;
}
/**
* Cancel Task
* @author <a href="mailto:carlosaparadam@gmail.com">Carlos Parada</a> 05/03/2014, 22:55:57
* @param p_mayInterruptIfRunning
* @return void
*/
public void cancelTask(boolean p_mayInterruptIfRunning){
if (m_FutureTask != null)
m_FutureTask.cancel(p_mayInterruptIfRunning);
}
/**
* Is Cancelled Task
* @author <a href="mailto:carlosaparadam@gmail.com">Carlos Parada</a> 05/03/2014, 23:09:49
* @return
* @return boolean
*/
public boolean isCancel(){
if (m_FutureTask != null)
return m_FutureTask.isCancelled();
return false;
}
/**
* Is Done Task
* @author <a href="mailto:carlosaparadam@gmail.com">Carlos Parada</a> 05/03/2014, 23:10:46
* @return
* @return boolean
*/
public boolean isDone(){
if (m_FutureTask != null)
return m_FutureTask.isDone();
return false;
}
/**
* Create Progress Bar
* @author <a href="mailto:carlosapardam@gmail.com">Carlos Parada</a> 05/03/2014, 23:02:20
* @return void
*/
public void createProgressBar(){
if (m_ProgressBar== null)
m_ProgressBar = new ProgressBar(m_ctx);
}
/**
* Create Progress Bar
* @author <a href="mailto:carlosaparadam@gmail.com">Carlos Parada</a> 05/03/2014, 23:05:20
* @param p_attrs
* @return void
*/
public void createProgressBar(AttributeSet p_attrs){
if (m_ProgressBar== null)
m_ProgressBar = new ProgressBar(m_ctx, p_attrs);
}
/**
* Create Progress Bar
* @author <a href="mailto:carlsaparadam@gmail.com">Carlos Parada</a> 05/03/2014, 23:07:10
* @param p_attrs
* @param p_DefStyle
* @return void
*/
public void createProgressBar(AttributeSet p_attrs, int p_DefStyle){
if (m_ProgressBar== null)
m_ProgressBar = new ProgressBar(m_ctx, p_attrs, p_DefStyle);
}
/**
* Set Max to Progress Bar
* @author <a href="mailto:carlosaparadam@gmail.com">Carlos Parada</a> 05/03/2014, 23:20:13
* @param p_Max
* @return void
*/
public void setMaxBar(int p_Max){
if (m_ProgressBar!= null)
m_ProgressBar.setMax(p_Max);
}
/**
* Set Progress
* @author <a href="mailto:carlosaparadam@gmail.com">Carlos Parada</a> 05/03/2014, 23:19:49
* @param p_Progress
* @return void
*/
public void setProgressBar(int p_Progress){
if (m_ProgressBar!= null)
m_ProgressBar.setProgress(p_Progress);
}
/** Progress Bar*/
private ProgressBar m_ProgressBar;
/** Context */
private Context m_ctx;
/** Callable */
private SFACallable<Object> m_Call ;
/** SFA Future Task*/
private SFAFutureTask<Object> m_FutureTask ;
/** Executor */
private SFAExecutor m_Executor= new SFAExecutor();
/** Progress Bar Types*/
public static int progressBarCircleLarge = R.id.pb_High;
public static int progressBarCircleMedium = R.id.pb_Medium;
public static int progressBarCircleShort = R.id.pb_Short;
public static int progressBarLine = R.id.pb_Large;
}
class SFAAsyncTaskDF extends DialogFragment{
public SFAAsyncTaskDF(int p_pbType,ProgressBar p_ProgressBar) {
// TODO Auto-generated constructor stub
m_pbType = p_pbType;
m_ProgressBar = p_ProgressBar;
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState){
// TODO Auto-generated method stub
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
LayoutInflater inflater = getActivity().getLayoutInflater();
View view =inflater.inflate(R.layout.v_progressbar, null);
//Create Progress Bar Types
m_pbCircleLarge = (ProgressBar) view.findViewById(SFAAsyncTask.progressBarCircleLarge);
m_pbCircleMedium= (ProgressBar) view.findViewById(SFAAsyncTask.progressBarCircleMedium);
m_pbCircleShort = (ProgressBar) view.findViewById(SFAAsyncTask.progressBarCircleShort);
m_pbLine = (ProgressBar) view.findViewById(SFAAsyncTask.progressBarLine);
//Show ProgressBar Type
m_pbCircleLarge.setVisibility((m_pbType == SFAAsyncTask.progressBarCircleLarge ? ProgressBar.VISIBLE: ProgressBar.GONE ));
m_pbCircleMedium.setVisibility((m_pbType == SFAAsyncTask.progressBarCircleMedium ? ProgressBar.VISIBLE: ProgressBar.GONE ));
m_pbCircleShort.setVisibility((m_pbType == SFAAsyncTask.progressBarCircleShort ? ProgressBar.VISIBLE: ProgressBar.GONE ));
m_pbLine.setVisibility((m_pbType == SFAAsyncTask.progressBarLine ? ProgressBar.VISIBLE: ProgressBar.GONE ));
m_ProgressBar = (m_pbType == SFAAsyncTask.progressBarCircleLarge ? m_pbCircleLarge :
(m_pbType == SFAAsyncTask.progressBarCircleMedium ? m_pbCircleMedium :
(m_pbType == SFAAsyncTask.progressBarCircleShort ? m_pbCircleShort : m_pbLine
)
)
);
builder.setView(view);
return builder.create();
}
/** Progress Bar Objects*/
private ProgressBar m_pbCircleLarge ;
private ProgressBar m_pbCircleMedium ;
private ProgressBar m_pbCircleShort ;
private ProgressBar m_pbLine ;
/** Progress Bar Type */
private int m_pbType =0;
/** Progress Bar*/
private ProgressBar m_ProgressBar;
}