titlePanel.add(new JLabel("<html><p>" + title + "</p></html>"));
titlePanel.add(new JLabel(title));
    InfoDialog(PlayerFrame frame) {                super("Movie Info");        this.setJMenuBar(new PlayerMenuBar(null));                this.getContentPane().setLayout(new BorderLayout());                JPanel titlePanel = new JPanel();        titlePanel.setLayout(new FlowLayout(FlowLayout.CENTER));        String title = frame.getTitle();        titlePanel.add(new JLabel("<html><p>" + title + "</p></html>"));        this.getContentPane().add(BorderLayout.NORTH, titlePanel);        this.getContentPane().add(BorderLayout.CENTER, new JSeparator());                eastPanel.setLayout(new GridLayout(10, 1));        westPanel.setLayout(new GridLayout(10, 1));        this.getContentPane().add(BorderLayout.EAST, eastPanel);        this.getContentPane().add(BorderLayout.WEST, westPanel);                DecimalFormat format = new DecimalFormat();        format.setMaximumFractionDigits(2);        this.addInfo("Source", frame.getFile().getPath());                DateFormat timeFormat = DateFormat.getTimeInstance(DateFormat.SHORT);        Movie movie = frame.getMovie();        try {            movie.getDuration();            this.addInfo("Format", "????");        }        catch (StdQTException e) {            // ???? Auto-generated catch block            e.printStackTrace();        }        try {            Track videoTrack = movie.getIndTrackType(1,               StdQTConstants.visualMediaCharacteristic, StdQTConstants.movieTrackCharacteristic);            double units = videoTrack.getMedia().getDuration();            double frames = videoTrack.getMedia().getSampleCount();            double unitsPerSecond = videoTrack.getMedia().getTimeScale();            double expectedRate = unitsPerSecond * frames / units;            String fps = format.format(expectedRate);            this.addInfo("FPS", fps);            String playingFPS = "????";            double rate = movie.getRate();            if (rate == 0.0) playingFPS = "(Available while movie is playing.)";            else {                playingFPS = format.format(rate * expectedRate);            }            this.addInfo("Playing FPS", playingFPS);        }        catch (StdQTException e) {            // ???? Auto-generated catch block            e.printStackTrace();        }        catch (QTException e) {            // ???? Auto-generated catch block            e.printStackTrace();        }        try {            int dataSize = movie.getDataSize(1, movie.getDuration());            double mb = dataSize/(1024.0*1024.0);            // format to two decimal places????            String mbs = format.format(mb) + " MB";            this.addInfo("Data Size", mbs);        }        catch (StdQTException e) {            // ???? Auto-generated catch block            e.printStackTrace();        }        try {            double length = movie.getTime() / (double) movie.getTimeScale();            String time = formatTime(length);            this.addInfo("Current Time", time);        }        catch (StdQTException e) {            // ???? Auto-generated catch block            e.printStackTrace();        }        try {            int duration = movie.getDuration();            double dataSizeInKiloBits = 8 * movie.getDataSize(1, duration) / 1024;            String dataRate = format.format(movie.getTimeScale() * dataSizeInKiloBits / duration) + " kbits/sec";            this.addInfo("Data Rate", dataRate);        }        catch (StdQTException e) {            // ???? Auto-generated catch block            e.printStackTrace();        }        try {            double length = movie.getDuration() / (double) movie.getTimeScale();            String time = formatTime(length);            this.addInfo("Duration", time);        }        catch (StdQTException e) {            // ???? Auto-generated catch block            e.printStackTrace();        }                try {            QDRect size = movie.getNaturalBoundsRect();            int movieHeight = size.getHeight();            int movieWidth = size.getWidth();            this.addInfo("Normal Size", movieWidth + " x " + movieHeight + " pixels");        }        catch (StdQTException e) {            // ???? Auto-generated catch block            e.printStackTrace();        }                try {            QDRect size = movie.getBox();            int movieHeight = size.getHeight();            int movieWidth = size.getWidth();            this.addInfo("Current Size", movieWidth + " x " + movieHeight + " pixels");        }        catch (StdQTException e) {            // ???? Auto-generated catch block            e.printStackTrace();        }                // move to right hand of screen????                this.pack();        this.setResizable(false);    }