/atom-project-viewer

Project Viewer - An Atom's package

Primary LanguageJavaScriptMIT LicenseMIT

README

Join the chat at https://gitter.im/jccguimaraes/atom-project-viewer All Contributors

atom version apm version apm downloads

Travis CI CI AppVeyor CI CircleCI CI

Table Of Contents

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 ❀️ and πŸ’¦.

So here it is! Enjoy and contribute! 🌍

Please keep in mind that after Atom 1.17.0 some 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 groups which can contain also projects;

    • projects can 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.

  • SelectListView integration;
    • Only shows projects.

  • Traverse and select projects with up and down keys;
  • Toggle collapse / expand of groups with left and right keys;
  • status-bar with the project's' breadcrumb path;
  • Drag & Drop groups and projects;
    • Drag and drop a group or project into a group will add it as a child;
    • Drag and drop a group or project into an project will add it as sibling of the dropped item;
    • Drag and drop a group or project into a clear space in the panel will add it as a root child;
    • Order dragged group / project accordingly with dropped group sorting.
  • Open the local database file for direct editing;
  • Old database schemas conversion tools;
  • Backup services (GitHub's private gist);
  • Editor for groups / projects creation and update;
    • Create, update and remove group or project;
    • Automatic set it's name according to first path base name added;
    • Batch operation on a project creation;
      • Ability to create individual projects when 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 / projects is done through a config option.

  • Context menu for delete, update and create new group or project;
    • Create option is only available in groups or the root.

  • Show the given path in a file manager. (in finder or explorer's alike');
  • Empty groups and / or projects list message;
  • Custom colors for groups and projects;
  • Custom colors for main title, for hovering on a project and for selected project;
  • Option to open a project in 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-view to a project;
  • Add Project Folder and Remove Project Folder will 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-c toggles sidebar autohide;
  • shift-ctrl-alt-v toggles sidebar visibility;
  • shift-ctrl-alt-n open the editor tab;
  • shift-ctrl-alt-m toggle focus from active panel and the sidebar;
  • shift-ctrl-alt-l toggle 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):


JoΓ£o GuimarΓ£es

πŸ’¬ πŸ› πŸ’» 🎨 πŸ“– πŸ‘€

Hans Koch

πŸ’»

Holland Wilson

πŸ’»

Roman Huba

πŸ’»

Loann Neveu

πŸ’» πŸ›

Kristian Barrese

🎨 πŸ›

Nicole

πŸ›

Damon Cook

πŸ›

Zach Hudock

πŸ›

Filip Paço

πŸ›

Stephen Last

πŸ›

Jonathan

πŸ›

β—¬

πŸ›

Erik G.

πŸ’»

netizen

πŸ’»

Markus M. Deuerlein

πŸ› πŸ’»

Adam Brown

πŸ’»

mike gieson

πŸ’» 🎨

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! 🍻 & 🐻 for everyone.