Example #1
0
        public void Import(object item, SnapinNode node)
        {
            try
            {
                // Need to create a reader.

                IRepositoryReader fromReader = m_repositoryType.GetRepositoryConnection <IRepositoryReader>(true, m_parent);
                if (fromReader != null)
                {
                    // Save selection.

                    string selectedPath = ((SnapinNode)node.Snapin.CurrentScopeNode).GetPathRelativeTo(node);

                    // Run it.

                    IRepositoryWriter             toWriter = m_repositoryLink.GetConnection <IRepositoryWriter>();
                    ImportRepositoryResultsRunner runner   = new ImportRepositoryResultsRunner(fromReader, toWriter);
                    runner.Run();

                    using (new LongRunningMonitor(node.Snapin))
                    {
                        // Refresh the catalogue itself.

                        IRepositoryConnection repositoryConnection = m_repositoryLink as IRepositoryConnection;
                        if (repositoryConnection != null)
                        {
                            using (ConnectionState state = new ConnectionState())
                            {
                                repositoryConnection.Connect(state).Refresh();
                            }
                        }

                        // Refresh the node and selection.

                        node.Refresh(true);
                        SnapinNode selectedNode = node.FindNodeInTree(selectedPath);
                        if (selectedNode != null)
                        {
                            selectedNode.Select();
                        }
                    }
                }
            }
            catch (System.Exception e)
            {
                new ExceptionDialog(e, "The following exception has occurred while trying to read the information:").ShowDialog();
            }
        }