Wait on frame until video finishes?

Hello,
Does anyone know if there's a way to tell flash to wait on a
frame until a video finishes playing, and then go to the next
frame? (I'm using progressive download. It has audio that needs to
stay in sync.)
Thank you for your help!

kalibahlutwo,
> I have imported an FLV and on import chose
"progressive",
> rather than embedding the video, because I read that if
the
> video has audio in it, it will stay syncronized better
with
> progressive than with embedded video.
I can neither confirm nor deny which plays better. But it's
good to
know we're dealing with external video.
> Flash automatically put the video into an FLVPlayback
> component.
Yupper. :) Now we're getting warmer.
> I would like to have the video play to the end, and then
> have the Flash movie automatically go to the next frame.
Here's the scoop. Just about everything in ActionScript can
be
described as an object. Objects are defined by something
called classes,
which you may think of as object blue prints. The FLVPlayback
Component,
for example, is defined by the FLVPlayback class, and you can
look up this
class entry in your documentation. Components are listed in
the Component
Language Reference and ActionScript clases are listed in the
ActionScript
2.0 Language Reference.
Classes define the properties of an object (the
characteristics it has),
its methods (things it can do), and its events (things it can
react to). So
class entries should definitely be your first stop, always.
If you're
dealing with a movie clip, look up the MovieClip class. If
you're dealing
with a dynamic or input text field, look up the TextField
class, and so on.
Consulting the FLVPlayback class, then, we find that
"FLVPlayback
extends the MovieClip class and wraps a VideoPlayer object.."
Okay, what
does that mean? Well, in this context, it means that any
FLVPlayback
instance -- such as the one on your Stage -- contains all the
features
(properties, methods, and events) of a movie clip, because it
*extends* the
MovieClip class. So this particular case is something of a
wild goose
chase. Normally, the answers you want are already at hand.
FLVPlayback is
a little different. But the documentation continues: "... and
wraps a
VideoPlayer object," so now we know to get more information
by looking up
the VideoPlayer class.
Bingo. Here's were we find the answer. The VideoPlayer class
includes
an event VideoPlayer.complete (see the Events summary in its
class entry).
It also contains a method VideoPlayer.addEventListener(),
which means we can
"listen" for the complete event. Good news.
So ... give your FLVPlayback Component instance an instance
name.
Select it and look at the Property inspector. Let's name it
vp, short for
video player. Create a new layer and name it "scripts" --
this is where
we'll put your ActionScript.
var listener:Object = new Object();
listener.complete = function() {
trace("complete!");
vp.addEventListener("complete", listener);
Here's what's going on. Events of the sort we're dealing
with can be
handled with a listener. A listener is just a generic Object
instance -- so
in line 1, we're declaring a variable arbitrarily named
listener. It's of
type Object and is set to a new Object instance.
This listener object acts as a proxy for the FLVPlayer
(actually, the
VideoPlayer) complete event. Via this listener, we assign a
function to a
complete property. In this example code, I'm simply having it
trace() the
string "complete!" to the Output panel. You'll want to have
it send the
main timeline to frame 2 -- _root.gotoAndStop(2);
Finally, our FLVPlayer instance, vp, invokes the
VideoPlayer.addEventListener() method to become a listener
for "complete"
events from the listener object.
Done. Badda bing. :)
David
stiller (at) quip (dot) net
Dev essays:
http://www.quip.net/blog/
"Luck is the residue of good design."

Similar Messages

  • External Flv video finish goto first frame

    Hi,
    I insert 1 external flv video in maintimeline 2 frame.
    when video finished goes to 1st frame.
    Plz Help Me............
    Thanks & Regards,
    Mandar

    fullscreenbtn.addEventListener(MouseEvent.CLICK,f);
    function f(e:MouseEvent):void{
    stage.displayStage="fullScreen";
    // make sure to use the allow fullscreen html template (file>publish settings>html).

  • This is how you extract frames from video

    right then, in answer to many posts about how to get the individual frames from video, here is my solution. it seems to work with mpg files but it doesnt seem to work with any of the avi files i tried. not sure why it doesnt work with those. i have modified javas frame access.
    nothing is displayed except it prints which frame it is doing.
    if anyone wants to improve it, please do. i still dont understand fully how it works so i probably wont be able to answer many questions about it. anyway here it is:
    * @(#)FrameAccess.java 1.5 01/03/13
    * Copyright (c) 1999-2001 Sun Microsystems, Inc. All Rights Reserved.
    * Sun grants you ("Licensee") a non-exclusive, royalty free, license to use,
    * modify and redistribute this software in source and binary code form,
    * provided that i) this copyright notice and license appear on all copies of
    * the software; and ii) Licensee does not utilize the software in a manner
    * which is disparaging to Sun.
    * This software is provided "AS IS," without a warranty of any kind. ALL
    * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, INCLUDING ANY
    * IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR
    * NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN AND ITS LICENSORS SHALL NOT BE
    * LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING
    * OR DISTRIBUTING THE SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR ITS
    * LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR DIRECT,
    * INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER
    * CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF THE USE OF
    * OR INABILITY TO USE SOFTWARE, EVEN IF SUN HAS BEEN ADVISED OF THE
    * POSSIBILITY OF SUCH DAMAGES.
    * This software is not designed or intended for use in on-line control of
    * aircraft, air traffic, aircraft navigation or aircraft communications; or in
    * the design, construction, operation or maintenance of any nuclear
    * facility. Licensee represents and warrants that it will not use or
    * redistribute the Software for such purposes.
    import java.awt.*;
    import javax.media.*;
    import javax.media.control.TrackControl;
    import javax.media.Format;
    import javax.media.format.*;
    import java.io.*;
    import javax.imageio.*;
    import javax.imageio.stream.*;
    import java.awt.image.*;
    import java.util.*;
    import javax.media.util.*;
    * Sample program to access individual video frames by using a
    * "pass-thru" codec. The codec is inserted into the data flow
    * path. As data pass through this codec, a callback is invoked
    * for each frame of video data.
    public class FrameAccess implements ControllerListener {
         Processor p;
         Object waitSync = new Object();
         boolean stateTransitionOK = true;
         public boolean alreadyPrnt = false;
         * Given a media locator, create a processor and use that processor
         * as a player to playback the media.
         * During the processor's Configured state, two "pass-thru" codecs,
         * PreAccessCodec and PostAccessCodec, are set on the video track.
         * These codecs are used to get access to individual video frames
         * of the media.
         * Much of the code is just standard code to present media in JMF.
         public boolean open(MediaLocator ml) {
              try {
                   p = Manager.createProcessor(ml);
              } catch (Exception e) {
                   System.err.println(
                        "Failed to create a processor from the given url: " + e);
                   return false;
              p.addControllerListener(this);
              // Put the Processor into configured state.
              p.configure();
              if (!waitForState(Processor.Configured)) {
                   System.err.println("Failed to configure the processor.");
                   return false;
              // So I can use it as a player.
              p.setContentDescriptor(null);
              // Obtain the track controls.
              TrackControl tc[] = p.getTrackControls();
              if (tc == null) {
                   System.err.println(
                        "Failed to obtain track controls from the processor.");
                   return false;
              // Search for the track control for the video track.
              TrackControl videoTrack = null;
              for (int i = 0; i < tc.length; i++) {
                   if (tc.getFormat() instanceof VideoFormat) videoTrack = tc[i];
                   else     tc[i].setEnabled(false);
              if (videoTrack == null) {
                   System.err.println("The input media does not contain a video track.");
                   return false;
              String videoFormat = videoTrack.getFormat().toString();
              Dimension videoSize = parseVideoSize(videoFormat);
              System.err.println("Video format: " + videoFormat);
              // Instantiate and set the frame access codec to the data flow path.
              try {
                   Codec codec[] = { new PostAccessCodec(videoSize)};
                   videoTrack.setCodecChain(codec);
              } catch (UnsupportedPlugInException e) {
                   System.err.println("The process does not support effects.");
              // Realize the processor.
              p.prefetch();
              if (!waitForState(Processor.Prefetched)) {
                   System.err.println("Failed to realise the processor.");
                   return false;
              p.start();
              return true;
         /**parse the size of the video from the string videoformat*/
         public Dimension parseVideoSize(String videoSize){
              int x=300, y=200;
              StringTokenizer strtok = new StringTokenizer(videoSize, ", ");
              strtok.nextToken();
              String size = strtok.nextToken();
              StringTokenizer sizeStrtok = new StringTokenizer(size, "x");
              try{
                   x = Integer.parseInt(sizeStrtok.nextToken());
                   y = Integer.parseInt(sizeStrtok.nextToken());
              } catch (NumberFormatException e){
                   System.out.println("unable to find video size, assuming default of 300x200");
              System.out.println("Image width = " + String.valueOf(x) +"\nImage height = "+ String.valueOf(y));
              return new Dimension(x, y);
         * Block until the processor has transitioned to the given state.
         * Return false if the transition failed.
         boolean waitForState(int state) {
              synchronized (waitSync) {
                   try {
                        while (p.getState() != state && stateTransitionOK)
                             waitSync.wait();
                   } catch (Exception e) {
              return stateTransitionOK;
         * Controller Listener.
         public void controllerUpdate(ControllerEvent evt) {
              if (evt instanceof ConfigureCompleteEvent
                   || evt instanceof RealizeCompleteEvent
                   || evt instanceof PrefetchCompleteEvent) {
                   synchronized (waitSync) {
                        stateTransitionOK = true;
                        waitSync.notifyAll();
              } else if (evt instanceof ResourceUnavailableEvent) {
                   synchronized (waitSync) {
                        stateTransitionOK = false;
                        waitSync.notifyAll();
              } else if (evt instanceof EndOfMediaEvent) {
                   p.close();
                   System.exit(0);
         * Main program
         public static void main(String[] args) {
              if (args.length == 0) {
                   prUsage();
                   System.exit(0);
              String url = args[0];
              if (url.indexOf(":") < 0) {
                   prUsage();
                   System.exit(0);
              MediaLocator ml;
              if ((ml = new MediaLocator(url)) == null) {
                   System.err.println("Cannot build media locator from: " + url);
                   System.exit(0);
              FrameAccess fa = new FrameAccess();
              if (!fa.open(ml))
                   System.exit(0);
         static void prUsage() {
              System.err.println("Usage: java FrameAccess <url>");
         * Inner class.
         * A pass-through codec to access to individual frames.
         public class PreAccessCodec implements Codec {
              * Callback to access individual video frames.
              void accessFrame(Buffer frame) {
                   // For demo, we'll just print out the frame #, time &
                   // data length.
                   long t = (long) (frame.getTimeStamp() / 10000000f);
                   System.err.println(
                        "Pre: frame #: "
                             + frame.getSequenceNumber()
                             + ", time: "
                             + ((float) t) / 100f
                             + ", len: "
                             + frame.getLength());
              * The code for a pass through codec.
              // We'll advertize as supporting all video formats.
              protected Format supportedIns[] = new Format[] { new VideoFormat(null)};
              // We'll advertize as supporting all video formats.
              protected Format supportedOuts[] = new Format[] { new VideoFormat(null)};
              Format input = null, output = null;
              public String getName() {
                   return "Pre-Access Codec";
              //these dont do anything
              public void open() {}
              public void close() {}
              public void reset() {}
              public Format[] getSupportedInputFormats() {
                   return supportedIns;
              public Format[] getSupportedOutputFormats(Format in) {
                   if (in == null)
                        return supportedOuts;
                   else {
                        // If an input format is given, we use that input format
                        // as the output since we are not modifying the bit stream
                        // at all.
                        Format outs[] = new Format[1];
                        outs[0] = in;
                        return outs;
              public Format setInputFormat(Format format) {
                   input = format;
                   return input;
              public Format setOutputFormat(Format format) {
                   output = format;
                   return output;
              public int process(Buffer in, Buffer out) {
                   // This is the "Callback" to access individual frames.
                   accessFrame(in);
                   // Swap the data between the input & output.
                   Object data = in.getData();
                   in.setData(out.getData());
                   out.setData(data);
                   // Copy the input attributes to the output
                   out.setFlags(Buffer.FLAG_NO_SYNC);
                   out.setFormat(in.getFormat());
                   out.setLength(in.getLength());
                   out.setOffset(in.getOffset());
                   return BUFFER_PROCESSED_OK;
              public Object[] getControls() {
                   return new Object[0];
              public Object getControl(String type) {
                   return null;
         public class PostAccessCodec extends PreAccessCodec {
              // We'll advertize as supporting all video formats.
              public PostAccessCodec(Dimension size) {
                   supportedIns = new Format[] { new RGBFormat()};
                   this.size = size;
              * Callback to access individual video frames.
              void accessFrame(Buffer frame) {
                   // For demo, we'll just print out the frame #, time &
                   // data length.
                   if (!alreadyPrnt) {
                        BufferToImage stopBuffer = new BufferToImage((VideoFormat) frame.getFormat());
                        Image stopImage = stopBuffer.createImage(frame);
                        try {
                             BufferedImage outImage = new BufferedImage(size.width, size.height, BufferedImage.TYPE_INT_RGB);
                             Graphics og = outImage.getGraphics();
                             og.drawImage(stopImage, 0, 0, size.width, size.height, null);
                             //prepareImage(outImage,rheight,rheight, null);
                             Iterator writers = ImageIO.getImageWritersByFormatName("jpg");
                             ImageWriter writer = (ImageWriter) writers.next();
                             //Once an ImageWriter has been obtained, its destination must be set to an ImageOutputStream:
                             File f = new File(frame.getSequenceNumber() + ".jpg");
                             ImageOutputStream ios = ImageIO.createImageOutputStream(f);
                             writer.setOutput(ios);
                             //Finally, the image may be written to the output stream:
                             //BufferedImage bi;
                             //writer.write(imagebi);
                             writer.write(outImage);
                             ios.close();
                        } catch (IOException e) {
                             System.out.println("Error :" + e);
                   //alreadyPrnt = true;
                   long t = (long) (frame.getTimeStamp() / 10000000f);
                   System.err.println(
                        "Post: frame #: "
                             + frame.getSequenceNumber()
                             + ", time: "
                             + ((float) t) / 100f
                             + ", len: "
                             + frame.getLength());
              public String getName() {
                   return "Post-Access Codec";
              private Dimension size;

    The quality of the produced video from this example is very poor.
    It comes to huuuuge surprise the following fact.
    If you comment the line where you set the PostAccessCodec, the chain of the codecs is:
    MPEG-1 decoder -> YUV2RGB -> Direct Draw Renderer. ( The one used from the system to decode and render)
    If you run the example purely as is above you get the following sequence(as long with the poor quality):
    MPEG-1 decoder -> YUV2RGB -> Windows GDI Renderer.
    So you say lets set another Renderer. So
    you add the following line videoTracker.setRenderer( new DDRenderer() )
    What comes to a surprise is the following chain of codecs:
    MPEG-1 decoder -> YUV2RGB -> Post Codec -> Java RGB Converter - > DDRenderer
    The quality now may be perfect but video runs to slow. The surprising thing here is that even though we have set the outputFormat of the PostAccessFrame codec to RGBFormat the system converts it again to RGB through codec Java RGB Format.
    After searching a lot and reaching the conclusion that the deference between the 2 RGB's is their sizes I sudently was brought in front of a method called grabFrame(). Bels started ringing inside my head. Starts were comming up. Looking at the definition of the class com.sun.media.renderer.video.DDRenderer I descovered that this damn class implements the FrameGrabbingControl Interface. What the f.....? The problem that consumed 4 days of my life and multiplied with 10 to give hours has finally come to an and.
    Summing up the solution for grabbing frames is this!!!!!
    DDRenderer renderer = new DDRenderer();
    videoTrack.setRenderer( renderer );
    and in your actionPerformed implementation
    FrameGrabbingControl fr = (FrameGrabbingControl)renderer.getControl( "javax.media.control.FrameGrabbingControl");
    Buffer frame = fr.grabFrame();
    The following stuff ...are stated in FrameAccess
    --Sniper

  • Hold on Frame until cuepoint = end

    Hi all,
    I am still struggling with a basic problem (yes I am a lingo
    newbie).
    Simply, I want to hold on a frame until a sound is finished.
    I am trying to write something that checks if the cuepoint "end" is
    reached, else it loops. If cuepoint "end" is reached, then it
    should go next marker.
    I know it sounds simple, but I am lost here.
    Any ideas would be great and helpful! Thanks in
    advance!!!

    This is the script I was using - placed in the script
    channel. I wasn't
    checking for the name of the cuepoint, just that one had
    occurred. But,
    I'm, sure you can modify it a little bit to find the name.
    --Holds playback head on frame until cuepoint is passed in
    audio file
    --Audio file must be in sound channel 2
    --(Use Sound Forge to place markers in audio file.)
    --(Use for slide shows.)
    on enterframe
    if soundBusy(2) = 0 then
    go to the frame + 1
    end if
    on cuepassed channel, number, name
    go the frame + 1
    end
    on exitFrame
    go to the frame
    end
    > Simply, I want to hold on a frame until a sound is
    finished. I am trying
    > to
    > write something that checks if the cuepoint "end" is
    reached, else it
    > loops. If
    > cuepoint "end" is reached, then it should go next
    marker.

  • Getting a JFrame to display  from a JSP, remaining JSP code waits for frame

    Hello,
    I'm new to Java and just started using JSPs. My objective is to call a display window (from a JSP) that shows the user a list of project selections. Once the user has made their selections and clicked a Submit button, the display class captures the selected projects to the request object as an attribute and then closes the window. The next command in the jsp then forwards the request attribute to a controller. I'm having trouble getting the display window to show-the JSP seems to hang and then timeout. Is there code I'm missing to get the JSP to stop processing while it waits for the choices to be made in the JFrame?
    Below is the JSP code and the class I'm calling. I'm seeing all my debug System.out statements but no JFrame pops up. In the JFrame class, the line f.addWindowListener(... does the capture of user selections to the request attribute.
    Any help will be greatly appreciated!!
    JSP:
    <%@ page language="java" contentType="text/html;charset=UTF-8" import="com.plumtree.remote.portlet.*,edu.app.projects.*" %>
    <%
        request.setAttribute("action", "prefDisplay");
        request.setAttribute("orderby", "title");
        ServletContext jc = getServletContext();
        DualListBox dual = new DualListBox(request,(String)jc.getAttribute("db.driver"), (String)jc.getAttribute("db.connectionstring"),"title");
         JFrame f = dual.getFrame();
         f.setVisible(true);//expect code to stop here and display frame, waiting for the user to finish.
            //Debug code that tests if frame is visible at this point -came true though did not see Jframe displayed
         if(f.isShowing()){
         System.out.println("Jframe visible");}
           //Send to ProjectsController
          request.getRequestDispatcher("pc").forward(request, response);%>               ---------------------------------------------------------------------------------------------
    JFrame Class (below)
    -Sets up Frame and corresponding Dialog box
    -Populates Dialog box with options from a database call (for user selection)
    -Should wait for user input - Window close or Submit! to capture selection and dispose of Jframe
    import java.awt.BorderLayout;
    import java.awt.Color;
    import java.awt.EventQueue;
    import java.awt.Frame;
    import java.awt.GridBagConstraints;
    import java.awt.GridBagLayout;
    import java.awt.Insets;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.WindowEvent;
    import java.lang.reflect.InvocationTargetException;
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.Collection;
    import java.util.Iterator;
    import java.util.SortedSet;
    import java.util.TreeSet;
    import javax.servlet.http.HttpServletRequest;
    import javax.swing.AbstractListModel;
    import javax.swing.BorderFactory;
    import javax.swing.JButton;
    import javax.swing.JDialog;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JList;
    import javax.swing.JPanel;
    import javax.swing.JScrollPane;
    import javax.swing.ListCellRenderer;
    import javax.swing.ListModel;
    public class DualListBox extends JPanel {
      private static final long serialVersionUID = 1L;
      private static final Insets EMPTY_INSETS = new Insets(0, 0, 0, 0);
      private static final String ADD_BUTTON_LABEL = "Add >>";
      private static final String REMOVE_BUTTON_LABEL = "<< Remove";
      private static final String DONE_BUTTON_LABEL = "Submit!";
      private static final String DEFAULT_SOURCE_CHOICE_LABEL = "Available Projects";
      private static final String DEFAULT_DEST_CHOICE_LABEL = "Your Selections";
      private String orderby, mydriver, connectionString;
      private JLabel sourceLabel;
      private JList sourceList;
      private SortedListModel sourceListModel;
      private JList destList;
      private String chosenprojects;
      private SortedListModel destListModel;
      private JLabel destLabel;
      private JButton addButton;
      private JButton removeButton;
      private JButton doneButton;
      private DatabaseHelper dh;
      protected HttpServletRequest request;
      protected JFrame f;
      protected JDialog jd;
      public DualListBox(HttpServletRequest req, String driver, String connection, String ordering) {
         System.out.println("In DualList Setup");
        request =req;
         orderby =ordering;
         connectionString = connection;
         mydriver = driver;
         f = new JFrame("Projects List Selector");     
         jd =new JDialog(f,true);
         jd.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
         System.out.println("B4 initscreen");
        initScreen();
        System.out.println("After initscreen");
        String[] DBprojects = this.dbCall();
        System.out.println("After DB Call");
        this.addSourceElements( DBprojects );   
        System.out.println("Filled screen");
        jd.getContentPane().add(this, BorderLayout.CENTER);
        //f.getContentPane().add(jd, BorderLayout.CENTER);
        jd.setSize(800, 600);
        System.out.println("OK2");
        jd.setVisible(true);
        System.out.println("OK3");
        Runnable runner = new FrameShower(jd);
        EventQueue.invokeLater(runner);
      public String getSourceChoicesTitle() {
        return sourceLabel.getText();
      public String chosenprojects() {
             return chosenprojects;
      public JFrame getFrame() {
             return f;
      public void setSourceChoicesTitle(String newValue) {
        sourceLabel.setText(newValue);
      public String getDestinationChoicesTitle() {
        return destLabel.getText();
      public void setDestinationChoicesTitle(String newValue) {
        destLabel.setText(newValue);
      public void clearSourceListModel() {
        sourceListModel.clear();
      public void clearDestinationListModel() {
        destListModel.clear();
      public void addSourceElements(ListModel newValue) {
        fillListModel(sourceListModel, newValue);
      public void setSourceElements(ListModel newValue) {
        clearSourceListModel();
        addSourceElements(newValue);
      public void addDestinationElements(ListModel newValue) {
        fillListModel(destListModel, newValue);
      private String[] dbCall(){
             if(dh==null)
                  dh = new DatabaseHelper(mydriver, connectionString);
              PreparedStatement ps = null;
              ResultSet rs = null;
              ArrayList<String>children = new ArrayList<String>();
              ArrayList<String[]>tree =new ArrayList<String[]>();
              if(orderby==null || orderby.equals("")){
                   orderby ="region";
              String query = "select title,id from projects";// order by " + orderby;
              System.out.println(query);
              try {
                   Connection conn =dh.getConnection();
                   ps = conn.prepareStatement(query);
                   rs = ps.executeQuery();
                   while (rs.next()) {
                        children.add(new String(rs.getString(1)));
                        System.out.println(rs.getString(1));
                        tree.add(new String[]{rs.getString(1),rs.getString(2)});
                   request.setAttribute("ResultTree",tree);
                   return (String[])children.toArray(new String[children.size()]);
              } catch (SQLException e) {
                   throw new RuntimeException(e);
              } finally {
                   try {
                        if (null != rs) rs.close();
                   } catch (SQLException e) {
                   try {
                        if (null != ps) ps.close();
                   } catch (SQLException e) {
      private void fillListModel(SortedListModel model, ListModel newValues) {
        int size = newValues.getSize();
        for (int i = 0; i < size; i++) {
          model.add(newValues.getElementAt(i));
      public void addSourceElements(Object newValue[]) {
        fillListModel(sourceListModel, newValue);
      public void setSourceElements(Object newValue[]) {
        clearSourceListModel();
        addSourceElements(newValue);
      public void addDestinationElements(Object newValue[]) {
        fillListModel(destListModel, newValue);
      private void fillListModel(SortedListModel model, Object newValues[]) {
        model.addAll(newValues);
      public Iterator sourceIterator() {
        return sourceListModel.iterator();
      public Iterator destinationIterator() {
        return destListModel.iterator();
      public void setSourceCellRenderer(ListCellRenderer newValue) {
        sourceList.setCellRenderer(newValue);
      public ListCellRenderer getSourceCellRenderer() {
        return sourceList.getCellRenderer();
      public void setDestinationCellRenderer(ListCellRenderer newValue) {
        destList.setCellRenderer(newValue);
      public ListCellRenderer getDestinationCellRenderer() {
        return destList.getCellRenderer();
      public void setVisibleRowCount(int newValue) {
        sourceList.setVisibleRowCount(newValue);
        destList.setVisibleRowCount(newValue);
      public int getVisibleRowCount() {
        return sourceList.getVisibleRowCount();
      public void setSelectionBackground(Color newValue) {
        sourceList.setSelectionBackground(newValue);
        destList.setSelectionBackground(newValue);
      public Color getSelectionBackground() {
        return sourceList.getSelectionBackground();
      public void setSelectionForeground(Color newValue) {
        sourceList.setSelectionForeground(newValue);
        destList.setSelectionForeground(newValue);
      public Color getSelectionForeground() {
        return sourceList.getSelectionForeground();
      public String getProjects(){
           return chosenprojects;
      private void clearSourceSelected() {
        Object selected[] = sourceList.getSelectedValues();
        for (int i = selected.length - 1; i >= 0; --i) {
          sourceListModel.removeElement(selected);
    sourceList.getSelectionModel().clearSelection();
    private void clearDestinationSelected() {
    Object selected[] = destList.getSelectedValues();
    for (int i = selected.length - 1; i >= 0; --i) {
    destListModel.removeElement(selected[i]);
    destList.getSelectionModel().clearSelection();
    private void initScreen() {
    setBorder(BorderFactory.createEtchedBorder());
    setLayout(new GridBagLayout());
    sourceLabel = new JLabel(DEFAULT_SOURCE_CHOICE_LABEL);
    sourceListModel = new SortedListModel();
    sourceList = new JList(sourceListModel);
    add(sourceLabel, new GridBagConstraints(0, 0, 1, 1, 0, 0,
    GridBagConstraints.CENTER, GridBagConstraints.NONE,
    EMPTY_INSETS, 0, 0));
    add(new JScrollPane(sourceList), new GridBagConstraints(0, 1, 1, 5, .5,
    1, GridBagConstraints.CENTER, GridBagConstraints.BOTH,
    EMPTY_INSETS, 0, 0));
    addButton = new JButton(ADD_BUTTON_LABEL);
    add(addButton, new GridBagConstraints(1, 2, 1, 2, 0, .25,
    GridBagConstraints.CENTER, GridBagConstraints.NONE,
    EMPTY_INSETS, 0, 0));
    addButton.addActionListener(new AddListener());
    removeButton = new JButton(REMOVE_BUTTON_LABEL);
    add(removeButton, new GridBagConstraints(1, 4, 1, 2, 0, .25,
    GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(
    0, 5, 0, 5), 0, 0));
    removeButton.addActionListener(new RemoveListener());
    doneButton = new JButton(DONE_BUTTON_LABEL);
    add(doneButton, new GridBagConstraints(1, 6, 1, 2, 0, .25,
    GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(
    0, 10, 0, 10), 0, 0));
    doneButton.addActionListener(new DoneListener());
    f.addWindowListener(new java.awt.event.WindowAdapter() {
         public void windowClosing(WindowEvent winEvt) {
              //could set to null here to force use of Done button only
         chosenprojects = destList.getSelectedValues().toString();
              request.setAttribute("ProjectIDs", destList.getSelectedValues().toString());
              System.exit(0);
    destLabel = new JLabel(DEFAULT_DEST_CHOICE_LABEL);
    destListModel = new SortedListModel();
    destList = new JList(destListModel);
    add(destLabel, new GridBagConstraints(2, 0, 1, 1, 0, 0,
    GridBagConstraints.CENTER, GridBagConstraints.NONE,
    EMPTY_INSETS, 0, 0));
    add(new JScrollPane(destList), new GridBagConstraints(2, 1, 1, 5, .5,
    1.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH,
    EMPTY_INSETS, 0, 0));
    private class AddListener implements ActionListener {
    public void actionPerformed(ActionEvent e) {
    Object selected[] = sourceList.getSelectedValues();
    addDestinationElements(selected);
    clearSourceSelected();
    private class RemoveListener implements ActionListener {
    public void actionPerformed(ActionEvent e) {
    Object selected[] = destList.getSelectedValues();
    addSourceElements(selected);
    clearDestinationSelected();
    private class DoneListener implements ActionListener {
         public void actionPerformed(ActionEvent e) {
         chosenprojects = destList.getSelectedValues().toString();
         request.setAttribute("ProjectIDs", destList.getSelectedValues().toString());
         System.exit(0);      
    class FrameShower implements Runnable {
         final JDialog frame;
         public FrameShower(JDialog frame) {
              this.frame = frame;
         public void run() {
              System.out.println("B4 make visible");
              frame.setVisible(true);          
         System.out.println("Made screen visible");
    class SortedListModel extends AbstractListModel {
    private static final long serialVersionUID = 8777627817685130496L;
    SortedSet model;
    public SortedListModel() {
    model = new TreeSet();
    public int getSize() {
    return model.size();
    public Object getElementAt(int index) {
    return model.toArray()[index];
    public void add(Object element) {
    if (model.add(element)) {
    fireContentsChanged(this, 0, getSize());
    public void addAll(Object elements[]) {
    Collection c = Arrays.asList(elements);
    model.addAll(c);
    fireContentsChanged(this, 0, getSize());
    public void clear() {
    model.clear();
    fireContentsChanged(this, 0, getSize());
    public boolean contains(Object element) {
    return model.contains(element);
    public Object firstElement() {
    return model.first();
    public Iterator iterator() {
    return model.iterator();
    public Object lastElement() {
    return model.last();
    public boolean removeElement(Object element) {
    boolean removed = model.remove(element);
    if (removed) {
    fireContentsChanged(this, 0, getSize());
    return removed;
    }{code}
    Edited by: redm14A on Oct 10, 2007 11:34 AM
    Edited by: redm14A on Oct 10, 2007 11:37 AM
    Edited by: redm14A on Oct 10, 2007 11:40 AM
    Edited by: redm14A on Oct 10, 2007 11:45 AM
    Edited by: redm14A on Oct 10, 2007 11:47 AM

    redm14A wrote:
    Hmm, I was trying to avoid writing an applet. Seems my only other option then is to write a JSP that returns a javascript menu populated by options from a database call. Then I'd have the user click submit to send the options to another JSP that simply sets the request attribute and forwards to the controller. Will this be a sound alternative?
    Edited by: redm14A on Oct 10, 2007 12:29 PMSounds good to me.

  • Compressor 4.1.3 hangs Waiting for Create Disc to Finish

    Compressor 4.1.3 hangs at the "Waiting for Create Disc to Finish" stage.  The audio and video streams have been created and are in Finder. The correct drive has been selected in the Actions section and there is a disk in the drive. I have run Compressor Repair.  However there is no activity at the drive (which otherwise works fine and will burn a disk from Finder).  Anyone any ideas?

    I'e not run into this before. Try a different clip – preferably a QuickTime movie. Bring that into Compressor and mark a short section with in and out points. Choose Hard Drive for Output Device in the Job Action section. What happens after you submit it?
    Russ

  • Mixed frame rate video clips on the same Blu-ray disc

    Before I go into the detail, this actually isn’t an issue for me, but more of a finding the answer to a different question, so please bear with me.
    To explain:  I live in the UK, and I’m forever challenged by the different native video frame rates imposed by the PAL and NTSC standards.  Every consumer camcorder I’ve ever seen only produces HD output (1920 x 1080) at either 50 fields/second interlaced, or 25 (sometimes 50) frames/second progressive.  Some action cameras (Go Pro) I possess allow me to record at 30fps progressive, in full HD, which for fast movement is simply better.  This in itself is not really a problem, but I use other software (all USA sourced) for video production whose best results are only visible when the finished HD output is 1080/60i.
    Having mixed frame rate video is a real problem for the DVD standard, but no so much for Blu-ray. Indeed Adobe Encore neatly gets around this problem, so I can actually author a Blu-ray disc which contains full HD video clips that may be either 50i or 60i.  Both types of video exist on the same disc, and when played back through a Blu-ray player/TV combination, the resultant video clips are shown correctly. Player and TV switch seamlessly to the correct setting to handle the video content.  So, I have a solution to my problem, but at the same time, a question I can’t find an answer to, which is this:
    Does the Blu-ray specification allow video clips of different native frame rates (i.e. 25fps and 30fps) assuming the resolution is the same, to co-exist on the same Blu-ray disc as a supported feature?
    It works, but I can’t find one shred of information that says what I’m doing is supported.
    Comments are most welcome.
    Regards,
    Steve

    Stan Jones wrote:
    Encore requires you to specify the project type as PAL or NTSC (whether you start it as Bluray or DVD), and does not allow you to change it later. Also, if you try to create a transcode type for PAL in an NTSC project you cannot get to the 25 fps setting (and therefore, I think, cannot do it).
    But if you import a Bluray legal 25i file to an NTSC project, it is happily added.
    DVD player conventional wisdom is that PAL players handle NTSC disks, but NTSC players do not generally handle PAL disks. I never quite understood why the TVs were not more of the issue. Do Bluray players even differentiate between PAL and NTSC?
    Even if the player will handle PAL, the TV may well not do so - so there is more going on.
    NTSC uses (generally) 60Hz systems whereas PAL is 50Hz hence the problem.
    Do not try to mix standards as it will not be allowed - however, multiple frame rates are allowed as long as they are within spec for that TV standard.
    They are best avoided though - otherwise you run a very real chance of serious asset truncation as the TV display switches between different resolutions & frame rates.

  • Is it possible to prevent slide advancement before video finishes?

    Hi all,
    I've imported a couple of .flv videos and placed them on separate slides.
    The user would watch these videos before reaching a couple of quiz questions.  I want to prevent the user from advancing before the video finishes, and, after the video finishes, have the project advance to the next slide, automatically.  So, essentially the user would sit back, put their feet up, and be able to watch several videos without having to touch the computer.  They would also be unable to "cheat" and reach the quiz questions before the video is done.
    Is there a way to do this?  I'm using a trial version of Captivate 5.  I'm thinking I'll have to make custom navigation buttons.
    Thanks in advance!
    Annie

    I figured it out.  I used this blog to get rid of the default navigation:
    http://blog.integratedlearningservices.com/2010/07/about-year-ago-i-posted-instructions-on .html
    And then on the video slides I changed the properties to get rid of the skin on the flv video, displayed it for the rest of the slide, and paused the slide until the end of the video.
    Important to note: it didn't work if I added my own navigation buttons in there.  The video would reach the end and then it would not advance.

  • Modal dialog does not close until function finish

    Hello
    I am a modal dialog (yes/no buttons). When user selects YES, a function is executed. My problem is: Dialogo does not close until function finish.
    Many thanks for your help.
    This is the call to show modal dialog:
    boolean myRes;
    dlgYesNo.setTitle(" SINCRONIZE");
    dlgYesNo.setPreguntaUp("�Do you want to sincronize?");
    dlgYesNo.show();
    myRes = dlgYesNo.respDialogo();
    if (!myRes) return; // User selects NO
    sincronizeData(); //MODAL DIALOG DOES NOT CLOSE UNTIL THIS FUNCTION FINISH!!!
    This is the class to create modal dialog:
    public class DialogoYesNo extends java.awt.Dialog {
    /** Creates new form DialogoYesNo */
    public DialogoYesNo(java.awt.Frame parent, boolean modal) {
    super(parent, modal);
    initComponents();
    this.setSize(200,125);
    this.setResizable(false);
    Dimension d = this.getToolkit().getScreenSize();
    this.setLocation((d.width-getSize().width)/2, (d.height-getSize().height)/2);
    /** This method is called from within the constructor to
    * initialize the form.
    * WARNING: Do NOT modify this code. The content of this method is
    * always regenerated by the Form Editor.
    private void initComponents() {
    btYes = new java.awt.Button();
    lblDialogCentro = new java.awt.Label();
    lblDialogUp = new java.awt.Label();
    btNo = new java.awt.Button();
    lblDialogDown = new java.awt.Label();
    setLayout(null);
    addWindowListener(new java.awt.event.WindowAdapter() {
    public void windowClosing(java.awt.event.WindowEvent evt) {
    closeDialog(evt);
    btYes.setLabel("Si");
    btYes.addActionListener(new java.awt.event.ActionListener() {
    public void actionPerformed(java.awt.event.ActionEvent evt) {
    btYesActionPerformed(evt);
    add(btYes);
    btYes.setBounds(30, 80, 60, 24);
    lblDialogCentro.setAlignment(java.awt.Label.CENTER);
    lblDialogCentro.setText("a");
    add(lblDialogCentro);
    lblDialogCentro.setBounds(10, 40, 180, 20);
    lblDialogUp.setAlignment(java.awt.Label.CENTER);
    add(lblDialogUp);
    lblDialogUp.setBounds(10, 30, 180, 20);
    btNo.setLabel("No");
    btNo.addActionListener(new java.awt.event.ActionListener() {
    public void actionPerformed(java.awt.event.ActionEvent evt) {
    btNoActionPerformed(evt);
    add(btNo);
    btNo.setBounds(110, 80, 60, 24);
    lblDialogDown.setAlignment(java.awt.Label.CENTER);
    add(lblDialogDown);
    lblDialogDown.setBounds(10, 50, 180, 20);
    pack();
    private void btYesActionPerformed(java.awt.event.ActionEvent evt) {
    // Add your handling code here:
    respuesta = true;
    setVisible(false);
    dispose();
    private void btNoActionPerformed(java.awt.event.ActionEvent evt) {
    // Add your handling code here:
    respuesta = false;
    setVisible(false);
    dispose();
    /** Closes the dialog */
    private void closeDialog(java.awt.event.WindowEvent evt) {
    // Add your handling code here:
    * @param args the command line arguments
    public static void main(String args[]) {
    new DialogoYesNo(new java.awt.Frame(), true).show();
    public void setPreguntaUp(String p){       
    lblDialogUp.setVisible(true);
    lblDialogDown.setVisible(true);
    lblDialogCentro.setVisible(false);
    lblDialogUp.setText(p);
    public void setPreguntaDown(String p){
    lblDialogUp.setVisible(true);
    lblDialogDown.setVisible(true);
    lblDialogCentro.setVisible(false);
    lblDialogDown.setText(p);
    public void setPreguntaCentro(String p){
    lblDialogUp.setVisible(false);
    lblDialogDown.setVisible(false);
    lblDialogCentro.setVisible(true);
    lblDialogCentro.setText(p);
    public void centrarPantalla(){
    Dimension d = this.getToolkit().getScreenSize();
    this.setLocation((d.width-getSize().width)/2, (d.height-getSize().height)/2);
    public boolean respDialogo(){
    return respuesta;
    // Variables declaration - do not modify
    private java.awt.Button btNo;
    private java.awt.Label lblDialogCentro;
    private java.awt.Button btYes;
    private java.awt.Label lblDialogUp;
    private java.awt.Label lblDialogDown;
    // End of variables declaration
    private boolean respuesta = false;
    }

    Hello
    This case works fine using following line to execute code after modal dialog:
    new Thread(new Runnable(){ public void run() { netCodeFunction(); }}).start();
    Regards

  • When I begin use the battery am I obligate to use it until the finish or I can plug the energy cable in any moment?

    When I begin use the battery am I obligate to use it until the finish or I can plug the energy cable in any moment?
    thanks!

    These support article should encompass all of the information one needs to know about MBP batteries and the operation of same:
    http://www.apple.com/batteries/notebooks.html
    http://support.apple.com/kb/HT1446
    Ciao.

  • Still frame from video: PS Elements 9

    I am new to PS, trying to get a still frame from a video. My camera uses a file  MP4, but PS says it does not accept that format.  How do I convert my MP4 videos so I can get some still pix from it?  I did the file>import>> frame for video>browze. It works with a sample video on my computer but not the video from my camera.  PLEASE HELP!  Thank you

    One more thing---I'm working with PC: Windows 7 and only the PSE, not the premier version. 

  • Is it normal that a Mac Mini 1.6duo play back of HD 60 frame home video is shuddery / jerky ? is this just processor limits ?

    Is it normal that a Mac Mini 1.6duo play back of HD 60 frame home video is shuddery / jerky ? is this just processor limits ?
    I have a pansonic 14meg camera which shoots HD 1060 30 frame and 720 60 frame .
    I have been using the 720 6 frame .  Playback using on my camera is perfect , but when I download on to my Intel 1.6duo macmini play back is jerky ... is this just processor limitation or if Mini should be fine to play back (using Quicktime7) could it be file corruption / camera issue.
    I think it is just my old computer probably starting to struggle !
    Many thanks

    Couple of things:
    There is virtually no standardisation of video formats. The file suffix is if little use to use as, in the case of video, files are just containers for data streams encoded and decoded by Codecs. Pretty much every manufacturer has their own codecs for each and every camera. Put it this way: every Jpeg still is pretty much the same, as there is an agreed standard for that format. There is no such guarantee with avi, mov etc. That's why the model and format of the camera is important.
    This model was released in 2012, and you're trying to read data from this using a QuickTime 7, which predates that by a few years. Oddly, Snow Leopard came with QuickTime X, so I'm not sure what you've done there.
    iPhoto does not guarantee to import all video from all cameras. What cameras it does support are usually still cameras with a video add on. What you have is a camcorder and the correct app for importing and manipulating video from such a device is iMovie rather than iPhoto. It may be able to transcode it.

  • When I capture a still frame froma video in Llightroom 4.3, where does the captured frame end up?

    When I capture a still frame froma video in Llightroom 4.3, where does the captured frame end up? I cannot find it. Stan

    It will be right next to the movie in your library and the jpg file will end up on your hard disk right next to the movie file. You can see the actual file by right (or control) clicking on the image in the library view and selecting "show in Finder/Explorer"

  • How to find the start and end duration of "Selected frames" from Video using didFinishPickingMediaWithInfo?

    I am doing slow motion in audio and video using AVFoundation(for Video) and Dirac(Audio). As part of it, i will show the video as frames in which the user will select the frames to do slow motion. Eg: 5-6 min of 10 min video.
    I have to show the users two kinds of videos 1. through the video recorder from my application itself. 2. from the gallery.
    Case1: No problem Now,i can record the videos though my video recorder and show the videos as frames to the user to select. Once the user selects some frames(Eg: 5 to 6 min of 10 min recorded video), using the below code, i am able to find the start/end duration of the selected frames or video.
    NSNumber *start = [info objectForKey:@"_UIImagePickerControllerVideoEditingStart"]; NSNumber *end = [info objectForKey:@"_UIImagePickerControllerVideoEditingEnd"];  int startMilliseconds = ([start doubleValue] * 1000);int endMilliseconds = ([end doubleValue] * 1000);
    Case2: In this case, i am able to pick the video from the gallery and show them to the user in the form of frames to select. However, when i try to find the start/end duration of the video as i did in case 1 with the same code, its not working. I am always getting "0" for start/end duration.
    Can you please give some suggestion on my Issue ?

    +1 .. also. i'd to know is using "_UIImagePickerControllerVideoEditingStart"
    the app won't be rejected..
    thanks,
    F

  • Why doesn't Premiere handle variable frame rate video?

    Variable frame rate video comes from many places these days: phones, live streamed video recordings.
    Adobe Premiere is a supposedly production level piece of software that cost a good chunk of change.
    How is it 2012 and Adobe does not still have an answer to this problem?  After trying to editing/convert/mux/edit variable frame rate videos for the past 5 hours I am just exhausted.  No amount of conversion apps, etc have saved us and THEY SHOULD NOT HAVE TOO. 
    We have spent thousands on Adobe software packages over the last decade, probably 10s of thousands, and the only answer I find consistently is to switch to Vegas. 
    Surely, SURELY someone at Adobe with real insight into the issue can help answer the question of whether users moving into different medium should find a place elsewhere in the software ecosystem...
    Message was edited by: Kevin Monahan
    Reason: to make article more searchable

    The file I am trying to edit was recorded in a streaming application called XSplit, very popular in the game / live streaming community. 
    The frame rate is variable, slightly I am guessing, because the real time nature of the recording/stream.  The issue is that while WMP and VLC play the file back 100% correctly, when played back inside Premiere CS6 the file drifts out of sync so at the end of a 2 hour clip, we are talking more than a full second or so.
    According to MediaInfo, here is the file detail:
    General
    Complete name                            : Y:\Live\2012-12-4 Farcry 3\2012-12-04_200413079.mp4
    Format                                   : MPEG-4
    Format profile                           : Base Media
    Codec ID                                 : isom
    File size                                : 4.33 GiB
    Duration                                 : 2h 11mn
    Overall bit rate                         : 4 713 Kbps
    Writing application                      : Lavf54.0.100
    Video
    ID                                       : 1
    Format                                   : AVC
    Format/Info                              : Advanced Video Codec
    Format profile                           : [email protected]
    Format settings, CABAC                   : Yes
    Format settings, ReFrames                : 4 frames
    Codec ID                                 : avc1
    Codec ID/Info                            : Advanced Video Coding
    Duration                                 : 2h 11mn
    Bit rate                                 : 4 574 Kbps
    Width                                    : 1 280 pixels
    Height                                   : 720 pixels
    Display aspect ratio                     : 16:9
    Frame rate mode                          : Variable
    Frame rate                               : 29.970 fps
    Minimum frame rate                       : 5.000 fps
    Maximum frame rate                       : 30.303 fps
    Color space                              : YUV
    Chroma subsampling                       : 4:2:0
    Bit depth                                : 8 bits
    Scan type                                : Progressive
    Bits/(Pixel*Frame)                       : 0.166
    Stream size                              : 4.20 GiB (97%)
    Writing library                          : x264 core 125 r2200 999b753
    Encoding settings                        : cabac=1 / ref=1 / deblock=1:0:0 / analyse=0x3:0x113 / me=hex / subme=2 / psy=1 / psy_rd=1.00:0.00 / mixed_ref=0 / me_range=16 / chroma_me=1 / trellis=0 / 8x8dct=1 / cqm=0 / deadzone=21,11 / fast_pskip=1 / chroma_qp_offset=0 / threads=18 / lookahead_threads=3 / sliced_threads=0 / nr=0 / decimate=1 / interlaced=0 / bluray_compat=0 / constrained_intra=0 / bframes=3 / b_pyramid=2 / b_adapt=1 / b_bias=0 / direct=1 / weightb=1 / open_gop=0 / weightp=1 / keyint=250 / keyint_min=25 / scenecut=40 / intra_refresh=0 / rc_lookahead=10 / rc=crf / mbtree=1 / crf=13.0 / qcomp=0.60 / qpmin=0 / qpmax=69 / qpstep=4 / vbv_maxrate=5000 / vbv_bufsize=7000 / crf_max=0.0 / nal_hrd=none / ip_ratio=1.40 / aq=1:1.00
    Audio
    ID                                       : 2
    Format                                   : AAC
    Format/Info                              : Advanced Audio Codec
    Format profile                           : LC
    Codec ID                                 : 40
    Duration                                 : 2h 11mn
    Bit rate mode                            : Constant
    Bit rate                                 : 128 Kbps
    Channel(s)                               : 2 channels
    Channel positions                        : Front: L R
    Sampling rate                            : 44.1 KHz
    Compression mode                         : Lossy
    Stream size                              : 120 MiB (3%)

Maybe you are looking for

  • Run servlet in tomcat 4.1

    Hi , could someone please help me. Iam trying to run servlet in tomcat4.1 but in vain. please help

  • Tiimeline on second monitor

    I just got a new iMac retina display and I want to use Final Cut Pro X on it.  Is there a way to set the timeline to the second display? 

  • Event handler method

    Hi all, I want to know the significance of creating event handler method in Class builder. and how it can be used at the time of event trigger.( Is it called automatically or programmer need to call it explicitly in the program.) Thanks, Sushant sing

  • Message Control MIRO

    MM Experts, We currentlyhave a hard stop error, when we enter an invoice with same vendor name, same document date, and same invoice number. But how can I get a warning when the document date is different, same vendor, same docuement number? I tried

  • ITunes refuses to load in Windows XP after latest iTunes upgrade

    iTunes was running just fine.  Then after the latest upgrade, iTunes appears on the menu, but when I try to OPEN, there is perhaps 10 seconds of activity, then nothing.  I have tried redownloading and RUNning after disabling all virus and bot softwar