{"id":15659440,"url":"https://github.com/jedwards1211/jhrome","last_synced_at":"2025-10-24T17:38:34.526Z","repository":{"id":2500611,"uuid":"3475257","full_name":"jedwards1211/Jhrome","owner":"jedwards1211","description":"Google Chrome-style tabbed panes for Java!","archived":false,"fork":false,"pushed_at":"2013-04-13T16:43:38.000Z","size":1392,"stargazers_count":23,"open_issues_count":1,"forks_count":8,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-03-30T23:04:09.938Z","etag":null,"topics":["chrome-tabs","java","java-swing","look-and-feel","swing","tabbed-view"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"avenwu/support","license":"lgpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jedwards1211.png","metadata":{"files":{"readme":"README","changelog":null,"contributing":null,"funding":null,"license":"COPYING","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2012-02-18T00:55:42.000Z","updated_at":"2025-02-11T04:17:32.000Z","dependencies_parsed_at":"2022-08-20T14:00:45.116Z","dependency_job_id":null,"html_url":"https://github.com/jedwards1211/Jhrome","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/jedwards1211%2FJhrome","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jedwards1211%2FJhrome/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jedwards1211%2FJhrome/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jedwards1211%2FJhrome/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jedwards1211","download_url":"https://codeload.github.com/jedwards1211/Jhrome/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252562318,"owners_count":21768271,"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":["chrome-tabs","java","java-swing","look-and-feel","swing","tabbed-view"],"created_at":"2024-10-03T13:16:54.600Z","updated_at":"2025-10-24T17:38:29.474Z","avatar_url":"https://github.com/jedwards1211.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"     ___________________\r\n____/ Welcome to Jhrome \\__________________________________________________\r\n\r\nThis is Jhrome, a Google Chrome-style tabbed pane library for Java.\r\n\r\n     ______________\r\n____/ License Info \\_______________________________________________________\r\n\r\nJhrome is free software: you can redistribute it and/or modify\r\nit under the terms of the GNU Lesser General Public License as published by\r\nthe Free Software Foundation, either version 3 of the License, or\r\n(at your option) any later version.\r\n\r\nJhrome is distributed in the hope that it will be useful,\r\nbut WITHOUT ANY WARRANTY; without even the implied warranty of\r\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\nGNU Lesser General Public License for more details.\r\n\r\nYou should have received a copy of the GNU Lesser General Public License\r\nalong with Jhrome.  If not, see \u003chttp://www.gnu.org/licenses/\u003e.\r\n\r\n     _________________\r\n____/ Getting Started \\____________________________________________________\r\n\r\nSee org/sexydock/tabs/demos/GettingStarted.java.  Here's a snippet:\r\n\r\n// To turn on Google Chrome-style tabs for all JTabbedPanes in an existing\r\n// application, simply put the following code in your application startup:\r\n\r\nUIManager.getDefaults( ).put( \"TabbedPaneUI\" , JhromeTabbedPaneUI.class.getName( ) );\r\n\r\nfinal JTabbedPane tabbedPane = new JTabbedPane( );\r\n\r\n// Or, just set the tabbed pane's UI directly:\r\n\r\ntabbedPane.setUI( new JhromeTabbedPaneUI( ) );\r\n\r\n// Now the tabbed pane will look like Google Chrome, but besides letting\r\n// you reorder its tabs, it won't let you do anything special beyond\r\n// BasicTabbedPaneUI behavior.\r\n\r\n// To turn on tab close buttons, do this:\r\n\r\ntabbedPane.putClientProperty( JhromeTabbedPaneUI.TAB_CLOSE_BUTTONS_VISIBLE , true );\r\n\r\n// But how to make the window close when the user closes the last tab? Use this:\r\n\r\ntabbedPane.addContainerListener( new DefaultTabsRemovedHandler( ) );\r\n\r\n// To turn on the new tab button, do this:\r\n\r\ntabbedPane.putClientProperty( JhromeTabbedPaneUI.NEW_TAB_BUTTON_VISIBLE , true );\r\n\r\n// Not so fast! The new tab button won't work yet. You have to define how the\r\n// content of new tabs is created. Here's how: (see GettingStarted.java to continue)\r\n\r\n..................\r\n\r\nFor an example of a basic full-featured tabbed application, see\r\norg/sexydock/tabs/demos/NotepadDemo.java.\r\n\t\t\t\t\r\nTo see all examples, run org.sexydock.tabs.demos.SexyTabsDemos.  The program\r\ndisplays source code for the examples and allows you to launch them.\r\n\r\nIf you have other questions, check the Javadocs in org.sexydock.tabs.TabbedPane, \r\nor send me an e-mail.\r\n \n     _______________________________________\r\n____/ Todo / Unsupported functions / Issues \\______________________________\r\n\r\nThe following are known to be issues:\r\n\r\n-There may be memory leaks caused by JhromeTabbedPaneUI that prevent \r\ndisposed\r\nwindows from being garbage collected/allowing the VM to shut down\r\nautomatically when the last window is closed.\r\n-The ghost drag image window doesn't work on some systems (as it\r\ndepends on AWTUtilities window transparency controls).  I need to add a\r\ncheck to automatically disable window transparency when not supported.\r\n\r\nThe following JTabbedPane functions are currently known to be unsupported\r\nby JhromeTabbedPaneUI:\r\n\r\n-JTabbedPane.setForeground/BackgroundAt( int , Color ) (planned)\r\n-JTabbedPane.addTab( 0 , null ) (not planning to support null tab content)\r\n-keyboard navigation except for mnemonics (arrow keys etc. are not yet \r\nsupported)\r\n-left and right tab placement (planned)\r\n\r\nThe following need to be done eventually:\r\n\r\n-A nice TabUI that *doesn't* look like Google Chrome\r\n-Detailed color customization\r\n-Custom tab reordering policies (to allow you to force a specific tab to\r\nstay at one end, etc.\r\n\r\n     ___________\r\n____/ Compiling \\__________________________________________________________\r\n\r\nThe use of window transparency depends on Java SE 6 Update 10.\r\n\r\nOther than that, if you want to compile src/test, you'll need \r\nfest-swing-1.2 and its dependencies.  I haven't Mavenized this process yet.\r\n\r\n     ________\r\n____/ Status \\_____________________________________________________________\r\n\r\nThis project is currently in beta stage.  It works very well, but there are\r\nno automated tests, it needs more documentation, and it needs more polish\r\nin areas like look and feel workflow and allowing access to tab DnD state.\r\n\r\nI'm going ahead and releasing it because I'm quite busy at the moment, and\r\nif I wait until it's polished enough for a first release, well, I'll never\r\nget around to it.  On the other hand, if I do release it now, I'll probably\r\nbe more motivated to polish it up in the future.\r\n\r\nThe root package is org.sexydock.tabs because I may make an entire docking\r\nframework based around this, if I feel like it.  If so, that framework will\r\nbe called SexyDock, and this project will be called SexyTabs, or \r\nSexyDock.Tabs, or whatever. In the package scheme, Jhrome refers \r\nspecifically to the Google Chrome look in the org.sexydock.jhrome package.  \r\nI'm releasing this project as \"Jhrome\" because I think the name will catch \r\non better.\r\n\r\n     _________\r\n____/ Contact \\____________________________________________________________\r\n\r\nJhrome was created by James (\"Andy\") Edwards.\r\ne-mail: andy@jedwards.name","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjedwards1211%2Fjhrome","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjedwards1211%2Fjhrome","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjedwards1211%2Fjhrome/lists"}