/**
  * Sets state of the frame, i.e. the location and dimension of the frame for the next use.
  *
  * @param s State to update to, or {@code null} to reset
  */
 public void setFrameState(String s) {
   try {
     _lastState = new FrameState(s);
   } catch (IllegalArgumentException e) {
     _lastState = null;
   }
   if (_lastState != null) {
     setSize(_lastState.getDimension());
     setLocation(_lastState.getLocation());
     int index = _lastState.getCurrentStrategyIndex();
     if ((index >= 0) && (index < _strategies.size())) {
       _currentStrategy = _strategies.get(index);
       _strategyBox.setSelectedIndex(index);
     }
     selectStrategy();
     validate();
   } else {
     Dimension parentDim = (_owner != null) ? _owner.getSize() : getToolkit().getScreenSize();
     // int xs = (int)parentDim.getWidth()/3;
     int ys = (int) parentDim.getHeight() / 4;
     // in line below, parentDim was _owner.getSize(); changed because former could generate
     // NullPointerException
     setSize(
         new Dimension(
             (int) getSize().getWidth(),
             (int) Math.min(parentDim.getHeight(), Math.max(ys, 300))));
     if (_owner != null) {
       setLocationRelativeTo(_owner);
     }
     _currentStrategy = _strategies.get(0);
     _strategyBox.setSelectedIndex(0);
     selectStrategy();
   }
 }
 /**
  * Sets state of the frame, i.e. the location and dimension of the frame for the next use.
  *
  * @param ds State to update to, or {@code null} to reset
  */
 public void setFrameState(FrameState ds) {
   _lastState = ds;
   if (_lastState != null) {
     setSize(_lastState.getDimension());
     setLocation(_lastState.getLocation());
     int index = _lastState.getCurrentStrategyIndex();
     if ((index >= 0) && (index < _strategies.size())) {
       _currentStrategy = _strategies.get(index);
       _strategyBox.setSelectedIndex(index);
     }
     selectStrategy();
     validate();
   }
 }