// ========================================================================== // Project: Greenhouse // Copyright: ©2010Mike Ball // ========================================================================== /*globals Greenhouse */ /*jslint evil: true */

/**

@extends Greenhouse
@author Mike Ball
@author Evin Grano
@version RC1
@since RC1

*/ Greenhouse.mixin( /** @scope Greenhouse */{

libraryStates: SC.State.design({
  initialSubstate: 'libraryClosed',

  libraryClosed: SC.State.design({
    parallelStatechart: 'library',

    // ..........................................................
    // Events
    //
    openLibrary: function(){
      this.gotoState('openLibraryPicker');
    },

    toggleDockedLibrary: function(){
      this.gotoState('dockedLibrary');
    }
  }),

  openLibraryPicker: SC.State.design({

    parallelStatechart: 'library',

    enterState: function(){
      var picker = Greenhouse.appPage.get('libraryPicker'),
          button = Greenhouse.appPage.getPath('mainView.toolBar.library'),
          pickerContentView = Greenhouse.appPage.get('libraryPickerContentView');

      pickerContentView.setIfChanged('nowShowing', 'Greenhouse.appPage.libraryContentView');
      picker.popup(button, SC.PICKER_POINTER);
      picker.becomeFirstResponder();
    },

    exitState: function(){
      var picker = Greenhouse.appPage.get('libraryPicker'),
          pickerContentView = Greenhouse.appPage.get('libraryPickerContentView');
      pickerContentView.setIfChanged('nowShowing', null);
      picker.remove();
    },

    cancel: function(){
      this.gotoState('libraryClosed');
    },

    floatLibrary: function(){
      this.gotoState('libraryPalette');
    },

    toggleDockedLibrary: function(){
      this.gotoState('dockedLibrary');
    }
  }),

  libraryPalette: SC.State.design({
    parallelStatechart: 'library',

    enterState: function(){
      var ap = Greenhouse.appPage;
      var picker = ap.get('libraryPicker'),
          pickerContentView = ap.get('libraryPickerContentView');

      pickerContentView.setIfChanged('nowShowing', 'Greenhouse.appPage.libraryContentView');
      picker.append();
      picker.set('isModal', NO);
      picker.set('isAnchored', NO);
      picker.$().toggleClass('sc-picker', NO);
      var content = ap.getPath('libraryContentView.content'),
          toolbar = ap.getPath('libraryContentView.toolbar');

      content.adjust('top', 49);
      toolbar.set('isVisible', YES);
    },
    exitState: function(){
      var ap = Greenhouse.appPage;
      var picker = ap.get('libraryPicker'),
          pickerContentView = ap.get('libraryPickerContentView');

      pickerContentView.setIfChanged('nowShowing', null);
      picker.set('isModal', YES);
      picker.set('isAnchored', YES);
      picker.remove();

      var content = ap.getPath('libraryContentView.content'),
          toolbar = ap.getPath('libraryContentView.toolbar');

      content.adjust('top', 49);
      toolbar.set('isVisible', NO);
    },

    closeLibrary: function(){
      this.gotoState('libraryClosed');
    },

    toggleDockedLibrary: function(){
      this.gotoState('dockedLibrary');
    }
  }),

  dockedLibrary: SC.State.design({

    parallelStatechart: 'library',

    enterState: function(){
      var libDock = Greenhouse.appPage.get('libraryDockView');
      libDock.setIfChanged('nowShowing', 'Greenhouse.appPage.libraryContentView');
    },
    exitState: function(){
      var libDock = Greenhouse.appPage.get('libraryDockView');
      libDock.setIfChanged('nowShowing', null);
    },

    // ..........................................................
    // Events
    //
    toggleDockedLibrary: function(){
      var states = Greenhouse.get('currentStates') || [];
      if (states.indexOf(Greenhouse.getState('dockedInspector'))) Greenhouse.sendEvent('undock');

      this.gotoState('libraryClosed');
    }
  })

})

});