/* * Projecte Fressa a JAVA * File : TFormObrirRecurs.java * Created : 21 / febrer / 2009, 08:25 * * @author Jordi Lagares Roset "jlagares@xtec.cat - www.lagares.org" * amb el suport del 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). */ import java.awt.*; import java.awt.event.*; import java.io.File; import javax.swing.*; public class TFormObrirRecurs extends javax.swing.JDialog { public javax.swing.JButton jButtonDAcord; public javax.swing.JButton jButtonCancelar; public javax.swing.JButton jButtonObrir; public javax.swing.JPanel jPanel1; public javax.swing.JLabel jLabelImatge; public javax.swing.JCheckBox JCheckBoxPrincipiParaula; public javax.swing.JLabel jLabelTria; public javax.swing.JLabel jLabelBuscar; public javax.swing.JTextField EditBuscar; public javax.swing.JButton SpeedButtonSeguent; javax.swing.JPanel fcPanel; javax.swing.JFileChooser fc; public int resultat = 0; public String DirectoriActualObrirRecurs,DirectoriActualObrirRecursVell; public File FileOK; private Tools tool; private Timer TimerEstat; int TimerEstatInterval=100; String FitxerVell=""; public String fn, pn; int NumeroMaximArxiusQueEsPotBuscarEnUnDirectori=10000; String StringNomArxius[] = new String[NumeroMaximArxiusQueEsPotBuscarEnUnDirectori]; int NumeroArxius=0; int LlocCerca=0; public static void main(String args[]) { java.awt.EventQueue.invokeLater(new Runnable() { public void run() { new TFormObrirRecurs(new javax.swing.JFrame(), true).setVisible(true); } }); } public TFormObrirRecurs(java.awt.Frame parent, boolean modal) { super(parent, modal); initComponents(); } public TFormObrirRecurs(javax.swing.JDialog parent, boolean modal) { super(parent, modal); initComponents(); } private void initComponents() { setSize(450,636); getContentPane().setLayout(null); tool = new Tools(); setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); setTitle("Obrir recurs - 'Toti PM PLAPHOONS'"); setResizable(false); jButtonDAcord = new javax.swing.JButton(); jButtonDAcord.setIcon(new javax.swing.ImageIcon(this.getClass().getResource("dibuixos/catala/ok.gif"))); jButtonDAcord.setBounds(344,298,81,41); jButtonDAcord.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); getContentPane().add(jButtonDAcord); jButtonDAcord.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButtonDAcordClick(); } }); jButtonCancelar = new javax.swing.JButton(); jButtonCancelar.setIcon(new javax.swing.ImageIcon(this.getClass().getResource("dibuixos/catala/cancel.gif"))); jButtonCancelar.setBounds(344,342,81,41); jButtonCancelar.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); getContentPane().add(jButtonCancelar); jButtonCancelar.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButtonCancelarClick(); } }); /* jButtonObrir = new javax.swing.JButton(); //jButtonObrir.setText("Estàndar..."); jButtonObrir.setIcon(new javax.swing.ImageIcon(this.getClass().getResource("dibuixos/catala/obrir.gif"))); jButtonObrir.setBounds(344,386,81,41); jButtonObrir.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); getContentPane().add(jButtonObrir); jButtonObrir.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButtonObrirClick(); } }); */ jPanel1 = new javax.swing.JPanel(); //jPanel1.setBorder(javax.swing.BorderFactory.createLoweredBevelBorder()); jPanel1.setBorder(javax.swing.BorderFactory.createEtchedBorder()); jPanel1.setBounds(8,298,305,305); //No entenc perque no puc posar aixo: //jPanel1.setBackground(Color.white); jPanel1.setBackground(java.awt.Color.white); getContentPane().add(jPanel1); jPanel1.setLayout(null); jLabelImatge = new javax.swing.JLabel(); jLabelImatge.setBounds(4,4,jPanel1.getWidth()-8,jPanel1.getHeight()-8); jPanel1.add(jLabelImatge); jLabelBuscar = new javax.swing.JLabel(); jLabelBuscar.setFont(new Font("sansserif",0,11)); jLabelBuscar.setText("Buscar:"); jLabelBuscar.setBounds(8,272,40,13); getContentPane().add(jLabelBuscar); EditBuscar = new javax.swing.JTextField(); EditBuscar.setBounds(50,267,161,21); getContentPane().add(EditBuscar); EditBuscar.addKeyListener(new java.awt.event.KeyAdapter() { public void keyReleased(java.awt.event.KeyEvent evt) { EditBuscarChange(); } }); SpeedButtonSeguent = new javax.swing.JButton(); SpeedButtonSeguent.setIcon(new javax.swing.ImageIcon(this.getClass().getResource("dibuixos/obrirrecursseguent.gif"))); SpeedButtonSeguent.setBounds(215,264,33,25); SpeedButtonSeguent.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); getContentPane().add(SpeedButtonSeguent); SpeedButtonSeguent.setEnabled(false); SpeedButtonSeguent.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { SpeedButtonSeguentClick(); } }); JCheckBoxPrincipiParaula = new javax.swing.JCheckBox(); JCheckBoxPrincipiParaula.setFont(new Font("sansserif",0,11)); JCheckBoxPrincipiParaula.setText("Buscar començament de paraula"); JCheckBoxPrincipiParaula.setBounds(250,270,210,17); getContentPane().add(JCheckBoxPrincipiParaula); fc = new javax.swing.JFileChooser();; fc.setControlButtonsAreShown(false); fc.setAcceptAllFileFilterUsed(false); fc.addChoosableFileFilter(new FilterObrirFitxerRecurs()); //fc.setFileSelectionMode(fc.DIRECTORIES_ONLY); fcPanel = new javax.swing.JPanel(new BorderLayout()); fcPanel.add(fc, BorderLayout.CENTER); fcPanel.setBorder(javax.swing.BorderFactory.createEtchedBorder()); fcPanel.setBounds(8,2,433,256); getContentPane().add(fcPanel); /* fc.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { setTitle(fc.getSelectedFile().toString()); } }); */ //Com no funciona el addActionListener faig aquest Timer per saber en qualsevol moment quin arxiu s'ha escollit TimerEstat = new Timer(TimerEstatInterval,TaskPerformerTimerEstatTimer); FileOK=null; fn=""; pn=""; jLabelImatge.setIcon(null); addWindowListener(new java.awt.event.WindowAdapter() { public void windowClosing(WindowEvent e) { DirectoriActualObrirRecurs=fc.getCurrentDirectory().toString()+fc.getSelectedFile().separator; TimerEstat.stop(); Toolkit.getDefaultToolkit().removeAWTEventListener(ListenerReturnEsc); } }); } private ActionListener TaskPerformerTimerEstatTimer=new ActionListener() { public void actionPerformed(ActionEvent e){ File f = fc.getSelectedFile(); if (f==null) {return;} fn=fc.getName(fc.getSelectedFile()); if (!fn.equals("")) { String FitxerNou=fc.getSelectedFile().toString(); if (!FitxerVell.equals(FitxerNou)) { FitxerVell=FitxerNou; DirectoriActualObrirRecurs=fc.getCurrentDirectory().toString()+fc.getSelectedFile().separator; String ext=Tools.getExtension(f); pn=fc.getSelectedFile().getAbsolutePath(); //if ((ext.equals("jpg")) || (ext.equals("png")) || (ext.equals("gif"))) { if ((ext.equals("jpg")) || (ext.equals("png")) || (ext.equals("gif")) || (ext.equals("bmp"))) { FileOK=f; //BEGIN 0005 //ImageIcon test = new ImageIcon(pn); ImageIcon test = new ImageIcon(); if (pn.toLowerCase().endsWith(".bmp")) { Image newMap = BMPLoader.load(pn); if(newMap != null) { test.setImage(newMap); } } else { test = new ImageIcon(pn); } //END 0005 jLabelImatge.setBounds(4,4,jPanel1.getWidth()-8,jPanel1.getHeight()-8); if ((test.getIconWidth()>0) && (test.getIconHeight()>0)&& (jLabelImatge.getHeight()>0)) { if ((float)jLabelImatge.getWidth()/(float)jLabelImatge.getHeight()<(float)test.getIconWidth()/test.getIconHeight()) { int comodi=(jLabelImatge.getWidth()*test.getIconHeight()/test.getIconWidth()); jLabelImatge.setBounds(jLabelImatge.getX(),jLabelImatge.getY()+(jLabelImatge.getHeight()-comodi)/2,jLabelImatge.getWidth(),comodi); } else { int comodi=(jLabelImatge.getHeight()*test.getIconWidth()/test.getIconHeight()); jLabelImatge.setBounds(jLabelImatge.getX()+(jLabelImatge.getWidth()-comodi)/2,jLabelImatge.getY(),comodi,jLabelImatge.getHeight()); } } test.setImage(test.getImage().getScaledInstance(jLabelImatge.getWidth(),jLabelImatge.getHeight(),1)); jLabelImatge.setIcon(test); } else if (ext.equals("wav")) { jLabelImatge.setIcon(null); FileOK=f; } } } } }; private AWTEventListener ListenerReturnEsc = new AWTEventListener() { public void eventDispatched(AWTEvent event) { KeyEvent ke = (KeyEvent)event; if (ke.getID() == KeyEvent.KEY_TYPED) { if (ke.getKeyChar() == KeyEvent.VK_ESCAPE) { jButtonCancelarClick(); } else if (ke.getKeyChar() == KeyEvent.VK_ENTER) { if (Global.EsWindowsLookAndFeel==1) { if (jButtonCancelar.isFocusOwner()) { } else { jButtonDAcordClick(); } } else { if (jButtonCancelar.isFocusOwner()) { jButtonCancelarClick() ; } else { jButtonDAcordClick(); } } } } } }; private void EditBuscarChange() { String s=""; DirectoriActualObrirRecurs=fc.getCurrentDirectory().toString()+fc.getSelectedFile().separator; if (!DirectoriActualObrirRecursVell.equals(DirectoriActualObrirRecurs)) { DirectoriActualObrirRecursVell=DirectoriActualObrirRecurs; this.setEnabled(false); File f = new File(fc.getCurrentDirectory().toString()+fc.getSelectedFile().separator); File files[] = f.listFiles(); String ext; NumeroArxius=0; for (int i=0;i<=files.length-1;i++) { if (!files[i].isDirectory()) { ext=Tools.getExtension(files[i]); //if ((ext.equals("jpg")) || (ext.equals("png")) || (ext.equals("gif"))) { if ((ext.equals("jpg")) || (ext.equals("png")) || (ext.equals("gif")) || (ext.equals("bmp"))) { StringNomArxius[NumeroArxius]=files[i].getName(); NumeroArxius++; } else if (ext.equals("wav")) { StringNomArxius[NumeroArxius]=files[i].getName(); NumeroArxius++; } } } for (int j=0; j0) { s=EditBuscar.getText(); for (int i=0;i0) { fc.setSelectedFile(new File(DirectoriActualObrirRecurs+StringNomArxius[i])); SpeedButtonSeguent.setEnabled(true); if (i0) { String s=EditBuscar.getText(); for (int i=LlocCerca;i0) { fc.setSelectedFile(new File(DirectoriActualObrirRecurs+StringNomArxius[i])); SpeedButtonSeguent.setEnabled(true); if (i screenSize.height) frameSize.height = screenSize.height; if (frameSize.width > screenSize.width) frameSize.width = screenSize.width; this.setLocation((screenSize.width - frameSize.width) / 2, (screenSize.height - frameSize.height) / 2); TimerEstat.start(); this.setVisible(true); EditBuscar.requestFocus(); } }