예제 #1
0
파일: Jiffa.cs 프로젝트: mo5h/omeo
        ///<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);
            }
        }
예제 #2
0
파일: ContactsPlugin.cs 프로젝트: mo5h/omeo
        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);
        }
예제 #3
0
파일: OutlookPlugin.cs 프로젝트: mo5h/omeo
        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");
        }
예제 #4
0
파일: SccPlugin.cs 프로젝트: mo5h/omeo
        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);
        }