[ObjectHandles is a library to easily manage user movable and resizeable onscreen objects]
It’s been a while, as I’ve been overly busy lately, but there is now a new ObjectHandles release.
This release fixed one bug with non-visible components, and added a new set of mouse cursors as the default. Since my last build, there’s a been a bunch of submissions for new mouse cursors. I thank you all! In the near future I’ll create a separate swc with them all embedded so developers can pick and choose. But for now I’ve embedded one of those new options into the library as the default. You can download the new release at
http://code.google.com/p/flex-object-handles/downloads/list
Now, you can also set your own mouse cursors, outside of the library. To do this, implement the OHMouseCursors interface, instantiate your class, and assign it to the ObjectHandles.mouseCursors property. A sample cursor class follows:
package your.package
{
public class YourMouseCursorClass implements OHMouseCursors
{
[Embed("../../../assets
/cursors/set1/resize- v.png")]
protected var sizeNS:Class;
[Embed("../../../assets/cursors/set2/move.png")]
protected var sizeAll:Class;
[Embed("../../../assets/cursors/set1/resize- l.png")]
protected var sizeNESW:Class;
[Embed("../../../assets/cursors/set1/resize-r.png")]
protected var sizeNWSE:Class;
[Embed("../../../assets/cursors/set1/resize- h.png")]
protected var sizeWE:Class;
protected var map:Object = new Object();
public function getCursor(name:String) : MouseCursorDetails
{
return map[name];
}
public function YourMouseCursorClass () : void
{
// Numbers are offsets to the hot-spot of the cursor (the point of the arrow, the middle of the resize bar, etc.)
map["SizeNS"] = new MouseCursorDetails(sizeNS, -5, -8 );
map["SizeAll"] = new MouseCursorDetails(sizeAll, -11, -13 );
map["SizeNWSE"] = new MouseCursorDetails(sizeNESW, -5, -6 );
map["SizeNESW"] = new MouseCursorDetails(sizeNWSE, -5, -6 );
map["SizeWE"] = new MouseCursorDetails(sizeWE, -9, -6 );
}
}
}
Then in your mxml…
<oh:objecthandles mousecursors=”{new YourMouseCursorClass()}” allowrotate=”false” x=”10″ y=”90″ width=”307″ height=”30″ minheight=”30″ minwidth=”100″>
If you have many ObjectHandles objects around, you can reuse the same cursor class to reduce memory usage.
The OH website, including a sample, is still at
http://www.rogue-development.com/objectHandles.xml
Enjoy!
I ran into a problem that I’m still not sure what was happening today. I had something like this:
public class MyHeader extends Canvas
{
…
}
…
myDataGridColumn.headerRenderer = new ClassFactory( MyHeader );
It worked, but upon mouse over or mouse move it would flicker like crazy. Extending Label or Button works no problem. I tried implementing various interfaces like IDataRenderer, IDropInListItemRenderer, and IListItemRenderer but still had the same results.
A quick fix I found was to intercept and cancel those mouse events in my header class.
addEventListener(MouseEvent.MOUSE_OVER, onMouseOver, true );
addEventListener(MouseEvent.MOUSE_MOVE, onMouseOver, true );
…
protected function onMouseOver(event:MouseEvent) : void
{
event.preventDefault();
}
Now everything seems to work fine. But I’m still at a loss on why this happened in the first place and I worry my hack of a fix is the wrong way to do it. Has anyone successfully gotten a custom header renderer based on a container working?
We’ve got 5 developers all working on the same Flex based project. What’s the best way to share the project so everyone can work on it together? (I don’t mean a version control system, I mean the actual Flex project).
We tried checking into version control and all using the same .project, .actionscriptProperties, and .flexProperties files, but that was a disaster. Flex likes to open them for read/write and make little modifications at seemingly random times. Then merging changes between developers sucks.
What we do now is each developer creates their own Flex project outside of version control.
Then we link in the src folder of our application into our project. (In eclipse you can make a link to another folder by selecting “new folder” then clicking the advanced checkbox) … see the picture:

Next, we set that src folder as the default source folder of the project.

Then we delete the .mxml that flex builder auto-created for us when we made the project since we don’t need it anymore.
Then we set-as-default application our main mxml file.
We use a few external libraries, so we also add a swc folder under our project’s build directory.
It seems to work pretty well. We even have some people using FB2 and some on FB3 using this technique. How do other people handle this?
For those of you following the AgileAgenda progress, two new screenshots of the web-view:
http://www.agileagenda.com/screenshots/screenshot8.JPG
http://www.agileagenda.com/screenshots/screenshot9.JPG
So I tried my scheduling software on my mac today. It took about 18 seconds to calculate my schedule on my duo-core 2ghz MacBook Pro.
My home WinXP 2.1ghz DuoCore2 based machine takes 2 seconds. A 9x improvement.
But the shocker… my work WinXP laptop with a 1.7ghz Pentium M, a MUCH slower machine, takes about 4 seconds.
Why is the Mac so much slower on compute intensive actionscript?
I’ve heard of it being slower on graphical animation type things, but not something like this.
I think I have all the functionality working that I care about for a closed beta. I’ll take a few more days to poke at it to make sure it’s all working and then release something.
For now, here’s a WINK screencast of some of the functionality:
http://www.agileagenda.com/
-Marc
While AgileAgenda will be a desktop application, it will have tight integration with the AgileAgenda.com website. From within the application you’ll be able to publish a version of your schedule to share with colleagues.

Once you do that, you can share your personal url with people who you wish to view the schedule.
http://www.agileagenda.com/view.php?schedule=1_6d9624696a3447404913dc0dd964e64a
Right now, the view is very bare-bones, but it’ll turn into a full featured viewer in the near future.
This feature gave me a chance to try out AMFPHP, something I’ve long since wanted to give a spin. It turned out to be a lot easier to use than I could have imagined.
By making the web view it forced me to make a Flex/browser compatible version of the software. That gave me a chance to try out the new FB3 profiler, and using that I was able to get the compute time of my (rather large) sample schedule from 15 seconds down to 2 seconds.
Yesterday I asked for name suggestions for my scheduling software, and was disappointed to only get a single response.
Luckily, that single response rocked.
http://www.agileagenda.com/
Thanks Steve. (If you want your free copy when I get around to release time, leave a comment with some contact info in it.)

My email spam folder hit an all time high today. Thats 1 month worth of spam, so I guess I get about 100 spam a day
I am sooo glad Google does a good job of filtering.
Ugh.. Update… couple days later…

I need a name for my current project. It is a project planning & scheduling tool (Much like MS Project) aimed at software developers.
I’m looking for a name that embodies one or more of the following:
- Project scheduling
- Treating the project plan as ever changing instead of something you create once at the beginning.
- Using the tool every day for short amounts of time to keep the schedule up to date. (Continuous planning)
- Planning software based projects.
- Intelligent scheduling algorithm
Bonus points go to:
- Names that I can get the .com domain name
- Names not used by other similar projects
- Catchy names
- Professional sounding names
If you care to read about it more, some thoughts are in the “Schedule” label of this blog.
http://www.rogue-development.com/blog/labels/Schedule.html
Just post in the comments. If I choose your name, I’ll give you lifetime free updates to the eventual product 
Past few days I’ve been blogging about my new project-scheduling software I’ve been working on. Yesterday I implemented the “welcome” screen when you open a project. Eventually, I’ll extend this screen so it captures all of the quick tasks one need to do on a day to day basis with a schedule. But for now it has:
- Project Summary - # of tasks, completion date, etc.
- The next 3 upcoming milestones, with expected completion dates.
- Tasks currently being worked on, and by whom.
- Tasks that are currently late.
- “Latest News” box - pulls data from my website for info about new versions, etc.
Both the task-lists have a button to quickly mark them as completed.
The software is to the point where I’m going to start using it at work. Hopefully within a week I’ll have it to a point where others could use it.
I also implemented a feature that will let you easily share the schedule with anybody, but I’ll keep specifics of that secret until we’re closer to release. It’s cool.