text: ﻿/*##############################################################################
  #    HPCC SYSTEMS software Copyright (C) 2012 HPCC Systems.
  #
  #    Licensed under the Apache License, Version 2.0 (the "License");
  #    you may not use this file except in compliance with the License.
  #    You may obtain a copy of the License at
  #
  #       http://www.apache.org/licenses/LICENSE-2.0
  #
  #    Unless required by applicable law or agreed to in writing, software
  #    distributed under the License is distributed on an "AS IS" BASIS,
  #    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  #    See the License for the specific language governing permissions and
  #    limitations under the License.
  ############################################################################## */
  define([
      "dojo/_base/declare",
      "dojo/_base/lang",
      "dojo/store/Memory",
      "dojo/store/Observable",
  
      "dijit/registry",
  
      "dgrid/OnDemandGrid",
      "dgrid/Keyboard",
      "dgrid/Selection",
      "dgrid/editor",
      "dgrid/selector",
      "dgrid/extensions/ColumnResizer",
      "dgrid/extensions/DijitRegistry",
  
      "hpcc/_Widget",
  
      "dojo/text!../templates/SelectionGridWidget.html",
  
      "dijit/layout/BorderContainer",
      "dijit/layout/ContentPane"
  ], function (declare, lang, Memory, Observable,
          registry,
          OnDemandGrid, Keyboard, Selection, editor, selector, ColumnResizer, DijitRegistry,
          _Widget,
          template) {
      return declare("SelectionGridWidget", [_Widget], {
          templateString: template,
          store: null,
          idProperty: "Change Me",
  
          constructor: function (args) {
              this.inherited(arguments);
          },
  
          postCreate: function (args) {
              this.inherited(arguments);
              this.borderContainer = registry.byId(this.id + "BorderContainer");
          },
  
          resize: function (args) {
              this.inherited(arguments);
              this.borderContainer.resize();
          },
  
          startup: function (args) {
              this.inherited(arguments);
          },
  
          //  Implementation ---
          createGrid: function (args) {
              this.idProperty = args.idProperty;
              var store = new Memory({
                  idProperty: this.idProperty,
                  data: []
              });
              this.store = Observable(store);
  
              this.grid = new declare([OnDemandGrid, Keyboard, Selection, ColumnResizer, DijitRegistry])({
                  store: this.store,
                  columns: args.columns
              }, this.id + "Grid");
          },
  
          setData: function (data) {
              this.store.setData(data);
              this.grid.refresh();
          }
      });
  });
  