{"action":"created","issue":{"url":"https://api.github.com/repos/gbouget/Paint/issues/1","repository_url":"https://api.github.com/repos/gbouget/Paint","labels_url":"https://api.github.com/repos/gbouget/Paint/issues/1/labels{/name}","comments_url":"https://api.github.com/repos/gbouget/Paint/issues/1/comments","events_url":"https://api.github.com/repos/gbouget/Paint/issues/1/events","html_url":"https://github.com/gbouget/Paint/issues/1","id":188976508,"number":1,"title":"Création d'un historique pour annuler/restaurer des actions précédentes","user":{"login":"gbouget","id":12697930,"avatar_url":"https://avatars.githubusercontent.com/u/12697930?v=3","gravatar_id":"","url":"https://api.github.com/users/gbouget","html_url":"https://github.com/gbouget","followers_url":"https://api.github.com/users/gbouget/followers","following_url":"https://api.github.com/users/gbouget/following{/other_user}","gists_url":"https://api.github.com/users/gbouget/gists{/gist_id}","starred_url":"https://api.github.com/users/gbouget/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gbouget/subscriptions","organizations_url":"https://api.github.com/users/gbouget/orgs","repos_url":"https://api.github.com/users/gbouget/repos","events_url":"https://api.github.com/users/gbouget/events{/privacy}","received_events_url":"https://api.github.com/users/gbouget/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":1,"created_at":"2016-11-13T15:37:26Z","updated_at":"2016-11-13T16:18:23Z","closed_at":null,"body":"L'idée est de centraliser les commandes au sein d'une classe CommandFactory. Une HashMap<String, Command> recense les commandes possibles. Par exemple, la commande de création d'une forme peut être accessible depuis la clé \"1\".\r\nUne ArrayList contient la liste des commandes créées.\r\nChaque commande nécessite des paramètres spécifiques, un tableau d'objets permet de les réunir. L'analyse de ces paramètres est assurée par la commande. Toute commande est constituée de deux comportements opposés : _undo_ et _redo_.\r\n\r\nExemple avec la commande de création des formes : \r\n1. La commande est appelée depuis la CommandFactory avec les paramètres contenant une forme ou ses propriétés permettant de la créer. L'analyseur vérifie la bonne action à effectuer.\r\n2. Les actions peuvent être : \r\n-> la création d'une forme auquel cas les propriétés de la forme sont envoyées à une ShapeFactory ;\r\n-> la suppression la forme auquel cas la commande se contente de la détacher du Drawing. Un soin particulier doit être apporté sur les répercussions dans les groupes de formes.\r\n3. Une variable de classe contient une référence vers l'objet Shape créé.\r\n4. Une méthode (_exécuter()_ ou _apply()_) permet d'attacher la forme ou de la détacher du Drawing en fonction de l'état antérieur."},"comment":{"url":"https://api.github.com/repos/gbouget/Paint/issues/comments/260195624","html_url":"https://github.com/gbouget/Paint/issues/1#issuecomment-260195624","issue_url":"https://api.github.com/repos/gbouget/Paint/issues/1","id":260195624,"user":{"login":"gbouget","id":12697930,"avatar_url":"https://avatars.githubusercontent.com/u/12697930?v=3","gravatar_id":"","url":"https://api.github.com/users/gbouget","html_url":"https://github.com/gbouget","followers_url":"https://api.github.com/users/gbouget/followers","following_url":"https://api.github.com/users/gbouget/following{/other_user}","gists_url":"https://api.github.com/users/gbouget/gists{/gist_id}","starred_url":"https://api.github.com/users/gbouget/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gbouget/subscriptions","organizations_url":"https://api.github.com/users/gbouget/orgs","repos_url":"https://api.github.com/users/gbouget/repos","events_url":"https://api.github.com/users/gbouget/events{/privacy}","received_events_url":"https://api.github.com/users/gbouget/received_events","type":"User","site_admin":false},"created_at":"2016-11-13T16:18:23Z","updated_at":"2016-11-13T16:18:23Z","body":"## Fonctionnement de la liste des commandes.\r\nLes commandes sont stockés dans un tableau. Les actions UNDO et REDO permettent respectivement d'annuler ou de restaurer une commande. Dans les deux cas, l'action nécessite d'appeler la méthode exécuter() de la commande qui prend en charge le bon comportement. Toutefois, l'annulation décrémente la position courante dans la liste des commandes alors que REDO l'incrémente.\r\n\r\nExemple de scénario (C1 signifie création de la commande 1 et le gras la position courante) : \r\n- C1\t**1**\r\n- C2\t1 **2** \t \r\n- C3\t1 2 **3**\r\n- UNDO\t1 **2** 3\r\n- UNDO\t**1** 2 3\r\n- REDO\t1 **2** 3\r\n- C4\t1 2 **4**\r\n- C5\t1 2 4 **5**\r\n\r\nLa position courante est sur la commande 5. Comme c'est la dernière commande du tableau, l'action UNDO est la seule possible. Son action rappellerait la méthode exécuter de la commande 5 et la position courante pointerait vers la commande 4."}}
{"actor":{"display_login":"gbouget"}}