Android Open Source - android-mvc-framework Common Activity Util






From Project

Back to project page android-mvc-framework.

License

The source code is released under:

Apache License

If you think the Android project android-mvc-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 com.android_mvc.framework.activities;
/*w w  w.ja v a  2  s  .c  om*/
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import com.android_mvc.framework.common.BaseUtil;
import com.android_mvc.framework.common.FWUtil;
import com.android_mvc.framework.controller.action.ActionResult;
import com.android_mvc.framework.controller.routing.Router;
import com.android_mvc.framework.controller.validation.ValidationResult;
import com.android_mvc.framework.task.AsyncTasksRunner;
import com.android_mvc.framework.task.RunnerFollower;
import com.android_mvc.framework.task.SequentialAsyncTask;
import com.android_mvc.framework.ui.menu.OptionMenuBuilder;


import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;

/**
 * Map?????Map????Activity??????????????????
 * @author id:language_and_engineering
 *
 */
public class CommonActivityUtil<T extends IBaseActivity>
{

    // Activity????????$????????????????????????


    // NOTE: ????????????T?Activity ?????????????????
    // ?????????????????????????????????????????????


    private Activity activity;

    // ?????????????????????????Intent??????
    private Bundle extras;
    private ValidationResult vres;
    private ActionResult ares;

    // ?????????????????????
    private OptionMenuBuilder optionMenuBuilder;

    // ?????????????????????????????????????
    private boolean menuBuiltFlag = false;


    // ---------------- Activity????????? ------------------


    /**
     * Activity???onCreate????????????????????
     */
    public void onActivityCreated(T activity)
    {
        FWUtil.d("onActivityCreated??");
        this.activity = (Activity)activity;

        // ???????????????????????????????????
        carryDataFromPreviousPage(activity);

        // UI??????????????????????
        if( activity.requireProcBeforeUI() )
        {
            // ?????????????????????????????UI????
            executeProcBeforeUIAndRender(activity);
        }
        else
        {
            // ?????????????????UI????
            renderUI(activity);
        }

        FWUtil.d("onActivityCreated??");
    }


    /**
     * ??????????Intent??????????????????????????????????????????????????????????
     */
    private void carryDataFromPreviousPage(T activity)
    {
        // Intent???????????
        extras = ((Activity)activity).getIntent().getExtras();

        // ????????????
        if( extras == null ) return;

        // ????????????????????????
        if( extras.containsKey(Router.EXTRA_KEY_VALIDATION_RESULT))
        {
            vres = (ValidationResult) extras.getSerializable(Router.EXTRA_KEY_VALIDATION_RESULT);
        }

        // ???????????????????????
        if( extras.containsKey(Router.EXTRA_KEY_ACTION_RESULT))
        {
            ares = (ActionResult) extras.getSerializable(Router.EXTRA_KEY_ACTION_RESULT);
        }

    }


    /**
     * UI????????????????????????????????????????UI????????
     */
    private void executeProcBeforeUIAndRender(final T activity) {

        new AsyncTasksRunner( new SequentialAsyncTask[]{
            new  SequentialAsyncTask(){
                @Override
                protected boolean main() {
                    // ??????????
                    activity.procAsyncBeforeUI();
                    return CONTINUE_TASKS;
                }
            }
        })
        .withSimpleDialog("????????????", (Activity)activity)
        .whenAllTasksCompleted(new RunnerFollower(){
            @Override
            protected void exec() {
                // UI????????UI???
                renderUI(activity);
            }})
        .begin();

    }


    /**
     * UI???
     */
    private void renderUI(T activity)
    {
        // XML???????????????????????
        render_xml( (Activity) activity );

        // UI??????
        activity.defineContentView();

        // ???????
        this.optionMenuBuilder = activity.defineMenu();

        // ??????????????????????????????????
        activity.afterViewDefined();
    }


    /**
     * ???????????????????????XML?????????????????
     */
    private void render_xml( Activity activity )
    {
        // NOTE: ??????????layout????????????????????????????
        // ??????????????????????????????????????????????????????
        // http://ameblo.jp/m-ext/entry-10872776112.html


        // ???????????????Activity?????
        String activity_class_name = activity.getClass().getSimpleName();
        Pattern reg_pattern = Pattern.compile( "Activity$" );
        Matcher reg_matcher = reg_pattern.matcher( activity_class_name );
        String activity_basic_name = reg_matcher.replaceFirst("");

        // ??????????????????????PascalCase??????????????snake_case????????
        StringBuilder sb = new StringBuilder();
        int class_name_length = activity_basic_name.length();
        boolean previous_char_was_upper = false; // 1?????????????????????????????????????
        for( int i = 0; i < class_name_length; i ++ )
        {
            Character c = activity_basic_name.charAt(i);

            // ??????
            if( Character.isUpperCase(c))
            {
                // ?????????????????????????????????
                if( ( i > 0 ) && ( ! previous_char_was_upper ) )
                {
                    sb.append("_");
                }

                // ???????????
                c = Character.toLowerCase(c);
                previous_char_was_upper = true;
            }
            else
            {
                previous_char_was_upper = false;
            }

            // ??
            sb.append(c);
        }

        // ?????XML?????????????????
        String xml_base_name = sb.toString();
        BaseUtil.d( "xml name is " + xml_base_name);

        // ??????????????????XML???????ID?????
        int xml_resource_id = activity
            .getResources()
            .getIdentifier(
                xml_base_name,
                "layout",
                activity.getPackageName()
        );

        // ??????XML??????????????????????
        if( xml_resource_id != 0 )
        {
            activity.setContentView( xml_resource_id );
        }
        else
        {
            // NOTE: ??????????????????XML??????????????????
            BaseUtil.w("xml not found!");
        }

        return;
    }


    // ---------------- ?????????????????? ------------------


    /**
     * ?????????????????????????Intent?????????????
     * ??????????????????null??????
     */
    public Bundle extras()
    {
        return extras;
            // NOTE: AC?????????Bundle?????????????????????????????????????
            // TODO: RoutingTable??????????????Intent????????????????????????????????????????????
    }


    /**
     * ???????????????????
     * ??????????????????null??????
     */
    public ValidationResult getValidationResult()
    {
        return vres;
    }


    /**
     * ????????????????
     * ??????????????????null??????
     */
    public ActionResult getActionResult()
    {
        return ares;
    }

    /**
     * ???????????????????????????????????
     */
    public boolean hasValidationResult()
    {
        return (vres != null);
    }


    /**
     * ????????????????????????????????
     */
    public boolean hasActionResult()
    {
        return (ares != null);
    }


    /**
     * ??????????????????????????????????????????
     */
    public boolean actionResultHasKey(String key)
    {
        if( ! hasActionResult() ) return false;

        return ( ares.get(key) != null );
    }


    /**
     * ???????????????Intent????????????????????????????????????????
     */
    public boolean intentHasKey(String key)
    {
        if( extras() != null )
        {
            return extras().containsKey( key );
        }
        else
        {
            return false;
        }
    }


    /**
     * getText????????????????????????????
     */
    public String _(int target_string_id)
    {
        // ????????????
        String target_string = activity
            .getResources()
            .getString( target_string_id )
        ;

        return target_string;
            // @see http://d.hatena.ne.jp/language_and_engineering/20110815/p1

            // TODO: Activity???????????????????
    }


    // ---------------- ?????? ------------------


    /**
     * ????????????????
     */
    public Menu renderOptionMenuAsDescribed(Menu menu)
    {
        // ?????????????
        if( ! menuBuiltFlag )
        {
            // ????????????????????????????
            if( optionMenuBuilder != null )
            {
                menu = optionMenuBuilder.registerItemsInMenu(menu);
            }
        }

        // ???????????????????????
        menuBuiltFlag = true;

        return menu;
    }


    /**
     * ????????????????????????????????????????
     */
    public void onOptionItemSelected(MenuItem item)
    {
        if( optionMenuBuilder != null )
        {
            optionMenuBuilder.onItemSelected(item);
        }
    }

}




Java Source Code List

com.android_mvc.framework.activities.CommonActivityUtil.java
com.android_mvc.framework.activities.IBaseActivity.java
com.android_mvc.framework.activities.base.BaseMapActivity.java
com.android_mvc.framework.activities.base.BaseNormalActivity.java
com.android_mvc.framework.activities.base.BaseTabHostActivity.java
com.android_mvc.framework.activities.installation.InstallAppFWBaseActivity.java
com.android_mvc.framework.annotations.SuppressDebugLog.java
com.android_mvc.framework.common.AbstractAppSettings.java
com.android_mvc.framework.common.BaseUtil.java
com.android_mvc.framework.common.FWUtil.java
com.android_mvc.framework.controller.BaseController.java
com.android_mvc.framework.controller.ControlFlowDetail.java
com.android_mvc.framework.controller.action.ActionResult.java
com.android_mvc.framework.controller.action.BLExecutor.java
com.android_mvc.framework.controller.action.BaseAction.java
com.android_mvc.framework.controller.routing.IntentPortable.java
com.android_mvc.framework.controller.routing.Router.java
com.android_mvc.framework.controller.routing.RoutingTable.java
com.android_mvc.framework.controller.routing.TabContentMapping.java
com.android_mvc.framework.controller.validation.ActivityParams.java
com.android_mvc.framework.controller.validation.BaseValidationsUtil.java
com.android_mvc.framework.controller.validation.NumberComparator.java
com.android_mvc.framework.controller.validation.ValidationExecutor.java
com.android_mvc.framework.controller.validation.ValidationResult.java
com.android_mvc.framework.db.DBHelper.java
com.android_mvc.framework.db.dao.BaseDAO.java
com.android_mvc.framework.db.dao.BaseDBDAO.java
com.android_mvc.framework.db.dao.BasePrefDAO.java
com.android_mvc.framework.db.dao.FWPrefDAO.java
com.android_mvc.framework.db.dao.Finder.java
com.android_mvc.framework.db.dao.IFWDAO.java
com.android_mvc.framework.db.entity.BaseLogicalEntity.java
com.android_mvc.framework.db.schema.AbstractSchemaDefinition.java
com.android_mvc.framework.db.schema.RDBColumn.java
com.android_mvc.framework.db.schema.RDBSchema.java
com.android_mvc.framework.db.schema.RDBTable.java
com.android_mvc.framework.db.transaction.todo.TxnListener.java
com.android_mvc.framework.db.transaction.todo.TxnScope.java
com.android_mvc.framework.net.HttpPostRequest.java
com.android_mvc.framework.net.HttpPostResponse.java
com.android_mvc.framework.net.old.HttpPostHandler.java
com.android_mvc.framework.net.old.HttpPostTask.java
com.android_mvc.framework.task.AsyncTasksRunner.java
com.android_mvc.framework.task.RunnerFollower.java
com.android_mvc.framework.task.SequentialAsyncTask.java
com.android_mvc.framework.ui.UIBuilder.java
com.android_mvc.framework.ui.UIUtil.java
com.android_mvc.framework.ui.menu.OptionMenuBuilder.java
com.android_mvc.framework.ui.menu.OptionMenuDescription.java
com.android_mvc.framework.ui.tab.TabDescription.java
com.android_mvc.framework.ui.tab.TabHostBuilder.java
com.android_mvc.framework.ui.view.IFWView.java
com.android_mvc.framework.ui.view.MButton.java
com.android_mvc.framework.ui.view.MCheckBox.java
com.android_mvc.framework.ui.view.MEditText.java
com.android_mvc.framework.ui.view.MLinearLayout.java
com.android_mvc.framework.ui.view.MTextView.java
com.android_mvc.sample_project.activities.func_db.DBEditActivity.java
com.android_mvc.sample_project.activities.func_db.DBListActivity.java
com.android_mvc.sample_project.activities.func_db.SampleTabHostActivity.java
com.android_mvc.sample_project.activities.func_net.HttpNetActivity.java
com.android_mvc.sample_project.activities.installation.InstallAppActivity.java
com.android_mvc.sample_project.activities.installation.InstallCompletedActivity.java
com.android_mvc.sample_project.activities.installation.lib.InstallAppUserBaseActivity.java
com.android_mvc.sample_project.activities.main.TopActivity.java
com.android_mvc.sample_project.common.AppSettings.java
com.android_mvc.sample_project.common.Util.java
com.android_mvc.sample_project.controller.FuncDBController.java
com.android_mvc.sample_project.controller.FuncDBValidation.java
com.android_mvc.sample_project.controller.FuncNetController.java
com.android_mvc.sample_project.controller.FuncNetValidation.java
com.android_mvc.sample_project.controller.MainController.java
com.android_mvc.sample_project.controller.util.ValidationsUtil.java
com.android_mvc.sample_project.db.dao.FriendDAO.java
com.android_mvc.sample_project.db.dao.PrefDAO.java
com.android_mvc.sample_project.db.dao.todo.HogeDAO.java
com.android_mvc.sample_project.db.entity.Friend.java
com.android_mvc.sample_project.db.entity.lib.LogicalEntity.java
com.android_mvc.sample_project.db.schema.SchemaDefinition.java
com.android_mvc.sample_project.domain.DBDeleteAction.java
com.android_mvc.sample_project.domain.DBEditAction.java
com.android_mvc.sample_project.domain.DBUpdateAction.java
com.android_mvc.sample_project.domain.HttpNetAction.java