Save This Page
Home » openjdk-7 » net.sourceforge.wisim » controller » [javadoc | source]
    1   /*   ********************************************************************   **
    2   **   Copyright notice                                                       **
    3   **                                                                          **
    4   **   (c) 2003 WiSim Development Team					                              **
    5   **   http://wisim.sourceforge.net/   			                                  **
    6   **                                                                          **
    7   **   All rights reserved                                                    **
    8   **                                                                          **
    9   **   This script is part of the WiSim Business Game project. The WiSim      **
   10   **   project is free software; you can redistribute it and/or modify        **
   11   **   it under the terms of the GNU General Public License as published by   **
   12   **   the Free Software Foundation; either version 2 of the License, or      **
   13   **   (at your option) any later version.                                    **
   14   **                                                                          **
   15   **   The GNU General Public License can be found at                         **
   16   **   http://www.gnu.org/copyleft/gpl.html.                                  **
   17   **   A copy is found in the textfile GPL.txt and important notices to the   **
   18   **   license from the team is found in the textfile LICENSE.txt distributed **
   19   **   in these package.                                                      **
   20   **                                                                          **
   21   **   This copyright notice MUST APPEAR in all copies of the file!           **
   22   **   ********************************************************************   */
   23   
   24   /*
   25    * JPanelArbeitsplatzlager.java
   26    *
   27    * Created on 21. M?rz 2003, 21:04
   28    */
   29   
   30   package net.sourceforge.wisim.controller;
   31   
   32   import net.sourceforge.wisim.dao;
   33   import net.sourceforge.wisim.model;
   34   import java.util;
   35   import javax.swing.table;
   36   import javax.swing;
   37   
   38   /**
   39    * Gibt eine Tabellen?bersicht aller Arbeitspl?tze mit den Best?nden der
   40    * jeweiligen Einzelteile aus. Es lassen sich die Anzahl der Arbeiter
   41    * pro Arbeitsplatz einstellen.
   42    * @author  benjamin.pasero
   43    */
   44   public class JPanelArbeitsplatzlager extends javax.swing.JPanel {
   45       
   46       private WiSimDAO dao;
   47       private Vector arbeitsplaetze;
   48       private Collection arbeitsplatzLager;
   49       private int apAnzahl;
   50       private int apElemAnzahl;
   51       private JLabel label;
   52       private JProgressBar jprg;
   53       private boolean isBuilt;
   54       private boolean isActive;
   55       private Vector tempEingangslagerBestand;
   56       private Vector tempAusgangslagerBestand;
   57       
   58       //Logger
   59       private WiSimLogger wiSimLogger;
   60       
   61       /** Creates new form JPanelArbeitsplatzlager
   62        * @param wiSimMainController
   63        */
   64       public JPanelArbeitsplatzlager(WiSimMainController wiSimMainController) {
   65           wiSimLogger = wiSimMainController.getWiSimLogger();
   66           initDAO(wiSimMainController);
   67           arbeitsplaetze = new Vector();
   68           arbeitsplatzLager = new Vector();
   69           apAnzahl = 0;
   70           apElemAnzahl = 0;
   71           label = new JLabel();
   72           isBuilt = false;
   73           isActive = false;
   74           tempEingangslagerBestand = new Vector();
   75           tempAusgangslagerBestand = new Vector();
   76           initComponents();
   77       }
   78       
   79       private void initDAO(WiSimMainController wiSimMainController) {
   80           dao = wiSimMainController.getDAO();
   81       }
   82       
   83       /** This method is called from within the constructor to
   84        * initialize the form.
   85        * WARNING: Do NOT modify this code. The content of this method is
   86        * always regenerated by the Form Editor.
   87        */
   88       private void initComponents() {//GEN-BEGIN:initComponents
   89           jLabelArbeitsplatzlager = new javax.swing.JLabel();
   90           jPanelArbeitsplatzlager = new javax.swing.JPanel();
   91           jScrollPaneGesamtliste = new javax.swing.JScrollPane();
   92           jTableGesamtliste = new javax.swing.JTable();
   93           jPanelArbeitsplaetze = new javax.swing.JPanel();
   94           jScrollPaneArbeitsplaetze = new javax.swing.JScrollPane();
   95           jTableArbeitsplaetze = new JTable()
   96           {
   97               public TableCellRenderer getCellRenderer(int row, int column) {
   98                   TableColumn tableColumn = getColumnModel().getColumn(column);
   99                   TableCellRenderer renderer = tableColumn.getCellRenderer();
  100                   if (renderer == null) {
  101                       Class c = getColumnClass(column);
  102                       if( c.equals(Object.class) )
  103                       {
  104                           Object o = getValueAt(row,column);
  105                           if( o != null )
  106                           c = getValueAt(row,column).getClass();
  107                       }
  108                       renderer = getDefaultRenderer(c);
  109                   }
  110                   return renderer;
  111               }
  112   
  113               public TableCellEditor getCellEditor(int row, int column) {
  114                   TableColumn tableColumn = getColumnModel().getColumn(column);
  115                   TableCellEditor editor = tableColumn.getCellEditor();
  116                   if (editor == null) {
  117                       Class c = getColumnClass(column);
  118                       if( c.equals(Object.class) )
  119                       {
  120                           Object o = getValueAt(row,column);
  121                           if( o != null )
  122                           c = getValueAt(row,column).getClass();
  123                       }
  124                       editor = getDefaultEditor(c);
  125                   }
  126                   return editor;
  127               }
  128   
  129           };
  130           jTableArbeitsplaetze.setSelectionMode(0);
  131           jPanelArbeiter = new javax.swing.JPanel();
  132           jButtonOk = new javax.swing.JButton();
  133           jSpinnerArbeiter = new javax.swing.JSpinner();
  134           jLabelArbeitsplatz = new javax.swing.JLabel();
  135           jTextFieldArbeitsplatz = new javax.swing.JTextField();
  136           jLabelArbeiter = new javax.swing.JLabel();
  137   
  138           setLayout(null);
  139   
  140           addAncestorListener(new javax.swing.event.AncestorListener() {
  141               public void ancestorMoved(javax.swing.event.AncestorEvent evt) {
  142               }
  143               public void ancestorAdded(javax.swing.event.AncestorEvent evt) {
  144                   formAncestorAdded(evt);
  145               }
  146               public void ancestorRemoved(javax.swing.event.AncestorEvent evt) {
  147                   formAncestorRemoved(evt);
  148               }
  149           });
  150   
  151           jLabelArbeitsplatzlager.setFont(new java.awt.Font("Dialog", 1, 24));
  152           jLabelArbeitsplatzlager.setText("Arbeitsplatzlager");
  153           add(jLabelArbeitsplatzlager);
  154           jLabelArbeitsplatzlager.setBounds(310, 6, 220, 32);
  155   
  156           jPanelArbeitsplatzlager.setLayout(null);
  157   
  158           jPanelArbeitsplatzlager.setBorder(new javax.swing.border.TitledBorder("Arbeitsplatzlager"));
  159           jTableGesamtliste.setModel(new javax.swing.table.DefaultTableModel(
  160               new Object [][] {
  161                   {null, null, null, null},
  162                   {null, null, null, null},
  163                   {null, null, null, null},
  164                   {null, null, null, null}
  165               },
  166               new String [] {
  167                   "Artikelname", "aktueller Bestand", "Max. Bestand", "Belegung"
  168               }
  169           ) {
  170               boolean[] canEdit = new boolean [] {
  171                   false, false, false, false
  172               };
  173   
  174               public boolean isCellEditable(int rowIndex, int columnIndex) {
  175                   return canEdit [columnIndex];
  176               }
  177           });
  178           jTableGesamtliste.addAncestorListener(new javax.swing.event.AncestorListener() {
  179               public void ancestorMoved(javax.swing.event.AncestorEvent evt) {
  180               }
  181               public void ancestorAdded(javax.swing.event.AncestorEvent evt) {
  182                   jTableGesamtlisteAncestorAdded(evt);
  183               }
  184               public void ancestorRemoved(javax.swing.event.AncestorEvent evt) {
  185               }
  186           });
  187   
  188           jScrollPaneGesamtliste.setViewportView(jTableGesamtliste);
  189   
  190           jPanelArbeitsplatzlager.add(jScrollPaneGesamtliste);
  191           jScrollPaneGesamtliste.setBounds(10, 20, 550, 84);
  192   
  193           add(jPanelArbeitsplatzlager);
  194           jPanelArbeitsplatzlager.setBounds(10, 430, 570, 110);
  195   
  196           jPanelArbeitsplaetze.setLayout(null);
  197   
  198           jPanelArbeitsplaetze.setBorder(new javax.swing.border.TitledBorder("Arbeitspl\u00e4tze"));
  199           jScrollPaneArbeitsplaetze.addAncestorListener(new javax.swing.event.AncestorListener() {
  200               public void ancestorMoved(javax.swing.event.AncestorEvent evt) {
  201               }
  202               public void ancestorAdded(javax.swing.event.AncestorEvent evt) {
  203                   jScrollPaneArbeitsplaetzeAncestorAdded(evt);
  204               }
  205               public void ancestorRemoved(javax.swing.event.AncestorEvent evt) {
  206               }
  207           });
  208   
  209           jTableArbeitsplaetze.setModel(new javax.swing.table.DefaultTableModel(
  210               new Object [][] {
  211   
  212               },
  213               new String [] {
  214                   "Nr. ", "Beschreibung", "Vorg?nger", "Nachfolger", "Zeit", "Eingangslager", "Ausgangslager"
  215               }
  216           ) {
  217               boolean[] canEdit = new boolean [] {
  218                   false, false, false, false, false, false, false
  219               };
  220   
  221               public boolean isCellEditable(int rowIndex, int columnIndex) {
  222                   return canEdit [columnIndex];
  223               }
  224           });
  225           jTableArbeitsplaetze.addMouseListener(new java.awt.event.MouseAdapter() {
  226               public void mouseClicked(java.awt.event.MouseEvent evt) {
  227                   jTableArbeitsplaetzeMouseClicked(evt);
  228               }
  229           });
  230   
  231           jScrollPaneArbeitsplaetze.setViewportView(jTableArbeitsplaetze);
  232   
  233           jPanelArbeitsplaetze.add(jScrollPaneArbeitsplaetze);
  234           jScrollPaneArbeitsplaetze.setBounds(10, 20, 750, 372);
  235   
  236           add(jPanelArbeitsplaetze);
  237           jPanelArbeitsplaetze.setBounds(10, 30, 770, 400);
  238   
  239           jPanelArbeiter.setLayout(null);
  240   
  241           jPanelArbeiter.setBorder(new javax.swing.border.TitledBorder("Arbeiter"));
  242           jPanelArbeiter.addAncestorListener(new javax.swing.event.AncestorListener() {
  243               public void ancestorMoved(javax.swing.event.AncestorEvent evt) {
  244               }
  245               public void ancestorAdded(javax.swing.event.AncestorEvent evt) {
  246                   jPanelArbeiterAncestorAdded(evt);
  247               }
  248               public void ancestorRemoved(javax.swing.event.AncestorEvent evt) {
  249               }
  250           });
  251   
  252           jButtonOk.setText("OK");
  253           jButtonOk.addActionListener(new java.awt.event.ActionListener() {
  254               public void actionPerformed(java.awt.event.ActionEvent evt) {
  255                   jButtonOkActionPerformed(evt);
  256               }
  257           });
  258   
  259           jPanelArbeiter.add(jButtonOk);
  260           jButtonOk.setBounds(60, 80, 70, 20);
  261   
  262           jPanelArbeiter.add(jSpinnerArbeiter);
  263           jSpinnerArbeiter.setBounds(110, 50, 40, 24);
  264   
  265           jLabelArbeitsplatz.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
  266           jLabelArbeitsplatz.setText("Arbeitsplatz");
  267           jPanelArbeiter.add(jLabelArbeitsplatz);
  268           jLabelArbeitsplatz.setBounds(20, 20, 80, 16);
  269   
  270           jTextFieldArbeitsplatz.setEditable(false);
  271           jPanelArbeiter.add(jTextFieldArbeitsplatz);
  272           jTextFieldArbeitsplatz.setBounds(110, 20, 40, 20);
  273   
  274           jLabelArbeiter.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
  275           jLabelArbeiter.setText("Arbeiter");
  276           jPanelArbeiter.add(jLabelArbeiter);
  277           jLabelArbeiter.setBounds(40, 50, 60, 16);
  278   
  279           add(jPanelArbeiter);
  280           jPanelArbeiter.setBounds(590, 430, 190, 110);
  281   
  282       }//GEN-END:initComponents
  283       
  284       private void formAncestorRemoved(javax.swing.event.AncestorEvent evt) {//GEN-FIRST:event_formAncestorRemoved
  285           setIsActive(false);
  286       }//GEN-LAST:event_formAncestorRemoved
  287       
  288       private void formAncestorAdded(javax.swing.event.AncestorEvent evt) {//GEN-FIRST:event_formAncestorAdded
  289           setIsActive(true);
  290       }//GEN-LAST:event_formAncestorAdded
  291       
  292       private void jPanelArbeiterAncestorAdded(javax.swing.event.AncestorEvent evt) {//GEN-FIRST:event_jPanelArbeiterAncestorAdded
  293           //Reset des Arbeiter-Panes
  294           jTextFieldArbeitsplatz.setText("");
  295           jSpinnerArbeiter.setModel(new SpinnerNumberModel(0, 0, 0, 0));
  296       }//GEN-LAST:event_jPanelArbeiterAncestorAdded
  297       
  298       private void jButtonOkActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonOkActionPerformed
  299           if (!jTextFieldArbeitsplatz.getText().equals("")) {
  300               setArbeiterZahl(Integer.parseInt(jTextFieldArbeitsplatz.getText()), (Integer)jSpinnerArbeiter.getValue());
  301           }
  302           jTextFieldArbeitsplatz.grabFocus();
  303       }//GEN-LAST:event_jButtonOkActionPerformed
  304       
  305       private void jTableGesamtlisteAncestorAdded(javax.swing.event.AncestorEvent evt) {//GEN-FIRST:event_jTableGesamtlisteAncestorAdded
  306           resetGesamtListe();
  307       }//GEN-LAST:event_jTableGesamtlisteAncestorAdded
  308       
  309       private void jTableArbeitsplaetzeMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jTableArbeitsplaetzeMouseClicked
  310           getArbeitsplatzLagerElemente();
  311       }//GEN-LAST:event_jTableArbeitsplaetzeMouseClicked
  312       
  313       private void jScrollPaneArbeitsplaetzeAncestorAdded(javax.swing.event.AncestorEvent evt) {//GEN-FIRST:event_jScrollPaneArbeitsplaetzeAncestorAdded
  314           getArbeitsplatzlager();
  315       }//GEN-LAST:event_jScrollPaneArbeitsplaetzeAncestorAdded
  316       
  317       
  318       // Variables declaration - do not modify//GEN-BEGIN:variables
  319       private javax.swing.JButton jButtonOk;
  320       private javax.swing.JLabel jLabelArbeiter;
  321       private javax.swing.JLabel jLabelArbeitsplatz;
  322       private javax.swing.JLabel jLabelArbeitsplatzlager;
  323       private javax.swing.JPanel jPanelArbeiter;
  324       private javax.swing.JPanel jPanelArbeitsplaetze;
  325       private javax.swing.JPanel jPanelArbeitsplatzlager;
  326       private javax.swing.JScrollPane jScrollPaneArbeitsplaetze;
  327       private javax.swing.JScrollPane jScrollPaneGesamtliste;
  328       private javax.swing.JSpinner jSpinnerArbeiter;
  329       private javax.swing.JTable jTableArbeitsplaetze;
  330       private javax.swing.JTable jTableGesamtliste;
  331       private javax.swing.JTextField jTextFieldArbeitsplatz;
  332       // End of variables declaration//GEN-END:variables
  333       
  334       /** Holt alle Eingangs und Ausgangslager aus der DB. */
  335       public void getArbeitsplatzlager() {
  336           try {
  337               arbeitsplaetze = dao.getArbeitsplaetze();
  338           } catch (WiSimDAOException e) {
  339               wiSimLogger.log("getArbeitsplatzLager()", e);
  340           }
  341           apAnzahl = arbeitsplaetze.size();
  342           
  343           setArbeitsplatzTabelle();
  344           int i = 0;
  345           Iterator ap_it = arbeitsplaetze.iterator();
  346           while (ap_it.hasNext()) {
  347               Arbeitsplatz ap = (Arbeitsplatz) ap_it.next();
  348               
  349               jTableArbeitsplaetze.setValueAt(String.valueOf(ap.getNr()), i, 0);
  350               jTableArbeitsplaetze.setValueAt(ap.getBeschreibung(), i, 1);
  351               
  352               String vorgaenger = "";
  353               int[] vorgaengerNr = ap.getVorgaenger();
  354               if (vorgaengerNr.length > 0) {
  355                   vorgaenger = String.valueOf(vorgaengerNr[0]);
  356                   int x = 1;
  357                   while (x < vorgaengerNr.length) {
  358                       vorgaenger = vorgaenger + ", " + vorgaengerNr[x];
  359                       x++;
  360                   }
  361               }
  362               
  363               String nachfolger = "";
  364               int[] nachfolgerNr = ap.getNachfolger();
  365               if (nachfolgerNr.length > 0) {
  366                   nachfolger = String.valueOf(nachfolgerNr[0]);
  367                   int x = 1;
  368                   while (x < nachfolgerNr.length) {
  369                       nachfolger = nachfolger + ", " + nachfolgerNr[x];
  370                       x++;
  371                   }
  372               }
  373               
  374               if (vorgaenger.equals("0"))
  375                   jTableArbeitsplaetze.setValueAt("-", i, 2);
  376               else
  377                   jTableArbeitsplaetze.setValueAt(vorgaenger, i, 2);
  378               
  379               if (nachfolger.equals("0"))
  380                   jTableArbeitsplaetze.setValueAt("-", i, 3);
  381               else
  382                   jTableArbeitsplaetze.setValueAt(nachfolger, i, 3);
  383               
  384               jTableArbeitsplaetze.setValueAt(String.valueOf(ap.getDauer()), i, 4);
  385               
  386               ArbeitsplatzLager apLager = new ArbeitsplatzLager();
  387               try {
  388                   apLager = dao.getArbeitsplatzLager(ap.getNr(), 26, "Eingang");
  389               } catch (WiSimDAOException e) {
  390                   wiSimLogger.log("getArbeitsplatzLager()", e);
  391               }
  392               
  393               tempEingangslagerBestand.add(String.valueOf(apLager.getBestand()));
  394               
  395               jprg = new JProgressBar(0, 10);
  396               jprg.setValue(apLager.getBestand());
  397               jprg.setToolTipText("Bestand: " + apLager.getBestand());
  398               if (vorgaenger.equals("0"))
  399                   jprg.setEnabled(false);
  400               jTableArbeitsplaetze.setValueAt(jprg, i, 5);
  401               
  402               try {
  403                   apLager = dao.getArbeitsplatzLager(ap.getNr(), 26, "Ausgang");
  404               } catch (WiSimDAOException e) {
  405                   wiSimLogger.log("getArbeitsplatzLager()", e);
  406               }
  407               
  408               tempAusgangslagerBestand.add(String.valueOf(apLager.getBestand()));
  409               
  410               jprg = new JProgressBar(0, 10);
  411               jprg.setValue(apLager.getBestand());
  412               jprg.setToolTipText("Bestand: " + apLager.getBestand());
  413               if (nachfolger.equals("0"))
  414                   jprg.setEnabled(false);
  415               jTableArbeitsplaetze.setValueAt(jprg, i, 6);
  416               
  417               i++;
  418           }
  419       }
  420       
  421       /** Zeigt die Elemente eines Arbeitsplatzlagers an. */
  422       public void getArbeitsplatzLagerElemente() {
  423           Arbeitsplatz ap = (Arbeitsplatz) arbeitsplaetze.get(jTableArbeitsplaetze.getSelectedRow());
  424           
  425           //Arbeiter-Pane
  426           jTextFieldArbeitsplatz.setText(String.valueOf(ap.getNr()));
  427           jSpinnerArbeiter.setModel(new SpinnerNumberModel(ap.getAnzahlArbeiter(), 0, 10, 1));
  428           
  429           try {
  430               arbeitsplatzLager = dao.getArbeitsplatzLager(ap.getNr(), "Einzelteil");
  431           } catch (WiSimDAOException e) {
  432               wiSimLogger.log("getArbeitsplatzLagerElemente()", e);
  433           }
  434           apElemAnzahl = arbeitsplatzLager.size();
  435           
  436           if (apElemAnzahl > 0) {
  437               buildArbeitsplatzLagerElementeTabelle();
  438           } else {
  439               resetGesamtListe();
  440           }
  441       }
  442       
  443       /** Baut die Arbeitsplatz-Tabelle */
  444       public void buildArbeitsplatzLagerElementeTabelle() {
  445           setArbeitsplatzLagerElementeTabelle();
  446           int i = 0;
  447           Iterator arbeitsplatzLager_it = arbeitsplatzLager.iterator();
  448           while (arbeitsplatzLager_it.hasNext()) {
  449               ArbeitsplatzLager apLager = (ArbeitsplatzLager) arbeitsplatzLager_it.next();
  450               
  451               Einzelteil et = new Einzelteil();
  452               try {
  453                   et = dao.getEinzelteil(apLager.getEinzelteilNr());
  454               } catch (WiSimDAOException e) {
  455                   wiSimLogger.log("buildArbeitsplatzLagerElementeTabelle()", e);
  456               }
  457               
  458               jTableGesamtliste.setValueAt(et.getName(), i, 0);
  459               jTableGesamtliste.setValueAt(String.valueOf(apLager.getBestand()), i, 1);
  460               jTableGesamtliste.setValueAt(String.valueOf(apLager.getMaxBestand()), i, 2);
  461               
  462               IconGenerater iconGen = new IconGenerater();
  463               
  464               double actBestand = apLager.getBestand();
  465               double actMaxBestand = apLager.getMaxBestand();
  466               
  467               double rects = (double)(actBestand/actMaxBestand)*5;
  468               int filledrectsCount = (int) Math.round(rects);
  469               
  470               if (apLager.getBestand() < (apLager.getMaxBestand()/4)) {
  471                   jTableGesamtliste.setValueAt(iconGen.generateIcon(2, filledrectsCount), i, 3);
  472               } else if ((apLager.getBestand() < (apLager.getMaxBestand()/2))) {
  473                   jTableGesamtliste.setValueAt(iconGen.generateIcon(1, filledrectsCount), i, 3);
  474               } else {
  475                   jTableGesamtliste.setValueAt(iconGen.generateIcon(0, filledrectsCount), i, 3);
  476               }
  477               i++;
  478           }
  479       }
  480       
  481       /** Erstellt die ArbeitsplatzTabelle. */
  482       public void setArbeitsplatzTabelle() {
  483           //DefaultTableModel mit Variablen Zeilen, 4 TableHeads und nicht editierbaren Zellen
  484           Object[][] tableInit = new Object[apAnzahl][7];
  485           DefaultTableModel defTable = new DefaultTableModel(
  486           tableInit,
  487           new String [] {
  488               "Nr. ", "Beschreibung", "Vorg?nger", "Nachfolger", "Zeit", "Eingangslager", "Ausgangslager"
  489           }
  490           ) {
  491               boolean[] canEdit = new boolean [] {
  492                   false, false, false, false, false, false, false
  493               };
  494               public boolean isCellEditable(int rowIndex, int columnIndex) {
  495                   return canEdit [columnIndex];
  496               }
  497               public Class getColumnClass(int c) {
  498                   return getValueAt(0, c).getClass();
  499               }
  500           };
  501           jTableArbeitsplaetze.setModel(defTable);
  502           jTableArbeitsplaetze.setFocusable(false);
  503           jTableArbeitsplaetze.getTableHeader().setReorderingAllowed(false);
  504           
  505           javax.swing.table.TableColumn column = null;
  506           
  507           //Spaltenbreiten der Tabelle werden gesetzt
  508           for (int i = 0; i < 7; i++) {
  509               column = jTableArbeitsplaetze.getColumnModel().getColumn(i);
  510               switch (i) {
  511                   //Nr
  512                   case 0:
  513                       column.setPreferredWidth(30);
  514                       break;
  515                       //Beschreibung
  516                   case 1:
  517                       column.setPreferredWidth(300);
  518                       break;
  519                       //Vorg?nger
  520                   case 2:
  521                       column.setPreferredWidth(80);
  522                       break;
  523                       //Nachfolger
  524                   case 3:
  525                       column.setPreferredWidth(80);
  526                       break;
  527                       //Zeit
  528                   case 4:
  529                       column.setPreferredWidth(40);
  530                       break;
  531                       //Eingangslager
  532                   case 5:
  533                       column.setPreferredWidth(110);
  534                       break;
  535                       //Ausgangslager
  536                   case 6:
  537                       column.setPreferredWidth(110);
  538                       break;
  539               }
  540           }
  541           jTableArbeitsplaetze.setDefaultRenderer( JComponent.class, new JComponentCellRenderer() );
  542           jTableArbeitsplaetze.setDefaultEditor( JComponent.class, new JComponentCellEditor() );
  543       }
  544       
  545       /** Erstellt die ArbeitsplatzLagerElementeTabelle. */
  546       public void setArbeitsplatzLagerElementeTabelle() {
  547           //DefaultTableModel mit Variablen Zeilen, 4 TableHeads und nicht editierbaren Zellen
  548           Object[][] tableInit = new Object[4][4];
  549           DefaultTableModel defTable = new DefaultTableModel(
  550           tableInit,
  551           new String [] {
  552               "Artikelname", "aktueller Bestand", "Max. Bestand", "Belegung"
  553           }
  554           ) {
  555               boolean[] canEdit = new boolean [] {
  556                   false, false, false, false
  557               };
  558               public boolean isCellEditable(int rowIndex, int columnIndex) {
  559                   return canEdit [columnIndex];
  560               }
  561               public Class getColumnClass(int c) {
  562                   return getValueAt(0, c).getClass();
  563               }
  564           };
  565           jTableGesamtliste.setModel(defTable);
  566           jTableGesamtliste.setEnabled(false);
  567           jTableGesamtliste.getTableHeader().setReorderingAllowed(false);
  568       }
  569       
  570       /** Refreshed beide Tabellen */
  571       public void refreshArbeitsplatzLagerElementeTabelle() {
  572           
  573           //Refresh Tabelle Arbeitsplaetze
  574           try {
  575               arbeitsplaetze = dao.getArbeitsplaetze();
  576           } catch (WiSimDAOException e) {
  577               wiSimLogger.log("refreshArbeitsplatzLagerElementeTabelle()", e);
  578           }
  579           
  580           int i = 0;
  581           Iterator ap_it = arbeitsplaetze.iterator();
  582           while (ap_it.hasNext()) {
  583               Arbeitsplatz ap = (Arbeitsplatz) ap_it.next();
  584               
  585               ArbeitsplatzLager apLager = new ArbeitsplatzLager();
  586               try {
  587                   apLager = dao.getArbeitsplatzLager(ap.getNr(), 26, "Eingang");
  588               } catch (WiSimDAOException e) {
  589                   wiSimLogger.log("refreshArbeitsplatzLagerElementeTabelle()", e);
  590               }
  591               
  592               //Zelle wird nur refreshed wenn sich der Bestand ge?ndert hat!
  593               if (!((String)tempEingangslagerBestand.get(i)).equals(String.valueOf(apLager.getBestand()))) {
  594                   tempEingangslagerBestand.setElementAt(String.valueOf(apLager.getBestand()), i);
  595                   jprg = new JProgressBar(0, 10);
  596                   jprg.setValue(apLager.getBestand());
  597                   jprg.setToolTipText("Bestand: " + apLager.getBestand());
  598                   jTableArbeitsplaetze.setValueAt(jprg, i, 5);
  599               }
  600               
  601               try {
  602                   apLager = dao.getArbeitsplatzLager(ap.getNr(), 26, "Ausgang");
  603               } catch (WiSimDAOException e) {
  604                   wiSimLogger.log("refreshArbeitsplatzLagerElementeTabelle()", e);
  605               }
  606               
  607               //Zelle wird nur refreshed wenn sich der Bestand ge?ndert hat!
  608               if (!((String)tempAusgangslagerBestand.get(i)).equals(String.valueOf(apLager.getBestand()))) {
  609                   tempAusgangslagerBestand.setElementAt(String.valueOf(apLager.getBestand()), i);
  610                   jprg = new JProgressBar(0, 10);
  611                   jprg.setValue(apLager.getBestand());
  612                   jprg.setToolTipText("Bestand: " + apLager.getBestand());
  613                   jTableArbeitsplaetze.setValueAt(jprg, i, 6);
  614               }
  615               i++;
  616           }
  617           
  618           //Refresh Tabelle ArbeitsplatzLager
  619           if (jTableArbeitsplaetze.getSelectedRow() >= 0) {
  620               Arbeitsplatz ap = (Arbeitsplatz) arbeitsplaetze.get(jTableArbeitsplaetze.getSelectedRow());
  621               try {
  622                   arbeitsplatzLager = dao.getArbeitsplatzLager(ap.getNr(), "Einzelteil");
  623               } catch (WiSimDAOException e) {
  624                   wiSimLogger.log("refreshArbeitsplatzLagerElementeTabelle()", e);
  625               }
  626               apElemAnzahl = arbeitsplatzLager.size();
  627               i = 0;
  628               if (apElemAnzahl > 0) {
  629                   Iterator arbeitsplatzLager_it = arbeitsplatzLager.iterator();
  630                   while (arbeitsplatzLager_it.hasNext()) {
  631                       ArbeitsplatzLager apLager = (ArbeitsplatzLager) arbeitsplatzLager_it.next();
  632                       
  633                       //Zelle wird nur aktualisiert wenn sich der Bestand ge?ndert hat.
  634                       if (jTableGesamtliste.getValueAt(i, 1) != null && !jTableGesamtliste.getValueAt(i, 1).equals("")) {
  635                           if (apLager.getBestand() != Integer.parseInt((String) jTableGesamtliste.getValueAt(i, 1))) {
  636                               Einzelteil et = new Einzelteil();
  637                               try {
  638                                   et = dao.getEinzelteil(apLager.getEinzelteilNr());
  639                               } catch (WiSimDAOException e) {
  640                                   wiSimLogger.log("refreshArbeitsplatzLagerElementeTabelle()", e);
  641                               }
  642                               
  643                               jTableGesamtliste.setValueAt(String.valueOf(apLager.getBestand()), i, 1);
  644                               
  645                               IconGenerater iconGen = new IconGenerater();
  646                               
  647                               double actBestand = apLager.getBestand();
  648                               double actMaxBestand = apLager.getMaxBestand();
  649                               
  650                               double rects = (double)(actBestand/actMaxBestand)*5;
  651                               int filledrectsCount = (int) Math.round(rects);
  652                               
  653                               if (apLager.getBestand() < (apLager.getMaxBestand()/4)) {
  654                                   jTableGesamtliste.setValueAt(iconGen.generateIcon(2, filledrectsCount), i, 3);
  655                               } else if ((apLager.getBestand() < (apLager.getMaxBestand()/2))) {
  656                                   jTableGesamtliste.setValueAt(iconGen.generateIcon(1, filledrectsCount), i, 3);
  657                               } else {
  658                                   jTableGesamtliste.setValueAt(iconGen.generateIcon(0, filledrectsCount), i, 3);
  659                               }
  660                           }
  661                       }
  662                       i++;
  663                   }
  664               } else {
  665                   resetGesamtListe();
  666               }
  667           }
  668       }
  669       
  670       /** L?scht die GesamtListe unterhalb der Arbeitsplatztabelle. */
  671       public void resetGesamtListe() {
  672           int i = jTableGesamtliste.getRowCount()-1;
  673           while (i >= 0) {
  674               jTableGesamtliste.setValueAt("", 3-i, 0);
  675               jTableGesamtliste.setValueAt("", 3-i, 1);
  676               jTableGesamtliste.setValueAt("", 3-i, 2);
  677               jTableGesamtliste.setValueAt("", 3-i, 3);
  678               i--;
  679           }
  680       }
  681       
  682       /** Setzt die Zahl an Arbeiter an diesem Arbeitsplatz
  683        * @param apNr Arbeitsplatz Nr
  684        * @param anzahl Anzahl der Mitarbeiter
  685        */
  686       public void setArbeiterZahl(int apNr, Integer anzahl) {
  687           try {
  688               dao.setArbeiterZahl(apNr, anzahl.intValue());
  689           } catch (WiSimDAOWriteException e) {
  690               wiSimLogger.log("setArbeiterZahl()", e);
  691           }
  692           
  693           //Aktualisierung der arbeitsplaetze-Collection
  694           try {
  695               arbeitsplaetze = dao.getArbeitsplaetze();
  696           } catch (WiSimDAOException e) {
  697               wiSimLogger.log("setArbeiterZahl()", e);
  698           }
  699       }
  700   
  701       /** Setzt die Variable isBuilt
  702        * @param isBuilt
  703        */
  704       public void setIsBuilt(boolean isBuilt) {
  705           this.isBuilt = isBuilt;
  706       }
  707       
  708       /** Wurde das Pane schon einmal aufgebaut, so ist "isBuilt" = TRUE.
  709        *  Wichtig ist diese Variable f?r die Simulation: Wurde das Pane
  710        *  schon einmal aufgebaut, so m?ssen die Simulationsthread das Pane
  711        *  nicht noch einmal initialisieren!
  712        * @return boolean isBuilt
  713        */
  714       public boolean getIsBuilt() {
  715           return isBuilt;
  716       }
  717       
  718       /** Setzt die Variable isActive auf TRUE oder FALSE
  719        * @param isActive
  720        */
  721       public void setIsActive(boolean isActive) {
  722           this.isActive = isActive;
  723       }
  724       
  725       /** Befindet sich der Benutzer auf diesem Pane, so ist "isActive" = TRUE.
  726        *  Verl?sst der Benutzer das Pane, so ist "isActive" = FALSE.
  727        *  Wichtig ist diese Variable f?r die Simulation: Es wird nur das Pane
  728        *  aktualisiert, auf dem sich der Benutzer gerade befindet!
  729        * @return boolean isActive
  730        */
  731       public boolean getIsActive() {
  732           return isActive;
  733       }
  734   }

Save This Page
Home » openjdk-7 » net.sourceforge.wisim » controller » [javadoc | source]