11e4cfbeba54898373c852097d1519a1d966c0854Fabrice Di Meglio/* 21e4cfbeba54898373c852097d1519a1d966c0854Fabrice Di Meglio * Copyright (C) 2011 The Android Open Source Project 31e4cfbeba54898373c852097d1519a1d966c0854Fabrice Di Meglio * 41e4cfbeba54898373c852097d1519a1d966c0854Fabrice Di Meglio * Licensed under the Apache License, Version 2.0 (the "License"); 51e4cfbeba54898373c852097d1519a1d966c0854Fabrice Di Meglio * you may not use this file except in compliance with the License. 61e4cfbeba54898373c852097d1519a1d966c0854Fabrice Di Meglio * You may obtain a copy of the License at 71e4cfbeba54898373c852097d1519a1d966c0854Fabrice Di Meglio * 81e4cfbeba54898373c852097d1519a1d966c0854Fabrice Di Meglio * http://www.apache.org/licenses/LICENSE-2.0 91e4cfbeba54898373c852097d1519a1d966c0854Fabrice Di Meglio * 101e4cfbeba54898373c852097d1519a1d966c0854Fabrice Di Meglio * Unless required by applicable law or agreed to in writing, software 111e4cfbeba54898373c852097d1519a1d966c0854Fabrice Di Meglio * distributed under the License is distributed on an "AS IS" BASIS, 121e4cfbeba54898373c852097d1519a1d966c0854Fabrice Di Meglio * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 131e4cfbeba54898373c852097d1519a1d966c0854Fabrice Di Meglio * See the License for the specific language governing permissions and 141e4cfbeba54898373c852097d1519a1d966c0854Fabrice Di Meglio * limitations under the License. 151e4cfbeba54898373c852097d1519a1d966c0854Fabrice Di Meglio */ 161e4cfbeba54898373c852097d1519a1d966c0854Fabrice Di Meglio 171e4cfbeba54898373c852097d1519a1d966c0854Fabrice Di Megliopackage com.android.bidi; 181e4cfbeba54898373c852097d1519a1d966c0854Fabrice Di Meglio 1954d69625558f401d5fe65309effb713d2ea06f54Fabrice Di Meglioimport android.app.AlertDialog; 207af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglioimport android.app.Fragment; 211e4cfbeba54898373c852097d1519a1d966c0854Fabrice Di Meglioimport android.os.Bundle; 22f2ce877c1dde094ab599f0d3103145c9381ab260Fabrice Di Meglioimport android.text.Editable; 23f2ce877c1dde094ab599f0d3103145c9381ab260Fabrice Di Meglioimport android.text.Spannable; 24f2ce877c1dde094ab599f0d3103145c9381ab260Fabrice Di Meglioimport android.text.style.ForegroundColorSpan; 257af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglioimport android.view.LayoutInflater; 267af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglioimport android.view.View; 277af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglioimport android.view.ViewGroup; 2854d69625558f401d5fe65309effb713d2ea06f54Fabrice Di Meglioimport android.widget.Button; 29f2ce877c1dde094ab599f0d3103145c9381ab260Fabrice Di Meglioimport android.widget.EditText; 301e4cfbeba54898373c852097d1519a1d966c0854Fabrice Di Meglio 317af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Megliopublic class BiDiTestBasic extends Fragment { 3254d69625558f401d5fe65309effb713d2ea06f54Fabrice Di Meglio 3354d69625558f401d5fe65309effb713d2ea06f54Fabrice Di Meglio private View currentView; 3454d69625558f401d5fe65309effb713d2ea06f54Fabrice Di Meglio private Button alertDialogButton; 3554d69625558f401d5fe65309effb713d2ea06f54Fabrice Di Meglio private String[] items = {"This is a very very very very very very very very very very very long Item1", "Item2"}; 3654d69625558f401d5fe65309effb713d2ea06f54Fabrice Di Meglio 371e4cfbeba54898373c852097d1519a1d966c0854Fabrice Di Meglio @Override 387af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio public View onCreateView(LayoutInflater inflater, ViewGroup container, 397af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio Bundle savedInstanceState) { 4054d69625558f401d5fe65309effb713d2ea06f54Fabrice Di Meglio currentView = inflater.inflate(R.layout.basic, container, false); 4154d69625558f401d5fe65309effb713d2ea06f54Fabrice Di Meglio return currentView; 4254d69625558f401d5fe65309effb713d2ea06f54Fabrice Di Meglio } 4354d69625558f401d5fe65309effb713d2ea06f54Fabrice Di Meglio 4454d69625558f401d5fe65309effb713d2ea06f54Fabrice Di Meglio @Override 4554d69625558f401d5fe65309effb713d2ea06f54Fabrice Di Meglio public void onViewCreated(View view, Bundle savedInstanceState) { 4654d69625558f401d5fe65309effb713d2ea06f54Fabrice Di Meglio super.onViewCreated(view, savedInstanceState); 4754d69625558f401d5fe65309effb713d2ea06f54Fabrice Di Meglio 4854d69625558f401d5fe65309effb713d2ea06f54Fabrice Di Meglio alertDialogButton = (Button) currentView.findViewById(R.id.button_alert_dialog); 4954d69625558f401d5fe65309effb713d2ea06f54Fabrice Di Meglio alertDialogButton.setOnClickListener(new View.OnClickListener() { 5054d69625558f401d5fe65309effb713d2ea06f54Fabrice Di Meglio public void onClick(View v) { 5154d69625558f401d5fe65309effb713d2ea06f54Fabrice Di Meglio showDialog(); 5254d69625558f401d5fe65309effb713d2ea06f54Fabrice Di Meglio } 5354d69625558f401d5fe65309effb713d2ea06f54Fabrice Di Meglio }); 54f2ce877c1dde094ab599f0d3103145c9381ab260Fabrice Di Meglio 55f2ce877c1dde094ab599f0d3103145c9381ab260Fabrice Di Meglio useSpans(); 5654d69625558f401d5fe65309effb713d2ea06f54Fabrice Di Meglio } 5754d69625558f401d5fe65309effb713d2ea06f54Fabrice Di Meglio 5854d69625558f401d5fe65309effb713d2ea06f54Fabrice Di Meglio private void showDialog() { 5954d69625558f401d5fe65309effb713d2ea06f54Fabrice Di Meglio AlertDialog.Builder builder = new AlertDialog.Builder(currentView.getContext()); 6054d69625558f401d5fe65309effb713d2ea06f54Fabrice Di Meglio builder.setSingleChoiceItems(items, 0, null); 6154d69625558f401d5fe65309effb713d2ea06f54Fabrice Di Meglio builder.show(); 621e4cfbeba54898373c852097d1519a1d966c0854Fabrice Di Meglio } 63f2ce877c1dde094ab599f0d3103145c9381ab260Fabrice Di Meglio 64f2ce877c1dde094ab599f0d3103145c9381ab260Fabrice Di Meglio private void useSpans() { 65f2ce877c1dde094ab599f0d3103145c9381ab260Fabrice Di Meglio EditText urlEdit = (EditText) currentView.findViewById(R.id.edittext_url); 66f2ce877c1dde094ab599f0d3103145c9381ab260Fabrice Di Meglio Editable url = urlEdit.getText(); 67f2ce877c1dde094ab599f0d3103145c9381ab260Fabrice Di Meglio if (url.length() < 1) { 68f2ce877c1dde094ab599f0d3103145c9381ab260Fabrice Di Meglio return; 69f2ce877c1dde094ab599f0d3103145c9381ab260Fabrice Di Meglio } 70f2ce877c1dde094ab599f0d3103145c9381ab260Fabrice Di Meglio 71f2ce877c1dde094ab599f0d3103145c9381ab260Fabrice Di Meglio String urlString = url.toString(); 72f2ce877c1dde094ab599f0d3103145c9381ab260Fabrice Di Meglio int urlLength = urlString.length(); 73f2ce877c1dde094ab599f0d3103145c9381ab260Fabrice Di Meglio String domainAndRegistry = "amazon.co.uk"; 74f2ce877c1dde094ab599f0d3103145c9381ab260Fabrice Di Meglio 75f2ce877c1dde094ab599f0d3103145c9381ab260Fabrice Di Meglio int startSchemeIndex = urlString.startsWith("https") ? 5 : 0; 76f2ce877c1dde094ab599f0d3103145c9381ab260Fabrice Di Meglio int startDomainIndex = urlString.indexOf(domainAndRegistry); 77f2ce877c1dde094ab599f0d3103145c9381ab260Fabrice Di Meglio if (startDomainIndex == -1) { 78f2ce877c1dde094ab599f0d3103145c9381ab260Fabrice Di Meglio assert false; 79f2ce877c1dde094ab599f0d3103145c9381ab260Fabrice Di Meglio return; 80f2ce877c1dde094ab599f0d3103145c9381ab260Fabrice Di Meglio } 81f2ce877c1dde094ab599f0d3103145c9381ab260Fabrice Di Meglio int stopIndex = startDomainIndex + domainAndRegistry.length(); 82f2ce877c1dde094ab599f0d3103145c9381ab260Fabrice Di Meglio 83f2ce877c1dde094ab599f0d3103145c9381ab260Fabrice Di Meglio if (startDomainIndex != 0) { 84f2ce877c1dde094ab599f0d3103145c9381ab260Fabrice Di Meglio url.setSpan(new ForegroundColorSpan(0xfff00fff), 85f2ce877c1dde094ab599f0d3103145c9381ab260Fabrice Di Meglio startSchemeIndex, 86f2ce877c1dde094ab599f0d3103145c9381ab260Fabrice Di Meglio startDomainIndex, 87f2ce877c1dde094ab599f0d3103145c9381ab260Fabrice Di Meglio Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); 88f2ce877c1dde094ab599f0d3103145c9381ab260Fabrice Di Meglio } 89f2ce877c1dde094ab599f0d3103145c9381ab260Fabrice Di Meglio 90f2ce877c1dde094ab599f0d3103145c9381ab260Fabrice Di Meglio url.setSpan(new ForegroundColorSpan(0xff548aff), 91f2ce877c1dde094ab599f0d3103145c9381ab260Fabrice Di Meglio startDomainIndex, 92f2ce877c1dde094ab599f0d3103145c9381ab260Fabrice Di Meglio stopIndex, 93f2ce877c1dde094ab599f0d3103145c9381ab260Fabrice Di Meglio Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); 94f2ce877c1dde094ab599f0d3103145c9381ab260Fabrice Di Meglio 95f2ce877c1dde094ab599f0d3103145c9381ab260Fabrice Di Meglio if (stopIndex < urlString.length()) { 96f2ce877c1dde094ab599f0d3103145c9381ab260Fabrice Di Meglio url.setSpan(new ForegroundColorSpan(0xfff00fff), 97f2ce877c1dde094ab599f0d3103145c9381ab260Fabrice Di Meglio stopIndex, 98f2ce877c1dde094ab599f0d3103145c9381ab260Fabrice Di Meglio urlLength, 99f2ce877c1dde094ab599f0d3103145c9381ab260Fabrice Di Meglio Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); 100f2ce877c1dde094ab599f0d3103145c9381ab260Fabrice Di Meglio } 101f2ce877c1dde094ab599f0d3103145c9381ab260Fabrice Di Meglio } 1021e4cfbeba54898373c852097d1519a1d966c0854Fabrice Di Meglio} 103