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