PageRenderTime 41ms CodeModel.GetById 19ms RepoModel.GetById 1ms app.codeStats 0ms

/src/mpv5/ui/panels/ActivityConfirmationPanel.java

http://mp-rechnungs-und-kundenverwaltung.googlecode.com/
Java | 716 lines | 619 code | 78 blank | 19 comment | 48 complexity | ac7f17b69813722c047e70f8b33c40fa 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.panels;
  2. import enoa.handler.TemplateHandler;
  3. import java.awt.BorderLayout;
  4. import java.awt.Color;
  5. import java.awt.Component;
  6. import java.awt.event.ActionEvent;
  7. import java.awt.event.ActionListener;
  8. import java.math.BigDecimal;
  9. import java.util.Date;
  10. import java.util.List;
  11. import javax.swing.JComponent;
  12. import javax.swing.JTable;
  13. import javax.swing.SwingUtilities;
  14. import javax.swing.table.TableCellRenderer;
  15. import mpv5.db.common.Context;
  16. import mpv5.db.common.DatabaseObject;
  17. import mpv5.db.common.NodataFoundException;
  18. import mpv5.db.objects.ActivityList;
  19. import mpv5.db.objects.ActivityListSubItem;
  20. import mpv5.db.objects.Contact;
  21. import mpv5.db.objects.Favourite;
  22. import mpv5.db.objects.Item;
  23. import mpv5.db.objects.Product;
  24. import mpv5.db.objects.User;
  25. import mpv5.globals.Messages;
  26. import mpv5.logging.Log;
  27. import mpv5.ui.beans.LightMPComboBox;
  28. import mpv5.ui.dialogs.DialogForFile;
  29. import mpv5.ui.dialogs.Popup;
  30. import mpv5.ui.dialogs.subcomponents.ActivityTextAreaDialog;
  31. import mpv5.ui.misc.TextFieldUtils;
  32. import mpv5.ui.toolbars.DataPanelTB;
  33. import mpv5.utils.arrays.ArrayUtilities;
  34. import mpv5.utils.export.Export;
  35. import mpv5.utils.jobs.Job;
  36. import mpv5.utils.models.MPComboBoxModelItem;
  37. import mpv5.utils.models.MPTableModel;
  38. import mpv5.utils.renderer.TableCellEditorForDate;
  39. import mpv5.utils.renderer.TableCellRendererForDezimal;
  40. import mpv5.utils.renderer.TextAreaCellEditor;
  41. import mpv5.utils.renderer.TextAreaCellRenderer;
  42. import mpv5.utils.tables.DynamicTableCalculator;
  43. import mpv5.utils.tables.TableFormat;
  44. public final class ActivityConfirmationPanel extends javax.swing.JPanel implements DataPanel, ExportablePanel {
  45. private static final long serialVersionUID = 1L;
  46. private java.util.ResourceBundle bundle = mpv5.i18n.LanguageManager.getBundle();
  47. private static ActivityConfirmationPanel me;
  48. private ActivityList dataOwner;
  49. private DataPanelTB tb;
  50. private final SearchPanel sp;
  51. private MPTableModel omodel = null;
  52. Thread t = null;
  53. /**
  54. * Singleton
  55. * @return
  56. */
  57. public static ActivityConfirmationPanel instanceOf() {
  58. if (me == null) {
  59. me = new ActivityConfirmationPanel();
  60. }
  61. return me;
  62. }
  63. // Variablen ...
  64. public int contactsids_;
  65. public int orderids_;
  66. public BigDecimal totalamount_;
  67. public String cnumber_;
  68. public String cname_;
  69. public String description_;
  70. public int intaddedby_;
  71. public int ids_;
  72. public Date dateadded_;
  73. public int groupsids_ = 1;
  74. public boolean asproduct_;
  75. private DynamicTableCalculator itemMultiplier;
  76. private LightMPComboBox cb = new LightMPComboBox();
  77. private boolean HEADER_FAILD = false;
  78. /** Creates new form ListPanel */
  79. private ActivityConfirmationPanel() {
  80. initComponents();
  81. setName("ActivityConfirmation");
  82. dataOwner = new ActivityList();
  83. itemtable.getTableHeader().setReorderingAllowed(false);
  84. sp = new SearchPanel(Context.getActivityList(), this);
  85. sp.setVisible(true);
  86. tb = new DataPanelTB(this);
  87. toolbarpanetbp.add(tb, BorderLayout.CENTER);
  88. contact.setContext(Context.getContact());
  89. contact.setSearchEnabled(true);
  90. contact.getComboBox().addActionListener(new ActionListener() {
  91. @Override
  92. @SuppressWarnings("unchecked")
  93. public void actionPerformed(ActionEvent e) {
  94. if (e.getModifiers() == 16) {
  95. final MPComboBoxModelItem item = contact.getSelectedItem();
  96. if (item != null && item.isValid()) {
  97. t = new Thread() {
  98. @Override
  99. public void run() {
  100. try {
  101. Log.Debug(this, "Kontakt Zeile :" + item.getId() + " ausgew?hlt.");
  102. Contact ct = (Contact) DatabaseObject.getObject(Context.getContact(), Integer.valueOf(item.getId()));
  103. List data = DatabaseObject.getReferencedObjects(ct,
  104. Context.getOrder());
  105. order.setModel(data);
  106. } catch (NodataFoundException ex) {
  107. Log.Debug(this, ex);
  108. }
  109. }
  110. };
  111. t.start();
  112. }
  113. }
  114. }
  115. });
  116. refresh();
  117. preloadTemplate();
  118. number.set_ValueClass(Integer.class);
  119. }
  120. /** This me4thod is called from within the constructor to
  121. * initialize the form.
  122. * WARNING: Do NOT modify this code. The content of this method is
  123. * always regenerated by the Form Editor.
  124. */
  125. @SuppressWarnings("unchecked")
  126. // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
  127. private void initComponents() {
  128. jPanel1 = new javax.swing.JPanel();
  129. jPanel2 = new javax.swing.JPanel();
  130. contact = new mpv5.ui.beans.LabeledCombobox();
  131. order = new mpv5.ui.beans.LabeledCombobox();
  132. jButton2 = new javax.swing.JButton();
  133. jButton3 = new javax.swing.JButton();
  134. Project = new mpv5.ui.beans.LabeledTextField();
  135. number = new mpv5.ui.beans.LabeledTextField();
  136. jScrollPane4 = new javax.swing.JScrollPane();
  137. itemtable = new JTable() {
  138. private static final long serialVersionUID = 1L;
  139. public Component prepareRenderer(TableCellRenderer renderer,
  140. int rowIndex, int vColIndex) {
  141. Component c = super.prepareRenderer(renderer, rowIndex, vColIndex);
  142. if (c instanceof JComponent) {
  143. JComponent jc = (JComponent)c;
  144. jc.setToolTipText(String.valueOf(getValueAt(rowIndex, vColIndex)));
  145. }
  146. return c;
  147. }
  148. };
  149. itemPanel = new javax.swing.JPanel();
  150. addItem = new javax.swing.JButton();
  151. delItem = new javax.swing.JButton();
  152. upItem = new javax.swing.JButton();
  153. upItem1 = new javax.swing.JButton();
  154. jLabel1 = new javax.swing.JLabel();
  155. total = new javax.swing.JTextField();
  156. toolbarpanetbp = new javax.swing.JPanel();
  157. SearchBarPane = new javax.swing.JPanel();
  158. setName("Form"); // NOI18N
  159. setLayout(new java.awt.BorderLayout());
  160. java.util.ResourceBundle bundle = mpv5.i18n.LanguageManager.getBundle(); // NOI18N
  161. jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder(bundle.getString("ActivityConfirmationPanel.jPanel1.border.title"))); // NOI18N
  162. jPanel1.setName("jPanel1"); // NOI18N
  163. jPanel2.setBorder(javax.swing.BorderFactory.createTitledBorder(bundle.getString("ActivityConfirmationPanel.jPanel2.border.title"))); // NOI18N
  164. jPanel2.setName("jPanel2"); // NOI18N
  165. contact.set_Label(bundle.getString("ActivityConfirmationPanel.contact._Label")); // NOI18N
  166. contact.setName("contact"); // NOI18N
  167. order.set_Label(bundle.getString("ActivityConfirmationPanel.order._Label")); // NOI18N
  168. order.setName("order"); // NOI18N
  169. jButton2.setText(bundle.getString("ActivityConfirmationPanel.jButton2.text")); // NOI18N
  170. jButton2.setName("jButton2"); // NOI18N
  171. jButton2.addActionListener(new java.awt.event.ActionListener() {
  172. public void actionPerformed(java.awt.event.ActionEvent evt) {
  173. jButton2ActionPerformed(evt);
  174. }
  175. });
  176. jButton3.setText(bundle.getString("ActivityConfirmationPanel.jButton3.text")); // NOI18N
  177. jButton3.setName("jButton3"); // NOI18N
  178. jButton3.addActionListener(new java.awt.event.ActionListener() {
  179. public void actionPerformed(java.awt.event.ActionEvent evt) {
  180. jButton3ActionPerformed(evt);
  181. }
  182. });
  183. Project.set_Label(bundle.getString("ActivityConfirmationPanel.Project._Label")); // NOI18N
  184. Project.setName("Project"); // NOI18N
  185. number.set_Label(bundle.getString("ActivityConfirmationPanel.number._Label")); // NOI18N
  186. number.setFocusable(false);
  187. number.setFont(number.getFont());
  188. number.setName("number"); // NOI18N
  189. javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2);
  190. jPanel2.setLayout(jPanel2Layout);
  191. jPanel2Layout.setHorizontalGroup(
  192. jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  193. .addGroup(jPanel2Layout.createSequentialGroup()
  194. .addContainerGap()
  195. .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  196. .addComponent(contact, javax.swing.GroupLayout.DEFAULT_SIZE, 360, Short.MAX_VALUE)
  197. .addComponent(number, javax.swing.GroupLayout.DEFAULT_SIZE, 360, Short.MAX_VALUE))
  198. .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
  199. .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
  200. .addGroup(jPanel2Layout.createSequentialGroup()
  201. .addComponent(jButton3, javax.swing.GroupLayout.PREFERRED_SIZE, 76, javax.swing.GroupLayout.PREFERRED_SIZE)
  202. .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
  203. .addComponent(order, javax.swing.GroupLayout.PREFERRED_SIZE, 292, javax.swing.GroupLayout.PREFERRED_SIZE)
  204. .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  205. .addComponent(jButton2, javax.swing.GroupLayout.PREFERRED_SIZE, 77, javax.swing.GroupLayout.PREFERRED_SIZE))
  206. .addComponent(Project, javax.swing.GroupLayout.PREFERRED_SIZE, 457, javax.swing.GroupLayout.PREFERRED_SIZE))
  207. .addContainerGap())
  208. );
  209. jPanel2Layout.setVerticalGroup(
  210. jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  211. .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel2Layout.createSequentialGroup()
  212. .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  213. .addComponent(Project, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
  214. .addComponent(number, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
  215. .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  216. .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  217. .addComponent(contact, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
  218. .addComponent(jButton3)
  219. .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
  220. .addComponent(order, javax.swing.GroupLayout.PREFERRED_SIZE, 22, javax.swing.GroupLayout.PREFERRED_SIZE)
  221. .addComponent(jButton2))))
  222. );
  223. jScrollPane4.setName("jScrollPane4"); // NOI18N
  224. itemtable.setAutoCreateRowSorter(true);
  225. itemtable.setModel(new javax.swing.table.DefaultTableModel(
  226. new Object [][] {
  227. },
  228. new String [] {
  229. }
  230. ));
  231. itemtable.setCellSelectionEnabled(true);
  232. itemtable.setName("itemtable"); // NOI18N
  233. itemtable.setSurrendersFocusOnKeystroke(true);
  234. jScrollPane4.setViewportView(itemtable);
  235. itemPanel.setName("itemPanel"); // NOI18N
  236. itemPanel.setOpaque(false);
  237. addItem.setIcon(new javax.swing.ImageIcon(getClass().getResource("/mpv5/resources/images/16/add.png"))); // NOI18N
  238. addItem.setName("addItem"); // NOI18N
  239. addItem.addActionListener(new java.awt.event.ActionListener() {
  240. public void actionPerformed(java.awt.event.ActionEvent evt) {
  241. addItemActionPerformed(evt);
  242. }
  243. });
  244. delItem.setIcon(new javax.swing.ImageIcon(getClass().getResource("/mpv5/resources/images/16/remove.png"))); // NOI18N
  245. delItem.setName("delItem"); // NOI18N
  246. delItem.addActionListener(new java.awt.event.ActionListener() {
  247. public void actionPerformed(java.awt.event.ActionEvent evt) {
  248. delItemActionPerformed(evt);
  249. }
  250. });
  251. upItem.setIcon(new javax.swing.ImageIcon(getClass().getResource("/mpv5/resources/images/16/arrow-up.png"))); // NOI18N
  252. upItem.setEnabled(false);
  253. upItem.setName("upItem"); // NOI18N
  254. upItem.addActionListener(new java.awt.event.ActionListener() {
  255. public void actionPerformed(java.awt.event.ActionEvent evt) {
  256. upItemActionPerformed(evt);
  257. }
  258. });
  259. upItem1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/mpv5/resources/images/16/arrow-down.png"))); // NOI18N
  260. upItem1.setEnabled(false);
  261. upItem1.setName("upItem1"); // NOI18N
  262. upItem1.addActionListener(new java.awt.event.ActionListener() {
  263. public void actionPerformed(java.awt.event.ActionEvent evt) {
  264. upItem1ActionPerformed(evt);
  265. }
  266. });
  267. javax.swing.GroupLayout itemPanelLayout = new javax.swing.GroupLayout(itemPanel);
  268. itemPanel.setLayout(itemPanelLayout);
  269. itemPanelLayout.setHorizontalGroup(
  270. itemPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  271. .addComponent(addItem, javax.swing.GroupLayout.PREFERRED_SIZE, 24, javax.swing.GroupLayout.PREFERRED_SIZE)
  272. .addComponent(delItem, javax.swing.GroupLayout.PREFERRED_SIZE, 24, javax.swing.GroupLayout.PREFERRED_SIZE)
  273. .addComponent(upItem, javax.swing.GroupLayout.PREFERRED_SIZE, 24, javax.swing.GroupLayout.PREFERRED_SIZE)
  274. .addComponent(upItem1, javax.swing.GroupLayout.PREFERRED_SIZE, 24, javax.swing.GroupLayout.PREFERRED_SIZE)
  275. );
  276. itemPanelLayout.setVerticalGroup(
  277. itemPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  278. .addGroup(itemPanelLayout.createSequentialGroup()
  279. .addComponent(addItem)
  280. .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  281. .addComponent(delItem)
  282. .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  283. .addComponent(upItem)
  284. .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  285. .addComponent(upItem1)
  286. .addContainerGap(31, Short.MAX_VALUE))
  287. );
  288. jLabel1.setText(bundle.getString("ActivityConfirmationPanel.jLabel1.text")); // NOI18N
  289. jLabel1.setName("jLabel1"); // NOI18N
  290. total.setText(bundle.getString("ActivityConfirmationPanel.total.text")); // NOI18N
  291. total.setName("total"); // NOI18N
  292. javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
  293. jPanel1.setLayout(jPanel1Layout);
  294. jPanel1Layout.setHorizontalGroup(
  295. jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  296. .addGroup(jPanel1Layout.createSequentialGroup()
  297. .addComponent(itemPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
  298. .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  299. .addComponent(jScrollPane4, javax.swing.GroupLayout.DEFAULT_SIZE, 851, Short.MAX_VALUE))
  300. .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup()
  301. .addContainerGap(639, Short.MAX_VALUE)
  302. .addComponent(jLabel1)
  303. .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  304. .addComponent(total, javax.swing.GroupLayout.PREFERRED_SIZE, 87, javax.swing.GroupLayout.PREFERRED_SIZE))
  305. .addGroup(jPanel1Layout.createSequentialGroup()
  306. .addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
  307. .addContainerGap(18, Short.MAX_VALUE))
  308. );
  309. jPanel1Layout.setVerticalGroup(
  310. jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  311. .addGroup(jPanel1Layout.createSequentialGroup()
  312. .addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
  313. .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  314. .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
  315. .addComponent(itemPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
  316. .addComponent(jScrollPane4, javax.swing.GroupLayout.DEFAULT_SIZE, 149, Short.MAX_VALUE))
  317. .addGap(11, 11, 11)
  318. .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
  319. .addComponent(jLabel1)
  320. .addComponent(total, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
  321. );
  322. add(jPanel1, java.awt.BorderLayout.CENTER);
  323. toolbarpanetbp.setBorder(javax.swing.BorderFactory.createEtchedBorder());
  324. toolbarpanetbp.setName("toolbarpanetbp"); // NOI18N
  325. toolbarpanetbp.setLayout(new java.awt.BorderLayout());
  326. add(toolbarpanetbp, java.awt.BorderLayout.NORTH);
  327. SearchBarPane.setName("SearchBarPane"); // NOI18N
  328. SearchBarPane.setLayout(new java.awt.BorderLayout());
  329. add(SearchBarPane, java.awt.BorderLayout.WEST);
  330. }// </editor-fold>//GEN-END:initComponents
  331. private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton2ActionPerformed
  332. try {
  333. int cid = Integer.valueOf(order.getSelectedItem().getId());
  334. Item i = (Item) DatabaseObject.getObject(Context.getOrder(), cid);
  335. ItemPanel ip = new ItemPanel(Context.getItem());
  336. mpv5.YabsViewProxy.instance().getIdentifierView().addOrShowTab(ip, Messages.TYPE_ORDER.toString());
  337. ip.setDataOwner(i, true);
  338. } catch (Exception e) {
  339. Log.Debug(this, e);
  340. }
  341. }//GEN-LAST:event_jButton2ActionPerformed
  342. private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton3ActionPerformed
  343. try {
  344. int cid = Integer.valueOf(contact.getSelectedItem().getId());
  345. Contact c = (Contact) DatabaseObject.getObject(Context.getContact(), cid);
  346. ContactPanel cp = new ContactPanel(Context.getContact());
  347. mpv5.YabsViewProxy.instance().getIdentifierView().addOrShowTab(cp, Messages.TYPE_CONTACT.toString());
  348. cp.setDataOwner(c, true);
  349. } catch (Exception e) {
  350. Log.Debug(this, e);
  351. }
  352. }//GEN-LAST:event_jButton3ActionPerformed
  353. private void addItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_addItemActionPerformed
  354. ((MPTableModel) itemtable.getModel()).addRow(1);
  355. }//GEN-LAST:event_addItemActionPerformed
  356. private void delItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_delItemActionPerformed
  357. int index = itemtable.getSelectedRow();
  358. if (index < 0) {
  359. return;
  360. }
  361. MPTableModel m = (MPTableModel) itemtable.getModel();
  362. ActivityListSubItem.addToDeletionQueue(m.getValueAt(index, 0));
  363. ((MPTableModel) itemtable.getModel()).removeRow(index);
  364. }//GEN-LAST:event_delItemActionPerformed
  365. private void upItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_upItemActionPerformed
  366. int index = itemtable.getSelectedRow();
  367. if (index <= 0) {
  368. return;
  369. }
  370. ((MPTableModel) itemtable.getModel()).moveRow(index, index, index - 1);
  371. itemtable.changeSelection(index - 1, itemtable.getSelectedColumn(), false, false);
  372. }//GEN-LAST:event_upItemActionPerformed
  373. private void upItem1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_upItem1ActionPerformed
  374. int index = itemtable.getSelectedRow();
  375. if (index < 0 || index >= itemtable.getRowCount() - 1) {
  376. return;
  377. }
  378. ((MPTableModel) itemtable.getModel()).moveRow(index, index, index + 1);
  379. itemtable.changeSelection(index + 1, itemtable.getSelectedColumn(), false, false);
  380. }//GEN-LAST:event_upItem1ActionPerformed
  381. // Variables declaration - do not modify//GEN-BEGIN:variables
  382. private mpv5.ui.beans.LabeledTextField Project;
  383. private javax.swing.JPanel SearchBarPane;
  384. private javax.swing.JButton addItem;
  385. private mpv5.ui.beans.LabeledCombobox contact;
  386. private javax.swing.JButton delItem;
  387. private javax.swing.JPanel itemPanel;
  388. private javax.swing.JTable itemtable;
  389. private javax.swing.JButton jButton2;
  390. private javax.swing.JButton jButton3;
  391. private javax.swing.JLabel jLabel1;
  392. private javax.swing.JPanel jPanel1;
  393. private javax.swing.JPanel jPanel2;
  394. private javax.swing.JScrollPane jScrollPane4;
  395. private mpv5.ui.beans.LabeledTextField number;
  396. private mpv5.ui.beans.LabeledCombobox order;
  397. private javax.swing.JPanel toolbarpanetbp;
  398. private javax.swing.JTextField total;
  399. private javax.swing.JButton upItem;
  400. private javax.swing.JButton upItem1;
  401. // End of variables declaration//GEN-END:variables
  402. public void refresh() {
  403. Runnable runnable = new Runnable() {
  404. @Override
  405. public void run() {
  406. try {
  407. contact.setSelectedIndex(0);
  408. addModel();
  409. formatTable();
  410. } catch (Exception e) {
  411. Log.Debug(this, e);
  412. }
  413. }
  414. };
  415. SwingUtilities.invokeLater(runnable);
  416. }
  417. public boolean collectData() {
  418. cname_ = Project.getText();
  419. if (cname_.length() > 0) {
  420. try {
  421. groupsids_ = User.getCurrentUser().__getGroupsids();
  422. contactsids_ = Integer.parseInt(contact.getSelectedItem().getId());
  423. orderids_ = Integer.parseInt(order.getSelectedItem().getId());
  424. totalamount_ = new BigDecimal(total.getText().replace(",", "."));
  425. cnumber_ = number.getText();
  426. HEADER_FAILD = false;
  427. } catch (Exception exception) {
  428. Log.Debug(exception);
  429. HEADER_FAILD = true;
  430. return false;
  431. }
  432. } else {
  433. HEADER_FAILD = true;
  434. return false;
  435. }
  436. List<Object[]> rowsl = ((MPTableModel) itemtable.getModel()).getValidRows(new int[]{5});
  437. for (int i = 0; i < rowsl.size(); i++) {
  438. Object[] row = rowsl.get(i);
  439. if (row[2] == null || row[9].equals(0)) {
  440. Popup.error(this, Messages.ACTIVITY_EMPTY_DATE.toString());
  441. return false;
  442. }
  443. }
  444. return true;
  445. }
  446. public DatabaseObject getDataOwner() {
  447. return dataOwner;
  448. }
  449. public void setDataOwner(DatabaseObject object, boolean populateData) {
  450. dataOwner = (ActivityList) object;
  451. if (populateData) {
  452. dataOwner.setPanelData(this);
  453. this.exposeData();
  454. tb.setFavourite(Favourite.isFavourite(object));
  455. tb.setEditable(!object.isReadOnly());
  456. try {
  457. itemtable.setModel(ActivityListSubItem.toModel(ActivityListSubItem.getList(dataOwner.__getIDS()).toArray(new ActivityListSubItem[0])));
  458. } catch (NodataFoundException ex) {
  459. Log.Debug(this, ex.getMessage());
  460. addModel();
  461. }
  462. if (((MPTableModel) itemtable.getModel()).getEmptyRows(new int[]{4}) < 2) {
  463. ((MPTableModel) itemtable.getModel()).addRow(1);
  464. }
  465. omodel = (MPTableModel) itemtable.getModel();
  466. formatTable();
  467. ((MPTableModel) itemtable.getModel()).fireTableCellUpdated(0, 0);
  468. total.setText(ActivityListSubItem.getModelSum(omodel, dataOwner.__getIDS()).toString());
  469. if (object.isReadOnly()) {
  470. Popup.notice(Messages.LOCKED_BY);
  471. }
  472. validate();
  473. itemMultiplier.calculateOnce();
  474. }
  475. }
  476. public void exposeData() {
  477. Project.setText(cname_);
  478. try {
  479. contact.setModel(DatabaseObject.getObject(Context.getContact(), contactsids_));
  480. order.setModel(DatabaseObject.getObject(Context.getOrder(), orderids_));
  481. total.setText(totalamount_.toString());
  482. number.setText(cnumber_);
  483. } catch (NodataFoundException ex) {
  484. Log.Debug(this, ex.getMessage());
  485. }
  486. }
  487. public void paste(DatabaseObject... dbos) {
  488. for (DatabaseObject dbo : dbos) {
  489. if (dbo.getContext().equals(Context.getProduct())) {
  490. MPTableModel m = (MPTableModel) itemtable.getModel();
  491. m.addRow(ActivityListSubItem.toRow((Product) dbo).getRowData(m.getValidRows(new int[]{5}).size()));
  492. itemtable.setModel(m);
  493. omodel = m;
  494. } else if (dbo.getContext().equals(Context.getProductlist())) {
  495. setDataOwner(dbo, true);
  496. } else {
  497. mpv5.YabsViewProxy.instance().addMessage(Messages.NOT_POSSIBLE.toString() + Messages.ACTION_PASTE.toString(), Color.RED);
  498. }
  499. }
  500. }
  501. public void showRequiredFields() {
  502. if (HEADER_FAILD) {
  503. TextFieldUtils.blink(Project,
  504. Color.RED);
  505. TextFieldUtils.blink(contact,
  506. Color.RED);
  507. TextFieldUtils.blink(order,
  508. Color.RED);
  509. Project.requestFocus();
  510. }
  511. }
  512. public void showSearchBar(boolean show) {
  513. SearchBarPane.removeAll();
  514. if (show) {
  515. SearchBarPane.add(sp,
  516. BorderLayout.CENTER);
  517. Log.Debug(this,
  518. "Suchfenster eingeblendet");
  519. } else {
  520. Log.Debug(this,
  521. "Suchfenster ausgeblendet");
  522. }
  523. validate();
  524. }
  525. public void actionAfterSave() {
  526. saveActivityListSubItems();
  527. omodel = (MPTableModel) itemtable.getModel();
  528. }
  529. public void actionAfterCreate() {
  530. ArrayUtilities.replaceColumn(itemtable, 0, null);
  531. saveActivityListSubItems();
  532. omodel = (MPTableModel) itemtable.getModel();
  533. }
  534. public void actionBeforeCreate() {
  535. }
  536. public void actionBeforeSave() throws ChangeNotApprovedException {
  537. }
  538. public void mail() {
  539. Popup.notice(Messages.NOT_YET_IMPLEMENTED.toString());
  540. }
  541. public void print() {
  542. if (dataOwner != null && dataOwner.isExisting()) {
  543. if (TemplateHandler.isLoaded(Long.valueOf(dataOwner.templateGroupIds()), dataOwner.templateType())) {
  544. Export.print(TemplateHandler.loadTemplate(dataOwner.templateGroupIds(), dataOwner.templateType()), dataOwner);
  545. } else {
  546. Popup.notice(Messages.NO_TEMPLATE_LOADED + " (" + mpv5.db.objects.User.getCurrentUser() + ")");
  547. Export.print(this);
  548. }
  549. } else {
  550. Export.print(this);
  551. }
  552. }
  553. private void saveActivityListSubItems() {
  554. if (itemtable.getCellEditor() != null) {
  555. try {
  556. itemtable.getCellEditor().stopCellEditing();
  557. } catch (Exception e) {
  558. Log.Debug(this, e);
  559. }
  560. }
  561. ActivityListSubItem.saveModel((MPTableModel) itemtable.getModel(), dataOwner.__getIDS());
  562. }
  563. /**
  564. *
  565. */
  566. public void formatTable() {
  567. //"Internal ID", "ID", "Date", "Count", "Description", "Netto Price", "Tax Value", "Total Price", "Product", "cname"
  568. prepareTable();
  569. TableFormat.resizeCols(itemtable, new Integer[]{0, 23, 80, 50, 50, 100, 60, 60, 60, 20, 0, 0}, new Boolean[]{true, true, true, true, true, false, true, true, true, true, true, true});
  570. TableFormat.changeBackground(itemtable, 1, Color.LIGHT_GRAY);
  571. if (mpv5.db.objects.User.getCurrentUser().getProperties().getProperty("org.openyabs.uiproperty", "hidecolumnquantity")) {
  572. TableFormat.stripColumn(itemtable, 4);
  573. }
  574. }
  575. private void prepareTable() {
  576. itemtable.putClientProperty("terminateEditOnFocusLost", Boolean.TRUE);
  577. //"Internal ID", "ID", "Date", "Count", "Description", "Netto Price", "Tax Value", "Total Price", "Product", "cname"
  578. TableCellRendererForDezimal tcr = new TableCellRendererForDezimal(itemtable);
  579. TableCellEditorForDate de = new TableCellEditorForDate(itemtable);
  580. TextAreaCellEditor tace = new TextAreaCellEditor(itemtable);
  581. ActivityTextAreaDialog actTextAreaDialog = new ActivityTextAreaDialog(mpv5.YabsViewProxy.instance().getIdentifierFrame(), true);
  582. TextAreaCellRenderer.setMAXLINES(10);
  583. TextAreaCellRenderer tacr = new TextAreaCellRenderer(itemtable);
  584. actTextAreaDialog.setParentTable(itemtable);
  585. actTextAreaDialog.okButton.addActionListener(tace);
  586. actTextAreaDialog.cancelButton.addActionListener(tace);
  587. tace.setDialog(actTextAreaDialog, actTextAreaDialog.textArea);
  588. tace.setClickCountToStart(1);
  589. de.setEditorTo(2);
  590. tace.setEditorTo(5);
  591. tcr.setRendererTo(3);
  592. tacr.setRendererTo(5);
  593. tcr.setRendererTo(6);
  594. tcr.setRendererTo(7);
  595. tcr.setRendererTo(8);
  596. itemMultiplier = new DynamicTableCalculator(itemtable, "(([3]*[6])+([3]*[6]%[7]))", new int[]{8});
  597. ((MPTableModel) itemtable.getModel()).addCalculator(itemMultiplier);
  598. itemMultiplier.addLabel(total, 8);
  599. }
  600. public void pdf() {
  601. if (dataOwner != null && dataOwner.isExisting()) {
  602. if (TemplateHandler.isLoaded(Long.valueOf(dataOwner.templateGroupIds()), dataOwner.templateType())) {
  603. new Job(Export.createFile(dataOwner.getFormatHandler().toUserString(),
  604. TemplateHandler.loadTemplate(
  605. dataOwner.templateGroupIds(), dataOwner.templateType()),
  606. dataOwner), new DialogForFile(User.getSaveDir(dataOwner))).execute();
  607. } else {
  608. Popup.notice(Messages.NO_TEMPLATE_LOADED + " (" + mpv5.db.objects.User.getCurrentUser() + ")");
  609. }
  610. }
  611. }
  612. public void odt() {
  613. if (dataOwner != null && dataOwner.isExisting()) {
  614. if (TemplateHandler.isLoaded(Long.valueOf(dataOwner.templateGroupIds()), dataOwner.templateType())) {
  615. new Job(Export.sourceFile(
  616. dataOwner.getFormatHandler().toUserString(),
  617. TemplateHandler.loadTemplate(dataOwner.templateGroupIds(), dataOwner.templateType()), dataOwner), new DialogForFile(User.getSaveDir(dataOwner))).execute();
  618. } else {
  619. Popup.notice(Messages.NO_TEMPLATE_LOADED + " (" + mpv5.db.objects.User.getCurrentUser() + ")");
  620. }
  621. }
  622. }
  623. private void addModel() {
  624. itemtable.setModel(ActivityListSubItem.toModel(new ActivityListSubItem[]{
  625. ActivityListSubItem.getDefaultItem(), ActivityListSubItem.getDefaultItem(),
  626. ActivityListSubItem.getDefaultItem(), ActivityListSubItem.getDefaultItem()
  627. }));
  628. formatTable();
  629. }
  630. private void preloadTemplate() {
  631. Runnable runnable = new Runnable() {
  632. public void run() {
  633. TemplateHandler.loadTemplate(Long.valueOf(dataOwner.templateGroupIds()), dataOwner.templateType());
  634. }
  635. };
  636. new Thread(runnable).start();
  637. }
  638. }