From dfe465cb810b2070c2cf0644d0db9784497affeb Mon Sep 17 00:00:00 2001
From: "sfraser%netscape.com" <sfraser%netscape.com>
Date: Wed, 28 Jul 1999 02:51:58 +0000
Subject: [PATCH] Added callback functions for style and dirty state changes.
 Also added EditorToggleStyle() call.

---
 editor/ui/composer/content/EditorCommands.js | 104 +++++++++++++++----
 1 file changed, 85 insertions(+), 19 deletions(-)

diff --git a/editor/ui/composer/content/EditorCommands.js b/editor/ui/composer/content/EditorCommands.js
index 8e488c725844..656865eea3d0 100644
--- a/editor/ui/composer/content/EditorCommands.js
+++ b/editor/ui/composer/content/EditorCommands.js
@@ -22,6 +22,30 @@ var toolbar;
 var documentModified;
 var EditorDisplayStyle = true;
 
+var gTagToFormat = {
+    "P"          : "Normal",	// these should really be entities. Not sure how to do that from JS
+    "H1"         : "Heading 1",
+    "H2"         : "Header 2",
+    "H3"         : "Header 3",
+    "H4"         : "Header 4",
+    "H5"         : "Header 5",
+    "H6"         : "Header 6",
+    "BLOCKQUOTE" : "Blockquote",
+    "ADDRESS"    : "Address",
+    "PRE"        : "Preformatted",
+    "LI"         : "List Item",
+    "DT"         : "Definition Term",
+    "DD"         : "Definition Description"
+  };
+
+
+var gStyleTags = {
+    "bold"       : "b",
+    "italic"     : "i",
+    "underline"  : "u"
+  };
+  
+  
 function EditorStartup(editorType)
 {
   dump("Doing Startup...\n");
@@ -299,19 +323,41 @@ function EditorSetBackgroundColor(color)
   contentWindow.focus();
 }
 
-function EditorApplyStyle(styleName)
+function EditorApplyStyle(tagName)
 {
   dump("applying style\n");
-  editorShell.SetTextProperty(styleName, "", "");
+  editorShell.SetTextProperty(tagName, "", "");
   contentWindow.focus();
 }
 
-function EditorRemoveStyle(styleName)
+function EditorRemoveStyle(tagName)
 {
-  editorShell.RemoveTextProperty(styleName, "");
+  editorShell.RemoveTextProperty(tagName, "");
   contentWindow.focus();
 }
 
+function EditorToggleStyle(styleName)
+{
+  // see if the style is already set by looking at the observer node,
+  // which is the appropriate button
+  var theButton = document.getElementById(styleName + "Button");
+  
+  if (theButton)
+  {
+    var isOn = theButton.getAttribute(styleName);
+    if (isOn == "true")
+      editorShell.RemoveTextProperty(gStyleTags[styleName], "", "");
+    else
+      editorShell.SetTextProperty(gStyleTags[styleName], "", "");
+
+    contentWindow.focus();
+  }
+  else
+  {
+    dump("No button found for the " + styleName + " style");
+  }
+}
+
 function EditorRemoveLinks()
 {
   editorShell.RemoveTextProperty("a", "");
@@ -591,7 +637,7 @@ function EditorDocumentLoaded()
 
 function UpdateSaveButton(modified)
 {
-  var saveButton = document.getElementById("saveButton");
+  var saveButton = document.getElementById("SaveButton");
    if (saveButton)
   {
     if (modified) {
@@ -634,10 +680,6 @@ function EditorReflectDocState()
   return true;
 }
 
-function EditorDocStateChanged()
-{
-}
-
 function EditorGetNodeFromOffsets(offsets)
 {
   var node = null;
@@ -774,18 +816,42 @@ function OpenFile(url)
 }
 
 // --------------------------- Status calls ---------------------------
-function onBoldChange()
+function onStyleChange(theStyle)
 {
-  var boldButton = document.getElementByID("BoldButton");
-  if (boldButton)
+  var theButton = document.getElementById(theStyle + "Button");
+  if (theButton)
   {
-	bold = boldButton.getAttribute("bold");
-    if ( bold == "true" ) {
-      boldButton.setAttribute( "disabled", false );
-	} else {
-	  boldButton.setAttribute( "disabled", true );
-	}
+	var isOn = theButton.getAttribute(theStyle);
+	if (isOn == "true") {
+      theButton.setAttribute("toggled", 1);
+    } else {
+      theButton.setAttribute("toggled", 0);
+    }
   }
-	dump("  Bold state changed\n");
 }
 
+function onDirtyChange()
+{
+  // this should happen through style, but that doesn't seem to work.
+  var theButton = document.getElementById("SaveButton");
+   if (theButton)
+  {
+	var isDirty = theButton.getAttribute("dirty");
+    if (isDirty == "true") {
+      theButton.setAttribute("src", "chrome://editor/skin/images/ED_SaveMod.gif");
+    } else {
+      theButton.setAttribute("src", "chrome://editor/skin/images/ED_SaveFile.gif");
+    }
+  }
+}
+
+function onParagraphFormatChange()
+{
+  var theButton = document.getElementById("ParagraphPopup");
+   if (theButton)
+  {
+	var theFormat = theButton.getAttribute("format");
+    theButton.setAttribute("value", gTagToFormat[theFormat]);
+    dump("Setting value\n");
+  }
+}