/*
* File : MediaContentEditor.java
* Created : 23-dec-2002 11:58
* By : fbusquets
*
* JClic - Authoring and playing system for educational activities
*
* Copyright (C) 2000 - 2005 Francesc Busquets & Departament
* d'Educacio de la Generalitat de Catalunya
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details (see the LICENSE file).
*/
package edu.xtec.jclic.media;
import edu.xtec.jclic.Constants;
import edu.xtec.jclic.bags.MediaBagEditor;
import edu.xtec.jclic.bags.MediaBagSelector;
import edu.xtec.jclic.beans.MediaContentButton;
import edu.xtec.jclic.beans.SmallIntEditor;
import edu.xtec.jclic.misc.Utils;
import edu.xtec.util.Messages;
import edu.xtec.util.Options;
import edu.xtec.util.ResourceManager;
import edu.xtec.util.StrUtils;
import java.awt.CardLayout;
import java.awt.Component;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.EventObject;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.swing.JList;
import javax.swing.JScrollPane;
import javax.swing.JTextField;
import javax.swing.JToggleButton;
import javax.swing.event.DocumentEvent;
import javax.swing.text.Document;
/**
*
* @author Francesc Busquets (fbusquets@xtec.cat)
* @version 13.09.17
*/
public class MediaContentEditor extends edu.xtec.util.CtrlPanel {
MediaContent mc;
Options options;
MediaBagEditor mbe;
public static final String PROP_MC="mediaContent";
private static final String[] LOCATION_FROM_MSG_CODES={"box", "window", "frame"};
List<String> locationFromNames;
private JTextField[] textFields;
/** Creates new form MediaContentEditor */
public MediaContentEditor(Options options, MediaContent mc, MediaBagEditor mbe) {
this.options=options;
pre_init();
initComponents();
post_init();
setMediaBagEditor(mbe);
setMediaContent(mc);
}
private void pre_init(){
locationFromNames=new ArrayList<String>();
for(String code : LOCATION_FROM_MSG_CODES)
locationFromNames.add(options.getMsg("edit_mc_location_from_"+code));
}
private void post_init(){
textFields=new JTextField[]{
fileTxt, externalTxt, fromTxt, toTxt, xTxt, yTxt
};
for(int i=0; i<textFields.length; i++)
textFields[i].getDocument().addDocumentListener(this);
Enumeration en=mediaTypes.getElements();
while(en.hasMoreElements()){
JToggleButton rb=(JToggleButton)en.nextElement();
rb.addActionListener(this);
}
}
public void setMediaBagEditor(MediaBagEditor mbe){
this.mbe=mbe;
}
private void checkAndFirePropertyChange(MediaContent oldMc){
MediaContent currentMc=getMc();
boolean eq=((oldMc==null && currentMc==null) || (oldMc!=null && oldMc.equals(currentMc)));
if(!eq)
firePropertyChange(PROP_MC, oldMc, currentMc);
}
public void setMediaContent(MediaContent c){
if(c==null)
c=new MediaContent();
setInitializing(true);
mc=(MediaContent)c.clone();
Enumeration en=mediaTypes.getElements();
JToggleButton rb=(JToggleButton)en.nextElement();
int i=0;
for(;i<mc.mediaType; i++)
rb=(JToggleButton)en.nextElement();
rb.setSelected(true);
levelEditor.setValue(mc.level);
recBufferEditor.setValue(mc.recBuffer);
fileTxt.setText(mc.mediaFileName);
externalTxt.setText(mc.externalParam);
fromTxt.setText(Integer.toString(mc.from));
toTxt.setText(Integer.toString(mc.to));
lengthEditor.setValue(mc.length);
stretchChk.setSelected(mc.stretch);
if(mc.absLocation!=null)
posAbsoluteRadio.setSelected(true);
else if(mc.free)
posWindowRadio.setSelected(true);
else
posCellRadio.setSelected(true);
//notFreeChk.setSelected(!mc.free);
//locationChk.setSelected(mc.absLocation!=null);
syncPointValues();
loopChk.setSelected(mc.loop);
autostartChk.setSelected(mc.autoStart);
catchMouseChk.setSelected(mc.catchMouseEvents);
checkEnabled();
setInitializing(false);
}
public boolean check(Component parent){
boolean result=false;
switch(mc.mediaType){
case MediaContent.PLAY_AUDIO:
case MediaContent.PLAY_VIDEO:
case MediaContent.PLAY_MIDI:
case MediaContent.RUN_EXTERNAL:
case MediaContent.URL:
case MediaContent.RUN_CLIC_ACTIVITY:
result=StrUtils.nullableString(mc.mediaFileName)!=null;
break;
case MediaContent.RECORD_AUDIO:
case MediaContent.PLAY_RECORDED_AUDIO:
result=(mc.recBuffer>=0 && mc.recBuffer<10);
break;
case MediaContent.RUN_CLIC_PACKAGE:
result=StrUtils.nullableString(mc.mediaFileName)!=null
|| StrUtils.nullableString(mc.externalParam)!=null;
break;
case MediaContent.EXIT:
case MediaContent.RETURN:
result=true;
break;
}
if(!result)
options.getMessages().showAlert(parent, "edit_mc_err_nullContent");
return result;
}
public MediaContent getMc(){
return mc;
}
public MediaContent getMcClone(){
return mc==null ? null : (MediaContent)mc.clone();
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {
java.awt.GridBagConstraints gridBagConstraints;
mediaTypes = new javax.swing.ButtonGroup();
posTypes = new javax.swing.ButtonGroup();
mediaTypePanel = new javax.swing.JPanel();
javax.swing.JToggleButton toggleType00 = new javax.swing.JToggleButton();
toggleType01 = new javax.swing.JToggleButton();
toggleType02 = new javax.swing.JToggleButton();
toggleType03 = new javax.swing.JToggleButton();
toggleType04 = new javax.swing.JToggleButton();
toggleType05 = new javax.swing.JToggleButton();
toggleType06 = new javax.swing.JToggleButton();
toggleType07 = new javax.swing.JToggleButton();
toggleType08 = new javax.swing.JToggleButton();
toggleType09 = new javax.swing.JToggleButton();
toggleType10 = new javax.swing.JToggleButton();
toggleType11 = new javax.swing.JToggleButton();
toggleType12 = new javax.swing.JToggleButton();
mainPanel = new javax.swing.JPanel();
lbLevel = new javax.swing.JLabel();
levelEditor = new edu.xtec.jclic.beans.SmallIntEditor();
loopChk = new javax.swing.JCheckBox();
autostartChk = new javax.swing.JCheckBox();
filePanel = new javax.swing.JPanel();
javax.swing.JPanel filePanelCard0 = new javax.swing.JPanel();
javax.swing.JPanel filePanelCard1 = new javax.swing.JPanel();
lbFile = new javax.swing.JLabel();
fileTxt = new javax.swing.JTextField();
findFileBtn = new javax.swing.JButton();
javax.swing.JPanel filePanelCard2 = new javax.swing.JPanel();
lbRecbuffer = new javax.swing.JLabel();
recBufferEditor = new edu.xtec.jclic.beans.SmallIntEditor();
lbLength = new javax.swing.JLabel();
lengthEditor = new edu.xtec.jclic.beans.SmallIntEditor();
fragmentPanel = new javax.swing.JPanel();
javax.swing.JPanel fragmentPanelCard0 = new javax.swing.JPanel();
javax.swing.JPanel fragmentPanelCard1 = new javax.swing.JPanel();
lbFrom = new javax.swing.JLabel();
fromTxt = new javax.swing.JTextField();
lbTo = new javax.swing.JLabel();
toTxt = new javax.swing.JTextField();
javax.swing.JPanel fragmentPanelCard2 = new javax.swing.JPanel();
lbExternal = new javax.swing.JLabel();
externalTxt = new javax.swing.JTextField();
locationPanel = new javax.swing.JPanel();
javax.swing.JPanel locationPanelCard0 = new javax.swing.JPanel();
javax.swing.JPanel locationPanelCard1 = new javax.swing.JPanel();
javax.swing.JPanel lpanel = new javax.swing.JPanel();
posCellRadio = new javax.swing.JRadioButton();
posWindowRadio = new javax.swing.JRadioButton();
posAbsoluteRadio = new javax.swing.JRadioButton();
lbX = new javax.swing.JLabel();
xTxt = new javax.swing.JTextField();
lbY = new javax.swing.JLabel();
yTxt = new javax.swing.JTextField();
lbLocFrom = new javax.swing.JLabel();
locFromCombo = new javax.swing.JComboBox(locationFromNames.toArray());
catchMouseChk = new javax.swing.JCheckBox();
stretchChk = new javax.swing.JCheckBox();
setBorder(javax.swing.BorderFactory.createEtchedBorder());
setLayout(new java.awt.BorderLayout());
mediaTypePanel.setBorder(javax.swing.BorderFactory.createTitledBorder(options.getMsg("edit_mc_type")));
mediaTypePanel.setLayout(new java.awt.GridBagLayout());
mediaTypes.add(toggleType00);
toggleType00.setIcon(ResourceManager.getImageIcon(MediaContentButton.MEDIA_ICONS[0]));
toggleType00.setText(options.getMsg("edit_mc_type_unknown"));
toggleType00.setToolTipText(options.getMsg("edit_mc_type_unknown"));
toggleType00.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2);
mediaTypePanel.add(toggleType00, gridBagConstraints);
mediaTypes.add(toggleType01);
toggleType01.setIcon(ResourceManager.getImageIcon(MediaContentButton.MEDIA_ICONS[1]));
toggleType01.setText(options.getMsg("edit_mc_type_sound"));
toggleType01.setToolTipText(options.getMsg("edit_mc_type_sound"));
toggleType01.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2);
mediaTypePanel.add(toggleType01, gridBagConstraints);
mediaTypes.add(toggleType02);
toggleType02.setIcon(ResourceManager.getImageIcon(MediaContentButton.MEDIA_ICONS[2]));
toggleType02.setText(options.getMsg("edit_mc_type_video"));
toggleType02.setToolTipText(options.getMsg("edit_mc_type_video"));
toggleType02.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2);
mediaTypePanel.add(toggleType02, gridBagConstraints);
mediaTypes.add(toggleType03);
toggleType03.setIcon(ResourceManager.getImageIcon(MediaContentButton.MEDIA_ICONS[3]));
toggleType03.setText(options.getMsg("edit_mc_type_midi"));
toggleType03.setToolTipText(options.getMsg("edit_mc_type_midi"));
toggleType03.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2);
mediaTypePanel.add(toggleType03, gridBagConstraints);
mediaTypes.add(toggleType04);
toggleType04.setIcon(ResourceManager.getImageIcon(MediaContentButton.MEDIA_ICONS[4]));
toggleType04.setText(options.getMsg("edit_mc_type_cdaudio"));
toggleType04.setToolTipText(options.getMsg("edit_mc_type_cdaudio"));
toggleType04.setEnabled(false);
toggleType04.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2);
mediaTypePanel.add(toggleType04, gridBagConstraints);
mediaTypes.add(toggleType05);
toggleType05.setIcon(ResourceManager.getImageIcon(MediaContentButton.MEDIA_ICONS[5]));
toggleType05.setText(options.getMsg("edit_mc_type_record"));
toggleType05.setToolTipText(options.getMsg("edit_mc_type_record"));
toggleType05.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2);
mediaTypePanel.add(toggleType05, gridBagConstraints);
mediaTypes.add(toggleType06);
toggleType06.setIcon(ResourceManager.getImageIcon(MediaContentButton.MEDIA_ICONS[6]));
toggleType06.setText(options.getMsg("edit_mc_type_play_recorded"));
toggleType06.setToolTipText(options.getMsg("edit_mc_type_play_recorded"));
toggleType06.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2);
mediaTypePanel.add(toggleType06, gridBagConstraints);
mediaTypes.add(toggleType07);
toggleType07.setIcon(ResourceManager.getImageIcon(MediaContentButton.MEDIA_ICONS[7]));
toggleType07.setText(options.getMsg("edit_mc_type_run_activity"));
toggleType07.setToolTipText(options.getMsg("edit_mc_type_run_activity"));
toggleType07.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2);
mediaTypePanel.add(toggleType07, gridBagConstraints);
mediaTypes.add(toggleType08);
toggleType08.setIcon(ResourceManager.getImageIcon(MediaContentButton.MEDIA_ICONS[8]));
toggleType08.setText(options.getMsg("edit_mc_type_run_sequence"));
toggleType08.setToolTipText(options.getMsg("edit_mc_type_run_sequence"));
toggleType08.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2);
mediaTypePanel.add(toggleType08, gridBagConstraints);
mediaTypes.add(toggleType09);
toggleType09.setIcon(ResourceManager.getImageIcon(MediaContentButton.MEDIA_ICONS[9]));
toggleType09.setText(options.getMsg("edit_mc_type_run_external"));
toggleType09.setToolTipText(options.getMsg("edit_mc_type_run_external"));
toggleType09.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2);
mediaTypePanel.add(toggleType09, gridBagConstraints);
mediaTypes.add(toggleType10);
toggleType10.setIcon(ResourceManager.getImageIcon(MediaContentButton.MEDIA_ICONS[10]));
toggleType10.setText(options.getMsg("edit_mc_type_url"));
toggleType10.setToolTipText(options.getMsg("edit_mc_type_url"));
toggleType10.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2);
mediaTypePanel.add(toggleType10, gridBagConstraints);
mediaTypes.add(toggleType11);
toggleType11.setIcon(ResourceManager.getImageIcon(MediaContentButton.MEDIA_ICONS[11]));
toggleType11.setText(options.getMsg("edit_mc_type_exit"));
toggleType11.setToolTipText(options.getMsg("edit_mc_type_exit"));
toggleType11.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2);
mediaTypePanel.add(toggleType11, gridBagConstraints);
mediaTypes.add(toggleType12);
toggleType12.setIcon(ResourceManager.getImageIcon(MediaContentButton.MEDIA_ICONS[12]));
toggleType12.setText(options.getMsg("edit_mc_type_return"));
toggleType12.setToolTipText(options.getMsg("edit_mc_type_return"));
toggleType12.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2);
mediaTypePanel.add(toggleType12, gridBagConstraints);
add(mediaTypePanel, java.awt.BorderLayout.WEST);
mainPanel.setLayout(new java.awt.GridBagLayout());
lbLevel.setText(options.getMsg("edit_mc_level"));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
mainPanel.add(lbLevel, gridBagConstraints);
levelEditor.addPropertyChangeListener(SmallIntEditor.PROP_VALUE, this);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
mainPanel.add(levelEditor, gridBagConstraints);
loopChk.setText(options.getMsg("edit_mc_loop"));
loopChk.addActionListener(this);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridwidth = 2;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
mainPanel.add(loopChk, gridBagConstraints);
autostartChk.setText(options.getMsg("edit_mc_autostart"));
autostartChk.addActionListener(this);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
mainPanel.add(autostartChk, gridBagConstraints);
filePanel.setLayout(new java.awt.CardLayout());
filePanel.add(filePanelCard0, "card0");
filePanelCard1.setLayout(new java.awt.GridBagLayout());
lbFile.setText(options.getMsg("edit_mc_file"));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
filePanelCard1.add(lbFile, gridBagConstraints);
fileTxt.setHorizontalAlignment(javax.swing.JTextField.RIGHT);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.weightx = 1.0;
gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
filePanelCard1.add(fileTxt, gridBagConstraints);
findFileBtn.setText("...");
findFileBtn.addActionListener(this);
filePanelCard1.add(findFileBtn, new java.awt.GridBagConstraints());
filePanel.add(filePanelCard1, "card1");
filePanelCard2.setLayout(new java.awt.GridBagLayout());
lbRecbuffer.setText(options.getMsg("edit_mc_recBuffer"));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
filePanelCard2.add(lbRecbuffer, gridBagConstraints);
recBufferEditor.addPropertyChangeListener(SmallIntEditor.PROP_VALUE, this);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
filePanelCard2.add(recBufferEditor, gridBagConstraints);
lbLength.setText(options.getMsg("edit_mc_length"));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
filePanelCard2.add(lbLength, gridBagConstraints);
lengthEditor.setMax(15);
lengthEditor.setValue(5);
lengthEditor.setMin(1);
lengthEditor.addPropertyChangeListener(SmallIntEditor.PROP_VALUE, this);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.weightx = 1.0;
gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
filePanelCard2.add(lengthEditor, gridBagConstraints);
filePanel.add(filePanelCard2, "card2");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
gridBagConstraints.weightx = 1.0;
gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
mainPanel.add(filePanel, gridBagConstraints);
fragmentPanel.setLayout(new java.awt.CardLayout());
fragmentPanel.add(fragmentPanelCard0, "card0");
fragmentPanelCard1.setLayout(new java.awt.GridBagLayout());
lbFrom.setLabelFor(fromTxt);
lbFrom.setText(options.getMsg("edit_mc_from"));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
fragmentPanelCard1.add(lbFrom, gridBagConstraints);
fromTxt.setHorizontalAlignment(javax.swing.JTextField.RIGHT);
fromTxt.setPreferredSize(new java.awt.Dimension(60, 21));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
fragmentPanelCard1.add(fromTxt, gridBagConstraints);
lbTo.setLabelFor(toTxt);
lbTo.setText(options.getMsg("edit_mc_to"));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
fragmentPanelCard1.add(lbTo, gridBagConstraints);
toTxt.setHorizontalAlignment(javax.swing.JTextField.RIGHT);
toTxt.setPreferredSize(new java.awt.Dimension(60, 21));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.weightx = 1.0;
gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
fragmentPanelCard1.add(toTxt, gridBagConstraints);
fragmentPanel.add(fragmentPanelCard1, "card1");
fragmentPanelCard2.setLayout(new java.awt.GridBagLayout());
lbExternal.setLabelFor(externalTxt);
lbExternal.setText(options.getMsg("edit_mc_externalParam"));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
fragmentPanelCard2.add(lbExternal, gridBagConstraints);
externalTxt.setHorizontalAlignment(javax.swing.JTextField.RIGHT);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.weightx = 1.0;
gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
fragmentPanelCard2.add(externalTxt, gridBagConstraints);
fragmentPanel.add(fragmentPanelCard2, "card2");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
gridBagConstraints.weightx = 1.0;
gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
mainPanel.add(fragmentPanel, gridBagConstraints);
locationPanel.setLayout(new java.awt.CardLayout());
locationPanel.add(locationPanelCard0, "card0");
locationPanelCard1.setLayout(new java.awt.GridBagLayout());
lpanel.setBorder(javax.swing.BorderFactory.createTitledBorder(options.getMsg("edit_mc_location")));
lpanel.setLayout(new java.awt.GridBagLayout());
posTypes.add(posCellRadio);
posCellRadio.setText(options.getMsg("edit_mc_pos_cell"));
posCellRadio.addActionListener(this);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.weightx = 1.0;
gridBagConstraints.insets = new java.awt.Insets(3, 3, 0, 3);
lpanel.add(posCellRadio, gridBagConstraints);
posTypes.add(posWindowRadio);
posWindowRadio.setText(options.getMsg("edit_mc_pos_window"));
posWindowRadio.addActionListener(this);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
lpanel.add(posWindowRadio, gridBagConstraints);
posTypes.add(posAbsoluteRadio);
posAbsoluteRadio.setText(options.getMsg("edit_mc_pos_absolute"));
posAbsoluteRadio.addActionListener(this);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.insets = new java.awt.Insets(0, 3, 3, 3);
lpanel.add(posAbsoluteRadio, gridBagConstraints);
lbX.setText(options.getMsg("edit_mc_location_x"));
lbX.setLabelFor(xTxt);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
lpanel.add(lbX, gridBagConstraints);
xTxt.setHorizontalAlignment(javax.swing.JTextField.RIGHT);
xTxt.setPreferredSize(new java.awt.Dimension(60, 21));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
lpanel.add(xTxt, gridBagConstraints);
lbY.setText(options.getMsg("edit_mc_location_y"));
lbY.setLabelFor(yTxt);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
lpanel.add(lbY, gridBagConstraints);
yTxt.setHorizontalAlignment(javax.swing.JTextField.RIGHT);
yTxt.setPreferredSize(new java.awt.Dimension(60, 21));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
lpanel.add(yTxt, gridBagConstraints);
lbLocFrom.setText(options.getMsg("edit_mc_location_from"));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
lpanel.add(lbLocFrom, gridBagConstraints);
locFromCombo.addActionListener(this);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
lpanel.add(locFromCombo, gridBagConstraints);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
gridBagConstraints.weightx = 1.0;
gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
locationPanelCard1.add(lpanel, gridBagConstraints);
catchMouseChk.setText(options.getMsg("edit_mc_catchmouse"));
catchMouseChk.addActionListener(this);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
locationPanelCard1.add(catchMouseChk, gridBagConstraints);
stretchChk.setText(options.getMsg("edit_mc_stretch"));
stretchChk.addActionListener(this);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
locationPanelCard1.add(stretchChk, gridBagConstraints);
locationPanel.add(locationPanelCard1, "card1");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
gridBagConstraints.weightx = 1.0;
gridBagConstraints.weighty = 1.0;
gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
mainPanel.add(locationPanel, gridBagConstraints);
add(mainPanel, java.awt.BorderLayout.CENTER);
}// </editor-fold>//GEN-END:initComponents
@Override
public boolean documentChangePerformed(DocumentEvent ev){
Document doc=ev.getDocument();
int v=0;
for(;v<textFields.length; v++)
if(textFields[v].getDocument()==doc)
break;
if(v<textFields.length)
return eventPerformed(new EventObject(textFields[v]));
return false;
}
@Override
public boolean eventPerformed(EventObject ev){
if(ev!=null && ev.getSource()!=null){
setInitializing(true);
MediaContent oldMc=getMcClone();
Object src=ev.getSource();
if(src==levelEditor)
mc.level=levelEditor.getValue();
else if(src==recBufferEditor)
mc.recBuffer=recBufferEditor.getValue();
else if(src==lengthEditor)
mc.length=lengthEditor.getValue();
else if(src==fileTxt){
String s=fileTxt.getText();
mc.mediaFileName=(s.length()>0 ? s : null);
}
else if(src==externalTxt){
String s=externalTxt.getText();
mc.externalParam=(s.length()>0 ? s : null);
}
else if(src==fromTxt)
mc.from=getIntValue(fromTxt, -1);
else if(src==toTxt)
mc.to=getIntValue(toTxt, -1);
else if(src==stretchChk)
mc.stretch=stretchChk.isSelected();
else if(src==posCellRadio){
mc.free=false;
mc.absLocation=null;
syncPointValues();
checkEnabled();
}
else if(src==posWindowRadio){
mc.free=true;
mc.absLocation=null;
syncPointValues();
checkEnabled();
}
else if(src==posAbsoluteRadio){
mc.free=false;
mc.absLocation=new java.awt.Point();
syncPointValues();
checkEnabled();
}
else if(src==locFromCombo)
mc.absLocationFrom=Math.max(0, locFromCombo.getSelectedIndex());
else if(src==xTxt && mc.absLocation!=null)
mc.absLocation.x=getIntValue(xTxt, 0);
else if(src==yTxt && mc.absLocation!=null)
mc.absLocation.y=getIntValue(yTxt, 0);
else if(src==loopChk)
mc.loop=loopChk.isSelected();
else if(src==autostartChk)
mc.autoStart=autostartChk.isSelected();
else if(src==catchMouseChk)
mc.catchMouseEvents=catchMouseChk.isSelected();
else if(src==findFileBtn){
selectBtnPressed();
}
else if(src instanceof JToggleButton){
Enumeration en=mediaTypes.getElements();
int v=-1, j=0;
while(en.hasMoreElements()){
JToggleButton rb=(JToggleButton)en.nextElement();
if(rb==src){
v=j;
break;
}
j++;
}
if(v>=0){
int currentType=mc.mediaType;
mc.mediaType=v;
if(mc.mediaType!=currentType){
MediaContent mc2=new MediaContent();
mc2.mediaType=mc.mediaType;
setMediaContent(mc2);
}
}
}
checkAndFirePropertyChange(oldMc);
setInitializing(false);
}
return true;
}
protected void selectBtnPressed(){
String value=null;
JList list=null;
String dlgTitleKey=null;
if(mc.mediaType==MediaContent.RUN_CLIC_ACTIVITY){
list=new JList(mbe.getProjectEditor().getActivityBagEditor().getListModel());
dlgTitleKey="edit_mc_activity_selection";
}
else if(mc.mediaType==MediaContent.RUN_CLIC_PACKAGE){
list=new JList(mbe.getProjectEditor().getActivitySequenceEditor().getTagList());
dlgTitleKey="edit_mc_sequence_selection";
}
if(list!=null){
JScrollPane pane=new JScrollPane(list);
if(options.getMessages().showInputDlg(this, pane, dlgTitleKey)){
Object o=list.getSelectedValue();
if(o!=null)
value=o.toString();
}
}
else{
int filter
= mc.mediaType==MediaContent.PLAY_AUDIO ? Utils.ALL_SOUNDS_FF
: mc.mediaType==MediaContent.PLAY_MIDI ? Utils.MIDI_FF
: mc.mediaType==MediaContent.PLAY_VIDEO ? Utils.ALL_VIDEO_FF
: Utils.ALL_MULTIMEDIA_FF;
value=MediaBagSelector.getMediaName(mc.mediaFileName, options, this, mbe, filter);
}
if(value!=null){
mc.mediaFileName=value;
fileTxt.setText(value);
}
}
protected void checkEnabled(){
boolean bLevel=true, bRecBuffer=false, bLength=false, bFile=false;
boolean bExternal=false, bFrom=false, bTo=false, bStretch=false;
boolean bLocation=false;
boolean bLoop=false, bAutostart=true, bCatchMouse=false;
int filePanelItem=0, fragmentPanelItem=0, locationPanelItem=0;
switch(mc.mediaType){
case MediaContent.PLAY_VIDEO:
bStretch=true;
bLocation=true;
bCatchMouse=true;
locationPanelItem=1;
case MediaContent.PLAY_AUDIO:
case MediaContent.PLAY_MIDI:
bFile=true;
bFrom=true;
bTo=true;
bLoop=true;
filePanelItem=1;
fragmentPanelItem=1;
break;
case MediaContent.PLAY_CDAUDIO:
break;
case MediaContent.RECORD_AUDIO:
bLength=true;
case MediaContent.PLAY_RECORDED_AUDIO:
bRecBuffer=true;
filePanelItem=2;
break;
case MediaContent.RUN_CLIC_ACTIVITY:
case MediaContent.RUN_CLIC_PACKAGE:
case MediaContent.RUN_EXTERNAL:
bExternal=true;
case MediaContent.URL:
bFile=true;
bLevel=false;
filePanelItem=1;
fragmentPanelItem=2;
break;
case MediaContent.EXIT:
case MediaContent.RETURN:
bLevel=false;
break;
default:
bLevel=false;
break;
}
levelEditor.setEnabled(bLevel);
recBufferEditor.setEnabled(bRecBuffer);
lengthEditor.setEnabled(bLength);
fileTxt.setEnabled(bFile);
findFileBtn.setEnabled(bFile);
externalTxt.setEnabled(bExternal);
fromTxt.setEnabled(bFrom);
toTxt.setEnabled(bTo);
stretchChk.setEnabled(bStretch);
posCellRadio.setEnabled(bLocation);
posWindowRadio.setEnabled(bLocation);
posAbsoluteRadio.setEnabled(bLocation);
locFromCombo.setEnabled(bLocation && mc.absLocation!=null);
xTxt.setEnabled(bLocation && mc.absLocation!=null);
yTxt.setEnabled(bLocation && mc.absLocation!=null);
loopChk.setEnabled(bLoop);
autostartChk.setEnabled(bAutostart);
catchMouseChk.setEnabled(bCatchMouse);
CardLayout cl=(CardLayout)filePanel.getLayout();
cl.show(filePanel, "card"+Integer.toString(filePanelItem));
if(filePanelItem==1){
String s
= mc.mediaType==MediaContent.RUN_CLIC_ACTIVITY ? "edit_mc_activity"
: mc.mediaType==MediaContent.RUN_CLIC_PACKAGE ? "edit_mc_sequence"
: mc.mediaType==MediaContent.URL ? "edit_mc_url"
: "edit_mc_file";
lbFile.setText(options.getMsg(s));
boolean b=(mc.mediaType!=MediaContent.URL && mc.mediaType!=MediaContent.RUN_EXTERNAL);
findFileBtn.setVisible(b);
filePanel.revalidate();
}
cl=(CardLayout)fragmentPanel.getLayout();
cl.show(fragmentPanel, "card"+Integer.toString(fragmentPanelItem));
if(fragmentPanelItem==2){
String s=
mc.mediaType==MediaContent.RUN_CLIC_ACTIVITY || mc.mediaType==MediaContent.RUN_CLIC_PACKAGE
? "edit_mc_project" : "edit_mc_externalParam";
lbExternal.setText(options.getMsg(s));
fragmentPanel.revalidate();
}
cl=(CardLayout)locationPanel.getLayout();
cl.show(locationPanel, "card"+Integer.toString(locationPanelItem));
}
private void syncPointValues(){
java.awt.Point p=mc.absLocation;
if(p==null)
p=new java.awt.Point();
xTxt.setText(Integer.toString(p.x));
yTxt.setText(Integer.toString(p.y));
locFromCombo.setSelectedIndex(mc.absLocationFrom);
}
protected int getIntValue(JTextField txf, int defaultValue){
String s=txf.getText();
int result=defaultValue;
try{
result=Integer.parseInt(s);
} catch(Exception ex){
}
return result;
}
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JCheckBox autostartChk;
private javax.swing.JCheckBox catchMouseChk;
private javax.swing.JTextField externalTxt;
private javax.swing.JPanel filePanel;
private javax.swing.JTextField fileTxt;
private javax.swing.JButton findFileBtn;
private javax.swing.JPanel fragmentPanel;
private javax.swing.JTextField fromTxt;
private javax.swing.JLabel lbExternal;
private javax.swing.JLabel lbFile;
private javax.swing.JLabel lbFrom;
private javax.swing.JLabel lbLength;
private javax.swing.JLabel lbLevel;
private javax.swing.JLabel lbLocFrom;
private javax.swing.JLabel lbRecbuffer;
private javax.swing.JLabel lbTo;
private javax.swing.JLabel lbX;
private javax.swing.JLabel lbY;
private edu.xtec.jclic.beans.SmallIntEditor lengthEditor;
private edu.xtec.jclic.beans.SmallIntEditor levelEditor;
private javax.swing.JComboBox locFromCombo;
private javax.swing.JPanel locationPanel;
private javax.swing.JCheckBox loopChk;
private javax.swing.JPanel mainPanel;
private javax.swing.JPanel mediaTypePanel;
private javax.swing.ButtonGroup mediaTypes;
private javax.swing.JRadioButton posAbsoluteRadio;
private javax.swing.JRadioButton posCellRadio;
private javax.swing.ButtonGroup posTypes;
private javax.swing.JRadioButton posWindowRadio;
private edu.xtec.jclic.beans.SmallIntEditor recBufferEditor;
private javax.swing.JCheckBox stretchChk;
private javax.swing.JTextField toTxt;
private javax.swing.JToggleButton toggleType01;
private javax.swing.JToggleButton toggleType02;
private javax.swing.JToggleButton toggleType03;
private javax.swing.JToggleButton toggleType04;
private javax.swing.JToggleButton toggleType05;
private javax.swing.JToggleButton toggleType06;
private javax.swing.JToggleButton toggleType07;
private javax.swing.JToggleButton toggleType08;
private javax.swing.JToggleButton toggleType09;
private javax.swing.JToggleButton toggleType10;
private javax.swing.JToggleButton toggleType11;
private javax.swing.JToggleButton toggleType12;
private javax.swing.JTextField xTxt;
private javax.swing.JTextField yTxt;
// End of variables declaration//GEN-END:variables
private static Map<Options, MediaContentEditor> panels=new HashMap<Options, MediaContentEditor>();
public static MediaContent getMediaContent(MediaContent initialMc, Component parent, Options options, MediaBagEditor mbe){
MediaContent result=null;
Messages msg=options.getMessages();
MediaContentEditor mce=panels.get(options);
if(mce==null){
mce=new MediaContentEditor(options, initialMc, mbe);
panels.put(options, mce);
} else{
mce.setMediaBagEditor(mbe);
mce.setMediaContent(initialMc);
}
if(msg.showInputDlg(parent, mce, "edit_mc_title") && mce.check(parent))
result=mce.getMc();
return result;
}
public static boolean nameChanged(MediaContent mc, int type, String oldName, String newName){
boolean result=false;
if((type & (Constants.T_MEDIA | Constants.T_SEQUENCE | Constants.T_URL))!=0
&& oldName.equals(mc.mediaFileName)){
mc.mediaFileName=newName;
result=true;
}
return result;
}
}