/*
* MathGraph32 Javascript : Software for animating online dynamic mathematics figures
* https://www.mathgraph32.org/
* @Author Yves Biton (yves.biton@sesamath.net)
* @License: GNU AGPLv3 https://www.gnu.org/licenses/agpl-3.0.html
*/
import { ce, ceIn } from 'src/kernel/dom'
import { getStr } from '../kernel/kernel'
import MtgDlg from './MtgDlg'
import $ from 'jquery'
export default ChoixObjProchesDlg
/**
* Dialogue permettant, une fois qu'on connait le type d'objet désiré et qu'on sait qu'il ya au poins deux objets
* de ce type proches du pointeur souris, de choisir l'objet désiré via une liste.
* @param {MtgApp} app L'application propriétaire
* @param {OutilPointage} outilPointage l'outil en cours d'utilisation qaund on appelle la boîte de dialogue
* @param {string} cible Le nom de l'objet de pointage auquel il faudra affecter le premier élément ou le dernier
* @param {Nat} typeCherche la nature des objets cherchés
* @param {Point} point les coordonnées dont on cherche les objets proches
* @param {CListeObjets} listeExclusion une liste formée des objets éventuels ne pouvant pas être désignés
* @param {string} deviceType la chaîne 'mouse' ou 'touch" suivant le type de ppériphérique
* @param {boolean} bmodifiableParMenu true si on ne veut que des objets modifiables par menu
* @param {boolean} bMemeMasque true si on accepte aussi de chercher parmi les objets masqués
* @param {function} callBackOK fonction de callBack à appeler une fois qu"on a appuyé sur le bouton OK
* @constructor
*/
function ChoixObjProchesDlg (app, outilPointage, cible, typeCherche, point, listeExclusion,
deviceType, bmodifiableParMenu, bMemeMasque, callBackOK) {
MtgDlg.call(this, app, 'choixObjDlg', callBackOK)
this.outilPointage = outilPointage
this.cible = cible
const list = app.listePr
this.ar = list.getTabObjProches(typeCherche, point, listeExclusion, deviceType, bmodifiableParMenu, bMemeMasque)
// tab contient des pointeurs vers les objets proches
const tab = ce('table', {
cellspacing: 10
})
this.appendChild(tab)
const tr = ceIn(tab, 'tr')
let td = ceIn(tr, 'TD', {
valign: 'top'
})
const label = ceIn(td, 'label')
$(label).html(getStr('ChoixEntre'))
td = ceIn(tr, 'TD', {
valign: 'top'
})
this.select = ceIn(td, 'select', {
size: 10, // Le nombre de lignes visibles par défaut
style: 'width:500px'
})
// C'est là qu'on ajoute tous les objets proches disponibles dans la liste déroulante
for (let i = 0; i < this.ar.length; i++) {
const option = ceIn(this.select, 'Option')
if (i === 0) option.setAttribute('selected', 'selected')
$(option).html(this.ar[i].info())
}
this.create('ChoixOb', 600)
}
ChoixObjProchesDlg.prototype = new MtgDlg()
ChoixObjProchesDlg.prototype.OK = function () {
const i = this.select.selectedIndex
this.outilPointage[this.cible] = this.ar[i]
if (this.callBackOK !== null) this.callBackOK()
this.destroy()
}