Autocompletesuche im LenderModel implementiert.
This commit is contained in:
15
src/de/katho/kBorrow/converter/LenderNameConverter.java
Normal file
15
src/de/katho/kBorrow/converter/LenderNameConverter.java
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
package de.katho.kBorrow.converter;
|
||||||
|
|
||||||
|
import org.jdesktop.swingx.autocomplete.ObjectToStringConverter;
|
||||||
|
|
||||||
|
import de.katho.kBorrow.data.KLender;
|
||||||
|
|
||||||
|
public class LenderNameConverter extends ObjectToStringConverter {
|
||||||
|
|
||||||
|
public String getPreferredStringForItem(Object pItem) {
|
||||||
|
if(pItem == null) return null;
|
||||||
|
if(pItem instanceof KLender) return ((KLender) pItem).getName();
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
package de.katho.kBorrow.converter;
|
||||||
|
|
||||||
|
import org.jdesktop.swingx.autocomplete.ObjectToStringConverter;
|
||||||
|
|
||||||
|
import de.katho.kBorrow.data.KLender;
|
||||||
|
|
||||||
|
public class LenderStudentnumberConverter extends ObjectToStringConverter {
|
||||||
|
|
||||||
|
public String getPreferredStringForItem(Object pItem) {
|
||||||
|
if(pItem == null) return null;
|
||||||
|
if(pItem instanceof KLender) return String.valueOf(((KLender) pItem).getStudentnumber());
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
15
src/de/katho/kBorrow/converter/LenderSurnameConverter.java
Normal file
15
src/de/katho/kBorrow/converter/LenderSurnameConverter.java
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
package de.katho.kBorrow.converter;
|
||||||
|
|
||||||
|
import org.jdesktop.swingx.autocomplete.ObjectToStringConverter;
|
||||||
|
|
||||||
|
import de.katho.kBorrow.data.KLender;
|
||||||
|
|
||||||
|
public class LenderSurnameConverter extends ObjectToStringConverter {
|
||||||
|
|
||||||
|
public String getPreferredStringForItem(Object pItem) {
|
||||||
|
if(pItem == null) return null;
|
||||||
|
if(pItem instanceof KLender) return ((KLender) pItem).getSurname();
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -248,11 +248,11 @@ public class SqliteConnector implements DbConnector {
|
|||||||
|
|
||||||
try{
|
try{
|
||||||
Statement st = connection.createStatement();
|
Statement st = connection.createStatement();
|
||||||
String query = "SELECT id, name, surname, studentnumber FROM lender";
|
String query = "SELECT id, name, surname, student_number FROM lender";
|
||||||
ResultSet rs = st.executeQuery(query);
|
ResultSet rs = st.executeQuery(query);
|
||||||
|
|
||||||
while (rs.next()){
|
while (rs.next()){
|
||||||
lendArr.add(new KLender(rs.getInt("id"), rs.getString("name"), rs.getString("surname"), rs.getInt("studentnumber")));
|
lendArr.add(new KLender(rs.getInt("id"), rs.getString("name"), rs.getString("surname"), rs.getInt("student_number")));
|
||||||
}
|
}
|
||||||
|
|
||||||
return lendArr;
|
return lendArr;
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ import de.katho.kBorrow.db.SqlConnector;
|
|||||||
import de.katho.kBorrow.db.SqliteConnector;
|
import de.katho.kBorrow.db.SqliteConnector;
|
||||||
import de.katho.kBorrow.models.ArticleTableModel;
|
import de.katho.kBorrow.models.ArticleTableModel;
|
||||||
import de.katho.kBorrow.models.FreeArticleTableModel;
|
import de.katho.kBorrow.models.FreeArticleTableModel;
|
||||||
|
import de.katho.kBorrow.models.LenderModel;
|
||||||
import de.katho.kBorrow.models.UserTableModel;
|
import de.katho.kBorrow.models.UserTableModel;
|
||||||
import de.katho.kBorrow.models.UserListModel;
|
import de.katho.kBorrow.models.UserListModel;
|
||||||
|
|
||||||
@@ -62,6 +63,7 @@ public class MainWindow {
|
|||||||
models.put("userlistmodel", new UserListModel(dbCon));
|
models.put("userlistmodel", new UserListModel(dbCon));
|
||||||
models.put("articlemodel", new ArticleTableModel(dbCon));
|
models.put("articlemodel", new ArticleTableModel(dbCon));
|
||||||
models.put("freearticlemodel", new FreeArticleTableModel(dbCon));
|
models.put("freearticlemodel", new FreeArticleTableModel(dbCon));
|
||||||
|
models.put("lendermodel", new LenderModel(dbCon));
|
||||||
|
|
||||||
this.tabbedPane = new JTabbedPane(JTabbedPane.TOP);
|
this.tabbedPane = new JTabbedPane(JTabbedPane.TOP);
|
||||||
this.frame.getContentPane().add(this.tabbedPane, BorderLayout.CENTER);
|
this.frame.getContentPane().add(this.tabbedPane, BorderLayout.CENTER);
|
||||||
|
|||||||
@@ -2,9 +2,14 @@ package de.katho.kBorrow.gui;
|
|||||||
|
|
||||||
import java.awt.BorderLayout;
|
import java.awt.BorderLayout;
|
||||||
import java.awt.Color;
|
import java.awt.Color;
|
||||||
|
import java.awt.Component;
|
||||||
|
import java.awt.event.ActionEvent;
|
||||||
|
import java.awt.event.ActionListener;
|
||||||
|
import java.awt.event.FocusListener;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
import java.util.Vector;
|
||||||
|
|
||||||
import javax.swing.JButton;
|
import javax.swing.JButton;
|
||||||
import javax.swing.JComboBox;
|
import javax.swing.JComboBox;
|
||||||
@@ -18,14 +23,22 @@ import javax.swing.UIManager;
|
|||||||
import javax.swing.border.TitledBorder;
|
import javax.swing.border.TitledBorder;
|
||||||
|
|
||||||
import org.jdesktop.swingx.JXDatePicker;
|
import org.jdesktop.swingx.JXDatePicker;
|
||||||
|
import org.jdesktop.swingx.autocomplete.AutoCompleteDecorator;
|
||||||
|
|
||||||
import de.katho.kBorrow.Util;
|
import de.katho.kBorrow.Util;
|
||||||
|
import de.katho.kBorrow.converter.LenderNameConverter;
|
||||||
|
import de.katho.kBorrow.converter.LenderStudentnumberConverter;
|
||||||
|
import de.katho.kBorrow.converter.LenderSurnameConverter;
|
||||||
|
import de.katho.kBorrow.data.KLender;
|
||||||
import de.katho.kBorrow.db.DbConnector;
|
import de.katho.kBorrow.db.DbConnector;
|
||||||
import de.katho.kBorrow.listener.NewLendingTableButton;
|
import de.katho.kBorrow.listener.NewLendingTableButton;
|
||||||
import de.katho.kBorrow.models.FreeArticleTableModel;
|
import de.katho.kBorrow.models.FreeArticleTableModel;
|
||||||
|
import de.katho.kBorrow.models.LenderModel;
|
||||||
import de.katho.kBorrow.models.UserListModel;
|
import de.katho.kBorrow.models.UserListModel;
|
||||||
|
|
||||||
public class NewLendingPanel extends JPanel {
|
import java.awt.event.FocusEvent;
|
||||||
|
|
||||||
|
public class NewLendingPanel extends JPanel implements ActionListener, FocusListener{
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
@@ -38,7 +51,11 @@ public class NewLendingPanel extends JPanel {
|
|||||||
private UserListModel userListModel;
|
private UserListModel userListModel;
|
||||||
private JLabel lblStartDate;
|
private JLabel lblStartDate;
|
||||||
private JLabel lblArticleName;
|
private JLabel lblArticleName;
|
||||||
private int articleId = -1;
|
private int articleId;
|
||||||
|
private LenderModel lenderModel;
|
||||||
|
private JButton btnCancel;
|
||||||
|
private JButton btnSave;
|
||||||
|
private Object lastFocussedComponent;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create the panel.
|
* Create the panel.
|
||||||
@@ -47,10 +64,13 @@ public class NewLendingPanel extends JPanel {
|
|||||||
*/
|
*/
|
||||||
public NewLendingPanel(final DbConnector dbCon, HashMap<String, Object> pModel) throws IOException {
|
public NewLendingPanel(final DbConnector dbCon, HashMap<String, Object> pModel) throws IOException {
|
||||||
setLayout(null);
|
setLayout(null);
|
||||||
|
articleId = -1;
|
||||||
|
lastFocussedComponent = null;
|
||||||
|
|
||||||
// FreeArticleTable
|
// FreeArticleTable
|
||||||
freeArticleTableModel = (FreeArticleTableModel)pModel.get("freearticlemodel");
|
freeArticleTableModel = (FreeArticleTableModel)pModel.get("freearticlemodel");
|
||||||
userListModel = (UserListModel)pModel.get("userlistmodel");
|
userListModel = (UserListModel)pModel.get("userlistmodel");
|
||||||
|
lenderModel = (LenderModel)pModel.get("lendermodel");
|
||||||
|
|
||||||
JTable freeArticleTable = new JTable(freeArticleTableModel);
|
JTable freeArticleTable = new JTable(freeArticleTableModel);
|
||||||
freeArticleTable.setRowHeight(30);
|
freeArticleTable.setRowHeight(30);
|
||||||
@@ -121,43 +141,62 @@ public class NewLendingPanel extends JPanel {
|
|||||||
|
|
||||||
JSeparator separator = new JSeparator();
|
JSeparator separator = new JSeparator();
|
||||||
separator.setBounds(10, 90, 569, 2);
|
separator.setBounds(10, 90, 569, 2);
|
||||||
panelNewLending.add(separator);
|
|
||||||
|
|
||||||
JButton btnAbbrechen = new JButton("Abbrechen");
|
|
||||||
btnAbbrechen.setBounds(471, 130, 89, 23);
|
|
||||||
panelNewLending.add(btnAbbrechen);
|
|
||||||
|
|
||||||
JButton btnSpeichern = new JButton("Speichern");
|
|
||||||
btnSpeichern.setBounds(471, 160, 89, 23);
|
|
||||||
panelNewLending.add(btnSpeichern);
|
|
||||||
|
|
||||||
JLabel lblNewLabel_1 = new JLabel("Name:");
|
// Lender Labels
|
||||||
lblNewLabel_1.setBounds(10, 100, 90, 20);
|
JLabel lblLenderName = new JLabel("Name:");
|
||||||
panelNewLending.add(lblNewLabel_1);
|
JLabel lblLenderSurname = new JLabel("Nachname:");
|
||||||
|
JLabel lblLenderStudentnumber = new JLabel("Matrikelnummer:");
|
||||||
JLabel lblNewLabel_2 = new JLabel("Nachname:");
|
lblLenderName.setBounds(10, 100, 90, 20);
|
||||||
lblNewLabel_2.setBounds(10, 130, 90, 20);
|
lblLenderSurname.setBounds(10, 130, 90, 20);
|
||||||
panelNewLending.add(lblNewLabel_2);
|
lblLenderStudentnumber.setBounds(10, 160, 90, 20);
|
||||||
|
|
||||||
JLabel lblNewLabel_3 = new JLabel("Matrikelnummer:");
|
|
||||||
lblNewLabel_3.setBounds(10, 160, 90, 20);
|
|
||||||
panelNewLending.add(lblNewLabel_3);
|
|
||||||
|
|
||||||
|
// Lender Textfields
|
||||||
tfName = new JTextField();
|
tfName = new JTextField();
|
||||||
tfName.setBounds(110, 100, 90, 20);
|
|
||||||
panelNewLending.add(tfName);
|
|
||||||
tfName.setColumns(10);
|
|
||||||
|
|
||||||
tfSurname = new JTextField();
|
tfSurname = new JTextField();
|
||||||
tfSurname.setBounds(110, 130, 90, 20);
|
|
||||||
panelNewLending.add(tfSurname);
|
|
||||||
tfSurname.setColumns(10);
|
|
||||||
|
|
||||||
tfStudentNumber = new JTextField();
|
tfStudentNumber = new JTextField();
|
||||||
tfStudentNumber.setBounds(110, 160, 90, 20);
|
tfName.addFocusListener(this);
|
||||||
panelNewLending.add(tfStudentNumber);
|
tfSurname.addFocusListener(this);
|
||||||
|
tfStudentNumber.addFocusListener(this);
|
||||||
|
tfName.setColumns(10);
|
||||||
|
tfSurname.setColumns(10);
|
||||||
tfStudentNumber.setColumns(10);
|
tfStudentNumber.setColumns(10);
|
||||||
|
tfName.setBounds(110, 100, 90, 20);
|
||||||
|
tfSurname.setBounds(110, 130, 90, 20);
|
||||||
|
tfStudentNumber.setBounds(110, 160, 90, 20);
|
||||||
|
AutoCompleteDecorator.decorate(tfName, lenderModel.getList(), false, new LenderNameConverter() );
|
||||||
|
AutoCompleteDecorator.decorate(tfSurname, lenderModel.getList(), false, new LenderSurnameConverter());
|
||||||
|
AutoCompleteDecorator.decorate(tfStudentNumber, lenderModel.getList(), false, new LenderStudentnumberConverter());
|
||||||
|
|
||||||
|
// Buttons
|
||||||
|
btnCancel = new JButton("Abbrechen");
|
||||||
|
btnSave = new JButton("Speichern");
|
||||||
|
btnCancel.setBounds(471, 130, 89, 23);
|
||||||
|
btnSave.setBounds(471, 160, 89, 23);
|
||||||
|
btnCancel.addActionListener(this);
|
||||||
|
|
||||||
|
// Tab Traversal Policy
|
||||||
|
Vector<Component> order = new Vector<Component>();
|
||||||
|
order.add(tfName);
|
||||||
|
order.add(tfSurname);
|
||||||
|
order.add(tfStudentNumber);
|
||||||
|
order.add(btnCancel);
|
||||||
|
order.add(btnSave);
|
||||||
|
MyFocusTraversalPolicy focusPolicy = new MyFocusTraversalPolicy(order);
|
||||||
|
|
||||||
|
// New Lending Pane
|
||||||
|
panelNewLending.add(lblLenderStudentnumber);
|
||||||
|
panelNewLending.add(lblLenderSurname);
|
||||||
|
panelNewLending.add(lblLenderName);
|
||||||
|
panelNewLending.add(separator);
|
||||||
|
panelNewLending.add(btnSave);
|
||||||
|
panelNewLending.add(btnCancel);
|
||||||
|
panelNewLending.add(tfName);
|
||||||
|
panelNewLending.add(tfSurname);
|
||||||
|
panelNewLending.add(tfStudentNumber);
|
||||||
|
panelNewLending.setFocusTraversalPolicy(focusPolicy);
|
||||||
|
panelNewLending.setFocusCycleRoot(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setModeNewLending(int pArticleId, String articleName) {
|
public void setModeNewLending(int pArticleId, String articleName) {
|
||||||
@@ -167,4 +206,35 @@ public class NewLendingPanel extends JPanel {
|
|||||||
articleId = pArticleId;
|
articleId = pArticleId;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void actionPerformed(ActionEvent pEvent) {
|
||||||
|
if(pEvent.getSource() == btnCancel){
|
||||||
|
lblStartDate.setText("");
|
||||||
|
lblArticleName.setText("");
|
||||||
|
articleId = -1;
|
||||||
|
tfName.setText("");
|
||||||
|
tfSurname.setText("");
|
||||||
|
tfStudentNumber.setText("");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void focusGained(FocusEvent pEvent) {
|
||||||
|
if(pEvent.getSource() == tfName) System.out.println("tfName got focus");
|
||||||
|
if(pEvent.getSource() == tfSurname) System.out.println("tfSurname got focus");
|
||||||
|
if(pEvent.getSource() == tfStudentNumber) System.out.println("tfStudentNumber got focus");
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public void focusLost(FocusEvent pEvent) {
|
||||||
|
KLender result = lenderModel.getLender(tfName.getText(), tfSurname.getText(), tfStudentNumber.getText());
|
||||||
|
|
||||||
|
if(result != null){
|
||||||
|
tfName.setText(result.getName());
|
||||||
|
tfSurname.setText(result.getSurname());
|
||||||
|
tfStudentNumber.setText(String.valueOf(result.getStudentnumber()));
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -99,10 +99,10 @@ public class UserPanel extends JPanel implements ActionListener, KeyListener {
|
|||||||
|
|
||||||
//Traversal-Policy
|
//Traversal-Policy
|
||||||
Vector<Component> order = new Vector<Component>();
|
Vector<Component> order = new Vector<Component>();
|
||||||
order.add(this.textFieldUserName);
|
order.add(textFieldUserName);
|
||||||
order.add(this.textFieldUserSurname);
|
order.add(textFieldUserSurname);
|
||||||
order.add(this.btnUserCancel);
|
order.add(btnUserCancel);
|
||||||
order.add(this.btnUserSave);
|
order.add(btnUserSave);
|
||||||
MyFocusTraversalPolicy focusPolicy = new MyFocusTraversalPolicy(order);
|
MyFocusTraversalPolicy focusPolicy = new MyFocusTraversalPolicy(order);
|
||||||
|
|
||||||
// User-Edit-Pane
|
// User-Edit-Pane
|
||||||
|
|||||||
@@ -17,4 +17,82 @@ public class LenderModel {
|
|||||||
public void updateModel(){
|
public void updateModel(){
|
||||||
data = dbCon.getLenderList();
|
data = dbCon.getLenderList();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public ArrayList<KLender> getList(){
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
|
||||||
|
public KLender getLender(String pName, String pSurname, String pSN){
|
||||||
|
boolean nameEmpty = pName.isEmpty();
|
||||||
|
boolean surnameEmpty = pSurname.isEmpty();
|
||||||
|
boolean snEmpty = pSN.isEmpty();
|
||||||
|
int sn;
|
||||||
|
if(pSN.matches("[0-9]+")){
|
||||||
|
sn = Integer.parseInt(pSN);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
sn = -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!nameEmpty){
|
||||||
|
if(!surnameEmpty){
|
||||||
|
if(!snEmpty){
|
||||||
|
// Alles gegeben
|
||||||
|
for(KLender e : data){
|
||||||
|
if(e.getName().equals(pName) && e.getSurname().equals(pSurname) && e.getStudentnumber() == sn){
|
||||||
|
return e;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//Name und Surname gegeben
|
||||||
|
for(KLender e : data){
|
||||||
|
if(e.getName().equals(pName) && e.getSurname().equals(pSurname)){
|
||||||
|
return e;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(!snEmpty){
|
||||||
|
// Name und SN gegeben
|
||||||
|
for (KLender e : data){
|
||||||
|
if(e.getName().equals(pName) && e.getStudentnumber() == sn){
|
||||||
|
return e;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Nur Name gegeben
|
||||||
|
for (KLender e : data){
|
||||||
|
if(e.getName().equals(pName)){
|
||||||
|
return e;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!surnameEmpty){
|
||||||
|
if(!snEmpty){
|
||||||
|
// Surname und SN gegeben
|
||||||
|
for (KLender e : data){
|
||||||
|
if(e.getSurname().equals(pSurname) && e.getStudentnumber() == sn){
|
||||||
|
return e;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Nur Surname gegeben
|
||||||
|
for (KLender e : data){
|
||||||
|
if(e.getSurname().equals(pSurname)){
|
||||||
|
return e;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!snEmpty){
|
||||||
|
// Nur SN gegeben
|
||||||
|
for (KLender e : data){
|
||||||
|
if(e.getStudentnumber() == sn){
|
||||||
|
return e;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -34,7 +34,6 @@ public class UserListModel extends AbstractListModel<String> implements ComboBox
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void setSelectedItem(Object object) {
|
public void setSelectedItem(Object object) {
|
||||||
System.out.println(object);
|
|
||||||
if(selectedItem == null && object == null) return;
|
if(selectedItem == null && object == null) return;
|
||||||
if(selectedItem != null && selectedItem.equals(object)) return;
|
if(selectedItem != null && selectedItem.equals(object)) return;
|
||||||
if(object!= null && !dataContains((String)object)) return;
|
if(object!= null && !dataContains((String)object)) return;
|
||||||
|
|||||||
Reference in New Issue
Block a user