Changeset 212

Show
Ignore:
Timestamp:
04/09/11 21:48:38 (14 months ago)
Author:
stefan
Message:

replaced output of statistics by velocity templates; implemented issue #253: allow to switch between kJ and kcal

Location:
trunk
Files:
15 added
8 modified
2 copied
1 moved

Legend:

Unmodified
Added
Removed
  • trunk/CHANGELOG

    r211 r212  
    66            * implemented issue #247: display error message when JErgometer is started without RXTX library 
    77            * implemented issue #252: rename all occurrences of "COM port" to "serial port" 
     8            * implemented issue #253: allow to switch between kJ and kcal 
    89 
    910== 0.7.11 == 
  • trunk/src/org/jergometer/communication/BikeConnectionTester.java

    r210 r212  
    2525  private SerialPort serialPort; 
    2626  private BufferedReader reader = null; 
    27   private BikeWriter writer = null; 
     27  private KettlerBikeWriter writer = null; 
    2828 
    2929  private State state = State.init; 
     
    7373 
    7474    // set reader and writer 
    75     writer = new BikeWriter(serialPort.getOutputStream()); 
     75    writer = new KettlerBikeWriter(serialPort.getOutputStream()); 
    7676    RXTXReader rxtxReader = new RXTXReader(serialPort); 
    7777    reader = new BufferedReader(new InputStreamReader(rxtxReader)); 
  • trunk/src/org/jergometer/communication/BikeConnector.java

    r76 r212  
    1010public interface BikeConnector extends Closeable { 
    1111  /** 
    12    * Returns the reader reading receiving from the XUP board. 
     12   * Returns the reader receiving messages from the ergometer. 
    1313   * 
    1414   * @return reader 
     
    1717 
    1818  /** 
    19    * Returns the writer sending messages to the the XUP board. 
     19   * Returns the writer sending messages to the ergometer. 
    2020   * 
    2121   * @return writer 
     
    2424 
    2525  /** 
    26    * Closes the connection to the XUP board. 
     26   * Closes the connection to the ergometer. 
    2727   */ 
    2828  public void close() throws IOException; 
  • trunk/src/org/jergometer/communication/KetterBikeConnector.java

    r210 r212  
    99import org.jergometer.translation.I18n; 
    1010 
    11 import javax.swing.*; 
    12  
    1311/** 
    14  * BikeConnectorSerial connects to the bike via serial port (e.g. RS232 or USB). 
     12 * KetterBikeConnector connects to the bike via serial port (e.g. RS232 or USB). 
    1513 * It is used to receive data from the bike and to control it. 
    1614 */ 
    17 public class BikeConnectorSerial implements BikeConnector { 
     15public class KetterBikeConnector implements BikeConnector { 
    1816 
    1917// static 
     
    5048 
    5149  private SerialPort serialPort; 
    52   private BikeReader reader = null; 
    53   private BikeWriter writer = null; 
     50  private KettlerBikeReader reader = null; 
     51  private KettlerBikeWriter writer = null; 
    5452 
    55   public BikeConnectorSerial(String serialName) throws BikeException, UnsupportedCommOperationException, IOException { 
     53  public KetterBikeConnector(String serialName) throws BikeException, UnsupportedCommOperationException, IOException { 
    5654    connect(serialName); 
    5755  } 
     
    8684 
    8785    // set reader and writer 
    88     writer = new BikeWriter(serialPort.getOutputStream()); 
     86    writer = new KettlerBikeWriter(serialPort.getOutputStream()); 
    8987    RXTXReader rxtxReader = new RXTXReader(serialPort); 
    90     reader = new BikeReader(rxtxReader); 
     88    reader = new KettlerBikeReader(rxtxReader); 
    9189  } 
    9290 
     
    112110 
    113111// getters and setters 
    114   public BikeReader getReader() { 
     112  public KettlerBikeReader getReader() { 
    115113    return reader; 
    116114  } 
    117115 
    118   public BikeWriter getWriter() { 
     116  public KettlerBikeWriter getWriter() { 
    119117    return writer; 
    120118  } 
  • trunk/src/org/jergometer/communication/KettlerBikeReader.java

    r201 r212  
    1212 * It reads incoming messages from the bike. 
    1313 */ 
    14 public class BikeReader extends Thread { 
     14public class KettlerBikeReader extends Thread implements BikeReader { 
    1515 
    1616// static 
     
    3636   * @param in input stream 
    3737   */ 
    38   public BikeReader(InputStream in) { 
     38  public KettlerBikeReader(InputStream in) { 
    3939    this.inStream = in; 
    4040    this.in = new BufferedReader(new InputStreamReader(inStream), 1); 
  • trunk/src/org/jergometer/communication/KettlerBikeWriter.java

    r76 r212  
    88 * It writes messages to the bike. 
    99 */ 
    10 public class BikeWriter { 
     10public class KettlerBikeWriter implements BikeWriter { 
    1111 
    1212// static 
     
    3030   * @param out output stream 
    3131   */ 
    32   public BikeWriter(OutputStream out) { 
     32  public KettlerBikeWriter(OutputStream out) { 
    3333    this.out = new DataOutputStream(out); 
    3434  } 
  • trunk/src/org/jergometer/gui/MainWindow.form

    r100 r212  
    9999              <grid id="e65ca" layout-manager="GridBagLayout"> 
    100100                <constraints> 
    101                   <grid row="0" column="2" row-span="3" col-span="1" vsize-policy="3" hsize-policy="3" anchor="0" fill="0" indent="0" use-parent-layout="false"/> 
     101                  <grid row="0" column="3" row-span="3" col-span="1" vsize-policy="3" hsize-policy="3" anchor="0" fill="0" indent="0" use-parent-layout="false"/> 
    102102                  <gridbag top="0" left="0" bottom="0" right="10" weightx="0.0" weighty="0.0"/> 
    103103                </constraints> 
     
    106106                  <font/> 
    107107                </border> 
    108                 <children> 
    109                   <component id="dc8ff" class="javax.swing.JLabel"> 
    110                     <constraints> 
    111                       <grid row="0" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="0" anchor="4" fill="0" indent="0" use-parent-layout="false"/> 
    112                       <gridbag top="5" left="5" bottom="5" right="5" weightx="0.0" weighty="0.0"/> 
    113                     </constraints> 
    114                     <properties> 
    115                       <text resource-bundle="org/jergometer/translation/jergometer" key="property.pulse"/> 
    116                     </properties> 
    117                   </component> 
    118                   <component id="49de1" class="javax.swing.JLabel"> 
    119                     <constraints> 
    120                       <grid row="1" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="0" anchor="4" fill="0" indent="0" use-parent-layout="false"/> 
    121                       <gridbag top="5" left="5" bottom="5" right="5" weightx="0.0" weighty="0.0"/> 
    122                     </constraints> 
    123                     <properties> 
    124                       <text resource-bundle="org/jergometer/translation/jergometer" key="property.pedal_rpm"/> 
    125                     </properties> 
    126                   </component> 
    127                   <component id="e3555" class="javax.swing.JLabel"> 
    128                     <constraints> 
    129                       <grid row="2" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="0" anchor="4" fill="0" indent="0" use-parent-layout="false"/> 
    130                       <gridbag top="5" left="5" bottom="5" right="5" weightx="0.0" weighty="0.0"/> 
    131                     </constraints> 
    132                     <properties> 
    133                       <text resource-bundle="org/jergometer/translation/jergometer" key="property.speed"/> 
    134                     </properties> 
    135                   </component> 
    136                   <component id="6ef9f" class="javax.swing.JLabel"> 
    137                     <constraints> 
    138                       <grid row="3" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="0" anchor="4" fill="0" indent="0" use-parent-layout="false"/> 
    139                       <gridbag top="5" left="5" bottom="5" right="5" weightx="0.0" weighty="0.0"/> 
    140                     </constraints> 
    141                     <properties> 
    142                       <text resource-bundle="org/jergometer/translation/jergometer" key="property.distance"/> 
    143                     </properties> 
    144                   </component> 
    145                   <component id="ed697" class="javax.swing.JLabel"> 
    146                     <constraints> 
    147                       <grid row="4" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="0" anchor="4" fill="0" indent="0" use-parent-layout="false"/> 
    148                       <gridbag top="5" left="5" bottom="5" right="5" weightx="0.0" weighty="0.0"/> 
    149                     </constraints> 
    150                     <properties> 
    151                       <text resource-bundle="org/jergometer/translation/jergometer" key="property.dest_power"/> 
    152                     </properties> 
    153                   </component> 
    154                   <component id="2f0fd" class="javax.swing.JLabel"> 
    155                     <constraints> 
    156                       <grid row="5" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="0" anchor="4" fill="0" indent="0" use-parent-layout="false"/> 
    157                       <gridbag top="5" left="5" bottom="5" right="5" weightx="0.0" weighty="0.0"/> 
    158                     </constraints> 
    159                     <properties> 
    160                       <text resource-bundle="org/jergometer/translation/jergometer" key="property.energy"/> 
    161                     </properties> 
    162                   </component> 
    163                   <component id="6d1d6" class="javax.swing.JLabel"> 
    164                     <constraints> 
    165                       <grid row="6" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="0" anchor="4" fill="0" indent="0" use-parent-layout="false"/> 
    166                       <gridbag top="5" left="5" bottom="5" right="5" weightx="0.0" weighty="0.0"/> 
    167                     </constraints> 
    168                     <properties> 
    169                       <text resource-bundle="org/jergometer/translation/jergometer" key="property.time"/> 
    170                     </properties> 
    171                   </component> 
    172                   <component id="a2637" class="javax.swing.JLabel"> 
    173                     <constraints> 
    174                       <grid row="7" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="0" anchor="4" fill="0" indent="0" use-parent-layout="false"/> 
    175                       <gridbag top="5" left="5" bottom="5" right="5" weightx="0.0" weighty="0.0"/> 
    176                     </constraints> 
    177                     <properties> 
    178                       <text resource-bundle="org/jergometer/translation/jergometer" key="property.real_power"/> 
    179                     </properties> 
    180                   </component> 
    181                   <component id="354a" class="javax.swing.JLabel" binding="destPowerLabel"> 
    182                     <constraints> 
    183                       <grid row="4" column="1" row-span="1" col-span="1" vsize-policy="0" hsize-policy="0" anchor="8" fill="0" indent="0" use-parent-layout="false"/> 
    184                       <gridbag top="5" left="5" bottom="5" right="5" weightx="0.0" weighty="0.0"/> 
    185                     </constraints> 
    186                     <properties> 
    187                       <text value="-"/> 
    188                     </properties> 
    189                   </component> 
    190                   <component id="7b970" class="javax.swing.JLabel" binding="pulseLabel"> 
    191                     <constraints> 
    192                       <grid row="0" column="1" row-span="1" col-span="1" vsize-policy="0" hsize-policy="0" anchor="8" fill="0" indent="0" use-parent-layout="false"/> 
    193                       <gridbag top="5" left="5" bottom="5" right="5" weightx="0.0" weighty="0.0"/> 
    194                     </constraints> 
    195                     <properties> 
    196                       <text value="-"/> 
    197                     </properties> 
    198                   </component> 
    199                   <component id="1f67f" class="javax.swing.JLabel" binding="pedalRpmLabel"> 
    200                     <constraints> 
    201                       <grid row="1" column="1" row-span="1" col-span="1" vsize-policy="0" hsize-policy="0" anchor="8" fill="0" indent="0" use-parent-layout="false"/> 
    202                       <gridbag top="5" left="5" bottom="5" right="5" weightx="0.0" weighty="0.0"/> 
    203                     </constraints> 
    204                     <properties> 
    205                       <text value="-"/> 
    206                     </properties> 
    207                   </component> 
    208                   <component id="2e3af" class="javax.swing.JLabel" binding="speedLabel"> 
    209                     <constraints> 
    210                       <grid row="2" column="1" row-span="1" col-span="1" vsize-policy="0" hsize-policy="0" anchor="8" fill="0" indent="0" use-parent-layout="false"/> 
    211                       <gridbag top="5" left="5" bottom="5" right="5" weightx="0.0" weighty="0.0"/> 
    212                     </constraints> 
    213                     <properties> 
    214                       <text value="-"/> 
    215                     </properties> 
    216                   </component> 
    217                   <component id="e5e59" class="javax.swing.JLabel" binding="distanceLabel"> 
    218                     <constraints> 
    219                       <grid row="3" column="1" row-span="1" col-span="1" vsize-policy="0" hsize-policy="0" anchor="8" fill="0" indent="0" use-parent-layout="false"/> 
    220                       <gridbag top="5" left="5" bottom="5" right="5" weightx="0.0" weighty="0.0"/> 
    221                     </constraints> 
    222                     <properties> 
    223                       <text value="-"/> 
    224                     </properties> 
    225                   </component> 
    226                   <component id="a54fc" class="javax.swing.JLabel" binding="energyLabel"> 
    227                     <constraints> 
    228                       <grid row="5" column="1" row-span="1" col-span="1" vsize-policy="0" hsize-policy="0" anchor="8" fill="0" indent="0" use-parent-layout="false"/> 
    229                       <gridbag top="5" left="5" bottom="5" right="5" weightx="0.0" weighty="0.0"/> 
    230                     </constraints> 
    231                     <properties> 
    232                       <text value="-"/> 
    233                     </properties> 
    234                   </component> 
    235                   <component id="225d8" class="javax.swing.JLabel" binding="timeLabel"> 
    236                     <constraints> 
    237                       <grid row="6" column="1" row-span="1" col-span="1" vsize-policy="0" hsize-policy="0" anchor="8" fill="0" indent="0" use-parent-layout="false"/> 
    238                       <gridbag top="5" left="5" bottom="5" right="5" weightx="0.0" weighty="0.0"/> 
    239                     </constraints> 
    240                     <properties> 
    241                       <text value="-"/> 
    242                     </properties> 
    243                   </component> 
    244                   <component id="4b725" class="javax.swing.JLabel" binding="realPowerLabel"> 
    245                     <constraints> 
    246                       <grid row="7" column="1" row-span="1" col-span="1" vsize-policy="0" hsize-policy="0" anchor="8" fill="0" indent="0" use-parent-layout="false"/> 
    247                       <gridbag top="5" left="5" bottom="5" right="5" weightx="0.0" weighty="0.0"/> 
    248                     </constraints> 
    249                     <properties> 
    250                       <text value="-"/> 
    251                     </properties> 
    252                   </component> 
    253                 </children> 
     108                <children/> 
    254109              </grid> 
    255110              <component id="e6b31" class="javax.swing.JLabel" binding="welcomeLabel"> 
     
    287142                </children> 
    288143              </grid> 
     144              <component id="c6a78" class="org.jergometer.gui.BikeInfoPane" binding="bikeInfoPane" custom-create="true"> 
     145                <constraints> 
     146                  <grid row="0" column="2" row-span="3" col-span="1" vsize-policy="3" hsize-policy="3" anchor="0" fill="1" indent="0" use-parent-layout="false"/> 
     147                  <gridbag weightx="0.0" weighty="0.0"/> 
     148                </constraints> 
     149                <properties> 
     150                  <background swing-color="Label.background"/> 
     151                  <contentType value="text/html"/> 
     152                  <editable value="false"/> 
     153                  <enabled value="true"/> 
     154                  <text value="&lt;html&gt;&#10;  &lt;head&gt;&#10;&#10;  &lt;/head&gt;&#10;  &lt;body&gt;&#10;    &lt;p style=&quot;margin-top: 0&quot;&gt;&#10;      &#10;    &lt;/p&gt;&#10;  &lt;/body&gt;&#10;&lt;/html&gt;&#10;"/> 
     155                </properties> 
     156                <clientProperties> 
     157                  <JEditorPane.honorDisplayProperties class="java.lang.Boolean" value="true"/> 
     158                </clientProperties> 
     159              </component> 
    289160            </children> 
    290161          </grid> 
  • trunk/src/org/jergometer/gui/MainWindow.java

    r202 r212  
    11package org.jergometer.gui; 
    22 
     3import de.endrullis.utils.VelocityUtils; 
     4import org.apache.velocity.Template; 
     5import org.apache.velocity.VelocityContext; 
     6import org.apache.velocity.app.Velocity; 
     7import org.apache.velocity.context.Context; 
     8import org.apache.velocity.exception.ResourceNotFoundException; 
    39import org.jergometer.Jergometer; 
    410import org.jergometer.control.BikeProgram; 
     
    1622import java.awt.event.*; 
    1723import java.util.ArrayList; 
     24import java.util.Locale; 
    1825import java.util.ResourceBundle; 
    1926import java.util.Enumeration; 
     
    2835 */ 
    2936public class MainWindow extends JFrame implements ActionListener, TreeSelectionListener, ListSelectionListener, KeyListener { 
     37  private static double kcalFactor = 0.239005736; 
     38 
    3039  private JPanel mainPanel; 
    31   private JLabel pulseLabel; 
    32   private JLabel speedLabel; 
    33   private JLabel distanceLabel; 
    34   private JLabel destPowerLabel; 
    35   private JLabel pedalRpmLabel; 
    36   private JLabel energyLabel; 
    37   private JLabel timeLabel; 
    38   private JLabel realPowerLabel; 
    3940  private Diagram diagram; 
    4041  private JTable sessionTable; 
     
    4344  private JButton recordButton; 
    4445  private JButton stopButton; 
     46  private BikeInfoPane bikeInfoPane; 
    4547 
    4648  // menu items 
     
    7173  private DefaultMutableTreeNode copiedProgramNode = null; 
    7274  private boolean movePrograms = false; 
     75  private DataRecord lastDataRecord; 
     76  private boolean kcal = false; 
    7377 
    7478  /** 
     
    9195    super(title); 
    9296    this.jergometer = jergometer; 
     97    $$$setupUI$$$(); 
    9398    setContentPane(mainPanel); 
    9499    createPopups(); 
     
    107112    programTree.getInputMap().getParent().remove(KeyStroke.getKeyStroke("control A")); 
    108113    programTree.setCellRenderer(new BetterTreeCellRenderer()); 
     114 
     115    // reset bikeInfoPane 
     116    bikeInfoPane.resetValues(); 
    109117 
    110118    // add listener 
     
    146154 
    147155  public void setData(DataRecord dataRecord) { 
    148     if (dataRecord.getPulse() != 0) { 
    149       pulseLabel.setText(dataRecord.getPulse() + ""); 
    150       pulseLabel.setForeground(Color.black); 
    151     } else { 
    152       pulseLabel.setText("?"); 
    153       pulseLabel.setForeground(Color.red); 
    154     } 
    155     pedalRpmLabel.setText(dataRecord.getPedalRpm() + " rpm"); 
    156     speedLabel.setText(String.format("%.1f km/h", (double) dataRecord.getSpeed() / 10)); 
    157     distanceLabel.setText(String.format("%.1f km", (double) dataRecord.getDistance() / 10)); 
    158     destPowerLabel.setText(dataRecord.getDestPower() + " W"); 
    159     energyLabel.setText(dataRecord.getEnergy() + " kJ"); 
    160     timeLabel.setText(dataRecord.getTime()); 
    161     realPowerLabel.setText(dataRecord.getRealPower() + " W"); 
     156    lastDataRecord = dataRecord; 
     157 
     158    updateBikeInfoPane(dataRecord); 
     159  } 
     160 
     161  public void updateBikeInfoPane(DataRecord dataRecord) { 
     162    if (dataRecord == null) return; 
     163 
     164    VelocityContext context = new VelocityContext(); 
     165    context.put("pulse", dataRecord.getPulse()); 
     166    context.put("pulseString", dataRecord.getPulse() == 0 ? "?" : "" + dataRecord.getPulse()); 
     167    context.put("pedalRpm", dataRecord.getPedalRpm()); 
     168    context.put("pedalRpmString", dataRecord.getPedalRpm() + "&nbsp;rpm"); 
     169    context.put("speed", dataRecord.getSpeed()); 
     170    context.put("speedString", String.format("%.1f&nbsp;km/h", (double) dataRecord.getSpeed() / 10)); 
     171    context.put("distance", dataRecord.getDistance()); 
     172    context.put("distanceString", dataRecord.getDistance() + "&nbsp;km"); 
     173    context.put("destPower", dataRecord.getDestPower()); 
     174    context.put("destPowerString", dataRecord.getDestPower() + "&nbsp;W"); 
     175    context.put("actPower", dataRecord.getRealPower()); 
     176    context.put("actPowerString", dataRecord.getRealPower() + "&nbsp;W"); 
     177    context.put("energy", dataRecord.getEnergy()); 
     178    String energyString = dataRecord.getEnergy() + "&nbsp;kJ"; 
     179    if (kcal) { 
     180      energyString = ((int) (dataRecord.getEnergy() * kcalFactor)) + "&nbsp;kcal"; 
     181    } 
     182    context.put("energyString", energyString); 
     183    context.put("timeString", dataRecord.getTime()); 
     184 
     185    bikeInfoPane.setContext(context); 
     186  } 
     187 
     188  public void bikeInfoPaneAction(String action) { 
     189    if (action.equals("energy")) { 
     190      kcal = !kcal; 
     191      updateBikeInfoPane(lastDataRecord); 
     192    } 
    162193  } 
    163194 
     
    804835  } 
    805836 
    806   { 
    807 // GUI initializer generated by IntelliJ IDEA GUI Designer 
    808 // >>> IMPORTANT!! <<< 
    809 // DO NOT EDIT OR ADD ANY CODE HERE! 
    810     $$$setupUI$$$(); 
     837  public void createUIComponents() { 
     838    try { 
     839      bikeInfoPane = new BikeInfoPane(this, getLangTemplate("org/jergometer/gui/templates/default")); 
     840    } catch (Exception e) { 
     841      e.printStackTrace(); 
     842    } 
     843  } 
     844 
     845  private Template getLangTemplate(String templateName) throws Exception { 
     846    String cc = Locale.getDefault().getCountry().toLowerCase(); 
     847    try { 
     848      return VelocityUtils.getTemplate(templateName + "_" + cc + ".vm"); 
     849    } catch (ResourceNotFoundException e) { 
     850      return VelocityUtils.getTemplate(templateName + ".vm"); 
     851    } 
    811852  } 
    812853 
     
    819860   */ 
    820861  private void $$$setupUI$$$() { 
     862    createUIComponents(); 
    821863    mainPanel = new JPanel(); 
    822864    mainPanel.setLayout(new GridBagLayout()); 
     
    895937    panel4.setLayout(new GridBagLayout()); 
    896938    gbc = new GridBagConstraints(); 
    897     gbc.gridx = 2; 
     939    gbc.gridx = 3; 
    898940    gbc.gridy = 0; 
    899941    gbc.gridheight = 3; 
    900942    gbc.insets = new Insets(0, 0, 0, 10); 
    901943    panel1.add(panel4, gbc); 
    902     final JLabel label1 = new JLabel(); 
    903     this.$$$loadLabelText$$$(label1, ResourceBundle.getBundle("org/jergometer/translation/jergometer").getString("property.pulse")); 
    904     gbc = new GridBagConstraints(); 
    905     gbc.gridx = 0; 
    906     gbc.gridy = 0; 
    907     gbc.anchor = GridBagConstraints.EAST; 
    908     gbc.insets = new Insets(5, 5, 5, 5); 
    909     panel4.add(label1, gbc); 
    910     final JLabel label2 = new JLabel(); 
    911     this.$$$loadLabelText$$$(label2, ResourceBundle.getBundle("org/jergometer/translation/jergometer").getString("property.pedal_rpm")); 
    912     gbc = new GridBagConstraints(); 
    913     gbc.gridx = 0; 
    914     gbc.gridy = 1; 
    915     gbc.anchor = GridBagConstraints.EAST; 
    916     gbc.insets = new Insets(5, 5, 5, 5); 
    917     panel4.add(label2, gbc); 
    918     final JLabel label3 = new JLabel(); 
    919     this.$$$loadLabelText$$$(label3, ResourceBundle.getBundle("org/jergometer/translation/jergometer").getString("property.speed")); 
    920     gbc = new GridBagConstraints(); 
    921     gbc.gridx = 0; 
    922     gbc.gridy = 2; 
    923     gbc.anchor = GridBagConstraints.EAST; 
    924     gbc.insets = new Insets(5, 5, 5, 5); 
    925     panel4.add(label3, gbc); 
    926     final JLabel label4 = new JLabel(); 
    927     this.$$$loadLabelText$$$(label4, ResourceBundle.getBundle("org/jergometer/translation/jergometer").getString("property.distance")); 
    928     gbc = new GridBagConstraints(); 
    929     gbc.gridx = 0; 
    930     gbc.gridy = 3; 
    931     gbc.anchor = GridBagConstraints.EAST; 
    932     gbc.insets = new Insets(5, 5, 5, 5); 
    933     panel4.add(label4, gbc); 
    934     final JLabel label5 = new JLabel(); 
    935     this.$$$loadLabelText$$$(label5, ResourceBundle.getBundle("org/jergometer/translation/jergometer").getString("property.dest_power")); 
    936     gbc = new GridBagConstraints(); 
    937     gbc.gridx = 0; 
    938     gbc.gridy = 4; 
    939     gbc.anchor = GridBagConstraints.EAST; 
    940     gbc.insets = new Insets(5, 5, 5, 5); 
    941     panel4.add(label5, gbc); 
    942     final JLabel label6 = new JLabel(); 
    943     this.$$$loadLabelText$$$(label6, ResourceBundle.getBundle("org/jergometer/translation/jergometer").getString("property.energy")); 
    944     gbc = new GridBagConstraints(); 
    945     gbc.gridx = 0; 
    946     gbc.gridy = 5; 
    947     gbc.anchor = GridBagConstraints.EAST; 
    948     gbc.insets = new Insets(5, 5, 5, 5); 
    949     panel4.add(label6, gbc); 
    950     final JLabel label7 = new JLabel(); 
    951     this.$$$loadLabelText$$$(label7, ResourceBundle.getBundle("org/jergometer/translation/jergometer").getString("property.time")); 
    952     gbc = new GridBagConstraints(); 
    953     gbc.gridx = 0; 
    954     gbc.gridy = 6; 
    955     gbc.anchor = GridBagConstraints.EAST; 
    956     gbc.insets = new Insets(5, 5, 5, 5); 
    957     panel4.add(label7, gbc); 
    958     final JLabel label8 = new JLabel(); 
    959     this.$$$loadLabelText$$$(label8, ResourceBundle.getBundle("org/jergometer/translation/jergometer").getString("property.real_power")); 
    960     gbc = new GridBagConstraints(); 
    961     gbc.gridx = 0; 
    962     gbc.gridy = 7; 
    963     gbc.anchor = GridBagConstraints.EAST; 
    964     gbc.insets = new Insets(5, 5, 5, 5); 
    965     panel4.add(label8, gbc); 
    966     destPowerLabel = new JLabel(); 
    967     destPowerLabel.setText("-"); 
    968     gbc = new GridBagConstraints(); 
    969     gbc.gridx = 1; 
    970     gbc.gridy = 4; 
    971     gbc.anchor = GridBagConstraints.WEST; 
    972     gbc.insets = new Insets(5, 5, 5, 5); 
    973     panel4.add(destPowerLabel, gbc); 
    974     pulseLabel = new JLabel(); 
    975     pulseLabel.setText("-"); 
    976     gbc = new GridBagConstraints(); 
    977     gbc.gridx = 1; 
    978     gbc.gridy = 0; 
    979     gbc.anchor = GridBagConstraints.WEST; 
    980     gbc.insets = new Insets(5, 5, 5, 5); 
    981     panel4.add(pulseLabel, gbc); 
    982     pedalRpmLabel = new JLabel(); 
    983     pedalRpmLabel.setText("-"); 
    984     gbc = new GridBagConstraints(); 
    985     gbc.gridx = 1; 
    986     gbc.gridy = 1; 
    987     gbc.anchor = GridBagConstraints.WEST; 
    988     gbc.insets = new Insets(5, 5, 5, 5); 
    989     panel4.add(pedalRpmLabel, gbc); 
    990     speedLabel = new JLabel(); 
    991     speedLabel.setText("-"); 
    992     gbc = new GridBagConstraints(); 
    993     gbc.gridx = 1; 
    994     gbc.gridy = 2; 
    995     gbc.anchor = GridBagConstraints.WEST; 
    996     gbc.insets = new Insets(5, 5, 5, 5); 
    997     panel4.add(speedLabel, gbc); 
    998     distanceLabel = new JLabel(); 
    999     distanceLabel.setText("-"); 
    1000     gbc = new GridBagConstraints(); 
    1001     gbc.gridx = 1; 
    1002     gbc.gridy = 3; 
    1003     gbc.anchor = GridBagConstraints.WEST; 
    1004     gbc.insets = new Insets(5, 5, 5, 5); 
    1005     panel4.add(distanceLabel, gbc); 
    1006     energyLabel = new JLabel(); 
    1007     energyLabel.setText("-"); 
    1008     gbc = new GridBagConstraints(); 
    1009     gbc.gridx = 1; 
    1010     gbc.gridy = 5; 
    1011     gbc.anchor = GridBagConstraints.WEST; 
    1012     gbc.insets = new Insets(5, 5, 5, 5); 
    1013     panel4.add(energyLabel, gbc); 
    1014     timeLabel = new JLabel(); 
    1015     timeLabel.setText("-"); 
    1016     gbc = new GridBagConstraints(); 
    1017     gbc.gridx = 1; 
    1018     gbc.gridy = 6; 
    1019     gbc.anchor = GridBagConstraints.WEST; 
    1020     gbc.insets = new Insets(5, 5, 5, 5); 
    1021     panel4.add(timeLabel, gbc); 
    1022     realPowerLabel = new JLabel(); 
    1023     realPowerLabel.setText("-"); 
    1024     gbc = new GridBagConstraints(); 
    1025     gbc.gridx = 1; 
    1026     gbc.gridy = 7; 
    1027     gbc.anchor = GridBagConstraints.WEST; 
    1028     gbc.insets = new Insets(5, 5, 5, 5); 
    1029     panel4.add(realPowerLabel, gbc); 
    1030944    welcomeLabel = new JLabel(); 
    1031945    welcomeLabel.setFont(new Font("Bitstream Vera Serif", Font.BOLD, 16)); 
     
    1060974    sessionTable = new JTable(); 
    1061975    scrollPane2.setViewportView(sessionTable); 
     976    bikeInfoPane.setBackground(UIManager.getColor("Label.background")); 
     977    bikeInfoPane.setContentType("text/html"); 
     978    bikeInfoPane.setEditable(false); 
     979    bikeInfoPane.setEnabled(true); 
     980    bikeInfoPane.setText("<html>\n  <head>\n\n  </head>\n  <body>\n    <p style=\"margin-top: 0\">\n      \n    </p>\n  </body>\n</html>\n"); 
     981    bikeInfoPane.putClientProperty("JEditorPane.honorDisplayProperties", Boolean.TRUE); 
     982    gbc = new GridBagConstraints(); 
     983    gbc.gridx = 2; 
     984    gbc.gridy = 0; 
     985    gbc.gridheight = 3; 
     986    gbc.fill = GridBagConstraints.HORIZONTAL; 
     987    panel1.add(bikeInfoPane, gbc); 
    1062988  } 
    1063989 
  • trunk/src/org/jergometer/gui/SettingsWindow.java

    r210 r212  
    11package org.jergometer.gui; 
    22 
     3import org.jergometer.communication.KetterBikeConnector; 
    34import org.jergometer.translation.I18n; 
    4 import org.jergometer.communication.BikeConnectorSerial; 
    55import org.jergometer.communication.BikeConnectionTester; 
    66import org.jergometer.JergometerSettings; 
     
    384384    try { 
    385385      // detect available serial ports 
    386       for (String s : BikeConnectorSerial.getPortNames()) { 
     386      for (String s : KetterBikeConnector.getPortNames()) { 
    387387        comboBoxModel.addElement(s); 
    388388        // check if this comport this the current comport 
  • trunk/src/org/jergometer/Jergometer.java

    r210 r212  
    198198    if (comPort == null) { 
    199199      throw new UnconfiguredSerialPortException(); 
    200     } 
    201     bikeConnector = new BikeConnectorSerial(comPort); 
     200    } else 
     201    if (comPort.equals("replay")) { 
     202      bikeConnector = new BikeConnectorSimulator(); 
     203    } else 
     204    if (comPort.startsWith("record:")) { 
     205      comPort = comPort.substring("record:".length()); 
     206      bikeConnector = new KetterBikeConnector(comPort); 
     207      bikeConnector.getReader().addBikeReaderListener(new FileRecorder(BikeConnectorSimulator.SIMULATOR_SESSION)); 
     208    } else { 
     209      bikeConnector = new KetterBikeConnector(comPort); 
     210    } 
    202211 
    203212    BikeReader bikeReader = bikeConnector.getReader(); 
  • trunk/src/org/jergometer/JergometerTestConsole.java

    r208 r212  
    2323// dynamic   
    2424 
    25   private BikeConnector bikeConnector; 
     25  private KetterBikeConnector bikeConnector; 
    2626 
    2727  public JergometerTestConsole() throws UnsupportedCommOperationException, BikeException { 
     
    3030 
    3131      if(osName.toLowerCase().startsWith("windows")) { 
    32         bikeConnector = new BikeConnectorSerial("COM1"); 
     32        bikeConnector = new KetterBikeConnector("COM1"); 
    3333      } else { 
    34         bikeConnector = new BikeConnectorSerial("/dev/ttyUSB0"); 
    35 //        bikeConnector = new BikeConnectorSerial("/dev/ttyS0"); 
     34        bikeConnector = new KetterBikeConnector("/dev/ttyUSB0"); 
     35//        bikeConnector = new KetterBikeConnector("/dev/ttyS0"); 
    3636      } 
    3737 
    38       BikeWriter bikeWriter = bikeConnector.getWriter(); 
    39       BikeReader bikeReader = bikeConnector.getReader(); 
     38      KettlerBikeWriter bikeWriter = bikeConnector.getWriter(); 
     39      KettlerBikeReader bikeReader = bikeConnector.getReader(); 
    4040      bikeReader.addBikeReaderListener(this); 
    4141      bikeReader.start(); 
     
    122122 
    123123          case 11: 
    124             bikeReader.setPrintAvailable(BikeReader.PrintAvailable.characters); 
     124            bikeReader.setPrintAvailable(KettlerBikeReader.PrintAvailable.characters); 
    125125            break; 
    126126 
    127127          case 12: 
    128             bikeReader.setPrintAvailable(BikeReader.PrintAvailable.decimals); 
     128            bikeReader.setPrintAvailable(KettlerBikeReader.PrintAvailable.decimals); 
    129129            break; 
    130130