Changeset 202

Show
Ignore:
Timestamp:
04/07/11 21:47:15 (14 months ago)
Author:
stefan
Message:

implemented issues #167, #249, #250, #251

Location:
trunk
Files:
5 modified

Legend:

Unmodified
Added
Removed
  • trunk/CHANGELOG

    r200 r202  
    33 
    44== coming 0.7.10 == 
     5 
     62011-04-07 
     7* [stefan]  * fixed bug #249: incorrect distance and speed displayed (has to be devided by 10) 
     8            * implemented issue #167: mark real pulse red when pulse information is missing 
     9            * implemented issue #250: display units for distance, speed, power, ... 
     10            * implemented issue #251: select last training program after start 
    511 
    6122010-09-05 
  • trunk/src/org/jergometer/gui/MainWindow.java

    r192 r202  
    146146 
    147147  public void setData(DataRecord dataRecord) { 
    148     pulseLabel.setText(dataRecord.getPulse() + ""); 
    149     pedalRpmLabel.setText(dataRecord.getPedalRpm() + ""); 
    150     speedLabel.setText(dataRecord.getSpeed() + ""); 
    151     distanceLabel.setText(dataRecord.getDistance() + ""); 
    152     destPowerLabel.setText(dataRecord.getDestPower() + ""); 
    153     energyLabel.setText(dataRecord.getEnergy() + ""); 
     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"); 
    154160    timeLabel.setText(dataRecord.getTime()); 
    155     realPowerLabel.setText(dataRecord.getRealPower() + ""); 
     161    realPowerLabel.setText(dataRecord.getRealPower() + " W"); 
    156162  } 
    157163 
     
    477483              } catch (Exception e) { 
    478484                JOptionPane.showMessageDialog(mainWindow, I18n.getString("msg.could_not_open_file.please_configure_editor"), 
    479                     I18n.getString("msg.could_not_open_xml_editor"), JOptionPane.ERROR_MESSAGE); 
     485                  I18n.getString("msg.could_not_open_xml_editor"), JOptionPane.ERROR_MESSAGE); 
    480486                openSettingsWindow(); 
    481487              } 
     
    486492              } catch (IOException e) { 
    487493                JOptionPane.showMessageDialog(mainWindow, I18n.getString("msg.error_during_execution_of", command), 
    488                     I18n.getString("msg.could_not_open_xml_editor"), JOptionPane.ERROR_MESSAGE); 
     494                  I18n.getString("msg.could_not_open_xml_editor"), JOptionPane.ERROR_MESSAGE); 
    489495              } catch (InterruptedException ignored) { 
    490496              } 
  • trunk/src/org/jergometer/Jergometer.java

    r194 r202  
    1515 
    1616import javax.swing.*; 
     17import javax.swing.tree.DefaultMutableTreeNode; 
     18import javax.swing.tree.TreePath; 
    1719import java.awt.*; 
    1820import java.awt.event.*; 
     
    224226    jergometerSettings.setLastUserName(userName); 
    225227    userSettings = new UserSettings(jergometerSettings.getLastUserName()); 
     228    if (userSettings.getLastProgram() != null) { 
     229      DefaultMutableTreeNode programNode = programTree.getProgramNode(userSettings.getLastProgram()); 
     230      final TreePath path = new TreePath(programNode.getPath()); 
     231      SwingUtilities.invokeLater(new Runnable() { 
     232        @Override 
     233        public void run() { 
     234          mainWindow.getProgramTree().expandPath(path); 
     235          mainWindow.getProgramTree().getSelectionModel().setSelectionPath(path); 
     236          mainWindow.getProgramTree().scrollPathToVisible(path); 
     237        } 
     238      }); 
     239    } 
    226240    userData = new UserData(jergometerSettings.getLastUserName(), programTree); 
    227241    String[] userNames = jergometerSettings.getUserNames().toArray(new String[jergometerSettings.getUserNames().size()]); 
     
    412426    filterSessions(); 
    413427    visualizeBikeProgram(bikeProgram, bright, -1); 
     428 
     429    if (userSettings != null) { 
     430      userSettings.setLastProgram(bikeProgram.getProgramName()); 
     431    } 
    414432  } 
    415433 
  • trunk/src/org/jergometer/model/BikeProgramTree.java

    r127 r202  
    77import org.jergometer.translation.I18n; 
    88import org.jergometer.control.BikeProgram; 
     9import sun.security.action.GetPropertyAction; 
    910 
    1011import javax.swing.text.MutableAttributeSet; 
     
    2425  /** Root element of the tree. */ 
    2526  private DefaultMutableTreeNode root; 
    26   private HashMap<String,BikeProgram> allPrograms = new HashMap<String, BikeProgram>(); 
     27  private HashMap<String,DefaultMutableTreeNode> allProgramNodes = new HashMap<String, DefaultMutableTreeNode>(); 
    2728  private static final FileFilter FILE_FILTER = new FileFilter() { 
    2829    public boolean accept(File file) { 
     
    6768        BikeProgram program = new BikeProgram(file, relativePath, new BikeProgramData(doc.getRootElement())); 
    6869        newNode.setUserObject(program); 
    69         allPrograms.put(program.getProgramName(), program); 
     70        allProgramNodes.put(program.getProgramName(), newNode); 
    7071      } catch (Exception e) { 
    7172        System.err.println("Error parsing bike program."); 
     
    145146  } 
    146147 
     148  public DefaultMutableTreeNode getProgramNode(String name) { 
     149    return allProgramNodes.get(name); 
     150  } 
     151 
    147152  /** 
    148153   * Returns the bike program by name. 
     
    152157   */ 
    153158  public BikeProgram getProgram(String name) { 
    154     return allPrograms.get(name); 
     159    return (BikeProgram) allProgramNodes.get(name).getUserObject(); 
    155160  } 
    156161 
     
    206211      BikeProgram bikeProgram = (BikeProgram) node.getUserObject(); 
    207212 
    208       allPrograms.remove(bikeProgram.getProgramName()); 
     213      allProgramNodes.remove(bikeProgram.getProgramName()); 
    209214 
    210215      // delete the program file 
  • trunk/src/org/jergometer/UserSettings.java

    r76 r202  
    2727  private void load() { 
    2828    File settingsFile = new File(JergometerSettings.jergometerUsersDirName + "/" + userName + "/settings.xml"); 
    29     if (!settingsFile.exists()) { 
     29    if (settingsFile.exists()) { 
    3030      // default settings 
    3131      XMLParser parser = new XMLParser(); 
     
    3636        XMLElement users = root.getChildElement("programs"); 
    3737        lastProgram = users.getAttribute("lastprogram"); 
    38       } catch (Exception e) { 
     38      } catch (Exception ignored) { 
    3939      } 
    4040    } 
     
    6060      writer.write(doc.toString()); 
    6161      writer.close(); 
    62     } catch (IOException e) { 
     62    } catch (IOException ignored) { 
    6363    } 
    6464  }