/// <summary> /// This method Display Layers /// </summary> public void DisplayLayers() { try { // Clear the controls LayersPanel.Controls.Clear(); // if there are one or more layers if ((HasPixelDatabase) && (ListHelper.HasOneOrMoreItems(PixelDatabase.Layers))) { // reverse the list List <Layer> layers = PixelDatabase.Layers; // Iterate the collection of Layer objects for (int x = layers.Count - 1; x >= 0; x--) { // get the current layer Layer layer = layers[x]; // create a new label and set properties LayerLabel label = new LayerLabel(); label.Layer = layer; label.Name = layer.Name; label.Text = layer.Name; label.Dock = DockStyle.Top; label.Font = new Font("Verdana", 12); label.ForeColor = Color.White; label.MouseEnter += this.Button_Enter; label.MouseLeave += this.Button_Leave; label.Click += LayerClicked; label.Index = x; // if selected if (layer.Selected) { // selected label.BackColor = Color.RoyalBlue; } else { // no backcolor label.BackColor = Color.Transparent; } // Add this control LayersPanel.Controls.Add(label); } } } catch (Exception error) { // for debugging only for now DebugHelper.WriteDebugError("DisplayLayers", "LayersControl", error); } }
/// <summary> /// event is fired when Layer Clicked /// </summary> private void LayerClicked(object sender, EventArgs e) { // If the value for the property .HasPixelDatabase is true if ((HasPixelDatabase) && (PixelDatabase.HasLayers)) { // cast the sender a Label LayerLabel label = sender as LayerLabel; // If the label object exists if (NullHelper.Exists(label)) { // If the value for the property label.HasLayer is true if ((label.HasLayer) && ((label.Index >= 0) && (label.Index < PixelDatabase.Layers.Count))) { // iterate the layers foreach (Layer layer in PixelDatabase.Layers) { // remove all selections layer.Selected = false; } // Select this item PixelDatabase.Layers[label.Index].Selected = true; // Set the SelectedLayer SelectedLayer = PixelDatabase.Layers[label.Index]; // Display Layers DisplayLayers(); // Enable or disable controls UIEnable(); } } } }