diff --git a/kBorrow.ucls b/kBorrow.ucls
index bc111b9..4bb436f 100644
--- a/kBorrow.ucls
+++ b/kBorrow.ucls
@@ -55,16 +55,7 @@
-
-
-
-
-
-
-
-
-
-
-
-
+
@@ -109,7 +100,7 @@
-
-
-
-
+
@@ -145,7 +136,7 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
-
+
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
-
-
+
-
-
+
+
+
+
+
+
-
+
-
-
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/de/katho/kBorrow/controller/ArticleController.java b/src/de/katho/kBorrow/controller/ArticleController.java
index 153009a..7a7739f 100644
--- a/src/de/katho/kBorrow/controller/ArticleController.java
+++ b/src/de/katho/kBorrow/controller/ArticleController.java
@@ -1,15 +1,20 @@
package de.katho.kBorrow.controller;
+import java.util.HashMap;
+
import de.katho.kBorrow.db.DbConnector;
import de.katho.kBorrow.models.ArticleModel;
+import de.katho.kBorrow.models.FreeArticleModel;
public class ArticleController {
private DbConnector dbCon;
private ArticleModel articleModel;
+ private FreeArticleModel freeArticleModel;
- public ArticleController(DbConnector pDbCon, ArticleModel pModel){
+ public ArticleController(DbConnector pDbCon, HashMap pModels){
dbCon = pDbCon;
- articleModel = pModel;
+ articleModel = (ArticleModel)pModels.get("articlemodel");
+ freeArticleModel = (FreeArticleModel)pModels.get("freearticlemodel");
}
/**
@@ -24,7 +29,8 @@ public class ArticleController {
public int createArticle(String pName, String pDesc) {
int status = dbCon.createArticle(pName, pDesc);
- articleModel.updateTable();
+ articleModel.updateModel();
+ freeArticleModel.updateModel();
return status;
}
@@ -43,11 +49,8 @@ public class ArticleController {
int status = this.dbCon.editArticle(pId, pName, pDesc);
if(status == 0){
- int row = articleModel.getRowFromId(pId);
-
- articleModel.getArticleByRow(row).setName(pName);
- articleModel.getArticleByRow(row).setDescription(pDesc);
- articleModel.fireTableRowsUpdated(row, row);
+ articleModel.updateModel();
+ freeArticleModel.updateModel();
}
return status;
@@ -61,8 +64,8 @@ public class ArticleController {
*/
public boolean deleteArticle(int id) {
if(this.dbCon.deleteArticle(id)){
- int row = articleModel.getRowFromId(id);
- articleModel.removeRow(row);
+ articleModel.updateModel();
+ freeArticleModel.updateModel();
return true;
}
diff --git a/src/de/katho/kBorrow/controller/NewLendingController.java b/src/de/katho/kBorrow/controller/NewLendingController.java
new file mode 100644
index 0000000..ebd1754
--- /dev/null
+++ b/src/de/katho/kBorrow/controller/NewLendingController.java
@@ -0,0 +1,5 @@
+package de.katho.kBorrow.controller;
+
+public class NewLendingController {
+
+}
diff --git a/src/de/katho/kBorrow/controller/UserController.java b/src/de/katho/kBorrow/controller/UserController.java
index 8d854b1..c8f21a3 100644
--- a/src/de/katho/kBorrow/controller/UserController.java
+++ b/src/de/katho/kBorrow/controller/UserController.java
@@ -1,22 +1,28 @@
package de.katho.kBorrow.controller;
+import java.util.HashMap;
+
import de.katho.kBorrow.db.DbConnector;
import de.katho.kBorrow.models.UserModel;
+import de.katho.kBorrow.models.UserListModel;
public class UserController {
private DbConnector dbCon;
private UserModel userModel;
+ private UserListModel userListModel;
- public UserController(DbConnector pDbCon, UserModel pModel) {
+ public UserController(DbConnector pDbCon, HashMap pModels) {
dbCon = pDbCon;
- userModel = pModel;
+ userModel = (UserModel)pModels.get("usermodel");
+ userListModel = (UserListModel)pModels.get("userlistmodel");
}
public int createUser(String pName, String pSurname){
int status = dbCon.createUser(pName, pSurname);
- userModel.updateTable();
+ userModel.updateModel();
+ userListModel.updateModel();
return status;
}
@@ -25,11 +31,8 @@ public class UserController {
int status = dbCon.editUser(pId, pName, pSurname);
if(status == 0){
- int row = userModel.getRowFromId(pId);
-
- userModel.getUserByRow(row).setName(pName);
- userModel.getUserByRow(row).setSurname(pSurname);
- userModel.fireTableRowsUpdated(row, row);
+ userModel.updateModel();
+ userListModel.updateModel();
}
return status;
@@ -37,9 +40,8 @@ public class UserController {
public boolean deleteUser(int id){
if(dbCon.deleteUser(id)){
- int row = userModel.getRowFromId(id);
-
- userModel.removeRow(row);
+ userModel.updateModel();
+ userListModel.updateModel();
return true;
}
diff --git a/src/de/katho/kBorrow/gui/ArticlePanel.java b/src/de/katho/kBorrow/gui/ArticlePanel.java
index 70d4503..ef9d5ae 100644
--- a/src/de/katho/kBorrow/gui/ArticlePanel.java
+++ b/src/de/katho/kBorrow/gui/ArticlePanel.java
@@ -9,6 +9,7 @@ import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.io.IOException;
+import java.util.HashMap;
import java.util.Vector;
import javax.swing.BorderFactory;
@@ -31,7 +32,6 @@ import de.katho.kBorrow.models.ArticleModel;
public class ArticlePanel extends JPanel implements ActionListener, KeyListener {
private static final long serialVersionUID = -8511924597640457608L;
- private ArticleModel articleModel;
private ArticleController articleController;
private JTextArea textAreaArticleDescription;
private JTextField textFieldArticleName;
@@ -40,16 +40,18 @@ public class ArticlePanel extends JPanel implements ActionListener, KeyListener
private JLabel lblArticleStatus;
private boolean articleModeEdit;
private int articleEditId;
+ private ArticleModel articleModel;
/**
* Create the panel.
* @throws IOException
*/
- public ArticlePanel(final DbConnector dbCon) throws IOException {
+ public ArticlePanel(final DbConnector dbCon, HashMap pModels) throws IOException {
super();
this.setLayout(null);
- articleModel = new ArticleModel(dbCon);
- articleController = new ArticleController(dbCon, articleModel);
+ articleModel = (ArticleModel)pModels.get("articlemodel");
+
+ articleController = new ArticleController(dbCon, pModels);
/*
* Tabelle und drumherum
diff --git a/src/de/katho/kBorrow/gui/MainWindow.java b/src/de/katho/kBorrow/gui/MainWindow.java
index 462c5fe..e4a8367 100644
--- a/src/de/katho/kBorrow/gui/MainWindow.java
+++ b/src/de/katho/kBorrow/gui/MainWindow.java
@@ -9,11 +9,16 @@ import javax.swing.UnsupportedLookAndFeelException;
import java.awt.BorderLayout;
import java.io.IOException;
import java.sql.SQLException;
+import java.util.HashMap;
import de.katho.kBorrow.Settings;
import de.katho.kBorrow.db.DbConnector;
import de.katho.kBorrow.db.SqlConnector;
import de.katho.kBorrow.db.SqliteConnector;
+import de.katho.kBorrow.models.ArticleModel;
+import de.katho.kBorrow.models.FreeArticleModel;
+import de.katho.kBorrow.models.UserModel;
+import de.katho.kBorrow.models.UserListModel;
public class MainWindow {
@@ -26,6 +31,7 @@ public class MainWindow {
private Settings set;
+ private HashMap models;
/**
* Create the application.
@@ -51,12 +57,18 @@ public class MainWindow {
}
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
+ models = new HashMap();
+ models.put("usermodel", new UserModel(dbCon));
+ models.put("userlistmodel", new UserListModel(dbCon));
+ models.put("articlemodel", new ArticleModel(dbCon));
+ models.put("freearticlemodel", new FreeArticleModel(dbCon));
+
this.tabbedPane = new JTabbedPane(JTabbedPane.TOP);
this.frame.getContentPane().add(this.tabbedPane, BorderLayout.CENTER);
- this.tabbedPane.addTab("Neue Ausleihe", new PanelNewLending(this.dbCon));
- this.tabbedPane.addTab("Ausleihen verwalten", new PanelManageLendings(this.dbCon));
- this.tabbedPane.addTab("Artikel verwalten", new ArticlePanel(this.dbCon));
- this.tabbedPane.addTab("Benutzer verwalten", new UserPanel(this.dbCon));
+ this.tabbedPane.addTab("Neue Ausleihe", new NewLendingPanel(this.dbCon, models));
+ this.tabbedPane.addTab("Ausleihen verwalten", new ManageLendingsPanel(this.dbCon, models));
+ this.tabbedPane.addTab("Artikel verwalten", new ArticlePanel(this.dbCon, models));
+ this.tabbedPane.addTab("Benutzer verwalten", new UserPanel(this.dbCon, models));
}
catch(ClassNotFoundException | InstantiationException | IllegalAccessException | IOException | UnsupportedLookAndFeelException | SQLException e) {
diff --git a/src/de/katho/kBorrow/gui/PanelManageLendings.java b/src/de/katho/kBorrow/gui/ManageLendingsPanel.java
similarity index 57%
rename from src/de/katho/kBorrow/gui/PanelManageLendings.java
rename to src/de/katho/kBorrow/gui/ManageLendingsPanel.java
index 0b0ff9e..92fdd9a 100644
--- a/src/de/katho/kBorrow/gui/PanelManageLendings.java
+++ b/src/de/katho/kBorrow/gui/ManageLendingsPanel.java
@@ -1,10 +1,12 @@
package de.katho.kBorrow.gui;
+import java.util.HashMap;
+
import javax.swing.JPanel;
import de.katho.kBorrow.db.DbConnector;
-public class PanelManageLendings extends JPanel {
+public class ManageLendingsPanel extends JPanel {
/**
*
@@ -15,7 +17,7 @@ public class PanelManageLendings extends JPanel {
* Create the panel.
* @param dbCon
*/
- public PanelManageLendings(DbConnector dbCon) {
+ public ManageLendingsPanel(DbConnector dbCon, HashMap pModels) {
}
diff --git a/src/de/katho/kBorrow/gui/PanelNewLending.java b/src/de/katho/kBorrow/gui/NewLendingPanel.java
similarity index 88%
rename from src/de/katho/kBorrow/gui/PanelNewLending.java
rename to src/de/katho/kBorrow/gui/NewLendingPanel.java
index 9856371..6cd6a73 100644
--- a/src/de/katho/kBorrow/gui/PanelNewLending.java
+++ b/src/de/katho/kBorrow/gui/NewLendingPanel.java
@@ -5,6 +5,7 @@ import javax.swing.JPanel;
import de.katho.kBorrow.db.DbConnector;
import de.katho.kBorrow.listener.NewLendingTableButton;
import de.katho.kBorrow.models.FreeArticleModel;
+import de.katho.kBorrow.models.UserListModel;
import javax.swing.border.TitledBorder;
import javax.swing.JScrollPane;
@@ -12,6 +13,7 @@ import javax.swing.JTable;
import java.awt.BorderLayout;
import java.io.IOException;
+import java.util.HashMap;
import javax.swing.JLabel;
import javax.swing.JComboBox;
@@ -22,7 +24,7 @@ import javax.swing.UIManager;
import java.awt.Color;
-public class PanelNewLending extends JPanel {
+public class NewLendingPanel extends JPanel {
/**
*
@@ -32,17 +34,20 @@ public class PanelNewLending extends JPanel {
private JTextField tfName;
private JTextField tfSurname;
private JTextField tfStudentNumber;
+ private UserListModel userListModel;
/**
* Create the panel.
* @param dbCon
* @throws IOException
*/
- public PanelNewLending(final DbConnector dbCon) throws IOException {
- this.setLayout(null);
+ public NewLendingPanel(final DbConnector dbCon, HashMap pModel) throws IOException {
+ setLayout(null);
// FreeArticleTable
- this.freeArticleModel = new FreeArticleModel(dbCon);
+ freeArticleModel = (FreeArticleModel)pModel.get("freearticlemodel");
+ userListModel = (UserListModel)pModel.get("userlistmodel");
+
JTable freeArticleTable = new JTable(freeArticleModel);
freeArticleTable.setRowHeight(30);
@@ -101,7 +106,7 @@ public class PanelNewLending extends JPanel {
lblBenutzer.setBounds(350, 20, 70, 20);
panelNewLending.add(lblBenutzer);
- JComboBox comboBox = new JComboBox();
+ JComboBox comboBox = new JComboBox(userListModel);
comboBox.setBounds(430, 20, 130, 20);
panelNewLending.add(comboBox);
diff --git a/src/de/katho/kBorrow/gui/UserPanel.java b/src/de/katho/kBorrow/gui/UserPanel.java
index e417993..753d928 100644
--- a/src/de/katho/kBorrow/gui/UserPanel.java
+++ b/src/de/katho/kBorrow/gui/UserPanel.java
@@ -7,6 +7,7 @@ import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.io.IOException;
+import java.util.HashMap;
import java.util.Vector;
import javax.swing.JButton;
@@ -37,11 +38,11 @@ public class UserPanel extends JPanel implements ActionListener, KeyListener {
private UserModel userModel;
private UserController userController;
- public UserPanel(final DbConnector dbCon) throws IOException{
+ public UserPanel(final DbConnector dbCon, HashMap pModels) throws IOException{
super();
- this.setLayout(null);
- this.userModel = new UserModel(dbCon);
- this.userController = new UserController(dbCon, this.userModel);
+ setLayout(null);
+ userModel = (UserModel)pModels.get("usermodel");
+ userController = new UserController(dbCon, pModels);
//Tabelle und drumherum
JTable userTable = new JTable(userModel);
diff --git a/src/de/katho/kBorrow/listener/NewLendingTableButton.java b/src/de/katho/kBorrow/listener/NewLendingTableButton.java
index 139b81e..05ddb72 100644
--- a/src/de/katho/kBorrow/listener/NewLendingTableButton.java
+++ b/src/de/katho/kBorrow/listener/NewLendingTableButton.java
@@ -9,7 +9,7 @@ import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JTable;
-import de.katho.kBorrow.gui.PanelNewLending;
+import de.katho.kBorrow.gui.NewLendingPanel;
import de.katho.kBorrow.models.FreeArticleModel;
public class NewLendingTableButton extends TableButton {
@@ -19,7 +19,7 @@ public class NewLendingTableButton extends TableButton {
*/
private static final long serialVersionUID = 7492272258718253745L;
- public NewLendingTableButton(String pLabel, final JTable pTable, final PanelNewLending pPanel) throws IOException {
+ public NewLendingTableButton(String pLabel, final JTable pTable, final NewLendingPanel pPanel) throws IOException {
super(pLabel);
ImageIcon icon = new ImageIcon(ImageIO.read(new File("assets/icons/go-down.png")));
diff --git a/src/de/katho/kBorrow/models/ArticleModel.java b/src/de/katho/kBorrow/models/ArticleModel.java
index 5b15041..978622c 100644
--- a/src/de/katho/kBorrow/models/ArticleModel.java
+++ b/src/de/katho/kBorrow/models/ArticleModel.java
@@ -20,17 +20,16 @@ public class ArticleModel extends AbstractTableModel {
public ArticleModel(DbConnector pDbCon){
header = new String [] {"ID", "Artikelname", "Artikelbeschreibung", "", ""};
this.dbCon = pDbCon;
- this.updateTable();
+ this.updateModel();
}
public String getColumnName(int index){
return header[index];
}
- public void updateTable() {
+ public void updateModel() {
this.data = this.dbCon.getArticleList();
- this.fireTableDataChanged();
-
+ this.fireTableDataChanged();
}
public int getColumnCount() {
@@ -46,17 +45,17 @@ public class ArticleModel extends AbstractTableModel {
public Object getValueAt(int pRow, int pCol) {
switch(pCol){
case 0:
- return String.valueOf(this.data.get(pRow).getId());
+ return String.valueOf(data.get(pRow).getId());
case 1:
- return this.data.get(pRow).getName();
+ return data.get(pRow).getName();
case 2:
- return this.data.get(pRow).getDescription();
+ return data.get(pRow).getDescription();
default:
return null;
- }
+ }
}
public boolean isCellEditable(int pRow, int pCol){
@@ -107,17 +106,7 @@ public class ArticleModel extends AbstractTableModel {
}
return -1;
}
-
- /**
- * Entfernt die gegebene Zeile aus der ArrayList
- *
- * @param pRow Zeile, die gelöscht wird.
- */
- public void removeRow(int pRow){
- data.remove(pRow);
- fireTableRowsDeleted(pRow, pRow);
- }
-
+
/**
* Gibt das Article-Objekt der übergebenen Zeile zurück.
*
diff --git a/src/de/katho/kBorrow/models/FreeArticleModel.java b/src/de/katho/kBorrow/models/FreeArticleModel.java
index 2e426fb..00b8a3d 100644
--- a/src/de/katho/kBorrow/models/FreeArticleModel.java
+++ b/src/de/katho/kBorrow/models/FreeArticleModel.java
@@ -14,10 +14,10 @@ public class FreeArticleModel extends ArticleModel {
super(pDbCon);
this.header = new String[] {"ID", "Artikelname", "Artikelbeschreibung", ""};
- updateTable();
+ updateModel();
}
- public void updateTable(){
+ public void updateModel(){
data = dbCon.getFreeArticleList();
fireTableDataChanged();
}
diff --git a/src/de/katho/kBorrow/models/UserListModel.java b/src/de/katho/kBorrow/models/UserListModel.java
new file mode 100644
index 0000000..8641eff
--- /dev/null
+++ b/src/de/katho/kBorrow/models/UserListModel.java
@@ -0,0 +1,78 @@
+package de.katho.kBorrow.models;
+
+import java.util.ArrayList;
+import java.util.Vector;
+
+import javax.swing.DefaultComboBoxModel;
+
+import de.katho.kBorrow.data.KUser;
+import de.katho.kBorrow.db.DbConnector;
+
+public class UserListModel extends DefaultComboBoxModel {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = -8653066929273274524L;
+ private DbConnector dbCon;
+ private Vector list;
+ private KUser selectedItem = null;
+
+ public UserListModel(DbConnector pDbCon){
+ super();
+ dbCon = pDbCon;
+ updateModel();
+ }
+
+
+ public void updateModel() {
+ list = new Vector();
+ ArrayList data = dbCon.getUserList();
+
+ for(KUser elem : data){
+ list.add(elem);
+ }
+
+ setSelectedItem(list.firstElement());
+ fireIntervalAdded(this, 0, list.size()-1);
+ }
+
+ public void setSelectedItem(KUser object) {
+ if(selectedItem == null && object == null) return;
+ if(selectedItem != null && selectedItem.equals(object)) return;
+ if(object!= null && getIndexOf(object) == -1) return;
+
+ selectedItem = object;
+ fireContentsChanged(this, -1, -1);
+ }
+
+ public String getSelectedItem(){
+ if(selectedItem != null ) return selectedItem.getName()+" "+selectedItem.getSurname();
+ return "";
+ }
+
+ public String getElementAt(int index){
+ if(index < 0 || index >= list.size()) return null;
+
+ KUser obj = list.elementAt(index);
+ return obj.getName()+" "+obj.getSurname();
+ }
+
+ public int getSize(){
+ return list.size();
+ }
+
+ public void addElement(KUser object) {
+ list.addElement(object);
+ int index = list.size() - 1;
+ fireIntervalAdded(this, index, index);
+
+ if (list.size() == 1 && selectedItem == null)
+ setSelectedItem(object);
+ }
+
+ public int getIndexOf(KUser obj){
+ return list.indexOf(obj);
+ }
+}
+
diff --git a/src/de/katho/kBorrow/models/UserModel.java b/src/de/katho/kBorrow/models/UserModel.java
index ca66c00..33f03b6 100644
--- a/src/de/katho/kBorrow/models/UserModel.java
+++ b/src/de/katho/kBorrow/models/UserModel.java
@@ -18,8 +18,8 @@ public class UserModel extends AbstractTableModel {
private ArrayList data = new ArrayList();
public UserModel(DbConnector pDbCon){
- this.dbCon = pDbCon;
- this.updateTable();
+ dbCon = pDbCon;
+ updateModel();
}
@Override
@@ -53,9 +53,9 @@ public class UserModel extends AbstractTableModel {
return header[index];
}
- public void updateTable(){
- this.data = this.dbCon.getUserList();
- this.fireTableDataChanged();
+ public void updateModel(){
+ data = dbCon.getUserList();
+ fireTableDataChanged();
}
// Die Funktion muss differenzierter werden
@@ -97,12 +97,5 @@ public class UserModel extends AbstractTableModel {
if(elem.getId() == pId) return elem;
}
return null;
- }
-
- public void removeRow(int pRow){
- data.remove(pRow);
- fireTableRowsDeleted(pRow, pRow);
- }
-
-
+ }
}