diff options
Diffstat (limited to 'src/com/android/browser/GearsBaseDialog.java')
| -rw-r--r-- | src/com/android/browser/GearsBaseDialog.java | 474 |
1 files changed, 0 insertions, 474 deletions
diff --git a/src/com/android/browser/GearsBaseDialog.java b/src/com/android/browser/GearsBaseDialog.java deleted file mode 100644 index 638ba273e..000000000 --- a/src/com/android/browser/GearsBaseDialog.java +++ /dev/null @@ -1,474 +0,0 @@ -/* - * Copyright (C) 2008 The Android Open Source Project - * - * 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.android.browser; - -import android.app.Activity; -import android.app.Dialog; -import android.content.Context; -import android.content.res.Resources; -import android.graphics.Bitmap; -import android.graphics.BitmapFactory; -import android.os.Handler; -import android.text.Spannable; -import android.text.SpannableString; -import android.text.style.UnderlineSpan; -import android.util.Log; -import android.view.InflateException; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.Button; -import android.widget.ImageView; -import android.widget.TextView; - -import java.io.InputStream; -import java.io.IOException; -import java.lang.ClassCastException; -import java.net.HttpURLConnection; -import java.net.MalformedURLException; -import java.net.URL; - -import org.json.JSONException; -import org.json.JSONObject; - -/** - * Base dialog class for gears - */ -class GearsBaseDialog { - - private static final String TAG = "GearsNativeDialog"; - protected Handler mHandler; - protected Activity mActivity; - protected String mDialogArguments; - - private Bitmap mIcon; - private final int MAX_ICON_SIZE = 64; - protected int mChoosenIconSize; - - // Dialog closing types - public static final int CANCEL = 0; - public static final int ALWAYS_DENY = 1; - public static final int ALLOW = 2; - public static final int DENY = 3; - public static final int NEW_ICON = 4; - public static final int UPDATE_ICON = 5; - public static final int REQUEST_ICON = 6; - public static final int PAUSE_REQUEST_ICON = 7; - public static final int CLEAR_REQUEST_ICON = 8; - - protected final String LOCAL_DATA_STRING = "localData"; - protected final String LOCAL_STORAGE_STRING = "localStorage"; - protected final String LOCATION_DATA_STRING = "locationData"; - - protected String mGearsVersion = "UNDEFINED"; - protected boolean mDebug = false; - - public GearsBaseDialog(Activity activity, Handler handler, String arguments) { - mActivity = activity; - mHandler = handler; - mDialogArguments = arguments; - } - - Resources getResources() { - return mActivity.getResources(); - } - - Object getSystemService(String name) { - return mActivity.getSystemService(name); - } - - View findViewById(int id) { - return mActivity.findViewById(id); - } - - private String getString(int id) { - return mActivity.getString(id); - } - - public void setDebug(boolean debug) { - mDebug = debug; - } - - public void setGearsVersion(String version) { - mGearsVersion = version; - } - - public String closeDialog(int closingType) { - return null; - } - - /* - * Utility methods for setting up the dialogs elements - */ - - /** - * Inflate a given layout in a view (which has to be - * a ViewGroup, e.g. LinearLayout). - * This is used to share the basic dialog outline among - * the different dialog types. - */ - void inflate(int layout, int viewID) { - LayoutInflater inflater = (LayoutInflater) getSystemService( - Context.LAYOUT_INFLATER_SERVICE); - View view = findViewById(viewID); - if (view != null) { - try { - ViewGroup viewGroup = (ViewGroup) view; - inflater.inflate(layout, viewGroup); - } catch (ClassCastException e) { - String msg = "exception, the view (" + view + ")"; - msg += " is not a ViewGroup"; - Log.e(TAG, msg, e); - } catch (InflateException e) { - Log.e(TAG, "exception while inflating the layout", e); - } - } else { - String msg = "problem, trying to inflate a non-existent view"; - msg += " (" + viewID + ")"; - Log.e(TAG, msg); - } - } - - /** - * Button setup. - * Set the button's text and its listener. If the text resource's id - * is 0, makes the button invisible. - */ - void setupButton(int buttonRscID, - int rscString, - View.OnClickListener listener, - boolean isLink, - boolean requestFocus) { - View view = findViewById(buttonRscID); - if (view == null) { - return; - } - - Button button = (Button) view; - - if (rscString == 0) { - button.setVisibility(View.GONE); - } else { - CharSequence text = getString(rscString); - button.setText(text); - button.setOnClickListener(listener); - if (isLink) { - displayAsLink(button); - } - if (requestFocus) { - button.requestFocus(); - } - } - } - - /** - * Button setup: as the above method, except that 'isLink' and - * 'requestFocus' default to false. - */ - void setupButton(int buttonRsc, int rsc, - View.OnClickListener listener) { - setupButton(buttonRsc, rsc, listener, false, false); - } - - /** - * Utility method to setup the three dialog buttons. - */ - void setupButtons(int alwaysDenyRsc, int allowRsc, int denyRsc) { - setupButton(R.id.button_alwaysdeny, alwaysDenyRsc, - new Button.OnClickListener() { - public void onClick(View v) { - mHandler.sendEmptyMessage(ALWAYS_DENY); - } - }); - - setupButton(R.id.button_allow, allowRsc, - new Button.OnClickListener() { - public void onClick(View v) { - mHandler.sendEmptyMessage(ALLOW); - } - }); - - setupButton(R.id.button_deny, denyRsc, - new Button.OnClickListener() { - public void onClick(View v) { - mHandler.sendEmptyMessage(DENY); - } - }); - } - - /** - * Display a button as an HTML link. Remove the background, set the - * text color to R.color.dialog_link and draw an underline - */ - void displayAsLink(Button button) { - if (button == null) { - return; - } - - CharSequence text = button.getText(); - button.setBackgroundDrawable(null); - int color = getResources().getColor(R.color.dialog_link); - button.setTextColor(color); - SpannableString str = new SpannableString(text); - str.setSpan(new UnderlineSpan(), 0, str.length(), - Spannable.SPAN_INCLUSIVE_INCLUSIVE); - button.setText(str); - button.setFocusable(false); - } - - /** - * Utility method to set elements' text indicated in - * the dialogs' arguments. - */ - void setLabel(JSONObject json, String name, int rsc) { - try { - if (json.has(name)) { - String text = json.getString(name); - View view = findViewById(rsc); - if (view != null && text != null) { - TextView textView = (TextView) view; - textView.setText(text); - textView.setVisibility(View.VISIBLE); - } - } - } catch (JSONException e) { - Log.e(TAG, "json exception", e); - } - } - - /** - * Utility method to hide a view. - */ - void hideView(View v, int rsc) { - if (rsc == 0) { - return; - } - View view; - if (v == null) { - view = findViewById(rsc); - } else { - view = v.findViewById(rsc); - } - if (view != null) { - view.setVisibility(View.GONE); - } - } - - /** - * Utility method to show a view. - */ - void showView(View v, int rsc) { - if (rsc == 0) { - return; - } - View view; - if (v == null) { - view = findViewById(rsc); - } else { - view = v.findViewById(rsc); - } - if (view != null) { - view.setVisibility(View.VISIBLE); - } - } - - /** - * Utility method to set a text. - */ - void setText(View v, int rsc, CharSequence text) { - if (rsc == 0) { - return; - } - View view = v.findViewById(rsc); - if (view != null) { - TextView textView = (TextView) view; - textView.setText(text); - textView.setVisibility(View.VISIBLE); - } - } - - /** - * Utility method to set a text. - */ - void setText(View v, int rsc, int txtRsc) { - if (rsc == 0) { - return; - } - View view = v.findViewById(rsc); - if (view != null) { - TextView textView = (TextView) view; - if (txtRsc == 0) { - textView.setVisibility(View.GONE); - } else { - CharSequence text = getString(txtRsc); - textView.setText(text); - textView.setVisibility(View.VISIBLE); - } - } - } - - /** - * Utility class to download an icon in the background. - * Once done ask the UI thread to update the icon. - */ - class IconDownload implements Runnable { - private String mUrlString; - - IconDownload(String url) { - mUrlString = url; - } - - public void run() { - if (mUrlString == null) { - return; - } - try { - URL url = new URL(mUrlString); - HttpURLConnection connection = (HttpURLConnection) url.openConnection(); - connection.setDoInput(true); - connection.connect(); - int length = connection.getContentLength(); - InputStream is = connection.getInputStream(); - Bitmap customIcon = BitmapFactory.decodeStream(is); - if (customIcon != null) { - mIcon = customIcon; - mHandler.sendEmptyMessage(UPDATE_ICON); - } - } catch (ClassCastException e) { - Log.e(TAG, "Class cast exception (" + mUrlString + ")", e); - } catch (MalformedURLException e) { - Log.e(TAG, "Malformed url (" + mUrlString + ") ", e); - } catch (IOException e) { - Log.e(TAG, "Exception downloading icon (" + mUrlString + ") ", e); - } - } - } - - /** - * Utility method to update the icon. - * Called on the UI thread. - */ - public void updateIcon() { - if (mIcon == null) { - return; - } - View view = findViewById(R.id.origin_icon); - if (view != null) { - ImageView imageView = (ImageView) view; - imageView.setMaxHeight(MAX_ICON_SIZE); - imageView.setMaxWidth(MAX_ICON_SIZE); - imageView.setScaleType(ImageView.ScaleType.FIT_XY); - imageView.setImageBitmap(mIcon); - imageView.setVisibility(View.VISIBLE); - } - } - - /** - * Utility method to download an icon from a url and set - * it to the GUI element R.id.origin_icon. - * It is used both in the shortcut dialog and the - * permission dialog. - * The actual download is done in the background via - * IconDownload; once the icon is downlowded the UI is updated - * via updateIcon(). - * The icon size is included in the layout with the choosen - * size, although not displayed, to limit text reflow once - * the icon is received. - */ - void downloadIcon(String url) { - if (url == null) { - return; - } - View view = findViewById(R.id.origin_icon); - if (view != null) { - view.setMinimumWidth(mChoosenIconSize); - view.setMinimumHeight(mChoosenIconSize); - view.setVisibility(View.INVISIBLE); - } - Thread thread = new Thread(new IconDownload(url)); - thread.start(); - } - - /** - * Utility method that get the dialogMessage - * and icon and ask the setupDialog(message,icon) - * method to set the values. - */ - public void setupDialog() { - TextView dialogMessage = null; - ImageView icon = null; - - View view = findViewById(R.id.dialog_message); - if (view != null) { - dialogMessage = (TextView) view; - } - - View iconView = findViewById(R.id.icon); - if (iconView != null) { - icon = (ImageView) iconView; - } - - if ((dialogMessage != null) && (icon != null)) { - setupDialog(dialogMessage, icon); - dialogMessage.setVisibility(View.VISIBLE); - } - } - - /* - * Set the message and icon of the dialog - */ - public void setupDialog(TextView message, ImageView icon) { - message.setText(R.string.unrecognized_dialog_message); - icon.setImageResource(R.drawable.ic_dialog_menu_generic); - message.setVisibility(View.VISIBLE); - } - - /** - * Setup the dialog - * By default, just display a simple message. - */ - public void setup() { - setupButtons(0, 0, R.string.default_button); - setupDialog(); - } - - /** - * Method called when the back button is pressed, - * allowing the dialog to intercept the default behaviour. - */ - public boolean handleBackButton() { - return false; - } - - /** - * Returns the resource string of the notification displayed - * after the dialog. By default, does not return one. - */ - public int notification() { - return 0; - } - - /** - * If a secondary dialog (e.g. a confirmation dialog) is created, - * GearsNativeDialog will call this method. - */ - public Dialog onCreateDialog(int id) { - // This should be redefined by subclasses as needed. - return null; - } - -} |
