From d04ccb51230fd79274f0fd09aad3f453603b7546 Mon Sep 17 00:00:00 2001 From: Servicepoint Date: Tue, 21 Oct 2014 17:32:13 +0200 Subject: [PATCH] =?UTF-8?q?Habe=20angefangen,=20die=20Artikeltabelle=20und?= =?UTF-8?q?=20die=20zugeh=C3=B6rigen=20Klassen,=20die=20TableModel,=20Butt?= =?UTF-8?q?ons=20und=20Artikelklasse=20zu=20implementieren.=20Die=20Button?= =?UTF-8?q?s=20werden=20nun=20von=20einer=20Elternklasse=20geerbt,=20um=20?= =?UTF-8?q?doppelten=20Code=20zu=20vermeiden.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/de/katho/kBorrow/data/KArticle.java | 34 ++++++++ src/de/katho/kBorrow/db/DbConnector.java | 2 + src/de/katho/kBorrow/db/SqlConnector.java | 7 ++ src/de/katho/kBorrow/db/SqliteConnector.java | 22 +++++ .../katho/kBorrow/gui/ArticleTableModel.java | 85 +++++++++++++++++++ src/de/katho/kBorrow/gui/MainWindow.java | 58 +++++++++++-- .../kBorrow/gui/UserEditTableButton.java | 59 ------------- .../ArticleDeleteTableButton.java} | 35 ++++---- .../listener/ArticleEditTableButton.java | 35 ++++++++ .../katho/kBorrow/listener/TableButton.java | 36 ++++++++ .../listener/UserDeleteTableButton.java | 31 +++++++ .../kBorrow/listener/UserEditTableButton.java | 37 ++++++++ 12 files changed, 358 insertions(+), 83 deletions(-) create mode 100644 src/de/katho/kBorrow/data/KArticle.java create mode 100644 src/de/katho/kBorrow/gui/ArticleTableModel.java delete mode 100644 src/de/katho/kBorrow/gui/UserEditTableButton.java rename src/de/katho/kBorrow/{gui/UserDeleteTableButton.java => listener/ArticleDeleteTableButton.java} (50%) create mode 100644 src/de/katho/kBorrow/listener/ArticleEditTableButton.java create mode 100644 src/de/katho/kBorrow/listener/TableButton.java create mode 100644 src/de/katho/kBorrow/listener/UserDeleteTableButton.java create mode 100644 src/de/katho/kBorrow/listener/UserEditTableButton.java diff --git a/src/de/katho/kBorrow/data/KArticle.java b/src/de/katho/kBorrow/data/KArticle.java new file mode 100644 index 0000000..a0adc64 --- /dev/null +++ b/src/de/katho/kBorrow/data/KArticle.java @@ -0,0 +1,34 @@ +package de.katho.kBorrow.data; + +public class KArticle { + private int id; + private String name; + private String description; + + public KArticle(int pId, String pName, String pDesc) { + this.id = pId; + this.name = pName; + this.description = pDesc; + } + + public int getId() { + return this.id; + } + + public String getName() { + return this.name; + } + + public String getDescription() { + return this.description; + } + + public void setName(String pName){ + this.name = pName; + } + + public void setDescription(String pDesc){ + this.description = pDesc; + } + +} diff --git a/src/de/katho/kBorrow/db/DbConnector.java b/src/de/katho/kBorrow/db/DbConnector.java index f0388b4..eeecc14 100644 --- a/src/de/katho/kBorrow/db/DbConnector.java +++ b/src/de/katho/kBorrow/db/DbConnector.java @@ -2,6 +2,7 @@ package de.katho.kBorrow.db; import java.util.ArrayList; +import de.katho.kBorrow.data.KArticle; import de.katho.kBorrow.data.KUser; public interface DbConnector { @@ -10,5 +11,6 @@ public interface DbConnector { public ArrayList getUserList(); public boolean deleteUser(int id); public int editUser(int pId, String pName, String pSurname); + public ArrayList getArticleList(); } diff --git a/src/de/katho/kBorrow/db/SqlConnector.java b/src/de/katho/kBorrow/db/SqlConnector.java index 93088ee..5dde47b 100644 --- a/src/de/katho/kBorrow/db/SqlConnector.java +++ b/src/de/katho/kBorrow/db/SqlConnector.java @@ -2,6 +2,7 @@ package de.katho.kBorrow.db; import java.util.ArrayList; +import de.katho.kBorrow.data.KArticle; import de.katho.kBorrow.data.KUser; public class SqlConnector implements DbConnector{ @@ -34,5 +35,11 @@ public class SqlConnector implements DbConnector{ // TODO Auto-generated method stub return 0; } + + @Override + public ArrayList getArticleList() { + // TODO Auto-generated method stub + return null; + } } diff --git a/src/de/katho/kBorrow/db/SqliteConnector.java b/src/de/katho/kBorrow/db/SqliteConnector.java index adb90ea..4b865fd 100644 --- a/src/de/katho/kBorrow/db/SqliteConnector.java +++ b/src/de/katho/kBorrow/db/SqliteConnector.java @@ -12,6 +12,7 @@ import java.util.ArrayList; import java.util.Hashtable; import java.util.Map.Entry; +import de.katho.kBorrow.data.KArticle; import de.katho.kBorrow.data.KUser; /** @@ -239,6 +240,27 @@ public class SqliteConnector implements DbConnector { } } + @Override + public ArrayList getArticleList() { + ArrayList artArr = new ArrayList(); + + try { + Statement st = this.connection.createStatement(); + String query = "SELECT id, name, description FROM article"; + ResultSet rs = st.executeQuery(query); + + while (rs.next()){ + artArr.add(new KArticle(rs.getInt("id"), rs.getString("name"), rs.getString("description"))); + } + + return artArr; + } + catch (SQLException ex){ + ex.printStackTrace(); + return null; + } + } + @Override public int editUser(int pId, String pName, String pSurname) { if(pName.isEmpty() && pSurname.isEmpty()) return 2; diff --git a/src/de/katho/kBorrow/gui/ArticleTableModel.java b/src/de/katho/kBorrow/gui/ArticleTableModel.java new file mode 100644 index 0000000..79748fb --- /dev/null +++ b/src/de/katho/kBorrow/gui/ArticleTableModel.java @@ -0,0 +1,85 @@ +package de.katho.kBorrow.gui; + +import java.util.ArrayList; + +import javax.swing.table.AbstractTableModel; + +import de.katho.kBorrow.data.KArticle; +import de.katho.kBorrow.db.DbConnector; + +public class ArticleTableModel extends AbstractTableModel { + + /** + * + */ + private static final long serialVersionUID = -1860949772989116745L; + private DbConnector dbCon; + private String[] header = {"ID", "Artikelname", "Artikelbeschreibung", "", ""}; + private ArrayList data = new ArrayList(); + + public ArticleTableModel(DbConnector pDbCon){ + this.dbCon = pDbCon; + this.updateTable(); + } + + public String getColumnName(int index){ + return header[index]; + } + + private void updateTable() { + this.data = this.dbCon.getArticleList(); + this.fireTableDataChanged(); + + } + + @Override + public int getColumnCount() { + return this.header.length; + } + + @Override + public int getRowCount() { + return this.data.size(); + } + + @Override + public Object getValueAt(int pRow, int pCol) { + switch(pCol){ + case 0: + return String.valueOf(this.data.get(pRow).getId()); + + case 1: + return this.data.get(pRow).getName(); + + case 2: + return this.data.get(pRow).getDescription(); + + default: + return null; + } + } + + public boolean isCellEditable(int pRow, int pCol){ + if (pCol > 2) return true; + return false; + } + + public int getArticleId(int row) { + // TODO Auto-generated method stub + return 0; + } + + public String getArticleName(int pRow){ + return ""; + } + + public String getArticleDescription(int pRow){ + return null; + } + + public void deleteArticle(int id) { + // TODO Auto-generated method stub + + } + +} diff --git a/src/de/katho/kBorrow/gui/MainWindow.java b/src/de/katho/kBorrow/gui/MainWindow.java index 2d904f0..cb1b11f 100644 --- a/src/de/katho/kBorrow/gui/MainWindow.java +++ b/src/de/katho/kBorrow/gui/MainWindow.java @@ -11,7 +11,6 @@ import java.awt.BorderLayout; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTextField; -import javax.swing.border.Border; import javax.swing.border.TitledBorder; import javax.swing.JLabel; import javax.swing.JButton; @@ -20,6 +19,10 @@ import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import de.katho.kBorrow.db.DbConnector; +import de.katho.kBorrow.listener.ArticleDeleteTableButton; +import de.katho.kBorrow.listener.ArticleEditTableButton; +import de.katho.kBorrow.listener.UserDeleteTableButton; +import de.katho.kBorrow.listener.UserEditTableButton; import javax.swing.JTable; @@ -33,6 +36,7 @@ public class MainWindow implements ActionListener { private DbConnector dbCon; private boolean userModeEdit = false; + private boolean articleModeEdit = false; private int editId; private JFrame frame; @@ -46,6 +50,7 @@ public class MainWindow implements ActionListener { private JLabel lblUserStatus; private JTable userTable; private UserTableModel userTableModel; + private ArticleTableModel articleTableModel; private JScrollPane scrollUserList; private JPanel panelUserList; private JButton btnUserCancel; @@ -54,6 +59,10 @@ public class MainWindow implements ActionListener { private JScrollPane scrollArticleList; private JTable articleTable; private JTextField textFieldArticleName; + private JButton btnArticleSave; + private JButton btnArticleCancel; + private JTextArea textAreaArticleDescription; + /** @@ -92,9 +101,18 @@ public class MainWindow implements ActionListener { private void initArticleTab() { JPanel panelArticle = new JPanel(); - articleTable = new JTable(); + articleTableModel = new ArticleTableModel(this.dbCon); + articleTable = new JTable(articleTableModel); panelArticleList = new JPanel(); + ArticleDeleteTableButton articleDeleteTableButton = new ArticleDeleteTableButton("Löschen", this.articleTable); + articleTable.getColumnModel().getColumn(4).setCellEditor(articleDeleteTableButton); + articleTable.getColumnModel().getColumn(4).setCellRenderer(articleDeleteTableButton); + + ArticleEditTableButton articleEditTableButton = new ArticleEditTableButton("Bearbeiten", this.articleTable, this); + articleTable.getColumnModel().getColumn(3).setCellEditor(articleEditTableButton); + articleTable.getColumnModel().getColumn(3).setCellRenderer(articleEditTableButton); + this.tabbedPane.addTab("Artikel verwalten", null, panelArticle, null); panelArticle.setLayout(null); @@ -126,12 +144,24 @@ public class MainWindow implements ActionListener { panelArticleEdit.add(textFieldArticleName); textFieldArticleName.setColumns(10); - JTextArea textAreaArticleDescription = new JTextArea(5, 30); - textAreaArticleDescription.setFont(new Font("Tahoma", Font.PLAIN, 11)); - textAreaArticleDescription.setLineWrap(true); - textAreaArticleDescription.setBounds(90, 59, 250, 100); - textAreaArticleDescription.setBorder(BorderFactory.createEtchedBorder()); - panelArticleEdit.add(textAreaArticleDescription); + this.textAreaArticleDescription = new JTextArea(5, 30); + this.textAreaArticleDescription.setFont(new Font("Tahoma", Font.PLAIN, 11)); + this.textAreaArticleDescription.setLineWrap(true); + this.textAreaArticleDescription.setBounds(90, 59, 250, 100); + this.textAreaArticleDescription.setBorder(BorderFactory.createEtchedBorder()); + panelArticleEdit.add(this.textAreaArticleDescription); + + this.btnArticleSave = new JButton("Speichern"); + this.btnArticleSave.addActionListener(this); + this.btnArticleSave.setBounds(490, 136, 89, 23); + panelArticleEdit.add(this.btnArticleSave); + + this.btnArticleCancel = new JButton("Abbrechen"); + this.btnArticleCancel.addActionListener(this); + this.btnArticleCancel.setBounds(490, 102, 89, 23); + panelArticleEdit.add(this.btnArticleCancel); + + } @@ -262,5 +292,17 @@ public class MainWindow implements ActionListener { this.textFieldUserName.setText(""); this.textFieldUserSurname.setText(""); } + + if(e.getSource() == this.btnArticleCancel){ + this.articleModeEdit = false; + this.textFieldArticleName.setText(""); + this.textAreaArticleDescription.setText(""); + } + } + + public void setModeEditArticle(int articleId, String articleName, + String articleDescription) { + // TODO Auto-generated method stub + } } diff --git a/src/de/katho/kBorrow/gui/UserEditTableButton.java b/src/de/katho/kBorrow/gui/UserEditTableButton.java deleted file mode 100644 index 47a5a4a..0000000 --- a/src/de/katho/kBorrow/gui/UserEditTableButton.java +++ /dev/null @@ -1,59 +0,0 @@ -package de.katho.kBorrow.gui; - -import java.awt.Component; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; - -import javax.swing.AbstractCellEditor; -import javax.swing.JButton; -import javax.swing.JTable; -import javax.swing.table.TableCellEditor; -import javax.swing.table.TableCellRenderer; - -public class UserEditTableButton extends AbstractCellEditor implements TableCellRenderer, TableCellEditor { - - /** - * - */ - private static final long serialVersionUID = -886584066497429394L; - - private JButton buttonR; - private JButton buttonE; - private String label; - private MainWindow mainwindow; - private UserTableModel model; - private JTable table; - - public UserEditTableButton(String pLabel, JTable pTable, MainWindow pMainWindow){ - this.label = pLabel; - this.table = pTable; - this.model = (UserTableModel)pTable.getModel(); - this.mainwindow = pMainWindow; - this.buttonR = new JButton(pLabel); - this.buttonE = new JButton(pLabel); - - this.buttonE.addActionListener(new ActionListener(){ - public void actionPerformed(ActionEvent e){ - fireEditingStopped(); - - int row = table.getSelectedRow(); - - mainwindow.setModeEditUser(model.getUserId(row), model.getUserName(row), model.getUserSurname(row)); - } - }); - - } - - public Object getCellEditorValue() { - return this.label; - } - - public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) { - return this.buttonE; - } - - public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { - return this.buttonR; - } - -} diff --git a/src/de/katho/kBorrow/gui/UserDeleteTableButton.java b/src/de/katho/kBorrow/listener/ArticleDeleteTableButton.java similarity index 50% rename from src/de/katho/kBorrow/gui/UserDeleteTableButton.java rename to src/de/katho/kBorrow/listener/ArticleDeleteTableButton.java index efb426a..9e51ad2 100644 --- a/src/de/katho/kBorrow/gui/UserDeleteTableButton.java +++ b/src/de/katho/kBorrow/listener/ArticleDeleteTableButton.java @@ -1,4 +1,4 @@ -package de.katho.kBorrow.gui; +package de.katho.kBorrow.listener; import java.awt.Component; import java.awt.event.ActionEvent; @@ -10,48 +10,51 @@ import javax.swing.JTable; import javax.swing.table.TableCellEditor; import javax.swing.table.TableCellRenderer; -public class UserDeleteTableButton extends AbstractCellEditor implements TableCellRenderer, TableCellEditor { +import de.katho.kBorrow.gui.ArticleTableModel; + +public class ArticleDeleteTableButton extends AbstractCellEditor implements TableCellRenderer, TableCellEditor { /** * */ - private static final long serialVersionUID = -886584066497429394L; - + private static final long serialVersionUID = 7701712368979056068L; private JButton buttonR; private JButton buttonE; private String label; private JTable table; - private UserTableModel model; - - public UserDeleteTableButton(String pLabel, JTable pTable){ + private ArticleTableModel model; + + public ArticleDeleteTableButton(String pLabel, JTable pTable) { this.label = pLabel; this.table = pTable; - this.model = (UserTableModel) pTable.getModel(); + this.model = (ArticleTableModel) pTable.getModel(); this.buttonR = new JButton(pLabel); this.buttonE = new JButton(pLabel); - + this.buttonE.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ fireEditingStopped(); int row = table.getSelectedRow(); - int id = model.getUserId(row); - - model.deleteUser(id); + int id = model.getArticleId(row); + + model.deleteArticle(id); } }); - } - + + @Override public Object getCellEditorValue() { return this.label; } - public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) { + @Override + public Component getTableCellEditorComponent(JTable arg0, Object arg1, boolean arg2, int arg3, int arg4) { return this.buttonE; } - public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { + @Override + public Component getTableCellRendererComponent(JTable arg0, Object arg1, boolean arg2, boolean arg3, int arg4, int arg5) { return this.buttonR; } diff --git a/src/de/katho/kBorrow/listener/ArticleEditTableButton.java b/src/de/katho/kBorrow/listener/ArticleEditTableButton.java new file mode 100644 index 0000000..f487127 --- /dev/null +++ b/src/de/katho/kBorrow/listener/ArticleEditTableButton.java @@ -0,0 +1,35 @@ +package de.katho.kBorrow.listener; + +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; + +import javax.swing.JTable; + +import de.katho.kBorrow.gui.ArticleTableModel; +import de.katho.kBorrow.gui.MainWindow; + +public class ArticleEditTableButton extends TableButton { + + /** + * + */ + private static final long serialVersionUID = -5902626427691636902L; + private MainWindow mainwindow; + + public ArticleEditTableButton(String pLabel, JTable pTable, MainWindow pMainwindow) { + super(pLabel, pTable); + + this.mainwindow = pMainwindow; + + this.buttonE.addActionListener(new ActionListener(){ + public void actionPerformed(ActionEvent e){ + fireEditingStopped(); + + ArticleTableModel model = (ArticleTableModel) table.getModel(); + int row = table.getSelectedRow(); + + mainwindow.setModeEditArticle(model.getArticleId(row), model.getArticleName(row), model.getArticleDescription(row)); + } + }); + } +} diff --git a/src/de/katho/kBorrow/listener/TableButton.java b/src/de/katho/kBorrow/listener/TableButton.java new file mode 100644 index 0000000..f422a99 --- /dev/null +++ b/src/de/katho/kBorrow/listener/TableButton.java @@ -0,0 +1,36 @@ +package de.katho.kBorrow.listener; + +import java.awt.Component; + +import javax.swing.AbstractCellEditor; +import javax.swing.JButton; +import javax.swing.JTable; +import javax.swing.table.TableCellEditor; +import javax.swing.table.TableCellRenderer; + +public abstract class TableButton extends AbstractCellEditor implements TableCellRenderer, TableCellEditor { + private static final long serialVersionUID = -5902626427691636902L; + private String label; + protected JTable table; + protected JButton buttonR; + protected JButton buttonE; + + public TableButton (String pLabel, JTable pTable) { + this.label = pLabel; + this.table = pTable; + this.buttonR = new JButton(pLabel); + this.buttonE = new JButton(pLabel); + } + + public Object getCellEditorValue() { + return this.label; + } + + public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) { + return this.buttonE; + } + + public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { + return this.buttonR; + } +} diff --git a/src/de/katho/kBorrow/listener/UserDeleteTableButton.java b/src/de/katho/kBorrow/listener/UserDeleteTableButton.java new file mode 100644 index 0000000..5e7e4b5 --- /dev/null +++ b/src/de/katho/kBorrow/listener/UserDeleteTableButton.java @@ -0,0 +1,31 @@ +package de.katho.kBorrow.listener; + +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; + +import javax.swing.JTable; + +import de.katho.kBorrow.gui.UserTableModel; + +public class UserDeleteTableButton extends TableButton { + + private static final long serialVersionUID = -886584066497429394L; + + public UserDeleteTableButton(String pLabel, JTable pTable){ + super(pLabel, pTable); + + this.buttonE.addActionListener(new ActionListener(){ + public void actionPerformed(ActionEvent e){ + fireEditingStopped(); + + UserTableModel model = (UserTableModel) table.getModel(); + + int row = table.getSelectedRow(); + int id = model.getUserId(row); + + model.deleteUser(id); + } + }); + + } +} diff --git a/src/de/katho/kBorrow/listener/UserEditTableButton.java b/src/de/katho/kBorrow/listener/UserEditTableButton.java new file mode 100644 index 0000000..41362ed --- /dev/null +++ b/src/de/katho/kBorrow/listener/UserEditTableButton.java @@ -0,0 +1,37 @@ +package de.katho.kBorrow.listener; + +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; + +import javax.swing.JTable; + +import de.katho.kBorrow.gui.MainWindow; +import de.katho.kBorrow.gui.UserTableModel; + +public class UserEditTableButton extends TableButton { + + /** + * + */ + private static final long serialVersionUID = -886584066497429394L; + + private MainWindow mainwindow; + + public UserEditTableButton(String pLabel, JTable pTable, MainWindow pMainWindow){ + super(pLabel, pTable); + + this.mainwindow = pMainWindow; + + this.buttonE.addActionListener(new ActionListener(){ + public void actionPerformed(ActionEvent e){ + fireEditingStopped(); + + UserTableModel model = (UserTableModel) table.getModel(); + int row = table.getSelectedRow(); + + mainwindow.setModeEditUser(model.getUserId(row), model.getUserName(row), model.getUserSurname(row)); + } + }); + + } +}