/* * @(#)GeneralPane.java 1.7 02/08/21 * * Copyright (c) 1996-2002 Sun Microsystems, Inc. All rights reserved. */ package com.sun.media.customizer; import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.io.File; import java.util.zip.ZipFile; /** * This class defines the general page * * @version 2.0 */ public class GeneralPane extends JPanel implements ActionListener { public static final int MFILE = 0; public static final int RTPREC = 1; public static final int CAPTURE = 2; public static final int PLAY = 3; public static final int RTPTRANS = 4; public static final int TRANSCODE = 5; public static final int GUI = 6; public static final int STUDIO = 7; public static final int BEAN = 8; JFrame parent; String srcJARname = "jmf.jar"; String dstJARname = "custom.jar"; JButton bsrc, bdst; JTextField srcFile, dstFile; JCheckBox[] funcs = new JCheckBox[9]; JCheckBox twoJar; boolean[] resultFuncs = new boolean[9]; int release = 0; public GeneralPane(JFrame parent) { this.parent = parent; // create JAR file panel bsrc = new JButton(I18N.getResource("GeneralPane.Browse")); bdst = new JButton(I18N.getResource("GeneralPane.Browse")); bsrc.addActionListener(this); bdst.addActionListener(this); srcFile = new JTextField(srcJARname, 20); dstFile = new JTextField(dstJARname, 20); JPanel srcPane = new JPanel(); JPanel dstPane = new JPanel(); JPanel twoJarPane = new JPanel(); srcPane.add(new JLabel(I18N.getResource("GeneralPane.SrcJar"))); srcPane.add(srcFile); srcPane.add(bsrc); dstPane.add(new JLabel(I18N.getResource("GeneralPane.DstJar"))); dstPane.add(dstFile); dstPane.add(bdst); twoJar = new JCheckBox(I18N.getResource("GeneralPane.twoJar"),false); twoJarPane.add(twoJar); JPanel jarPane = new JPanel(new GridLayout(3,1)); jarPane.add(srcPane); jarPane.add(dstPane); jarPane.add(twoJarPane); // create main functionality panel JPanel funcPane = createFuncPane(); this.setLayout(new BorderLayout()); this.add("South", jarPane); this.add("Center", funcPane); } public void actionPerformed(ActionEvent evt) { if (evt.getSource() == bsrc) { JFileChooser fd = new JFileChooser(); fd.setCurrentDirectory(new File(".")); fd.setSelectedFile(new File(srcJARname)); int result = fd.showOpenDialog(parent); if ( result == JFileChooser.APPROVE_OPTION) { srcJARname = (fd.getSelectedFile() != null)?fd.getSelectedFile().getAbsolutePath():"nothing"; srcFile.setText(srcJARname); } } else if ( evt.getSource() == bdst) { JFileChooser fd = new JFileChooser(); fd.setCurrentDirectory(new File(".")); fd.setSelectedFile(new File(dstJARname)); int result = fd.showSaveDialog(parent); if ( result == JFileChooser.APPROVE_OPTION) { dstJARname = (fd.getSelectedFile() != null)?fd.getSelectedFile().getAbsolutePath():"nothing"; dstFile.setText(dstJARname); } } } public String getSrcJARName() { srcJARname = srcFile.getText(); return srcJARname; } public String getDstJARName() { dstJARname = dstFile.getText(); return dstJARname; } private JPanel createFuncPane() { funcs[MFILE] = new JCheckBox(I18N.getResource("GeneralPane.MFILES"), true); funcs[RTPREC] = new JCheckBox(I18N.getResource("GeneralPane.RTPRECV"), false); funcs[CAPTURE] = new JCheckBox(I18N.getResource("GeneralPane.CAPTURE"), false); funcs[PLAY] = new JCheckBox(I18N.getResource("GeneralPane.PLAY"), true); funcs[RTPTRANS] = new JCheckBox(I18N.getResource("GeneralPane.RTPTRANS"), false); funcs[TRANSCODE] = new JCheckBox(I18N.getResource("GeneralPane.TRANSCODE"), false); funcs[GUI] = new JCheckBox(I18N.getResource("GeneralPane.GUI"), true); funcs[STUDIO] = new JCheckBox(I18N.getResource("GeneralPane.DEMO"), false); funcs[BEAN] = new JCheckBox(I18N.getResource("GeneralPane.BEAN"), false); // Source JPanel srcpanel = new JPanel(new GridLayout(3,1)); srcpanel.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(),I18N.getResource("GeneralPane.MSOURCE") )); for ( int i = 0; i < 3; i++) srcpanel.add(funcs[i]); // Sink JPanel snkpanel = new JPanel(new GridLayout(3,1)); snkpanel.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), I18N.getResource("GeneralPane.MSINK"))); for ( int i = 3; i < 6; i++) snkpanel.add(funcs[i]); // opt component JPanel optpanel = new JPanel(new GridLayout(3,1)); optpanel.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), I18N.getResource("GeneralPane.OPTCOMP"))); for ( int i = 7; i < 9; i++) optpanel.add(funcs[i]); JPanel panel = new JPanel(new GridLayout(1,3)); panel.add(srcpanel); panel.add(snkpanel); panel.add(optpanel); return (panel); } public boolean[] getState(){ for (int i = 0; i < 9; i++) { if (funcs[i].isEnabled() && funcs[i].isSelected()) resultFuncs[i] = true; else resultFuncs[i] = false; } return (resultFuncs); } public boolean checking(boolean[] func, JFrame parent) { boolean vv; // at least 1 source and 1 sink vv = func[0] || func[1] || func[2]; vv &= func[3] || func[4] || func[5]; srcJARname = srcFile.getText(); dstJARname = dstFile.getText(); if ( !vv) { JOptionPane.showMessageDialog(parent, I18N.getResource("GeneralPane.s1s1"), I18N.getResource("GeneralPane.WRONGSEL"), JOptionPane.ERROR_MESSAGE); return (false); } // check the source jar file if (srcJARname == null || srcJARname.length() <= 0 ) { JOptionPane.showMessageDialog(parent, I18N.getResource("GeneralPane.INPUTSRCJAR") ,I18N.getResource("GeneralPane.BADSRCJAR") , JOptionPane.ERROR_MESSAGE); return (false); } File srcFileHandle = new File(srcJARname); if ( !srcFileHandle.exists() || srcFileHandle.length() == 0 ) { JOptionPane.showMessageDialog(parent, I18N.getResource("GeneralPane.SRCJARNOTEXIST"),I18N.getResource("GeneralPane.BADSRCJAR") , JOptionPane.ERROR_MESSAGE); return (false); } try { ZipFile zp = new ZipFile(srcFileHandle); if ( zp.getEntry("com/sun/media/codec/video/cinepakpro/NativeEncoder$DC.class") != null ) { release = 2; // SPP } else if ( zp.getEntry("com/ibm/media/codec/audio/ACMCodec.class") != null) { release = 3; // WPP } else { release = 1; // AJ } zp.close(); } catch ( Exception ex) {} // check the dst jar file if (dstJARname == null || dstJARname.length() <= 0 ) { JOptionPane.showMessageDialog(parent,I18N.getResource("GeneralPane.INPUTDSTJAR") , I18N.getResource("GeneralPane.BADTARJAR"), JOptionPane.ERROR_MESSAGE); return (false); } if (srcJARname.equalsIgnoreCase(dstJARname)) { JOptionPane.showMessageDialog(parent,I18N.getResource("GeneralPane.SRCDSTJAR") , I18N.getResource("GeneralPane.BADTARJAR") , JOptionPane.ERROR_MESSAGE); return (false); } // no error return true; } public int getRelease() { return release; } public boolean genTwoJars() { return (twoJar.isEnabled() && twoJar.isSelected()); } }