dotfiles/windows/Adobe Bridge - Startup Scripts/AlwaysShowSubfolderThumbs.jsx

68 lines
2.4 KiB
React
Raw Normal View History

////////////////////////////////////////////////////////////////////////////
// ADOBE SYSTEMS INCORPORATED
// Copyright 2008-2017 Adobe Systems Incorporated
// All Rights Reserved
//
// NOTICE: Adobe permits you to use, modify, and distribute this file in accordance with the
// terms of the Adobe license agreement accompanying it. If you have received this file from a
// source other than Adobe, then your use, modification, or distribution of it requires the prior
// written permission of Adobe.
/////////////////////////////////////////////////////////////////////////////
// Works around the lack of a permanently enabled "Show Items from Subfolders" option (aka flat view).
// The default behaviour is to turn off the option when changing folders. This extension enables the
// flat view when the app starts and then keeps it enabled when changing folders. You can disable this
// behaviour by disabling the "Always Show Items from Subfolders" option.
function AlwaysFlatViewSetting() {
this.requiredContext = "\tAdobe Bridge must be running.\n";
this.menuID = "alwaysFlatViewSetting";
}
AlwaysFlatViewSetting.prototype.run = function() {
if (!this.canRun()) return false;
var toggleFlatView = function(enable) {
var task = 'MenuElement.find("FlatView").checked = ' + (enable ? 'true' : 'false');
app.scheduleTask(task, 0, false);
}
var label = "Always Show Items from Subfolders";
var menuItem = new MenuElement( "command", label, "after FlatView");
menuItem.canBeChecked = true;
menuItem.checked = true;
menuItem.onSelect = function() {
menuItem.checked = !menuItem.checked;
toggleFlatView(menuItem.checked);
}
// Triggered when changing folders or selecting some menu option.
onSelectItem = function(event) {
if (event.object instanceof Document && event.type == "selectionsChanged") {
if (menuItem.checked) {
toggleFlatView(true);
}
return {handled:false}; // continue handling all other event handlers
}
}
app.eventHandlers.push({handler: onSelectItem});
return true;
}
AlwaysFlatViewSetting.prototype.canRun = function() {
if (BridgeTalk.appName == "bridge") {
if (MenuElement.find(this.menuID)) {
return false; // Item already exists.
}
return true;
}
$.writeln("ERROR:: Cannot run AlwaysFlatViewSetting");
$.writeln(this.requiredContext);
return false;
}
if (typeof(AlwaysFlatViewSetting_unitTest ) == "undefined") {
new AlwaysFlatViewSetting().run();
}