diff --git a/src/de/mpg/molgen/buczek/portifix/GridBagTest.java b/src/de/mpg/molgen/buczek/portifix/GridBagTest.java new file mode 100644 index 0000000..aa407ba --- /dev/null +++ b/src/de/mpg/molgen/buczek/portifix/GridBagTest.java @@ -0,0 +1,83 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package de.mpg.molgen.buczek.portifix; + +import java.awt.Color; +import java.awt.Component; +import java.awt.Container; +import java.awt.Graphics; +import java.awt.GridBagConstraints; +import java.awt.GridBagLayout; +import java.awt.Insets; +import javax.swing.BorderFactory; +import javax.swing.JButton; +import javax.swing.JLabel; +import javax.swing.JTextField; +import javax.swing.border.Border; + +/** + * + * @author buczek + */ +public class GridBagTest extends javax.swing.JFrame { + + Container pane; + + + public GridBagTest() { + pane=getContentPane(); + setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); + pane.setLayout(new GridBagLayout()); + addComponent(0,0,false,new JLabel("Bla:")); + addComponent(0,1,true, new JLabel("lalaalallaala")); + addComponent(1,0,false,new JLabel("Label:")); + addComponent(1,1,true, new JLabel("lalallaala")); + addComponent(2,0,false,new JLabel("Label:")); + addComponent(2,1,true, new JTextField()); + + addComponent(0,2,false,new JLabel(" ")); + + addComponent(0,3,false,new JLabel("Bla:")); + addComponent(0,4,true, new JLabel("lalaalallaala")); + addComponent(1,3,false,new JLabel("Label:")); + addComponent(1,4,true, new JLabel("lalallaala")); + addComponent(2,3,false,new JLabel("Label:")); + addComponent(2,4,true, new JTextField()); + + + + + pack(); + setVisible(true); + } + + public static void main(String args[]) { + java.awt.EventQueue.invokeLater(new Runnable() { + public void run() { + new GridBagTest(); + } + }); + } + + + GridBagConstraints constraints=new GridBagConstraints(); + + private void addComponent(int row,int col,boolean fill,Component component) { + constraints.gridx=col; + constraints.gridy=row; + constraints.fill=fill ? GridBagConstraints.HORIZONTAL : GridBagConstraints.NONE; + // constraints.fill=GridBagConstraints.HORIZONTAL; + constraints.weightx=fill ? 1 : 0; + constraints.weighty=0; + constraints.anchor=GridBagConstraints.LINE_START; + //constraints.ipadx=10; + //constraints.ipady=10; + constraints.insets=new Insets(5,10,5,10); + pane.add(component,constraints); + } + + +} diff --git a/src/de/mpg/molgen/buczek/portifix/Gui.form b/src/de/mpg/molgen/buczek/portifix/Gui.form index 9ee0a8b..84c43f0 100644 --- a/src/de/mpg/molgen/buczek/portifix/Gui.form +++ b/src/de/mpg/molgen/buczek/portifix/Gui.form @@ -51,24 +51,21 @@ - - + - - - - - - - - - - - + + + + + + + - + + + @@ -79,24 +76,17 @@ - - - - - - - - - + + + - + - - - - + + + - + @@ -108,19 +98,19 @@ - - - - - - - - - - - - - + + + + + + + + + + + + + @@ -128,19 +118,20 @@ - - + + - + - - + + + @@ -156,65 +147,107 @@ - - - - - - + - + - + - + + + + + + + - - - - - - - - - - + - + - - - - + - + + - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/de/mpg/molgen/buczek/portifix/Gui.java b/src/de/mpg/molgen/buczek/portifix/Gui.java index e1cf357..666420a 100644 --- a/src/de/mpg/molgen/buczek/portifix/Gui.java +++ b/src/de/mpg/molgen/buczek/portifix/Gui.java @@ -71,7 +71,12 @@ private String[] columnValuesOfSelection(int col) { int selected[] = jTable1.getSelectedRows(); String[] ret = new String[selected.length]; for (int i = 0; i < selected.length; i++) { - ret[i] = tableModel.getValueAt(jTable1.convertRowIndexToModel(selected[i]), col).toString(); + Object o=tableModel.getValueAt(jTable1.convertRowIndexToModel(selected[i]), col); + if (o==null) { + ret[i] = ""; + } else { + ret[i]=o.toString(); + } } return ret; } @@ -101,70 +106,111 @@ private static void setTreeEnabled(Component component, boolean enabled) { } } + /** + * no String.join() in Java 1.7 + * @param delim + * @param s1 + * @param s2 + * @return + */ + private String join(String delim,String s1,String s2) { + if (s1!=null && s1.length()>0) { + if (s2!=null && s2.length()>0) { + return s1+delim+s2; + } else { + return s1; + } + } else { + return s2; + } + } + + + + + + + + + private void updateForm() { int selected[] = jTable1.getSelectedRows(); if (selected.length == 0) { - jTextField_datum.setEnabled(false); + textField_datum.setEnabled(false); } else { String[] name = new String[selected.length]; + String[] exemplar = new String[selected.length]; for (int i = 0; i < name.length; i++) { int mi = jTable1.convertRowIndexToModel(selected[i]); - name[i] = tableModel.getValueAt(mi, 1) + " " + tableModel.getValueAt(mi, 0); + name[i]=join(" ",(String)tableModel.getValueAt(mi,TableModel.COLUMN_VORNAME),(String)tableModel.getValueAt(mi,TableModel.COLUMN_NACHNAME)); + exemplar[i]=join (" # ",(String)tableModel.getValueAt(mi,TableModel.COLUMN_SCHLUESSELNUMMER),(String)tableModel.getValueAt(mi,TableModel.COLUMN_EXEMPLARNUMMER)); } - jLabel_name.setText(singleColumnValueOfArray(name)); - jLabel_abteilung.setText(singleColumnValueOfSelection(2)); - jLabel_schluessel.setText(singleColumnValueOfSelection(4)); - jTextField_datum.setText(singleColumnValueOfSelection(3)); - jTextField_datum.setEnabled(true); + + label_name.setText(singleColumnValueOfArray(name)); + label_abteilung.setText(singleColumnValueOfSelection(TableModel.COLUMN_ABTEILUNG)); + label_schluessel.setText(singleColumnValueOfArray(exemplar)); + textField_datum.setText(singleColumnValueOfSelection(TableModel.COLUMN_RUECKGABEDATUM)); + textField_datum.setEnabled(true); + textField_endedatum.setText(singleColumnValueOfSelection(TableModel.COLUMN_ENDEDATUM)); + textField_endedatum.setEnabled(true); + } } - private void startEdit() { + private final int EDIT_MODE_PERSON=1; + private final int EDIT_MODE_EXEMPLAR=2; + + private int edit_mode; + + private void startEdit(int edit_mode) { + this.edit_mode=edit_mode; jTable1.setEnabled(false); // setTreeEnabled(jTable1, false); - jButton_refresh.setEnabled(false); - jButton_saveall.setEnabled(true); - jButton_savethis.setEnabled(true); - jButton_cancel.setEnabled(true); + button_refresh.setEnabled(false); + button_ok.setEnabled(true); + button_cancel.setEnabled(true); } private void stopEdit() { jTable1.setEnabled(true); // setTreeEnabled(jTable1, true); - jButton_refresh.setEnabled(true); - jButton_saveall.setEnabled(false); - jButton_savethis.setEnabled(false); - jButton_cancel.setEnabled(false); + button_refresh.setEnabled(true); + button_ok.setEnabled(false); + button_cancel.setEnabled(false); jTable1.requestFocus(); updateForm(); } private void saveThis() { + System.out.printf("Edit mode : %d\n", edit_mode); int selected[] = jTable1.getSelectedRows(); - try { - String s = jTextField_datum.getText(); - Date d = MyDateFormat.parse(s); - System.out.printf(" %s --> %s\n", s, d); - for (int i = 0; i < selected.length; i++) { - tableModel.setNewDateThis(jTable1.convertRowIndexToModel(selected[i]), d); - } - } catch (ParseException exception) { - // invalid date string. keep old values - } - } - private void saveAll() { - int selected[] = jTable1.getSelectedRows(); - try { - String s = jTextField_datum.getText(); - Date d = MyDateFormat.parse(s); - System.out.printf(" %s --> %s\n", s, d); - for (int i = 0; i < selected.length; i++) { - tableModel.setNewDateAll(jTable1.convertRowIndexToModel(selected[i]), d); + if (edit_mode == EDIT_MODE_EXEMPLAR) { + try { + String s = textField_datum.getText(); + Date d = MyDateFormat.parse(s); + System.out.printf(" %s --> %s\n", s, d); + for (int i = 0; i < selected.length; i++) { + tableModel.setNewDateThis(jTable1.convertRowIndexToModel(selected[i]), d); + } + } catch (ParseException exception) { + // invalid date string. keep old values + } + } else if (edit_mode == EDIT_MODE_PERSON) { + try { + String s = textField_endedatum.getText(); + Date d = MyDateFormat.parse(s); + System.out.printf(" %s --> %s\n", s, d); + for (int i = 0; i < selected.length; i++) { + tableModel.setNewDatePerson(jTable1.convertRowIndexToModel(selected[i]), d); + } + } catch (ParseException exception) { + // invalid date string. keep old values } - } catch (ParseException exception) { - // invalid date string. keep old values + + } else { + throw new Error("internal error"); } } @@ -180,12 +226,16 @@ public void run() { tableModel = new TableModel(); initComponents(); - jTable1.addMouseListener(popupListener); + label_name.setText(""); + label_abteilung.setText(""); + label_schluessel.setText(""); + textField_datum.setText(""); + textField_endedatum.setText(""); + textField_datum.setEnabled(false); + textField_endedatum.setEnabled(false); - Properties p = new Properties(); - p.setProperty("text.today", "today"); - p.setProperty("text.month", "month"); - p.setProperty("text.year", "year"); + + jTable1.addMouseListener(popupListener); jTable1.getSelectionModel().addListSelectionListener(new ListSelectionListener() { @Override @@ -194,13 +244,6 @@ public void valueChanged(ListSelectionEvent e) { } }); - /* - jTable1.addMouseListener(new MouseAdapter(){ - public void mouseClicked(MouseEvent e) { - stopEdit(); - } - }); - */ /* default JTable.DateRenderer uses a Date Format we dont like ( "Feb 20, 1962") . So we set a DefaultTableCellRenderer for Date (and derived classes) which uses toString(). Our MyDate class has @@ -208,52 +251,66 @@ a toString() which produces a format we like (eg "20.02.1962"). */ jTable1.setDefaultRenderer(java.util.Date.class, new DefaultTableCellRenderer()); - jTextField_datum.addActionListener(new ActionListener() { - + textField_datum.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { - saveAll(); + saveThis(); stopEdit(); } }); - jTextField_datum.addFocusListener(new FocusListener() { + textField_datum.addFocusListener(new FocusListener() { + @Override + public void focusGained(FocusEvent e) { + if (textField_datum.getText().equals("...")) { + textField_datum.setText(""); + } + startEdit(EDIT_MODE_EXEMPLAR); + } + @Override + public void focusLost(FocusEvent e) { + } + }); + + + textField_endedatum.addFocusListener(new FocusListener() { @Override public void focusGained(FocusEvent e) { - if (jTextField_datum.getText().equals("...")) { - jTextField_datum.setText(""); + if (textField_endedatum.getText().equals("...")) { + textField_endedatum.setText(""); } - startEdit(); + startEdit(EDIT_MODE_PERSON); } @Override public void focusLost(FocusEvent e) { } }); - - jButton_cancel.addActionListener(new ActionListener() { + + + button_cancel.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { stopEdit(); } }); - jButton_savethis.addActionListener(new ActionListener() { + button_ok.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { saveThis(); stopEdit(); } }); - jButton_saveall.addActionListener(new ActionListener() { + + button_refresh.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { - saveAll(); - stopEdit(); + filltable(); } }); - - getRootPane().setDefaultButton(jButton_saveall); + + getRootPane().setDefaultButton(button_ok); // Action copy=jTable1.getActionMap().get("copy"); popupMenu.add(new AbstractAction("copy") { @@ -265,6 +322,8 @@ public void actionPerformed(ActionEvent e) { } }); + + updateForm(); } @@ -282,16 +341,18 @@ private void initComponents() { jPanel2 = new javax.swing.JPanel(); jLabel1 = new javax.swing.JLabel(); jLabel3 = new javax.swing.JLabel(); + jLabel2 = new javax.swing.JLabel(); + label_name = new javax.swing.JLabel(); + label_abteilung = new javax.swing.JLabel(); + textField_endedatum = new javax.swing.JTextField(); + button_cancel = new javax.swing.JButton(); + button_refresh = new javax.swing.JButton(); + button_ok = new javax.swing.JButton(); + jPanel3 = new javax.swing.JPanel(); + label_schluessel = new javax.swing.JLabel(); jLabel5 = new javax.swing.JLabel(); - jLabel_schluessel = new javax.swing.JLabel(); - jLabel_name = new javax.swing.JLabel(); - jLabel_abteilung = new javax.swing.JLabel(); - jButton_saveall = new javax.swing.JButton(); - jButton_cancel = new javax.swing.JButton(); - jButton_refresh = new javax.swing.JButton(); - jButton_savethis = new javax.swing.JButton(); jLabel7 = new javax.swing.JLabel(); - jTextField_datum = new javax.swing.JTextField(); + textField_datum = new javax.swing.JTextField(); jScrollPane1 = new javax.swing.JScrollPane(); jTable1 = new javax.swing.JTable(); @@ -304,115 +365,130 @@ private void initComponents() { jLabel3.setText("Abteilung:"); - jLabel5.setText("Schlüssel:"); + jLabel2.setText("Ende Datum:"); - jLabel_schluessel.setText("Schlüssel"); + label_name.setText("Donald Buczek"); + label_name.setToolTipText(""); - jLabel_name.setText("Donald Buczek"); - jLabel_name.setToolTipText(""); + label_abteilung.setText("Allgemein"); - jLabel_abteilung.setText("Allgemein"); + textField_endedatum.setColumns(10); + textField_endedatum.setText("01.01.1988"); javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2); jPanel2.setLayout(jPanel2Layout); jPanel2Layout.setHorizontalGroup( jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel2Layout.createSequentialGroup() - .addComponent(jLabel3) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addComponent(jLabel_abteilung, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) - .addGroup(jPanel2Layout.createSequentialGroup() - .addComponent(jLabel5) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addComponent(jLabel_schluessel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) - .addGroup(jPanel2Layout.createSequentialGroup() - .addComponent(jLabel1) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addComponent(jLabel_name, javax.swing.GroupLayout.DEFAULT_SIZE, 292, Short.MAX_VALUE)) + .addContainerGap() + .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jLabel1) + .addComponent(jLabel3) + .addComponent(jLabel2)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) + .addComponent(textField_endedatum, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(label_name, javax.swing.GroupLayout.DEFAULT_SIZE, 162, Short.MAX_VALUE) + .addComponent(label_abteilung, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + .addContainerGap(56, Short.MAX_VALUE)) ); - jPanel2Layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {jLabel1, jLabel3, jLabel5}); + jPanel2Layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {jLabel1, jLabel3}); jPanel2Layout.setVerticalGroup( jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel2Layout.createSequentialGroup() .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(jLabel1) - .addComponent(jLabel_name)) + .addComponent(label_name) + .addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 16, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel3) - .addComponent(jLabel_abteilung)) + .addComponent(label_abteilung)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(jLabel5) - .addComponent(jLabel_schluessel))) + .addComponent(jLabel2) + .addComponent(textField_endedatum, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); - jButton_saveall.setText("Speichern
(alle Schlüssel dieser Person)"); - jButton_saveall.setEnabled(false); - jButton_saveall.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - jButton_saveallActionPerformed(evt); - } - }); + button_cancel.setText("Cancel"); + button_cancel.setEnabled(false); - jButton_cancel.setText("Cancel"); - jButton_cancel.setEnabled(false); + button_refresh.setText("Refresh"); - jButton_refresh.setText("Refresh"); - jButton_refresh.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - jButton_refreshActionPerformed(evt); - } - }); + button_ok.setText("OK"); + button_ok.setActionCommand("OK"); + button_ok.setEnabled(false); - jButton_savethis.setText("Speichern
(nur diese Schlüssel)"); - jButton_savethis.setEnabled(false); + label_schluessel.setText("Schlüssel"); + + jLabel5.setText("Schlüssel:"); jLabel7.setText("Rückgabe bis:"); + textField_datum.setColumns(10); + textField_datum.setText("01.01.1988"); + + javax.swing.GroupLayout jPanel3Layout = new javax.swing.GroupLayout(jPanel3); + jPanel3.setLayout(jPanel3Layout); + jPanel3Layout.setHorizontalGroup( + jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel3Layout.createSequentialGroup() + .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jLabel7) + .addComponent(jLabel5)) + .addGap(4, 4, 4) + .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(textField_datum, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(label_schluessel, javax.swing.GroupLayout.DEFAULT_SIZE, 159, Short.MAX_VALUE))) + ); + jPanel3Layout.setVerticalGroup( + jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel3Layout.createSequentialGroup() + .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(label_schluessel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(jLabel5)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(jLabel7) + .addComponent(textField_datum, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addGap(34, 34, 34)) + ); + javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1); jPanel1.setLayout(jPanel1Layout); jPanel1Layout.setHorizontalGroup( jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel1Layout.createSequentialGroup() - .addContainerGap() .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(jPanel1Layout.createSequentialGroup() - .addComponent(jButton_saveall, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addGap(18, 18, 18) - .addComponent(jButton_savethis, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addGap(18, 18, 18) - .addComponent(jButton_cancel, javax.swing.GroupLayout.PREFERRED_SIZE, 78, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(jButton_refresh)) .addGroup(jPanel1Layout.createSequentialGroup() .addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(jLabel7) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(jTextField_datum, javax.swing.GroupLayout.PREFERRED_SIZE, 122, javax.swing.GroupLayout.PREFERRED_SIZE))) + .addComponent(jPanel3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addGap(0, 38, Short.MAX_VALUE)) + .addGroup(jPanel1Layout.createSequentialGroup() + .addContainerGap() + .addComponent(button_ok) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(button_cancel, javax.swing.GroupLayout.PREFERRED_SIZE, 78, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(button_refresh))) .addContainerGap()) ); jPanel1Layout.setVerticalGroup( jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup() .addContainerGap() - .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addGroup(jPanel1Layout.createSequentialGroup() - .addGap(99, 99, 99) - .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(jLabel7) - .addComponent(jTextField_datum, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) + .addComponent(jPanel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(jPanel3, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(jButton_saveall, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(jButton_savethis, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(jButton_cancel) - .addComponent(jButton_refresh)) - .addContainerGap()) + .addComponent(button_ok) + .addComponent(button_cancel) + .addComponent(button_refresh)) + .addGap(0, 0, 0)) ); jSplitPane1.setTopComponent(jPanel1); @@ -437,14 +513,6 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { pack(); }// //GEN-END:initComponents - private void jButton_refreshActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton_refreshActionPerformed - filltable(); - }//GEN-LAST:event_jButton_refreshActionPerformed - - private void jButton_saveallActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton_saveallActionPerformed - // TODO add your handling code here: - }//GEN-LAST:event_jButton_saveallActionPerformed - /** * @param args the command line arguments * @throws java.sql.SQLException @@ -467,23 +535,25 @@ public void run() { } // Variables declaration - do not modify//GEN-BEGIN:variables - private javax.swing.JButton jButton_cancel; - private javax.swing.JButton jButton_refresh; - private javax.swing.JButton jButton_saveall; - private javax.swing.JButton jButton_savethis; + private javax.swing.JButton button_cancel; + private javax.swing.JButton button_ok; + private javax.swing.JButton button_refresh; private javax.swing.JLabel jLabel1; + private javax.swing.JLabel jLabel2; private javax.swing.JLabel jLabel3; private javax.swing.JLabel jLabel5; private javax.swing.JLabel jLabel7; - private javax.swing.JLabel jLabel_abteilung; - private javax.swing.JLabel jLabel_name; - private javax.swing.JLabel jLabel_schluessel; private javax.swing.JPanel jPanel1; private javax.swing.JPanel jPanel2; + private javax.swing.JPanel jPanel3; private javax.swing.JScrollPane jScrollPane1; private javax.swing.JSplitPane jSplitPane1; private javax.swing.JTable jTable1; - private javax.swing.JTextField jTextField_datum; + private javax.swing.JLabel label_abteilung; + private javax.swing.JLabel label_name; + private javax.swing.JLabel label_schluessel; + private javax.swing.JTextField textField_datum; + private javax.swing.JTextField textField_endedatum; // End of variables declaration//GEN-END:variables private final JPopupMenu popupMenu = new JPopupMenu(); diff --git a/src/de/mpg/molgen/buczek/portifix/MyDate.java b/src/de/mpg/molgen/buczek/portifix/MyDate.java index d83dc9d..beb5093 100644 --- a/src/de/mpg/molgen/buczek/portifix/MyDate.java +++ b/src/de/mpg/molgen/buczek/portifix/MyDate.java @@ -8,10 +8,10 @@ import java.util.Date; /** - * - * This is a java.util.Date object - * The toString() method has been modified, so that it stringifies to "xx-xx-xxxx" - * + * + * This is a java.util.Date object The toString() method has been modified, so + * that it stringifies to "xx-xx-xxxx" + * * @author buczek */ public class MyDate extends Date { @@ -20,10 +20,11 @@ public class MyDate extends Date { public String toString() { return MyDateFormat.format(this); } - + public MyDate(Date d) { setTime(d.getTime()); } - - public MyDate() {} + + public MyDate() { + } } diff --git a/src/de/mpg/molgen/buczek/portifix/TableModel.java b/src/de/mpg/molgen/buczek/portifix/TableModel.java index 2a3cc2a..79af27a 100644 --- a/src/de/mpg/molgen/buczek/portifix/TableModel.java +++ b/src/de/mpg/molgen/buczek/portifix/TableModel.java @@ -23,28 +23,70 @@ public class TableModel extends AbstractTableModel { Connection con; + + public final static int COLUMN_NACHNAME=0; + public final static int COLUMN_VORNAME=1; + public final static int COLUMN_ABTEILUNG=2; + public final static int COLUMN_ENDEDATUM=3; + public final static int COLUMN_SCHLUESSELNUMMER=4; + public final static int COLUMN_EXEMPLARNUMMER=5; + public final static int COLUMN_RUECKGABEDATUM=6; + + public final static int COLUMN_VISIBLE_COUNT=7; + + public final static int COLUMN_AUSAGBE_ID=7; + public final static int COLUMN_EXEMPLAR_ID=8; + public final static int COLUMN_PERSONAL_ID=9; + + public final static int COLUMN_COUNT=10; + private final String COLUMN_NAMES[] = { "Nachname", "Vorname", "Abteilung", - "Rückgabedatum", + "Ende Datum", "Schlüsselnummer", "Exemplarnummer", + "Rückgabedatum", "Ausgabe ID", "Exemplar ID", - "Personal ID", - "Rueckgabetermin Uhr",}; - + "Personal ID" + }; + + private final Class COLUMN_CLASS[] = { + String.class, + String.class, + String.class, + MyDate.class, + String.class, + String.class, + MyDate.class, + String.class, + String.class, + String.class, + }; + + + + final private String SQL - = "select NAME_1,NAME_2,ABTEILUNG,RUECKGABETERMINDATUM,AUSGABE.SCHLUESSELNUMMER," - + "EXEMPLARNUMMER,AUSGABE_ID,AUSGABE.EXEMPLAR_ID,AUSGABE.PERSONAL_ID,RUECKGABETERMINUHR" + = "select NAME_1,NAME_2,ABTEILUNG,ENDEDATUM,RUECKGABETERMINDATUM,AUSGABE.SCHLUESSELNUMMER," + + "EXEMPLARNUMMER,AUSGABE_ID,AUSGABE.EXEMPLAR_ID,AUSGABE.PERSONAL_ID" + " from AUSGABE,PERSONAL,EXEMPLAR" + " where AUSGABE.PERSONAL_ID=PERSONAL.PERSONAL_ID" + " and AUSGABE.EXEMPLAR_ID=EXEMPLAR.EXEMPLAR_ID" + " AND rueckgabetermindatum is not null" + " order by rueckgabetermindatum"; + final private String SQL_ALL + = "select NAME_1,NAME_2,ABTEILUNG,ENDEDATUM,RUECKGABETERMINDATUM,AUSGABE.SCHLUESSELNUMMER," + + "EXEMPLARNUMMER,AUSGABE_ID,AUSGABE.EXEMPLAR_ID,AUSGABE.PERSONAL_ID" + + " from AUSGABE,PERSONAL,EXEMPLAR" + + " where AUSGABE.PERSONAL_ID=PERSONAL.PERSONAL_ID" + + " and AUSGABE.EXEMPLAR_ID=EXEMPLAR.EXEMPLAR_ID" + + " order by NAME_2"; + protected ArrayList row = new ArrayList(100); @Override @@ -54,8 +96,8 @@ public int getRowCount() { @Override public int getColumnCount() { - return 6; - //return 10; + return COLUMN_VISIBLE_COUNT; + // return CO:LUMN_COUNT; } @Override @@ -68,104 +110,84 @@ public String getColumnName(int column) { return COLUMN_NAMES[column]; } - @Override - public Class getColumnClass(int c) { - if (c == 3) { - return Date.class; - } else { - return String.class; - } + public Class getColumnClass(int column) { + return COLUMN_CLASS[column]; + } + + private static boolean SHOW_ALL = true; + private MyDate upgradeOptionalDate(Date d) { + return d == null ? null : new MyDate(d); } - - - void populate() throws SQLException { + + void populate() throws SQLException { System.out.println("populate\n"); row.clear(); Statement statement = con.createStatement(); - ResultSet resultSet = statement.executeQuery(SQL); + ResultSet resultSet = statement.executeQuery(SHOW_ALL ? SQL_ALL : SQL); while (resultSet.next()) { - String name_1 = resultSet.getString(1); - String name_2 = resultSet.getString(2); - String abteilung = resultSet.getString(3); - Date rueckgabetermin = new MyDate(resultSet.getDate(4)); - String schluesselnummer = resultSet.getString(5); - String exemplarnummer = resultSet.getString(6); - String ausgabe_ID = resultSet.getString(7); - String exemplar_ID = resultSet.getString(8); - String personal_ID = resultSet.getString(9); - String rueckgabeterminUhr = resultSet.getString(10); - Object row[] = new Object[10]; - row[0] = name_1; - row[1] = name_2; - row[2] = abteilung; - row[3] = rueckgabetermin; - row[4] = schluesselnummer; - row[5] = exemplarnummer; - row[6] = ausgabe_ID; - row[7] = exemplar_ID; - row[8] = personal_ID; - row[9] = rueckgabeterminUhr; + row[COLUMN_NACHNAME] = resultSet.getString(1); // name_1 vorname + row[COLUMN_VORNAME] = resultSet.getString(2); // name_2 nachname + row[COLUMN_ABTEILUNG] = resultSet.getString(3); // abteilung + row[COLUMN_ENDEDATUM] = upgradeOptionalDate(resultSet.getDate(4)); // endedatum (person) + row[COLUMN_RUECKGABEDATUM] = upgradeOptionalDate(resultSet.getDate(5)); // rueckgabetermin (ausgabe) + row[COLUMN_SCHLUESSELNUMMER] = resultSet.getString(6); // schluesselnummer + row[COLUMN_EXEMPLARNUMMER] = resultSet.getString(7); // exemplarnummer + row[COLUMN_AUSAGBE_ID] = resultSet.getString(8); // ausgabeid + row[COLUMN_EXEMPLAR_ID] = resultSet.getString(9); // exemplarid + row[COLUMN_PERSONAL_ID] = resultSet.getString(10); // personalid this.row.add(row); } this.fireTableDataChanged(); } public boolean isCellEditable(int rowIndex, int columnIndex) { - if (columnIndex == 3) { - return true; - } else { return false; - } } - private static final String UPDATE_STATEMENT= - "UPDATE AUSGABE " + private static final String UPDATE_STATEMENT + = "UPDATE AUSGABE " + " SET rueckgabetermindatum=?" + " WHERE EXEMPLAR_ID=?" + " AND PERSONAL_ID=?"; - void setNewDateThis(int rowIndex, Date newDate) { PreparedStatement statement; try { statement = con.prepareStatement(UPDATE_STATEMENT); - statement.setDate(1,new java.sql.Date(newDate.getTime())); - statement.setString(2,(String)getValueAt(rowIndex,7)); - statement.setString(3,(String)getValueAt(rowIndex,8)); - int i=statement.executeUpdate(); - System.out.printf ("%d rows updated\n",i); + statement.setDate(1, new java.sql.Date(newDate.getTime())); + statement.setString(2, (String) getValueAt(rowIndex, COLUMN_EXEMPLAR_ID)); + statement.setString(3, (String) getValueAt(rowIndex, COLUMN_PERSONAL_ID)); + int i = statement.executeUpdate(); + System.out.printf("%d rows updated\n", i); populate(); } catch (SQLException ex) { Logger.getLogger(TableModel.class.getName()).log(Level.SEVERE, null, ex); - } + } } - private static final String UPDATE_ALL_STATEMENT= - "UPDATE AUSGABE " - + " SET rueckgabetermindatum=?" - + " WHERE PERSONAL_ID=?"; - - - void setNewDateAll(int rowIndex, Date newDate) { + private static final String UPDATE_STATEMENT_PERSON + = "update PERSONAL " + + " set ENDEDATUM=?" + + " where PERSONAL_ID=?"; + void setNewDatePerson(int rowIndex, Date newDate) { PreparedStatement statement; try { - statement = con.prepareStatement(UPDATE_ALL_STATEMENT); - statement.setDate(1,new java.sql.Date(newDate.getTime())); - statement.setString(2,(String)getValueAt(rowIndex,8)); - int i=statement.executeUpdate(); - System.out.printf ("%d rows updated to %s %s\n",i,newDate,new java.sql.Date(newDate.getTime())); + statement = con.prepareStatement(UPDATE_STATEMENT_PERSON); + statement.setDate(1, new java.sql.Date(newDate.getTime())); + statement.setString(2, (String) getValueAt(rowIndex, COLUMN_PERSONAL_ID)); + int i = statement.executeUpdate(); + System.out.printf("%d rows updated\n", i); populate(); } catch (SQLException ex) { Logger.getLogger(TableModel.class.getName()).log(Level.SEVERE, null, ex); - } + } } - public void setConnection(Connection c) { - this.con=c; + this.con = c; } - + }