Free cookie consent management tool by TermsFeed Policy Generator

source: trunk/tools/Templates/HeuristicLab.VS2010Wizards/ParametersControl.cs @ 4187

Last change on this file since 4187 was 4187, checked in by abeham, 14 years ago

#567

  • Worked on Algorithm Template
File size: 9.3 KB
Line 
1#region License Information
2/* HeuristicLab
3 * Copyright (C) 2002-2010 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
4 *
5 * This file is part of HeuristicLab.
6 *
7 * HeuristicLab is free software: you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation, either version 3 of the License, or
10 * (at your option) any later version.
11 *
12 * HeuristicLab is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15 * GNU General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License
18 * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
19 */
20#endregion
21
22using System;
23using System.Collections.Generic;
24using System.ComponentModel;
25using System.Drawing;
26using System.Data;
27using System.Linq;
28using System.Text;
29using System.Windows.Forms;
30
31namespace HeuristicLab.VS2010Wizards {
32  public partial class ParametersControl : UserControl {
33    public ParametersControl() {
34      InitializeComponent();
35    }
36
37    public string GetParameterProperties(string accessModifier) {
38      StringBuilder builder = new StringBuilder();
39      foreach (ListViewItem item in parametersListView.Items) {
40        string name = item.Text.Trim();
41        string type = item.SubItems[typeColumnHeader.DisplayIndex].Text.Trim();
42        string dataType = item.SubItems[dataTypeColumnHeader.DisplayIndex].Text.Trim();
43        builder.Append(accessModifier);
44        builder.Append(" " + type + "Parameter");
45        if (dataType != string.Empty)
46          builder.Append("<" + dataType + ">");
47        builder.Append(" " + name + "Parameter {" + Environment.NewLine);
48        builder.Append("\tget { return ");
49        builder.Append("(" + type + "Parameter");
50        if (dataType != string.Empty)
51          builder.Append("<" + dataType + ">");
52        builder.Append(")Parameters[\"" + name + "\"]; }" + Environment.NewLine);
53        builder.Append("}" + Environment.NewLine);
54      }
55      return builder.ToString();
56    }
57
58    public string GetProperties(string accessModifier) {
59      StringBuilder builder = new StringBuilder();
60      foreach (ListViewItem item in parametersListView.Items) {
61        string name = item.Text.Trim();
62        string type = item.SubItems[typeColumnHeader.DisplayIndex].Text.Trim();
63        string dataType = item.SubItems[dataTypeColumnHeader.DisplayIndex].Text.Trim();
64        if (type.ToLower().Equals("value")) {
65          builder.Append(accessModifier + " " + dataType);
66          builder.Append(" " + name + " {" + Environment.NewLine);
67          builder.Append("\tget { return " + name + "Parameter.Value; }" + Environment.NewLine);
68          builder.Append("\tset { " + name + "Parameter.Value = value; }" + Environment.NewLine);
69          builder.Append("}" + Environment.NewLine);
70        }
71      }
72      return builder.ToString();
73    }
74
75    public string GetInitializers() {
76      StringBuilder builder = new StringBuilder();
77      foreach (ListViewItem item in parametersListView.Items) {
78        string name = item.Text.Trim();
79        string type = item.SubItems[typeColumnHeader.DisplayIndex].Text.Trim();
80        string dataType = item.SubItems[dataTypeColumnHeader.DisplayIndex].Text.Trim();
81        string description = item.SubItems[descriptionColumnHeader.DisplayIndex].Text.Trim();
82        string initialValue = item.SubItems[defaultValueColumnHeader.DisplayIndex].Text.Trim();
83        builder.Append("\tParameters.Add(new " + type + "Parameter");
84        if (dataType != string.Empty)
85          builder.Append("<" + dataType + ">");
86        builder.Append("(\"" + name + "\", ");
87        builder.Append("\"" + description + "\"");
88        if (initialValue != string.Empty)
89          builder.Append(", " + initialValue);
90        builder.Append("));" + Environment.NewLine);
91      }
92      return builder.ToString();
93    }
94
95    #region Button Event Handlers
96    private void removeButton_Click(object sender, EventArgs e) {
97      if (parametersListView.SelectedIndices.Count > 0) {
98        int row = parametersListView.SelectedIndices[0];
99        parametersListView.Items.RemoveAt(row);
100        if (parametersListView.Items.Count > 0) {
101          int index = Math.Max(Math.Min(row, parametersListView.Items.Count - 1), 0);
102          parametersListView.Items[index].Selected = true;
103        }
104      }
105    }
106
107    private void upButton_Click(object sender, EventArgs e) {
108      if (parametersListView.SelectedIndices.Count > 0) {
109        ListViewItem selected = parametersListView.SelectedItems[0];
110        int row = parametersListView.SelectedIndices[0];
111        parametersListView.Items.Remove(selected);
112        parametersListView.Items.Insert(Math.Max(row - 1, 0), selected);
113      }
114    }
115
116    private void downButton_Click(object sender, EventArgs e) {
117      if (parametersListView.SelectedIndices.Count > 0) {
118        ListViewItem selected = parametersListView.SelectedItems[0];
119        int row = parametersListView.SelectedIndices[0];
120        parametersListView.Items.Remove(selected);
121        if (row == parametersListView.Items.Count)
122          parametersListView.Items.Add(selected);
123        else
124          parametersListView.Items.Insert(row + 1, selected);
125      }
126    }
127
128    private void addButton_Click(object sender, EventArgs e) {
129      string name = "FormalName";
130      bool uniqueNameFound;
131      int i = 1;
132      do {
133        uniqueNameFound = true;
134        foreach (ListViewItem li in parametersListView.Items) {
135          if (li.Text.Equals(name)) {
136            name = "FormalName" + i.ToString();
137            i++;
138            uniqueNameFound = false;
139          }
140        }
141      } while (!uniqueNameFound);
142      ListViewItem item = new ListViewItem();
143      item.Text = name;
144      item.SubItems.Add("Value");
145      item.SubItems.Add("IItem");
146      item.SubItems.Add("Add a description.");
147      item.SubItems.Add("null");
148      parametersListView.Items.Add(item);
149    }
150    #endregion
151
152    private void parametersListView_MouseDoubleClick(object sender, MouseEventArgs e) {
153      var hit = parametersListView.HitTest(e.Location);
154      if (hit.Item.SubItems[typeColumnHeader.DisplayIndex] == hit.SubItem) {
155        parameterTypeComboBox.Left = parametersListView.Left + hit.SubItem.Bounds.Left + 3;
156        parameterTypeComboBox.Top = parametersListView.Top + hit.SubItem.Bounds.Top;
157        parameterTypeComboBox.Width = hit.SubItem.Bounds.Width;
158        parameterTypeComboBox.Height = hit.SubItem.Bounds.Height;
159        parameterTypeComboBox.Text = hit.SubItem.Text;
160        parameterTypeComboBox.Tag = hit.SubItem;
161        parameterTypeComboBox.Visible = true;
162        parameterTypeComboBox.BringToFront();
163        Refresh();
164        parameterTypeComboBox.Focus();
165        parameterTypeComboBox.SelectAll();
166      } else {
167        customInputTextBox.Left = parametersListView.Left + hit.SubItem.Bounds.Left + 3;
168        customInputTextBox.Top = parametersListView.Top + hit.SubItem.Bounds.Top;
169        if (hit.SubItem != hit.Item.SubItems[0])
170          customInputTextBox.Width = hit.SubItem.Bounds.Width;
171        else customInputTextBox.Width = hit.Item.SubItems[1].Bounds.Left;
172        customInputTextBox.Height = hit.SubItem.Bounds.Height;
173        customInputTextBox.Text = hit.SubItem.Text;
174        customInputTextBox.Tag = hit.SubItem;
175        customInputTextBox.Visible = true;
176        customInputTextBox.BringToFront();
177        Refresh();
178        customInputTextBox.Focus();
179        customInputTextBox.SelectAll();
180      }
181    }
182
183    private void parametersListView_SelectedIndexChanged(object sender, EventArgs e) {
184      if (parametersListView.SelectedIndices.Count > 0) {
185        removeButton.Enabled = true;
186        upButton.Enabled = true;
187        downButton.Enabled = true;
188      } else {
189        removeButton.Enabled = false;
190        upButton.Enabled = false;
191        downButton.Enabled = false;
192      }
193    }
194
195    private void customInputTextBox_Leave(object sender, EventArgs e) {
196      TextBox t = (TextBox)sender;
197      System.Windows.Forms.ListViewItem.ListViewSubItem subItem = t.Tag as System.Windows.Forms.ListViewItem.ListViewSubItem;
198      subItem.Text = t.Text;
199      t.Visible = false;
200    }
201
202    private void customInputTextBox_KeyUp(object sender, KeyEventArgs e) {
203      if (e.KeyCode == Keys.Return || e.KeyCode == Keys.Enter)
204        customInputTextBox_Leave(sender, EventArgs.Empty);
205    }
206
207    private void parameterTypeComboBox_Leave(object sender, EventArgs e) {
208      ComboBox c = (ComboBox)sender;
209      System.Windows.Forms.ListViewItem.ListViewSubItem subItem = c.Tag as System.Windows.Forms.ListViewItem.ListViewSubItem;
210      subItem.Text = c.Text;
211      c.Visible = false;
212    }
213
214    private void parameterTypeComboBox_SelectedIndexChanged(object sender, EventArgs e) {
215      if (parameterTypeComboBox.Visible)
216        parameterTypeComboBox_Leave(sender, e);
217    }
218
219    private void parameterTypeComboBox_KeyUp(object sender, KeyEventArgs e) {
220      if (e.KeyCode == Keys.Return || e.KeyCode == Keys.Enter)
221        parameterTypeComboBox_Leave(sender, EventArgs.Empty);
222    }
223  }
224}
Note: See TracBrowser for help on using the repository browser.