Changeset 1044 for trunk/plugins/Stylist


Ignore:
Timestamp:
10/02/08 17:07:26 (11 years ago)
Author:
douglas
Message:

FIXED Ticket #1176 Merging new dialogs branch back to trunk.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/plugins/Stylist/stylist.js

    r1031 r1044  
    6666Xinha.prototype._fillStylist = function() 
    6767{ 
    68   if(!this._stylist) return false; 
    69   this.plugins.Stylist.instance.main.innerHTML = ''; 
     68  if(!this.plugins.Stylist.instance.dialog) return false; 
     69  var main = this.plugins.Stylist.instance.dialog.main; 
     70  main.innerHTML = ''; 
    7071 
    7172  var may_apply = true; 
     
    180181    { 
    181182      var anch = document.createElement('a'); 
    182       if ( Xinha.is_real_gecko ) anch.onfocus = function () { this.blur() } // prevent dotted line around link that causes horizontal scrollbar in Mozilla 
     183      anch.onfocus = function () { this.blur() } // prevent dotted line around link that causes horizontal scrollbar 
    183184      anch._stylist_className = className.trim(); 
    184185      anch._stylist_applied   = applied; 
     
    215216      } 
    216217 
    217       this.plugins.Stylist.instance.main.appendChild(anch); 
     218      main.appendChild(anch); 
    218219    } 
    219220  } 
     
    484485  RE_rule    = /\{(.|\r|\n)*?\}/g; 
    485486  css = css.replace(RE_comment, ''); 
    486   css = css.replace(RE_comment, ''); 
    487487  css = css.replace(RE_rule, ','); 
    488488 
     
    527527Stylist.prototype.onGenerateOnce = function() 
    528528{ 
     529  var cfg = this.editor.config; 
     530  if(typeof cfg.css_style != 'undefined' && Xinha.objectProperties(cfg.css_style).length != 0) 
     531  { 
     532    this._prepareDialog(); 
     533  } 
     534 
     535}; 
     536Stylist.prototype._prepareDialog = function() 
     537{ 
    529538  var editor = this.editor; 
    530539  var stylist = this; 
    531   if(typeof editor.config.css_style != 'undefined' && Xinha.objectProperties(editor.config.css_style).length != 0) 
    532   { 
    533     editor._stylist = null; // This needs to be changes to be Stylist::_stylist sometime 
    534     editor._stylist = editor.addPanel('right'); 
    535     Xinha.addClass(editor._stylist, 'stylist'); 
    536  
    537     this.caption = document.createElement("h1"); 
    538     this.caption.innerHTML = Xinha._lc('Styles', 'Stylist'); 
    539     editor._stylist.appendChild(this.caption); 
    540     this.main = document.createElement("div"); 
    541     this.main.style.overflow = "auto"; 
    542     this.main.style.height = this.editor._framework.ed_cell.offsetHeight - this.caption.offsetHeight + 'px'; 
    543  
    544     editor._stylist.appendChild(this.main); 
    545  
    546     Xinha.freeLater(this,"caption"); 
    547     Xinha.freeLater(this,"main"); 
    548  
    549     editor.notifyOn('modechange', 
    550       function(e,args) 
    551       { 
    552         switch(args.mode) 
    553         { 
    554           case 'text': 
    555           { 
    556             editor.hidePanel(editor._stylist); 
    557             break; 
    558           } 
    559           case 'wysiwyg': 
    560           { 
    561             editor.showPanel(editor._stylist); 
    562             break; 
    563           } 
    564         } 
    565       } 
    566     ); 
    567     editor.notifyOn('panel_change', 
    568       function(e,args) 
    569       { 
    570         switch (args.action) 
    571         { 
    572           case 'show': 
    573           var newHeight = stylist.main.offsetHeight - args.panel.offsetHeight; 
    574           stylist.main.style.height = ((newHeight > 0) ?  stylist.main.offsetHeight - args.panel.offsetHeight : 0) + 'px'; 
    575           editor._stylist.style.height = stylist.caption.offsetHeight + "px"; 
    576           editor.sizeEditor(); 
    577           break; 
    578           case 'hide': 
    579             stylist.resize(); 
    580           break; 
    581         } 
    582       } 
    583     ); 
    584     editor.notifyOn('before_resize', 
    585     function() 
    586       { 
    587         editor._stylist.style.height = stylist.caption.offsetHeight + "px"; 
    588       } 
    589     ); 
    590     editor.notifyOn('resize', 
    591       function() 
    592       { 
    593         stylist.resize(); 
    594       } 
    595     ); 
    596   } 
    597  
    598 }; 
     540 
     541  var html = '<h1><l10n>Styles</l10n></h1>'; 
     542   
     543  this.dialog = new Xinha.Dialog(editor, html, 'Stylist',{width:200},{modal:false,closable:false}); 
     544        Xinha._addClass( this.dialog.rootElem, 'Stylist' ); 
     545        this.dialog.attachToPanel('right'); 
     546  this.dialog.show(); 
     547   
     548        var dialog = this.dialog; 
     549        var main = this.dialog.main; 
     550        var caption = this.dialog.captionBar; 
     551         
     552  main.style.overflow = "auto"; 
     553  main.style.height = this.editor._framework.ed_cell.offsetHeight - caption.offsetHeight + 'px'; 
     554 
     555  editor.notifyOn('modechange', 
     556  function(e,args) 
     557  { 
     558    if (!dialog.attached) 
     559    { 
     560      return; 
     561    } 
     562    switch(args.mode) 
     563    { 
     564      case 'text': 
     565      { 
     566        dialog.hide(); 
     567        break; 
     568      } 
     569      case 'wysiwyg': 
     570      { 
     571        dialog.show(); 
     572        break; 
     573      } 
     574    } 
     575  } 
     576  ); 
     577  editor.notifyOn('panel_change', 
     578  function(e,args) 
     579  { 
     580    if (!dialog.attached) 
     581    { 
     582      return; 
     583    } 
     584    switch (args.action) 
     585    { 
     586      case 'show': 
     587      var newHeight = main.offsetHeight - args.panel.offsetHeight; 
     588      main.style.height = ((newHeight > 0) ?  main.offsetHeight - args.panel.offsetHeight : 0) + 'px'; 
     589      dialog.rootElem.style.height = caption.offsetHeight + "px"; 
     590      editor.sizeEditor(); 
     591      break; 
     592      case 'hide': 
     593      stylist.resize(); 
     594      break; 
     595    } 
     596  } 
     597  ); 
     598  editor.notifyOn('before_resize', 
     599  function() 
     600  { 
     601    if (!dialog.attached) 
     602    { 
     603      return; 
     604    } 
     605    dialog.rootElem.style.height = caption.offsetHeight + "px"; 
     606  } 
     607  ); 
     608  editor.notifyOn('resize', 
     609  function() 
     610  { 
     611    if (!dialog.attached) 
     612    { 
     613      return; 
     614    } 
     615    stylist.resize(); 
     616  } 
     617  ); 
     618} 
    599619Stylist.prototype.resize = function() 
    600620{ 
    601621  var editor = this.editor; 
    602   var panelContainer = editor._stylist.parentNode; 
     622  var rootElem = this.dialog.rootElem; 
     623   
     624  if (rootElem.style.display == 'none') return; 
     625   
     626  var panelContainer = rootElem.parentNode; 
    603627 
    604628  var newSize = panelContainer.offsetHeight; 
    605629  for (var i=0; i < panelContainer.childNodes.length;++i) 
    606630  { 
    607     if (panelContainer.childNodes[i]==editor._stylist || !panelContainer.childNodes[i].offsetHeight) 
     631    if (panelContainer.childNodes[i] == rootElem || !panelContainer.childNodes[i].offsetHeight) 
    608632    { 
    609633      continue; 
     
    611635    newSize -= panelContainer.childNodes[i].offsetHeight; 
    612636  } 
    613   editor._stylist.style.height = newSize + 'px'; 
    614   this.main.style.height = newSize - this.caption.offsetHeight + 'px'; 
     637  rootElem.style.height = newSize-5 + 'px'; 
     638  this.dialog.main.style.height = newSize - this.dialog.captionBar.offsetHeight -5 + 'px'; 
    615639} 
    616640 
    617641Stylist.prototype.onUpdateToolbar = function() 
    618642{ 
    619   if(this.editor._stylist) 
     643  if(this.dialog) 
    620644  { 
    621645    if(this._timeoutID) 
Note: See TracChangeset for help on using the changeset viewer.