📄 swtmediaplayer.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 + -