public static List<menuItem> getAllItems() {
			List<menuItem> items = null;

			using (SqlConnection con = connectionManager.getConnection()) {
				SqlCommand com = new SqlCommand("getAllItems", con);
				com.CommandType = System.Data.CommandType.StoredProcedure;

				try {
					con.Open();

					SqlDataReader reader = com.ExecuteReader();
					if (reader.HasRows) {
						items = new List<menuItem>();

						while (reader.Read()) {
							menuItem item = new menuItem();
							item.id = Convert.ToInt32(reader["id"]);
							item.pageName = reader["pageName"].ToString();
							item.orderNrInParent = Convert.ToInt32(reader["orderNrInParent"]);
							item.text = reader["itemText"].ToString();
							item.parentID = Convert.ToInt32(reader["parentID"]);

							items.Add(item);
						};
					};
				} catch { throw; };
			}

			return items;
		}
		public static List<menuItem> getItemsForGroup(int groupID) {
			List<menuItem> items = null;

			using (SqlConnection con = connectionManager.getConnection()) {
				SqlCommand com = new SqlCommand("getItemsForGroup", con);
				com.CommandType = System.Data.CommandType.StoredProcedure;
				com.Parameters.AddWithValue("@groupID", groupID);

				try {
					con.Open();

					SqlDataReader reader = com.ExecuteReader();
					if (reader.HasRows) {
						items = new List<menuItem>();

						while (reader.Read()) {
							menuItem item = new menuItem();
							item.id = Convert.ToInt32(reader["id"]);
							item.pageName = reader["pageName"].ToString();
							item.orderNrInParent = Convert.ToInt32(reader["orderNrInParent"]);
							item.text = reader["itemText"].ToString();
							item.color = "Black";
							item.parentID = Convert.ToInt32(reader["parentID"]);
							item.rights = new menuItemRights(reader["rights"].ToString());

							items.Add(item);
						};
					};
				} catch { throw; };
			}

			return items;
		}
        private void init(object sender,RoutedEventArgs e) {
            List<bo.menuItem> parentList = dbItems.getAllItems();
            bo.menuItem dummyTopItem = new bo.menuItem() { id = 0, text = "is top item" };
            parentList.Insert(0, dummyTopItem);

            cmbParents.DataContext = parentList;
            txtText.DataContext = menuItem;
            txtOrderInParent.DataContext = menuItem;
            txtPageName.DataContext = menuItem;
        }
 // helpers
 private void clearItem() {
     menuItem = new bo.menuItem();
     init(this, new RoutedEventArgs());
 }
		private string getItemPath(menuItem item, string path = "") {
			if (string.IsNullOrEmpty(path)) { 
				path = item.text; 
			} else { 
				path = item.text + " -> " + path; 
			};
			
			if (item.parentID > 0) {
				menuItem parent = getMenuItemWithID(currentTreeviewItems, item.parentID);
				path = getItemPath(parent, path);
			};

			return path;
		}
		private void handleParents(menuItem checkedItem, CheckBox checkbox, RoutedEventArgs e) {
			if (checkedItem.parentID > 0) {
				menuItem parent = getMenuItemWithID(currentTreeviewItems, checkedItem.parentID);
				parent.rights.isVisible = true;
				e.Source = checkedItem.parentID;
				checkboxClickHandler(checkbox, e);
			};
		}
		private void handleItemChanges(menuItem item, menuItem originalItem) {
			if (item.Equals(originalItem))
				itemsThatWereAdapted.Remove(item);
			else
				if (itemsThatWereAdapted.IndexOf(item) > -1) { itemsThatWereAdapted.Remove(item); };
				itemsThatWereAdapted.Add(item);
		}