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

📄 entrypanel.java

📁 FMJ(freedom media for java)是java视频开发的新选择
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
package net.sf.fmj.ui.registry;import java.awt.BorderLayout;import java.awt.Dimension;import java.awt.GridBagConstraints;import java.awt.GridBagLayout;import java.awt.GridLayout;import java.awt.Insets;import java.io.IOException;import java.util.Collections;import java.util.HashSet;import java.util.List;import java.util.Set;import java.util.Vector;import java.util.logging.Level;import java.util.logging.Logger;import javax.media.CaptureDeviceInfo;import javax.media.CaptureDeviceManager;import javax.media.Format;import javax.media.PackageManager;import javax.media.PlugInManager;import javax.swing.DefaultComboBoxModel;import javax.swing.JButton;import javax.swing.JLabel;import javax.swing.JList;import javax.swing.JPanel;import javax.swing.JScrollPane;import javax.swing.JTextField;import javax.swing.ListSelectionModel;import javax.swing.event.ListSelectionEvent;import javax.swing.event.ListSelectionListener;import net.sf.fmj.media.MimeManager;import net.sf.fmj.utility.LoggerSingleton;/** * Can be used for adding entries to: * 	- plugins, demuxes, codecs, effects, renderers, muxes * 	- content package prefixes * 	- protocol package prefixes *  * TODO send details of selected item to listeners, e.g. PlugInInfo for plugins. *  * @author Warren Bloomer * @author Ken Larson * */public class EntryPanel extends JPanel {	private static final Logger logger = LoggerSingleton.logger;		public static final int TYPE_DEMUX = PlugInManager.DEMULTIPLEXER;	public static final int TYPE_CODEC = PlugInManager.CODEC;	public static final int TYPE_EFFECT = PlugInManager.EFFECT;	public static final int TYPE_RENDERER = PlugInManager.RENDERER;	public static final int TYPE_MUX = PlugInManager.MULTIPLEXER;	public static final int TYPE_CONTENT = 10001;	public static final int TYPE_PROTOCOL = 10002;	public static final int TYPE_CAPTURE_DEVICE = 10003;	public static final int TYPE_MIME_TYPES = 10004;		private final int type;		private JPanel actionPanel = null;	private JButton addButton = null;	private JButton moveUpButton = null;	private JButton moveDownButton = null;	private JButton removeButton = null;	private JButton commitButton = null;	private JPanel entryPanel = null;	private JPanel entryTopPanel = null;	private JLabel entryLabel = null;	private JTextField entryTextField = null;	private JTextField entryTextField2 = null;	// only used for MIME types		private JList entryList = null;	private DefaultComboBoxModel entryListModel = null;  //  @jve:decl-index=0:visual-constraint="583,242"	private JScrollPane listScrollPane = null;		private DetailsListener detailsListener;	/**	 * This method initializes 	 * 	 */	public EntryPanel(int type) {		super();		this.type = type; 		initialize();	}		public void setTitle(String title) {		getEntryLabel().setText(title);	}		private void addEntry(String entry, String value2) {		//logger.info("Adding entry" + entry);				switch(type) {						case TYPE_DEMUX:			case TYPE_CODEC:			case TYPE_EFFECT:			case TYPE_RENDERER:			case TYPE_MUX:				// TODO get in and out formats				Format[] in = null; 				Format[] out = null;				boolean added = PlugInManager.addPlugIn(entry, in, out, type);								if (added) {					getEntryListModel().addElement(entry);				}				break;							case TYPE_CONTENT:				// TODO check if package is valid				Vector contentList = PackageManager.getContentPrefixList();				if (!contentList.contains(entry)) {					contentList.add(entry);					PackageManager.setContentPrefixList(contentList);					getEntryListModel().addElement(entry);				}				break;							case TYPE_PROTOCOL:				// TODO check if package is valid				Vector protocolList = PackageManager.getProtocolPrefixList();				if (!protocolList.contains(entry)) {					protocolList.add(entry);					PackageManager.setContentPrefixList(protocolList);					getEntryListModel().addElement(entry);				}				break;			case TYPE_CAPTURE_DEVICE:				// TODO 				break;				case TYPE_MIME_TYPES:								final List existingExtensions = MimeManager.getExtensions(entry);				if (!existingExtensions.contains(value2))				{					MimeManager.addMimeType(value2, entry);					getEntryListModel().addElement(entry);				}								break;		}	}			private void removeEntry(String entry) {		//logger.info("Removing entry" + entry);				switch(type) {						case TYPE_DEMUX:			case TYPE_CODEC:			case TYPE_EFFECT:			case TYPE_RENDERER:			case TYPE_MUX:				// TODO get in and out formats				Format[] in = null; 				Format[] out = null;				boolean removed = PlugInManager.removePlugIn(entry, type);								if (removed) {					getEntryListModel().removeElement(entry);				}				break;							case TYPE_CONTENT:				Vector contentList = PackageManager.getContentPrefixList();				if (contentList.remove(entry)) {					PackageManager.setContentPrefixList(contentList);					getEntryListModel().removeElement(entry);				}				break;							case TYPE_PROTOCOL:				Vector protocolList = PackageManager.getProtocolPrefixList();				if (protocolList.remove(entry)) {					PackageManager.setProtocolPrefixList(protocolList);					getEntryListModel().removeElement(entry);				}				break;			case TYPE_CAPTURE_DEVICE:				// TODO:				break;			case TYPE_MIME_TYPES:				// TODO: warn if attempt to remove "default" extensions.				// this code will not actually remove default extensions, but no warning is given.				final List extensions = MimeManager.getExtensions(entry);				int numRemoved = 0;				if (extensions.size() > 0)				{					for (int i = 0; i < extensions.size(); ++i)					{						if (MimeManager.removeMimeType((String) extensions.get(i)))							++numRemoved;					}														}				if (numRemoved > 0)				{					getEntryListModel().removeElement(entry);				}								break;		}	}		private void commit() {						try {			switch(type) {						case TYPE_DEMUX:			case TYPE_CODEC:			case TYPE_EFFECT:			case TYPE_RENDERER:			case TYPE_MUX:				// read list of values from JList, set, and commit				Vector plugins = new Vector();				for (int i=0; i<getEntryListModel().getSize(); i++) {					Object value = getEntryListModel().getElementAt(i);					plugins.add(value);				}				PlugInManager.setPlugInList(plugins, type);				PlugInManager.commit();				break;			case TYPE_CONTENT:				// read list of values from JList, set, and commit				Vector contentPrefixes = new Vector();				for (int i=0; i<getEntryListModel().getSize(); i++) {					Object value = getEntryListModel().getElementAt(i);					contentPrefixes.add(value);				}				PackageManager.setContentPrefixList(contentPrefixes);				PackageManager.commitContentPrefixList();				break;							case TYPE_PROTOCOL:				// read list of values from JList, set, and commit				Vector protocolPrefixes = new Vector();				for (int i=0; i<getEntryListModel().getSize(); i++) {					Object value = getEntryListModel().getElementAt(i);					protocolPrefixes.add(value);				}				PackageManager.setProtocolPrefixList(protocolPrefixes);				PackageManager.commitProtocolPrefixList();				break;			case TYPE_CAPTURE_DEVICE:				// TODO: capture device manager list is being updated already				// by the auto-detect, so we just commit here.				CaptureDeviceManager.commit();				break;			case TYPE_MIME_TYPES:				MimeManager.commit();				break;			}		}		catch (IOException e) {			logger.log(Level.WARNING, "" + e, e);		}	}		void load() {		Vector list = null;		getEntryListModel().removeAllElements();				switch(type) {			case TYPE_DEMUX:				list = PlugInManager.getPlugInList(null, null, PlugInManager.DEMULTIPLEXER);				setTitle("Demultiplexer");				break;							case TYPE_CODEC:				list = PlugInManager.getPlugInList(null, null, PlugInManager.CODEC);				setTitle("Codec");				break;							case TYPE_EFFECT:				list = PlugInManager.getPlugInList(null, null, PlugInManager.EFFECT);				setTitle("Effect");				break;							case TYPE_RENDERER:				list = PlugInManager.getPlugInList(null, null, PlugInManager.RENDERER);				setTitle("Renderer");				break;							case TYPE_MUX:				list = PlugInManager.getPlugInList(null, null, PlugInManager.MULTIPLEXER);				setTitle("Multiplexer");				break;							case TYPE_CONTENT:				list = PackageManager.getContentPrefixList();				setTitle("Content Prefix List");				break;							case TYPE_PROTOCOL:				list = PackageManager.getProtocolPrefixList();				setTitle("Protocol Prefix List");				break;							case TYPE_CAPTURE_DEVICE:				list = new Vector();				Vector captureDeviceList = CaptureDeviceManager.getDeviceList(null);				for (int i = 0; i < captureDeviceList.size(); ++i)				{	final CaptureDeviceInfo info = (CaptureDeviceInfo) captureDeviceList.get(i);					list.add(info.getLocator().toString());				}				setTitle("Capture Devices");				break;							case TYPE_MIME_TYPES:				list = new Vector();				final Set s = new HashSet();	// to remove dups				s.addAll(MimeManager.getMimeTable().values());				list.addAll(s);					Collections.sort(list);				setTitle("MIME Types");				break;							default:				list = new Vector();		}		for (int i=0; i<list.size(); i++) {			getEntryListModel().addElement(list.get(i));		}	}		private void updateDetailsPane(int selectedIndex, Object selectedValue)	{		if (detailsListener == null)			return;				if (selectedValue == null)		{			detailsListener.onDetails("");			return;		}		final StringBuffer b = new StringBuffer();				switch(type) {			// all plug ins:			case TYPE_DEMUX:			case TYPE_CODEC:			case TYPE_EFFECT:			case TYPE_RENDERER:			case TYPE_MUX:				final String plugIn = (String) selectedValue;				final Format[] inputFormats = PlugInManager.getSupportedInputFormats(plugIn, type);				final Format[] outputFormats = PlugInManager.getSupportedOutputFormats(plugIn, type);				b.append("Input Formats ---->\n\n");				if (inputFormats != null)				{					for (int i = 0; i < inputFormats.length; ++i)

⌨️ 快捷键说明

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