mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-30 05:35:31 +00:00
216 lines
6.0 KiB
JavaScript
216 lines
6.0 KiB
JavaScript
/*
|
|
* The contents of this file are subject to the Netscape Public
|
|
* License Version 1.1 (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.mozilla.org/NPL/
|
|
*
|
|
* Software distributed under the License is distributed on an "AS
|
|
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
|
* implied. See the License for the specific language governing
|
|
* rights and limitations under the License.
|
|
*
|
|
* The Original Code is Mozilla Communicator client code, released
|
|
* March 31, 1998.
|
|
*
|
|
* The Initial Developer of the Original Code is Netscape
|
|
* Communications Corporation. Portions created by Netscape are
|
|
* Copyright (C) 1998-1999 Netscape Communications Corporation. All
|
|
* Rights Reserved.
|
|
*
|
|
* Contributor(s):
|
|
*/
|
|
|
|
var tagName = "hr";
|
|
var hLineElement;
|
|
var width;
|
|
var height;
|
|
var align;
|
|
var shading;
|
|
|
|
// dialog initialization code
|
|
function Startup()
|
|
{
|
|
dump("HLine Properties startup...\n");
|
|
if (!InitEditorShell())
|
|
return;
|
|
|
|
doSetOKCancel(onOK, null);
|
|
|
|
// Get the selected horizontal line
|
|
hLineElement = editorShell.GetSelectedElement(tagName);
|
|
|
|
if (!hLineElement) {
|
|
// We should never be here if not editing an existing HLine
|
|
dump("HLine is not selected! Shouldn't be here!\n");
|
|
window.close();
|
|
return;
|
|
}
|
|
|
|
// Create dialog object to store controls for easy access
|
|
dialog = new Object;
|
|
dialog.heightInput = document.getElementById("height");
|
|
dialog.widthInput = document.getElementById("width");
|
|
dialog.leftAlign = document.getElementById("leftAlign");
|
|
dialog.centerAlign = document.getElementById("centerAlign");
|
|
dialog.rightAlign = document.getElementById("rightAlign");
|
|
dialog.shading = document.getElementById("3dShading");
|
|
dialog.pixelOrPercentSelect = document.getElementById("pixelOrPercentSelect");
|
|
|
|
// Make a copy to use for AdvancedEdit and onSaveDefault
|
|
globalElement = hLineElement.cloneNode(false);
|
|
|
|
// Initialize control values based on existing attributes
|
|
InitDialog()
|
|
|
|
// SET FOCUS TO FIRST CONTROL
|
|
dialog.heightInput.focus();
|
|
|
|
// Resize window
|
|
window.sizeToContent();
|
|
}
|
|
|
|
// Set dialog widgets with attribute data
|
|
// We get them from globalElement copy so this can be used
|
|
// by AdvancedEdit(), which is shared by all property dialogs
|
|
function InitDialog()
|
|
{
|
|
// Just to be confusing, "size" is used instead of height
|
|
var height = globalElement.getAttribute("size");
|
|
if(!height) {
|
|
dump("NO SIZE FOUND FOR HLINE");
|
|
height = 2; //Default value
|
|
}
|
|
|
|
// We will use "height" here and in UI
|
|
dialog.heightInput.value = height;
|
|
|
|
// Get the width attribute of the element, stripping out "%"
|
|
// This sets contents of combobox (adds pixel and percent option elements)
|
|
dialog.widthInput.value = InitPixelOrPercentCombobox(globalElement,"width","pixelOrPercentSelect");
|
|
|
|
align = globalElement.getAttribute("align");
|
|
if (align == "center") {
|
|
dialog.centerAlign.checked = true;
|
|
} else if (align == "right") {
|
|
dialog.rightAlign.checked = true;
|
|
} else {
|
|
dialog.leftAlign.checked = true;
|
|
}
|
|
|
|
// This is tricky! Since the "noshade" attribute doesn't have a value,
|
|
// we can't use getAttribute to figure out if it's set!
|
|
// This gets the attribute NODE from the attributes NamedNodeMap
|
|
if (globalElement.attributes.getNamedItem("noshade"))
|
|
dialog.shading.checked = false;
|
|
else
|
|
dialog.shading.checked = true;
|
|
}
|
|
|
|
function onSaveDefault()
|
|
{
|
|
// "false" means set attributes on the globalElement,
|
|
// not the real element being edited
|
|
if (ValidateData()) {
|
|
var prefs = GetPrefs();
|
|
if (prefs) {
|
|
dump("Setting HLine prefs\n");
|
|
|
|
var alignInt;
|
|
if (align == "left") {
|
|
alignInt = 0;
|
|
} else if (align == "right") {
|
|
alignInt = 2;
|
|
} else {
|
|
alignInt = 1;
|
|
}
|
|
prefs.SetIntPref("editor.hrule.align", alignInt);
|
|
|
|
var percentIndex = width.search(/%/);
|
|
var percent;
|
|
var widthInt;
|
|
if (percentIndex > 0) {
|
|
percent = true;
|
|
widthInt = Number(width.substr(0, percentIndex));
|
|
} else {
|
|
percent = false;
|
|
widthInt = Number(width);
|
|
}
|
|
prefs.SetIntPref("editor.hrule.width", widthInt);
|
|
prefs.SetBoolPref("editor.hrule.width_percent", percent);
|
|
|
|
// Convert string to number
|
|
prefs.SetIntPref("editor.hrule.height", Number(height));
|
|
|
|
prefs.SetBoolPref("editor.hrule.shading", shading);
|
|
|
|
// Write the prefs out NOW!
|
|
prefs.SavePrefFile();
|
|
}
|
|
}
|
|
}
|
|
|
|
// Get and validate data from widgets.
|
|
// Set attributes on globalElement so they can be accessed by AdvancedEdit()
|
|
function ValidateData()
|
|
{
|
|
// Height is always pixels
|
|
height = ValidateNumberString(dialog.heightInput.value, 1, maxPixels);
|
|
if (height == "") {
|
|
// Set focus to the offending control
|
|
dump("Height is empty\n");
|
|
dialog.heightInput.focus();
|
|
return false;
|
|
}
|
|
dump("Setting height="+height+"\n");
|
|
globalElement.setAttribute("size", height);
|
|
|
|
var isPercent = (dialog.pixelOrPercentSelect.selectedIndex == 1);
|
|
var maxLimit;
|
|
if (isPercent) {
|
|
maxLimit = 100;
|
|
} else {
|
|
// Upper limit when using pixels
|
|
maxLimit = maxPixels;
|
|
}
|
|
|
|
width = ValidateNumberString(dialog.widthInput.value, 1, maxLimit);
|
|
if (width == "") {
|
|
dump("Width is empty\n");
|
|
dialog.widthInput.focus();
|
|
return false;
|
|
}
|
|
if (isPercent)
|
|
width = width + "%";
|
|
|
|
dump("Height="+height+" Width="+width+"\n");
|
|
globalElement.setAttribute("width", width);
|
|
|
|
align = "left";
|
|
if (dialog.centerAlign.checked) {
|
|
align = "center";
|
|
} else if (dialog.rightAlign.checked) {
|
|
align = "right";
|
|
}
|
|
globalElement.setAttribute("align", align);
|
|
|
|
if (dialog.shading.checked) {
|
|
shading = true;
|
|
globalElement.removeAttribute("noshade");
|
|
} else {
|
|
shading = false;
|
|
globalElement.setAttribute("noshade", "");
|
|
}
|
|
return true;
|
|
}
|
|
|
|
function onOK()
|
|
{
|
|
if (ValidateData())
|
|
{
|
|
// Copy attributes from the globalElement to the document element
|
|
editorShell.CloneAttributes(hLineElement, globalElement);
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|