All pastes #1671047 Raw Edit

GooglePane

public java v1 · immutable
#1671047 ·published 2009-11-14 11:21 UTC
rendered paste body
/* * To change this template, choose Tools | Templates * and open the template in the editor. */package gui.google;import googleTranslate.LangOption;import googleTranslate.Translator;import gui.QuickMenuCreator;import java.awt.FlowLayout;import java.awt.GridBagConstraints;import java.awt.GridBagLayout;import java.awt.Insets;import java.awt.datatransfer.Clipboard;import java.awt.datatransfer.StringSelection;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.KeyEvent;import java.awt.event.KeyListener;import java.io.File;import java.io.FileWriter;import java.io.IOException;import java.util.logging.Level;import java.util.logging.Logger;import javax.swing.BorderFactory;import javax.swing.Icon;import javax.swing.JButton;import javax.swing.JFileChooser;import javax.swing.JFrame;import javax.swing.JOptionPane;import javax.swing.JPanel;import javax.swing.JScrollPane;import javax.swing.JTextArea;import javax.swing.UIManager;import javax.swing.event.DocumentEvent;import javax.swing.event.DocumentListener;import javax.swing.filechooser.FileNameExtensionFilter;/** * * @author daro *///TODO wybor jezyka z ktorego na jaki bedzie tlumaczone//ustawienia domyslnepublic class GooglePane extends JPanel{  private JTextArea orginalTextAr;  private JTextArea translatedTextAr;  private JButton orginalLangChange;  private JButton translatedLangChange;  private JButton copyOrginalTextBut;  private JButton copyTranslatedTextBut;  private JButton saveOrginalTextBut;  private JButton saveTranslatedTextBut;  private JButton swapTranslatedWithOrginalBut;  private JButton translateBut;  private LangOption orginalLang;  private LangOption translateLang;  private Translator translator;  private JFrame owner;  private ConfigManager config;  public GooglePane(final JFrame owner) {    config=new ConfigManager();    this.owner=owner;        translator=new Translator();    orginalLang=LangOption.UK;    translateLang=LangOption.POLAND;        orginalTextAr=new JTextArea(config.getMinLinesCount(), config.getColumnsCount());    orginalTextAr.setWrapStyleWord(true);    orginalTextAr.setLineWrap(true);    orginalTextAr.setFont(UIManager.getFont("textField.font"));    translatedTextAr=new JTextArea(config.getMinLinesCount(), config.getColumnsCount());    translatedTextAr.setLineWrap(true);    translatedTextAr.setWrapStyleWord(true);    translatedTextAr.setFont(UIManager.getFont("textField.font"));    orginalLangChange=new JButton(orginalLang.getLangName(), orginalLang.getFlag());    translatedLangChange=new JButton(translateLang.getLangName(), translateLang.getFlag());    copyOrginalTextBut=new JButton("Copy");    copyTranslatedTextBut=new JButton("Copy");    saveOrginalTextBut=new JButton("Save");    saveTranslatedTextBut=new JButton("Save");    swapTranslatedWithOrginalBut=new JButton("swp");    translateBut=new JButton("Translate!");    swapTranslatedWithOrginalBut.addActionListener(new ActionListener() {      public void actionPerformed(ActionEvent e) {        //zamiana tekstow        String text=orginalTextAr.getText();        orginalTextAr.setText(translatedTextAr.getText());        translatedTextAr.setText(text);        //zamiana zawartosci guzikow z jezykami        text=orginalLangChange.getText();        Icon icon=orginalLangChange.getIcon();        orginalLangChange.setText(translatedLangChange.getText());        orginalLangChange.setIcon(translatedLangChange.getIcon());        translatedLangChange.setText(text);        translatedLangChange.setIcon(icon);        //zamiana zawartosci zmiennych        LangOption a=orginalLang;        translateLang=orginalLang;        orginalLang=a;      }    });    drawInterface(this);    addButtonsActions();    addTextAreasActions();    //TODO create menu    orginalTextAr.setComponentPopupMenu(QuickMenuCreator.createMenu(orginalTextAr));    translatedTextAr.setComponentPopupMenu(QuickMenuCreator.createMenu(translatedTextAr));    saveOrginalTextBut.addActionListener(new ActionListener() {      public void actionPerformed(ActionEvent e) {        saveDocument(orginalTextAr);      }    });  }  private void saveDocument(JTextArea area) {    JFileChooser fileChooser=new JFileChooser();    fileChooser.setDialogType(JFileChooser.SAVE_DIALOG);    fileChooser.setFileFilter(new FileNameExtensionFilter("Text Files Only","txt"));    int value=fileChooser.showDialog(owner, "Save");    if(value==JFileChooser.APPROVE_OPTION) {      File f=fileChooser.getSelectedFile();      if(f.exists()) {        int n = JOptionPane.showConfirmDialog(owner, "File already exist, overwrite?",                                              "Overwrite file", JOptionPane.YES_NO_OPTION);        if(n==JOptionPane.NO_OPTION) {          JOptionPane.showMessageDialog(owner, "Plik nie został zapisany.", "warning", JOptionPane.WARNING_MESSAGE);          return;        }      }      FileWriter file = null;      try {        file = new FileWriter(f);        file.write(area.getText());        file.close();      } catch (IOException ex) { Logger.getLogger(GooglePane.class.getName()).log(Level.SEVERE, null, ex); }    }  }  private void addTextAreasActions() {    orginalTextAr.getDocument().addDocumentListener(new DocumentListener() {    public void insertUpdate(DocumentEvent e) { resizeTextAreas(); }    public void removeUpdate(DocumentEvent e) { resizeTextAreas(); }    public void changedUpdate(DocumentEvent e) { resizeTextAreas(); }  });  translatedTextAr.getDocument().addDocumentListener(new DocumentListener() {    public void insertUpdate(DocumentEvent e) { resizeTextAreas(); }    public void removeUpdate(DocumentEvent e) { resizeTextAreas(); }    public void changedUpdate(DocumentEvent e) { resizeTextAreas(); }  });    orginalTextAr.addKeyListener(new KeyListener() {      public void keyTyped(KeyEvent e) {}      public void keyPressed(KeyEvent e) {        if(e.getKeyCode()==KeyEvent.VK_ENTER && (e.isControlDown() || e.isShiftDown())) {          orginalTextAr.setText(orginalTextAr.getText()+"\n");          orginalTextAr.setColumns(orginalTextAr.getColumns()+1);          translatedTextAr.setColumns(translatedTextAr.getColumns()+1);        }        else if(e.getKeyCode()==KeyEvent.VK_ENTER) {          try {            e.consume();            translatedTextAr.setText(translate(orginalTextAr.getText()));            orginalTextAr.setCaretPosition(0);            translatedTextAr.setCaretPosition(0);            resizeTextAreas();          }          catch (Exception ex) {            System.err.println(ex);          }        }      }      public void keyReleased(KeyEvent e) {}    });  }  private void addButtonsActions() {    translatedLangChange.addActionListener(new ActionListener() {      public void actionPerformed(ActionEvent e) {        translateLang=GoogleLangSelect.showDialog(owner, translateLang);        translatedLangChange.setText(translateLang.getLangName());        translatedLangChange.setIcon(translateLang.getFlag());        resizeTextAreas();      }    });    orginalLangChange.addActionListener(new ActionListener() {      public void actionPerformed(ActionEvent e) {        orginalLang=GoogleLangSelect.showDialog(owner, orginalLang);        orginalLangChange.setText(orginalLang.getLangName());        orginalLangChange.setIcon(orginalLang.getFlag());        resizeTextAreas();      }    });        translateBut.addActionListener(new ActionListener() {      public void actionPerformed(ActionEvent e) {        translatedTextAr.setText(translate(orginalTextAr.getText()));        orginalTextAr.setCaretPosition(0);        translatedTextAr.setCaretPosition(0);      }    });    copyOrginalTextBut.addActionListener(new ActionListener() {      public void actionPerformed(ActionEvent e) {        Clipboard clipboard=getToolkit().getSystemClipboard();        StringSelection a=new StringSelection(orginalTextAr.getText());        clipboard.setContents(a, a);      }    });    copyTranslatedTextBut.addActionListener(new ActionListener() {      public void actionPerformed(ActionEvent e) {        Clipboard clipboard=getToolkit().getSystemClipboard();        StringSelection a=new StringSelection(translatedTextAr.getText());        clipboard.setContents(a, a);      }    });  }  private String translate(String orginal) {    translator.setOrginalText(orginal);    translator.setOrginalLang(orginalLang);    translator.setTranslationLang(translateLang);    translator.translate();    return translator.getTranslatedText();  }  private int linesCount(String content, int columns) {    String [] text=content.split(" ");    int enters=0;    int count=0;    int realEnters=content.split("\n").length;    for(int i=0; i<text.length-1; i++) {      if(count<columns) count+=text[i].length();      else {        enters++;        count=0;      }    }    if(realEnters>enters) enters=realEnters;    if(enters<40 && enters>7) { return enters; }    else if(enters<=7){ return config.getMinLinesCount(); }    else { return config.getMaxLinesCount(); }  }  private void drawInterface(JPanel panel) {    panel.setLayout(new GridBagLayout());    GridBagConstraints c=new GridBagConstraints();    c.insets=new Insets(4, 4, 4, 4);    c.anchor=GridBagConstraints.LINE_START;    c.gridwidth=2;    panel.add(orginalLangChange, c);    c.gridx=4;    c.anchor=GridBagConstraints.LINE_END;    panel.add(translatedLangChange, c);    c.gridx=0;    c.gridy=1;    c.gridwidth=2;    panel.add(                new JScrollPane(orginalTextAr,                                JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,                                JScrollPane.HORIZONTAL_SCROLLBAR_NEVER),                c             );    c.gridwidth=1;    c.gridx=2;    c.fill=GridBagConstraints.BOTH;    panel.add(swapTranslatedWithOrginalBut, c);    c.gridwidth=2;    c.gridx=3;    panel.add(              new JScrollPane(translatedTextAr,              JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,              JScrollPane.HORIZONTAL_SCROLLBAR_NEVER),              c             );    c.fill=GridBagConstraints.NONE;    JPanel orgTextOp=new JPanel(new FlowLayout(FlowLayout.LEFT));    orgTextOp.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0));    orgTextOp.add(copyOrginalTextBut);    orgTextOp.add(saveOrginalTextBut);    JPanel transTextOp=new JPanel(new FlowLayout(FlowLayout.RIGHT));    transTextOp.add(saveTranslatedTextBut);    transTextOp.add(copyTranslatedTextBut);    c.insets=new Insets(0, 0, 0, 0);    c.gridx=0;    c.gridy=2;    c.gridwidth=1;    c.anchor=GridBagConstraints.LINE_START;    panel.add(orgTextOp, c);    c.gridx=2;    panel.add(translateBut, c);    c.anchor=GridBagConstraints.LINE_END;    c.gridx=4;    panel.add(transTextOp, c);    panel.validate();  }  private void resizeTextAreas() {    int orginalTextArLinesCount=linesCount(orginalTextAr.getText(), orginalTextAr.getColumns());    int translatedTextArLinesCount=linesCount(translatedTextAr.getText(), translatedTextAr.getColumns());    if(orginalTextArLinesCount>translatedTextArLinesCount) {      orginalTextAr.setRows(orginalTextArLinesCount);      translatedTextAr.setRows(orginalTextArLinesCount);    }    else {      orginalTextAr.setRows(translatedTextArLinesCount);      translatedTextAr.setRows(translatedTextArLinesCount);    }        owner.pack();  }}