{"id":30048574,"url":"https://github.com/tharindu714/remote-changing-application-bridge","last_synced_at":"2025-08-07T10:38:48.650Z","repository":{"id":306929251,"uuid":"1027713398","full_name":"Tharindu714/Remote-Changing-Application-Bridge","owner":"Tharindu714","description":"A sleek Java‑Swing application illustrating the Bridge Pattern in action—switch seamlessly between TV and Media Player remotes, full‑screen GIF animations included!","archived":false,"fork":false,"pushed_at":"2025-07-28T12:42:29.000Z","size":2026,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-07-28T14:39:49.790Z","etag":null,"topics":["bridge-pattern","design-patterns","gif-animation","object-oriented-programming","remote-control","simulation"],"latest_commit_sha":null,"homepage":"","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/Tharindu714.png","metadata":{"files":{"readme":"README.md","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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-07-28T12:24:20.000Z","updated_at":"2025-07-28T12:44:28.000Z","dependencies_parsed_at":"2025-07-28T14:39:51.521Z","dependency_job_id":"925c32dc-3e92-4366-a398-195b34f460ca","html_url":"https://github.com/Tharindu714/Remote-Changing-Application-Bridge","commit_stats":null,"previous_names":["tharindu714/remote-changing-application-bridge"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/Tharindu714/Remote-Changing-Application-Bridge","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Tharindu714%2FRemote-Changing-Application-Bridge","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Tharindu714%2FRemote-Changing-Application-Bridge/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Tharindu714%2FRemote-Changing-Application-Bridge/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Tharindu714%2FRemote-Changing-Application-Bridge/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Tharindu714","download_url":"https://codeload.github.com/Tharindu714/Remote-Changing-Application-Bridge/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Tharindu714%2FRemote-Changing-Application-Bridge/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":269244296,"owners_count":24384537,"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","status":"online","status_checked_at":"2025-08-07T02:00:09.698Z","response_time":73,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["bridge-pattern","design-patterns","gif-animation","object-oriented-programming","remote-control","simulation"],"created_at":"2025-08-07T10:38:44.978Z","updated_at":"2025-08-07T10:38:48.573Z","avatar_url":"https://github.com/Tharindu714.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🎮 Remote Control Simulator\n\n\u003e *“One UI to control them all.”*\n\u003e A sleek Java‑Swing application illustrating the Bridge Pattern in action—switch seamlessly between TV and Media Player remotes, full‑screen GIF animations included!\n\n---\n\n## 🚀 Project Structure\n\n```\nproject-root/\n├─ src/\n│  ├─ main/\n│  │   ├─ java/\n│  │   │    ├ BasicRemoteGUI.java\n│  │   │    └ AdvanceRemoteGUI.java\n│  │   └─ resources/\n│  │        ├ tv.gif\n│  │        ├ player.gif\n│  │        └ off.png\n└─ README.md\n```\n\n---\n\n## ✨ Live Demo\n\n1. **Choose** between **TV Remote** and **Player Remote**\n2. **Full‑screen** animated GIF shows “TV ON” (blue video) or “Player ON” (rock‑video loop)\n3. **Power** button toggles ON/OFF—OFF shows your custom `off.png` screen\n4. **Menu → Switch Remotes** lets you swap devices anytime\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"src/main/resources/tv.gif\" alt=\"TV GIF\" width=\"30%\"/\u003e\n  \u003cimg src=\"src/main/resources/player.gif\" alt=\"Player GIF\" width=\"30%\"/\u003e\n\u003c/p\u003e\n\n---\n\n## 🏗️ Features\n\n* **Bridge Pattern**: Decouples Remotes (abstractions) from Devices (implementations)\n* **Dynamic UI**: Nimbus Look \u0026 Feel + full‑screen support\n* **Rich Media**: Animated GIFs for “ON” states, custom image for “OFF”\n* **Hot‑swap**: Change your remote at any time via the menu\n\n---\n\n## 🧩 Bridge Design Pattern Explained\n\nThe Bridge Pattern separates an abstraction from its implementation, so the two can vary independently.\n\n### Components\n\n1. **Abstraction**\n   `abstract class RemoteNew`\n   Knows only about the `DeviceNew` interface, not concrete devices\n\n2. **Refined Abstraction**\n   `class BasicRemoteNew extends RemoteNew`\n   Implements high–level controls (`switchPower()`)\n\n3. **Implementor Interface**\n   `interface DeviceNew`\n   Declares `on()`, `off()`, `isEnabled()`\n\n4. **Concrete Implementors**\n   `class TvNew implements DeviceNew`\n   `class PlayerNew implements DeviceNew`\n   Handle device–specific behavior\n\n### UML Class Diagram (PlantUML)\n\n\u003cp align=\"center\"\u003e\n\u003cimg width=\"511\" height=\"474\" alt=\"image\" src=\"https://github.com/user-attachments/assets/76ebf649-e313-43d7-aed3-d2c0250d131a\" /\u003e\n\u003c/p\u003e\n\n## 🛠️ Getting Started\n\n1. **Clone** this repo\n2. Open in **IntelliJ IDEA** (or any Java IDE)\n3. Ensure **Java 11+** is on your path\n4. Run either:\n\n   ```bash\n   mvn compile exec:java -Dexec.mainClass=\"BasicRemoteGUI\"\n   ```\n\nor:\n\n```bash\nmvn compile exec:java -Dexec.mainClass=\"AdvanceRemoteGUI\"\n```\n\n5. Enjoy your super‑powered remote!\n\n---\n\n## 📈 Roadmap\n\n* 🎨 Add custom skins for remotes\n* 🎮 Expand to **Volume**, **Channel**, and **Playlist** controls\n* 🚀 Package as a native installer with bundled JRE\n\n---\n\n## 📜 License\n\nMIT © \\ Tharindu Chanaka\nFeel free to remix and extend!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftharindu714%2Fremote-changing-application-bridge","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftharindu714%2Fremote-changing-application-bridge","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftharindu714%2Fremote-changing-application-bridge/lists"}