public void treeExpanded(TreeExpansionEvent event) {
   TreePath treePath = event.getPath();
   if (treePath != null) {
     TreeUINode targetNode = (TreeUINode) treePath.getLastPathComponent();
     if (!targetNode.isChildrenLoaded()) {
       String targetPathText = TreeUtil.makePathText(treePath);
       String absPathText = PathUtil.makeChildPath(_tree.getRelativeRoot(), targetPathText);
       expandNode(targetNode, absPathText);
     }
   }
 }
 private HashMap expandNode(TreeUINode targetNode, String absPathText) {
   HashMap vals = null;
   try {
     vals = getBizContext().getBizContent().list(absPathText, List_Attrs);
   } catch (KDRSException e1) {
     log.error("取文件夹内容列表时发生异常。", e1);
   }
   if (vals != null) {
     targetNode.setUserObject(vals);
     targetNode.setChildrenLoaded(true);
     createUnloadedChildNode(targetNode, vals);
   }
   return vals;
 }
 public boolean showDialog() {
   if (!isAddControls) {
     String absPath = PathUtil.makeChildPath("/EAS_Note.kdrs", _tree.getPathTextToShow());
     HashMap multiResult[] = null;
     if (_rpcReducer != null)
       try {
         multiResult =
             (HashMap[])
                 (HashMap[])
                     _rpcReducer.getBatchResult(
                         "IBizContent.list2", new Object[] {absPath, List_Attrs});
       } catch (NotFoundException e) {
         WindowUtil.msgboxError(
             (new StringBuilder())
                 .append(
                     MultiLanguageUtil.getMLS("ui.NoteFileDialogEx.pathError1", "程序指定模板所在文件夹:"))
                 .append(_tree.getPathTextToShow())
                 .append(
                     MultiLanguageUtil.getMLS(
                         "ui.NoteFileDialogEx.pathError", "不存在,请联系套打管理员检查套打管理中该路径是否正确!"))
                 .toString(),
             MultiLanguageUtil.getMLS("ui.NoteFileDialogEx.pathErrorTitle", "路径错误"),
             this);
         return false;
       } catch (KDRSException e) {
         log.error("GetBatchResult list2 error.", e);
       }
     else
       try {
         multiResult = getBizContext().getBizContent().list2(absPath, List_Attrs);
       } catch (NotFoundException e) {
         WindowUtil.msgboxError(
             (new StringBuilder())
                 .append(
                     MultiLanguageUtil.getMLS("ui.NoteFileDialogEx.pathError1", "程序指定模板所在文件夹:"))
                 .append(_tree.getPathTextToShow())
                 .append(
                     MultiLanguageUtil.getMLS(
                         "ui.NoteFileDialogEx.pathError", "不存在,请联系套打管理员检查套打管理中该路径是否正确!"))
                 .toString(),
             MultiLanguageUtil.getMLS("ui.NoteFileDialogEx.pathErrorTitle", "路径错误"),
             this);
         return false;
       } catch (KDRSException e) {
         log.error("", e);
         if (e instanceof NotFoundException) {
           WindowUtil.msgboxError(
               (new StringBuilder())
                   .append(
                       MultiLanguageUtil.getMLS("ui.NoteFileDialogEx.pathError1", "程序指定模板所在文件夹:"))
                   .append(_tree.getPathTextToShow())
                   .append(
                       MultiLanguageUtil.getMLS(
                           "ui.NoteFileDialogEx.pathError", "不存在,请联系套打管理员检查套打管理中该路径是否正确!"))
                   .toString(),
               MultiLanguageUtil.getMLS("ui.NoteFileDialogEx.pathErrorTitle", "路径错误"),
               this);
           return false;
         }
       }
     TreeUINode node = _tree.getTreeUI().getRootNode();
     node.setChildrenLoaded(true);
     if (multiResult != null) {
       int relaRootDeep = PathUtil.splitPath("/EAS_Note.kdrs").length - 1;
       int i = relaRootDeep;
       do {
         if (i >= multiResult.length - 1) break;
         String name = (String) multiResult[i].get("name");
         String alias = (String) multiResult[i].get("alias");
         TreeUINode childNode;
         try {
           childNode = _tree.newTreeNode("folder", name, alias);
         } catch (Exception e) {
           log.error("", e);
           break;
         }
         _tree.getTreeUI().addChildNode(childNode, node);
         childNode.setChildrenLoaded(true);
         node = childNode;
         i++;
       } while (true);
       node.setUserObject(multiResult[multiResult.length - 1]);
       createUnloadedChildNode(node, multiResult[multiResult.length - 1]);
       _tree.getTreeUI().setSelectionNode(node);
       _tree.getTreeUI().expand(_tree.getTreeUI().getSelectionPath());
     }
   }
   return super.showDialog();
 }
  private void refreshTemplateList() {
    TreeUINode selectedNode = _tree.getTreeUI().getSelectionNode();
    HashMap cacheValues = (HashMap) selectedNode.getUserObject();
    super.btnOk.setEnabled(false);
    _lstFile.removeAllElements();
    HashMap vals = null;
    if (cacheValues == null) {
      if (selectedNode.isChildrenLoaded()) return;
      vals = expandNode(selectedNode, getNoteDir());
    } else {
      vals = cacheValues;
    }
    if (vals == null) return;
    String names[] = (String[]) (String[]) vals.get("name");
    String alias[] = (String[]) (String[]) vals.get("alias");
    String categories[] = (String[]) (String[]) vals.get("category");
    String orgss[] = (String[]) (String[]) vals.get("eas_template_relation_orgs");
    if (names != null && log.isDebugEnabled())
      log.debug((new StringBuilder()).append("entries:").append(names.length).toString());
    boolean doFilter = _rightPanel.cbUseOrgFilter.isSelected();
    int idxKDFStart = 0;
    IBizContent bizCtn = _tree.getBizContent();
    for (int i = 0; i < names.length; i++) {
      boolean isKDF = "kdrs-form".equals(categories[i]);
      boolean isR1 = "r1-print".equals(categories[i]);
      if (!isKDF && !isR1 || !_rightPanel.lang.equal(Language.readTempLang(names[i])) && !isKDF)
        continue;
      try {
        boolean isCanUse =
            NoteUseUtil.isCanUse(
                bizCtn,
                (new StringBuilder())
                    .append(((ResObjectNode) selectedNode).getResPath())
                    .append("/")
                    .append(names[i])
                    .toString());
        if (!isCanUse) continue;
      } catch (KDRSException ex) {
        log.debug(
            (new StringBuilder())
                .append(selectedNode)
                .append("获取属性:NoteUseUtil.")
                .append("user_enabled_users")
                .append("失败")
                .toString());
        continue;
      }
      if (doFilter
          && (orgss[i] == null
              || orgss[i].length() == 0
              || orgss[i].indexOf(NoteUtil.getCurrentOrgUnitId()) == -1)) {
        if (log.isDebugEnabled())
          log.debug(
              (new StringBuilder())
                  .append("ignore teplate/r1templat:")
                  .append(names[i])
                  .toString());
        continue;
      }
      ListElement element = new ListElement(names[i], alias[i], categories[i]);
      element.setSeleted(true);
      int idx = idxKDFStart;
      if (isR1) {
        int j = 0;
        do {
          if (j >= idxKDFStart) break;
          if (element.compareTo(_lstFile.getElement(j)) < 0) {
            idx = j;
            break;
          }
          j++;
        } while (true);
        idxKDFStart++;
      } else if (isKDF) {
        int j = _lstFile.getElementCount() - 1;
        do {
          if (j < idxKDFStart) break;
          if (element.compareTo(_lstFile.getElement(j)) > 0) {
            idx = j + 1;
            break;
          }
          j--;
        } while (true);
      }
      _lstFile.insertElement(element, idx);
    }

    if (_lstFile.getElementCount() > 0) _lstFile.setSelectedIndex(0);
    btnOk.setEnabled(_lstFile.getSelectedIndex() != -1);
  }