import java.awt.*; import java.awt.event.*; import java.io.*; import javax.sound.sampled.*; public class Digiheliredaktor2 extends Panel implements ActionListener{ byte[] andmed; byte[] puhver; AudioFormat formaat; Button kopeeri=new Button("Kopeeri"); Button loika=new Button("Lõika"); Button kleebi=new Button("Kleebi"); Button kirjutaYle=new Button("Kirjuta üle"); Button tyhjenda=new Button("Vaikseks"); Button mangi=new Button("Mängi"); Button mangiLoik=new Button("Mängi lõik"); Margistusala2 ala=new Margistusala2(); Button lae=new Button("Lae fail"); TextField tfLae=new TextField("esimene.wav", 20); Button salvesta=new Button("Salvesta fail"); TextField tfSalvesta=new TextField("salvestis.wav", 20); SourceDataLine kanal; public Digiheliredaktor2(){ Panel p=new Panel(); p.add(tyhjenda); p.add(loika); p.add(kopeeri); p.add(kleebi); p.add(kirjutaYle); p.add(mangi); p.add(mangiLoik); Panel alapaneel=new Panel(); alapaneel.add(lae); alapaneel.add(tfLae); alapaneel.add(salvesta); alapaneel.add(tfSalvesta); setLayout(new BorderLayout()); add(p, BorderLayout.NORTH); add(ala, BorderLayout.CENTER); add(alapaneel, BorderLayout.SOUTH); loika.addActionListener(this); kopeeri.addActionListener(this); kleebi.addActionListener(this); kirjutaYle.addActionListener(this); tyhjenda.addActionListener(this); lae.addActionListener(this); salvesta.addActionListener(this); mangi.addActionListener(this); mangiLoik.addActionListener(this); } public void actionPerformed(ActionEvent e){ if(e.getSource()==lae){laeFail(); } if(e.getSource()==salvesta){salvestaFail(); } if(e.getSource()==tyhjenda){tyhjendaLoik(); } if(e.getSource()==loika){loikaLoik(); } if(e.getSource()==kopeeri){kopeeriLoik(); } if(e.getSource()==kleebi){kleebiLoik(); } if(e.getSource()==kirjutaYle){kirjutaLoikYle(); } if(e.getSource()==mangi){mangi(); } if(e.getSource()==mangiLoik){mangiLoik(); } } public void laeFail(){ try{ AudioInputStream sisse=AudioSystem.getAudioInputStream(new File(tfLae.getText())); ByteArrayOutputStream malu=new ByteArrayOutputStream(); int nr=sisse.read(); while(nr!=-1){ //loetakse voo sisu mälupuhvrisse malu.write(nr); nr=sisse.read(); } andmed=malu.toByteArray(); //ala.kogupikkus=andmed.length; ala.seaAndmed(andmed); formaat=sisse.getFormat(); }catch(Exception viga){ viga.printStackTrace(); } } public void salvestaFail(){ try{ AudioInputStream ais=new AudioInputStream( new ByteArrayInputStream(andmed), formaat, andmed.length ); AudioSystem.write(ais, AudioFileFormat.Type.WAVE, new File(tfSalvesta.getText())); }catch(Exception viga){ viga.printStackTrace(); } } public void loikaLoik(){ byte[] uus=new byte[andmed.length-(ala.loppKaader()-ala.algKaader())]; puhver=new byte[ala.loppKaader()-ala.algKaader()]; System.arraycopy(andmed, ala.algKaader(), puhver, 0, (ala.loppKaader()-ala.algKaader())); System.arraycopy(andmed, 0, uus, 0, ala.algKaader()); System.arraycopy(andmed, ala.loppKaader(), uus, ala.algKaader(), andmed.length-ala.loppKaader()); andmed=uus; uuendaAla(); } public void tyhjendaLoik(){ for(int i=ala.algKaader(); i<=ala.loppKaader(); i++){ andmed[i]=(byte)0; } } public void kopeeriLoik(){ puhver=new byte[ala.loppKaader()-ala.algKaader()]; for(int i=0; i