Example #1
0
        /// <summary>
        /// Creates new table panel for the layer.
        /// </summary>
        public TablePanelInfo CreateTablePanel(ILegendLayer layer)
        {
            var grid = CreateGrid();

            grid.SetTableSource(layer.FeatureSet, layer.Handle, layer.LayerType == Api.Enums.LayerType.VectorLayer);

            grid.ColumnContextNeeded        += (s, e) => ShowContextMenu(s, e.ColumnIndex);
            grid.CellContextMenuStripNeeded += (s, e) => ShowContextMenu(s, e.ColumnIndex);

            var first = Panels.FirstOrDefault();

            var panel = Panels.Add(grid, layer.Handle);

            panel.Caption = layer.Name;

            int            size;
            DockPanelState state;

            GetLayoutSpecs(AppConfig.Instance.TableEditorLayout, out size, out state);

            if (first != null)
            {
                panel.DockTo(first, state, size);
                panel.TabPosition = 0;
            }

            return(new TablePanelInfo(grid, layer, panel));
        }
Example #2
0
        public static bool SaveSettings(ILegendLayer layer)
        {
            if (!CheckFilename(layer.Filename))
            {
                return(false);
            }

            var    xml   = new XmlLayer(layer);
            string state = xml.Serialize(false);

            try
            {
                string filename = layer.Filename + FileExtension;

                using (var writer = new StreamWriter(filename))
                {
                    writer.Write(state);
                    writer.Flush();
                    MessageService.Current.Info("Layer settings were saved: " + filename);
                    return(true);
                }
            }
            catch (Exception ex)
            {
                MessageService.Current.Warn("Failed to save project: " + ex.Message);
            }

            return(false);
        }
Example #3
0
        /// <summary>
        /// Creates a new instance of PolygonForm class
        /// </summary>
        public PolygonForm(IAppContext context, ILegendLayer layer, IGeometryStyle style, bool applyDisabled) : base(context)
        {
            if (layer == null)
            {
                throw new ArgumentNullException("layer");
            }
            if (style == null)
            {
                throw new ArgumentNullException("style");
            }

            InitializeComponent();

            _style    = style;
            _metadata = SymbologyPlugin.GetMetadata(layer.Handle);
            _legend   = context.Legend;
            _layer    = layer;

            _initState = style.Serialize();

            _noEvents = true;

            Initialize();

            btnApply.Visible          = !applyDisabled;
            tabControl1.SelectedIndex = _tabPage;
        }
Example #4
0
        public XmlLayer(ILegendLayer layer, bool selected = false)
        {
            if (ProjectStorage)
            {
                OcxLayer = LayerToXmlElement(layer);
            }
            else
            {
                if (layer.SaveOptions("", true, ""))
                {
                    Logger.Current.Warn("Failed to save layer options: " + layer.Name);
                }
            }

            Identity           = layer.Identity;
            Expanded           = layer.Expanded;
            HideFromLegend     = layer.HideFromLegend;
            ColorSchemeCaption = layer.SymbologyCaption;
            Guid        = layer.Guid;
            LayerType   = layer.LayerType;
            Name        = layer.Name;
            SkipLoading = false;
            Selected    = selected;

            SerializeCustomObjects(layer);
        }
Example #5
0
        private XmlElement LayerToXmlElement(ILegendLayer layer)
        {
            string      xml = layer.Serialize();
            XmlDocument doc = new XmlDocument();

            doc.LoadXml(xml);
            return(doc.DocumentElement);
        }
Example #6
0
        private void CreateNewTable(ILegendLayer layer)
        {
            var info = View.CreateTablePanel(layer);

            info.Grid.CellValueEdited += GridCellValueEdited;

            _tables.Add(layer.Handle, info);

            // TODO: shouldn't we remove these handlers on closing the layer
            info.Grid.SelectionChanged += (s, e) => OnViewSelectionChanged(layer.Handle);
            info.Grid.KeyDown          += OnGridKeyDown;
        }
Example #7
0
        private static void DisplayStylesNotFound(ILegendLayer layer)
        {
            string msg = "No styles were found for the datasource." + Environment.NewLine + Environment.NewLine +
                         "Filenames checked: " + Environment.NewLine;

            foreach (var ext in Extensions)
            {
                msg += layer.Filename + ext + Environment.NewLine;
            }

            MessageService.Current.Info(msg);
        }
        public CategoriesSubViewModel(ILegendLayer layer, SymbologyMetadata metadata)
        {
            if (layer == null)
            {
                throw new ArgumentNullException("layer");
            }
            if (metadata == null)
            {
                throw new ArgumentNullException("metadata");
            }

            Layer    = layer;
            Metadata = metadata;
        }
Example #9
0
        private void RestoreCustomObjects(ILegendLayer layer)
        {
            var legendLayer = layer as LegendLayer;

            if (legendLayer == null)
            {
                return;
            }

            legendLayer.ClearCustomObjects();

            foreach (var cob in CustomObjects)
            {
                legendLayer.RestoreCustomObject(cob.Object, cob.Guid);
            }
        }
Example #10
0
        public static void RemoveSettings(ILegendLayer layer, bool silent)
        {
            if (!CheckFilename(layer.Filename))
            {
                return;
            }

            bool existed = false;

            foreach (var ext in Extensions)
            {
                string filename = layer.Filename + ext;

                if (!File.Exists(filename))
                {
                    continue;
                }

                existed = true;

                try
                {
                    File.Delete(filename);
                }
                catch (Exception ex)
                {
                    Logger.Current.Info("Failed to remove style for layer.", ex);

                    if (!silent)
                    {
                        MessageService.Current.Warn("Failed to remove style: " + filename);
                    }

                    return;
                }
            }

            if (existed)
            {
                MessageService.Current.Info("Layer style was removed.");
            }
            else
            {
                DisplayStylesNotFound(layer);
            }
        }
Example #11
0
        public void OpenTable(ILegendLayer layer)
        {
            if (layer == null)
            {
                throw new ArgumentNullException("layer");
            }

            if (_tables.ContainsKey(layer.Handle))
            {
                View.Panels.ActivatePanel(layer.Handle);
                return;
            }

            CreateNewTable(layer);

            View.UpdateView();
        }
Example #12
0
        public FindReplaceModel(TableEditorGrid grid, ILegendLayer layer, bool replace)
        {
            if (grid == null)
            {
                throw new ArgumentNullException("grid");
            }
            if (layer == null)
            {
                throw new ArgumentNullException("layer");
            }

            Grid       = grid;
            Replace    = replace;
            Table      = layer.FeatureSet.Table;
            SearchInfo = new SearchInfo();
            _layerName = layer.Name;
        }
Example #13
0
        /// <summary>
        /// Creates a new instance of PointsForm class
        /// </summary>
        public PointsForm(IAppContext context, ILegendLayer layer, IGeometryStyle options, bool applyDisabled) : base(context)
        {
            if (layer == null)
            {
                throw new ArgumentNullException("layer");
            }
            if (options == null)
            {
                throw new ArgumentNullException("options");
            }

            InitializeComponent();

            _legend = context.Legend;
            _layer  = layer;
            _style  = options;

            // setting values to the controls
            _initState = _style.Serialize();
            _noEvents  = true;

            btnApply.Visible = !applyDisabled;

            pointIconControl1.Initialize(_style.Marker);

            dynamicVisibilityControl1.Initialize(_style, _context.Map.CurrentZoom, _context.Map.CurrentScale);
            dynamicVisibilityControl1.ValueChanged += (s, e) => {
                btnApply.Enabled = true;
                dynamicVisibilityControl1.ApplyChanges();
            };

            InitControls();

            Options2Gui();
            _noEvents = false;

            InitFonts();

            DrawPreview();

            AttachListeners();

            UpdateDefaultColor();

            tabControl1.SelectedIndex = _tabIndex;
        }
Example #14
0
 public TablePanelInfo(TableEditorGrid grid, ILegendLayer layer, ITablePanel panel)
 {
     if (grid == null)
     {
         throw new ArgumentNullException("grid");
     }
     if (layer == null)
     {
         throw new ArgumentNullException("layer");
     }
     if (panel == null)
     {
         throw new ArgumentNullException("panel");
     }
     Grid  = grid;
     Layer = layer;
     Panel = panel;
 }
Example #15
0
        public void AddLayer(ILegendLayer layer)
        {
            if (layer == null)
            {
                throw new ArgumentNullException("layer");
            }

            if (!(layer is LegendLayer))
            {
                throw new InvalidCastException("LegendLayer class is expected");
            }

            _layers.Add((LegendLayer)layer);

            RecalcHeight();

            UpdateGroupVisibility();
        }
Example #16
0
        /// <summary>
        /// Creates a new instance of PointsForm class
        /// </summary>
        public PointsForm(IMuteLegend legend, ILegendLayer layer, IGeometryStyle options, bool applyDisabled)
        {
            if (layer == null)
            {
                throw new ArgumentNullException("layer");
            }
            if (options == null)
            {
                throw new ArgumentNullException("options");
            }
            if (legend == null)
            {
                throw new ArgumentNullException("legend");
            }

            InitializeComponent();

            _legend = legend;
            _layer  = layer;
            _style  = options;

            // setting values to the controls
            _initState = _style.Serialize();
            _noEvents  = true;

            btnApply.Visible = !applyDisabled;

            pointIconControl1.Initialize(_style.Marker);

            InitControls();

            Options2Gui();
            _noEvents = false;

            InitFonts();

            DrawPreview();

            AttachListeners();

            UpdateDefaultColor();

            tabControl1.SelectedIndex = _tabIndex;
        }
Example #17
0
        /// <summary>
        /// Creates a new instance of PolygonsForm class
        /// </summary>
        public LinesForm(IAppContext _context, ILegendLayer layer, IGeometryStyle style, bool applyDisabled) : base(_context)
        {
            if (layer == null)
            {
                throw new ArgumentNullException("layer");
            }
            if (style == null)
            {
                throw new ArgumentNullException("style");
            }

            InitializeComponent();

            _style     = style;
            _legend    = _context.Legend;
            _layer     = layer;
            _initState = style.Serialize();

            btnApply.Visible = !applyDisabled;

            Initialize();
        }
Example #18
0
        private void SerializeCustomObjects(ILegendLayer layer)
        {
            CustomObjects = new List <XmlCustomObject>();

            var legendLayer = layer as LegendLayer;

            if (legendLayer == null)
            {
                return;
            }

            foreach (var item in legendLayer.CustomObjects)
            {
                var cob = new XmlCustomObject()
                {
                    Object = item.Value,
                    Guid   = item.Key,
                };

                CustomObjects.Add(cob);
            }
        }
Example #19
0
        public void InsertLayer(int position, ILegendLayer layer)
        {
            if (position < 0)
            {
                position = 0;
            }
            if (position > _layers.Count)
            {
                position = _layers.Count;
            }

            if (!(layer is LegendLayer))
            {
                throw new InvalidCastException("LegendLayer class is expected");
            }

            _layers.Insert(position, (LegendLayer)layer);

            RecalcHeight();

            UpdateGroupVisibility();
        }
Example #20
0
        public void RestoreLayer(ILegendLayer layer, IBroadcasterService broadcaster)
        {
            AttributeTable table = null;

            if (layer.FeatureSet != null)
            {
                table             = layer.FeatureSet.Table;
                table.UpdateJoin += table_UpdateJoin;
                _broadcaster      = broadcaster;
            }

            if (OcxLayer != null)
            {
                layer.Deserialize(OcxLayer.OuterXml);
            }
            else
            {
                if (!ProjectStorage)
                {
                    string description = string.Empty;
                    layer.LoadOptions("", ref description);
                }
            }

            if (table != null)
            {
                table.UpdateJoin -= table_UpdateJoin;
                _broadcaster      = null;
            }

            RestoreCustomObjects(layer);

            layer.Name             = Name;
            layer.Expanded         = Expanded;
            layer.HideFromLegend   = HideFromLegend;
            layer.SymbologyCaption = ColorSchemeCaption;
            layer.Guid             = Guid;
        }
Example #21
0
        public static bool LoadSettings(ILegendLayer layer, IBroadcasterService broadcaster, bool silent)
        {
            if (!CheckFilename(layer.Filename))
            {
                return(false);
            }

            string filename = layer.Filename + FileExtension;

            if (!File.Exists(filename))
            {
                return(false);       // nothing to load
            }

            try
            {
                using (var reader = new StreamReader(filename))
                {
                    string xml      = reader.ReadToEnd();
                    var    xmlLayer = xml.Deserialize <XmlLayer>();
                    xmlLayer.RestoreLayer(layer, broadcaster);
                    return(true);
                }
            }
            catch (Exception ex)
            {
                const string msg = "Failed to deserialize layer";
                Logger.Current.Warn(msg, ex);

                if (!silent)
                {
                    MessageService.Current.Warn(msg + ": " + ex.Message);
                }
            }

            return(false);
        }
Example #22
0
        /// <summary>
        /// Draws layer icon.
        /// </summary>
        /// <returns>Height of icon in screen coordinates.</returns>
        private int DrawLayerIcon(ILegendLayer layer, IGeometryStyle options, Graphics g, float left, float top)
        {
            int width  = _thumbnailWidth;
            int height = _thumbnailHeight;

            var fs = layer.FeatureSet;

            if (fs == null)
            {
                return(height + 3);
            }

            var hdc = g.GetHdc();

            GetIconWidthAndHeight(options, ref width, ref height);

            left = (int)(left + 0.5);
            top  = (int)(top + 0.5);

            if (fs.PointOrMultiPoint)
            {
                options.DrawPoint(hdc, left, top, width, height, _backColor);
            }
            else if (fs.IsPolyline)
            {
                options.DrawLine(hdc, left, top, width, height, false, width, height, _backColor);
            }
            else if (fs.IsPolygon)
            {
                options.DrawRectangle(hdc, left, top, width - 1, height - 1, false, width + 1, height + 1, _backColor);
            }

            g.ReleaseHdc(hdc);

            return(height + 3);
        }