mirror of
https://github.com/rn10950/RetroZilla.git
synced 2024-11-11 02:10:17 +01:00
180 lines
5.2 KiB
JavaScript
180 lines
5.2 KiB
JavaScript
|
var importService;
|
||
|
var fieldMap = null;
|
||
|
var recordNum = 0;
|
||
|
var addInterface = null;
|
||
|
var dialogResult = null;
|
||
|
var gPreviousButton;
|
||
|
var gNextButton;
|
||
|
var gMoveUpButton;
|
||
|
var gMoveDownButton;
|
||
|
var gListbox;
|
||
|
var gSkipFirstRecordButton;
|
||
|
|
||
|
function OnLoadFieldMapImport()
|
||
|
{
|
||
|
top.importService = Components.classes["@mozilla.org/import/import-service;1"].getService();
|
||
|
top.importService = top.importService.QueryInterface(Components.interfaces.nsIImportService);
|
||
|
|
||
|
// We need a field map object...
|
||
|
// assume we have one passed in? or just make one?
|
||
|
if (window.arguments && window.arguments[0]) {
|
||
|
top.fieldMap = window.arguments[0].fieldMap;
|
||
|
top.addInterface = window.arguments[0].addInterface;
|
||
|
top.dialogResult = window.arguments[0].result;
|
||
|
}
|
||
|
if (top.fieldMap == null) {
|
||
|
top.fieldMap = top.importService.CreateNewFieldMap();
|
||
|
top.fieldMap.DefaultFieldMap( top.fieldMap.numMozFields);
|
||
|
}
|
||
|
|
||
|
gMoveUpButton = document.getElementById("upButton");
|
||
|
gMoveDownButton = document.getElementById("downButton");
|
||
|
gPreviousButton = document.getElementById("previous");
|
||
|
gNextButton = document.getElementById("next");
|
||
|
gListbox = document.getElementById("fieldList");
|
||
|
gSkipFirstRecordButton = document.getElementById("skipFirstRecord");
|
||
|
|
||
|
// Set the state of the skip first record button
|
||
|
gSkipFirstRecordButton.checked = top.fieldMap.skipFirstRecord;
|
||
|
|
||
|
ListFields();
|
||
|
Browse(1);
|
||
|
gListbox.selectedItem = gListbox.getItemAtIndex(0);
|
||
|
disableMoveButtons();
|
||
|
}
|
||
|
|
||
|
function IndexInMap( index)
|
||
|
{
|
||
|
var count = top.fieldMap.mapSize;
|
||
|
for (var i = 0; i < count; i++) {
|
||
|
if (top.fieldMap.GetFieldMap( i) == index)
|
||
|
return( true);
|
||
|
}
|
||
|
|
||
|
return( false);
|
||
|
}
|
||
|
|
||
|
function ListFields() {
|
||
|
if (top.fieldMap == null)
|
||
|
return;
|
||
|
|
||
|
var count = top.fieldMap.mapSize;
|
||
|
var index;
|
||
|
var i;
|
||
|
for (i = 0; i < count; i++) {
|
||
|
index = top.fieldMap.GetFieldMap( i);
|
||
|
AddFieldToList(top.fieldMap.GetFieldDescription( index), index, top.fieldMap.GetFieldActive( i));
|
||
|
}
|
||
|
|
||
|
count = top.fieldMap.numMozFields;
|
||
|
for (i = 0; i < count; i++) {
|
||
|
if (!IndexInMap( i))
|
||
|
AddFieldToList(top.fieldMap.GetFieldDescription( i), i, false);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
function CreateField( name, index, on)
|
||
|
{
|
||
|
var item = document.createElement('listitem');
|
||
|
item.setAttribute('field-index', index);
|
||
|
item.setAttribute('type', "checkbox");
|
||
|
var cell = document.createElement('listcell');
|
||
|
var cCell = document.createElement( 'listcell');
|
||
|
cCell.setAttribute('type', "checkbox");
|
||
|
cCell.setAttribute( 'label', name);
|
||
|
if (on == true)
|
||
|
cCell.setAttribute( 'checked', "true");
|
||
|
item.appendChild( cCell);
|
||
|
cell.setAttribute( "class", "importsampledata");
|
||
|
cell.setAttribute( 'label', "");
|
||
|
item.appendChild( cell);
|
||
|
return( item);
|
||
|
}
|
||
|
|
||
|
function AddFieldToList(name, index, on)
|
||
|
{
|
||
|
var item = CreateField(name, index, on);
|
||
|
gListbox.appendChild(item);
|
||
|
}
|
||
|
|
||
|
function itemClicked(event)
|
||
|
{
|
||
|
if (event.button == 0) {
|
||
|
var on = gListbox.selectedItem.firstChild.getAttribute('checked');
|
||
|
gListbox.selectedItem.firstChild.setAttribute('checked', (on != "true"));
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// The "Move Up/Move Down" buttons should move the items in the left column
|
||
|
// up/down but the values in the right column should not change.
|
||
|
function moveItem(up)
|
||
|
{
|
||
|
var selectedItem = gListbox.selectedItem;
|
||
|
var swapPartner = (up ? gListbox.getPreviousItem(selectedItem, 1)
|
||
|
: gListbox.getNextItem(selectedItem, 1));
|
||
|
|
||
|
var tmpLabel = swapPartner.lastChild.getAttribute('label');
|
||
|
swapPartner.lastChild.setAttribute('label', selectedItem.lastChild.getAttribute('label'));
|
||
|
selectedItem.lastChild.setAttribute('label', tmpLabel);
|
||
|
|
||
|
var newItemPosition = (up ? selectedItem.nextSibling : selectedItem);
|
||
|
gListbox.insertBefore(swapPartner, newItemPosition);
|
||
|
gListbox.ensureElementIsVisible(selectedItem);
|
||
|
disableMoveButtons();
|
||
|
}
|
||
|
|
||
|
function disableMoveButtons()
|
||
|
{
|
||
|
var selectedIndex = gListbox.selectedIndex;
|
||
|
gMoveUpButton.disabled = (selectedIndex == 0);
|
||
|
gMoveDownButton.disabled = (selectedIndex == (gListbox.getRowCount() - 1));
|
||
|
}
|
||
|
|
||
|
function ShowSampleData(data)
|
||
|
{
|
||
|
var fields = data.split("\n");
|
||
|
for (var i = 0; i < gListbox.getRowCount(); i++)
|
||
|
gListbox.getItemAtIndex(i).lastChild.setAttribute('label', (i < fields.length) ? fields[i] : '');
|
||
|
}
|
||
|
|
||
|
function FetchSampleData(num)
|
||
|
{
|
||
|
if (!top.addInterface)
|
||
|
return false;
|
||
|
|
||
|
var data = top.addInterface.GetData( "sampleData-" + num);
|
||
|
if (!(data instanceof Components.interfaces.nsISupportsString))
|
||
|
return false;
|
||
|
ShowSampleData( data.data);
|
||
|
return true;
|
||
|
}
|
||
|
|
||
|
function Browse(step)
|
||
|
{
|
||
|
recordNum += step;
|
||
|
if (FetchSampleData(recordNum - 1))
|
||
|
document.getElementById('recordNumber').setAttribute('value', ("" + recordNum));
|
||
|
|
||
|
gPreviousButton.disabled = (recordNum == 1);
|
||
|
gNextButton.disabled = (addInterface.GetData("sampleData-" + recordNum) == null);
|
||
|
}
|
||
|
|
||
|
function FieldImportOKButton()
|
||
|
{
|
||
|
var max = gListbox.getRowCount();
|
||
|
var fIndex;
|
||
|
var on;
|
||
|
for (var i = 0; i < max; i++) {
|
||
|
fIndex = gListbox.getItemAtIndex(i).getAttribute( 'field-index');
|
||
|
on = gListbox.getItemAtIndex(i).firstChild.getAttribute('checked');
|
||
|
top.fieldMap.SetFieldMap( i, fIndex);
|
||
|
top.fieldMap.SetFieldActive( i, (on == "true"));
|
||
|
}
|
||
|
|
||
|
top.fieldMap.skipFirstRecord = gSkipFirstRecordButton.checked;
|
||
|
|
||
|
top.dialogResult.ok = true;
|
||
|
|
||
|
return true;
|
||
|
}
|