/*
* View_browse.java
*
* Created on February 11, 2008, 6:05 PM
*/
package GUI;
import java.util.ArrayList;
import java.text.DecimalFormat;
import Business.BusinessManager;
import Business.product;
import Business.category;
/**
* This class contains a Java Applet which allows a user to browse through the categories
* and products with 4 simple buttons.
*
* @author ScarS @ HvA
*/
public class View_browse extends javax.swing.JApplet {
private BusinessManager businessManager;
private int categoryId, productId;
private boolean prevCatDisabled = true, prevProdDisabled = true, nextCatDisabled = false, nextProdDisabled = false;
/**
* Add linebreaks (paragraphs) to a string so it will not show up as one long line but instead
* breaks up so the text will be displayed under eachother. The lines are checked if they contain
* a white space so the string is preferably being broken into pieces on white spaces.
*
* function created by ScarS @ HvA
*
* @param str The string being put in that has to be split up
* @param breakLen The maximum character length of each line
* @return ret The formatted string
*/
private String addLinebreaks(String str, int breakLen) {
/** if the string is already smaller then the break length return it */
if (str.length() < breakLen) {
return str;
}
/** offset where to break the string, has to start at 0 */
int indexNum = 0;
String tmp = "", ret = "";
for (int i = 0, j = 0; i < str.length(); i += breakLen, j++) {
/** take the part of the string that has to be processed */
tmp = str.substring(indexNum);
/** check if the string still has to be broken */
if (tmp.length() > breakLen) {
/** break the string into the maximum break length */
tmp = tmp.substring(0, breakLen);
/** remove white spaces from the start and end of the line */
for (int k = 0; k < tmp.length(); k++) {
if (tmp.startsWith(" ")) {
tmp = tmp.substring(1, tmp.length());
}
if (tmp.endsWith(" ")) {
tmp = tmp.substring(0, tmp.length() - 1);
}
}
/** check if the line contains a white space */
if (tmp.contains(" ")) {
/** try to split the line into words */
try {
/** split the line into words on white spaces */
String[] subTmp = tmp.split(" ");
String subStr = "";
/** add the complete words to the line */
for (int k = 0; k < (subTmp.length - 1); k++) {
subStr += subTmp[k] + " ";
}
/** set the break offset */
indexNum = (ret.length() + subStr.length() - (3 * j));
/** add the line to the return string */
ret += subStr.substring(0, subStr.length() - 1) + "
";
/** if the line has not been able to break on white spaces add it to the return string with an ending dash */
} catch (ArrayIndexOutOfBoundsException e) {
indexNum += breakLen;
ret += tmp + "-
";
}
/** if the line does not contain white spaces add it to the return string with an ending dash */
} else {
indexNum += breakLen;
ret += tmp + "-
";
}
/** if this is the last part of the string add the last line */
if (str.substring(indexNum).length() <= breakLen) {
ret += str.substring(indexNum);
}
}
i = indexNum;
}
/** return the formatted string */
return "" + ret + "";
}
private void updateProduct() {
ArrayList products = businessManager.getProducts();
int lastProdId = 0;
double prodPrice = 0.00;
String prodName = "", prodDescr = "";
for (int i = 0; i < products.size(); i++) {
product prod = (product) products.get(i);
if (i == 0) {
productId = prod.getProduct_id();
prodName = prod.getName();
prodPrice = prod.getPrice();
prodDescr = prod.getDescription();
}
lastProdId = prod.getProduct_id();
}
DecimalFormat Currency = new DecimalFormat("#0.00");
lblCatName.setText(businessManager.mainModel.getCategoryName());
lblName.setText(prodName);
lblPrice.setText("€ " + Currency.format(prodPrice));
lblDescr.setText(addLinebreaks(prodDescr, 50));
btnPrevProd.setEnabled(false);
prevProdDisabled = true;
if (productId == lastProdId) {
btnNextProd.setEnabled(false);
nextProdDisabled = true;
} else if (nextProdDisabled) {
btnNextProd.setEnabled(true);
nextProdDisabled = false;
}
}
/** Initializes the applet View_browse */
public void init() {
this.setSize(450, 300);
businessManager = new BusinessManager();
try {
java.awt.EventQueue.invokeAndWait(new Runnable() {
public void run() {
initComponents();
ArrayList categories = businessManager.dataManager.getCategoriesById();
category cat = (category) categories.get(0);
categoryId = cat.getCategory_id();
businessManager.mainModel.setCategory(categoryId);
btnPrevCat.setEnabled(false);
updateProduct();
}
});
} catch (Exception ex) {
ex.printStackTrace();
}
}
/** This method is called from within the init() method to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
//
private void initComponents() {
btnPrevCat = new javax.swing.JButton();
btnPrevProd = new javax.swing.JButton();
btnNextProd = new javax.swing.JButton();
btnNextCat = new javax.swing.JButton();
lblBrowse = new javax.swing.JLabel();
lblCatNameHead = new javax.swing.JLabel();
lblNameHead = new javax.swing.JLabel();
lblDescrHead = new javax.swing.JLabel();
lblCatName = new javax.swing.JLabel();
lblName = new javax.swing.JLabel();
lblDescr = new javax.swing.JLabel();
lblPriceHead = new javax.swing.JLabel();
lblPrice = new javax.swing.JLabel();
btnPrevCat.setText("Previous category");
btnPrevCat.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnPrevCatActionPerformed(evt);
}
});
btnPrevProd.setText("Previous product");
btnPrevProd.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnPrevProdActionPerformed(evt);
}
});
btnNextProd.setText("Next product");
btnNextProd.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnNextProdActionPerformed(evt);
}
});
btnNextCat.setText("Next category");
btnNextCat.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnNextCatActionPerformed(evt);
}
});
lblBrowse.setFont(new java.awt.Font("Tahoma", 1, 18));
lblBrowse.setText("Browse products");
lblCatNameHead.setFont(new java.awt.Font("Tahoma", 1, 12));
lblCatNameHead.setText("Category name:");
lblNameHead.setFont(new java.awt.Font("Tahoma", 1, 12));
lblNameHead.setText("Product name:");
lblDescrHead.setFont(new java.awt.Font("Tahoma", 1, 12));
lblDescrHead.setText("Product description:");
lblCatName.setFont(new java.awt.Font("Tahoma", 0, 12));
lblCatName.setText("Category name");
lblName.setFont(new java.awt.Font("Tahoma", 0, 12));
lblName.setText("Product name");
lblDescr.setFont(new java.awt.Font("Tahoma", 0, 12));
lblDescr.setText("Product description");
lblDescr.setVerticalAlignment(javax.swing.SwingConstants.TOP);
lblPriceHead.setFont(new java.awt.Font("Tahoma", 1, 12));
lblPriceHead.setText("Product price:");
lblPrice.setFont(new java.awt.Font("Tahoma", 0, 12));
lblPrice.setText("Product price");
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addGap(21, 21, 21)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(28, 28, 28)
.addComponent(lblCatNameHead)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(lblCatName, javax.swing.GroupLayout.DEFAULT_SIZE, 266, Short.MAX_VALUE))
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(lblPriceHead)
.addComponent(lblNameHead)
.addComponent(lblDescrHead))
.addGap(14, 14, 14)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(lblDescr, javax.swing.GroupLayout.DEFAULT_SIZE, 262, Short.MAX_VALUE)
.addComponent(lblName, javax.swing.GroupLayout.DEFAULT_SIZE, 262, Short.MAX_VALUE)
.addComponent(lblPrice, javax.swing.GroupLayout.DEFAULT_SIZE, 262, Short.MAX_VALUE))))
.addGap(19, 19, 19))
.addGroup(layout.createSequentialGroup()
.addGap(84, 84, 84)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(btnPrevCat)
.addComponent(btnPrevProd))
.addGap(26, 26, 26)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(btnNextProd)
.addComponent(btnNextCat)))
.addGroup(layout.createSequentialGroup()
.addGap(67, 67, 67)
.addComponent(lblBrowse)))
.addContainerGap(111, Short.MAX_VALUE))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addContainerGap()
.addComponent(lblBrowse)
.addGap(18, 18, 18)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(btnNextCat)
.addGroup(layout.createSequentialGroup()
.addComponent(btnPrevCat)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(btnPrevProd)
.addComponent(btnNextProd))))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 29, Short.MAX_VALUE)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(lblCatNameHead)
.addComponent(lblCatName))
.addGap(15, 15, 15)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(lblNameHead)
.addGroup(layout.createSequentialGroup()
.addComponent(lblName)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(lblPriceHead)
.addComponent(lblPrice))))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(lblDescr, javax.swing.GroupLayout.PREFERRED_SIZE, 78, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(lblDescrHead))
.addContainerGap())
);
}//
private void btnPrevCatActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
try {
ArrayList categories = businessManager.dataManager.getCategoriesById();
int firstCatId = 0, prevCatId = 0;
for (int i = 0; i < categories.size(); i++) {
category cat = (category) categories.get(i);
if (i == 0) {
firstCatId = cat.getCategory_id();
}
if (categoryId == cat.getCategory_id()) {
categoryId = prevCatId;
}
prevCatId = cat.getCategory_id();
}
if (categoryId == firstCatId) {
btnPrevCat.setEnabled(false);
prevCatDisabled = true;
}
if (nextCatDisabled == true) {
btnNextCat.setEnabled(true);
nextCatDisabled = false;
}
businessManager.mainModel.setCategory(categoryId);
updateProduct();
} catch (Exception e) {
System.out.println("error: " + e);
}
}
private void btnNextCatActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
try {
ArrayList categories = businessManager.dataManager.getCategoriesById();
int j = 0, lastCatId = 0;
for (int i = 1; i < (categories.size() + 1); i++) {
category cat = (category) categories.get(i - 1);
if (categoryId == cat.getCategory_id()) {
j = i + 1;
}
if (j == i) {
categoryId = cat.getCategory_id();
}
lastCatId = cat.getCategory_id();
}
if (categoryId == lastCatId) {
btnNextCat.setEnabled(false);
nextCatDisabled = true;
}
if (prevCatDisabled == true) {
btnPrevCat.setEnabled(true);
prevCatDisabled = false;
}
businessManager.mainModel.setCategory(categoryId);
updateProduct();
} catch (Exception e) {
System.out.println("error: " + e);
}
}
private void btnPrevProdActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
try {
ArrayList products = businessManager.getProducts();
int firstProdId = 0, prevProdId = 0;
double prodPrice = 0.00, prevProdPrice = 0.00;
String prodName = null, prodDescr = null, prevProdName = null, prevProdDescr = null;
for (int i = 0; i < products.size(); i++) {
product prod = (product) products.get(i);
if (i == 0) {
firstProdId = prod.getProduct_id();
}
if (productId == prod.getProduct_id()) {
productId = prevProdId;
prodName = prevProdName;
prodPrice = prevProdPrice;
prodDescr = prevProdDescr;
}
prevProdId = prod.getProduct_id();
prevProdName = prod.getName();
prevProdPrice = prod.getPrice();
prevProdDescr = prod.getDescription();
}
if (productId == firstProdId) {
btnPrevProd.setEnabled(false);
prevProdDisabled = true;
}
if (nextProdDisabled == true) {
btnNextProd.setEnabled(true);
nextProdDisabled = false;
}
DecimalFormat Currency = new DecimalFormat("#0.00");
lblName.setText(prodName);
lblPrice.setText("€ " + Currency.format(prodPrice));
lblDescr.setText(addLinebreaks(prodDescr, 50));
} catch (Exception e) {
System.out.println("error: " + e);
}
}
private void btnNextProdActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
try {
ArrayList products = businessManager.getProducts();
int j = 0, lastProdId = 0;
double prodPrice = 0.00;
String prodName = null, prodDescr = null;
for (int i = 1; i < (products.size() + 1); i++) {
product prod = (product) products.get(i - 1);
if (productId == prod.getProduct_id()) {
j = i + 1;
}
if (j == i) {
productId = prod.getProduct_id();
prodName = prod.getName();
prodPrice = prod.getPrice();
prodDescr = prod.getDescription();
}
lastProdId = prod.getProduct_id();
}
if (productId == lastProdId) {
btnNextProd.setEnabled(false);
nextProdDisabled = true;
}
if (prevProdDisabled == true) {
btnPrevProd.setEnabled(true);
prevProdDisabled = false;
}
DecimalFormat Currency = new DecimalFormat("#0.00");
lblName.setText(prodName);
lblPrice.setText("€ " + Currency.format(prodPrice));
lblDescr.setText(addLinebreaks(prodDescr, 50));
} catch (Exception e) {
System.out.println("error: " + e);
}
}
// Variables declaration - do not modify
private javax.swing.JButton btnNextCat;
private javax.swing.JButton btnNextProd;
private javax.swing.JButton btnPrevCat;
private javax.swing.JButton btnPrevProd;
private javax.swing.JLabel lblBrowse;
private javax.swing.JLabel lblCatName;
private javax.swing.JLabel lblCatNameHead;
private javax.swing.JLabel lblDescr;
private javax.swing.JLabel lblDescrHead;
private javax.swing.JLabel lblName;
private javax.swing.JLabel lblNameHead;
private javax.swing.JLabel lblPrice;
private javax.swing.JLabel lblPriceHead;
// End of variables declaration
}