All Downloads are FREE. Search and download functionalities are using the official Maven repository.

Demo.applet.deprecated.Converter.py Maven / Gradle / Ivy

Go to download

Jython is an implementation of the high-level, dynamic, object-oriented language Python written in 100% Pure Java, and seamlessly integrated with the Java platform. It thus allows you to run Python on any Java platform.

The newest version!
"""A translation of an example from the Java Tutorial
http://java.sun.com/docs/books/tutorial/

This example converts between metric and english units
"""

from java import awt
from java.applet import Applet
from java.awt.event import ActionListener, ItemListener, AdjustmentListener
from pawt import GridBag

basicUnits = [['Metric System', [('Centimeters', 0.01),
                                 ('Meters', 1.0),
                                 ('Kilometers', 1000.0)]],
              ['U.S. System', [('Inches', 0.0254),
                               ('Feet', 0.305),
                               ('Yards', 0.914),
                               ('Miles', 1613.0)]]
              ]


class SimpleBorder:
    def paint(self, g):
        g.drawRect(0, 0, self.size.width-1, self.size.height-1)

    def getInsets(self):
        return awt.Insets(5, 5, 5, 5)


class Converter(Applet, SimpleBorder):
    def init(self, unitSets=basicUnits):
        self.setLayout(awt.GridLayout(2, 0, 5, 5))
        self.panels = []
        for name, units in unitSets:
            panel = ConversionPanel(name, units, self)
            self.panels.append(panel)
            self.add(panel)

    def convert(self, master):
        value = master.getValue()
        multiplier = master.getMultiplier()

        for panel in self.panels:
            if panel is not master:
                panel.setValue(multiplier/panel.getMultiplier()*value)


class ConversionPanel(awt.Panel, SimpleBorder,
                      ActionListener, AdjustmentListener, ItemListener):
    max, block = 10000, 100

    def __init__(self, title, units, controller):
        self.units = units
        self.controller = controller

        bag = GridBag(self, fill='HORIZONTAL')

        label = awt.Label(title, awt.Label.CENTER)
        bag.addRow(label)

        self.text = awt.TextField('0', 10, actionListener=self)
        bag.add(self.text, weightx=1.0)

        self.chooser = awt.Choice(itemListener=self)
        for name, multiplier in units:
            self.chooser.add(name)
        bag.addRow(self.chooser)

        self.slider = awt.Scrollbar(awt.Scrollbar.HORIZONTAL,
                                    maximum=self.max+10,
                                    blockIncrement=self.block,
                                    adjustmentListener=self)
        bag.add(self.slider)

    def getMultiplier(self):
        return self.units[self.chooser.selectedIndex][1]

    def getValue(self):
        try:
            return float(self.text.getText())
        except:
            return 0.0

    def actionPerformed(self, e):
        self.setSlider(self.getValue())
        self.controller.convert(self)

    def itemStateChanged(self, e):
        self.controller.convert(self)

    def adjustmentValueChanged(self, e):
        self.text.setText(str(e.getValue()))
        self.controller.convert(self)

    def setValue(self, v):
        self.text.setText(str(v))
        self.setSlider(v)

    def setSlider(self, f):
        if f > self.max:
            f = self.max
        if f < 0:
            f = 0
        self.slider.value = int(f)


if __name__ == '__main__':
    import pawt
    pawt.test(Converter())




© 2015 - 2025 Weber Informatics LLC | Privacy Policy