@Test
  public void testSaveLoad() throws FileNotFoundException, IOException {
    System.out.println("---  testSaveLoad...");
    XMLEncoder xmlEncoder = null;
    FileOutputStream fos = null;
    BufferedOutputStream bos = null;

    File f = new File("testProjects/TEMP_PROJECTS/Test.ser");

    System.out.println("Saving to: " + f.getCanonicalPath());

    fos = new FileOutputStream(f);
    bos = new BufferedOutputStream(fos);
    xmlEncoder = new XMLEncoder(bos);

    // Metric m = Metric.PATH_LENGTH_FROM_ROOT;
    Object o1 = pg1;

    System.out.println("Pre: " + o1);

    // ProximalPref p = ProximalPref.MOST_PROX_AT_0;

    xmlEncoder.writeObject(o1);
    xmlEncoder.close();

    FileInputStream fis = new FileInputStream(f);
    BufferedInputStream bis = new BufferedInputStream(fis);
    XMLDecoder xd = new XMLDecoder(bis);

    Object o2 = xd.readObject();

    System.out.println("Post: " + o2);

    assertEquals(o2, o1);
  }
 /**
  * Create a new <code>PanelModel</code> from an object serialized using <code>XMLEncoder</code>.
  * For example,
  *
  * <pre>
  *   PanelModel pModel;
  *   Page page = new Page();
  *       try {
  *    pModel = PanelModel.loadFromXML(new BufferedInputStream(
  *                       new FileInputStream(outpath)));
  *    page.setPanelModel(pModel);
  *  } catch (FileNotFoundException fnfe) {
  *    JOptionPane.showMessageDialog(this, "Error openning file",
  *                                  "File Open Error", JOptionPane.ERROR_MESSAGE);
  *  } catch (InvalidObjectException ioe) {
  *    JOptionPane.showMessageDialog(this, "File does not contain a PanelModel",
  *                                  "PanelModel Not Found",
  *                                  JOptionPane.ERROR_MESSAGE);
  *  }
  *
  * </pre>
  *
  * @param is InputStream
  * @return PanelModel object
  * @throws InvalidObjectException
  * @see java.beans.XMLEncoder
  */
 public static PanelModel loadFromXML(InputStream is) throws InvalidObjectException {
   PanelModel pModel = null;
   XMLDecoder xd = new XMLDecoder(is);
   Object obj = xd.readObject();
   xd.close();
   if (obj instanceof PanelModel) {
     pModel = (PanelModel) obj;
     pModel.repair();
   } else {
     throw new InvalidObjectException("XML file does not contain a PanelModel");
   }
   return pModel;
 }
  public void load() {
    // show file chooser dialog
    int r = chooser.showOpenDialog(null);

    // if file selected, open
    if (r == JFileChooser.APPROVE_OPTION) {
      try {
        File file = chooser.getSelectedFile();
        XMLDecoder decoder = new XMLDecoder(new FileInputStream(file));
        decoder.readObject();
        decoder.close();
      } catch (IOException e) {
        JOptionPane.showMessageDialog(null, e);
      }
    }
  }