A window to which other views can be "docked" to and separated into their own windows
Objective-C CSS Ruby
Switch branches/tags
Nothing to show
Latest commit 4b8c5f5 Oct 14, 2014 @indragiek Add prefixes to dividerColor and dividerThickness
To avoid squashing the privately defined properties.
Permalink
Failed to load latest commit information.
Documentation
Example
External
INDockableWindow.xcodeproj ++INAppStoreWindow Jan 12, 2014
INDockableWindow
.gitignore Better appledoc comments Jan 20, 2013
.gitmodules
INDockableWindow.podspec Fix podspec Jan 12, 2014
LICENSE.md Changed license to MIT Jan 21, 2013
README.md

README.md

INDockableWindow

Dockable window controller for AppKit

Overview

INDockableWindow is a collection of classes that allows you to create a column based application UI, where each column can be "docked" to a primary window and also separated into its own window by dragging on a detach handle. This type of UI can be seen in Tweetbot for Mac, for example.

NOTE: This control, while feature complete, is still in early development, and is to be considered beta quality code at best.

Features

  • Simple API. There's really only 2 or 3 classes you'll need to interact with.
  • Fully customizable. Everything, including size constraints, split view appearance, and the windows themselves are customizable.
  • Built on INAppStoreWindow. Every window is a subclass of INAppStoreWindow, so customizing the title bar and traffic lights is trivial.
  • User draggable split dividers. When the views are docked on the main window, the size of each view is resizable via user draggable split dividers. The views maintain this width when they're popped into separate windows.
  • Smooth transition. The smoothness of the transition between a docked view and an undocked window was a major consideration for this project, and the transition between the two is as fluid as possible.
  • Drag auxiliary windows near the primary window to attach and detach. They work like magnets!

Adding it to your project

  • Clone this repository
  • Run git submodule update --init --recursive to download INAppStoreWindow
  • Add the INAppStoreWindow and INDockableWindow source code files to your project
ARC

INDockableWindow requires ARC. If your project doesn't use ARC, add the -fobjc-arc compiler flag to all of the INDockableWindow source files.

Auto Layout

INDockableWindow does not support auto layout. The behaviour is undefined when using auto layout.

Example

The project includes a simple example application that demonstrates docking and undocking with a 2 column layout:

Docked Undocked

I hope to write a more advanced example project at some point.

Documentation

Full documentation is inside the Documentation folder. The headers are also fully documented.

Getting Started

  • Create a new instance of INDockableWindowController
  • Assign the primary view controller (the "core view" that will always be displayed) to primaryViewController.
  • Add additional view controllers using -addViewController:attached:

Contribution

Contributions via pull requests are always very welcome. I would greatly appreciate any fixes to bugs that you encounter, or implementation of additional features.

Contact

License

INDockableWindow is licensed under MIT. See LICENSE.md for more information.