/// <summary>
        /// Displays the event categories supported by the server.
        /// </summary>
        public void ShowDialog(
            TsCAeServer server,
            string source,
            string condition,
            string subcondition)
        {
            if (server == null)
            {
                throw new ArgumentNullException("server");
            }

            mServer_    = server;
            mSource_    = source;
            mCondition_ = condition;

            // find attributes for condition.
            FindAttributes();

            // clear list view.
            itemUrlsLv_.Items.Clear();

            try
            {
                // build attribute list.
                int[] attributeIDs = new int[mAttributes_.Length];

                for (int ii = 0; ii < mAttributes_.Length; ii++)
                {
                    attributeIDs[ii] = mAttributes_[ii].ID;
                }

                // translate item ids
                TsCAeItemUrl[] itemUrls = mServer_.TranslateToItemIDs(
                    mSource_,
                    mCategoryId_,
                    mCondition_,
                    subcondition,
                    attributeIDs);

                // add to list.
                for (int ii = 0; ii < itemUrls.Length; ii++)
                {
                    ListViewItem item = new ListViewItem(mAttributes_[ii].Name);

                    item.SubItems.Add(itemUrls[ii].ItemName);
                    item.SubItems.Add(itemUrls[ii].Url.ToString());
                    item.Tag = itemUrls[ii];

                    itemUrlsLv_.Items.Add(item);
                }

                // adjust column widths.
                AdjustColumns();
            }
            catch (Exception e)
            {
                MessageBox.Show(e.Message, Text);
            }

            // show dialog.
            ShowDialog();
        }