PackageDescription: RBBlueMagic

RB Blue Magic

Last published: May 23, 2014 by 'eperez'

Defines 11 Classes
Extends 22 Classes

[Ported to Visualworks 7.10]

This package provides quick RB link-like navigation facilities accessed thorough the middle mouse button ("window" button, blue button, whatever...).
It started as a navigation complement in order to give the refactoring browser an Tabbed Web Browser feel, but since it has grown into a full RB enhancer, including quick defining or correcting methods and classes and doing quick refatorings.
Quick config or functionality notes? Evaluate: BlueMagicBasicConfig open.

- In the Source tab, the middle click acts upon the source code.
- In the browser navigator the middle click acts upon pointed node (class/method/protocol/packages).
- You can use ctrl, shift and alt keys to modify the behavior of the middle click.
- At the moment there are about 30 possible actions to use between the source code and the navigator:
- Method/class quick browsing.
- Rename, extract and inline refactorings.
- Method/class inspection using the correct inpector/editor depending on the resource type.
- New classes/methods/v.i. definition and spell corrector.
- You can see them all and change the modifiers assigned to them in the config app.
- There are 8 possible combinations (ctrl|alt|shift) for each context of selection (class,method,protocol, etc) so you can configure lots of actions for the browser.
- If no action is defined for the combination, the middle button will work as usual (window menu).
- New behavior possibilities for middle clicking in the code (point and click/dragging selection).
- If RBrowserHistory is loaded, alt+wheel goes back and forth the history.
- Middle Click on a tab closes it.

- Some overrides, for compatibility with other addons check them.
- RBCodeHighlighting and RBTabbedToolset are prereqs to exploit the source code and tab functionality.
- No longer RBTabbedToolset-ext, its incompatibile with 7.10.

- Different policies to select code with the middle-click. Some examples:
- Middle button can be static and ignore the mouse pointer, you have to left-click to select and then middle-click to work the magic.
- Middle button can be relative to the mouse pointer, but don't move the cursor from its actual position.
- Middle button can select and deselect with point and click, just like the left button.
- Middle button can select the code in which it will act dragging the mouse over the selection.
- Press to start selecting.
- Release to act upon selection.
- This mode enables extract refactorings with just one click!

-These are some examples of the most used actions with the default config:
- Clicking a class or a method opens class/method in new inactive tab.
- [Clicking + CTRL + ALT] Navigates to class/method within the same browser.
- A selection list will be shown if selector has more than one implementor.
- If a chunk of code is selected it runs the Extract to method refactory.
- Rename almost anything with [Alt + Middle-Click].
- Check the config app for the rest.

- To configure the controller go to the the settings page under System>>Settings>>Tools>>Browser>>Blue Magic .
- There are two versions of the config application.
- I recommend you to start with the basic one:
- It's easier, divides the actions into categories so you wont have to define 30 different combinations to use them.
- It also helps to keep consistence for the effects of the modifier keys (same key has the same effect in different contexts).
- When you get the hang of the Blue Magic functions, you can move on to the advanced action options if it suits you better:
- This one allows you to define single actions for each context/key combinations.
- A bit more tricky but way more powerful than the basic one.

- Lautaro Fernandez author of the Blue Magic icon and two other great plugins (NewVasillisIcons and RBTabbedToolsets-Ext).
- Sebastian Perez Escribano for beta test for the plugin for a long time.

RBrowserHistory and RBTabbedToolset don't work well together, both packages override the same method so they exclude each other.
To make them work in the same image you have to load them and then redefine the following method like this:

RefactoringBrowser>>postOpenWith: aBuilder

super postOpenWith: aBuilder.
self addFind.
self addHistory.
self addToolsetsTabs.
self updateToolbar.
(RBHistoryCompatibility currentToolFrom: self) updateDisplay.
self enableHistoryButtons

Emiliano PĂ©rez