private void removeImageFromDatasetToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (_exObject == null || _contextItem == null)
            {
                return;
            }

            FDBImageDataset iDataset = null;

            if (_exObject.Object is SqlFDBImageCatalogClass)
            {
                SqlFDBImageCatalogClass layer = (SqlFDBImageCatalogClass)_exObject.Object;
                iDataset = new FDBImageDataset(layer._fdb, layer.Name);
            }
            else if (_exObject.Object is AccessFDBImageCatalogClass)
            {
                AccessFDBImageCatalogClass layer = (AccessFDBImageCatalogClass)_exObject.Object;
                iDataset = new FDBImageDataset(layer._fdb, layer.Name);
            }
            if (iDataset == null)
            {
                return;
            }

            if (listView.SelectedItems.Contains(_contextItem))
            {
                foreach (ListViewItem item in listView.SelectedItems)
                {
                    int ID = iDataset.GetImageDatasetItemID(item.Text);
                    if (ID == -1)
                    {
                        MessageBox.Show(iDataset.lastErrorMessage, "ERROR");
                        return;
                    }
                    if (!iDataset.DeleteImageDatasetItem(ID, false))
                    {
                        MessageBox.Show(iDataset.lastErrorMessage, "ERROR");
                        return;
                    }
                    listView.Items.Remove(item);
                }
            }
            else
            {
                int ID = iDataset.GetImageDatasetItemID(_contextItem.Text);
                if (ID == -1)
                {
                    MessageBox.Show(iDataset.lastErrorMessage, "ERROR");
                    return;
                }
                if (!iDataset.DeleteImageDatasetItem(ID, false))
                {
                    MessageBox.Show(iDataset.lastErrorMessage, "ERROR");
                    return;
                }
                listView.Items.Remove(_contextItem);
            }
            SetStatusLabel1Text(listView.Items.Count + " Items...");
        }
        private void RefreshList()
        {
            if (listView.InvokeRequired)
            {
                RefreshListCallback d = new RefreshListCallback(RefreshList);
                this.BeginInvoke(d);
            }
            else
            {
                CancelRefreshList();
                listView.Items.Clear();
                _itemCollection.Clear();

                if (_exObject == null)
                {
                    return;
                }
                if (_exObject.Object is SqlFDBImageCatalogClass)
                {
                    SqlFDBImageCatalogClass layer = (SqlFDBImageCatalogClass)_exObject.Object;

                    _cancelWorker = false;
                    _gui_worker.RunWorkerAsync(layer.ImageList);
                }
                else if (_exObject.Object is AccessFDBImageCatalogClass)
                {
                    AccessFDBImageCatalogClass layer = (AccessFDBImageCatalogClass)_exObject.Object;

                    _cancelWorker = false;
                    //_gui_worker.RunWorkerAsync(layer.ImageList);
                    //
                    // Wirft eine Fehler beim Lesen, wenn List in einem
                    // Workerthread ausgeführt wird...
                    // funzt nur bei SQL Server!!
                    //
                    worker_DoWork(_gui_worker, new DoWorkEventArgs(layer.ImageList));
                }
                else if (_exObject.Object is pgImageCatalogClass)
                {
                    pgImageCatalogClass layer = (pgImageCatalogClass)_exObject.Object;

                    _cancelWorker = false;
                    _gui_worker.RunWorkerAsync(layer.ImageList);
                }
                else if (_exObject.Object is SQLiteFDBImageCatalogClass)
                {
                    SQLiteFDBImageCatalogClass layer = (SQLiteFDBImageCatalogClass)_exObject.Object;

                    _cancelWorker = false;
                    _gui_worker.RunWorkerAsync(layer.ImageList);
                }
            }
        }
        private void updateImageToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (_exObject == null || _contextItem == null)
            {
                return;
            }
            FDBImageDataset iDataset = null;

            if (_exObject.Object is SqlFDBImageCatalogClass)
            {
                SqlFDBImageCatalogClass layer = (SqlFDBImageCatalogClass)_exObject.Object;
                iDataset = new FDBImageDataset(layer._fdb, layer.Name);
            }
            else if (_exObject.Object is AccessFDBImageCatalogClass)
            {
                AccessFDBImageCatalogClass layer = (AccessFDBImageCatalogClass)_exObject.Object;
                iDataset = new FDBImageDataset(layer._fdb, layer.Name);
            }
            if (iDataset == null)
            {
                return;
            }

            int ID = iDataset.GetImageDatasetItemID(_contextItem.Text);

            if (ID == -1)
            {
                MessageBox.Show(iDataset.lastErrorMessage, "ERROR");
                return;
            }
            if (!iDataset.UpdateImageDatasetBitmap(ID))
            {
                MessageBox.Show(iDataset.lastErrorMessage, "ERROR");
                return;
            }

            _contextItem.ImageIndex = 0;
        }
        private void Script(DragEventArgs e)
        {
            try
            {
                if (_exAppl == null)
                {
                    return;
                }

                if (e.Data == null)
                {
                    return;
                }
                string[] data = (string[])e.Data.GetData(DataFormats.FileDrop);
                if (data == null || data.Length == 0)
                {
                    return;
                }

                StringBuilder sb = new StringBuilder();
                foreach (string filename in data)
                {
                    DirectoryInfo di = new DirectoryInfo(filename);
                    if (_exObject.Object is SqlFDBImageCatalogClass)
                    {
                        SqlFDBImageCatalogClass layer = (SqlFDBImageCatalogClass)_exObject.Object;
                        if (layer._fdb == null)
                        {
                            return;
                        }

                        if (di.Exists)
                        {
                            sb.Append("\r\nCreateRasterCatalog -connectionstring \"" + layer._fdb.ConnectionString + "\" -ds \"" + layer.Name + "\" -root \"" + filename + "\" -managed");
                        }
                        else
                        {
                            //gView.Raster.File.RasterFileClass rLayer = new gView.Raster.File.RasterFileClass(null, filename);
                            //if (!rLayer.isValid) continue;
                            RasterFileDataset rDataset = new RasterFileDataset();
                            IRasterLayer      rLayer   = rDataset.AddRasterFile(filename);
                            if (rLayer != null)
                            {
                                sb.Append("\r\nCreateRasterCatalog -connectionstring \"" + layer._fdb.ConnectionString + "\" -ds \"" + layer.Name + "\" -append \"" + filename + "\" -managed");
                            }
                        }
                    }
                    else if (_exObject.Object is AccessFDBImageCatalogClass)
                    {
                        AccessFDBImageCatalogClass layer = (AccessFDBImageCatalogClass)_exObject.Object;
                        if (layer.Dataset == null)
                        {
                            return;
                        }

                        if (di.Exists)
                        {
                            sb.Append("\r\nCreateRasterCatalog -mdb \"" + ConfigTextStream.ExtractValue(layer.Dataset.ConnectionString, "mdb") + "\" -ds \"" + layer.Name + "\" -root \"" + filename + "\" -managed");
                        }
                        else
                        {
                            //gView.Raster.File.RasterFileClass rLayer = new gView.Raster.File.RasterFileClass(null, filename);
                            //if (!rLayer.isValid) continue;
                            RasterFileDataset rDataset = new RasterFileDataset();
                            IRasterLayer      rLayer   = rDataset.AddRasterFile(filename);
                            if (rLayer != null)
                            {
                                sb.Append("\r\nCreateRasterCatalog -mdb \"" + ConfigTextStream.ExtractValue(layer.Dataset.ConnectionString, "mdb") + "\" -ds \"" + layer.Name + "\" -append \"" + filename + "\" -managed");
                            }
                        }
                    }
                }
                if (sb.ToString() != "")
                {
                    sb.Append(" -recalcspatialindex\r\n");
                    _exAppl.ExecuteBatch(sb.ToString(), new ExplorerExecuteBatchCallback(this.RefreshList));
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "Error");
            }
        }