コード例 #1
0
  private class Controller implements ActionListener {
    private boolean closedByOk = false;
    private Employee employee = null;

    private Service service = Service.getService();

    public void fillCbxCompanies() {
      DefaultComboBoxModel<Company> cbxCompaniesModel =
          new DefaultComboBoxModel<Company>(service.getAllCompanies().toArray(new Company[0]));
      cbxCompaniesModel.insertElementAt(new Company("-- none --", 0), 0);
      cbxCompanies.setModel(cbxCompaniesModel);
    }

    private void updateView() {
      if (employee != null) {
        txfName.setText(employee.getName());
        txfWage.setText("" + employee.getWage());
        Company companyOfEmployee = employee.getCompany();
        if (companyOfEmployee == null) cbxCompanies.setSelectedIndex(0);
        else {
          int index = 0;
          boolean found = false;
          int i = 0;
          while (!found && i < cbxCompanies.getItemCount()) {
            Company company = cbxCompanies.getItemAt(i);
            if (company == companyOfEmployee) {
              found = true;
              index = i;
            } else i++;
          }
          cbxCompanies.setSelectedIndex(index);
        }
      } else {
        txfName.setText("");
        txfWage.setText("");
        cbxCompanies.setSelectedIndex(0);
      }
    }

    // This method is called when a button is pressed.
    public void actionPerformed(ActionEvent e) {
      if (e.getSource() == btnOk) {
        String name = txfName.getText().trim();
        if (name.length() == 0) {
          // TODO: notify user
          return;
        }
        String wageStr = txfWage.getText().trim();
        if (wageStr.length() == 0) {
          // TODO: notify user
          return;
        }
        int wage = -1;
        try {
          wage = Integer.parseInt(wageStr);
        } catch (NumberFormatException ex) {
          // TODO: notify user
          return;
        }
        if (wage < 0) {
          // TODO: notify user
          return;
        }

        Company company = null;
        if (cbxCompanies.getSelectedIndex() >= 1) {
          company = (Company) cbxCompanies.getItemAt(cbxCompanies.getSelectedIndex());
        }

        /** ** update storage *** */
        if (employee == null) {
          Employee newEmployee = service.createEmployee(name, wage);
          if (company != null) service.updateCompanyOfEmployee(newEmployee, company);
        } else {
          if (!employee.getName().equals(name) || employee.getWage() != wage)
            service.updateEmployee(employee, name, wage);
          if (employee.getCompany() != company) service.updateCompanyOfEmployee(employee, company);
        }

        closedByOk = true;
        EmployeeCUDialog.this.setVisible(false);
      }

      if (e.getSource() == btnCancel) {
        closedByOk = false;
        EmployeeCUDialog.this.setVisible(false);
      }
    }
  }