BiDiTestActivity.java revision 53a73bcddff79617f42ad351332949be3ba92d45
19f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglio/* 29f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglio * Copyright (C) 2011 The Android Open Source Project 39f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglio * 49f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglio * Licensed under the Apache License, Version 2.0 (the "License"); 59f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglio * you may not use this file except in compliance with the License. 69f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglio * You may obtain a copy of the License at 79f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglio * 89f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglio * http://www.apache.org/licenses/LICENSE-2.0 99f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglio * 109f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglio * Unless required by applicable law or agreed to in writing, software 119f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglio * distributed under the License is distributed on an "AS IS" BASIS, 129f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglio * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 139f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglio * See the License for the specific language governing permissions and 149f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglio * limitations under the License. 159f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglio */ 169f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglio 179f82b580d744ce4baf057b061994394dcf239eedFabrice Di Megliopackage com.android.bidi; 189f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglio 197af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglioimport java.util.ArrayList; 207af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglioimport java.util.HashMap; 217af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglioimport java.util.List; 227af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglioimport java.util.Map; 237af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio 247af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglioimport android.app.Activity; 257af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglioimport android.app.Fragment; 267af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglioimport android.app.FragmentTransaction; 279f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglioimport android.os.Bundle; 2853a73bcddff79617f42ad351332949be3ba92d45Fabrice Di Meglioimport android.view.Menu; 2953a73bcddff79617f42ad351332949be3ba92d45Fabrice Di Meglioimport android.view.MenuInflater; 307af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglioimport android.view.View; 317af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglioimport android.widget.AdapterView; 327af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglioimport android.widget.ListView; 337af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglioimport android.widget.SimpleAdapter; 347af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio 357af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Megliopublic class BiDiTestActivity extends Activity { 367af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio 377af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio private static final String KEY_CLASS = "class"; 387af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio private static final String KEY_TITLE = "title"; 397af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio private static final String KEY_FRAGMENT_ID = "id"; 407af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio 417af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio private ListView mList; 427af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio 437af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio private AdapterView.OnItemClickListener mOnClickListener = 447af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio new AdapterView.OnItemClickListener() { 457af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio public void onItemClick(AdapterView<?> parent, View v, int position, long id) { 467af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio onListItemClick((ListView)parent, v, position, id); 477af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio } 487af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio }; 497af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio 507af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio private void onListItemClick(ListView lv, View v, int position, long id) { 517af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio // Show the test 527af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio Map<String, Object> map = (Map<String, Object>)lv.getItemAtPosition(position); 537af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio int fragmentId = (Integer) map.get(KEY_FRAGMENT_ID); 547af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio Fragment fragment = getFragmentManager().findFragmentById(fragmentId); 557af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio if (fragment == null) { 567af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio try { 577af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio // Create an instance of the test 587af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio Class<? extends Fragment> clazz = (Class<? extends Fragment>) map.get(KEY_CLASS); 597af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio fragment = clazz.newInstance(); 607af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio 617af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio // Replace the old test fragment with the new one 627af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio FragmentTransaction ft = getFragmentManager().beginTransaction(); 637af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio ft.replace(R.id.testframe, fragment); 647af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE); 657af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio ft.commit(); 667af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio } catch (InstantiationException e) { 677af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio } catch (IllegalAccessException e) { 687af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio } 697af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio } 707af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio } 71eee49c699c035ffba188417489f40d34f587d65cFabrice Di Meglio 729f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglio @Override 739f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglio protected void onCreate(Bundle savedInstanceState) { 749f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglio super.onCreate(savedInstanceState); 759f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglio 761e4cfbeba54898373c852097d1519a1d966c0854Fabrice Di Meglio setContentView(R.layout.main); 77eee49c699c035ffba188417489f40d34f587d65cFabrice Di Meglio 787af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio mList = (ListView) findViewById(R.id.testlist); 797af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio mList.setChoiceMode(ListView.CHOICE_MODE_SINGLE); 807af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio mList.setFocusableInTouchMode(true); 817af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio 827af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio final SimpleAdapter adapter = new SimpleAdapter(this, getTests(), 837af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio R.layout.custom_list_item, new String[]{"title"}, 847af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio new int[]{android.R.id.text1}); 857af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio mList.setAdapter(adapter); 867af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio 877af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio mList.setOnItemClickListener(mOnClickListener); 887af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio } 8988f9fd2316d764e792a84c43aef67816ac02ef14Fabrice Di Meglio 907af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio private void addItem(List<Map<String, Object>> data, String name, 917af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio Class<? extends Fragment> clazz, int fragmentId) { 927af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio Map<String, Object> temp = new HashMap<String, Object>(); 937af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio temp.put(KEY_TITLE, name); 947af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio temp.put(KEY_CLASS, clazz); 957af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio temp.put(KEY_FRAGMENT_ID, fragmentId); 967af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio data.add(temp); 977af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio } 9826e432d25f2ba199ae8b762fc68da8463389dd9bFabrice Di Meglio 997af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio private List<Map<String, Object>> getTests() { 1007af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio List<Map<String, Object>> result = new ArrayList<Map<String, Object>>(); 1017af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio 1027af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio addItem(result, "Basic", BiDiTestBasic.class, R.id.basic); 1037af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio addItem(result, "Canvas", BiDiTestCanvas.class, R.id.canvas); 1047af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio 1057af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio addItem(result, "Linear LTR", BiDiTestLinearLayoutLtr.class, R.id.linear_layout_ltr); 1067af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio addItem(result, "Linear RTL", BiDiTestLinearLayoutRtl.class, R.id.linear_layout_rtl); 1077af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio addItem(result, "Linear LOC", BiDiTestLinearLayoutLocale.class, R.id.linear_layout_locale); 1087af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio 1097af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio addItem(result, "Frame LTR", BiDiTestFrameLayoutLtr.class, R.id.frame_layout_ltr); 1107af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio addItem(result, "Frame RTL", BiDiTestFrameLayoutRtl.class, R.id.frame_layout_rtl); 1117af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio addItem(result, "Frame LOC", BiDiTestFrameLayoutLocale.class, R.id.frame_layout_locale); 1127af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio 1137af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio addItem(result, "Relative LTR", BiDiTestRelativeLayoutLtr.class, R.id.relative_layout_ltr); 1147af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio addItem(result, "Relative RTL", BiDiTestRelativeLayoutRtl.class, R.id.relative_layout_rtl); 1157af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio 1167af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio addItem(result, "Relative2 LTR", BiDiTestRelativeLayout2Ltr.class, R.id.relative_layout_2_ltr); 1177af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio addItem(result, "Relative2 RTL", BiDiTestRelativeLayout2Rtl.class, R.id.relative_layout_2_rtl); 1187af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio addItem(result, "Relative2 LOC", BiDiTestRelativeLayout2Locale.class, R.id.relative_layout_2_locale); 1197af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio 1207af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio addItem(result, "Table LTR", BiDiTestTableLayoutLtr.class, R.id.table_layout_ltr); 1217af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio addItem(result, "Table RTL", BiDiTestTableLayoutRtl.class, R.id.table_layout_rtl); 1227af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio addItem(result, "Table LOC", BiDiTestTableLayoutLocale.class, R.id.table_layout_locale); 1237af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio 124b07124082e32d51be12d21bfb26147ab0617bbc9Fabrice Di Meglio addItem(result, "ViewPadding", BiDiTestViewPadding.class, R.id.view_padding); 125d8703a98241ff190a26bc4b6089a0a8ab0122d8fFabrice Di Meglio addItem(result, "ViewPadding MIXED", BiDiTestViewPaddingMixed.class, R.id.view_padding_mixed); 126b07124082e32d51be12d21bfb26147ab0617bbc9Fabrice Di Meglio 1277af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio return result; 1289f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglio } 12953a73bcddff79617f42ad351332949be3ba92d45Fabrice Di Meglio 13053a73bcddff79617f42ad351332949be3ba92d45Fabrice Di Meglio @Override 13153a73bcddff79617f42ad351332949be3ba92d45Fabrice Di Meglio public boolean onCreateOptionsMenu(Menu menu) { 13253a73bcddff79617f42ad351332949be3ba92d45Fabrice Di Meglio MenuInflater inflater = getMenuInflater(); 13353a73bcddff79617f42ad351332949be3ba92d45Fabrice Di Meglio inflater.inflate(R.menu.main_menu, menu); 13453a73bcddff79617f42ad351332949be3ba92d45Fabrice Di Meglio return true; 13553a73bcddff79617f42ad351332949be3ba92d45Fabrice Di Meglio } 1369f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglio}