Exemplo n.º 1
0
 @SuppressWarnings("ConstantConditions")
 public static void setEventListener(
     Object handler,
     ViewFinder finder,
     DoubleKeyValueMap<Object, Annotation, Method> value_annotation_method_map) {
   for (Object value : value_annotation_method_map.getFirstKeys()) {
     ConcurrentHashMap<Annotation, Method> annotation_method_map =
         value_annotation_method_map.get(value);
     for (Annotation annotation : annotation_method_map.keySet()) {
       try {
         Method method = annotation_method_map.get(annotation);
         if (annotation.annotationType().equals(OnClick.class)) {
           View view = finder.findViewById((Integer) value);
           if (view == null) break;
           view.setOnClickListener(new ViewCommonEventListener(handler, method));
         } else if (annotation.annotationType().equals(OnLongClick.class)) {
           View view = finder.findViewById((Integer) value);
           if (view == null) break;
           view.setOnLongClickListener(new ViewCommonEventListener(handler, method));
         } else if (annotation.annotationType().equals(OnFocusChange.class)) {
           View view = finder.findViewById((Integer) value);
           if (view == null) break;
           view.setOnFocusChangeListener(new ViewCommonEventListener(handler, method));
         } else if (annotation.annotationType().equals(OnKey.class)) {
           View view = finder.findViewById((Integer) value);
           if (view == null) break;
           view.setOnKeyListener(new ViewCommonEventListener(handler, method));
         } else if (annotation.annotationType().equals(OnTouch.class)) {
           View view = finder.findViewById((Integer) value);
           if (view == null) break;
           view.setOnTouchListener(new ViewCommonEventListener(handler, method));
         } else if (annotation.annotationType().equals(OnItemClick.class)) {
           View view = finder.findViewById((Integer) value);
           if (view == null) break;
           ((AdapterView<?>) view)
               .setOnItemClickListener(new ViewCommonEventListener(handler, method));
         } else if (annotation.annotationType().equals(OnItemLongClick.class)) {
           View view = finder.findViewById((Integer) value);
           if (view == null) break;
           ((AdapterView<?>) view)
               .setOnItemLongClickListener(new ViewCommonEventListener(handler, method));
         } else if (annotation.annotationType().equals(OnChildClick.class)) {
           View view = finder.findViewById((Integer) value);
           if (view == null) break;
           ((ExpandableListView) view)
               .setOnChildClickListener(new ViewCommonEventListener(handler, method));
         } else if (annotation.annotationType().equals(OnGroupClick.class)) {
           View view = finder.findViewById((Integer) value);
           if (view == null) break;
           ((ExpandableListView) view)
               .setOnGroupClickListener(new ViewCommonEventListener(handler, method));
         } else if (annotation.annotationType().equals(OnGroupCollapse.class)) {
           View view = finder.findViewById((Integer) value);
           if (view == null) break;
           ((ExpandableListView) view)
               .setOnGroupCollapseListener(new ViewCommonEventListener(handler, method));
         } else if (annotation.annotationType().equals(OnGroupExpand.class)) {
           View view = finder.findViewById((Integer) value);
           if (view == null) break;
           ((ExpandableListView) view)
               .setOnGroupExpandListener(new ViewCommonEventListener(handler, method));
         } else if (annotation.annotationType().equals(OnCheckedChange.class)) {
           View view = finder.findViewById((Integer) value);
           if (view == null) break;
           if (view instanceof RadioGroup) {
             ((RadioGroup) view)
                 .setOnCheckedChangeListener(new ViewCommonEventListener(handler, method));
           } else if (view instanceof CompoundButton) {
             ((CompoundButton) view)
                 .setOnCheckedChangeListener(new ViewCommonEventListener(handler, method));
           }
         } else if (annotation.annotationType().equals(OnPreferenceClick.class)) {
           Preference preference = finder.findPreference(value.toString());
           if (preference == null) break;
           preference.setOnPreferenceClickListener(new ViewCommonEventListener(handler, method));
         } else if (annotation.annotationType().equals(OnPreferenceChange.class)) {
           Preference preference = finder.findPreference(value.toString());
           if (preference == null) break;
           preference.setOnPreferenceChangeListener(new ViewCommonEventListener(handler, method));
         } else if (annotation.annotationType().equals(OnTabChange.class)) {
           View view = finder.findViewById((Integer) value);
           if (view == null) break;
           ((TabHost) view).setOnTabChangedListener(new ViewCommonEventListener(handler, method));
         } else if (annotation.annotationType().equals(OnScrollChanged.class)) {
           View view = finder.findViewById((Integer) value);
           if (view == null) break;
           view.getViewTreeObserver()
               .addOnScrollChangedListener(new ViewCommonEventListener(handler, method));
         } else if (annotation.annotationType().equals(OnScrollStateChanged.class)) {
           View view = finder.findViewById((Integer) value);
           if (view == null) break;
           Method method0 = null, method1 = null;
           ConcurrentHashMap<Annotation, Method> a_m_map = value_annotation_method_map.get(value);
           for (Annotation a : a_m_map.keySet()) {
             if (a.annotationType().equals(OnScrollStateChanged.class)) {
               method0 = a_m_map.get(a);
             } else if (a.annotationType().equals(OnScroll.class)) {
               method1 = a_m_map.get(a);
             }
           }
           ((AbsListView) view)
               .setOnScrollListener(new ViewCommonEventListener(handler, method0, method1));
         } else if (annotation.annotationType().equals(OnItemSelected.class)) {
           View view = finder.findViewById((Integer) value);
           if (view == null) break;
           Method method0 = null, method1 = null;
           ConcurrentHashMap<Annotation, Method> a_m_map = value_annotation_method_map.get(value);
           for (Annotation a : a_m_map.keySet()) {
             if (a.annotationType().equals(OnItemSelected.class)) {
               method0 = a_m_map.get(a);
             } else if (a.annotationType().equals(OnNothingSelected.class)) {
               method1 = a_m_map.get(a);
             }
           }
           ((AdapterView<?>) view)
               .setOnItemSelectedListener(new ViewCommonEventListener(handler, method0, method1));
         } else if (annotation.annotationType().equals(OnProgressChanged.class)) {
           View view = finder.findViewById((Integer) value);
           if (view == null) break;
           Method method0 = null, method1 = null, method2 = null;
           ConcurrentHashMap<Annotation, Method> a_m_map = value_annotation_method_map.get(value);
           for (Annotation a : a_m_map.keySet()) {
             if (a.annotationType().equals(OnProgressChanged.class)) {
               method0 = a_m_map.get(a);
             } else if (a.annotationType().equals(OnStartTrackingTouch.class)) {
               method1 = a_m_map.get(a);
             } else if (a.annotationType().equals(OnStopTrackingTouch.class)) {
               method2 = a_m_map.get(a);
             }
           }
           ((SeekBar) view)
               .setOnSeekBarChangeListener(
                   new ViewCommonEventListener(handler, method0, method1, method2));
         }
       } catch (Throwable e) {
         LogUtils.e(e.getMessage(), e);
       }
     }
   }
 }
Exemplo n.º 2
0
  @SuppressWarnings("ConstantConditions")
  public static void setAllEventListeners(
      Object handler,
      ViewFinder finder,
      DoubleKeyValueMap<ViewInjectInfo, Annotation, Method> info_annotation_method_map) {

    for (ViewInjectInfo info : info_annotation_method_map.getFirstKeys()) {
      ConcurrentHashMap<Annotation, Method> annotation_method_map =
          info_annotation_method_map.get(info);
      for (Annotation annotation : annotation_method_map.keySet()) {
        try {
          Method method = annotation_method_map.get(annotation);
          if (annotation instanceof OnClick) {
            View view = finder.findViewByInfo(info);
            if (view == null) break;
            // view.setOnClickListener(new ViewCommonEventListener(handler, method));
            ViewCommonEventListener listener = new ViewCommonEventListener(handler, method);
            setEventListener(view, "setOnClickListener", OnClickListener.class, listener);
          } else if (annotation instanceof OnLongClick) {
            View view = finder.findViewByInfo(info);
            if (view == null) break;
            // view.setOnLongClickListener(new ViewCommonEventListener(handler, method));
            ViewCommonEventListener listener = new ViewCommonEventListener(handler, method);
            setEventListener(view, "setOnLongClickListener", OnLongClickListener.class, listener);
          } else if (annotation instanceof OnFocusChange) {
            View view = finder.findViewByInfo(info);
            if (view == null) break;
            // view.setOnFocusChangeListener(new ViewCommonEventListener(handler, method));
            ViewCommonEventListener listener = new ViewCommonEventListener(handler, method);
            setEventListener(
                view, "setOnFocusChangeListener", OnFocusChangeListener.class, listener);
          } else if (annotation instanceof OnKey) {
            View view = finder.findViewByInfo(info);
            if (view == null) break;
            // view.setOnKeyListener(new ViewCommonEventListener(handler, method));
            ViewCommonEventListener listener = new ViewCommonEventListener(handler, method);
            setEventListener(view, "setOnKeyListener", OnKeyListener.class, listener);
          } else if (annotation instanceof OnTouch) {
            View view = finder.findViewByInfo(info);
            if (view == null) break;
            // view.setOnTouchListener(new ViewCommonEventListener(handler, method));
            ViewCommonEventListener listener = new ViewCommonEventListener(handler, method);
            setEventListener(view, "setOnTouchListener", OnTouchListener.class, listener);
          } else if (annotation instanceof OnItemClick) {
            View view = finder.findViewByInfo(info);
            if (view == null) break;
            // ((AdapterView<?>) view).setOnItemClickListener(new ViewCommonEventListener(handler,
            // method));
            ViewCommonEventListener listener = new ViewCommonEventListener(handler, method);
            setEventListener(view, "setOnItemClickListener", OnItemClickListener.class, listener);
          } else if (annotation instanceof OnItemLongClick) {
            View view = finder.findViewByInfo(info);
            if (view == null) break;
            // ((AdapterView<?>) view).setOnItemLongClickListener(new
            // ViewCommonEventListener(handler, method));
            ViewCommonEventListener listener = new ViewCommonEventListener(handler, method);
            setEventListener(
                view, "setOnItemLongClickListener", OnItemLongClickListener.class, listener);
          } else if (annotation instanceof OnChildClick) {
            View view = finder.findViewByInfo(info);
            if (view == null) break;
            // ((ExpandableListView) view).setOnChildClickListener(new
            // ViewCommonEventListener(handler, method));
            ViewCommonEventListener listener = new ViewCommonEventListener(handler, method);
            setEventListener(
                view,
                "setOnChildClickListener",
                ExpandableListView.OnChildClickListener.class,
                listener);
          } else if (annotation instanceof OnGroupClick) {
            View view = finder.findViewByInfo(info);
            if (view == null) break;
            // ((ExpandableListView) view).setOnGroupClickListener(new
            // ViewCommonEventListener(handler, method));
            ViewCommonEventListener listener = new ViewCommonEventListener(handler, method);
            setEventListener(
                view,
                "setOnGroupClickListener",
                ExpandableListView.OnGroupClickListener.class,
                listener);
          } else if (annotation instanceof OnGroupCollapse) {
            View view = finder.findViewByInfo(info);
            if (view == null) break;
            // ((ExpandableListView) view).setOnGroupCollapseListener(new
            // ViewCommonEventListener(handler, method));
            ViewCommonEventListener listener = new ViewCommonEventListener(handler, method);
            setEventListener(
                view,
                "setOnGroupCollapseListener",
                ExpandableListView.OnGroupCollapseListener.class,
                listener);
          } else if (annotation instanceof OnGroupExpand) {
            View view = finder.findViewByInfo(info);
            if (view == null) break;
            // ((ExpandableListView) view).setOnGroupExpandListener(new
            // ViewCommonEventListener(handler, method));
            ViewCommonEventListener listener = new ViewCommonEventListener(handler, method);
            setEventListener(
                view,
                "setOnGroupExpandListener",
                ExpandableListView.OnGroupExpandListener.class,
                listener);
          } else if (annotation instanceof OnCheckedChange) {
            View view = finder.findViewByInfo(info);
            if (view == null) break;
            if (view instanceof RadioGroup) {
              // ((RadioGroup) view).setOnCheckedChangeListener(new ViewCommonEventListener(handler,
              // method));
              ViewCommonEventListener listener = new ViewCommonEventListener(handler, method);
              setEventListener(
                  view,
                  "setOnCheckedChangeListener",
                  RadioGroup.OnCheckedChangeListener.class,
                  listener);
            } else if (view instanceof CompoundButton) {
              // ((CompoundButton) view).setOnCheckedChangeListener(new
              // ViewCommonEventListener(handler, method));
              ViewCommonEventListener listener = new ViewCommonEventListener(handler, method);
              setEventListener(
                  view,
                  "setOnCheckedChangeListener",
                  CompoundButton.OnCheckedChangeListener.class,
                  listener);
            }
          } else if (annotation instanceof OnPreferenceClick) {
            Preference preference = finder.findPreference(info.value.toString());
            if (preference == null) break;
            // preference.setOnPreferenceClickListener(new ViewCommonEventListener(handler,
            // method));
            ViewCommonEventListener listener = new ViewCommonEventListener(handler, method);
            setEventListener(
                preference,
                "setOnPreferenceClickListener",
                Preference.OnPreferenceClickListener.class,
                listener);
          } else if (annotation instanceof OnPreferenceChange) {
            Preference preference = finder.findPreference(info.value.toString());
            if (preference == null) break;
            // preference.setOnPreferenceChangeListener(new ViewCommonEventListener(handler,
            // method));
            ViewCommonEventListener listener = new ViewCommonEventListener(handler, method);
            setEventListener(
                preference,
                "setOnPreferenceChangeListener",
                Preference.OnPreferenceChangeListener.class,
                listener);
          } else if (annotation instanceof OnTabChange) {
            View view = finder.findViewByInfo(info);
            if (view == null) break;
            // ((TabHost) view).setOnTabChangedListener(new ViewCommonEventListener(handler,
            // method));
            ViewCommonEventListener listener = new ViewCommonEventListener(handler, method);
            setEventListener(
                view, "setOnTabChangedListener", TabHost.OnTabChangeListener.class, listener);
          } else if (annotation instanceof OnScrollChanged) {
            View view = finder.findViewByInfo(info);
            if (view == null) break;
            // view.getViewTreeObserver().addOnScrollChangedListener(new
            // ViewCommonEventListener(handler, method));
            ViewCommonEventListener listener = new ViewCommonEventListener(handler, method);
            setEventListener(
                view,
                "addOnScrollChangedListener",
                ViewTreeObserver.OnScrollChangedListener.class,
                listener);
          } else if (annotation instanceof OnScrollStateChanged) {
            View view = finder.findViewByInfo(info);
            if (view == null) break;
            Method method0 = null, method1 = null;
            ConcurrentHashMap<Annotation, Method> a_m_map = info_annotation_method_map.get(info);
            for (Annotation a : a_m_map.keySet()) {
              if (a instanceof OnScrollStateChanged) {
                method0 = a_m_map.get(a);
              } else if (a instanceof OnScroll) {
                method1 = a_m_map.get(a);
              }
            }
            // ((AbsListView) view).setOnScrollListener(new ViewCommonEventListener(handler,
            // method0, method1));
            ViewCommonEventListener listener =
                new ViewCommonEventListener(handler, method0, method1);
            setEventListener(
                view, "setOnScrollListener", AbsListView.OnScrollListener.class, listener);
          } else if (annotation instanceof OnItemSelected) {
            View view = finder.findViewByInfo(info);
            if (view == null) break;
            Method method0 = null, method1 = null;
            ConcurrentHashMap<Annotation, Method> a_m_map = info_annotation_method_map.get(info);
            for (Annotation a : a_m_map.keySet()) {
              if (a instanceof OnItemSelected) {
                method0 = a_m_map.get(a);
              } else if (a instanceof OnNothingSelected) {
                method1 = a_m_map.get(a);
              }
            }
            // ((AdapterView<?>) view).setOnItemSelectedListener(new
            // ViewCommonEventListener(handler, method0, method1));
            ViewCommonEventListener listener =
                new ViewCommonEventListener(handler, method0, method1);
            setEventListener(
                view,
                "setOnItemSelectedListener",
                AbsListView.OnItemSelectedListener.class,
                listener);
          } else if (annotation instanceof OnProgressChanged) {
            View view = finder.findViewByInfo(info);
            if (view == null) break;
            Method method0 = null, method1 = null, method2 = null;
            ConcurrentHashMap<Annotation, Method> a_m_map = info_annotation_method_map.get(info);
            for (Annotation a : a_m_map.keySet()) {
              if (a instanceof OnProgressChanged) {
                method0 = a_m_map.get(a);
              } else if (a instanceof OnStartTrackingTouch) {
                method1 = a_m_map.get(a);
              } else if (a instanceof OnStopTrackingTouch) {
                method2 = a_m_map.get(a);
              }
            }
            // ((SeekBar) view).setOnSeekBarChangeListener(new ViewCommonEventListener(handler,
            // method0, method1, method2));
            ViewCommonEventListener listener =
                new ViewCommonEventListener(handler, method0, method1, method2);
            setEventListener(
                view,
                "setOnSeekBarChangeListener",
                SeekBar.OnSeekBarChangeListener.class,
                listener);
          }
        } catch (Throwable e) {
          LogUtils.e(e.getMessage(), e);
        }
      }
    }
  }