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{
|
||||
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);
|
||||
|
||||
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;
|
||||
|
||||
@@ -17,6 +17,7 @@ import de.katho.kBorrow.db.SqlConnector;
|
||||
import de.katho.kBorrow.db.SqliteConnector;
|
||||
import de.katho.kBorrow.models.ArticleTableModel;
|
||||
import de.katho.kBorrow.models.FreeArticleTableModel;
|
||||
import de.katho.kBorrow.models.LenderModel;
|
||||
import de.katho.kBorrow.models.UserTableModel;
|
||||
import de.katho.kBorrow.models.UserListModel;
|
||||
|
||||
@@ -62,6 +63,7 @@ public class MainWindow {
|
||||
models.put("userlistmodel", new UserListModel(dbCon));
|
||||
models.put("articlemodel", new ArticleTableModel(dbCon));
|
||||
models.put("freearticlemodel", new FreeArticleTableModel(dbCon));
|
||||
models.put("lendermodel", new LenderModel(dbCon));
|
||||
|
||||
this.tabbedPane = new JTabbedPane(JTabbedPane.TOP);
|
||||
this.frame.getContentPane().add(this.tabbedPane, BorderLayout.CENTER);
|
||||
|
||||
@@ -2,9 +2,14 @@ package de.katho.kBorrow.gui;
|
||||
|
||||
import java.awt.BorderLayout;
|
||||
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.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.Vector;
|
||||
|
||||
import javax.swing.JButton;
|
||||
import javax.swing.JComboBox;
|
||||
@@ -18,14 +23,22 @@ import javax.swing.UIManager;
|
||||
import javax.swing.border.TitledBorder;
|
||||
|
||||
import org.jdesktop.swingx.JXDatePicker;
|
||||
import org.jdesktop.swingx.autocomplete.AutoCompleteDecorator;
|
||||
|
||||
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.listener.NewLendingTableButton;
|
||||
import de.katho.kBorrow.models.FreeArticleTableModel;
|
||||
import de.katho.kBorrow.models.LenderModel;
|
||||
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 JLabel lblStartDate;
|
||||
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.
|
||||
@@ -47,10 +64,13 @@ public class NewLendingPanel extends JPanel {
|
||||
*/
|
||||
public NewLendingPanel(final DbConnector dbCon, HashMap<String, Object> pModel) throws IOException {
|
||||
setLayout(null);
|
||||
articleId = -1;
|
||||
lastFocussedComponent = null;
|
||||
|
||||
// FreeArticleTable
|
||||
freeArticleTableModel = (FreeArticleTableModel)pModel.get("freearticlemodel");
|
||||
userListModel = (UserListModel)pModel.get("userlistmodel");
|
||||
lenderModel = (LenderModel)pModel.get("lendermodel");
|
||||
|
||||
JTable freeArticleTable = new JTable(freeArticleTableModel);
|
||||
freeArticleTable.setRowHeight(30);
|
||||
@@ -121,43 +141,62 @@ public class NewLendingPanel extends JPanel {
|
||||
|
||||
JSeparator separator = new JSeparator();
|
||||
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:");
|
||||
lblNewLabel_1.setBounds(10, 100, 90, 20);
|
||||
panelNewLending.add(lblNewLabel_1);
|
||||
|
||||
JLabel lblNewLabel_2 = new JLabel("Nachname:");
|
||||
lblNewLabel_2.setBounds(10, 130, 90, 20);
|
||||
panelNewLending.add(lblNewLabel_2);
|
||||
|
||||
JLabel lblNewLabel_3 = new JLabel("Matrikelnummer:");
|
||||
lblNewLabel_3.setBounds(10, 160, 90, 20);
|
||||
panelNewLending.add(lblNewLabel_3);
|
||||
// Lender Labels
|
||||
JLabel lblLenderName = new JLabel("Name:");
|
||||
JLabel lblLenderSurname = new JLabel("Nachname:");
|
||||
JLabel lblLenderStudentnumber = new JLabel("Matrikelnummer:");
|
||||
lblLenderName.setBounds(10, 100, 90, 20);
|
||||
lblLenderSurname.setBounds(10, 130, 90, 20);
|
||||
lblLenderStudentnumber.setBounds(10, 160, 90, 20);
|
||||
|
||||
// Lender Textfields
|
||||
tfName = new JTextField();
|
||||
tfName.setBounds(110, 100, 90, 20);
|
||||
panelNewLending.add(tfName);
|
||||
tfName.setColumns(10);
|
||||
|
||||
tfSurname = new JTextField();
|
||||
tfSurname.setBounds(110, 130, 90, 20);
|
||||
panelNewLending.add(tfSurname);
|
||||
tfSurname.setColumns(10);
|
||||
|
||||
tfStudentNumber = new JTextField();
|
||||
tfStudentNumber.setBounds(110, 160, 90, 20);
|
||||
panelNewLending.add(tfStudentNumber);
|
||||
tfName.addFocusListener(this);
|
||||
tfSurname.addFocusListener(this);
|
||||
tfStudentNumber.addFocusListener(this);
|
||||
tfName.setColumns(10);
|
||||
tfSurname.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) {
|
||||
@@ -167,4 +206,35 @@ public class NewLendingPanel extends JPanel {
|
||||
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
|
||||
Vector<Component> order = new Vector<Component>();
|
||||
order.add(this.textFieldUserName);
|
||||
order.add(this.textFieldUserSurname);
|
||||
order.add(this.btnUserCancel);
|
||||
order.add(this.btnUserSave);
|
||||
order.add(textFieldUserName);
|
||||
order.add(textFieldUserSurname);
|
||||
order.add(btnUserCancel);
|
||||
order.add(btnUserSave);
|
||||
MyFocusTraversalPolicy focusPolicy = new MyFocusTraversalPolicy(order);
|
||||
|
||||
// User-Edit-Pane
|
||||
|
||||
@@ -17,4 +17,82 @@ public class LenderModel {
|
||||
public void updateModel(){
|
||||
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) {
|
||||
System.out.println(object);
|
||||
if(selectedItem == null && object == null) return;
|
||||
if(selectedItem != null && selectedItem.equals(object)) return;
|
||||
if(object!= null && !dataContains((String)object)) return;
|
||||
|
||||
Reference in New Issue
Block a user