From 274f9e755f174ea76133fe53ca5a6adbdc4c1241 Mon Sep 17 00:00:00 2001 From: BinHong Lee Date: Sat, 3 Jun 2017 17:22:35 -0700 Subject: [PATCH] Added edit options for books and users --- src/main/java/libsys/EditBookDialog.form | 127 +++++++++++++++ src/main/java/libsys/EditBookDialog.java | 152 +++++++++++++++++ src/main/java/libsys/EditUserDialog.form | 147 +++++++++++++++++ src/main/java/libsys/EditUserDialog.java | 198 +++++++++++++++++++++++ src/main/java/libsys/Main.java | 2 +- src/main/java/libsys/MainGUI.form | 93 +++++++---- src/main/java/libsys/MainGUI.java | 171 +++++++++++++------- src/main/java/libsys/User.java | 9 +- 8 files changed, 810 insertions(+), 89 deletions(-) create mode 100644 src/main/java/libsys/EditBookDialog.form create mode 100644 src/main/java/libsys/EditBookDialog.java create mode 100644 src/main/java/libsys/EditUserDialog.form create mode 100644 src/main/java/libsys/EditUserDialog.java diff --git a/src/main/java/libsys/EditBookDialog.form b/src/main/java/libsys/EditBookDialog.form new file mode 100644 index 0000000..a298626 --- /dev/null +++ b/src/main/java/libsys/EditBookDialog.form @@ -0,0 +1,127 @@ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/java/libsys/EditBookDialog.java b/src/main/java/libsys/EditBookDialog.java new file mode 100644 index 0000000..99b42a2 --- /dev/null +++ b/src/main/java/libsys/EditBookDialog.java @@ -0,0 +1,152 @@ +package libsys; + +public class EditBookDialog extends javax.swing.JDialog { + + public EditBookDialog(java.awt.Frame parent, boolean modal, Book book) { + super(parent, modal); + initComponents(); + this.book = book; + init(); + } + + @SuppressWarnings("unchecked") + // //GEN-BEGIN:initComponents + private void initComponents() { + + titleLbl = new javax.swing.JLabel(); + idLbl = new javax.swing.JLabel(); + nameLbl = new javax.swing.JLabel(); + nameTxtField = new javax.swing.JTextField(); + saveBtn = new javax.swing.JButton(); + cancelBtn = new javax.swing.JButton(); + statusLbl = new javax.swing.JLabel(); + dueDateLbl = new javax.swing.JLabel(); + + setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); + + titleLbl.setFont(new java.awt.Font("Lucida Grande", 0, 18)); // NOI18N + titleLbl.setText("Edit Book"); + + idLbl.setText("ID :"); + + nameLbl.setText("Name :"); + + saveBtn.setText("Save"); + saveBtn.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + saveBtnActionPerformed(evt); + } + }); + + cancelBtn.setText("Cancel"); + cancelBtn.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + cancelBtnActionPerformed(evt); + } + }); + + statusLbl.setText("Status :"); + + dueDateLbl.setText("Due Date :"); + + javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); + getContentPane().setLayout(layout); + layout.setHorizontalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(layout.createSequentialGroup() + .addContainerGap() + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(layout.createSequentialGroup() + .addComponent(saveBtn) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 68, Short.MAX_VALUE) + .addComponent(cancelBtn)) + .addGroup(layout.createSequentialGroup() + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(titleLbl) + .addComponent(idLbl) + .addComponent(statusLbl) + .addComponent(dueDateLbl)) + .addGap(0, 0, Short.MAX_VALUE)) + .addGroup(layout.createSequentialGroup() + .addComponent(nameLbl) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addComponent(nameTxtField))) + .addContainerGap()) + ); + layout.setVerticalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(layout.createSequentialGroup() + .addContainerGap() + .addComponent(titleLbl) + .addGap(18, 18, 18) + .addComponent(idLbl) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addComponent(statusLbl) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addComponent(dueDateLbl) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(nameLbl) + .addComponent(nameTxtField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 18, Short.MAX_VALUE) + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(saveBtn) + .addComponent(cancelBtn)) + .addContainerGap()) + ); + + pack(); + }// //GEN-END:initComponents + + private void cancelBtnActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cancelBtnActionPerformed + doClose(false); + }//GEN-LAST:event_cancelBtnActionPerformed + + private void saveBtnActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_saveBtnActionPerformed + doClose(true); + }//GEN-LAST:event_saveBtnActionPerformed + + private void init() + { + idLbl.setText("ID : " + (book.getId())); + dueDateLbl.setText("Due date : " + book.getDueDate()[0] + "/" + book.getDueDate()[1] + "/" + book.getDueDate()[2]); + statusLbl.setText("Status : " + book.getStatus()); + nameTxtField.setText(book.getTitle()); + } + + private void doClose(boolean toReturn) + { + if (toReturn) + { + returnStatus = toReturn; + newName = nameTxtField.getText(); + } + setVisible(false); + dispose(); + } + + public String getNewName() + { + return newName; + } + + public boolean getReturnStatus() + { + return returnStatus; + } + + // Variables declaration - do not modify//GEN-BEGIN:variables + private javax.swing.JButton cancelBtn; + private javax.swing.JLabel dueDateLbl; + private javax.swing.JLabel idLbl; + private javax.swing.JLabel nameLbl; + private javax.swing.JTextField nameTxtField; + private javax.swing.JButton saveBtn; + private javax.swing.JLabel statusLbl; + private javax.swing.JLabel titleLbl; + // End of variables declaration//GEN-END:variables + + private Book book; + private String newName; + private boolean returnStatus = false; +} diff --git a/src/main/java/libsys/EditUserDialog.form b/src/main/java/libsys/EditUserDialog.form new file mode 100644 index 0000000..168e9f1 --- /dev/null +++ b/src/main/java/libsys/EditUserDialog.form @@ -0,0 +1,147 @@ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/java/libsys/EditUserDialog.java b/src/main/java/libsys/EditUserDialog.java new file mode 100644 index 0000000..b3b3c3a --- /dev/null +++ b/src/main/java/libsys/EditUserDialog.java @@ -0,0 +1,198 @@ +package libsys; + +public class EditUserDialog extends javax.swing.JDialog { + + /** + * Creates new form EditUserDialog + */ + public EditUserDialog(java.awt.Frame parent, boolean modal, User user, BookFactory books) { + super(parent, modal); + this.user = user; + this.books = books; + initComponents(); + init(); + } + + /** + * This method is called from within the constructor to initialize the form. + * WARNING: Do NOT modify this code. The content of this method is always + * regenerated by the Form Editor. + */ + @SuppressWarnings("unchecked") + // //GEN-BEGIN:initComponents + private void initComponents() { + + titleLbl = new javax.swing.JLabel(); + idLbl = new javax.swing.JLabel(); + booksLbl = new javax.swing.JLabel(); + nameLbl = new javax.swing.JLabel(); + nameTxtField = new javax.swing.JTextField(); + limitTxtField = new javax.swing.JTextField(); + limitLbl = new javax.swing.JLabel(); + saveBtn = new javax.swing.JButton(); + cancelBtn = new javax.swing.JButton(); + errorLbl = new javax.swing.JLabel(); + + setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); + + titleLbl.setFont(new java.awt.Font("Lucida Grande", 0, 18)); // NOI18N + titleLbl.setText("Edit User"); + + idLbl.setText("ID :"); + + booksLbl.setText("Books :"); + + nameLbl.setText("Name :"); + + limitLbl.setText("Limit :"); + + saveBtn.setText("Save"); + saveBtn.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + saveBtnActionPerformed(evt); + } + }); + + cancelBtn.setText("Cancel"); + cancelBtn.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + cancelBtnActionPerformed(evt); + } + }); + + errorLbl.setVisible(false); + errorLbl.setText("Limit must be a number!"); + + javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); + getContentPane().setLayout(layout); + layout.setHorizontalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(layout.createSequentialGroup() + .addContainerGap() + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(layout.createSequentialGroup() + .addComponent(nameLbl) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addComponent(nameTxtField)) + .addGroup(layout.createSequentialGroup() + .addComponent(limitLbl) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addComponent(limitTxtField)) + .addGroup(layout.createSequentialGroup() + .addComponent(saveBtn) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 68, Short.MAX_VALUE) + .addComponent(cancelBtn)) + .addGroup(layout.createSequentialGroup() + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(booksLbl) + .addComponent(titleLbl) + .addComponent(idLbl) + .addComponent(errorLbl)) + .addGap(0, 0, Short.MAX_VALUE))) + .addContainerGap()) + ); + layout.setVerticalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(layout.createSequentialGroup() + .addContainerGap() + .addComponent(titleLbl) + .addGap(18, 18, 18) + .addComponent(idLbl) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addComponent(booksLbl) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(nameLbl) + .addComponent(nameTxtField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(limitLbl) + .addComponent(limitTxtField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 12, Short.MAX_VALUE) + .addComponent(errorLbl) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(saveBtn) + .addComponent(cancelBtn)) + .addContainerGap()) + ); + + pack(); + }// //GEN-END:initComponents + + private void saveBtnActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_saveBtnActionPerformed + doClose(true); + }//GEN-LAST:event_saveBtnActionPerformed + + private void cancelBtnActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cancelBtnActionPerformed + doClose(false); + }//GEN-LAST:event_cancelBtnActionPerformed + + private void init() + { + idLbl.setText("ID : " + (user.getId())); + String bookString = "Books : "; + int [] bookIds = user.bookStatus(); + for (int i = 0; i < bookIds.length; i++) + { + bookString += (books.getBook(bookIds[i]) + " "); + } + booksLbl.setText(bookString); + limitTxtField.setText(String.valueOf(user.getLimit())); + nameTxtField.setText(user.getName()); + } + + private void doClose(boolean toReturn) + { + if (toReturn) + { + try + { + newLimit = Integer.parseInt(limitTxtField.getText()); + } + catch (Exception e) + { + errorLbl.setVisible(true); + return; + } + returnStatus = toReturn; + newName = nameTxtField.getText(); + } + setVisible(false); + dispose(); + } + + public boolean getReturnStatus() + { + return returnStatus; + } + + public String getNewName() + { + return newName; + } + + public int getNewLimit() + { + return newLimit; + } + + // Variables declaration - do not modify//GEN-BEGIN:variables + private javax.swing.JLabel booksLbl; + private javax.swing.JButton cancelBtn; + private javax.swing.JLabel errorLbl; + private javax.swing.JLabel idLbl; + private javax.swing.JLabel limitLbl; + private javax.swing.JTextField limitTxtField; + private javax.swing.JLabel nameLbl; + private javax.swing.JTextField nameTxtField; + private javax.swing.JButton saveBtn; + private javax.swing.JLabel titleLbl; + // End of variables declaration//GEN-END:variables + + private User user; + private BookFactory books; + private boolean returnStatus; + private String newName; + private int newLimit; +} diff --git a/src/main/java/libsys/Main.java b/src/main/java/libsys/Main.java index b49ff33..08751db 100644 --- a/src/main/java/libsys/Main.java +++ b/src/main/java/libsys/Main.java @@ -1,7 +1,7 @@ package libsys; /* * Written by : Bin Hong Lee - * Last edited : 5/30/2017 + * Last edited : 6/2/2017 */ class Main diff --git a/src/main/java/libsys/MainGUI.form b/src/main/java/libsys/MainGUI.form index a02675b..94b36ad 100644 --- a/src/main/java/libsys/MainGUI.form +++ b/src/main/java/libsys/MainGUI.form @@ -33,9 +33,8 @@ - - + @@ -52,15 +51,12 @@ - - - - + - + @@ -68,30 +64,23 @@ + - - - - - - - - - - - - - - + + + + + + @@ -127,9 +116,13 @@ - - + + + + + + @@ -153,7 +146,10 @@ - + + + + @@ -198,6 +194,17 @@ + + + + + + + + + + + @@ -221,17 +228,23 @@ + - + + + + + + - + + - @@ -250,14 +263,19 @@ - - - + + + + + + + + - + - + @@ -325,6 +343,17 @@ + + + + + + + + + + + diff --git a/src/main/java/libsys/MainGUI.java b/src/main/java/libsys/MainGUI.java index 75b136d..8752513 100644 --- a/src/main/java/libsys/MainGUI.java +++ b/src/main/java/libsys/MainGUI.java @@ -10,6 +10,10 @@ public class MainGUI extends javax.swing.JFrame { Handler handler; Settings settings; + Book book; + User user; + boolean bookExist = false; + boolean userExist = false; public MainGUI(Handler handler, Settings settings) { @@ -32,6 +36,7 @@ public class MainGUI extends javax.swing.JFrame bookStatus = new javax.swing.JLabel(); bookID = new javax.swing.JLabel(); bookDueDate = new javax.swing.JLabel(); + editBookBtn = new javax.swing.JButton(); userPanel = new javax.swing.JPanel(); userMgtLabel = new javax.swing.JLabel(); userSearch = new javax.swing.JTextField(); @@ -42,6 +47,7 @@ public class MainGUI extends javax.swing.JFrame userBooks = new javax.swing.JLabel(); rentBtn = new javax.swing.JButton(); returnBtn = new javax.swing.JButton(); + editUserBtn = new javax.swing.JButton(); nameLabel = new javax.swing.JLabel(); createBookBtn = new javax.swing.JButton(); createUserBtn = new javax.swing.JButton(); @@ -70,6 +76,14 @@ public class MainGUI extends javax.swing.JFrame bookDueDate.setText("Due Date :"); + editBookBtn.setVisible(false); + editBookBtn.setText("Edit"); + editBookBtn.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + editBookBtnActionPerformed(evt); + } + }); + javax.swing.GroupLayout bookPanelLayout = new javax.swing.GroupLayout(bookPanel); bookPanel.setLayout(bookPanelLayout); bookPanelLayout.setHorizontalGroup( @@ -86,9 +100,12 @@ public class MainGUI extends javax.swing.JFrame .addComponent(bookTitle) .addComponent(bookStatus) .addComponent(bookMgtLabel) - .addComponent(bookID) - .addComponent(bookDueDate)) - .addGap(0, 229, Short.MAX_VALUE))) + .addComponent(bookID)) + .addGap(0, 214, Short.MAX_VALUE)) + .addGroup(bookPanelLayout.createSequentialGroup() + .addComponent(bookDueDate) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(editBookBtn))) .addContainerGap()) ); bookPanelLayout.setVerticalGroup( @@ -107,7 +124,9 @@ public class MainGUI extends javax.swing.JFrame .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(bookStatus) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addComponent(bookDueDate) + .addGroup(bookPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(bookDueDate) + .addComponent(editBookBtn)) .addContainerGap(88, Short.MAX_VALUE)) ); @@ -148,6 +167,14 @@ public class MainGUI extends javax.swing.JFrame }); returnBtn.setVisible(false); + editUserBtn.setVisible(false); + editUserBtn.setText("Edit"); + editUserBtn.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + editUserBtnActionPerformed(evt); + } + }); + javax.swing.GroupLayout userPanelLayout = new javax.swing.GroupLayout(userPanel); userPanel.setLayout(userPanelLayout); userPanelLayout.setHorizontalGroup( @@ -160,15 +187,19 @@ public class MainGUI extends javax.swing.JFrame .addComponent(userSearch) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(userSearchBtn)) + .addComponent(returnBtn, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addGroup(userPanelLayout.createSequentialGroup() .addGroup(userPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(userID) .addComponent(userMgtLabel) .addComponent(userName) - .addComponent(userBooks) + .addComponent(userBooks)) + .addGap(0, 219, Short.MAX_VALUE)) + .addGroup(userPanelLayout.createSequentialGroup() + .addGroup(userPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(userID) .addComponent(userLimit)) - .addGap(0, 234, Short.MAX_VALUE)) - .addComponent(returnBtn, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(editUserBtn))) .addContainerGap()) ); userPanelLayout.setVerticalGroup( @@ -183,14 +214,17 @@ public class MainGUI extends javax.swing.JFrame .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(userName) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addComponent(userID) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addComponent(userLimit) + .addGroup(userPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) + .addGroup(userPanelLayout.createSequentialGroup() + .addComponent(userID) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addComponent(userLimit)) + .addComponent(editUserBtn)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(userBooks) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 28, Short.MAX_VALUE) .addComponent(rentBtn) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(returnBtn) .addContainerGap()) ); @@ -228,9 +262,7 @@ public class MainGUI extends javax.swing.JFrame .addGroup(mainPanelLayout.createSequentialGroup() .addContainerGap() .addGroup(mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(mainPanelLayout.createSequentialGroup() - .addComponent(jTabbedPane) - .addContainerGap()) + .addComponent(jTabbedPane, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE) .addGroup(mainPanelLayout.createSequentialGroup() .addComponent(nameLabel) .addGap(0, 0, Short.MAX_VALUE)) @@ -239,24 +271,20 @@ public class MainGUI extends javax.swing.JFrame .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(createUserBtn, javax.swing.GroupLayout.PREFERRED_SIZE, 130, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(settingsBtn)))) + .addComponent(settingsBtn))) + .addContainerGap()) ); mainPanelLayout.setVerticalGroup( mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, mainPanelLayout.createSequentialGroup() - .addContainerGap() .addComponent(nameLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 59, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(jTabbedPane, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addGroup(mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(mainPanelLayout.createSequentialGroup() - .addGap(10, 10, 10) - .addGroup(mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(createBookBtn, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(createUserBtn, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))) - .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, mainPanelLayout.createSequentialGroup() - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(settingsBtn))) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(createBookBtn, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(createUserBtn, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(settingsBtn)) .addContainerGap()) ); @@ -272,33 +300,31 @@ public class MainGUI extends javax.swing.JFrame layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() - .addContainerGap() - .addComponent(mainPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(mainPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) ); pack(); }// //GEN-END:initComponents - private void returnBtnActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_returnBtnActionPerformed + private void settingsBtnActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_settingsBtnActionPerformed + SettingsDialog settingsUI = new SettingsDialog(this, true, settings); - User thisUser = handler.users.getUser(Integer.parseInt(userSearch.getText())); - ReturnDialog toReturnUI = new ReturnDialog(this, true, handler, thisUser.getId()); - toReturnUI.setVisible(true); - int toReturnID = toReturnUI.getReturnStatus(); + settingsUI.setVisible(true); - if (toReturnID != -1) + if (settingsUI.getReturnStatus() != -1) { - handler.returnBook(thisUser, handler.books.getBook(toReturnID)); - userSearchBtnActionPerformed(evt); - bookSearchBtnActionPerformed(evt); + settings.update(settings.getKey(0), settingsUI.getTitle()); + settings.update(settings.getKey(1), settingsUI.getUsersFilename()); + settings.update(settings.getKey(2), settingsUI.getBooksFilename()); + nameLabel.setText(settingsUI.getTitle()); } - }//GEN-LAST:event_returnBtnActionPerformed + }//GEN-LAST:event_settingsBtnActionPerformed private void createUserBtnActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_createUserBtnActionPerformed NewUserDialog newUserUI = new NewUserDialog(this, true); newUserUI.setVisible(true); - + if (newUserUI.getReturnStatus() != -1) { userSearch.setText(String.valueOf(handler.users.newUser(newUserUI.getName(), newUserUI.getLimit()).getId())); @@ -309,7 +335,7 @@ public class MainGUI extends javax.swing.JFrame private void createBookBtnActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_createBookBtnActionPerformed NewBookDialog newBookUI = new NewBookDialog(this, true); newBookUI.setVisible(true); - + if (newBookUI.getReturnStatus() != -1) { bookSearch.setText(String.valueOf(handler.books.newBook(newBookUI.getName(), newBookUI.getStatus()).getId())); @@ -317,22 +343,35 @@ public class MainGUI extends javax.swing.JFrame } }//GEN-LAST:event_createBookBtnActionPerformed - private void settingsBtnActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_settingsBtnActionPerformed - SettingsDialog settingsUI = new SettingsDialog(this, true, settings); + private void editUserBtnActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_editUserBtnActionPerformed + EditUserDialog editUserDialog = new EditUserDialog(this, true, user, handler.books); + editUserDialog.setVisible(true); - settingsUI.setVisible(true); + if (editUserDialog.getReturnStatus()) + { + User newUser = user; + user.setName(editUserDialog.getNewName()); + user.setLimit(editUserDialog.getNewLimit()); + } - if (settingsUI.getReturnStatus() != -1) + userSearchBtnActionPerformed(evt); + }//GEN-LAST:event_editUserBtnActionPerformed + + private void returnBtnActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_returnBtnActionPerformed + User thisUser = handler.users.getUser(Integer.parseInt(userSearch.getText())); + ReturnDialog toReturnUI = new ReturnDialog(this, true, handler, thisUser.getId()); + toReturnUI.setVisible(true); + int toReturnID = toReturnUI.getReturnStatus(); + + if (toReturnID != -1) { - settings.update(settings.getKey(0), settingsUI.getTitle()); - settings.update(settings.getKey(1), settingsUI.getUsersFilename()); - settings.update(settings.getKey(2), settingsUI.getBooksFilename()); - nameLabel.setText(settingsUI.getTitle()); + handler.returnBook(thisUser, handler.books.getBook(toReturnID)); + userSearchBtnActionPerformed(evt); + bookSearchBtnActionPerformed(evt); } - }//GEN-LAST:event_settingsBtnActionPerformed + }//GEN-LAST:event_returnBtnActionPerformed - private void rentBtnActionPerformed(java.awt.event.ActionEvent evt) - { + private void rentBtnActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_rentBtnActionPerformed User thisUser = handler.users.getUser(Integer.parseInt(userSearch.getText())); RentDialog toRentUI = new RentDialog(this, true, handler); toRentUI.setVisible(true); @@ -343,8 +382,20 @@ public class MainGUI extends javax.swing.JFrame handler.borrowBook(thisUser, handler.books.getBook(toRentID)); userSearchBtnActionPerformed(evt); bookSearchBtnActionPerformed(evt); + } }//GEN-LAST:event_rentBtnActionPerformed + + private void editBookBtnActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_editBookBtnActionPerformed + EditBookDialog editBookDialog = new EditBookDialog(this, true, book); + editBookDialog.setVisible(true); + + if (editBookDialog.getReturnStatus()) + { + Book newBook = book; + book.setTitle(editBookDialog.getNewName()); + handler.books.update(book, newBook); } - } + bookSearchBtnActionPerformed(evt); + }//GEN-LAST:event_editBookBtnActionPerformed private void bookSearchBtnActionPerformed(ActionEvent evt) { @@ -362,6 +413,9 @@ public class MainGUI extends javax.swing.JFrame { bookDueDate.setText("Due date : "); } + book = thisBook; + bookExist = true; + editBookBtn.setVisible(true); } catch (Exception e) { @@ -369,6 +423,8 @@ public class MainGUI extends javax.swing.JFrame bookTitle.setText(""); bookStatus.setText(""); bookDueDate.setText(""); + bookExist = false; + editBookBtn.setVisible(false); } } @@ -383,6 +439,9 @@ public class MainGUI extends javax.swing.JFrame userBooks.setText("Books : " + handler.bookIdsToTitlesString(thisUser.bookStatus())); rentBtn.setVisible(thisUser.status()); returnBtn.setVisible(thisUser.bookStatus().length > 0); + editUserBtn.setVisible(true); + user = thisUser; + userExist = true; } catch (Exception e) { @@ -392,6 +451,8 @@ public class MainGUI extends javax.swing.JFrame userBooks.setText(""); rentBtn.setVisible(false); returnBtn.setVisible(false); + userExist = false; + editUserBtn.setVisible(false); } } @@ -406,6 +467,8 @@ public class MainGUI extends javax.swing.JFrame private javax.swing.JLabel bookTitle; private javax.swing.JButton createBookBtn; private javax.swing.JButton createUserBtn; + private javax.swing.JButton editBookBtn; + private javax.swing.JButton editUserBtn; private javax.swing.JTabbedPane jTabbedPane; private javax.swing.JPanel mainPanel; private javax.swing.JLabel nameLabel; diff --git a/src/main/java/libsys/User.java b/src/main/java/libsys/User.java index 505c76e..37b2463 100644 --- a/src/main/java/libsys/User.java +++ b/src/main/java/libsys/User.java @@ -1,7 +1,7 @@ package libsys; /* * Written by : Bin Hong Lee - * Last edited : 5/28/2017 + * Last edited : 6/3/2017 */ import java.util.*; @@ -43,11 +43,16 @@ class User return limit; } - public void setName() + public void setName(String name) { this.name = name; } + public void setLimit(int limit) + { + this.limit = limit; + } + public boolean status() { if (books.size() < limit)