Introduction

The sunshade suite of eclipse plugins is my attempt to make the eclipse
IDE work the way I want it to. YMMV =)

If you want to read more about other projects I'm working on, feel free to visit my blog

Installation

Plug the update site http://sunshade.sourceforge.net/update into eclipse's "Help->Software Updates->Find and Install..."

Grab the full release from the Project Page and unzip it into your eclipse install directory or extension location

Filedrag

Drag and Drop files from the OS file explorer or desktop into eclipse.
If the file already exists in the workspace, then that file is opened,
otherwise the equivalent of "File->Open External File..." is
performed.

Under windows, this only works if one drops the file into the
title bar of the eclipse window.
Under linux, this only works if one drops the file into the editor area
of the window
I haven't figure out how to get this to work under OS X yet, suggestions appreciated.

One can also open files inside eclipse from the command line by using one
of the eclipseclient-* scripts included with this plugin. This works for
external files as well as those that live in the workspace. The
client/server code for this was adapted from the
fileopen plugin by Ed Burnette,
so it uses the same protocol for requesting a file open. If you request to
open a file that does not exist, it will be created for you.

You can also pipe the results of a command into the eclipseclient-* scripts
and an untitled eclipse buffer will be created to display the data from that pipe.

Errorlink

This plugin allows you to match against lines from console output, and
hyperlink them to a file and line number (think clicking on compile
error messages to navigate to the source file they came from).

This allows you to have hyperlinked error messages for text strings
that eclipse does not know how to handle.

Currently, the only consoles for which this will be active are the
ant integration, and any external tools with executables named ant.*,
make.*, build.*, cmd.*, bash.* or sh.*. If you want to be able to create
links from the output of some other executable, either create a wrapper
script with such a name, or add that executable's name to the list of known
executables in the plugin.xml where this plugin is installed

BSF

Associate scripts with keybindings and launch variables. Configure the
bsf engine. The default configuration uses the included javascript
interpreter as the default

If you hit the Edit button, you are presented with a simple dialog
for editing the included function library file. Shown is a function
written in javascript that uses the eclipse API to produce a dialog that
prompts the user for a string.

Configure the action bindings. Keybindings for Bsf can be
confgured in the Workbench->Keys preference page, under the Sunshade
category

Use the action bindings. Select an action from the Bsf menu, or
hit the associated key binding for that action.

You can also use bsf scriptlets anywhere you can use a launch
variable. For example, here is a dialog configuring a simple external
tool that uses bsf to prompt the user for a value, and echos that value
to the console using the bash executable (on linux).

The dialog produced when the external tool is run
(Run->External Tools)

The external tool console which shows the value echoed by bash

Builder

This plugin adds some builders which makes it easier to integrate eclipse with an existing build system.

I like to setup eclipse to incremental build, but having it call ant for auto builds is just too slow,
so I instead make it call the executables directly. For this to work, I needed eclipse to be able to only
run the executables for given file patterns in the change list. To use this builder, Right click on a
project -> Properties -> Builders -> New... -> Pattern Builder. This works hand in hand with the
${build_files} build variable also defined by this plugin. This variable can take an argument which will
replace each matched file with the given string, and backreferences (\0 is the entire match) to the original
builder pattern are allowed within this argument. For Example: