private void addDefinitionButton_Click(object sender, System.Windows.RoutedEventArgs e)
        {
            ShortcutDefinition newItem = new ShortcutDefinition();
            newItem.Idx = shortcutDefinitionList.Items.Count;

            editView.EditDefinition(newItem);
            NavigationService.Navigate(editView);
        }
        public void EditDefinition(ShortcutDefinition item)
        {
            this.item = item;
            nameTextBox.Text = item.Name;
            processTextBox.Text = item.ProcessName;

            initializeList(item);
        }
        private void addTabButton_Click(object sender, RoutedEventArgs e)
        {
            ShortcutDefinition item = new ShortcutDefinition();
            item.Name = "New Item";
            item.Idx = tabcontrol.Items.Count;

            shortcutService.SaveOrUpdateShortcutDefinition(item);
            tabcontrol.Items.Add(item);
            tabcontrol.SelectedItem = item;
        }
        private void updateView(ShortcutDefinition shortcutDef)
        {
            shortcutList.Items.Clear();

            if (null != shortcutDef)
            {
                foreach (KeyValuePair<InteractionGesture, ShortcutItem> item in shortcutDef.GestureMap)
                {
                    if (item.Key != InteractionGesture.None && item.Key != InteractionGesture.Wave)
                    {
                        shortcutList.Items.Add(item.Value);
                    }
                }
            }
        }
        public static ShortcutDefDAO ShortcutDefinitionToDao(ShortcutDefinition definition)
        {
            ShortcutDefDAO result = new ShortcutDefDAO();

            result.Id = definition.Id;
            result.Idx = definition.Idx;
            result.Name = definition.Name;
            result.Active = definition.Active;
            result.ProcessName = definition.ProcessName;

            foreach (KeyValuePair<InteractionGesture, ShortcutItem> item in definition.GestureMap)
            {
                result.GestureMap.Add(item.Key.ToString(), ShortcutItemToDao(item.Value));
            }

            return result;
        }
        public static ShortcutDefinition DaoToShortcutDefinition(ShortcutDefDAO dao)
        {
            ShortcutDefinition result = new ShortcutDefinition();

            result.Id = dao.Id;
            result.Idx = dao.Idx;
            result.Name = dao.Name;
            result.Active = dao.Active;
            result.ProcessName = dao.ProcessName;

            foreach (KeyValuePair<String, ShortcutItemDAO> item in dao.GestureMap)
            {
                InteractionGesture gesture;
                if (Enum.TryParse<InteractionGesture>(item.Key, out gesture))
                {
                    result.GestureMap[gesture] = DaoToShortcutItem(item.Value);
                }
            }
            return result;
        }
        private void initializeList(ShortcutDefinition item)
        {
            shortcutList.Items.Clear();

            foreach (KeyValuePair<InteractionGesture, String> mapItem in item.GestureMap)
            {
                GestureShortcutPair pair = new GestureShortcutPair();

                pair.GestureName = mapItem.Key.ToString();
                pair.Gesture = mapItem.Key;
                pair.Shortcut = mapItem.Value;
                shortcutList.Items.Add(pair);
            }
        }
 private void cancelButton_Click(object sender, RoutedEventArgs e)
 {
     item = null;
     this.NavigationService.GoBack();
 }
        public void SaveOrUpdateShortcutDefinition(ShortcutDefinition item)
        {
            if (item.OldName != null && item.OldName != item.Name)
            {
                if (File.Exists(shortCutPath + item.OldName + ".xml"))
                {
                    File.Delete(shortCutPath + item.OldName + ".xml");
                }
            }

            using (StreamWriter file = new StreamWriter(shortCutPath + item.Name + ".xml"))
            {
                file.Write(shortcutDefinitionToXml(item));
                item.OldName = item.Name;

                resetLists();
            }
        }
        public void RemoveShortcutDefinition(ShortcutDefinition item)
        {
            if (File.Exists(shortCutPath + item.Name + ".xml"))
            {
                File.Delete(shortCutPath + item.Name + ".xml");
                shortcutList.Remove(item);
                activeShortcutList.Remove(item);

                resetLists();
            }
        }
        private ShortcutDefinition xmlToShortcutDefinition(String path)
        {
            ShortcutDefinition result = new ShortcutDefinition();
            result.Name = Path.GetFileNameWithoutExtension(path);
            result.OldName = Path.GetFileNameWithoutExtension(path);

            XmlDocument xmlDoc = new XmlDocument();
            xmlDoc.Load(path);

            XmlNodeList processNodes = xmlDoc.GetElementsByTagName(NODE_PROCESS);
            if (processNodes.Count > 0)
            {
                result.ProcessName = processNodes.Item(0).InnerText;
            }

            XmlNodeList activeNodes = xmlDoc.GetElementsByTagName(NODE_ACTIVE);
            if (activeNodes.Count > 0)
            {
                result.Active = Boolean.Parse(activeNodes.Item(0).InnerText);
            }

            XmlNodeList idxNodes = xmlDoc.GetElementsByTagName(NODE_IDX);
            if (idxNodes.Count > 0)
            {
                result.Idx = int.Parse(idxNodes.Item(0).InnerText);
            }

            foreach (InteractionGesture gesture in Enum.GetValues(typeof(InteractionGesture)))
            {
                XmlNodeList nodes = xmlDoc.GetElementsByTagName(gesture.ToString());
                if (nodes.Count > 0)
                {
                    String[] item = nodes.Item(0).InnerText.Split(SEPARATOR);

                    if (item.Length == 2)
                    {
                        result.GestureMap[gesture] = new ShortcutItem(item[0], int.Parse(item[1]));
                    }
                }
                result.GestureMap[gesture].ShortcutType = gesture;
            }

            return result;
        }
        private String shortcutDefinitionToXml(ShortcutDefinition item)
        {
            XmlDocument xmlDoc = new XmlDocument();

            XmlNode root = xmlDoc.CreateElement(ROOT);
            xmlDoc.AppendChild(root);

            addNode(xmlDoc, root, NODE_PROCESS, item.ProcessName);
            addNode(xmlDoc, root, NODE_ACTIVE, item.Active);
            addNode(xmlDoc, root, NODE_IDX, item.Idx);

            foreach (KeyValuePair<InteractionGesture, ShortcutItem> mapItem in item.GestureMap)
            {
                addNode(xmlDoc, root, mapItem.Key.ToString(), mapItem.Value.ShortcutString + SEPARATOR + mapItem.Value.Strength);
            }

            return xmlDoc.InnerXml;
        }
 public void SaveOrUpdateShortcutDefinition(ShortcutDefinition item)
 {
     ShortcutDefDAO databaseItem = DatabaseConverter.ShortcutDefinitionToDao(item);
     shortCutService.SaveOrUpdateEntity(databaseItem);
 }
 public void RemoveShortcutDefinition(ShortcutDefinition item)
 {
     shortCutService.DeleteEntityById(item.Id);
 }