@@ -420,6 +420,34 @@ generic_string ProjectPanel::getAbsoluteFilePath(const TCHAR * relativePath)
420420 return absolutePath;
421421}
422422
423+ void ProjectPanel::openSelectFile ()
424+ {
425+ TVITEM tvItem;
426+ tvItem.mask = TVIF_PARAM;
427+ tvItem.hItem = _treeView.getSelection ();
428+ ::SendMessage (_treeView.getHSelf(), TVM_GETITEM, 0,(LPARAM)&tvItem);
429+
430+ NodeType nType = getNodeType (tvItem.hItem );
431+ generic_string *fn = (generic_string *)tvItem.lParam ;
432+ if (nType == nodeType_file && fn)
433+ {
434+ tvItem.mask = TVIF_IMAGE | TVIF_SELECTEDIMAGE;
435+ if (::PathFileExists (fn->c_str ()))
436+ {
437+ ::SendMessage (_hParent, NPPM_DOOPEN, 0 , (LPARAM)(fn->c_str ()));
438+ tvItem.iImage = INDEX_LEAF;
439+ tvItem.iSelectedImage = INDEX_LEAF;
440+ }
441+ else
442+ {
443+ tvItem.iImage = INDEX_LEAF_INVALID;
444+ tvItem.iSelectedImage = INDEX_LEAF_INVALID;
445+ }
446+ TreeView_SetItem (_treeView.getHSelf(), &tvItem);
447+ }
448+ }
449+
450+
423451void ProjectPanel::notified (LPNMHDR notification)
424452{
425453 if ((notification->hwndFrom == _treeView.getHSelf ()))
@@ -434,25 +462,7 @@ void ProjectPanel::notified(LPNMHDR notification)
434462 {
435463 case NM_DBLCLK:
436464 {
437- tvItem.hItem = _treeView.getSelection ();
438- ::SendMessage (_treeView.getHSelf(), TVM_GETITEM, 0,(LPARAM)&tvItem);
439- generic_string *fn = (generic_string *)tvItem.lParam ;
440- if (fn)
441- {
442- tvItem.mask = TVIF_IMAGE | TVIF_SELECTEDIMAGE;
443- if (::PathFileExists (fn->c_str ()))
444- {
445- ::SendMessage (_hParent, NPPM_DOOPEN, 0 , (LPARAM)(fn->c_str ()));
446- tvItem.iImage = INDEX_LEAF;
447- tvItem.iSelectedImage = INDEX_LEAF;
448- }
449- else
450- {
451- tvItem.iImage = INDEX_LEAF_INVALID;
452- tvItem.iSelectedImage = INDEX_LEAF_INVALID;
453- }
454- TreeView_SetItem (_treeView.getHSelf(), &tvItem);
455- }
465+ openSelectFile ();
456466 }
457467 break ;
458468
@@ -521,6 +531,36 @@ void ProjectPanel::notified(LPNMHDR notification)
521531 }
522532 break ;
523533
534+ case TVN_KEYDOWN:
535+ {
536+ // tvItem.hItem = _treeView.getSelection();
537+ // ::SendMessage(_treeView.getHSelf(), TVM_GETITEM, 0,(LPARAM)&tvItem);
538+ LPNMTVKEYDOWN ptvkd = (LPNMTVKEYDOWN)notification;
539+ if (ptvkd->wVKey == VK_DELETE)
540+ {
541+ HTREEITEM hItem = _treeView.getSelection ();
542+ NodeType nType = getNodeType (hItem);
543+ if (nType == nodeType_project || nType == nodeType_folder)
544+ popupMenuCmd (IDM_PROJECT_DELETEFOLDER);
545+ else if (nType == nodeType_file)
546+ popupMenuCmd (IDM_PROJECT_DELETEFILE);
547+ }
548+ else if (ptvkd->wVKey == VK_RETURN)
549+ {
550+ HTREEITEM hItem = _treeView.getSelection ();
551+ NodeType nType = getNodeType (hItem);
552+ if (nType == nodeType_file)
553+ openSelectFile ();
554+ else
555+ _treeView.toggleExpandCollapse (hItem);
556+ }
557+
558+ else if (ptvkd->wVKey == VK_F2)
559+ popupMenuCmd (IDM_PROJECT_RENAME);
560+
561+ }
562+ break ;
563+
524564 case TVN_ITEMEXPANDED:
525565 {
526566 LPNMTREEVIEW nmtv = (LPNMTREEVIEW)notification;
0 commit comments