Android Open Source - pulltorefresh_library_with_Indexable_listView Google Style Progress Layout Factory






From Project

Back to project page pulltorefresh_library_with_Indexable_listView.

License

The source code is released under:

Apache License

If you think the Android project pulltorefresh_library_with_Indexable_listView 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

/*******************************************************************************
 * Copyright 2013 Naver Business Platform Corp.
 * //from   w  w w. j  a  va  2  s . c  om
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 *******************************************************************************/
package com.handmark.pulltorefresh.library;

import java.lang.reflect.Constructor;

import java.lang.reflect.InvocationTargetException;

import android.content.Context;
import android.content.res.TypedArray;
import android.util.Log;
import android.view.View;

import com.handmark.pulltorefresh.configuration.xml.PullToRefreshXmlConfiguration;
import com.handmark.pulltorefresh.library.internal.DefaultGoogleStyleProgressLayout;
import com.handmark.pulltorefresh.library.GoogleStyleProgressLayout;
/**
 * Factory which creates google style progress layouts 
 * <br />Google style progress layouts must be listed in pulltorefresh.xml as "PullToRefresh/GoogleStyleProgressLayouts/layout" nodes
 * @author Wonjun Kim
 */
class GoogleStyleProgressLayoutFactory {

  private static final String LOG_TAG = GoogleStyleProgressLayoutFactory.class
      .getSimpleName();
  /**
   * Create the class token matched by <b>{@code layoutCode}</b>
   * @param layoutCode Google style progress layout code, which must be defined in pulltorefresh.xml 
   * @return Class token which is matched by {@code layoutCode}, or the class token of {@code RotateGoogleStyleProgressLayout} instance if not
   */
  public static Class<? extends GoogleStyleProgressLayout> createGoogleStyleProgressLayoutClazzByLayoutCode(String layoutCode) {
    String clazzName = PullToRefreshXmlConfiguration.getInstance().getGoogleStyleProgressLayoutClazzName(layoutCode);
    return createGoogleStyleProgressLayoutClazz(clazzName);
  }
  /**
   * Create a {@code GoogleStyleProgressLayout} instance matched by <b>{@code clazz} token</b> 
   * @param layoutCode Google style progress layout code, which must be defined in pulltorefresh.xml
   * @param context 
   * @return {@code GoogleStyleProgressLayout} instance if the class matched by {@code layoutCode} exists, or {@code RotateGoogleStyleProgressLayout} instance if not  
   */
  @SuppressWarnings("unchecked")
  public static Class<? extends GoogleStyleProgressLayout> createGoogleStyleProgressLayoutClazz(
      String clazzName) {
    Class<? extends GoogleStyleProgressLayout> googleStyleProgressLayoutClazz = null;
    if ( clazzName == null ) {
      googleStyleProgressLayoutClazz = DefaultGoogleStyleProgressLayoutFactory.createGoogleStyleProgressLayoutClazz(clazzName);
      return googleStyleProgressLayoutClazz;
    }
    
    try {
      googleStyleProgressLayoutClazz = (Class<GoogleStyleProgressLayout>) Class.forName(clazzName);

    } catch (ClassNotFoundException e) {
      Log.e(LOG_TAG,"The google style progress layout you have chosen class has not been found.", e);
      googleStyleProgressLayoutClazz = DefaultGoogleStyleProgressLayoutFactory.createGoogleStyleProgressLayoutClazz(clazzName);
    } 

    return googleStyleProgressLayoutClazz;
  }
  /**
   * Create a {@code GoogleStyleProgressLayout} instance matched by <b>{@code layoutCode}</b> 
   * @param layoutCode Google style progress layout code, which must be defined in pulltorefresh.xml
   * @param context 
   * @return {@code GoogleStyleProgressLayout} instance if the class matched by {@code layoutCode} exists, or {@code DefaultGoogleStyleProgressLayout} instance if not  
   */
  public static GoogleStyleProgressLayout createGoogleStyleProgressLayout(String layoutCode, Context context, TypedArray attrs) {
    Class<? extends GoogleStyleProgressLayout> clazz = createGoogleStyleProgressLayoutClazz(layoutCode);
    return createGoogleStyleProgressLayout(clazz, context, attrs);
  }
  /**
   * Create a {@code GoogleStyleProgressLayout} instance matched by <b>{@code clazz} token</b> 
   * @param layoutCode Google style progress layout code, which must be defined in pulltorefresh.xml
   * @param context 
   * @return {@code GoogleStyleProgressLayout} instance if the class matched by {@code layoutCode} exists, or {@code DefaultGoogleStyleProgressLayout} instance if not  
   */
  public static GoogleStyleProgressLayout createGoogleStyleProgressLayout(
      Class<? extends GoogleStyleProgressLayout> clazz, Context context, TypedArray attrs) {
    GoogleStyleProgressLayout layout = null;
    // Prevent NullPointerException
    if ( clazz == null ) {
      Log.i(LOG_TAG, "The Class token of the GoogleStyleProgressLayout is missing. Default google style progress layout will be used.");
      clazz = DefaultGoogleStyleProgressLayoutFactory.createGoogleStyleProgressLayoutClazz("");
    }
    
    layout = tryNewInstance(clazz, context, attrs);

    // If trying to create new instance has failed,
    if (layout == null) {
      layout = DefaultGoogleStyleProgressLayoutFactory.createGoogleStyleProgressLayout(clazz, context, attrs);
    }

    layout.setVisibility(View.INVISIBLE);
    return layout;
  }
  private static GoogleStyleProgressLayout tryNewInstance(
      Class<? extends GoogleStyleProgressLayout> clazz, Context context, TypedArray attrs) {
    GoogleStyleProgressLayout layout = null;
    try {
      Constructor<? extends GoogleStyleProgressLayout> constructor = clazz
          .getConstructor(Context.class, TypedArray.class);
      layout = (GoogleStyleProgressLayout) constructor.newInstance(context, attrs);

    } catch (IllegalArgumentException e) {
      Log.e(LOG_TAG, "The google style progress layout has failed to be created. ", e);
    } catch (InvocationTargetException e) {
      Log.e(LOG_TAG, "The google style progress layout has failed to be created. ", e);
    } catch (SecurityException e) {
      Log.e(LOG_TAG, "The google style progress layout has failed to be created. ", e);
    } catch (NoSuchMethodException e) {
      Log.e(LOG_TAG, "The google style progress layout has failed to be created. ", e);
    } catch (InstantiationException e) {
      Log.e(LOG_TAG, "The google style progress layout has failed to be created. ", e);
    } catch (IllegalAccessException e) {
      Log.e(LOG_TAG, "The google style progress layout has failed to be created. ", e);
    } catch (NullPointerException e) {
      Log.e(LOG_TAG, "The google style progress layout has failed to be created. ", e);
    }
    return layout;
  }
  /**
   * Factory which creates a default google style progress layout instance. This is used when {@code GoogleStyleProgressLayoutFactory} fails to create a instance
   * @author Wonjun Kim
   *
   */
  private static class DefaultGoogleStyleProgressLayoutFactory {
    /**
     * @param clazzName This class name is being ignored
     * @return Class token of {@code DefaultGoogleStyleProgressLayout}
     */
    public static Class<? extends GoogleStyleProgressLayout> createGoogleStyleProgressLayoutClazz(
        String clazzName) {
      return DefaultGoogleStyleProgressLayout.class;
    }
    /**
     * @param clazz Class token is being ignored.
     * @param context
     * @return {@code DefaultGoogleStyleProgressLayout} instance
     */
    public static GoogleStyleProgressLayout createGoogleStyleProgressLayout(
        Class<? extends GoogleStyleProgressLayout> clazz, Context context, TypedArray attrs) {

      return new DefaultGoogleStyleProgressLayout(context, attrs);
    }

  }

}




Java Source Code List

com.handmark.pulltorefresh.configuration.xml.ExtendedXmlConfigParserFactory.java
com.handmark.pulltorefresh.configuration.xml.PullToRefreshConfigXmlParser.java
com.handmark.pulltorefresh.configuration.xml.PullToRefreshNode.java
com.handmark.pulltorefresh.configuration.xml.PullToRefreshXmlConfiguration.java
com.handmark.pulltorefresh.configuration.xml.XmlPullNodeParser.java
com.handmark.pulltorefresh.configuration.xml.XmlPullNode.java
com.handmark.pulltorefresh.configuration.xml.XmlPullParserWrapper.java
com.handmark.pulltorefresh.extras.listfragment.PullToRefreshBaseListFragment.java
com.handmark.pulltorefresh.extras.listfragment.PullToRefreshExpandableListFragment.java
com.handmark.pulltorefresh.extras.listfragment.PullToRefreshIndexableListFragment.java
com.handmark.pulltorefresh.extras.listfragment.PullToRefreshListFragment.java
com.handmark.pulltorefresh.library.AlphaAnimator.java
com.handmark.pulltorefresh.library.GoogleStyleProgressLayoutFactory.java
com.handmark.pulltorefresh.library.GoogleStyleProgressLayout.java
com.handmark.pulltorefresh.library.GoogleStyleViewLayoutFactory.java
com.handmark.pulltorefresh.library.GoogleStyleViewLayout.java
com.handmark.pulltorefresh.library.IGoogleStyleProgressLayout.java
com.handmark.pulltorefresh.library.IGoogleStyleViewLayout.java
com.handmark.pulltorefresh.library.IIndicatorLayout.java
com.handmark.pulltorefresh.library.ILoadingLayout.java
com.handmark.pulltorefresh.library.IPullToRefreshConsumer.java
com.handmark.pulltorefresh.library.IPullToRefresh.java
com.handmark.pulltorefresh.library.IndicatorLayoutFactory.java
com.handmark.pulltorefresh.library.LoadingLayoutFactory.java
com.handmark.pulltorefresh.library.LoadingLayoutProxy.java
com.handmark.pulltorefresh.library.OverscrollHelper.java
com.handmark.pulltorefresh.library.PullToRefreshAdapterViewBase.java
com.handmark.pulltorefresh.library.PullToRefreshBase.java
com.handmark.pulltorefresh.library.PullToRefreshExpandableListView.java
com.handmark.pulltorefresh.library.PullToRefreshGridView.java
com.handmark.pulltorefresh.library.PullToRefreshHorizontalScrollView.java
com.handmark.pulltorefresh.library.PullToRefreshIndexableListView.java
com.handmark.pulltorefresh.library.PullToRefreshListView.java
com.handmark.pulltorefresh.library.PullToRefreshScrollView.java
com.handmark.pulltorefresh.library.PullToRefreshWebView.java
com.handmark.pulltorefresh.library.StringMatcher.java
com.handmark.pulltorefresh.library.extras.IndexScroller.java
com.handmark.pulltorefresh.library.extras.IndexableListView.java
com.handmark.pulltorefresh.library.extras.PullToRefreshWebView2.java
com.handmark.pulltorefresh.library.extras.SoundPullEventListener.java
com.handmark.pulltorefresh.library.internal.AbstractDefaultGoogleStyleViewLayout.java
com.handmark.pulltorefresh.library.internal.Assert.java
com.handmark.pulltorefresh.library.internal.DefaultGoogleStyleProgressLayout.java
com.handmark.pulltorefresh.library.internal.DefaultGoogleStyleViewLayout.java
com.handmark.pulltorefresh.library.internal.DefaultIndicatorLayout.java
com.handmark.pulltorefresh.library.internal.EmptyViewMethodAccessor.java
com.handmark.pulltorefresh.library.internal.FlipLoadingLayout.java
com.handmark.pulltorefresh.library.internal.FlippedProgressBar.java
com.handmark.pulltorefresh.library.internal.IndicatorLayout.java
com.handmark.pulltorefresh.library.internal.LoadingLayout.java
com.handmark.pulltorefresh.library.internal.PullingProgressLayout.java
com.handmark.pulltorefresh.library.internal.RotateLoadingLayout.java
com.handmark.pulltorefresh.library.internal.Utils.java
com.handmark.pulltorefresh.library.internal.ViewCompat.java