PageRenderTime 15ms CodeModel.GetById 9ms RepoModel.GetById 0ms app.codeStats 0ms

/src/mpv5/ui/misc/DragTableHandlerForDBOs.java

http://mp-rechnungs-und-kundenverwaltung.googlecode.com/
Java | 97 lines | 69 code | 13 blank | 15 comment | 11 complexity | f70973d4aca8ec481f7edf20005e7829 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.misc;
  2. import java.awt.datatransfer.DataFlavor;
  3. import java.awt.datatransfer.Transferable;
  4. import java.awt.dnd.DnDConstants;
  5. import java.util.ArrayList;
  6. import java.util.List;
  7. import java.util.logging.Level;
  8. import java.util.logging.Logger;
  9. import javax.swing.JComponent;
  10. import javax.swing.JTable;
  11. import javax.swing.TransferHandler;
  12. import mpv5.db.common.Context;
  13. import mpv5.db.common.DatabaseObject;
  14. import mpv5.db.common.NodataFoundException;
  15. /**
  16. *
  17. */
  18. public class DragTableHandlerForDBOs extends TransferHandler {
  19. private final JTable table;
  20. private final Context context;
  21. public DragTableHandlerForDBOs(JTable table, Context context) {
  22. this.table = table;
  23. this.table.setTransferHandler(this);
  24. this.table.setDragEnabled(true);
  25. this.context = context;
  26. }
  27. @Override
  28. public boolean canImport(JComponent comp, DataFlavor[] transferFlavors) {
  29. if (table == comp) {
  30. return false;
  31. }
  32. return true;
  33. }
  34. @Override
  35. protected Transferable createTransferable(JComponent c) {
  36. if (c == table) {
  37. int[] row = table.getSelectedRows();
  38. List<DatabaseObject> l = new ArrayList<DatabaseObject>();
  39. if (table.getModel().getValueAt(row[0], 0) instanceof DatabaseObject) {
  40. for (int i = 0; i < row.length; i++) {
  41. int ro = row[i];
  42. l.add((DatabaseObject) table.getModel().getValueAt(ro, 0));
  43. }
  44. return new DatabaseObjectTransferable(l);
  45. } else {
  46. try {
  47. for (int i = 0; i < row.length; i++) {
  48. int ro = row[i];
  49. l.add(DatabaseObject.getObject(context, Integer.valueOf(table.getModel().getValueAt(ro, 0).toString())));
  50. }
  51. return new DatabaseObjectTransferable(l);
  52. } catch (NodataFoundException ex) {
  53. l.add(DatabaseObject.getObject(context));
  54. return new DatabaseObjectTransferable(l);
  55. }
  56. }
  57. }
  58. return null;
  59. }
  60. @Override
  61. public boolean importData(JComponent comp, Transferable t) {
  62. // if (comp == table) {
  63. // try {
  64. // DatabaseObject value = t.getTransferData(DatabaseObjectTransferable.FLAVOR);
  65. //
  66. // int row = table.getSelectedRow();
  67. // int col = table.getSelectedColumn();
  68. // table.getModel().setValueAt(value, row, col);
  69. // return true;
  70. // } catch (Exception e) {
  71. // }
  72. // }
  73. // return super.importData(comp, t);
  74. return false;
  75. }
  76. @Override
  77. public int getSourceActions(JComponent c) {
  78. if (table == c) {
  79. return DnDConstants.ACTION_COPY_OR_MOVE;
  80. } else {
  81. return super.getSourceActions(c);
  82. }
  83. }
  84. }