private void placesconsole_SelectedIndexChanged(object sender, EventArgs e)
 {
     //DirectoryManager.PlacesSearchData eid = placesconsole.SelectedPlaceUUID;
     DirectoryManager.PlacesSearchData iplc = placesconsole.SelectedName;
     ////client.Directory.EventInfoRequest(eid);
     placesconsole.DisplayPlace(iplc);
 }
        // UI thread
        public void DisplayPlace(DirectoryManager.PlacesSearchData place)
        {
            if (place.Name == null)
            {
                return;
            }

            string sForSale = "";

            if (place.Price > 0)
            {
                sForSale = "For Sale for L$" + place.Price.ToString();
            }

            txtName.Text        = place.Name;
            txtDescription.Text = place.Desc;
            txtInformation.Text = "Traffic: " + place.Dwell + " Area: " + place.ActualArea.ToString() + " sq. m. " + sForSale;


            // Can't figure out how this is done so I am commenting
            // this feature out. If you know how it's done
            // go ahead and implement it

            //string LandFlag = "";

            //if ((place.Flags & Parcel.ParcelFlags.MaturePublish) == Parcel.ParcelFlags.MaturePublish)
            //{
            //    byte sflag = place.Flags;
            //    LandFlag = " (Mature)";
            //}

            //txtLocation.Text += LandFlag;

            // Convert Global pos to local
            float locX = (float)place.GlobalX;;
            float locY = (float)place.GlobalY;
            float locX1;
            float locY1;

            Helpers.GlobalPosToRegionHandle(locX, locY, out locX1, out locY1);

            fX   = locX1;
            fY   = locY1;
            fZ   = (float)place.GlobalZ;
            sSIM = place.SimName;

            txtLocation.Text = place.SimName.ToString() + " " + fX.ToString() + ", " + fY.ToString() + ", " + fZ.ToString();
        }