atom-project-viewerProject Viewer - An Atom's package
README
Table Of Contents
- Introduction
 - Installation
 - Features
 - Shortcuts
 - Settings
 - Local File manipulation
 - Contributors
 - Contacts
 - A Special Thank You!
 
Introduction
This is a package built for and by the Atom community. For contribution read below.
This package has grown so much over the last year that I felt the need to make it more stable and community friendly. And this required a more deep refactor with lots of new ideas and improvements, also huge amount of 
So here it is! Enjoy and contribute! 
Please keep in mind that after Atom
1.17.0some functionalities changed, and implementations of this package are still being tested for stability.
Installation
In a terminal / command line write the following line apm install project-viewer.
Or just find the package by accessing the menu Atom → Preferences... → Install and search for project-viewer.
Features
- Group nesting; 
  
-  
    
Infinite nesting of
groupswhich can contain alsoprojects; -  
    
projectscan be at any level. 
 -  
    
 - Sidebar Left / Right (first or last) position;
 - Auto hide sidebar with hover behavior;
 - Resizable panel; 
  
-  
    
Double click to default width;
 
 -  
    
 - Hide header for more space; 
  
-  
    
This is available through a config option, default is not autohide.
 
 -  
    
 - Focus toggle; 
  
-  
    
Toggling focus will switch between current active element and the panel.
 
 -  
    
 -  
SelectListViewintegration;-  
    
Only shows
projects. 
 -  
    
 - Traverse and select 
projectswithupanddownkeys; - Toggle collapse / expand of 
groupswithleftandrightkeys; -  
status-barwith theproject's' breadcrumb path; - Drag & Drop 
groupsandprojects;- Drag and drop a 
grouporprojectinto agroupwill add it as a child; - Drag and drop a 
grouporprojectinto anprojectwill add it as sibling of the dropped item; - Drag and drop a 
grouporprojectinto a clear space in the panel will add it as a root child; - Order dragged 
group/projectaccordingly with droppedgroupsorting. 
 - Drag and drop a 
 - Open the local database file for direct editing;
 - Old database schemas conversion tools;
 - Backup services (GitHub's private gist);
 - Editor for 
groups/projectscreation and update;- Create, update and remove 
grouporproject; - Automatic set it's name according to first path base name added;
 - Batch operation on a 
projectcreation;-  
      
Ability to create individual
projectswhen more than one path is provided; -  
      
Each project will automatically have it's name set to it's path base name.
 
 -  
      
 - Filtering icons;
 - List of icons in editor as only icons or icon and description; 
    
-  
      
This is available through a config option, default is icon and description.
 
 -  
      
 - Sort children 
groups/projects.-  
      
Sorting root
groups/projectsis done through a config option. 
 -  
      
 
 - Create, update and remove 
 - Context menu for delete, update and create new 
grouporproject;-  
    
Create option is only available in
groupsor theroot. 
 -  
    
 - Show the given path in a file manager. (in 
finderorexplorer's alike'); - Empty 
groupsand / orprojectslist message; - Custom colors for 
groupsandprojects; - Custom colors for main title, for hovering on a 
projectand for selectedproject; - Option to open a 
projectin a new window or vice versa;-  
    
This is available through a config option which will switch between what is the primary option, defaults to open in same window;
 -  
    
Context menu switching also available.
 
 -  
    
 - Elevate current opened folders in 
tree-viewto aproject; -  
Add Project FolderandRemove Project Folderwill update current selected project as well; - Keep context when switching from 
projects.-  
    
This is available through a config option, default is switch contexts.
 
 -  
    
 
Shortcuts
-  
shift-ctrl-alt-ctoggles sidebar autohide; -  
shift-ctrl-alt-vtoggles sidebar visibility; -  
shift-ctrl-alt-nopen the editor tab; -  
shift-ctrl-alt-mtoggle focus from active panel and the sidebar; -  
shift-ctrl-alt-ltoggle the select list modal; 
Settings
| Settings | Type | Description | Default | 
|---|---|---|---|
visibilityOption |  
   String |  
   Define what would be the default action for project-viewer visibility on startup. | Display on startup |  
  
visibilityActive |  
   Boolean |  
   Relative to the interaction option selected above. | true |  
  
panelPosition |  
   String |  
   Position the panel to the left or right of the main pane. | Right |  
  
autoHide |  
   Boolean |  
   Panel has auto hide with hover behavior. | false |  
  
hideHeader |  
   Boolean |  
   You can have more space for the list by hiding the header. | false |  
  
keepContext |  
   Boolean |  
   When switching from items, if set to true, will keep current context. Also will not save contexts between switching. |  
   false |  
  
openNewWindow |  
   Boolean |  
   Always open items in a new window. | false |  
  
statusBar |  
   Boolean |  
   Will show the breadcrumb to the current opened project in the status-bar. |  
   false |  
  
customWidth |  
   Integer |  
   Define a custom width for the panel. double clicking on the resizer will reset the width  |  
   200 | 
customHotZone |  
   Integer |  
   Cursor movement within this width will make a hidden panel appear | 20 | 
rootSortBy |  
   Array |  
   Sets the root sort by. | position |  
  
onlyIcons |  
   Boolean |  
   Will show only the icons in the icon's list | true |  
  
customPalette |  
   String |  
   Custom palette to use on editor | #F1E4E8, #F7B05B, #595959, #CD5334, #EDB88B, #23282E, #263655, #F75468, #FF808F, #FFDB80, #292E1E, #248232, #2BA84A, #D8DAD3, #FCFFFC, #8EA604, #F5BB00, #EC9F05, #FF5722, #BF3100 |  
  
customSelectedColor |  
   String |  
   Set custom selected project color | '' |  
  
customHoverColor |  
   String |  
   Set custom hover project color | '' |  
  
customTitleColor |  
   String |  
   Set custom main title color | '' |  
  
packagesReload |  
   String |  
   List of packages to reload | status-bar, linter, linter-ui-default |  
  
disclaimer |  
   Object |  
   Show release notes on startup | true |  
  
Keep in mind that this package uses Atom's Storage to save all groups and projects. It is wise to save it to the cloud (ex: you can import and export a private Gist through this package!).
Local File manipulation
Change it at your own risk! 
Group Schema
| Parameter | Type | Description | Default | Required | 
|---|---|---|---|---|
type |  
   String |  
   The type of the model | group |  
   true |  
  
name |  
   String |  
   The name of the project | In theory... any string / emoji | true |  
  
sortBy |  
   String |  
   Sorting of the nested groups and projects  |  
   Possible options are position, reserve-position, alphabetically and reverse-alphabetically  |  
   true |  
  
icon |  
   String |  
   Custom icon octicons or devicons  |  
   '' |  
   false |  
  
color |  
   String |  
   Custom color | '' |  
   false |  
  
expanded |  
   Boolean |  
    group is collapsed or expanded |  
   false |  
   true |  
  
list |  
   Array |  
   An array of models (group or project  |  
   [] |  
   true |  
  
Project Schema
| Parameter | Type | Description | Default | Required | 
|---|---|---|---|---|
type |  
   String |  
   The type of the model | project |  
   true |  
  
name |  
   String |  
   The name of the project | In theory... any strj g / emoji | true |  
  
icon |  
   String |  
   Custom icon octicons or devicons  |  
   '' |  
   false |  
  
color |  
   String |  
   Custom color | '' |  
   false |  
  
devMode |  
   Boolean |  
   Not working for now | false |  
   false |  
  
config |  
   Object |  
   Not working for now | {} |  
   false |  
  
paths |  
   Array |  
   An array of the root files beloging to the project | [] |  
   true |  
  
Contributors
Thanks goes to these wonderful people (emoji key):
This project follows the all-contributors specification. Contributions of any kind welcome!
If you feel you were left out, just shout!
Contacts
You can follow me on Twitter
A Special Thank You!
I thank you all for giving such great feedback! 
