PageRenderTime 479ms CodeModel.GetById 61ms RepoModel.GetById 1ms app.codeStats 0ms

/src/mpv5/ui/panels/GeneralListPanel.java

http://mp-rechnungs-und-kundenverwaltung.googlecode.com/
Java | 342 lines | 237 code | 37 blank | 68 comment | 14 complexity | e88e1d78f6ab1be8099b39077278aef8 MD5 | raw file
Possible License(s): LGPL-3.0, Apache-2.0, GPL-3.0, GPL-2.0, AGPL-3.0, JSON, BSD-3-Clause
  1. /*
  2. * This file is part of YaBS.
  3. *
  4. * YaBS is free software: you can redistribute it and/or modify
  5. * it under the terms of the GNU General Public License as published by
  6. * the Free Software Foundation, either version 3 of the License, or
  7. * (at your option) any later version.
  8. *
  9. * YaBS is distributed in the hope that it will be useful,
  10. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  11. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  12. * GNU General Public License for more details.
  13. *
  14. * You should have received a copy of the GNU General Public License
  15. * along with YaBS. If not, see <http://www.gnu.org/licenses/>.
  16. */
  17. /*
  18. * GeneralListPanel.java
  19. *
  20. * Created on 03.04.2009, 15:26:37
  21. */
  22. package mpv5.ui.panels;
  23. import java.awt.Color;
  24. import java.awt.Component;
  25. import java.util.Date;
  26. import java.util.HashMap;
  27. import java.util.Iterator;
  28. import java.util.List;
  29. import java.util.Vector;
  30. import javax.swing.ImageIcon;
  31. import javax.swing.JComponent;
  32. import javax.swing.JTable;
  33. import javax.swing.table.TableCellRenderer;
  34. import mpv5.db.common.Context;
  35. import mpv5.db.common.DatabaseObject;
  36. import mpv5.db.common.NodataFoundException;
  37. import mpv5.db.objects.Group;
  38. import mpv5.db.objects.User;
  39. import mpv5.logging.Log;
  40. import mpv5.ui.frames.MPView;
  41. import mpv5.ui.misc.MPTable;
  42. import mpv5.utils.date.vTimeframe;
  43. import mpv5.utils.models.MPTableModel;
  44. import mpv5.utils.renderer.TableCellRendererForDatabaseObjects;
  45. import mpv5.utils.tables.TableFormat;
  46. import mpv5.ui.misc.TableViewPersistenceHandler;
  47. /**
  48. *
  49. *
  50. */
  51. public class GeneralListPanel extends javax.swing.JPanel {
  52. private static final long serialVersionUID = 1L;
  53. private List odata;
  54. TableCellRendererForDatabaseObjects rend = new TableCellRendererForDatabaseObjects();
  55. private java.util.ResourceBundle bundle = mpv5.i18n.LanguageManager.getBundle();
  56. /** Creates new form GeneralListPanel
  57. * @param <T>
  58. * @param list
  59. */
  60. public <T extends DatabaseObject> GeneralListPanel(List<T> list) {
  61. this();
  62. labeledCombobox1.setSearchEnabled(true);
  63. labeledCombobox1.setContext(Context.getGroup());
  64. labeledCombobox1.triggerSearch();
  65. setData(list);
  66. odata = list;
  67. ((MPTable) listtable).setDefaultColumns(new Integer[]{100, 100, 100, 100, 100}, new Boolean[]{true, true, true, true, true});
  68. TableFormat.hideHeader(listtable);
  69. }
  70. /**
  71. *
  72. */
  73. public GeneralListPanel() {
  74. initComponents();
  75. setName("generallistpanel");
  76. listtable.setDefaultRenderer(String.class, rend);
  77. listtable.setDefaultRenderer(Date.class, rend);
  78. listtable.setDefaultRenderer(DatabaseObject.class, rend);
  79. ((MPTable) listtable).setDefaultColumns(new Integer[]{100, 100, 100, 100, 100}, new Boolean[]{true, true, true, true, true});
  80. ((MPTable) listtable).setPersistanceHandler(new TableViewPersistenceHandler((MPTable)listtable, this));
  81. TableFormat.hideHeader(listtable);
  82. }
  83. /**
  84. *
  85. * @param c
  86. * @throws NodataFoundException
  87. */
  88. public GeneralListPanel(Context c) throws NodataFoundException {
  89. this(DatabaseObject.getObjects(c));
  90. }
  91. /**
  92. * Show the data
  93. * @param <T>
  94. * @param map
  95. */
  96. public <T extends DatabaseObject> void show(HashMap<Color, List<T>> map) {
  97. Iterator<Color> it = map.keySet().iterator();
  98. List<DatabaseObject> ndata = new Vector<DatabaseObject>();
  99. while (it.hasNext()) {
  100. Color c = it.next();
  101. List<T> data = map.get(c);
  102. for (int i = 0; i < data.size(); i++) {
  103. T databaseObject = data.get(i);
  104. databaseObject.defineColor(c);
  105. ndata.add(databaseObject);
  106. }
  107. }
  108. setData(ndata);
  109. odata = ndata;
  110. labeledCombobox1.setSearchEnabled(true);
  111. labeledCombobox1.setContext(Context.getGroup());
  112. labeledCombobox1.triggerSearch();
  113. }
  114. /**
  115. * Set the data of the list
  116. * @param <T>
  117. * @param list
  118. */
  119. public <T extends DatabaseObject> void setData(List<T> list) {
  120. Object[][] data = new Object[list.size()][5];
  121. for (int i = 0; i < list.size(); i++) {
  122. DatabaseObject databaseObject = list.get(i);
  123. data[i][0] = databaseObject;
  124. data[i][1] = User.getUsername(databaseObject.__getIntaddedby());
  125. data[i][2] = databaseObject.__getDateadded();
  126. try {
  127. data[i][3] = DatabaseObject.getObject(Context.getGroup(), databaseObject.__getGroupsids());
  128. } catch (NodataFoundException ex) {
  129. data[i][3] = "N/A";
  130. }
  131. // data[i][4] = databaseObject.getColor();
  132. data[i][4] = databaseObject.getIcon();
  133. }
  134. MPTableModel m = new MPTableModel(data);
  135. m.setTypes(new Class[]{DatabaseObject.class, String.class, Date.class, DatabaseObject.class, ImageIcon.class, Object.class, Object.class});
  136. listtable.setModel(m);
  137. // TableFormat.hideHeader(listtable);
  138. // TableFormat.stripColumn(listtable, 4);
  139. // TableFormat.stripColumn(jTable1, 5);
  140. }
  141. /**
  142. * Filter by group
  143. * @param g
  144. */
  145. @SuppressWarnings({"unchecked"})
  146. public void filterByGroup(Group g) {
  147. setData(odata);
  148. Object[][] data = ((MPTableModel) listtable.getModel()).getData();
  149. List<DatabaseObject> list = new Vector<DatabaseObject>();
  150. if (g.__getIDS().intValue() != 1) {
  151. for (int i = 0; i < data.length; i++) {
  152. DatabaseObject d = (DatabaseObject) data[i][0];
  153. if (d.__getGroupsids() == g.__getIDS()) {
  154. list.add(d);
  155. }
  156. }
  157. } else {
  158. for (int i = 0; i < data.length; i++) {
  159. DatabaseObject d = (DatabaseObject) data[i][0];
  160. list.add(d);
  161. }
  162. }
  163. setData(list);
  164. }
  165. /**
  166. * Filter by group
  167. * @param g
  168. */
  169. @SuppressWarnings("unchecked")
  170. public void filterByTimeframe(vTimeframe g) {
  171. setData(odata);
  172. Object[][] data = ((MPTableModel) listtable.getModel()).getData();
  173. List<DatabaseObject> list = new Vector<DatabaseObject>();
  174. for (int i = 0; i < data.length; i++) {
  175. DatabaseObject d = (DatabaseObject) data[i][0];
  176. if (g.contains(d.__getDateadded())) {
  177. list.add(d);
  178. }
  179. }
  180. setData(list);
  181. }
  182. /** This method is called from within the constructor to
  183. * initialize the form.
  184. * WARNING: Do NOT modify this code. The content of this method is
  185. * always regenerated by the Form Editor.
  186. */
  187. @SuppressWarnings("unchecked")
  188. // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
  189. private void initComponents() {
  190. jScrollPane1 = new javax.swing.JScrollPane();
  191. listtable = new mpv5.ui.misc.MPTable(this) {
  192. public Component prepareRenderer(TableCellRenderer renderer,
  193. int rowIndex, int vColIndex) {
  194. Component c = super.prepareRenderer(renderer, rowIndex, vColIndex);
  195. if (c instanceof JComponent) {
  196. JComponent jc = (JComponent)c;
  197. jc.setToolTipText(String.valueOf(getValueAt(rowIndex, vColIndex)));
  198. }
  199. return c;
  200. }
  201. };
  202. timeframeChooser1 = new mpv5.ui.beans.TimeframeChooser();
  203. labeledCombobox1 = new mpv5.ui.beans.LabeledCombobox();
  204. jButton1 = new javax.swing.JButton();
  205. jButton2 = new javax.swing.JButton();
  206. java.util.ResourceBundle bundle = mpv5.i18n.LanguageManager.getBundle();
  207. setBorder(javax.swing.BorderFactory.createTitledBorder(bundle.getString("GeneralListPanel.border.title"))); // NOI18N
  208. setName("Form"); // NOI18N
  209. jScrollPane1.setName("jScrollPane1"); // NOI18N
  210. listtable.setAutoCreateRowSorter(true);
  211. listtable.setModel(new javax.swing.table.DefaultTableModel(
  212. new Object [][] {
  213. {},
  214. {},
  215. {},
  216. {}
  217. },
  218. new String [] {
  219. }
  220. ));
  221. listtable.setName("listtable"); // NOI18N
  222. listtable.setShowVerticalLines(false);
  223. listtable.addMouseListener(new java.awt.event.MouseAdapter() {
  224. public void mouseClicked(java.awt.event.MouseEvent evt) {
  225. listtableMouseClicked(evt);
  226. }
  227. });
  228. jScrollPane1.setViewportView(listtable);
  229. timeframeChooser1.setName("timeframeChooser1"); // NOI18N
  230. labeledCombobox1.set_Label(bundle.getString("GeneralListPanel.labeledCombobox1._Label")); // NOI18N
  231. labeledCombobox1.setName("labeledCombobox1"); // NOI18N
  232. jButton1.setText(bundle.getString("GeneralListPanel.jButton1.text")); // NOI18N
  233. jButton1.setName("jButton1"); // NOI18N
  234. jButton1.addActionListener(new java.awt.event.ActionListener() {
  235. public void actionPerformed(java.awt.event.ActionEvent evt) {
  236. jButton1ActionPerformed(evt);
  237. }
  238. });
  239. jButton2.setText(bundle.getString("GeneralListPanel.jButton2.text")); // NOI18N
  240. jButton2.setName("jButton2"); // NOI18N
  241. jButton2.addActionListener(new java.awt.event.ActionListener() {
  242. public void actionPerformed(java.awt.event.ActionEvent evt) {
  243. jButton2ActionPerformed(evt);
  244. }
  245. });
  246. javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
  247. this.setLayout(layout);
  248. layout.setHorizontalGroup(
  249. layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  250. .addGroup(layout.createSequentialGroup()
  251. .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
  252. .addComponent(labeledCombobox1, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
  253. .addComponent(timeframeChooser1, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
  254. .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  255. .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  256. .addComponent(jButton1)
  257. .addComponent(jButton2))
  258. .addGap(33, 33, 33))
  259. .addComponent(jScrollPane1, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 451, Short.MAX_VALUE)
  260. );
  261. layout.setVerticalGroup(
  262. layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  263. .addGroup(layout.createSequentialGroup()
  264. .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
  265. .addGroup(layout.createSequentialGroup()
  266. .addComponent(jButton1, 0, 0, Short.MAX_VALUE)
  267. .addGap(1, 1, 1))
  268. .addComponent(timeframeChooser1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
  269. .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  270. .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
  271. .addComponent(labeledCombobox1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
  272. .addComponent(jButton2, javax.swing.GroupLayout.PREFERRED_SIZE, 20, javax.swing.GroupLayout.PREFERRED_SIZE))
  273. .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  274. .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 239, Short.MAX_VALUE))
  275. );
  276. }// </editor-fold>//GEN-END:initComponents
  277. private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed
  278. filterByTimeframe(timeframeChooser1.getTime());
  279. }//GEN-LAST:event_jButton1ActionPerformed
  280. private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton2ActionPerformed
  281. try {
  282. filterByGroup((Group) Group.getObject(Context.getGroup(), Integer.valueOf(labeledCombobox1.getSelectedItem().getId())));
  283. } catch (Exception ex) {
  284. // Log.Debug(ex);
  285. }
  286. }//GEN-LAST:event_jButton2ActionPerformed
  287. private void listtableMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_listtableMouseClicked
  288. if (evt.getClickCount() > 1) {
  289. try {
  290. System.err.println(mpv5.YabsViewProxy.instance().getIdentifierView());
  291. mpv5.YabsViewProxy.instance().getIdentifierView().addTab(((DatabaseObject) listtable.getModel().getValueAt(listtable.getSelectedRow(), 0)));
  292. } catch (Exception e) {
  293. Log.Debug(e);
  294. }
  295. }
  296. }//GEN-LAST:event_listtableMouseClicked
  297. // Variables declaration - do not modify//GEN-BEGIN:variables
  298. private javax.swing.JButton jButton1;
  299. private javax.swing.JButton jButton2;
  300. private javax.swing.JScrollPane jScrollPane1;
  301. private mpv5.ui.beans.LabeledCombobox labeledCombobox1;
  302. private javax.swing.JTable listtable;
  303. private mpv5.ui.beans.TimeframeChooser timeframeChooser1;
  304. // End of variables declaration//GEN-END:variables
  305. }