/* * 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 }