Archive for November, 2009

Vibrant Ink Theme in Flex Builder 3

Vibrant Ink Theme

I wanted to change the color scheme of Flex Builder to something more pleasing to the eyes. I’m used to coding with the default color scheme but I wanted to try something new and perhaps as a bonus help me code longer by reducing eye strain and conserving battery by replacing the power hungry white background.

So I started looking for a nice color scheme and found a lot of really good ones. I settled with the Vibrant Ink theme. I thought the process would be as straightforward as downloading a color scheme preferences file and importing it in Flex, similar to the theme pack in TextMate. But most of the preferences files I downloaded apparently only works with the vanilla version of Eclipse with Java, only some colors are being changed in Flex Builder producing an ugly combination of uncoordinated colors.

I ended up doing everything manually, changing each syntax element’s color in the Flex Builder Preferences window. I also needed to know the exact color of each of the elements in the theme so I inspected the source of the theme preferences file and used a handy color picker tool as well to grab the colors from screenshots of the theme.

Here are the colors for each of the syntax elements. I couldn’t find exact counterparts from the theme for some of the Flex related elements so I picked my own colors for them. You can use this as reference for your own customization. It will only take you a few minutes to change everything.

ActionScript Element Color Properties
ASDoc #772CB7
Bracket/Brace #FFFFFF
Comment #9933CC I
Default Text #FFFFFF
Keyword: class #CC7733 B, U
Keyword: function #FFCC00 B
Keyword: interface #AF912B B
Keyword: package #FFCC00 B
Keyword: trace #CC6666 B
Keyword: var #6699CC B
Metadata #66FF00 B
Operator #FFFFFF
Reserved #CC7733 B
String #CCCC33 B
CSS Element Color Properties
@font-face #FFCC00 B
@import #339999 B
@media #663333 B
Comment #9933CC
Default Text #FFFFFF
Delimiters #FFFFFF
Property Name #999966
Property Value #FFFFFF
Selector #FF6600
String #CCCC33
MXML Element Color Properties
Comment #9933CC
Component Tag #FF6600
Default Text #99CC99 I
Processing Instruction #FFFFFF
Special Tag #FFCC00
String #CCCC33
Editor Element Color
Line number foreground #787878
Current line highlight #333300
Print Margin #4C4C4C
Find Scope #191919
Selection foreground color Default
Selection background color #3399FF
Background color #1C1C1C
Foreground color #FFFFFF
Hyperlink #0000FF

Better Button Strokes in Degrafa

Better Button Strokes in Degrafa

View Sample | Source Code

Degrafa supports strokes but the output is a little disappointing. A quick solution is to apply age-old Photoshop skills. And that is to create a smaller shape enclosed inside another shape to mimic a stroke. The containing shape’s background color will serve as the artificial stroke. You also need to add 2 pixels to both the height and width if you’re going to use this approach since a real stroke is an extra 1 pixel (at least in this example) border around the button, easily take care of this inside the overriden updateDisplayList function.

The result looks smoother and more consistent than Degrafa’s built in stroke. However this approach will require more code and may consume more system resource.

The smoothness of the stroke is also affected by the chosen color. It seems that the darker the color of the stroke or if it’s a complement of the button’s color, the less smooth it appears. The size of the corner radius also affects the smoothness of the stroke. You just have to experiment to find the best combination. Thicker strokes on the other hand look alright, so I guess this example only applies to 1 pixel strokes.

Another thing I noticed with Degrafa is it sometimes renders inconsistent corner radii (see screenshot above). One corner may seem off or may not be curved at all. This can be fixed, albeit inelegantly, by using a RoundedRectangleComplex to allow setting of radii for individual corners.

Right Way to Extract Degrafa SWC in Mac OS

Degrafa Logo

Degrafa is a powerful open source graphics framework for Flex. I’m really excited to use it on my current project. But one minor issue I encountered early on is extracting the zipped Degrafa SWC file in Mac OS. When you double click on the zip file, Snow Leopard will extract the SWC from the zip and extract the contents of the SWC as well since a SWC file is essentially just a zip file with a different extension. There are at least 2 simple solutions, one is to use the terminal and run the unzip command on the Degrafa zip file to extract only the zip file and not the SWC, or change some system settings to modify Mac OS’ unzipping behavior. More details here.

How to Run TortoiseSVN in Mac OS X

TortoiseSVN is my favorite SVN tool, unfortunately it only runs in Windows. And now that I’m using a Mac, I really miss its functionality and ease of use. Yes you can run SVN in the terminal but it’s a hassle when you’re trying to access more advanced functions such as comparing differences between revisions, merging and accessing logs.

There’s a very good alternative however to TortoiseSVN called SCPlugin but unfortunately it still doesn’t work with Snow Leopard. I’ve used SCPlugin before and it’s good but I still prefer TortoiseSVN over it. So here’s the pretty obvious thing that I did to run TortoiseSVN in Mac.

I installed VirtualBox and created a Windows XP virtual machine. I then installed TortoiseSVN and used VirtualBox’s Shared Folders feature to make a folder from my Mac machine visible inside the virtual Windows XP. You must install VirtualBox Guest Additions to be able to use the Shared Folders feature.

TortoiseSVN in Mac OS X

It may be a bit of an overkill and it pretty much consumes a lot of resources but I think it’s the only way right now.  You could also run it only when using TortoiseSVN and not leave the virtual machine running in the background to save resources. And having a Windows virtual machine could come in handy as well during application testing.

Wireless Internet Connection Sharing in Ubuntu 9.10 (Karmic Koala)

WiFi

At first I couldn’t find any obvious way of making this work so I thought it was going to be another frustrating process. After a bit of research I stumbled upon this post on how easy it is to share an existing (non-WiFi) internet connection through WiFi. It was written for the Intrepid Ibex release but still works. The only thing you don’t need to do anymore is install the dnsmasq-base package since it’s already activated by default in Karmic Koala.

Installing Flash Player 10 in Ubuntu 9.10 (Karmic Koala)

Let me begin by saying that I’m not a Linux expert. I’ve worked with it several times before but never really stuck with it. But now I’m trying once more, to completely switch from Windows to Linux especially now with the latest Ubuntu release which looks very promising.

One of the least expected problems I encountered with Karmic Koala is installing Flash Player 10 plugin in Firefox. I was surprised to find out how frustrating and unstraightforward it was to perform this.

I tried several approaches like downloading the Flash Player .deb package (which I think was especially made for Ubuntu) and running it but it resulted in an error notification about certain dependencies that I still need to install, using the apt-get command to automate installation of packages which also resulted in cryptic messages about missing dependencies and name collisions, downloading an RPM and using the YUM package which also failed. All in all it took me almost an hour of research, trial and error to discover the very simple solution that worked, and here it is in 5 easy steps.

  1. Download the Flash Player plugin from http://get.adobe.com/flashplayer/ and select the .tar.gz from the package drop down selection box, nevermind the other options.
  2. Extract the content of the package using your preferred approach, either by double clicking on the package file then dragging the content to extract it or running the tar -zxvf command in the terminal. A single file, named libflashplayer.so will be extracted.
  3. You need to move this file to the /usr/lib/mozilla/plugins folder. You can’t just drag and drop it to this folder due to lack of permission, you need to perform it with super user privileges.
  4. So with Firefox closed, run the terminal and go to the folder where libflashplayer.so is located then move the file using the sudo mv libflashplayer.so /usr/lib/mozilla/plugins/ command.
  5. Now run Firefox and double check if the plugin was successfully installed by typing about:plugins in the URL bar, you should be able to find Shockwave Flash in the list.