class %ZHSLIB.PackageManager.Developer.Extension.PackageManager extends %Studio.Extension.Base, %ZHSLIB.PackageManager.Developer.Extension.ConstantsOverlay %Studio.SourceControl.ISC with this extension's capabilities by running:
Write ##class(%Studio.SourceControl.Interface).SourceControlClassSet("%ZHSLIB.PackageManager.Developer.Extension.Composite") Write ##class(%ZHSLIB.PackageManager.Developer.Extension.Composite).SetExtensionClasses("%ZHSLIB.PackageManager.Developer.Extension.SourceControl.ISC",$ListBuild("%ZHSLIB.PackageManager.Developer.Extension.PackageManager"))
parameter DOMAIN = HSPM;
TODO: Change to module-specific domain (and ensure proper global mappings configured)
property SnapshotMessageWarned [ MultiDimensional ];
Stores an array of document names for which a warning has already been issued in GetStatus. Used to avoid repetitive/duplicate notifications in the console log/output window. This will not work for Atelier over (stateless) REST APIs, but Atelier's different client behavior will have a similar effect (because it calls GetStatus very infrequently compared to Studio).
Property methods: SnapshotMessageWarnedDisplayToLogical(), SnapshotMessageWarnedGet(), SnapshotMessageWarnedIsValid(), SnapshotMessageWarnedLogicalToDisplay(), SnapshotMessageWarnedLogicalToOdbc(), SnapshotMessageWarnedNormalize(), SnapshotMessageWarnedSet()
method AfterUserAction(Type As %Integer, Name As %String, InternalName As %String, Answer As %Integer, Msg As %String = "", ByRef Reload As %Boolean = 0) as %Status [ Language = objectscript ]
Inherited description: This is called after the UserAction() and after any template is run or dialog is displayed. For a list of input arguments see UserAction(). In the case of the dialog the button pushed by the user is passed in Answer:
- 0 - No
- 1 - Yes
- 2 - Cancel
method GetStatus(InternalName As %String, ByRef IsInSourceControl As %Boolean, ByRef Editable As %Boolean, ByRef IsCheckedOut As %Boolean, ByRef UserCheckedOut As %String) as %Status [ Language = objectscript ]
Return information about this entity.
method OnMenuItem(MenuName As %String, InternalName As %String, SelectedText As %String, ByRef Enabled As %Boolean, ByRef DisplayName As %String) as %Status [ Language = objectscript ]
Inherited description: This is called for every menu item returned to Studio to allow the menu to be enabled/disabled without having to write a custom query for MenuItems. The DisplayName of this menu is also passed by reference and this may be modified to change the appearance of this menu item. The MenuName is the main menu name then the submenu name separated by a ','. If Enabled is set to -1 then it will remove this menu item from the list totally, 0 will gray the menu item out, and the default 1 will display the menu item as normal.
method UserAction(Type As %Integer, Name As %String, InternalName As %String, SelectedText As %String, ByRef Action As %String = ..#ActionDoNothing, ByRef Target As %String = "", ByRef Msg As %String = "", ByRef Reload As %Boolean = 0) as %Status [ Language = objectscript ]
Inherited description: This is called when the user performs an action that may need to interact with the server, such as selecting a menu or adding a new document. This encompases what the deprecated Flags parameter did and allows additional flexibility.
The Type argument values are:
- 0 : Server defined menu item selected
- 1 : Other Studio action
- 0 : User has tried to change a document that is locked in source control
- 1 : User has created a new document
- 2 : User has deleted a document
- 3 : User has opened a document
- 4 : User has closed a document
- 5 : User has connected to a new namespace
- 6 : User has selected to import comma delimetered list of documents
- 7 : User has saved a new document for the first time
- 0 : Do nothing, note that this method can still perform some action such as check an item out of source control, but Studio will not ask for user input.
- 1 : Display the default Studio dialog with a yes/no/cancel button. The text for this dialog is provided in the 'Target' return argument.
- 2 - Run a CSP page/Template. The Target is the full url to the CSP page/Template, as usual the page will be passed the current document name, any selected text, the project name, the namespace.
- 3 - Run an EXE on the client. The Target is the name of an executable file on the client machine. It is the responsibility of the customer to ensure this EXE is installed in a suitable location.
- 4 - Insert the text in Target in the current document at the current selection point.
- 5 - Studio will open the documents listed in Target. If there are multiple documents to open they will be separated with commas. If the document name is 'test.mac:label+10' it will open the document 'test.mac' and goto 'label+10'.
- 6 - Display an alert dialog in Studio with the text from the Target variable.
- 7 - Display a dialog with a textbox and Yes/No/Cancel buttons. The text for this dialog is provided by the 'Target' return argument. The initial text for the textbox is provided by the 'Msg' return argument.