PageRenderTime 440ms CodeModel.GetById 416ms RepoModel.GetById 1ms app.codeStats 0ms

/src/mpv5/ui/frames/MPBabelFish.java

http://mp-rechnungs-und-kundenverwaltung.googlecode.com/
Java | 552 lines | 438 code | 73 blank | 41 comment | 17 complexity | 055e4b02f79731caaa723148af2a19a4 MD5 | raw file
Possible License(s): LGPL-3.0, Apache-2.0, GPL-3.0, GPL-2.0, AGPL-3.0, JSON, BSD-3-Clause
  1. /*
  2. * This file is part of YaBS.
  3. *
  4. * YaBS is free software: you can redistribute it and/or modify
  5. * it under the terms of the GNU General Public License as published by
  6. * the Free Software Foundation, either version 3 of the License, or
  7. * (at your option) any later version.
  8. *
  9. * YaBS is distributed in the hope that it will be useful,
  10. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  11. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  12. * GNU General Public License for more details.
  13. *
  14. * You should have received a copy of the GNU General Public License
  15. * along with YaBS. If not, see <http://www.gnu.org/licenses/>.
  16. */
  17. /*
  18. * MPBabelFish.java
  19. *
  20. * Created on 01.02.2009, 17:33:56
  21. */
  22. package mpv5.ui.frames;
  23. import javax.swing.DefaultComboBoxModel;
  24. import mpv5.db.common.NodataFoundException;
  25. import mpv5.globals.Headers;
  26. import mpv5.globals.Messages;
  27. import mpv5.i18n.LanguageManager;
  28. import mpv5.ui.dialogs.DialogForFile;
  29. import java.awt.Cursor;
  30. import java.io.File;
  31. import javax.swing.JTextField;
  32. import javax.swing.SwingWorker;
  33. import javax.swing.table.DefaultTableModel;
  34. import mpv5.db.common.Context;
  35. import mpv5.db.common.QueryHandler;
  36. import mpv5.db.objects.User;
  37. import mpv5.globals.Constants;
  38. import mpv5.globals.GlobalSettings;
  39. import mpv5.logging.Log;
  40. import mpv5.ui.dialogs.Popup;
  41. import mpv5.ui.dialogs.PropertyDialog;
  42. import mpv5.ui.misc.Position;
  43. import mpv5.usermanagement.MPSecurityManager;
  44. import mpv5.utils.models.MPComboBoxModelItem;
  45. import mpv5.utils.models.MPTableModel;
  46. import mpv5.utils.arrays.ArrayUtilities;
  47. import mpv5.utils.files.FileReaderWriter;
  48. import mpv5.utils.tables.ExcelAdapter;
  49. import mpv5.utils.text.RandomText;
  50. import mpv5.utils.ui.TextFieldUtils;
  51. /**
  52. *
  53. *
  54. */
  55. public class MPBabelFish extends javax.swing.JFrame {
  56. private String url;
  57. /** Creates new form MPBabelFish */
  58. public MPBabelFish() {
  59. initComponents();
  60. new ExcelAdapter(data);
  61. setToolBar();
  62. new Position(this);
  63. setAlwaysOnTop(false);
  64. setVisible(rootPaneCheckingEnabled);
  65. setLanguageSelection();
  66. // Translate.setHttpReferrer(Constants.VERSION);
  67. }
  68. private void setLanguage() {
  69. setCursor(new Cursor(Cursor.WAIT_CURSOR));
  70. data.setModel(new MPTableModel(
  71. new Class[]{String.class, String.class, String.class},
  72. new boolean[]{false, true, true},
  73. LanguageManager.getEditorModel(((MPComboBoxModelItem) languages.getSelectedItem()).getId()),
  74. Headers.BABELFISH.getValue()));
  75. setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
  76. }
  77. private void setLanguageSelection() {
  78. languages.setModel(LanguageManager.getLanguagesAsComboBoxModel());
  79. languages.setSelectedIndex(MPComboBoxModelItem.getItemID(mpv5.db.objects.User.getCurrentUser().__getLanguage(),
  80. languages.getModel()));
  81. setLanguage();
  82. }
  83. /** This method is called from within the constructor to
  84. * initialize the form.
  85. * WARNING: Do NOT modify this code. The content of this method is
  86. * always regenerated by the Form Editor.
  87. */
  88. @SuppressWarnings("unchecked")
  89. // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
  90. private void initComponents() {
  91. jPanel1 = new javax.swing.JPanel();
  92. jLabel1 = new javax.swing.JLabel();
  93. jScrollPane1 = new javax.swing.JScrollPane();
  94. data = new javax.swing.JTable();
  95. jLabel2 = new javax.swing.JLabel();
  96. languages = new javax.swing.JComboBox();
  97. langName = new mpv5.ui.beans.LabeledTextField();
  98. jLabel7 = new javax.swing.JLabel();
  99. GooogleTranslator = new javax.swing.JToolBar();
  100. jLabel5 = new javax.swing.JLabel();
  101. webserviceurl = new javax.swing.JTextField();
  102. jLabel3 = new javax.swing.JLabel();
  103. from = new javax.swing.JComboBox();
  104. jLabel4 = new javax.swing.JLabel();
  105. to = new javax.swing.JComboBox();
  106. translate = new javax.swing.JButton();
  107. progress = new javax.swing.JProgressBar();
  108. jMenuBar1 = new javax.swing.JMenuBar();
  109. jMenu1 = new javax.swing.JMenu();
  110. jMenuItem4 = new javax.swing.JMenuItem();
  111. jMenuItem2 = new javax.swing.JMenuItem();
  112. jMenuItem1 = new javax.swing.JMenuItem();
  113. jMenuItem3 = new javax.swing.JMenuItem();
  114. setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
  115. java.util.ResourceBundle bundle = mpv5.i18n.LanguageManager.getBundle(); // NOI18N
  116. setTitle(bundle.getString("MPBabelFish.title_1")); // NOI18N
  117. setAlwaysOnTop(true);
  118. setName("Form"); // NOI18N
  119. jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder(bundle.getString("MPBabelFish.jPanel1.border.title_1"))); // NOI18N
  120. jPanel1.setName("jPanel1"); // NOI18N
  121. jLabel1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/mpv5/resources/images/32/babelfish.png"))); // NOI18N
  122. jLabel1.setName("jLabel1"); // NOI18N
  123. jScrollPane1.setName("jScrollPane1"); // NOI18N
  124. data.setModel(new javax.swing.table.DefaultTableModel(
  125. new Object [][] {
  126. {},
  127. {},
  128. {},
  129. {}
  130. },
  131. new String [] {
  132. }
  133. ));
  134. data.setAutoCreateRowSorter(true);
  135. data.setColumnSelectionAllowed(true);
  136. data.setDoubleBuffered(true);
  137. data.setDragEnabled(true);
  138. data.setName("data"); // NOI18N
  139. data.setSurrendersFocusOnKeystroke(true);
  140. jScrollPane1.setViewportView(data);
  141. data.getColumnModel().getSelectionModel().setSelectionMode(javax.swing.ListSelectionModel.SINGLE_INTERVAL_SELECTION);
  142. jLabel2.setText(bundle.getString("MPBabelFish.jLabel2.text_1")); // NOI18N
  143. jLabel2.setName("jLabel2"); // NOI18N
  144. languages.setName("languages"); // NOI18N
  145. languages.addMouseListener(new java.awt.event.MouseAdapter() {
  146. public void mouseClicked(java.awt.event.MouseEvent evt) {
  147. languagesMouseClicked(evt);
  148. }
  149. public void mouseExited(java.awt.event.MouseEvent evt) {
  150. languagesMouseExited(evt);
  151. }
  152. });
  153. languages.addActionListener(new java.awt.event.ActionListener() {
  154. public void actionPerformed(java.awt.event.ActionEvent evt) {
  155. languagesActionPerformed(evt);
  156. }
  157. });
  158. langName.set_Label(bundle.getString("MPBabelFish.langName._Label")); // NOI18N
  159. langName.setName("langName"); // NOI18N
  160. jLabel7.setText(bundle.getString("MPBabelFish.jLabel7.text")); // NOI18N
  161. jLabel7.setName("jLabel7"); // NOI18N
  162. GooogleTranslator.setRollover(true);
  163. GooogleTranslator.setName("GooogleTranslator"); // NOI18N
  164. jLabel5.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
  165. jLabel5.setText(bundle.getString("MPBabelFish.jLabel5.text")); // NOI18N
  166. jLabel5.setBorder(javax.swing.BorderFactory.createEmptyBorder(1, 0, 1, 5));
  167. jLabel5.setEnabled(false);
  168. jLabel5.setName("jLabel5"); // NOI18N
  169. GooogleTranslator.add(jLabel5);
  170. webserviceurl.setText(bundle.getString("MPBabelFish.webserviceurl.text")); // NOI18N
  171. webserviceurl.setBorder(javax.swing.BorderFactory.createEmptyBorder(1, 5, 1, 5));
  172. webserviceurl.setEnabled(false);
  173. webserviceurl.setName("webserviceurl"); // NOI18N
  174. GooogleTranslator.add(webserviceurl);
  175. jLabel3.setText(bundle.getString("MPBabelFish.jLabel3.text")); // NOI18N
  176. jLabel3.setBorder(javax.swing.BorderFactory.createEmptyBorder(1, 5, 1, 5));
  177. jLabel3.setEnabled(false);
  178. jLabel3.setName("jLabel3"); // NOI18N
  179. GooogleTranslator.add(jLabel3);
  180. from.setBorder(javax.swing.BorderFactory.createEmptyBorder(1, 5, 1, 5));
  181. from.setEnabled(false);
  182. from.setName("from"); // NOI18N
  183. GooogleTranslator.add(from);
  184. jLabel4.setText(bundle.getString("MPBabelFish.jLabel4.text")); // NOI18N
  185. jLabel4.setBorder(javax.swing.BorderFactory.createEmptyBorder(1, 5, 1, 5));
  186. jLabel4.setEnabled(false);
  187. jLabel4.setName("jLabel4"); // NOI18N
  188. GooogleTranslator.add(jLabel4);
  189. to.setAutoscrolls(true);
  190. to.setBorder(javax.swing.BorderFactory.createEmptyBorder(1, 5, 1, 5));
  191. to.setEnabled(false);
  192. to.setName("to"); // NOI18N
  193. GooogleTranslator.add(to);
  194. translate.setText(bundle.getString("MPBabelFish.translate.text")); // NOI18N
  195. translate.setBorder(javax.swing.BorderFactory.createEmptyBorder(1, 5, 1, 5));
  196. translate.setEnabled(false);
  197. translate.setFocusable(false);
  198. translate.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
  199. translate.setName("translate"); // NOI18N
  200. translate.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
  201. translate.addActionListener(new java.awt.event.ActionListener() {
  202. public void actionPerformed(java.awt.event.ActionEvent evt) {
  203. translateActionPerformed(evt);
  204. }
  205. });
  206. GooogleTranslator.add(translate);
  207. progress.setName("progress"); // NOI18N
  208. javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
  209. jPanel1.setLayout(jPanel1Layout);
  210. jPanel1Layout.setHorizontalGroup(
  211. jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  212. .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup()
  213. .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  214. .addComponent(jLabel2)
  215. .addComponent(languages, javax.swing.GroupLayout.PREFERRED_SIZE, 195, javax.swing.GroupLayout.PREFERRED_SIZE))
  216. .addGap(36, 36, 36)
  217. .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  218. .addGroup(jPanel1Layout.createSequentialGroup()
  219. .addComponent(langName, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
  220. .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  221. .addComponent(progress, javax.swing.GroupLayout.DEFAULT_SIZE, 258, Short.MAX_VALUE))
  222. .addComponent(jLabel7, javax.swing.GroupLayout.DEFAULT_SIZE, 446, Short.MAX_VALUE))
  223. .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  224. .addComponent(jLabel1)
  225. .addContainerGap())
  226. .addComponent(GooogleTranslator, javax.swing.GroupLayout.DEFAULT_SIZE, 725, Short.MAX_VALUE)
  227. .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 725, Short.MAX_VALUE)
  228. );
  229. jPanel1Layout.setVerticalGroup(
  230. jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  231. .addGroup(jPanel1Layout.createSequentialGroup()
  232. .addContainerGap()
  233. .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER)
  234. .addComponent(jLabel2)
  235. .addComponent(jLabel7))
  236. .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  237. .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER, false)
  238. .addComponent(languages, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
  239. .addComponent(langName, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
  240. .addComponent(progress, javax.swing.GroupLayout.PREFERRED_SIZE, 20, javax.swing.GroupLayout.PREFERRED_SIZE))
  241. .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
  242. .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 244, Short.MAX_VALUE)
  243. .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  244. .addComponent(GooogleTranslator, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE))
  245. .addGroup(jPanel1Layout.createSequentialGroup()
  246. .addComponent(jLabel1)
  247. .addContainerGap(307, Short.MAX_VALUE))
  248. );
  249. jMenuBar1.setName("jMenuBar1"); // NOI18N
  250. jMenu1.setText(bundle.getString("MPBabelFish.jMenu1.text_1")); // NOI18N
  251. jMenu1.setName("jMenu1"); // NOI18N
  252. jMenuItem4.setText(bundle.getString("MPBabelFish.jMenuItem4.text")); // NOI18N
  253. jMenuItem4.setName("jMenuItem4"); // NOI18N
  254. jMenuItem4.addActionListener(new java.awt.event.ActionListener() {
  255. public void actionPerformed(java.awt.event.ActionEvent evt) {
  256. jMenuItem4ActionPerformed(evt);
  257. }
  258. });
  259. jMenu1.add(jMenuItem4);
  260. jMenuItem2.setText(bundle.getString("MPBabelFish.jMenuItem2.text_1")); // NOI18N
  261. jMenuItem2.setName("jMenuItem2"); // NOI18N
  262. jMenuItem2.addActionListener(new java.awt.event.ActionListener() {
  263. public void actionPerformed(java.awt.event.ActionEvent evt) {
  264. jMenuItem2ActionPerformed(evt);
  265. }
  266. });
  267. jMenu1.add(jMenuItem2);
  268. jMenuItem1.setText(bundle.getString("MPBabelFish.jMenuItem1.text_1")); // NOI18N
  269. jMenuItem1.setName("jMenuItem1"); // NOI18N
  270. jMenuItem1.addActionListener(new java.awt.event.ActionListener() {
  271. public void actionPerformed(java.awt.event.ActionEvent evt) {
  272. jMenuItem1ActionPerformed(evt);
  273. }
  274. });
  275. jMenu1.add(jMenuItem1);
  276. jMenuItem3.setText(bundle.getString("MPBabelFish.jMenuItem3.text_1")); // NOI18N
  277. jMenuItem3.setName("jMenuItem3"); // NOI18N
  278. jMenuItem3.addActionListener(new java.awt.event.ActionListener() {
  279. public void actionPerformed(java.awt.event.ActionEvent evt) {
  280. jMenuItem3ActionPerformed(evt);
  281. }
  282. });
  283. jMenu1.add(jMenuItem3);
  284. jMenuBar1.add(jMenu1);
  285. setJMenuBar(jMenuBar1);
  286. javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
  287. getContentPane().setLayout(layout);
  288. layout.setHorizontalGroup(
  289. layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  290. .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
  291. );
  292. layout.setVerticalGroup(
  293. layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  294. .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
  295. );
  296. pack();
  297. }// </editor-fold>//GEN-END:initComponents
  298. private void jMenuItem2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem2ActionPerformed
  299. if (MPSecurityManager.checkAdminAccess()
  300. && QueryHandler.instanceOf().clone(Context.getLanguage()).checkUniqueness("longname", new JTextField[]{langName.getTextField()})) {
  301. if (langName.hasText()) {
  302. Runnable runnable = new Runnable() {
  303. public void run() {
  304. try {
  305. setCursor(new Cursor(Cursor.WAIT_CURSOR));
  306. LanguageManager.importLanguage(langName.get_Text(), ArrayUtilities.tableModelToFile(data, new int[]{0, 2}, "=", RandomText.getText() + "language", "yabs"));
  307. setLanguageSelection();
  308. } catch (Exception e) {
  309. Log.Debug(e);
  310. } finally {
  311. setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
  312. }
  313. }
  314. };
  315. new Thread(runnable).start();
  316. } else {
  317. TextFieldUtils.blinkerRed(langName.getTextField());
  318. }
  319. }
  320. }//GEN-LAST:event_jMenuItem2ActionPerformed
  321. private void jMenuItem1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem1ActionPerformed
  322. DialogForFile dialog = new DialogForFile(DialogForFile.FILES_ONLY);
  323. // MPTableModel mpdel = DataModelUtils.getModelCopy(data);
  324. dialog.saveFile(ArrayUtilities.tableModelToFile(data, new int[]{0, 1}, "=", String.valueOf(languages.getSelectedItem()), "yabs"));
  325. // data.setModel(mpdel);
  326. // setLanguageSelection();
  327. }//GEN-LAST:event_jMenuItem1ActionPerformed
  328. private void translateActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_translateActionPerformed
  329. new Job(this).execute();
  330. }//GEN-LAST:event_translateActionPerformed
  331. private void languagesMouseExited(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_languagesMouseExited
  332. }//GEN-LAST:event_languagesMouseExited
  333. private void jMenuItem3ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem3ActionPerformed
  334. if (MPSecurityManager.checkAdminAccess()) {
  335. if (Popup.Y_N_dialog(Messages.REALLY_WIPE + ": " + ((MPComboBoxModelItem) languages.getSelectedItem()).getValue())) {
  336. try {
  337. LanguageManager.removeLanguage(((MPComboBoxModelItem) languages.getSelectedItem()).getId());
  338. } catch (NodataFoundException ex) {
  339. Log.Debug(this, ex);
  340. }
  341. }
  342. }
  343. setLanguageSelection();
  344. }//GEN-LAST:event_jMenuItem3ActionPerformed
  345. private void languagesMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_languagesMouseClicked
  346. }//GEN-LAST:event_languagesMouseClicked
  347. private void languagesActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_languagesActionPerformed
  348. setLanguage();
  349. }//GEN-LAST:event_languagesActionPerformed
  350. private void jMenuItem4ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem4ActionPerformed
  351. DialogForFile d = new DialogForFile(DialogForFile.FILES_ONLY);
  352. if (d.chooseFile()) {
  353. new Job3(this, d.getFile()).execute();
  354. }
  355. }//GEN-LAST:event_jMenuItem4ActionPerformed
  356. // Variables declaration - do not modify//GEN-BEGIN:variables
  357. private javax.swing.JToolBar GooogleTranslator;
  358. private javax.swing.JTable data;
  359. private javax.swing.JComboBox from;
  360. private javax.swing.JLabel jLabel1;
  361. private javax.swing.JLabel jLabel2;
  362. private javax.swing.JLabel jLabel3;
  363. private javax.swing.JLabel jLabel4;
  364. private javax.swing.JLabel jLabel5;
  365. private javax.swing.JLabel jLabel7;
  366. private javax.swing.JMenu jMenu1;
  367. private javax.swing.JMenuBar jMenuBar1;
  368. private javax.swing.JMenuItem jMenuItem1;
  369. private javax.swing.JMenuItem jMenuItem2;
  370. private javax.swing.JMenuItem jMenuItem3;
  371. private javax.swing.JMenuItem jMenuItem4;
  372. private javax.swing.JPanel jPanel1;
  373. private javax.swing.JScrollPane jScrollPane1;
  374. private mpv5.ui.beans.LabeledTextField langName;
  375. private javax.swing.JComboBox languages;
  376. private javax.swing.JProgressBar progress;
  377. private javax.swing.JComboBox to;
  378. private javax.swing.JButton translate;
  379. private javax.swing.JTextField webserviceurl;
  380. // End of variables declaration//GEN-END:variables
  381. private void setToolBar() {
  382. // from.setModel(new DefaultComboBoxModel(Language.values()));
  383. // to.setModel(new DefaultComboBoxModel(Language.values()));
  384. }
  385. class Job extends SwingWorker<Object, Object> {
  386. private MPBabelFish parent;
  387. private Job(MPBabelFish aThis) {
  388. this.parent = aThis;
  389. }
  390. @Override
  391. public Object doInBackground() {
  392. parent.setCursor(new Cursor(Cursor.WAIT_CURSOR));
  393. String[] dat = ArrayUtilities.SmallObjectToStringArray(ArrayUtilities.getColumnAsArray(data, 1));
  394. String[] translated = new String[dat.length];
  395. mpv5.YabsViewProxy.instance().setProgressMaximumValue(dat.length);
  396. progress.setStringPainted(true);
  397. progress.setMaximum(dat.length);
  398. for (int i = 0; i < dat.length; i++) {
  399. String string = dat[i];
  400. try {
  401. if (string != null && string.length() > 0) {
  402. Log.Debug(this, "Translating: " + string);
  403. // translated[i] = Translate.execute(string, (Language) from.getSelectedItem(), (Language) to.getSelectedItem());
  404. mpv5.YabsViewProxy.instance().setProgressValue(i + 1);
  405. progress.setValue(i + 1);
  406. } else {
  407. translated[i] = "";
  408. mpv5.YabsViewProxy.instance().setProgressValue(i + 1);
  409. progress.setValue(i + 1);
  410. }
  411. } catch (Exception ex) {
  412. Log.Debug(this, ex.getMessage());
  413. }
  414. }
  415. ArrayUtilities.replaceColumn(data, 2, translated);
  416. return null;
  417. }
  418. @Override
  419. public void done() {
  420. parent.setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
  421. mpv5.YabsViewProxy.instance().setProgressReset();
  422. progress.setValue(0);
  423. Popup.notice(Messages.DONE);
  424. }
  425. }
  426. class Job3 extends SwingWorker<Object, Object> {
  427. private MPBabelFish parent;
  428. private File f;
  429. private Job3(MPBabelFish aThis, File f) {
  430. this.parent = aThis;
  431. this.f = f;
  432. }
  433. @Override
  434. public Object doInBackground() {
  435. parent.setCursor(new Cursor(Cursor.WAIT_CURSOR));
  436. String[] originallanguage = ArrayUtilities.SmallObjectToStringArray(ArrayUtilities.getColumnAsArray(data, 1));
  437. String[] components = ArrayUtilities.SmallObjectToStringArray(ArrayUtilities.getColumnAsArray(data, 0));
  438. FileReaderWriter fr = new FileReaderWriter(f, "UTF8");
  439. String[] imported = fr.readLinesWCharset();
  440. mpv5.YabsViewProxy.instance().setProgressMaximumValue(imported.length);
  441. progress.setStringPainted(true);
  442. progress.setMaximum(imported.length);
  443. for (int i = 0; i < originallanguage.length; i++) {
  444. String component = components[i];
  445. try {
  446. for (int j = 0; j < imported.length; j++) {
  447. String string = imported[j];
  448. if (string.split("=").length == 2) {
  449. if (string.split("=")[0].equals(component)) {
  450. originallanguage[i] = string.split("=")[1];
  451. mpv5.YabsViewProxy.instance().setProgressValue(i + 1);
  452. progress.setValue(i + 1);
  453. }
  454. }
  455. }
  456. } catch (Exception ex) {
  457. Log.Debug(this,
  458. "\n'I refuse to prove that I exist', says God, \n"
  459. + "'for proof denies faith, and without faith I am nothing'. \n"
  460. + "'But,' says man, 'The Babel fish is a dead giveaway, isn't it? \n"
  461. + "It could not have evolved by chance. \n"
  462. + "It proves you exist, and so therefore, by your own arguments, you don't.\n"
  463. + "The Hitchhiker's Guide to the Galaxy: Babelfish\n");
  464. Log.Debug(this, ex);
  465. }
  466. }
  467. ArrayUtilities.replaceColumn(data, 2, originallanguage);
  468. return null;
  469. }
  470. @Override
  471. public void done() {
  472. ((MPTableModel)data.getModel()).setCanEdits(false, true, true);
  473. parent.setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
  474. mpv5.YabsViewProxy.instance().setProgressReset();
  475. progress.setValue(0);
  476. Popup.notice(Messages.DONE);
  477. }
  478. }
  479. }