/src/mpv5/ui/panels/ProductList.java

http://mp-rechnungs-und-kundenverwaltung.googlecode.com/ · Java · 463 lines · 391 code · 51 blank · 21 comment · 24 complexity · d2545af0af4454304ea83ec8189b57c8 MD5 · raw file

  1. package mpv5.ui.panels;
  2. import java.awt.Component;
  3. import java.awt.event.ActionEvent;
  4. import java.util.ArrayList;
  5. import java.util.Date;
  6. import java.util.List;
  7. import javax.swing.AbstractAction;
  8. import javax.swing.JComponent;
  9. import javax.swing.table.TableCellRenderer;
  10. import mpv5.db.common.Context;
  11. import mpv5.db.common.DatabaseObject;
  12. import mpv5.db.common.NodataFoundException;
  13. import mpv5.db.common.QueryCriteria2;
  14. import mpv5.db.common.QueryHandler;
  15. import mpv5.db.common.QueryParameter;
  16. import mpv5.db.objects.Product;
  17. import mpv5.db.objects.ProductGroup;
  18. import mpv5.globals.Messages;
  19. import mpv5.logging.Log;
  20. import mpv5.ui.misc.MPTable;
  21. import mpv5.utils.date.vTimeframe;
  22. import mpv5.utils.models.MPTableModel;
  23. import mpv5.utils.tables.*;
  24. import mpv5.ui.misc.TableViewPersistenceHandler;
  25. /**
  26. *
  27. *
  28. */
  29. public class ProductList extends javax.swing.JPanel implements ListPanel {
  30. private static final long serialVersionUID = 1L;
  31. private Context context = Context.getProduct();
  32. private java.util.ResourceBundle bundle = mpv5.i18n.LanguageManager.getBundle();
  33. /**
  34. * Creates new form ListPanel
  35. */
  36. public ProductList() {
  37. initComponents();
  38. setName("productlist");
  39. labeledCombobox1.setContext(Context.getSupplier());
  40. labeledCombobox1.setSearchEnabled(true);
  41. labeledCombobox2.setContext(Context.getManufacturer());
  42. labeledCombobox2.setSearchEnabled(true);
  43. labeledCombobox1.setEditable(true);
  44. labeledCombobox2.setEditable(true);
  45. prinitingComboBox1.init(listTable);
  46. context.addReference(Context.getContact().getDbIdentity(), "ids", "suppliersids");
  47. context.addReference(Context.getGroup());
  48. ((MPTable) listTable).setPersistanceHandler(new TableViewPersistenceHandler((MPTable) listTable, this));
  49. search.getTextField().addActionListener(new AbstractAction() {
  50. public void actionPerformed(ActionEvent e) {
  51. filltable(search.getText(), null);
  52. }
  53. });
  54. }
  55. /**
  56. * This me4thod is called from within the constructor to initialize the
  57. * form. WARNING: Do NOT modify this code. The content of this method is
  58. * always regenerated by the Form Editor.
  59. */
  60. @SuppressWarnings("unchecked")
  61. // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
  62. private void initComponents() {
  63. buttonGroup1 = new javax.swing.ButtonGroup();
  64. buttonGroup2 = new javax.swing.ButtonGroup();
  65. jPanel1 = new javax.swing.JPanel();
  66. jScrollPane1 = new javax.swing.JScrollPane();
  67. listTable = new mpv5.ui.misc.MPTable(this) {
  68. public Component prepareRenderer(TableCellRenderer renderer,
  69. int rowIndex, int vColIndex) {
  70. Component c = super.prepareRenderer(renderer, rowIndex, vColIndex);
  71. if (c instanceof JComponent) {
  72. JComponent jc = (JComponent)c;
  73. jc.setToolTipText(String.valueOf(getValueAt(rowIndex, vColIndex)));
  74. }
  75. return c;
  76. }
  77. };
  78. jPanel2 = new javax.swing.JPanel();
  79. jPanel3 = new javax.swing.JPanel();
  80. products = new javax.swing.JRadioButton();
  81. both = new javax.swing.JRadioButton();
  82. search = new mpv5.ui.beans.LabeledTextField();
  83. jLabel1 = new javax.swing.JLabel();
  84. services = new javax.swing.JRadioButton();
  85. jButton4 = new javax.swing.JButton();
  86. labeledCombobox1 = new mpv5.ui.beans.LabeledCombobox();
  87. jButton3 = new javax.swing.JButton();
  88. labeledCombobox2 = new mpv5.ui.beans.LabeledCombobox();
  89. prinitingComboBox1 = new mpv5.ui.beans.PrinitingComboBox();
  90. jButton1 = new javax.swing.JButton();
  91. jButton2 = new javax.swing.JButton();
  92. setName("Form"); // NOI18N
  93. java.util.ResourceBundle bundle = mpv5.i18n.LanguageManager.getBundle();// NOI18N
  94. jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder(bundle.getString("ProductList.jPanel1.border.title"))); // NOI18N
  95. jPanel1.setName("jPanel1"); // NOI18N
  96. jScrollPane1.setHorizontalScrollBarPolicy(javax.swing.ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS);
  97. jScrollPane1.setName("jScrollPane1"); // NOI18N
  98. listTable.setAutoCreateRowSorter(true);
  99. listTable.setModel(new javax.swing.table.DefaultTableModel(
  100. new Object [][] {
  101. {},
  102. {},
  103. {},
  104. {}
  105. },
  106. new String [] {
  107. }
  108. ));
  109. listTable.setDragEnabled(true);
  110. listTable.setFillsViewportHeight(true);
  111. listTable.setName("listTable"); // NOI18N
  112. listTable.setShowVerticalLines(false);
  113. listTable.addMouseListener(new java.awt.event.MouseAdapter() {
  114. public void mouseClicked(java.awt.event.MouseEvent evt) {
  115. listTableMouseClicked(evt);
  116. }
  117. });
  118. jScrollPane1.setViewportView(listTable);
  119. jPanel2.setBorder(javax.swing.BorderFactory.createTitledBorder(bundle.getString("ProductList.jPanel2.border.title"))); // NOI18N
  120. jPanel2.setName("jPanel2"); // NOI18N
  121. jPanel3.setName("jPanel3"); // NOI18N
  122. buttonGroup2.add(products);
  123. products.setText(bundle.getString("ProductList.products.text")); // NOI18N
  124. products.setFocusable(false);
  125. products.setHorizontalTextPosition(javax.swing.SwingConstants.RIGHT);
  126. products.setMaximumSize(new java.awt.Dimension(333, 20));
  127. products.setMinimumSize(new java.awt.Dimension(100, 20));
  128. products.setName("products"); // NOI18N
  129. products.setPreferredSize(new java.awt.Dimension(100, 20));
  130. products.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
  131. buttonGroup2.add(both);
  132. both.setSelected(true);
  133. both.setText(bundle.getString("ProductList.both.text")); // NOI18N
  134. both.setFocusable(false);
  135. both.setHorizontalTextPosition(javax.swing.SwingConstants.RIGHT);
  136. both.setMaximumSize(new java.awt.Dimension(333, 20));
  137. both.setMinimumSize(new java.awt.Dimension(100, 20));
  138. both.setName("both"); // NOI18N
  139. both.setPreferredSize(new java.awt.Dimension(100, 20));
  140. both.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
  141. search.set_Label(bundle.getString("ProductList.search._Label")); // NOI18N
  142. search.setName("search"); // NOI18N
  143. search.setPreferredSize(new java.awt.Dimension(200, 21));
  144. jLabel1.setFont(jLabel1.getFont().deriveFont(jLabel1.getFont().getStyle() | java.awt.Font.BOLD));
  145. jLabel1.setText(bundle.getString("ProductList.jLabel1.text")); // NOI18N
  146. jLabel1.setName("jLabel1"); // NOI18N
  147. buttonGroup2.add(services);
  148. services.setText(bundle.getString("ProductList.services.text")); // NOI18N
  149. services.setFocusable(false);
  150. services.setHorizontalTextPosition(javax.swing.SwingConstants.RIGHT);
  151. services.setMaximumSize(new java.awt.Dimension(333, 20));
  152. services.setMinimumSize(new java.awt.Dimension(100, 20));
  153. services.setName("services"); // NOI18N
  154. services.setPreferredSize(new java.awt.Dimension(100, 20));
  155. services.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
  156. jButton4.setIcon(new javax.swing.ImageIcon(getClass().getResource("/mpv5/resources/images/16/remove.png"))); // NOI18N
  157. jButton4.setText(bundle.getString("ProductList.jButton4.text")); // NOI18N
  158. jButton4.setBorderPainted(false);
  159. jButton4.setName("jButton4"); // NOI18N
  160. jButton4.addActionListener(new java.awt.event.ActionListener() {
  161. public void actionPerformed(java.awt.event.ActionEvent evt) {
  162. jButton4ActionPerformed(evt);
  163. }
  164. });
  165. labeledCombobox1.set_Label(bundle.getString("ProductList.labeledCombobox1._Label")); // NOI18N
  166. labeledCombobox1.setName("labeledCombobox1"); // NOI18N
  167. jButton3.setIcon(new javax.swing.ImageIcon(getClass().getResource("/mpv5/resources/images/16/remove.png"))); // NOI18N
  168. jButton3.setText(bundle.getString("ProductList.jButton3.text")); // NOI18N
  169. jButton3.setBorderPainted(false);
  170. jButton3.setName("jButton3"); // NOI18N
  171. jButton3.addActionListener(new java.awt.event.ActionListener() {
  172. public void actionPerformed(java.awt.event.ActionEvent evt) {
  173. jButton3ActionPerformed(evt);
  174. }
  175. });
  176. labeledCombobox2.set_Label(bundle.getString("ProductList.labeledCombobox2._Label")); // NOI18N
  177. labeledCombobox2.setName("labeledCombobox2"); // NOI18N
  178. javax.swing.GroupLayout jPanel3Layout = new javax.swing.GroupLayout(jPanel3);
  179. jPanel3.setLayout(jPanel3Layout);
  180. jPanel3Layout.setHorizontalGroup(
  181. jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  182. .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel3Layout.createSequentialGroup()
  183. .addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 81, javax.swing.GroupLayout.PREFERRED_SIZE)
  184. .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  185. .addComponent(products, javax.swing.GroupLayout.PREFERRED_SIZE, 151, javax.swing.GroupLayout.PREFERRED_SIZE)
  186. .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  187. .addComponent(services, javax.swing.GroupLayout.PREFERRED_SIZE, 150, javax.swing.GroupLayout.PREFERRED_SIZE)
  188. .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  189. .addComponent(both, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
  190. .addGap(47, 47, 47))
  191. .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel3Layout.createSequentialGroup()
  192. .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
  193. .addComponent(search, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
  194. .addGroup(javax.swing.GroupLayout.Alignment.LEADING, jPanel3Layout.createSequentialGroup()
  195. .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  196. .addComponent(labeledCombobox2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
  197. .addComponent(labeledCombobox1, javax.swing.GroupLayout.PREFERRED_SIZE, 478, javax.swing.GroupLayout.PREFERRED_SIZE))
  198. .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  199. .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  200. .addComponent(jButton4, javax.swing.GroupLayout.PREFERRED_SIZE, 23, javax.swing.GroupLayout.PREFERRED_SIZE)
  201. .addComponent(jButton3, javax.swing.GroupLayout.PREFERRED_SIZE, 23, javax.swing.GroupLayout.PREFERRED_SIZE))))
  202. .addGap(165, 165, 165))
  203. );
  204. jPanel3Layout.setVerticalGroup(
  205. jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  206. .addGroup(jPanel3Layout.createSequentialGroup()
  207. .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER)
  208. .addComponent(jLabel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
  209. .addComponent(products, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
  210. .addComponent(services, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
  211. .addComponent(both, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
  212. .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  213. .addComponent(search, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
  214. .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
  215. .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER)
  216. .addComponent(labeledCombobox1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
  217. .addComponent(jButton3, javax.swing.GroupLayout.Alignment.LEADING, 0, 0, Short.MAX_VALUE))
  218. .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  219. .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
  220. .addComponent(labeledCombobox2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
  221. .addComponent(jButton4, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE))
  222. .addContainerGap())
  223. );
  224. javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2);
  225. jPanel2.setLayout(jPanel2Layout);
  226. jPanel2Layout.setHorizontalGroup(
  227. jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  228. .addGroup(jPanel2Layout.createSequentialGroup()
  229. .addContainerGap()
  230. .addComponent(jPanel3, javax.swing.GroupLayout.PREFERRED_SIZE, 518, javax.swing.GroupLayout.PREFERRED_SIZE)
  231. .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
  232. );
  233. jPanel2Layout.setVerticalGroup(
  234. jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  235. .addComponent(jPanel3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
  236. );
  237. prinitingComboBox1.setName("prinitingComboBox1"); // NOI18N
  238. jButton1.setText(bundle.getString("ProductList.jButton1.text")); // NOI18N
  239. jButton1.setName("jButton1"); // NOI18N
  240. jButton1.addActionListener(new java.awt.event.ActionListener() {
  241. public void actionPerformed(java.awt.event.ActionEvent evt) {
  242. jButton1ActionPerformed(evt);
  243. }
  244. });
  245. jButton2.setText(bundle.getString("ProductList.jButton2.text")); // NOI18N
  246. jButton2.setName("jButton2"); // NOI18N
  247. jButton2.addActionListener(new java.awt.event.ActionListener() {
  248. public void actionPerformed(java.awt.event.ActionEvent evt) {
  249. jButton2ActionPerformed(evt);
  250. }
  251. });
  252. javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
  253. jPanel1.setLayout(jPanel1Layout);
  254. jPanel1Layout.setHorizontalGroup(
  255. jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  256. .addComponent(jScrollPane1)
  257. .addGroup(jPanel1Layout.createSequentialGroup()
  258. .addComponent(prinitingComboBox1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
  259. .addContainerGap())
  260. .addGroup(jPanel1Layout.createSequentialGroup()
  261. .addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
  262. .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  263. .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  264. .addComponent(jButton1, javax.swing.GroupLayout.PREFERRED_SIZE, 89, javax.swing.GroupLayout.PREFERRED_SIZE)
  265. .addComponent(jButton2, javax.swing.GroupLayout.PREFERRED_SIZE, 89, javax.swing.GroupLayout.PREFERRED_SIZE))
  266. .addGap(0, 15, Short.MAX_VALUE))
  267. );
  268. jPanel1Layout.setVerticalGroup(
  269. jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  270. .addGroup(jPanel1Layout.createSequentialGroup()
  271. .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
  272. .addGroup(jPanel1Layout.createSequentialGroup()
  273. .addContainerGap()
  274. .addComponent(jButton1)
  275. .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
  276. .addComponent(jButton2))
  277. .addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
  278. .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  279. .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 49, Short.MAX_VALUE)
  280. .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  281. .addComponent(prinitingComboBox1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
  282. );
  283. javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
  284. this.setLayout(layout);
  285. layout.setHorizontalGroup(
  286. layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  287. .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
  288. );
  289. layout.setVerticalGroup(
  290. layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  291. .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
  292. );
  293. }// </editor-fold>//GEN-END:initComponents
  294. private void listTableMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_listTableMouseClicked
  295. if (evt.getClickCount() > 1) {
  296. Selection sel = new Selection(listTable);
  297. if (sel.checkID()) {
  298. try {
  299. mpv5.YabsViewProxy.instance().getIdentifierView().addTab(DatabaseObject.getObject(Context.getProduct(), sel.getId()));
  300. } catch (NodataFoundException ex) {
  301. Log.Debug(ex);
  302. }
  303. }
  304. }
  305. }//GEN-LAST:event_listTableMouseClicked
  306. private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed
  307. DatabaseObject d = DatabaseObject.getObject(Context.getProduct());
  308. mpv5.YabsViewProxy.instance().getIdentifierView().addTab(d, Messages.NEW_PRODUCT);
  309. }//GEN-LAST:event_jButton1ActionPerformed
  310. private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton2ActionPerformed
  311. filltable(search.getText(), null);
  312. }//GEN-LAST:event_jButton2ActionPerformed
  313. private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton3ActionPerformed
  314. labeledCombobox1.setSelectedIndex(-1);
  315. }//GEN-LAST:event_jButton3ActionPerformed
  316. private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton4ActionPerformed
  317. labeledCombobox2.setSelectedIndex(-1);
  318. }//GEN-LAST:event_jButton4ActionPerformed
  319. // Variables declaration - do not modify//GEN-BEGIN:variables
  320. private javax.swing.JRadioButton both;
  321. private javax.swing.ButtonGroup buttonGroup1;
  322. private javax.swing.ButtonGroup buttonGroup2;
  323. private javax.swing.JButton jButton1;
  324. private javax.swing.JButton jButton2;
  325. private javax.swing.JButton jButton3;
  326. private javax.swing.JButton jButton4;
  327. private javax.swing.JLabel jLabel1;
  328. private javax.swing.JPanel jPanel1;
  329. private javax.swing.JPanel jPanel2;
  330. private javax.swing.JPanel jPanel3;
  331. private javax.swing.JScrollPane jScrollPane1;
  332. private mpv5.ui.beans.LabeledCombobox labeledCombobox1;
  333. private mpv5.ui.beans.LabeledCombobox labeledCombobox2;
  334. private javax.swing.JTable listTable;
  335. private mpv5.ui.beans.PrinitingComboBox prinitingComboBox1;
  336. private javax.swing.JRadioButton products;
  337. private mpv5.ui.beans.LabeledTextField search;
  338. private javax.swing.JRadioButton services;
  339. // End of variables declaration//GEN-END:variables
  340. /**
  341. * @return the context
  342. */
  343. public Context getContext() {
  344. return context;
  345. }
  346. /**
  347. * @param context the context to set
  348. */
  349. public void setContext(Context context) {
  350. this.context = context;
  351. }
  352. public void refresh() {
  353. }
  354. public void flush() {
  355. listTable.setModel(null);
  356. }
  357. private void filltable(String search, List<ProductGroup> groups) {
  358. QueryCriteria2 qc = new QueryCriteria2();
  359. if (search != null) {
  360. List<List<QueryParameter>> ps = new ArrayList<List<QueryParameter>>();
  361. List<QueryParameter> not = new ArrayList<QueryParameter>();
  362. String[] strings = search.split("\\s+");
  363. for (int i = 0; i < strings.length; i++) {
  364. ArrayList<QueryParameter> psx = new ArrayList<QueryParameter>();
  365. ps.add(psx);
  366. String string = strings[i];
  367. for (String en : new Product().getStringVars()) {
  368. if (!string.startsWith("-")) {
  369. psx.add(new QueryParameter(Context.getProduct(), en, string, QueryParameter.LIKE));
  370. } else {
  371. not.add(new QueryParameter(Context.getProduct(), en, string.substring(1), QueryParameter.NOTLIKE));
  372. }
  373. }
  374. }
  375. for (int i = 0; i < ps.size(); i++) {
  376. qc.or(ps.get(i));
  377. }
  378. qc.and(not);
  379. }
  380. if (!both.isSelected()) {
  381. int type = Product.TYPE_PRODUCT;
  382. if (services.isSelected()) {
  383. type = Product.TYPE_SERVICE;
  384. }
  385. qc.and(new QueryParameter(Context.getProduct(), "inttype", type, QueryParameter.EQUALS));
  386. }
  387. if (groups != null && !groups.isEmpty()) {
  388. List<QueryParameter> ps = new ArrayList<QueryParameter>();
  389. for (int i = 0; i < groups.size(); i++) {
  390. ProductGroup group = groups.get(i);
  391. ps.add(new QueryParameter(Context.getProduct(), "productgroupsids", group.__getIDS(), QueryParameter.EQUALS));
  392. }
  393. qc.or(ps);
  394. }
  395. if (labeledCombobox1.getValue() != null && labeledCombobox1.getComboBox().getSelectedIndex() != -1) {
  396. qc.and(new QueryParameter(context, "suppliersids", Integer.valueOf(labeledCombobox1.getSelectedItem().getId()), QueryParameter.EQUALS));
  397. }
  398. if (labeledCombobox2.getValue() != null && labeledCombobox2.getComboBox().getSelectedIndex() != -1) {
  399. qc.and(new QueryParameter(context, "manufacturersids", Integer.valueOf(labeledCombobox2.getSelectedItem().getId()), QueryParameter.EQUALS));
  400. }
  401. Context c = Context.getProduct();
  402. c.addReference(Context.getContact().getDbIdentity(), "ids", "suppliersids");
  403. c.addReference(Context.getGroup());
  404. try {
  405. listTable.setModel(new MPTableModel(QueryHandler.instanceOf().clone(c).select(Context.DETAILS_PRODUCTS, qc).getData()));
  406. } catch (NodataFoundException ex) {
  407. listTable.setModel(new MPTableModel());
  408. }
  409. TableFormat.hideHeader(listTable);
  410. validate();
  411. }
  412. }