123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- /*
- * ControllerDialog.js
- *
- * @author realor
- */
- import { Dialog } from './Dialog.js'
- import { Controls } from './Controls.js'
- import { Controller } from '../controllers/Controller.js'
- import { I18N } from '../i18n/I18N.js'
- class ControllerDialog extends Dialog {
- constructor(application, object) {
- super('title.add_controller')
- this.application = application
- this.object = object
- this.setI18N(this.application.i18n)
- this.setSize(500, 420)
- this.nameElem = this.addTextField('controller_name', 'label.name')
- let listElem = document.createElement('ul')
- listElem.className = 'controller_list'
- this.bodyElem.appendChild(listElem)
- let first = true
- for (let className in Controller.classes) {
- let inputElem = this.addItem(className, listElem)
- if (first) {
- inputElem.checked = true
- first = false
- }
- }
- this.addButton('accept', 'button.accept', () => {
- this.onAccept()
- })
- this.addButton('cancel', 'button.cancel', () => {
- this.onCancel()
- })
- }
- addItem(className, listElem) {
- let id = Controls.getNextId()
- let itemElem = document.createElement('li')
- listElem.appendChild(itemElem)
- let labelElem = document.createElement('label')
- labelElem.htmlFor = id
- itemElem.appendChild(labelElem)
- let inputElem = document.createElement('input')
- inputElem.type = 'radio'
- inputElem.name = 'controllerClass'
- inputElem.value = className
- inputElem.id = id
- labelElem.appendChild(inputElem)
- let nameSpanElem = document.createElement('span')
- nameSpanElem.className = 'type'
- nameSpanElem.innerHTML = className
- labelElem.appendChild(nameSpanElem)
- const controllerClass = Controller.classes[className]
- let descSpanElem = document.createElement('span')
- I18N.set(descSpanElem, 'innerHTML', controllerClass.getDescription())
- labelElem.appendChild(descSpanElem)
- return inputElem
- }
- onShow() {
- this.nameElem.focus()
- }
- onAccept() {
- let className = document.querySelector('input[name="controllerClass"]:checked').value
- let controllerClass = Controller.classes[className]
- let name = this.nameElem.value
- this.application.createController(controllerClass, this.object, name)
- this.hide()
- }
- onCancel() {
- this.hide()
- }
- }
- export { ControllerDialog }
|