PageRenderTime 25ms CodeModel.GetById 10ms RepoModel.GetById 0ms app.codeStats 0ms

/src/mpv5/ui/beans/PrinitingComboBox.java

http://mp-rechnungs-und-kundenverwaltung.googlecode.com/
Java | 244 lines | 185 code | 18 blank | 41 comment | 26 complexity | 21afc15199710bde924bdae232bba022 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. * PrinitingComboBox.java
  19. *
  20. * Created on 17.02.2009, 09:53:14
  21. */
  22. package mpv5.ui.beans;
  23. import java.awt.Component;
  24. import java.awt.Graphics2D;
  25. import java.awt.event.ItemEvent;
  26. import java.awt.image.BufferedImage;
  27. import java.awt.print.PrinterException;
  28. import java.io.File;
  29. import java.io.IOException;
  30. import java.util.ResourceBundle;
  31. import javax.imageio.ImageIO;
  32. import javax.swing.DefaultComboBoxModel;
  33. import javax.swing.JComboBox;
  34. import javax.swing.JComponent;
  35. import javax.swing.JTable;
  36. import mpv5.db.common.Context;
  37. import mpv5.db.common.DatabaseObject;
  38. import mpv5.logging.Log;
  39. import mpv5.ui.dialogs.DialogForFile;
  40. import mpv5.utils.arrays.ArrayUtilities;
  41. import mpv5.utils.date.DateConverter;
  42. import mpv5.utils.files.FileActionHandler;
  43. import mpv5.utils.files.FileReaderWriter;
  44. import mpv5.utils.files.TableHtmlWriter;
  45. import mpv5.utils.models.MPComboBoxModelItem;
  46. import mpv5.utils.print.FilePrintJob;
  47. import mpv5.utils.print.PrintJob;
  48. import mpv5.utils.print.PrintJob2;
  49. /**
  50. *
  51. *
  52. */
  53. public class PrinitingComboBox extends javax.swing.JPanel {
  54. private static final long serialVersionUID = 1L;
  55. public static final int MODE_DO = 0;
  56. public static final int MODE_TABLE = 1;
  57. private int mode = 0;
  58. private Object dataowner;
  59. public static final int MODE_COMPONENT = 2;
  60. /** Creates new form PrinitingComboBox
  61. */
  62. public PrinitingComboBox() {
  63. initComponents();
  64. }
  65. /**
  66. *
  67. * @param dataowner DatabaseObject or JTable
  68. */
  69. public void init(Object dataowner) {
  70. if (dataowner instanceof DatabaseObject
  71. && (((DatabaseObject) dataowner).getContext().equals(Context.getContact())
  72. || ((DatabaseObject) dataowner).getContext().equals(Context.getSupplier())
  73. || ((DatabaseObject) dataowner).getContext().equals(Context.getManufacturer())
  74. || ((DatabaseObject) dataowner).getContext().equals(Context.getCustomer())
  75. || ((DatabaseObject) dataowner).getContext().equals(Context.getUser())) ){
  76. jComboBox1.setModel(new DefaultComboBoxModel(new Object[]{new MPComboBoxModelItem(-1, ""),
  77. new MPComboBoxModelItem(0, "Printer"),
  78. new MPComboBoxModelItem(1, "VCF Export"),
  79. new MPComboBoxModelItem(2, "CSV Export"),
  80. new MPComboBoxModelItem(3, "XML Export")}));
  81. mode = MODE_DO;
  82. } else if (dataowner instanceof DatabaseObject) {
  83. jComboBox1.setModel(new DefaultComboBoxModel(new Object[]{new MPComboBoxModelItem(-1, ""),
  84. new MPComboBoxModelItem(0, "Printer"),
  85. new MPComboBoxModelItem(2, "CSV Export"),
  86. new MPComboBoxModelItem(3, "XML Export")}));
  87. mode = MODE_DO;
  88. } else if (dataowner instanceof JTable) {
  89. jComboBox1.setModel(new DefaultComboBoxModel(new Object[]{new MPComboBoxModelItem(-1, ""),
  90. new MPComboBoxModelItem(0, "Printer"),
  91. new MPComboBoxModelItem(2, "CSV Export"),
  92. new MPComboBoxModelItem(1, "HTML Export")}));
  93. mode = MODE_TABLE;
  94. } else if (dataowner instanceof JComponent) {
  95. jComboBox1.setModel(new DefaultComboBoxModel(new Object[]{new MPComboBoxModelItem(-1, ""),
  96. new MPComboBoxModelItem(0, "Printer"),
  97. new MPComboBoxModelItem(1, "Export")
  98. }));
  99. mode = MODE_COMPONENT;
  100. }
  101. this.dataowner = dataowner;
  102. }
  103. /** This method is called from within the constructor to
  104. * initialize the form.
  105. * WARNING: Do NOT modify this code. The content of this method is
  106. * always regenerated by the Form Editor.
  107. */
  108. @SuppressWarnings("unchecked")
  109. // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
  110. private void initComponents() {
  111. jLabel1 = new javax.swing.JLabel();
  112. jComboBox1 = new javax.swing.JComboBox();
  113. setName("Form"); // NOI18N
  114. setOpaque(false);
  115. setLayout(new javax.swing.BoxLayout(this, javax.swing.BoxLayout.LINE_AXIS));
  116. java.util.ResourceBundle bundle = mpv5.i18n.LanguageManager.getBundle(); // NOI18N
  117. jLabel1.setText(bundle.getString("PrinitingComboBox.jLabel1.text")); // NOI18N
  118. jLabel1.setMaximumSize(new java.awt.Dimension(333, 333));
  119. jLabel1.setName("jLabel1"); // NOI18N
  120. jLabel1.setPreferredSize(new java.awt.Dimension(100, 18));
  121. add(jLabel1);
  122. jComboBox1.setFont(jComboBox1.getFont());
  123. jComboBox1.setName("jComboBox1"); // NOI18N
  124. jComboBox1.setPreferredSize(new java.awt.Dimension(100, 28));
  125. jComboBox1.addItemListener(new java.awt.event.ItemListener() {
  126. public void itemStateChanged(java.awt.event.ItemEvent evt) {
  127. jComboBox1ItemStateChanged(evt);
  128. }
  129. });
  130. add(jComboBox1);
  131. }// </editor-fold>//GEN-END:initComponents
  132. private void jComboBox1ItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_jComboBox1ItemStateChanged
  133. JComboBox cb = (JComboBox) evt.getSource();
  134. // Get the affected item
  135. MPComboBoxModelItem item = (MPComboBoxModelItem) evt.getItem();
  136. switch (mode) {
  137. case MODE_DO:
  138. if (evt.getStateChange() == ItemEvent.SELECTED) {
  139. switch (Integer.valueOf(item.getId().toString())) {
  140. case 0:
  141. new PrintJob().print((DatabaseObject) dataowner);
  142. break;
  143. case 1:
  144. new FilePrintJob((DatabaseObject) dataowner).toVCF();
  145. break;
  146. case 2:
  147. new FilePrintJob((DatabaseObject) dataowner).toCSV();
  148. break;
  149. case 3:
  150. new FilePrintJob((DatabaseObject) dataowner).toXML();
  151. // ((Contact) dataowner).toXML();
  152. break;
  153. }
  154. }
  155. break;
  156. case MODE_TABLE:
  157. if (evt.getStateChange() == ItemEvent.SELECTED) {
  158. switch (Integer.valueOf(item.getId().toString())) {
  159. case 0:
  160. try {
  161. ((JTable) dataowner).print();
  162. } catch (PrinterException ex) {
  163. Log.Debug(this, ex);
  164. }
  165. break;
  166. case 1:
  167. DialogForFile dialog = new DialogForFile(DialogForFile.FILES_ONLY, "export-" + DateConverter.getTodayDefDate() + ".html");
  168. if (dialog.saveFile()) {
  169. File f = new TableHtmlWriter((JTable) dataowner, dialog.getFile(), ((JTable) dataowner).getShowHorizontalLines(), ((JTable) dataowner).getShowVerticalLines()).createHtml();
  170. FileActionHandler.open(f);
  171. }
  172. break;
  173. case 2:
  174. DialogForFile dialog2 = new DialogForFile(DialogForFile.FILES_ONLY, "export-" + DateConverter.getTodayDefDate() + ".csv");
  175. if (dialog2.saveFile()) {
  176. FileReaderWriter r = new FileReaderWriter(dialog2.getFile());
  177. String title = "";
  178. for (int i = 0; i < ((JTable) dataowner).getColumnCount(); i++) {
  179. title += ((JTable) dataowner).getColumnName(i) + ",";
  180. }
  181. title = title.substring(0, title.length() - 1);
  182. title += "\n";
  183. Object[][] ar = ArrayUtilities.tableModelToArray((JTable) dataowner);
  184. r.writeOnce(title);
  185. boolean write = r.write(ar, ",", true);
  186. FileActionHandler.open(dialog2.getSelectedFile());
  187. }
  188. break;
  189. }
  190. break;
  191. }
  192. case MODE_COMPONENT:
  193. if (evt.getStateChange() == ItemEvent.SELECTED) {
  194. switch (Integer.valueOf(item.getId().toString())) {
  195. case 0:
  196. new PrintJob2((Component) dataowner);
  197. break;
  198. case 1:
  199. Component comp = (Component) dataowner;
  200. int w = comp.getWidth(),
  201. h = comp.getHeight();
  202. BufferedImage image = new BufferedImage(w, h,
  203. BufferedImage.TYPE_INT_RGB);
  204. Graphics2D g2 = image.createGraphics();
  205. comp.paint(g2);
  206. g2.dispose();
  207. DialogForFile d = new DialogForFile(new File("export.jpg"));
  208. if (d.saveFile()) {
  209. try {
  210. ImageIO.write(image, "jpeg", d.getFile());
  211. } catch (IOException ex) {
  212. Log.Debug(ex);
  213. }
  214. }
  215. break;
  216. }
  217. }
  218. break;
  219. }
  220. cb.setSelectedIndex(-1);
  221. }//GEN-LAST:event_jComboBox1ItemStateChanged
  222. // Variables declaration - do not modify//GEN-BEGIN:variables
  223. private javax.swing.JComboBox jComboBox1;
  224. private javax.swing.JLabel jLabel1;
  225. // End of variables declaration//GEN-END:variables
  226. }