1 package jarmos.app.activity;
11 import java.io.IOException;
12 import java.text.SimpleDateFormat;
13 import java.util.List;
15 import android.app.Activity;
16 import android.app.AlertDialog;
17 import android.app.Dialog;
18 import android.content.DialogInterface;
19 import android.content.Intent;
20 import android.graphics.drawable.BitmapDrawable;
21 import android.graphics.drawable.Drawable;
22 import android.os.Bundle;
23 import android.os.Handler;
24 import android.os.Message;
25 import android.util.Log;
26 import android.view.ContextMenu;
27 import android.view.ContextMenu.ContextMenuInfo;
28 import android.view.LayoutInflater;
29 import android.view.MenuItem;
30 import android.view.View;
31 import android.view.ViewGroup;
32 import android.widget.AdapterView;
33 import android.widget.AdapterView.AdapterContextMenuInfo;
34 import android.widget.BaseAdapter;
35 import android.widget.GridView;
36 import android.widget.ImageView;
37 import android.widget.LinearLayout;
38 import android.widget.TextView;
39 import android.widget.Toast;
62 private class ModelsGridViewAdapter
extends BaseAdapter {
64 private Drawable[] imgs;
66 ModelsGridViewAdapter() {
67 imgs =
new BitmapDrawable[items.size()];
68 for (
int i = 0; i < items.size(); i++) {
70 if (md.
image != null) {
71 imgs[i] =
new BitmapDrawable(getResources(), md.
image);
74 }
catch (IOException io) {
75 Log.e(
"ProbSelectionActivity",
"Failed closing image stream", io);
78 if (((BitmapDrawable) imgs[i]).getBitmap() == null) {
79 Log.w(
"JaRMoSA:ModelListActivity",
"Could not read image file for model " + md.title
80 +
" in folder " + md.modeldir);
81 imgs[i] = getResources().getDrawable(R.drawable.notfound);
89 public int getCount() {
95 public Object getItem(
int pos) {
97 return items.get(pos);
101 public long getItemId(
int position) {
102 return getItem(position).hashCode();
106 public View getView(
int position, View convertView, ViewGroup parent) {
108 LayoutInflater li = getLayoutInflater();
110 v = li.inflate(R.layout.grid_item, null);
112 TextView title = (TextView) v.findViewById(
R.id.gve_title);
113 TextView date = (TextView) v.findViewById(
R.id.gve_date);
114 TextView mtype = (TextView) v.findViewById(
R.id.gve_modeltype);
115 TextView descr = (TextView) v.findViewById(
R.id.gve_description);
116 ImageView iv = (ImageView) v.findViewById(
R.id.gve_icon);
119 title.setText(i.title);
120 date.setText(
"Created: " + SimpleDateFormat.getDateInstance().format(i.
created));
121 mtype.setText(
"Model type: " + i.type.toString());
122 descr.setText(i.shortDescription == null ?
"" : i.shortDescription);
123 if (imgs[position] != null) {
124 iv.setImageDrawable(imgs[position]);
127 iv.setLayoutParams(
new LinearLayout.LayoutParams(gridView.getWidth() / 4, gridView.getHeight() / 5));
129 Log.d(
"adapter",
"getview called pos: " + position);
144 private GridView gridView;
149 private List<ModelDescriptor> items;
150 private ModelsGridViewAdapter mgva = null;
163 protected void onCreate(Bundle savedInstanceState) {
164 super.onCreate(savedInstanceState);
166 setContentView(
R.layout.prob_selection);
170 mng = Const.getModelManager(getApplicationContext(), getIntent());
172 Log.e(
"ModelListActivity",
"Creation of ModelManager failed", e);
179 final Handler h =
new Handler() {
181 public void handleMessage(Message msg) {
182 if (items == null || items.size() == 0) {
186 gridView = (GridView) findViewById(
R.id.gridview);
188 gridView.setStretchMode(GridView.STRETCH_COLUMN_WIDTH);
189 gridView.setAdapter(mgva);
192 registerForContextMenu(gridView);
195 gridView.setOnItemClickListener(
new GridView.OnItemClickListener() {
197 public void onItemClick(AdapterView<?> av, View view,
int position,
long id) {
200 intent.putExtras(getIntent().getExtras());
203 mng.useModel(i.modeldir);
205 Toast.makeText(ModelListActivity.this,
206 "Error setting the model directory " + i.modeldir +
": " + me.getMessage(),
207 Toast.LENGTH_LONG).show();
208 Log.e(
"ProbSelectionActivity",
"Error setting the model directory " + i.modeldir, me);
211 intent.putExtra(
"ModelType", i.type);
213 ModelListActivity.this.startActivityForResult(intent, 0);
225 items = mng.getModelDescriptors(pdw);
226 mgva =
new ModelsGridViewAdapter();
228 Log.e(
"ModelListActivity",
"Failed loading model descriptors", ex);
231 h.sendEmptyMessage(0);
255 AlertDialog.Builder builder =
new AlertDialog.Builder(
this);
257 builder.setMessage(
"Invalid model source given, parsing failed.").setCancelable(
false)
258 .setNeutralButton(
"OK",
new DialogInterface.OnClickListener() {
259 public void onClick(DialogInterface dialog,
int id) {
260 ModelListActivity.this.finish();
263 return builder.create();
265 builder.setMessage(
"No models found.").setCancelable(
false)
266 .setNeutralButton(
"OK",
new DialogInterface.OnClickListener() {
267 public void onClick(DialogInterface dialog,
int id) {
268 ModelListActivity.this.finish();
273 return builder.create();
284 super.onCreateContextMenu(menu, v, menuInfo);
285 getMenuInflater().inflate(R.menu.modellist_contextmenu, menu);
295 AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
296 switch (item.getItemId()) {
297 case R.id.context_deleteModelItem:
298 String dir = items.get(info.position).modeldir;
305 items.remove(info.position);
306 gridView.invalidateViews();
308 Toast.makeText(
this,
"Deleting model failed.", Toast.LENGTH_LONG).show();
311 return super.onContextItemSelected(item);
static final int NO_MODELS_DIALOG_ID
Dialog ID for the dialog that tells the user there are no models for the selected source...
Main model options display activity.
Dialog onCreateDialog(int id)
Helper method that takes a list of folders and a source which creates the ModelDescriptors using the ...
InputStream image
An input stream pointing to an available model image, if given.
Manages models loaded from the file system available via the java.io classes.
static final int NOSRC_DIALOG_ID
Dialog ID for the case of an invalid or nonexistent Source ID.
This class serves as base class for accessing various types of models at different locations...
Helper class for progress dialogs on android platforms.
boolean onContextItemSelected(MenuItem item)
void onActivityResult(int requestCode, int resultCode, Intent data)
Represents a short description of a model managed by a model manager.
This activity generates a simple ListView to allow selection of a model.
void onCreate(Bundle savedInstanceState)
This Exception gets thrown when an error occurs regarding the functionality of the ModelManager...
Date created
The model creation date.
static final String EXTRA_MODELMANAGER_MODELDIR
The string extra in intents to tell which model directory is currently used.
Class that contains miscellaneous JaRMoS specific constants and static functions. ...
void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo)