summaryrefslogtreecommitdiff
path: root/platform/java/src/kankan/wheel/widget/adapters/AbstractWheelTextAdapter.java
diff options
context:
space:
mode:
authorfred ross-perry <fredross-perry@Fred-Ross-Perrys-Computer.local>2016-08-26 09:50:48 -0700
committerfred ross-perry <fredross-perry@Fred-Ross-Perrys-Computer.local>2016-09-14 08:53:32 -0700
commitffbe3db71ea0f96b408e22418547a8ff898f380e (patch)
tree2f34407ef3c229a949b0a2b514e307297437a169 /platform/java/src/kankan/wheel/widget/adapters/AbstractWheelTextAdapter.java
parente18d11b63af0ca8a302f23b32ffc24578c830989 (diff)
downloadmupdf-ffbe3db71ea0f96b408e22418547a8ff898f380e.tar.xz
Android example - drawing ink annotations
This commit puts in the UI for drawing with color and line thickness. But it does not yet save this to the document.
Diffstat (limited to 'platform/java/src/kankan/wheel/widget/adapters/AbstractWheelTextAdapter.java')
-rw-r--r--platform/java/src/kankan/wheel/widget/adapters/AbstractWheelTextAdapter.java268
1 files changed, 268 insertions, 0 deletions
diff --git a/platform/java/src/kankan/wheel/widget/adapters/AbstractWheelTextAdapter.java b/platform/java/src/kankan/wheel/widget/adapters/AbstractWheelTextAdapter.java
new file mode 100644
index 00000000..620c8e74
--- /dev/null
+++ b/platform/java/src/kankan/wheel/widget/adapters/AbstractWheelTextAdapter.java
@@ -0,0 +1,268 @@
+/*
+ * Copyright 2011 Yuri Kanivets
+ *
+ * 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 kankan.wheel.widget.adapters;
+
+import android.content.Context;
+import android.graphics.Typeface;
+import android.util.Log;
+import android.view.Gravity;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.TextView;
+
+/**
+ * Abstract wheel adapter provides common functionality for adapters.
+ */
+public abstract class AbstractWheelTextAdapter extends AbstractWheelAdapter {
+
+ /** Text view resource. Used as a default view for adapter. */
+ public static final int TEXT_VIEW_ITEM_RESOURCE = -1;
+
+ /** No resource constant. */
+ protected static final int NO_RESOURCE = 0;
+
+ /** Default text color */
+ public static final int DEFAULT_TEXT_COLOR = 0xFF101010;
+
+ /** Default text color */
+ public static final int LABEL_COLOR = 0xFF700070;
+
+ /** Default text size */
+ public static final int DEFAULT_TEXT_SIZE = 24;
+
+ // Text settings
+ private int textColor = DEFAULT_TEXT_COLOR;
+ private int textSize = DEFAULT_TEXT_SIZE;
+
+ // Current context
+ protected Context context;
+ // Layout inflater
+ protected LayoutInflater inflater;
+
+ // Items resources
+ protected int itemResourceId;
+ protected int itemTextResourceId;
+
+ // Empty items resources
+ protected int emptyItemResourceId;
+
+ /**
+ * Constructor
+ * @param context the current context
+ */
+ protected AbstractWheelTextAdapter(Context context) {
+ this(context, TEXT_VIEW_ITEM_RESOURCE);
+ }
+
+ /**
+ * Constructor
+ * @param context the current context
+ * @param itemResource the resource ID for a layout file containing a TextView to use when instantiating items views
+ */
+ protected AbstractWheelTextAdapter(Context context, int itemResource) {
+ this(context, itemResource, NO_RESOURCE);
+ }
+
+ /**
+ * Constructor
+ * @param context the current context
+ * @param itemResource the resource ID for a layout file containing a TextView to use when instantiating items views
+ * @param itemTextResource the resource ID for a text view in the item layout
+ */
+ protected AbstractWheelTextAdapter(Context context, int itemResource, int itemTextResource) {
+ this.context = context;
+ itemResourceId = itemResource;
+ itemTextResourceId = itemTextResource;
+
+ inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
+ }
+
+ /**
+ * Gets text color
+ * @return the text color
+ */
+ public int getTextColor() {
+ return textColor;
+ }
+
+ /**
+ * Sets text color
+ * @param textColor the text color to set
+ */
+ public void setTextColor(int textColor) {
+ this.textColor = textColor;
+ }
+
+ /**
+ * Gets text size
+ * @return the text size
+ */
+ public int getTextSize() {
+ return textSize;
+ }
+
+ /**
+ * Sets text size
+ * @param textSize the text size to set
+ */
+ public void setTextSize(int textSize) {
+ this.textSize = textSize;
+ }
+
+ /**
+ * Gets resource Id for items views
+ * @return the item resource Id
+ */
+ public int getItemResource() {
+ return itemResourceId;
+ }
+
+ /**
+ * Sets resource Id for items views
+ * @param itemResourceId the resource Id to set
+ */
+ public void setItemResource(int itemResourceId) {
+ this.itemResourceId = itemResourceId;
+ }
+
+ /**
+ * Gets resource Id for text view in item layout
+ * @return the item text resource Id
+ */
+ public int getItemTextResource() {
+ return itemTextResourceId;
+ }
+
+ /**
+ * Sets resource Id for text view in item layout
+ * @param itemTextResourceId the item text resource Id to set
+ */
+ public void setItemTextResource(int itemTextResourceId) {
+ this.itemTextResourceId = itemTextResourceId;
+ }
+
+ /**
+ * Gets resource Id for empty items views
+ * @return the empty item resource Id
+ */
+ public int getEmptyItemResource() {
+ return emptyItemResourceId;
+ }
+
+ /**
+ * Sets resource Id for empty items views
+ * @param emptyItemResourceId the empty item resource Id to set
+ */
+ public void setEmptyItemResource(int emptyItemResourceId) {
+ this.emptyItemResourceId = emptyItemResourceId;
+ }
+
+
+ /**
+ * Returns text for specified item
+ * @param index the item index
+ * @return the text of specified items
+ */
+ protected abstract CharSequence getItemText(int index);
+
+ @Override
+ public View getItem(int index, View convertView, ViewGroup parent) {
+ if (index >= 0 && index < getItemsCount()) {
+ if (convertView == null) {
+ convertView = getView(itemResourceId, parent);
+ }
+ TextView textView = getTextView(convertView, itemTextResourceId);
+ if (textView != null) {
+ CharSequence text = getItemText(index);
+ if (text == null) {
+ text = "";
+ }
+ textView.setText(text);
+
+ if (itemResourceId == TEXT_VIEW_ITEM_RESOURCE) {
+ configureTextView(textView);
+ }
+ }
+ return convertView;
+ }
+ return null;
+ }
+
+ @Override
+ public View getEmptyItem(View convertView, ViewGroup parent) {
+ if (convertView == null) {
+ convertView = getView(emptyItemResourceId, parent);
+ }
+ if (emptyItemResourceId == TEXT_VIEW_ITEM_RESOURCE && convertView instanceof TextView) {
+ configureTextView((TextView)convertView);
+ }
+
+ return convertView;
+ }
+
+ /**
+ * Configures text view. Is called for the TEXT_VIEW_ITEM_RESOURCE views.
+ * @param view the text view to be configured
+ */
+ protected void configureTextView(TextView view) {
+ view.setTextColor(textColor);
+ view.setGravity(Gravity.CENTER);
+ view.setTextSize(textSize);
+ view.setLines(1);
+// view.setTypeface(Typeface.SANS_SERIF, Typeface.BOLD);
+ view.setTypeface(Typeface.SANS_SERIF, Typeface.NORMAL);
+ }
+
+ /**
+ * Loads a text view from view
+ * @param view the text view or layout containing it
+ * @param textResource the text resource Id in layout
+ * @return the loaded text view
+ */
+ private TextView getTextView(View view, int textResource) {
+ TextView text = null;
+ try {
+ if (textResource == NO_RESOURCE && view instanceof TextView) {
+ text = (TextView) view;
+ } else if (textResource != NO_RESOURCE) {
+ text = (TextView) view.findViewById(textResource);
+ }
+ } catch (ClassCastException e) {
+ Log.e("AbstractWheelAdapter", "You must supply a resource ID for a TextView");
+ throw new IllegalStateException(
+ "AbstractWheelAdapter requires the resource ID to be a TextView", e);
+ }
+
+ return text;
+ }
+
+ /**
+ * Loads view from resources
+ * @param resource the resource Id
+ * @return the loaded view or null if resource is not set
+ */
+ private View getView(int resource, ViewGroup parent) {
+ switch (resource) {
+ case NO_RESOURCE:
+ return null;
+ case TEXT_VIEW_ITEM_RESOURCE:
+ return new TextView(context);
+ default:
+ return inflater.inflate(resource, parent, false);
+ }
+ }
+}