Author: tchemit Date: 2009-01-02 08:23:35 +0000 (Fri, 02 Jan 2009) New Revision: 1111 Added: lutinjaxx/branches/storm_1/jaxx-example/Components/src/main/java/examples/Components/Calculator.css lutinjaxx/branches/storm_1/jaxx-example/Components/src/main/java/examples/Components/CalculatorDemo.jaxx lutinjaxx/branches/storm_1/jaxx-example/Components/src/main/java/examples/Components/CalculatorEngine.java lutinjaxx/branches/storm_1/jaxx-example/Components/src/main/java/examples/Components/CounterDemo.jaxx Removed: lutinjaxx/branches/storm_1/jaxx-example/Calculator/ lutinjaxx/branches/storm_1/jaxx-example/Counter/ Modified: lutinjaxx/branches/storm_1/jaxx-example/Components/src/main/java/examples/Components/Components.jaxx lutinjaxx/branches/storm_1/jaxx-example/Components/src/main/resources/i18n/Components-en_GB.properties lutinjaxx/branches/storm_1/jaxx-example/Components/src/main/resources/i18n/Components-fr_FR.properties lutinjaxx/branches/storm_1/jaxx-example/Components/src/site/fr/rst/index.rst lutinjaxx/branches/storm_1/jaxx-example/pom.xml Log: simplification des examples : y'en a plus qu'un :) todo supprimer ce module et n'avoir que jaxx-example Copied: lutinjaxx/branches/storm_1/jaxx-example/Components/src/main/java/examples/Components/Calculator.css (from rev 1109, lutinjaxx/branches/storm_1/jaxx-example/Calculator/src/main/java/examples/Calculator/Calculator.css) =================================================================== --- lutinjaxx/branches/storm_1/jaxx-example/Components/src/main/java/examples/Components/Calculator.css (rev 0) +++ lutinjaxx/branches/storm_1/jaxx-example/Components/src/main/java/examples/Components/Calculator.css 2009-01-02 08:23:35 UTC (rev 1111) @@ -0,0 +1,49 @@ + +#table { + border: {BorderFactory.createEmptyBorder(4, 4, 4, 4)}; + font-face: "Trebuchet MS"; +} + +#display { + background: #BCE5AD; + opaque: true; + horizontalAlignment: right; + border: {BorderFactory.createBevelBorder(BevelBorder.LOWERED)}; + font-size: 22; + font-weight: bold; +} + +#display:{object.getText().startsWith("-")} { + foreground: red; +} + +JButton { + font-size: 18; + width: 80; + height: 35; +} + +JButton.digit { + foreground: blue; +} + +JButton#dot { + font-size: 20; +} + +JButton.operator { + font-size: 16; + foreground: #009900; +} + +JButton.clear { + foreground: red; +} + +JButton:mouseover { + font-weight: bold; +} + +JButton.operator:mouseover { + font-weight: normal; +} \ No newline at end of file Copied: lutinjaxx/branches/storm_1/jaxx-example/Components/src/main/java/examples/Components/CalculatorDemo.jaxx (from rev 1109, lutinjaxx/branches/storm_1/jaxx-example/Calculator/src/main/java/examples/Calculator/Calculator.jaxx) =================================================================== --- lutinjaxx/branches/storm_1/jaxx-example/Components/src/main/java/examples/Components/CalculatorDemo.jaxx (rev 0) +++ lutinjaxx/branches/storm_1/jaxx-example/Components/src/main/java/examples/Components/CalculatorDemo.jaxx 2009-01-02 08:23:35 UTC (rev 1111) @@ -0,0 +1,49 @@ +<DemoPanel> + <style source='Calculator.css'/> + <script><![CDATA[ + plus.setText("+"); + sign.setText("+/-"); +]]></script> + <!-- use fully-qualified name just in case this is compiled into a different package --> + <examples.Components.CalculatorEngine id='engine'/> + + <Table id='demoPanel' fill='both'> + <row> + <cell columns='4'><JLabel id='display' text='{engine.getDisplayText()}'/></cell> + </row> + + <row> + <cell columns='2'><JButton id='c' text='C' onActionPerformed='engine.clear()' styleClass='clear'/></cell> + <cell><JButton id='ce' text='CE' onActionPerformed='engine.clearEntry()' styleClass='clear'/></cell> + <cell><JButton id='equals' text='=' onActionPerformed='engine.equal()' styleClass='operator'/></cell> + </row> + + <row> + <cell><JButton id='d7' text='7' onActionPerformed='engine.digit(7)' styleClass='digit'/></cell> + <cell><JButton id='d8' text='8' onActionPerformed='engine.digit(8)' styleClass='digit'/></cell> + <cell><JButton id='d9' text='9' onActionPerformed='engine.digit(9)' styleClass='digit'/></cell> + <cell><JButton id='plus' onActionPerformed='engine.add()' styleClass='operator'/></cell> + </row> + + <row> + <cell><JButton id='d4' text='4' onActionPerformed='engine.digit(4)' styleClass='digit'/></cell> + <cell><JButton id='d5' text='5' onActionPerformed='engine.digit(5)' styleClass='digit'/></cell> + <cell><JButton id='d6' text='6' onActionPerformed='engine.digit(6)' styleClass='digit'/></cell> + <cell><JButton id='subtract' text='-' onActionPerformed='engine.subtract()' styleClass='operator'/></cell> + </row> + + <row> + <cell><JButton id='d1' text='1' onActionPerformed='engine.digit(1)' styleClass='digit'/></cell> + <cell><JButton id='d2' text='2' onActionPerformed='engine.digit(2)' styleClass='digit'/></cell> + <cell><JButton id='d3' text='3' onActionPerformed='engine.digit(3)' styleClass='digit'/></cell> + <cell><JButton id='multiply' text='x' onActionPerformed='engine.multiply()' styleClass='operator'/></cell> + </row> + + <row> + <cell><JButton id='d0' text='0' onActionPerformed='engine.digit(0)' styleClass='digit'/></cell> + <cell><JButton id='sign' onActionPerformed='engine.toggleSign()' styleClass='operator'/></cell> + <cell><JButton id='dot' text='.' onActionPerformed='engine.dot()' styleClass='digit'/></cell> + <cell><JButton id='divide' text='÷' onActionPerformed='engine.divide()' styleClass='operator'/></cell> + </row> + </Table> +</DemoPanel> \ No newline at end of file Copied: lutinjaxx/branches/storm_1/jaxx-example/Components/src/main/java/examples/Components/CalculatorEngine.java (from rev 1109, lutinjaxx/branches/storm_1/jaxx-example/Calculator/src/main/java/examples/Calculator/CalculatorEngine.java) =================================================================== --- lutinjaxx/branches/storm_1/jaxx-example/Components/src/main/java/examples/Components/CalculatorEngine.java (rev 0) +++ lutinjaxx/branches/storm_1/jaxx-example/Components/src/main/java/examples/Components/CalculatorEngine.java 2009-01-02 08:23:35 UTC (rev 1111) @@ -0,0 +1,165 @@ +package examples.Components; + +import java.beans.*; +import java.math.*; + +public class CalculatorEngine { + public static final String DISPLAY_TEXT_PROPERTY = "displayText"; + + public static final int ADD = 0; + public static final int SUBTRACT = 1; + public static final int MULTIPLY =2; + public static final int DIVIDE = 3; + public static final int RESULT = 4; + + private int operation = -1; + private boolean clear = true; // true to clear on next key + private String displayText = "0"; + private BigDecimal value; + private PropertyChangeSupport propertyChangeSupport = new PropertyChangeSupport(this); + + + public String getDisplayText() { + return displayText; + } + + + public void setDisplayText(String displayText) { + String oldDisplayText = this.displayText; + this.displayText = displayText; + firePropertyChange(DISPLAY_TEXT_PROPERTY, oldDisplayText, displayText); + } + + + public void clear() { + clearEntry(); + value = new BigDecimal(0); + operation = -1; + } + + + public void clearEntry() { + setDisplayText("0"); + clear = true; + } + + + private void checkClear() { + if (clear) { + setDisplayText(""); + clear = false; + } + } + + + public void digit(int digit) { + checkClear(); + setDisplayText(getDisplayText() + String.valueOf(digit)); + } + + + public void dot() { + checkClear(); + if (getDisplayText().indexOf('.') == -1) { + if (getDisplayText().length() == 0) + setDisplayText("0."); + else + setDisplayText(getDisplayText() + '.'); + } + } + + + public void toggleSign() { + String text = getDisplayText(); + if (text.startsWith("-")) + text = text.substring(1); + else if (!text.equals("0")) + text = '-' + text; + setDisplayText(text); + } + + + public void equal() { + BigDecimal displayValue = new BigDecimal(getDisplayText()); + BigDecimal newValue = displayValue; + switch (operation) { + case ADD: newValue = value.add(displayValue); break; + case SUBTRACT: newValue = value.subtract(displayValue); break; + case MULTIPLY: newValue = value.multiply(displayValue); break; + case DIVIDE: newValue = value.divide(displayValue, 8, BigDecimal.ROUND_HALF_UP); break; + } + value = newValue; + setDisplayText(toString(newValue)); + clear = true; + operation = -1; + } + + + public static String toString(BigDecimal decimal) { + // can't use stripTrailingZeros, as it wasn't introduced until 1.5 + String result = decimal.toString(); + if (result.indexOf(".") != -1) { + while (result.endsWith("0")) + result = result.substring(0, result.length() - 1); + if (result.endsWith(".")) + result = result.substring(0, result.length() - 1); + } + return result; + } + + + public void operation(int operation) { + if (this.operation != -1) + equal(); + else { + value = new BigDecimal(getDisplayText()); + clear = true; + } + this.operation = operation; + } + + + public void add() { + operation(ADD); + } + + + public void subtract() { + operation(SUBTRACT); + } + + + public void multiply() { + operation(MULTIPLY); + } + + + public void divide() { + operation(DIVIDE); + } + + + public void addPropertyChangeListener(PropertyChangeListener listener) { + propertyChangeSupport.addPropertyChangeListener(listener); + } + + + public void addPropertyChangeListener(String property, PropertyChangeListener listener) { + propertyChangeSupport.addPropertyChangeListener(property, listener); + } + + + public void removePropertyChangeListener(PropertyChangeListener listener) { + propertyChangeSupport.removePropertyChangeListener(listener); + } + + + public void removePropertyChangeListener(String property, PropertyChangeListener listener) { + propertyChangeSupport.removePropertyChangeListener(property, listener); + } + + + protected void firePropertyChange(String property, Object oldValue, Object newValue) { + propertyChangeSupport.firePropertyChange(property, oldValue, newValue); + } +} \ No newline at end of file Modified: lutinjaxx/branches/storm_1/jaxx-example/Components/src/main/java/examples/Components/Components.jaxx =================================================================== --- lutinjaxx/branches/storm_1/jaxx-example/Components/src/main/java/examples/Components/Components.jaxx 2008-12-30 15:38:45 UTC (rev 1110) +++ lutinjaxx/branches/storm_1/jaxx-example/Components/src/main/java/examples/Components/Components.jaxx 2009-01-02 08:23:35 UTC (rev 1111) @@ -23,44 +23,50 @@ } } }'> - <item value='Buttons'> - <item value='{buttonDemo}'/> - <item value='{checkBoxDemo}'/> - <item value='{radioButtonDemo}'/> - <item value='{toggleButtonDemo}'/> - </item> + <item value="Components"> + <item value='Buttons'> + <item value='{buttonDemo}'/> + <item value='{checkBoxDemo}'/> + <item value='{radioButtonDemo}'/> + <item value='{toggleButtonDemo}'/> + </item> - <item value='Form elements'> - <item value='Text'> - <item value='{passwordFieldDemo}'/> - <item value='{textFieldDemo}'/> - <item value='{textAreaDemo}'/> + <item value='Form elements'> + <item value='Text'> + <item value='{passwordFieldDemo}'/> + <item value='{textFieldDemo}'/> + <item value='{textAreaDemo}'/> + </item> + + <item value='{comboBoxDemo}'/> + <item value='{listDemo}'/> + <item value='{sliderDemo}'/> + <item value='{spinnerDemo}'/> </item> - <item value='{comboBoxDemo}'/> - <item value='{listDemo}'/> - <item value='{sliderDemo}'/> - <item value='{spinnerDemo}'/> - </item> + <item value='Layout components'> + <item value='{splitPaneDemo}'/> + </item> - <item value='Layout components'> - <item value='{splitPaneDemo}'/> - </item> + <item value='Menus'> + <item value='{menuItemDemo}'/> + <item value='{checkBoxMenuItemDemo}'/> + <item value='{radioButtonMenuItemDemo}'/> + </item> - <item value='Menus'> - <item value='{menuItemDemo}'/> - <item value='{checkBoxMenuItemDemo}'/> - <item value='{radioButtonMenuItemDemo}'/> - </item> + <item value='Windows'> + <item value='{dialogDemo}'/> + </item> - <item value='Windows'> - <item value='{dialogDemo}'/> + <item value='{progressBarDemo}'/> + </item> - <item value='{progressBarDemo}'/> + <item value='{labelStyleDemo}'/> - <item value='{labelStyleDemo}'/> - + <item value='{counterDemo}'/> + <item value='{calculatorDemo}'/> + <item value='New features'> <item value='Validation'> <item value='{validationDemo1}'/> @@ -95,6 +101,8 @@ <ValidationTableDemo id='validationDemo2' constraints='validationDemo2.getLabel()'/> <BeanDataBindingDemo id='dataBindingDemo' constraints='dataBindingDemo.getLabel()'/> <LabelStyleDemo id='labelStyleDemo' constraints='labelStyleDemo.getLabel()'/> + <CounterDemo id='counterDemo' constraints='counterDemo.getLabel()'/> + <CalculatorDemo id='calculatorDemo' constraints='calculatorDemo.getLabel()'/> </JPanel> </JSplitPane> </Application> \ No newline at end of file Copied: lutinjaxx/branches/storm_1/jaxx-example/Components/src/main/java/examples/Components/CounterDemo.jaxx (from rev 1109, lutinjaxx/branches/storm_1/jaxx-example/Counter/src/main/java/examples/Counter/Counter.jaxx) =================================================================== --- lutinjaxx/branches/storm_1/jaxx-example/Components/src/main/java/examples/Components/CounterDemo.jaxx (rev 0) +++ lutinjaxx/branches/storm_1/jaxx-example/Components/src/main/java/examples/Components/CounterDemo.jaxx 2009-01-02 08:23:35 UTC (rev 1111) @@ -0,0 +1,12 @@ +<DemoPanel> + <script>int count;</script> + <JPanel id='demoPanel'> + <JTextField text='{count}' constraints='BorderLayout.NORTH'/> + <HBox constraints='BorderLayout.SOUTH'> + <JButton text='Dec (-)' onActionPerformed='count--'/> + <JButton text='Reset' onActionPerformed='count = 0'/> + <JButton text='Inc (+)' onActionPerformed='count++'/> + </HBox> + </JPanel> + +</DemoPanel> \ No newline at end of file Modified: lutinjaxx/branches/storm_1/jaxx-example/Components/src/main/resources/i18n/Components-en_GB.properties =================================================================== --- lutinjaxx/branches/storm_1/jaxx-example/Components/src/main/resources/i18n/Components-en_GB.properties 2008-12-30 15:38:45 UTC (rev 1110) +++ lutinjaxx/branches/storm_1/jaxx-example/Components/src/main/resources/i18n/Components-en_GB.properties 2009-01-02 08:23:35 UTC (rev 1111) @@ -1,3 +1,6 @@ +-= +.= +0= 1= 10= 12= @@ -6,18 +9,27 @@ 2= 24= 3= +4= +5= +6= +7= +8= +9= Age\:= Animal= Blue= Blue\:= Bold= Button\ label\:= +C= +CE= Cancel= Comments\:= Component\ Demo= Config\ file\ \:= Config\ file\:= Cyan= +Dec\ (-)= Demo= Directory\ file\:= Editable= @@ -31,6 +43,7 @@ Green= Green\:= Greet= +Inc\ (+)= Italic= JMenu\ demo= Last\ Name\:= @@ -45,6 +58,7 @@ Ratio\:= Red= Red\:= +Reset= Show\ Background= Show\ password\ dialog= Sign\ on= @@ -67,6 +81,7 @@ Working\ directory\:= Yellow= Your\ name\:= +\\u00f7= adjust\ the\ spacing= between\ these\ lines= cancel= @@ -81,3 +96,4 @@ validator.field=Champ validator.message=Message validator.scope=... +x= Modified: lutinjaxx/branches/storm_1/jaxx-example/Components/src/main/resources/i18n/Components-fr_FR.properties =================================================================== --- lutinjaxx/branches/storm_1/jaxx-example/Components/src/main/resources/i18n/Components-fr_FR.properties 2008-12-30 15:38:45 UTC (rev 1110) +++ lutinjaxx/branches/storm_1/jaxx-example/Components/src/main/resources/i18n/Components-fr_FR.properties 2009-01-02 08:23:35 UTC (rev 1111) @@ -1,3 +1,6 @@ +-= +.= +0= 1= 10= 12= @@ -6,18 +9,27 @@ 2= 24= 3= +4= +5= +6= +7= +8= +9= Age\:= Animal= Blue= Blue\:= Bold= Button\ label\:= +C= +CE= Cancel= Comments\:= Component\ Demo= Config\ file\ \:= Config\ file\:= Cyan= +Dec\ (-)= Demo= Directory\ file\:= Editable= @@ -31,6 +43,7 @@ Green= Green\:= Greet= +Inc\ (+)= Italic= JMenu\ demo= Last\ Name\:= @@ -45,6 +58,7 @@ Ratio\:= Red= Red\:= +Reset= Show\ Background= Show\ password\ dialog= Sign\ on= @@ -67,6 +81,7 @@ Working\ directory\:= Yellow= Your\ name\:= +\\u00f7= adjust\ the\ spacing= between\ these\ lines= cancel= @@ -81,3 +96,4 @@ validator.field=Champ validator.message=Message validator.scope=... +x= Modified: lutinjaxx/branches/storm_1/jaxx-example/Components/src/site/fr/rst/index.rst =================================================================== --- lutinjaxx/branches/storm_1/jaxx-example/Components/src/site/fr/rst/index.rst 2008-12-30 15:38:45 UTC (rev 1110) +++ lutinjaxx/branches/storm_1/jaxx-example/Components/src/site/fr/rst/index.rst 2009-01-02 08:23:35 UTC (rev 1111) @@ -6,6 +6,13 @@ of the SwingSet demo. Various pages use advanced features such as data binding, scripting, event handling, and CSS stylesheets. +Examples/Calculator +=================== + +This is an implementation of Challenge #2 from the `XUL Grand Coding Challenge 2004`_ . Because this example program +has been implemented in so many different languages, you can easily compare JAXX's +syntax against the competition and decide for yourself which you prefer. + Screen shot ----------- Modified: lutinjaxx/branches/storm_1/jaxx-example/pom.xml =================================================================== --- lutinjaxx/branches/storm_1/jaxx-example/pom.xml 2008-12-30 15:38:45 UTC (rev 1110) +++ lutinjaxx/branches/storm_1/jaxx-example/pom.xml 2009-01-02 08:23:35 UTC (rev 1111) @@ -25,9 +25,7 @@ </dependencies> <modules> - <module>Calculator</module> <module>Components</module> - <module>Counter</module> </modules> <!-- ************************************************************* -->