Habe angefangen, die Artikeltabelle und die zugehörigen Klassen, die

TableModel, Buttons und Artikelklasse zu implementieren. Die Buttons
werden nun von einer Elternklasse geerbt, um doppelten Code zu
vermeiden.
This commit is contained in:
Servicepoint
2014-10-21 17:32:13 +02:00
parent 568c1a8188
commit d04ccb5123
12 changed files with 358 additions and 83 deletions

View File

@@ -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;
}
}

View File

@@ -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<KUser> getUserList();
public boolean deleteUser(int id);
public int editUser(int pId, String pName, String pSurname);
public ArrayList<KArticle> getArticleList();
}

View File

@@ -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<KArticle> getArticleList() {
// TODO Auto-generated method stub
return null;
}
}

View File

@@ -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<KArticle> getArticleList() {
ArrayList<KArticle> artArr = new ArrayList<KArticle>();
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;

View File

@@ -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<KArticle> data = new ArrayList<KArticle>();
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
}
}

View File

@@ -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<EFBFBD>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
}
}

View File

@@ -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;
}
}

View File

@@ -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;
}

View File

@@ -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));
}
});
}
}

View File

@@ -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;
}
}

View File

@@ -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);
}
});
}
}

View File

@@ -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));
}
});
}
}