From e3fb89fafd3b190d6674fe7a09764f8a7e05de82 Mon Sep 17 00:00:00 2001 From: Maxime Graulich <maxime.graulich@gmail.com> Date: Thu, 5 Sep 2013 08:15:45 +0000 Subject: [PATCH] Android: add listeners on options changed --- .../src/org/geuz/onelab/MainActivity.java | 31 ++++---------- .../src/org/geuz/onelab/ModelFragment.java | 18 +++++--- .../geuz/onelab/OptionsDisplayFragment.java | 30 ++++---------- .../src/org/geuz/onelab/OptionsFragment.java | 12 ++++++ .../org/geuz/onelab/OptionsModelFragment.java | 29 ++++++++++--- .../onelab/OptionsPostProcessingFragment.java | 2 +- .../src/org/geuz/onelab/Parameter.java | 14 ++----- .../src/org/geuz/onelab/ParameterNumber.java | 40 +++++++----------- .../src/org/geuz/onelab/ParameterString.java | 41 ++++++++++--------- 9 files changed, 105 insertions(+), 112 deletions(-) diff --git a/contrib/mobile/Android/src/org/geuz/onelab/MainActivity.java b/contrib/mobile/Android/src/org/geuz/onelab/MainActivity.java index 9c891dfab2..ee2d90cb05 100644 --- a/contrib/mobile/Android/src/org/geuz/onelab/MainActivity.java +++ b/contrib/mobile/Android/src/org/geuz/onelab/MainActivity.java @@ -20,7 +20,7 @@ import android.view.Window; import android.view.WindowManager; -public class MainActivity extends Activity implements OptionsDisplayFragment.OnOptionRequestRender{ +public class MainActivity extends Activity{ private Gmsh _gmsh; private boolean _compute, _twoPane; @@ -68,6 +68,12 @@ public class MainActivity extends Activity implements OptionsDisplayFragment.OnO _modelFragment = ModelFragment.newInstance(_gmsh); getFragmentManager().beginTransaction().add(R.id.model_fragment, _modelFragment).commit(); } + _optionsFragment.setOnOptionsChangedListener(new OptionsFragment.OnOptionsChangedListener() { + + public void OnOptionsChanged() { + _modelFragment.requestRender(); + } + }); } @Override @@ -136,22 +142,6 @@ public class MainActivity extends Activity implements OptionsDisplayFragment.OnO protected void onPreExecute() { _compute = true; _runStopMenuItem.setTitle(R.string.menu_stop); - /*loading.setTitle("Please wait"); - loading.setButton(DialogInterface.BUTTON_NEUTRAL, "Hide", new DialogInterface.OnClickListener() { - - public void onClick(DialogInterface dialog, int which) { - loading.dismiss(); - } - }); - loading.setButton(DialogInterface.BUTTON_NEGATIVE, "Stop", new DialogInterface.OnClickListener() { - - public void onClick(DialogInterface dialog, int which) { - gmsh.onelabCB("stop"); - } - }); - loading.setMessage("..."); - loading.show(); - reset.setEnabled(false);*/ super.onPreExecute(); } @@ -171,22 +161,19 @@ public class MainActivity extends Activity implements OptionsDisplayFragment.OnO } } - public void onRequestRender() { - _modelFragment.requestRender(); - } private void showError(){ if(_errors.size()>0){ if(_errorDialog != null && _errorDialog.isShowing()) _errorDialog.dismiss(); AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(this); _errorDialog = dialogBuilder.setTitle("Gmsh/GetDP Error(s)") .setMessage(_errors.get(_errors.size()-1)) - .setNegativeButton("Stop", new DialogInterface.OnClickListener() { + .setNegativeButton("Hide", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { _errors.clear(); _errorDialog.dismiss(); } }) - .setPositiveButton("Continue", new DialogInterface.OnClickListener() { + .setPositiveButton("Show more", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { _errors.remove(_errors.size()-1); _errorDialog.dismiss(); diff --git a/contrib/mobile/Android/src/org/geuz/onelab/ModelFragment.java b/contrib/mobile/Android/src/org/geuz/onelab/ModelFragment.java index 686984fbf0..d304722146 100644 --- a/contrib/mobile/Android/src/org/geuz/onelab/ModelFragment.java +++ b/contrib/mobile/Android/src/org/geuz/onelab/ModelFragment.java @@ -3,10 +3,12 @@ package org.geuz.onelab; import android.app.Fragment; import android.opengl.GLSurfaceView; import android.os.Bundle; +import android.view.Gravity; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.LinearLayout; +import android.widget.ProgressBar; import android.widget.RelativeLayout; import android.widget.TextView; @@ -15,6 +17,7 @@ public class ModelFragment extends Fragment{ Gmsh _gmsh; mGLSurfaceView _glView; TextView _progress; + LinearLayout _progressLayout; public static ModelFragment newInstance(Gmsh g) { ModelFragment fragment = new ModelFragment(); @@ -45,23 +48,26 @@ public class ModelFragment extends Fragment{ _glView.setRenderMode(GLSurfaceView.RENDERMODE_WHEN_DIRTY); _glView.requestRender(); glViewLayout.addView(_glView); + _progressLayout = new LinearLayout(container.getContext()); + ProgressBar bar = new ProgressBar(container.getContext()); + _progressLayout.addView(bar); _progress = new TextView(container.getContext()); - _progress.setAlpha(0); + _progressLayout.setAlpha(0); + _progressLayout.setGravity(Gravity.CENTER); + _progressLayout.addView(_progress); RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams( RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT); layoutParams.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM); - _progress.setPadding(10, 0, 10, 10); - _progress.setLayoutParams(layoutParams); - glViewLayout.addView(_progress); + glViewLayout.addView(_progressLayout, layoutParams); return rootView; } public void showProgress(String progress) { - _progress.setAlpha(1); + _progressLayout.setAlpha(1); _progress.setText(progress); } public void hideProgress() { - _progress.setAlpha(0); + _progressLayout.setAlpha(0); _progress.setText(""); } public void requestRender() { diff --git a/contrib/mobile/Android/src/org/geuz/onelab/OptionsDisplayFragment.java b/contrib/mobile/Android/src/org/geuz/onelab/OptionsDisplayFragment.java index 5f5696b9a6..cab1edbac3 100644 --- a/contrib/mobile/Android/src/org/geuz/onelab/OptionsDisplayFragment.java +++ b/contrib/mobile/Android/src/org/geuz/onelab/OptionsDisplayFragment.java @@ -2,7 +2,6 @@ package org.geuz.onelab; import android.os.Bundle; import android.os.Parcelable; -import android.app.Activity; import android.app.Fragment; import android.content.Intent; import android.graphics.Color; @@ -51,7 +50,7 @@ public class OptionsDisplayFragment extends Fragment{ public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { _gmsh.setDoubleOption("Geometry", "Points", (isChecked)?1. : 0.); - mCallback.onRequestRender(); + if(mListener != null) mListener.OnModelOptionsChanged(); } }); _listView.addItem("Display", showGeomPoints); @@ -62,7 +61,7 @@ public class OptionsDisplayFragment extends Fragment{ public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { _gmsh.setDoubleOption("Geometry", "Lines", (isChecked)?1. : 0.); - mCallback.onRequestRender(); + if(mListener != null) mListener.OnModelOptionsChanged(); } }); _listView.addItem("Display", showGeomLines); @@ -73,7 +72,7 @@ public class OptionsDisplayFragment extends Fragment{ public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { _gmsh.setDoubleOption("Mesh", "SurfaceEdges", (isChecked)?1. : 0.); - mCallback.onRequestRender(); + if(mListener != null) mListener.OnModelOptionsChanged(); } }); _listView.addItem("Display", showMeshSurfaceEdges); @@ -84,7 +83,7 @@ public class OptionsDisplayFragment extends Fragment{ public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { _gmsh.setDoubleOption("Mesh", "VolumeEdges", (isChecked)?1. : 0.); - mCallback.onRequestRender(); + if(mListener != null) mListener.OnModelOptionsChanged(); } }); _listView.addItem("Display", showMeshVolumesEdges); @@ -107,7 +106,7 @@ public class OptionsDisplayFragment extends Fragment{ public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { _gmsh.setPView(myID, -1, (isChecked)? 1 : 0, -1); - mCallback.onRequestRender(); + if(mListener != null) mListener.OnModelOptionsChanged(); } }); Button button = new Button(_listView.getContext()); @@ -128,21 +127,10 @@ public class OptionsDisplayFragment extends Fragment{ _listView.addItem("Result", layout); } } - - @Override - public void onAttach(Activity activity) { - super.onAttach(activity); - try { - mCallback = (OnOptionRequestRender) activity; - } catch (ClassCastException e) { - throw new ClassCastException(activity.toString() - + " must implement OnHeadlineSelectedListener"); - } - } - - private OnOptionRequestRender mCallback; - public interface OnOptionRequestRender { - public void onRequestRender(); + private OnModelOptionsChangedListener mListener; + public void setOnModelOptionsChangedListener(OnModelOptionsChangedListener listener) { mListener = listener;} + public interface OnModelOptionsChangedListener { + void OnModelOptionsChanged(); } } diff --git a/contrib/mobile/Android/src/org/geuz/onelab/OptionsFragment.java b/contrib/mobile/Android/src/org/geuz/onelab/OptionsFragment.java index 496f3dbb9e..000742775b 100644 --- a/contrib/mobile/Android/src/org/geuz/onelab/OptionsFragment.java +++ b/contrib/mobile/Android/src/org/geuz/onelab/OptionsFragment.java @@ -41,6 +41,12 @@ public class OptionsFragment extends Fragment{ Bundle savedInstanceState) { LinearLayout rootView = (LinearLayout)inflater.inflate(R.layout.fragment_options, container, false); _optionModelFragment = OptionsModelFragment.newInstance(_gmsh); + _optionModelFragment.setOnModelOptionsChangedListener(new OptionsModelFragment.OnModelOptionsChangedListener() { + + public void OnModelOptionsChanged() { + if(mListener != null) mListener.OnOptionsChanged(); + } + }); _optionDisplayFragment = OptionsDisplayFragment.newInstance(_gmsh); final Button optionModel = (Button) rootView.findViewById(R.id.goto_options_model); final Button optionDisplay = (Button) rootView.findViewById(R.id.goto_options_display); @@ -91,4 +97,10 @@ public class OptionsFragment extends Fragment{ if(_optionDisplayFragment != null)_optionDisplayFragment.refresh(); if(_optionModelFragment != null)_optionModelFragment.refresh(); } + + private OnOptionsChangedListener mListener; + public void setOnOptionsChangedListener(OnOptionsChangedListener listener) { mListener = listener;} + public interface OnOptionsChangedListener { + void OnOptionsChanged(); + } } diff --git a/contrib/mobile/Android/src/org/geuz/onelab/OptionsModelFragment.java b/contrib/mobile/Android/src/org/geuz/onelab/OptionsModelFragment.java index 2eeb99ddf4..1c06970f08 100644 --- a/contrib/mobile/Android/src/org/geuz/onelab/OptionsModelFragment.java +++ b/contrib/mobile/Android/src/org/geuz/onelab/OptionsModelFragment.java @@ -3,6 +3,8 @@ package org.geuz.onelab; import java.util.ArrayList; import java.util.List; +import org.geuz.onelab.OptionsFragment.OnOptionsChangedListener; + import android.app.Fragment; import android.os.Bundle; import android.view.LayoutInflater; @@ -25,7 +27,6 @@ public class OptionsModelFragment extends Fragment{ public OptionsModelFragment() { super(); } - @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -45,6 +46,7 @@ public class OptionsModelFragment extends Fragment{ public void refresh() { if(_gmsh == null) return; this.getAvailableParam(); + if(_listView != null) _listView.refresh(); } private void getAvailableParam(){ @@ -64,15 +66,29 @@ public class OptionsModelFragment extends Fragment{ if(found) continue; // add new parameter if(s.split(Character.toString((char)0x03))[1].equals("number")){ - final ParameterNumber mParam = new ParameterNumber(_listView.getContext(), _gmsh, mCallback, ""); + final ParameterNumber mParam = new ParameterNumber(_listView.getContext(), _gmsh, ""); if(mParam.fromString(s) == -1) continue; + mParam.setOnParameterChangedListener(new ParameterNumber.OnParameterChangedListener() { + + public void OnParameterChanged() { + if(_gmsh.onelabCB("check") > 0 && mListener != null) mListener.OnModelOptionsChanged();; + refresh(); + } + }); params.add(mParam); if(_listView != null) _listView.addItem(mParam.getName().split("/")[0].equals("Parameters")? mParam.getName().split("/")[0] + " > " + mParam.getName().split("/")[1]: mParam.getName().split("/")[0], mParam.getView()); } else if(s.split("|")[1].equals("string")){ - ParameterString mParam = new ParameterString(_listView.getContext(), _gmsh, mCallback, ""); + ParameterString mParam = new ParameterString(_listView.getContext(), _gmsh, ""); if(mParam.fromString(s) != -1){ + mParam.setOnParameterChangedListener(new ParameterString.OnParameterChangedListener() { + + public void OnParameterChanged() { + if(_gmsh.onelabCB("check") > 0 && mListener != null) mListener.OnModelOptionsChanged(); + refresh(); + } + }); params.add(mParam); if(_listView != null) _listView.addItem(mParam.getName().split("/")[0], mParam.getView()); @@ -80,8 +96,9 @@ public class OptionsModelFragment extends Fragment{ } } } - private OnOptionRequestRender mCallback; - public interface OnOptionRequestRender { - public void onRequestRender(); + private OnModelOptionsChangedListener mListener; + public void setOnModelOptionsChangedListener(OnModelOptionsChangedListener listener) { mListener = listener;} + public interface OnModelOptionsChangedListener { + void OnModelOptionsChanged(); } } diff --git a/contrib/mobile/Android/src/org/geuz/onelab/OptionsPostProcessingFragment.java b/contrib/mobile/Android/src/org/geuz/onelab/OptionsPostProcessingFragment.java index 8ed043d9d3..14f4107c09 100644 --- a/contrib/mobile/Android/src/org/geuz/onelab/OptionsPostProcessingFragment.java +++ b/contrib/mobile/Android/src/org/geuz/onelab/OptionsPostProcessingFragment.java @@ -52,7 +52,7 @@ public class OptionsPostProcessingFragment extends Fragment{ LinearLayout layout = (LinearLayout)inflater.inflate(R.layout.fragment_postprocessing, container, false); final Spinner intervalsType = (Spinner)layout.findViewById(R.id.intervals_type); final EditText intervals = (EditText)layout.findViewById(R.id.intervals); - final SeekBar raiseZ = (SeekBar)layout.findViewById(R.id.raisez); + final SeekBar raiseZ = (SeekBar)layout.findViewById(R.id.raisez); // TODO intervalsType.setEnabled(infos[2].equals("1")); ArrayList<String> choices; ArrayAdapter<String> adapter; diff --git a/contrib/mobile/Android/src/org/geuz/onelab/Parameter.java b/contrib/mobile/Android/src/org/geuz/onelab/Parameter.java index 75a4db6fd8..3542e046a2 100644 --- a/contrib/mobile/Android/src/org/geuz/onelab/Parameter.java +++ b/contrib/mobile/Android/src/org/geuz/onelab/Parameter.java @@ -1,8 +1,5 @@ package org.geuz.onelab; - -import org.geuz.onelab.OptionsModelFragment.OnOptionRequestRender; - import android.content.Context; import android.graphics.Color; import android.widget.LinearLayout; @@ -12,18 +9,15 @@ import android.widget.TextView; public class Parameter { protected Context _context; protected Gmsh _gmsh; - protected SeparatedListView _listView; - protected OnOptionRequestRender _callback; protected String _name; protected String _label; protected boolean _readOnly; protected boolean _changed; protected TextView _title; - public Parameter(Context context, Gmsh gmsh, OnOptionRequestRender callback, String name){ + public Parameter(Context context, Gmsh gmsh, String name){ _context = context; _gmsh = gmsh; - _callback = callback; _readOnly = false; _name = name; _title = new TextView(context); @@ -31,8 +25,8 @@ public class Parameter { _title.setTextAppearance(context, android.R.style.TextAppearance_DeviceDefault_Medium); _title.setTextColor(Color.DKGRAY); } - public Parameter(Context context, Gmsh gmsh, OnOptionRequestRender callback, String name, boolean readOnly){ - this(context, gmsh, callback, name); + public Parameter(Context context, Gmsh gmsh, String name, boolean readOnly){ + this(context, gmsh, name); _readOnly = readOnly; _changed = false; } @@ -75,8 +69,6 @@ public class Parameter { public boolean changed() { if(_changed){_changed=false; return true;}return _changed;} public String getType(){return "Parameter";} - public void setList(SeparatedListView list){ _listView = list;} - public LinearLayout getView() { LinearLayout paramLayout = new LinearLayout(_context); paramLayout.setOrientation(LinearLayout.VERTICAL); diff --git a/contrib/mobile/Android/src/org/geuz/onelab/ParameterNumber.java b/contrib/mobile/Android/src/org/geuz/onelab/ParameterNumber.java index d21964b926..ede4549b33 100644 --- a/contrib/mobile/Android/src/org/geuz/onelab/ParameterNumber.java +++ b/contrib/mobile/Android/src/org/geuz/onelab/ParameterNumber.java @@ -2,8 +2,6 @@ package org.geuz.onelab; import java.util.ArrayList; -import org.geuz.onelab.OptionsModelFragment.OnOptionRequestRender; - import android.content.Context; import android.text.Editable; import android.text.TextWatcher; @@ -30,20 +28,20 @@ public class ParameterNumber extends Parameter{ private CheckBox _checkbox; private EditText _edittext; - public ParameterNumber(Context context, Gmsh gmsh, OnOptionRequestRender callback, String name){ - super(context, gmsh, callback, name); + public ParameterNumber(Context context, Gmsh gmsh, String name){ + super(context, gmsh, name); } - public ParameterNumber(Context context, Gmsh gmsh, OnOptionRequestRender callback, String name, double value, double min, double max, double step) + public ParameterNumber(Context context, Gmsh gmsh, String name, double value, double min, double max, double step) { - this(context, gmsh, callback, name); + this(context, gmsh, name); _value = value; _min = min; _max = max; _step = step; } - public ParameterNumber(Context context, Gmsh gmsh, OnOptionRequestRender callback, String name, boolean readOnly, double value, double min, double max, double step) + public ParameterNumber(Context context, Gmsh gmsh, String name, boolean readOnly, double value, double min, double max, double step) { - this(context, gmsh, callback, name, value, min, max, step); + this(context, gmsh, name, value, min, max, step); _readOnly = readOnly; } @@ -84,8 +82,9 @@ public class ParameterNumber extends Parameter{ Log.w("ParameterNumber", "Incorect value "+value+" (max="+_max+" min="+_min+")"); return; } - if(value != _value) - _changed = true; + if(value == _value) return; + if(mListener != null) mListener.OnParameterChanged(); + _changed = true; _value = value; this.update(); } @@ -142,9 +141,7 @@ public class ParameterNumber extends Parameter{ int nChoix = Integer.parseInt(infos[pos++]); // choices' size double choices[] = new double[nChoix]; for(int i=0; i<nChoix; i++) - if(nChoix == 2) choices[i] = Double.parseDouble(infos[pos++]); // choice - else pos++; int nLabels = Integer.parseInt(infos[pos++]); // labels' size if(nChoix == 2 && choices[0] == 0 && choices[1] == 1 && nLabels == 0) { _checkbox = new CheckBox(_context); @@ -172,23 +169,14 @@ public class ParameterNumber extends Parameter{ if(_spinner != null) { paramLayout.addView(_spinner); _spinner.setEnabled(!_readOnly); - _spinner.setOnFocusChangeListener(new View.OnFocusChangeListener() { - - public void onFocusChange(View v, boolean hasFocus) { - if(_listView != null) _listView.refresh(); - } - }); _spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { public void onNothingSelected(AdapterView<?> arg0) {} public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) { - if(_listView != null) _listView.refresh(); setValue(_values.get(pos)); _gmsh.setParam(getType(), getName(), String.valueOf(_values.get(pos))); - if(_gmsh.onelabCB("check") == 1 && _callback != null) - _callback.onRequestRender(); } }); @@ -200,14 +188,11 @@ public class ParameterNumber extends Parameter{ public void onStopTrackingTouch(SeekBar seekBar) { _gmsh.setParam(getType(), getName(), String.valueOf(getValue())); // update parameter and the perform a check - if(_gmsh.onelabCB("check") == 1 && _callback != null) - _callback.onRequestRender(); } public void onStartTrackingTouch(SeekBar seekBar) {} public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { - if(_listView != null) _listView.refresh(); setValue(getMin() + getStep()*(double)progress); } }); @@ -219,7 +204,6 @@ public class ParameterNumber extends Parameter{ _checkbox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { - if(_listView != null) _listView.refresh(); setValue((isChecked)? 1 : 0); _gmsh.setParam(getType(), getName(), String.valueOf(_value)); } @@ -247,7 +231,6 @@ public class ParameterNumber extends Parameter{ _edittext.addTextChangedListener(new TextWatcher() { public void onTextChanged(CharSequence s, int start, int before, int count) { - if(_listView != null) _listView.refresh(); double value = 1; try { if(s.length() < 1) value = 1; @@ -269,4 +252,9 @@ public class ParameterNumber extends Parameter{ } return paramLayout; } + private OnParameterChangedListener mListener; + public void setOnParameterChangedListener(OnParameterChangedListener listener) { mListener = listener;} + public interface OnParameterChangedListener { + void OnParameterChanged(); + } } diff --git a/contrib/mobile/Android/src/org/geuz/onelab/ParameterString.java b/contrib/mobile/Android/src/org/geuz/onelab/ParameterString.java index ae6c5f8c38..8b4801b90b 100644 --- a/contrib/mobile/Android/src/org/geuz/onelab/ParameterString.java +++ b/contrib/mobile/Android/src/org/geuz/onelab/ParameterString.java @@ -2,8 +2,6 @@ package org.geuz.onelab; import java.util.ArrayList; -import org.geuz.onelab.OptionsModelFragment.OnOptionRequestRender; - import android.content.Context; import android.text.Editable; import android.text.TextWatcher; @@ -25,8 +23,8 @@ public class ParameterString extends Parameter{ private Spinner _spinner; private EditText _edittext; - public ParameterString(Context context, Gmsh gmsh, OnOptionRequestRender callback, String name) { - super(context, gmsh, callback, name); + public ParameterString(Context context, Gmsh gmsh, String name) { + super(context, gmsh, name); _choices = new ArrayList<String>(); _choices.add("-"); // Default choice } @@ -48,15 +46,24 @@ public class ParameterString extends Parameter{ _edittext.setText(_choices.get(0)); } - public void setValue(int index) {if(index != _index)_changed = true;_index = index;this.update();} + public void setValue(int index) { + if(index == _index) return; + if(mListener != null) mListener.OnParameterChanged(); + _changed = true; + _index = index; + this.update(); + } public void setValue(String value) { int index = _choices.indexOf(value); if(index < 0) { // the value is not in the list, add it this.addChoices(value); index = _choices.indexOf(value); } - if(index != _index)_changed = true; - _index = index;this.update(); + if(index == _index) return; + if(mListener != null) mListener.OnParameterChanged(); + _changed = true; + _index = index; + this.update(); } public void setKind(String kind) {_kind = kind;} public void addChoices(String choice) { @@ -73,6 +80,7 @@ public class ParameterString extends Parameter{ public int getIndex() {return _index;} public ArrayList<String> getChoices() {return _choices;} public int fromString(String s){ + _choices.clear(); int pos = super.fromString(s); if(pos <= 0) return -1; // error String[] infos = s.split(Character.toString((char)0x03)); @@ -97,23 +105,15 @@ public class ParameterString extends Parameter{ if(_spinner != null){ paramLayout.addView(_spinner); _spinner.setEnabled(!_readOnly); - _spinner.setOnFocusChangeListener(new View.OnFocusChangeListener() { - - public void onFocusChange(View v, boolean hasFocus) { - if(_listView != null) _listView.refresh(); - } - }); _spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { public void onNothingSelected(AdapterView<?> arg0) {} public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) { + if(getValue() == getChoices().get(pos)) return; setValue(pos); _gmsh.setParam(getType(), getName(), String.valueOf(getValue())); - if(_gmsh.onelabCB("check") == 1 && _callback != null) - _callback.onRequestRender(); - if(_listView != null) _listView.refresh(); } }); @@ -136,9 +136,7 @@ public class ParameterString extends Parameter{ }); _edittext.addTextChangedListener(new TextWatcher() { - public void onTextChanged(CharSequence s, int start, int before, int count) { - if(_listView != null) _listView.refresh(); - } + public void onTextChanged(CharSequence s, int start, int before, int count) { } // UNUSED Auto-generated method stub public void beforeTextChanged(CharSequence s, int start, int count, int after) {} // UNUSED Auto-generated method stub @@ -150,5 +148,10 @@ public class ParameterString extends Parameter{ } return paramLayout; } + private OnParameterChangedListener mListener; + public void setOnParameterChangedListener(OnParameterChangedListener listener) { mListener = listener;} + public interface OnParameterChangedListener { + void OnParameterChanged(); + } } -- GitLab