PageRenderTime 54ms CodeModel.GetById 23ms RepoModel.GetById 0ms app.codeStats 1ms

/src/mpv5/ui/dialogs/subcomponents/ControlPanel_Templates.java

http://mp-rechnungs-und-kundenverwaltung.googlecode.com/
Java | 981 lines | 832 code | 121 blank | 28 comment | 75 complexity | 55d4d33d9bfd1e55c5876d777aa37c44 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. package mpv5.ui.dialogs.subcomponents;
  2. import enoa.handler.TableHandler;
  3. import enoa.handler.TemplateHandler;
  4. import java.awt.Color;
  5. import java.awt.Component;
  6. import java.awt.Desktop;
  7. import java.io.File;
  8. import java.io.IOException;
  9. import java.net.URI;
  10. import java.util.ArrayList;
  11. import java.util.Arrays;
  12. import java.util.Date;
  13. import java.util.HashMap;
  14. import java.util.List;
  15. import java.util.logging.Level;
  16. import java.util.logging.Logger;
  17. import javax.print.PrintService;
  18. import javax.print.PrintServiceLookup;
  19. import javax.swing.DefaultComboBoxModel;
  20. import javax.swing.DefaultListModel;
  21. import mpv5.YabsViewProxy;
  22. import mpv5.data.PropertyStore;
  23. import mpv5.db.common.Context;
  24. import mpv5.db.common.DatabaseObject;
  25. import mpv5.db.common.DatabaseSearch;
  26. import mpv5.db.common.NodataFoundException;
  27. import mpv5.db.common.QueryCriteria;
  28. import mpv5.db.common.QueryData;
  29. import mpv5.db.common.QueryHandler;
  30. import mpv5.db.common.SaveString;
  31. import mpv5.db.objects.*;
  32. import mpv5.db.objects.SubItem;
  33. import mpv5.db.objects.Template;
  34. import mpv5.globals.Headers;
  35. import mpv5.globals.Messages;
  36. import mpv5.logging.Log;
  37. import mpv5.ui.dialogs.ControlApplet;
  38. import mpv5.ui.dialogs.Popup;
  39. import mpv5.ui.panels.DataPanel;
  40. import mpv5.usermanagement.MPSecurityManager;
  41. import mpv5.db.objects.User;
  42. import mpv5.globals.Constants;
  43. import mpv5.globals.LocalSettings;
  44. import mpv5.handler.FormFieldsHandler;
  45. import mpv5.handler.VariablesHandler;
  46. import mpv5.ui.dialogs.BigPopup;
  47. import mpv5.ui.dialogs.DialogForFile;
  48. import mpv5.ui.dialogs.Search2;
  49. import mpv5.ui.panels.LOAPanel;
  50. import mpv5.ui.panels.PreviewPanel;
  51. import mpv5.utils.export.Export;
  52. import mpv5.utils.export.ODTFile;
  53. import mpv5.utils.export.PDFFile;
  54. import mpv5.utils.files.FileDirectoryHandler;
  55. import mpv5.utils.files.FileExecutor;
  56. import mpv5.utils.files.FileMonitor;
  57. import mpv5.utils.jobs.Job;
  58. import mpv5.utils.models.MPComboBoxModelItem;
  59. import mpv5.utils.models.MPComboboxModel;
  60. import mpv5.utils.models.MPTableModel;
  61. import mpv5.utils.ui.TextFieldUtils;
  62. /**
  63. *
  64. *
  65. */
  66. public final class ControlPanel_Templates extends javax.swing.JPanel implements ControlApplet, DataPanel {
  67. private static final long serialVersionUID = 1L;
  68. /**
  69. * This unique name identifies this control applet
  70. */
  71. public final String UNAME = "templates";
  72. private Template dataOwner;
  73. private File lastImportedFile;
  74. private long lastmodified;
  75. public ControlPanel_Templates() {
  76. if (MPSecurityManager.checkAdminAccess()) {
  77. initComponents();
  78. type.getComboBox().setModel(new MPComboboxModel(MPComboBoxModelItem.toItems(TemplateHandler.getTypes())));
  79. refresh();
  80. groupname.setModel(new DefaultComboBoxModel(
  81. MPComboBoxModelItem.toItems(new DatabaseSearch(Context.getGroup()).getValuesFor(Context.getGroup().getSubID()))));
  82. java.util.ResourceBundle bundle1 = mpv5.i18n.LanguageManager.getBundle();
  83. format.setText(Template.DEFAULT_FORMAT);
  84. format.getTextField().setEditable(true);
  85. format.getTextField().setToolTipText(bundle1.getString("ControlPanel_Templates.format.toolTipText_1")); // NOI18N
  86. setVisible(true);
  87. }
  88. }
  89. // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
  90. private void initComponents() {
  91. jPanel6 = new javax.swing.JPanel();
  92. jButton6 = new javax.swing.JButton();
  93. jButton5 = new javax.swing.JButton();
  94. jButton10 = new javax.swing.JButton();
  95. jButton1 = new javax.swing.JButton();
  96. jSeparator1 = new javax.swing.JSeparator();
  97. jSeparator2 = new javax.swing.JSeparator();
  98. jButton4 = new javax.swing.JButton();
  99. jButton7 = new javax.swing.JButton();
  100. jButton9 = new javax.swing.JButton();
  101. jButton3 = new javax.swing.JButton();
  102. jButton2 = new javax.swing.JButton();
  103. jPanel1 = new javax.swing.JPanel();
  104. jPanel2 = new javax.swing.JPanel();
  105. jPanel4 = new javax.swing.JPanel();
  106. fullname = new mpv5.ui.beans.LabeledTextField();
  107. jLabel3 = new javax.swing.JLabel();
  108. groupname = new javax.swing.JComboBox();
  109. jLabel6 = new javax.swing.JLabel();
  110. jLabel1 = new javax.swing.JLabel();
  111. jScrollPane2 = new javax.swing.JScrollPane();
  112. descr = new javax.swing.JTextArea();
  113. jScrollPane3 = new javax.swing.JScrollPane();
  114. jList1 = new javax.swing.JList();
  115. type = new mpv5.ui.beans.LabeledCombobox();
  116. format = new mpv5.ui.beans.LabeledTextField();
  117. jButton8 = new javax.swing.JButton();
  118. printern = new mpv5.ui.beans.LabeledTextField();
  119. jButton11 = new javax.swing.JButton();
  120. updateService = new javax.swing.JCheckBox();
  121. pathtofile = new mpv5.ui.beans.LabeledTextField();
  122. jScrollPane4 = new javax.swing.JScrollPane();
  123. templates = new javax.swing.JTable();
  124. setBackground(new java.awt.Color(255, 255, 255));
  125. java.util.ResourceBundle bundle = mpv5.i18n.LanguageManager.getBundle(); // NOI18N
  126. setBorder(javax.swing.BorderFactory.createTitledBorder(bundle.getString("ControlPanel_Templates.border.title"))); // NOI18N
  127. setName("Form"); // NOI18N
  128. setPreferredSize(new java.awt.Dimension(495, 183));
  129. setLayout(new java.awt.BorderLayout());
  130. jPanel6.setBackground(new java.awt.Color(255, 255, 255));
  131. jPanel6.setName("jPanel6"); // NOI18N
  132. jPanel6.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.RIGHT));
  133. jButton6.setText(bundle.getString("ControlPanel_Templates.jButton6.text")); // NOI18N
  134. jButton6.setName("jButton6"); // NOI18N
  135. jButton6.addActionListener(new java.awt.event.ActionListener() {
  136. public void actionPerformed(java.awt.event.ActionEvent evt) {
  137. jButton6ActionPerformed(evt);
  138. }
  139. });
  140. jPanel6.add(jButton6);
  141. jButton5.setText(bundle.getString("ControlPanel_Templates.jButton5.text")); // NOI18N
  142. jButton5.setName("jButton5"); // NOI18N
  143. jButton5.addActionListener(new java.awt.event.ActionListener() {
  144. public void actionPerformed(java.awt.event.ActionEvent evt) {
  145. jButton5ActionPerformed(evt);
  146. }
  147. });
  148. jPanel6.add(jButton5);
  149. jButton10.setText(bundle.getString("ControlPanel_Templates.jButton10.text")); // NOI18N
  150. jButton10.setName("jButton10"); // NOI18N
  151. jButton10.addActionListener(new java.awt.event.ActionListener() {
  152. public void actionPerformed(java.awt.event.ActionEvent evt) {
  153. jButton10ActionPerformed(evt);
  154. }
  155. });
  156. jPanel6.add(jButton10);
  157. jButton1.setText(bundle.getString("ControlPanel_Templates.jButton1.text")); // NOI18N
  158. jButton1.setName("jButton1"); // NOI18N
  159. jButton1.addActionListener(new java.awt.event.ActionListener() {
  160. public void actionPerformed(java.awt.event.ActionEvent evt) {
  161. jButton1ActionPerformed(evt);
  162. }
  163. });
  164. jPanel6.add(jButton1);
  165. jSeparator1.setName("jSeparator1"); // NOI18N
  166. jPanel6.add(jSeparator1);
  167. jSeparator2.setName("jSeparator2"); // NOI18N
  168. jPanel6.add(jSeparator2);
  169. jButton4.setText(bundle.getString("ControlPanel_Templates.jButton4.text")); // NOI18N
  170. jButton4.setName("jButton4"); // NOI18N
  171. jButton4.addActionListener(new java.awt.event.ActionListener() {
  172. public void actionPerformed(java.awt.event.ActionEvent evt) {
  173. jButton4ActionPerformed(evt);
  174. }
  175. });
  176. jPanel6.add(jButton4);
  177. jButton7.setText(bundle.getString("ControlPanel_Templates.jButton7.text")); // NOI18N
  178. jButton7.setName(bundle.getString("ControlPanel_Templates.jButton7.name")); // NOI18N
  179. jButton7.addActionListener(new java.awt.event.ActionListener() {
  180. public void actionPerformed(java.awt.event.ActionEvent evt) {
  181. jButton7ActionPerformed(evt);
  182. }
  183. });
  184. jPanel6.add(jButton7);
  185. jButton9.setText(bundle.getString("ControlPanel_Templates.jButton9.text")); // NOI18N
  186. jButton9.setName("jButton9"); // NOI18N
  187. jButton9.addActionListener(new java.awt.event.ActionListener() {
  188. public void actionPerformed(java.awt.event.ActionEvent evt) {
  189. jButton9ActionPerformed(evt);
  190. }
  191. });
  192. jPanel6.add(jButton9);
  193. jButton3.setText(bundle.getString("ControlPanel_Templates.jButton3.text")); // NOI18N
  194. jButton3.setName("jButton3"); // NOI18N
  195. jButton3.addActionListener(new java.awt.event.ActionListener() {
  196. public void actionPerformed(java.awt.event.ActionEvent evt) {
  197. jButton3ActionPerformed(evt);
  198. }
  199. });
  200. jPanel6.add(jButton3);
  201. jButton2.setText(bundle.getString("ControlPanel_Templates.jButton2.text")); // NOI18N
  202. jButton2.setName("jButton2"); // NOI18N
  203. jButton2.addActionListener(new java.awt.event.ActionListener() {
  204. public void actionPerformed(java.awt.event.ActionEvent evt) {
  205. jButton2ActionPerformed(evt);
  206. }
  207. });
  208. jPanel6.add(jButton2);
  209. add(jPanel6, java.awt.BorderLayout.PAGE_END);
  210. jPanel1.setName("jPanel1"); // NOI18N
  211. jPanel2.setBorder(javax.swing.BorderFactory.createTitledBorder(bundle.getString("ControlPanel_Templates.jPanel2.border.title"))); // NOI18N
  212. jPanel2.setName("jPanel2"); // NOI18N
  213. jPanel2.setPreferredSize(new java.awt.Dimension(425, 100));
  214. jPanel4.setBackground(new java.awt.Color(255, 255, 255));
  215. jPanel4.setBorder(javax.swing.BorderFactory.createTitledBorder(bundle.getString("ControlPanel_Templates.jPanel4.border.title"))); // NOI18N
  216. jPanel4.setName("jPanel4"); // NOI18N
  217. fullname.set_Label(bundle.getString("ControlPanel_Templates.fullname._Label")); // NOI18N
  218. fullname.setFont(fullname.getFont());
  219. fullname.setName("fullname"); // NOI18N
  220. jLabel3.setFont(jLabel3.getFont());
  221. jLabel3.setText(bundle.getString("ControlPanel_Templates.jLabel3.text")); // NOI18N
  222. jLabel3.setName("jLabel3"); // NOI18N
  223. groupname.setName("groupname"); // NOI18N
  224. jLabel6.setFont(jLabel6.getFont());
  225. jLabel6.setText(bundle.getString("ControlPanel_Templates.jLabel6.text")); // NOI18N
  226. jLabel6.setName("jLabel6"); // NOI18N
  227. jLabel1.setFont(jLabel1.getFont());
  228. jLabel1.setText(bundle.getString("ControlPanel_Templates.jLabel1.text")); // NOI18N
  229. jLabel1.setName("jLabel1"); // NOI18N
  230. jScrollPane2.setName("jScrollPane2"); // NOI18N
  231. descr.setColumns(20);
  232. descr.setRows(5);
  233. descr.setName("descr"); // NOI18N
  234. jScrollPane2.setViewportView(descr);
  235. jScrollPane3.setName("jScrollPane3"); // NOI18N
  236. jList1.setForeground(new java.awt.Color(0, 153, 0));
  237. jList1.setName("jList1"); // NOI18N
  238. jScrollPane3.setViewportView(jList1);
  239. type.set_Label(bundle.getString("ControlPanel_Templates.type._Label")); // NOI18N
  240. type.setName("type"); // NOI18N
  241. format.set_Label(bundle.getString("ControlPanel_Templates.format._Label")); // NOI18N
  242. format.set_Text("1,2,3,4,5,6,7,8,9"); // NOI18N
  243. format.setName("format"); // NOI18N
  244. jButton8.setText(bundle.getString("ControlPanel_Templates.jButton8.text")); // NOI18N
  245. jButton8.setName("jButton8"); // NOI18N
  246. jButton8.addActionListener(new java.awt.event.ActionListener() {
  247. public void actionPerformed(java.awt.event.ActionEvent evt) {
  248. jButton8ActionPerformed(evt);
  249. }
  250. });
  251. printern.set_Label(bundle.getString("ControlPanel_Templates.printern._Label")); // NOI18N
  252. printern.setFont(printern.getFont());
  253. printern.setName("printern"); // NOI18N
  254. jButton11.setText(bundle.getString("ControlPanel_Templates.jButton11.text")); // NOI18N
  255. jButton11.setName(bundle.getString("ControlPanel_Templates.jButton11.name")); // NOI18N
  256. jButton11.addActionListener(new java.awt.event.ActionListener() {
  257. public void actionPerformed(java.awt.event.ActionEvent evt) {
  258. jButton11ActionPerformed(evt);
  259. }
  260. });
  261. javax.swing.GroupLayout jPanel4Layout = new javax.swing.GroupLayout(jPanel4);
  262. jPanel4.setLayout(jPanel4Layout);
  263. jPanel4Layout.setHorizontalGroup(
  264. jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  265. .addGroup(jPanel4Layout.createSequentialGroup()
  266. .addContainerGap()
  267. .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  268. .addComponent(type, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
  269. .addGroup(jPanel4Layout.createSequentialGroup()
  270. .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  271. .addComponent(printern, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
  272. .addComponent(format, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
  273. .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  274. .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  275. .addComponent(jButton8, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
  276. .addComponent(jButton11, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))
  277. .addComponent(fullname, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
  278. .addGroup(jPanel4Layout.createSequentialGroup()
  279. .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  280. .addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 79, javax.swing.GroupLayout.PREFERRED_SIZE)
  281. .addComponent(jLabel3, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
  282. .addComponent(jLabel6, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
  283. .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  284. .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  285. .addComponent(groupname, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
  286. .addComponent(jScrollPane3, javax.swing.GroupLayout.DEFAULT_SIZE, 300, Short.MAX_VALUE)
  287. .addComponent(jScrollPane2)))))
  288. );
  289. jPanel4Layout.setVerticalGroup(
  290. jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  291. .addGroup(jPanel4Layout.createSequentialGroup()
  292. .addComponent(fullname, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
  293. .addGap(7, 7, 7)
  294. .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
  295. .addComponent(printern, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
  296. .addComponent(jButton11, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE))
  297. .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  298. .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  299. .addComponent(jButton8)
  300. .addComponent(format, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
  301. .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  302. .addComponent(type, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
  303. .addGap(3, 3, 3)
  304. .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
  305. .addComponent(jLabel6)
  306. .addComponent(groupname, javax.swing.GroupLayout.PREFERRED_SIZE, 18, javax.swing.GroupLayout.PREFERRED_SIZE))
  307. .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  308. .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  309. .addGroup(jPanel4Layout.createSequentialGroup()
  310. .addComponent(jLabel3)
  311. .addGap(0, 0, Short.MAX_VALUE))
  312. .addComponent(jScrollPane3, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE))
  313. .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  314. .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  315. .addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, 148, javax.swing.GroupLayout.PREFERRED_SIZE)
  316. .addComponent(jLabel1))
  317. .addContainerGap())
  318. );
  319. updateService.setText(bundle.getString("ControlPanel_Templates.updateService.text")); // NOI18N
  320. updateService.setEnabled(false);
  321. updateService.setName("updateService"); // NOI18N
  322. updateService.addItemListener(new java.awt.event.ItemListener() {
  323. public void itemStateChanged(java.awt.event.ItemEvent evt) {
  324. updateServiceItemStateChanged(evt);
  325. }
  326. });
  327. pathtofile.set_Label(bundle.getString("ControlPanel_Templates.pathtofile._Label")); // NOI18N
  328. pathtofile.setEnabled(false);
  329. pathtofile.setFont(pathtofile.getFont());
  330. pathtofile.setName("pathtofile"); // NOI18N
  331. javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2);
  332. jPanel2.setLayout(jPanel2Layout);
  333. jPanel2Layout.setHorizontalGroup(
  334. jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  335. .addGroup(jPanel2Layout.createSequentialGroup()
  336. .addGap(6, 6, 6)
  337. .addComponent(updateService, javax.swing.GroupLayout.PREFERRED_SIZE, 337, javax.swing.GroupLayout.PREFERRED_SIZE)
  338. .addContainerGap())
  339. .addComponent(jPanel4, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
  340. .addGroup(jPanel2Layout.createSequentialGroup()
  341. .addContainerGap()
  342. .addComponent(pathtofile, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
  343. );
  344. jPanel2Layout.setVerticalGroup(
  345. jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  346. .addGroup(jPanel2Layout.createSequentialGroup()
  347. .addComponent(jPanel4, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
  348. .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
  349. .addComponent(updateService)
  350. .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  351. .addComponent(pathtofile, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
  352. .addGap(12, 12, 12))
  353. );
  354. jScrollPane4.setBorder(javax.swing.BorderFactory.createTitledBorder(bundle.getString("ControlPanel_Templates.jScrollPane4.border.title"))); // NOI18N
  355. jScrollPane4.setName("jScrollPane4"); // NOI18N
  356. templates.setAutoCreateRowSorter(true);
  357. templates.setModel(new javax.swing.table.DefaultTableModel(
  358. new Object [][] {
  359. {},
  360. {},
  361. {},
  362. {}
  363. },
  364. new String [] {
  365. }
  366. ));
  367. templates.setAutoResizeMode(javax.swing.JTable.AUTO_RESIZE_ALL_COLUMNS);
  368. templates.setDragEnabled(true);
  369. templates.setFillsViewportHeight(true);
  370. templates.setName("templates"); // NOI18N
  371. templates.addMouseListener(new java.awt.event.MouseAdapter() {
  372. public void mouseClicked(java.awt.event.MouseEvent evt) {
  373. templatesMouseClicked(evt);
  374. }
  375. });
  376. jScrollPane4.setViewportView(templates);
  377. javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
  378. jPanel1.setLayout(jPanel1Layout);
  379. jPanel1Layout.setHorizontalGroup(
  380. jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  381. .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup()
  382. .addComponent(jScrollPane4, javax.swing.GroupLayout.DEFAULT_SIZE, 383, Short.MAX_VALUE)
  383. .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  384. .addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, 417, javax.swing.GroupLayout.PREFERRED_SIZE))
  385. );
  386. jPanel1Layout.setVerticalGroup(
  387. jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  388. .addComponent(jScrollPane4, javax.swing.GroupLayout.DEFAULT_SIZE, 473, Short.MAX_VALUE)
  389. .addComponent(jPanel2, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 473, Short.MAX_VALUE)
  390. );
  391. add(jPanel1, java.awt.BorderLayout.CENTER);
  392. }// </editor-fold>//GEN-END:initComponents
  393. private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton3ActionPerformed
  394. reset();
  395. }//GEN-LAST:event_jButton3ActionPerformed
  396. private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton2ActionPerformed
  397. if (dataOwner != null) {
  398. DatabaseObject dato = dataOwner;
  399. dato.getPanelData(this);
  400. if (dato.save()) {
  401. actionAfterSave();
  402. refresh();
  403. // TemplateHandler.cacheTemplates();
  404. } else {
  405. showRequiredFields();
  406. }
  407. }
  408. }//GEN-LAST:event_jButton2ActionPerformed
  409. private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton4ActionPerformed
  410. if (dataOwner != null && dataOwner.isExisting()) {
  411. if (Popup.Y_N_dialog(Messages.REALLY_DELETE)) {
  412. TemplateHandler.clearCache();
  413. DatabaseObject dato = dataOwner;
  414. dato.getPanelData(this);
  415. dato.delete();
  416. try {
  417. Thread.sleep(333);
  418. } catch (InterruptedException ex) {
  419. }
  420. refresh();
  421. }
  422. }
  423. }//GEN-LAST:event_jButton4ActionPerformed
  424. private void templatesMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_templatesMouseClicked
  425. try {
  426. setDataOwner((DatabaseObject) templates.getValueAt(templates.convertRowIndexToModel(templates.getSelectedRow()), 0), true);
  427. if (!pathtofile_.equals("")) {
  428. updateService.setEnabled(true);
  429. }
  430. } catch (Exception e) {
  431. Log.Debug(this, e.getMessage());
  432. }
  433. }//GEN-LAST:event_templatesMouseClicked
  434. private void jButton6ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton6ActionPerformed
  435. try {
  436. DatabaseObject t = Search2.showSearchFor(Context.getItem());
  437. if (t != null) {
  438. List<String[]> vars = VariablesHandler.resolveVarsFor(t);
  439. List<List<String>> varsl = new ArrayList<List<String>>();
  440. for (int i = 0; i < vars.size(); i++) {
  441. String[] strings = vars.get(i);
  442. varsl.add(Arrays.asList(strings));
  443. }
  444. Popup.notice(varsl, Messages.VARIABLES + "\n\n" + t.toString());
  445. }
  446. } catch (Exception ex) {
  447. Log.Debug(ex);
  448. }
  449. }//GEN-LAST:event_jButton6ActionPerformed
  450. private void jButton5ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton5ActionPerformed
  451. test();
  452. }//GEN-LAST:event_jButton5ActionPerformed
  453. private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed
  454. DialogForFile di = new DialogForFile(DialogForFile.FILES_ONLY);
  455. di.setFileFilter(DialogForFile.TEMPLATE_FILES);
  456. if (di.chooseFile()) {
  457. Template t = new Template();
  458. File fi = di.getFile();
  459. if (QueryHandler.instanceOf().clone(Context.getFiles(), this).insertFile(fi, t, new SaveString(fi.getName(), true))) {
  460. Popup.notice(Messages.ASSIGN_TEMPLATE);
  461. configureUpdateService(fi);
  462. }
  463. }
  464. }//GEN-LAST:event_jButton1ActionPerformed
  465. private void jButton8ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton8ActionPerformed
  466. BigPopup.showPopup(this, TemplateFormatEditor.instanceOf(format.getTextField()), "", true);
  467. }//GEN-LAST:event_jButton8ActionPerformed
  468. private void jButton9ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton9ActionPerformed
  469. if (dataOwner != null && dataOwner.isExisting()) {
  470. try {
  471. mpv5.YabsViewProxy.instance().showFilesaveDialogFor(dataOwner.getFile());
  472. DialogForFile d = mpv5.YabsViewProxy.instance().getFiledialog();
  473. File nFile = d.saveFile(dataOwner.getFile());
  474. if (nFile != null) {
  475. configureUpdateService(nFile);
  476. updateService.setSelected(true);
  477. }
  478. } catch (Exception e) {
  479. Log.Debug(e);
  480. }
  481. }
  482. }//GEN-LAST:event_jButton9ActionPerformed
  483. private void jButton10ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton10ActionPerformed
  484. if (dataOwner != null && dataOwner.isExisting()) {
  485. Template tpl = (Template) templates.getValueAt(templates.convertRowIndexToModel(templates.getSelectedRow()), 0);
  486. if (Popup.Y_N_dialog(Messages.REALLY_CHANGE.toString(), tpl.__getCname())) {
  487. DialogForFile di = new DialogForFile(DialogForFile.FILES_ONLY);
  488. di.setFileFilter(DialogForFile.TEMPLATE_FILES);
  489. if (di.chooseFile()) {
  490. File fi = di.getFile();
  491. QueryHandler.instanceOf().clone(Context.getFiles(), this).updateFile(fi, tpl.__getFilename());
  492. tpl.setDescription(tpl.__getDescription() + "\n - Updated: " + new Date());
  493. tpl.save(true);
  494. TemplateHandler.clearCache();
  495. try {
  496. Thread.sleep(333);
  497. } catch (InterruptedException ex) {
  498. }
  499. refresh();
  500. lastImportedFile = fi;
  501. updateService.setEnabled(true);
  502. try {
  503. pathtofile.setText(fi.getCanonicalPath().toString());
  504. } catch (IOException ex) {
  505. Log.Debug(this, ex);
  506. }
  507. lastmodified = fi.lastModified();
  508. }
  509. }
  510. }
  511. }//GEN-LAST:event_jButton10ActionPerformed
  512. private void updateServiceItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_updateServiceItemStateChanged
  513. final DataPanel x = this;
  514. final Template tpl = dataOwner;
  515. FileMonitor.FileChangeListener filecl = new FileMonitor.FileChangeListener() {
  516. public void fileChanged(String fileName) {
  517. QueryHandler.instanceOf().clone(Context.getFiles(), x).updateFile(new File(fileName), tpl.__getFilename());
  518. tpl.setDescription(tpl.__getDescription() + "\n - Updated: " + new Date());
  519. tpl.save(true);
  520. TemplateHandler.clearCache();
  521. try {
  522. Thread.sleep(333);
  523. } catch (InterruptedException ex) {
  524. }
  525. refresh();
  526. }
  527. };
  528. String file = null;
  529. if (lastImportedFile != null) {
  530. try {
  531. file = lastImportedFile.getCanonicalPath();
  532. } catch (IOException ex) {
  533. Log.Debug(ex);
  534. }
  535. } else if (!pathtofile.getText().equals("") && new File(pathtofile.getText()).canRead()) {
  536. file = pathtofile.getText();
  537. }
  538. if (updateService.isSelected() && file != null) {
  539. FileMonitor.getInstance().addFileChangeListener(filecl, file, 1000l);
  540. } else {
  541. FileMonitor.getInstance().removeFileChangeListener(filecl, file);
  542. }
  543. lastImportedFile = null;
  544. }//GEN-LAST:event_updateServiceItemStateChanged
  545. private void jButton7ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton7ActionPerformed
  546. if (dataOwner != null && dataOwner.isExisting()) {
  547. try {
  548. // LOAPanel lp = new LOAPanel();
  549. // File f = dataOwner.getFile();
  550. // YabsViewProxy.instance().addOrShowTab(lp, dataOwner.__getCname());
  551. // lp.loadODT(f);
  552. updateService.setSelected(false);
  553. updateService.setSelected(true);
  554. if (Desktop.isDesktopSupported() && Desktop.getDesktop().isSupported(Desktop.Action.OPEN)) {
  555. Desktop.getDesktop().open(dataOwner.getFile());
  556. } else if (LocalSettings.getBooleanProperty(LocalSettings.OFFICE_USE)) {
  557. FileExecutor.run(LocalSettings.getProperty(LocalSettings.OFFICE_HOME) + File.separator + dataOwner.getFile().getPath());
  558. }
  559. } catch (Exception e) {
  560. Log.Debug(e);
  561. }
  562. }
  563. }//GEN-LAST:event_jButton7ActionPerformed
  564. private void jButton11ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton11ActionPerformed
  565. PrintService[] services3 = PrintServiceLookup.lookupPrintServices(null, null);
  566. List<String> l = new ArrayList<String>();
  567. for (int i = 0; i < services3.length; i++) {
  568. PrintService printService = services3[i];
  569. l.add(printService.getName());
  570. }
  571. Popup.notice(l, Messages.PRINTER_NAMES);
  572. }//GEN-LAST:event_jButton11ActionPerformed
  573. public void setValues(PropertyStore values) {
  574. }
  575. public String getUname() {
  576. return UNAME;
  577. }
  578. public void reset() {
  579. if (dataOwner != null) {
  580. DatabaseObject dato = dataOwner;
  581. dato.getPanelData(this);
  582. dato.reset();
  583. setDataOwner(dato, true);
  584. }
  585. }
  586. // Variables declaration - do not modify//GEN-BEGIN:variables
  587. private javax.swing.JTextArea descr;
  588. private mpv5.ui.beans.LabeledTextField format;
  589. private mpv5.ui.beans.LabeledTextField fullname;
  590. private javax.swing.JComboBox groupname;
  591. private javax.swing.JButton jButton1;
  592. private javax.swing.JButton jButton10;
  593. private javax.swing.JButton jButton11;
  594. private javax.swing.JButton jButton2;
  595. private javax.swing.JButton jButton3;
  596. private javax.swing.JButton jButton4;
  597. private javax.swing.JButton jButton5;
  598. private javax.swing.JButton jButton6;
  599. private javax.swing.JButton jButton7;
  600. private javax.swing.JButton jButton8;
  601. private javax.swing.JButton jButton9;
  602. private javax.swing.JLabel jLabel1;
  603. private javax.swing.JLabel jLabel3;
  604. private javax.swing.JLabel jLabel6;
  605. private javax.swing.JList jList1;
  606. private javax.swing.JPanel jPanel1;
  607. private javax.swing.JPanel jPanel2;
  608. private javax.swing.JPanel jPanel4;
  609. private javax.swing.JPanel jPanel6;
  610. private javax.swing.JScrollPane jScrollPane2;
  611. private javax.swing.JScrollPane jScrollPane3;
  612. private javax.swing.JScrollPane jScrollPane4;
  613. private javax.swing.JSeparator jSeparator1;
  614. private javax.swing.JSeparator jSeparator2;
  615. private mpv5.ui.beans.LabeledTextField pathtofile;
  616. private mpv5.ui.beans.LabeledTextField printern;
  617. private javax.swing.JTable templates;
  618. private mpv5.ui.beans.LabeledCombobox type;
  619. private javax.swing.JCheckBox updateService;
  620. // End of variables declaration//GEN-END:variables
  621. public String description_ = "";
  622. public String filename_ = "";
  623. public String cname_;
  624. public String format_;
  625. public int intsize_;
  626. public String mimetype_;
  627. public int intaddedby_ = 4343;
  628. public int ids_;
  629. public int groupsids_;
  630. public int compsids_;
  631. public String printer_;
  632. public java.util.Date dateadded_ = new java.util.Date();
  633. public boolean isupdateenabled_ = false;
  634. public String pathtofile_ = "";
  635. public long lastmodified_;
  636. public boolean collectData() {
  637. if (groupname.getSelectedItem() != null) {
  638. groupsids_ = Integer.valueOf(((MPComboBoxModelItem) groupname.getSelectedItem()).getId());
  639. } else {
  640. groupsids_ = 1;
  641. }
  642. description_ = descr.getText();
  643. cname_ = fullname.getText();
  644. mimetype_ = String.valueOf(type.getSelectedItem().getId());
  645. format_ = format.getText();
  646. printer_ = printern.getText();
  647. pathtofile_ = pathtofile.getText();
  648. lastmodified_ = lastmodified;
  649. isupdateenabled_ = updateService.isSelected();
  650. return true;
  651. }
  652. public void exposeData() {
  653. try {
  654. groupname.setSelectedIndex(MPComboBoxModelItem.getItemID(String.valueOf(groupsids_), groupname.getModel()));
  655. fullname.setText(cname_);
  656. descr.setText(description_);
  657. try {
  658. type.setSelectedItem(Integer.valueOf(mimetype_));
  659. } catch (NumberFormatException numberFormatException) {
  660. }
  661. format.setText(format_);
  662. printern.setText(printer_);
  663. DefaultListModel m = new DefaultListModel();
  664. ArrayList<DatabaseObject> li = DatabaseObject.getObjects(Context.getUser());
  665. QueryCriteria c = new QueryCriteria("templatesids", dataOwner.__getIDS());
  666. Object[][] data = QueryHandler.instanceOf().clone(Context.getTemplatesToUsers()).select("usersids", c);
  667. List<Integer> l = new ArrayList<Integer>();
  668. for (int i = 0; i < li.size(); i++) {
  669. User databaseObject = (User) li.get(i);
  670. for (int j = 0; j < data.length; j++) {
  671. int id = Integer.valueOf(data[j][0].toString());
  672. if (id == databaseObject.__getIDS().intValue()) {
  673. l.add(Integer.valueOf(i));
  674. }
  675. }
  676. m.addElement(databaseObject);
  677. }
  678. jList1.setModel(m);
  679. int[] ix = new int[l.size()];
  680. for (int i = 0; i < l.size(); i++) {
  681. Integer integer = l.get(i);
  682. ix[i] = integer.intValue();
  683. }
  684. jList1.setSelectedIndices(ix);
  685. pathtofile.setText(dataOwner.getFile().getPath());
  686. lastImportedFile = null;
  687. lastmodified = lastmodified_;
  688. updateService.setSelected(isupdateenabled_);
  689. } catch (Exception e) {
  690. Log.Debug(this, e);
  691. if (Popup.Y_N_dialog("There was a problem loading the template, delete?")) {
  692. dataOwner.delete();
  693. }
  694. }
  695. }
  696. public DatabaseObject getDataOwner() {
  697. return dataOwner;
  698. }
  699. public void setDataOwner(DatabaseObject object, boolean p) {
  700. dataOwner = (Template) object;
  701. if (p) {
  702. dataOwner.setPanelData(this);
  703. this.exposeData();
  704. }
  705. }
  706. public void refresh() {
  707. ArrayList<DatabaseObject> temps;
  708. try {
  709. temps = DatabaseObject.getObjects(Context.getTemplate());
  710. Object[][] data = new Object[temps.size()][3];
  711. for (int i = 0; i < temps.size(); i++) {
  712. Template t = (Template) temps.get(i);
  713. data[i][0] = t;
  714. data[i][1] = t.__getMimetype();
  715. data[i][2] = Group.getObject(Context.getGroup(), t.__getGroupsids());
  716. }
  717. templates.setModel(new MPTableModel(data, Headers.TEMPLATES.getValue()));
  718. } catch (NodataFoundException ex) {
  719. Log.Debug(this, ex.getMessage());
  720. }
  721. // Context c1 = Context.getTemplatesToUsers();
  722. // c1.addReference(Context.getGroup());
  723. // c1.addReference(Context.getTemplate());
  724. // jTable1.setModel(new MPTableModel(new Class[]{Integer.class, String.class, String.class, String.class, String.class, String.class, String.class},
  725. // QueryHandler.instanceOf().clone(c1).
  726. // select(Context.DETAILS_TEMPLATES, (String[]) null),
  727. // Headers.TEMPLATES.getValue()));
  728. //
  729. // TableFormat.stripFirstColumn(jTable1);
  730. // TableFormat.format(jTable1, 1, 120);
  731. // TableFormat.format(jTable1, 5, 80);
  732. // TableFormat.format(jTable1, 6, 150);
  733. }
  734. public void paste(DatabaseObject... dbos) {
  735. for (DatabaseObject dbo : dbos) {
  736. if (dbo.getContext().equals(Context.getTemplate())) {
  737. setDataOwner(dbo, true);
  738. } else {
  739. mpv5.YabsViewProxy.instance().addMessage(Messages.NOT_POSSIBLE.toString() + Messages.ACTION_PASTE, Color.RED);
  740. }
  741. }
  742. }
  743. public void showRequiredFields() {
  744. TextFieldUtils.blinkerRed(fullname);
  745. }
  746. public void showSearchBar(boolean show) {
  747. throw new UnsupportedOperationException("Not supported yet.");
  748. }
  749. public Component getAndRemoveActionPanel() {
  750. this.remove(jPanel6);
  751. validate();
  752. return jPanel6;
  753. }
  754. @Override
  755. public void actionAfterSave() {
  756. Object[] selectedValues = jList1.getSelectedValues();
  757. Integer groups;
  758. if (groupname.getSelectedItem() != null) {
  759. groups = Integer.valueOf(((MPComboBoxModelItem) groupname.getSelectedItem()).getId());
  760. } else {
  761. groups = 1;
  762. }
  763. Object[][] UtT = new Object[0][0];
  764. QueryCriteria d = new QueryCriteria("templatesids", dataOwner.__getIDS());
  765. try {
  766. UtT = QueryHandler.instanceOf().clone(Context.getTemplatesToUsers()).select(d).getData();
  767. } catch (NodataFoundException ex) {
  768. Log.Debug(this, ex.getMessage());
  769. }
  770. for (int i = 0; i < selectedValues.length; i++) {
  771. User object = (User) selectedValues[i];
  772. boolean found = false;
  773. for (int j = 0; j < UtT.length; j++) {
  774. if (Integer.parseInt(UtT[j][2].toString()) == object.__getIDS()) {
  775. found = true;
  776. UtT[j][1] = "found";
  777. break;
  778. }
  779. }
  780. if (!found) {
  781. QueryData c = new QueryData();
  782. c.add("usersids", object.__getIDS());
  783. c.add("templatesids", dataOwner.__getIDS());
  784. c.add("groupsids", groups.intValue());
  785. c.add("cname", dataOwner.__getIDS() + "@" + object.__getIDS() + "@" + groups);
  786. QueryHandler.instanceOf().clone(Context.getTemplatesToUsers()).insert(c, null);
  787. }
  788. }
  789. for (int j = 0; j < UtT.length; j++) {
  790. if (!UtT[j][1].equals("found")) {
  791. QueryCriteria d2 = new QueryCriteria("cname", UtT[j][1].toString());
  792. QueryHandler.instanceOf().clone(Context.getTemplatesToUsers()).delete(d2);
  793. }
  794. }
  795. TemplateHandler.clearCache();
  796. }
  797. @Override
  798. public void actionAfterCreate() {
  799. }
  800. private void test() {
  801. DatabaseObject t;
  802. if (dataOwner != null) {
  803. t = Search2.showSearchFor(Context.getItem());
  804. if (t == null) {
  805. try {
  806. t = DatabaseObject.getObject(Context.getItem(), 1);
  807. } catch (NodataFoundException ex) {
  808. t = new Item();
  809. Contact k = new Contact();
  810. k.avoidNulls();
  811. k.fillSampleData();
  812. t.avoidNulls();
  813. t.fillSampleData();
  814. ((Item) t).setContactsids(k.__getIDS());
  815. }
  816. }
  817. try {
  818. HashMap<String, Object> hm1 = new FormFieldsHandler(t).getFormattedFormFields(null);
  819. // Log.Print(hm1.entrySet().toArray());
  820. File f = dataOwner.getFile();
  821. File f2 = FileDirectoryHandler.getTempFile("pdf");
  822. Export ex = new Export(dataOwner);
  823. ex.putAll(hm1);
  824. ArrayList<String[]> l = new ArrayList<String[]>();
  825. for (int i = 0; i < 20; i++) {
  826. l.add(SubItem.getRandomItem().toStringArray());
  827. }
  828. ex.put(TableHandler.KEY_TABLE + "1", l);
  829. if (f.getName().endsWith("odt")) {
  830. ex.setTemplate(new ODTFile(f.getPath()));
  831. } else {
  832. ex.setTemplate(new PDFFile(f.getPath()));
  833. }
  834. ex.setTargetFile(f2);
  835. new Job(ex, new PreviewPanel()).execute();
  836. } catch (Exception ex1) {
  837. Log.Debug(ex1);
  838. Popup.error(ex1);
  839. }
  840. }
  841. }
  842. public void actionBeforeCreate() {
  843. }
  844. public void actionBeforeSave() {
  845. }
  846. public void mail() {
  847. }
  848. public void print() {
  849. }
  850. private void configureUpdateService(File fi) {
  851. lastImportedFile = fi;
  852. updateService.setEnabled(true);
  853. try {
  854. pathtofile.setText(fi.getCanonicalPath().toString());
  855. } catch (IOException ex) {
  856. Log.Debug(this, ex);
  857. }
  858. lastmodified = fi.lastModified();
  859. }
  860. }