MediaComponent.java
上传用户:haobig99
上传日期:2022-06-15
资源大小:369k
文件大小:5k
源码类别:

J2ME

开发平台:

Java

  1. /*
  2.  * Copyright 2008 Sun Microsystems, Inc.  All Rights Reserved.
  3.  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  4.  *
  5.  * This code is free software; you can redistribute it and/or modify it
  6.  * under the terms of the GNU General Public License version 2 only, as
  7.  * published by the Free Software Foundation.  Sun designates this
  8.  * particular file as subject to the "Classpath" exception as provided
  9.  * by Sun in the LICENSE file that accompanied this code.
  10.  *
  11.  * This code is distributed in the hope that it will be useful, but WITHOUT
  12.  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  13.  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  14.  * version 2 for more details (a copy is included in the LICENSE file that
  15.  * accompanied this code).
  16.  *
  17.  * You should have received a copy of the GNU General Public License version
  18.  * 2 along with this work; if not, write to the Free Software Foundation,
  19.  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  20.  *
  21.  * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
  22.  * CA 95054 USA or visit www.sun.com if you need additional information or
  23.  * have any questions.
  24.  */
  25. package com.sun.lwuit;
  26. import com.sun.lwuit.geom.*;
  27. import com.sun.lwuit.impl.LWUITImplementation;
  28. /**
  29.  * A component allowing us to embed and control rich media content
  30.  * 
  31.  * @author Nir Shabi
  32.  */
  33. public class MediaComponent extends Component {
  34.     private Object player;
  35.     private Object vidc;
  36.     private boolean fullscreen = false;
  37.     /** 
  38.      * Creates a new instance of MediaComponent 
  39.      * 
  40.      * @param player the media player
  41.      */
  42.     public MediaComponent(Object player) {
  43.         this.player = player;
  44.         setFocusable(false);
  45.         vidc = Display.getInstance().getImplementation().createVideoComponent(player);
  46.     }
  47.     /**
  48.      * @inheritDoc
  49.      */
  50.     protected void initComponent() {
  51.         getComponentForm().registerMediaComponent(this);
  52.     }
  53.     /**
  54.      * @inheritDoc
  55.      */
  56.     protected void deinitialize() {
  57.         getComponentForm().deregisterMediaComponent(this);
  58.     }
  59.     /**
  60.      * @inheritDoc
  61.      */
  62.     public void paint(Graphics g) { 
  63.         if(isVisible()){
  64.             Display.getInstance().getImplementation().paintVideo(this, fullscreen, g.getGraphics(), vidc, player);
  65.         }
  66.     }
  67.     protected void paintBackground(Graphics g) {
  68.     }
  69.     public void paintBackgrounds(Graphics g) {
  70.     }
  71.     /**
  72.      * @inheritDoc
  73.      */
  74.     protected Dimension calcPreferredSize() {
  75.         LWUITImplementation impl = Display.getInstance().getImplementation();
  76.         return new Dimension(impl.getVideoWidth(vidc), impl.getVideoHeight(vidc));
  77.     }
  78.     /**
  79.      * Display the embedded media component
  80.      * 
  81.      * @param visible true to display, false to hide
  82.      */
  83.     public void setVisible(boolean visible) {
  84.         super.setVisible(visible);
  85.         if (vidc != null) {
  86.             Display.getInstance().getImplementation().setVideoVisible(vidc, visible);
  87.         }
  88.     }
  89.     /**
  90.      * Start media playback implicitly setting the component to visible
  91.      */
  92.     public void start(){
  93.         Display.getInstance().getImplementation().startVideo(player, vidc);
  94.     }
  95.     /**
  96.      * Stope media playback 
  97.      */
  98.     public void stop(){
  99.         Display.getInstance().getImplementation().stopVideo(player, vidc);
  100.     }
  101.     /**
  102.      * Set the number of times the media should loop
  103.      * 
  104.      * @param count the number of times the media should loop
  105.      */
  106.     public void setLoopCount(int count) {
  107.         Display.getInstance().getImplementation().setVideoLoopCount(player, count);
  108.     }
  109.     /**
  110.      * Return the duration of the media
  111.      * 
  112.      * @return the duration of the media
  113.      */
  114.     public long getMediaTime() {
  115.         return Display.getInstance().getImplementation().getMediaTime(player);
  116.     }
  117.     /**
  118.      * "Jump" to a point in time within the media
  119.      * 
  120.      * @param now the point in time to "Jump" to
  121.      * @return the media time in microseconds
  122.      */
  123.     public long setMediaTime(long now) {
  124.         return Display.getInstance().getImplementation().setMediaTime(player, now);
  125.     }
  126.     /**
  127.      * Toggles the fullscreen mode
  128.      * 
  129.      * @param fullscreen true for fullscreen mode
  130.      */
  131.     public void setFullScreen(boolean fullscreen) {
  132.         this.fullscreen = fullscreen;
  133.         repaint();
  134.     }
  135.     /**
  136.      * Indicates the fullscreen mode
  137.      *
  138.      * @return true for fullscreen mode
  139.      */
  140.     public boolean isFullScreen() {
  141.         return fullscreen;
  142.     }
  143.     /**
  144.      * Returns the native video control if such a control exists, this is required
  145.      * for some platforms.
  146.      *
  147.      * @return the underlying native video control or null
  148.      */
  149.     public Object getVideoControl() {
  150.         return vidc;
  151.     }
  152. }