📄 mimepanel.java
字号:
/* * @(#)MimePanel.java 1.2 00/03/20 * * Copyright (c) 1999 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. */package jmapps.registry;import java.util.*;import java.awt.*;import java.awt.List;import java.awt.event.*;import javax.media.*;import com.sun.media.MimeManager;import com.sun.media.util.JMFI18N;import jmapps.ui.*;public class MimePanel extends JMPanel implements ActionListener, ItemListener, TextListener { private Hashtable htMimeTypes; private Button buttonRestore; private Button buttonCommit; private Button buttonAdd; private Button buttonRemove; private List listBoxMimeType; private TextField textMimeType; private List listBoxMimeExt; private TextField textMimeExt; public MimePanel() { super (); init (); } private void init () { Panel panel; Panel panelData; this.setLayout ( new BorderLayout(6,6) ); panel = createPanelButtons (); this.add ( panel, BorderLayout.EAST ); panelData = new Panel ( new GridLayout(1,0,12,12) ); this.add ( panelData, BorderLayout.CENTER ); panel = createPanelMimeTypes (); panelData.add ( panel ); panel = createPanelMimeExt (); panelData.add ( panel ); restore (); updateButtons (); } private Panel createPanelButtons () { Panel panelButtons; Panel panel; panelButtons = new Panel ( new FlowLayout(FlowLayout.LEFT) ); panel = new Panel ( new GridLayout(0,1,12,12) ); panelButtons.add ( panel ); buttonAdd = new Button ( JMFI18N.getResource("jmfregistry.vector.add") ); buttonAdd.addActionListener ( this ); panel.add ( buttonAdd ); buttonRemove = new Button ( JMFI18N.getResource("jmfregistry.vector.remove") ); buttonRemove.addActionListener ( this ); panel.add ( buttonRemove ); buttonRestore = new Button ( JMFI18N.getResource("jmfregistry.vector.restore") ); buttonRestore.addActionListener ( this );// panel.add ( buttonRestore ); buttonCommit = new Button ( JMFI18N.getResource("jmfregistry.vector.commit") ); buttonCommit.addActionListener ( this ); panel.add ( buttonCommit ); return ( panelButtons ); } private Panel createPanelMimeTypes () { Panel panel; Panel panelTemp; Label label; panel = new Panel ( new BorderLayout(6,6) ); panelTemp = new Panel ( new BorderLayout(6,6) ); panel.add ( panelTemp, BorderLayout.NORTH ); label = new Label ( JMFI18N.getResource("jmfregistry.mime.type.label") ); panelTemp.add ( label, BorderLayout.NORTH ); textMimeType = new TextField (); textMimeType.addTextListener ( this ); panelTemp.add ( textMimeType, BorderLayout.CENTER ); listBoxMimeType = new List (); listBoxMimeType.addItemListener ( this ); panel.add ( listBoxMimeType, BorderLayout.CENTER ); return ( panel ); } private Panel createPanelMimeExt () { Label label; Panel panel; Panel panelTemp; panel = new Panel ( new BorderLayout(6,6) ); panelTemp = new Panel ( new BorderLayout(6,6) ); panel.add ( panelTemp, BorderLayout.NORTH ); label = new Label ( JMFI18N.getResource("jmfregistry.mime.ext.label") ); panelTemp.add ( label, BorderLayout.NORTH ); textMimeExt = new TextField (); textMimeExt.addTextListener ( this ); panelTemp.add ( textMimeExt, BorderLayout.CENTER ); listBoxMimeExt = new List (); listBoxMimeExt.addItemListener ( this ); panel.add ( listBoxMimeExt, BorderLayout.CENTER ); return ( panel ); } public void actionPerformed ( ActionEvent event ) { String strCmd; Object objSource; objSource = event.getSource (); strCmd = event.getActionCommand (); if ( strCmd.equals(buttonRestore.getActionCommand()) ) restore (); if ( strCmd.equals(buttonCommit.getActionCommand()) ) MimeManager.commit(); else if ( objSource == buttonAdd ) addExt (); else if ( objSource == buttonRemove ) removeExt (); updateButtons (); } public void itemStateChanged ( ItemEvent event ) { Object objSource; String strValue; objSource = event.getSource (); if ( objSource == listBoxMimeType ) { strValue = listBoxMimeType.getSelectedItem (); textMimeType.setText ( strValue ); fillExtList (); } else if ( objSource == listBoxMimeExt ) { strValue = listBoxMimeExt.getSelectedItem (); textMimeExt.setText ( strValue ); } updateButtons (); } public void textValueChanged ( TextEvent event ) { updateButtons (); } private void restore () { Hashtable htMimeExt; Enumeration enumKeys; Object objExt; Object objType; String strExt; String strType; Vector vectorExt; htMimeExt = MimeManager.getMimeTable (); htMimeTypes = new Hashtable (); enumKeys = htMimeExt.keys (); while ( enumKeys.hasMoreElements() ) { objExt = enumKeys.nextElement (); objType = htMimeExt.get ( objExt ); strExt = objExt.toString (); strType = objType.toString (); if ( htMimeTypes.containsKey(strType) ) { vectorExt = (Vector)htMimeTypes.get ( strType ); } else { vectorExt = new Vector (); htMimeTypes.put ( strType, vectorExt ); } if ( !vectorExt.contains(strExt) ) vectorExt.addElement ( strExt ); } fillTypeList (); } private void fillTypeList () { Enumeration enumKeys; Object objType; listBoxMimeType.removeAll (); enumKeys = htMimeTypes.keys(); while ( enumKeys.hasMoreElements() ) { objType = enumKeys.nextElement (); listBoxMimeType.add ( objType.toString() ); }// if ( listBoxMimeType.getItemCount() > 0 )// listBoxMimeType.select ( 0 );// fillExtList (); } private void fillExtList () { int i; int nCount; String strType; Vector vectorExt; Object objExt; listBoxMimeExt.removeAll (); strType = listBoxMimeType.getSelectedItem (); if ( strType == null ) return; vectorExt = (Vector) htMimeTypes.get ( strType ); nCount = vectorExt.size (); for ( i = 0; i < nCount; i++ ) { objExt = vectorExt.elementAt ( i ); listBoxMimeExt.add ( objExt.toString() ); }// if ( listBoxMimeExt.getItemCount() > 0 )// listBoxMimeExt.select ( 0 ); } private void addType () { String strType; Vector vectorExt; strType = textMimeType.getText().trim(); if ( strType.length() < 1 ) return; if ( !htMimeTypes.containsKey(strType) ) { vectorExt = new Vector (); htMimeTypes.put ( strType, vectorExt ); listBoxMimeType.add ( strType ); } selectItem ( listBoxMimeType, strType ); fillExtList (); } private void removeType () { int i; int nCount; String strType; String strExt; Vector vectorExt; boolean boolResult = true; strType = textMimeType.getText().trim(); if ( strType.length() < 1 ) return; vectorExt = (Vector) htMimeTypes.get ( strType ); nCount = vectorExt.size (); for ( i = nCount - 1; i >= 0; i-- ) { strExt = (String) vectorExt.elementAt ( i ); boolResult = MimeManager.removeMimeType ( strExt ); if ( boolResult == true ) { vectorExt.removeElement ( strExt ); listBoxMimeExt.remove ( strExt ); } } nCount = vectorExt.size (); if ( nCount > 0 ) { listBoxMimeExt.select ( 0 ); MessageDialog.createErrorDialog ( new Frame(), JMFI18N.getResource("jmfregistry.appname"), JMFI18N.getResource("jmfregistry.error.removeitem") ); } else { htMimeTypes.remove ( strType ); i = getItemIndex ( listBoxMimeType, strType ); listBoxMimeType.remove ( strType );// if ( i >= listBoxMimeType.getItemCount() )// i = listBoxMimeType.getItemCount() - 1;// if ( i >= 0 ) {// listBoxMimeType.select ( i );// fillExtList();// } } } private void addExt () { String strType; String strExt; Vector vectorExt; boolean boolResult = true; strExt = textMimeExt.getText().trim(); if ( strExt.length() < 1 ) return; strType = textMimeType.getText().trim(); if ( strType.length() < 1 ) return; if ( !(htMimeTypes.containsKey(strType)) ) addType (); if ( !(htMimeTypes.containsKey(strType)) ) return; vectorExt = (Vector) htMimeTypes.get ( strType ); if ( !vectorExt.contains(strExt) ) { boolResult = MimeManager.addMimeType ( strExt, strType ); if ( boolResult == true ) { vectorExt.addElement ( strExt ); listBoxMimeExt.add ( strExt ); } else { MessageDialog.createErrorDialog ( new Frame(), JMFI18N.getResource("jmfregistry.appname"), JMFI18N.getResource("jmfregistry.error.additem") ); } } if ( boolResult == true ) selectItem ( listBoxMimeExt, strExt ); } private void removeExt () { int i; String strType; String strExt; Vector vectorExt; boolean boolResult = true; strExt = textMimeExt.getText().trim(); if ( strExt.length() < 1 ) return; strType = textMimeType.getText().trim(); if ( strType.length() < 1 ) return; if ( !(htMimeTypes.containsKey(strType)) ) return; vectorExt = (Vector) htMimeTypes.get ( strType ); if ( !vectorExt.contains(strExt) ) return; boolResult = MimeManager.removeMimeType ( strExt ); if ( boolResult == true ) { vectorExt.removeElement ( strExt ); i = getItemIndex ( listBoxMimeExt, strExt ); listBoxMimeExt.remove ( strExt );// if ( i >= listBoxMimeExt.getItemCount() )// i = listBoxMimeExt.getItemCount() - 1;// if ( i >= 0 )// listBoxMimeExt.select ( i ); if ( vectorExt.isEmpty() ) removeType (); } else { MessageDialog.createErrorDialog ( new Frame(), JMFI18N.getResource("jmfregistry.appname"), JMFI18N.getResource("jmfregistry.error.removeitem") ); } } private void selectItem ( List listBox, String strItemSel ) { int i; i = getItemIndex ( listBox, strItemSel ); if ( i >= 0 ) listBox.select ( i ); } private int getItemIndex ( List listBox, String strItemSel ) { int i; int nCount; String strItem; nCount = listBox.getItemCount (); for ( i = 0; i < nCount; i++ ) { strItem = listBox.getItem ( i ); if ( strItem.equals(strItemSel) ) return ( i ); } return ( -1 ); } private void updateButtons () { String strType; String strExt; Vector vectorExt; boolean boolAddEnable; boolean boolRemoveEnable; strExt = textMimeExt.getText().trim(); strType = textMimeType.getText().trim(); if ( strExt.length() > 1 && strType.length() > 1 ) { boolAddEnable = true; boolRemoveEnable = true; } else { boolAddEnable = false; boolRemoveEnable = false; } if ( htMimeTypes.containsKey(strType) ) { vectorExt = (Vector) htMimeTypes.get ( strType ); if ( vectorExt.contains(strExt) ) boolAddEnable = false; else boolRemoveEnable = false; } else { boolRemoveEnable = false; } buttonAdd.setEnabled ( boolAddEnable ); buttonRemove.setEnabled ( boolRemoveEnable ); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -