Many resources are needed to download a project. Please understand that we have to compensate our server costs. Thank you in advance. Project price only 1 $
You can buy this project and download/modify it how often you want.
/*
* Copyright (C) 2010-2015 Gordon Fraser, Andrea Arcuri and EvoSuite
* contributors
*
* This file is part of EvoSuite.
*
* EvoSuite is free software: you can redistribute it and/or modify it
* under the terms of the GNU Lesser Public License as published by the
* Free Software Foundation, either version 3.0 of the License, or (at your
* option) any later version.
*
* EvoSuite is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser Public License for more details.
*
* You should have received a copy of the GNU Lesser Public License along
* with EvoSuite. If not, see .
*/
/*****************************************************************
F O L D B U T T O N P L U G - I N
*****************************************************************
Version 1.00
Date 30 August 2011
Author Peter Fox
Contact author at vulpeculox.net
Web page vulpeculox.net/bits/js/dvnt/foldButton
Description This jQuery plugin allows show/hide buttons to be
easily attached to one or more sections of a document.
This can be as simple as $('div#someDiv').foldButton();
in the ready() function.
Documentation See documentation.htm
Licence Public domain
*****************************************************************/
(function( $ ){
$.fn.foldButton = function(Options,Argument) {
var fbHEADINGS = 'H1,H2,H3,H4,H5,H6';
var defaults = {
'closedText' : 'Open',
'openedText' : 'Close',
'compact' : true,
'cascadeClose' : true,
'cascadeOpen' : false,
'open' : false,
'title' : '',
'titleLength' : 100,
'speed' : 300,
'radioGroup' : ''
};
var bu = '?';
// Peculiar way of setting up sub-routines inside the single namespace
// This is as clear as I can make it.
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// ----------------------------------------
// Set class and text according to 'open' data value
// ----------------------------------------
if(Options=='setDisplay'){
return this.each(function(ix) {
var b = $(this);
var isOpen = b.data('open');
if(isOpen===true){
b.removeClass('fbClosed'); // toggle display class
b.addClass('fbOpen'); // toggle display class
b.text(b.data('openedText')); // set correct display text
b.attr('title','');
}else{
b.removeClass('fbOpen');
b.addClass('fbClosed');
b.text(b.data('closedText')); // this is now closed
b.attr('title',b.data('title')); // full title
}
});
}
// ----------------------------------------
// Close command
// Only supply visible (:visible) arguments!
// ----------------------------------------
if(Options=='close'){
return this.each(function(ix) {
var bu = $(this);
var isOpen = bu.data('open');
if(isOpen==true){bu.click();}
});
}
// ----------------------------------------
// Open command.
// Only supply visible (:visible) arguments!
// ----------------------------------------
if(Options=='open'){
return this.each(function(ix) {
var bu = $(this);
var isOpen = bu.data('open');
if(isOpen==false){bu.click();}
});
}
// ----------------------------------------
// Radio close.
// Close all buttons with the radio group
// ----------------------------------------
if(Options=='radioCloseRest'){
return this.each(function(ix) {
var bu = $(this);
var rg = bu.data('radioGroup');
if(rg){
var rparent = bu.parent().parent(); // might be parent or parent's parent. this is 'safe'
rparent.find('.foldButton:visible').foldButton('radioCloseThis',rg);
}
});
}
// ----------------------------------------
// Radio close.
// Close button if radio group matches argument
// ----------------------------------------
if(Options=='radioCloseThis'){
return this.each(function(ix) {
var bu = $(this);
var rg = bu.data('radioGroup');
if(rg==Argument){
if(bu.data('open')==true){bu.click();}
}
});
}
// ----------------------------------------
// Initialise
// Options is not any of the preceeding
// ----------------------------------------
var settings = defaults;
if(Options){$.extend(settings,Options);}
return this.each(function(ix) {
var host = $(this);
var tag = host.get(0).tagName;
var isH = (fbHEADINGS.indexOf(tag)>-1);
var target = (isH) ? host.next() : host;
var buttonInner = null;
// Create a title from target content
var title = settings['title'];
if(title ==''){
var title = target.attr('title');
if(! title){
var titleLength = settings['titleLength'];
if(titleLength<0){titleLength=0;}
if(titleLength>1000){titleLength=1000;}
title = target.text().substr(0,titleLength)+'...';}
}
// various placing of 1 or 2 buttons
if(isH){
host.prepend(bu);
var button = host.children('span.foldButton:first');
}else{
if(settings['compact']==true){ // inner button for close
host.prepend(bu);
buttonInner = host.children('span.foldButton:first');
}
host.before(bu); // outer button for open/close
var button = host.prev('span.foldButton');
}
// store data with button(s)
for(k in settings){
button.data(k,settings[k]);
if(buttonInner){
buttonInner.data(k,settings[k]);
}
}
if(title){button.data('title',title)};
var ct = button.data('closedText');
if(ct.indexOf('TITLE')>-1){
ct = ct.replace(/TITLE/,title.substr(0,100));
button.data('closedText',ct);
}
// open/close target
if(button.data('open')===true){
target.show();
}else{
target.hide();
}
// May have to force double-button open states
if(buttonInner){
if(button.data('open')===true){button.hide();}
button.data('open',false); // 2-button outer always displays "open"
buttonInner.data('open',true); // 2-button inner always displays "close"
}
// implement the button displays
button.foldButton('setDisplay');
if(buttonInner){buttonInner.foldButton('setDisplay');}
// inner DIV button click (must be close)
// --------------------------------------
if(buttonInner){
buttonInner.click(function(){
var bu = $(this);
var parent = bu.parent();
var buttonOpen = parent.prev();
parent.hide(bu.data('speed'));
buttonOpen.show();
// possibly cascade
if(bu.data('cascadeClose')===true){ // possibly cascade
parent.children().children('span.foldButton:visible').foldButton('close');
}
return false;
});
}
// 1-button toggle or 2-button open
// --------------------------------
button.click(function(){
var bu = $(this);
var currentlyOpen = bu.data('open');
var parent = bu.parent();
var parentTag = parent.get(0).tagName;
var parentIsH = (fbHEADINGS.indexOf(parentTag)>-1);
var isCompact = bu.data('compact');
if((isCompact==true)&&(isH==false)){
// TWO BUTTONS must be opening no need to hack display
bu.hide(); // hide
if(bu.data('radioGroup')){
// The RADIO feature means that all other foldButtons with the SAME PARENT
// will be closed so only this one is open
bu.foldButton('radioCloseRest');
}
target.show(bu.data('speed')); // show target
}else{
// ONE BUTTON
if(currentlyOpen){ // CLOSING
bu.data('open',false); // flip state
target.hide(bu.data('speed'));
if(bu.data('cascadeClose')===true){ // possibly cascade
target.children().children('span.foldButton:visible').foldButton('close');
}
}else{ // OPENING
if(bu.data('radioGroup')){
// The RADIO feature means that all other foldButtons with the SAME PARENT
// will be closed so only this one is open
bu.foldButton('radioCloseRest');
}
bu.data('open',true); // flip state
target.show(bu.data('speed'));
if(bu.data('cascadeOpen')===true){ // possibly cascade
target.children().children('span.foldButton').foldButton('open');
}
}
bu.foldButton('setDisplay');
}
return false;
});
});
};
})( jQuery );