Added Python Project decorator based on new class DeclarativeLightweightLabelDecorator. This class gives the ability to contribute project decorator using completely declarative approach.  Ruby and Tcl decorators were modified accordingly.
diff --git a/plugins/org.eclipse.dltk.ruby.ui/plugin.xml b/plugins/org.eclipse.dltk.ruby.ui/plugin.xml
index dff7ce2..ba088c0 100644
--- a/plugins/org.eclipse.dltk.ruby.ui/plugin.xml
+++ b/plugins/org.eclipse.dltk.ruby.ui/plugin.xml
@@ -327,25 +327,28 @@
               sequence="ESC CTRL+F">
         </key> 
  </extension>
- 
-   <extension
+  
+<extension
          point="org.eclipse.ui.decorators">
-      <decorator
-            adaptable="false"
+   <decorator
+            adaptable="true"
             location="TOP_LEFT"
             lightweight="true"
             label="%RubyProjectDecorator.name"
             state="true"
-            class="org.eclipse.dltk.ruby.internal.ui.RubyProjectDecorator"
-            id="org.eclipse.dltk.ruby.projectdecorator">
+            class="org.eclipse.dltk.ui.DeclarativeLightweightLabelDecorator:/icons/ovr16/ruby_ovr.gif"
+            id="org.eclipse.dltk.ruby.decorators.projectdecorator">
          <enablement>
-           <or>
-            <objectClass name="org.eclipse.core.resources.IProject"/>
-            <objectClass name="org.eclipse.dltk.core.IScriptProject"/>
-           </or>
+            <and>
+            	<objectClass name="org.eclipse.core.resources.IProject"/>
+             <objectState
+                   name="nature"
+                   value="org.eclipse.dltk.ruby.core.nature">
+             </objectState>
+            </and>
          </enablement>
       </decorator>
-   </extension>
+ </extension>
  
  <extension
        point="org.eclipse.ui.propertyPages">
diff --git a/plugins/org.eclipse.dltk.ruby.ui/src/org/eclipse/dltk/ruby/internal/ui/RubyImages.java b/plugins/org.eclipse.dltk.ruby.ui/src/org/eclipse/dltk/ruby/internal/ui/RubyImages.java
index 7b36594..a29a94a 100644
--- a/plugins/org.eclipse.dltk.ruby.ui/src/org/eclipse/dltk/ruby/internal/ui/RubyImages.java
+++ b/plugins/org.eclipse.dltk.ruby.ui/src/org/eclipse/dltk/ruby/internal/ui/RubyImages.java
@@ -20,9 +20,6 @@
 	public static final ImageDescriptor DESC_OBJ_RUBY_FILE = helper
 			.createUnManaged(PluginImagesHelper.T_OBJ, "ruby_obj.gif"); //$NON-NLS-1$
 
-	public static final ImageDescriptor PROJECT_DECARATOR = helper
-			.createUnManaged(PluginImagesHelper.T_OVR, "ruby_ovr.gif"); //$NON-NLS-1$
-
 	public static final ImageDescriptor DESC_WIZBAN_PROJECT_CREATION = helper
 			.createUnManaged(PluginImagesHelper.T_WIZBAN,
 					"projectcreate_wiz.png"); //$NON-NLS-1$
diff --git a/plugins/org.eclipse.dltk.ruby.ui/src/org/eclipse/dltk/ruby/internal/ui/RubyProjectDecorator.java b/plugins/org.eclipse.dltk.ruby.ui/src/org/eclipse/dltk/ruby/internal/ui/RubyProjectDecorator.java
deleted file mode 100644
index 6302627..0000000
--- a/plugins/org.eclipse.dltk.ruby.ui/src/org/eclipse/dltk/ruby/internal/ui/RubyProjectDecorator.java
+++ /dev/null
@@ -1,17 +0,0 @@
-package org.eclipse.dltk.ruby.internal.ui;
-
-import org.eclipse.dltk.ruby.core.RubyNature;
-import org.eclipse.dltk.ui.AbstractScriptProjectDecorator;
-import org.eclipse.jface.resource.ImageDescriptor;
-
-public class RubyProjectDecorator extends AbstractScriptProjectDecorator {
-
-	public String getNatureId() {
-		return RubyNature.NATURE_ID;
-	}
-	
-	public ImageDescriptor getProjectDecorator() {
-		return RubyImages.PROJECT_DECARATOR;
-	}
-
-}
\ No newline at end of file