⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 swtmediaplayer.java

📁 SWT开发的Java调用COM的工具集
💻 JAVA
字号:
package au.com.swz.swttocom;

import java.io.File;

import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.CTabFolder;
import org.eclipse.swt.custom.CTabItem;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.graphics.Rectangle;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.FileDialog;
import org.eclipse.swt.widgets.Menu;
import org.eclipse.swt.widgets.MenuItem;
import org.eclipse.swt.widgets.Shell;

import au.com.swz.swttocom.mediaplayer.MediaPlayer;
import au.com.swz.swttocom.mediaplayer.MediaPlayerComposite;
import au.com.swz.swttocom.mediaplayer._MediaPlayerEvents;
import au.com.swz.swttocom.mediaplayer.enums.ReadyStateConstants;

public class SWTMediaPlayer extends Composite {
	private MediaPlayer mediaPlayer;
	private SWTMediaPlayerEventsListener eventHandler;

	public SWTMediaPlayer(Composite parent, int style) {
		super(parent, style);
		Display display = Display.getDefault();
		
		CTabFolder tabFolder = new CTabFolder(this, SWT.TOP);
		tabFolder.setLayoutData(new GridData(GridData.FILL_BOTH));
		CTabItem tabItem = new CTabItem(tabFolder, SWT.NONE);
		tabFolder.setSelection(tabItem);
		tabItem.setText("Media Player");
		tabFolder.setSimple(false);
		tabFolder.setSelectionBackground(new Color[] {
				display.getSystemColor(SWT.COLOR_TITLE_BACKGROUND),
				display.getSystemColor(SWT.COLOR_TITLE_BACKGROUND_GRADIENT) },
				new int[] { 90 }, true);
		tabFolder.setSelectionForeground(display
				.getSystemColor(SWT.COLOR_TITLE_FOREGROUND));

		Composite pnlClient = new Composite(tabFolder, SWT.NONE);
		GridLayout gridLayout = new GridLayout(1, true);
		gridLayout.marginWidth = 0;
		gridLayout.marginHeight = 0;
		gridLayout.numColumns = 1;
		gridLayout.makeColumnsEqualWidth = true;
		gridLayout.horizontalSpacing = 0;
		gridLayout.verticalSpacing = 0;
		pnlClient.setLayout(gridLayout);
		tabItem.setControl(pnlClient);

		GridLayout thisLayout = new GridLayout(1, true);
		thisLayout.marginWidth = 0;
		thisLayout.marginHeight = 0;
		thisLayout.numColumns = 1;
		thisLayout.makeColumnsEqualWidth = true;
		thisLayout.horizontalSpacing = 0;
		thisLayout.verticalSpacing = 0;
		this.setLayout(thisLayout);

		MediaPlayerComposite mediaPlayerComposite = new MediaPlayerComposite(pnlClient, SWT.NONE);
		mediaPlayer = mediaPlayerComposite.getMediaPlayerAutomation();
		mediaPlayerComposite.oleShow();
		eventHandler = new SWTMediaPlayerEventsListener();
		mediaPlayer.add_MediaPlayerEventsListener(eventHandler);
		GridData layoutData = new GridData();
		layoutData.verticalAlignment = GridData.FILL;
		layoutData.horizontalAlignment = GridData.FILL;
		layoutData.widthHint = -1;
		layoutData.heightHint = -1;
		layoutData.horizontalIndent = 0;
		layoutData.horizontalSpan = 1;
		layoutData.verticalSpan = 1;
		layoutData.grabExcessHorizontalSpace = true;
		layoutData.grabExcessVerticalSpace = true;
		mediaPlayerComposite.setLayoutData(layoutData);

		Menu menu = new Menu(getShell(), SWT.BAR);
		MenuItem windowMenuItem = new MenuItem(menu, SWT.CASCADE);
		windowMenuItem.setText("File");
		Menu windowMenu = new Menu(windowMenuItem);
		MenuItem menuItem;

		menuItem = new MenuItem(windowMenu, SWT.CASCADE);
		menuItem.setText("Open");
		menuItem.addSelectionListener(new SelectionAdapter() {
			public void widgetSelected(SelectionEvent evt) {
				FileDialog dialog = new FileDialog(SWTMediaPlayer.this.getShell(), SWT.OPEN);
				dialog.setText("Open Media File");
				dialog.setFilterNames(new String[] { "Movie File (*.wmv;*.avi;*.mp4)", "Music Files (*.mp3)", "All Files (*.*)"}); //$NON-NLS-1$ //$NON-NLS-2$
				dialog.setFilterExtensions(new String[] { "*.wmv;*.avi;*.mov", "*.mp3", "*.*"}); //$NON-NLS-1$ //$NON-NLS-2$
				final String filePath = dialog.open();
				if (filePath != null) {
					mediaPlayer.open(filePath);
				}
			}
		});
		
		menuItem = new MenuItem(windowMenu, SWT.CASCADE);
		menuItem.setText("Mute");
		menuItem.addSelectionListener(new SelectionAdapter() {
			public void widgetSelected(SelectionEvent evt) {
				mediaPlayer.setMute(!mediaPlayer.getMute());
			}
		});
		
		menuItem = new MenuItem(windowMenu, SWT.CASCADE);
		menuItem.setText("About Media Player");
		menuItem.addSelectionListener(new SelectionAdapter() {
			public void widgetSelected(SelectionEvent evt) {
				mediaPlayer.aboutBox();
			}
		});
		
		windowMenuItem.setMenu(windowMenu);
		getShell().setMenuBar(menu);
	}
	
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		try {
			Display display = Display.getDefault();
			Shell shell = new Shell(display);
			shell.setText("SWT Media Player");
			new SWTMediaPlayer(shell, SWT.NULL);
			shell.setLayout(new FillLayout());
			Rectangle shellBounds = shell.computeTrim(0, 0, 700, 500);
			shell.setSize(shellBounds.width, shellBounds.height);
			shell.open();
			while (!shell.isDisposed()) {
				if (!display.readAndDispatch())
					display.sleep();
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	
	private static class SWTMediaPlayerEventsListener implements _MediaPlayerEvents {

		@Override
		public void buffering(boolean start) {
			System.out.println("buffering:" + start);
		}

		@Override
		public void click(int button, int shiftState, int x, int y) {
			System.out.println("click:  button:" + button);
		}

		@Override
		public void dblClick(int button, int shiftState, int x, int y) {
			System.out.println("dblClick:  button:" + button);
		}

		@Override
		public void disconnect(int result) {
			System.out.println("disconnect:  result:" + result);
		}

		@Override
		public void displayModeChange() {
			System.out.println("displayModeChange");
		}

		@Override
		public void dVDNotify(int eventCode, int eventParam1, int eventParam2) {
			System.out.println("dVDNotify:  eventCode:" + eventCode);
		}

		@Override
		public void endOfStream(int result) {
			System.out.println("endOfStream:  result:" + result);
		}

		@Override
		public void error() {
			System.out.println("error");
		}

		@Override
		public void keyDown(int keyCode, int shiftState) {
			System.out.println("keyDown:  keyCode:" + keyCode);
		}

		@Override
		public void keyPress(int keyPress) {
			System.out.println("keyPress:  keyPress:" + keyPress);
		}

		@Override
		public void keyUp(int keyCode, int shiftState) {
			System.out.println("keyUp:  keyCode:" + keyCode);
		}

		@Override
		public void markerHit(int markerNum) {
			System.out.println("markerHit:  markerNum:" + markerNum);
		}

		@Override
		public void mouseDown(int button, int shiftState, int x, int y) {
			System.out.println("mouseDown:  button:" + button);
		}

		@Override
		public void mouseMove(int button, int shiftState, int x, int y) {
			System.out.println("mouseMove:  button:" + button);
		}

		@Override
		public void mouseUp(int button, int shiftState, int x, int y) {
			System.out.println("mouseUp:  button:" + button);
		}

		@Override
		public void newStream() {
			System.out.println("newStream");
		}

		@Override
		public void openStateChange(int oldState, int newState) {
			System.out.println("openStateChange:  oldState:" + oldState);
		}

		@Override
		public void playStateChange(int oldState, int newState) {
			System.out.println("playStateChange:  oldState:" + oldState);
		}

		@Override
		public void positionChange(double oldPosition, double newPosition) {
			System.out.println("positionChange:  oldPosition:" + oldPosition);
		}

		@Override
		public void readyStateChange(ReadyStateConstants readyState) {
			System.out.println("readyStateChange:  readyState:" + readyState);
		}

		@Override
		public void scriptCommand(String scType, String param) {
			System.out.println("scriptCommand:  scType:" + scType);
		}

		@Override
		public void warning(int warningType, int param, String description) {
			System.out.println("warning:  warningType:" + warningType);
		}
	}
	
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -