зеркало из https://github.com/mozilla/pjs.git
277 строки
6.9 KiB
XML
277 строки
6.9 KiB
XML
<?xml version="1.0"?>
|
|
<?xml-stylesheet href="chrome:/global/skin/xul.css" type="text/css"?>
|
|
<?xml-stylesheet href="pm.css" type="text/css"?>
|
|
|
|
<window
|
|
xmlns:html="http://www.w3.org/TR/REC-html40"
|
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
|
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
|
|
|
|
<html:script>
|
|
var profileCore = "";
|
|
var selected = null;
|
|
|
|
function CreateProfile()
|
|
{
|
|
// Need to call CreateNewProfile xuls
|
|
this.location = "resource:/res/profile/cpwManager.xul";
|
|
}
|
|
|
|
function MigrateProfile(override)
|
|
{
|
|
// Hack to avoid writing two copies of this
|
|
if (override)
|
|
selected = override;
|
|
|
|
if (!selected)
|
|
{
|
|
dump("Select a profile to migrate.\n");
|
|
return;
|
|
}
|
|
|
|
var name = selected.getAttribute("rowName");
|
|
var migrate = selected.getAttribute("rowMigrate");
|
|
|
|
if (migrate != "true")
|
|
{
|
|
dump("This profile doesn't need migration.\n");
|
|
return;
|
|
}
|
|
|
|
//profileCore.MigrateProfile(name);
|
|
//this.location.replace(this.location);
|
|
dump("Would have migrated " + name + ".\n");
|
|
}
|
|
|
|
function MigrateAllProfiles()
|
|
{
|
|
var body = document.getElementById("theTreeBody");
|
|
var child = body.firstChild;
|
|
while (child)
|
|
{
|
|
if (child.getAttribute("rowMigrate") == "true")
|
|
MigrateProfile(child);
|
|
child = child.nextSibling;
|
|
}
|
|
}
|
|
|
|
function RenameProfile(w)
|
|
{
|
|
if (!selected)
|
|
{
|
|
dump("Select a profile to migrate.\n");
|
|
return;
|
|
}
|
|
|
|
dump("RenameProfile\n");
|
|
|
|
var newName = w.document.getElementById("NewName").value;
|
|
var oldName = selected.getAttribute("rowName");
|
|
var migrate = selected.getAttribute("rowMigrate");
|
|
|
|
if (migrate == "true")
|
|
{
|
|
dump("Migrate this profile before renaming it.\n");
|
|
return;
|
|
}
|
|
|
|
dump("RenameProfile : " + oldName + " to " + newName + "\n");
|
|
profileCore.RenameProfile(oldName, newName);
|
|
this.location.replace(this.location);
|
|
}
|
|
|
|
function DeleteProfile()
|
|
{
|
|
if (!selected)
|
|
{
|
|
dump("Select a profile to delete.\n");
|
|
return;
|
|
}
|
|
|
|
var migrate = selected.getAttribute("rowMigrate");
|
|
|
|
var name = selected.getAttribute("rowName");
|
|
dump("Delete '" + name + "'\n");
|
|
profileCore.DeleteProfile(name);
|
|
this.location.replace(this.location);
|
|
}
|
|
|
|
function ExitApp()
|
|
{
|
|
var toolkitCore = XPAppCoresManager.Find("toolkitCore");
|
|
if (!toolkitCore) {
|
|
toolkitCore = new ToolkitCore();
|
|
|
|
if (toolkitCore) {
|
|
toolkitCore.Init("toolkitCore");
|
|
}
|
|
}
|
|
if (toolkitCore) {
|
|
toolkitCore.CloseWindow(parent);
|
|
}
|
|
}
|
|
|
|
function addTreeItem(num, name, migrate)
|
|
{
|
|
dump("Adding element " + num + " : " + name + "\n");
|
|
var body = document.getElementById("theTreeBody");
|
|
|
|
var newitem = document.createElement('treeitem');
|
|
newitem.setAttribute("rowNum", num);
|
|
newitem.setAttribute("rowName", name);
|
|
newitem.setAttribute("rowMigrate", migrate);
|
|
|
|
var elem = document.createElement('treecell');
|
|
|
|
// Hack in a differentation for migration
|
|
if (migrate)
|
|
var text = document.createTextNode('Migrate');
|
|
else
|
|
var text = document.createTextNode('');
|
|
|
|
elem.appendChild(text);
|
|
newitem.appendChild(elem);
|
|
|
|
var elem = document.createElement('treecell');
|
|
var text = document.createTextNode(name);
|
|
elem.appendChild(text);
|
|
newitem.appendChild(elem);
|
|
|
|
body.appendChild(newitem);
|
|
}
|
|
|
|
function showSelection(node)
|
|
{
|
|
// (see tree's onclick definition)
|
|
// Tree events originate in the smallest clickable object which is the cell. The object
|
|
// originating the event is available as event.target. We want the cell's row, so we go
|
|
// one further and get event.target.parentNode.
|
|
selected = node;
|
|
var num = node.getAttribute("rowNum");
|
|
var name = node.getAttribute("rowName");
|
|
dump("Selected " + num + " : " + name + "\n");
|
|
}
|
|
|
|
function loadElements()
|
|
{
|
|
dump("hacked onload handler adds elements to tree widget\n");
|
|
var profileList = "";
|
|
|
|
profileCore = XPAppCoresManager.Find("ProfileCore");
|
|
if (!profileCore)
|
|
{
|
|
dump("!profileCore\n");
|
|
profileCore = new ProfileCore();
|
|
|
|
if (profileCore) {
|
|
dump("after ! yes profileCore in if loop\n");
|
|
profileCore.Init("ProfileCore");
|
|
}
|
|
else {
|
|
dump("profile not created\n");
|
|
}
|
|
}
|
|
if (profileCore)
|
|
profileList = profileCore.GetProfileList();
|
|
|
|
profileList = profileList.split(",");
|
|
|
|
for (var i=0; i < profileList.length; i++)
|
|
addTreeItem(i, profileList[i], (i%2==0));
|
|
}
|
|
|
|
// -------------------------------------------- begin Hack for OnLoad handling
|
|
setTimeout("loadElements()", 0);
|
|
// -------------------------------------------- end Hack for OnLoad handling
|
|
|
|
function openRename()
|
|
{
|
|
if (!selected)
|
|
dump("Select a profile to rename.\n");
|
|
else
|
|
{
|
|
var migrate = selected.getAttribute("rowMigrate");
|
|
if (migrate == "true")
|
|
dump("Migrate the profile before renaming it.\n");
|
|
else
|
|
var win = window.openDialog('pmrename.xul', 'Renamer', 'chrome');
|
|
}
|
|
}
|
|
|
|
</html:script>
|
|
|
|
<popup id="deletePopup">
|
|
<window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" width="100" height="50">
|
|
Deleting an unmigrated profile will prevent you from ever migrating it in the future.
|
|
<html:p> </html:p>
|
|
Confirm delete?
|
|
<html:p />
|
|
<titledbutton value="Ok" class="push" onclick="opener.DeleteProfile();window.close();" />
|
|
<titledbutton value="Cancel" class="push" onclick="window.close();" />
|
|
</window>
|
|
</popup>
|
|
|
|
<popup id="migratePopup">
|
|
<window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" width="100" height="50">
|
|
Confirm migrate all profiles?
|
|
<html:p />
|
|
<titledbutton value="Ok" class="push" onclick="opener.MigrateAllProfiles();window.close();" />
|
|
<titledbutton value="Cancel" class="push" onclick="window.close();" />
|
|
</window>
|
|
</popup>
|
|
|
|
<html:center>
|
|
<html:table>
|
|
<html:tr><html:td>
|
|
Communicator stores information about your settings, preferences,
|
|
bookmarks, and stored messages in your personal profile.
|
|
</html:td></html:tr>
|
|
|
|
<html:tr><html:td>
|
|
<html:ul>
|
|
<html:li>Click New to create a new profile.
|
|
</html:li>
|
|
<html:li>Select a profile, click delete to remove that profile.
|
|
</html:li>
|
|
<html:li>Select a profile, click Rename to rename the profile.
|
|
</html:li>
|
|
</html:ul>
|
|
</html:td></html:tr>
|
|
<html:tr><html:td>
|
|
|
|
</html:td></html:tr>
|
|
</html:table>
|
|
|
|
<tree id="tree" onclick="return showSelection(event.target.parentNode);">
|
|
<treecol style="width: 100"/>
|
|
<treecol style="width: 300"/>
|
|
<treehead>
|
|
<treeitem>
|
|
<treecell>Migration</treecell>
|
|
<treecell>User Name</treecell>
|
|
</treeitem>
|
|
</treehead>
|
|
|
|
<treebody id="theTreeBody">
|
|
</treebody>
|
|
</tree>
|
|
|
|
<titledbutton value="New" class="push" onclick="CreateProfile();" />
|
|
<titledbutton value="Migrate" class="push" onclick="MigrateProfile();" />
|
|
<titledbutton value="Rename" class="push" onclick="openRename();" />
|
|
<titledbutton value="Delete" class="push" popup="deletePopup" />
|
|
</html:center>
|
|
|
|
<html:p />
|
|
<html:hr />
|
|
<html:p />
|
|
|
|
<box align="horizontal" style="width: 100%">
|
|
<html:div flex="100%"/>
|
|
<titledbutton value="Migrate All" class="push" popup="migratePopup" />
|
|
<titledbutton value="Start" class="push" onclick="window.close();" />
|
|
<titledbutton value="Exit" class="push" onclick="ExitApp();" />
|
|
<html:div style="width: 10px"/>
|
|
</box>
|
|
</window>
|