/** * Cas d'une Porte */ case DIALOG_EDIT_DOOR: /** * Initialisation des element du fichier * res/layout/dialog_edit_door.xml **/ /** * Nom */ final EditText porte_name = (EditText) alertDialog .findViewById(R.id.edit_doorname); /** * Declaration du menu deroulant */ final Spinner porte_material = (Spinner) alertDialog .findViewById(R.id.spinner_doormaterial); /** * Declaration epaisseur et largeur */ final EditText porte_Thickness = (EditText) alertDialog .findViewById(R.id.edit_doorThickness); final EditText porte_WidthD = (EditText) alertDialog .findViewById(R.id.edit_doorWidth); /** * Declaration nouvelle matiere et attenuation */ final EditText porte_new_material = (EditText) alertDialog .findViewById(R.id.edit_doornewmaterial); final EditText porte_attenuation = (EditText) alertDialog .findViewById(R.id.edit_doorattenuation); /** * Format */ /** 2 chiffres apres la virgule max **/ dfp.setMaximumFractionDigits(2); /** 2 chiffres apres la virgule min **/ dfp.setMinimumFractionDigits(2); dfp.setDecimalSeparatorAlwaysShown(true); final String strThicknessD = df.format(selectedDoor .getPixelsThickness() / Plan.getScale()); final String strWidthD = df.format(selectedDoor.getPixelsLength() / Plan.getScale()); /** * Declaration d'une checkbox */ final CheckBox openDoor = (CheckBox) alertDialog .findViewById(R.id.doorOpen); /** * Declaration des coef pour la visualisation sur le plan */ final double coef1 = 2.8; final double coef2 = 2; double nbThicknessD; double nbWidthD; nbThicknessD = Double.parseDouble(strThicknessD.replace(',', '.')); nbWidthD = Double.parseDouble(strWidthD.replace(',', '.')); porte_material.setAdapter(adapter); porte_material.setSelection(adapter.getPosition(selectedDoor .getTypeMatiere())); /** * Menu deroulant */ porte_material .setOnItemSelectedListener(new OnItemSelectedListener() { @Override public void onItemSelected(AdapterView parent, View view, int position, long id) { /** * Recuperation de la matiere selectionnee */ String matiere = data.get(position); /** * Recuperation de l'attenuation de celle-ci */ Double attenuation = Matiere .renvoyerAttenuation(matiere); porte_attenuation.setText((attenuation).toString()); } @Override public void onNothingSelected(AdapterView parent) { } }); /** * Information d'aide pour la largeur */ Button btnAide1 = (Button) alertDialog .findViewById(R.id.btnAidePorte1); btnAide1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Toast.makeText(IndoorActivity.this, "Largeur standard d'une Porte", Toast.LENGTH_SHORT) .show(); } }); /** * Information d'aide pour l'epaisseur */ Button btnAide2 = (Button) alertDialog .findViewById(R.id.btnAidePorte2); btnAide2.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Toast.makeText(IndoorActivity.this, "Epaisseur standard d'une Porte", Toast.LENGTH_SHORT).show(); } }); porte_name.setText(selectedDoor.getName()); porte_name.setVisibility(RelativeLayout.VISIBLE); String thick, width; if (selectedDoor.eltIsVertical()) { thick = dfp.format(nbThicknessD / coef1); width = dfp.format(nbWidthD / coef2); } else { thick = dfp.format(nbThicknessD / coef2); width = dfp.format(nbWidthD / coef1); } final double nbthick, nbwidth; nbthick = Double.parseDouble(thick.replace(',', '.')); nbwidth = Double.parseDouble(width.replace(',', '.')); if (selectedDoor.eltIsVertical()) { porte_Thickness.setText(String.valueOf(nbthick)); porte_Thickness.setVisibility(RelativeLayout.VISIBLE); porte_WidthD.setText(String.valueOf(nbwidth)); porte_WidthD.setVisibility(RelativeLayout.VISIBLE); } else { porte_Thickness.setText(String.valueOf(nbwidth)); porte_Thickness.setVisibility(RelativeLayout.VISIBLE); porte_WidthD.setText(String.valueOf(nbthick)); porte_WidthD.setVisibility(RelativeLayout.VISIBLE); } /** * Gestion des boutons */ Button addP = (Button) alertDialog.findViewById(R.id.add_material); Button validbuttonDoor = (Button) alertDialog .findViewById(R.id.valide_door); Button cancelbuttonDoor = (Button) alertDialog .findViewById(R.id.cancel_door); /** * Gestion de l'ajout de la nouvelle matiere */ addP.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { try { /** * Verification que les champs sont bien remplis */ if (porte_new_material.getText().toString().equals("")) { Toast.makeText( getApplicationContext(), "Veuillez remplir le champ nouvelle matiere, avant de continuer !", Toast.LENGTH_SHORT).show(); porte_new_material.requestFocus(); return; } if (!verifierDouble(porte_attenuation.getText() .toString())) { Toast.makeText( getApplicationContext(), "Veuillez saisir un nombre dans le champ attenuation !", Toast.LENGTH_SHORT).show(); porte_attenuation.requestFocus(); return; } String new_matiere = porte_new_material.getText() .toString(); Double attenuation = Double .parseDouble(porte_attenuation.getText() .toString()); /** * Ajout dans le HashMap en appelant Matiere */ Matiere.ajout(new_matiere, attenuation); /** * Rafraichissement du Spinner a partir de data */ data.add(new_matiere); adapter.notifyDataSetChanged(); } catch (Exception e) { Toast.makeText( IndoorActivity.this, "Veuillez remplir les champs correspondants !!!", Toast.LENGTH_SHORT).show(); } porte_new_material.setText(""); porte_attenuation.setText(""); } }); /** * Gestion du bouton Valider */ validbuttonDoor.setOnClickListener(new OnClickListener() { public void onClick(View v) { if (!plan .getCurrentFloor() .getBatimentPart() .containsPorteWithName( porte_name.getText().toString(), selectedDoor)) { double v1, v2; selectedDoor.setName(porte_name.getText().toString()); selectedDoor.setTypeMatiere(porte_material .getSelectedItem().toString()); selectedDoor.setMeterThickness(Float .valueOf(porte_Thickness.getText().toString())); selectedDoor.setMeterLength(Float.valueOf(porte_WidthD .getText().toString())); /** * Condition Porte ouverte/fermee */ if (openDoor.isChecked()) { /** Si on coche, alors l'attenuation est a zero **/ selectedDoor.setAttenuation(0); } else { selectedDoor.setAttenuation(Matiere .renvoyerAttenuation(selectedDoor .getTypeMatiere())); } /** * Valeur v1 et v2 suivant la position */ if (selectedDoor.eltIsVertical()) { /** Epaisseur de la porte **/ v1 = selectedDoor.getMeterThickness() * Plan.getScale(); /** Largeur de la porte **/ v2 = selectedDoor.getMeterLength() * Plan.getScale(); } else { /** Largeur de la porte **/ v1 = selectedDoor.getMeterLength() * Plan.getScale(); /** Epaisseur de la porte **/ v2 = selectedDoor.getMeterThickness() * Plan.getScale(); } v1 = Math.abs(selectedDoor.getMeterThickness() * Plan.getScale()); v2 = (Math.abs(selectedDoor.getMeterLength() * Plan.getScale())); if (selectedDoor.eltIsVertical()) { selectedDoor.setPixelsThickness(v1 * coef1); selectedDoor.setPixelsLength(v2 * coef2); selectedDoor.setMeterThickness((v1 * coef1) / Plan.getScale()); selectedDoor.setMeterLength((v2 * coef2) / Plan.getScale()); } else { selectedDoor.setPixelsThickness(v2 * coef2); selectedDoor.setPixelsLength(v1 * coef1); selectedDoor.setMeterThickness((v1 * coef1) / Plan.getScale()); selectedDoor.setMeterLength((v2 * coef2) / Plan.getScale()); } } else { Toast.makeText(IndoorActivity.this, "Une Porte porte deja ce nom.", Toast.LENGTH_SHORT).show(); } selectedDoor.setSelected(false); plan.setSelectedPorte(null); /** Annule la possibilité de déplacement **/ plan.getSelectionSourceMurEtElementListener() .setPorteSelected(null); changeToMenu(MENU_EDITION); alertDialog.dismiss(); } }); /** * Gestion du bouton Annuler */ cancelbuttonDoor.setOnClickListener(new OnClickListener() { public void onClick(View v) { selectedDoor.setSelected(false); plan.setSelectedPorte(null); /** Annule la possibilité de déplacement **/ plan.getSelectionSourceMurEtElementListener() .setPorteSelected(null); changeToMenu(MENU_EDITION); alertDialog.dismiss(); } }); break;