diff --git a/Eyeball.ico b/Eyeball.ico new file mode 100644 index 0000000..5292a1f Binary files /dev/null and b/Eyeball.ico differ diff --git a/LockPencil.ico b/LockPencil.ico new file mode 100644 index 0000000..37ff6da Binary files /dev/null and b/LockPencil.ico differ diff --git a/MPOLnch.fr b/MPOLnch.fr new file mode 100644 index 0000000..395f24f --- /dev/null +++ b/MPOLnch.fr @@ -0,0 +1,480 @@ +//======================================================================================== +// +// $File: //depot/indesign_6.0/highprofile/source/sdksamples/wlistboxcomposite/WLBCmp.fr $ +// +// Owner: Adobe Developer Technologies +// +// $Author: pmbuilder $ +// +// $DateTime: 2008/08/19 04:03:07 $ +// +// $Revision: #1 $ +// +// $Change: 643572 $ +// +// Copyright 1997-2008 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. +// +// +// Umbrella include file for all the .fr files in the plug-in. +// +//======================================================================================== + +//=========================== +// General includes: +//=========================== + +#include "MenuDef.fh" +#include "ActionDef.fh" +#include "ActionDefs.h" +#include "AdobeMenuPositions.h" +#include "LocaleIndex.h" +#include "PMLocaleIds.h" +#include "StringTable.fh" +//#include "OMTypes.h" +#include "objectmodeltypes.fh" +#include "ShuksanID.h" +#include "ActionID.h" +#include "CommandID.h" +#include "WorkspaceID.h" +#include "widgetid.h" +#include "BuildNumber.h" +#include "PanelList.fh" +#include "Widgets.fh" // for PalettePanelWidget +#include "InterfaceColorDefines.h" +#include "IControlViewDefs.h" +#include "SysControlIds.h" +#include "AboutBoxID.h" // for kAboutBoxStaticTextViewImpl +#include "TreeViewDefs.h" + +// Project includes: +#include "WLBCmpID.h" +#include "WLBCmpRezDefs.h" + +#ifdef __ODFRC__ + +//================================================================================ +// Plugin version definition. +//================================================================================ +resource PluginVersion (kSDKDefPluginVersionResourceID) +{ + kTargetVersion, + kWLBCmpPluginID, + kSDKDefPlugInMajorVersionNumber, kSDKDefPlugInMinorVersionNumber, + kSDKDefHostMajorVersionNumber, kSDKDefHostMinorVersionNumber, + kWLBCmpCurrentMajorFormatNumber, kWLBCmpCurrentMinorFormatNumber, + { kInDesignProduct, kInCopyProduct }, + { kWildFS }, + kWLBCmpVersion +}; + +//================================================================================ +// Boss class definition. +//================================================================================ +resource ClassDescriptionTable(kSDKDefClassDescriptionTableResourceID) +{{{ + + +/** + This boss class provides the actions invoked by this plug-in's + sub-menu items. + @ingroup wlistboxcomposite +*/ + Class + { + kWLBCmpActionComponentBoss, + kBaseActionComponentBoss, + { + /** Handle the actions from the menu. + */ + IID_IACTIONCOMPONENT, kWLBCmpActionComponentImpl, + } + }, + + +/** + Controls addition of a pop-up menu to the panel. + @ingroup wlistboxcomposite +*/ + Class + { + kWLBCmpPanelWidgetBoss, + kPalettePanelWidgetBoss, + { + /** An implementation of ITextControlData, but with interface + identifier of IID_IPANELMENUDATA, serves to name the popout panel menu. + Implementation provided by the API. + */ + IID_IPANELMENUDATA, kCPanelMenuDataImpl, + } + }, + + /** + Gives a list-box (tree view) that has additional observer added... + to get selection change notifications + @ingroup wlistboxcomposite + */ + Class + { + kWLBCmpListBoxWidgetBoss, + kTreeViewWidgetBoss, + { + /** Furnishes application framework with widgets as needed */ + IID_ITREEVIEWWIDGETMGR, kWLBCmpTVWidgetMgrImpl, + /** Adapts our data model to the needs of the application framework */ + IID_ITREEVIEWHIERARCHYADAPTER, kWLBCmpTVHierarchyAdapterImpl, + /** Hold names of the list item */ + IID_ISTRINGLISTDATA, kStringListDataImpl, + /** Display selection message */ + IID_IOBSERVER, kWLBCmpListBoxObserverImpl, + } + }, + + /** + Text Widget boss. + */ + Class + { + kWLBCmpTextWidgetBoss, + kInfoStaticTextWidgetBoss, + { + // Add the following interfaces for a white background (they'd override the default.) + // IID_ICONTROLVIEW, kAboutBoxStaticTextViewImpl, + // IID_IBOOLDATA, kPersistBoolDataImpl, + } + } + + /** + Adds observer to the 'eyeball' button. + @ingroup wlistboxcomposite + */ + Class + { + kWLBCmpEyeballWidgetBoss, + kRollOverIconButtonBoss, + { + /** + Receive Update messages from the application core when end-user clicks on the eyeball iconic button. + */ + IID_IOBSERVER, kWLBCmpEyeballObserverImpl, + } + }, + + /** + Adds observer to the 'Pen' button + @ingroup wlistboxcomposite + */ + Class + { + kWLBCmpPenWidgetBoss, + kRollOverIconButtonBoss, + { + /** + Receive Update messages from the application core when end-user clicks on the pen iconic button. + */ + IID_IOBSERVER, kWLBCmpPenObserverImpl, + } + }, + +}}}; + +//================================================================================ +// Implementation definition. +//================================================================================ +resource FactoryList (kSDKDefFactoryListResourceID) +{ + kImplementationIDSpace, + { +#include "WLBCmpFactoryList.h" + } +}; + +//================================================================================ +// Menu definition. +//================================================================================ +resource MenuDef (kSDKDefMenuResourceID) +{ + { + // The About Plug-ins sub-menu item for this plug-in. + kWLBCmpAboutActionID, // ActionID (kInvalidActionID for positional entries) + kWLBCmpAboutMenuPath, // Menu Path. + kSDKDefAlphabeticPosition, // Menu Position. + kSDKDefIsNotDynamicMenuFlag, // kSDKDefIsNotDynamicMenuFlag or kSDKDefIsDynamicMenuFlag. + + kWLBCmpAddItemActionID, + kWLBCmpTargetMenuPath, + kWLBCmpAddItemMenuItemPosition, + kSDKDefIsNotDynamicMenuFlag, + + kWLBCmpRemoveItemActionID, + kWLBCmpTargetMenuPath, + kWLBCmpRemoveItemMenuItemPosition, + kSDKDefIsNotDynamicMenuFlag, + + // Separator for the popup menu on the panel + kWLBCmpSeparator1ActionID, + kWLBCmpInternalPopupMenuNameKey kSDKDefDelimiterAndSeparatorPath, // :- to mark an item as a separator. + kWLBCmpSeparator1MenuItemPosition, + kSDKDefIsNotDynamicMenuFlag, + + // About this plugin submenu for the popup menu on the panel + kWLBCmpPopupAboutThisActionID, + kWLBCmpTargetMenuPath + kWLBCmpAboutThisMenuItemPosition, + kSDKDefIsNotDynamicMenuFlag, + + } +}; + +//================================================================================ +// Action definition. +//================================================================================ +resource ActionDef (kSDKDefActionResourceID) +{ + { + kWLBCmpActionComponentBoss, // ClassID of boss class that implements the ActionID. + kWLBCmpAboutActionID, // ActionID. + kWLBCmpAboutMenuKey, // Sub-menu string. + kHelpMenuActionArea, // Area name (see ActionDefs.h). + kNormalAction, // Type of action (see ActionDefs.h). + kDisableIfLowMem, // Enabling type (see ActionDefs.h). + kInvalidInterfaceID, // Selection InterfaceID this action cares about or kInvalidInterfaceID. + kSDKDefInvisibleInKBSCEditorFlag, // kSDKDefVisibleInKBSCEditorFlag or kSDKDefInvisibleInKBSCEditorFlag. + + kWLBCmpActionComponentBoss, + kWLBCmpAddItemActionID, + kWLBCmpAddItemMenuItemKey, + kOtherActionArea, + kNormalAction, + kDisableIfLowMem, + kInvalidInterfaceID, + kSDKDefInvisibleInKBSCEditorFlag, + + kWLBCmpActionComponentBoss, + kWLBCmpRemoveItemActionID, + kWLBCmpRemoveItemMenuItemKey, + kOtherActionArea, + kNormalAction, + kCustomEnabling, // so that UpdateActionStates will get called + kInvalidInterfaceID, + kSDKDefInvisibleInKBSCEditorFlag, + + kWLBCmpActionComponentBoss, + kWLBCmpPopupAboutThisActionID, + kSDKDefAboutThisPlugInMenuKey, // Key to the name of this action + kOtherActionArea, + kNormalAction, + kDisableIfLowMem, + kInvalidInterfaceID, + kSDKDefInvisibleInKBSCEditorFlag, + + } +}; + + +//================================================================================ +// LocaleIndex +// The LocaleIndex should have indicies that point at your +// localizations for each language system that you are +// localized for. +//================================================================================ +//------------------------------------------------------------ +// String LocaleIndex. +//------------------------------------------------------------ +resource LocaleIndex (kSDKDefStringsResourceID) +{ + kStringTableRsrcType, + { + kWildFS, k_enUS, kSDKDefStringsResourceID + index_enUS + kWildFS, k_jaJP, kSDKDefStringsResourceID + index_jaJP + + kWildFS, k_Wild, kSDKDefStringsResourceID + index_enUS + } +}; + +resource LocaleIndex (kSDKDefStringsNoTransResourceID) +{ + kStringTableRsrcType, + { + kWildFS, k_Wild, kSDKDefStringsNoTransResourceID + index_enUS + } +}; + +// added to support the list elements in the list box +resource LocaleIndex (kWLBCmpListElementRsrcID) +{ + kViewRsrcType, + { + kWildFS, k_Wild, kWLBCmpListElementRsrcID + index_enUS + } +}; + +resource StringTable (kSDKDefStringsNoTransResourceID + index_enUS) +{ + k_enUS, // Locale Id + kEuropeanMacToWinEncodingConverter, // Character encoding converter + { + // No-Translate strings go here: + + + kWLBCmpInternalPopupMenuNameKey, kWLBCmpInternalPopupMenuNameKey, // No need to translate, internal menu name. + } +}; + + + +//------------------------------------------------------------ +// Panel LocaleIndex. +//------------------------------------------------------------ +resource LocaleIndex (kSDKDefPanelResourceID) +{ + kViewRsrcType, + { + kWildFS, k_Wild, kSDKDefPanelResourceID + index_enUS + } +}; + + +//======================================================================================== +// Type definition. +//======================================================================================== +type WLBCmpPanelWidget(kViewRsrcType) : PalettePanelWidget(ClassID = kWLBCmpPanelWidgetBoss) +{ + CPanelMenuData; +}; +type WLBCmpListBox (kViewRsrcType) : TreeViewWidget (ClassID = kWLBCmpListBoxWidgetBoss) { }; +type WLBCmpNodeWidget(kViewRsrcType) : PrimaryResourcePanelWidget(ClassID = kTreeNodeWidgetBoss) +{ +}; +type WLBCmpTextWidget (kViewRsrcType) : InfoStaticTextWidget (ClassID = kWLBCmpTextWidgetBoss) { }; +type WLBCmpEyeballWidget (kViewRsrcType) : RollOverIconButtonWidget (ClassID = kWLBCmpEyeballWidgetBoss) {}; +type WLBCmpPenWidget (kViewRsrcType) : RollOverIconButtonWidget (ClassID = kWLBCmpPenWidgetBoss) {}; + +//================================================================================ +// PanelList definition. +//================================================================================ +resource PanelList (kSDKDefPanelResourceID) +{ + { + // 1st panel in the list + kSDKDefPanelResourceID, // Resource ID for this panel (use SDK default rsrc ID) + kWLBCmpPluginID, // ID of plug-in that owns this panel + kNotResizable, + kWLBCmpPanelWidgetActionID, // Action ID to show/hide the panel + kWLBCmpPanelTitleKey, // Shows up in the Window list. + "", // Alternate menu path of the form "Main:Foo" if you want your palette menu item in a second place + 0.0, // Alternate Menu position Alternate Menu position for determining menu order + 0,0, // Rsrc ID, Plugin ID for a PNG icon resource to use for this palette + c_Panel + } +}; + +//================================================================================ +// PanelView definition. +// The view is not currently localised: therefore, it can reside here. +// However, if you wish to localise it, it is recommended to locate it in one of +// the localised framework resource files (i.e. WLBCmp_enUS.fr etc.). +//================================================================================ +resource WLBCmpPanelWidget(kSDKDefPanelResourceID + index_enUS) +{ + __FILE__, __LINE__, // Localization macro + kWLBCmpPanelWidgetID, // WidgetID + kPMRsrcID_None, // RsrcID + kBindNone, // Binding (0=none) + 0, 0, 207, 95, // Frame: left, top, right, bottom. + kTrue, kTrue, // Visible, Enabled + kFalse, // Erase background + kInterfacePaletteFill, // Erase to color + kFalse, // Draw dropshadow + kWLBCmpPanelTitleKey, // Panel name + { + WLBCmpListBox //Tree view + ( + kWLBCmpListBoxWidgetID, kPMRsrcID_None, // WidgetId, RsrcId + kBindAll, // Frame binding + Frame(-1,0,208,96) // Frame + kTrue, kTrue, // Visible, Enabled + kTrue, // EraseBeforeDraw + kInterfacePaletteFill, // InterfaceColor + "", + kHideRootNode | kDrawEndLine, // Options. Display root node + kFalse, // Use H Scroll bar + kTrue, // Use V scroll bar + 20, // fVScrollButtonIncrement + 20, // fVThumbScrollIncrement + 0, // fHScrollButtonIncrement + 0, // fHThumbScrollIncrement + 2, // Items selectable, 0 = No Selection, 1 = Single Selection, 2 = Multiple Selection + kFalse, // Allow children from multiple parents to be selected + kTrue, // Allow discontiguous selection + { + //The tree view is dynamically created. + }, + + ), + + } + + kWLBCmpInternalPopupMenuNameKey // Popup menu name (internal) +}; + +resource WLBCmpNodeWidget (kWLBCmpListElementRsrcID + index_enUS) +{ + __FILE__, __LINE__, + kWLBCmpListParentWidgetId, kPMRsrcID_None, // WidgetId, RsrcId + kBindLeft | kBindRight, // Frame binding + Frame(0, 0, 194, 20), // Frame + kTrue, kTrue, // Visible, Enabled + "", // Panel name + { + WLBCmpEyeballWidget + ( + kWLBCmpListElementEyeballWidgetID, kWLBCmpEyeBallIcon, kWLBCmpPluginID, // WidgetId, RsrcId + kBindLeft, // Frame binding + Frame(3,1,22,18) // Frame + kTrue, kTrue, // Visible, Enabled + kADBEIconSuiteButtonType, + ), + WLBCmpPenWidget + ( + kWLBCmpListElementPenWidgetID, kWLBCmpPenIcon, kWLBCmpPluginID, // WidgetId, RsrcId + kBindLeft, // Frame binding + Frame(25,1,44,18) // Frame + kTrue, kTrue, // Visible, Enabled + kADBEIconSuiteButtonType, + ), + + // Just a info-static text widget with about-box text view to get white bg. + WLBCmpTextWidget + ( + kWLBCmpTextWidgetID, kPMRsrcID_None, // WidgetId, RsrcId + kBindLeft | kBindRight, // Frame binding + Frame(45,1,194,18) // Frame + kTrue, kTrue, kAlignLeft,kEllipsizeEnd,kTrue, // Visible, Enabled, ellipsize style, convert ampersands + "", // Initial text + 0, // Associated widget for focus + kPaletteWindowSystemScriptFontId, // default font + kPaletteWindowSystemScriptHiliteFontId, // for highlight state. + ), + + } +}; + + + + + +#endif // __ODFRC__ + +#include "WLBCmp_enUS.fr" +#include "WLBCmp_jaJP.fr" + +// End, WLBCmp.fr. + + + + diff --git a/MPOLnch.rc b/MPOLnch.rc new file mode 100644 index 0000000..b0c0d52 --- /dev/null +++ b/MPOLnch.rc @@ -0,0 +1,69 @@ +//======================================================================================== +// +// $File: //depot/indesign_6.0/highprofile/source/sdksamples/wlistboxcomposite/WLBCmp.rc $ +// +// Owner: Adobe Developer Technologies +// +// $Author: pmbuilder $ +// +// $DateTime: 2008/08/19 04:03:07 $ +// +// $Revision: #1 $ +// +// $Change: 643572 $ +// +// Copyright 1997-2008 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. +// +//======================================================================================== + +#include "WinRezFlags.h" +#include "BuildNumber.h" +#include "WLBCmpID.h" +1510 ICON DISCARDABLE "Eyeball.ico" +1512 ICON DISCARDABLE "LockPencil.ico" +1514 ICON DISCARDABLE "Pen.ico" + +1 VERSIONINFO + FILEVERSION kMajorVersionNumberForResource, kMinorVersionNumberForResource, kDotVersionNumberForResource, kBuildNumber + PRODUCTVERSION kMajorVersionNumberForResource, kMinorVersionNumberForResource, kDotVersionNumberForResource, 0 + FILEFLAGSMASK 0x3fL +#ifdef _DEBUG + FILEFLAGS 0x1L +#else + FILEFLAGS 0x0L +#endif + FILEOS 0x40004L + FILETYPE 0x2L + FILESUBTYPE 0x0L +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "040904b0" + BEGIN + VALUE "CompanyName", "Adobe Systems Incorporated\0" + VALUE "FileDescription", "Adobe InDesign SDK Plug-in\0" + VALUE "FileVersion", "1.0", "\0" + VALUE "InternalName", kWLBCmpPluginName, "\0" + VALUE "LegalCopyright", kShortCopyRightStr, "\0" + + VALUE "OriginalFilename", kWLBCmpPluginName ".pln\0" + VALUE "ProductName", "Adobe InDesign\0" + VALUE "ProductVersion", kVersionNumberForResourceStr, "\0" + VALUE "Copyright", kVersionCopyRightStr, "\0" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x0409, 1200 + END +END + + +// End, WLBCmp.rc + + diff --git a/MPOLnchActionComponent.cpp b/MPOLnchActionComponent.cpp new file mode 100644 index 0000000..4c09cad --- /dev/null +++ b/MPOLnchActionComponent.cpp @@ -0,0 +1,278 @@ +//======================================================================================== +// +// $File: //depot/indesign_6.0/highprofile/source/sdksamples/wlistboxcomposite/WLBCmpActionComponent.cpp $ +// +// Owner: Adobe Developer Technologies +// +// $Author: pmbuilder $ +// +// $DateTime: 2008/08/19 04:03:07 $ +// +// $Revision: #1 $ +// +// $Change: 643572 $ +// +// Copyright 1997-2008 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. +// +//======================================================================================== + +#include "VCPlugInHeaders.h" + + +// Interface includes: +#include "IWidgetUtils.h" +#include "IPanelControlData.h" +#include "IControlView.h" +#include "IActionStateList.h" +#include "ITreeViewController.h" +#include "ITreeViewMgr.h" +#include "ITreeViewHierarchyAdapter.h" +#include "IStringListData.h" + +// General includes: +#include "CActionComponent.h" +#include "CAlert.h" +#include "WLBCmpNodeID.h" + +#include "K2Vector.tpp" // For NodeIDList to compile + +// Project includes: +#include "WLBCmpID.h" + + +/** WLBCmpActionComponent + All about the user actions + + @ingroup wlistboxcomposite + +*/ +class WLBCmpActionComponent : public CActionComponent +{ + public: + /** + Constructor. + @param boss interface ptr from boss object on which this interface is aggregated. + */ + WLBCmpActionComponent(IPMUnknown* boss); + + /** + The action component should do the requested action. + This is where the menu item's action is taken. + When a menu item is selected, the Menu Manager determines + which plug-in is responsible for it, and calls its DoAction + with the ID for the menu item chosen. + + @param actionID identifies the menu item that was selected. + */ + virtual void DoAction(IActiveContext *myContext, ActionID actionID, GSysPoint mousePoint, IPMUnknown *widget); + /** + + Framework will call this method to ask us to update the states of the items. + */ + virtual void UpdateActionStates(IActiveContext *myContext, IActionStateList *listToUpdate, GSysPoint mousePoint, IPMUnknown *widget); + + private: + /** Encapsulates functionality for the about menu item. */ + void DoAbout(); + + /** Encapsulates functionality for the AddItem menu item. + + @param invokedWidget Widget that initiated the event (the panel menu), useful for getting the panel & other widgets. + */ + void DoAddItem(IPMUnknown *invokedWidget); + + /** Encapsulates functionality for the RemoveItem menu item. + + @param invokedWidget Widget that initiated the event. (The panel menu.) + */ + void DoRemoveItem(IPMUnknown *invokedWidget); + +}; + +/* CREATE_PMINTERFACE + Binds the C++ implementation class onto its + ImplementationID making the C++ code callable by the + application. +*/ +CREATE_PMINTERFACE(WLBCmpActionComponent, kWLBCmpActionComponentImpl) + +/* WLBCmpActionComponent Constructor +*/ +WLBCmpActionComponent::WLBCmpActionComponent(IPMUnknown* boss) +: CActionComponent(boss) +{ +} + +/* DoAction +*/ +void WLBCmpActionComponent::DoAction(IActiveContext *myContext, ActionID actionID, GSysPoint mousePoint, IPMUnknown *widget) +{ + switch (actionID.Get()) + { + case kWLBCmpPopupAboutThisActionID: + case kWLBCmpAboutActionID: + { + this->DoAbout(); + break; + } + + case kWLBCmpAddItemActionID: + { + this->DoAddItem(widget); + break; + } + + case kWLBCmpRemoveItemActionID: + { + this->DoRemoveItem(widget); + break; + } + + default: + { + break; + } + } +} + + +/* UpdateActionStates + +*/ + +void WLBCmpActionComponent::UpdateActionStates(IActiveContext *myContext, IActionStateList *listToUpdate, GSysPoint mousePoint, IPMUnknown *widget) +{ + do { + + int listElementCount = 0; + InterfacePtr treeWidget(static_cast(Utils()->QueryRelatedWidget(widget, kWLBCmpListBoxWidgetID, IID_ICONTROLVIEW))); + ASSERT(treeWidget); + if(!treeWidget) { + break; + } + + InterfacePtr controller(treeWidget, UseDefaultIID()); + ASSERT(controller); + if(!controller) + { + break; + } + + NodeIDList selectedItems; + controller->GetSelectedItems(selectedItems); + listElementCount = selectedItems.size(); + + for(int i=0; i < listToUpdate->Length(); i++) { + + ActionID action = listToUpdate->GetNthAction(i); + switch (action.Get()) + { + + case kWLBCmpRemoveItemActionID: + if(listElementCount>0) { + listToUpdate->SetNthActionState(i,kEnabledAction); + } + else { + listToUpdate->SetNthActionState(i,kDisabled_Unselected); + } + break; + } + } + + } while(0); + + +} + + + +/* DoAbout +*/ +void WLBCmpActionComponent::DoAbout() +{ + CAlert::ModalAlert + ( + kWLBCmpAboutBoxStringKey, // Alert string + kOKString, // OK button + kNullString, // No second button + kNullString, // No third button + 1, // Set OK button to default + CAlert::eInformationIcon // Information icon. + ); +} + +/* DoAddItem +*/ +void WLBCmpActionComponent::DoAddItem(IPMUnknown *invokedWidget) +{ + InterfacePtr treeWidget(static_cast(Utils()->QueryRelatedWidget(invokedWidget, kWLBCmpListBoxWidgetID, IID_ICONTROLVIEW))); + InterfacePtr treeMgr(treeWidget, UseDefaultIID()); + InterfacePtr iListData(treeWidget, IID_ISTRINGLISTDATA); + K2Vector lists = iListData->GetStringList(); + PMString item(kWLBCmpAddedElementKey); + item.Translate(); + K2Vector::const_iterator iter = std::find(lists.begin(), lists.end(), item); + int32 addIndex = 2; + while (iter != lists.end()) + { + item.Insert("+ ", 2, 2); + iter = std::find(lists.begin(), lists.end(), item); + } + + if (iter == lists.end()) + { + lists.insert(lists.begin(), item); + iListData->SetStringList(lists); + //make sure that the node added has been processed + NodeID node = WLBCmpNodeID::Create(item); + treeMgr->NodeAdded(node); + } +} + +/* DoRemoveItem +*/ +void WLBCmpActionComponent::DoRemoveItem(IPMUnknown *invokedWidget) +{ + InterfacePtr treeWidget(static_cast(Utils()->QueryRelatedWidget(invokedWidget, kWLBCmpListBoxWidgetID, IID_ICONTROLVIEW))); + InterfacePtr treeMgr(treeWidget, UseDefaultIID()); + + InterfacePtr controller(treeWidget, UseDefaultIID()); + + + NodeIDList selectedItems; + controller->GetSelectedItems(selectedItems); + int32 listElementCount = selectedItems.size(); + if (selectedItems.size() > 0) + { + //Notify node to be deleted + treeMgr->BeforeNodesDeleted(selectedItems); + + // delete items + K2Vector::const_iterator iter, startIter, endIter; + startIter = selectedItems.begin(); + endIter = selectedItems.end(); + InterfacePtr iListData(treeWidget, IID_ISTRINGLISTDATA); + K2Vector lists = iListData->GetStringList(); + for(iter = startIter; iter != endIter; ++iter) + { + const WLBCmpNodeID* oneNode = static_cast(iter->Get()); + PMString item = oneNode->GetName(); + + K2Vector::iterator s_iter = std::find(lists.begin(), lists.end(), item); + if (s_iter != lists.end()) + lists.erase(s_iter); + } + iListData->SetStringList(lists); + } + +} + + +// End, WLBCmpActionComponent.cpp. + + diff --git a/MPOLnchEyeballObserver.cpp b/MPOLnchEyeballObserver.cpp new file mode 100644 index 0000000..ea851e8 --- /dev/null +++ b/MPOLnchEyeballObserver.cpp @@ -0,0 +1,148 @@ +//======================================================================================== +// +// $File: //depot/indesign_6.0/highprofile/source/sdksamples/wlistboxcomposite/WLBCmpEyeballObserver.cpp $ +// +// Owner: Adobe Developer Technologies +// +// $Author: pmbuilder $ +// +// $DateTime: 2008/08/19 04:03:07 $ +// +// $Revision: #1 $ +// +// $Change: 643572 $ +// +// Copyright 1997-2008 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. +// +//======================================================================================== + +#include "VCPlugInHeaders.h" + +// Implementation includes +#include "widgetid.h" + +// Interface includes +#include "ISubject.h" +#include "ITriStateControlData.h" +// Implem includes +#include "CAlert.h" +#include "CObserver.h" +#include "WLBCmpID.h" + + +/** + Observes the "eyeball" widget. + + @ingroup wlistboxcomposite + +*/ +class WLBCmpEyeballObserver : public CObserver +{ +public: + + /** + Constructor for WLBListBoxObserver class. + @param interface ptr from boss object on which this interface is aggregated. + */ + WLBCmpEyeballObserver(IPMUnknown *boss); + + /** + Destructor for WLBCmpEyeballObserver class - + performs cleanup + */ + ~WLBCmpEyeballObserver(); + + /** + AutoAttach is only called for registered observers + of widgets. This method is called by the application + core when the widget is shown. + + */ + virtual void AutoAttach(); + + /** + AutoDetach is only called for registered observers + of widgets. Called when widget hidden. + */ + virtual void AutoDetach(); + + /** + Update when there's been a change on the eyeball widget. + + @param theChange this is specified by the agent of change; it can be the class ID of the agent, + or it may be some specialised message ID. + @param theSubject this provides a reference to the object which has changed; in this case, the button + widget boss object that is being observed. + @param protocol the protocol along which the change occurred. + @param changedBy this can be used to provide additional information about the change or a reference + to the boss object that caused the change. + */ + virtual void Update(const ClassID& theChange, ISubject* theSubject, const PMIID &protocol, void* changedBy); + + +}; + +CREATE_PMINTERFACE(WLBCmpEyeballObserver, kWLBCmpEyeballObserverImpl) + + +WLBCmpEyeballObserver::WLBCmpEyeballObserver(IPMUnknown* boss) +: CObserver(boss) +{ + +} + + +WLBCmpEyeballObserver::~WLBCmpEyeballObserver() +{ + +} + + +void WLBCmpEyeballObserver::AutoAttach() +{ + InterfacePtr subject(this, UseDefaultIID()); + if (subject != nil) + { + subject->AttachObserver(this, IID_ITRISTATECONTROLDATA); + } + +} + + +void WLBCmpEyeballObserver::AutoDetach() +{ + InterfacePtr subject(this, UseDefaultIID()); + if (subject != nil) + { + subject->DetachObserver(this,IID_ITRISTATECONTROLDATA); + } +} + + +void WLBCmpEyeballObserver::Update +( + const ClassID& theChange, + ISubject* theSubject, + const PMIID &protocol, + void* changedBy +) +{ + if(theChange == kTrueStateMessage) { + // Then the button has been activated. + do { + PMString dbgInfoString("WLBCmpEyeballObserver::Update() "); + dbgInfoString.SetTranslatable(kFalse); // only for debug- not real code + CAlert::InformationAlert(dbgInfoString); + + } while(0); + } +} + + + + diff --git a/MPOLnchFactoryList.h b/MPOLnchFactoryList.h new file mode 100644 index 0000000..fbbe176 --- /dev/null +++ b/MPOLnchFactoryList.h @@ -0,0 +1,37 @@ +//======================================================================================== +// +// $File: //depot/indesign_6.0/highprofile/source/sdksamples/wlistboxcomposite/WLBCmpFactoryList.h $ +// +// Owner: Adobe Developer Technologies +// +// $Author: pmbuilder $ +// +// $DateTime: 2008/08/19 04:03:07 $ +// +// $Revision: #1 $ +// +// $Change: 643572 $ +// +// Copyright 1997-2008 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. +// +// +// Each C++ implementation class in the plug-in and its corresponding ImplementationID +// should be registered in this file. +// +//======================================================================================== + +REGISTER_PMINTERFACE(WLBCmpActionComponent, kWLBCmpActionComponentImpl) +REGISTER_PMINTERFACE(WLBCmpListBoxObserver, kWLBCmpListBoxObserverImpl) +REGISTER_PMINTERFACE(WLBCmpEyeballObserverImpl, kWLBCmpEyeballObserverImpl) +REGISTER_PMINTERFACE(WLBCmpPenObserverImpl, kWLBCmpPenObserverImpl) +REGISTER_PMINTERFACE(WLBCmpTreeViewAdapter, kWLBCmpTVHierarchyAdapterImpl) +REGISTER_PMINTERFACE(WLBCmpTVWidgetMgr, kWLBCmpTVWidgetMgrImpl) + +// End, WLBCmpFactoryList.h. + + diff --git a/MPOLnchID.cpp b/MPOLnchID.cpp new file mode 100644 index 0000000..298391d --- /dev/null +++ b/MPOLnchID.cpp @@ -0,0 +1,39 @@ +//======================================================================================== +// +// $File: //depot/indesign_6.0/highprofile/source/sdksamples/wlistboxcomposite/WLBCmpID.cpp $ +// +// Owner: Adobe Developer Technologies +// +// $Author: pmbuilder $ +// +// $DateTime: 2008/08/19 04:03:07 $ +// +// $Revision: #1 $ +// +// $Change: 643572 $ +// +// Copyright 1997-2008 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. +// +// +// Makes your IDs available as named symbols in the Debug build. +// +//======================================================================================== + +#include "VCPlugInHeaders.h" + +// General includes: +#include "ShuksanID.h" +#include "IDFactory_cpp.h" + +#pragma export on + #include "WLBCmpID.h" +#pragma export off + +// End, WLBCmpID.cpp. + + diff --git a/MPOLnchID.h b/MPOLnchID.h new file mode 100644 index 0000000..d210a81 --- /dev/null +++ b/MPOLnchID.h @@ -0,0 +1,126 @@ +//======================================================================================== +// +// $File: //depot/indesign_6.0/highprofile/source/sdksamples/wlistboxcomposite/WLBCmpID.h $ +// +// Owner: Adobe Developer Technologies +// +// $Author: pmbuilder $ +// +// $DateTime: 2008/08/19 04:03:07 $ +// +// $Revision: #1 $ +// +// $Change: 643572 $ +// +// Copyright 1997-2008 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. +// +// +// Defines IDs used by the WLBCmp plug-in. +// +//======================================================================================== + +#ifndef __WLBCmpID_h__ +#define __WLBCmpID_h__ + +#include "SDKDef.h" + +// Company: +#define kWLBCmpCompanyKey kSDKDefPlugInCompanyKey // Company name used internally for menu paths and the like. Must be globally unique, only A-Z, 0-9, space and "_". +#define kWLBCmpCompanyValue kSDKDefPlugInCompanyValue // Company name displayed externally. + +// Plug-in: +#define kWLBCmpPluginName "MPOLauncher" // Name of this plug-in. +#define kWLBCmpPrefixNumber 0x174600 // Unique prefix number for this plug-in(*Must* be obtained from Adobe Developer Support). +#define kWLBCmpVersion kSDKDefPluginVersionString // Version of this plug-in (for the About Box). +#define kWLBCmpAuthor "fabiantheblind" // Author of this plug-in (for the About Box). + +// Plug-in Prefix: (please change kWLBCmpPrefixNumber above to modify the prefix.) +#define kWLBCmpPrefix RezLong(kWLBCmpPrefixNumber) // The unique numeric prefix for all object model IDs for this plug-in. +#define kWLBCmpStringPrefix SDK_DEF_STRINGIZE(kWLBCmpPrefixNumber) // The string equivalent of the unique prefix number for this plug-in. + +// PluginID: +DECLARE_PMID(kPlugInIDSpace, kWLBCmpPluginID, kWLBCmpPrefix + 0) + +// ClassIDs: +DECLARE_PMID(kClassIDSpace, kWLBCmpActionComponentBoss, kWLBCmpPrefix + 0) +DECLARE_PMID(kClassIDSpace, kWLBCmpStringRegisterBoss, kWLBCmpPrefix + 1) +DECLARE_PMID(kClassIDSpace, kWLBCmpPanelRegisterBoss, kWLBCmpPrefix + 2) +DECLARE_PMID(kClassIDSpace, kWLBCmpMenuRegisterBoss, kWLBCmpPrefix + 3) +DECLARE_PMID(kClassIDSpace, kWLBCmpActionRegisterBoss, kWLBCmpPrefix + 4) +DECLARE_PMID(kClassIDSpace, kWLBCmpPanelWidgetBoss, kWLBCmpPrefix + 5) +DECLARE_PMID(kClassIDSpace, kWLBCmpListBoxWidgetBoss, kWLBCmpPrefix + 6) +DECLARE_PMID(kClassIDSpace, kWLBCmpTextWidgetBoss, kWLBCmpPrefix + 7) +DECLARE_PMID(kClassIDSpace, kWLBCmpEyeballWidgetBoss, kWLBCmpPrefix + 8) +DECLARE_PMID(kClassIDSpace, kWLBCmpPenWidgetBoss, kWLBCmpPrefix + 9) +// InterfaceIDs: +// None in this plug-in. + +// ImplementationIDs: +DECLARE_PMID(kImplementationIDSpace, kWLBCmpActionComponentImpl, kWLBCmpPrefix + 0) +DECLARE_PMID(kImplementationIDSpace, kWLBCmpListBoxObserverImpl, kWLBCmpPrefix + 1) +DECLARE_PMID(kImplementationIDSpace, kWLBCmpEyeballObserverImpl, kWLBCmpPrefix + 2) +DECLARE_PMID(kImplementationIDSpace, kWLBCmpPenObserverImpl, kWLBCmpPrefix + 3) +DECLARE_PMID(kImplementationIDSpace, kWLBCmpTVWidgetMgrImpl, kWLBCmpPrefix + 4) +DECLARE_PMID(kImplementationIDSpace, kWLBCmpTVHierarchyAdapterImpl, kWLBCmpPrefix + 5) +// ActionIDs: +DECLARE_PMID(kActionIDSpace, kWLBCmpAboutActionID, kWLBCmpPrefix + 0) +DECLARE_PMID(kActionIDSpace, kWLBCmpPanelWidgetActionID, kWLBCmpPrefix + 1) +DECLARE_PMID(kActionIDSpace, kWLBCmpSeparator1ActionID, kWLBCmpPrefix + 2) +DECLARE_PMID(kActionIDSpace, kWLBCmpPopupAboutThisActionID, kWLBCmpPrefix + 3) +DECLARE_PMID(kActionIDSpace, kWLBCmpAddItemActionID, kWLBCmpPrefix + 11) +DECLARE_PMID(kActionIDSpace, kWLBCmpRemoveItemActionID, kWLBCmpPrefix + 12) +// WidgetIDs: +DECLARE_PMID(kWidgetIDSpace, kWLBCmpPanelWidgetID, kWLBCmpPrefix + 0) +DECLARE_PMID(kWidgetIDSpace, kWLBCmpTextWidgetID, kWLBCmpPrefix + 1) +DECLARE_PMID(kWidgetIDSpace, kWLBCmpListParentWidgetId, kWLBCmpPrefix + 2) +DECLARE_PMID(kWidgetIDSpace, kWLBCmpListBoxWidgetID, kWLBCmpPrefix + 3) +DECLARE_PMID(kWidgetIDSpace, kWLBCmpListElementEyeballWidgetID, kWLBCmpPrefix + 4) +DECLARE_PMID(kWidgetIDSpace, kWLBCmpListElementPenWidgetID, kWLBCmpPrefix + 5) +// "About Plug-ins" sub-menu: +#define kWLBCmpAboutMenuKey kWLBCmpStringPrefix "kWLBCmpAboutMenuKey" +#define kWLBCmpAboutMenuPath kSDKDefStandardAboutMenuPath kWLBCmpCompanyKey + +// "Plug-ins" sub-menu: +#define kWLBCmpPluginsMenuKey kWLBCmpStringPrefix "kWLBCmpPluginsMenuKey" +#define kWLBCmpPluginsMenuPath kSDKDefPlugInsStandardMenuPath kWLBCmpCompanyKey kSDKDefDelimitMenuPath kWLBCmpPluginsMenuKey + +// Menu item keys: +#define kWLBCmpAddItemMenuItemKey kWLBCmpStringPrefix "kWLBCmpAddItemMenuItemKey" +#define kWLBCmpRemoveItemMenuItemKey kWLBCmpStringPrefix "kWLBCmpRemoveItemMenuItemKey" + +// Other StringKeys: +#define kWLBCmpAboutBoxStringKey kWLBCmpStringPrefix "kWLBCmpAboutBoxStringKey" +#define kWLBCmpAddItemStringKey kWLBCmpStringPrefix "kWLBCmpAddItemStringKey" +#define kWLBCmpRemoveItemStringKey kWLBCmpStringPrefix "kWLBCmpRemoveItemStringKey" +#define kWLBCmpPanelTitleKey kWLBCmpStringPrefix "kWLBCmpPanelTitleKey" +#define kWLBCmpInternalPopupMenuNameKey kWLBCmpStringPrefix "kWLBCmpInternalPopupMenuNameKey" +#define kWLBCmpTargetMenuPath kWLBCmpInternalPopupMenuNameKey +#define kWLBCmpItemBaseKey kWLBCmpStringPrefix "kWLBCmpItemBaseKey" +#define kWLBCmpAddedElementKey kWLBCmpStringPrefix"kWLBCmpAddedElementKey" + + + +// Menu item positions: +#define kWLBCmpAddItemMenuItemPosition 1.0 +#define kWLBCmpRemoveItemMenuItemPosition 2.0 +#define kWLBCmpSeparator1MenuItemPosition 10.0 +#define kWLBCmpAboutThisMenuItemPosition 11.0 + +// Initial data format version numbers +#define kWLBCmpFirstMajorFormatNumber kSDKDef_30_PersistMajorVersionNumber +#define kWLBCmpFirstMinorFormatNumber kSDKDef_30_PersistMinorVersionNumber + +// Data format version numbers for the PluginVersion resource +#define kWLBCmpCurrentMajorFormatNumber kWLBCmpFirstMajorFormatNumber // most recent major format change +#define kWLBCmpCurrentMinorFormatNumber kWLBCmpFirstMinorFormatNumber // most recent minor format change + +#endif // __WLBCmpID_h__ + +// End, WLBCmpID.h. + + diff --git a/MPOLnchListBoxObserver.cpp b/MPOLnchListBoxObserver.cpp new file mode 100644 index 0000000..c8dd0d1 --- /dev/null +++ b/MPOLnchListBoxObserver.cpp @@ -0,0 +1,178 @@ +//======================================================================================== +// +// $File: //depot/indesign_6.0/highprofile/source/sdksamples/wlistboxcomposite/WLBCmpListBoxObserver.cpp $ +// +// Owner: Adobe Developer Technologies +// +// $Author: pmbuilder $ +// +// $DateTime: 2008/08/19 04:03:07 $ +// +// $Revision: #1 $ +// +// $Change: 643572 $ +// +// Copyright 1997-2008 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. +// +//======================================================================================== + +#include "VCPlugInHeaders.h" + +// Implementation includes +#include "widgetid.h" + +// Interface includes +#include "ISubject.h" +#include "IControlView.h" +#include "ITreeViewController.h" + +// Implem includes +#include "CAlert.h" +#include "CObserver.h" +#include "K2Vector.tpp" // For NodeIDList to compile +#include "WLBCmpNodeID.h" +#include "WLBCmpID.h" + + +/** + + Observes the listbox via IID_ITREEVIEWCONTROLLER. + + @ingroup wlistboxcomposite + +*/ +class WLBCmpListBoxObserver : public CObserver +{ +public: + + /** + Constructor for WLBListBoxObserver class. + @param interface ptr from boss object on which this interface is aggregated. + */ + WLBCmpListBoxObserver(IPMUnknown *boss); + + /** + Destructor for WLBCmpListBoxObserver class + + */ + ~WLBCmpListBoxObserver(); + + /** + AutoAttach is only called for registered observers + of widgets. This method is called by the application + core when the widget is shown. + + */ + virtual void AutoAttach(); + + /** + AutoDetach is only called for registered observers + of widgets. Called when widget hidden. + */ + virtual void AutoDetach(); + + /** + This class is interested in changes along IID_ILISTCONTROLDATA protocol with classID of + kListSelectionChangedMessage. This message is sent when a user clicks on an element + in the list-box. + + + @param theChange this is specified by the agent of change; it can be the class ID of the agent, + or it may be some specialised message ID. + @param theSubject this provides a reference to the object which has changed; in this case, the button + widget boss object that is being observed. + @param protocol the protocol along which the change occurred. + @param changedBy this can be used to provide additional information about the change or a reference + to the boss object that caused the change. + */ + virtual void Update(const ClassID& theChange, ISubject* theSubject, const PMIID &protocol, void* changedBy); + +}; + +CREATE_PMINTERFACE(WLBCmpListBoxObserver, kWLBCmpListBoxObserverImpl) + + +WLBCmpListBoxObserver::WLBCmpListBoxObserver(IPMUnknown* boss) +: CObserver(boss) +{ + +} + + +WLBCmpListBoxObserver::~WLBCmpListBoxObserver() +{ + +} + + +void WLBCmpListBoxObserver::AutoAttach() +{ + InterfacePtr subject(this, UseDefaultIID()); + if (subject != nil) + { + subject->AttachObserver(this, IID_ITREEVIEWCONTROLLER); + } +} + + +void WLBCmpListBoxObserver::AutoDetach() +{ + InterfacePtr subject(this, UseDefaultIID()); + if (subject != nil) + { + subject->DetachObserver(this, IID_ITREEVIEWCONTROLLER); + } +} + + +void WLBCmpListBoxObserver::Update +( + const ClassID& theChange, + ISubject* theSubject, + const PMIID &protocol, + void* changedBy +) +{ + if ((protocol == IID_ITREEVIEWCONTROLLER) && (theChange == kListSelectionChangedMessage) ) { + do { + InterfacePtr controller(this, UseDefaultIID()); + ASSERT(controller); + if(!controller) + { + break; + } + + NodeIDList selectedItems; + controller->GetSelectedItems(selectedItems); + const int kSelectionLength = selectedItems.size() ; + if (kSelectionLength> 0 ) + { + PMString dbgInfoString("Selected item(s): "); + K2Vector::const_iterator iter, startIter, endIter; + startIter = selectedItems.begin(); + endIter = selectedItems.end(); + for(iter = startIter; iter != endIter; ++iter) + { + const WLBCmpNodeID* oneNode = static_cast(iter->Get()); + PMString item = oneNode->GetName(); + item.Translate(); + dbgInfoString.Append(item); + dbgInfoString += ", "; + } + dbgInfoString.Truncate(2); //remove the last ', ' + dbgInfoString.SetTranslatable(kFalse); // only for debug- not real code + CAlert::InformationAlert(dbgInfoString); + } + + } while(0); + } +} + + + + diff --git a/MPOLnchMacRez.rsrc b/MPOLnchMacRez.rsrc new file mode 100644 index 0000000..e69de29 diff --git a/MPOLnchNoStrip.cpp b/MPOLnchNoStrip.cpp new file mode 100644 index 0000000..59937e4 --- /dev/null +++ b/MPOLnchNoStrip.cpp @@ -0,0 +1,46 @@ +//======================================================================================== +// +// $File: //depot/indesign_6.0/highprofile/source/sdksamples/wlistboxcomposite/WLBCmpNoStrip.cpp $ +// +// Owner: Adobe Developer Technologies +// +// $Author: pmbuilder $ +// +// $DateTime: 2008/08/19 04:03:07 $ +// +// $Revision: #1 $ +// +// $Change: 643572 $ +// +// Copyright 1997-2008 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. +// +//======================================================================================== + +#include "VCPlugInHeaders.h" + +#include "InterfaceFactory.h" + +extern bool16 gFalse; + +/** DontDeadStrip + references all implementations to stop the compiler dead stripping them from the executable image. + +*/ +void DontDeadStrip(); + +void DontDeadStrip() +{ + if (gFalse) + { +#include "WLBCmpFactoryList.h" + } +} + +// End, WLBCmpNoStrip.cpp. + + diff --git a/MPOLnchNodeID.cpp b/MPOLnchNodeID.cpp new file mode 100644 index 0000000..8a8bae0 --- /dev/null +++ b/MPOLnchNodeID.cpp @@ -0,0 +1,69 @@ +//======================================================================================== +// +// $File: //depot/indesign_6.0/highprofile/source/sdksamples/wlistboxcomposite/WLBCmpNodeID.cpp $ +// +// Owner: Adobe Developer Technologies +// +// $Author: pmbuilder $ +// +// $DateTime: 2008/08/19 04:03:07 $ +// +// $Revision: #1 $ +// +// $Change: 643572 $ +// +// Copyright 1997-2008 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. +// +//======================================================================================== + +#include "VCPlugInHeaders.h" + +// Interface includes: +#include "IPMStream.h" + +// Project includes: +#include "WLBCmpNodeID.h" +/** + @ingroup wlistboxcomposite +*/ + +/* Compare +*/ +int32 WLBCmpNodeID::Compare(const NodeIDClass* nodeID) const +{ + const WLBCmpNodeID* oneNode = static_cast(nodeID); + ASSERT(nodeID); + return fName.Compare(kTrue, oneNode->GetName()); + +} + + +/* Clone +*/ +NodeIDClass* WLBCmpNodeID::Clone() const +{ + return new WLBCmpNodeID(this->GetName()); +} + + +/* Read +*/ +void WLBCmpNodeID::Read(IPMStream* stream) +{ + fName.ReadWrite(stream); +} + + +/* Write +*/ +void WLBCmpNodeID::Write(IPMStream* stream) const +{ + (const_cast(this)->fName).ReadWrite(stream); +} + +// end, File: PnlTrvDataNode.cpp diff --git a/MPOLnchNodeID.h b/MPOLnchNodeID.h new file mode 100644 index 0000000..d57f89d --- /dev/null +++ b/MPOLnchNodeID.h @@ -0,0 +1,107 @@ +//======================================================================================== +// +// $File: //depot/indesign_6.0/highprofile/source/sdksamples/wlistboxcomposite/WLBCmpNodeID.h $ +// +// Owner: Adobe Developer Technologies +// +// $Author: pmbuilder $ +// +// $DateTime: 2008/08/19 04:03:07 $ +// +// $Revision: #1 $ +// +// $Change: 643572 $ +// +// Copyright 1997-2008 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. +// +// +// Each C++ implementation class in the plug-in and its corresponding ImplementationID +// should be registered in this file. +// +//======================================================================================== + +#ifndef __WLBCmpNodeID__ +#define __WLBCmpNodeID__ + +#include "NodeID.h" +#include "IPMStream.h" +#include "WLBCmpID.h" + +/** Represents a node in the tree view. It is the list item. + + @ingroup wlistboxcomposite +*/ +class WLBCmpNodeID : public NodeIDClass +{ + public: + enum { kNodeType = kWLBCmpListBoxWidgetBoss }; + + + /** Factory method to create + new object of this class + @return new instance of this class + */ + static NodeID_rv Create() { return new WLBCmpNodeID(); } + + /** Factory method to create new object of this class + @param path [IN] specifies initial path + @return new instance of this class + */ + static NodeID_rv Create(PMString name) + { return new WLBCmpNodeID(name); } + + /** Destructor + */ + virtual ~WLBCmpNodeID() {} + + + /** @return type of this node + */ + virtual NodeType GetNodeType() const { return kNodeType; } + + /** Comparator function + @param NodeID [IN] specifies the node that we should compare against + @return Comparison results + */ + virtual int32 Compare(const NodeIDClass* NodeID) const; + + /** Create a copy of this + @return + */ + virtual NodeIDClass* Clone() const; + + /** Read this from the given stream + @param stream [IN] specified stream + @return + */ + virtual void Read(IPMStream* stream); + + /** Write this to the given stream + @param [OUT] stream + @return + */ + virtual void Write(IPMStream* stream) const; + + /** Accessor for the value associated with this node + @return const PMString& + */ + const PMString& GetName() const { return fName; } + + + private: + // Note we're keeping the destructor private to force use of the factory methods + WLBCmpNodeID() {} + + WLBCmpNodeID(PMString name):fName(name) {} + + PMString fName; +}; + +#endif // __WLBCmpNodeID__ + + diff --git a/MPOLnchPenObserver.cpp b/MPOLnchPenObserver.cpp new file mode 100644 index 0000000..caee49c --- /dev/null +++ b/MPOLnchPenObserver.cpp @@ -0,0 +1,149 @@ +//======================================================================================== +// +// $File: //depot/indesign_6.0/highprofile/source/sdksamples/wlistboxcomposite/WLBCmpPenObserver.cpp $ +// +// Owner: Adobe Developer Technologies +// +// $Author: pmbuilder $ +// +// $DateTime: 2008/08/19 04:03:07 $ +// +// $Revision: #1 $ +// +// $Change: 643572 $ +// +// Copyright 1997-2008 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. +// +//======================================================================================== + +#include "VCPlugInHeaders.h" + +// Implementation includes +#include "widgetid.h" + +// Interface includes +#include "ISubject.h" +#include "ITriStateControlData.h" +// Implem includes +#include "CAlert.h" +#include "CObserver.h" +#include "WLBCmpID.h" + + +/** + + Observes the "pen" buttons in the widget list. + + @ingroup wlistboxcomposite + +*/ +class WLBCmpPenObserver : public CObserver +{ +public: + + /** + Constructor for WLBListBoxObserver class. + @param interface ptr from boss object on which this interface is aggregated. + */ + WLBCmpPenObserver(IPMUnknown *boss); + + /** + Destructor. + */ + ~WLBCmpPenObserver(); + + /** + AutoAttach is only called for registered observers + of widgets. This method is called by the application + core when the widget is shown. + + */ + virtual void AutoAttach(); + + /** + AutoDetach is only called for registered observers + of widgets. Called when widget hidden. + */ + virtual void AutoDetach(); + + /** + Update when there's been a change on the pen widget. + + @param theChange this is specified by the agent of change; it can be the class ID of the agent, + or it may be some specialised message ID. + @param theSubject this provides a reference to the object which has changed; in this case, the button + widget boss object that is being observed. + @param protocol the protocol along which the change occurred. + @param changedBy this can be used to provide additional information about the change or a reference + to the boss object that caused the change. + */ + virtual void Update(const ClassID& theChange, ISubject* theSubject, const PMIID &protocol, void* changedBy); + + + +}; + +CREATE_PMINTERFACE(WLBCmpPenObserver, kWLBCmpPenObserverImpl) + + +WLBCmpPenObserver::WLBCmpPenObserver(IPMUnknown* boss) +: CObserver(boss) +{ + +} + + +WLBCmpPenObserver::~WLBCmpPenObserver() +{ + +} + + +void WLBCmpPenObserver::AutoAttach() +{ + InterfacePtr subject(this, UseDefaultIID()); + if (subject != nil) + { + subject->AttachObserver(this, IID_ITRISTATECONTROLDATA); + } + +} + + +void WLBCmpPenObserver::AutoDetach() +{ + InterfacePtr subject(this, UseDefaultIID()); + if (subject != nil) + { + subject->DetachObserver(this,IID_ITRISTATECONTROLDATA); + } +} + + +void WLBCmpPenObserver::Update +( + const ClassID& theChange, + ISubject* theSubject, + const PMIID &protocol, + void* changedBy +) +{ + if(theChange == kTrueStateMessage) { + // Then the button has been activated. + do { + PMString dbgInfoString("WLBCmpPenObserver::Update() "); + dbgInfoString.SetTranslatable(kFalse); // only for debug- not real code + CAlert::InformationAlert(dbgInfoString); + + } while(0); + } +} + + + + diff --git a/MPOLnchRezDefs.h b/MPOLnchRezDefs.h new file mode 100644 index 0000000..70035fa --- /dev/null +++ b/MPOLnchRezDefs.h @@ -0,0 +1,40 @@ +//======================================================================================== +// +// $File: //depot/indesign_6.0/highprofile/source/sdksamples/wlistboxcomposite/WLBCmpRezDefs.h $ +// +// Owner: Adobe Developer Technologies +// +// $Author: pmbuilder $ +// +// $DateTime: 2008/08/19 04:03:07 $ +// +// $Revision: #1 $ +// +// $Change: 643572 $ +// +// Copyright 1997-2008 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. +// +// +// Defines Resource IDs used by the WLBCmp plug-in. +// +//======================================================================================== + +#ifndef __WLBCmpRezDefs_h__ +#define __WLBCmpRezDefs_h__ + +#define kWLBCmpListElementRsrcID 1200 + +// See. the platform resource file where these are used! +#define kWLBCmpEyeBallIcon 1510 +#define kWLBCmpLockPenIcon 1512 +#define kWLBCmpPenIcon 1514 +#endif // __WLBCmpRezDefs_h__ + +// End, WLBCmpRezDefs.h. + + diff --git a/MPOLnchTreeViewAdapter.cpp b/MPOLnchTreeViewAdapter.cpp new file mode 100644 index 0000000..115f154 --- /dev/null +++ b/MPOLnchTreeViewAdapter.cpp @@ -0,0 +1,85 @@ +//======================================================================================== +// +// $File: //depot/indesign_6.0/highprofile/source/sdksamples/wlistboxcomposite/WLBCmpTreeViewAdapter.cpp $ +// +// Owner: Danielle Darling +// +// $Author: pmbuilder $ +// +// $DateTime: 2008/08/19 04:03:07 $ +// +// $Revision: #1 $ +// +// $Change: 643572 $ +// +// Copyright 1997-2008 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. +// +//======================================================================================== + +#include "VCPlugInHeaders.h" + +#include "IStringListData.h" +#include "ListTreeViewAdapter.h" +#include "WLBCmpNodeID.h" +#include "WLBCmpID.h" + +/** + * TreeViewAdapter. + @ingroup wlistboxcomposite + */ +class WLBCmpTreeViewAdapter : public ListTreeViewAdapter +{ +public: + WLBCmpTreeViewAdapter(IPMUnknown* boss); + + virtual ~WLBCmpTreeViewAdapter() + {} + + virtual int32 GetNumListItems() const; + NodeID_rv GetRootNode() const; + virtual NodeID_rv GetNthListItem(const int32& nth) const; + +}; + +CREATE_PMINTERFACE(WLBCmpTreeViewAdapter, kWLBCmpTVHierarchyAdapterImpl) + +WLBCmpTreeViewAdapter::WLBCmpTreeViewAdapter(IPMUnknown* boss):ListTreeViewAdapter(boss) +{ + //initialize the list with the default list string name + K2Vector lists; + for (int32 i = 0; i< 12; i++) + { + PMString name(kWLBCmpItemBaseKey); + name.AppendNumber(i+1); + name.Translate(); + lists.push_back(name); + } + InterfacePtr iListData(this, IID_ISTRINGLISTDATA); + iListData->SetStringList(lists); + +} +int32 WLBCmpTreeViewAdapter::GetNumListItems()const +{ + InterfacePtr iListData(this, IID_ISTRINGLISTDATA); + + return iListData->GetStringList().size(); +} + +NodeID_rv WLBCmpTreeViewAdapter::GetRootNode() const +{ + PMString rootString("Root"); + rootString.Translate(); + return WLBCmpNodeID::Create(rootString); +} + +NodeID_rv WLBCmpTreeViewAdapter::GetNthListItem(const int32& nth) const +{ + InterfacePtr iListData(this, IID_ISTRINGLISTDATA); + + return WLBCmpNodeID::Create(iListData->GetStringList()[nth]); +} diff --git a/MPOLnchTreeViewWidgetMgr.cpp b/MPOLnchTreeViewWidgetMgr.cpp new file mode 100644 index 0000000..511c2b5 --- /dev/null +++ b/MPOLnchTreeViewWidgetMgr.cpp @@ -0,0 +1,87 @@ +//======================================================================================== +// +// $File: //depot/indesign_6.0/highprofile/source/sdksamples/wlistboxcomposite/WLBCmpTreeViewWidgetMgr.cpp $ +// +// Owner: Danielle Darling +// +// $Author: pmbuilder $ +// +// $DateTime: 2008/08/19 04:03:07 $ +// +// $Revision: #1 $ +// +// $Change: 643572 $ +// +// Copyright 1997-2008 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. +// +//======================================================================================== + +#include "VCPlugInHeaders.h" + +#include "IControlView.h" +#include "IInLineEditController.h" +#include "IPanelControlData.h" +#include "ITextControlData.h" + +#include "CTreeViewWidgetMgr.h" +#include "WLBCmpNodeID.h" +#include "WLBCmpID.h" +#include "WLBCmpRezDefs.h" + + +/** + * Tree view manager + @ingroup wlistboxcomposite + */ +class WLBCmpTVWidgetMgr : public CTreeViewWidgetMgr +{ +public: + WLBCmpTVWidgetMgr(IPMUnknown *boss); + virtual ~WLBCmpTVWidgetMgr() + {} + + virtual bool16 ApplyDataToWidget( const NodeID& node, IPanelControlData* widgetList, int32 message ) const; + + void RegisterStyles() + { + RegisterStyleWidget(kLargePaletteRowsTreeStyle, kWLBCmpListElementRsrcID, kWLBCmpPluginID); + } +}; + + +CREATE_PMINTERFACE(WLBCmpTVWidgetMgr, kWLBCmpTVWidgetMgrImpl) + +WLBCmpTVWidgetMgr::WLBCmpTVWidgetMgr(IPMUnknown *boss) : +CTreeViewWidgetMgr(boss, kList) +{ +} + + + +bool16 WLBCmpTVWidgetMgr::ApplyDataToWidget(const NodeID& node, + IPanelControlData* widgetList, + int32 message) const +{ + do + { + TreeNodePtr nodeID(node); + PMString listName = nodeID->GetName(); + + IControlView* nameView = widgetList->FindWidget(kWLBCmpTextWidgetID); + + InterfacePtr textControlData( nameView, UseDefaultIID() ); + ASSERT(textControlData); + if( textControlData== nil) { + break; + } + textControlData->SetString(listName); + } while (false); + + return kTrue; +} + diff --git a/MPOLnch_enUS.fr b/MPOLnch_enUS.fr new file mode 100644 index 0000000..7c10628 --- /dev/null +++ b/MPOLnch_enUS.fr @@ -0,0 +1,84 @@ +//======================================================================================== +// +// $File: //depot/indesign_6.0/highprofile/source/sdksamples/wlistboxcomposite/WLBCmp_enUS.fr $ +// +// Owner: Adobe Developer Technologies +// +// $Author: pmbuilder $ +// +// $DateTime: 2008/08/19 04:03:07 $ +// +// $Revision: #1 $ +// +// $Change: 643572 $ +// +// Copyright 1997-2008 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. +// +//======================================================================================== + +#ifdef __ODFRC__ + +//======================================================================================== +// English strings +//======================================================================================== + +// English string table is defined here + +resource StringTable (kSDKDefStringsResourceID + index_enUS) +{ + k_enUS, // Locale Id + kEuropeanMacToWinEncodingConverter, // Character encoding converter + + { + + // ----- Menu strings + kWLBCmpCompanyKey, kWLBCmpCompanyValue, + kWLBCmpAboutMenuKey, kWLBCmpPluginName "[US]...", + kWLBCmpPluginsMenuKey, kWLBCmpPluginName "[US]", + kWLBCmpAddItemMenuItemKey, "Add item[US]", + kWLBCmpRemoveItemMenuItemKey, "Remove item[US]", + kSDKDefAboutThisPlugInMenuKey, kSDKDefAboutThisPlugInMenuValue_enUS, + + // ----- Command strings + + + // ----- Window strings + + + // ----- Panel/dialog strings + kWLBCmpPanelTitleKey, "WLB-Composite" "[US]",// irp was kWLBCmpPluginName "[US]", + // ----- Error strings + + + // ----- Misc strings + kWLBCmpAboutBoxStringKey, kWLBCmpPluginName "[US], version " kWLBCmpVersion " by " kWLBCmpAuthor "\n\n" kSDKDefCopyrightStandardValue "\n\n" kSDKDefPartnersStandardValue_enUS, + // + kWLBCmpItemBaseKey "1", " Glasgow Celtic", + kWLBCmpItemBaseKey "2", " Hibernian", + kWLBCmpItemBaseKey "3", " Glasgow Rangers", + kWLBCmpItemBaseKey "4", " Kilmarnock", + + kWLBCmpItemBaseKey "5", " Heart of Midlothian", + kWLBCmpItemBaseKey "6", " Dunfermline Athletic", + kWLBCmpItemBaseKey "7", " Motherwell", + kWLBCmpItemBaseKey "8", " St. Johnstone", + + kWLBCmpItemBaseKey "9", " Dundee", + kWLBCmpItemBaseKey "10", " Aberdeen", + kWLBCmpItemBaseKey "11", " Dundee United", + kWLBCmpItemBaseKey "12", " St. Mirren", + kWLBCmpAddedElementKey, " + Added Element", + } + +}; + +#endif // __ODFRC__ + +// End , WLBCmp_enUS.fr + + diff --git a/MPOLnch_jaJP.fr b/MPOLnch_jaJP.fr new file mode 100644 index 0000000..6bed7bf --- /dev/null +++ b/MPOLnch_jaJP.fr @@ -0,0 +1,84 @@ +//======================================================================================== +// +// $File: //depot/indesign_6.0/highprofile/source/sdksamples/wlistboxcomposite/WLBCmp_jaJP.fr $ +// +// Owner: Adobe Developer Technologies +// +// $Author: pmbuilder $ +// +// $DateTime: 2008/08/19 04:03:07 $ +// +// $Revision: #1 $ +// +// $Change: 643572 $ +// +// Copyright 1997-2008 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. +// +//======================================================================================== + +#ifdef __ODFRC__ + +//======================================================================================== +// Japanese strings +//======================================================================================== + +// Japanese string table is defined here + +resource StringTable (kSDKDefStringsResourceID + index_jaJP) +{ + k_jaJP, // Locale Id + 0, // Character encoding converter + + { + + // ----- Menu strings + kWLBCmpCompanyKey, kWLBCmpCompanyValue, + kWLBCmpAboutMenuKey, kWLBCmpPluginName "[JP]...", + kWLBCmpPluginsMenuKey, kWLBCmpPluginName "[JP]", + kWLBCmpAddItemMenuItemKey, "項目を追加[JP]", + kWLBCmpRemoveItemMenuItemKey, "項目を削除[JP]", + kSDKDefAboutThisPlugInMenuKey, kSDKDefAboutThisPlugInMenuValue_jaJP, + + // ----- Command strings + + + // ----- Window strings + + + // ----- Panel/dialog strings + kWLBCmpPanelTitleKey, kWLBCmpPluginName "[JP]", + // ----- Error strings + + + // ----- Misc strings + kWLBCmpAboutBoxStringKey, kWLBCmpPluginName "[JP], version " kWLBCmpVersion " by " kWLBCmpAuthor "\n\n" kSDKDefCopyrightStandardValue "\n\n" kSDKDefPartnersStandardValue_jaJP, + // + kWLBCmpItemBaseKey "1", " Glasgow Celtic", + kWLBCmpItemBaseKey "2", " Hibernian", + kWLBCmpItemBaseKey "3", " Glasgow Rangers", + kWLBCmpItemBaseKey "4", " Kilmarnock", + + kWLBCmpItemBaseKey "5", " Heart of Midlothian", + kWLBCmpItemBaseKey "6", " Dunfermline Athletic", + kWLBCmpItemBaseKey "7", " Motherwell", + kWLBCmpItemBaseKey "8", " St. Johnstone", + + kWLBCmpItemBaseKey "9", " Dundee", + kWLBCmpItemBaseKey "10", " Aberdeen", + kWLBCmpItemBaseKey "11", " Dundee United", + kWLBCmpItemBaseKey "12", " St. Mirren", + kWLBCmpAddedElementKey, " + 追加要素", + } + +}; + +#endif // __ODFRC__ + +// End , WLBCmp_jaJP.fr + + diff --git a/NoEyeball.ico b/NoEyeball.ico new file mode 100644 index 0000000..016976e Binary files /dev/null and b/NoEyeball.ico differ diff --git a/NoPencil.ICO b/NoPencil.ICO new file mode 100644 index 0000000..4ee9928 Binary files /dev/null and b/NoPencil.ICO differ diff --git a/Pen.ico b/Pen.ico new file mode 100644 index 0000000..ece6ecb Binary files /dev/null and b/Pen.ico differ diff --git a/TriggerResourceDeps.cpp b/TriggerResourceDeps.cpp new file mode 100644 index 0000000..4e90f56 --- /dev/null +++ b/TriggerResourceDeps.cpp @@ -0,0 +1,33 @@ +//======================================================================================== +// +// $File: //depot/indesign_6.0/highprofile/source/sdksamples/wlistboxcomposite/TriggerResourceDeps.cpp $ +// +// Owner: Adobe Developer Technologies +// +// $Author: pmbuilder $ +// +// $DateTime: 2008/08/19 04:03:07 $ +// +// $Revision: #1 $ +// +// $Change: 643572 $ +// +// Copyright 1997-2008 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. +// +// +// Ensures the application is relinked when the .fr file has been recompiled. +// +//======================================================================================== + +#include "VCPlugInHeaders.h" + +#include "WLBCmp.fr" + +// End, TriggerResourceDeps.cpp. + +