blob: 035f7f37afe24103dcee32074ae8909f757c88ee [file] [log] [blame]
//------------------------------------------------------------------------------
// Copyright (c) 2005, 2006 IBM Corporation and others.
// All rights reserved. This program and the accompanying materials
// are made available under the terms of the Eclipse Public License v1.0
// which accompanies this distribution, and is available at
// http://www.eclipse.org/legal/epl-v10.html
//
// Contributors:
// IBM Corporation - initial implementation
//------------------------------------------------------------------------------
ContentPageSection = function(){
this.collapseSectionsByDefault = false;
this.firstSection = null;
this.expandImage = null;
this.collapseImage = null;
this.expandAllImage = null;
this.collapseAllImage = null;
this.backToTopImage = null;
this.shimImage = null;
this.sectionCollapseDivs = null;
this.sectionCollapseLinks = null;
// test message,
this.backToTopText = null;
this.expandAllText = null;
this.collapseAllText = null;
};
ContentPageSection.prototype.init = function(imgPath) {
this.backToTopText = contentPage.res.backToTopText;
this.expandAllText = contentPage.res.expandAllText;
this.collapseAllText = contentPage.res.collapseAllText;
this.expandImage = contentPage.resolveUrl(imgPath + 'expand.gif');
this.collapseImage = contentPage.resolveUrl(imgPath + 'collapse.gif');
this.expandAllImage = contentPage.resolveUrl(imgPath + 'expand_all.gif');
this.collapseAllImage = contentPage.resolveUrl(imgPath + 'collapse_all.gif');
this.backToTopImage = contentPage.resolveUrl(imgPath + 'back_to_top.gif');
this.shimImage = contentPage.resolveUrl(imgPath + 'shim.gif');
};
// Creates the collapsible section links.
ContentPageSection.prototype.createSectionLinks = function(tagName, classSelector) {
if (document.getElementsByTagName) {
var elements = document.getElementsByTagName(tagName);
var sectionElements = new Array(elements.length);
var totalLinks = 0;
for (var i = 0; i < elements.length; i++) {
var element = elements[i];
// save the element for auto wrap
if ( element.getAttribute("autoWrap") == "true" ) {
contentPage.addAutoWrapElement(element);
}
if (element.className == classSelector) {
sectionElements[totalLinks++] = element;
}
}
sectionElements.length = totalLinks;
this.sectionCollapseDivs = new Array(totalLinks);
this.sectionCollapseLinks = new Array(totalLinks);
this.firstSection = sectionElements[0];
for (var i = 0; i < sectionElements.length; i++) {
var element = sectionElements[i];
var siblingContainer;
if (document.createElement && (siblingContainer = document.createElement('div')) && siblingContainer.style) {
var nextSibling = element.nextSibling;
element.parentNode.insertBefore(siblingContainer, nextSibling);
var nextElement = sectionElements[i + 1];
while (nextSibling != nextElement && nextSibling != null && nextSibling.className != 'copyright') {
var toMove = nextSibling;
nextSibling = nextSibling.nextSibling;
siblingContainer.appendChild(toMove);
}
if (this.collapseSectionsByDefault) {
siblingContainer.style.display = 'none';
}
this.sectionCollapseDivs[i] = siblingContainer;
this.createCollapsibleSection(element, siblingContainer, i);
}
else {
return;
}
}
this.createExpandCollapseAllSectionsLinks(sectionElements[0]);
var divElements = document.getElementsByTagName('div');
for(var j = 0; j < divElements.length; j++){
if(divElements[j].id == 'treeContent'){
this.createExpandCollapseAllSectionsLinksForTreeTable(divElements[j]);
break;
}
}
}
};
ContentPageSection.prototype.createExpandCollapseAllSectionsLinksForTreeTable = function(tableDiv) {
var div;
var self = this;
if (document.createElement && (div = document.createElement('div'))) {
div.className = 'expandCollapseLink';
div.align = 'right';
var image = document.createElement('img');
image.src = this.expandAllImage;
image.alt = this.expandAllText;
image.title = this.expandAllText;
image.width = '16';
image.height = '16';
image.border = '0';
image.align = 'absmiddle';
var link = document.createElement('a');
link.className = 'expandCollapseLink';
link.href = '';
link.appendChild(image);
link.onclick = /*this.expandAll;*/ function(evt) {
/*
for (var i = 0; i < self.sectionCollapseDivs.length; i++) {
self.sectionCollapseDivs[i].style.display = '';
self.sectionCollapseLinks[i].firstChild.src = self.collapseImage;
}
*/
self.expandAllTreeTable();
if (evt && evt.preventDefault) {
evt.preventDefault();
}
return false;
};
var span = document.createElement('span');
span.className = 'expandCollapseText';
span.appendChild(document.createTextNode(this.expandAllText));
link.appendChild(span);
div.appendChild(link);
div.appendChild(document.createTextNode(String.fromCharCode(160)));
div.appendChild(document.createTextNode(String.fromCharCode(160)));
div.appendChild(document.createTextNode(String.fromCharCode(160)));
div.appendChild(document.createTextNode(String.fromCharCode(160)));
image = document.createElement('img');
image.src = this.collapseAllImage;
image.alt = this.collapseAllText;
image.title = this.collapseAllText;
image.width = '16';
image.height = '16';
image.border = '0';
image.align = 'absmiddle';
link = document.createElement('a');
link.className = 'expandCollapseLink';
link.href = '#';
link.appendChild(image);
link.onclick = /*this.collapseAll;*/function(evt) {
/*
for (var i = 0; i < self.sectionCollapseDivs.length; i++) {
self.sectionCollapseDivs[i].style.display = 'none';
self.sectionCollapseLinks[i].firstChild.src = self.expandImage;
}
*/
self.collapseAllTreeTable();
if (evt && evt.preventDefault) {
evt.preventDefault();
}
return false;
};
span = document.createElement('span');
span.className = 'expandCollapseText';
span.appendChild(document.createTextNode(this.collapseAllText));
link.appendChild(span);
div.appendChild(link);
/*
var overviewSeparator = document.getElementById("overviewSeparator");
overviewSeparator.parentNode.insertBefore(div, overviewSeparator);
*/
if (tableDiv != null) {
tableDiv.parentNode.insertBefore(div, tableDiv);
}
/*if (contentPage.getApp() != null) {
div.style.display = "none";
}*/
}
};
ContentPageSection.prototype.expandAllTreeTable = function() {
contentPage.processPage.treeTable.expandAllTreeNode();
};
ContentPageSection.prototype.collapseAllTreeTable = function() {
contentPage.processPage.treeTable.collapseAllTreeNode();
};
// Creates a collapsible section.
ContentPageSection.prototype.createCollapsibleSection = function(element, siblingContainer, index) {
if (document.createElement) {
// Add a spacing between the sections.
var sectionSeparator = document.createElement('img');
sectionSeparator.src = this.shimImage;
sectionSeparator.alt = '';
sectionSeparator.title = '';
sectionSeparator.height = '3';
sectionSeparator.border = '0';
sectionSeparator.align = 'absmiddle';
element.parentNode.insertBefore(sectionSeparator, element);
// Add a expand/collapse link to the section heading.
var span = document.createElement('span');
var link = document.createElement('a');
link.collapseDiv = siblingContainer;
link.href = '';
var image = document.createElement('img');
if (this.collapseSectionsByDefault) {
image.src = this.expandImage;
image.alt = contentPage.res.expandText;
image.title = contentPage.res.expandText;
}
else {
image.src = this.collapseImage;
image.alt = contentPage.res.collapseText;
image.title = contentPage.res.collapseText;
}
image.width = '17';
image.height = '15';
image.border = '0';
image.align = 'absmiddle';
link.appendChild(image);
var self = this;
link.onclick = function(evt) {
// here "this" is the tarhet element, i.e. the IMG
// Expands or collapses a section based on the received event.
if (this.collapseDiv.style.display == '') {
this.parentNode.parentNode.nextSibling.style.display = 'none';
this.firstChild.src = self.expandImage;
this.firstChild.alt = contentPage.res.expandText;
this.firstChild.title = contentPage.res.expandText;
}
else {
this.parentNode.parentNode.nextSibling.style.display = '';
this.firstChild.src = self.collapseImage;
this.firstChild.alt = contentPage.res.collapseText;
this.firstChild.title = contentPage.res.collapseText;
}
if (evt && evt.preventDefault) {
evt.preventDefault();
}
return false;
};
this.sectionCollapseLinks[index] = link;
span.appendChild(link);
element.insertBefore(span, element.firstChild);
element.appendChild(document.createTextNode(String.fromCharCode(160)));
element.appendChild(document.createTextNode(String.fromCharCode(160)));
// Add a Back To Top link in the section heading.
this.createBackToTopLink(siblingContainer);
}
};
// Creates a Back to top link.
ContentPageSection.prototype.createBackToTopLink = function(element) {
var div;
if (document.createElement && (div = document.createElement('div'))) {
div.className = 'backToTopLink';
div.align = 'right';
var image = document.createElement('img');
image.alt = this.backToTopText;
image.title = this.backToTopText;
image.src = this.backToTopImage;
image.width = '16';
image.height = '16';
image.border = '0';
image.align = 'absmiddle';
var link = document.createElement('a');
link.className = 'backToTopLink';
link.href = '#';
link.appendChild(image);
var span = document.createElement('span');
span.className = 'backToTopLink';
span.appendChild(document.createTextNode(this.backToTopText));
link.appendChild(span);
div.appendChild(link);
element.appendChild(div);
}
};
// Creates the Expand All and Collapse All Sections links.
ContentPageSection.prototype.createExpandCollapseAllSectionsLinks = function(firstElement) {
var div;
var self = this;
if (document.createElement && (div = document.createElement('div'))) {
div.className = 'expandCollapseLink';
div.align = 'right';
var image = document.createElement('img');
image.src = this.expandAllImage;
image.alt = this.expandAllText;
image.title = this.expandAllText;
image.width = '16';
image.height = '16';
image.border = '0';
image.align = 'absmiddle';
var link = document.createElement('a');
link.className = 'expandCollapseLink';
link.href = '';
link.appendChild(image);
link.onclick = /*this.expandAll;*/ function(evt) {
/*
for (var i = 0; i < self.sectionCollapseDivs.length; i++) {
self.sectionCollapseDivs[i].style.display = '';
self.sectionCollapseLinks[i].firstChild.src = self.collapseImage;
}
*/
self.expandAll();
if (evt && evt.preventDefault) {
evt.preventDefault();
}
return false;
};
var span = document.createElement('span');
span.className = 'expandCollapseText';
span.appendChild(document.createTextNode(this.expandAllText));
link.appendChild(span);
div.appendChild(link);
div.appendChild(document.createTextNode(String.fromCharCode(160)));
div.appendChild(document.createTextNode(String.fromCharCode(160)));
div.appendChild(document.createTextNode(String.fromCharCode(160)));
div.appendChild(document.createTextNode(String.fromCharCode(160)));
image = document.createElement('img');
image.src = this.collapseAllImage;
image.alt = this.collapseAllText;
image.title = this.collapseAllText;
image.width = '16';
image.height = '16';
image.border = '0';
image.align = 'absmiddle';
link = document.createElement('a');
link.className = 'expandCollapseLink';
link.href = '#';
link.appendChild(image);
link.onclick = /*this.collapseAll;*/function(evt) {
/*
for (var i = 0; i < self.sectionCollapseDivs.length; i++) {
self.sectionCollapseDivs[i].style.display = 'none';
self.sectionCollapseLinks[i].firstChild.src = self.expandImage;
}
*/
self.collapseAll();
if (evt && evt.preventDefault) {
evt.preventDefault();
}
return false;
};
span = document.createElement('span');
span.className = 'expandCollapseText';
span.appendChild(document.createTextNode(this.collapseAllText));
link.appendChild(span);
div.appendChild(link);
/*
var overviewSeparator = document.getElementById("overviewSeparator");
overviewSeparator.parentNode.insertBefore(div, overviewSeparator);
*/
if (this.firstSection != null) {
this.firstSection.parentNode.insertBefore(div, this.firstSection);
}
if ( contentPage.getApp() != null ) {
div.style.display = "none";
}
};
ContentPageSection.prototype.expandAll = function() {
for (var i = 0; i < this.sectionCollapseDivs.length; i++) {
this.sectionCollapseDivs[i].style.display = '';
this.sectionCollapseLinks[i].firstChild.src = this.collapseImage;
}
};
ContentPageSection.prototype.collapseAll = function() {
for (var i = 0; i < this.sectionCollapseDivs.length; i++) {
this.sectionCollapseDivs[i].style.display = 'none';
this.sectionCollapseLinks[i].firstChild.src = this.expandImage;
}
};
};