/******************************************************************************* * Copyright 2012-present Pixate, Inc. * * 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.pixate.freestyle.viewdemo.data; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import android.content.Context; import android.util.Log; import android.widget.Button; import android.widget.CheckBox; import android.widget.EditText; import android.widget.GridView; import android.widget.ImageButton; import android.widget.ImageView; import android.widget.ListView; import android.widget.RadioButton; import android.widget.Spinner; import android.widget.TextView; import android.widget.ToggleButton; import com.pixate.freestyle.viewdemo.viewsamples.ButtonViewSample; import com.pixate.freestyle.viewdemo.viewsamples.CheckBoxViewSample; import com.pixate.freestyle.viewdemo.viewsamples.EditTextViewSample; import com.pixate.freestyle.viewdemo.viewsamples.GridViewSample; import com.pixate.freestyle.viewdemo.viewsamples.ImageButtonViewSample; import com.pixate.freestyle.viewdemo.viewsamples.ImageViewSample; import com.pixate.freestyle.viewdemo.viewsamples.ListViewSample; import com.pixate.freestyle.viewdemo.viewsamples.RadioButtonViewSample; import com.pixate.freestyle.viewdemo.viewsamples.SpinnerViewSample; import com.pixate.freestyle.viewdemo.viewsamples.TextViewSample; import com.pixate.freestyle.viewdemo.viewsamples.ToggleButtonViewSample; import com.pixate.freestyle.viewdemo.viewsamples.ViewSample; /** * Helper class for providing sample content for user interfaces created by * Android template wizards. */ public class ViewsData { private static final String STYLES_DIR = "styles/"; /** * An array of View items. */ public static List<ViewItem> ITEMS = new ArrayList<ViewItem>(); /** * A map of View items */ public static Map<String, ViewItem> ITEM_MAP = new HashMap<String, ViewItem>(); static { // @formatter:off addItem(new ViewItem(Button.class.getSimpleName(), "button.css", new ButtonViewSample())); addItem(new ViewItem(CheckBox.class.getSimpleName(), "checkbox.css", new CheckBoxViewSample())); addItem(new ViewItem(RadioButton.class.getSimpleName(), "radio_button.css", new RadioButtonViewSample())); addItem(new ViewItem(ToggleButton.class.getSimpleName(), "toggle_button.css", new ToggleButtonViewSample())); addItem(new ViewItem(ImageView.class.getSimpleName(), "image_view.css", new ImageViewSample())); addItem(new ViewItem(ImageButton.class.getSimpleName(), "image_button.css", new ImageButtonViewSample())); addItem(new ViewItem(ListView.class.getSimpleName(), "list_view.css", new ListViewSample())); addItem(new ViewItem(GridView.class.getSimpleName(), "grid_view.css", new GridViewSample())); addItem(new ViewItem(TextView.class.getSimpleName(), "text-view.css", new TextViewSample())); addItem(new ViewItem(EditText.class.getSimpleName(), "edit-text.css", new EditTextViewSample())); addItem(new ViewItem(Spinner.class.getSimpleName(), "spinner.css", new SpinnerViewSample())); // @formatter:on } private static void addItem(ViewItem item) { ITEMS.add(item); ITEM_MAP.put(item.id, item); } /** * A view item representing a piece of content. */ public static class ViewItem { private String id; private String cssResource; private ViewSample sample; public ViewItem(String id, String cssFileName, ViewSample sample) { this.id = id; this.cssResource = cssFileName; this.sample = sample; } public String getId() { return id; } public String getCSSFileName() { return cssResource; } public ViewSample getViewSample() { return sample; } @Override public String toString() { return id; } } /** * Returns the CSS content for the given item. * * @param context * @param item * @return The CSS content from the assets. */ public static String getCSS(Context context, ViewItem item) { try { InputStream inputStream = context.getAssets().open(STYLES_DIR + item.getCSSFileName()); ByteArrayOutputStream output = new ByteArrayOutputStream(1024); byte[] buffer = new byte[1024]; int read = 0; while ((read = inputStream.read(buffer)) != -1) { output.write(buffer, 0, read); } return new String(output.toByteArray()); } catch (IOException e) { Log.e(ViewsData.class.getSimpleName(), "Can't read the CSS data from " + item.getCSSFileName(), e); return "/* Error reading the CSS content */"; } } }