Writing Darkstar applications in Python
You don't have to use Java in order to create Darkstar applications. Here is a simple project I wrote in Python - py_dsi.zip.

makefile
hello.jfc - Install Fabric if you want to create the JXML file.
hello.jxml

<layout class="java.awt.BorderLayout" xmlns:t="teppefall">
<component class="javax.swing.JScrollPane" constraint="Center" id="scroll">
<property name="viewportView" type="Component">
<component class="javax.swing.JList" id="list">
<!--<property name="background" value="#0000ff" type="color"/>-->
<property name="cellRenderer" type="Object" value="com.teppefall.ds.layout.jxml.MediaListRenderer"/>
<property name="listData" type="Vector">
<vector>
<item>StreamingServerOne</item>
<item>StreamingServerTwo</item>
</vector>
</property>
</component>
</property>
</component>
<component class="javax.swing.JPanel" constraint="East">
<!--<property name="background" value="#ff0000" type="color"/>-->
<layout class="com.teppefall.ds.layout.jxml.AssemblyBoxLayout$VBox" link="true">
<component class="javax.swing.JButton" text="Add..." id="add"/>
<rigid value="0,6"/>
<component class="javax.swing.JButton" text="Edit..." enabled="false" id="edit"/>
<rigid value="0,6"/>
<component class="javax.swing.JButton" text="Remove..." enabled="false" id="remove"/>
<rigid value="0,6"/>
<component class="javax.swing.JButton" text="Close" id="close"/>
</layout>
</component>
<layout class="java.awt.BorderLayout" constraint="South">
<component class="javax.swing.JPanel" constraint="West">
<component class="javax.swing.JButton" text="Help" id="help"/>
</component>
<component class="javax.swing.JPanel" constraint="East">
<!--<property name="background" value="#00ff00" type="color"/>-->
<component class="javax.swing.JButton" text="Watch" id="watch">
<property name="defaultCapable" value="true" type="boolean"/>
</component>
</component>
</layout>
<listener type="selected" source="list" button="remove"/>
<listener type="selected" source="list" button="edit"/>
</layout>
# hello.py
# Darkstar demo based on Python
from java.io import *
from java.awt import *
from java.beans import *
from com.teppefall.ds import *
from com.teppefall.ds.console import *
class JythonImporter:
def decode(self, xml):
decoder = XMLDecoder(BufferedInputStream(FileInputStream(xml)))
assembly = decoder.readObject()
return assembly
class Hello(Application):
jxml = "hello.jxml"
def __init__(self, args):
Application.__init__(self, "Servers", "Teppefall", "http://localhost", args, Dimension(416,235))
assembly = JythonImporter().decode(self.jxml)
if not assembly:
self.getApplicationFrame().getContentPane().add(Label("Not found: " + self.jxml))
else:
self.getApplicationFrame().getContentPane().add(assembly.getPanel())
list = assembly.getComponentById("list")
add = assembly.getComponentById("add")
edit = assembly.getComponentById("edit")
remove = assembly.getComponentById("remove")
help = assembly.getComponentById("help")
watch = assembly.getComponentById("watch")
edit.setEnabled(1)
remove.setEnabled(1)
self.showApplication()
if __name__ == '__main__':
import sys
##Application.launch(Hello.__class__) # broken under Jython
Hello(sys.argv)
Comments
have a nice day!
Posted by: Doovotlypledo | July 9, 2008 06:26 AM