private void RunQuery(string query)
        {
            if (query == "")
                query = GetQuery();
            if (query == "")
            {
                MessageBox.Show("You must enter a query first!");
                return;
            }

            Cursor cacheCursor = this.Cursor ;

            //			try
            //			{
                this.Cursor = Cursors.WaitCursor ;
                Application.DoEvents() ;

                IList filter = null;
                if (queryResultMenuItem.Checked)
                {
                    filter = GetListViewObjects();
                }

                objectsListView.Clear() ;
                objectsListView.Columns.Clear() ;
                objectsListView.Items.Clear() ;

                NPathQuery npath = new NPathQuery(query) ;
                IClassMap classMap = Context.NPathEngine.GetRootClassMap(query, Context.DomainMap);
                Type type = Context.AssemblyManager.MustGetTypeFromClassMap(classMap);

                npath.Context = Context;
                npath.PrimaryType = type;

                NPathQueryType npathQueryType = Context.NPathEngine.GetNPathQueryType(query);

                if (npathQueryType == NPathQueryType.SelectObjects)
                {
                    IList result = null;
                    if (queryDataSourceMenuItem.Checked)
                    {
                        result = Context.GetObjects(npath, type);
                    }
                    else if (queryFilterMenuItem.Checked)
                    {
                        result = Context.FilterObjects(npath);
                    }
                    else
                    {
                        result = Context.FilterObjects(filter, npath);
                    }

                    ObjectListViewItem.SetupColumns(Context, type, objectsListView);

                    objectsListView.BeginUpdate() ;
                    foreach (object obj in result)
                    {
                        ListViewItem listViewItem = new ObjectListViewItem(Context, obj, type) ;
                        objectsListView.Items.Add(listViewItem );
                    }
                    objectsListView.EndUpdate() ;
                }

                if (npathQueryType == NPathQueryType.SelectScalar)
                {
                    MessageBox.Show("Only queries that returned objects are allowed in the Object Explorer! For scalar queries, please use the Query Analyzer instead.");
                }

                if (npathQueryType == NPathQueryType.SelectTable )
                {
                    MessageBox.Show("Only queries that returned objects are allowed in the Object Explorer! For tabular queries, please use the Query Analyzer instead.");
                }
            //			}
            //			catch (CompositeException compEx)
            //			{
            //				ListAllSystemExceptions(compEx.InnerExceptions);
            //				MessageBox.Show("Exceptions were encountered while executing the query! Please inspect the list of errors for more information!");
            //			}
            //			catch (Exception ex)
            //			{
            //				IList exceptions = new ArrayList();
            //				exceptions.Add(ex);
            //				ListAllSystemExceptions(exceptions);
            //				MessageBox.Show("An exception was encountered while executing the query! Please inspect the list of errors for more information!");
            //			}

            this.Cursor = cacheCursor ;
        }
 private void AddObjectToListView(object dropObject, Type type, ListView listView)
 {
     ListViewItem listViewItem = new ObjectListViewItem(Context, dropObject, type, true) ;
     listView.Items.Add(listViewItem );
 }
        private void InsertObjectIntoListView(object dropObject, Type type, ListView listView)
        {
            listView.Clear() ;
            ObjectListViewItem.SetupColumns(Context, dropObject.GetType(), listView );

            ListViewItem listViewItem = new ObjectListViewItem(Context, dropObject, type) ;
            listView.Items.Add(listViewItem );
        }