Ejemplo n.º 1
0
  var DialogPanel = function ctor_dialogPanel(options) {
    var _emptyFunc = function() {};
    var panel = Panel(options);

    // We have to extend two more functions for it
    panel.onSubmit = options.onSubmit || _emptyFunc;
    panel.onCancel = options.onCancel || _emptyFunc;

    // Let's rebind the scope on options
    panel.onSubmit = panel.onSubmit.bind(options);
    panel.onCancel = panel.onCancel.bind(options);
    return panel;
  };
Ejemplo n.º 2
0
    var SettingsPanel = function ctor_SettingsPanel(options) {
      /**
       * The root element of the panel.
       *
       * @type {HTMLElement}
       */
      var _panel = null;

      /**
       * The handler is called when settings change.
       *
       * @param {Event} event
       */
      var _settingsChangeHandler = function(event) {
        PanelUtils.onSettingsChange(_panel, event);
      };

      /**
       * Add listeners to make the panel be able to respond to setting changes
       * and user interactions.
       *
       * @param {HTMLElement} panel
       */
      var _addListeners = function panel_addListeners(panel) {
        if (!panel) {
          return;
        }

        SettingsCache.addEventListener('settingsChange',
          _settingsChangeHandler);
        panel.addEventListener('change', PanelUtils.onInputChange);
        panel.addEventListener('click', PanelUtils.onLinkClick);
      };

      /**
       * Remove all listeners.
       *
       * @param {HTMLElement} panel
       */
      var _removeListeners = function panel_removeListeners(panel) {
        if (!panel) {
          return;
        }

        SettingsCache.removeEventListener('settingsChange',
          _settingsChangeHandler);
        panel.removeEventListener('change', PanelUtils.onInputChange);
        panel.removeEventListener('click', PanelUtils.onLinkClick);
      };

      options = options || {};
      options.onInit = options.onInit || _emptyFunc;
      options.onUninit = options.onUninit || _emptyFunc;
      options.onShow = options.onShow || _emptyFunc;
      options.onHide = options.onHide || _emptyFunc;
      options.onBeforeShow = options.onBeforeShow || _emptyFunc;
      options.onBeforeHide = options.onBeforeHide || _emptyFunc;

      var _goBackHandler = function panel_goBackHandler(evt) {
        if (SharedUtils && SharedUtils.isBackKey(evt)) {
          PanelUtils.goBack(_panel);
        }
      };
      var boundGoBackHandler = _goBackHandler.bind(this);

      return Panel({
        onInit: function(panel, initOptions) {
          if (!panel) {
            return;
          }

          _panel = panel;
          PanelUtils.activate(panel);

          return options.onInit(panel, initOptions);
        },
        onUninit: function() {
          _removeListeners(_panel);
          _panel = null;
          options.onUninit();
        },
        onShow: function(panel, showOptions) {
          return options.onShow(panel, showOptions);
        },
        onHide: function() {
          // Remove listeners.
          _removeListeners(_panel);

          return options.onHide();
        },
        onBeforeShow: function(panel, beforeShowOptions) {
          // Preset the panel every time when it is presented.
          PanelUtils.preset(panel);
          _addListeners(panel);
          return options.onBeforeShow(panel, beforeShowOptions);
        },
        onBeforeHide: function() {
          return options.onBeforeHide();
        }
      });
    };