diff --git a/org/wheel/gui/Wheel.form b/org/wheel/gui/Wheel.form index 9c075f5..015dee4 100644 --- a/org/wheel/gui/Wheel.form +++ b/org/wheel/gui/Wheel.form @@ -54,10 +54,12 @@ - + + + - + @@ -87,7 +89,10 @@ - + + + + @@ -118,6 +123,9 @@ + + + @@ -207,6 +215,14 @@ + + + + + + + + diff --git a/org/wheel/gui/Wheel.java b/org/wheel/gui/Wheel.java index 77a258b..75132bf 100644 --- a/org/wheel/gui/Wheel.java +++ b/org/wheel/gui/Wheel.java @@ -15,6 +15,7 @@ import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.io.File; import java.io.IOException; +import java.io.PrintWriter; import java.net.URL; import java.sql.ResultSet; import java.sql.SQLException; @@ -23,6 +24,7 @@ import java.util.logging.Logger; import java.util.prefs.Preferences; import javax.swing.AbstractAction; import javax.swing.JButton; +import javax.swing.JFileChooser; import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JMenuItem; @@ -92,6 +94,7 @@ public class Wheel extends javax.swing.JFrame { openButton = new javax.swing.JButton(); dbManagementButton = new javax.swing.JButton(); jSeparator1 = new javax.swing.JSeparator(); + exportButton = new javax.swing.JButton(); setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); setTitle("Wheel Bibliography Organizer"); @@ -132,6 +135,7 @@ public class Wheel extends javax.swing.JFrame { } }); mainTable.setRowHeight(22); + mainTable.setSelectionMode(javax.swing.ListSelectionModel.MULTIPLE_INTERVAL_SELECTION); jScrollPane1.setViewportView(mainTable); editButton.setText("Edit"); @@ -205,6 +209,13 @@ public class Wheel extends javax.swing.JFrame { jSeparator1.setOrientation(javax.swing.SwingConstants.VERTICAL); + exportButton.setText("Export"); + exportButton.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + exportButtonActionPerformed(evt); + } + }); + javax.swing.GroupLayout mainPanelLayout = new javax.swing.GroupLayout(mainPanel); mainPanel.setLayout(mainPanelLayout); mainPanelLayout.setHorizontalGroup( @@ -225,9 +236,11 @@ public class Wheel extends javax.swing.JFrame { .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(dbManagementButton) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(exportButton) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jSeparator1, javax.swing.GroupLayout.PREFERRED_SIZE, 10, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(searchFieldText, javax.swing.GroupLayout.DEFAULT_SIZE, 308, Short.MAX_VALUE) + .addComponent(searchFieldText, javax.swing.GroupLayout.DEFAULT_SIZE, 243, Short.MAX_VALUE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(searchButton) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) @@ -254,7 +267,9 @@ public class Wheel extends javax.swing.JFrame { .addComponent(resetButton, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .addComponent(openButton, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(configButton, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(dbManagementButton, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addGroup(mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(dbManagementButton, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(exportButton, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .addComponent(jSeparator1)) .addContainerGap()) ); @@ -388,6 +403,40 @@ public class Wheel extends javax.swing.JFrame { } }//GEN-LAST:event_searchFieldTextKeyPressed + private void exportButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_exportButtonActionPerformed + int[] selectedRows = mainTable.getSelectedRows(); + if(selectedRows.length > 0){ + try { + JFileChooser chooser = new JFileChooser(); + chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); + if (chooser.showSaveDialog(this) != JFileChooser.OPEN_DIALOG) { + return; + } + String savePath = chooser.getSelectedFile().getPath(); + PrintWriter writer = new PrintWriter(savePath + System.getProperty("file.separator") + "exportedBIB.bib", "UTF-8"); + for(int viewRow : selectedRows){ + DefaultTableModel model = (DefaultTableModel) mainTable.getModel(); + PKeyIdPair keyIdPair = (PKeyIdPair) model.getValueAt(mainTable.convertRowIndexToModel(viewRow), 0); + ResultSet rs = dbController.selectFromTableWhere(DBUtils.PAPERS_TABLENAME, DBUtils.BIBTEX_COLUMN, DBUtils.PKEY_COLUMN+"="+keyIdPair.getpKey(), false); + if(rs.next()){ + String bib = rs.getString(DBUtils.BIBTEX_COLUMN); + if(bib.length() == 0){ + return; + } + writer.println("%naskos index: "+keyIdPair.getId()); + writer.println(bib); + writer.println(); + } + } + writer.close(); + } catch (IOException ex) { + Logger.getLogger(Wheel.class.getName()).log(Level.SEVERE, null, ex); + } catch (SQLException ex) { + Logger.getLogger(Wheel.class.getName()).log(Level.SEVERE, null, ex); + } + } + }//GEN-LAST:event_exportButtonActionPerformed + // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JButton addButton; @@ -396,6 +445,7 @@ public class Wheel extends javax.swing.JFrame { private javax.swing.JButton deleteButton; private javax.swing.JButton detailsButton; private javax.swing.JButton editButton; + private javax.swing.JButton exportButton; private javax.swing.JScrollPane jScrollPane1; private javax.swing.JSeparator jSeparator1; private javax.swing.JPanel mainPanel; @@ -509,11 +559,11 @@ public class Wheel extends javax.swing.JFrame { public void check(MouseEvent e) { int r = mainTable.rowAtPoint(e.getPoint()); - if (r >= 0 && r < mainTable.getRowCount()) { - mainTable.setRowSelectionInterval(r, r); - } else { - mainTable.clearSelection(); - } +// if (r >= 0 && r < mainTable.getRowCount()) { +// mainTable.setRowSelectionInterval(r, r); +// } else { +// mainTable.clearSelection(); +// } int rowindex = mainTable.convertRowIndexToModel(mainTable.getSelectedRow()); if (rowindex < 0) {