/* * File : MediaBagSelector.java * Created : 22-mar-2004 15:36 * 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.bags; import edu.xtec.util.Messages; import edu.xtec.util.Options; import edu.xtec.util.ResourceManager; import java.awt.Component; import java.util.HashMap; import java.util.Map; import javax.swing.event.ListSelectionEvent; import javax.swing.event.ListSelectionListener; /** * * @author Francesc Busquets (fbusquets@xtec.cat) * @version 13.09.17 */ public class MediaBagSelector extends javax.swing.JPanel { // Modified: 14-09-2010 - suggested by Camille Manoury // The cell properties editor now allows to directly import images // and other files into the media library Options options; /** Creates new form MediaBagSelector */ public MediaBagSelector(Options options) { this.options=options; initComponents(); mediaList.addListSelectionListener(selListener); } /** 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; listPanel = new javax.swing.JPanel(); scrollList = new javax.swing.JScrollPane(); mediaList = new javax.swing.JList(); addMediaBtn = new javax.swing.JButton(); elementPanel = new javax.swing.JPanel(); previewLabel = new javax.swing.JLabel(); nameLb = new javax.swing.JLabel(); nameText = new javax.swing.JLabel(); fileLb = new javax.swing.JLabel(); fileText = new javax.swing.JLabel(); javax.swing.JLabel typeLb = new javax.swing.JLabel(); typeTx = new javax.swing.JLabel(); javax.swing.JLabel sizeLb = new javax.swing.JLabel(); sizeTx = new javax.swing.JLabel(); setLayout(new java.awt.GridBagLayout()); listPanel.setLayout(new java.awt.BorderLayout()); scrollList.setMinimumSize(new java.awt.Dimension(200, 400)); scrollList.setPreferredSize(new java.awt.Dimension(200, 400)); scrollList.setViewportView(mediaList); listPanel.add(scrollList, java.awt.BorderLayout.CENTER); addMediaBtn.setIcon(ResourceManager.getImageIcon("icons/media_new.gif")); addMediaBtn.setText(options.getMsg("edit_media_new")); addMediaBtn.setToolTipText(options.getMsg("edit_media_new_tooltip")); addMediaBtn.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { addMediaBtnActionPerformed(evt); } }); listPanel.add(addMediaBtn, java.awt.BorderLayout.PAGE_END); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.fill = java.awt.GridBagConstraints.VERTICAL; add(listPanel, gridBagConstraints); elementPanel.setLayout(new java.awt.GridBagLayout()); previewLabel.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); previewLabel.setBorder(javax.swing.BorderFactory.createEtchedBorder()); previewLabel.setMinimumSize(new java.awt.Dimension(100, 100)); previewLabel.setPreferredSize(new java.awt.Dimension(100, 100)); previewLabel.addMouseListener(new java.awt.event.MouseAdapter() { public void mousePressed(java.awt.event.MouseEvent evt) { previewLabelMousePressed(evt); } }); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 1; gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.weighty = 1.0; gridBagConstraints.insets = new java.awt.Insets(3, 3, 7, 3); elementPanel.add(previewLabel, gridBagConstraints); nameLb.setText(options.getMsg("edit_name")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); elementPanel.add(nameLb, gridBagConstraints); nameText.setMinimumSize(new java.awt.Dimension(200, 16)); nameText.setPreferredSize(new java.awt.Dimension(200, 17)); 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); elementPanel.add(nameText, gridBagConstraints); fileLb.setText(options.getMsg("edit_file")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); elementPanel.add(fileLb, gridBagConstraints); fileText.setMinimumSize(new java.awt.Dimension(200, 16)); fileText.setPreferredSize(new java.awt.Dimension(200, 17)); 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); elementPanel.add(fileText, gridBagConstraints); typeLb.setText(options.getMsg("edit_media_type")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); elementPanel.add(typeLb, gridBagConstraints); typeTx.setText("-"); 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); elementPanel.add(typeTx, gridBagConstraints); sizeLb.setText(options.getMsg("edit_media_size")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); elementPanel.add(sizeLb, gridBagConstraints); sizeTx.setText("0 Kb"); 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); elementPanel.add(sizeTx, gridBagConstraints); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.weightx = 1.0; gridBagConstraints.weighty = 1.0; gridBagConstraints.insets = new java.awt.Insets(4, 4, 4, 4); add(elementPanel, gridBagConstraints); }// </editor-fold>//GEN-END:initComponents private void previewLabelMousePressed(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_previewLabelMousePressed if(current!=null) current.testMedia(this, options); }//GEN-LAST:event_previewLabelMousePressed private void addMediaBtnActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_addMediaBtnActionPerformed if(mbe!=null){ MediaBagElementEditor[] mbele=mbe.createNewMediaBagElements(options, this, filters); if(mbele!=null && mbele.length>0){ mediaList.setListData(mbe.getChildrenList(filters).toArray()); setSelected(mbele[0]); mediaList.setSelectedValue(mbele[0], true); } } }//GEN-LAST:event_addMediaBtnActionPerformed MediaBagEditor mbe; MediaBagElementEditor current; int filters; protected void setMediaBagEditor(MediaBagEditor mbe, int filters){ this.mbe=mbe; this.filters=filters; setSelected(null); mediaList.setListData(mbe==null ? new String[0] : mbe.getChildrenList(filters).toArray()); } protected void setSelected(MediaBagElementEditor mbed){ current=mbed; nameText.setText(current==null ? "" : current.getName()); fileText.setText(current==null ? "" : current.getMediaBagElement().getFileName()); typeTx.setText(mbed==null ? "" : mbed.getDescription(options)); long fSize=-1; if(mbed!=null) fSize=mbed.getFileSize(); sizeTx.setText(fSize<0 ? "" : options.getMessages().fileSize(fSize)); previewLabel.setIcon(mbed==null ? null : mbed.getMediaBagElement().getThumbNail(90, 90, mbed.getMediaBag().getProject().getFileSystem())); if(mbed!=null) mbed.getMediaBagElement().clearData(); } protected MediaBagElementEditor getSelected(){ return current; } private ListSelectionListener selListener=new ListSelectionListener(){ public void valueChanged(ListSelectionEvent evt){ if(evt!=null && !evt.getValueIsAdjusting()){ setSelected((MediaBagElementEditor)mediaList.getSelectedValue()); } } }; private static Map<Options, MediaBagSelector> dlgPanels=new HashMap<Options, MediaBagSelector>(1); public static String getMediaName(String initialValue, Options options, Component parent, MediaBagEditor mbe, int filters){ String result=null; Messages msg=options.getMessages(); MediaBagSelector mbs=dlgPanels.get(options); if(mbs==null){ mbs=new MediaBagSelector(options); //mbs.setPreferredSize(new java.awt.Dimension(400, 300)); dlgPanels.put(options, mbs); } mbs.setMediaBagEditor(mbe, filters); MediaBagElementEditor mbed=initialValue==null ? null : (MediaBagElementEditor)mbe.getChildByName(initialValue); mbs.setSelected(mbed); mbs.mediaList.setSelectedValue(mbed, true); boolean b=msg.showInputDlg(parent, mbs, "edit_media_dlg_title"); if(b){ MediaBagElementEditor mbele=mbs.getSelected(); if(mbele!=null) result=mbele.getName(); } mbs.setMediaBagEditor(null, -1); return result; } // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JButton addMediaBtn; private javax.swing.JPanel elementPanel; private javax.swing.JLabel fileLb; private javax.swing.JLabel fileText; private javax.swing.JPanel listPanel; private javax.swing.JList mediaList; private javax.swing.JLabel nameLb; private javax.swing.JLabel nameText; private javax.swing.JLabel previewLabel; private javax.swing.JScrollPane scrollList; private javax.swing.JLabel sizeTx; private javax.swing.JLabel typeTx; // End of variables declaration//GEN-END:variables }