Android Open Source - andro_auto_framework Listener Adder






From Project

Back to project page andro_auto_framework.

License

The source code is released under:

Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCT...

If you think the Android project andro_auto_framework listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package org.imaginea.botbot;
/*from ww w  .  j  av  a 2 s  . c om*/
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.HashSet;
import java.util.Set;

import org.imaginea.botbot.OnClickListenerTest;

import android.content.Context;
import android.text.InputType;
import android.util.Log;
import android.view.*;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.Spinner;
import android.widget.TextView;

public class ListenerAdder {
  static Set<View> processedView = new HashSet<View>();
  private static Context context;
  public void processView(View view) {
    if (!processedView.contains(view)) {
      if(context==null){
        context=view.getContext();
        ServerProperties.setResources(context);
      }
      addListeners(view);
    }
    if (view instanceof ViewGroup) {
      int noOfChilds = ((ViewGroup) view).getChildCount();
      for (int i = 0; i < noOfChilds; i++) {
        processView(((ViewGroup) view).getChildAt(i));
      }
    }

  }
  
  //Returns whether Click Listner is added or not
  public boolean containOnClikListener(View v) {
    Object temp = null;
    Class klass = v.getClass();
    //Checking for View Class
    while (!klass.equals(View.class)) {
      klass = klass.getSuperclass();
    }    
    try {
      //Checking for mOnClickListner higher Android version do not have this field, handling NoSuchField
      Field f = klass.getDeclaredField("mOnClickListener");
      f.setAccessible(true);
      temp = f.get(v);      
    } catch (NoSuchFieldException e) {
      try {
        //Checking for method hasOnClickListners if present
        Method methodHasOnClickListner=klass.getMethod("hasOnClickListeners");
        return (Boolean)methodHasOnClickListner.invoke(v, new Object[] {});
        } catch (Exception exception) {
          System.out.println("Exception in "+exception);
        }
    }
    catch (IllegalAccessException e) {
      Log.e("Illegal Access", "Found Excpetion: " + e);
    }    
    return temp != null;
  }

  public OnItemSelectedListener containItemSelectedListener(View v) {
    Object temp = null;
    Class klass = v.getClass();

    while (!klass.equals(AdapterView.class)) {
      klass = klass.getSuperclass();
    }

    try {
      Field f = klass.getDeclaredField("mOnItemSelectedListener");
      f.setAccessible(true);
      temp = f.get(v);
    } catch (Exception e) {
      return null;
    }
    return (OnItemSelectedListener) temp;
  }
  
  public OnItemClickListener containOnItemClickListener(View v) {
    Object temp = null;
    Class klass = v.getClass();

    while (!klass.equals(AdapterView.class)) {
      klass = klass.getSuperclass();
    }

    try {
      Field f = klass.getDeclaredField("mOnItemClickListener");
      f.setAccessible(true);
      temp = f.get(v);
    } catch (Exception e) {
      return null;
    }
    return (OnItemClickListener) temp;
  }

  public void addListeners(View view) {
    boolean containsClick = containOnClikListener(view);
    if (containsClick || (view instanceof ImageView)) {
      processedView.add(view);
      return;
    } else {
      if (view instanceof Spinner) {
        int dPos = ((Spinner) view).getSelectedItemPosition();
        OnItemSelectedListener tmp = containItemSelectedListener(view);

        ((Spinner) view)
            .setOnItemSelectedListener(new OnItemSelectedListenerTest(
                tmp, dPos));
        processedView.add(view);
        return;
      } else if (AdapterView.class.isAssignableFrom(view.getClass())) {
        /*OnItemClickListener tmp = containOnItemClickListener(view);
        ((AdapterView) view)
            .setOnItemClickListener(new OnItemClickListenerTest(tmp));*/
        processedView.add(view);
        return;
      }
      System.out.println("Adding onClickListener for :"+ view.getClass().getName());
      view.setOnClickListener(new OnClickListenerTest());
      if (view instanceof EditText) {
        //((EditText) view).setInputType(InputType.TYPE_NULL);
        ((TextView) view).addTextChangedListener(new TextListner(
            (TextView) view));
        processedView.add(view);
      }
    }
  }

}




Java Source Code List

com.imaginea.botbot.server.converter.RecordEntriesConverter.java
com.imaginea.botbot.server.converter.RecordEntryConverter.java
com.imaginea.botbot.server.converter.RecordSessionConverter.java
com.imaginea.botbot.server.converter.RecordSessionsConverter.java
com.imaginea.botbot.server.converter.UriResolver.java
com.imaginea.botbot.server.jpa.RecordEntry.java
com.imaginea.botbot.server.jpa.RecordSession.java
com.imaginea.botbot.server.service.PersistenceService.java
com.imaginea.botbot.server.service.RecordEntriesResource.java
com.imaginea.botbot.server.service.RecordEntryResource.java
com.imaginea.botbot.server.service.RecordSessionResource.java
com.imaginea.botbot.server.service.RecordSessionsResource.java
com.imaginea.botbot.server.servlet.DownloadCsv.java
com.zutubi.android.junitreport.JUnitReportListener.java
com.zutubi.android.junitreport.JUnitReportTestRunner.java
com.zutubi.android.junitreport.TestKeeper.java
com.zutubi.android.junitreport.TestngReportListener.java
org.imaginea.botbot.CommandTransmitter.java
org.imaginea.botbot.Command.java
org.imaginea.botbot.Convertor.java
org.imaginea.botbot.CustomVisitor.java
org.imaginea.botbot.ListenerAdder.java
org.imaginea.botbot.OnClickListenerTest.java
org.imaginea.botbot.OnItemClickListenerTest.java
org.imaginea.botbot.OnItemSelectedListenerTest.java
org.imaginea.botbot.OnTouchListenerTest.java
org.imaginea.botbot.Recorder.java
org.imaginea.botbot.ServerProperties.java
org.imaginea.botbot.TextListner.java
org.imaginea.botbot.ViewClasses.java
org.imaginea.botbot.api.DefaultProperties.java
org.imaginea.botbot.api.IdentifyByType.java
org.imaginea.botbot.api.TestCSVReader.java
org.imaginea.botbot.api.UsefulFunctions.java
org.imaginea.botbot.common.AndroFrameworkExecutorDataDriven.java
org.imaginea.botbot.common.AndroFrameworkExecutor.java
org.imaginea.botbot.common.BaseClass.java
org.imaginea.botbot.common.BotBotTestRunner.java
org.imaginea.botbot.common.CommandExecutor.java
org.imaginea.botbot.common.Command.java
org.imaginea.botbot.common.DataDrivenTestCase.java
org.imaginea.botbot.common.Prefrences.java
org.imaginea.botbot.common.RobotiumBaseClass.java
org.imaginea.botbot.common.TestCaseGenerator.java
org.imaginea.botbot.filereader.BaseReader.java
org.imaginea.botbot.filereader.FileTypeReader.java
org.imaginea.botbot.filereader.PropertiesReader.java
org.imaginea.botbot.keywords.BaseKeywordDefinitions.java
org.imaginea.botbot.keywords.DynamicExecution.java
org.imaginea.botbot.keywords.IKeywords.java
org.imaginea.botbot.keywords.KeywordCaller.java
org.imaginea.botbot.keywords.NativeDriverKeywordDefinitions.java
org.imaginea.botbot.keywords.RobotiumKeywordDefinition.java
org.imaginea.botbot.utility.DataDrivenDataGenerator.java
org.imaginea.botbot.utility.WebViewHandler.java