{"id":16086494,"url":"https://github.com/jecisc/l3coo_tp4","last_synced_at":"2025-04-05T14:41:24.417Z","repository":{"id":93121235,"uuid":"43646573","full_name":"jecisc/L3COO_TP4","owner":"jecisc","description":"TP plugins","archived":false,"fork":false,"pushed_at":"2015-10-04T18:09:52.000Z","size":472,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-02-18T11:11:47.379Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jecisc.png","metadata":{"files":{"readme":"readme.txt","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2015-10-04T18:07:39.000Z","updated_at":"2015-10-04T18:09:53.000Z","dependencies_parsed_at":"2023-03-08T12:15:19.407Z","dependency_job_id":null,"html_url":"https://github.com/jecisc/L3COO_TP4","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jecisc%2FL3COO_TP4","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jecisc%2FL3COO_TP4/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jecisc%2FL3COO_TP4/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jecisc%2FL3COO_TP4/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jecisc","download_url":"https://codeload.github.com/jecisc/L3COO_TP4/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247353679,"owners_count":20925324,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-09T13:13:24.894Z","updated_at":"2025-04-05T14:41:24.399Z","avatar_url":"https://github.com/jecisc.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"\t\t\t----------------------------------------------------\n\t\t\t--          TP3 : Plugins\t\t                  --\n\t\t\t--                                                --\n\t\t\t--\t\t\t 09/12/2014 - 19h00\t                  --\n\t\t\t--                                                --\n\t\t\t-- authors : Cyril Ferlicot D \u0026 Thibault Verron\t  --\n\t\t\t----------------------------------------------------\n\nSUMMARY\n\t1) Introduction\n\t2) Run the project \n\t\tinto Eclipse\n\t3) Explanations of the project\n\t\ta) packages\n\t\tb) design patterns\n\t4) Bugs\n\t5) Comments\n\n----------------------------------------------------\n\n1) INTRODUCTION\n\nThis project is the 4th evaluated Project, named \"Plugin\". \nThis project aim to develop an plugin's management and the development of a graphic interface. At the end we must have a text editor which will update himself when we had or delete some packages.\n\n----------------------------------------------------\n\n2) RUN THE PROJECT\n\n\tINTO ECLIPSE\n\n\tFor run the project you need to open it into Eclipse. \n\tWe need to do a clean for rebuild all the .class.\n\tYou can generate the doc with Eclipse.\n\tYou can run the different test by running as JUnit-Case all the files inside the \"test\" package (inside the test folder).\n\tYou have two type of main:\n\t\t- You can run as java application PluginAddedLoggerMain (inside plugin's package) : this will execute a text version into the console of the project.\n\t\t- You can run as java application Main (inside editor's package) : this will launch the graphic interface.\n\t\n----------------------------------------------------\n\n3) EPLANATIONS OF THE PROJECT\n\ta) PACKAGES \n\nInto our project you have some package. I'll explain all the different package here.\n\n\t--\u003e Plugin\n\t\t\tThis package contains all the implementation of the plugin's system. \n\t\t\t\n\t\t\tThe Plugin interface describe the correct implementation of a Plugin. (The different plugins will be on the \"plugins's package\". \n\t\t\t\n\t\t\tWhen we'll find some plugins we'll send a message to some files. Those files will need to have the same method, for that we create a PlugineventListener's interface. The files which implements these interface will be able to be update by adding a plugin or deleting a plugin.\n\t\t\t\n\t\t\tFor allow the plugin's system we need to create a filter for select the different files. Here we'll use PluginFilter. The method accept will take a file and return true only if the file finish by \".class\", implement plugin, is on the right package and contains a constructor without parameter.\n\n\t\t\tWhen we've our filter we can use the PluginFinder. This class will have a timer and at each tic of the timer we'll check a folder for changes. When we find some change we update the listeners.\n\t\t\t\n\t\t\tFor test all this system we have the PluginAddedLogger class which print on the console the action we execute. \n\t\t\t\n\t\t\tWe can check all of that with the PluginAddedLoggerMain.\n\t\t\t\n\t--\u003e Plugins\t\t\n\t\t\tThis package contains different type of plugins like CeaserCode, ToUpperCase or ToLowerCase. \n\t\t\t\n\t\t\tIt contains also some Mock for the test (we had to put the Mock here because of the filter). \n\t\t\t\n\t--\u003e Editor\n\t\t\tThis package contains the implementation of the ExpendableEditor and allow to create an editor with a graphic interface.\n\t\t\tThe graphic interface is compose by a Frame (MyFrame). Inside this frame we've a Panel (MyPanel). \n\t\t\tOn this panel we've 1 TextArea on the centre and 1 JMenuBar.\n\t\t\tThe JMenuBar is composed of 3 Menu (File, Tools and Help). \n\t\t\tFile and Help have some buttons and the action associate.\n\t\t\tThe Tools Menu is generate by a PluginItem which is a listener of the PluginFinder. When we had or delete a Plugin we update the menu.\t\t\t\n\n- - - - - - - - - - - - - - - - - - - - - - - - - - \n\n\tb) DESIGN PATTERNS\n\t\nWe used 1 design pattern for this project: Observer\n\nWe use this pattern for check the plugins's folder and update some observer when we find a new plugin or we see that a plugin is delete. \n\nThe PluginEventListener interface is the interface that define what is an observer. \n\nWe have some class which implements this interface, they're the concreteObservers. We have : PluginAddedLogger and PluginItem on the graphic interface. \n\nThe pluginFinder's class is the Observable. The pluginFinder have a list of observers (on this project they are the listeners). When it found something it update the observers. \n\nThe PluginFinder check a folder which is the concreteObservable.\n----------------------------------------------------\n\n4) BUGS\n\nThere is no bug known.\n\n----------------------------------------------------\n\n5) Comments\n\nNothing.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjecisc%2Fl3coo_tp4","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjecisc%2Fl3coo_tp4","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjecisc%2Fl3coo_tp4/lists"}