List of usage examples for android.view View getTouchables
public ArrayList<View> getTouchables()
From source file:cl.gisred.android.LectorActivity.java
private void cerrarFormCrear(boolean bSave, View v) { if (bSave) {/* w ww . j av a 2 s . com*/ final AtomicReference<String> resp = new AtomicReference<>(""); if (!validarForm(v)) { DialogoConfirmacion oDialog = new DialogoConfirmacion(); oDialog.show(getFragmentManager(), "tagAlert"); return; } else { View vAction = getLayoutValidate(v); Map<String, Object> objectMap = new HashMap<>(); for (View view : vAction.getTouchables()) { if (view.getClass().getGenericSuperclass().equals(EditText.class)) { EditText oText = (EditText) view; if (oText.getId() == R.id.txtNroMedidor) { String oVal = (oText.getText().toString().isEmpty()) ? "0" : oText.getText().toString(); objectMap.put("nro_medidor", oVal); } if (oText.getId() == R.id.txtLectura) { String oVal = (oText.getText().toString().isEmpty()) ? "0" : oText.getText().toString(); objectMap.put("lectura_actual", oVal); } if (oText.getId() == R.id.txtPoste) objectMap.put("poste", oText.getText().toString()); if (oText.getId() == R.id.txtDireccion) objectMap.put("direccion", oText.getText().toString()); } else if (view.getClass().getGenericSuperclass().equals(Spinner.class)) { Spinner oSpinner = (Spinner) view; String sValue = oSpinner.getSelectedItem().toString(); if (oSpinner.getId() == R.id.spinnerEstado) objectMap.put("estado", sValue); else if (oSpinner.getId() == R.id.spinnerTipoEdific) objectMap.put("tipo_edificacion", sValue); else if (oSpinner.getId() == R.id.spinnerUser) objectMap.put("lector", sValue); } } Graphic newFeatureGraphic = new Graphic(oUbicacion, null, objectMap); Graphic[] adds = { newFeatureGraphic }; LyAddLectores.applyEdits(adds, null, null, new CallbackListener<FeatureEditResult[][]>() { @Override public void onCallback(FeatureEditResult[][] featureEditResults) { if (featureEditResults[0] != null) { if (featureEditResults[0][0] != null && featureEditResults[0][0].isSuccess()) { resp.set("Guardado Correctamente Id: " + featureEditResults[0][0].getObjectId()); runOnUiThread(new Runnable() { @Override public void run() { Util.showConfirmation(LectorActivity.this, resp.get()); } }); } } } @Override public void onError(Throwable throwable) { resp.set("Error al ingresar: " + throwable.getLocalizedMessage()); Log.w("onError", resp.get()); runOnUiThread(new Runnable() { @Override public void run() { Toast.makeText(LectorActivity.this, resp.get(), Toast.LENGTH_SHORT).show(); } }); } }); } } bMapTap = false; oUbicacion = null; if (mBusquedaLayer != null && myMapView.getLayerByID(mBusquedaLayer.getID()) != null) myMapView.removeLayer(mBusquedaLayer); if (mUbicacionLayer != null && myMapView.getLayerByID(mUbicacionLayer.getID()) != null) myMapView.removeLayer(mUbicacionLayer); if (mSeleccionLayer != null && myMapView.getLayerByID(mSeleccionLayer.getID()) != null) myMapView.removeLayer(mSeleccionLayer); if (bVerCapas) toogleCapas(fabVerCapas); if (bIngCliente) menuMultipleActions.setVisibility(View.VISIBLE); menuLectorActions.setVisibility(View.VISIBLE); fabShowForm.setVisibility(View.GONE); formCrear.dismiss(); if (LyAddLectores != null) LyAddLectores.setVisible(true); }
From source file:cl.gisred.android.MantCatastroActivity.java
private int recorrerForm(View v) { int contRequeridos = 0; for (View view : v.getTouchables()) { if (view.getClass().getGenericSuperclass().equals(EditText.class)) { EditText oText = (EditText) view; TextInputLayout oTextInput = (TextInputLayout) oText.getParentForAccessibility(); if (oTextInput.getHint() != null && oTextInput.getHint().toString().contains("*")) { if (oText.getText().toString().trim().isEmpty()) { contRequeridos++;//from w ww. j a v a 2 s .com oText.setError("Campo obligatorio"); } else { oText.setError(null); } } } else if (view.getClass().getGenericSuperclass().equals(Spinner.class)) { Spinner oSpinner = (Spinner) view; if (oSpinner.getSelectedItem().toString().isEmpty()) contRequeridos++; } } return contRequeridos; }
From source file:cl.gisred.android.MantCatastroActivity.java
private void cerrarFormMant(boolean bSave, View v) { if (bSave) {/* w ww.j av a2 s . c o m*/ final AtomicReference<String> resp = new AtomicReference<>(""); if (!validarForm(v)) { DialogoConfirmacion oDialog = new DialogoConfirmacion(); oDialog.show(getFragmentManager(), "tagAlert"); return; } else { View vAction = getLayoutValidate(v); Map<String, Object> objectMap = new HashMap<>(); for (View view : vAction.getTouchables()) { if (view.getClass().getGenericSuperclass().equals(Spinner.class)) { Spinner oSpinner = (Spinner) view; String sValue = oSpinner.getSelectedItem().toString(); if (oSpinner.getId() == R.id.spinnerElement) objectMap.put("elemento", sValue); else if (oSpinner.getId() == R.id.spinnerDiagnostic) objectMap.put("diagnostico", sValue); else if (oSpinner.getId() == R.id.spinnerMaterial) objectMap.put("material", sValue); else if (oSpinner.getId() == R.id.spinnerCriticidad) objectMap.put("criticidad", sValue); } } objectMap.put("id_padre", idNodo); objectMap.put("rotulo", rotulo); objectMap.put("empresa", empresa); objectMap.put("estado", "Informado"); Graphic newFeatureGraphic = new Graphic(oUbicacionForm, null, objectMap); Graphic[] adds = { newFeatureGraphic }; LyAddMantCatastro.applyEdits(adds, null, null, new CallbackListener<FeatureEditResult[][]>() { @Override public void onCallback(FeatureEditResult[][] featureEditResults) { if (featureEditResults[0] != null) { if (featureEditResults[0][0] != null && featureEditResults[0][0].isSuccess()) { resp.set("Guardado Correctamente Id: " + featureEditResults[0][0].getObjectId()); runOnUiThread(new Runnable() { @Override public void run() { Util.showConfirmation(MantCatastroActivity.this, resp.get()); } }); } } } @Override public void onError(Throwable throwable) { resp.set("Error al ingresar: " + throwable.getLocalizedMessage()); Log.w("onError", resp.get()); runOnUiThread(new Runnable() { @Override public void run() { Toast.makeText(MantCatastroActivity.this, resp.get(), Toast.LENGTH_SHORT).show(); } }); } }); } } bMapTap = false; oUbicacionForm = null; if (mBusquedaLayer != null && myMapView.getLayerByID(mBusquedaLayer.getID()) != null) myMapView.removeLayer(mBusquedaLayer); if (mUbicacionLayer != null && myMapView.getLayerByID(mUbicacionLayer.getID()) != null) myMapView.removeLayer(mUbicacionLayer); if (mSeleccionLayer != null && myMapView.getLayerByID(mSeleccionLayer.getID()) != null) myMapView.removeLayer(mSeleccionLayer); if (bVerCapas) toogleCapas(fabVerCapas); if (bIngCliente) menuMultipleActions.setVisibility(View.VISIBLE); fabShowForm.setVisibility(View.GONE); formMant.dismiss(); if (LyAddMantCatastro != null) LyAddMantCatastro.setVisible(true); }
From source file:cl.gisred.android.MicroMedidaActivity.java
private int recorrerForm(View v) { int contRequeridos = 0; for (View view : v.getTouchables()) { if (view.getClass().getGenericSuperclass().equals(EditText.class)) { EditText oText = (EditText) view; if (oText.getId() == R.id.txtNroMedidor) { setRequerido(view, R.id.txtAddress, oText.getText().toString().length() > 3); }/* w w w. java 2 s. c o m*/ TextInputLayout oTextInput = (TextInputLayout) oText.getParentForAccessibility(); if (oTextInput.getHint() != null && oTextInput.getHint().toString().contains("*")) { if (oText.getText().toString().trim().isEmpty()) { contRequeridos++; oText.setError("Campo obligatorio"); } else { oText.setError(null); } } } else if (view.getClass().getGenericSuperclass().equals(Spinner.class)) { Spinner oSpinner = (Spinner) view; if (oSpinner.getSelectedItem().toString().isEmpty()) contRequeridos++; } } return contRequeridos; }
From source file:cl.gisred.android.RegEquipoActivity.java
private void cerrarFormLimit(boolean bSave, View v) { // TODO Usar Layer Indicada bSave = false;//from w ww. j a v a 2s . c o m if (bSave) { final AtomicReference<String> resp = new AtomicReference<>(""); if (!validarZoneLimit(v)) { DialogoConfirmacion oDialog = new DialogoConfirmacion(); oDialog.show(getFragmentManager(), "tagAlert"); return; } else { View vAction = getLayoutValidate(v); Map<String, Object> objectMap = new HashMap<>(); for (View view : vAction.getTouchables()) { if (view.getClass().equals(GisEditText.class)) { GisEditText oText = (GisEditText) view; if (oText.getText() != null && !oText.getText().toString().isEmpty()) { if (oText.getId() == R.id.txtPoste) { objectMap.put("id_poste", oText.getIdObjeto()); oUbicacion = oText.getPoint(); } else if (oText.getId() == R.id.txtTramoBt) { objectMap.put("id_tramo", oText.getText().toString()); } } } } objectMap.put("empresa", empresa); objectMap.put("modulo", modulo); Graphic newFeatureGraphic = new Graphic(oUbicacion, null, objectMap); Graphic[] adds = { newFeatureGraphic }; LyRetRegEquipo.applyEdits(adds, null, null, new CallbackListener<FeatureEditResult[][]>() { @Override public void onCallback(FeatureEditResult[][] featureEditResults) { if (featureEditResults[0] != null) { if (featureEditResults[0][0] != null && featureEditResults[0][0].isSuccess()) { resp.set("Guardado Correctamente Id: " + featureEditResults[0][0].getObjectId()); runOnUiThread(new Runnable() { @Override public void run() { Util.showConfirmation(RegEquipoActivity.this, resp.get()); } }); } } } @Override public void onError(Throwable throwable) { resp.set("Error al ingresar: " + throwable.getLocalizedMessage()); Log.w("onError", resp.get()); runOnUiThread(new Runnable() { @Override public void run() { Toast.makeText(RegEquipoActivity.this, resp.get(), Toast.LENGTH_SHORT).show(); } }); } }); } } bMapTap = false; oUbicacion = null; if (mBusquedaLayer != null && myMapView.getLayerByID(mBusquedaLayer.getID()) != null) myMapView.removeLayer(mBusquedaLayer); if (mUbicacionLayer != null && myMapView.getLayerByID(mUbicacionLayer.getID()) != null) myMapView.removeLayer(mUbicacionLayer); if (mSeleccionLayer != null && myMapView.getLayerByID(mSeleccionLayer.getID()) != null) myMapView.removeLayer(mSeleccionLayer); if (bVerCapas) toogleCapas(fabVerCapas); if (bIngCliente) menuMultipleActions.setVisibility(View.VISIBLE); menuMicroActions.setVisibility(View.VISIBLE); fabShowForm.setVisibility(View.GONE); formCrear.dismiss(); if (LyRetRegEquipo != null) LyRetRegEquipo.setVisible(true); }
From source file:cl.gisred.android.MicroMedidaActivity.java
private void cerrarFormLimit(boolean bSave, View v) { if (bSave) {/*from w w w. ja va2 s.c om*/ final AtomicReference<String> resp = new AtomicReference<>(""); if (!validarZoneLimit(v)) { DialogoConfirmacion oDialog = new DialogoConfirmacion(); oDialog.show(getFragmentManager(), "tagAlert"); return; } else { View vAction = getLayoutValidate(v); Map<String, Object> objectMap = new HashMap<>(); for (View view : vAction.getTouchables()) { if (view.getClass().equals(GisEditText.class)) { GisEditText oText = (GisEditText) view; if (oText.getText() != null && !oText.getText().toString().isEmpty()) { if (oText.getId() == R.id.txtPoste) { objectMap.put("id_poste", oText.getIdObjeto()); oUbicacion = oText.getPoint(); } else if (oText.getId() == R.id.txtTramoBt) { objectMap.put("id_tramo", oText.getText().toString()); } } } } objectMap.put("empresa", empresa); objectMap.put("modulo", modulo); Graphic newFeatureGraphic = new Graphic(oUbicacion, null, objectMap); Graphic[] adds = { newFeatureGraphic }; LyAddZoneLimit.applyEdits(adds, null, null, new CallbackListener<FeatureEditResult[][]>() { @Override public void onCallback(FeatureEditResult[][] featureEditResults) { if (featureEditResults[0] != null) { if (featureEditResults[0][0] != null && featureEditResults[0][0].isSuccess()) { resp.set("Guardado Correctamente Id: " + featureEditResults[0][0].getObjectId()); runOnUiThread(new Runnable() { @Override public void run() { Util.showConfirmation(MicroMedidaActivity.this, resp.get()); } }); } } } @Override public void onError(Throwable throwable) { resp.set("Error al ingresar: " + throwable.getLocalizedMessage()); Log.w("onError", resp.get()); runOnUiThread(new Runnable() { @Override public void run() { Toast.makeText(MicroMedidaActivity.this, resp.get(), Toast.LENGTH_SHORT).show(); } }); } }); } } bMapTap = false; oUbicacion = null; if (mBusquedaLayer != null && myMapView.getLayerByID(mBusquedaLayer.getID()) != null) myMapView.removeLayer(mBusquedaLayer); if (mUbicacionLayer != null && myMapView.getLayerByID(mUbicacionLayer.getID()) != null) myMapView.removeLayer(mUbicacionLayer); if (mSeleccionLayer != null && myMapView.getLayerByID(mSeleccionLayer.getID()) != null) myMapView.removeLayer(mSeleccionLayer); if (bVerCapas) toogleCapas(fabVerCapas); if (bIngCliente) menuMultipleActions.setVisibility(View.VISIBLE); menuMicroActions.setVisibility(View.VISIBLE); fabShowForm.setVisibility(View.GONE); formCrear.dismiss(); if (LyAddZoneLimit != null) LyAddZoneLimit.setVisible(true); }
From source file:cl.gisred.android.RegEquipoActivity.java
private void cerrarFormCrear(boolean bSave, View v) { // TODO Usar Layer Indicada bSave = false;//from w w w. j a va 2 s .c o m if (bSave) { final AtomicReference<String> resp = new AtomicReference<>(""); if (!validarForm(v)) { DialogoConfirmacion oDialog = new DialogoConfirmacion(); oDialog.show(getFragmentManager(), "tagAlert"); return; } else { View vAction = getLayoutValidate(v); Map<String, Object> objectMap = new HashMap<>(); for (View view : vAction.getTouchables()) { if (view.getClass().equals(GisEditText.class)) { GisEditText oText = (GisEditText) view; if (oText.getText() != null && !oText.getText().toString().isEmpty()) { if (oText.getId() == R.id.txtPoste) { objectMap.put("id_poste_camara", oText.getIdObjeto()); objectMap.put("tipo_nodo_conex", oText.getTipo()); } else if (oText.getId() == R.id.txtTramoBt) { objectMap.put("id_tramo_bt", oText.getText().toString()); } else if (oText.getId() == R.id.txtAddress) { objectMap.put("id_direccion", oText.getIdObjeto()); objectMap.put("tipo_direccion", oText.getTipo()); } } } else if (view.getClass().getGenericSuperclass().equals(EditText.class)) { EditText oText = (EditText) view; if (oText.getId() == R.id.txtNroMedidor) { String oVal = (oText.getText().toString().isEmpty()) ? "0" : oText.getText().toString(); objectMap.put("nro_medidor", oVal); } } else if (view.getClass().getGenericSuperclass().equals(Spinner.class)) { Spinner oSpinner = (Spinner) view; String sValue = oSpinner.getSelectedItem().toString(); if (oSpinner.getId() == R.id.spinnerMarcaMed) objectMap.put("marca_medidor", sValue); else if (oSpinner.getId() == R.id.spinnerFaseCon) objectMap.put("fase_conex", sValue); else if (oSpinner.getId() == R.id.spinnerObservacion) objectMap.put("observacion", sValue); } } objectMap.put("empresa", empresa); objectMap.put("modulo", modulo); if (mLocation != null) { Point p = (Point) GeometryEngine.project(mLocation, egs, wm); objectMap.put("X", p.getX()); objectMap.put("Y", p.getY()); } Graphic newFeatureGraphic = new Graphic(oUbicacion, null, objectMap); Graphic[] adds = { newFeatureGraphic }; LyAgrRegEquipo.applyEdits(adds, null, null, new CallbackListener<FeatureEditResult[][]>() { @Override public void onCallback(FeatureEditResult[][] featureEditResults) { if (featureEditResults[0] != null) { if (featureEditResults[0][0] != null && featureEditResults[0][0].isSuccess()) { resp.set("Guardado Correctamente Id: " + featureEditResults[0][0].getObjectId()); runOnUiThread(new Runnable() { @Override public void run() { Util.showConfirmation(RegEquipoActivity.this, resp.get()); } }); } } } @Override public void onError(Throwable throwable) { resp.set("Error al ingresar: " + throwable.getLocalizedMessage()); Log.w("onError", resp.get()); runOnUiThread(new Runnable() { @Override public void run() { Toast.makeText(RegEquipoActivity.this, resp.get(), Toast.LENGTH_SHORT).show(); } }); } }); } } bMapTap = false; oUbicacion = null; if (mBusquedaLayer != null && myMapView.getLayerByID(mBusquedaLayer.getID()) != null) myMapView.removeLayer(mBusquedaLayer); if (mUbicacionLayer != null && myMapView.getLayerByID(mUbicacionLayer.getID()) != null) myMapView.removeLayer(mUbicacionLayer); if (mSeleccionLayer != null && myMapView.getLayerByID(mSeleccionLayer.getID()) != null) myMapView.removeLayer(mSeleccionLayer); if (bVerCapas) toogleCapas(fabVerCapas); if (bIngCliente) menuMultipleActions.setVisibility(View.VISIBLE); menuMicroActions.setVisibility(View.VISIBLE); fabShowForm.setVisibility(View.GONE); formCrear.dismiss(); if (LyAgrRegEquipo != null) LyAgrRegEquipo.setVisible(true); }
From source file:cl.gisred.android.MicroMedidaActivity.java
private void cerrarFormCrear(boolean bSave, View v) { if (bSave) {/* ww w . j a v a2 s .c o m*/ final AtomicReference<String> resp = new AtomicReference<>(""); if (!validarForm(v)) { DialogoConfirmacion oDialog = new DialogoConfirmacion(); oDialog.show(getFragmentManager(), "tagAlert"); return; } else { View vAction = getLayoutValidate(v); Map<String, Object> objectMap = new HashMap<>(); for (View view : vAction.getTouchables()) { if (view.getClass().equals(GisEditText.class)) { GisEditText oText = (GisEditText) view; if (oText.getText() != null && !oText.getText().toString().isEmpty()) { if (oText.getId() == R.id.txtPoste) { objectMap.put("id_poste_camara", oText.getIdObjeto()); objectMap.put("tipo_nodo_conex", oText.getTipo()); } else if (oText.getId() == R.id.txtTramoBt) { objectMap.put("id_tramo_bt", oText.getText().toString()); } else if (oText.getId() == R.id.txtAddress) { objectMap.put("id_direccion", oText.getIdObjeto()); objectMap.put("tipo_direccion", oText.getTipo()); } } } else if (view.getClass().getGenericSuperclass().equals(EditText.class)) { EditText oText = (EditText) view; if (oText.getId() == R.id.txtNroMedidor) { String oVal = (oText.getText().toString().isEmpty()) ? "0" : oText.getText().toString(); objectMap.put("nro_medidor", oVal); } } else if (view.getClass().getGenericSuperclass().equals(Spinner.class)) { Spinner oSpinner = (Spinner) view; String sValue = oSpinner.getSelectedItem().toString(); if (oSpinner.getId() == R.id.spinnerMarcaMed) objectMap.put("marca_medidor", sValue); else if (oSpinner.getId() == R.id.spinnerFaseCon) objectMap.put("fase_conex", sValue); else if (oSpinner.getId() == R.id.spinnerObservacion) objectMap.put("observacion", sValue); } } objectMap.put("empresa", empresa); objectMap.put("modulo", modulo); if (mLocation != null) { Point p = (Point) GeometryEngine.project(mLocation, egs, wm); objectMap.put("X", p.getX()); objectMap.put("Y", p.getY()); } Graphic newFeatureGraphic = new Graphic(oUbicacion, null, objectMap); Graphic[] adds = { newFeatureGraphic }; LyAddMicroMed.applyEdits(adds, null, null, new CallbackListener<FeatureEditResult[][]>() { @Override public void onCallback(FeatureEditResult[][] featureEditResults) { if (featureEditResults[0] != null) { if (featureEditResults[0][0] != null && featureEditResults[0][0].isSuccess()) { resp.set("Guardado Correctamente Id: " + featureEditResults[0][0].getObjectId()); runOnUiThread(new Runnable() { @Override public void run() { Util.showConfirmation(MicroMedidaActivity.this, resp.get()); } }); } } } @Override public void onError(Throwable throwable) { resp.set("Error al ingresar: " + throwable.getLocalizedMessage()); Log.w("onError", resp.get()); runOnUiThread(new Runnable() { @Override public void run() { Toast.makeText(MicroMedidaActivity.this, resp.get(), Toast.LENGTH_SHORT).show(); } }); } }); } } bMapTap = false; oUbicacion = null; if (mBusquedaLayer != null && myMapView.getLayerByID(mBusquedaLayer.getID()) != null) myMapView.removeLayer(mBusquedaLayer); if (mUbicacionLayer != null && myMapView.getLayerByID(mUbicacionLayer.getID()) != null) myMapView.removeLayer(mUbicacionLayer); if (mSeleccionLayer != null && myMapView.getLayerByID(mSeleccionLayer.getID()) != null) myMapView.removeLayer(mSeleccionLayer); if (bVerCapas) toogleCapas(fabVerCapas); if (bIngCliente) menuMultipleActions.setVisibility(View.VISIBLE); menuMicroActions.setVisibility(View.VISIBLE); fabShowForm.setVisibility(View.GONE); formCrear.dismiss(); if (LyAddMicroMed != null) LyAddMicroMed.setVisible(true); }
From source file:cl.gisred.android.InspActivity.java
private int recorrerForm(View v) { int contRequeridos = 0; for (View view : v.getTouchables()) { if (view.getClass().getGenericSuperclass().equals(EditText.class)) { EditText oText = (EditText) view; TextInputLayout oTextInput = (TextInputLayout) oText.getParentForAccessibility(); if (oTextInput.getHint() != null && oTextInput.getHint().toString().contains("*")) { if (oText.getText().toString().trim().isEmpty()) { contRequeridos++;//from www. ja va 2 s . c o m oText.setError("Campo obligatorio"); } else { oText.setError(null); if (oText.getId() == R.id.txtRutInst || oText.getId() == R.id.txtRutTecn) { if (!Util.validateRut(oText.getText().toString())) { contRequeridos++; oText.setError("Rut no vlido"); } else oText.setError(null); } } } } else if (view.getClass().getGenericSuperclass().equals(CheckBox.class)) { } else if (view.getClass().getGenericSuperclass().equals(Spinner.class)) { if (view.getId() == R.id.spinnerMarca || view.getId() == R.id.spinnerTipo || view.getId() == R.id.spinnerFase) { Spinner oSpinner = (Spinner) view; if (!bFallo && oSpinner.getSelectedItemPosition() == 0) contRequeridos++; } } } //28-09 Se elimina firma como requisito //contRequeridos += (valImage(v, R.id.imgFirmaTec)) ? 0 : 1; //23-09 Se elimina fotos como requisito //contRequeridos += (valImage(v, R.id.imgPhoto1)) ? 0 : 1; //contRequeridos += (valImage(v, R.id.imgPhoto2)) ? 0 : 1; //contRequeridos += (valImage(v, R.id.imgPhoto3)) ? 0 : 1; return contRequeridos; }
From source file:cl.gisred.android.InspActivity.java
private void setEnabledDialog(boolean bEnable) { View vDialog = getLayoutValidate(btnUbicacion); if (!bEnable) { for (View view : vDialog.getTouchables()) { if (view.getId() != R.id.btnUbicacion && view.getId() != R.id.btnCancelar && view.getId() != R.id.txtNis && view.getId() != R.id.btnVerifNis) arrayTouchs.add(view);//from w w w.ja v a 2 s. c o m } } for (View touch : arrayTouchs) { touch.setEnabled(bEnable); } }