///<summary> /// /// Registers the plugin resource types, actions and other services. /// ///</summary> /// ///<remarks> /// ///<para> ///This is the first method called after the plugin is loaded. It should /// be used to register any resource types or services that could be used by other plugins. ///</para> /// ///<para> ///To access the services provided by the core, methods of the static class /// <see cref="T:JetBrains.Omea.OpenAPI.Core" /> can be used. All core services are already available when this /// method is called. ///</para> /// ///</remarks> /// public void Register() { try { Core.PluginLoader.RegisterPluginService(this); RegisterActions(); JiraServer.Register(this); SubmitterOptionsPane.Register(this); Core.TabManager.RegisterResourceTypeTab(Name, Stringtable.Jira, new string[] { Types.JiraServer, Types.JiraProject, Types.JiraComponent, Types.JiraIssueType, Types.JiraPriority, Types.JiraStatus, Types.JiraCustomField, Types.JiraUser }, Core.Props.Parent, 10); IResourceTreePane pane = Core.LeftSidebar.RegisterResourceStructureTreePane(Name, Name, Stringtable.Jira, null, JiraServer.Type); pane.ParentProperty = Core.Props.Parent; pane.WorkspaceFilterTypes = new string[] { Types.JiraServer, Types.JiraProject, Types.JiraComponent, Types.JiraIssueType, Types.JiraPriority, Types.JiraStatus, Types.JiraCustomField, Types.JiraUser }; pane.AddNodeFilter(new ResourceTreePaneNodeFilter()); } catch (Exception ex) { Core.ReportException(ex, false); } }
public void Register() { _instance = this; _isReader = Core.ProductFullName.EndsWith("Reader"); _colorScheme = new ColorScheme(Assembly.GetExecutingAssembly(), "ContactsPlugin.Icons.", Core.ResourceIconManager.IconColorDepth); Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("ContactsPlugin.Icons.ContactColorScheme.xml"); _colorScheme.Load(stream); AddressBook.Initialize(); Core.ResourceTreeManager.SetViewsExclusive("Contact"); IUIManager uiMgr = Core.UIManager; Core.TabManager.RegisterResourceTypeTab(_tabName, _tabName, new[] { "Contact", "AddressBook" }, 10); uiMgr.RegisterResourceSelectPane("Contact", typeof(CorrespondentCtrl)); uiMgr.RegisterResourceSelectPane("EmailAccount", typeof(EmailAccountSelector)); IWorkspaceManager mgr = Core.WorkspaceManager; mgr.RegisterWorkspaceType("Contact", new[] { -Core.ContactManager.Props.LinkFrom, -Core.ContactManager.Props.LinkTo, -Core.ContactManager.Props.LinkCC }, WorkspaceResourceType.Filter); #if !READER mgr.RegisterWorkspaceType("EmailAccount", new[] { -Core.ContactManager.Props.LinkEmailAcctFrom, -Core.ContactManager.Props.LinkEmailAcctTo, -Core.ContactManager.Props.LinkEmailAcctCC }, WorkspaceResourceType.Filter); mgr.RegisterWorkspaceSelectorFilter("EmailAccount", new EmailAccountFilter()); mgr.SetWorkspaceTabName("EmailAccount", "Email Accounts"); #endif Core.PluginLoader.RegisterViewsConstructor(new ContactsUpgrade1ViewsConstructor()); Core.PluginLoader.RegisterViewsConstructor(new ContactsViewsConstructor()); Core.PluginLoader.RegisterViewsConstructor(new ContactsUpgrade2ViewsConstructor()); Core.PluginLoader.RegisterViewsConstructor(new ContactsUpgrade3ViewsConstructor()); //----------------------------------------------------------------- // Register Search Extensions to narrow the list of results using // simple phrases in search queries: for restricting the resource // type to Contact (three synonyms). //----------------------------------------------------------------- Core.SearchQueryExtensions.RegisterResourceTypeRestriction("in", "contacts", "Contact"); Core.SearchQueryExtensions.RegisterResourceTypeRestriction("in", "contact", "Contact"); Core.SearchQueryExtensions.RegisterResourceTypeRestriction("in", "c", "Contact"); IDisplayColumnManager colManager = Core.DisplayColumnManager; colManager.RegisterPropertyToTextCallback(Core.ContactManager.Props.LinkFrom, SubstituteName); Core.UIManager.RegisterDisplayInContextHandler("Contact", new DisplayContactInContextHandler()); Core.UIManager.RegisterResourceLocationLink("AddressBook", 0, "AddressBook"); Core.PluginLoader.RegisterResourceTextProvider("Contact", this); Core.PluginLoader.RegisterResourceDisplayer("Contact", this); Core.PluginLoader.RegisterResourceSerializer("Contact", new ContactSerializer()); Core.PluginLoader.RegisterResourceSerializer("Phone", new PhoneSerializer()); Core.PluginLoader.RegisterResourceSerializer("EmailAccount", new EmailAccountSerializer()); Core.ActionManager.RegisterLinkClickAction(new DisplayMailsForEmailAccount(), "EmailAccount", null); if (!_isReader) { IResource abRoot = AddressBook.AddressBookRoot; if (abRoot != null) { Assembly theAsm = Assembly.GetExecutingAssembly(); Image img = Utils.TryGetEmbeddedResourceImageFromAssembly(theAsm, "ContactsPlugin.Icons.AddressBook24.png"); _addressBookPane = Core.LeftSidebar.RegisterResourceStructureTreePane("AddressBooks", _tabName, "Address Books", img, "AddressBook"); _addressBookPane.RegisterToolbarAction(new CreateABAction(), LoadIconFromAssembly("addressbook.ico"), null, "Create Address Book", null); Core.LeftSidebar.RegisterViewPaneShortcut("AddressBooks", Keys.Control | Keys.Alt | Keys.D); } } else { Core.ResourceBrowser.RegisterLinksPaneFilter("Contact", new ReaderABLinkFilter()); } Core.ResourceBrowser.RegisterLinksPaneFilter("Contact", new SkipEmailAddressesFilter()); Core.ResourceIconManager.RegisterOverlayIconProvider("Contact", new ContactOverlayIconProvider()); Core.PluginLoader.RegisterResourceDeleter("Contact", new ContactDeleter()); Core.PluginLoader.RegisterResourceDeleter("ContactName", new ContactDeleter()); RegisterContactBlocks(); Core.ResourceIconManager.RegisterResourceLargeIcon("Contact", LoadIconFromAssembly("ContactLarge.ico")); Core.ResourceBrowser.RegisterLinksGroup("Accounts", new[] { Core.ContactManager.Props.LinkEmailAcct }, ListAnchor.First); }
public void Register() { _plugin = this; _tracer.Trace("Start registering..."); Core.AddExceptionReportData("\nOutlookPlugin is enabled"); Settings.LoadSettings(); REGISTRY.RegisterTypes(this, Core.ContactManager); _tracer.Trace("Start OutlookProcessor..."); _outlookProcessor = new OutlookProcessor(); _outlookUIHandler = new OutlookUIHandler(); if (!_outlookProcessor.IsStarted) { _tracer.Trace("OutlookProcessor failed to start"); Core.AddExceptionReportData("\nOutlookProcessor failed to start"); Core.AddExceptionReportData("\nOutlook plugin cannot be loaded.\n" + _outlookProcessor.LastException.Message); MsgBox.Error("Outlook plugin", "Outlook plugin cannot be loaded.\n" + _outlookProcessor.LastException.Message); _startupStatus = false; Core.ActionManager.DisableXmlActionConfiguration(Assembly.GetExecutingAssembly()); return; } _tracer.Trace("Start OutlookProcessor OK"); _outlookProcessor.SynchronizeMAPIInfoStores(); if (Settings.ExportTasks) { _tracer.Trace("prepare ExportTasks"); _outlookProcessor.ExportTasks(); } Core.PluginLoader.RegisterResourceUIHandler(STR.MAPIFolder, _outlookUIHandler); Core.PluginLoader.RegisterResourceDragDropHandler(STR.MAPIFolder, _outlookUIHandler); Core.PluginLoader.RegisterResourceDragDropHandler(Core.ResourceTreeManager.GetRootForType(STR.MAPIFolder).Type, new OutlookRootDragDropHandler()); IUIManager uiManager = Core.UIManager; Core.TabManager.RegisterResourceTypeTab("Email", "Mail", new[] { STR.Email, STR.MAPIFolder }, PROP.Attachment, 1); Image img = Utils.TryGetEmbeddedResourceImageFromAssembly(Assembly.GetExecutingAssembly(), "OutlookPlugin.Icons.Folders24.png"); IResourceTreePane outlookFolders = Core.LeftSidebar.RegisterResourceStructureTreePane("MAPIFolders", "Email", "Outlook Folders", img, STR.MAPIFolder); if (outlookFolders != null) { outlookFolders.AddNodeFilter(new OutlookFoldersFilter()); ((ResourceTreePaneBase)outlookFolders).AddNodeDecorator(new TotalCountDecorator(STR.MAPIFolder, PROP.MAPIFolder)); outlookFolders.ToolTipCallback = GetMAPIFolderToolTip; Settings.OutlookFolders = outlookFolders; Core.LeftSidebar.RegisterViewPaneShortcut("MAPIFolders", Keys.Control | Keys.Alt | Keys.O); } uiManager.RegisterResourceLocationLink(STR.Email, PROP.MAPIFolder, STR.MAPIFolder); CorrespondentCtrl correspondentPane = new CorrespondentCtrl { IniSection = "Outlook" }; img = Utils.TryGetEmbeddedResourceImageFromAssembly(Assembly.GetExecutingAssembly(), "OutlookPlugin.Icons.Correspondents24.png"); Core.LeftSidebar.RegisterViewPane("Correspondents", "Email", "Correspondents", img, correspondentPane); img = Utils.TryGetEmbeddedResourceImageFromAssembly(Assembly.GetExecutingAssembly(), "OutlookPlugin.Icons.Attachments24.png"); Core.LeftSidebar.RegisterViewPane("Attachments", "Email", "Attachments", img, new AttachmentsCtrl()); Core.LeftSidebar.RegisterViewPaneShortcut("Attachments", Keys.Control | Keys.Alt | Keys.T); RegisterCustomColumns(); RegisterOptionsPanes(); uiManager.RegisterResourceSelectPane(STR.MAPIFolder, typeof(MAPIFoldersTreeSelectPane)); IWorkspaceManager workspaceMgr = Core.WorkspaceManager; if (workspaceMgr != null) { workspaceMgr.RegisterWorkspaceType(STR.MAPIFolder, new[] { PROP.MAPIFolder }, WorkspaceResourceType.Container); workspaceMgr.RegisterWorkspaceType(STR.Email, new[] { -PROP.Attachment }, WorkspaceResourceType.None); workspaceMgr.RegisterWorkspaceSelectorFilter(STR.MAPIFolder, new OutlookFoldersFilter()); } ResourceTextProvider textProvider = new ResourceTextProvider(); Core.PluginLoader.RegisterResourceTextProvider(STR.Email, textProvider); Core.PluginLoader.RegisterResourceTextProvider(STR.EmailFile, textProvider); ResourceDisplayer displayer = new ResourceDisplayer(); Core.PluginLoader.RegisterResourceDisplayer(STR.Email, displayer); Core.PluginLoader.RegisterResourceDisplayer(STR.EmailFile, displayer); Core.PluginLoader.RegisterStreamProvider(STR.Email, new StreamProvider()); Core.PluginLoader.RegisterViewsConstructor(new OutlookUpgrade1ViewsInitializer()); Core.PluginLoader.RegisterViewsConstructor(new OutlookViewsInitializer()); Core.PluginLoader.RegisterViewsConstructor(new OutlookUpgrade2ViewsInitializer()); //----------------------------------------------------------------- // Register Search Extensions to narrow the list of results using // simple phrases in search queries: for restricting the resource // type to emails (three synonyms). //----------------------------------------------------------------- Core.SearchQueryExtensions.RegisterResourceTypeRestriction("in", "mail", STR.Email); Core.SearchQueryExtensions.RegisterResourceTypeRestriction("in", "mails", STR.Email); Core.SearchQueryExtensions.RegisterResourceTypeRestriction("in", "email", STR.Email); Core.ExpirationRuleManager.RegisterResourceType(PROP.MAPIFolder, STR.MAPIFolder, STR.Email); //----------------------------------------------------------------- Core.PluginLoader.RegisterPluginService(this); Core.ResourceIconManager.RegisterPropTypeIcon(PROP.Attachment, LoadIconFromAssembly("OutlookPlugin.Icons.attachment.ico")); Core.ResourceBrowser.RegisterLinksPaneFilter(STR.Email, new OutlookLinksPaneFilter()); Core.ResourceBrowser.RegisterLinksPaneFilter(STR.Task, new OutlookLinksPaneFilterForTasks()); Core.ContactManager.RegisterContactMergeFilter(new EntryIdMergeFilter()); Core.ResourceBrowser.RegisterLinksPaneFilter("Email", new ItemRecipientsFilter()); FolderIconProvider folderIconProvider = new FolderIconProvider(); Core.ResourceIconManager.RegisterResourceIconProvider(STR.MAPIFolder, folderIconProvider); Core.ResourceIconManager.RegisterOverlayIconProvider(STR.MAPIFolder, folderIconProvider); Core.ResourceIconManager.RegisterOverlayIconProvider(STR.Email, new MailIconProvider()); if (Core.ResourceStore.GetAllResources("SentItemsEnumSign").Count == 0) { OutlookSession.OutlookProcessor.RunJob("Detect owner e-mail", new MethodInvoker(OwnerEmailDetector.Detect)); } ResourceDeleters.Register(); EmailThreadingHandler threadingHandler = new EmailThreadingHandler(); Core.PluginLoader.RegisterResourceThreadingHandler("Email", threadingHandler); Core.PluginLoader.RegisterResourceThreadingHandler(PROP.Attachment, threadingHandler); Core.StateChanged += Core_StateChanged; Core.ResourceBrowser.SetDefaultViewSettings("Email", AutoPreviewMode.UnreadItems, true); _tracer.Trace("End of Register"); }
public void Register() { _repositoryTypes = new List <RepositoryType> { new P4RepositoryType(), new SvnRepositoryType() }; Props.Register(this); // delete remnants of old version of the plugin if (Core.ResourceStore.ResourceTypes.Exist("jetbrains.p4.ChangeSet")) { Core.ResourceStore.GetAllResources("jetbrains.p4.ChangeSet").DeleteAll(); Core.ResourceStore.ResourceTypes.Delete("jetbrains.p4.ChangeSet"); } if (Core.ResourceStore.ResourceTypes.Exist("jetbrains.p4.Folder")) { Core.ResourceStore.GetAllResources("jetbrains.p4.Folder").DeleteAll(); Core.ResourceStore.ResourceTypes.Delete("jetbrains.p4.Folder"); } if (Core.ResourceStore.ResourceTypes.Exist("jetbrains.p4.FileChange")) { Core.ResourceStore.GetAllResources("jetbrains.p4.FileChange").DeleteAll(); Core.ResourceStore.ResourceTypes.Delete("jetbrains.p4.FileChange"); } Core.TabManager.RegisterResourceTypeTab("SCC", "SCC", Props.ChangeSetResource, 80); Core.DisplayColumnManager.RegisterDisplayColumn(Props.ChangeSetResource, 0, new ColumnDescriptor("From", 150)); Core.DisplayColumnManager.RegisterDisplayColumn(Props.ChangeSetResource, 1, new ColumnDescriptor("Subject", 300)); Core.DisplayColumnManager.RegisterDisplayColumn(Props.ChangeSetResource, 2, new ColumnDescriptor("Date", 120)); // Register a standard tree pane for showing the folder structure of the Perforce // repository and the changesets in each folder. _folderTreePane = Core.LeftSidebar.RegisterResourceStructureTreePane("SccFolders", "SCC", "Folders", null, Props.RepositoryResource); _folderTreePane.ToolTipCallback = GetRepositoryToolTip; // Set sorting by name for the folder structure IResource folderRoot = Core.ResourceTreeManager.GetRootForType(Props.RepositoryResource); Core.ResourceTreeManager.SetResourceNodeSort(folderRoot, "Name"); // Register a custom sidebar pane for showing the list of Perforce developers and // the changesets done by each developer. Core.LeftSidebar.RegisterViewPane("SccDevelopers", "SCC", "Developers", null, new SccDeveloperPane()); Core.PluginLoader.RegisterResourceUIHandler(Props.FolderResource, new SccFolderUIHandler()); Core.PluginLoader.RegisterResourceDisplayer(Props.ChangeSetResource, this); Core.PluginLoader.RegisterResourceTextProvider(Props.ChangeSetResource, new ChangeSetTextProvider()); Core.UIManager.RegisterOptionsGroup("Development", "The Development options pane controls different development-related plugins"); Core.UIManager.RegisterOptionsPane("Development", "Source Control", new OptionsPaneCreator(CreateSccOptionsPane), "The Source Control options pane specifies the source control repositories monitored by the SCC plugin"); Core.UIManager.RegisterWizardPane("Source Control", new OptionsPaneCreator(CreateSccOptionsPane), 15); _statusWriter = Core.UIManager.GetStatusWriter(this, StatusPane.Network); Assembly iconAssembly = Assembly.GetExecutingAssembly(); _changeSetIcon = new Icon(iconAssembly.GetManifestResourceStream("SccPlugin.changeset.ico")); _openFolderIcon = new Icon(iconAssembly.GetManifestResourceStream("SccPlugin.OpenFolder.ico")); _closedFolderIcon = new Icon(iconAssembly.GetManifestResourceStream("SccPlugin.ClosedFolder.ico")); _repositoryIcon = new Icon(iconAssembly.GetManifestResourceStream("SccPlugin.repository.ico")); Core.ResourceIconManager.RegisterResourceIconProvider( new string[] { Props.ChangeSetResource, Props.FolderResource, Props.RepositoryResource }, this); // Allow creating rules which affect resources of type ChangeSet Core.FilterEngine.RegisterRuleApplicableResourceType(Props.ChangeSetResource); // Register display columns for multiline view Core.DisplayColumnManager.RegisterMultiLineColumn(Props.ChangeSetResource, Core.ContactManager.Props.LinkFrom, 0, 0, 0, 120, MultiLineColumnFlags.AnchorLeft | MultiLineColumnFlags.AnchorRight, SystemColors.WindowText, HorizontalAlignment.Left); Core.DisplayColumnManager.RegisterMultiLineColumn(Props.ChangeSetResource, Core.Props.Date, 0, 0, 120, 80, MultiLineColumnFlags.AnchorRight, SystemColors.WindowText, HorizontalAlignment.Right); Core.DisplayColumnManager.RegisterMultiLineColumn(Props.ChangeSetResource, Core.Props.Subject, 1, 1, 0, 144, MultiLineColumnFlags.AnchorLeft | MultiLineColumnFlags.AnchorRight, Color.FromArgb(112, 112, 112), HorizontalAlignment.Left); Core.ActionManager.RegisterMainMenuActionGroup("SendReceiveActions", "Tools", ListAnchor.First); Core.ActionManager.RegisterMainMenuAction(new SynchronizeRepositoriesAction(), "SendReceiveActions", ListAnchor.Last, "Synchronize Repositories", null, null, null); Core.ActionManager.RegisterActionComponent(new DeleteRepositoryAction(), "Delete", Props.RepositoryResource, null); Core.ActionManager.RegisterActionComponent(new SynchronizeRepositoryAction(), "Refresh", Props.RepositoryResource, null); Core.ActionManager.RegisterContextMenuActionGroup("PropertiesActions", ListAnchor.Last); Core.ActionManager.RegisterContextMenuAction(new ToggleShowSubfolderContentsAction(), "PropertiesActions", ListAnchor.First, "Show subfolder contents", null, Props.FolderResource, null); Core.ActionManager.RegisterContextMenuAction(new RepositoryPropertiesAction(), "PropertiesActions", ListAnchor.First, "Properties...", null, Props.RepositoryResource, null); }