Ejemplo n.º 1
0
/**
 * DOCUMENT ME!
 *
 * @author hell
 * @version $Revision$, $Date$
 */
public class CreateFlurstueckPanel extends JPanel implements DocumentListener, ActionListener {

  // ~ Instance fields --------------------------------------------------------

  FlurstueckSchluesselCustomBean schluessel;
  private final Logger log = org.apache.log4j.Logger.getLogger(this.getClass());
  private FlurstueckCustomBean currentFlurstueck = null;
  private FlurstueckSchluesselCustomBean currentFlurstueckSchluessel =
      FlurstueckSchluesselCustomBean.createNew();
  private boolean isIncomplete = false;
  private GemarkungCustomBean currentGemarkung = null;

  // Variables declaration - do not modify//GEN-BEGIN:variables
  private javax.swing.JButton btnCreateNewFlurstueck;
  private final javax.swing.JComboBox cboFlur = new javax.swing.JComboBox();
  private final javax.swing.JComboBox cboGemarkung = new javax.swing.JComboBox();
  private javax.swing.JLabel jLabel2;
  private javax.swing.JLabel jLabel3;
  private javax.swing.JPanel jPanel1;
  private javax.swing.JScrollPane jScrollPane1;
  private javax.swing.JLabel lblGemarkung;
  private javax.swing.JPanel panAll;
  private javax.swing.JTextField txtFlurstueck;
  // End of variables declaration//GEN-END:variables

  // ~ Constructors -----------------------------------------------------------

  /** Creates a new CreateFlurstueckPanel object. */
  public CreateFlurstueckPanel() {
    // super(null);
    initComponents();
    cboFlur.setToolTipText("Flur");
    txtFlurstueck.setToolTipText("Flurstueck");
    txtFlurstueck.setEnabled(false);
    cboGemarkung.setEditable(false);
    cboFlur.setEditable(false);
    cboGemarkung.setToolTipText("Gemarkung");
    btnCreateNewFlurstueck.setEnabled(false);
    txtFlurstueck.getDocument().addDocumentListener(this);
    txtFlurstueck.addActionListener(this);
    try {
      final Thread keyRetrieverThread =
          new Thread() {

            @Override
            public void run() {
              if (log.isDebugEnabled()) {
                log.debug("Abrufen der Gemarkungen vom Server");
              }
              final Collection gemKeys = CidsBroker.getInstance().getGemarkungsKeys();
              if (gemKeys != null) {
                final Vector gemKeyList = new Vector(gemKeys);
                Collections.sort(gemKeyList);
                cboGemarkung.setModel(new KeyComboboxModel(gemKeyList));
                cboGemarkung.setEnabled(true);
              } else {
                cboGemarkung.setModel(new KeyComboboxModel());
              }
            }
          };
      keyRetrieverThread.setPriority(Thread.NORM_PRIORITY);
      keyRetrieverThread.start();
    } catch (Exception ex) {
      log.error("Fehler beim Abrufen der Gemarkungen");
    }
  }

  /**
   * Creates new form NewFlurstueckPanel.
   *
   * @param schluessel DOCUMENT ME!
   */
  public CreateFlurstueckPanel(final FlurstueckSchluesselCustomBean schluessel) {
    this.schluessel = schluessel;
    initComponents();
    cboFlur.setToolTipText("Flur");
    txtFlurstueck.setToolTipText("Flurstueck");
    txtFlurstueck.setEnabled(false);
    cboGemarkung.setEditable(false);
    cboFlur.setEditable(false);
    cboGemarkung.setToolTipText("Gemarkung");
    btnCreateNewFlurstueck.setEnabled(false);
    txtFlurstueck.getDocument().addDocumentListener(this);
    txtFlurstueck.addActionListener(this);
    try {
      final Thread keyRetrieverThread =
          new Thread() {

            @Override
            public void run() {
              if (log.isDebugEnabled()) {
                log.debug("Abrufen der Gemarkungen vom Server");
              }
              final Collection gemKeys = CidsBroker.getInstance().getGemarkungsKeys();
              if (gemKeys != null) {
                final Vector gemKeyList = new Vector(gemKeys);
                Collections.sort(gemKeyList);
                cboGemarkung.setModel(new KeyComboboxModel(gemKeyList));
                cboGemarkung.setEnabled(true);
              } else {
                cboGemarkung.setModel(new KeyComboboxModel());
              }
              if (schluessel != null) {
                if (log.isDebugEnabled()) {
                  log.debug("Current Gemarkung: " + schluessel.getGemarkung());
                }
                cboGemarkung.setSelectedItem(schluessel.getGemarkung());
                cboGemarkung.getEditor().setItem(schluessel.getGemarkung());
              }
            }
          };
      keyRetrieverThread.setPriority(Thread.NORM_PRIORITY);
      keyRetrieverThread.start();
    } catch (Exception ex) {
      log.error("Fehler beim Abrufen der Gemarkungen");
    }
  }

  // ~ Methods ----------------------------------------------------------------

  /**
   * This method is called from within the constructor to initialize the form. WARNING: Do NOT
   * modify this code. The content of this method is always regenerated by the Form Editor.
   */
  // <editor-fold defaultstate="collapsed" desc=" Generated Code ">//GEN-BEGIN:initComponents
  private void initComponents() {
    panAll = new javax.swing.JPanel();
    jScrollPane1 = new javax.swing.JScrollPane();
    jPanel1 = new javax.swing.JPanel();
    btnCreateNewFlurstueck = new javax.swing.JButton();
    txtFlurstueck = new javax.swing.JTextField();
    lblGemarkung = new javax.swing.JLabel();
    jLabel2 = new javax.swing.JLabel();
    jLabel3 = new javax.swing.JLabel();

    setPreferredSize(new java.awt.Dimension(20, 20));
    panAll.setLayout(new java.awt.BorderLayout());

    panAll.setBorder(
        javax.swing.BorderFactory.createTitledBorder(
            null,
            "",
            javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION,
            javax.swing.border.TitledBorder.BOTTOM));
    panAll.setPreferredSize(new java.awt.Dimension(50, 100));
    jScrollPane1.setBorder(null);
    jPanel1.setPreferredSize(new java.awt.Dimension(20, 20));
    btnCreateNewFlurstueck.setIcon(
        new javax.swing.ImageIcon(
            getClass().getResource("/de/cismet/lagis/ressource/icons/toolbar/ok.png")));
    btnCreateNewFlurstueck.setBorder(null);
    btnCreateNewFlurstueck.setBorderPainted(false);
    btnCreateNewFlurstueck.setContentAreaFilled(false);
    btnCreateNewFlurstueck.addActionListener(
        new java.awt.event.ActionListener() {

          @Override
          public void actionPerformed(final java.awt.event.ActionEvent evt) {
            btnCreateNewFlurstueckActionPerformed(evt);
          }
        });

    cboFlur.setEditable(true);
    cboFlur.setMaximumSize(new java.awt.Dimension(90, 23));
    cboFlur.setMinimumSize(new java.awt.Dimension(90, 23));
    cboFlur.setPreferredSize(new java.awt.Dimension(90, 23));
    cboFlur.addActionListener(
        new java.awt.event.ActionListener() {

          @Override
          public void actionPerformed(final java.awt.event.ActionEvent evt) {
            cboFlurActionPerformed(evt);
          }
        });

    cboGemarkung.setEditable(true);
    cboGemarkung.setMaximumSize(new java.awt.Dimension(90, 23));
    cboGemarkung.setMinimumSize(new java.awt.Dimension(90, 23));
    cboGemarkung.setPreferredSize(new java.awt.Dimension(90, 23));
    cboGemarkung.addActionListener(
        new java.awt.event.ActionListener() {

          @Override
          public void actionPerformed(final java.awt.event.ActionEvent evt) {
            cboGemarkungActionPerformed(evt);
          }
        });

    lblGemarkung.setText("Gemarkung");

    jLabel2.setText("Flur");

    jLabel3.setText("Flurstueck");

    final org.jdesktop.layout.GroupLayout jPanel1Layout =
        new org.jdesktop.layout.GroupLayout(jPanel1);
    jPanel1.setLayout(jPanel1Layout);
    jPanel1Layout.setHorizontalGroup(
        jPanel1Layout
            .createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
            .add(
                jPanel1Layout
                    .createSequentialGroup()
                    .addContainerGap()
                    .add(
                        jPanel1Layout
                            .createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                            .add(
                                cboGemarkung,
                                org.jdesktop.layout.GroupLayout.PREFERRED_SIZE,
                                org.jdesktop.layout.GroupLayout.DEFAULT_SIZE,
                                org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
                            .add(lblGemarkung))
                    .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
                    .add(
                        jPanel1Layout
                            .createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                            .add(
                                cboFlur,
                                org.jdesktop.layout.GroupLayout.PREFERRED_SIZE,
                                org.jdesktop.layout.GroupLayout.DEFAULT_SIZE,
                                org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
                            .add(jLabel2))
                    .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
                    .add(
                        jPanel1Layout
                            .createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
                            .add(jLabel3)
                            .add(
                                txtFlurstueck,
                                org.jdesktop.layout.GroupLayout.PREFERRED_SIZE,
                                90,
                                org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
                    .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
                    .add(
                        btnCreateNewFlurstueck,
                        org.jdesktop.layout.GroupLayout.PREFERRED_SIZE,
                        32,
                        org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
                    .addContainerGap(
                        org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)));
    jPanel1Layout.setVerticalGroup(
        jPanel1Layout
            .createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
            .add(
                jPanel1Layout
                    .createSequentialGroup()
                    .addContainerGap()
                    .add(
                        jPanel1Layout
                            .createParallelGroup(org.jdesktop.layout.GroupLayout.TRAILING)
                            .add(
                                jPanel1Layout
                                    .createSequentialGroup()
                                    .add(
                                        jPanel1Layout
                                            .createParallelGroup(
                                                org.jdesktop.layout.GroupLayout.BASELINE)
                                            .add(jLabel2)
                                            .add(jLabel3)
                                            .add(lblGemarkung))
                                    .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
                                    .add(
                                        jPanel1Layout
                                            .createParallelGroup(
                                                org.jdesktop.layout.GroupLayout.BASELINE)
                                            .add(
                                                cboGemarkung,
                                                org.jdesktop.layout.GroupLayout.PREFERRED_SIZE,
                                                org.jdesktop.layout.GroupLayout.DEFAULT_SIZE,
                                                org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
                                            .add(
                                                cboFlur,
                                                org.jdesktop.layout.GroupLayout.PREFERRED_SIZE,
                                                org.jdesktop.layout.GroupLayout.DEFAULT_SIZE,
                                                org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
                                            .add(
                                                txtFlurstueck,
                                                org.jdesktop.layout.GroupLayout.PREFERRED_SIZE,
                                                22,
                                                org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)))
                            .add(
                                btnCreateNewFlurstueck,
                                org.jdesktop.layout.GroupLayout.PREFERRED_SIZE,
                                33,
                                org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
                    .addContainerGap(28, Short.MAX_VALUE)));
    jScrollPane1.setViewportView(jPanel1);

    panAll.add(jScrollPane1, java.awt.BorderLayout.CENTER);

    final org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(this);
    this.setLayout(layout);
    layout.setHorizontalGroup(
        layout
            .createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
            .add(
                layout
                    .createSequentialGroup()
                    .addContainerGap()
                    .add(
                        panAll,
                        org.jdesktop.layout.GroupLayout.PREFERRED_SIZE,
                        348,
                        org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
                    .addContainerGap(
                        org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)));
    layout.setVerticalGroup(
        layout
            .createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
            .add(
                layout
                    .createSequentialGroup()
                    .addContainerGap()
                    .add(panAll, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 95, Short.MAX_VALUE)
                    .addContainerGap()));
  } // </editor-fold>//GEN-END:initComponents

  /**
   * DOCUMENT ME!
   *
   * @param evt DOCUMENT ME!
   */
  private void btnCreateNewFlurstueckActionPerformed(
      final java.awt.event.ActionEvent
          evt) { // GEN-FIRST:event_btnCreateNewFlurstueckActionPerformed
    try {
      if (log.isDebugEnabled()) {
        log.debug("create flurstück performed");
      }
      // lblStatus.setText("");
      ((TitledBorder) panAll.getBorder()).setTitle("");
      final FlurstueckSchluesselCustomBean checkedKey =
          CidsBroker.getInstance().completeFlurstueckSchluessel(currentFlurstueckSchluessel);
      if (checkedKey != null) {
        if (log.isDebugEnabled()) {
          log.debug("Flurstück ist bereits vorhanden");
        }
        // ((lblStatus.setText("Flurstück ist bereits vorhanden, bitte wählen Sie einen anderen
        // Schlüssel.");
        ((TitledBorder) panAll.getBorder())
            .setTitle("Flurstück ist bereits vorhanden, bitte wählen Sie einen anderen Schlüssel.");
      } else {
        if (log.isDebugEnabled()) {
          log.debug("Flurstück ist noch nicht vorhanden und kann angelegt werden");
        }
        final FlurstueckCustomBean newFlurstueck =
            CidsBroker.getInstance().createFlurstueck(currentFlurstueckSchluessel);
        if (newFlurstueck != null) {
          if (log.isDebugEnabled()) {
            log.debug("Id des neuen Flurstücks" + newFlurstueck.getId());
          }
          // LagisBroker.getInstance().fireFlurstueckChanged(newFlurstueck);
          LagisBroker.getInstance().loadFlurstueck(newFlurstueck.getFlurstueckSchluessel());
          StaticSwingTools.getParentFrame(this).dispose();
        } else {
          if (log.isDebugEnabled()) {
            log.debug("Neues Flurstücks ist null");
            log.debug("Fehler beim Anlegen den Flurstuecks.");
          }
        }
      }
    } catch (Exception ex) {
      log.error("Fehler beim anlegen des Flurstuecks: " + ex);
    }
  } // GEN-LAST:event_btnCreateNewFlurstueckActionPerformed

  /**
   * DOCUMENT ME!
   *
   * @param evt DOCUMENT ME!
   */
  private void cboFlurActionPerformed(
      final java.awt.event.ActionEvent evt) { // GEN-FIRST:event_cboFlurActionPerformed
    if ((evt != null) && (evt.getSource() instanceof JComboBox)) {
      if (evt.getActionCommand().equals("comboBoxChanged")) {
        final Object selectedItem = cboFlur.getSelectedItem();
        if ((selectedItem != null) && (selectedItem instanceof FlurKey)) {
          if (log.isDebugEnabled()) {
            log.debug("selected Item: " + selectedItem);
            log.debug("selected Item: " + ((FlurKey) selectedItem).getFlurId());
          }
          currentFlurstueckSchluessel.setFlur(((FlurKey) selectedItem).getFlurId());
          lockFlurstueckCbo(false);
        }
      } else if (evt.getActionCommand().equals("comboBoxEdited")) {
      }
    }
  } // GEN-LAST:event_cboFlurActionPerformed

  /**
   * DOCUMENT ME!
   *
   * @param evt DOCUMENT ME!
   */
  private void cboGemarkungActionPerformed(
      final java.awt.event.ActionEvent evt) { // GEN-FIRST:event_cboGemarkungActionPerformed
    try {
      isIncomplete = false;
      currentFlurstueckSchluessel = null;
      lockFlurCbo(true);
      lockFlurstueckCbo(true);
      currentFlurstueckSchluessel = FlurstueckSchluesselCustomBean.createNew();
      // reset the Flur/FlurstueckCombobox cboFlur.setModel(new KeyComboboxModel());
      // cboFlur.setEnabled(false);
      // cboFlurstueck.setModel(new KeyComboboxModel()); cboFlurstueck.setEnabled(false);

      final GemarkungCustomBean current;
      final boolean handMade;
      final boolean unknownKey;

      if ((evt != null) && (evt.getSource() instanceof JComboBox)) {
        // if it is selected or edited
        if (evt.getActionCommand().equals("comboBoxChanged")) {
          if (log.isDebugEnabled()) {
            log.debug("GemarkungChanged");
          }

          final Object selectedItem = cboGemarkung.getSelectedItem();
          if (selectedItem instanceof GemarkungCustomBean) {
            current = (GemarkungCustomBean) selectedItem;
            currentGemarkung = current;
          } else {
            current = null;
            currentGemarkung = null;

            return;
          }

          // is Not edited
          handMade = false;
          // is Not out of the DB
          unknownKey = false;

          //                } else if (evt.getActionCommand().equals("comboBoxEdited")){
          //                    isIncomplete = true;
          //                    log.debug("GemarkungEdited");
          //                    current = new GemarkungCustomBean();
          //                    //TODO I have to query all gemarkungen because the user can enter
          // either the key or the name but i cant query the wfs with only the name
          //                    //Seems to work
          //
          //                    //Get the text
          //                    String gemInput = ((JComboBox)
          // evt.getSource()).getEditor().getItem().toString();
          //                    try{
          //                        //is a key
          //                        current.setSchluessel(Integer.parseInt(gemInput));
          //                    }catch(NumberFormatException ex){
          //                        //is a bezeichnung
          //                        if(gemInput != null && gemInput.equals("")){
          //                            currentGemarkung = null;
          //
          //                            cboGemarkung.setSelectedItem(null);
          //                            return;
          //                        } else {
          //                            current.setBezeichnung(gemInput);
          //                        }
          //                    }
          //
          //                    if(current.getSchluessel() != null){
          //                        unknownKey = true;
          //                    } else{
          //                        unknownKey = false;
          //                    }
          //
          //                    handMade=true;
        } else {
          current = null;
          currentGemarkung = null;

          handMade = false;
          unknownKey = false;
        }

        if (current != null) {
          final Thread keyRetrieverThread =
              new Thread() {

                @Override
                public void run() {
                  if (log.isDebugEnabled()) {
                    log.debug("Abrufen der FlurKeys vom Server");
                  }
                  // if(isIncomplete){
                  // log.debug("isIncomplete(Thread)");
                  currentGemarkung = CidsBroker.getInstance().completeGemarkung(current);
                  if (currentGemarkung == null) {
                    if (log.isDebugEnabled()) {
                      log.debug("liefert keine komplette Germarkung (Thread)");
                    }
                    currentGemarkung = current;
                  }
                  //                                } else {
                  //                                    log.debug("liefert komplette Germarkung
                  // (Thread)");
                  //                                    cboGemarkung.setSelectedItem(gemarkung);
                  //                                    return;
                  //                                }
                  // }
                  currentFlurstueckSchluessel.setGemarkung(currentGemarkung);
                  final Collection flurKeys =
                      CidsBroker.getInstance().getDependingKeysForKey(currentGemarkung);
                  KeyComboboxModel keyModel;
                  if (flurKeys != null) {
                    final Vector flurKeyList = new Vector(flurKeys);
                    Collections.sort(flurKeyList);
                    keyModel = new KeyComboboxModel(flurKeyList);
                  } else {
                    keyModel = new KeyComboboxModel();
                  }
                  // KeyComboboxModel keyModel = new KeyComboboxModel(new
                  // Vector<Key>(CidsBroker.getInstance().getKeysDependingOnKey((currentGemarkung))));
                  cboFlur.setModel(keyModel);
                  lockFlurCbo(false);
                  cboFlur.requestFocus();
                  // edited && no entries in Database
                  if (handMade && (keyModel.getSize() == 0)) {
                    if (unknownKey) {
                      // cboGemarkung.getEditor().getEditorComponent().setBackground(UNKOWN_COLOR);
                      // ((DefaultComboBoxModel)cboGemarkung.getModel()).addElement(current);
                      // cboGemarkung.setSelectedItem(current);
                    } else {
                      // no chance to find flurstueck by name

                      // cboGemarkung.getEditor().getEditorComponent().setBackground(Color.RED);
                    }
                  } else {
                    // everything ok;

                    // cboGemarkung.setSelectedItem(current);
                    // cboGemarkung.getEditor().getEditorComponent().setBackground(ACCEPTED_COLOR);
                  }
                }
              };
          keyRetrieverThread.setPriority(Thread.NORM_PRIORITY);
          keyRetrieverThread.start();
        }
      }
    } catch (Exception ex) {
      log.error("Fehler beim setzen der Gemarkung", ex);
    }
  } // GEN-LAST:event_cboGemarkungActionPerformed

  /**
   * DOCUMENT ME!
   *
   * @param flur DOCUMENT ME!
   */
  public void lockFlurCbo(final boolean flur) {
    if (flur) {
      cboFlur.setModel(new KeyComboboxModel());
      ;
      cboFlur.setEnabled(false);
    } else {
      cboFlur.setEnabled(true);
    }
  }

  /**
   * DOCUMENT ME!
   *
   * @param flurstueck DOCUMENT ME!
   */
  public void lockFlurstueckCbo(final boolean flurstueck) {
    if (flurstueck) {
      txtFlurstueck.setEnabled(false);
      txtFlurstueck.setText("");
      setHighlightColor(LagisBroker.ACCEPTED_COLOR);
    } else {
      txtFlurstueck.setEnabled(true);
    }
  }

  /**
   * DOCUMENT ME!
   *
   * @param color DOCUMENT ME!
   */
  public void setHighlightColor(final Color color) {
    cboGemarkung.getEditor().getEditorComponent().setBackground(color);
    cboFlur.getEditor().getEditorComponent().setBackground(color);
    txtFlurstueck.setBackground(color);
  }

  @Override
  public void removeUpdate(final DocumentEvent e) {
    final String text = txtFlurstueck.getText();
    if (log.isDebugEnabled()) {
      log.debug("Flurstück String changed: " + text);
    }
    if (text != null) {
      if (text.length() != 0) {
        final String[] tokens = text.split("/");
        if (log.isDebugEnabled()) {
          // TODO the user input is not validated
          log.debug("Anzahl teile der Flurstücksid: " + tokens.length);
        }
        try {
          switch (tokens.length) {
            case 1:
              {
                if (log.isDebugEnabled()) {
                  log.debug("Eine Zahl");
                }
                // Integer.parseInt(tokens[0]);
                currentFlurstueckSchluessel.setFlurstueckZaehler(Integer.parseInt(tokens[0]));
                currentFlurstueckSchluessel.setFlurstueckNenner(0);
                setHighlightColor(LagisBroker.SUCCESSFUL_COLOR);
                btnCreateNewFlurstueck.setEnabled(true);
                break;
              }
            case 2:
              {
                if (log.isDebugEnabled()) {
                  log.debug("Zwei Zahlen");
                }
                // Integer.parseInt(tokens[0]);
                // Integer.parseInt(tokens[1]);
                currentFlurstueckSchluessel.setFlurstueckZaehler(Integer.parseInt(tokens[0]));
                currentFlurstueckSchluessel.setFlurstueckNenner(Integer.parseInt(tokens[1]));
                setHighlightColor(LagisBroker.SUCCESSFUL_COLOR);
                btnCreateNewFlurstueck.setEnabled(true);
                break;
              }
            default:
              {
                log.warn(
                    "Falsche Eingabe erwarted wird ein Flurstueck ohne oder mit Nenner z.B. 10\n");
                setHighlightColor(LagisBroker.ERROR_COLOR);
                btnCreateNewFlurstueck.setEnabled(false);
              }
          }
        } catch (Exception ex) {
          log.error("Fehler beim parsen des Flurstück Zähler/Nenner", ex);
          setHighlightColor(LagisBroker.ERROR_COLOR);
          btnCreateNewFlurstueck.setEnabled(false);
        }
      } else {
        btnCreateNewFlurstueck.setEnabled(false);
      }
    } else {
      btnCreateNewFlurstueck.setEnabled(false);
    }
  }

  @Override
  public void insertUpdate(final DocumentEvent e) {
    final String text = txtFlurstueck.getText();
    if (log.isDebugEnabled()) {
      log.debug("Flurstück String changed: " + text);
    }
    if (text != null) {
      if (text.length() != 0) {
        final String[] tokens = text.split("/");
        if (log.isDebugEnabled()) {
          // TODO the user input is not validated
          log.debug("Anzahl teile der Flurstücksid: " + tokens.length);
        }
        try {
          switch (tokens.length) {
            case 1:
              {
                if (log.isDebugEnabled()) {
                  log.debug("Eine Zahl");
                }
                // Integer.parseInt(tokens[0]);
                currentFlurstueckSchluessel.setFlurstueckZaehler(Integer.parseInt(tokens[0]));
                currentFlurstueckSchluessel.setFlurstueckNenner(0);
                setHighlightColor(LagisBroker.SUCCESSFUL_COLOR);
                btnCreateNewFlurstueck.setEnabled(true);
                break;
              }
            case 2:
              {
                if (log.isDebugEnabled()) {
                  log.debug("Zwei Zahlen");
                }
                // Integer.parseInt(tokens[0]);
                // Integer.parseInt(tokens[1]);
                currentFlurstueckSchluessel.setFlurstueckZaehler(Integer.parseInt(tokens[0]));
                currentFlurstueckSchluessel.setFlurstueckNenner(Integer.parseInt(tokens[1]));
                setHighlightColor(LagisBroker.SUCCESSFUL_COLOR);
                btnCreateNewFlurstueck.setEnabled(true);
                break;
              }
            default:
              {
                log.warn(
                    "Falsche Eingabe erwarted wird ein Flurstueck ohne oder mit Nenner z.B. 10\n");
                setHighlightColor(LagisBroker.ERROR_COLOR);
                btnCreateNewFlurstueck.setEnabled(false);
              }
          }
        } catch (Exception ex) {
          log.error("Fehler beim parsen des Flurstück Zähler/Nenner", ex);
          setHighlightColor(LagisBroker.ERROR_COLOR);
          btnCreateNewFlurstueck.setEnabled(false);
        }
      } else {
        btnCreateNewFlurstueck.setEnabled(false);
      }
    } else {
      btnCreateNewFlurstueck.setEnabled(false);
    }
  }

  @Override
  public void changedUpdate(final DocumentEvent e) {}

  @Override
  public void actionPerformed(final ActionEvent e) {
    if (e.getSource() instanceof JTextField) {
      if (btnCreateNewFlurstueck.isEnabled()) {
        // Is this the proper way ?? I
        btnCreateNewFlurstueckActionPerformed(new ActionEvent(this, 1, "createNewFlurstueck"));
      }
    }
  }
}
Ejemplo n.º 2
0
  /**
   * DOCUMENT ME!
   *
   * @param evt DOCUMENT ME!
   */
  private void cboGemarkungActionPerformed(
      final java.awt.event.ActionEvent evt) { // GEN-FIRST:event_cboGemarkungActionPerformed
    try {
      isIncomplete = false;
      currentFlurstueckSchluessel = null;
      lockFlurCbo(true);
      lockFlurstueckCbo(true);
      currentFlurstueckSchluessel = FlurstueckSchluesselCustomBean.createNew();
      // reset the Flur/FlurstueckCombobox cboFlur.setModel(new KeyComboboxModel());
      // cboFlur.setEnabled(false);
      // cboFlurstueck.setModel(new KeyComboboxModel()); cboFlurstueck.setEnabled(false);

      final GemarkungCustomBean current;
      final boolean handMade;
      final boolean unknownKey;

      if ((evt != null) && (evt.getSource() instanceof JComboBox)) {
        // if it is selected or edited
        if (evt.getActionCommand().equals("comboBoxChanged")) {
          if (log.isDebugEnabled()) {
            log.debug("GemarkungChanged");
          }

          final Object selectedItem = cboGemarkung.getSelectedItem();
          if (selectedItem instanceof GemarkungCustomBean) {
            current = (GemarkungCustomBean) selectedItem;
            currentGemarkung = current;
          } else {
            current = null;
            currentGemarkung = null;

            return;
          }

          // is Not edited
          handMade = false;
          // is Not out of the DB
          unknownKey = false;

          //                } else if (evt.getActionCommand().equals("comboBoxEdited")){
          //                    isIncomplete = true;
          //                    log.debug("GemarkungEdited");
          //                    current = new GemarkungCustomBean();
          //                    //TODO I have to query all gemarkungen because the user can enter
          // either the key or the name but i cant query the wfs with only the name
          //                    //Seems to work
          //
          //                    //Get the text
          //                    String gemInput = ((JComboBox)
          // evt.getSource()).getEditor().getItem().toString();
          //                    try{
          //                        //is a key
          //                        current.setSchluessel(Integer.parseInt(gemInput));
          //                    }catch(NumberFormatException ex){
          //                        //is a bezeichnung
          //                        if(gemInput != null && gemInput.equals("")){
          //                            currentGemarkung = null;
          //
          //                            cboGemarkung.setSelectedItem(null);
          //                            return;
          //                        } else {
          //                            current.setBezeichnung(gemInput);
          //                        }
          //                    }
          //
          //                    if(current.getSchluessel() != null){
          //                        unknownKey = true;
          //                    } else{
          //                        unknownKey = false;
          //                    }
          //
          //                    handMade=true;
        } else {
          current = null;
          currentGemarkung = null;

          handMade = false;
          unknownKey = false;
        }

        if (current != null) {
          final Thread keyRetrieverThread =
              new Thread() {

                @Override
                public void run() {
                  if (log.isDebugEnabled()) {
                    log.debug("Abrufen der FlurKeys vom Server");
                  }
                  // if(isIncomplete){
                  // log.debug("isIncomplete(Thread)");
                  currentGemarkung = CidsBroker.getInstance().completeGemarkung(current);
                  if (currentGemarkung == null) {
                    if (log.isDebugEnabled()) {
                      log.debug("liefert keine komplette Germarkung (Thread)");
                    }
                    currentGemarkung = current;
                  }
                  //                                } else {
                  //                                    log.debug("liefert komplette Germarkung
                  // (Thread)");
                  //                                    cboGemarkung.setSelectedItem(gemarkung);
                  //                                    return;
                  //                                }
                  // }
                  currentFlurstueckSchluessel.setGemarkung(currentGemarkung);
                  final Collection flurKeys =
                      CidsBroker.getInstance().getDependingKeysForKey(currentGemarkung);
                  KeyComboboxModel keyModel;
                  if (flurKeys != null) {
                    final Vector flurKeyList = new Vector(flurKeys);
                    Collections.sort(flurKeyList);
                    keyModel = new KeyComboboxModel(flurKeyList);
                  } else {
                    keyModel = new KeyComboboxModel();
                  }
                  // KeyComboboxModel keyModel = new KeyComboboxModel(new
                  // Vector<Key>(CidsBroker.getInstance().getKeysDependingOnKey((currentGemarkung))));
                  cboFlur.setModel(keyModel);
                  lockFlurCbo(false);
                  cboFlur.requestFocus();
                  // edited && no entries in Database
                  if (handMade && (keyModel.getSize() == 0)) {
                    if (unknownKey) {
                      // cboGemarkung.getEditor().getEditorComponent().setBackground(UNKOWN_COLOR);
                      // ((DefaultComboBoxModel)cboGemarkung.getModel()).addElement(current);
                      // cboGemarkung.setSelectedItem(current);
                    } else {
                      // no chance to find flurstueck by name

                      // cboGemarkung.getEditor().getEditorComponent().setBackground(Color.RED);
                    }
                  } else {
                    // everything ok;

                    // cboGemarkung.setSelectedItem(current);
                    // cboGemarkung.getEditor().getEditorComponent().setBackground(ACCEPTED_COLOR);
                  }
                }
              };
          keyRetrieverThread.setPriority(Thread.NORM_PRIORITY);
          keyRetrieverThread.start();
        }
      }
    } catch (Exception ex) {
      log.error("Fehler beim setzen der Gemarkung", ex);
    }
  } // GEN-LAST:event_cboGemarkungActionPerformed