App-SocialCalc-Multiplayer
view release on metacpan or search on metacpan
socialcalc/socialcalcspreadsheetcontrol.js view on Meta::CPAN
this.tabnums.settings = this.tabs.length;
this.tabs.push({name: "settings", text: "Format", html:
'<div id="%id.settingstools" style="display:none;">'+
' <div id="%id.sheetsettingstoolbar" style="display:none;">'+
' <table cellspacing="0" cellpadding="0"><tr><td>'+
' <div style="%tbt.">%loc!SHEET SETTINGS!:</div>'+
' </td></tr><tr><td>'+
' <input id="%id.settings-savesheet" type="button" value="%loc!Save!" onclick="SocialCalc.SettingsControlSave(\'sheet\');">'+
' <input type="button" value="%loc!Cancel!" onclick="SocialCalc.SettingsControlSave(\'cancel\');">'+
' <input type="button" value="%loc!Show Cell Settings!" onclick="SocialCalc.SpreadsheetControlSettingsSwitch(\'cell\');return false;">'+
' </td></tr></table>'+
' </div>'+
' <div id="%id.cellsettingstoolbar" style="display:none;">'+
' <table cellspacing="0" cellpadding="0"><tr><td>'+
' <div style="%tbt.">%loc!CELL SETTINGS!: <span id="%id.settingsecell"> </span></div>'+
' </td></tr><tr><td>'+
' <input id="%id.settings-savecell" type="button" value="%loc!Save!" onclick="SocialCalc.SettingsControlSave(\'cell\');">'+
' <input type="button" value="%loc!Cancel!" onclick="SocialCalc.SettingsControlSave(\'cancel\');">'+
' <input type="button" value="%loc!Show Sheet Settings!" onclick="SocialCalc.SpreadsheetControlSettingsSwitch(\'sheet\');return false;">'+
' </td></tr></table>'+
' </div>'+
'</div>',
view: "settings",
onclick: function(s, t) {
SocialCalc.SettingsControls.idPrefix = s.idPrefix; // used to get color chooser div
SocialCalc.SettingControlReset();
var sheetattribs = s.sheet.EncodeSheetAttributes();
var cellattribs = s.sheet.EncodeCellAttributes(s.editor.ecell.coord);
SocialCalc.SettingsControlLoadPanel(s.views.settings.values.sheetspanel, sheetattribs);
SocialCalc.SettingsControlLoadPanel(s.views.settings.values.cellspanel, cellattribs);
document.getElementById(s.idPrefix+"settingsecell").innerHTML = s.editor.ecell.coord;
SocialCalc.SpreadsheetControlSettingsSwitch("cell");
s.views.settings.element.style.height = s.viewheight+"px";
s.views.settings.element.firstChild.style.height = s.viewheight+"px";
var range; // set save message
if (s.editor.range.hasrange) {
range = SocialCalc.crToCoord(s.editor.range.left, s.editor.range.top) + ":" +
SocialCalc.crToCoord(s.editor.range.right, s.editor.range.bottom);
}
else {
range = s.editor.ecell.coord;
}
document.getElementById(s.idPrefix+"settings-savecell").value = SocialCalc.LocalizeString("Save to")+": "+range;
},
onclickFocus: true
});
this.views["settings"] = {name: "settings", values: {},
oncreate: function(s, viewobj) {
var scc = SocialCalc.Constants;
viewobj.values.sheetspanel = {
// name: "sheet",
colorchooser: {id: s.idPrefix+"scolorchooser"},
formatnumber: {setting: "numberformat", type: "PopupList", id: s.idPrefix+"formatnumber",
initialdata: scc.SCFormatNumberFormats},
formattext: {setting: "textformat", type: "PopupList", id: s.idPrefix+"formattext",
initialdata: scc.SCFormatTextFormats},
fontfamily: {setting: "fontfamily", type: "PopupList", id: s.idPrefix+"fontfamily",
initialdata: scc.SCFormatFontfamilies},
fontlook: {setting: "fontlook", type: "PopupList", id: s.idPrefix+"fontlook",
initialdata: scc.SCFormatFontlook},
fontsize: {setting: "fontsize", type: "PopupList", id: s.idPrefix+"fontsize",
initialdata: scc.SCFormatFontsizes},
textalignhoriz: {setting: "textalignhoriz", type: "PopupList", id: s.idPrefix+"textalignhoriz",
initialdata: scc.SCFormatTextAlignhoriz},
numberalignhoriz: {setting: "numberalignhoriz", type: "PopupList", id: s.idPrefix+"numberalignhoriz",
initialdata: scc.SCFormatNumberAlignhoriz},
alignvert: {setting: "alignvert", type: "PopupList", id: s.idPrefix+"alignvert",
initialdata: scc.SCFormatAlignVertical},
textcolor: {setting: "textcolor", type: "ColorChooser", id: s.idPrefix+"textcolor"},
bgcolor: {setting: "bgcolor", type: "ColorChooser", id: s.idPrefix+"bgcolor"},
padtop: {setting: "padtop", type: "PopupList", id: s.idPrefix+"padtop",
initialdata: scc.SCFormatPadsizes},
padright: {setting: "padright", type: "PopupList", id: s.idPrefix+"padright",
initialdata: scc.SCFormatPadsizes},
padbottom: {setting: "padbottom", type: "PopupList", id: s.idPrefix+"padbottom",
initialdata: scc.SCFormatPadsizes},
padleft: {setting: "padleft", type: "PopupList", id: s.idPrefix+"padleft",
initialdata: scc.SCFormatPadsizes},
colwidth: {setting: "colwidth", type: "PopupList", id: s.idPrefix+"colwidth",
initialdata: scc.SCFormatColwidth},
recalc: {setting: "recalc", type: "PopupList", id: s.idPrefix+"recalc",
initialdata: scc.SCFormatRecalc}
};
viewobj.values.cellspanel = {
name: "cell",
colorchooser: {id: s.idPrefix+"scolorchooser"},
cformatnumber: {setting: "numberformat", type: "PopupList", id: s.idPrefix+"cformatnumber",
initialdata: scc.SCFormatNumberFormats},
cformattext: {setting: "textformat", type: "PopupList", id: s.idPrefix+"cformattext",
initialdata: scc.SCFormatTextFormats},
cfontfamily: {setting: "fontfamily", type: "PopupList", id: s.idPrefix+"cfontfamily",
initialdata: scc.SCFormatFontfamilies},
cfontlook: {setting: "fontlook", type: "PopupList", id: s.idPrefix+"cfontlook",
initialdata: scc.SCFormatFontlook},
cfontsize: {setting: "fontsize", type: "PopupList", id: s.idPrefix+"cfontsize",
initialdata: scc.SCFormatFontsizes},
calignhoriz: {setting: "alignhoriz", type: "PopupList", id: s.idPrefix+"calignhoriz",
initialdata: scc.SCFormatTextAlignhoriz},
calignvert: {setting: "alignvert", type: "PopupList", id: s.idPrefix+"calignvert",
initialdata: scc.SCFormatAlignVertical},
ctextcolor: {setting: "textcolor", type: "ColorChooser", id: s.idPrefix+"ctextcolor"},
cbgcolor: {setting: "bgcolor", type: "ColorChooser", id: s.idPrefix+"cbgcolor"},
cbt: {setting: "bt", type: "BorderSide", id: s.idPrefix+"cbt"},
cbr: {setting: "br", type: "BorderSide", id: s.idPrefix+"cbr"},
cbb: {setting: "bb", type: "BorderSide", id: s.idPrefix+"cbb"},
cbl: {setting: "bl", type: "BorderSide", id: s.idPrefix+"cbl"},
cpadtop: {setting: "padtop", type: "PopupList", id: s.idPrefix+"cpadtop",
initialdata: scc.SCFormatPadsizes},
cpadright: {setting: "padright", type: "PopupList", id: s.idPrefix+"cpadright",
initialdata: scc.SCFormatPadsizes},
cpadbottom: {setting: "padbottom", type: "PopupList", id: s.idPrefix+"cpadbottom",
initialdata: scc.SCFormatPadsizes},
cpadleft: {setting: "padleft", type: "PopupList", id: s.idPrefix+"cpadleft",
initialdata: scc.SCFormatPadsizes}
};
SocialCalc.SettingsControlInitializePanel(viewobj.values.sheetspanel);
SocialCalc.SettingsControlInitializePanel(viewobj.values.cellspanel);
},
replacements: {
itemtitle: {regex: /\%itemtitle\./g, replacement: 'style="padding:12px 10px 0px 10px;font-weight:bold;text-align:right;vertical-align:top;font-size:small;"'},
sectiontitle: {regex: /\%sectiontitle\./g, replacement: 'style="padding:16px 10px 0px 0px;font-weight:bold;vertical-align:top;font-size:small;color:#C00;"'},
parttitle: {regex: /\%parttitle\./g, replacement: 'style="font-weight:bold;font-size:x-small;padding:0px 0px 3px 0px;"'},
itembody: {regex: /\%itembody\./g, replacement: 'style="padding:12px 0px 0px 0px;vertical-align:top;font-size:small;"'},
bodypart: {regex: /\%bodypart\./g, replacement: 'style="padding:0px 10px 0px 0px;font-size:small;vertical-align:top;"'}
},
divStyle: "border:1px solid black;overflow:auto;",
html:
'<div id="%id.scolorchooser" style="display:none;position:absolute;z-index:20;"></div>'+
'<table cellspacing="0" cellpadding="0">'+
' <tr><td style="vertical-align:top;">'+
'<table id="%id.sheetsettingstable" style="display:none;" cellspacing="0" cellpadding="0">'+
'<tr>'+
' <td %itemtitle.><br>%loc!Default Format!:</td>'+
' <td %itembody.>'+
' <table cellspacing="0" cellpadding="0"><tr>'+
' <td %bodypart.>'+
' <div %parttitle.>%loc!Number!</div>'+
' <span id="%id.formatnumber"></span>'+
' </td>'+
' <td %bodypart.>'+
' <div %parttitle.>%loc!Text!</div>'+
' <span id="%id.formattext"></span>'+
' </td>'+
' </tr></table>'+
' </td>'+
'</tr>'+
'<tr>'+
' <td %itemtitle.><br>%loc!Default Alignment!:</td>'+
' <td %itembody.>'+
' <table cellspacing="0" cellpadding="0"><tr>'+
' <td %bodypart.>'+
' <div %parttitle.>%loc!Text Horizontal!</div>'+
' <span id="%id.textalignhoriz"></span>'+
' </td>'+
' <td %bodypart.>'+
' <div %parttitle.>%loc!Number Horizontal!</div>'+
' <span id="%id.numberalignhoriz"></span>'+
' </td>'+
' <td %bodypart.>'+
' <div %parttitle.>%loc!Vertical!</div>'+
' <span id="%id.alignvert"></span>'+
' </td>'+
' </tr></table>'+
' </td>'+
'</tr>'+
'<tr>'+
' <td %itemtitle.><br>%loc!Default Font!:</td>'+
' <td %itembody.>'+
' <table cellspacing="0" cellpadding="0"><tr>'+
' <td %bodypart.>'+
' <div %parttitle.>%loc!Family!</div>'+
' <span id="%id.fontfamily"></span>'+
' </td>'+
' <td %bodypart.>'+
' <div %parttitle.>%loc!Bold & Italics!</div>'+
' <span id="%id.fontlook"></span>'+
' </td>'+
' <td %bodypart.>'+
' <div %parttitle.>%loc!Size!</div>'+
' <span id="%id.fontsize"></span>'+
' </td>'+
' <td %bodypart.>'+
' <div %parttitle.>%loc!Color!</div>'+
' <div id="%id.textcolor"></div>'+
' </td>'+
' <td %bodypart.>'+
' <div %parttitle.>%loc!Background!</div>'+
' <div id="%id.bgcolor"></div>'+
' </td>'+
' </tr></table>'+
' </td>'+
'</tr>'+
'<tr>'+
' <td %itemtitle.><br>%loc!Default Padding!:</td>'+
' <td %itembody.>'+
' <table cellspacing="0" cellpadding="0"><tr>'+
' <td %bodypart.>'+
' <div %parttitle.>%loc!Top!</div>'+
' <span id="%id.padtop"></span>'+
' </td>'+
' <td %bodypart.>'+
' <div %parttitle.>%loc!Right!</div>'+
' <span id="%id.padright"></span>'+
' </td>'+
' <td %bodypart.>'+
' <div %parttitle.>%loc!Bottom!</div>'+
' <span id="%id.padbottom"></span>'+
' </td>'+
' <td %bodypart.>'+
' <div %parttitle.>%loc!Left!</div>'+
' <span id="%id.padleft"></span>'+
' </td>'+
' </tr></table>'+
' </td>'+
'</tr>'+
'<tr>'+
' <td %itemtitle.><br>%loc!Default Column Width!:</td>'+
' <td %itembody.>'+
' <table cellspacing="0" cellpadding="0"><tr>'+
' <td %bodypart.>'+
' <div %parttitle.> </div>'+
' <span id="%id.colwidth"></span>'+
' </td>'+
' </tr></table>'+
' </td>'+
'</tr>'+
'<tr>'+
' <td %itemtitle.><br>%loc!Recalculation!:</td>'+
' <td %itembody.>'+
' <table cellspacing="0" cellpadding="0"><tr>'+
' <td %bodypart.>'+
' <div %parttitle.> </div>'+
' <span id="%id.recalc"></span>'+
' </td>'+
' </tr></table>'+
' </td>'+
'</tr>'+
'</table>'+
'<table id="%id.cellsettingstable" cellspacing="0" cellpadding="0">'+
'<tr>'+
' <td %itemtitle.><br>%loc!Format!:</td>'+
' <td %itembody.>'+
' <table cellspacing="0" cellpadding="0"><tr>'+
' <td %bodypart.>'+
' <div %parttitle.>%loc!Number!</div>'+
' <span id="%id.cformatnumber"></span>'+
' </td>'+
' <td %bodypart.>'+
' <div %parttitle.>%loc!Text!</div>'+
' <span id="%id.cformattext"></span>'+
' </td>'+
' </tr></table>'+
' </td>'+
'</tr>'+
'<tr>'+
' <td %itemtitle.><br>%loc!Alignment!:</td>'+
' <td %itembody.>'+
' <table cellspacing="0" cellpadding="0"><tr>'+
' <td %bodypart.>'+
' <div %parttitle.>%loc!Horizontal!</div>'+
' <span id="%id.calignhoriz"></span>'+
' </td>'+
' <td %bodypart.>'+
' <div %parttitle.>%loc!Vertical!</div>'+
' <span id="%id.calignvert"></span>'+
' </td>'+
' </tr></table>'+
' </td>'+
'</tr>'+
'<tr>'+
' <td %itemtitle.><br>%loc!Font!:</td>'+
' <td %itembody.>'+
' <table cellspacing="0" cellpadding="0"><tr>'+
' <td %bodypart.>'+
' <div %parttitle.>%loc!Family!</div>'+
' <span id="%id.cfontfamily"></span>'+
' </td>'+
' <td %bodypart.>'+
' <div %parttitle.>%loc!Bold & Italics!</div>'+
' <span id="%id.cfontlook"></span>'+
' </td>'+
' <td %bodypart.>'+
' <div %parttitle.>%loc!Size!</div>'+
' <span id="%id.cfontsize"></span>'+
' </td>'+
' <td %bodypart.>'+
' <div %parttitle.>%loc!Color!</div>'+
' <div id="%id.ctextcolor"></div>'+
' </td>'+
' <td %bodypart.>'+
' <div %parttitle.>%loc!Background!</div>'+
' <div id="%id.cbgcolor"></div>'+
' </td>'+
' </tr></table>'+
' </td>'+
'</tr>'+
'<tr>'+
' <td %itemtitle.><br>%loc!Borders!:</td>'+
' <td %itembody.>'+
' <table cellspacing="0" cellpadding="0">'+
' <tr><td %bodypart. colspan="3"><div %parttitle.>%loc!Top Border!</div></td>'+
' <td %bodypart. colspan="3"><div %parttitle.>%loc!Right Border!</div></td>'+
' <td %bodypart. colspan="3"><div %parttitle.>%loc!Bottom Border!</div></td>'+
' <td %bodypart. colspan="3"><div %parttitle.>%loc!Left Border!</div></td>'+
' </tr><tr>'+
' <td %bodypart.>'+
' <input id="%id.cbt-onoff-bcb" onclick="SocialCalc.SettingsControlOnchangeBorder(this);" type="checkbox">'+
' </td>'+
' <td %bodypart.>'+
' <div id="%id.cbt-color"></div>'+
' </td>'+
' <td> </td>'+
' <td %bodypart.>'+
' <input id="%id.cbr-onoff-bcb" onclick="SocialCalc.SettingsControlOnchangeBorder(this);" type="checkbox">'+
' </td>'+
' <td %bodypart.>'+
' <div id="%id.cbr-color"></div>'+
' </td>'+
' <td> </td>'+
' <td %bodypart.>'+
' <input id="%id.cbb-onoff-bcb" onclick="SocialCalc.SettingsControlOnchangeBorder(this);" type="checkbox">'+
' </td>'+
' <td %bodypart.>'+
' <div id="%id.cbb-color"></div>'+
' </td>'+
' <td> </td>'+
' <td %bodypart.>'+
' <input id="%id.cbl-onoff-bcb" onclick="SocialCalc.SettingsControlOnchangeBorder(this);" type="checkbox">'+
' </td>'+
' <td %bodypart.>'+
' <div id="%id.cbl-color"></div>'+
' </td>'+
' <td> </td>'+
' </tr></table>'+
' </td>'+
'</tr>'+
'<tr>'+
' <td %itemtitle.><br>%loc!Padding!:</td>'+
' <td %itembody.>'+
' <table cellspacing="0" cellpadding="0"><tr>'+
' <td %bodypart.>'+
' <div %parttitle.>%loc!Top!</div>'+
' <span id="%id.cpadtop"></span>'+
' </td>'+
' <td %bodypart.>'+
' <div %parttitle.>%loc!Right!</div>'+
' <span id="%id.cpadright"></span>'+
' </td>'+
' <td %bodypart.>'+
' <div %parttitle.>%loc!Bottom!</div>'+
' <span id="%id.cpadbottom"></span>'+
' </td>'+
' <td %bodypart.>'+
' <div %parttitle.>%loc!Left!</div>'+
' <span id="%id.cpadleft"></span>'+
' </td>'+
' </tr></table>'+
' </td>'+
'</tr>'+
'</table>'+
' </td><td style="vertical-align:top;padding:12px 0px 0px 12px;">'+
' <div style="width:100px;height:100px;overflow:hidden;border:1px solid black;background-color:#EEE;padding:6px;">'+
' <table cellspacing="0" cellpadding="0"><tr>'+
' <td id="sample-text" style="height:100px;width:100px;"><div>%loc!This is a<br>sample!</div><div>-1234.5</div></td>'+
' </tr></table>'+
' </div>'+
' </td></tr></table>'+
'<br>'
};
// Sort
this.tabnums.sort = this.tabs.length;
this.tabs.push({name: "sort", text: "Sort", html:
' <div id="%id.sorttools" style="display:none;">'+
' <table cellspacing="0" cellpadding="0"><tr>'+
' <td style="vertical-align:top;padding-right:4px;width:160px;">'+
' <div style="%tbt.">%loc!Set Cells To Sort!</div>'+
' <select id="%id.sortlist" size="1" onfocus="%s.CmdGotFocus(this);"><option selected>[select range]</option></select>'+
' <input type="button" value="%loc!OK!" onclick="%s.DoCmd(this, \'ok-setsort\');" style="font-size:x-small;">'+
' </td>'+
' <td style="vertical-align:middle;padding-right:16px;width:100px;text-align:right;">'+
' <div style="%tbt."> </div>'+
' <input type="button" id="%id.sortbutton" value="%loc!Sort Cells! A1:A1" onclick="%s.DoCmd(this, \'dosort\');" style="visibility:hidden;">'+
' </td>'+
' <td style="vertical-align:top;padding-right:16px;">'+
' <table cellspacing="0" cellpadding="0"><tr>'+
' <td style="vertical-align:top;">'+
' <div style="%tbt.">%loc!Major Sort!</div>'+
' <select id="%id.majorsort" size="1" onfocus="%s.CmdGotFocus(this);"></select>'+
' </td><td>'+
' <input type="radio" name="majorsort" id="%id.majorsortup" value="up" checked><span style="font-size:x-small;color:#FFF;">%loc!Up!</span><br>'+
' <input type="radio" name="majorsort" id="%id.majorsortdown" value="down"><span style="font-size:x-small;color:#FFF;">%loc!Down!</span>'+
' </td>'+
' </tr></table>'+
' </td>'+
' <td style="vertical-align:top;padding-right:16px;">'+
' <table cellspacing="0" cellpadding="0"><tr>'+
' <td style="vertical-align:top;">'+
' <div style="%tbt.">%loc!Minor Sort!</div>'+
' <select id="%id.minorsort" size="1" onfocus="%s.CmdGotFocus(this);"></select>'+
' </td><td>'+
' <input type="radio" name="minorsort" id="%id.minorsortup" value="up" checked><span style="font-size:x-small;color:#FFF;">%loc!Up!</span><br>'+
' <input type="radio" name="minorsort" id="%id.minorsortdown" value="down"><span style="font-size:x-small;color:#FFF;">%loc!Down!</span>'+
' </td>'+
' </tr></table>'+
' </td>'+
' <td style="vertical-align:top;padding-right:16px;">'+
' <table cellspacing="0" cellpadding="0"><tr>'+
' <td style="vertical-align:top;">'+
' <div style="%tbt.">%loc!Last Sort!</div>'+
' <select id="%id.lastsort" size="1" onfocus="%s.CmdGotFocus(this);"></select>'+
' </td><td>'+
' <input type="radio" name="lastsort" id="%id.lastsortup" value="up" checked><span style="font-size:x-small;color:#FFF;">%loc!Up!</span><br>'+
' <input type="radio" name="lastsort" id="%id.lastsortdown" value="down"><span style="font-size:x-small;color:#FFF;">%loc!Down!</span>'+
' </td>'+
' </tr></table>'+
' </td>'+
' </tr></table>'+
' </div>',
onclick: SocialCalc.SpreadsheetControlSortOnclick});
this.editor.SettingsCallbacks.sort = {save: SocialCalc.SpreadsheetControlSortSave, load: SocialCalc.SpreadsheetControlSortLoad};
// Audit
this.tabnums.audit = this.tabs.length;
this.tabs.push({name: "audit", text: "Audit", html:
'<div id="%id.audittools" style="display:none;">'+
' <div style="%tbt."> </div>'+
'</div>',
view: "audit",
onclick:
function(s, t) {
var SCLoc = SocialCalc.LocalizeString;
var i, j;
var str = '<table cellspacing="0" cellpadding="0" style="margin-bottom:10px;"><tr><td style="font-size:small;padding:6px;"><b>'+SCLoc("Audit Trail This Session")+':</b><br><br>';
var stack = s.sheet.changes.stack;
var tos = s.sheet.changes.tos;
for (i=0; i<stack.length; i++) {
if (i==tos+1) str += '<br></td></tr><tr><td style="font-size:small;background-color:#EEE;padding:6px;">'+SCLoc("UNDONE STEPS")+':<br>';
for (j=0; j<stack[i].command.length; j++) {
str += SocialCalc.special_chars(stack[i].command[j]) + "<br>";
}
}
s.views.audit.element.innerHTML = str+"</td></tr></table>";
SocialCalc.CmdGotFocus(true);
},
onclickFocus: true
});
this.views["audit"] = {name: "audit",
divStyle: "border:1px solid black;overflow:auto;",
html: 'Audit Trail'
};
// Comment
this.tabnums.comment = this.tabs.length;
this.tabs.push({name: "comment", text: "Comment", html:
'<div id="%id.commenttools" style="display:none;">'+
'<table cellspacing="0" cellpadding="0"><tr><td>'+
'<textarea id="%id.commenttext" style="font-size:small;height:32px;width:600px;overflow:auto;" onfocus="%s.CmdGotFocus(this);"></textarea>'+
'</td><td style="vertical-align:top;">'+
' <input type="button" value="%loc!Save!" onclick="%s.SpreadsheetControlCommentSet();" style="font-size:x-small;">'+
'</td></tr></table>'+
'</div>',
view: "sheet",
onclick: SocialCalc.SpreadsheetControlCommentOnclick,
onunclick: SocialCalc.SpreadsheetControlCommentOnunclick
});
// Names
this.tabnums.names = this.tabs.length;
this.tabs.push({name: "names", text: "Names", html:
'<div id="%id.namestools" style="display:none;">'+
' <table cellspacing="0" cellpadding="0"><tr>'+
' <td style="vertical-align:top;padding-right:24px;">'+
' <div style="%tbt.">%loc!Existing Names!</div>'+
' <select id="%id.nameslist" size="1" onchange="%s.SpreadsheetControlNamesChangedName();" onfocus="%s.CmdGotFocus(this);"><option selected>[New]</option></select>'+
' </td>'+
' <td style="vertical-align:top;padding-right:6px;">'+
' <div style="%tbt.">%loc!Name!</div>'+
' <input type="text" id="%id.namesname" style="font-size:x-small;width:75px;" onfocus="%s.CmdGotFocus(this);">'+
' </td>'+
' <td style="vertical-align:top;padding-right:6px;">'+
' <div style="%tbt.">%loc!Description!</div>'+
' <input type="text" id="%id.namesdesc" style="font-size:x-small;width:150px;" onfocus="%s.CmdGotFocus(this);">'+
' </td>'+
' <td style="vertical-align:top;padding-right:6px;">'+
' <div style="%tbt.">%loc!Value!</div>'+
' <input type="text" id="%id.namesvalue" width="16" style="font-size:x-small;width:100px;" onfocus="%s.CmdGotFocus(this);">'+
' </td>'+
' <td style="vertical-align:top;padding-right:12px;width:100px;">'+
' <div style="%tbt.">%loc!Set Value To!</div>'+
' <input type="button" id="%id.namesrangeproposal" value="A1" onclick="%s.SpreadsheetControlNamesSetValue();" style="font-size:x-small;">'+
' </td>'+
' <td style="vertical-align:top;padding-right:6px;">'+
' <div style="%tbt."> </div>'+
' <input type="button" value="%loc!Save!" onclick="%s.SpreadsheetControlNamesSave();" style="font-size:x-small;">'+
' <input type="button" value="%loc!Delete!" onclick="%s.SpreadsheetControlNamesDelete()" style="font-size:x-small;">'+
' </td>'+
' </tr></table>'+
'</div>',
view: "sheet",
onclick: SocialCalc.SpreadsheetControlNamesOnclick,
onunclick: SocialCalc.SpreadsheetControlNamesOnunclick
});
// Clipboard
this.tabnums.clipboard = this.tabs.length;
this.tabs.push({name: "clipboard", text: "Clipboard", html:
'<div id="%id.clipboardtools" style="display:none;">'+
' <table cellspacing="0" cellpadding="0"><tr>'+
' <td style="vertical-align:top;padding-right:24px;">'+
' <div style="%tbt.">'+
' '+
' </div>'+
' </td>'+
' </tr></table>'+
'</div>',
view: "clipboard",
onclick: SocialCalc.SpreadsheetControlClipboardOnclick,
onclickFocus: "clipboardtext"
});
this.views["clipboard"] = {name: "clipboard", divStyle: "overflow:auto;", html:
' <div style="font-size:x-small;padding:5px 0px 10px 0px;">'+
' <b>%loc!Display Clipboard in!:</b>'+
' <input type="radio" id="%id.clipboardformat-tab" name="%id.clipboardformat" checked onclick="%s.SpreadsheetControlClipboardFormat(\'tab\');"> %loc!Tab-delimited format! '+
' <input type="radio" id="%id.clipboardformat-csv" name="%id.clipboardformat" onclick="%s.SpreadsheetControlClipboardFormat(\'csv\');"> %loc!CSV format! '+
' <input type="radio" id="%id.clipboardformat-scsave" name="%id.clipboardformat" onclick="%s.SpreadsheetControlClipboardFormat(\'scsave\');"> %loc!SocialCalc-save format!'+
' </div>'+
' <input type="button" value="%loc!Load SocialCalc Clipboard With This!" style="font-size:x-small;" onclick="%s.SpreadsheetControlClipboardLoad();"> '+
' <input type="button" value="%loc!Clear SocialCalc Clipboard!" style="font-size:x-small;" onclick="%s.SpreadsheetControlClipboardClear();"> '+
' <br>'+
' <textarea id="%id.clipboardtext" style="font-size:small;height:350px;width:800px;overflow:auto;" onfocus="%s.CmdGotFocus(this);"></textarea>'
};
return;
}
// Methods:
SocialCalc.SpreadsheetControl.prototype.InitializeSpreadsheetControl =
function(node, height, width, spacebelow) {return SocialCalc.InitializeSpreadsheetControl(this, node, height, width, spacebelow);};
SocialCalc.SpreadsheetControl.prototype.DoOnResize = function() {return SocialCalc.DoOnResize(this);};
SocialCalc.SpreadsheetControl.prototype.SizeSSDiv = function() {return SocialCalc.SizeSSDiv(this);};
SocialCalc.SpreadsheetControl.prototype.ExecuteCommand =
function(combostr, sstr) {return SocialCalc.SpreadsheetControlExecuteCommand(this, combostr, sstr);};
SocialCalc.SpreadsheetControl.prototype.CreateSheetHTML =
function() {return SocialCalc.SpreadsheetControlCreateSheetHTML(this);};
SocialCalc.SpreadsheetControl.prototype.CreateSpreadsheetSave =
function(otherparts) {return SocialCalc.SpreadsheetControlCreateSpreadsheetSave(this, otherparts);};
SocialCalc.SpreadsheetControl.prototype.DecodeSpreadsheetSave =
function(str) {return SocialCalc.SpreadsheetControlDecodeSpreadsheetSave(this, str);};
SocialCalc.SpreadsheetControl.prototype.CreateCellHTML =
function(coord) {return SocialCalc.SpreadsheetControlCreateCellHTML(this, coord);};
SocialCalc.SpreadsheetControl.prototype.CreateCellHTMLSave =
function(range) {return SocialCalc.SpreadsheetControlCreateCellHTMLSave(this, range);};
// Sheet Methods to make things a little easier:
SocialCalc.SpreadsheetControl.prototype.ParseSheetSave = function(str) {return this.sheet.ParseSheetSave(str);};
SocialCalc.SpreadsheetControl.prototype.CreateSheetSave = function() {return this.sheet.CreateSheetSave();};
// Functions:
//
// InitializeSpreadsheetControl(spreadsheet, node, height, width, spacebelow)
//
// Creates the control elements and makes them the child of node (string or element).
// If present, height and width specify size.
// If either is 0 or null (missing), the maximum that fits on the screen
// (taking spacebelow into account) is used.
//
// Displays the tabs and creates the views (other than "sheet").
// The first tab is set as selected, but onclick is not invoked.
//
// You should do a redisplay or recalc (which redisplays) after running this.
//
SocialCalc.InitializeSpreadsheetControl = function(spreadsheet, node, height, width, spacebelow) {
var scc = SocialCalc.Constants;
var SCLoc = SocialCalc.LocalizeString;
var SCLocSS = SocialCalc.LocalizeSubstrings;
var html, child, i, vname, v, style, button, bele;
var tabs = spreadsheet.tabs;
var views = spreadsheet.views;
spreadsheet.requestedHeight = height;
spreadsheet.requestedWidth = width;
socialcalc/socialcalcspreadsheetcontrol.js view on Meta::CPAN
combostr = SocialCalc.SpreadsheetCmdLookup[which] || "";
sstr = SocialCalc.SpreadsheetCmdSLookup[which] || "";
spreadsheet.ExecuteCommand(combostr, sstr);
break;
}
if (obj && obj.blur) obj.blur();
SocialCalc.KeyboardFocus();
}
SocialCalc.SpreadsheetCmdLookup = {
'copy': 'copy %C all',
'cut': 'cut %C all',
'paste': 'paste %C all',
'pasteformats': 'paste %C formats',
'delete': 'erase %C formulas',
'filldown': 'filldown %C all',
'fillright': 'fillright %C all',
'erase': 'erase %C all',
'borderon': 'set %C bt %S%Nset %C br %S%Nset %C bb %S%Nset %C bl %S',
'borderoff': 'set %C bt %S%Nset %C br %S%Nset %C bb %S%Nset %C bl %S',
'merge': 'merge %C',
'unmerge': 'unmerge %C',
'align-left': 'set %C cellformat left',
'align-center': 'set %C cellformat center',
'align-right': 'set %C cellformat right',
'align-default': 'set %C cellformat',
'insertrow': 'insertrow %C',
'insertcol': 'insertcol %C',
'deleterow': 'deleterow %C',
'deletecol': 'deletecol %C',
'undo': 'undo',
'redo': 'redo',
'recalc': 'recalc'
}
SocialCalc.SpreadsheetCmdSLookup = {
'borderon': '1px solid rgb(0,0,0)',
'borderoff': ''
}
/******* NO LONGER USED
SocialCalc.SpreadsheetCmdTable = {
cmd: [
{t:"Fill Right", s:"ffal", c:"fillright %C %S"},
{t:"Fill Down", s:"ffal", c:"filldown %C %S"},
{t:"Copy", s:"all", c:"copy %C %S"},
{t:"Cut", s:"all", c:"cut %C %S"},
{t:"Paste", s:"ffal", c:"paste %C %S"},
{t:"Erase", s:"ffal", c:"erase %C %S"},
{t:"Insert", s:"rowcol", c:"insert%S %C"},
{t:"Delete", s:"rowcol", c:"delete%S %C"},
{t:"Merge Cells", s:"none", c:"merge %C"},
{t:"Unmerge", s:"none", c:"unmerge %C"},
{t:"Sort", s:"sortcol", c:"sort %R %S"},
{t:"Cell Color", s:"colors", c:"set %C color %S"},
{t:"Cell Background", s:"colors", c:"set %C bgcolor %S"},
{t:"Cell Number Format", s:"ntvf", c:"set %C nontextvalueformat %S"},
{t:"Cell Font", s:"fonts", c:"set %C font %S"},
{t:"Cell Align", s:"cellformat", c:"set %C cellformat %S"},
{t:"Cell Borders", s:"borderOnOff", c:"set %C bt %S%Nset %C br %S%Nset %C bb %S%Nset %C bl %S"},
{t:"Column Width", s:"colWidths", c:"set %W width %S"},
{t:"Default Color", s:"colors", c:"set sheet defaultcolor %S"},
{t:"Default Background", s:"colors", c:"set sheet defaultbgcolor %S"},
{t:"Default Number Format", s:"ntvf", c:"set sheet defaultnontextvalueformat %S"},
{t:"Default Font", s:"fonts", c:"set sheet defaultfont %S"},
{t:"Default Text Align", s:"cellformat", c:"set sheet defaulttextformat %S"},
{t:"Default Number Align", s:"cellformat", c:"set sheet defaultnontextformat %S"},
{t:"Default Column Width", s:"colWidths", c:"set sheet defaultcolwidth %S"}
],
rowcolstuff: [
{t:"Insert", s:"rowcol", c:"insert%S %C"},
{t:"Delete", s:"rowcol", c:"delete%S %C"},
{t:"Paste", s:"ffal", c:"paste %C %S"},
{t:"Erase", s:"ffal", c:"erase %C %S"},
{t:"Fill Right", s:"ffal", c:"fillright %C %S"},
{t:"Fill Down", s:"ffal", c:"filldown %C %S"}
],
text: [
{t:"Cell Color", s:"colors", c:"set %C color %S"},
{t:"Cell Background", s:"colors", c:"set %C bgcolor %S"},
{t:"Cell Number Format", s:"ntvf", c:"set %C nontextvalueformat %S"},
{t:"Cell Text Format", s:"tvf", c:"set %C textvalueformat %S"},
{t:"Cell Font", s:"fonts", c:"set %C font %S"},
{t:"Cell Align", s:"cellformat", c:"set %C cellformat %S"},
{t:"Default Color", s:"colors", c:"set sheet defaultcolor %S"},
{t:"Default Background", s:"colors", c:"set sheet defaultbgcolor %S"},
{t:"Default Number Format", s:"ntvf", c:"set sheet defaultnontextvalueformat %S"},
{t:"Default Text Format", s:"tvf", c:"set sheet defaulttextvalueformat %S"},
{t:"Default Font", s:"fonts", c:"set sheet defaultfont %S"},
{t:"Default Text Align", s:"cellformat", c:"set sheet defaulttextformat %S"},
{t:"Default Number Align", s:"cellformat", c:"set sheet defaultnontextformat %S"}
],
slists: {
"colors": [
{t:"Default", s:""},
{t:"Black", s:"rgb(0,0,0)"},
{t:"Dark Gray", s:"rgb(102,102,102)"}, // #666
{t:"Gray", s:"rgb(204,204,204)"}, // #CCC
{t:"White", s:"rgb(255,255,255)"},
{t:"Red", s:"rgb(255,0,0)"},
{t:"Dark Red", s:"rgb(153,0,0)"},
{t:"Orange", s:"rgb(255,153,0)"},
{t:"Yellow", s:"rgb(255,255,0)"},
{t:"Light Yellow", s:"rgb(255,255,204)"},
{t:"Green", s:"rgb(0,255,0)"},
{t:"Dark Green", s:"rgb(0,153,0)"},
{t:"Blue", s:"rgb(0,0,255)"},
{t:"Dark Blue", s:"rgb(0,0,153)"},
{t:"Light Blue", s:"rgb(204,204,255)"}
],
"fonts": [ // style weight size family
{t:"Default", s:""},
{t:"Bold", s:"normal bold * *"},
{t:"Italic", s:"italic normal * *"},
{t:"Small", s:"* small *"},
{t:"Medium", s:"* medium *"},
{t:"Large", s:"* large *"},
{t:"Bold Small", s:"normal bold small *"},
{t:"Bold Medium", s:"normal bold medium *"},
{t:"Bold Large", s:"normal bold large *"}
],
"cellformat": [
{t:"Default", s:""},
{t:"Left", s:"left"},
{t:"Right", s:"right"},
{t:"Center", s:"center"}
],
"borderOnOff": [
{t:"On", s:"1px solid rgb(0,0,0)"},
{t:"Off", s:""}
],
"colWidths": [
{t:"Default", s:""},
{t:"20", s:"20"},
{t:"40", s:"40"},
{t:"60", s:"60"},
{t:"80", s:"80"},
{t:"100", s:"100"},
{t:"120", s:"120"},
{t:"140", s:"140"},
{t:"160", s:"160"},
{t:"180", s:"180"},
{t:"200", s:"200"},
{t:"220", s:"220"},
{t:"240", s:"240"},
{t:"260", s:"260"},
{t:"280", s:"280"},
{t:"300", s:"300"}
],
"ntvf": [
{t:"Default", s:""},
{t:"1234", s:"0"},
{t:"1,234", s:"#,##0"},
{t:"1,234.5", s:"#,##0.0"},
{t:"1,234.56", s:"#,##0.00"},
{t:"1,234.567", s:"#,##0.000"},
{t:"1,234%", s:"#,##0%"},
{t:"1,234.5%", s:"#,##0.0%"},
{t:"(1,234)", s:"#,##0_);(#,##0)"},
{t:"(1,234.5)", s:"#,##0.0_);(#,##0.0)"},
{t:"(1,234.56)", s:"#,##0.00_);(#,##0.00)"},
{t:"00", s:"00"},
{t:"000", s:"000"},
{t:"0000", s:"0000"},
{t:"$1,234.56", s:"$#,##0.00"},
{t:"2006-01-04", s:"yyyy-mm-dd"},
{t:"01:23:45", s:"hh:mm:ss"},
{t:"2006-01-04 01:23:45", s:"yyyy-mm-dd hh:mm:ss"},
{t:"Hidden", s:"hidden"}
],
"tvf": [
socialcalc/socialcalcspreadsheetcontrol.js view on Meta::CPAN
//
SocialCalc.SpreadsheetControlCreateCellHTMLSave = function(spreadsheet, range, linkstyle) {
var cr1, cr2, row, col, coord, cell, cellHTML;
var result = [];
var prange;
if (range) {
prange = SocialCalc.ParseRange(range);
}
else {
prange = {cr1: {row: 1, col:1},
cr2: {row: spreadsheet.sheet.attribs.lastrow, col: spreadsheet.sheet.attribs.lastcol}};
}
cr1 = prange.cr1;
cr2 = prange.cr2;
result.push("version:1.0");
for (row=cr1.row; row <= cr2.row; row++) {
for (col=cr1.col; col <= cr2.col; col++) {
coord = SocialCalc.crToCoord(col, row);
cell=spreadsheet.sheet.cells[coord];
if (!cell) continue;
if (cell.displaystring == undefined) {
cellHTML = SocialCalc.FormatValueForDisplay(spreadsheet.sheet, cell.datavalue, coord, (linkstyle || spreadsheet.context.defaultHTMLlinkstyle));
}
else {
cellHTML = cell.displaystring;
}
if (cellHTML == " ") continue;
result.push(coord+":"+SocialCalc.encodeForSave(cellHTML));
}
}
result.push(""); // one extra to get extra \n
return result.join("\n");
}
//
// Formula Bar Button Routines
//
SocialCalc.SpreadsheetControl.DoFunctionList = function() {
var i, cname, str, f, ele;
var scf = SocialCalc.Formula;
var scc = SocialCalc.Constants;
var fcl = scc.function_classlist;
var spreadsheet = SocialCalc.GetSpreadsheetControlObject();
var idp = spreadsheet.idPrefix+"function";
ele = document.getElementById(idp+"dialog");
if (ele) return; // already have one
scf.FillFunctionInfo();
str = '<table><tr><td><span style="font-size:x-small;font-weight:bold">%loc!Category!</span><br>'+
'<select id="'+idp+'class" size="'+fcl.length+'" style="width:120px;" onchange="SocialCalc.SpreadsheetControl.FunctionClassChosen(this.options[this.selectedIndex].value);">';
for (i=0; i<fcl.length; i++) {
str += '<option value="'+fcl[i]+'"'+(i==0?' selected>':'>')+SocialCalc.special_chars(scf.FunctionClasses[fcl[i]].name)+'</option>';
}
str += '</select></td><td> </td><td id="'+idp+'list"><span style="font-size:x-small;font-weight:bold">%loc!Functions!</span><br>'+
'<select id="'+idp+'name" size="'+fcl.length+'" style="width:240px;" '+
'onchange="SocialCalc.SpreadsheetControl.FunctionChosen(this.options[this.selectedIndex].value);" ondblclick="SocialCalc.SpreadsheetControl.DoFunctionPaste();">';
str += SocialCalc.SpreadsheetControl.GetFunctionNamesStr("all");
str += '</td></tr><tr><td colspan="3">'+
'<div id="'+idp+'desc" style="width:380px;height:80px;overflow:auto;font-size:x-small;">'+SocialCalc.SpreadsheetControl.GetFunctionInfoStr(scf.FunctionClasses[fcl[0]].items[0])+'</div>'+
'<div style="width:380px;text-align:right;padding-top:6px;font-size:small;">'+
'<input type="button" value="%loc!Paste!" style="font-size:smaller;" onclick="SocialCalc.SpreadsheetControl.DoFunctionPaste();"> '+
'<input type="button" value="%loc!Cancel!" style="font-size:smaller;" onclick="SocialCalc.SpreadsheetControl.HideFunctions();"></div>'+
'</td></tr></table>';
var main = document.createElement("div");
main.id = idp+"dialog";
main.style.position = "absolute";
var vp = SocialCalc.GetViewportInfo();
main.style.top = (vp.height/3)+"px";
main.style.left = (vp.width/3)+"px";
main.style.zIndex = 100;
main.style.backgroundColor = "#FFF";
main.style.border = "1px solid black";
main.style.width = "400px";
str = '<table cellspacing="0" cellpadding="0" style="border-bottom:1px solid black;"><tr>'+
'<td style="font-size:10px;cursor:default;width:100%;background-color:#999;color:#FFF;">'+" %loc!Function List!"+'</td>'+
'<td style="font-size:10px;cursor:default;color:#666;" onclick="SocialCalc.SpreadsheetControl.HideFunctions();"> X </td></tr></table>'+
'<div style="background-color:#DDD;">'+str+'</div>';
str = SocialCalc.LocalizeSubstrings(str);
main.innerHTML = str;
SocialCalc.DragRegister(main.firstChild.firstChild.firstChild.firstChild, true, true, {MouseDown: SocialCalc.DragFunctionStart, MouseMove: SocialCalc.DragFunctionPosition,
MouseUp: SocialCalc.DragFunctionPosition,
Disabled: null, positionobj: main});
spreadsheet.spreadsheetDiv.appendChild(main);
ele = document.getElementById(idp+"name");
ele.focus();
SocialCalc.CmdGotFocus(ele);
//!!! need to do keyboard handling: if esc, hide; if All, letter scrolls to there
}
SocialCalc.SpreadsheetControl.GetFunctionNamesStr = function(cname) {
var i, f;
var scf = SocialCalc.Formula;
var str = "";
f = scf.FunctionClasses[cname];
for (i=0; i<f.items.length; i++) {
str += '<option value="'+f.items[i]+'"'+(i==0?' selected>':'>')+f.items[i]+'</option>';
}
return str;
}
SocialCalc.SpreadsheetControl.FillFunctionNames = function(cname, ele) {
var i, f;
var scf = SocialCalc.Formula;
ele.length = 0;
f = scf.FunctionClasses[cname];
for (i=0; i<f.items.length; i++) {
ele.options[i] = new Option(f.items[i], f.items[i]);
if (i==0) {
ele.options[i].selected = true;
}
}
}
SocialCalc.SpreadsheetControl.GetFunctionInfoStr = function(fname) {
var scf = SocialCalc.Formula;
var f = scf.FunctionList[fname];
var scsc = SocialCalc.special_chars;
var str = "<b>"+fname+"("+scsc(scf.FunctionArgString(fname))+")</b><br>";
str += scsc(f[3]);
return str;
socialcalc/socialcalcspreadsheetcontrol.js view on Meta::CPAN
SocialCalc.SpreadsheetControl.DoFunctionPaste = function() {
var spreadsheet = SocialCalc.GetSpreadsheetControlObject();
var editor = spreadsheet.editor;
var ele = document.getElementById(spreadsheet.idPrefix+"functionname");
var mele = document.getElementById(spreadsheet.idPrefix+"multilinetextarea");
var text = ele.value+"(";
SocialCalc.SpreadsheetControl.HideFunctions();
if (mele) { // multi-line editing is in progress
mele.value += text;
mele.focus();
SocialCalc.CmdGotFocus(mele);
}
else {
editor.EditorAddToInput(text, "=");
}
}
SocialCalc.SpreadsheetControl.DoMultiline = function() {
var SCLocSS = SocialCalc.LocalizeSubstrings;
var str, ele, text;
var scc = SocialCalc.Constants;
var spreadsheet = SocialCalc.GetSpreadsheetControlObject();
var editor = spreadsheet.editor;
var wval = editor.workingvalues;
var spreadsheet = SocialCalc.GetSpreadsheetControlObject();
var idp = spreadsheet.idPrefix+"multiline";
ele = document.getElementById(idp+"dialog");
if (ele) return; // already have one
switch (editor.state) {
case "start":
wval.ecoord = editor.ecell.coord;
wval.erow = editor.ecell.row;
wval.ecol = editor.ecell.col;
editor.RangeRemove();
text = SocialCalc.GetCellContents(editor.context.sheetobj, wval.ecoord);
break;
case "input":
case "inputboxdirect":
text = editor.inputBox.GetText();
break;
}
editor.inputBox.element.disabled = true;
text = SocialCalc.special_chars(text);
str = '<textarea id="'+idp+'textarea" style="width:380px;height:120px;margin:10px 0px 0px 6px;">'+text+'</textarea>'+
'<div style="width:380px;text-align:right;padding:6px 0px 4px 6px;font-size:small;">'+
SCLocSS('<input type="button" value="%loc!Set Cell Contents!" style="font-size:smaller;" onclick="SocialCalc.SpreadsheetControl.DoMultilinePaste();"> '+
'<input type="button" value="%loc!Clear!" style="font-size:smaller;" onclick="SocialCalc.SpreadsheetControl.DoMultilineClear();"> '+
'<input type="button" value="%loc!Cancel!" style="font-size:smaller;" onclick="SocialCalc.SpreadsheetControl.HideMultiline();"></div>'+
'</div>');
var main = document.createElement("div");
main.id = idp+"dialog";
main.style.position = "absolute";
var vp = SocialCalc.GetViewportInfo();
main.style.top = (vp.height/3)+"px";
main.style.left = (vp.width/3)+"px";
main.style.zIndex = 100;
main.style.backgroundColor = "#FFF";
main.style.border = "1px solid black";
main.style.width = "400px";
main.innerHTML = '<table cellspacing="0" cellpadding="0" style="border-bottom:1px solid black;"><tr>'+
'<td style="font-size:10px;cursor:default;width:100%;background-color:#999;color:#FFF;">'+
SCLocSS(" %loc!Multi-line Input Box!")+'</td>'+
'<td style="font-size:10px;cursor:default;color:#666;" onclick="SocialCalc.SpreadsheetControl.HideMultiline();"> X </td></tr></table>'+
'<div style="background-color:#DDD;">'+str+'</div>';
SocialCalc.DragRegister(main.firstChild.firstChild.firstChild.firstChild, true, true, {MouseDown: SocialCalc.DragFunctionStart, MouseMove: SocialCalc.DragFunctionPosition,
MouseUp: SocialCalc.DragFunctionPosition,
Disabled: null, positionobj: main});
spreadsheet.spreadsheetDiv.appendChild(main);
ele = document.getElementById(idp+"textarea");
ele.focus();
SocialCalc.CmdGotFocus(ele);
//!!! need to do keyboard handling: if esc, hide?
}
SocialCalc.SpreadsheetControl.HideMultiline = function() {
var scc = SocialCalc.Constants;
var spreadsheet = SocialCalc.GetSpreadsheetControlObject();
var editor = spreadsheet.editor;
var ele = document.getElementById(spreadsheet.idPrefix+"multilinedialog");
ele.innerHTML = "";
SocialCalc.DragUnregister(ele);
SocialCalc.KeyboardFocus();
if (ele.parentNode) {
ele.parentNode.removeChild(ele);
}
switch (editor.state) {
case "start":
editor.inputBox.DisplayCellContents(null);
break;
case "input":
case "inputboxdirect":
editor.inputBox.element.disabled = false;
editor.inputBox.Focus();
break;
}
}
SocialCalc.SpreadsheetControl.DoMultilineClear = function() {
var spreadsheet = SocialCalc.GetSpreadsheetControlObject();
var ele = document.getElementById(spreadsheet.idPrefix+"multilinetextarea");
ele.value = "";
ele.focus();
}
SocialCalc.SpreadsheetControl.DoMultilinePaste = function() {
socialcalc/socialcalcspreadsheetcontrol.js view on Meta::CPAN
}
editor.EditorSaveEdit(text);
}
SocialCalc.SpreadsheetControl.DoLink = function() {
var SCLoc = SocialCalc.LocalizeString;
var str, ele, text, cell, setformat, popup;
var scc = SocialCalc.Constants;
var spreadsheet = SocialCalc.GetSpreadsheetControlObject();
var editor = spreadsheet.editor;
var wval = editor.workingvalues;
var spreadsheet = SocialCalc.GetSpreadsheetControlObject();
var idp = spreadsheet.idPrefix+"link";
ele = document.getElementById(idp+"dialog");
if (ele) return; // already have one
switch (editor.state) {
case "start":
wval.ecoord = editor.ecell.coord;
wval.erow = editor.ecell.row;
wval.ecol = editor.ecell.col;
editor.RangeRemove();
text = SocialCalc.GetCellContents(editor.context.sheetobj, wval.ecoord);
break;
case "input":
case "inputboxdirect":
text = editor.inputBox.GetText();
break;
}
editor.inputBox.element.disabled = true;
if (text.charAt(0)=="'") {
text = text.slice(1);
}
var parts = SocialCalc.ParseCellLinkText(text);
text = SocialCalc.special_chars(text);
cell = spreadsheet.sheet.cells[editor.ecell.coord];
if (!cell || !cell.textvalueformat) { // set to link format, but don't override
setformat = " checked";
}
else {
setformat = "";
}
popup = parts.newwin ? " checked" : "";
str = '<div style="padding:6px 0px 4px 6px;">'+
'<span style="font-size:smaller;">'+SCLoc("Description")+'</span><br>'+
'<input type="text" id="'+idp+'desc" style="width:380px;" value="'+SocialCalc.special_chars(parts.desc)+'"><br>'+
'<span style="font-size:smaller;">'+SCLoc("URL")+'</span><br>'+
'<input type="text" id="'+idp+'url" style="width:380px;" value="'+SocialCalc.special_chars(parts.url)+'"><br>';
if (SocialCalc.Callbacks.MakePageLink) { // only show if handling pagenames here
str += '<span style="font-size:smaller;">'+SCLoc("Page Name")+'</span><br>'+
'<input type="text" id="'+idp+'pagename" style="width:380px;" value="'+SocialCalc.special_chars(parts.pagename)+'"><br>'+
'<span style="font-size:smaller;">'+SCLoc("Workspace")+'</span><br>'+
'<input type="text" id="'+idp+'workspace" style="width:380px;" value="'+SocialCalc.special_chars(parts.workspace)+'"><br>';
}
str += SocialCalc.LocalizeSubstrings('<input type="checkbox" id="'+idp+'format"'+setformat+'> '+
'<span style="font-size:smaller;">%loc!Set to Link format!</span><br>'+
'<input type="checkbox" id="'+idp+'popup"'+popup+'> '+
'<span style="font-size:smaller;">%loc!Show in new browser window!</span>'+
'</div>'+
'<div style="width:380px;text-align:right;padding:6px 0px 4px 6px;font-size:small;">'+
'<input type="button" value="%loc!Set Cell Contents!" style="font-size:smaller;" onclick="SocialCalc.SpreadsheetControl.DoLinkPaste();"> '+
'<input type="button" value="%loc!Clear!" style="font-size:smaller;" onclick="SocialCalc.SpreadsheetControl.DoLinkClear();"> '+
'<input type="button" value="%loc!Cancel!" style="font-size:smaller;" onclick="SocialCalc.SpreadsheetControl.HideLink();"></div>'+
'</div>');
var main = document.createElement("div");
main.id = idp+"dialog";
main.style.position = "absolute";
var vp = SocialCalc.GetViewportInfo();
main.style.top = (vp.height/3)+"px";
main.style.left = (vp.width/3)+"px";
main.style.zIndex = 100;
main.style.backgroundColor = "#FFF";
main.style.border = "1px solid black";
main.style.width = "400px";
main.innerHTML = '<table cellspacing="0" cellpadding="0" style="border-bottom:1px solid black;"><tr>'+
'<td style="font-size:10px;cursor:default;width:100%;background-color:#999;color:#FFF;">'+" "+SCLoc("Link Input Box")+'</td>'+
'<td style="font-size:10px;cursor:default;color:#666;" onclick="SocialCalc.SpreadsheetControl.HideLink();"> X </td></tr></table>'+
'<div style="background-color:#DDD;">'+str+'</div>';
SocialCalc.DragRegister(main.firstChild.firstChild.firstChild.firstChild, true, true, {MouseDown: SocialCalc.DragFunctionStart, MouseMove: SocialCalc.DragFunctionPosition,
MouseUp: SocialCalc.DragFunctionPosition,
Disabled: null, positionobj: main});
spreadsheet.spreadsheetDiv.appendChild(main);
ele = document.getElementById(idp+"url");
ele.focus();
SocialCalc.CmdGotFocus(ele);
//!!! need to do keyboard handling: if esc, hide?
}
SocialCalc.SpreadsheetControl.HideLink = function() {
var scc = SocialCalc.Constants;
var spreadsheet = SocialCalc.GetSpreadsheetControlObject();
var editor = spreadsheet.editor;
var ele = document.getElementById(spreadsheet.idPrefix+"linkdialog");
ele.innerHTML = "";
SocialCalc.DragUnregister(ele);
SocialCalc.KeyboardFocus();
if (ele.parentNode) {
ele.parentNode.removeChild(ele);
}
switch (editor.state) {
case "start":
editor.inputBox.DisplayCellContents(null);
break;
case "input":
case "inputboxdirect":
editor.inputBox.element.disabled = false;
editor.inputBox.Focus();
break;
}
}
SocialCalc.SpreadsheetControl.DoLinkClear = function() {
var spreadsheet = SocialCalc.GetSpreadsheetControlObject();
document.getElementById(spreadsheet.idPrefix+"linkdesc").value = "";
document.getElementById(spreadsheet.idPrefix+"linkpagename").value = "";
document.getElementById(spreadsheet.idPrefix+"linkworkspace").value = "";
var ele = document.getElementById(spreadsheet.idPrefix+"linkurl");
ele.value = "";
ele.focus();
}
socialcalc/socialcalcspreadsheetcontrol.js view on Meta::CPAN
//
// SocialCalc.SettingsControlLoadPanel(panel-object, attribs)
//
SocialCalc.SettingsControlLoadPanel = function(panelobj, attribs) {
var ctrlname;
var sc = SocialCalc.SettingsControls;
for (ctrlname in panelobj) {
if (ctrlname=="name") continue;
ctrl = sc.Controls[panelobj[ctrlname].type];
if (ctrl && ctrl.SetValue) ctrl.SetValue(panelobj, ctrlname, attribs[panelobj[ctrlname].setting]);
}
}
//
// attribs = SocialCalc.SettingsControlUnloadPanel(panel-object)
//
SocialCalc.SettingsControlUnloadPanel = function(panelobj) {
var ctrlname;
var sc = SocialCalc.SettingsControls;
var attribs = {};
for (ctrlname in panelobj) {
if (ctrlname=="name") continue;
ctrl = sc.Controls[panelobj[ctrlname].type];
if (ctrl && ctrl.GetValue) attribs[panelobj[ctrlname].setting] = ctrl.GetValue(panelobj, ctrlname);
}
return attribs;
}
//
// SocialCalc.SettingsControls.PopupChangeCallback
//
SocialCalc.SettingsControls.PopupChangeCallback = function(attribs, id, value) {
var sc = SocialCalc.Constants;
var ele = document.getElementById("sample-text");
if (!ele || !attribs || !attribs.panelobj) return;
var idPrefix = SocialCalc.CurrentSpreadsheetControlObject.idPrefix;
var c = attribs.panelobj.name == "cell" ? "c" : "";
var v, a, parts, str1, str2, i;
parts = sc.defaultCellLayout.match(/^padding.(\S+) (\S+) (\S+) (\S+).vertical.align.(\S+);$/) || [];
var cv = {color: ["textcolor"], backgroundColor: ["bgcolor", "#FFF"],
fontSize: ["fontsize", sc.defaultCellFontSize], fontFamily: ["fontfamily"],
paddingTop: ["padtop", parts[1]], paddingRight: ["padright", parts[2]],
paddingBottom: ["padbottom", parts[3]], paddingLeft: ["padleft", parts[4]],
verticalAlign: ["alignvert", parts[5]]};
for (a in cv) {
v = SocialCalc.Popup.GetValue(idPrefix+c+cv[a][0]) || cv[a][1] || "";
ele.style[a] = v;
}
if (c=="c") {
cv = {borderTop: "cbt", borderRight: "cbr", borderBottom: "cbb", borderLeft: "cbl"};
for (a in cv) {
v = SocialCalc.SettingsControls.BorderSideGetValue(attribs.panelobj, cv[a]);
ele.style[a] = v ? (v.val || "") : "";
}
v = SocialCalc.Popup.GetValue(idPrefix+"calignhoriz");
ele.style.textAlign = v || "left";
ele.childNodes[1].style.textAlign = v || "right";
}
else {
ele.style.border = "";
v = SocialCalc.Popup.GetValue(idPrefix+"textalignhoriz");
ele.style.textAlign = v || "left";
v = SocialCalc.Popup.GetValue(idPrefix+"numberalignhoriz");
ele.childNodes[1].style.textAlign = v || "right";
}
v = SocialCalc.Popup.GetValue(idPrefix+c+"fontlook");
parts = v ? (v.match(/^(\S+) (\S+)$/) || []) : [];
ele.style.fontStyle = parts[1] || "";
ele.style.fontWeight = parts[2] || "";
v = SocialCalc.Popup.GetValue(idPrefix+c+"formatnumber") || "General";
str1 = SocialCalc.FormatNumber.formatNumberWithFormat(9.8765, v, "");
str2 = SocialCalc.FormatNumber.formatNumberWithFormat(-1234.5, v, "");
if (str2 != "??-???-?? ??:??:??") { // not bad date from negative number
str1 += "<br>"+str2;
}
ele.childNodes[1].innerHTML = str1;
}
//
// PopupList Control
//
SocialCalc.SettingsControls.PopupListSetValue = function(panelobj, ctrlname, value) {
if (!value) {alert(ctrlname+" no value"); return;}
var sp = SocialCalc.Popup;
if (!value.def) {
sp.SetValue(panelobj[ctrlname].id, value.val);
}
else {
sp.SetValue(panelobj[ctrlname].id, "");
}
}
//
// SocialCalc.SettingsControls.PopupListGetValue
//
SocialCalc.SettingsControls.PopupListGetValue = function(panelobj, ctrlname) {
var ctl = panelobj[ctrlname];
if (!ctl) return null;
var value = SocialCalc.Popup.GetValue(ctl.id);
if (value) {
return {def: false, val: value};
}
else {
return {def: true, val: 0};
}
}
//
// SocialCalc.SettingsControls.PopupListInitialize
//
SocialCalc.SettingsControls.PopupListInitialize = function(panelobj, ctrlname) {
var i, val, pos, otext;
var sc = SocialCalc.SettingsControls;
var initialdata = panelobj[ctrlname].initialdata || sc.Controls[panelobj[ctrlname].type].InitialData || "";
initialdata = SocialCalc.LocalizeSubstrings(initialdata);
( run in 1.011 second using v1.01-cache-2.11-cpan-ceb78f64989 )