@Override
  protected Node[] createNodes(Object key) {
    final Department department1 = (Department) key;

    // Node rootNode = new AbstractNode(new
    // PersonChildren(person1,enterprise),Lookups.singleton(department1));

    if (department1.getEnterpriseID().equals("")) {
      Node rootNode = null;
      rootNode =
          new AbstractNode(
              new PersonParent(department1, enterprise), Lookups.singleton(department1));
      rootNode.setDisplayName("Person");
      return new Node[] {rootNode};
    } else {
      Node result =
          new AbstractNode(
              new DepartmentChildren(department1, enterprise), Lookups.singleton(department1)) {

            @Override
            protected Sheet createSheet() {
              Sheet sheet = Sheet.createDefault();
              Sheet.Set set = Sheet.createPropertiesSet();

              Property giamDocProperty =
                  new PropertySupport.ReadOnly<String>(
                      Giamdoc_PROPERTY, String.class, "Trưởng phòng", "aaa") {

                    @Override
                    public String getValue()
                        throws IllegalAccessException, InvocationTargetException {
                      return department1.getPersonID();
                    }

                    @Override
                    public PropertyEditor getPropertyEditor() {
                      return new PropertyEditorSupport();
                    }
                  };
              set.put(giamDocProperty);
              Property congTyMeProperty =
                  new PropertySupport.ReadOnly<String>(
                      Congtyme_PROPERTY, String.class, "Công ty", "bbb") {

                    @Override
                    public String getValue()
                        throws IllegalAccessException, InvocationTargetException {
                      return department1.getEnterpriseID();
                    }

                    @Override
                    public PropertyEditor getPropertyEditor() {
                      return new PropertyEditorSupport();
                    }
                  };
              set.put(congTyMeProperty);
              sheet.put(set);
              return sheet;
            }
          };

      result.setDisplayName(department1.getDepartmentName());
      return new Node[] {result};
    }
  }